: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-inner--split{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(28px,4vw,56px);max-width:1060px}.hero-text{min-width:0;max-width:1100px}.hero-inner--split .hero-text{max-width:620px}.hero-portrait{width:clamp(200px,22vw,300px);aspect-ratio:4 / 5;border:1px solid var(--line);border-radius:4px;overflow:hidden;position:relative;flex-shrink:0}.hero-portrait img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(1) contrast(1.02);transition:filter .6s cubic-bezier(.2,.7,.2,1)}.hero-portrait:hover img{filter:grayscale(0) contrast(1)}.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(36px,4.6vw,72px);margin-bottom:24px}.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 .bio-stack{max-width:620px;margin-top:18px;font-family:var(--f-mono);font-size:12px;color:var(--muted);letter-spacing:.04em;line-height:1.7}.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-section{padding-top:96px;padding-bottom:96px}.projects-head{max-width:720px;margin-bottom:48px}.projects-head .eyebrow{display:block;margin-bottom:20px}.projects-head h2{font-family:var(--f-display);font-size:clamp(28px,3vw,44px);font-weight:300;letter-spacing:-.02em;line-height:1.04;margin-bottom:12px}.projects-head h2 em{font-style:italic;color:var(--fg-dim)}.projects-head p{color:var(--fg-dim);font-size:15px;max-width:460px}.projects-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.proj-tile{position:relative;display:grid;grid-template-rows:auto auto 1fr auto;gap:8px;padding:18px 18px 16px;background:var(--bg-elev);border-radius:12px;cursor:pointer;transition:background-color .55s cubic-bezier(.16,1,.3,1),transform .55s cubic-bezier(.16,1,.3,1);min-height:200px}.proj-tile:hover{background:color-mix(in oklch,var(--bg-elev) 84%,var(--accent) 16%);transform:translateY(-2px)}.proj-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.proj-tile--passive{cursor:default}.proj-year{font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.proj-idx{color:var(--fg-dim);font-weight:500}.proj-sep{opacity:.5}.proj-name{font-family:var(--f-display);font-weight:400;font-size:20px;letter-spacing:-.015em;line-height:1.1;color:var(--fg);margin-top:2px}.proj-pitch{color:var(--fg-dim);font-size:12.5px;line-height:1.5}.proj-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:10px;flex-wrap:wrap}.proj-metric{font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg);font-weight:500}.proj-stack{display:flex;gap:5px;flex-wrap:wrap}.proj-stack span{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:2px 7px;background:color-mix(in oklch,var(--bg) 85%,transparent);border-radius:999px}.proj-arrow{position:absolute;top:16px;right:16px;font-size:13px;color:var(--muted);opacity:0;transform:translate(-4px,4px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .55s cubic-bezier(.16,1,.3,1),color .5s cubic-bezier(.16,1,.3,1)}.proj-tile:hover .proj-arrow{opacity:1;transform:translate(0);color:var(--accent)}.proj-more{max-height:0;opacity:0;overflow:hidden;margin-top:0;transform:translateY(-4px);transition:max-height .7s cubic-bezier(.16,1,.3,1),opacity .55s cubic-bezier(.16,1,.3,1) .05s,margin-top .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.proj-tile:hover .proj-more,.proj-tile:focus-visible .proj-more{max-height:260px;opacity:1;margin-top:6px;transform:translateY(0)}.proj-more-label{display:block;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.proj-more-list{display:flex;gap:5px;flex-wrap:wrap}.proj-more-list span{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-dim);padding:2px 7px;background:color-mix(in oklch,var(--bg) 78%,transparent);border-radius:999px}.projects-reveal{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:28px}.projects-reveal-btn{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg);padding:10px 18px;background:var(--bg-elev);border-radius:999px;cursor:pointer;transition:color .25s cubic-bezier(.16,1,.3,1),background-color .25s cubic-bezier(.16,1,.3,1)}.projects-reveal-btn:hover{color:var(--accent);background:color-mix(in oklch,var(--bg-elev) 80%,var(--accent) 20%)}.projects-archive-link{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-dim);border-bottom:1px solid var(--line-soft);padding-bottom:4px;transition:color .25s cubic-bezier(.16,1,.3,1),border-color .25s cubic-bezier(.16,1,.3,1)}.projects-archive-link:hover{color:var(--accent);border-color:var(--accent)}.projects-foot{margin-top:48px;display:flex;flex-direction:column;gap:14px;align-items:flex-start}.projects-foot p{color:var(--fg-dim);font-size:13.5px;max-width:460px}.projects-foot a{display:inline-flex;align-items:center;gap:10px;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:8px;transition:color .2s,border-color .2s}.projects-foot a:hover{color:var(--accent);border-color:var(--accent)}@media (max-width: 1100px){.projects-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 820px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.projects-grid{grid-template-columns:1fr;gap:10px}.proj-tile{padding:16px;min-height:0}.proj-name{font-size:18px}}.mini-head{margin-bottom:40px}#blog .mini-head{margin-bottom:0}.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:160px 0;max-width:none;margin:0;overflow:hidden}.companies .mini-head{padding:0 var(--gutter)}.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:1px solid var(--line-soft)}.companies-rows--mobile{display:none}.co-row{overflow:hidden;padding:0;border-bottom:1px solid var(--line-soft)}.co-row:last-child{border-bottom:0}.co-track{display:flex;gap:0;will-change:transform}.company{flex:0 0 auto;min-width:300px;display:grid;place-items:center;padding:56px 64px;border-right:1px solid var(--line-soft);filter:grayscale(1) brightness(1.5) contrast(.85);opacity:.52;transition:opacity .3s,filter .3s;min-height:160px;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}.company .wm.freight{font-family:var(--f-sans);font-size:24px;text-transform:uppercase;letter-spacing:-.01em;display:inline-flex}.company .wm.freight .freight-bold{font-weight:800}.company .wm.freight .freight-thin{font-weight:400}.company .wm.logo{color:var(--fg);display:inline-flex;align-items:center}.company .wm.logo svg{height:28px;width:auto;display:block}.company .wm.image{height:56px;width:auto;display:block;filter:grayscale(1) brightness(1.1) contrast(.9);opacity:.9}.company .wm.image.small{height:32px}.company .wm.image.invert{filter:grayscale(1) invert(1) brightness(1.1) contrast(.9)}.company:hover .wm.image{filter:grayscale(1) brightness(1.1) contrast(.9)}.company:hover .wm.image.invert{filter:grayscale(1) invert(1) brightness(1.1) contrast(.9)}body.mode-light .company{filter:grayscale(1) brightness(.95) contrast(1);opacity:.6}body.mode-light .company:hover{opacity:1;filter:grayscale(0) brightness(1) contrast(1)}body.mode-light .company .wm.image,body.mode-light .company .wm.image.invert{filter:grayscale(1) brightness(.92) contrast(1.05);opacity:1}body.mode-light .company:hover .wm.image,body.mode-light .company:hover .wm.image.invert{filter:grayscale(0) brightness(1) contrast(1)}.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-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:12px 0;border-bottom:1px dashed var(--line-soft);display:grid;gap:6px;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;letter-spacing:.08em;text-transform:uppercase}.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;align-items:start}.hero-foot .scroll{display:none}.hero-inner--split{grid-template-columns:1fr;gap:40px;justify-items:center}.hero-portrait{width:min(60vw,280px);justify-self:center;margin-bottom:56px}.hero-inner--split .hero-text{justify-self:stretch}.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}.companies-rows--desktop{display:none}.companies-rows--mobile{display:block;border:0}.companies-rows--mobile .co-row{border:1px solid var(--line-soft);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.companies-rows--mobile .co-row::-webkit-scrollbar{display:none}.companies-rows--mobile .co-track{transform:none!important}.companies-hint{display:flex;align-items:center;gap:14px;padding:0 var(--gutter);margin-bottom:20px;font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.companies-hint .arrow{width:44px;height:1px;background:var(--line);position:relative}.companies-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)}.modal-body{grid-template-columns:1fr}.contact-grid{grid-template-columns:repeat(2,1fr)}.tweaks{width:calc(100vw - 48px)}}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)}.archive-page{padding:80px var(--gutter) 120px;max-width:var(--container);margin:0 auto}.archive-inner{display:flex;flex-direction:column;gap:56px}.archive-back{font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-dim);width:fit-content;padding-bottom:4px;border-bottom:1px solid var(--line-soft);transition:color .25s cubic-bezier(.16,1,.3,1),border-color .25s cubic-bezier(.16,1,.3,1)}.archive-back:hover{color:var(--accent);border-color:var(--accent)}.archive-head{max-width:720px}.archive-head .eyebrow{display:block;margin-bottom:20px}.archive-head h1{font-family:var(--f-display);font-size:clamp(28px,3vw,44px);font-weight:300;letter-spacing:-.02em;line-height:1.05;margin-bottom:14px}.archive-head p{color:var(--fg-dim);font-size:15px;max-width:560px;line-height:1.55}.archive-list{list-style:none;padding:0;display:flex;flex-direction:column}.archive-row{display:grid;grid-template-columns:80px 1fr;gap:28px;padding:22px 0;border-top:1px solid var(--line-soft)}.archive-row:last-child{border-bottom:1px solid var(--line-soft)}.archive-year{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;color:var(--muted);padding-top:3px}.archive-main{display:flex;flex-direction:column;gap:8px}.archive-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.archive-title{font-family:var(--f-display);font-weight:400;font-size:20px;letter-spacing:-.015em;line-height:1.1;color:var(--fg)}.archive-company{font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-dim);padding:3px 10px;border:1px solid var(--line-soft);border-radius:999px;line-height:1}.archive-summary{color:var(--fg-dim);font-size:14px;line-height:1.55;max-width:70ch}.archive-tech{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}.archive-tech span{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:3px 9px;background:var(--bg-elev);border-radius:999px}.archive-foot{margin-top:16px}@media (max-width: 640px){.archive-row{grid-template-columns:1fr;gap:8px}.archive-year{padding-top:0}}.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:18px;color:var(--fg-dim);font-family:var(--f-sans);font-size:15px;line-height:1.6}.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-body .contribs{display:grid;gap:0;margin:32px 0;padding:0}.post-body .contribs dt{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding-top:18px;border-top:1px dashed var(--line-soft);margin-top:0!important}.post-body .contribs dt:first-of-type{border-top:none;padding-top:0}.post-body .contribs dd{margin:8px 0 18px;color:var(--fg-dim);max-width:66ch;font-size:17px;line-height:1.6}.post-body .contribs dd:last-child{margin-bottom:0}.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)}}
