@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&display=swap');
:root{color-scheme:light;--ink:#15344b;--muted:#466378;--line:#54758c3b;--blue:#316c96;font-family:'DM Sans',Arial,sans-serif;font-size:16px;background:#dfedf6;color:var(--ink)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}::selection{background:#9bcdf1;color:#102f47}a:focus-visible,button:focus-visible{outline:2px solid #1b649e;outline-offset:7px}.sky{position:fixed;inset:0;z-index:-1;background:linear-gradient(#a5d4ef,#ecf6fc)}canvas{display:block;width:100%;height:100%}header{height:112px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.wordmark{font-size:24px;font-weight:600;letter-spacing:-.8px}.wordmark span{font-size:11px;vertical-align:top;margin:3px 0 0 7px;display:inline-block}nav{display:flex;gap:38px;font-size:14px}nav a{transition:color .25s}nav a:hover{color:#0873b4}nav span{margin-left:12px}.hero{position:relative;min-height:690px;height:calc(100svh - 112px);max-height:1050px;padding:35px 5% 48px;display:flex;flex-direction:column}.eyebrow{display:flex;justify-content:space-between;gap:15px;font-size:12px;letter-spacing:1.8px;font-weight:500}.eyebrow span:last-child{color:var(--muted)}h1{font-size:clamp(66px,10.1vw,160px);font-weight:450;line-height:1.035;letter-spacing:-.075em;margin:auto 0;padding:65px 0 85px}h1>span{display:block}h1 em{font-weight:400;font-style:normal;color:#356b92}h2 em{font-weight:400;font-style:normal;color:var(--blue)}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px}.hero-bottom p{font-size:16px;line-height:1.6;margin:0}.scroll-link{display:flex;gap:35px;align-items:center;font-size:14px}.scroll-link span{height:46px;width:46px;border:1px solid #446b87;border-radius:50%;display:grid;place-items:center;transition:transform .3s,background .3s}.scroll-link:hover span{transform:translateY(4px);background:#ffffff88}.motion{position:absolute;right:5%;bottom:129px;display:flex;gap:9px;align-items:center;background:#ffffff50;border:1px solid #65839740;border-radius:20px;padding:9px 14px;color:var(--ink);font-size:12px;cursor:pointer}.about,.projects,.connect{padding:110px 5%;border-top:1px solid var(--line)}.about{display:grid;grid-template-columns:1fr 2fr;gap:40px;background:#eff7fbab;backdrop-filter:blur(8px)}.section-label{font-size:12px;letter-spacing:1.7px;padding-top:12px;color:var(--muted)}h2{font-size:clamp(38px,4.7vw,70px);line-height:1.13;letter-spacing:-.055em;font-weight:450;margin:0 0 35px}.about p{font-size:20px;line-height:1.75;max-width:730px;margin:0 0 22px}.muted{color:var(--muted)}.disciplines{display:flex;flex-wrap:wrap;gap:12px;margin-top:35px}.disciplines span{padding:10px 16px;border:1px solid var(--line);border-radius:24px;font-size:14px}.projects{background:#e5f1f7bb}.section-top{display:grid;grid-template-columns:1fr 2fr;gap:40px;margin-bottom:35px}.project-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}.project{display:flex;flex-direction:column;justify-content:space-between;min-height:370px;padding:32px 38px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);gap:35px;background:#f6fbfd45;transition:background .35s}.project[href]:hover{background:#f8fcffb0}.project-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:1.5px;color:var(--muted)}.project-meta>span:last-child:not(:first-child){font-size:24px;color:var(--ink);transition:transform .3s}.project:hover .project-meta>span:last-child:not(:first-child){transform:translate(3px,-3px)}h3{font-size:36px;line-height:1.1;letter-spacing:-1.4px;font-weight:500;margin:0 0 12px}.role{font-size:14px;color:var(--blue)}.project p{font-size:17px;line-height:1.65;color:var(--muted);max-width:440px;margin:20px 0 0}.project-domain{font-size:13px;color:var(--muted)}.connect{display:grid;grid-template-columns:1fr 2fr;gap:40px;background:#edf7fb66}.connect h2{font-size:clamp(42px,5.5vw,86px)}.connect a{display:inline-flex;align-items:center;gap:60px;font-size:22px;border-bottom:1px solid #5c7c93;padding:10px 0 15px}.connect a:hover{color:#0873b4}footer{padding:30px 5%;display:flex;align-items:center;justify-content:space-between;gap:20px;background:#eaf4f9a0;border-top:1px solid var(--line)}footer>a:first-child{font-size:18px;font-weight:550}footer span,footer>a:last-child{font-size:12px;color:var(--muted)}.skip{position:fixed;top:-100px;left:20px;background:white;padding:15px;z-index:20}.skip:focus{top:20px}.reveal{opacity:0;transform:translateY(24px);transition:opacity .9s,transform .9s}.reveal.visible{opacity:1;transform:none}@media(min-width:1600px){header,.hero,.about,.projects,.connect,footer{padding-left:max(5%,calc((100vw - 1500px)/2));padding-right:max(5%,calc((100vw - 1500px)/2))}}@media(max-width:760px){header{height:85px}.wordmark{font-size:20px}nav{gap:20px;font-size:13px}nav span{display:none}.hero{height:calc(100svh - 85px);min-height:680px;padding-top:28px;padding-bottom:35px}.eyebrow{font-size:10px;letter-spacing:1.3px}.eyebrow span:last-child{display:none}h1{font-size:10.2vw;letter-spacing:-.07em;padding-bottom:90px}.hero-bottom{align-items:start;flex-direction:column;gap:27px}.hero-bottom p{font-size:15px}.motion{bottom:172px}.about,.projects,.connect{padding:70px 6%}.about,.section-top,.connect{grid-template-columns:1fr;gap:30px}.about p{font-size:18px}.disciplines span{font-size:13px}.project-grid{grid-template-columns:1fr}.project{padding:28px;min-height:330px}h3{font-size:32px}.connect a{font-size:20px;gap:40px}footer{flex-wrap:wrap}footer span{order:3;width:100%}}@media(max-width:380px){nav{gap:12px}.wordmark{font-size:18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none}*{transition:none!important}}

[hidden]{display:none!important}

/* The ribbon floats over the cloud volume and under the reading layer. */
.sky{background:linear-gradient(#599bd0,#d7eefc)}
.hero{isolation:isolate;overflow:hidden}
.mobius-art{position:absolute;inset:1% -8% 0 27%;z-index:-1;pointer-events:none}
.hero .eyebrow,.hero h1,.hero-bottom{position:relative}
.hero h1{color:#102c43;text-shadow:0 2px 22px #e7f4fc35}
.hero h1 em{color:#285978}
@media(max-width:760px){.mobius-art{inset:3% -42% 10% -4%}}

/* Stable projection when mobile browser chrome expands or collapses. */
.sky{bottom:auto;height:100vh;height:100lvh;overflow:hidden;contain:strict;pointer-events:none}
.about{backdrop-filter:none}
.sky{transform:translateZ(0);backface-visibility:hidden}
.icon{width:20px;height:20px;display:inline-block;vertical-align:middle;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* Frosted navigation surface. Kept compact to limit the blurred area. */
header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.68);-webkit-backdrop-filter:blur(16px) saturate(135%);backdrop-filter:blur(16px) saturate(135%);box-shadow:0 1px 0 rgba(40,78,105,.08)}
header .icon{width:17px;height:17px;margin-left:8px}

nav a,nav button{transition:color .25s}
nav button{appearance:none;border:0;background:none;color:inherit;padding:0;cursor:pointer;font:inherit}
nav button:hover{color:#0873b4}
.connect button{display:inline-flex;align-items:center;gap:45px;font-size:22px;border:0;border-bottom:1px solid #5c7c93;padding:10px 0 15px;background:none;color:inherit;cursor:pointer}
.connect button:hover{color:#0873b4}
.contact-dialog{width:min(690px,calc(100% - 32px));max-height:min(780px,calc(100dvh - 32px));padding:0;border:1px solid rgba(65,100,124,.3);border-radius:2px;background:rgba(245,251,254,.94);color:var(--ink);box-shadow:0 30px 90px rgba(13,45,68,.3);-webkit-backdrop-filter:blur(24px) saturate(125%);backdrop-filter:blur(24px) saturate(125%);overflow:auto}
.contact-dialog::backdrop{background:rgba(22,52,73,.36);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
.contact-panel{position:relative;padding:58px}
.contact-close{position:absolute;top:26px;right:26px;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:rgba(255,255,255,.5);color:var(--ink);cursor:pointer}
.contact-close:hover{background:white}
.contact-kicker{font-size:12px;letter-spacing:1.8px;color:var(--muted);margin-bottom:28px}
.contact-dialog h2{font-size:clamp(38px,5vw,62px);margin:0 0 42px}
.contact-dialog form{display:grid;grid-template-columns:1fr 1fr;gap:28px 24px}
.contact-dialog label{display:flex;flex-direction:column;gap:9px;font-size:13px;color:var(--muted)}
.contact-dialog input,.contact-dialog textarea{width:100%;border:0;border-bottom:1px solid #6e899c;background:transparent;color:var(--ink);border-radius:0;padding:9px 0 13px;font:inherit;font-size:16px;outline:none;resize:vertical}
.contact-dialog input:focus,.contact-dialog textarea:focus{border-color:#0873b4;box-shadow:0 1px 0 #0873b4}
.contact-dialog input::placeholder,.contact-dialog textarea::placeholder{color:#71899a}
.contact-message,.contact-actions{grid-column:1/-1}
.contact-actions{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:3px}
.contact-actions p{max-width:245px;margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.contact-actions button{display:inline-flex;align-items:center;gap:18px;border:1px solid #2d5d7d;border-radius:30px;background:#173d57;color:white;padding:14px 20px;cursor:pointer}
.contact-actions button:hover{background:#0e3049}
.contact-actions .icon{width:18px;height:18px}
.modal-open{overflow:hidden}
@media(max-width:760px){.connect button{font-size:20px;gap:28px}.contact-panel{padding:48px 25px 30px}.contact-close{top:17px;right:17px}.contact-dialog h2{margin-bottom:32px}.contact-dialog form{grid-template-columns:1fr;gap:22px}.contact-message,.contact-actions{grid-column:auto}.contact-actions{align-items:stretch;flex-direction:column}.contact-actions button{justify-content:center;width:100%}}