@font-face{font-family:DM Serif Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/8dd8a3188b79fd8f-s.3zx7wbj688cn9.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Serif Display;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c8f209abc35ee02-s.p.0q59resy_4ije.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:DM Serif Display Fallback;src:local(Times New Roman);ascent-override:94.37%;descent-override:30.51%;line-gap-override:0.0%;size-adjust:109.78%}.dm_serif_display_7f590f72-module__T27vLa__className{font-family:DM Serif Display,DM Serif Display Fallback;font-style:normal;font-weight:400}.dm_serif_display_7f590f72-module__T27vLa__variable{--font-display:"DM Serif Display", "DM Serif Display Fallback"}
@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_c76e1406-module__dddzYa__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_c76e1406-module__dddzYa__variable{--font-body:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.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.3nkuoiize4urq.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.1da667lu-u79a.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.1i05ju5aeyhye.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-20C4,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.1dgcou5jor5q_.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.31-2bzhq1gx_9.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.3xauquyg2sixn.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.2taws-qdxmzlf.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.0htwiiqufp3l9.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-20C4,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.28xcb7557rbh2.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_3d32714f-module__BqeOpa__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_3d32714f-module__BqeOpa__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--paper:#ece6db;--paper-2:#e2dacd;--ink:#15120f;--coral:#e2552f;--night:#0f0e0d;--cream:#eee7da;--blue:#7c90ff;--blue-deep:#3b5bff;--coral-soft:#e8714f;--mute-p:#6e645a;--mute-i:#a69b8f;--rule-p:#15120f24;--rule-i:#eee7da24;--f-display:var(--font-display), Georgia, serif;--f-body:var(--font-body), system-ui, sans-serif;--f-mono:var(--font-mono), ui-monospace, Consolas, monospace;--ease:cubic-bezier(.2, .8, .2, 1);--gut:clamp(16px, 5vw, 72px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);margin:0}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}html{overflow-x:clip}body{font:17px/1.5 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{font-family:var(--f-display);letter-spacing:-.02em;margin:0;font-weight:400;line-height:.9}p,figure,ul,ol{margin:0}a{color:inherit}button{font:inherit;color:inherit}img{max-width:100%}::selection{background:var(--coral);color:#fff}.mono{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase}:focus-visible{outline:2px solid var(--coral);outline-offset:3px}.ht{--r:7;--cell:9px;-webkit-mask-image:radial-gradient(circle, #000 calc(var(--r) * 1px), transparent calc(var(--r) * 1px + 1px));-webkit-mask-image:radial-gradient(circle, #000 calc(var(--r) * 1px), transparent calc(var(--r) * 1px + 1px));mask-image:radial-gradient(circle, #000 calc(var(--r) * 1px), transparent calc(var(--r) * 1px + 1px));-webkit-mask-size:var(--cell) var(--cell);-webkit-mask-size:var(--cell) var(--cell);mask-size:var(--cell) var(--cell)}.ht.solid,html:not(.motion) .ht{-webkit-mask-image:none;mask-image:none}.ln{padding-bottom:.06em;display:block}
.layer-bg,.layer-gl{pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.layer-bg{z-index:0}.layer-gl{z-index:1}.callouts{z-index:3;pointer-events:none;position:fixed;inset:0}.callouts svg{z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.callouts path{fill:none;stroke-width:1.2px}.callouts circle{stroke-width:1.5px}.grain{z-index:60;pointer-events:none;opacity:.09;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.08 0 0 0 0 0.07 0 0 0 0 0.06 -1.2 0 0 0 1'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}main{z-index:2;position:relative}html:not(.motion) .layer-bg,html:not(.motion) .layer-gl,html:not(.motion) .callouts{display:none}.hdr-veil{z-index:39;height:calc(72px + env(safe-area-inset-top,0px));background:linear-gradient(var(--paper) 62%, transparent);opacity:0;pointer-events:none;transition:opacity .35s var(--ease);position:fixed;inset:0 0 auto}.hdr-veil.dark{background:linear-gradient(var(--night) 62%, transparent)}.hdr-veil.on{opacity:1}.hdr{z-index:40;padding:calc(18px + env(safe-area-inset-top,0px)) clamp(16px, 3vw, 36px) 0;color:#fff;mix-blend-mode:difference;pointer-events:none;justify-content:space-between;align-items:center;gap:16px;display:flex;position:fixed;inset:0 0 auto}.hdr .logo{font:400 22px var(--f-display);pointer-events:auto;text-decoration:none}.hdr .brand{align-items:baseline;gap:12px;display:flex}.hdr .wip{font:500 10px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;opacity:.7;white-space:nowrap;border:1px solid;padding:3px 7px}.hdr nav{pointer-events:auto;gap:4px;display:flex;position:relative}.hdr nav a{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;opacity:.6;padding:8px 10px;text-decoration:none;transition:opacity .3s}.hdr nav a[aria-current=true],.hdr nav a:hover{opacity:1}.hdr .pip{width:0;height:2px;transition:transform .5s var(--ease), width .5s var(--ease);background:#fff;position:absolute;bottom:2px;left:0}.hdr a:focus-visible{outline-offset:2px;outline:1px solid #fff}@media (max-width:760px){.hdr nav{display:none}}.cur{z-index:70;pointer-events:none;mix-blend-mode:difference;color:#fff;display:none;position:fixed;top:0;left:0}.cur i{background:currentColor;border-radius:50%;width:6px;height:6px;margin:-3px;position:absolute}.cur b{width:24px;height:24px;transition:width .35s var(--ease), height .35s var(--ease), margin .35s var(--ease);border:1px solid;border-radius:50%;margin:-12px;position:absolute}.cur span{font:500 11px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity .25s;position:absolute;top:-7px;left:18px}.cur.big b{width:46px;height:46px;margin:-23px}.cur.label span{opacity:1}@media (hover:hover) and (pointer:fine){html.motion .cur{display:block}html.motion body,html.motion a,html.motion button{cursor:none}}.pre{z-index:90;background:var(--night);color:var(--cream);position:fixed;inset:0}.pre canvas{width:100%;height:100%;position:absolute;inset:0}.pre .mono{color:var(--mute-i);position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.ph{background:var(--paper-2);margin:0;position:relative;overflow:hidden}.ph canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.ph figcaption{font:500 10px var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);pointer-events:none;justify-content:space-between;gap:6px;display:flex;position:absolute;bottom:8px;left:8px;right:8px}.ph figcaption span{background:var(--paper);white-space:nowrap;text-overflow:ellipsis;min-width:0;padding:2px 6px;overflow:hidden}.ph figcaption span:first-child{flex-shrink:0}.ph.sm figcaption span+span{display:none}.ph:before,.ph:after{content:"";z-index:1;border:0 solid var(--coral);width:14px;height:14px;position:absolute}.ph:before{border-width:2px 0 0 2px;top:6px;left:6px}.ph:after{border-width:2px 2px 0 0;top:6px;right:6px}html:not(.motion) .pre{display:none}
.chapter{min-height:100svh;padding:120px var(--gut) 64px;position:relative}.chapter.ink{color:var(--cream)}html.motion .chapter.pinned{padding:0}.pin{height:100svh;padding:120px var(--gut) 56px;position:relative}html:not(.motion) .pin{height:auto}html:not(.motion) .chapter.ink,html:not(.motion) .site-footer{background:var(--night)}.eyebrow-label{color:var(--mute-p)}.ink .eyebrow-label{color:var(--mute-i)}.intro .pin{grid-template-rows:1fr auto auto auto auto 1fr;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:0 5vw;display:grid}.intro-now{color:var(--mute-p);flex-wrap:wrap;grid-area:2/1;align-items:baseline;gap:6px 12px;margin-bottom:4svh;display:flex}.mirror{display:block}.mirror:after{content:attr(data-text);pointer-events:none;display:block;transform:scaleY(-1)}.intro-now b{font:400 19px var(--f-display);color:var(--ink);letter-spacing:0;text-transform:none}.name{text-transform:uppercase;--cell:11px;--r:9;grid-area:3/1;font-size:clamp(64px,9.4vw,180px);line-height:.92;position:relative}.name .plate,.print .plate{white-space:pre-line;mix-blend-mode:multiply;pointer-events:none;opacity:0;position:absolute;inset:0}.name .plate:before,.print .plate:before{content:attr(data-text)}.name .plate-blue,.print .plate-blue{color:var(--blue-deep)}.name .plate-coral,.print .plate-coral{color:var(--coral)}.print{position:relative}.ink .print .plate{mix-blend-mode:screen}.ink .print .plate-blue{color:var(--blue)}.ink .print .plate-coral{color:var(--coral-soft)}html:not(.motion) .name .plate,html:not(.motion) .print .plate{display:none}.hero-portrait{grid-area:1/2/7;min-height:0;margin:0;position:relative}.hero-portrait canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hero-portrait figcaption{color:var(--mute-p);justify-content:space-between;font-size:10px;display:flex;position:absolute;bottom:0;left:0;right:0}.tagline{font:400 clamp(22px, 2.1vw, 32px) / 1.2 var(--f-display);grid-area:4/1;max-width:21em;margin-top:3.5svh}.tagline em{font-style:normal}:is(.tagline,.name,.nf-code) .pw{isolation:isolate;display:inline-block;position:relative}:is(.tagline,.name,.nf-code) .pw.on{color:#0000}:is(.tagline,.name,.nf-code) .pw i{white-space:nowrap;mix-blend-mode:multiply;pointer-events:none;opacity:0;font-style:normal;position:absolute;inset:0}:is(.tagline,.name,.nf-code) .pw.on i,:is(.tagline,.name,.nf-code) .pw.split .g1,:is(.tagline,.name,.nf-code) .pw.split .g2{opacity:1}:is(.tagline,.name,.nf-code) .pw .c{color:#00b4e6;transform:translate(-.06em,.02em)}:is(.tagline,.name,.nf-code) .pw .m{color:#ec008c;transform:translate(.06em,-.02em)}:is(.tagline,.name,.nf-code) .pw .y{color:#ffd400;transform:translate(.01em,.05em)}:is(.tagline,.name,.nf-code) .pw .end{color:var(--ink);position:absolute;bottom:0;left:100%}:is(.tagline,.name,.nf-code) .pw .g1,:is(.tagline,.name,.nf-code) .pw .g2{clip-path:inset(0 0 100%);transition:none}:is(.tagline,.name,.nf-code) .pw .g1{color:#ff1f3d}:is(.tagline,.name,.nf-code) .pw .g2{color:#00c2ff}.pw.on,.pw.split{--gr:4px;--gc:11px;-webkit-mask-image:radial-gradient(circle, #000 var(--gr), transparent calc(var(--gr) + 1px));-webkit-mask-image:radial-gradient(circle, #000 var(--gr), transparent calc(var(--gr) + 1px));mask-image:radial-gradient(circle, #000 var(--gr), transparent calc(var(--gr) + 1px));-webkit-mask-size:var(--gc) var(--gc);-webkit-mask-size:var(--gc) var(--gc);mask-size:var(--gc) var(--gc)}.contact :is(.pw.on,.pw.split){--gr:5px;--gc:13px}.tagline :is(.pw.on,.pw.split){--gr:1.6px;--gc:4px}.about{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:56px 5vw;padding-top:150px;display:grid}.about-fig{gap:48px;display:grid}.about-fig>.ph{aspect-ratio:3/2;width:100%}.education{gap:14px;display:grid}.education h3{font-size:clamp(26px,2.2vw,34px)}.about-text{align-content:start;gap:26px;max-width:36rem;display:grid}.about-text h2{font-size:clamp(64px,7vw,120px)}.about-text .lead{font:400 clamp(24px, 2.2vw, 32px) / 1.25 var(--f-display);color:var(--ink);text-wrap:balance}.about-text .path{margin:4px 0 0;padding:0;list-style:none;position:relative}.about-text .path:before{content:"";background:var(--rule-p);width:1px;position:absolute;top:10px;bottom:10px;left:4px}.about-text .path li{grid-template-columns:9.5em minmax(0,1fr);align-items:baseline;gap:4px 20px;padding:0 0 26px 30px;display:grid;position:relative}.about-text .path li:last-child{padding-bottom:0}.about-text .path li:before{content:"";border:1px solid var(--ink);background:var(--paper);width:9px;height:9px;transition:background-color .4s var(--ease), transform .4s var(--ease);border-radius:50%;position:absolute;top:.32em;left:0}.about-text .path li.lit:before,html:not(.motion) .about-text .path li:before{background:var(--ink)}.about-text .path .mono{letter-spacing:.1em;text-transform:uppercase;color:var(--mute-p);gap:10px;font-size:11px;display:flex}.about-text .path .mono b{color:var(--ink);font-weight:500}.about-text .path p{color:var(--ink);text-wrap:pretty;font-size:17px;line-height:1.5}@media (max-width:760px){.about-text .path li{grid-template-columns:1fr}}.edu{border-top:1px solid var(--rule-p);padding:0;list-style:none}.edu li{border-bottom:1px solid var(--rule-p);grid-template-columns:1fr auto;gap:4px 16px;padding:12px 0;display:grid}.edu b{font:400 22px var(--f-display)}.edu span{color:var(--mute-p);font-size:15px}.edu .mono{color:var(--mute-p);grid-area:1/2}.work{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:6vw;padding-top:140px;display:grid}.work-aside{gap:22px;display:grid;position:sticky;top:110px}.work-aside h2{font-size:clamp(72px,9vw,160px)}.rail{border-left:1px solid var(--rule-p);height:min(48svh,440px);margin:34px 0 0 34px;position:relative}.rail .tick{color:var(--mute-p);font-size:10px;position:absolute;right:calc(100% + 8px);transform:translateY(-50%)}.rail .tick:before{content:"'"}.rail .today{letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}.rail .today:before{content:none}.rail .tick:after{content:"";background:var(--rule-p);width:7px;height:1px;position:absolute;top:50%;left:calc(100% + 4px)}.rail .bar{background:radial-gradient(var(--ink) 1.2px, transparent 1.6px) 0 0 / 5px 5px;border:1px solid var(--ink);width:16px;min-height:8px;transition:background-color .3s,opacity .3s;position:absolute;left:6px}.rail.has-active .bar{opacity:.25}.rail .bar.on{opacity:1;background:var(--ink)}.jobs-list{border-top:1px solid var(--rule-p);padding:0;list-style:none}.job{border-bottom:1px solid var(--rule-p);isolation:isolate;padding:30px 0;padding-inline:min(18px, var(--gut));margin-inline:calc(-1 * min(18px, var(--gut)));transition:color .35s var(--ease);outline:none;grid-template-columns:1fr auto;gap:6px 20px;display:grid;position:relative}.job:before{content:"";z-index:-1;background:var(--ink);transform-origin:50% 100%;transition:transform .5s var(--ease);position:absolute;inset:0;transform:scaleY(0)}.job.on:before,.job:focus-visible:before{transform:scaleY(1)}.job.on,.job:focus-visible{color:var(--paper)}.job.on p,.job:focus-visible p{color:#ece6dbb3}.job.on .dates,.job:focus-visible .dates{color:var(--mute-i)}.job h3{transition:transform .5s var(--ease);grid-column:1/-1;margin-bottom:4px;font-size:clamp(36px,3.7vw,66px);line-height:1.05}.job.on h3{transform:translate(8px)}.job .dates{color:var(--mute-p);grid-column:1/-1}.job .title{font:400 22px var(--f-display);grid-column:1/-1}.job p{color:var(--mute-p);grid-column:1/-1;max-width:34em}.job .more{transition:grid-template-rows .55s var(--ease);grid-column:1/-1;grid-template-rows:0fr;display:grid}.job .more ul{gap:8px;max-width:36em;min-height:0;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.job .more li{opacity:0;transition:opacity .4s, transform .4s var(--ease);padding:0 0 0 20px;font-size:16px;position:relative;transform:translateY(8px)}.job .more li:first-child{margin-top:10px}.job .more li:before{content:"";background:var(--coral);border-radius:50%;width:7px;height:7px;position:absolute;top:.62em;left:2px}.job.on .more,.job:focus-visible .more{grid-template-rows:1fr}.job.on .more li,.job:focus-visible .more li{opacity:1;transform:none}.job.on .more li:nth-child(2){transition-delay:60ms}.job.on .more li:nth-child(3){transition-delay:.12s}.job.on .more li:nth-child(4){transition-delay:.18s}@media (hover:none){.job .title:after{content:"+";color:var(--coral);font:500 20px var(--f-mono);transition:transform .4s var(--ease);margin-left:10px;display:inline-block}.job.on .title:after{transform:rotate(45deg)}}.research{padding:120px var(--gut) 150px;gap:clamp(88px,12svh,140px);display:grid}.research>:not(.landscape){z-index:1;position:relative}.research-head{font-size:clamp(48px,5vw,88px)}.paper-row{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:6vw;display:grid}.paper{align-content:start;gap:18px;display:grid}.paper h3{font-size:clamp(40px,3.6vw,64px);line-height:.98}.paper-link{max-width:34em;color:var(--cream);opacity:.75;font-size:14px;line-height:1.4;text-decoration:none;transition:opacity .2s;display:block}.paper-link:hover{opacity:1;text-decoration:underline;-webkit-text-decoration-color:var(--coral-soft);text-decoration-color:var(--coral-soft)}.paper-link .mono{color:var(--coral-soft);margin-right:6px}.paper p{color:var(--mute-i);max-width:32em;font-size:18px}.ribbon-slot{min-height:clamp(420px,62svh,620px)}.paper-row.thesis .skillpath{display:none}@media (max-width:760px){.ribbon-slot{min-height:320px}.research{padding:110px var(--gut) 100px;gap:80px}.paper-row{grid-template-columns:1fr;gap:40px}.paper h3{font-size:30px}.paper p{font-size:16px}.research .landscape{display:none}}.divider{z-index:2;padding:max(6svh, 96px) var(--gut) 0;position:relative}.divider .ph{height:clamp(140px,24vw,320px)}.projects{gap:48px;padding-top:64px;display:grid}.proj-head{border-bottom:2px solid var(--ink);align-items:flex-end;min-height:calc(min(34vw,460px)/2 + 8px);display:flex;position:relative;overflow:hidden}.proj-head h2{padding-bottom:.2em;font-size:clamp(72px,9vw,160px);line-height:1}.proj-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:5vw;display:grid}.rows{border-top:1px solid var(--rule-p);padding:0;list-style:none}.rows li{border-bottom:1px solid var(--rule-p)}.row{isolation:isolate;gap:8px;padding:26px 48px 26px 6px;text-decoration:none;display:grid;position:relative}@media (hover:hover){.row:hover:before{transform:scaleY(1)}.row:hover{color:var(--paper);outline:none}.row:hover h3{transform:translate(10px)}.row:hover .status{opacity:.9;transform:translateY(-50%)rotate(-7deg)scale(1)}}.row:before{content:"";z-index:-1;background:var(--ink);transform-origin:50% 100%;transition:transform .5s var(--ease);position:absolute;inset:0;transform:scaleY(0)}.row:focus-visible:before,.row.is-picked:before{transform:scaleY(1)}.row:focus-visible,.row.is-picked{color:var(--paper);outline:none}.row h3{transition:transform .5s var(--ease);font-size:clamp(36px,3.6vw,60px)}.row:focus-visible h3,.row.is-picked h3{transform:translate(10px)}.row .status{letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;color:var(--coral-soft);outline-offset:2px;opacity:0;pointer-events:none;border:2px solid;outline:1px solid;padding:5px 10px;font-size:11px;font-weight:500;transition:opacity .15s,transform .35s cubic-bezier(.3,1.6,.5,1);position:absolute;top:50%;right:64px;transform:translateY(-50%)rotate(-7deg)scale(1.5);-webkit-mask-image:radial-gradient(circle at 30% 40%,#000 55%,#000000b3 75%,#000 95%);mask-image:radial-gradient(circle at 30% 40%,#000 55%,#000000b3 75%,#000 95%)}.row:focus-visible .status{opacity:.9;transform:translateY(-50%)rotate(-7deg)scale(1)}@media (hover:none){.row .status{opacity:.85;color:var(--coral);transform:translateY(-50%)rotate(-7deg)}}@media (max-width:760px){.row .status{font-size:9px;top:26px;right:12px;transform:rotate(-7deg)}}.row p{opacity:.7;max-width:34em;font-size:16px}.row .open{display:none}@media (hover:none){.row .open{letter-spacing:.12em;text-transform:uppercase;max-height:0;color:var(--coral-soft);transition:max-height .4s var(--ease);font-size:11px;display:block;overflow:hidden}.row.is-picked .open{max-height:2em}}.viewer-col{position:sticky;top:110px}.viewer{aspect-ratio:4/3;width:100%}.kaggle{border-top:2px solid var(--ink);grid-template-columns:1fr;align-items:center;gap:5vw;margin-top:24px;padding-top:40px;display:grid}@media (min-width:1100px){.kaggle{grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr);gap:4vw}}.kaggle-text{align-content:start;gap:14px;display:grid}.kaggle-text .mono{color:var(--mute-p)}.kaggle-text h3{font-size:clamp(40px,4vw,68px)}.kaggle-text p{color:var(--mute-p);max-width:30em;font-size:17px}.msg.mono,.atk-result{text-transform:none;letter-spacing:0}.atk{gap:14px;margin:0;display:grid}.atk-bar{letter-spacing:.1em;text-transform:uppercase;color:var(--mute-p);flex-wrap:wrap;align-items:center;gap:8px 18px;font-size:11px;display:flex}.atk-try b{color:var(--ink);font-weight:500}.atk-tally{gap:6px;display:flex}.atk-tally i{border:1.5px solid var(--rule-p);width:16px;height:16px;font:500 10px var(--f-mono);place-items:center;font-style:normal;transition:background-color .3s,border-color .3s;display:grid}.atk-tally i.now{border-color:var(--ink)}.atk-tally i.fail{border-color:var(--mute-p)}.atk-tally i.fail:after{content:"✗"}.atk-tally i.win{background:var(--coral);border-color:var(--coral);color:var(--paper)}.atk-tally i.win:after{content:"✓"}.atk-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:18px;display:grid}.atk-panel{border:1px solid var(--rule-p);background:color-mix(in srgb, var(--paper-2) 60%, var(--paper));align-content:start;gap:10px;padding:16px 18px 18px;display:grid}.atk-head{letter-spacing:.12em;text-transform:uppercase;color:var(--mute-p);font-size:10px}.atk-panel ul{margin:0;padding:0;list-style:none;display:grid}.atk-mail{border-top:1px solid var(--rule-p);border-left:3px solid #0000;gap:2px;padding:10px 10px 10px 12px;transition:background-color .25s,border-color .25s;display:grid}.atk-mail b{font-size:15px;font-weight:500}.atk-mail>span{color:var(--mute-p);font-size:14px}.atk-mail[data-read="1"]{background:color-mix(in srgb, var(--ink) 7%, transparent);border-left-color:var(--ink)}.atk-plant{border:1px dashed var(--coral);background:color-mix(in srgb, var(--coral) 9%, transparent);gap:4px;min-height:4.4em;margin-top:6px;padding:8px 10px;font-size:14px;display:grid}.atk-plant .tag{letter-spacing:.12em;text-transform:uppercase;color:var(--coral);font-size:9px}.atk-plant-text:after{content:"▍";color:var(--coral);margin-left:1px}.msg{max-width:88%;margin:0;padding:9px 12px;font-size:15px;line-height:1.4}.msg-user{background:var(--ink);color:var(--paper);justify-self:end}.msg-think{color:var(--mute-p);padding-block:0;font-size:11px}.msg-reply{border:1px solid var(--rule-p);background:var(--paper)}.msg-tool{border:1.5px solid var(--coral);background:color-mix(in srgb, var(--coral) 12%, var(--paper));color:var(--ink);font-size:13px}.msg-tool span{letter-spacing:.12em;text-transform:uppercase;color:var(--coral);margin-bottom:2px;font-size:9px;display:block}.msg-sent{color:var(--coral);padding-block:0;font-size:12px}.atk-result{border-top:1px solid var(--rule-p);margin:4px 0 0;padding-top:10px;font-size:12px;line-height:1.5}.atk-result.fail{color:var(--mute-p)}.atk-result.win{color:var(--coral)}.atk-chat{transition:border-color .3s,box-shadow .3s}.atk.pwned .atk-chat{border-color:var(--coral);box-shadow:0 0 0 1px var(--coral)}.atk figcaption{color:var(--mute-p);font-size:14px}@media (max-width:640px){.atk{gap:10px}.atk-grid{grid-template-columns:1fr;gap:10px}.atk-panel{gap:6px;padding:10px 12px 12px}.atk-mail{grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:0 10px;padding:6px 8px}.atk-mail b{font-size:13px}.atk-mail>span{white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.atk-plant{grid-column:1/-1;min-height:3.6em;margin-top:4px;padding:6px 8px;font-size:12.5px}.atk-chat{min-height:196px}.msg{padding:6px 10px;font-size:13px}.msg-tool{font-size:11.5px}.atk-result{margin-top:2px;padding-top:6px;font-size:11px}.atk figcaption{display:none}}.kaggle-link{color:var(--ink);border-bottom:1px solid var(--coral);justify-self:start;padding-bottom:2px;text-decoration:none}.kaggle-link:hover{color:var(--coral)}.kaggle-rank{font:400 clamp(20px, 1.8vw, 26px) / 1.3 var(--f-display);color:var(--ink)}.kaggle-rank b{color:var(--coral);font-weight:400}.contact{align-content:center;gap:28px;min-height:110svh;display:grid;overflow:hidden}@media (max-width:760px){.contact{min-height:0;padding-block:120px 96px}}.contact>:not(.warp){z-index:1;position:relative}.contact h2{text-transform:uppercase;--cell:11px;--r:9;justify-self:start;font-size:clamp(76px,11vw,210px);line-height:.82}.contact .pw{isolation:isolate;display:inline-block;position:relative}.contact .pw.on{color:#0000}.contact .pw i{white-space:nowrap;mix-blend-mode:screen;pointer-events:none;opacity:0;font-style:normal;position:absolute;inset:0}.contact .pw.on i,.contact .pw.split .g1,.contact .pw.split .g2{opacity:1}.contact .pw .c{color:#ff2a3d;transform:translate(-.03em,.01em)}.contact .pw .m{color:#2bff6a;transform:translate(.03em,-.01em)}.contact .pw .y{color:#2b5bff;transform:translate(.005em,.02em)}.contact .pw .g1,.contact .pw .g2{clip-path:inset(0 0 100%)}.contact .pw .g1{color:#ff2a3d}.contact .pw .g2{color:#19d3ff}.available{font:400 clamp(20px, 1.8vw, 26px) / 1.3 var(--f-display);color:var(--mute-i)}.email{all:unset;cursor:pointer;justify-self:start;gap:8px;display:grid}.email b{font:400 clamp(20px, 4.2vw, 68px) / 1 var(--f-display);overflow-wrap:anywhere;background:linear-gradient(var(--blue), var(--blue)) 0 100% / var(--u,0%) 3px no-repeat;transition:background-size .5s var(--ease);padding-bottom:6px}.email:hover b,.email:focus-visible b{--u:100%}.email .mono{color:var(--mute-i)}.email:focus-visible{outline:1px solid var(--blue);outline-offset:8px}.elsewhere{flex-wrap:wrap;gap:28px;display:flex}.elsewhere a{font:500 13px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid var(--rule-i);padding:10px 0;text-decoration:none;transition:color .3s,border-color .3s}.elsewhere a:hover{color:var(--blue);border-color:var(--blue)}.site-footer{z-index:2;color:var(--cream);padding:64px var(--gut) 36px;gap:22px;display:grid;position:relative}.site-footer .band{height:clamp(110px,16vw,220px)}.site-footer .foot{color:var(--mute-i);flex-wrap:wrap;justify-content:space-between;gap:16px;display:flex}.on-repeat{--cw:112px;width:min(100%,520px);color:var(--ink);grid-area:5/1;justify-self:start;margin-top:6svh;text-decoration:none;display:grid}.on-repeat .above{grid-template-columns:var(--cw) minmax(0, 1fr);align-items:end;display:grid}.on-repeat .cover{width:var(--cw);height:var(--cw);object-fit:cover;transform-origin:50% 100%;display:block}.on-repeat .cover.blank{background:var(--ink)}.on-repeat .right{min-width:0;display:grid}.on-repeat .txt{gap:4px;padding-left:18px;display:grid}.on-repeat .k{letter-spacing:.12em;text-transform:uppercase;color:var(--mute-p);font-size:10px}.on-repeat .t{font:400 clamp(24px, 2.2vw, 30px) / 1.05 var(--f-display);text-wrap:balance}.on-repeat .a{letter-spacing:.08em;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.on-repeat .a span{color:var(--mute-p)}.on-repeat .lines{width:100%;height:46px;display:block}.on-repeat .water{width:100%;height:56px;display:block}.on-repeat .go{letter-spacing:.1em;text-transform:uppercase;transition:letter-spacing .5s var(--ease), transform .5s var(--ease);justify-self:end;margin-top:2px;font-size:10px}.on-repeat:focus-visible .go{letter-spacing:.2em;transform:translate(-2px)}.on-repeat .t{transition:transform .5s var(--ease)}.on-repeat:focus-visible .t{transform:translate(4px)}html.motion .on-repeat{animation:on-repeat-in .7s var(--ease) .4s both}@keyframes on-repeat-in{0%{opacity:0;transform:translateY(14px)}}@media (max-width:760px){.intro .pin{grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-columns:1fr;gap:18px}.intro-now{grid-row:1;margin-bottom:0}.intro-now .sep{display:none}.name{grid-row:2;align-self:start;margin-top:2svh;font-size:19vw}.hero-portrait{grid-area:3/1}.tagline{grid-row:4;margin-top:0}.on-repeat{--cw:84px;grid-row:5;margin-top:0}.on-repeat .t{font-size:21px}.about,.work{grid-template-columns:1fr;gap:28px;padding-top:110px}.about-text{order:-1}.work-aside{position:static}.rail{display:none}.job,.proj-grid,.kaggle{grid-template-columns:1fr}.viewer-col{display:none}.row{padding:20px 16px 20px 10px}}.nf{min-height:100svh;padding:80px var(--gut);align-content:center;justify-items:start;gap:18px;display:grid}html .nf .nf-code{font:400 clamp(140px, 30vw, 380px) / .8 var(--f-display);--cell:14px;--r:5;margin:0;-webkit-mask-image:none;mask-image:none}html .nf .nf-code:has(.pw.on){-webkit-mask-image:radial-gradient(circle, #000 calc(var(--r) * 1px), transparent calc(var(--r) * 1px + 1px));-webkit-mask-image:radial-gradient(circle, #000 calc(var(--r) * 1px), transparent calc(var(--r) * 1px + 1px));mask-image:radial-gradient(circle, #000 calc(var(--r) * 1px), transparent calc(var(--r) * 1px + 1px));-webkit-mask-size:var(--cell) var(--cell);-webkit-mask-size:var(--cell) var(--cell);mask-size:var(--cell) var(--cell)}.nf h1{font-size:clamp(32px,4vw,56px)}.nf-text{color:var(--mute-p);font-size:18px}.nf-home{color:var(--ink);border-bottom:1px solid var(--coral);margin-top:8px;padding-bottom:2px;text-decoration:none}.nf-home:hover{color:var(--coral)}.ink-under{display:none}html.motion.ink-css .ink-under{z-index:0;pointer-events:none;width:100%;display:block;position:absolute;top:0;left:0}.ink-under>div{background:linear-gradient(transparent 54px, var(--night) 54px);position:absolute;left:0;right:0}.ink-under>div:before,.ink-under>div:after{content:"";height:72px;position:absolute;left:0;right:0}.ink-under>div:before{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='72' fill='%230f0e0d'%3E%3Ccircle cx='9' cy='9.0' r='4.71'/%3E%3Ccircle cx='27' cy='9.0' r='4.71'/%3E%3Ccircle cx='0' cy='27.0' r='8.16'/%3E%3Ccircle cx='18' cy='27.0' r='8.16'/%3E%3Ccircle cx='36' cy='27.0' r='8.16'/%3E%3Ccircle cx='9' cy='45.0' r='10.53'/%3E%3Ccircle cx='27' cy='45.0' r='10.53'/%3E%3Ccircle cx='0' cy='63.0' r='12.46'/%3E%3Ccircle cx='18' cy='63.0' r='12.46'/%3E%3Ccircle cx='36' cy='63.0' r='12.46'/%3E%3C/svg%3E") 0 0/36px 72px repeat-x;top:0}.ink-under>div:after{background:linear-gradient(var(--night) 9px, transparent 9px), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='72' fill='%230f0e0d'%3E%3Ccircle cx='9' cy='9.0' r='12.46'/%3E%3Ccircle cx='27' cy='9.0' r='12.46'/%3E%3Ccircle cx='0' cy='27.0' r='10.53'/%3E%3Ccircle cx='18' cy='27.0' r='10.53'/%3E%3Ccircle cx='36' cy='27.0' r='10.53'/%3E%3Ccircle cx='9' cy='45.0' r='8.16'/%3E%3Ccircle cx='27' cy='45.0' r='8.16'/%3E%3Ccircle cx='0' cy='63.0' r='4.71'/%3E%3Ccircle cx='18' cy='63.0' r='4.71'/%3E%3Ccircle cx='36' cy='63.0' r='4.71'/%3E%3C/svg%3E") 0 0 / 36px 72px repeat-x;top:100%}.ink-under>div.open-end:after{content:none}@media (hover:hover){.on-repeat:hover .go{letter-spacing:.2em;transform:translate(-2px)}.on-repeat:hover .t{transform:translate(4px)}}.skillpath{width:100%;max-width:620px;color:var(--cream);justify-self:end;gap:10px;margin:0;display:grid}.skillpath svg{width:100%;height:auto;overflow:visible}.sp-expert{fill:none;stroke:var(--cream);stroke-opacity:.4;stroke-width:1.4px;stroke-dasharray:.004 .012;stroke-linecap:round;transform:translateY(-26px)}.sp-tag,.sp-label{font:500 9px var(--f-mono);letter-spacing:.08em;fill:var(--mute-i)}.sp-tag{text-transform:uppercase;fill:var(--cream);opacity:.5}.sp-label{fill:var(--cream)}.sp-skill{fill:none;stroke:var(--cream);stroke-width:10px;stroke-linecap:butt}.sp-skill.alt{stroke:var(--blue-deep)}.sp-seg{opacity:.35}html:not(.motion) .sp-seg{opacity:1}html.motion .sp-seg{animation-duration:var(--loop);animation-timing-function:linear;animation-iteration-count:infinite}.sp-trail{fill:none;stroke:var(--coral-soft);stroke-width:2.5px;stroke-linecap:round;stroke-dasharray:1 1;stroke-dashoffset:1px}html.motion .sp-trail{animation:sp-trail var(--loop) linear infinite}@keyframes sp-trail{0%{stroke-dashoffset:1px;opacity:1}80%{stroke-dashoffset:0;opacity:1}95%,to{stroke-dashoffset:0;opacity:0}}.sp-cut{fill:var(--night);stroke:var(--cream);stroke-width:1.5px}.sp-plane{fill:var(--cream);transform-box:view-box;offset-path:path("M12 100 C 70 100, 90 34, 150 38 S 230 108, 280 74 S 330 24, 348 26");offset-rotate:auto;offset-distance:100%}html.motion .sp-plane{animation:sp-fly var(--loop) linear infinite}@keyframes sp-fly{0%{offset-distance:0%;opacity:0}3%{opacity:1}80%{offset-distance:100%;opacity:1}90%,to{offset-distance:100%;opacity:0}}.skillpath figcaption{gap:10px;margin-top:6px;font-size:15px;line-height:1.45;display:grid}.skillpath figcaption b{letter-spacing:.12em;text-transform:uppercase;color:var(--blue);font-size:10px;font-weight:500;display:block}.pw i:before{content:attr(data-w)}
.callout{opacity:0;z-index:2;will-change:transform;width:290px;color:var(--cream);text-shadow:0 0 8px var(--night), 0 0 3px var(--night);gap:6px;display:grid;position:absolute;top:0;left:0}.callout .m{font:500 12px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}.callout b{font:400 32px / 1.05 var(--f-display)}.callout .s{color:var(--cream);opacity:.9;font-size:17px;line-height:1.45}.callout .reveal{clip-path:inset(0 0 100%);transition:clip-path .55s var(--ease), transform .55s var(--ease);background:#0f0e0dd1;gap:4px;display:grid;transform:translateY(14px);box-shadow:0 0 22px 16px #0f0e0dd1}.callout.on .reveal{clip-path:inset(0 0 -10%);transform:none}.skillgraph{isolation:isolate;border-top:2px solid var(--ink);grid-column:1/-1;gap:14px;padding-top:26px;display:grid;position:relative}.skillgraph-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.skillgraph-head h3{font-size:clamp(28px,2.6vw,42px)}.skillgraph canvas{width:calc(100% + 2 * var(--gut));margin-inline:calc(-1 * var(--gut));background:var(--night);cursor:grab;touch-action:pan-y;height:clamp(540px,86svh,860px);display:block}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips button{font:500 11px var(--f-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--rule-p);background:0 0;border-radius:99px;align-items:center;gap:8px;padding:6px 12px 6px 10px;transition:background .3s,color .3s;display:inline-flex}.chips button i{border-radius:50%;width:8px;height:8px}.chips button.sub{border-style:dashed}.chips button[data-on],.chips button[aria-pressed=true],.chips button:hover{background:var(--ink);color:var(--paper)}.landscape{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.uncert{width:100%;max-width:640px;color:var(--cream);justify-self:end;gap:18px;margin:0;display:grid}.u-top{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"q g""h g";align-items:center;gap:18px 12px;display:grid}.u-query{grid-area:q;align-self:end}.u-glyph{grid-area:g}.u-head{grid-area:h;align-self:start}.u-query{font:400 clamp(26px, 2.4vw, 34px) / 1 var(--f-display);white-space:nowrap}.u-head{gap:10px;display:grid}.u-head .mono{color:var(--mute-i)}.u-switch{border:1px solid var(--rule-i);color:var(--cream);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;align-items:center;gap:12px;padding:6px 6px 6px 12px;transition:border-color .3s;display:inline-flex}.u-switch .mono{letter-spacing:.08em;text-transform:uppercase;font-size:12px}.u-switch i{background:#eee7da29;border-radius:999px;width:40px;height:22px;transition:background-color .3s;position:relative}.u-switch i:after{content:"";background:var(--cream);width:16px;height:16px;transition:transform .35s var(--ease);border-radius:50%;position:absolute;top:3px;left:3px}.u-switch[aria-checked=true]{border-color:var(--coral-soft)}.u-switch[aria-checked=true] i{background:var(--coral-soft)}.u-switch[aria-checked=true] i:after{transform:translate(18px)}.u-switch:hover{border-color:var(--cream)}.u-switch:focus-visible{outline:2px solid var(--cream);outline-offset:3px}.u-switch.nudge{animation:u-nudge 1.4s var(--ease) 2}@keyframes u-nudge{0%{box-shadow:0 0 #e8714fa6}to{box-shadow:0 0 0 14px #e8714f00}}.u-key{border-top:1px solid var(--rule-i);gap:12px;margin:6px 0 0;padding:14px 0 0;list-style:none;display:grid}.u-key li{color:var(--cream);opacity:.38;transition:opacity .4s var(--ease);grid-template-columns:6.5em minmax(0,1fr);gap:4px 14px;font-size:15px;line-height:1.45;display:grid}.u-key li.on{opacity:1}.u-key b{letter-spacing:.1em;text-transform:uppercase;color:var(--mute-i);padding-top:.25em;font-size:11px;font-weight:500}.u-key li.on b{color:var(--coral-soft)}.u-glyph{flex:none;grid-template-columns:auto;align-items:center;gap:4px 10px;display:grid}.u-glyph canvas{cursor:grab;touch-action:none;pointer-events:auto;width:clamp(190px,31svh,300px);height:clamp(190px,31svh,300px)}.u-glyph canvas.held{cursor:grabbing}@media (max-height:780px){.u-glyph canvas{width:26svh;height:26svh}}.u-glyph .mono{color:var(--coral-soft);justify-self:center;font-size:10px}.u-arrow{display:none}.u-photos{gap:8px;margin:0;padding:0;list-style:none;display:grid}.u-photos li{grid-template-columns:44px 14px minmax(0,1fr) 3.2em;align-items:center;gap:12px;font-size:12px;transition:opacity .3s;display:grid}.u-photos li.zero{opacity:.45}.u-photos canvas{width:44px;height:44px;display:block}.u-photos .n{color:var(--mute-i)}.u-photos .track{background:var(--rule-i);height:14px}.u-photos .track i{height:100%;width:calc(var(--w) * 1%);background:radial-gradient(circle, var(--coral-soft) 1.7px, transparent 2.1px) 0 0 / 5px 5px;box-shadow:inset -2px 0 0 var(--coral-soft);display:block}.u-photos .pct{text-align:right;font-variant-numeric:tabular-nums}.warp{z-index:0;width:100%;height:100%;display:block;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 75%,#0000);mask-image:linear-gradient(#000 75%,#0000)}html:not(.motion) .landscape,html:not(.motion) .warp{display:none}@media (max-width:760px){.skillgraph canvas{height:640px}.uncert{gap:12px}.u-top{grid-template-areas:"q g""h h";gap:8px 12px}.u-top .u-head{grid-template-columns:auto auto;justify-content:space-between;align-items:center}.u-photos{gap:6px}.u-photos li{grid-template-columns:34px 10px minmax(0,1fr) 2.8em;gap:8px;font-size:11px}.u-photos canvas{width:34px;height:34px}.u-photos .track{height:10px}.paper{bottom:64px}.paper h3{font-size:31px}.u-glyph canvas{width:140px;height:140px}.u-arrow{display:none}.callout{width:210px}.callout b{font-size:24px}.callout .s{display:none}}.projects{isolation:isolate}.dotsun{will-change:transform;z-index:-1;aspect-ratio:1;opacity:.75;pointer-events:none;width:min(34vw,460px);position:absolute;bottom:0;right:4vw;transform:translateY(50%)}@media (max-width:760px){.proj-head{min-height:190px}.dotsun{opacity:.45;width:52vw;right:-6vw}}.work{isolation:isolate}.work-log{z-index:-1;pointer-events:none;white-space:pre;color:#15120f1c;-webkit-mask-image:linear-gradient(to right, #000, #0006 calc(var(--fade,60%) * .7), transparent var(--fade,60%)), linear-gradient(to bottom, transparent, #000 6%, #000 94%, transparent);-webkit-mask-composite:source-in;-webkit-mask-image:linear-gradient(to right, #000, #0006 calc(var(--fade,60%) * .7), transparent var(--fade,60%)), linear-gradient(to bottom, transparent, #000 6%, #000 94%, transparent);mask-image:linear-gradient(to right, #000, #0006 calc(var(--fade,60%) * .7), transparent var(--fade,60%)), linear-gradient(to bottom, transparent, #000 6%, #000 94%, transparent);padding-left:24px;font-size:10.5px;line-height:15px;position:absolute;inset:0;overflow:hidden;-webkit-mask-composite:source-in;mask-composite:intersect}.work-log .log-run span{transition:color .25s;display:block}.work-log .eval{color:#15120f33}.work-log .hot{color:#15120f99}html.motion:not(.ink-css) .work-log.live .log-run{animation:430s linear infinite log-creep}@keyframes log-creep{to{transform:translateY(-100%)}}@media (max-width:760px){.seg-label{stroke-width:4px;font-size:11px}.u-key li{grid-template-columns:1fr;font-size:14px}.callout{display:none}}

