@font-face{font-family:Zilla Slab;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0ec8b6964dca4738-s.3khov2ymwgkd-.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:Zilla Slab;font-style:normal;font-weight:500;font-display:swap;src:url(../media/49bcce62f8e09af8-s.p.1m3e1vmer71ef.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:Zilla Slab;font-style:normal;font-weight:600;font-display:swap;src:url(../media/8cd2bc38ce1bfc5d-s.3wfkzzdejku_n.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:Zilla Slab;font-style:normal;font-weight:600;font-display:swap;src:url(../media/c3191a2e06136a6d-s.p.2eby0yrg01v4v.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:Zilla Slab Fallback;src:local(Times New Roman);ascent-override:88.36%;descent-override:23.96%;line-gap-override:0.0%;size-adjust:106.83%}.zilla_slab_b2e2d833-module__o6Ighq__className{font-family:Zilla Slab,Zilla Slab Fallback;font-style:normal}.zilla_slab_b2e2d833-module__o6Ighq__variable{--font-display:"Zilla Slab", "Zilla Slab Fallback"}
@font-face{font-family:Cutive;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d0ec21fdc7511197-s.2n7moyssn_f28.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:Cutive;font-style:normal;font-weight:400;font-display:swap;src:url(../media/1e6ba15e1e22102b-s.p.400oovkeoc2lq.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:Cutive Fallback;src:local(Times New Roman);ascent-override:54.72%;descent-override:23.07%;line-gap-override:0.0%;size-adjust:140.99%}.cutive_7b5e7ba7-module__xnCSCa__className{font-family:Cutive,Cutive Fallback;font-style:normal;font-weight:400}.cutive_7b5e7ba7-module__xnCSCa__variable{--font-accent:"Cutive", "Cutive 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.0klc_mi0-5f4_.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.2874ccu1_u7jf.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_23d57153-module__izaPfW__className{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.instrument_sans_23d57153-module__izaPfW__variable{--font-body:"Instrument Sans", "Instrument Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f53f4557ddd9f7a6-s.1u-lvzo58r3-e.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5256dd17dd2ccf14-s.37c107x1d-cfz.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/fe48c93add1d142c-s.3_gspotjv4tkw.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/5689d89b20a4bd5b-s.0m-w082keobar.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:IBM Plex Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a7e15459c1805da0-s.p.3y9b8znjr2455.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_c92d2c46-module__YGibcG__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_c92d2c46-module__YGibcG__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
@font-face{font-family:Archivo Black;font-style:normal;font-weight:400;font-display:swap;src:url(../media/316b6682b406c2db-s.1_k7aq_c5drf2.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:Archivo Black;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5e4d537aaa9e154b-s.p.1ewykk74tw0il.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:Archivo Black Fallback;src:local(Arial);ascent-override:70.78%;descent-override:16.93%;line-gap-override:0.0%;size-adjust:124.05%}.archivo_black_4bfcbe4a-module__0Mbata__className{font-family:Archivo Black,Archivo Black Fallback;font-style:normal;font-weight:400}.archivo_black_4bfcbe4a-module__0Mbata__variable{--font-heavy:"Archivo Black", "Archivo Black Fallback"}
:root{--bg-top:#f8f7f1;--bg-bottom:#ebeae1;--panel:#e7e6dd;--ink:#3a3935;--ink-strong:#232220;--ink-soft:#7b786c;--accent:#6e6a52;--line:#3a393529;--line-strong:#3a393573;--night:#0c0c0d;--night-raised:#151517;--bone:#ededeb;--bone-soft:#8e8e8a;--night-line:#ededeb24;--ease-out:cubic-bezier(.22, .68, .32, 1);--measure:60ch;--gutter:clamp(1.25rem, 4vw, 3rem)}*{box-sizing:border-box;margin:0;padding:0}html{scrollbar-width:none}::-webkit-scrollbar{display:none}body{font-family:var(--font-body), system-ui, sans-serif;background:var(--bg-bottom);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:1rem;line-height:1.65}img{max-width:100%;display:block}a{color:inherit}::selection{background:var(--ink);color:var(--bg-top)}.wing{flex-direction:column;min-height:100vh;display:flex}.wing--gallery{background:linear-gradient(180deg, var(--bg-top), var(--bg-bottom) 40rem);color:var(--ink)}.wing--night{background:var(--night);color:var(--bone);--line:var(--night-line);--line-strong:#ededeb66;--ink-soft:var(--bone-soft);--accent:var(--bone-soft)}.wing--night ::selection{background:var(--bone);color:var(--night)}.wing--night img{pointer-events:none;-webkit-user-select:none;user-select:none}.container{width:100%;max-width:74rem;padding-inline:var(--gutter);margin-inline:auto}.container--wide{width:100%;max-width:110rem;margin-inline:auto;padding-inline:clamp(.75rem,2.5vw,2rem)}.label{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;font-weight:400}.u-link{transition:color .25s var(--ease-out);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;padding-bottom:1px;text-decoration:none}.u-link:hover{color:var(--ink-strong)}.wing--night .u-link:hover{color:#fff}.m-link{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;transition:background-size .3s var(--ease-out), color .25s var(--ease-out);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;font-size:.72rem;font-weight:400;text-decoration:none}.m-link:hover,.m-link[aria-current=page]{background-size:100% 1px}.m-link[aria-current=page]{color:var(--ink-strong)}.wing--night .m-link[aria-current=page]{color:var(--bone)}
.site-header{z-index:40;padding-inline:var(--gutter);transition:transform .35s var(--ease-out);position:sticky;top:clamp(.75rem,2vw,1.25rem)}.site-header__pill{background:var(--panel);border-radius:999px;justify-content:space-between;align-items:center;gap:1.5rem;max-width:64rem;margin-inline:auto;padding:.7rem 1.5rem;display:flex}.site-header__nav{flex-wrap:wrap;align-items:baseline;gap:.6rem clamp(1rem,2.8vw,2.5rem);display:flex}.site-header__social{align-items:center;gap:1.1rem;display:flex}.site-header__social a{color:var(--ink-soft);transition:color .25s var(--ease-out), transform .25s var(--ease-out);align-items:center;display:inline-flex}.site-header__social a:hover{color:var(--ink-strong);transform:translateY(-1px)}.site-header__brand,.site-header__toggle,.site-menu{display:none}.site-header__brand{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-strong);font-size:.8rem;font-weight:500;text-decoration:none}.site-header__toggle{z-index:61;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:.45rem;padding:.4rem 0;position:relative}.site-header__toggle span{background:var(--ink-strong);transform-origin:50%;width:1.6rem;height:2px;transition:transform .3s var(--ease-out);display:block}.site-header__toggle.is-open span:first-child{transform:translateY(calc(.225rem + 1px))rotate(45deg)}.site-header__toggle.is-open span:nth-child(2){transform:translateY(calc(-.225rem - 1px))rotate(-45deg)}.site-menu{z-index:60;background:var(--bg-top);animation:menu-bg .25s var(--ease-out);flex-direction:column;align-items:center;padding:clamp(1.25rem,5vw,2.5rem);position:fixed;inset:0}@keyframes menu-bg{0%{opacity:0}}.site-menu__nav{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:clamp(1.25rem,4vh,2rem);display:flex}.site-menu__link{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);font-size:clamp(1.3rem,6vw,2rem);font-weight:700;text-decoration:none}.site-menu__link[aria-current=page]{color:var(--accent)}.site-menu__social{justify-content:center;gap:2rem;padding-bottom:clamp(2.5rem,9vh,5rem);display:flex}.site-menu__social a{color:var(--ink-soft);transition:color .25s var(--ease-out);display:inline-flex}.site-menu__social a:hover{color:var(--ink-strong)}@keyframes menu-in{0%{opacity:0;transform:translate(-1.5rem)}}.site-menu__link,.site-menu__social{animation:menu-in .45s var(--ease-out) both}.site-menu__link:first-child{animation-delay:40ms}.site-menu__link:nth-child(2){animation-delay:90ms}.site-menu__link:nth-child(3){animation-delay:.14s}.site-menu__link:nth-child(4){animation-delay:.19s}.site-menu__link:nth-child(5){animation-delay:.24s}.site-menu__social{animation-delay:.3s}.site-menu.site-menu--closing{animation:menu-bg-out .3s var(--ease-out) forwards}@keyframes menu-bg-out{to{opacity:0}}.site-menu--closing .site-menu__link,.site-menu--closing .site-menu__social{animation:menu-out .3s var(--ease-out) both}@keyframes menu-out{to{opacity:0;transform:translate(-1.5rem)}}@media (prefers-reduced-motion:reduce){.site-menu,.site-menu--closing,.site-menu__link,.site-menu__social{animation:none}}@media (max-width:760px){.site-header__nav,.site-header__social{display:none}.site-header__brand,.site-header__toggle{display:inline-flex}.site-menu{display:flex}.site-header--hidden{transform:translateY(-150%)}}@media (max-width:560px){.site-header__pill{padding:.65rem 1.1rem}}
.site-footer{border-top:1px solid var(--line);margin-top:auto}.site-footer__inner{color:var(--ink-soft);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;padding-block:1.4rem;display:flex}.site-footer__links{gap:1.75rem;display:flex}.section{border-top:1px solid var(--line);padding-block:clamp(3.5rem,8vw,6rem)}.section__grid{grid-template-columns:11rem 1fr;gap:2rem 3rem;display:grid}.section__label{color:var(--accent);align-self:start;position:sticky;top:5.5rem}.section__label small{color:var(--ink-soft);font-size:inherit;margin-top:.3rem;display:block}@media (max-width:760px){.section__grid{grid-template-columns:1fr;gap:1.5rem}.section__label{position:static}}.hero{padding-block:clamp(4rem,10vw,7.5rem) clamp(3.5rem,8vw,6rem)}.hero__path{color:var(--accent);margin-bottom:1.8rem}.hero__path b{color:var(--ink-soft);font-weight:inherit}.hero h1{font-family:var(--font-display), Georgia, serif;letter-spacing:-.015em;color:var(--ink-strong);text-wrap:balance;max-width:14ch;font-size:clamp(3.4rem,10vw,7.5rem);font-weight:500;line-height:1.02}.hero__tagline{font-family:var(--font-accent), "Courier New", serif;text-wrap:pretty;max-width:44ch;margin-top:2.4rem;font-size:clamp(1.05rem,1.9vw,1.3rem);line-height:1.75}.hero__tagline a{color:var(--accent)}.page-hero{padding-block:clamp(3.5rem,8vw,6rem) clamp(2.5rem,5vw,4rem)}.page-hero__label{color:var(--accent);margin-bottom:1.6rem;display:block}.page-hero h1{font-family:var(--font-display), Georgia, serif;letter-spacing:-.015em;color:var(--ink-strong);font-size:clamp(2.8rem,7vw,5rem);font-weight:500;line-height:1.02}.page-hero__sub{font-family:var(--font-accent), "Courier New", serif;color:var(--ink-soft);text-wrap:pretty;max-width:52ch;margin-top:1.6rem;font-size:1.02rem;line-height:1.7}.worktl{max-width:46rem;padding-left:2.25rem;list-style:none;position:relative}.worktl:before{content:"";background:var(--line);width:2px;position:absolute;top:.4rem;bottom:.4rem;left:.3rem}.worktl__item{padding-bottom:clamp(2.5rem,5vw,4rem);position:relative}.worktl__item:last-child{padding-bottom:0}.worktl__item:before{content:"";background:var(--bg-top);border:2px solid var(--accent);border-radius:50%;width:.75rem;height:.75rem;position:absolute;top:.35rem;left:-2.25rem}.worktl__item:first-child:before{background:var(--accent)}.worktl__period{color:var(--accent);margin-bottom:.7rem}.worktl__role{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;color:var(--ink-strong);font-size:clamp(1.4rem,3vw,1.9rem);font-weight:600;line-height:1.1}.worktl__org{color:var(--ink-soft);margin-top:.45rem}.worktl__summary{font-family:var(--font-accent), "Courier New", serif;color:var(--ink-soft);text-wrap:pretty;max-width:56ch;margin-top:1rem;font-size:.98rem;line-height:1.7}.worktl__points{border-left:3px solid var(--accent);color:var(--ink-soft);gap:.6rem;max-width:56ch;margin-top:1.1rem;padding-left:1.25rem;font-size:.93rem;line-height:1.55;list-style:none;display:grid}.worktl__tech{color:var(--ink-soft);margin-top:1.2rem}.about-grid{grid-template-columns:minmax(0,2fr) minmax(0,3fr);align-items:start;gap:2.5rem 4rem;display:grid}@media (max-width:760px){.about-grid{grid-template-columns:1fr}.about-portrait{max-width:22rem}}.about-portrait{margin:0;position:sticky;top:5.5rem}@media (max-width:760px){.about-portrait{position:static}}.about-portrait img{aspect-ratio:3/4;object-fit:cover;border:1px solid var(--line);background:var(--panel);width:100%}.about-portrait figcaption{color:var(--ink-soft);margin-top:.7rem}.about-prose p:first-child{font-family:var(--font-accent), "Courier New", serif;font-size:1.05rem;line-height:1.7}.contact__lede{font-family:var(--font-accent), "Courier New", serif;color:var(--ink-soft);text-wrap:pretty;max-width:46ch;font-size:1.02rem;line-height:1.7}.contact__email{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-strong);border:1px solid var(--line-strong);transition:background .3s var(--ease-out), color .3s var(--ease-out), border-color .3s var(--ease-out);border-radius:999px;margin-top:1.8rem;padding:1rem 1.75rem;font-size:.78rem;font-weight:400;text-decoration:none;display:inline-block}.contact__email:hover{background:var(--ink-strong);border-color:var(--ink-strong);color:var(--bg-top)}.contact__links{gap:1.75rem;margin-top:2rem;display:flex}.contact__links .m-link{color:var(--accent)}.projects-more{border-top:1px dashed var(--line);padding-top:1.5rem}.projects-more .m-link{color:var(--accent)}.prose p{max-width:var(--measure);text-wrap:pretty}.prose p+p{margin-top:1.2em}.prose a{color:var(--accent)}.notfound{text-align:center;min-height:100vh;padding:7rem var(--gutter);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.notfound__brand{top:clamp(1.5rem,4vw,2.5rem);left:var(--gutter);font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-strong);font-size:.8rem;font-weight:500;text-decoration:none;position:absolute}.notfound__inner{flex-direction:column;align-items:center;display:flex}.notfound__code{font-family:var(--font-display), Georgia, serif;letter-spacing:-.03em;color:var(--ink-strong);font-size:clamp(7rem,28vw,18rem);font-weight:600;line-height:.85}.notfound__title{margin-top:1.5rem;font-size:clamp(1.4rem,4vw,2.1rem)}.notfound__lede{max-width:42ch;color:var(--ink-soft);margin-top:.75rem}.notfound__links{flex-wrap:wrap;justify-content:center;gap:2.5rem;margin-top:2.5rem;display:flex}.notfound__links .m-link{color:var(--accent)}
.project{padding-block:clamp(2.5rem,5vw,4rem)}.project+.project{border-top:1px dashed var(--line)}.project__head{flex-wrap:wrap;align-items:baseline;gap:.75rem 1.5rem;margin-bottom:.9rem;display:flex}.project__head h3{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;color:var(--ink-strong);font-size:clamp(1.9rem,4.2vw,2.8rem);font-weight:600;line-height:1.05}.project__head h3 a{background-image:linear-gradient(var(--accent), var(--accent));transition:background-size .35s var(--ease-out);background-position:0 100%;background-repeat:no-repeat;background-size:0% 3px;text-decoration:none}.project__head h3 a:hover{background-size:100% 3px}.project__year{color:var(--ink-soft)}.project__tagline{font-family:var(--font-accent), "Courier New", serif;color:var(--ink-soft);text-wrap:pretty;max-width:52ch;margin-bottom:1.8rem;font-size:1.02rem;line-height:1.7}.project__body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:2rem 3rem;display:grid}.project:nth-of-type(2n) .project__figure{order:-1}@media (max-width:820px){.project__body{grid-template-columns:1fr}.project:nth-of-type(2n) .project__figure{order:0}}.project__figure{margin:0;position:sticky;top:5.5rem}@media (max-width:820px){.project__figure{position:static}}.project__figure img{border:1px solid var(--line);background:var(--panel);border-radius:.5rem;width:100%}.project__figure figcaption{color:var(--ink-soft);margin-top:.7rem}.project__details{border-left:3px solid var(--accent);color:var(--ink-soft);gap:.7rem;margin-top:1.8rem;padding-left:1.25rem;font-size:.92rem;line-height:1.5;list-style:none;display:grid}.project__meta{color:var(--ink-soft);flex-wrap:wrap;align-items:baseline;gap:.5rem 1.6rem;margin-top:1.8rem;display:flex}.project__repo{color:var(--accent)}.skills{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:2.2rem 2.5rem;display:grid}.skills__group h4{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--line);margin-bottom:.9rem;padding-bottom:.6rem;font-size:.72rem;font-weight:500}.skills__group ul{color:var(--ink-soft);gap:.45rem;font-size:.95rem;list-style:none;display:grid}.timeline{list-style:none;display:grid}.timeline li{grid-template-columns:7rem 1fr;gap:1rem 2rem;padding-block:1.6rem;display:grid}.timeline li+li{border-top:1px solid var(--line)}.timeline__period{color:var(--accent);padding-top:.35rem}.timeline h4{font-family:var(--font-display), Georgia, serif;letter-spacing:-.01em;color:var(--ink-strong);margin-bottom:.4rem;font-size:1.3rem;font-weight:600}.timeline p{color:var(--ink-soft);text-wrap:pretty;max-width:58ch;font-size:.97rem}@media (max-width:600px){.timeline li{grid-template-columns:1fr;gap:.4rem}}.teaser{background:var(--night);color:var(--bone);--line:var(--night-line);--ink-soft:var(--bone-soft);padding-block:clamp(4rem,9vw,7rem)}.teaser__grid{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:center;gap:3rem;display:grid}@media (max-width:820px){.teaser__grid{grid-template-columns:1fr}}.teaser h2{font-family:var(--font-heavy), system-ui, sans-serif;text-transform:uppercase;letter-spacing:.02em;text-wrap:balance;font-size:clamp(1.9rem,4.5vw,3rem);font-weight:400;line-height:1.08}.teaser__label{color:var(--bone-soft);margin-bottom:1.3rem;display:block}.teaser p{color:var(--bone-soft);text-wrap:pretty;max-width:44ch;margin-top:1.4rem}.teaser__cta{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--bone);border:1px solid var(--night-line);transition:border-color .3s var(--ease-out), background .3s var(--ease-out), color .3s var(--ease-out);border-radius:999px;margin-top:2.2rem;padding:.95rem 1.6rem;font-size:.72rem;font-weight:400;text-decoration:none;display:inline-block}.teaser__cta:hover{border-color:var(--bone);background:var(--bone);color:var(--night)}.teaser__strip{grid-template-columns:repeat(3,1fr);align-self:stretch;gap:.75rem;display:grid}.teaser__shot{height:100%;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 16% 84%,#0000);mask-image:linear-gradient(#0000,#000 16% 84%,#0000)}.teaser__strip img{object-fit:cover;filter:saturate(.85);width:100%;height:100%;transition:filter .5s var(--ease-out)}
.night-header{z-index:40;pointer-events:none;transition:transform .45s var(--ease-out), opacity .35s var(--ease-out);background:linear-gradient(#0808098c,#08080900);justify-content:space-between;align-items:center;gap:1.5rem;padding:1.5rem clamp(1.25rem,3vw,2.5rem) 2.25rem;display:flex;position:fixed;top:0;left:0;right:0}.night-header--hidden{opacity:0;transform:translateY(-110%)}.night-header a{pointer-events:auto}.night-header__left{align-items:baseline;gap:clamp(1.5rem,4vw,3.5rem);display:flex}.night-header__name{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.16em;text-transform:uppercase;color:#fff;font-size:.8rem;font-weight:500;text-decoration:none}.night-header__name em{color:var(--bone-soft);font-style:normal}.night-header__nav{gap:clamp(1rem,2.5vw,2.25rem);display:flex}.night-header .m-link{color:#ffffffbf}.night-header .m-link:hover,.night-header .m-link[aria-current=page]{color:#fff}.night-header__social{align-items:center;gap:1.1rem;display:flex}.night-header__social a{color:#ffffffb8;transition:color .25s var(--ease-out);align-items:center;display:inline-flex}.night-header__social a:hover{color:#fff}.night-header__toggle,.night-menu{display:none}.night-header__toggle{z-index:61;pointer-events:auto;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:.45rem;padding:.4rem 0;position:relative}.night-header__toggle span{background:var(--bone);transform-origin:50%;width:1.6rem;height:2px;transition:transform .3s var(--ease-out);display:block}.night-header__toggle.is-open span:first-child{transform:translateY(calc(.225rem + 1px))rotate(45deg)}.night-header__toggle.is-open span:nth-child(2){transform:translateY(calc(-.225rem - 1px))rotate(-45deg)}.night-menu{z-index:60;pointer-events:auto;background:var(--night);animation:night-menu-bg .25s var(--ease-out);flex-direction:column;align-items:center;padding:clamp(1.25rem,5vw,2.5rem);position:fixed;inset:0}@keyframes night-menu-bg{0%{opacity:0}}.night-menu__nav{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:clamp(1.25rem,4vh,2rem);display:flex}.night-menu__link{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--bone);font-size:clamp(1.3rem,6vw,2rem);font-weight:700;text-decoration:none}.night-menu__link[aria-current=page]{color:var(--bone-soft)}.night-menu__social{justify-content:center;gap:2rem;padding-bottom:clamp(2.5rem,9vh,5rem);display:flex}.night-menu__social a{color:var(--bone-soft);transition:color .25s var(--ease-out);display:inline-flex}.night-menu__social a:hover{color:var(--bone)}@keyframes night-menu-in{0%{opacity:0;transform:translateY(1.5rem)}}.night-menu__link,.night-menu__social{animation:night-menu-in .45s var(--ease-out) both}.night-menu__link:first-child{animation-delay:40ms}.night-menu__link:nth-child(2){animation-delay:90ms}.night-menu__link:nth-child(3){animation-delay:.14s}.night-menu__link:nth-child(4){animation-delay:.19s}.night-menu__link:nth-child(5){animation-delay:.24s}.night-menu__social{animation-delay:.3s}.night-menu.night-menu--closing{animation:night-menu-bg-out .3s var(--ease-out) forwards}@keyframes night-menu-bg-out{to{opacity:0}}.night-menu--closing .night-menu__link,.night-menu--closing .night-menu__social{animation:night-menu-out .3s var(--ease-out) both}@keyframes night-menu-out{to{opacity:0;transform:translateY(1.5rem)}}@media (prefers-reduced-motion:reduce){.night-menu,.night-menu--closing,.night-menu__link,.night-menu__social{animation:none}}@media (max-width:760px){.night-header__nav,.night-header__social{display:none}.night-header__toggle{display:inline-flex}.night-menu{display:flex}}@media (max-width:640px){.night-header{gap:1rem;padding-inline:1rem}.night-header__left{gap:1rem}}.night-footer{z-index:1;background:var(--night);text-align:center;padding:clamp(1.25rem, 2.5vw, 1.75rem) var(--gutter);border-top:1px solid var(--night-line);flex-direction:column;align-items:center;gap:.4rem;margin-top:auto;display:flex;position:relative}.night-footer__mark{font-family:var(--font-heavy), system-ui, sans-serif;text-transform:uppercase;letter-spacing:.08em;color:var(--bone);font-size:1.05rem}.night-footer .label{color:var(--bone-soft)}.night-footer__links{flex-wrap:wrap;justify-content:center;gap:2.6rem;margin-top:.5rem;display:flex}.night-footer__credit{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.14em;text-transform:uppercase;color:#ededeb52;margin-top:.5rem;font-size:.65rem}.night-footer__credit a{color:inherit;text-underline-offset:.2em;transition:color .25s var(--ease-out)}.night-footer__credit a:hover{color:var(--bone)}.night-footer .m-link{color:#8f8f89;letter-spacing:.22em}.night-footer .m-link:hover{color:var(--bone)}
.photos-hero{padding-block:clamp(6rem,10vw,8rem) clamp(1.5rem,3vw,2.5rem)}.photos-hero .label{color:var(--bone-soft);display:block}.game-grid{grid-template-columns:repeat(3,1fr);gap:1rem;padding-bottom:clamp(4rem,9vw,7rem);display:grid}@media (max-width:1000px){.game-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.game-grid{grid-template-columns:1fr}}.game-card{aspect-ratio:181/240;background:var(--night-raised);text-decoration:none;display:block;position:relative;overflow:hidden}.game-card img{object-fit:cover;filter:saturate(.9)brightness(.85);width:100%;height:100%;transition:filter .6s var(--ease-out)}.pointer-active .game-card:hover img{filter:saturate(1.05)brightness()}.game-card__name{text-align:center;font-family:var(--font-heavy), system-ui, sans-serif;letter-spacing:.04em;text-transform:uppercase;color:#fff;text-shadow:0 2px 24px #0000008c;transition:opacity .6s var(--ease-out);justify-content:center;align-items:center;padding:1.5rem;font-size:clamp(1.3rem,2.2vw,1.9rem);display:flex;position:absolute;inset:0}.pointer-active .game-card:hover .game-card__name{opacity:0}.game-card__name.reveal{transition:opacity .6s var(--ease-out);transform:none}.game-card__name.reveal.is-visible{animation:card-name-in 1.25s var(--ease-out) var(--reveal-delay,0s) backwards}@keyframes card-name-in{0%{opacity:0}}
.game-hero{background:var(--night-raised);height:100svh;min-height:34rem;position:relative;overflow:hidden}.game-hero:after{content:"";pointer-events:none;background:linear-gradient(#0000,#000000a6);height:45%;position:absolute;inset:auto 0 0}.game-hero .plx-img{width:100%;position:absolute;left:0}.plx-img{object-fit:cover;will-change:transform;width:100%;display:block;position:relative}.game-hero__caption{z-index:1;text-align:center;padding-inline:var(--gutter);animation:hero-fade 1.8s var(--ease-out) .55s both;position:absolute;bottom:clamp(2.5rem,7vh,5rem);left:0;right:0}.game-hero__title{font-family:var(--font-heavy), system-ui, sans-serif;letter-spacing:.07em;text-transform:uppercase;color:#fff;text-shadow:0 4px 40px #0009;font-size:clamp(1.5rem,3.2vw,2.75rem);font-weight:400}.game-hero__meta{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.2em;text-transform:uppercase;color:#ffffffb3;text-shadow:0 1px 12px #000000b3;margin-top:1rem;font-size:.72rem}@keyframes hero-fade{0%{opacity:0}}.game-hero__scroll{z-index:1;color:var(--bone-soft);animation:hero-fade 1.8s var(--ease-out) 1s backwards;transition:opacity .9s var(--ease-out);align-items:center;gap:.75rem;display:flex;position:absolute;bottom:clamp(2rem,6vh,4rem);right:clamp(1.25rem,3vw,2.75rem)}.game-hero__scroll.is-gone{opacity:0;pointer-events:none}.game-hero__scroll .label{letter-spacing:.2em;font-size:.6rem}.game-hero__scroll-track{background:#ededeb2e;width:1px;height:2rem;position:relative;overflow:hidden}.game-hero__scroll-track:after{content:"";height:40%;animation:scroll-run 2.6s var(--ease-out) infinite;background:#ededeb80;position:absolute;inset:0 0 auto}@keyframes scroll-run{0%{opacity:0;transform:translateY(-100%)}35%,65%{opacity:1}to{opacity:0;transform:translateY(250%)}}@media (prefers-reduced-motion:reduce){.game-hero__scroll-track:after{animation:none}}@media (max-width:640px){.game-hero__scroll{display:none}}.shot-grid{flex-wrap:wrap;gap:.5rem;padding-block:clamp(2rem,4vw,3.5rem) clamp(4rem,9vw,7rem);padding-inline:clamp(2rem,6vw,8rem);display:flex}@media (max-width:640px){.shot-grid{padding-inline:.5rem}.shot-grid__spacer{display:none}}.shot-grid .reveal{background:var(--night-raised);overflow:hidden}.shot-grid__spacer{flex:999999}.shot-grid button{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:block;position:relative;overflow:hidden}.shot-grid img{object-fit:cover;filter:saturate(.9);width:100%;height:100%;transition:filter .4s var(--ease-out)}.shot-grid button:hover img{filter:saturate(1.05)}.shot-grid__empty{color:var(--bone-soft);border:1px dashed var(--night-line);max-width:40rem;margin-bottom:clamp(4rem,9vw,7rem);padding:3rem 2rem}.shot-grid__empty code{font-family:var(--font-mono), ui-monospace, monospace;color:var(--bone);font-size:.85em}.game-nav{border-top:1px solid var(--night-line);grid-template-columns:1fr 1fr;align-items:center;gap:2rem;padding-block:clamp(2.5rem,5vw,4rem);display:grid}.game-nav__step{justify-items:start;gap:.6rem;text-decoration:none;display:grid}.game-nav__step--next{text-align:right;justify-items:end}.game-nav__step .label{color:var(--bone-soft)}.game-nav__step strong{font-family:var(--font-heavy), system-ui, sans-serif;text-transform:uppercase;letter-spacing:.05em;color:var(--bone);transition:color .3s var(--ease-out);font-size:clamp(1.1rem,2.2vw,1.7rem);font-weight:400;line-height:1.1}.game-nav__step:hover strong{color:#fff}.game-nav__title{align-items:center;gap:.5rem;display:flex}.game-nav__arrow{display:none}.game-nav__arrow:before{content:"";border:solid var(--bone);border-width:3px 3px 0 0;width:.62rem;height:.62rem;display:block}.game-nav__step .game-nav__arrow:before{transform:translate(1px)rotate(225deg)}.game-nav__step--next .game-nav__arrow:before{transform:translate(-1px)rotate(45deg)}@media (max-width:640px){.game-nav{gap:1.5rem}.game-nav__step .label{display:none}.game-nav__step strong{font-size:.9rem}.game-nav__arrow{flex-shrink:0;justify-content:center;align-items:center;padding:.25rem;display:inline-flex}}
.lightbox{z-index:50;animation:lb-fade .25s var(--ease-out);background:#09090af2;outline:none;flex-direction:column;gap:clamp(.75rem,2vh,1.25rem);padding:clamp(.85rem,3vw,2rem);display:flex;position:fixed;inset:0}.lightbox__stage{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}@keyframes lb-fade{0%{opacity:0}}.lightbox img{object-fit:contain;opacity:0;max-width:100%;max-height:100%;transition:opacity .35s var(--ease-out)}.lightbox img.is-loaded{opacity:1}.lightbox__spinner{border:2px solid var(--night-line);border-top-color:var(--bone);border-radius:50%;width:2.5rem;height:2.5rem;margin:-1.25rem 0 0 -1.25rem;animation:.8s linear infinite lb-spin;position:absolute;top:50%;left:50%}@keyframes lb-spin{to{transform:rotate(360deg)}}.lightbox__bar{color:var(--bone-soft);justify-content:space-between;align-items:center;display:flex}.lightbox__btn,.lightbox__nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:2.75rem;height:2.75rem;color:var(--bone);cursor:pointer;transition:background .25s var(--ease-out);background:#0a0a0b80;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.lightbox__btn:hover,.lightbox__nav:not(:disabled):hover{background:#0a0a0bcc}.lightbox__nav:disabled{opacity:.3;cursor:default}.lightbox__btn{font-size:1.3rem}.lightbox__nav-bar{justify-content:center;gap:1rem;display:flex}.lightbox__nav:before{content:"";border:2px solid;border-width:2px 2px 0 0;width:.6rem;height:.6rem}.lightbox__nav--prev:before{transform:translate(2px)rotate(225deg)}.lightbox__nav--next:before{transform:translate(-2px)rotate(45deg)}.photo-wipe{z-index:100;background:#0a0a0b;justify-content:center;align-items:center;width:100vw;height:100dvh;transition:transform .95s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;top:0;left:0;transform:translateY(0)}.photo-wipe--exiting{pointer-events:none;transform:translateY(-100%)}.photo-wipe__card{text-align:center;color:#fff}.photo-wipe__card strong{font-family:var(--font-heavy), system-ui, sans-serif;text-transform:uppercase;letter-spacing:.08em;opacity:0;font-size:clamp(1.5rem,4vw,2.8rem);font-weight:400;transition:opacity .6s,transform 1s cubic-bezier(.16,1,.3,1);display:block;transform:scale(1.2)}.photo-wipe--entering .photo-wipe__card strong,.photo-wipe--covered .photo-wipe__card strong{opacity:1;transform:scale(1)}.photo-wipe--exiting .photo-wipe__card strong{opacity:0;transition-duration:.3s;transform:scale(1)}.reveal{opacity:0;transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);transition-delay:var(--reveal-delay,0s);transform:translateY(22px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}.lightbox,.lightbox img,.game-card img,.teaser__strip img,.shot-grid img{transition:none}}
