:root{--void:#060913;--deep:#0d1426;--moon:#e8ecf4;--mist:#9aa4bd;--ion:#9db8ff;--ember:#ffc98a;--edge:rgba(255,255,255,.2);color-scheme:dark}*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scroll-padding-top:90px}body{background:var(--void);color:var(--moon);font:400 1.05rem/1.65 Hanken Grotesk,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden;padding-top:env(safe-area-inset-top,0)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;background:radial-gradient(70% 55% at 85% 0%,#16254f,transparent 70%),radial-gradient(60% 45% at 0% 100%,#0f1b3b,transparent 70%),var(--void)}#sky{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1}a{color:inherit}:focus-visible{outline:2px solid var(--ember);outline-offset:3px;border-radius:6px}.wrap{max-width:1180px;margin:0 auto;padding:0 clamp(20px,5vw,56px)}h1,h2,h3{font-family:Bricolage Grotesque,sans-serif;letter-spacing:-.025em;line-height:1.08}.glass{position:relative;background:linear-gradient(135deg,#ffffff1a,#ffffff06);-webkit-backdrop-filter:blur(14px) saturate(170%);backdrop-filter:blur(14px) saturate(170%);border:1px solid rgba(255,255,255,.1);box-shadow:inset 1.5px 1.5px #fff6,inset -1px -1px #ffffff1a,inset 0 0 28px #ffffff0d,0 24px 60px #00000073;overflow:hidden}@supports (backdrop-filter:url(#lens)){.glass{-webkit-backdrop-filter:url(#lens) blur(6px) saturate(170%);backdrop-filter:url(#lens) blur(6px) saturate(170%)}}.glass:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(240px circle at var(--mx,30%) var(--my,0%),rgba(255,255,255,.22),transparent 62%);opacity:0;transition:opacity .25s}.glass:hover:before{opacity:1}.nav{position:fixed;z-index:10;top:calc(14px + env(safe-area-inset-top,0));left:50%;transform:translate(-50%);display:flex;padding:5px;border-radius:999px;max-width:94vw}.nav a{text-decoration:none;color:var(--mist);padding:8px 18px;border-radius:999px;font-size:.95rem;transition:color .2s,background .2s}.nav a:hover{color:var(--moon);background:#ffffff1a}.hero{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;padding:110px 0 150px;overflow:hidden}.hero .wrap{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center}.kicker{letter-spacing:.38em;text-transform:uppercase;font-size:.85rem;color:var(--mist);animation:rise 1s both cubic-bezier(.2,.8,.2,1)}h1{font-size:clamp(3rem,10.5vw,8.4rem);font-weight:700;line-height:.95;margin:14px 0 28px;max-width:9em;letter-spacing:-.04em;background:linear-gradient(180deg,#fff 10%,#8e98b0 120%);-webkit-background-clip:text;background-clip:text;color:transparent;animation:rise 1s .1s both cubic-bezier(.2,.8,.2,1)}.plate{border-radius:999px;padding:14px clamp(26px,5vw,56px);font:800 clamp(1.3rem,3.6vw,2.6rem)/1 "Bricolage Grotesque",sans-serif;letter-spacing:.22em;box-shadow:inset 1.5px 1.5px #fff6,inset -1px -1px #ffffff1a,0 0 90px #9db8ff47,0 24px 60px #00000073;animation:rise 1s .25s both cubic-bezier(.2,.8,.2,1)}.lede{color:var(--mist);max-width:34rem;margin:30px 0 34px;animation:rise 1s .4s both cubic-bezier(.2,.8,.2,1)}.lede span{color:var(--moon)}.row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;animation:rise 1s .55s both cubic-bezier(.2,.8,.2,1)}.btn{display:inline-block;padding:14px 28px;border-radius:999px;text-decoration:none;font-weight:500;color:#0a1020;background:#fff;transition:transform .2s,background .2s}.btn:hover{transform:translateY(-2px);background:#dfe8ff}.btn.ghost{color:var(--moon);background:transparent;border:1px solid var(--edge)}.btn.ghost:hover{background:#ffffff14}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}.scene{--s:min(78vw,680px);position:absolute;left:50%;top:50%;width:var(--s);height:var(--s);transform:translate(-50%,-52%);perspective:1400px;z-index:1;opacity:.9}.globe{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;animation:spin 60s linear infinite}.globe i{position:absolute;border:1px solid rgba(157,184,255,.2);border-radius:50%}.globe .m{top:0;right:0;bottom:0;left:0;transform:rotateY(calc(var(--i)*30deg))}.globe .l{left:50%;top:50%;width:calc(var(--s)*var(--w));height:calc(var(--s)*var(--w));transform:translate(-50%,-50%) rotateX(90deg) translateZ(calc(var(--s)/2*var(--z)))}.globe .core{top:9%;right:9%;bottom:9%;left:9%;border:0;background:radial-gradient(circle at 35% 30%,#9db8ff29,#060913d9 65%);transform:translateZ(0)}.orbit{position:absolute;top:-6%;right:-6%;bottom:-6%;left:-6%;border:1px solid rgba(255,255,255,.28);border-radius:50%;transform:rotateX(72deg) rotate(-18deg);animation:orb 24s linear infinite}.orbit b{position:absolute;left:50%;top:-4px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--ember);box-shadow:0 0 16px 4px #ffc98ab3}@keyframes spin{to{transform:rotateY(360deg)}}@keyframes orb{to{transform:rotateX(72deg) rotate(342deg)}}.limb{position:absolute;left:50%;bottom:0;width:150vw;height:min(26vw,240px);transform:translate(-50%);border-radius:50%/100% 100% 0 0;background:linear-gradient(var(--deep),var(--void));box-shadow:0 -1px #9db8ffb3,0 -18px 90px #9db8ff47}section{padding:100px 0 20px}h2{font-size:clamp(1.8rem,3.4vw,2.6rem);font-weight:600;margin-bottom:22px}.about{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(32px,6vw,90px);align-items:start}.about p{color:var(--mist);max-width:36rem}.about p+p{margin-top:16px}dl div{display:grid;grid-template-columns:7.5rem 1fr;gap:16px;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.1)}dt{color:var(--mist)}.card{transform-style:preserve-3d;will-change:transform;transition:transform .3s cubic-bezier(.16,1,.3,1),border-color .35s,box-shadow .35s}.card:hover{border-color:#9db8ff8c;box-shadow:inset 1.5px 1.5px #fff6,inset -1px -1px #ffffff1a,inset 0 0 22px #9db8ff24,0 0 32px #9db8ff33,0 24px 60px #00000073}.card h3{margin-bottom:8px}.card p{color:var(--mist)}.card .status{color:var(--ember);font-size:.9rem;margin-bottom:10px}.project{padding:clamp(28px,4vw,48px);border-radius:34px}.project h3{font-size:clamp(1.8rem,3.4vw,2.6rem)}.project>p{max-width:46rem}.project .stack{margin-top:14px}.project .row{margin-top:26px;justify-content:flex-start;animation:none}.more{margin-top:26px;color:var(--mist)}.more a:hover,.contact li a:hover{color:var(--ember)}.contact{padding:clamp(28px,5vw,64px);border-radius:36px}.contact p{color:var(--mist)}.mail{display:inline-block;margin:22px 0 28px;font-family:Bricolage Grotesque,sans-serif;font-size:clamp(1.3rem,4.2vw,2.8rem);font-weight:600;letter-spacing:-.02em;text-decoration:none;border-bottom:2px solid var(--ion);word-break:break-all;transition:color .2s}.mail:hover{color:var(--ember)}.contact ul{display:flex;gap:22px;flex-wrap:wrap;list-style:none;padding:0}footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--mist);font-size:.9rem;padding-top:80px;padding-bottom:calc(36px + env(safe-area-inset-bottom,0))}@media (max-width:800px){.nav{overflow-x:auto}.nav a{padding:8px 11px;font-size:.88rem}.about{grid-template-columns:1fr}.limb{height:80px}}@media (prefers-reduced-motion:reduce){.globe,.orbit{animation:none!important}*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
