:root{--bg: oklch(.16 .005 60);--bg-elev: oklch(.19 .005 60);--fg: oklch(.94 .01 85);--fg-dim: oklch(.72 .01 80);--muted: oklch(.48 .008 70);--line: oklch(.28 .005 70);--line-soft: oklch(.23 .005 70);--accent: oklch(.82 .13 75);--accent-ink: oklch(.22 .04 60);--f-display: "Fraunces", "Times New Roman", serif;--f-sans: "Inter", system-ui, sans-serif;--f-mono: "JetBrains Mono", ui-monospace, monospace;--container: 1360px;--gutter: clamp(20px, 4vw, 48px)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--fg)}html{scroll-behavior:smooth}body{font-family:var(--f-sans);font-size:16px;line-height:1.55;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}img,svg{display:block;max-width:100%}::selection{background:var(--accent);color:var(--accent-ink)}.eyebrow{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-dim);font-weight:500}.eyebrow .dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:999px;margin-right:10px;transform:translateY(-2px)}.display{font-family:var(--f-display);font-weight:300;letter-spacing:-.02em;line-height:.95;font-variation-settings:"SOFT" 50,"WONK" 0,"opsz" 144}.italic{font-style:italic;font-variation-settings:"SOFT" 100,"WONK" 1,"opsz" 144}.nav{position:fixed;top:0;left:0;right:0;z-index:50;padding:18px var(--gutter);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(to bottom,color-mix(in oklch,var(--bg) 88%,transparent),color-mix(in oklch,var(--bg) 70%,transparent) 70%,color-mix(in oklch,var(--bg) 0%,transparent));backdrop-filter:blur(14px) saturate(1.1);-webkit-backdrop-filter:blur(14px) saturate(1.1)}.nav .brand{font-family:var(--f-display);font-size:15px;font-weight:400;letter-spacing:-.01em;color:var(--fg)}.nav .brand a{color:inherit}.nav ul{display:flex;gap:28px;list-style:none;align-items:center}.nav ul a{font-family:var(--f-mono);font-size:12px;color:var(--fg);letter-spacing:.04em;position:relative;padding:4px 0;transition:color .2s,opacity .2s}.nav ul a:hover{color:var(--accent)}.nav ul a .num{color:var(--muted);margin-right:6px}.nav ul a[aria-current=page]{color:var(--accent)}.nav ul a[aria-current=page] .num{color:var(--accent);opacity:.7}.mode-btn{display:inline-flex;align-items:center;padding:0;margin-left:10px;background:transparent;border:0;cursor:pointer;color:currentColor}.mode-dial{position:relative;width:28px;height:28px;display:inline-block}.mode-dial .mode-ring{position:absolute;inset:0;width:100%;height:100%;transition:transform .6s cubic-bezier(.4,1.4,.5,1)}.mode-btn[data-mode=light] .mode-ring{transform:rotate(180deg)}.mode-dial .mode-face{position:absolute;inset:0;width:100%;height:100%}.mode-sun,.mode-moon{transform-origin:22px 22px;transition:transform .5s cubic-bezier(.4,1.4,.5,1),opacity .3s}.mode-sun{transform:scale(.55) rotate(0);opacity:1}.mode-moon{transform:scale(0) rotate(-90deg);opacity:0}.mode-btn[data-mode=light] .mode-sun{transform:scale(0) rotate(90deg);opacity:0}.mode-btn[data-mode=light] .mode-moon{transform:scale(.65) rotate(0);opacity:1}.mode-label{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);font-family:var(--f-mono);font-size:10px;letter-spacing:.18em;height:12px;line-height:12px;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .2s;white-space:nowrap}.mode-label span{display:block;transition:transform .45s cubic-bezier(.2,.7,.2,1)}.mode-btn[data-mode=light] .mode-label span{transform:translateY(-12px)}.mode-btn:hover .mode-label{opacity:.7}.mode-btn:hover .mode-ring{transform:rotate(var(--r, 30deg))}.mode-btn[data-mode=light]:hover .mode-ring{transform:rotate(210deg)}.mode-btn:active .mode-dial{transform:scale(.92);transition:transform .1s}.hero{min-height:100vh;padding:160px var(--gutter) 80px;display:grid;grid-template-rows:1fr auto;position:relative}.hero-inner{max-width:var(--container);margin:0 auto;width:100%;align-self:center}.hero-text{min-width:0;max-width:1100px}.hero-art .flight-sketch{width:100%;max-width:560px;height:auto}.flight-sketch .fs-trail{stroke-dasharray:120 1400;stroke-dashoffset:1400;animation:fs-trail 10s linear infinite}@keyframes fs-trail{0%{stroke-dashoffset:1400}to{stroke-dashoffset:0}}.flight-sketch .fs-pulse{transform-box:fill-box;transform-origin:center;animation:fs-pulse 2.4s ease-out infinite}@keyframes fs-pulse{0%{r:3;stroke-opacity:.6}to{r:14;stroke-opacity:0}}.flight-sketch .fs-compass{transform-box:fill-box;transform-origin:center;animation:fs-rotate 18s linear infinite}@keyframes fs-rotate{to{transform:rotate(360deg)}}.flight-sketch .fs-float-a{animation:fs-float-a 6s ease-in-out infinite}.flight-sketch .fs-float-b{animation:fs-float-b 7.5s ease-in-out infinite}.flight-sketch .fs-float-c{animation:fs-float-c 9s ease-in-out infinite}@keyframes fs-float-a{0%,to{transform:translate(50px,460px)}50%{transform:translate(50px,456px)}}@keyframes fs-float-b{0%,to{transform:translate(228px,215px)}50%{transform:translate(228px,210px)}}@keyframes fs-float-c{0%,to{transform:translate(450px,90px)}50%{transform:translate(450px,84px)}}.hero .eyebrow{margin-bottom:28px;display:block}.hero h1{font-size:clamp(44px,7.2vw,116px);margin-bottom:32px}.hero h1 .l{display:inline-block;opacity:0;transform:translateY(.3em);animation:rise .9s cubic-bezier(.2,.7,.2,1) forwards}@keyframes rise{to{opacity:1;transform:translateY(0)}}.hero .bio{max-width:640px;font-size:clamp(17px,1.4vw,21px);color:var(--fg-dim);line-height:1.5;margin-top:24px}.hero .bio em{color:var(--fg);font-family:var(--f-display);font-style:italic;font-weight:400}.hero-foot{max-width:var(--container);margin:0 auto;width:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:40px;padding-top:40px;border-top:1px solid var(--line-soft)}.hero-foot .col{display:flex;flex-direction:column;gap:8px}.hero-foot .col.right{align-items:flex-end;text-align:right}.hero-foot .k{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.hero-foot .v{font-family:var(--f-mono);font-size:13px;color:var(--fg);line-height:1.55}.hero-foot .scroll{display:flex;flex-direction:column;align-items:center;gap:12px;font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.15em;text-transform:uppercase}.hero-foot .scroll .line{width:1px;height:44px;background:var(--line);position:relative;overflow:hidden}.hero-foot .scroll .line:after{content:"";position:absolute;inset:0;background:var(--accent);transform:translateY(-100%);animation:drip 2.4s cubic-bezier(.6,0,.4,1) infinite}@keyframes drip{0%{transform:translateY(-100%)}50%{transform:translateY(0)}to{transform:translateY(100%)}}.section{padding:120px var(--gutter);max-width:var(--container);margin:0 auto}.section-head{display:grid;grid-template-columns:90px 1fr auto;align-items:baseline;gap:32px;margin-bottom:64px;padding-bottom:28px;border-bottom:1px solid var(--line-soft)}.section-head .num{font-family:var(--f-mono);font-size:12px;color:var(--muted);letter-spacing:.1em}.section-head h2{font-family:var(--f-display);font-size:clamp(30px,3.4vw,48px);font-weight:300;letter-spacing:-.02em;line-height:1}.section-head h2 em{font-style:italic;font-weight:300;color:var(--fg-dim)}.section-head .meta{font-family:var(--f-mono);font-size:12px;color:var(--muted);text-align:right;letter-spacing:.08em;align-self:end}.section-head .meta a{color:var(--fg)}.section-head .meta a:hover{color:var(--accent)}.projects-sticky{height:600vh;position:relative}.projects-stage{position:sticky;top:0;height:100vh;overflow:hidden}.projects-track{height:100%;display:flex;align-items:center;padding-left:var(--gutter);will-change:transform}.projects-cards{display:contents}.projects-intro{flex:0 0 auto;width:42vw;max-width:640px;padding-right:80px}.projects-intro .eyebrow{margin-bottom:24px}.projects-intro h2{font-family:var(--f-display);font-size:clamp(36px,4.2vw,60px);font-weight:300;letter-spacing:-.02em;line-height:1;margin-bottom:24px}.projects-intro h2 em{font-style:italic;color:var(--fg-dim)}.projects-intro p{color:var(--fg-dim);font-size:16px;max-width:440px}.projects-intro .hint{margin-top:56px;display:flex;align-items:center;gap:14px;font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.projects-intro .hint .arrow{width:44px;height:1px;background:var(--line);position:relative}.projects-intro .hint .arrow:after{content:"";position:absolute;right:-2px;top:-3px;width:7px;height:7px;border-right:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}.projects-skip{position:absolute;left:50%;bottom:72px;transform:translate(-50%);font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid transparent;padding-bottom:2px;transition:color .2s,border-color .2s;z-index:4;white-space:nowrap}.projects-skip:hover{color:var(--fg-dim);border-bottom-color:var(--line)}.project-card{flex:0 0 auto;width:min(72vh,400px);height:min(72vh,400px);aspect-ratio:1 / 1;margin-right:32px;position:relative;overflow:hidden;cursor:pointer;background:var(--bg-elev);transition:transform .5s cubic-bezier(.2,.7,.2,1)}.project-card .card-meta,.project-card .card-body{opacity:0;transition:opacity .3s ease}.project-card:hover .shot{transform:scale(1.04)}.project-card:hover .shot-overlay,.project-card:hover .card-meta,.project-card:hover .card-body{opacity:1}.project-card .shot-wrap{position:absolute;inset:0;overflow:hidden;background:#0d0c0a}.project-card .shot{width:100%;height:100%;transition:transform .8s cubic-bezier(.2,.7,.2,1)}.project-card .shot svg{width:100%;height:100%}.project-card .shot-overlay{position:absolute;inset:0;background:linear-gradient(180deg,#080503c7,#08050347 18%,#08050329,#080503b8 72%,#080503f5);opacity:0;transition:opacity .4s;pointer-events:none}.project-card .card-meta{position:absolute;top:20px;left:24px;right:24px;display:flex;justify-content:space-between;align-items:center;font-family:var(--f-mono);font-size:11px;color:#c7c3bd;letter-spacing:.1em;text-transform:uppercase;z-index:2}.project-card .card-meta .status{display:flex;align-items:center;gap:8px}.project-card .card-meta .status .dot{width:6px;height:6px;background:var(--accent);border-radius:999px}.project-card .card-meta .card-ext{display:inline-grid;place-items:center;width:28px;height:28px;color:var(--fg-dim);transition:color .2s,transform .3s}.project-card .card-meta .card-ext:hover{color:var(--accent);transform:translate(1px,-1px)}.project-card .card-body{position:absolute;left:28px;right:28px;bottom:28px;display:grid;gap:12px;z-index:2}.project-card .card-body h3{font-family:var(--f-display);font-weight:300;font-size:40px;letter-spacing:-.02em;line-height:.95;color:#fff}.project-card .card-body .tagline{color:#c7c3bd;font-size:14px;line-height:1.5;max-width:42ch}.project-card .card-body .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.project-card .card-body .chips span{font-family:var(--f-mono);font-size:10px;color:#b4b0aa;letter-spacing:.1em;text-transform:uppercase;padding:4px 12px 4px 0;position:relative;display:inline-flex;align-items:center;gap:5px}.project-card .card-body .chips .metric{color:#fff}.project-card .card-body .chips .metric svg{opacity:.85}.project-card .card-body .chips span:after{content:"·";position:absolute;right:2px;top:4px;opacity:.5}.project-card .card-body .chips span:last-child{padding-right:0}.project-card .card-body .chips span:last-child:after{display:none}.project-card .card-cta{position:absolute;top:20px;right:24px;transform:translateY(-4px);opacity:0;padding:6px 10px;background:var(--accent);color:var(--accent-ink);font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;transition:opacity .3s,transform .3s;z-index:3}.project-card:hover .card-meta{opacity:0;transition:opacity .2s}.project-end{flex:0 0 auto;width:46vw;max-width:520px;padding:0 80px 0 40px;display:grid;align-content:center;gap:20px}.project-end h3{font-family:var(--f-display);font-size:48px;font-weight:300;letter-spacing:-.02em;line-height:1}.project-end h3 em{font-style:italic;color:var(--fg-dim)}.project-end p{color:var(--fg-dim);max-width:360px}.project-end a{margin-top:16px;display:inline-flex;align-items:center;gap:12px;font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg);border-bottom:1px solid var(--line);padding-bottom:10px;width:fit-content}.project-end a:hover{color:var(--accent);border-color:var(--accent)}.projects-progress{position:absolute;left:var(--gutter);right:var(--gutter);bottom:36px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.projects-progress .bar{height:1px;background:var(--line-soft);position:relative}.projects-progress .bar i{position:absolute;left:0;top:-.5px;height:2px;background:var(--accent);width:var(--p, 0%);transition:width .1s linear}.mini-head{margin-bottom:28px}.mini-head .eyebrow{display:inline-block;white-space:nowrap}.blog-list{display:grid;gap:0}.blog-row{display:grid;grid-template-columns:140px 1fr 180px 40px;align-items:baseline;gap:32px;padding:30px 0;border-bottom:1px solid var(--line-soft);position:relative;cursor:pointer;transition:padding .35s cubic-bezier(.2,.7,.2,1)}.blog-row:before{content:"";position:absolute;inset:0;background:var(--bg-elev);opacity:0;transition:opacity .3s;z-index:-1;margin:0 -24px}.blog-row:hover{padding-left:24px;padding-right:24px}.blog-row:hover:before{opacity:1}.blog-row:hover .arrow{transform:translate(4px);color:var(--accent)}.blog-row .idx{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em}.blog-row .date{font-family:var(--f-mono);font-size:12px;color:var(--fg-dim);letter-spacing:.05em;white-space:nowrap}.blog-row .title{font-family:var(--f-display);font-weight:300;font-size:clamp(22px,2.2vw,32px);letter-spacing:-.015em;line-height:1.1}.blog-row .tag{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.blog-row .arrow{font-family:var(--f-mono);font-size:14px;color:var(--fg-dim);transition:transform .3s,color .3s}.blog-foot{margin-top:40px;display:flex;justify-content:flex-end}.blog-foot a{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg);display:inline-flex;align-items:center;gap:14px;padding-bottom:8px;border-bottom:1px solid var(--fg)}.blog-foot a:hover{color:var(--accent);border-color:var(--accent)}.companies{padding:120px var(--gutter);max-width:var(--container);margin:0 auto;overflow:hidden}.companies-label{display:flex;align-items:center;gap:18px;margin-bottom:40px;color:var(--muted)}.section-head+.companies-label{margin-top:-32px}.companies-label .line{flex:1;height:1px;background:var(--line-soft)}.companies-rows{display:grid;gap:0;border-bottom:1px solid var(--line-soft)}.co-row{overflow:hidden;padding:0}.co-track{display:flex;gap:0;will-change:transform}.company{flex:0 0 auto;min-width:260px;display:grid;place-items:center;padding:36px 48px;border-right:1px solid var(--line-soft);filter:grayscale(1) brightness(1.5) contrast(.85);opacity:.52;transition:opacity .3s,filter .3s;min-height:120px;white-space:nowrap}.company:hover{opacity:1;filter:grayscale(0) brightness(1) contrast(1)}.company .wm{font-family:var(--f-display);font-weight:400;font-size:28px;letter-spacing:-.02em;color:var(--fg)}.company .wm.sans{font-family:var(--f-sans);font-weight:600;letter-spacing:-.03em;font-size:24px}.company .wm.mono{font-family:var(--f-mono);font-weight:500;font-size:18px;letter-spacing:.02em}.contact{padding:180px var(--gutter) 80px;max-width:var(--container);margin:0 auto}.contact .eyebrow{margin-bottom:36px;display:block}.contact h2{font-family:var(--f-display);font-size:clamp(30px,3.4vw,48px);font-weight:300;letter-spacing:-.02em;line-height:1.1;margin-bottom:56px;max-width:28ch}.contact h2 em{font-style:italic;color:var(--fg-dim)}.contact h2 a{position:relative;display:inline-block;transition:color .3s}.contact h2 a:after{content:"";position:absolute;left:0;right:0;bottom:.05em;height:3px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.2,.7,.2,1)}.contact h2 a:hover{color:var(--accent)}.contact h2 a:hover:after{transform:scaleX(1)}.contact-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px;padding-top:48px;border-top:1px solid var(--line-soft)}.contact-grid .col{display:flex;flex-direction:column;gap:10px}.contact-grid .k{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.contact-grid .v{font-family:var(--f-mono);font-size:14px;color:var(--fg);display:inline-flex;align-items:center;gap:8px}.contact-grid .v a{border-bottom:1px dashed var(--line);padding-bottom:2px}.contact-grid .v a:hover{color:var(--accent);border-color:var(--accent)}.footer{padding:36px var(--gutter);max-width:var(--container);margin:0 auto;display:flex;justify-content:space-between;border-top:1px solid var(--line-soft);font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.footer .time b{color:var(--fg-dim);font-weight:500}.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:40px;background:#040302cc;backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity .3s}.modal.open{opacity:1;pointer-events:all}.modal-inner{width:100%;max-width:1080px;max-height:90vh;background:var(--bg);border:1px solid var(--line);overflow:auto;transform:translateY(20px);transition:transform .4s cubic-bezier(.2,.7,.2,1)}.modal.open .modal-inner{transform:translateY(0)}.modal-inner::-webkit-scrollbar{width:8px}.modal-inner::-webkit-scrollbar-thumb{background:var(--line)}.modal-hero{aspect-ratio:16 / 8;background:#0d0c0a;border-bottom:1px solid var(--line-soft);position:relative}.modal-hero svg{width:100%;height:100%}.modal-close{position:sticky;top:20px;float:right;margin:20px 20px 0 0;z-index:2;width:44px;height:44px;display:grid;place-items:center;background:var(--bg);border:1px solid var(--line);color:var(--fg);transition:background .2s}.modal-close:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.modal-body{padding:60px clamp(30px,6vw,80px) 80px;display:grid;gap:40px;grid-template-columns:220px 1fr}.modal-body .meta{display:grid;gap:24px;align-content:start}.modal-body .meta .row{display:grid;gap:6px}.modal-body .meta .k{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.modal-body .meta .v{font-family:var(--f-mono);font-size:13px;color:var(--fg)}.modal-body .meta .v .status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--muted);margin-right:8px;vertical-align:baseline}.modal-body .meta .v .status-dot.live{background:#5a9a6a}.modal-body .meta .v a{border-bottom:1px solid var(--line);padding-bottom:2px}.modal-body .meta .v a:hover{color:var(--accent)}.modal-body .body h2{font-family:var(--f-display);font-size:clamp(32px,4vw,56px);font-weight:300;letter-spacing:-.02em;line-height:1;margin-bottom:24px}.modal-body .body h2 em{font-style:italic;color:var(--fg-dim)}.modal-body .body .lede{font-family:var(--f-display);font-weight:300;font-size:22px;line-height:1.4;color:var(--fg);margin-bottom:36px;padding-bottom:36px;border-bottom:1px solid var(--line-soft)}.modal-body .body p{color:var(--fg-dim);margin-bottom:20px;font-size:16px;max-width:64ch}.modal-body .body h3{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg);margin:40px 0 16px}.modal-body .body ul{list-style:none;display:grid;gap:10px}.modal-body .body li{padding:10px 0;border-bottom:1px dashed var(--line-soft);display:grid;grid-template-columns:40px 1fr;gap:16px;font-size:15px;color:var(--fg-dim)}.modal-body .body li b{font-family:var(--f-mono);font-size:11px;color:var(--muted);font-weight:400}.modal-shots{margin-top:36px;display:grid;gap:16px}.modal-shot{aspect-ratio:16 / 9;background:#0d0c0a;border:1px solid var(--line-soft)}.tweaks{position:fixed;right:24px;bottom:24px;z-index:80;width:300px;background:var(--bg-elev);border:1px solid var(--line);padding:18px 18px 16px;transform:translateY(calc(100% + 32px));transition:transform .4s cubic-bezier(.2,.7,.2,1);font-family:var(--f-mono)}.tweaks.open{transform:translateY(0)}.tweaks .t-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--line-soft);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg)}.tweaks .t-head .dot{width:6px;height:6px;background:var(--accent);border-radius:999px;display:inline-block;margin-right:8px}.tweaks .t-head button{font-family:var(--f-mono);font-size:14px;color:var(--muted)}.tweaks .t-row{display:grid;gap:8px;padding:12px 0;border-bottom:1px solid var(--line-soft);font-size:11px}.tweaks .t-row:last-child{border-bottom:0;padding-bottom:4px}.tweaks .t-row .label{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;display:flex;justify-content:space-between}.tweaks .t-row .label span{color:var(--fg)}.tweaks .opts{display:flex;gap:6px;flex-wrap:wrap}.tweaks .opts button{padding:6px 10px;border:1px solid var(--line);color:var(--fg-dim);font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;transition:all .2s}.tweaks .opts button.on{border-color:var(--accent);color:var(--accent)}.tweaks .swatches{display:flex;gap:8px}.tweaks .swatches button{width:24px;height:24px;border:1px solid var(--line);padding:0}.tweaks .swatches button.on{outline:1px solid var(--fg);outline-offset:2px}.tweaks-toggle{position:fixed;right:24px;bottom:24px;z-index:79;width:44px;height:44px;background:var(--bg-elev);border:1px solid var(--line);display:grid;place-items:center;transition:transform .3s,background .2s;font-family:var(--f-mono);font-size:16px;color:var(--fg-dim)}.tweaks-toggle:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}@media (max-width: 900px){.nav ul{display:none}.hero-foot{grid-template-columns:1fr 1fr}.hero-foot .scroll{display:none}.section-head{grid-template-columns:60px 1fr}.section-head .meta{grid-column:1 / -1;text-align:left}.blog-row{grid-template-columns:1fr 40px;gap:18px}.blog-row .date,.blog-row .tag{display:none}.companies-row{grid-template-columns:repeat(3,1fr)}.company:nth-child(3n){border-right:0}.modal-body{grid-template-columns:1fr}.contact-grid{grid-template-columns:repeat(2,1fr)}.tweaks{width:calc(100vw - 48px)}}@media (max-width: 768px){.project-card .card-body{left:20px;right:20px;bottom:20px;gap:8px}.project-card .card-body h3{font-size:26px}.project-card .card-body .tagline{font-size:12px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.project-card .card-body .chips{margin-top:2px}.project-card .card-body .chips span{font-size:9px;padding-right:10px}}@media (max-width: 900px){.projects-sticky{height:auto}.projects-stage{position:static;height:auto;overflow:visible}.projects-track{flex-direction:column;align-items:stretch;padding:0;transform:none!important;gap:24px}.projects-intro{width:100%;max-width:none;padding:80px var(--gutter) 0}.projects-intro .hint{margin-top:32px}.projects-cards{display:flex;flex-direction:row;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;gap:14px;padding:0 var(--gutter) 8px;scrollbar-width:none}.projects-cards::-webkit-scrollbar{display:none}.project-card{width:min(82vw,360px);height:min(82vw,360px);margin-right:0;scroll-snap-align:center;flex:0 0 auto}.project-card .card-meta,.project-card .card-body,.project-card .shot-overlay{opacity:1}.project-end{width:100%;max-width:none;padding:16px var(--gutter) 72px}.projects-progress{display:none}.projects-skip{position:static;transform:none;display:block;text-align:center;margin:0 auto 40px}}body.theme-warm{--bg: oklch(.16 .008 60);--accent: oklch(.82 .13 75)}body.theme-cool{--bg: oklch(.16 .008 300);--fg: oklch(.94 .008 300);--accent: oklch(.75 .16 305);--fg-dim: oklch(.72 .008 300);--muted: oklch(.5 .01 300);--line: oklch(.28 .008 300);--line-soft: oklch(.23 .008 300);--bg-elev: oklch(.19 .008 300);--accent-ink: oklch(.18 .04 300)}body.theme-sage{--accent: oklch(.8 .11 140);--accent-ink: oklch(.22 .04 140)}body.mode-light{--bg: oklch(.96 .008 85);--bg-elev: oklch(.93 .008 85);--fg: oklch(.2 .008 60);--fg-dim: oklch(.42 .008 60);--muted: oklch(.55 .008 60);--line: oklch(.78 .008 80);--line-soft: oklch(.86 .008 80);--accent: oklch(.52 .15 25);--accent-ink: oklch(.98 0 0)}body.mode-light.theme-cool{--accent: oklch(.48 .2 305)}body.mode-light.theme-sage{--accent: oklch(.5 .13 145)}body.type-sans{--f-display: "Inter", system-ui, sans-serif}body.type-sans .display,body.type-sans h1,body.type-sans h2,body.type-sans h3{font-weight:500;letter-spacing:-.04em}body.type-sans .italic,body.type-sans em{font-style:normal;font-weight:300;color:var(--fg-dim)}.blog-page{min-height:100vh;padding-bottom:80px}.blog-hero{padding:180px var(--gutter) 80px}.blog-hero .inner{max-width:1080px;margin:0 auto}.blog-hero .eyebrow{display:inline-block;font-family:var(--f-mono);font-size:11px;letter-spacing:.2em;color:var(--muted);text-transform:uppercase;margin-bottom:40px;padding-bottom:10px;border-bottom:1px solid var(--line-soft);padding-right:40px}.blog-hero h1{font-family:var(--f-display);font-weight:300;font-size:clamp(40px,5.6vw,84px);line-height:1.02;letter-spacing:-.025em;margin-bottom:32px;text-wrap:pretty}.blog-hero .lead{font-family:var(--f-display);font-size:clamp(17px,1.3vw,20px);font-weight:300;color:var(--fg-dim);max-width:58ch;line-height:1.55}.blog-controls{position:sticky;top:64px;z-index:10;padding:20px var(--gutter);background:color-mix(in oklch,var(--bg) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.blog-controls .inner{max-width:1080px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.blog-controls .chips{display:flex;flex-wrap:wrap;gap:6px}.blog-controls .chip{background:transparent;border:1px solid var(--line);padding:8px 14px;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;color:var(--fg-dim);cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:color .2s,border-color .2s,background .2s}.blog-controls .chip:hover{color:var(--fg);border-color:var(--fg-dim)}.blog-controls .chip.active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.blog-controls .chip .n{font-size:10px;opacity:.55;padding-left:6px;border-left:1px solid currentColor;margin-left:2px}.blog-controls .chip.active .n{opacity:.75;border-color:var(--accent-ink)}.blog-controls .count{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em}.blog-list{padding:40px var(--gutter) 60px}.blog-list .inner{max-width:1080px;margin:0 auto}.post-row{display:grid;grid-template-columns:120px 1fr 180px;gap:32px;padding:28px 0;border-bottom:1px solid var(--line-soft);color:var(--fg);opacity:0;transform:translateY(8px);animation:postIn .6s cubic-bezier(.2,.7,.2,1) forwards;transition:background .2s,padding .2s;align-items:start}@keyframes postIn{to{opacity:1;transform:none}}.post-row:first-child{border-top:1px solid var(--line-soft)}.post-row:hover{background:color-mix(in oklch,var(--fg) 3%,transparent);padding-left:18px;padding-right:18px}.post-row .r-date{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding-top:8px;white-space:nowrap}.post-row .r-main{min-width:0}.post-row .r-title{font-family:var(--f-display);font-weight:300;font-size:clamp(22px,2.1vw,28px);line-height:1.2;letter-spacing:-.015em;margin-bottom:8px;text-wrap:balance}.post-row:hover .r-title{color:var(--accent)}.post-row .r-excerpt{font-size:14px;color:var(--fg-dim);line-height:1.55;max-width:58ch}.post-row .r-meta{display:flex;flex-direction:column;align-items:flex-end;gap:10px;padding-top:10px}.post-row .r-kind{font-family:var(--f-mono);font-size:10px;padding:4px 9px;letter-spacing:.1em;text-transform:uppercase;border:1px solid currentColor;color:var(--fg-dim)}.post-row .r-kind.kind-essay{color:#d2b27c}.post-row .r-kind.kind-notes{color:#84bbaf}.post-row .r-kind.kind-code{color:#93bb8b}.post-row .r-kind.kind-case{color:#f19f91}.post-row .r-kind.kind-link{color:#999fdc}.post-row .r-time{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em}.post-row.kind-link .r-title:before{content:""}.empty{padding:60px 0;text-align:center;color:var(--muted);font-family:var(--f-mono);font-size:13px;letter-spacing:.05em}.post-page{min-height:100vh;padding-bottom:120px}.post-page article{max-width:680px;margin:0 auto;padding:160px var(--gutter) 40px}.post-header{padding-bottom:40px;border-bottom:1px solid var(--line-soft);margin-bottom:48px}.post-header .back{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase;display:inline-block;margin-bottom:32px}.post-header .back:hover{color:var(--accent)}.post-header .meta{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em;display:flex;gap:16px;margin-bottom:24px;text-transform:uppercase}.post-header h1{font-family:var(--f-display);font-weight:300;font-size:clamp(34px,4.4vw,56px);line-height:1.05;letter-spacing:-.02em;margin-bottom:20px;text-wrap:pretty}.post-header .dek{font-family:var(--f-display);font-weight:300;font-size:20px;line-height:1.55;color:var(--fg-dim);font-style:italic}.post-body{font-size:18px;line-height:1.7;color:var(--fg)}.post-body>*+*{margin-top:24px}.post-body p{max-width:66ch}.post-body h2{font-family:var(--f-display);font-size:28px;font-weight:400;margin-top:56px!important;letter-spacing:-.01em}.post-body h3{font-family:var(--f-display);font-size:20px;font-weight:500;margin-top:40px!important}.post-body blockquote{border-left:2px solid var(--accent);padding-left:20px;color:var(--fg-dim);font-style:italic;font-family:var(--f-display);font-size:20px}.post-body pre{background:var(--bg-elev);border:1px solid var(--line-soft);padding:20px 22px;font-family:var(--f-mono);font-size:13.5px;line-height:1.7;overflow-x:auto;color:var(--fg-dim)}.post-body code{font-family:var(--f-mono);font-size:.92em;background:color-mix(in oklch,var(--fg) 8%,transparent);padding:2px 6px}.post-body pre code{background:none;padding:0;color:var(--fg)}.post-body a{color:var(--accent);border-bottom:1px solid currentColor}.post-body ul,.post-body ol{padding-left:24px}.post-body li+li{margin-top:6px}.post-foot{max-width:680px;margin:80px auto 0;padding:40px var(--gutter) 0;border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:12px;color:var(--fg-dim)}.post-foot a:hover{color:var(--accent)}.case-page{min-height:100vh;padding-bottom:120px}.case-page article{max-width:1200px;margin:0 auto;padding:160px var(--gutter) 40px}.case-page .post-header{max-width:880px}.case-page .case-body{display:grid;grid-template-columns:240px 1fr;gap:72px;align-items:start}.case-page .case-sidebar{position:sticky;top:100px;display:grid;gap:20px;align-self:start}.case-page .case-sidebar .row{display:grid;gap:6px}.case-page .case-sidebar .k{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.case-page .case-sidebar .v{font-family:var(--f-mono);font-size:13px;color:var(--fg);line-height:1.5}.case-page .case-sidebar .v a{border-bottom:1px solid var(--line);padding-bottom:2px;transition:color .2s,border-color .2s}.case-page .case-sidebar .v a:hover{color:var(--accent);border-color:var(--accent)}.case-page .case-sidebar .status-dot{color:var(--muted);margin-right:2px;font-size:10px;position:relative;top:-1px}.case-page .case-sidebar .status-dot[data-status=Live],.case-page .case-sidebar .status-dot[data-status=Active]{color:#53c75d}.case-page .post-foot{max-width:1200px}@media (max-width: 820px){.post-row{grid-template-columns:1fr;gap:12px;padding:22px 0}.post-row .r-meta{flex-direction:row;align-items:center;padding-top:0;gap:14px}.blog-controls{position:static}.case-page .case-body{grid-template-columns:1fr;gap:40px}.case-page .case-sidebar{position:static;padding-bottom:32px;border-bottom:1px solid var(--line-soft)}}
