:root{color-scheme:light dark}html,body{margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;background:#fafaf9;color:#18181b;-webkit-font-smoothing:antialiased;font-optical-sizing:auto;cursor:none}body.tone-dark{background:#0f1115;color:#ececee}*{box-sizing:border-box}a{color:inherit}.reveal{opacity:0;transform:translateY(46px) scale(.985);filter:blur(7px);transition:opacity 1.15s cubic-bezier(.16,1,.3,1),transform 1.15s cubic-bezier(.16,1,.3,1),filter 1.15s cubic-bezier(.16,1,.3,1);will-change:opacity,transform,filter}.reveal.in{opacity:1;transform:none;filter:none}::selection{background:#2563eb;color:#fafaf9}em{font-style:normal;font-weight:500}a:focus-visible,button:focus-visible{outline:2px solid #2563EB;outline-offset:3px;border-radius:2px}body.tone-dark a:focus-visible,body.tone-dark button:focus-visible{outline-color:#5b8def}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1!important;transform:none!important;filter:none!important}.term-cursor{animation:none!important}}.hero-name .hero-line{display:block;clip-path:inset(0 100% 0 0);animation:hero-write .8s cubic-bezier(.76,0,.24,1) both}.hero-name .hero-line:nth-child(1){animation-delay:.35s}.hero-name .hero-line:nth-child(2){animation-delay:1s}@keyframes hero-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}.hero-name .hero-name-caret{display:inline-block;width:.05em;height:.74em;margin-left:.08em;vertical-align:baseline;border-radius:1px;animation:mwblink 1s steps(1) infinite}@media(prefers-reduced-motion:reduce){.hero-name .hero-line{animation:none;clip-path:none}}.hero-portrait{animation:hero-portrait-in 1.1s cubic-bezier(.76,0,.24,1) both}@keyframes hero-portrait-in{0%{clip-path:inset(0 100% 0 0);opacity:.25}to{clip-path:inset(0 0 0 0);opacity:1}}@media(prefers-reduced-motion:reduce){.hero-portrait{animation:none;clip-path:none}}a,button,[role=button]{cursor:none}@media(hover:none){body,a,button{cursor:auto}.custom-cursor{display:none!important}}html{scroll-behavior:smooth}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}.app-rail{-ms-overflow-style:none;scrollbar-width:none;scroll-padding-left:72px}.app-rail::-webkit-scrollbar{display:none}@media(max-width:768px){.app-rail{scroll-padding-left:24px}}@keyframes termin{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.term-line{animation:termin .32s cubic-bezier(.2,.7,.2,1) both}@keyframes mwblink{0%,49%{opacity:1}50%,to{opacity:0}}.term-cursor{display:inline-block;width:8px;height:1em;background:#5be49b;margin-left:3px;vertical-align:-2px;animation:mwblink 1s steps(1) infinite}.hero-caret{animation:mwblink 1s steps(1) infinite;margin-left:2px}@keyframes hero-scan-move{0%{top:-2%}to{top:102%}}.hero-scan{top:0;animation:hero-scan-move 3.2s linear infinite}@keyframes hero-dot-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.hero-dot{animation:hero-dot-pulse 1.8s ease-in-out infinite}@keyframes hero-drift-move{0%{transform:translate(0)}25%{transform:translate(5px,-6px)}50%{transform:translate(-4px,-2px)}75%{transform:translate(4px,5px)}to{transform:translate(0)}}.hero-drift{animation-name:hero-drift-move;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-duration:9s;will-change:transform}@keyframes hero-nudge-move{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-5px)}}.hero-nudge{animation:hero-nudge-move 2.4s ease-in-out infinite}@keyframes hero-rise{0%{opacity:0;transform:translate(-50%,16px)}6%{opacity:var(--peak, .9)}13%{opacity:var(--peak, .9);transform:translate(-50%,var(--rise, -64px))}18%{opacity:0;transform:translate(-50%,calc(var(--rise, -64px) - 16px))}to{opacity:0;transform:translate(-50%,calc(var(--rise, -64px) - 16px))}}.hero-rise{animation:hero-rise 17s cubic-bezier(.4,0,.4,1) var(--delay, 0s) infinite both;will-change:transform,opacity}@keyframes hero-wave{0%{opacity:0;transform:skew(-24deg) translate(-6vw)}16%{opacity:1}78%{opacity:1}to{opacity:0;transform:skew(-24deg) translate(80vw)}}.hero-wave{animation:hero-wave .9s cubic-bezier(.76,0,.24,1) .08s both}@media(prefers-reduced-motion:reduce){.hero-scan,.hero-dot,.hero-caret,.hero-drift,.hero-nudge,.hero-rise,.hero-wave{animation:none}}
