:root{--ink:#102338;--muted:#516276;--navy:#0d1b2b;--teal:#6ee2d8;--line:#d7e0e9;--paper:#fff;--soft:#f2f6fa;--wrap:1160px;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);font-size:16px;line-height:1.65}a{color:inherit;text-underline-offset:4px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #168279;outline-offset:5px}.wrap{max-width:var(--wrap);width:calc(100% - 96px);margin-inline:auto}.skip{position:absolute;left:16px;top:-100px;padding:12px;background:white;z-index:10}.skip:focus{top:12px}.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:26px;border-bottom:1px solid var(--line)}.identity{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:750;letter-spacing:-.02em;font-size:18px}.brand-mark{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;background:#202020;color:#e5e5e5;border-radius:4px}.brand-mark svg{display:block}nav{display:flex;gap:30px;flex-wrap:wrap}nav a{font-size:14px;text-decoration:none;color:var(--muted);font-weight:600}nav a:hover{color:var(--ink);text-decoration:underline}.hero{padding-block:84px 66px;display:grid;grid-template-columns:1.3fr 1fr;gap:72px;align-items:center}.eyebrow{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;letter-spacing:.09em;font-weight:650;margin:0 0 18px;color:#376278}h1,h2,h3,h4,p{overflow-wrap:break-word}h1{font-size:clamp(44px,5vw,68px);line-height:1.05;letter-spacing:-.045em;font-weight:760;margin:0 0 24px}h2{font-size:clamp(28px,3.2vw,40px);line-height:1.15;letter-spacing:-.035em;font-weight:730;margin:0}h3{font-size:20px;line-height:1.35;letter-spacing:-.015em;margin:0 0 12px}h4{font-size:18px;line-height:1.4;margin:0 0 12px}.intro{font-size:19px;line-height:1.7;color:var(--muted);max-width:580px;margin:0 0 28px}.actions{display:flex;gap:12px;flex-wrap:wrap}.button{display:inline-flex;justify-content:center;align-items:center;gap:10px;text-decoration:none;font-size:14px;font-weight:700;min-height:48px;padding:12px 20px;border-radius:4px;transition:background .15s,color .15s}.primary{background:var(--navy);color:#fff;border:1px solid var(--navy)}.primary:hover{background:#21445e}.secondary{border:1px solid #bbc9d6;background:transparent}.secondary:hover{background:var(--soft)}.file-type{font-size:12px;color:var(--muted);border-left:1px solid #bac5d0;padding-left:8px}.hero-context{display:flex;gap:8px 20px;flex-wrap:wrap;margin-top:28px;font-size:12px;color:var(--muted)}.system-card{background:var(--navy);color:#fff;border-radius:6px;box-shadow:12px 12px 0 #e4f2f2;position:relative}.system-head{padding:22px 25px;border-bottom:1px solid #33404f;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;letter-spacing:.08em;color:#b9c9d7}.plus{color:var(--teal);font-size:24px;line-height:1}.system-row{display:flex;gap:18px;margin:0 25px;padding:24px 0;border-bottom:1px solid #33404f}.step-number{color:var(--teal);font:12px ui-monospace,SFMono-Regular,monospace;margin-top:6px}.system-row strong{font-size:17px;line-height:1.4}.system-row p{font-size:14px;color:#b9c9d7;margin:3px 0 0}.system-foot{font-size:12px;color:#b9c9d7;padding:20px 25px}.domain-strip{background:var(--soft);border-block:1px solid var(--line)}.domain-strip .wrap{padding-block:18px;display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;font-size:14px}.domain-strip span{font-size:12px;color:var(--muted)}.domain-strip strong{font-weight:600}.section{padding-block:78px}.section-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:24px}.section-heading .eyebrow{margin-bottom:12px}.project-badge{font-size:12px;flex-shrink:0;border:1px solid #bdcad5;background:var(--soft);border-radius:4px;padding:6px 12px}.section-intro{max-width:790px;color:var(--muted);font-size:18px;margin:0 0 32px}.project-figure{margin:0;background:var(--navy);border-radius:6px;overflow:hidden}.figure-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:14px 20px;gap:14px;color:#bbcbd9;font:12px ui-monospace,SFMono-Regular,monospace;letter-spacing:.05em}.image-options{display:flex;flex-wrap:wrap;gap:4px;background:#1e3043;padding:4px;border-radius:4px}.image-options button{cursor:pointer;background:transparent;color:#cedae3;border:0;font-family:inherit;font-size:12px;letter-spacing:0;padding:9px 12px;min-height:40px;border-radius:3px}.image-options button[aria-pressed=true]{background:var(--teal);color:#102338}.project-figure img{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover;object-position:bottom}.project-figure figcaption{padding:14px 20px;font-size:12px;color:#c2d1df;min-height:48px}.case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;padding-block:38px}.case-grid p{font-size:16px;color:var(--muted);margin:0}.architecture{border:1px solid var(--line);border-radius:6px;padding:28px;background:var(--soft)}.architecture-title .eyebrow{margin-bottom:8px}.architecture-title h3{font-size:22px;margin-bottom:26px}.architecture-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:0;list-style:none;padding:0;margin:0}.architecture-flow li{border-left:2px solid #8cadbc;padding:0 20px}.architecture-flow li:first-child{padding-left:0;border-left:0}.architecture-flow span{display:block;font:12px ui-monospace,SFMono-Regular,monospace;letter-spacing:.08em;color:#45687a;margin-bottom:8px}.architecture-flow strong{display:block;font-size:15px}.architecture-flow p{font-size:14px;color:var(--muted);line-height:1.5;margin:6px 0 0}.technical-details{border-block:1px solid var(--line);margin-top:26px}.technical-details summary{cursor:pointer;min-height:60px;padding:18px 6px;font-size:16px;font-weight:650}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px;padding:8px 6px 24px}.detail-grid ul{padding-left:20px;margin:0;color:var(--muted)}.detail-grid li+li{margin-top:8px}.project-note{font-size:12px;line-height:1.7;color:var(--muted);margin:22px 0 0;max-width:880px}.experience-section{background:var(--navy);color:#edf5fc}.experience-section .eyebrow{color:var(--teal)}.experience-list{margin-top:40px}.experience-row{display:grid;grid-template-columns:1fr 1.7fr;gap:64px;border-top:1px solid #354252;padding-block:30px}.experience-row:last-child{padding-bottom:0}.date{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;color:var(--teal)}.role-meta h3{margin:10px 0;font-size:21px}.role-meta p{font-size:14px;color:#b7c7d5;margin:0}.role-content p{color:#c3d0dc;font-size:16px;margin:0}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.tags span{font-size:12px;border:1px solid #45596c;border-radius:3px;padding:3px 9px;color:#c3d0dc}.tool-groups{display:grid;grid-template-columns:1fr 1fr;gap:26px}.tool-group{border:1px solid var(--line);border-radius:6px;overflow:hidden}.tool-group-head{background:var(--soft);padding:24px}.tool-group-head .eyebrow{display:block;font-size:12px;margin-bottom:10px}.tool-group-head h3{margin:0;font-size:22px}.project-tools .tool-group-head{background:#e9f6f5}.tool-group dl{margin:0;padding-inline:24px}.tool-group dl>div{padding-block:20px;border-top:1px solid var(--line)}.tool-group dl>div:first-child{border-top:0}.tool-group dt{font-weight:700;font-size:16px}.tool-group dd{font-size:16px;color:var(--muted);margin:6px 0 0;line-height:1.6}.contact-section{background:#e9f6f5;border-block:1px solid #cee5e3}.contact-inner{display:flex;align-items:center;justify-content:space-between;gap:40px;padding-block:55px}.contact-inner h2{font-size:36px}.contact-inner p:last-child{color:var(--muted);max-width:540px;font-size:16px;margin:20px 0 0}.contact-links{display:flex;align-items:start;flex-direction:column;gap:20px;flex-shrink:0}.text-link{font-size:14px;font-weight:600}footer{padding-block:26px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:12px}
@media(min-width:1400px){.hero{padding-block:96px 78px}}
@media(max-width:1050px){.wrap{width:calc(100% - 64px)}.hero{gap:40px;grid-template-columns:1.2fr 1fr}.hero-context{gap:8px 14px}.section-heading{align-items:start;flex-direction:column;gap:16px}.architecture-flow{grid-template-columns:1fr 1fr;gap:26px}.architecture-flow li:nth-child(3){border-left:0;padding-left:0}.experience-row{gap:36px}.contact-inner{align-items:start}.contact-links{flex-shrink:1}}
@media(max-width:760px){.wrap{width:calc(100% - 40px)}.site-header{padding-block:18px;align-items:start;flex-direction:column;gap:14px}nav{gap:24px}nav a{padding-block:5px}.hero{padding-block:44px;grid-template-columns:1fr;gap:36px}h1{font-size:48px}.intro{font-size:18px}.hero .eyebrow{font-size:12px}.system-card{box-shadow:6px 6px 0 #e4f2f2}.system-row{padding-block:18px}.domain-strip .wrap{justify-content:start;gap:10px 22px}.domain-strip span{flex-basis:100%}.section{padding-block:48px}.section-intro{font-size:17px}.figure-toolbar{align-items:start;flex-direction:column;padding:14px}.image-options{width:100%}.image-options button{flex:1;font-size:12px}.project-figure figcaption{padding:12px 14px}.case-grid{grid-template-columns:1fr;gap:24px;padding-block:28px}.architecture{padding:22px}.architecture-flow{gap:24px 12px}.architecture-flow li{padding-left:14px;padding-right:0}.architecture-flow strong{font-size:14px}.architecture-flow p{font-size:13px}.detail-grid{grid-template-columns:1fr;gap:20px}.experience-row{grid-template-columns:1fr;gap:20px;padding-block:26px}.tool-groups{grid-template-columns:1fr}.contact-inner{flex-direction:column;gap:28px;padding-block:40px}.contact-inner h2{font-size:32px}.contact-links{align-items:start}footer{flex-direction:column;gap:6px}.project-badge{flex-shrink:1}.hero-context{font-size:12px}}
@media(max-width:380px){h1{font-size:42px}.actions{flex-direction:column}.actions .button{width:100%}.architecture-flow{grid-template-columns:1fr}.architecture-flow li,.architecture-flow li:nth-child(3){padding:0 0 0 14px;border-left:2px solid #8cadbc}.project-badge{font-size:12px}nav{gap:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{nav,.actions,.image-options,.contact-section,.technical-details{display:none}.wrap{width:100%;max-width:none}.hero,.section{padding:24px 0}.hero{grid-template-columns:1fr}.system-card{display:none}.experience-section{background:white;color:var(--ink)}.experience-section p,.role-meta p,.role-content p{color:var(--muted)}.experience-section .eyebrow,.date{color:#376278}.experience-row{break-inside:avoid}.project-figure,.tool-group{break-inside:avoid}a{text-decoration:none}footer{border-top:1px solid var(--line)}}

.image-options button{font-size:14px}
.hero{border-bottom:1px solid var(--line)}
.project-title{font-size:clamp(26px,2.6vw,34px);line-height:1.2;letter-spacing:-.025em;margin:0}
.meter-project{padding-top:22px}
.meter-project .section-heading{margin-bottom:20px}
.integration-overview{background:var(--navy);color:#edf5fc;padding:30px;border-radius:6px}
.integration-overview>.eyebrow{color:var(--teal);margin-bottom:24px}
.integration-parts{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:24px;align-items:stretch}
.integration-parts>div{padding:20px 0}
.integration-parts>div.integration-core{padding:20px;background:#1d3549;border:1px solid #527083;border-radius:4px}
.integration-parts span{display:block;font:12px ui-monospace,SFMono-Regular,monospace;color:#b9c9d7;margin-bottom:12px;letter-spacing:.06em}
.integration-parts h4{font-size:20px;margin-bottom:10px}
.integration-parts p{color:#c3d0dc;font-size:16px;line-height:1.6;margin:0}
.integration-core span{color:var(--teal)}
.project-takeaway{border-left:3px solid #22877f;background:#e9f6f5;padding:20px 24px}
.project-takeaway strong{font-size:18px}.project-takeaway p{margin:6px 0 0;color:var(--muted);font-size:16px}
.gis-project{border-top:1px solid var(--line);margin-top:56px;padding-top:48px}
.project-download{display:inline-block;margin-top:16px;min-height:44px}
@media(max-width:760px){.integration-overview{padding:22px}.integration-parts{grid-template-columns:1fr;gap:10px}.integration-parts>div{padding:12px 0}.gis-project{margin-top:40px;padding-top:36px}.meter-project .case-grid{gap:26px}.project-title{font-size:28px}}

@media(max-width:760px){.image-options button{flex:1 1 calc(50% - 4px)}}
