:root{color-scheme:dark;--ground: oklch(.17 .02 250);--ground-2: oklch(.215 .022 250);--ground-3: oklch(.26 .024 250);--ink: oklch(.93 .006 250);--ink-soft: oklch(.7 .012 250);--rule: oklch(.36 .016 250);--rule-firm: oklch(.48 .018 250);--signal: oklch(.8 .15 85);--signal-dim: oklch(.8 .15 85 / .16);--warn: oklch(.65 .17 15);--warn-dim: oklch(.65 .17 15 / .18);--step--2: .75rem;--step--1: clamp(.78rem, .75rem + .15vw, .86rem);--step-0: clamp(1rem, .96rem + .2vw, 1.12rem);--step-1: clamp(1.25rem, 1.15rem + .5vw, 1.5rem);--step-2: clamp(1.75rem, 1.4rem + 1.6vw, 2.9rem);--step-3: clamp(2.3rem, 1.7rem + 2.8vw, 4.2rem);--step-4: clamp(3rem, 1.9rem + 5.6vw, 7rem);--gap-xs: .5rem;--gap-s: 1rem;--gap-m: 2rem;--gap-l: 4rem;--gap-xl: 7rem;--measure: 54ch;--shell: 1240px;--wide: 120rem;--pad-x: clamp(1rem, 4vw, 3rem);--mx: .34;--my: .3}@layer reset,base,light,page,motion;@layer reset{*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,p,figure,figcaption,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}img,svg{display:block;max-width:100%}}@layer base{html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--ground);color:var(--ink);font-family:var(--font-display);font-size:var(--step-0);line-height:1.55;font-variation-settings:"opsz" 16,"wdth" 100,"wght" 400;-webkit-font-smoothing:antialiased;text-wrap:pretty;overflow-x:clip}a{color:var(--signal);text-decoration-thickness:1px;text-underline-offset:4px}a:hover{color:var(--ink)}:focus-visible{outline:2px solid var(--signal);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.shell{max-width:var(--shell);margin-inline:auto;padding-inline:var(--pad-x)}.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{font-weight:500}.tag{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.08em;color:var(--ink-soft)}}@layer light{body:before,body:after{content:"";position:fixed;z-index:0;pointer-events:none}body:before{inset:-20vmax;background:radial-gradient(34vmax 34vmax at calc(var(--mx) * 100%) calc(var(--my) * 100%),oklch(.8 .15 85 / .115),oklch(.8 .15 85 / .04) 45%,transparent 70%)}body:after{inset:0;background-image:repeating-linear-gradient(to right,var(--rule) 0 1px,transparent 1px 96px),repeating-linear-gradient(to bottom,var(--rule) 0 1px,transparent 1px 96px);opacity:.45;-webkit-mask-image:radial-gradient(26vmax 26vmax at calc(var(--mx) * 100%) calc(var(--my) * 100%),#000,transparent 72%);mask-image:radial-gradient(26vmax 26vmax at calc(var(--mx) * 100%) calc(var(--my) * 100%),#000,transparent 72%)}body>*{position:relative;z-index:1}.cursor{position:fixed;top:0;left:0;z-index:6;translate:calc(var(--mx) * 100vw + 18px) calc(var(--my) * 100vh - 8px);padding:.3rem .55rem;background:var(--signal);color:var(--ground);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.04em;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .14s ease;max-width:44vw;overflow:hidden;text-overflow:ellipsis}.cursor[data-on]{opacity:1}@media(hover:none){.cursor{display:none}}}@layer page{.bar{display:flex;flex-wrap:wrap;gap:var(--gap-xs);justify-content:space-between;align-items:center;padding-block:1rem;border-bottom:1px solid var(--rule)}@media(max-width:46rem){.bar{display:none}}.hero{padding-block:clamp(3rem,9vw,7rem) clamp(2rem,5vw,3.5rem)}.hero__name{font-family:var(--font-mono);font-size:var(--step--1);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.hero__claim{font-size:var(--step-4);line-height:.95;letter-spacing:-.03em;margin-block:var(--gap-m);font-variation-settings:"opsz" 96,"wdth" 100,"wght" 700}.hero__claim .line{display:block}.hero__claim em{font-style:normal;color:var(--signal);font-variation-settings:"opsz" 96,"wdth" calc(78 + var(--mx) * 22),"wght" calc(430 + (1 - var(--my)) * 370)}.hero__lede{max-width:var(--measure);color:var(--ink-soft)}.hero__links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-xs);margin-block:var(--gap-m) var(--gap-s)}.hero__links a{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding-inline:.85rem;border:1px solid var(--rule-firm);background:var(--ground-2);color:var(--ink);text-decoration:none;font-family:var(--font-mono);font-size:var(--step--1);transition:background-color .16s ease,color .16s ease,border-color .16s ease}.hero__links a:after{content:"↗";color:var(--ink-soft);transition:color .16s ease}.hero__links a:hover,.hero__links a:focus-visible{background:var(--signal);border-color:var(--signal);color:var(--ground)}.hero__links a:hover:after,.hero__links a:focus-visible:after{color:var(--ground)}@media(min-width:46rem){.hero__links{grid-template-columns:repeat(4,minmax(0,1fr))}}.project{padding-block:clamp(3rem,8vw,6rem)}.project__head{display:flex;flex-wrap:wrap;gap:var(--gap-xs) var(--gap-m);justify-content:space-between;align-items:baseline;padding-bottom:.8rem;border-bottom:1px solid var(--rule)}.project__index{font-family:var(--font-mono);font-size:var(--step--2);color:var(--signal);letter-spacing:.1em}.project__finding{font-size:var(--step-2);line-height:1.05;letter-spacing:-.022em;max-width:30ch;margin-block:var(--gap-m) var(--gap-s);font-variation-settings:"opsz" 48,"wdth" 92,"wght" 620}.project__body{max-width:var(--measure);color:var(--ink-soft)}.project__body+.project__body{margin-top:var(--gap-s)}.project__grid{display:grid;gap:var(--gap-m);margin-top:var(--gap-m)}@media(min-width:60rem){.project__grid{grid-template-columns:minmax(0,22rem) minmax(0,1fr);gap:var(--gap-l);align-items:start}.project__grid--wide{grid-template-columns:minmax(0,1fr) minmax(0,22rem)}}.stats>div{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-s);padding-block:.6rem;border-bottom:1px solid var(--rule)}.stats dt{font-size:var(--step--1);color:var(--ink-soft)}.stats dd{margin:0;font-family:var(--font-mono);font-weight:500;font-variant-numeric:tabular-nums}.stats dd[data-signal]{color:var(--signal)}.stats dd[data-warn]{color:var(--warn)}figure{display:flex;flex-direction:column;gap:var(--gap-s);background:var(--ground-2);border:1px solid var(--rule);padding:var(--gap-s)}figure svg{width:100%;height:auto}figcaption{font-size:var(--step--2);font-family:var(--font-mono);color:var(--ink-soft);line-height:1.6}.sh,.tl,.np{cursor:crosshair}.chips{display:flex;flex-wrap:wrap;gap:var(--gap-xs) var(--gap-s)}.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-soft)}.chip i{width:12px;height:12px;border:1px solid var(--rule-firm)}.chip i[data-tone=agree]{background:var(--ink-soft);opacity:.45}.chip i[data-tone=differ]{background:var(--warn)}.note{max-width:58ch;line-height:1.75;margin-top:var(--gap-s)}.caveat{margin-top:var(--gap-s);padding:var(--gap-s);border-left:3px solid var(--warn);background:var(--warn-dim);max-width:58ch}.caveat cite{display:block;margin-top:.5rem;font-style:normal;font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.08em;color:var(--ink-soft)}.topo{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}.topo li{background:var(--ground-3);padding:.65rem .8rem;display:flex;flex-wrap:wrap;gap:.15rem var(--gap-s);justify-content:space-between;align-items:baseline}.topo b{font-size:var(--step--1);font-variation-settings:"wght" 620}.topo span{font-family:var(--font-mono);font-size:var(--step--2);color:var(--ink-soft)}.topo__trunk{background:var(--signal)!important;color:var(--ground)}.topo__trunk span{color:var(--ground);opacity:.75}@media(min-width:46rem){.topo{grid-template-columns:repeat(3,minmax(0,1fr))}.topo__trunk{grid-column:1 / -1}}.ar{cursor:default}.ar-node rect{transition:opacity .16s ease}.ar:hover .ar-node:not(:hover) rect{opacity:.4}.ar:hover .ar-node:not(:hover) text{opacity:.45}.ar-node text{transition:opacity .16s ease}footer{padding-block:var(--gap-m) var(--gap-xl);border-top:1px solid var(--rule);color:var(--ink-soft)}.footer__note{max-width:62ch;line-height:1.8}}@layer motion{@media(hover:hover)and (prefers-reduced-motion:no-preference){.project{transition:opacity .26s ease}[data-attend] #work .project:not([data-current]){opacity:.45}}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){@keyframes rise{0%{opacity:0;transform:translateY(1.6rem)}to{opacity:1;transform:none}}@keyframes settle{0%{font-variation-settings:"opsz" 48,"wdth" 92,"wght" 250;opacity:.5}to{font-variation-settings:"opsz" 48,"wdth" 92,"wght" 620;opacity:1}}@keyframes develop{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}@keyframes draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:none}}@keyframes progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.project__finding{animation:settle linear both;animation-timeline:view();animation-range:entry 8% cover 32%}figure{animation:develop linear both;animation-timeline:view();animation-range:entry 12% cover 38%}.project__body,.stats,.note,.brief{animation:rise linear both;animation-timeline:view();animation-range:entry 4% cover 28%}.pf-line{stroke-dasharray:1;animation:draw linear both;animation-timeline:view();animation-range:entry 18% cover 62%}.pf-zero,.pf-best{transform-box:fill-box;transform-origin:center;animation:pop linear both;animation-timeline:view();animation-range:cover 40% cover 70%}}}.progress{display:none;position:fixed;inset:0 0 auto;height:2px;z-index:7;background:var(--signal);transform:scaleX(0);transform-origin:left}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: scroll()){.progress{display:block;animation:progress linear both;animation-timeline:scroll(root block)}}}}@layer page{.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center}.hero__cue{margin-top:var(--gap-l);display:flex;align-items:center;gap:var(--gap-xs)}.hero__cue:before{content:"";width:2.5rem;height:1px;background:var(--rule-firm)}.split{padding-inline:var(--pad-x);max-width:var(--wide);margin-inline:auto;margin-top:var(--gap-l);display:grid;gap:var(--gap-m)}.split>figure{background:none;border:0;padding-inline:0}.split>figure>svg{max-height:74vh}@media(min-width:64rem){.split{grid-template-columns:minmax(0,1fr) minmax(0,21rem);column-gap:var(--gap-l);row-gap:var(--gap-m);align-items:start}.split>figure{grid-column:1;grid-row:1}.split>.split__words{grid-column:2;grid-row:1 / span 2}.split>.stats{grid-column:1;grid-row:2}}.pin{padding-inline:var(--pad-x);display:grid;gap:var(--gap-m);max-width:var(--wide);margin-inline:auto;margin-block-start:var(--gap-l)}@media(min-width:64rem){.pin{grid-template-columns:minmax(0,1fr) minmax(0,24rem);gap:var(--gap-l);align-items:start}.pin__stage{position:sticky;top:0;height:100svh;display:grid;align-content:center}.pin__stage>figure{max-height:88svh;background:none;border:0;padding:0}.pin__stage>figure>svg{max-height:68svh}.pin__feed{min-height:215svh;padding-block:22svh 16svh;display:flex;flex-direction:column;justify-content:space-around;gap:var(--gap-l)}}.rail{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-color:var(--rule-firm) transparent}.rail:focus-visible{outline:2px solid var(--signal);outline-offset:-2px}.project--rail .rail,.project--travel .travel{margin-top:var(--gap-l)}.rail__hint{margin-top:var(--gap-xs);color:var(--ink-soft);opacity:.7}.travel{background:none;border:0;padding:0}.travel .pan{width:max-content;min-width:100%;padding-inline:var(--pad-x)}.travel .pan>svg{height:var(--tl-h);width:auto;max-width:none}.travel__foot{display:flex;flex-wrap:wrap;gap:var(--gap-xs) var(--gap-m);justify-content:space-between;align-items:baseline}.runway{--tl-h: min(58svh, 34rem)}@media(min-width:64rem)and (prefers-reduced-motion:no-preference){.runway[data-pan]{--tl-h: min(52svh, 30rem);--tl-aspect: 7.5956;--tl-w: calc(var(--tl-h) * var(--tl-aspect));--travel: max(0px, calc(var(--tl-w) + (2 * var(--pad-x)) - 100vw));height:calc(100svh + var(--travel));view-timeline-name:--recording;view-timeline-axis:block}.runway[data-pan] .stage{position:sticky;top:0;height:100svh;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;align-content:center;gap:var(--gap-m);padding-block:var(--gap-m)}.runway[data-pan] .stage>.travel{margin-top:0;display:flex;flex-direction:column;justify-content:center;gap:var(--gap-m)}.runway[data-pan] .rail{overflow:hidden;position:relative;min-width:0}.runway[data-pan=native] .pan{animation:travel-recording linear both;animation-timeline:--recording;animation-range:contain 0% contain 100%}@keyframes travel-recording{0%{transform:translate(0)}to{transform:translate(calc(-1 * var(--travel)))}}.runway[data-pan] .rail:after{content:"";position:absolute;inset-block:0;left:50%;width:2px;background:var(--signal);opacity:.45}.runway[data-pan]+.rail__hint{display:none}}.rail--cards{scroll-snap-type:x proximity;scroll-padding-inline:var(--pad-x)}.rail--cards .rail__track{display:flex;align-items:stretch;gap:var(--gap-m);width:max-content;padding-inline:var(--pad-x);margin-inline:auto}.card{scroll-snap-align:start;width:min(40rem,86vw);display:flex;flex-direction:column;gap:var(--gap-s);padding:var(--gap-m);background:var(--ground-2);border:1px solid var(--rule)}.card .project__head{border-bottom:0;padding-bottom:0}.card__finding{font-size:var(--step-1);line-height:1.1;letter-spacing:-.015em;font-variation-settings:"opsz" 32,"wdth" 92,"wght" 620}.card .project__body{max-width:none}.card figure{background:var(--ground)}.card__repo{margin-top:auto}@media(min-width:130rem){.rail--cards+.rail__hint{display:none}}}@layer motion{@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){@keyframes recede{to{opacity:.1;transform:scale(.97)}}.hero{animation:recede linear both;animation-timeline:view();animation-range:exit 10% exit 90%}.card__finding{animation:settle linear both;animation-timeline:view();animation-range:entry 8% cover 32%}}}.rail figure,.rail .project__body,.rail .stats,.rail .note,.rail .card__finding,.travel{animation:none}@media(prefers-reduced-motion:no-preference){[data-reveal]{transition-timing-function:cubic-bezier(.2,.7,.2,1)}[data-reveal=rise]{transition-property:opacity,transform;transition-duration:.62s}[data-reveal=rise]:not([data-seen]){opacity:0;transform:translateY(1.6rem)}[data-reveal=develop]{transition-property:clip-path;transition-duration:.76s}[data-reveal=develop]:not([data-seen]){clip-path:inset(0 0 100% 0)}[data-reveal=settle]{transition-property:font-variation-settings,opacity;transition-duration:.7s}[data-reveal=settle]:not([data-seen]){font-variation-settings:"opsz" 48,"wdth" 92,"wght" 250;opacity:.5}[data-reveal=draw]{stroke-dasharray:1;transition-property:stroke-dashoffset;transition-duration:1.3s}[data-reveal=draw]:not([data-seen]){stroke-dashoffset:1}[data-reveal=pop]{transform-box:fill-box;transform-origin:center;transition-property:opacity,transform;transition-duration:.42s}[data-reveal=pop]:not([data-seen]){opacity:0;transform:scale(.2)}[data-motion=js] .progress{display:block;transform:scaleX(var(--scrolled, 0))}}}
