@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(../media/033400d475fad6b1-s.11x_mcju407z-.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(../media/26daee0352f50a5f-s.456c9vb2_utt8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(../media/017d9bea37084d9b-s.p.2fl0vhx7oyatw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Fallback;src:local(Arial);ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.0%;size-adjust:105.43%}.bricolage_grotesque_d13dde08-module__0pVUyW__className{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.bricolage_grotesque_d13dde08-module__0pVUyW__variable{--font-display:"Bricolage Grotesque", "Bricolage Grotesque Fallback"}
@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/c7f47671e39f7787-s.3wn_q526zaolu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/f06bf9da926bae75-s.p.3uuun_-7zsf1g.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Fallback;src:local(Arial);ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.0%;size-adjust:102.74%}.instrument_sans_a64e6afe-module__tyqFTq__className{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.instrument_sans_a64e6afe-module__tyqFTq__variable{--font-body:"Instrument Sans", "Instrument Sans Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.3bz3aq452sydg.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.2sb9jzhmrh7ny.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.343obqi851wr5.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.40kcwrf1wub16.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.200l3jur7oygh.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.269kn9uafm0ti.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_13fc341d-module__lMjmPq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_13fc341d-module__lMjmPq__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#08080a;--text:#ecebe6;--muted:#8d8c86;--line:#26262b;--amber:#e79a35;--cyan:#4fd6e6;--rose:#e27fa3;--blue:#5b70c6;--border:#3a3a40;--surface-2:#17171a;--max:1400px;--gutter:clamp(16px, 4vw, 48px)}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg)}body{background:var(--bg);color:var(--text);font-family:var(--font-body), system-ui, sans-serif;-webkit-font-smoothing:antialiased;font-size:1.0625rem;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--amber);outline-offset:3px}::selection{background:var(--amber);color:var(--bg)}.container{max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.mono{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.01em;font-size:.8125rem}.link{text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:1px}.link:hover{color:var(--amber)}.nav{z-index:30;mix-blend-mode:difference;position:fixed;inset:0 0 auto}.nav-inner{justify-content:space-between;align-items:center;gap:16px;height:56px;display:flex}.nav a{font-family:var(--font-mono), monospace;color:#fff;font-size:.8125rem}.nav a:hover{text-underline-offset:5px;text-decoration:underline}.nav-links{gap:clamp(14px,3vw,32px);display:flex}.reel{background:#000;height:100svh;min-height:520px;position:relative;overflow:hidden}.reel canvas{object-fit:cover;width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0}.reel:before{content:"";z-index:1;pointer-events:none;background:linear-gradient(90deg,#08080ad1,#08080a40 55%,#0000 80%),linear-gradient(#0000 60%,#08080abf);position:absolute;inset:0}.reel-list{z-index:2;flex-direction:column;align-items:flex-start;gap:2px;display:flex;position:absolute;bottom:clamp(28px,7vh,72px);left:0;right:0}.reel-list a{font-family:var(--font-display), sans-serif;letter-spacing:-.035em;color:#ecebe66b;font-size:clamp(1.6rem,5.2vw,4.4rem);font-weight:700;line-height:1.04;transition:color .15s,transform .25s}.reel-list a[data-on=true]{color:var(--text);transform:translate(clamp(6px,1vw,16px))}.reel-list a[data-on=true]:before{content:"";background:var(--amber);vertical-align:.08em;width:.5em;height:.5em;margin-right:.3em;display:inline-block}.reel-hint{z-index:2;right:var(--gutter);color:#ecebe6b3;text-align:right;position:absolute;bottom:clamp(28px,7vh,72px)}.intro{padding-block:clamp(56px,10vw,128px) clamp(24px,4vw,48px)}.intro p{font-family:var(--font-display), sans-serif;letter-spacing:-.03em;max-width:24ch;font-size:clamp(1.5rem,3.6vw,3rem);font-weight:500;line-height:1.15}.intro p span{color:var(--muted)}.work{flex-direction:column;display:flex}.piece{border-top:1px solid var(--line);flex-direction:column;gap:clamp(18px,3vw,32px);padding-block:clamp(28px,5vw,64px);display:flex}.piece-head{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:12px clamp(20px,4vw,64px);display:grid}.piece-head h2{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;font-size:clamp(1.9rem,4.6vw,3.6rem);font-weight:700;line-height:1}.piece-head h2 a:hover{color:var(--amber)}.piece-info{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.piece-info p{max-width:40rem;font-size:clamp(1.0625rem,1.5vw,1.25rem)}.meta{color:var(--muted)}.piece-media{display:block}.shot{background:#000;overflow:hidden}.shot img{width:100%}.collage{gap:6px;display:grid}.collage .thumbs{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.collage .pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.pixel img{image-rendering:pixelated}a.piece-media .shot img{transition:filter .25s}a.piece-media:hover .shot img{filter:brightness(1.12)}.listing{border-top:1px solid var(--line);grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px clamp(20px,4vw,64px);padding-block:clamp(28px,5vw,64px);display:grid}.listing h2{font-family:var(--font-display), sans-serif;letter-spacing:-.03em;font-size:clamp(1.4rem,2.6vw,2rem);font-weight:700;line-height:1.1}.listing ul{list-style:none}.listing li{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,2fr) minmax(0,5fr);gap:4px 20px;padding:12px 0;display:grid}.listing li:first-child{padding-top:0}.listing li b{font-weight:600}.listing li span{color:var(--muted)}footer{border-top:1px solid var(--line);padding-block:clamp(40px,7vw,96px) 40px}.foot{flex-direction:column;gap:clamp(20px,3vw,36px);display:flex}.foot-mail{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;word-break:break-word;font-size:clamp(1.5rem,5.4vw,4.2rem);font-weight:700;line-height:1}.foot-mail:hover{color:var(--amber)}.foot-links{flex-wrap:wrap;gap:10px 28px;display:flex}.page-head{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;gap:20px clamp(20px,4vw,64px);padding-block:clamp(96px,14vw,168px) clamp(24px,4vw,48px);display:grid}.page-head h1{font-family:var(--font-display), sans-serif;letter-spacing:-.045em;font-size:clamp(2.6rem,8vw,6.5rem);font-weight:700;line-height:.95}.page-head .side{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.article{flex-direction:column;gap:clamp(28px,4.5vw,56px);padding-bottom:clamp(48px,8vw,96px);display:flex}.article>*{min-width:0;max-width:100%}.prose{flex-direction:column;gap:1em;max-width:46rem;display:flex}.prose h2{font-family:var(--font-display), sans-serif;letter-spacing:-.03em;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:700;line-height:1.1}.prose code{font-family:var(--font-mono), monospace;color:var(--amber);font-size:.875em}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:0 clamp(16px,3vw,40px);display:grid}.stat{flex-direction:column;gap:2px;padding:clamp(14px,2vw,24px) 0;display:flex}.stat b{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;font-size:clamp(2rem,4.4vw,3.4rem);font-weight:700;line-height:1}.stat span{color:var(--muted);font-size:.9375rem}.gallery{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:6px;display:grid}.gallery.two{grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr))}.gallery button{all:unset;cursor:zoom-in;background:#000;display:block;overflow:hidden}.gallery button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.gallery img{width:100%;transition:filter .25s}.gallery button:hover img{filter:brightness(1.15)}.gallery .lead{grid-column:1/-1}dialog.lightbox{background:0 0;border:0;max-width:100vw;max-height:100vh;margin:auto;padding:0}dialog.lightbox::backdrop{background:#000000f0}dialog.lightbox img{cursor:zoom-out;max-width:98vw;max-height:96vh;image-rendering:pixelated}figure{flex-direction:column;gap:10px;min-width:0;display:flex}figcaption{color:var(--muted);max-width:46rem;font-size:.9375rem}.figure-box{min-width:0}.figure-box img{width:100%}.flipbook{grid-template-columns:minmax(0,420px) minmax(0,1fr);align-items:start;gap:clamp(12px,3vw,32px);display:grid}.flipbook .big img{width:100%}.flipbook .strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.flipbook .strip button{all:unset;cursor:pointer;opacity:.4;outline:2px solid #0000;transition:opacity .15s}.flipbook .strip button[aria-current=true]{opacity:1;outline-color:var(--amber)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:10px 24px 10px 0}th{font-family:var(--font-mono), monospace;color:var(--muted);border-bottom-color:var(--border);font-size:.75rem;font-weight:400}.codebox{font-family:var(--font-mono), monospace;white-space:nowrap;padding-block:4px;font-size:clamp(.75rem,1.3vw,.9375rem);line-height:2;overflow-x:auto}.codebox .n{color:var(--muted);text-align:right;min-width:5.5em;margin-right:1.5em;display:inline-block}.codebox .gap{background:var(--amber);color:var(--bg);margin-inline:2px;padding:1px 6px}.codebox .in{color:var(--muted)}.chart{width:100%;height:auto;display:block}.chart text{fill:var(--muted);font-size:11px;font-family:var(--font-mono), monospace}.chart .axis{stroke:var(--border);stroke-width:1px}.chart .grid{stroke:var(--line);stroke-width:1px}.legend{color:var(--muted);font-family:var(--font-mono), monospace;flex-wrap:wrap;gap:6px 22px;padding-top:10px;font-size:.75rem;display:flex}.legend i{width:10px;height:10px;margin-right:8px;display:inline-block}.next{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-block:28px 72px;display:flex}.next a{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;font-size:clamp(1.9rem,5vw,3.6rem);font-weight:700;line-height:1}.next a:hover{color:var(--amber)}.cv{flex-direction:column;gap:22px;max-width:54rem;padding-block:clamp(96px,13vw,150px) 72px;display:flex}.cv-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px 28px;display:flex}.cv h1{font-family:var(--font-display), sans-serif;letter-spacing:-.045em;font-size:clamp(2.4rem,7vw,4.5rem);font-weight:700;line-height:.95}.cv-actions{flex-wrap:wrap;gap:8px 24px;display:flex}.cv-actions button{cursor:pointer;background:0 0;border:0}.cv h2{font-family:var(--font-mono), monospace;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--border);margin-top:10px;padding-bottom:6px;font-size:.75rem;font-weight:400}.cv-item{flex-direction:column;gap:6px;display:flex}.cv-line{flex-wrap:wrap;justify-content:space-between;gap:2px 20px;display:flex}.cv-line b{font-weight:600}.cv-line span{color:var(--muted)}.cv ul{flex-direction:column;gap:4px;padding-left:1.1em;display:flex}.cv li,.cv p{font-size:1rem;line-height:1.5}@media (max-width:820px){.piece-head,.listing,.page-head,.listing li,.flipbook{grid-template-columns:minmax(0,1fr)}.reel-hint{display:none}.reel:before{background:linear-gradient(#08080a33 30%,#08080ae6)}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}@media print{:root{--bg:#fff;--text:#000;--muted:#333;--line:#999;--border:#000}html,body{color:#000;background:#fff;font-size:9.6pt}.nav,footer,.cv-actions{display:none!important}.cv{gap:7pt;max-width:none;padding:0}.cv h1{font-size:20pt}.cv h2{color:#000;margin-top:2pt}.cv li,.cv p{font-size:9.6pt;line-height:1.3}.cv ul{gap:1pt}.cv-item{gap:2pt}@page{margin:.45in .5in}}.nav{mix-blend-mode:normal;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.nav-inner{height:52px}.nav a{color:var(--text)}.hero{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:clamp(20px,4vw,56px);padding-block:clamp(28px,6vw,72px);display:grid}.hero-list{flex-direction:column;gap:clamp(20px,3vw,36px);min-width:0;display:flex}.hero-list nav{flex-direction:column;align-items:flex-start;display:flex}.hero-list nav a{font-family:var(--font-display), sans-serif;letter-spacing:-.025em;color:var(--muted);font-size:clamp(1.25rem,2.3vw,2rem);font-weight:600;line-height:1.3;transition:color .12s}.hero-list nav a[data-on=true],.hero-list nav a:hover{color:var(--text)}.hero-list nav a[data-on=true]:before{content:"";background:var(--amber);vertical-align:.12em;width:.42em;height:.42em;margin-right:.4em;display:inline-block}.hero-contact{color:var(--muted);flex-wrap:wrap;gap:8px 24px;display:flex}.hero-screen{justify-content:flex-end;min-width:0;line-height:0;display:flex}.hero-screen canvas{cursor:crosshair;touch-action:pan-y;height:auto;display:block}.plate{min-width:0;line-height:0}.plate canvas{height:auto;display:block}.piece-head h2{font-size:clamp(1.6rem,3vw,2.5rem);line-height:1.05}.piece-info p{font-size:1.0625rem}.page-head{padding-block:clamp(40px,7vw,88px) clamp(20px,3vw,36px)}.page-head h1{font-size:clamp(2.1rem,5vw,3.75rem);line-height:1}.page-head .summary{font-size:1.125rem}.stat b{font-size:clamp(1.6rem,3vw,2.4rem)}.next a{font-size:clamp(1.5rem,3.4vw,2.4rem)}.foot-mail{font-size:clamp(1.3rem,3.6vw,2.6rem)}.cv{padding-block:clamp(36px,6vw,72px) 72px}.cv h1{font-size:clamp(2rem,5vw,3.25rem)}.media-pair{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:6px;display:grid}@media (max-width:820px){.hero{grid-template-columns:minmax(0,1fr)}.hero-screen{order:-1;justify-content:flex-start}.media-pair{grid-template-columns:minmax(0,1fr)}}
