:root{--bg:#fff;--ink:#241510;--rose:#ead9c8;--maroon:#9a6a47;--deep:#4a2c1d;--muted:#7c6a5d;--card:#fdf8f2}
*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth}
body{font-family:Outfit,system-ui,sans-serif;color:var(--ink);background:#fff;overflow-x:hidden}
.mono{font-family:'JetBrains Mono',monospace}
.bar{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,var(--maroon),var(--deep));z-index:20}
.nav{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:16px 5vw;backdrop-filter:blur(10px);background:rgba(255,255,255,.45)}
.brand{font-weight:700;letter-spacing:.5px;color:var(--deep)}
.nav a{margin-left:22px;color:var(--ink);text-decoration:none;font-size:14px;transition:.2s}.nav a:hover{color:var(--deep)}
.pill{background:var(--deep);color:#fff!important;padding:8px 18px;border-radius:99px}
/* HERO */
.hero{position:relative;height:100vh;min-height:640px;overflow:hidden;--mx:50%;--my:55%;
 background:linear-gradient(90deg,var(--maroon) 0%,var(--rose) 20%,#fff 50%,var(--rose) 80%,var(--maroon) 100%)}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--mx) var(--my),#fff 0%,rgba(255,255,255,.85) 22%,transparent 55%);transition:background .15s}
.gridbg{position:absolute;inset:0;background-image:linear-gradient(rgba(62,36,24,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(62,36,24,.07) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse at 50% 60%,transparent 25%,#000 85%)}
.blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55;animation:drift 14s ease-in-out infinite}
.b1{width:340px;height:340px;background:#c4966e;left:-80px;top:10%}.b2{width:300px;height:300px;background:#6e4630;right:-60px;bottom:5%;animation-delay:-6s}
@keyframes drift{50%{transform:translate(40px,-30px) scale(1.15)}}
.stage{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(88vw,calc((100vh - 60px)*1.55));aspect-ratio:1100/729;z-index:2;
 mask-image:linear-gradient(#000 93%,transparent 100%);-webkit-mask-image:linear-gradient(#000 93%,transparent 100%)}
#cv{width:100%;height:100%;display:block;filter:drop-shadow(0 18px 28px rgba(62,36,24,.25))}
.shadow{position:absolute;left:12%;right:12%;bottom:1%;height:6%;background:radial-gradient(ellipse,rgba(62,36,24,.28),transparent 70%);z-index:-1}
#nofr{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);text-align:center}
.note{position:absolute;left:5vw;top:17%;z-index:4;max-width:34vw}
.note .mono{font-size:12px;color:var(--deep);letter-spacing:2px;margin-bottom:8px}
.note h1{font-size:clamp(26px,3.4vw,52px);font-weight:700;white-space:pre-line;line-height:1.1;background:linear-gradient(90deg,var(--ink),var(--deep));-webkit-background-clip:text;background-clip:text;color:transparent}
.role{margin-top:12px;font-size:clamp(14px,1.3vw,19px);color:var(--deep);min-height:26px}
.role u{display:inline-block;width:2px;height:1em;background:var(--deep);margin-left:3px;vertical-align:-2px;animation:bl 1s steps(1) infinite}@keyframes bl{50%{opacity:0}}
.hint{margin-top:16px;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px}
.cur{width:12px;height:12px;border-radius:50%;background:var(--deep);animation:p 1.4s infinite}
@keyframes p{0%,100%{box-shadow:0 0 0 0 rgba(62,36,24,.5)}70%{box-shadow:0 0 0 12px rgba(62,36,24,0)}}
.msg{position:absolute;right:5vw;top:30%;z-index:4;max-width:24vw;text-align:center}
.msg span{display:inline-block;background:#fff;color:var(--deep);padding:12px 20px;border-radius:20px 20px 4px 20px;box-shadow:0 10px 30px rgba(62,36,24,.18);font-size:clamp(14px,1.2vw,18px);font-weight:600;transition:opacity .25s,transform .25s}
.msg span:empty{opacity:0;transform:translateY(8px)}
#chips span{position:absolute;z-index:3;font-family:'JetBrains Mono',monospace;font-size:12px;padding:7px 14px;border-radius:99px;background:rgba(255,255,255,.75);border:1px solid rgba(62,36,24,.2);color:var(--deep);backdrop-filter:blur(6px);
 transform:translate(calc(var(--px,0)*var(--d)*1px),calc(var(--py,0)*var(--d)*1px));transition:transform .25s ease-out}
#chips b{display:block;font-weight:400;animation:fl 5s ease-in-out infinite;animation-delay:var(--t)}@keyframes fl{50%{transform:translateY(-12px)}}
.zones{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:5}
.zones i{font:600 11px 'JetBrains Mono',monospace;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.7);color:var(--muted);transition:.25s;font-style:normal}
.zones i.on{background:var(--deep);color:#fff;transform:scale(1.2)}
.cue{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);font-size:13px;color:var(--deep);text-decoration:none;z-index:5}
.cue span{display:inline-block;animation:bob 1.5s infinite}@keyframes bob{50%{transform:translateY(5px)}}
.marquee{overflow:hidden;background:var(--deep);color:#f2e4d6;padding:12px 0;font:13px 'JetBrains Mono',monospace;white-space:nowrap}
#mq{display:inline-block;animation:mq 28s linear infinite}@keyframes mq{to{transform:translateX(-50%)}}
#mq span{margin:0 26px}
/* SECTIONS */
main{max-width:1050px;margin:auto;padding:0 6vw}section{padding:90px 0}
h2{font-size:clamp(28px,3.4vw,40px);margin-bottom:26px;color:var(--deep)}h2 small{font:400 14px 'JetBrains Mono',monospace;color:var(--maroon);margin-right:12px}
h3{margin:30px 0 12px}.lead{font-size:19px;line-height:1.6}.muted{color:var(--muted);margin-top:10px}
.two{display:grid;grid-template-columns:1.2fr 1fr;gap:34px;align-items:start}
.term{background:#1f130d;border-radius:14px;padding:14px 18px 18px;box-shadow:0 20px 40px rgba(62,36,24,.25)}
.dots{display:flex;gap:6px;margin-bottom:10px}.dots i{width:10px;height:10px;border-radius:50%;background:#d9803f}.dots i:nth-child(2){background:#e8b86a}.dots i:nth-child(3){background:#7fd4a0}
.term pre{color:#f1e2d3;font:13px/1.8 'JetBrains Mono',monospace;white-space:pre-wrap}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}
.card{border:1px solid var(--rose);border-radius:16px;padding:20px;background:var(--card);transition:.3s}
.card:hover{transform:translateY(-6px);box-shadow:0 18px 36px rgba(62,36,24,.15);border-color:var(--maroon)}
.card a{color:var(--deep);font-weight:600}.card p{margin-top:8px;line-height:1.5}
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0}.chips li{background:var(--rose);padding:6px 14px;border-radius:99px;font-size:14px}
#links a{display:inline-block;margin:6px 12px 0 0;padding:10px 22px;border-radius:99px;border:1px solid var(--deep);color:var(--deep);text-decoration:none;transition:.25s}
#links a:hover{background:var(--deep);color:#fff}
footer{text-align:center;padding:34px;color:var(--muted);font-size:13px}
.rv{opacity:0;transform:translateY(34px);transition:opacity .8s,transform .8s}.rv.in{opacity:1;transform:none}
@media(max-width:760px){
 .stage{width:130vw;bottom:70px;max-width:none}
 .note{top:76px;left:0;right:0;max-width:none;text-align:center;padding:0 5vw}.hint{justify-content:center}
 .msg{right:0;left:0;top:auto;bottom:22%;max-width:none}.zones{display:none}#chips{display:none}
 .nav nav a:not(.pill){display:none}.two{grid-template-columns:1fr}}

/* ---- v3: performance + layout fixes ---- */
[hidden]{display:none!important}
.hero{user-select:none;-webkit-user-select:none}
.hero::before{display:none}
.glow{position:absolute;left:0;top:0;width:900px;height:900px;margin:-450px 0 0 -450px;border-radius:50%;background:radial-gradient(circle,#fff 0%,rgba(255,255,255,.8) 30%,transparent 62%);will-change:transform;pointer-events:none;z-index:1;transform:translate3d(50vw,55vh,0)}
.nav{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.88)}
.blob{filter:none;opacity:1;will-change:transform}
.b1{background:radial-gradient(circle,rgba(196,150,110,.75),transparent 70%)}
.b2{background:radial-gradient(circle,rgba(110,70,48,.7),transparent 70%)}
.stage{left:58%;transform:translateX(-35%);width:min(44vw,78vh);bottom:56px;mask-image:none;-webkit-mask-image:none}
#cv{filter:none}
#chips span{backdrop-filter:none;background:rgba(255,255,255,.92);transition:none}
.zones{left:auto;right:5vw;bottom:18px;transform:none}
.msg{top:22%}
@media(max-width:760px){.stage{left:50%;transform:translateX(-50%);width:90vw;bottom:70px}.zones{display:none}}

/* ---- v4: polished hero ---- */
.hero{height:100vh;height:100svh;min-height:680px;
 background:radial-gradient(900px 620px at 76% 62%,#fff 0%,#fbf5ec 42%,transparent 75%),linear-gradient(115deg,#d6b999 0%,#efe0cf 38%,#f8f1e8 62%,#d9bd9f 100%)}
.gridbg{background-size:56px 56px;mask-image:radial-gradient(ellipse at 70% 60%,transparent 18%,#000 90%);-webkit-mask-image:radial-gradient(ellipse at 70% 60%,transparent 18%,#000 90%)}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:90px;background:linear-gradient(transparent,rgba(255,255,255,.55));z-index:2;pointer-events:none}
.glow{width:760px;height:760px;margin:-380px 0 0 -380px;background:radial-gradient(circle,rgba(255,255,255,.75) 0%,rgba(255,255,255,.35) 35%,transparent 65%)}
.b1{left:-120px;top:14%}.b2{right:-100px;bottom:-4%}
.note{left:6vw;top:50%;transform:translateY(-54%);max-width:40vw}
.note h1{font-size:clamp(34px,4.6vw,76px);line-height:1.04;letter-spacing:-.02em}
.role{font-size:clamp(16px,1.6vw,24px);margin-top:18px}
.hint{margin-top:22px}
.stage{left:auto;right:6vw;bottom:0;transform:none;width:min(40vw,72vh);aspect-ratio:4/5;mask-image:none;-webkit-mask-image:none;z-index:3}
#fig{position:absolute;inset:0;transform-origin:50% 90%;will-change:transform;z-index:2}
#cv{width:100%;height:100%;display:block;filter:drop-shadow(0 22px 26px rgba(62,36,24,.28))}
.halo{position:absolute;left:4%;right:4%;bottom:12%;aspect-ratio:1;border-radius:50%;z-index:0;
 background:radial-gradient(circle at 35% 30%,#d3a984 0%,#8a5a3c 55%,#3a2216 100%);box-shadow:0 30px 80px rgba(62,36,24,.35),inset 0 0 0 10px rgba(255,255,255,.18);
 transform:translate3d(calc(var(--px,0)*-18px),calc(var(--py,0)*-10px),0)}
.halo::after{content:"";position:absolute;inset:-6%;border-radius:50%;border:1.5px dashed rgba(62,36,24,.35);animation:spin 40s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.shadow{left:8%;right:8%;bottom:0;height:7%;z-index:1;background:radial-gradient(ellipse,rgba(80,20,35,.35),transparent 70%)}
.msg{position:absolute;left:-2%;top:7%;right:auto;max-width:none;z-index:4}
.msg span{white-space:nowrap;font-size:clamp(14px,1.15vw,18px);transition:opacity .25s,transform .25s;opacity:0;transform:translateY(8px) scale(.96)}
.msg.on span{opacity:1;transform:none}.msg span:empty{opacity:0}
#chips span{box-shadow:0 8px 22px rgba(62,36,24,.14);transform:translate(calc(var(--px,0)*var(--d)*-1px),calc(var(--py,0)*var(--d)*-1px));transition:transform .2s ease-out}
.cue{left:6vw;transform:none;bottom:28px}
@media(max-width:760px){
 .hero{min-height:720px}.note{left:0;right:0;top:78px;transform:none;max-width:none;text-align:center;padding:0 6vw}
 .note h1{font-size:clamp(32px,9vw,44px)}.stage{right:auto;left:50%;transform:translateX(-50%);width:min(88vw,52vh);bottom:0}
 .msg{left:50%;top:-2%;transform:translateX(-50%)}.cue{display:none}}
@media(prefers-reduced-motion:reduce){.halo::after,.blob,#mq{animation:none}}
#chips span{z-index:6;display:flex;align-items:center;line-height:1;padding:9px 15px}
#chips b{line-height:1}

#char{width:100%;height:100%}#char svg{width:100%;height:100%;display:block;overflow:visible;filter:drop-shadow(0 18px 22px rgba(62,36,24,.28))}

/* ================= v8: aesthetic full page ================= */
:root{--cream:#f6ece0;--latte:#e6d0b6;--caramel:#c98a4b;--amber:#d9803f;--espresso:#1c100a;--mocha:#2f1b11}
body{background:var(--espresso)}
body::after{content:"";position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.07;mix-blend-mode:multiply;
 background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
main{max-width:none;padding:0}
main>section{position:relative;overflow:hidden;padding:120px max(6vw,calc((100vw - 1060px)/2)) 130px}
main>section>*{position:relative;z-index:2}
main>section+section{margin-top:-46px;border-radius:48px 48px 0 0;box-shadow:0 -24px 60px rgba(28,16,10,.25)}
main>section::before,main>section::after{content:"";position:absolute;border-radius:50%;pointer-events:none;z-index:0;filter:blur(70px);animation:orbit 16s ease-in-out infinite}
@keyframes orbit{50%{transform:translate(50px,-40px) scale(1.18)}}
h2{font-size:clamp(36px,5vw,64px);letter-spacing:-.025em;line-height:1.05;margin-bottom:40px;color:transparent;-webkit-background-clip:text;background-clip:text;
 background-image:linear-gradient(90deg,#4a2c1d,#c98a4b 45%,#4a2c1d);background-size:220% auto;animation:shine 9s linear infinite}
@keyframes shine{to{background-position:220% center}}
h2 small{display:block;font:500 13px 'JetBrains Mono',monospace;letter-spacing:4px;margin:0 0 10px;-webkit-text-fill-color:#b0773f;color:#b0773f}
h2 small::after{content:"";display:inline-block;width:56px;height:2px;margin-left:14px;vertical-align:middle;background:linear-gradient(90deg,#c98a4b,transparent)}

/* ABOUT: warm latte mesh + dots */
#about{background:radial-gradient(700px 460px at 8% 8%,#f0dcc2 0,transparent 62%),radial-gradient(760px 520px at 96% 92%,rgba(201,138,75,.38),transparent 62%),linear-gradient(180deg,#f8efe3,#ecd9c0)}
#about::before{width:380px;height:380px;right:-90px;top:-60px;background:radial-gradient(circle,rgba(217,128,63,.55),transparent 70%)}
#about::after{width:300px;height:300px;left:-80px;bottom:-60px;background:radial-gradient(circle,rgba(110,70,48,.45),transparent 70%);animation-delay:-7s}
#about .two{background-image:radial-gradient(rgba(74,44,29,.13) 1.2px,transparent 1.4px);background-size:26px 26px;background-position:-10px -10px}
#about .lead{font-size:clamp(18px,1.7vw,22px);color:#3a2418}
#about h3{color:#4a2c1d;font-size:15px;letter-spacing:3px;text-transform:uppercase;font-family:'JetBrains Mono',monospace}
#about .chips li{background:rgba(255,255,255,.55);border:1px solid rgba(74,44,29,.18);color:#4a2c1d;backdrop-filter:blur(6px);transition:.25s}
#about .chips li:hover{background:#4a2c1d;color:#fff;transform:translateY(-3px) rotate(-2deg)}
.term{background:linear-gradient(160deg,#2f1b11,#170c07);border:1px solid rgba(217,128,63,.35);box-shadow:0 30px 60px rgba(28,16,10,.45),0 0 0 6px rgba(255,255,255,.35);transform:rotate(1.4deg);transition:transform .4s}
.term:hover{transform:rotate(0) scale(1.02)}.term pre{color:#f4e3cf}

/* SKILLS: espresso glass */
#skills{color:#f2e4d3;background:radial-gradient(800px 520px at 82% 0%,rgba(217,128,63,.34),transparent 62%),radial-gradient(700px 520px at 0% 100%,rgba(77,240,208,.10),transparent 62%),linear-gradient(160deg,#33201a,#150a06)}
#skills::before{width:420px;height:420px;left:-120px;top:20%;background:radial-gradient(circle,rgba(217,128,63,.35),transparent 70%)}
#skills::after{inset:0;width:auto;height:auto;border-radius:0;filter:none;animation:none;opacity:.5;
 background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 50% 40%,#000 0,transparent 75%);mask-image:radial-gradient(ellipse at 50% 40%,#000 0,transparent 75%)}
#skills h2{background-image:linear-gradient(90deg,#f4e3cf,#d9803f 50%,#f4e3cf)}
#skills h2 small{-webkit-text-fill-color:#d9803f;color:#d9803f}
#skills .card{background:linear-gradient(160deg,rgba(255,255,255,.10),rgba(255,255,255,.03));border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);color:#f2e4d3}
#skills .card b{font-size:18px;color:#ffc98a}#skills .card p{color:#e3d0ba}

/* PROJECTS: cream + caramel glow */
#projects{background:radial-gradient(760px 520px at 100% 0%,rgba(217,128,63,.30),transparent 62%),radial-gradient(700px 480px at 0% 100%,rgba(176,119,63,.22),transparent 62%),linear-gradient(180deg,#f3e5d2,#f9f0e4)}
#projects::before{width:340px;height:340px;right:8%;bottom:6%;background:radial-gradient(circle,rgba(110,70,48,.35),transparent 70%)}
#projects::after{width:260px;height:260px;left:10%;top:8%;background:radial-gradient(circle,rgba(217,128,63,.45),transparent 70%);animation-delay:-5s}
#projects h3{font:600 15px 'JetBrains Mono',monospace;letter-spacing:3px;text-transform:uppercase;color:#6e4630;margin:46px 0 16px}
h3:has(+#repos:empty){display:none}
#projects .card{background:rgba(255,253,249,.78);backdrop-filter:blur(8px);border:1px solid rgba(74,44,29,.14);box-shadow:0 14px 34px rgba(74,44,29,.10)}
#projects .card b{font-size:19px;color:#3a2012}

/* CONTACT: glowing sunset-espresso */
#contact{text-align:center;color:#f2e4d3;padding-bottom:150px;background:radial-gradient(900px 560px at 50% 115%,rgba(217,128,63,.55),transparent 66%),radial-gradient(600px 400px at 90% 0%,rgba(110,70,48,.6),transparent 62%),linear-gradient(180deg,#2c1810,#120905)}
#contact::before{width:360px;height:360px;left:6%;top:12%;background:radial-gradient(circle,rgba(217,128,63,.4),transparent 70%)}
#contact::after{width:320px;height:320px;right:6%;bottom:8%;background:radial-gradient(circle,rgba(77,240,208,.16),transparent 70%);animation-delay:-8s}
#contact h2{background-image:linear-gradient(90deg,#f4e3cf,#d9803f 50%,#f4e3cf)}#contact h2 small{-webkit-text-fill-color:#d9803f;color:#d9803f}#contact h2 small::after{display:none}
#contact .lead{font-size:clamp(22px,2.6vw,34px);color:#f4e3cf;font-weight:300}
#links{margin-top:26px}
#links a{color:#fff;border:1px solid rgba(255,255,255,.28);background:linear-gradient(135deg,rgba(217,128,63,.35),rgba(255,255,255,.06));backdrop-filter:blur(8px);padding:13px 30px;box-shadow:0 10px 30px rgba(0,0,0,.25);margin:8px 8px 0}
#links a:hover{background:linear-gradient(135deg,#d9803f,#a9744f);transform:translateY(-4px);box-shadow:0 18px 40px rgba(217,128,63,.45),0 0 0 6px rgba(217,128,63,.18)}

/* CARDS: spotlight + staggered reveal */
.card{position:relative;overflow:hidden;--mx:50%;--my:50%;border-radius:20px;padding:24px;transition:transform .35s,box-shadow .35s,border-color .35s,opacity .7s}
.card::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(320px circle at var(--mx) var(--my),rgba(217,128,63,.30),transparent 62%)}
.card:hover::before{opacity:1}.card:hover{transform:translateY(-8px)}
.card a{color:#d9803f}#projects .card a{color:#8a4b1f}
.rv .card{opacity:0;transform:translateY(30px)}.rv.in .card{opacity:1;transform:none}.rv.in .card:hover{transform:translateY(-8px)}
.rv.in .card:nth-child(2){transition-delay:.1s}.rv.in .card:nth-child(3){transition-delay:.2s}.rv.in .card:nth-child(4){transition-delay:.3s}.rv.in .card:nth-child(n+5){transition-delay:.4s}
.marquee{background:linear-gradient(90deg,#2c1810,#4a2c1d,#2c1810);color:#f2dcc0;border-top:1px solid rgba(217,128,63,.4);border-bottom:1px solid rgba(217,128,63,.4)}
footer{background:#0d0603;color:#a58d78;padding:38px}
.bar{background:linear-gradient(90deg,#d9803f,#4df0d0)}
@media(max-width:760px){main>section{padding:84px 6vw 96px}main>section+section{border-radius:30px 30px 0 0}.term{transform:none}}
@media(prefers-reduced-motion:reduce){main>section::before,main>section::after,h2{animation:none}}

/* hero chips: fixed full-size layer so % positions always work */
#chips{position:absolute;inset:0;pointer-events:none;z-index:6}
#chips span{pointer-events:auto}
