:root{--bg:#0a0c16;--plate:#12162b;--ink:#eef0e6;--soft:#d4d7cc;--muted:#a3a9bf;--dim:#6f7590;--lime:#c8d751;--line:#eef0e61a;--font:"Bricolage Grotesque", system-ui, sans-serif;--gutter:clamp(16px, 6vw, 96px)}*{box-sizing:border-box}html{background:var(--bg)}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{color:var(--ink);background:var(--bg);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.55;overflow-x:hidden}a{color:inherit}::selection{background:var(--lime);color:#111}:focus-visible{outline:2px solid var(--lime);outline-offset:3px;border-radius:2px}#world{z-index:0;width:100vw;height:100lvh;display:block;position:fixed;inset:0}.no-webgl #world,.no-webgl #strings{display:none}.no-webgl body,body.no-webgl{background:radial-gradient(ellipse at 70% 20%, #1d2142, var(--bg) 60%)}#loader{z-index:50;background:var(--bg);place-items:center;transition:opacity .9s,visibility .9s;display:grid;position:fixed;inset:0}#loader.done{opacity:0;visibility:hidden}.loader-inner{justify-items:center;gap:14px;display:grid}.loader-mark{letter-spacing:-.02em;color:var(--lime);font-size:48px;font-weight:800;font-stretch:75%}.loader-text{color:var(--muted);font-size:14px}.loader-text b{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.loader-bar{background:var(--line);width:180px;height:2px;overflow:hidden}.loader-bar i{background:var(--lime);width:0;height:100%;transition:width .25s;display:block}.topbar{z-index:20;padding:22px var(--gutter);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.topbar a{pointer-events:auto;text-decoration:none}.logo{letter-spacing:-.02em;font-size:24px;font-weight:800;font-stretch:80%}.logo span{color:var(--lime)}.toplinks{pointer-events:auto;align-items:center;gap:22px;display:flex}.toplinks>a:not(.pill){color:var(--muted);font-size:15px}.toplinks>a:not(.pill):hover{color:var(--ink)}.pill{border:1.5px solid var(--lime);color:var(--lime);background:#0a0c168c;border-radius:999px;padding:8px 16px;font-size:15px;font-weight:600;transition:background .2s,color .2s}.pill:hover{background:var(--lime);color:#111}.rail{z-index:20;position:fixed;top:50%;right:22px;transform:translateY(-50%)}.rail ol{gap:11px;margin:0;padding:0;list-style:none;display:grid}.rail a{color:var(--dim);justify-content:flex-end;align-items:center;gap:10px;font-size:13px;font-stretch:80%;text-decoration:none;display:flex}.rail a span{opacity:0;transition:opacity .25s,transform .25s;transform:translate(6px)}.rail a i{border:1px solid var(--dim);border-radius:50%;width:7px;height:7px;transition:background .25s,border-color .25s,transform .25s}.rail a:hover span,.rail a:focus-visible span,.rail a.active span{opacity:1;transform:none}.rail a.active{color:var(--ink)}.rail a.active i{background:var(--lime);border-color:var(--lime);transform:scale(1.3)}.progress{z-index:20;height:2px;position:fixed;bottom:0;left:0;right:0}.progress i{background:var(--lime);width:0;height:100%;display:block}#labels{pointer-events:none;z-index:5;position:fixed;inset:0}.skill-label{white-space:nowrap;color:var(--ink);will-change:transform, opacity;background:#12162bd9;border-left:2px solid #2496ed;border-radius:4px;padding:2px 8px;font-size:13px;font-weight:600;font-stretch:80%;position:absolute;top:0;left:0}#strings{pointer-events:none;z-index:6;opacity:0;width:100%;height:100%;position:fixed;inset:0;overflow:visible}#string-path{fill:none;stroke:var(--sc,var(--lime));stroke-width:1.6px;stroke-linecap:round}#string-ring{fill:none;stroke:var(--sc,var(--lime));stroke-width:1.6px;transform-box:fill-box;transform-origin:50%;animation:2.6s ease-out infinite ring}#string-dot{fill:var(--sc,var(--lime))}@keyframes ring{0%{opacity:1;transform:scale(.55)}to{opacity:0;transform:scale(1.5)}}main{z-index:10;position:relative}.panel{min-height:150vh;padding:0 var(--gutter);align-items:center;display:flex}.panel[data-side=right]{padding-right:calc(var(--gutter) + 40px);justify-content:flex-end}.hero{min-height:120vh}.hero-copy{max-width:36rem;padding-top:10vh}.kicker{color:var(--muted);margin:0;font-size:18px}.hero h1{letter-spacing:-.02em;text-shadow:0 10px 60px #00000080;margin:14px 0 26px;font-size:clamp(72px,12vw,172px);font-weight:800;font-stretch:75%;line-height:.84}.hero .lede{color:var(--soft);max-width:30rem;margin:0;font-size:clamp(18px,1.6vw,22px)}.socials{flex-wrap:wrap;gap:10px;margin:28px 0 0;padding:0;list-style:none;display:flex}.socials a{color:var(--ink);border:1px solid var(--line);background:#0a0c168c;border-radius:999px;align-items:center;gap:8px;padding:8px 15px;font-size:15px;font-weight:600;text-decoration:none;transition:background .2s,color .2s,border-color .2s;display:inline-flex}.socials a:hover{background:var(--lime);color:#111;border-color:var(--lime)}.socials svg{fill:currentColor;width:15px;height:15px}.scroll-hint{color:var(--dim);align-items:center;gap:12px;margin-top:30px;font-size:14px;display:flex}.mouse{border:1.5px solid var(--dim);border-radius:10px;width:18px;height:28px;position:relative}.mouse:after{content:"";background:var(--lime);border-radius:2px;width:2px;height:6px;margin-left:-1px;animation:1.6s ease-in-out infinite wheel;position:absolute;top:6px;left:50%}@keyframes wheel{0%{opacity:1;transform:translateY(0)}80%{opacity:0;transform:translateY(8px)}to{opacity:0}}.card{--c:var(--lime);--notch:34px;--eye:29px;--shape:polygon(0 0, calc(100% - var(--notch)) 0, 100% var(--notch), 100% 100%, 0 100%);--hole:radial-gradient(circle 6px at calc(100% - var(--eye)) var(--eye), transparent 6px, #000 6.6px);background:color-mix(in oklab, var(--c) 60%, transparent);max-width:31rem;clip-path:var(--shape);-webkit-mask:var(--hole);-webkit-mask:var(--hole);mask:var(--hole);opacity:0;transform-origin:calc(100% - var(--eye)) var(--eye);padding:1.5px;transition:opacity .35s,transform 1.1s cubic-bezier(.3,1.55,.45,1);position:relative;transform:rotate(4deg)translateY(-10px)}.panel[data-side=right] .card{--shape:polygon(var(--notch) 0, 100% 0, 100% 100%, 0 100%, 0 var(--notch));--hole:radial-gradient(circle 6px at var(--eye) var(--eye), transparent 6px, #000 6.6px);transform-origin:var(--eye) var(--eye);transform:rotate(-4deg)translateY(-10px)}.card.in,.panel[data-side=right] .card.in{opacity:1;transform:none}.card.wide{max-width:38rem}.plate{clip-path:var(--shape);background:var(--plate);padding:30px 34px 28px}.eyelet{z-index:2;top:calc(var(--eye) - 9px);right:calc(var(--eye) - 9px);border:3px solid var(--c);border-radius:50%;width:18px;height:18px;position:absolute}.panel[data-side=right] .eyelet{right:auto;left:calc(var(--eye) - 9px)}.card h2{letter-spacing:-.015em;text-wrap:balance;margin:0 40px 14px 0;font-size:clamp(44px,4.3vw,66px);font-weight:800;font-stretch:75%;line-height:.9}.panel[data-side=right] .card h2{margin:0 0 14px 22px}.card h2.big{font-size:clamp(52px,5.4vw,84px)}.deck{color:var(--ink);max-width:34ch;margin:0 0 20px;font-size:18.5px;line-height:1.42}.plate p{color:var(--muted);margin:0 0 14px;font-size:15.5px}.plate .deck{color:var(--ink);font-size:18.5px}.bullets{border-left:2px solid var(--c);gap:10px;margin:0 0 22px;padding:2px 0 2px 16px;list-style:none;display:grid}.bullets li{color:var(--muted);font-size:15px;line-height:1.5}.bullets b{color:var(--ink);font-weight:650}.facts{border-top:1px solid var(--line);gap:7px;margin:0;padding-top:16px;display:grid}.facts div{grid-template-columns:6.6rem 1fr;align-items:baseline;gap:14px;display:grid}.facts dt{color:var(--c);font-size:14.5px;font-weight:650;font-stretch:75%}.facts dd{color:var(--soft);margin:0;font-size:14.5px}.facts a,.elsewhere a{-webkit-text-decoration-color:var(--c);text-decoration-color:var(--c);text-underline-offset:3px;text-decoration-thickness:1.5px}.facts a:hover,.elsewhere a:hover{color:var(--c)}.facts.stack{border-top:0;gap:10px;margin-bottom:24px;padding-top:4px}.facts.stack div{grid-template-columns:5.2rem 1fr}.timeline{gap:18px;margin:6px 0 0;padding:0;list-style:none;display:grid;position:relative}.timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:8px;bottom:8px;left:5px}.timeline li{padding-left:28px;position:relative}.timeline li:before{content:"";background:var(--plate);border:2px solid var(--c);border-radius:50%;width:11px;height:11px;position:absolute;top:5px;left:0}.timeline li:first-child:before{background:var(--c)}.timeline li.edu:before{border-color:var(--dim)}.timeline .when{color:var(--dim);font-variant-numeric:tabular-nums;font-size:14px;font-stretch:75%}.timeline h3{letter-spacing:-.01em;margin:1px 0 0;font-size:19px;font-weight:650}.timeline .org{color:var(--c);margin:0 0 4px;font-size:15px}.timeline p{margin:0;font-size:14.5px}.more-title{color:var(--c);margin:0 0 8px;font-size:19px;font-weight:700;font-stretch:75%}.more{gap:8px;margin:0;padding:0;list-style:none;display:grid}.more li{color:var(--muted);font-size:14.5px}.more b{color:var(--ink);margin-right:6px;font-weight:650}.mail{letter-spacing:-.01em;color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--c);text-decoration-color:var(--c);text-underline-offset:7px;margin:2px 0 14px;font-size:clamp(28px,3vw,40px);font-weight:700;font-stretch:80%;text-decoration-thickness:3px;transition:color .2s;display:inline-block}.mail:hover{color:var(--c)}.plate .fine{color:var(--dim);margin:22px 0 0;font-size:13px}.note{border-top:1px solid var(--line);gap:10px;margin:18px 0 0;padding-top:16px;display:grid}.note-title{font-weight:650;font-stretch:80%;color:var(--c)!important;margin:0!important;font-size:16px!important}.note label{color:var(--muted);gap:4px;font-size:13.5px;display:grid}.note input,.note textarea{font:inherit;color:var(--ink);border:1px solid var(--line);border-bottom-color:color-mix(in oklab, var(--c) 50%, transparent);resize:vertical;background:#eef0e60d;border-radius:4px;padding:9px 11px;font-size:15px}.note input:focus,.note textarea:focus{border-color:var(--c);background:#eef0e614;outline:none}.note-foot{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.note button{font:inherit;cursor:pointer;color:#111;background:var(--c);border:0;border-radius:4px;padding:9px 16px;font-size:15px;font-weight:700}.note button:disabled{opacity:.6;cursor:progress}.note-status{margin:0!important;font-size:13.5px!important}.note-status.ok{color:var(--c)!important}.note-status.err{color:#ff8a8a!important}#contact{min-height:130vh}.finale{justify-content:center;align-items:flex-end;min-height:160vh;padding-bottom:12vh}.finale-copy{text-align:center}.finale-copy p{text-shadow:0 6px 40px #0009;margin:0 0 6px;font-size:clamp(26px,3vw,40px);font-weight:700;font-stretch:80%}.finale-copy a{color:var(--lime);text-underline-offset:4px;font-size:17px;text-decoration:underline;text-decoration-thickness:1.5px}@media (aspect-ratio>=1) and (height<=560px){.panel{min-height:0;padding-top:70vh;padding-bottom:70vh}.card,.card.wide{max-width:min(44vw,25rem)}.plate{padding:18px 20px 16px}.card h2{margin-bottom:8px;font-size:34px}.card h2.big{font-size:40px}.deck,.plate .deck{margin-bottom:12px;font-size:15px}.plate p,.bullets li,.timeline p,.more li{font-size:13px}.bullets{gap:6px;margin-bottom:14px}.facts dt,.facts dd{font-size:13px}.facts div{grid-template-columns:5.4rem 1fr}.timeline{gap:10px}.timeline h3{font-size:15.5px}.hero h1{font-size:64px}.hero-copy{padding-top:64px}.topbar{padding-top:12px;padding-bottom:12px}.rail{display:none}}@media (width<=760px),(aspect-ratio<=1){body{font-size:16px}.rail{display:none}.topbar{padding:16px}.panel,.panel[data-side=right]{justify-content:center;align-items:center;min-height:160vh;padding:52vh 16px 8vh}.hero{align-items:flex-end;min-height:120vh;padding-top:0}.hero-copy{background:linear-gradient(#0000,#0a0c16b3 25%,#0a0c16f0 45%);margin:0 -16px;padding:34vh 16px 6vh}.card,.card.wide,.panel[data-side=right] .card{--notch:30px;--eye:26px;--shape:polygon(0 0, calc(100% - var(--notch)) 0, 100% var(--notch), 100% 100%, 0 100%);--hole:radial-gradient(circle 6px at calc(100% - var(--eye)) var(--eye), transparent 6px, #000 6.6px);width:100%;max-width:36rem;transform-origin:calc(100% - var(--eye)) var(--eye)}.panel[data-side=right] .card{transform:rotate(4deg)translateY(-10px)}.panel[data-side=right] .eyelet{left:auto;right:calc(var(--eye) - 9px)}.panel[data-side=right] .card h2{margin:0 36px 14px 0}.plate{padding:24px 20px 22px}.card h2{font-size:46px}.deck,.plate .deck{font-size:17px}.facts div,.facts.stack div{grid-template-columns:1fr;gap:0}}@media (width<=760px){.toplinks>a:not(.pill){display:none}}@media (width>=600px) and (aspect-ratio<=1){.facts div,.facts.stack div{grid-template-columns:6.6rem 1fr;gap:14px}.card h2{font-size:56px}}@media (prefers-reduced-motion:reduce){.card,.panel[data-side=right] .card{transition:opacity .3s;transform:none}.mouse:after,#string-ring{animation:none}}
