@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");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:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/schibsted-grotesk-latin-ext-wght-normal-hsMS0n0O.woff2)format("woff2-variations");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:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2)format("woff2-variations");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}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e1113;--text:#e6e8e3;--muted:#9aa39f;--line:#2a3136;--accent:#7fd6b0;--radius:4px;--gutter:clamp(16px, 4vw, 48px);--sans:"Schibsted Grotesk Variable", system-ui, sans-serif;--mono:"Geist Mono Variable", ui-monospace, monospace;--ease:cubic-bezier(.16, 1, .3, 1);--z-stage:5;--z-nav:10}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font:400 17px/1.55 var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}a:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius)}h1,h2,h3,p,ul,ol{margin:0}ul,ol{padding:0;list-style:none}.lenis,.lenis body{height:auto}.mono{font:400 13px/1.5 var(--mono);color:var(--muted)}.skip{position:absolute;left:-999px}.skip:focus{left:var(--gutter);z-index:20;background:var(--accent);color:var(--bg);border-radius:var(--radius);padding:8px 12px;top:12px}.stage{z-index:var(--z-stage);pointer-events:none;inset:0;position:fixed!important}.nav{z-index:var(--z-nav);height:64px;padding:0 var(--gutter);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0e1113d1;justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0 0 auto}.nav .brand{font-weight:600}.nav span a{color:var(--muted);margin-left:28px;transition:color .2s}.nav span a:hover{color:var(--text)}main{max-width:1280px;padding:0 var(--gutter);margin:0 auto}.hero{flex-direction:column;justify-content:center;gap:28px;max-width:56%;min-height:100dvh;padding-top:64px;display:flex}h1{letter-spacing:-.035em;font-size:clamp(40px,5vw,76px);font-weight:600;line-height:1.02}.hero p{color:var(--muted);max-width:34em;font-size:clamp(17px,1.6vw,20px)}.cta{flex-wrap:wrap;gap:12px;display:flex}.btn{border:1px solid var(--line);border-radius:var(--radius);white-space:nowrap;transition:border-color .2s, transform .2s var(--ease);padding:13px 20px}.btn:hover{border-color:var(--muted)}.btn:active{transform:scale(.98)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:600}.chapter{height:calc(var(--n) * 85dvh + 100dvh)}.pin{grid-template-rows:auto 1fr;max-width:50%;height:100dvh;padding:96px 0 56px;display:grid;position:sticky;top:0}h2{white-space:nowrap;letter-spacing:-.04em;font-size:clamp(48px,8vw,120px);font-weight:600;line-height:.95}.chapter h2{padding-bottom:.08em}.years{font:400 14px var(--mono);color:var(--accent);margin-top:14px}.lede{color:var(--muted);max-width:32em;margin-top:16px}.steps{margin-top:40px;position:relative}.step{opacity:0;transition:opacity .5s var(--ease), transform .5s var(--ease);pointer-events:none;position:absolute;inset:0 0 auto;transform:translateY(24px)}.step.is-active{opacity:1;pointer-events:auto;transform:none}.step.is-past{transform:translateY(-24px)}.step h3{letter-spacing:-.02em;margin:6px 0;font-size:clamp(22px,2.4vw,32px);font-weight:600;line-height:1.15}.step .period{font:400 14px var(--mono);color:var(--accent)}.step .org{color:var(--muted)}.step ul{gap:10px;max-width:36em;margin-top:16px;display:grid}.step ul li{padding-left:18px;position:relative}.step ul li:before{content:"";background:var(--muted);width:8px;height:1px;position:absolute;top:.7em;left:0}.chapter:not(.term) .steps{align-content:start;gap:14px;margin-top:24px;display:grid}.chapter:not(.term) .step{grid-template-columns:7.5rem 1fr;grid-template-areas:"p h""p o""u u";column-gap:12px;display:grid;position:static;transform:translateY(16px)}.chapter:not(.term) .step .period{grid-area:p;padding-top:.35rem}.chapter:not(.term) .step h3{grid-area:h;margin:0;font-size:clamp(18px,1.6vw,22px)}.chapter:not(.term) .step .org{grid-area:o;font-size:15px}.chapter:not(.term) .step ul{grid-area:u;gap:3px;max-width:none;margin-top:6px;font-size:14px;line-height:1.45}.chapter:not(.term) .step.is-active,.chapter:not(.term) .step.is-past{opacity:1;pointer-events:auto;transform:none}.chapter:not(.term) .step.is-past{opacity:.72}.chapter:not(.term) .pin{padding-top:88px}.chapter:not(.term) h2{font-size:clamp(44px,5.6vw,84px)}@media (width<=760px),(height<=780px){.chapter:not(.term) .step.is-past ul,.chapter:not(.term) .step.is-past .org{display:none}}.bar{background:var(--line);width:120px;height:1px;position:absolute;bottom:40px;left:0}.bar:after{content:"";background:var(--accent);transform-origin:0;transform:scaleX(var(--p,0));position:absolute;inset:0}.index{padding-bottom:80px}.index section,.index footer{padding-top:140px}.index h2{white-space:normal;font-size:clamp(40px,6vw,88px)}.intro{color:var(--muted);margin-top:12px}.lead-project{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:12px;max-width:48em;margin-top:56px;padding:32px 0;transition:border-color .3s;display:grid}.lead-project:hover{border-color:var(--accent)}.lead-name{letter-spacing:-.03em;font-size:clamp(32px,4vw,56px);font-weight:600;line-height:1}.lead-desc{color:var(--muted);max-width:34em}.projects{grid-template-columns:repeat(2,1fr);gap:48px 64px;margin-top:56px;display:grid}.projects h3,.skills h3{letter-spacing:-.02em;font-size:22px;font-weight:600}.projects p,.skills p{color:var(--muted);margin-top:6px}.projects .mono,.skills .mono{margin-top:10px}.skills{grid-template-columns:repeat(2,1fr);gap:64px;margin-top:56px;display:grid}.skills ul{gap:10px;margin-top:14px;display:grid}.skills li{color:var(--text)}.where{color:var(--muted);font-size:14px;display:block}.papers{gap:40px;max-width:48em;margin-top:48px;display:grid}.papers a{letter-spacing:-.02em;margin:6px 0;font-size:clamp(20px,2vw,26px);font-weight:600;line-height:1.25;display:block}.papers a:hover{color:var(--accent)}.papers p{color:var(--muted)}#contact{text-align:left}.mail{letter-spacing:-.03em;border-bottom:2px solid var(--accent);word-break:break-all;margin:32px 0 24px;font-size:clamp(24px,4.4vw,64px);font-weight:600;display:inline-block}.links{color:var(--muted);flex-wrap:wrap;gap:28px;margin-bottom:32px;display:flex}.links a:hover{color:var(--text)}@media (width<=760px){body{font-size:16px}.hero{justify-content:flex-end;max-width:none;padding-bottom:48px}.pin{max-width:none;padding-top:38dvh}.lede,.bar{display:none}.step ul{gap:8px;font-size:15px}.steps{margin-top:20px}.chapter h2{font-size:clamp(44px,14vw,72px)}.projects,.skills{grid-template-columns:1fr;gap:40px}}[data-motion=off] .stage{display:none}:is([data-motion=off],[data-motion=lite]) .chapter{height:auto;padding:96px 0 0}:is([data-motion=off],[data-motion=lite]) .pin{max-width:none;height:auto;padding:0;display:block;position:static}:is([data-motion=off],[data-motion=lite]) .steps{gap:40px;display:grid}:is([data-motion=off],[data-motion=lite]) .step{opacity:1!important;position:static!important;transform:none!important}:is([data-motion=off],[data-motion=lite]) .bar{display:none}[data-motion=off] .hero{max-width:none;min-height:80dvh}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.term .steps{border:1px solid var(--line);border-radius:var(--radius);font:400 13px/1.6 var(--mono);align-self:start;padding:20px;display:grid}.term .pin{max-width:none}.term .steps{gap:14px;max-width:880px;margin-top:20px}.term h2{font-size:clamp(44px,5.6vw,84px)}.term .step{grid-template-columns:max-content max-content 1fr;align-items:baseline;column-gap:14px;display:grid;position:static;transform:translateY(16px)}.term .step .prompt,.term .step ul{grid-column:1/-1}.term .step.is-active,.term .step.is-past{opacity:1;pointer-events:auto;transform:none}.term .step.is-past{opacity:.8}@media (width<=760px),(height<=780px){.term .step.is-past ul{display:none}}.term .step h3{font:500 15px/1.4 var(--mono);letter-spacing:0;margin:4px 0}.term .step .period{font:400 13px var(--mono)}.term .step ul{max-width:none}.term .prompt{color:var(--accent);overflow-wrap:anywhere;margin-bottom:4px}.term .step .g{color:var(--accent)}.bots{pointer-events:none;position:absolute;inset:0;overflow:hidden}.bot{font:500 11px/1 var(--mono);color:var(--accent);white-space:pre;visibility:hidden;will-change:transform;margin:-.9em 0 0 -3.5ch;position:absolute;top:0;left:0}@media (width<=760px){.term .steps{padding:14px;font-size:12px}.term .step h3{font-size:13px}.bot{font-size:9px}}:is([data-motion=off],[data-motion=lite]) .term .steps{gap:28px;display:grid}:is([data-motion=off],[data-motion=lite]) .term .step{grid-area:auto}:is([data-motion=off],[data-motion=lite]) .bots{display:none}.about{max-width:860px;min-height:80dvh;padding:96px 0;display:block}.about h2{font-size:clamp(36px,4.6vw,68px)}.about-lead{max-width:34em;margin-top:20px;font-size:clamp(18px,1.7vw,22px);line-height:1.5}.about dl{gap:18px;margin:32px 0 0;display:grid}.about dl>div{grid-template-columns:9rem 1fr;gap:12px;display:grid}.about dt{font:400 13px/1.7 var(--mono);color:var(--accent)}.about dd{color:var(--muted);max-width:34em;margin:0}@media (width<=760px){.about{padding:64px 0}.about dl>div{grid-template-columns:1fr;gap:2px}}:is([data-motion=off],[data-motion=lite]) .about{min-height:0}.term .step ul{gap:3px;margin-top:2px}.term .step h3{margin:0}.term .bar{display:none}.term .pin{padding-bottom:28px}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.nav .short{display:none}.chapter:not(.term) .step.is-past,.term .step.is-past{opacity:.82}.mail{word-break:normal;overflow-wrap:anywhere;font-size:clamp(17px,5vw,64px)}:is([data-motion=off],[data-motion=lite]) .term .steps{padding:16px}:is([data-motion=off],[data-motion=lite]) .chapter h2{margin-bottom:4px}@media (width<=900px){.nav{gap:12px}.nav .full{display:none}.nav .short{display:inline}.nav span a,.nav span a:not(:last-child){margin-left:16px;display:inline}.hero{justify-content:flex-end;max-width:none;padding-bottom:56px}.term .step{grid-template-columns:1fr;row-gap:2px}}
