@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Manrope:wght@400;500;600&family=Newsreader:ital,opsz,wght@1,6..72,400&display=swap";:root{--paper:#f1efe8;--ink:#1d211e;--muted:#686c67;--line:#c9c8c0;--blue:#2457a6;--blue-soft:#dce5f4;--red:#b94538;--red-soft:#f1ded9;--white:#f8f7f2;font-family:Manrope,system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper)}button,a{font:inherit}button{color:inherit}.site-shell{width:min(1500px,100%);margin:auto;padding:0 42px}.site-header{height:92px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:5}.wordmark{display:flex;align-items:center;gap:12px;border:0;background:none;padding:0;cursor:pointer;font-weight:600}.wordmark>span:first-child{width:38px;height:38px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:DM Mono;font-size:12px}.wordmark-name{font-size:14px}.site-header nav{display:flex;align-items:center;gap:32px}.site-header a{color:var(--ink);text-decoration:none;font-size:13px}.site-header .nav-contact{display:flex;align-items:center;gap:7px;border:1px solid var(--ink);padding:10px 13px}.overline,.project-kind{font-family:DM Mono;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--blue)}.hero{padding:96px 0 26px;min-height:680px}.hero-grid{display:grid;grid-template-columns:1fr 3fr;gap:50px}.hero-kicker{font:11px/1.8 DM Mono;text-transform:uppercase;letter-spacing:.08em}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#53835d;margin-right:8px}.hero h1,.project-hero h1{font-size:clamp(68px,8.2vw,132px);line-height:.82;letter-spacing:-.07em;margin:26px 0 42px;font-weight:500}.hero h1 em,.project-hero h1 em{font-family:Newsreader,serif;font-weight:400}.hero-copy{max-width:620px;font-size:19px;line-height:1.65;color:#4f544f}.text-link{display:inline-flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;margin-top:25px;border-bottom:1px solid;padding-bottom:5px;font-size:13px;font-weight:600}.hero-rule{margin-top:94px;border-top:1px solid var(--line);padding-top:16px;display:flex;justify-content:space-between;font:10px DM Mono;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.work{padding:130px 0}.section-intro{display:grid;grid-template-columns:1fr 2fr 1fr;gap:40px;align-items:start;margin-bottom:80px}.section-intro h2,.about h2,.contact h2{font-size:clamp(44px,5vw,72px);line-height:1;letter-spacing:-.055em;font-weight:500;margin:0}.section-intro>p:last-child{color:var(--muted);font-size:14px;line-height:1.7;margin:0}.project-list{border-top:1px solid var(--ink)}.project-row{min-height:280px;display:grid;grid-template-columns:90px 1fr 70px;gap:30px;padding:38px 0;border-bottom:1px solid var(--line);align-items:start}.project-index{font:11px DM Mono;color:var(--muted)}.project-content{max-width:800px}.project-content h3{font-size:36px;letter-spacing:-.04em;font-weight:500;margin:10px 0 14px}.project-content>p:not(.project-kind){color:var(--muted);line-height:1.65;max-width:660px}.tags{display:flex;gap:8px;margin-top:25px;flex-wrap:wrap}.tags span{font:10px DM Mono;text-transform:uppercase;border:1px solid var(--line);padding:7px 9px}.project-action{justify-self:end;width:52px;height:52px;border:1px solid var(--ink);background:none;display:grid;place-items:center;cursor:pointer;transition:.2s}.project-action:hover{background:var(--ink);color:var(--paper);transform:translate(3px)}.project-action.placeholder{border:0}.muted-project{opacity:.53}.principles{margin:30px 0 130px;background:var(--ink);color:var(--paper);padding:90px 10%;text-align:center}.principle-mark svg{width:35px;height:35px}.principles blockquote{font:400 italic clamp(35px,4.5vw,66px)/1.15 Newsreader;margin:45px auto 30px;max-width:1000px}.principles p{font:10px DM Mono;text-transform:uppercase;letter-spacing:.15em;color:#aeb2ac}.about{padding:110px 0;display:grid;grid-template-columns:1fr 1.2fr;gap:12%;border-top:1px solid var(--line)}.about h2{margin-top:25px}.about-copy>p{font-size:18px;line-height:1.75;margin:0 0 22px}.about-meta{display:flex;gap:30px;margin-top:45px;border-top:1px solid var(--line);padding-top:24px;flex-wrap:wrap}.about-meta span{display:flex;align-items:center;gap:9px;font-size:12px}.contact{text-align:center;padding:140px 20px;border-top:1px solid var(--line)}.contact h2{margin:22px 0}.contact>p:not(.overline){color:var(--muted);max-width:600px;margin:0 auto;line-height:1.65}.contact>a{display:inline-flex;gap:15px;align-items:center;color:var(--ink);font-size:18px;margin-top:40px;text-decoration:none;border-bottom:1px solid;padding-bottom:6px}footer{min-height:180px;border-top:1px solid var(--ink);display:flex;align-items:center;justify-content:space-between;font:11px DM Mono;color:var(--muted)}footer>div:first-child{display:flex;flex-direction:column;gap:6px}footer strong{color:var(--ink)}.footer-links{display:flex;gap:22px}.footer-links a,.disabled-link{color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:7px}.disabled-link{color:var(--muted)}.project-page{padding:55px 0 120px}.back-link{border:0;background:none;padding:0;display:flex;gap:8px;align-items:center;font:11px DM Mono;text-transform:uppercase;cursor:pointer}.project-hero{padding:80px 0 65px}.project-hero h1{font-size:clamp(60px,7vw,110px);margin:28px 0 38px}.project-hero>p:last-child{font-size:18px;line-height:1.65;max-width:760px;color:var(--muted)}.formula-strip{border:1px solid var(--line);background:var(--white);display:grid;grid-template-columns:repeat(3,1fr) auto}.formula-strip>span{padding:23px;border-right:1px solid var(--line)}.formula-strip b{display:block;font:10px DM Mono;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.formula-strip code,.equations code,.drift-chart code{font:11px/1.6 DM Mono;white-space:pre-wrap}.formula-strip small{font:10px DM Mono;writing-mode:vertical-rl;padding:20px 14px;text-align:center}.sim-controls{margin-top:22px;border:1px solid var(--line);display:grid;grid-template-columns:auto 1fr auto;align-items:center;padding:15px 18px;gap:20px;background:var(--white)}.sim-controls>div:first-child{display:flex;gap:7px}.sim-controls button{width:39px;height:39px;display:grid;place-items:center;border:1px solid var(--line);background:none;cursor:pointer}.sim-controls button:disabled{opacity:.3}.step-label span{font:9px DM Mono;text-transform:uppercase;color:var(--blue)}.step-label h2{font-size:18px;margin:3px 0 0}.sim-controls>b{font:12px DM Mono}.sim-controls input{grid-column:1/-1;width:100%;accent-color:var(--blue)}.sim-summary{display:grid;grid-template-columns:180px 1fr;background:var(--ink);color:var(--paper);padding:18px 22px;font-size:13px}.sim-summary b{font:10px DM Mono;text-transform:uppercase;color:#aeb2ac}.sim-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.sim-panel{border:1px solid var(--line);background:var(--white);padding:22px}.sim-panel.stable{border-top:4px solid var(--blue)}.sim-panel.unstable{border-top:4px solid var(--red)}.sim-panel-head{display:flex;justify-content:space-between;gap:20px;margin-bottom:18px}.sim-panel-head span{font:9px DM Mono;color:var(--blue)}.unstable .sim-panel-head span{color:var(--red)}.sim-panel-head h2{font-size:21px;margin:6px 0 2px}.sim-panel-head p{font-size:11px;color:var(--muted);margin:0}.sim-panel-head>b{font:10px DM Mono;white-space:nowrap}.track{width:100%;height:auto;background:#eeeee9;border:1px solid var(--line)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);margin-top:12px;border:1px solid var(--line)}.metrics span{padding:10px;font:11px DM Mono;border-right:1px solid var(--line)}.metrics span:last-child{border:0}.metrics small{display:block;font:9px DM Mono;color:var(--muted);margin-bottom:5px}.equations{display:grid;gap:8px;margin-top:12px}.equations p{margin:0;padding:12px;border:1px solid var(--line);display:grid;grid-template-columns:155px 1fr;gap:10px;min-height:60px}.equations b{font:9px DM Mono;text-transform:uppercase;color:var(--muted)}.panel-note{font-size:11px;line-height:1.5;padding:12px;margin-top:12px;background:var(--blue-soft);color:#1f487f}.unstable .panel-note{background:var(--red-soft);color:#7c3129}.drift-chart{margin-top:18px;border:1px solid var(--line);background:var(--white);padding:24px}.drift-chart h2{font-size:15px;margin:0 0 20px}.drift-chart>div{display:grid;grid-template-columns:150px 1fr 70px;gap:14px;align-items:center;margin-top:10px;font-size:11px}.drift-chart i{height:9px;background:#dddcd5}.drift-chart i b{display:block;height:100%;background:var(--blue);transition:width .4s}.drift-chart .red i b{background:var(--red)}.method-note{font-size:11px;line-height:1.7;color:var(--muted);max-width:800px;margin:24px 0}.method-note b{color:var(--ink)}@media(max-width:900px){.site-shell{padding:0 22px}.hero{padding-top:65px}.hero-grid,.section-intro,.about{grid-template-columns:1fr}.hero-kicker{display:none}.hero h1{font-size:16vw}.section-intro{gap:24px}.sim-grid,.formula-strip{grid-template-columns:1fr}.formula-strip>span{border-right:0;border-bottom:1px solid var(--line)}.formula-strip small{writing-mode:horizontal-tb}.about{gap:50px}.project-row{grid-template-columns:45px 1fr 50px}}@media(max-width:600px){.site-header{height:76px}.wordmark-name,.site-header nav>a:not(.nav-contact){display:none}.site-header nav{gap:0}.hero{min-height:580px}.hero h1{margin-top:35px}.hero-copy{font-size:16px}.hero-rule{margin-top:70px}.work{padding:90px 0}.project-row{grid-template-columns:30px 1fr}.project-action{grid-column:2;width:100%;height:43px}.principles{margin-bottom:90px;padding:70px 25px}.about{padding:80px 0}.contact{padding:100px 5px}footer{align-items:flex-start;flex-direction:column;padding:45px 0;gap:30px}.project-hero{padding-top:60px}.project-hero h1{font-size:15vw}.sim-summary{grid-template-columns:1fr;gap:8px}.sim-panel{padding:14px}.metrics{grid-template-columns:1fr 1fr}.metrics span:nth-child(2){border-right:0}.metrics span:nth-child(-n+2){border-bottom:1px solid var(--line)}.equations p{grid-template-columns:1fr}.drift-chart>div{grid-template-columns:1fr;gap:6px}.sim-controls{grid-template-columns:auto 1fr}.sim-controls>b{display:none}}
