:root{--bg:#191b19;--panel:#20231f;--text:#eee8db;--muted:#b1b5a9;--line:rgba(238,232,219,.17);--accent:#ff885f;--sage:#9fb49c;--mono:'DM Mono',monospace;--body:'Manrope',sans-serif;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);line-height:1.7}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--sage);color:var(--bg)}.skip{position:fixed;top:1rem;left:1rem;padding:.7rem 1rem;z-index:10;background:var(--text);color:var(--bg);transform:translateY(-200%)}.skip:focus{transform:none}.rail{position:fixed;inset:0 auto 0 0;width:178px;padding:1.6rem 1.15rem;border-right:1px solid var(--line);display:flex;flex-direction:column;background:var(--bg)}.wordmark{font:500 .8rem var(--mono)}.wordmark span{color:var(--sage)}.rail nav{margin-top:7rem}.rail nav a{display:flex;gap:.65rem;padding:1.1rem 0;border-top:1px solid var(--line);font:400 .62rem/1.6 var(--mono)}.rail nav a:last-child{border-bottom:1px solid var(--line)}.rail i{color:var(--accent);font-style:normal}.rail>p{margin-top:auto;color:var(--muted);font:400 .61rem/1.7 var(--mono)}main{margin-left:178px}article{max-width:1520px;margin:auto;padding:0 clamp(1.5rem,4vw,5rem)}.intro{padding:4rem 0 2.2rem}.kicker,.byline,.figure-bar,figcaption,.section-label,.draft,.article-footer{font-family:var(--mono)}.kicker{display:flex;justify-content:space-between;gap:1rem;color:var(--sage);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase}.draft{color:var(--accent);padding:0 .6rem;border:1px solid #ff885f50;font-size:.65rem;white-space:nowrap}h1{font-size:clamp(3.6rem,6.7vw,7.5rem);line-height:1.02;letter-spacing:-.075em;font-weight:500;margin:2.4rem 0 1.4rem}h1 em{font-style:normal;color:var(--sage)}.dek{font-size:clamp(1.1rem,1.7vw,1.5rem);color:var(--muted);margin:0 0 2.4rem;letter-spacing:-.02em}.byline{display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;font-size:.65rem;color:var(--muted);border-top:1px solid var(--line);padding-top:1.1rem}.byline a{color:var(--accent);margin-left:auto}figure{margin:0}.figure-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;border-block:1px solid var(--line);padding:.8rem 0;font-size:.65rem;text-transform:uppercase;letter-spacing:.05em}.palette-controls{display:flex;gap:.25rem}.palette-controls button{cursor:pointer;background:none;border:1px solid transparent;font:400 .65rem var(--mono);padding:.6rem .75rem;min-height:36px;border-radius:3px}.palette-controls button[aria-pressed=true]{color:var(--accent);border-color:#ff885f50;background:#ff885f12}.palette-controls button:hover{background:var(--panel)}figure img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;background:var(--panel)}figcaption{padding:1rem 0;border-bottom:1px solid var(--line);font-size:.66rem;color:var(--muted);line-height:1.7}.hero-figure figcaption{display:flex;justify-content:space-between;gap:1rem}.prose{max-width:760px;margin:5.5rem auto;scroll-margin-top:3rem}.section-label{color:var(--accent);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;margin:0 0 1.4rem}h2{font-size:clamp(2.1rem,3.7vw,3.6rem);font-weight:500;line-height:1.12;letter-spacing:-.055em;margin:0 0 2rem}h3{font-weight:500;font-size:1.65rem;letter-spacing:-.035em;line-height:1.3;margin:3rem 0 1.5rem}.prose>p:not(.section-label){font-size:1.02rem;line-height:1.9;margin:1.35rem 0;color:#cbcfc4}.pullquote{color:var(--sage);border-left:2px solid var(--sage);font-size:1.65rem;line-height:1.45;letter-spacing:-.035em;margin:2.5rem 0;padding:.5rem 0 .5rem 1.5rem}.wide-figure{max-width:1100px;margin:0 auto}.measurements{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;border-block:1px solid var(--line);padding:1.5rem 0;margin:2rem 0}.measurements strong{display:block;font-size:1.45rem;font-weight:500;letter-spacing:-.04em;color:var(--sage)}.measurements span{font-size:.7rem;color:var(--muted)}.pipeline{display:grid;grid-template-columns:repeat(4,1fr);padding:0;gap:.75rem;list-style:none;margin:2rem 0}.pipeline li{border-top:1px solid var(--sage);padding:1rem 0}.pipeline b{font:400 .6rem var(--mono);color:var(--accent);display:block;margin-bottom:.8rem}.pipeline span{display:block;font-size:1rem}.pipeline small{display:block;color:var(--muted);font-size:.65rem;margin-top:.4rem}pre{padding:1.2rem;background:#111510;border:1px solid var(--line);overflow:auto;font:.77rem/1.7 var(--mono);color:var(--sage)}.project-link{display:flex;justify-content:space-between;align-items:center;border-block:1px solid var(--line);padding:1.2rem 0;margin-top:2.5rem;font-size:1.1rem}.project-link span{color:var(--accent)}.article-footer{display:flex;justify-content:space-between;gap:1.5rem;border-top:1px solid var(--line);padding:2rem 0 3rem;color:var(--muted);font-size:.65rem}.article-footer p{margin:0}.article-footer a{flex-shrink:0}
@media(max-width:1000px){.rail{position:static;width:auto;display:flex;flex-direction:row;justify-content:space-between;border-right:0;border-bottom:1px solid var(--line);padding:1.3rem 1.5rem}.rail nav{display:none}.rail>p{margin:0;text-align:right;line-height:1.4}main{margin:0}article{padding:0 1.5rem}.intro{padding-top:2.5rem}.hero-figure figcaption{flex-direction:column;gap:.2rem}.prose{margin:4rem auto}}
@media(max-width:560px){article{padding:0 1.1rem}h1{font-size:3.65rem}.kicker{font-size:.58rem}.draft{font-size:.56rem}.byline{font-size:.6rem}.byline a{margin-left:0}.figure-bar{align-items:flex-start;flex-direction:column;gap:.5rem}.palette-controls{width:100%}.palette-controls button{flex:1}.prose>p:not(.section-label){font-size:.98rem}.measurements{grid-template-columns:1fr;gap:1rem}.measurements>div{display:flex;justify-content:space-between;gap:1rem;align-items:center}.measurements strong{font-size:1.25rem}.pipeline{grid-template-columns:1fr 1fr}.article-footer{flex-direction:column}.pullquote{font-size:1.4rem}.prose{margin:3.5rem auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.prose p a{text-decoration:underline;text-decoration-color:var(--sage);text-underline-offset:.2em}
/* A matched pair: identical wing timing, different flight paths. */
.bird-comparison{margin:0 auto}.bird-comparison [hidden]{display:none!important}.bird-comparison .figure-bar button{border:1px solid var(--line);background:var(--panel);border-radius:3px;padding:.55rem .8rem;font:400 .65rem var(--mono);min-height:36px;cursor:pointer}.bird-comparison .figure-bar button:hover{border-color:var(--sage)}.bird-comparison .figure-bar button:disabled{cursor:default;opacity:.65}.flight-panels{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}.flight-panel{background:var(--bg);min-width:0}.flight-label{display:flex;flex-direction:column;gap:.35rem;padding:1.2rem 1rem}.flight-label span{font:400 .6rem var(--mono);color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.flight-label strong{font-size:.86rem;font-weight:500;letter-spacing:-.02em}.flight-view{background:linear-gradient(180deg,#d5ddd0,#9ab4b1)}.flight-view canvas,.flight-view img{display:block;width:100%;height:auto;aspect-ratio:25/9;background:transparent;object-fit:contain}.bird-comparison figcaption{display:flex;gap:1.5rem;justify-content:space-between}.bird-comparison figcaption span:first-child{max-width:41rem}.bird-comparison figcaption span:last-child{white-space:nowrap;color:var(--sage)}
@media(max-width:720px){.flight-panels{grid-template-columns:1fr}.flight-label{padding:1rem .8rem;gap:.25rem}.bird-comparison figcaption{flex-direction:column;gap:.4rem}.bird-comparison .figure-bar{flex-direction:row;align-items:center}.bird-comparison .figure-bar>span{max-width:13rem;font-size:.6rem}}
