*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Public Sans,system-ui,sans-serif;background:#08080a;color:#eef2ef;overflow-x:hidden;-webkit-font-smoothing:antialiased}::selection{background:#52b78859}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-track{background:#0c0f12}::-webkit-scrollbar-thumb{background:linear-gradient(#52b788,#ef4444);border-radius:4px}nav a{position:relative}nav a:after{content:"";position:absolute;left:0;bottom:-4px;width:100%;height:2px;border-radius:1px;background:linear-gradient(90deg,#52b788,#48cae4);transform:scaleX(0);transform-origin:left;transition:transform .28s cubic-bezier(.16,1,.3,1)}nav a:hover{color:#eef2ef!important}nav a:hover:after{transform:scaleX(1)}.skill-card:hover{transform:translateY(-4px)!important;box-shadow:0 14px 34px #00000059}.rv-on [data-rv].rv-in>span:first-child{animation:cpPop .7s ease-out}section a[data-magnetic]:hover{box-shadow:0 12px 40px #2d6a4f99!important}.fade-up{opacity:0;transform:translateY(30px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}.fade-up.visible{opacity:1;transform:none}.rv-on [data-rv]{opacity:0;will-change:opacity,transform;transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1),clip-path .95s cubic-bezier(.16,1,.3,1)}.rv-on [data-rv=up]{transform:translateY(36px)}.rv-on [data-rv=left]{transform:translate(-46px)}.rv-on [data-rv=right]{transform:translate(46px)}.rv-on [data-rv=scale]{transform:scale(.9)}.rv-on [data-rv=clip]{clip-path:inset(0 100% -25% 0)}.rv-on [data-rv=rule]{transform:scaleX(0);transform-origin:left}.rv-on [data-rv].rv-in{opacity:1;transform:none;clip-path:inset(0 0 -25% 0)}@keyframes letterUp{0%{opacity:0;transform:translateY(.55em) rotate(6deg)}to{opacity:1;transform:none}}.hero-letter{display:inline-block;opacity:0;will-change:transform,opacity;animation:letterUp .62s cubic-bezier(.16,1,.3,1) both;background:linear-gradient(135deg,#eef2ef 30%,#74c69d 70%,#48cae4);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}[data-proj-inner],[data-magnetic]{will-change:transform}.trail-dotted{opacity:0;animation:trailDotIn .7s ease-out 1.15s forwards}@keyframes trailDotIn{to{opacity:.45}}.trail-draw{opacity:.92;animation:trailDraw 1.4s cubic-bezier(.16,1,.3,1) forwards,trailDrawFade .55s ease-out 1.3s forwards}@keyframes trailDraw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes trailDrawFade{to{opacity:0}}@keyframes introDrop{0%{transform:translateY(-18px);opacity:0}35%{opacity:1}66%{transform:translateY(4px)}to{transform:translateY(0);opacity:1}}.runWrap.intro .bob{animation:introDrop 1.05s ease-out}@keyframes runBob{0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-3px) rotate(-2.5deg)}50%{transform:translateY(.5px) rotate(0)}75%{transform:translateY(-3px) rotate(2.5deg)}to{transform:translateY(0) rotate(0)}}.runWrap.running .bob{animation:runBob .34s ease-in-out infinite}.runWrap .bob{transform-origin:50% 70%}@keyframes footFade{0%{opacity:.55;transform:scale(.6)}20%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.15)}}.footprint{position:absolute;width:7px;height:11px;border-radius:50%;pointer-events:none;animation:footFade 1.4s ease-out forwards}@keyframes floatP{0%{transform:translateY(0) translate(0)}50%{transform:translateY(-26px) translate(12px)}to{transform:translateY(0) translate(0)}}@keyframes drift{0%{transform:translate(-4%)}to{transform:translate(4%)}}@keyframes pulseGlow{0%,to{opacity:.5}50%{opacity:.95}}@keyframes scrollDot{0%{transform:translateY(0);opacity:0}30%{opacity:1}80%{transform:translateY(16px);opacity:0}to{opacity:0}}.cp-ring{position:absolute;width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.22);background:#08080ab3;transform:translate(-50%,-50%);transition:background .35s,border-color .35s,box-shadow .35s,transform .35s;pointer-events:none;z-index:1}.cp-ring.reached{transform:translate(-50%,-50%) scale(1.15)}.cp-label{position:absolute;transform:translate(-100%,-50%);white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:#586860;transition:color .35s,opacity .35s;pointer-events:none;padding-right:14px}@keyframes cpPop{0%{box-shadow:0 0 #ffffff59}to{box-shadow:0 0 0 13px #fff0}}@keyframes archBob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.archRunner{animation:archBob 1s ease-in-out infinite;transform-origin:50% 80%}.confetti{position:absolute;border-radius:1px;pointer-events:none;z-index:6;animation-name:confettiFall;animation-timing-function:cubic-bezier(.2,.6,.4,1);animation-fill-mode:forwards}@keyframes confettiFall{0%{transform:translate(-50%) rotate(0);opacity:1}12%{opacity:1}to{transform:translate(calc(-50% + var(--dx)),var(--dy)) rotate(var(--rot));opacity:0}}@keyframes victoryJump{0%{transform:translateY(0)}28%{transform:translateY(-24px)}55%{transform:translateY(0)}78%{transform:translateY(-11px)}to{transform:translateY(0)}}@keyframes archPulse{0%,to{filter:none}50%{filter:drop-shadow(0 0 28px rgba(239,68,68,.65)) brightness(1.12)}}@keyframes bannerFlash{0%,to{box-shadow:0 6px 20px #00000080}50%{box-shadow:0 0 28px #ef4444e6}}.finish-block.celebrate .archRunner{animation:victoryJump .62s ease-out 2}.finish-block.celebrate .arch-svg{animation:archPulse .7s ease-out}.finish-block.celebrate .finish-banner{animation:bannerFlash .62s ease-out}.cp-finish{position:absolute;left:-7px;right:-7px;height:11px;transform:translateY(-50%);border-radius:2px;pointer-events:none;z-index:2;opacity:.9;transition:box-shadow .4s,transform .4s,opacity .4s;background-color:#f4f4f4;background-image:linear-gradient(45deg,#101015 25%,transparent 25%,transparent 75%,#101015 75%),linear-gradient(45deg,#101015 25%,#f4f4f4 25%,#f4f4f4 75%,#101015 75%);background-size:11px 11px;background-position:0 0,5.5px 5.5px;box-shadow:0 0 10px #00000080}@media(max-width:760px){section[data-screen-label]{padding-left:1.1rem!important;padding-right:58px!important}.grid-2{grid-template-columns:1fr!important}.runner-trail{width:52px!important;right:0!important}.cp-label{display:none!important}.cp-ring{width:11px;height:11px}}@media(max-width:720px){nav ul{display:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.trail-draw{opacity:0!important}.trail-dotted{opacity:.45!important}}.proj-section.reduce-stack{height:auto!important}.proj-section.reduce-stack .proj-sticky{position:relative;height:auto;overflow:visible;padding:5rem clamp(1.2rem,5vw,3rem)}.proj-section.reduce-stack .proj-track{position:relative;transform:none!important;flex-direction:column;height:auto;align-items:stretch;gap:1.4rem;padding:0}.proj-section.reduce-stack .proj-card,.proj-section.reduce-stack .proj-panel-intro,.proj-section.reduce-stack .proj-panel-outro{width:auto!important;max-width:680px;opacity:1!important;transform:none!important}.proj-section.reduce-stack .proj-mountains,.proj-section.reduce-stack .proj-back,.proj-section.reduce-stack .proj-runner,.proj-section.reduce-stack .proj-topbar{display:none!important}@media(max-width:760px){.proj-section[data-screen-label]{padding:0!important}.proj-track{gap:1.1rem!important;padding:0 6vw!important}}.has-cursor,.has-cursor *{cursor:none!important}.cursor-dot{position:fixed;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:#52b788;pointer-events:none;z-index:500;opacity:0}.cursor-ring{position:fixed;left:-18px;top:-18px;width:36px;height:36px;border-radius:50%;border:1.5px solid #52b788;pointer-events:none;z-index:500;opacity:0;transition:width .25s,height .25s,left .25s,top .25s,opacity .25s}.has-cursor .cursor-dot{opacity:1}.has-cursor .cursor-ring{opacity:.65}.cur-hover .cursor-ring{width:54px;height:54px;left:-27px;top:-27px;opacity:1}.tl-fill{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:top;transform:scaleY(0);transition:transform .2s linear}.fog{position:absolute;left:-20%;width:140%;height:90px;pointer-events:none;border-radius:50%;filter:blur(26px);background:linear-gradient(90deg,transparent,rgba(212,230,241,.1),rgba(163,216,244,.05),transparent)}.fog-1{bottom:5vh;animation:fogDrift 26s ease-in-out infinite alternate}.fog-2{bottom:15vh;height:70px;opacity:.7;animation:fogDrift 34s ease-in-out -12s infinite alternate-reverse}@keyframes fogDrift{0%{transform:translate(-6%)}to{transform:translate(6%)}}.shoot{position:absolute;width:110px;height:2px;border-radius:2px;background:linear-gradient(90deg,rgba(238,242,239,.9),transparent);transform:rotate(16deg);opacity:0;pointer-events:none;animation:shoot 11s linear infinite}@keyframes shoot{0%,87%{opacity:0;transform:translate(0) rotate(16deg)}90%{opacity:.9}to{opacity:0;transform:translate(-38vw,11vw) rotate(16deg)}}.aurora{position:absolute;top:-6%;left:8%;width:84%;height:46%;pointer-events:none;filter:blur(42px);opacity:.5;background:linear-gradient(100deg,transparent 8%,rgba(82,183,136,.2) 30%,rgba(72,202,228,.16) 52%,rgba(82,183,136,.12) 72%,transparent 92%);animation:aurora 13s ease-in-out infinite alternate}@keyframes aurora{0%{transform:skew(-6deg) translate(-3%) scaleY(1)}50%{opacity:.72}to{transform:skew(5deg) translate(3%) scaleY(1.18)}}.cp-ripple{position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid #52b788;transform:translate(-50%,-50%);pointer-events:none;animation:cpRipple .65s ease-out forwards}@keyframes cpRipple{to{width:58px;height:58px;opacity:0}}.bib-card{margin-top:1.5rem;position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:.15rem;padding:1rem 2.2rem .9rem;background:#f4f4f4;border:2px solid #13131a;border-radius:10px;box-shadow:0 10px 30px #00000080;transform-origin:top center;animation:bibFlip .9s cubic-bezier(.16,1,.3,1) both}@keyframes bibFlip{0%{transform:perspective(700px) rotateX(-88deg);opacity:0}55%{transform:perspective(700px) rotateX(14deg);opacity:1}to{transform:perspective(700px) rotateX(0);opacity:1}}.bib-pins{position:absolute;top:7px;left:0;right:0;display:flex;justify-content:space-between;padding:0 12px}.bib-pins span{width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#cfd6d2,#6b736e);box-shadow:inset 0 0 2px #0009}.bib-top{font-family:JetBrains Mono,monospace;font-size:.58rem;letter-spacing:.28em;text-transform:uppercase;color:#6b736e;margin-top:.3rem}.bib-num{font-family:Space Grotesk,sans-serif;font-size:2.6rem;font-weight:700;line-height:1;color:#13131a}.bib-text{font-family:Space Grotesk,sans-serif;font-size:.85rem;font-weight:600;color:#2b3330;max-width:250px}.skill-bar{position:relative;height:5px;background:#ffffff12;border-radius:3px}.skill-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:3px;background:repeating-linear-gradient(90deg,transparent,transparent calc(10% - 1px),rgba(8,8,10,.55) calc(10% - 1px),rgba(8,8,10,.55) 10%);pointer-events:none}.skill-goal{position:absolute;top:-3px;width:2px;height:11px;border-radius:1px;background:#ffd166;box-shadow:0 0 6px #ffd166cc;z-index:1}[data-proj-card]{position:relative;overflow:hidden}[data-proj-inner]{position:relative}.proj-watermark{position:absolute;right:-10px;bottom:-22px;font-size:7.5rem;line-height:1;opacity:.055;pointer-events:none;filter:grayscale(1);transform:translateZ(30px)}.odo{display:inline-flex;align-items:baseline}.odo-col{display:inline-block;height:1em;overflow:hidden;line-height:1}.odo-strip{display:inline-flex;flex-direction:column;transform:translateY(0);transition:transform 1.15s cubic-bezier(.16,1,.3,1)}.odo-strip span,.odo-sfx{height:1em;line-height:1;background:linear-gradient(135deg,#f87171,#e08a3c);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.odo-sfx{height:auto}.fp-click{position:fixed;z-index:499}section,footer{transition:opacity .18s ease}.lang-fade section,.lang-fade footer{opacity:0}.intro-veil{position:fixed;top:0;right:0;bottom:0;left:0;z-index:600;background:#08080a;display:flex;align-items:center;justify-content:center;animation:introVeil 1.4s ease forwards}@keyframes introVeil{0%,72%{opacity:1}to{opacity:0}}.intro-inner{display:flex;align-items:center}.intro-run{width:54px;height:54px;color:#52b788;animation:runBob .34s ease-in-out infinite}.intro-name{font-family:Space Grotesk,sans-serif;font-weight:700;font-size:1.7rem;letter-spacing:.06em;margin-left:.8rem;overflow:hidden;white-space:nowrap;background:linear-gradient(100deg,#74c69d,#eef2ef 60%,#f87171);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:introName .8s cubic-bezier(.16,1,.3,1) .15s both}@keyframes introName{0%{max-width:0;opacity:0}to{max-width:320px;opacity:1}}.wfall{stroke-dasharray:7 11;animation:waterFall 1s linear infinite}@keyframes waterFall{to{stroke-dashoffset:-18}}.lake-glint{animation:glint 6s ease-in-out infinite}@keyframes glint{0%,to{opacity:.35}50%{opacity:.9}}.wfoam{animation:foamPulse 2.2s ease-in-out infinite}@keyframes foamPulse{0%,to{opacity:.5}50%{opacity:.95}}.dust{position:absolute;width:5px;height:5px;border-radius:50%;opacity:.5;pointer-events:none;filter:blur(1px);animation:dustFade .85s ease-out forwards;z-index:2}@keyframes dustFade{to{transform:translate(-8px,-11px) scale(1.9);opacity:0}}.km-hud{position:fixed;right:14px;bottom:12px;z-index:130;font-family:JetBrains Mono,monospace;font-size:.68rem;letter-spacing:.08em;color:#52b788;border:1px solid #52b788;border-radius:999px;padding:.32rem .8rem;background:#08080a99;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;transition:color .3s,border-color .3s}@media(max-width:760px){.km-hud{display:none}}
