:root{--bg:#050507;--ink:#f2f2f5;--ink2:#9a9aa8;--acid:#c6ff3d;--mg:#ff2e88;--cy:#2ee6ff;--line:rgba(255,255,255,.1);--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 17px/1.6 var(--sans);overflow-x:hidden}
::selection{background:var(--acid);color:#000}
a{color:inherit}
:focus-visible{outline:2px solid var(--acid);outline-offset:3px}
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:-2;display:block}
.veil{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 120%,transparent 0,rgba(5,5,7,.35) 60%),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px);transition:background-color .6s}
body.scrolled .veil{background-color:rgba(5,5,7,.78)}
.noise{position:fixed;inset:-50%;z-index:-1;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.wrap{width:min(1180px,100% - 32px);margin:0 auto}

/* Header */
.top{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:10px 16px;mix-blend-mode:difference}
.logo{display:inline-flex;align-items:center;gap:10px;min-height:44px;text-decoration:none;font:700 14px/1 var(--mono);letter-spacing:.12em}
.logo i{width:12px;height:12px;background:var(--acid);display:inline-block;transform:rotate(45deg)}
.kbtn{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 14px;border:1px solid rgba(255,255,255,.5);background:transparent;color:#fff;font:600 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border-radius:999px}
.kbtn kbd{font:inherit;opacity:.6;border:1px solid rgba(255,255,255,.4);border-radius:4px;padding:2px 5px}
@media(max-width:600px){.kbtn kbd{display:none}}

/* Hero */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding:110px 0 40px;position:relative}
.tagline{font:500 12px/1.4 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--acid);margin:0 0 18px;display:flex;flex-wrap:wrap;gap:6px 14px}
.tagline span::before{content:"◆ ";color:var(--mg)}
h1.name{margin:0;font:900 clamp(56px,13.2vw,200px)/.82 var(--sans);letter-spacing:-.055em;text-transform:uppercase}
h1.name .l{display:block;white-space:nowrap}
h1.name .l2{-webkit-text-stroke:2px var(--acid);color:transparent;padding-left:.12em;font-size:.62em;letter-spacing:.02em;line-height:1.02}
h1.name .l3{letter-spacing:-.06em}
h1.name .ch{display:inline-block}
.hero-foot{display:grid;grid-template-columns:1fr;gap:26px;margin-top:34px;align-items:end}
@media(min-width:860px){.hero-foot{grid-template-columns:1.3fr 1fr}}
.intro{font-size:clamp(18px,2.4vw,24px);line-height:1.45;max-width:640px;margin:0;color:#d8d8e0}
.intro b{color:var(--acid);font-weight:600}
.stats{display:flex;gap:22px;flex-wrap:wrap;justify-content:flex-start;margin:0;padding:0;list-style:none}
@media(min-width:860px){.stats{justify-content:flex-end}}
.stats li{border-left:1px solid var(--line);padding-left:14px}
.stats b{display:block;font:800 clamp(30px,4vw,46px)/1 var(--sans);letter-spacing:-.03em}
.stats span{font:500 11px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink2)}
.scrollhint{position:absolute;right:0;top:120px;writing-mode:vertical-rl;font:500 11px var(--mono);letter-spacing:.3em;color:var(--ink2);text-transform:uppercase}
@media(max-width:860px){.scrollhint{display:none}}

/* Marquee */
.marquee{border-block:1px solid var(--line);overflow:hidden;padding:16px 0;background:rgba(5,5,7,.6);backdrop-filter:blur(6px)}
.marquee .track{display:flex;gap:42px;width:max-content;font:800 clamp(22px,3.4vw,40px)/1 var(--sans);text-transform:uppercase;letter-spacing:-.02em;white-space:nowrap}
.marquee .track span:nth-child(even){-webkit-text-stroke:1px var(--ink2);color:transparent}
.marquee .track span:nth-child(3n){color:var(--acid);-webkit-text-stroke:0}

/* Sections */
section{padding:110px 0 40px;position:relative}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:38px;border-bottom:1px solid var(--line);padding-bottom:16px;flex-wrap:wrap}
.sec-head h2{margin:0;font:900 clamp(40px,8vw,104px)/.9 var(--sans);letter-spacing:-.05em;text-transform:uppercase}
.sec-head h2 em{font-style:normal;color:var(--acid)}
.sec-head p{margin:0;font:500 12px/1.5 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);max-width:320px}

/* Projects: horizontal deck */
.deck{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;padding:10px max(16px,calc(50vw - 590px)) 34px;scroll-padding-inline:max(16px,calc(50vw - 590px));margin:0 calc(50% - 50vw);scrollbar-width:thin;scrollbar-color:var(--acid) transparent;perspective:1200px}
.deck::-webkit-scrollbar{height:6px}.deck::-webkit-scrollbar-thumb{background:var(--acid)}
.proj{flex:0 0 min(86vw,420px);scroll-snap-align:start;position:relative;min-height:440px;padding:26px;border:1px solid var(--line);background:linear-gradient(155deg,rgba(255,255,255,.07),rgba(255,255,255,.015));backdrop-filter:blur(14px);display:flex;flex-direction:column;transform-style:preserve-3d;transition:transform .25s ease,border-color .25s;overflow:hidden}
.proj::before{content:"";position:absolute;inset:0;background:radial-gradient(500px circle at var(--mx,50%) var(--my,0%),rgba(198,255,61,.16),transparent 40%);opacity:0;transition:opacity .3s;pointer-events:none}
.proj:hover::before{opacity:1}
.proj:hover{border-color:rgba(198,255,61,.5)}
.proj .num{font:900 120px/.8 var(--sans);letter-spacing:-.06em;-webkit-text-stroke:1px rgba(255,255,255,.25);color:transparent;margin-bottom:auto;transform:translateZ(40px)}
.proj .st{font:600 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px;margin:22px 0 10px}
.proj .st::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--acid);box-shadow:0 0 12px var(--acid)}
.proj .st.arch::before{background:var(--ink2);box-shadow:none}
.proj .st.hob::before{background:var(--mg);box-shadow:0 0 12px var(--mg)}
.proj h3{margin:0 0 10px;font:800 32px/1 var(--sans);letter-spacing:-.03em;transform:translateZ(30px)}
.proj p{margin:0 0 18px;color:#c4c4cf;font-size:16px}
.tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.tags li{font:500 11px var(--mono);letter-spacing:.08em;padding:5px 9px;border:1px solid var(--line);border-radius:999px;color:var(--ink2)}
.deck-hint{font:500 11px var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--ink2);display:flex;align-items:center;gap:10px}
.deck-hint::after{content:"";flex:0 0 60px;height:1px;background:var(--ink2)}

/* Chapters / career */
.chapter{display:grid;grid-template-columns:1fr;gap:20px 40px;padding:34px 0;border-top:1px solid var(--line)}
@media(min-width:900px){.chapter{grid-template-columns:340px 1fr}}
.ch-side{position:relative}
@media(min-width:900px){.ch-side{position:sticky;top:90px;align-self:start}}
.ch-no{font:900 clamp(90px,14vw,170px)/.8 var(--sans);letter-spacing:-.07em;-webkit-text-stroke:1.5px var(--ch,var(--acid));color:transparent;display:block}
.ch-title{font:900 clamp(34px,5vw,56px)/1 var(--sans);letter-spacing:-.04em;text-transform:uppercase;margin:6px 0 4px;color:var(--ch,var(--acid))}
.ch-span{font:500 12px var(--mono);letter-spacing:.16em;color:var(--ink2);text-transform:uppercase}
.ch-text{color:#c4c4cf;margin:12px 0 0;max-width:320px}
.stations{list-style:none;margin:0;padding:0}
.stations li{display:grid;grid-template-columns:1fr;gap:4px 24px;padding:20px 0;border-bottom:1px dashed var(--line)}
@media(min-width:640px){.stations li{grid-template-columns:150px 1fr}}
.stations .d{font:500 12px/1.8 var(--mono);letter-spacing:.06em;color:var(--ch,var(--acid))}
.stations h4{margin:0;font:700 21px/1.25 var(--sans);letter-spacing:-.01em}
.stations .o{font:500 13px var(--mono);color:var(--ink2);margin:2px 0 6px}
.stations p{margin:0;color:#c4c4cf;font-size:16px}
.c1{--ch:var(--cy)}.c2{--ch:var(--mg)}.c3{--ch:var(--acid)}

/* Skills */
.skills{display:flex;flex-wrap:wrap;gap:10px}
.skills li{list-style:none;font:600 clamp(15px,2vw,20px)/1 var(--sans);padding:12px 16px;border:1px solid var(--line);background:rgba(255,255,255,.03);transition:background .2s,color .2s}
.skills li:hover{background:var(--acid);color:#000}
.skills{padding:0;margin:0}

/* Contact */
.contact{text-align:left;padding-bottom:80px}
.big-cta{display:block;padding:8px 0;text-decoration:none;font:900 clamp(44px,11vw,150px)/.9 var(--sans);letter-spacing:-.05em;text-transform:uppercase;margin:10px 0 30px}
.big-cta span{display:inline-block;transition:transform .3s,color .3s}
.big-cta:hover span{color:var(--acid);transform:translateX(12px)}
.btns{display:flex;flex-wrap:wrap;gap:12px}
.btn{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 24px;border-radius:999px;border:1px solid var(--ink);text-decoration:none;font:700 14px var(--mono);letter-spacing:.08em;text-transform:uppercase;transition:background .2s,color .2s}
.btn:hover{background:var(--ink);color:#000}
.btn.prim{background:var(--acid);border-color:var(--acid);color:#000}
.btn.prim:hover{background:#fff;border-color:#fff}

footer{border-top:1px solid var(--line);padding:22px 0 34px;font:500 12px var(--mono);letter-spacing:.06em;color:var(--ink2)}
footer .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 18px}
footer a{display:inline-flex;align-items:center;min-height:44px}

.todo{background:rgba(198,255,61,.12);outline:1px dashed var(--acid);padding:0 4px;color:var(--acid)}

/* Reveal */
.rv{opacity:0;transform:translateY(40px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}

/* Cursor */
.cursor{position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid var(--acid);border-radius:50%;pointer-events:none;z-index:50;transition:width .2s,height .2s,margin .2s,background .2s;mix-blend-mode:difference;display:none}
.cursor.big{width:70px;height:70px;margin:-35px 0 0 -35px;background:var(--acid)}
@media(hover:hover) and (pointer:fine){.cursor{display:block}}

/* Command palette */
dialog.palette{width:min(560px,100% - 24px);padding:0;border:1px solid rgba(255,255,255,.18);background:rgba(14,14,18,.92);backdrop-filter:blur(18px);color:var(--ink);border-radius:14px;margin-top:12vh}
dialog.palette::backdrop{background:rgba(0,0,0,.6);backdrop-filter:blur(4px)}
.palette input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:500 18px var(--sans);padding:18px 18px;outline:none}
.palette ul{list-style:none;margin:0;padding:8px}
.palette li a{display:flex;justify-content:space-between;align-items:center;min-height:48px;padding:0 12px;border-radius:8px;text-decoration:none;font-size:16px}
.palette li a span{font:500 11px var(--mono);letter-spacing:.1em;color:var(--ink2);text-transform:uppercase}
.palette li a[aria-selected="true"],.palette li a:hover{background:var(--acid);color:#000}
.palette li a[aria-selected="true"] span,.palette li a:hover span{color:#000}
.palette .foot{border-top:1px solid var(--line);padding:10px 16px;font:500 11px var(--mono);color:var(--ink2);letter-spacing:.08em}

/* Legal */
main.legal{width:min(760px,100% - 32px);margin:0 auto;padding:110px 0 80px}
main.legal h1{font:900 clamp(40px,8vw,72px)/.95 var(--sans);letter-spacing:-.04em;text-transform:uppercase;margin:0 0 20px}
main.legal h3{color:var(--acid);margin:28px 0 6px}
main.legal p{color:#c4c4cf}
main.legal a{color:var(--acid)}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.rv{opacity:1;transform:none;transition:none}.marquee .track{transform:none!important}}
@media(max-width:600px){.proj{min-height:360px}.proj .num{font-size:90px}}

.hbtns{display:flex;gap:8px}
.kbtn.theme{gap:8px}
.kbtn .dot{width:12px;height:12px;border-radius:50%;background:conic-gradient(var(--mg),var(--cy),var(--acid),var(--mg))}
@media(max-width:600px){.kbtn.theme #themeName{display:none}.kbtn.theme{padding:0 15px}}
:root{transition:--acid .4s}
html[data-theme="blade"]{--acid:#ff8a1f;--mg:#ff3b1f;--cy:#00d1c1}
html[data-theme="uv"]{--acid:#b9a4ff;--mg:#7b2cff;--cy:#3d7bff}
html[data-theme="ice"]{--acid:#8ff3ff;--mg:#c9d6ff;--cy:#4fb6ff}
html[data-theme="gold"]{--acid:#ffd23f;--mg:#ff1e3c;--cy:#ff8a00}
