@font-face{font-family:'Midnight Display';src:url('assets/fonts/science-gothic-wide-light-latin.woff2') format('woff2');font-style:normal;font-weight:100 300;font-display:swap}
:root{color-scheme:dark;--bg:#050608;--fg:#f2f4f6;--muted:#a5adb5;--line:#30343b;--accent:#c5d9ef;--sans:'Helvetica Neue',Helvetica,Arial,sans-serif;--mono:'SF Mono','SFMono-Regular',ui-monospace,Menlo,Consolas,monospace;--display:'Midnight Display','Helvetica Neue',Arial,sans-serif;--gutter:24px;--art-size:min(88vw,40svh,380px);--art-x:50%;--art-y:33%}
*{box-sizing:border-box}html{scroll-padding-top:80px}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 var(--mono);-webkit-font-smoothing:antialiased}::selection{background:var(--fg);color:var(--bg)}a{color:inherit;text-decoration:none;touch-action:manipulation}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px}h1,h2,h3,p{margin:0}.skip-link{position:fixed;top:-100px;left:20px;z-index:20;padding:14px 18px;background:var(--fg);color:var(--bg)}.skip-link:focus{top:12px}.site-header{height:78px;padding-inline:var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:16px;position:fixed;top:0;left:0;right:0;z-index:10;background:#050608}.wordmark{font-family:var(--sans);font-size:11px;line-height:1;font-weight:500;letter-spacing:.11em;white-space:nowrap;min-height:48px;display:inline-flex;align-items:center}.site-header nav{display:flex;gap:21px;font-size:12px}.site-header nav a{min-height:48px;display:inline-flex;align-items:center;gap:9px}.site-header nav a span{font-size:18px}.eyebrow{font-size:10px;letter-spacing:.12em;font-weight:400;line-height:1.6}.journey{position:relative;overflow-anchor:none}.scene-stage{position:relative;background:var(--bg);overflow:hidden}.scene-visual{height:55svh;min-height:340px;position:relative;pointer-events:none}.scene-visual canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0}.scene-fallback{display:block;width:100%;height:100%;object-fit:cover}.scene-shade{display:none;pointer-events:none}.scene-copy{padding:38px var(--gutter) 48px;max-width:650px}.scene-copy+.scene-copy{border-top:1px solid var(--line)}.scene-copy h1,.scene-copy h2{font-weight:400;font-size:clamp(42px,11.5vw,70px);line-height:1.04;letter-spacing:-.055em;margin-top:16px}.scene-description{font-size:16px;line-height:1.55;color:#c1c7cc;max-width:355px;margin-top:20px}.capabilities{font-size:13px;line-height:1.85;margin-top:22px;color:#e0e4e8}.static-project-image{display:block;width:100%;height:auto;max-height:600px;object-fit:cover;margin-top:30px}.project-link{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;min-height:52px;font-size:14px;margin-top:24px;border-bottom:1px solid #a7b0ba}.project-link>span{font-size:22px}.scene-bottom,.scene-progress{display:none}
/* One pinned stage carries every transformation. Browser scrolling stays native. */
.has-scene .journey{height:760svh}.has-scene .scene-stage{position:sticky;top:0;height:100svh}.has-scene .scene-visual{position:absolute;inset:0;height:100%;min-height:0}.has-scene .scene-fallback{opacity:0}.has-scene #stardust-canvas{opacity:1}.has-scene .scene-shade{display:block;position:absolute;inset:0;background:linear-gradient(0deg,#050608 0%,#050608bb 10%,transparent 44%)}.has-scene .scene-panels{position:absolute;left:0;right:0;bottom:112px}.has-scene .scene-copy{position:absolute;bottom:0;left:0;max-width:430px;width:100%;padding:0 var(--gutter);border:0;opacity:0;visibility:hidden;will-change:opacity,transform}.has-scene .static-project-image{display:none}.has-scene .scene-copy h1{font-size:clamp(51px,14vw,76px)}.has-scene .scene-copy h2{font-size:clamp(37px,10vw,52px)}.has-scene .scene-copy .scene-description{font-size:15px;max-width:300px;margin-top:17px}.has-scene .scene-copy .capabilities{margin-top:16px;font-size:12px;line-height:1.8}.has-scene .project-copy h2{font-size:clamp(42px,11.5vw,60px)}.has-scene .wave-copy h2{font-size:70px}.has-scene .scene-bottom{display:flex;align-items:center;justify-content:space-between;position:absolute;left:var(--gutter);right:var(--gutter);bottom:25px;gap:20px}.chapters{display:flex;gap:20px;font-size:10px}.chapters a{min-height:48px;display:flex;align-items:center;position:relative;color:#949ca5}.chapters a[aria-current]{color:var(--fg)}.chapters a[aria-current]:after{content:'';height:1px;background:var(--fg);position:absolute;left:0;right:0;bottom:2px}.scroll-hint{font-size:9px;letter-spacing:.13em;display:flex;align-items:center;gap:18px;color:var(--muted)}.scroll-hint .hint-label{display:none}.scroll-hint .hint-arrow{font-size:20px;color:var(--fg)}.has-scene .scene-progress{position:absolute;bottom:0;height:1px;background:#ffffff19;left:var(--gutter);right:var(--gutter);display:block}.scene-progress span{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:#e5ecf3}
.work-notes{position:relative;background:var(--bg);padding:50px var(--gutter) 0}.case{border-block:1px solid var(--line)}.case summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:95px;cursor:pointer;touch-action:manipulation}.case summary::-webkit-details-marker{display:none}.case summary::marker{content:''}.case-title{display:block;font-size:20px;letter-spacing:-.035em}.case-label{font-size:12px;display:block;color:var(--muted);margin-top:3px}.case-toggle{font-size:29px;font-weight:300}.case[open] .case-toggle{transform:rotate(45deg)}.case-copy{max-width:620px;padding-bottom:26px;font-size:15px;color:var(--muted);line-height:1.7}.case-date{font-size:12px;margin-top:14px}.developing{display:flex;justify-content:space-between;gap:20px;padding-top:20px;font-size:11px;color:var(--muted)}.contact{padding:108px var(--gutter) 70px}.contact h2{font-size:clamp(58px,17vw,94px);line-height:.97;font-weight:400;letter-spacing:-.065em;margin-top:23px}.email{display:flex;justify-content:space-between;align-items:center;gap:15px;min-height:60px;margin-top:38px;border-bottom:1px solid var(--line);font-size:15px;max-width:450px}.email>span:first-child{overflow-wrap:anywhere}.email>span:last-child{font-size:28px}footer{display:flex;align-items:center;justify-content:space-between;gap:10px 25px;flex-wrap:wrap;padding:0 var(--gutter) 24px;color:var(--muted);font-size:10px}footer a{display:inline-flex;min-height:44px;align-items:center}footer>span:last-child{flex-basis:100%}.page{max-width:1400px;margin:auto;padding-inline:var(--gutter)}.legal-header a{font-family:var(--sans);min-height:72px;display:inline-flex;align-items:center;font-size:14px}.legal{max-width:650px;padding-block:40px 70px}.legal h1{font-family:var(--sans);font-size:clamp(38px,10vw,64px);font-weight:400;line-height:1;letter-spacing:-.06em;margin-bottom:40px}.legal h2{font-family:var(--sans);font-size:25px;font-weight:400;letter-spacing:-.04em;margin-block:40px 20px}.legal p{font-size:15px;color:var(--muted);line-height:1.8;margin-top:20px}.legal a{text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
@media(min-width:760px){:root{--gutter:5vw;--art-size:min(46vw,66svh,620px);--art-x:66%;--art-y:48%}.site-header{height:100px}.wordmark{font-size:12px;letter-spacing:.16em}.site-header nav{font-size:13px;gap:35px}.scene-visual{height:75svh}.scene-copy{padding-block:60px}.has-scene .journey{height:800svh}.has-scene .scene-shade{background:linear-gradient(90deg,#05060880 0%,transparent 39%)}.has-scene .scene-panels{top:50%;bottom:auto;transform:translateY(-30%);left:var(--gutter);right:auto;width:39%}.has-scene .scene-copy{position:absolute;top:0;bottom:auto;left:0;max-width:470px;padding:0;transform:translateY(-50%)}.has-scene .scene-copy h1{font-size:clamp(56px,6.7vw,108px)}.has-scene .scene-copy h2{font-size:clamp(40px,4.8vw,76px)}.has-scene .scene-copy .scene-description{font-size:18px;max-width:355px;margin-top:24px}.has-scene .scene-copy .capabilities{font-size:14px;margin-top:25px}.has-scene .scene-copy .eyebrow{font-size:11px}.has-scene .project-copy h2{font-size:clamp(46px,5vw,80px)}.has-scene .wave-copy h2{font-size:clamp(68px,7vw,120px)}.has-scene .scene-bottom{bottom:35px}.chapters{gap:36px;font-size:12px}.scroll-hint .hint-label{display:inline}.work-notes{padding-top:60px}.case summary{min-height:105px}.case summary>span:first-child{display:flex;gap:50px;align-items:center}.case-title{font-size:28px}.case-label{font-size:14px;margin:0}.developing{font-size:12px}.contact{padding-block:150px 100px}.contact h2{font-size:clamp(100px,12vw,180px)}.email{font-size:18px;max-width:470px}.contact .eyebrow{font-size:11px}footer{font-size:11px;padding-bottom:35px}footer>span:last-child{flex-basis:auto;margin-left:auto}}
@media(max-height:700px) and (max-width:759px){:root{--art-size:min(80vw,32svh,320px);--art-y:30%}.has-scene .scene-panels{bottom:92px}.has-scene .scene-copy h1{font-size:46px}.has-scene .scene-copy h2{font-size:33px}.has-scene .scene-copy .eyebrow{font-size:9px}.has-scene .scene-copy .scene-description{font-size:14px;margin-top:12px}.has-scene .scene-copy .capabilities{font-size:11px;margin-top:10px}.has-scene .scene-bottom{bottom:17px}.has-scene .wave-copy h2{font-size:60px}}
@media(max-width:359px){:root{--gutter:20px}.wordmark{font-size:10px;letter-spacing:.08em}.site-header nav{gap:16px;font-size:11px}.chapters{gap:14px}}
@media(hover:hover){.site-header a:hover,.chapters a:hover,.email:hover{color:var(--accent)}.project-link:hover{color:var(--accent);border-color:currentColor}.case summary:hover{color:var(--accent)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* The opening line sits below the helix; every visual stays made of points. */
.dna-copy{padding:18px var(--gutter) 50px;font-size:clamp(28px,7.8vw,40px);font-weight:400;line-height:1.12;letter-spacing:-.045em}
.has-scene .dna-copy{position:absolute;left:var(--gutter);right:var(--gutter);bottom:135px;max-width:600px;padding:0;will-change:opacity}
.scene-controls{display:flex;align-items:center;gap:12px}.motion-toggle{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;background:transparent;color:var(--muted);font:14px var(--mono);padding:0;cursor:pointer;touch-action:manipulation}.motion-toggle:hover{color:var(--fg)}.motion-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:0}
@media(min-width:760px){.has-scene .dna-copy{bottom:140px;font-size:clamp(32px,3vw,46px)}.scene-controls{gap:28px}}
@media(max-height:700px) and (max-width:759px){.has-scene .dna-copy{bottom:110px;font-size:28px}}
@media(max-width:359px){.has-scene .scene-bottom{gap:10px}.scene-controls{gap:0}.scene-controls .scroll-hint{display:none}}
/* Wide, fine technical display lettering; sizes follow the actual glyph widths. */
.scene-copy h1,.scene-copy h2,.dna-copy,.contact h2{font-family:var(--display);font-weight:200;letter-spacing:.012em;font-synthesis:none;font-variant-ligatures:none}
.scene-copy h1,.has-scene .scene-copy h1{font-size:clamp(50px,16vw,70px);line-height:1.06}
.scene-copy h2,.has-scene .scene-copy h2{font-size:clamp(31px,9.7vw,46px);line-height:1.12}
#work h2,.has-scene #work h2{font-size:clamp(29px,9vw,40px)}
.wave-copy h2,.has-scene .wave-copy h2{font-size:clamp(60px,17vw,76px)}
.dna-copy,.has-scene .dna-copy{font-size:clamp(22px,6.8vw,32px);line-height:1.3}
.contact h2{font-size:clamp(36px,11vw,72px);line-height:1.08}
@media(min-width:760px){
 .has-scene .scene-copy h1{font-size:clamp(54px,6.7vw,96px)}
 .has-scene .scene-copy h2{font-size:clamp(32px,3.65vw,53px)}
 .has-scene #work h2{font-size:clamp(29px,3.3vw,49px)}
 .has-scene .wave-copy h2{font-size:clamp(64px,7vw,112px)}
 .has-scene .dna-copy{font-size:clamp(32px,3vw,46px)}
 .contact h2{font-size:clamp(86px,10.8vw,160px)}
}
@media(max-height:700px) and (max-width:759px){
 .has-scene .scene-copy h1{font-size:46px}
 .has-scene .scene-copy h2{font-size:31px}
 .has-scene .wave-copy h2{font-size:60px}
}

/* Keep both wordmarks in their established sans-serif. */
.contact>.eyebrow{font-family:var(--sans)}
