:root{--bg:#080a12;--surface:#10131e;--surface2:#151a27;--text:#eef0f7;--muted:#9ba3b5;--line:rgba(255,255,255,.11);--accent:#8b5cf6;--accent-rgb:139,92,246;--sidebar:72px;font-family:"Plus Jakarta Sans",sans-serif;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);line-height:1.65;overflow-x:hidden}.grid-bg{position:fixed;inset:0;z-index:-3;opacity:.35;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,black,transparent 80%)}#particles{position:fixed;inset:0;z-index:-2;pointer-events:none}.mouse-glow{position:fixed;width:360px;height:360px;border-radius:50%;pointer-events:none;z-index:-1;background:radial-gradient(circle,rgba(var(--accent-rgb),.12),transparent 66%);transform:translate(-50%,-50%);transition:opacity .2s}.loader{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:var(--bg);font:500 .78rem "Fira Code",monospace;letter-spacing:.13em;transition:opacity .35s,visibility .35s}.loader>div{width:min(320px,80vw)}.loader small{display:block;color:var(--accent);margin-top:.65rem}.load-bar{height:3px;background:#202532;margin-top:.8rem;overflow:hidden}.load-bar i{display:block;height:100%;background:var(--accent);animation:load 1s ease forwards}@keyframes load{from{width:0}to{width:100%}}.loader.done{opacity:0;visibility:hidden}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:rgba(8,10,18,.8);border-right:1px solid var(--line);backdrop-filter:blur(18px);z-index:10;display:flex;align-items:center;flex-direction:column;padding:1.25rem 0}.brand{font:800 1.05rem "Fira Code",monospace;color:var(--text);text-decoration:none}.brand span,.accent{color:var(--accent)}.nav-links{display:grid;gap:.55rem;margin:auto 0}.nav-btn,.icon-btn{display:grid;place-items:center;color:var(--muted);text-decoration:none;width:40px;height:40px;border-radius:11px;border:1px solid transparent;background:none;font:600 1rem "Fira Code",monospace;cursor:pointer;transition:.2s}.nav-btn:hover,.nav-btn:focus-visible,.nav-btn.active,.icon-btn:hover{color:var(--text);border-color:rgba(var(--accent-rgb),.45);background:rgba(var(--accent-rgb),.14);outline:0}.utility-controls{position:relative;display:grid;gap:.35rem}.palette{position:absolute;left:48px;bottom:0;padding:.6rem;background:var(--surface);border:1px solid var(--line);border-radius:1rem;display:flex;gap:.45rem;box-shadow:0 12px 35px #0008}.palette button{width:18px;height:18px;border-radius:50%;border:2px solid #fff4;cursor:pointer}.palette button:nth-child(1){background:#8b5cf6}.palette button:nth-child(2){background:#3b82f6}.palette button:nth-child(3){background:#10b981}.palette button:nth-child(4){background:#ec4899}.palette button:nth-child(5){background:#f59e0b}.main-content{margin-left:var(--sidebar);max-width:1450px;padding:0 clamp(1.3rem,6vw,7rem);margin-right:auto}.section{padding:6.5rem 0;scroll-margin-top:2rem}.hero{min-height:100vh;display:grid;align-content:center;grid-template-columns:1.25fr .8fr;gap:clamp(2rem,7vw,8rem)}.eyebrow,.comment,.project-number{font:500 .72rem "Fira Code",monospace;letter-spacing:.12em;color:var(--accent);text-transform:uppercase}.pulse-dot{display:inline-block;width:.55rem;height:.55rem;background:#4ade80;border-radius:50%;box-shadow:0 0 11px #4ade80;animation:pulse 1.5s infinite}@keyframes pulse{50%{opacity:.3;transform:scale(.7)}}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(3.1rem,8vw,7.6rem);line-height:.91;letter-spacing:-.075em;margin:.7rem 0 1.4rem}h1 em{display:block;color:transparent;-webkit-text-stroke:1px var(--accent);font-style:normal}h2{font-size:clamp(2.1rem,4vw,4rem);line-height:1.05;letter-spacing:-.06em;margin:.7rem 0 1.3rem}.type-line{font:500 clamp(1rem,2vw,1.45rem) "Fira Code",monospace;color:var(--accent);min-height:2.3rem}.cursor{animation:blink .8s steps(2) infinite}@keyframes blink{50%{opacity:0}}.intro{max-width:650px;color:var(--muted);font-size:1.05rem}.intro a,.text-link{color:var(--text);text-decoration-color:var(--accent);text-underline-offset:4px}.hero-actions,.cv-card>div:last-child{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.8rem}.btn{display:inline-flex;gap:.65rem;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:.65rem;padding:.7rem 1rem;background:transparent;color:var(--text);font:600 .82rem "Fira Code",monospace;text-decoration:none;cursor:pointer;transition:.2s}.btn:hover,.btn:focus-visible{transform:translateY(-2px);border-color:var(--accent);outline:0}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.dashboard,.terminal-card,.profile-card,.skill-card,.project-card,.github-card,.cv-card,.contact-form{border:1px solid var(--line);background:linear-gradient(135deg,rgba(255,255,255,.055),rgba(255,255,255,.018));box-shadow:0 20px 60px #0003}.dashboard{align-self:center;border-radius:1.15rem;overflow:hidden}.window-head{display:flex;gap:.35rem;align-items:center;padding:.85rem 1rem;border-bottom:1px solid var(--line);font:400 .7rem "Fira Code",monospace;color:var(--muted)}.window-head i{width:.55rem;height:.55rem;border-radius:50%;background:#ff6257}.window-head i:nth-child(2){background:#f7bd47}.window-head i:nth-child(3){background:#43d17a}.window-head span{margin-left:.35rem}.dash-content{padding:1.4rem}.dash-content dl{margin:1.2rem 0}.dash-content dl div{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px dashed var(--line);font:500 .76rem "Fira Code",monospace}.dash-content dt{color:var(--muted)}.dash-content dd{margin:0;text-align:right}.availability{padding:.7rem .8rem;background:rgba(var(--accent-rgb),.12);font:.73rem "Fira Code",monospace;border-left:2px solid var(--accent)}.two-col,.contact-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:1.2rem}.terminal-card,.profile-card{border-radius:1rem;overflow:hidden}.terminal-copy{padding:1.2rem;font:400 .88rem "Fira Code",monospace}.terminal-copy b{color:var(--accent)}.code-output{color:var(--muted);padding-left:1.15rem}.profile-card{padding:1.25rem}.profile-avatar{display:grid;place-items:center;width:95px;height:95px;border-radius:1.2rem;margin:1.2rem 0;background:linear-gradient(135deg,var(--accent),#2532a2);font:800 2rem "Fira Code",monospace}.profile-card p{color:var(--muted);font-size:.86rem}.section-intro{color:var(--muted);max-width:650px}.skill-grid,.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.skill-card,.project-card{padding:1.4rem;border-radius:1rem;transition:border-color .25s,box-shadow .25s}.skill-card:hover,.project-card:hover{border-color:rgba(var(--accent-rgb),.7);box-shadow:0 15px 45px rgba(var(--accent-rgb),.12)}.skill-card>span{font:.7rem "Fira Code",monospace;color:var(--accent)}.skill-card h3,.project-card h3{margin:.55rem 0;font-size:1.2rem}.skill-card p,.project-card p{margin:0;color:var(--muted);font-size:.9rem}.project-number{font-size:.67rem}.tags{display:flex;gap:.4rem;flex-wrap:wrap;margin:1rem 0}.tags span{padding:.22rem .48rem;border:1px solid var(--line);border-radius:.35rem;color:var(--muted);font:.67rem "Fira Code",monospace}.project-actions{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap;font:.76rem "Fira Code",monospace}.project-actions a,.text-button{color:var(--text);background:none;border:0;padding:0;cursor:pointer;font:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px}.github-card{border-radius:1rem;padding:1.3rem;display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:center}.github-card p{color:var(--muted);font-size:.88rem}.contribution-grid{display:grid;grid-template-columns:repeat(12,12px);gap:4px}.contribution-grid i{width:12px;height:12px;border-radius:2px;background:rgba(var(--accent-rgb),var(--level,.07))}.timeline{border-left:1px solid var(--line);margin-left:.5rem}.timeline article{display:grid;grid-template-columns:80px 1fr;gap:1rem;padding:0 0 2rem 1.6rem;position:relative}.timeline article:before{content:"";position:absolute;width:.7rem;height:.7rem;left:-.38rem;top:.35rem;border:2px solid var(--accent);border-radius:50%;background:var(--bg)}.timeline span{color:var(--accent);font:.73rem "Fira Code",monospace}.timeline h3{margin:0;font-size:1rem}.timeline p{color:var(--muted);font-size:.9rem;margin:.3rem 0}.achievement-note{padding:1rem;border:1px dashed var(--line);display:flex;gap:1rem;align-items:center;font-size:.85rem}.achievement-note span{color:var(--muted)}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.gallery figure{margin:0}.photo-placeholder{aspect-ratio:1/.8;display:grid;place-items:center;background:linear-gradient(135deg,rgba(var(--accent-rgb),.35),#151a28);border:1px solid var(--line);font:.75rem "Fira Code",monospace;color:var(--text)}.gallery figcaption{color:var(--muted);font-size:.75rem;padding-top:.4rem}.cv-card{border-radius:1rem;padding:1.3rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.cv-card p{color:var(--muted);margin:0}.socials{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.2rem}.socials a{border:1px solid var(--line);padding:.55rem .7rem;border-radius:.5rem;color:var(--text);font:.78rem "Fira Code",monospace;text-decoration:none}.contact-form{border-radius:1rem;padding:1.2rem}.contact-form label{display:block;font:.72rem "Fira Code",monospace;color:var(--muted);margin-bottom:.8rem}.contact-form input,.contact-form textarea{display:block;width:100%;margin-top:.35rem;padding:.7rem;background:var(--bg);border:1px solid var(--line);border-radius:.45rem;color:var(--text);font:inherit;resize:vertical}.contact-form input:focus,.contact-form textarea:focus{outline:1px solid var(--accent);border-color:var(--accent)}#form-status{font-size:.8rem;margin:.8rem 0 0;color:var(--muted)}footer{padding:2rem 0 7rem;color:var(--muted);font:.75rem "Fira Code",monospace}.terminal-trigger{position:fixed;right:1.3rem;bottom:1.3rem;width:47px;height:47px;border:1px solid rgba(var(--accent-rgb),.6);border-radius:50%;background:var(--surface);color:var(--accent);font:700 1rem "Fira Code",monospace;box-shadow:0 10px 25px #0007;cursor:pointer;z-index:9}.terminal-dialog,.project-dialog{width:min(680px,calc(100vw - 2rem));border:1px solid var(--line);background:var(--surface);color:var(--text);box-shadow:0 30px 100px #000b;padding:0;border-radius:.9rem}.terminal-dialog::backdrop,.project-dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}.terminal-top{display:flex;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--line);font:.75rem "Fira Code",monospace;color:var(--accent)}.dialog-close{border:0;background:none;color:var(--text);font-size:1.5rem;line-height:1;cursor:pointer}.terminal-output{height:270px;overflow:auto;padding:1rem;font:.82rem/1.7 "Fira Code",monospace;white-space:pre-wrap}.terminal-output .muted{color:var(--muted)}#terminal-form{padding:.75rem 1rem;border-top:1px solid var(--line)}#terminal-form label{display:flex;gap:.55rem;color:var(--accent);font:.8rem "Fira Code",monospace}#terminal-input{flex:1;min-width:0;background:none;border:0;color:var(--text);font:inherit;outline:0}.project-dialog{padding:1.7rem;position:relative}.project-dialog .dialog-close{position:absolute;right:.7rem;top:.5rem}.project-dialog h3{font-size:1.7rem;margin:0 2rem .8rem 0}.project-dialog p{color:var(--muted)}#toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--surface2);border:1px solid var(--line);color:var(--text);padding:.7rem 1rem;border-radius:.6rem;font:.76rem "Fira Code",monospace;transition:.2s;z-index:30}#toast.show{opacity:1;transform:translate(-50%,0)}.reveal{opacity:0;transform:translateY(22px);transition:opacity .65s ease,transform .65s ease}.reveal.visible{opacity:1;transform:none}body.light{--bg:#f7f7fb;--surface:#fff;--surface2:#f0f2f8;--text:#131522;--muted:#5d6575;--line:rgba(20,25,45,.14);color-scheme:light}body.light .sidebar{background:rgba(255,255,255,.8)}body.light .grid-bg{opacity:.6}body.light .loader{background:var(--bg)}@media(max-width:800px){:root{--sidebar:0}.sidebar{width:100%;height:65px;inset:auto 0 0 0;flex-direction:row;padding:0 .55rem;border-right:0;border-top:1px solid var(--line)}.brand{display:none}.nav-links{display:flex;flex:1;margin:0;justify-content:space-around}.nav-btn{width:43px;height:43px}.utility-controls{display:flex;gap:.15rem}.icon-btn{width:34px;height:34px}.palette{left:auto;right:0;bottom:45px}.main-content{margin:0;padding:0 1.2rem}.section{padding:4rem 0}.hero{min-height:calc(100vh - 65px);grid-template-columns:1fr;gap:2rem}.dashboard{max-width:440px;width:100%}.two-col,.contact-layout{grid-template-columns:1fr}.skill-grid,.project-grid{grid-template-columns:1fr}.github-card{grid-template-columns:1fr}.contribution-grid{grid-template-columns:repeat(12,10px)}.contribution-grid i{width:10px;height:10px}.gallery{grid-template-columns:1fr}.cv-card{display:block}.cv-card>div:last-child{margin-top:1rem}.mouse-glow{display:none}.terminal-trigger{bottom:78px;right:1rem}footer{padding-bottom:5.5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
/* Content and interaction refinements */
#particles{z-index:8}.hero{grid-template-columns:1.15fr .62fr;gap:clamp(1rem,5vw,5.5rem)}.hero-visual{text-align:center}.profile-ring{width:min(245px,58vw);aspect-ratio:1;margin:auto;padding:7px;border-radius:50%;background:conic-gradient(var(--accent),transparent 30%,var(--accent));box-shadow:0 0 45px rgba(var(--accent-rgb),.24);animation:portrait-spin 15s linear infinite}.profile-photo-frame{display:grid;place-items:center;width:100%;height:100%;overflow:hidden;border-radius:50%;background:#1c2030}.profile-photo{width:100%;height:100%;object-fit:cover}.photo-fallback{font:800 3rem "Fira Code",monospace;color:#fff}.photo-note{margin-top:.75rem;color:var(--muted);font:.65rem "Fira Code",monospace}.photo-note code{color:var(--accent)}@keyframes portrait-spin{to{transform:rotate(360deg)}}.about-panel{max-width:930px;display:grid;grid-template-columns:auto 1fr;gap:clamp(1rem,3vw,2.5rem);padding:clamp(1.4rem,4vw,3rem);border:1px solid var(--line);border-left:3px solid var(--accent);background:linear-gradient(120deg,rgba(var(--accent-rgb),.11),transparent 70%)}.about-mark{font:700 clamp(1.4rem,3vw,2.4rem) "Fira Code",monospace;color:var(--accent)}.about-bio{font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.8;margin:0}.about-bio a{color:var(--text);text-decoration-color:var(--accent);text-underline-offset:4px}.interest-row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-top:1.7rem;font:.7rem "Fira Code",monospace}.interest-row>span{color:var(--accent);margin-right:.25rem}.interest-row b{font-weight:500;border:1px solid var(--line);padding:.4rem .55rem;border-radius:.35rem;color:var(--muted)}.compact-panel{padding-block:1.5rem}.skill-grid,.project-grid{max-width:930px;grid-template-columns:1fr}.skill-card,.project-card{padding:1.3rem 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none!important}.skill-card:hover,.project-card:hover{border-color:var(--accent);transform:none!important}.skill-card>span,.project-number{display:inline-block;width:75px}.socials a{display:inline-flex;align-items:center;gap:.55rem;padding:.65rem .85rem}.socials i{font-size:1.1rem;color:var(--accent)}
@media(max-width:800px){.hero{grid-template-columns:1fr}.about-panel{grid-template-columns:1fr}.profile-ring{width:min(220px,64vw)}}
/* V3 — colourful editorial developer portfolio */
:root{--ink:#080713;--paper:#f5f1ff;--violet:#8f63ff;--cyan:#24d4e8;--pink:#ff4fa3;--gold:#ffc24a;--mint:#56efb2}body{background:var(--ink);background-image:radial-gradient(circle at 14% 12%,rgba(143,99,255,.20),transparent 25rem),radial-gradient(circle at 85% 30%,rgba(36,212,232,.14),transparent 28rem),radial-gradient(circle at 54% 80%,rgba(255,79,163,.13),transparent 32rem);color:var(--paper)}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(130deg,transparent 0 44%,rgba(255,255,255,.018) 44% 44.1%,transparent 44.1% 100%)}.grid-bg{opacity:.2;background-size:56px 56px}.sidebar{top:18px;left:50%;bottom:auto;transform:translateX(-50%);width:min(720px,calc(100% - 2rem));height:58px;flex-direction:row;padding:0 .75rem;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(15,12,34,.7);box-shadow:0 12px 55px #0005}.brand{margin-right:1.1rem;color:#fff}.nav-links{display:flex;gap:.15rem;margin:0;flex:1;justify-content:center}.nav-btn{width:36px;height:36px}.utility-controls{display:flex;gap:.15rem}.icon-btn{width:34px;height:34px}.palette{left:auto;right:0;bottom:-50px}.main-content{max-width:1260px;margin:0 auto;padding:0 clamp(1.25rem,5vw,4rem)}.section{padding:5.5rem 0;position:relative}.hero{min-height:100vh;padding-top:7rem;display:grid;grid-template-columns:1.15fr .65fr;align-items:center;gap:clamp(2rem,7vw,7rem)}.hero-copy{position:relative}.hero-copy:before{content:"CREATIVE\A DEVELOPER";white-space:pre;position:absolute;top:-3.5rem;right:0;color:rgba(255,255,255,.07);font:700 .68rem "Fira Code",monospace;line-height:1.7;letter-spacing:.2em}.eyebrow{display:inline-flex;align-items:center;gap:.5rem;padding:.42rem .72rem;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:var(--cyan);background:rgba(36,212,232,.07);letter-spacing:.17em}.hero h1{font-size:clamp(4rem,10.5vw,9.5rem);background:linear-gradient(120deg,#fff 12%,#a795ff 45%,#47e5f0 80%,#fff 100%);background-clip:text;-webkit-background-clip:text;color:transparent;line-height:.83;text-shadow:none}.hero h1 em{-webkit-text-stroke:0;color:transparent;background:linear-gradient(100deg,var(--pink),var(--gold));background-clip:text;-webkit-background-clip:text}.type-line{color:var(--gold);font-size:clamp(1rem,2vw,1.35rem)}.intro{border-left:2px solid var(--pink);padding-left:1.1rem;color:#d3ccdf;font-size:1rem}.intro a{color:var(--cyan)}.btn{border-radius:999px;border-color:rgba(255,255,255,.25);backdrop-filter:blur(10px)}.btn.primary{background:linear-gradient(105deg,var(--pink),var(--violet));box-shadow:0 10px 25px rgba(174,74,222,.28)}.hero-visual{position:relative}.profile-ring{width:min(315px,72vw);padding:10px;background:conic-gradient(from 45deg,var(--pink),var(--gold),var(--cyan),var(--violet),var(--pink));box-shadow:0 0 70px rgba(143,99,255,.42)}.profile-photo-frame{background:linear-gradient(145deg,#211b4c,#080713)}.photo-note{color:#b9aec9}.photo-note code{color:var(--gold)}.section>.eyebrow{margin-bottom:1.45rem}.about-panel{max-width:100%;border:1px solid rgba(255,255,255,.15);border-left:4px solid var(--cyan);border-radius:1.25rem;background:linear-gradient(110deg,rgba(143,99,255,.14),rgba(36,212,232,.05) 50%,rgba(255,79,163,.08));box-shadow:inset 0 1px rgba(255,255,255,.08),0 20px 70px rgba(0,0,0,.22)}.about-mark{color:var(--gold)}.about-bio{color:#f2eeff}.interest-row>span{color:var(--gold)}.interest-row b{border-color:rgba(255,255,255,.18);color:#e9e4f2;background:rgba(255,255,255,.045)}.skill-grid,.project-grid{max-width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.skill-card,.project-card{min-height:190px;padding:1.6rem;border:1px solid rgba(255,255,255,.14);border-radius:1.1rem;background:linear-gradient(145deg,rgba(255,255,255,.09),rgba(255,255,255,.025));overflow:hidden;position:relative}.skill-card:before,.project-card:before{content:"";position:absolute;width:130px;height:130px;border-radius:50%;right:-55px;top:-60px;background:radial-gradient(circle,rgba(36,212,232,.26),transparent 68%)}.skill-card:nth-child(2):before,.project-card:nth-child(2):before{background:radial-gradient(circle,rgba(255,79,163,.32),transparent 68%)}.skill-card:nth-child(3):before{background:radial-gradient(circle,rgba(255,194,74,.28),transparent 68%)}.skill-card:nth-child(4):before{background:radial-gradient(circle,rgba(86,239,178,.25),transparent 68%)}.skill-card:hover,.project-card:hover{border-color:rgba(255,255,255,.48);background:linear-gradient(145deg,rgba(255,255,255,.15),rgba(255,255,255,.035));transform:translateY(-6px)!important}.skill-card>span,.project-number{width:auto;color:var(--cyan)}.skill-card h3,.project-card h3{font-size:1.35rem;color:#fff}.skill-card p,.project-card p{color:#c7bed4}.tags span{border-color:rgba(255,255,255,.2);color:#e8e3f0;background:rgba(0,0,0,.16)}.github-card,.cv-card{border:1px solid rgba(255,255,255,.14);border-radius:1.2rem;background:linear-gradient(120deg,rgba(36,212,232,.12),rgba(143,99,255,.14),rgba(255,79,163,.1));box-shadow:0 20px 70px rgba(0,0,0,.22)}.contribution-grid i{box-shadow:0 0 10px rgba(var(--accent-rgb),.23)}.timeline{border-left-color:var(--pink)}.timeline article:before{border-color:var(--gold);background:var(--ink)}.achievement-note{display:none}.gallery{gap:1rem}.photo-placeholder{border-radius:1rem;border:1px solid rgba(255,255,255,.15);background:linear-gradient(145deg,#3930a0,#b23196 48%,#ed9b4f);box-shadow:inset 0 1px rgba(255,255,255,.2)}.gallery figure:nth-child(2) .photo-placeholder{background:linear-gradient(145deg,#0a879d,#484bd0,#db44aa)}.gallery figure:nth-child(3) .photo-placeholder{background:linear-gradient(145deg,#481c83,#db4f8d,#ffc24a)}.socials a{border-color:rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.055);font-size:.85rem}.socials i{color:var(--cyan)}.socials a:nth-child(2) i{color:#56efb2}.socials a:nth-child(3) i{color:#fff}.socials a:nth-child(4) i{color:#58a6ff}.terminal-trigger{background:linear-gradient(145deg,var(--violet),var(--pink));color:#fff;border:0}@media(max-width:800px){.sidebar{top:10px;height:52px}.brand{margin-right:.2rem}.nav-btn{width:32px;height:32px}.hero{padding-top:5.5rem;grid-template-columns:1fr}.hero-visual{order:-1}.profile-ring{width:min(220px,60vw)}.skill-grid,.project-grid{grid-template-columns:1fr}.section{padding:3.7rem 0}.hero h1{font-size:clamp(3.5rem,17vw,6rem)}}
/* Smooth interaction and compact layout refinements */
html{scroll-behavior:smooth;scroll-padding-top:86px}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none}.section{padding-block:3.7rem;scroll-margin-top:80px}.hero{padding-bottom:3.2rem}.nav-btn,.icon-btn,.btn,.socials a,.palette button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.nav-btn,.icon-btn,.socials a{transition:transform .22s cubic-bezier(.2,.8,.2,1),background-color .22s,border-color .22s,color .22s}.nav-btn:active,.icon-btn:active,.socials a:active{transform:translateY(3px) scale(.94)}.socials a{position:relative;overflow:hidden}.socials a:after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.22),transparent 80%);transform:translateX(-130%);transition:transform .48s ease}.socials a:hover:after,.socials a:focus-visible:after{transform:translateX(130%)}.socials a:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px rgba(var(--accent-rgb),.22)}.palette{z-index:30;display:flex;flex-wrap:wrap;width:148px;justify-content:center;gap:.55rem;bottom:-96px;padding:.75rem;transform-origin:top right;animation:palette-in .2s ease}.palette[hidden]{display:none}.palette button{width:21px;height:21px;border:2px solid rgba(255,255,255,.65);box-shadow:0 0 0 1px #0006}.palette button:hover,.palette button:focus-visible{transform:scale(1.22);outline:0}.palette button:nth-child(1){background:#8b5cf6}.palette button:nth-child(2){background:#3b82f6}.palette button:nth-child(3){background:#24d4e8}.palette button:nth-child(4){background:#10b981}.palette button:nth-child(5){background:#ec4899}.palette button:nth-child(6){background:#f45b69}.palette button:nth-child(7){background:#f59e0b}@keyframes palette-in{from{opacity:0;transform:translateY(-9px) scale(.93)}to{opacity:1;transform:none}}.icon-btn[aria-expanded="true"]{background:rgba(var(--accent-rgb),.17);border-color:var(--accent);transform:rotate(18deg)}@media(max-width:800px){.section{padding-block:2.8rem}.hero{padding-bottom:2.7rem}.palette{right:-3px;bottom:54px}.socials{gap:.55rem}.socials a{min-height:43px}.intro{font-size:.96rem}}
/* Profile-dot reveal and final content refinements */
.profile-ring{position:relative;width:min(310px,74vw);padding:12px;border-radius:34px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);box-shadow:0 25px 65px rgba(0,0,0,.38),0 0 70px rgba(var(--accent-rgb),.25);animation:none}.profile-photo-frame{position:relative;border-radius:25px;isolation:isolate;background:#171329}.profile-photo{transition:opacity .65s ease}.profile-dots{position:absolute;inset:0;width:100%;height:100%;border-radius:25px;z-index:2;pointer-events:none}.profile-status{position:absolute;left:50%;bottom:-16px;transform:translateX(-50%);white-space:nowrap;padding:.45rem .75rem;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:#100e22;color:#f6f1ff;font:500 .67rem "Fira Code",monospace;box-shadow:0 8px 22px #0008}.profile-status i{display:inline-block;width:7px;height:7px;margin-right:.35rem;border-radius:50%;background:#56efb2;box-shadow:0 0 9px #56efb2}.tech-stack-panel{max-width:100%;border:1px solid rgba(255,255,255,.15);border-radius:1.2rem;padding:clamp(.6rem,2vw,1.25rem);background:linear-gradient(120deg,rgba(143,99,255,.11),rgba(36,212,232,.04),rgba(255,79,163,.08));box-shadow:inset 0 1px rgba(255,255,255,.07)}.tech-stack-panel .skill-grid{gap:0}.tech-stack-panel .skill-card{min-height:0;padding:1.25rem;border:0;border-radius:0;box-shadow:none!important;background:transparent}.tech-stack-panel .skill-card:nth-child(odd){border-right:1px solid rgba(255,255,255,.12)}.tech-stack-panel .skill-card:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.12)}.tech-stack-panel .skill-card:before{display:none}.tech-stack-panel .skill-card:hover{background:rgba(var(--accent-rgb),.08);transform:none!important}.hero h1 em{background:linear-gradient(100deg,var(--accent),#fff);background-clip:text;-webkit-background-clip:text}.about-mark,.project-number,.skill-card>span,.timeline span{color:var(--accent)}.profile-ring{box-shadow:0 25px 65px rgba(0,0,0,.38),0 0 70px rgba(var(--accent-rgb),.25)}.contact-icons{display:flex;gap:.85rem;flex-wrap:wrap}.contact-icons a{display:inline-flex;align-items:center;gap:.6rem;color:var(--paper);text-decoration:none;font:500 .82rem "Fira Code",monospace;padding:.66rem .15rem;border-bottom:1px solid transparent;transition:transform .22s ease,border-color .22s,color .22s}.contact-icons a i{font-size:1.2rem;color:var(--accent)}.contact-icons a:nth-child(2) i{color:#56efb2}.contact-icons a:nth-child(3) i{color:#fff}.contact-icons a:nth-child(4) i{color:#58a6ff}.contact-icons a:hover,.contact-icons a:focus-visible{transform:translateY(-4px);color:var(--accent);border-color:var(--accent);outline:0}@media(max-width:800px){.tech-stack-panel .skill-grid{grid-template-columns:1fr}.tech-stack-panel .skill-card,.tech-stack-panel .skill-card:nth-child(odd){border-right:0}.tech-stack-panel .skill-card:not(:last-child){border-bottom:1px solid rgba(255,255,255,.12)}.profile-status{bottom:-14px}}
/* Clean contact-style system applied across the site. Content and behaviour stay unchanged. */
:root{--paper:#f4f0ff}body{background:#080711;background-image:linear-gradient(132deg,transparent 0 42%,rgba(120,104,175,.09) 42.05%,transparent 42.12%),radial-gradient(circle at 84% 78%,rgba(var(--accent-rgb),.07),transparent 28rem)}.grid-bg{display:none}.section{padding-block:3.35rem}.section>.eyebrow,.eyebrow{color:var(--accent);background:rgba(var(--accent-rgb),.06);border:1px solid rgba(var(--accent-rgb),.34);border-radius:999px;padding:.42rem .78rem;font:600 .72rem "Fira Code",monospace;letter-spacing:.16em}.hero{padding-top:7.2rem;padding-bottom:3.35rem}.hero h1{background:none;-webkit-background-clip:initial;color:var(--paper);font-size:clamp(3.8rem,9vw,8rem);letter-spacing:-.075em}.hero h1 em{background:none!important;-webkit-background-clip:initial!important;color:var(--accent);font-style:normal}.hero-copy:before{color:rgba(255,255,255,.035)}.intro{max-width:570px;border-left:0;padding-left:0;color:#c3bdcd;font-size:1rem}.intro a{color:var(--paper);text-decoration-color:var(--accent)}.type-line{color:var(--accent)}.btn{border-color:rgba(255,255,255,.16);border-radius:.42rem}.btn.primary{background:transparent;color:var(--paper);border-color:var(--accent);box-shadow:none}.btn.primary:hover{background:rgba(var(--accent-rgb),.12)}.profile-ring{background:rgba(255,255,255,.025);border-radius:22px;border-color:rgba(255,255,255,.13);box-shadow:none}.profile-photo-frame,.profile-dots{border-radius:15px}.profile-status{background:#11101c;border-color:rgba(255,255,255,.15)}.about-panel,.tech-stack-panel,.github-card,.cv-card{padding:0;display:block;background:transparent;border:0;border-radius:0;box-shadow:none}.about-panel{max-width:850px}.about-mark{display:none}.about-bio{font-size:1rem;line-height:1.8;color:#d7d1df}.interest-row{margin-top:1.15rem}.interest-row b{padding:0;border:0;border-radius:0;background:transparent;color:var(--paper);font-weight:600}.interest-row b:not(:last-child):after{content:"/";margin-left:.65rem;color:var(--accent)}.skill-grid,.project-grid{grid-template-columns:1fr;gap:0;max-width:850px}.tech-stack-panel .skill-grid{border-top:1px solid rgba(255,255,255,.1)}.tech-stack-panel .skill-card,.skill-card,.project-card{min-height:0;padding:1.05rem 0!important;border:0!important;border-bottom:1px solid rgba(255,255,255,.1)!important;background:transparent!important;border-radius:0;box-shadow:none!important;display:grid;grid-template-columns:150px 1fr;column-gap:1rem;align-items:start}.tech-stack-panel .skill-card:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.1)!important}.skill-card:before,.project-card:before{display:none}.skill-card:hover,.project-card:hover{background:transparent!important;border-color:var(--accent)!important;transform:none!important}.skill-card>span,.project-number{grid-column:1;color:var(--accent);font:.72rem "Fira Code",monospace}.skill-card h3,.project-card h3{grid-column:1;margin:0;color:var(--paper);font:600 .95rem "Fira Code",monospace}.skill-card p,.project-card p{grid-column:2;grid-row:1 / span 2;color:#bbb4c5;font-size:.88rem;margin:0}.project-card{padding:1.45rem 0!important;grid-template-columns:130px 1fr}.project-number{grid-column:1}.project-card h3{grid-column:2;grid-row:1;font-size:1.02rem}.project-card p{grid-column:2;grid-row:2;margin-top:.5rem}.tags{grid-column:2;grid-row:3;margin:.8rem 0}.tags span{background:transparent;border:0;padding:0;color:#c6bfce}.tags span:not(:last-child):after{content:" ·";color:var(--accent)}.project-actions{grid-column:2;grid-row:4}.project-actions a,.text-button{color:var(--paper)}.github-card{display:flex;justify-content:space-between;gap:2rem;align-items:center;max-width:850px;padding-block:1.1rem;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}.github-card strong{font:600 .92rem "Fira Code",monospace}.github-card p{margin:.35rem 0;color:#bcb5c6}.contribution-grid{opacity:.72}.timeline{max-width:850px;border-left:0;margin:0;border-top:1px solid rgba(255,255,255,.1);padding-top:1.15rem}.timeline article{grid-template-columns:130px 1fr;padding:0;gap:0}.timeline article:before{display:none}.timeline h3{font:600 .95rem "Fira Code",monospace;color:var(--paper)}.timeline p{color:#bbb4c5}.gallery{max-width:850px}.photo-placeholder{border-radius:0;background:#13111e!important;border:1px solid rgba(255,255,255,.12);box-shadow:none}.gallery figcaption{font-family:"Fira Code",monospace}.cv-card{max-width:850px;display:flex;justify-content:space-between;align-items:center;padding:1.1rem 0;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1)}.cv-card p{color:#bbb4c5}.contact-icons{gap:1.55rem}.contact-icons a{font-size:.9rem;color:var(--paper)}.contact-icons a i{font-size:1.25rem}.contact-icons a:hover{color:var(--accent)}@media(max-width:800px){.hero{padding-top:6rem}.section{padding-block:2.7rem}.tech-stack-panel .skill-card,.skill-card,.project-card{display:block}.skill-card>span,.project-number{display:block;margin-bottom:.45rem}.skill-card h3{margin-bottom:.35rem}.skill-card p,.project-card p{margin-top:.45rem}.project-card h3{margin-top:.4rem}.github-card,.cv-card{display:block}.contribution-grid{margin-top:1rem}.contact-icons{gap:1rem}.interest-row{gap:.45rem}.interest-row b:not(:last-child):after{margin-left:.45rem}}
/* Gallery photographs supplied by Tapu */
.gallery figure{overflow:hidden}.gallery img{display:block;width:100%;aspect-ratio:1/.8;object-fit:cover;border:1px solid rgba(255,255,255,.12);filter:saturate(.92) contrast(1.04);transition:transform .45s ease,filter .45s ease}.gallery figure:hover img{transform:scale(1.035);filter:saturate(1.08) contrast(1.05)}.gallery figcaption{padding-top:.5rem;font:500 .7rem "Fira Code",monospace;color:#bbb4c5;letter-spacing:.08em;text-transform:uppercase}
/* Pointillism portrait: dots rise from the accent-colour background, then the photo emerges. */
.profile-ring{transform-style:preserve-3d;animation:portrait-emerge 5.8s cubic-bezier(.16,.84,.28,1) both}.profile-photo-frame{transform-style:preserve-3d}.profile-photo{transform:translateZ(12px);will-change:opacity,transform}.profile-dots{transform:translateZ(24px);will-change:opacity,transform}.profile-ring:before{content:"";position:absolute;inset:-22%;z-index:-1;background:radial-gradient(circle,rgba(var(--accent-rgb),.3),transparent 63%);filter:blur(16px);animation:portrait-aura 5.8s ease both}@keyframes portrait-emerge{0%{opacity:0;transform:perspective(950px) translateY(55px) rotateX(24deg) scale(.76)}45%{opacity:1;transform:perspective(950px) translateY(6px) rotateX(-6deg) scale(1.04)}72%{transform:perspective(950px) translateY(-5px) rotateX(3deg) scale(1.015)}100%{transform:perspective(950px) translateY(0) rotateX(0) scale(1)}}@keyframes portrait-aura{0%{opacity:0;transform:scale(.55)}55%{opacity:1;transform:scale(1.12)}100%{opacity:.48;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.profile-ring,.profile-ring:before{animation:none!important}}
/* The completed portrait remains an image made entirely of individual particles. */
.profile-dots{image-rendering:auto}.profile-dots.portrait-complete{filter:drop-shadow(0 10px 18px rgba(var(--accent-rgb),.13))}.profile-photo{pointer-events:none}
/* Requested startup, light reveal, and tighter section rhythm. */
.loader button{display:inline-flex;gap:.55rem;align-items:center;margin-top:1.15rem;padding:.7rem .9rem;border:1px solid var(--accent);border-radius:.3rem;background:transparent;color:var(--text);font:600 .73rem "Fira Code",monospace;letter-spacing:.1em;cursor:pointer}.loader button:hover,.loader button:focus-visible{background:rgba(var(--accent-rgb),.14);transform:translateY(-2px);outline:0}.section{padding-block:2.55rem}.hero{padding-bottom:2.55rem}.profile-photo{opacity:1;filter:brightness(0) saturate(.35) contrast(1.08);transform:translateZ(12px) scale(.98)}.profile-photo.light-reveal{animation:portrait-light-reveal 5s cubic-bezier(.2,.8,.2,1) both}@keyframes portrait-light-reveal{0%{opacity:.08;filter:brightness(0) saturate(.2) contrast(1.1);transform:translateZ(12px) scale(.92)}28%{opacity:.62;filter:brightness(.28) saturate(.55) contrast(1.08);transform:translateZ(12px) scale(.965)}72%{opacity:.95;filter:brightness(.82) saturate(.9) contrast(1.02);transform:translateZ(12px) scale(1.01)}100%{opacity:1;filter:brightness(1) saturate(1) contrast(1);transform:translateZ(12px) scale(1)}}@media(max-width:800px){.section{padding-block:2.15rem}.hero{padding-bottom:2.2rem}}@media(prefers-reduced-motion:reduce){.profile-photo.light-reveal{animation:none;filter:none}}
/* Faster and smoother portrait reveal; CV keeps only its actions. */
.cv-card{justify-content:flex-start}.profile-photo.light-reveal{animation:portrait-light-reveal 2.6s cubic-bezier(.16,.84,.25,1) both}@keyframes portrait-light-reveal{0%{opacity:0;filter:brightness(0) saturate(.25) contrast(1.08);transform:translateZ(12px) translateY(20px) scale(.94)}42%{opacity:.78;filter:brightness(.54) saturate(.66) contrast(1.04);transform:translateZ(12px) translateY(3px) scale(1.01)}100%{opacity:1;filter:brightness(1) saturate(1) contrast(1);transform:translateZ(12px) translateY(0) scale(1)}}
/* NOVA: local, portfolio-aware assistant interface */
.nova-section{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(1.5rem,5vw,5rem);align-items:center;padding-block:2.8rem;scroll-margin-top:80px}.nova-intro h2{font-size:clamp(2.1rem,4.4vw,4.5rem);line-height:.94;letter-spacing:-.07em;margin:.9rem 0 1rem;color:var(--paper)}.nova-intro>p:not(.eyebrow){color:#bdb5c9;max-width:410px;font-size:.93rem}.nova-prompts{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.3rem}.nova-prompts button{padding:.45rem .6rem;border:1px solid rgba(255,255,255,.14);border-radius:.35rem;background:transparent;color:#d8d2df;font:500 .68rem "Fira Code",monospace;cursor:pointer;transition:.2s}.nova-prompts button:hover{border-color:var(--accent);color:var(--accent);background:rgba(var(--accent-rgb),.08)}.nova-chat{min-height:330px;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.14);border-radius:1rem;background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.015));box-shadow:0 22px 60px rgba(0,0,0,.2);overflow:hidden}.nova-head{display:flex;justify-content:space-between;gap:1rem;padding:.8rem 1rem;border-bottom:1px solid rgba(255,255,255,.1);font:500 .72rem "Fira Code",monospace;color:var(--paper)}.nova-head i{display:inline-block;width:7px;height:7px;margin-right:.4rem;border-radius:50%;background:#56efb2;box-shadow:0 0 8px #56efb2}.nova-head small{color:#8f879c;font:inherit}.nova-messages{flex:1;display:flex;flex-direction:column;gap:.6rem;padding:1rem;overflow-y:auto}.nova-message{max-width:88%;padding:.7rem .8rem;border-radius:.65rem;font-size:.82rem;line-height:1.55}.nova-bot{align-self:flex-start;background:rgba(var(--accent-rgb),.13);border:1px solid rgba(var(--accent-rgb),.2);color:#e9e4f0}.nova-user{align-self:flex-end;background:rgba(255,255,255,.07);color:#f7f4fa}.nova-form{display:flex;gap:.5rem;padding:.75rem;border-top:1px solid rgba(255,255,255,.1)}.nova-form input{flex:1;min-width:0;border:1px solid rgba(255,255,255,.12);border-radius:.5rem;background:#0a0914;color:var(--paper);padding:.65rem .75rem;font:.73rem "Fira Code",monospace;outline:0}.nova-form input:focus{border-color:var(--accent)}.nova-form button{width:38px;border:0;border-radius:.5rem;background:var(--accent);color:#fff;cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:800px){.nova-section{grid-template-columns:1fr;padding-block:2.15rem}.nova-chat{min-height:300px}.nova-intro h2{font-size:2.7rem}}
/* NOVA only: fixed chat height keeps the surrounding layout unchanged. */
.nova-chat{height:340px;min-height:340px;max-height:340px}.nova-messages{min-height:0;overscroll-behavior:contain}.nova-typing{font-style:italic;color:#b9b1c6}@media(max-width:800px){.nova-chat{height:310px;min-height:310px;max-height:310px}}
/* Requested final tuning only: quicker startup and a smaller hero-to-NOVA gap. */
.loader{transition:opacity .18s,visibility .18s}.load-bar i{animation-duration:.42s}.hero{min-height:590px;padding-bottom:1.4rem}.nova-section{padding-top:1.15rem}@media(max-width:800px){.hero{min-height:0;padding-bottom:1.25rem}.nova-section{padding-top:1rem}}
/* Keep the existing design; only remove unused hero whitespace after entering. */
.hero{min-height:540px}.nova-section{padding-top:.8rem}@media(max-width:800px){.hero{min-height:0}.nova-section{padding-top:1rem}}
/* Compact NOVA launcher and a consistent touch glow for every Tech Stack row. */
.nova-section{display:block;padding-block:1.15rem}.nova-trigger{width:min(100%,850px);display:grid;grid-template-columns:auto 1fr auto;gap:.85rem;align-items:center;text-align:left;padding:1rem 1.1rem;border:1px solid rgba(var(--accent-rgb),.42);border-radius:.6rem;background:linear-gradient(105deg,rgba(var(--accent-rgb),.12),rgba(255,255,255,.018));color:var(--paper);cursor:pointer;box-shadow:0 12px 35px rgba(0,0,0,.16);transition:border-color .22s ease,transform .22s ease,background .22s ease}.nova-trigger:hover,.nova-trigger:focus-visible{border-color:var(--accent);background:linear-gradient(105deg,rgba(var(--accent-rgb),.2),rgba(255,255,255,.045));transform:translateY(-2px);outline:0}.nova-trigger:active{transform:translateY(1px)}.nova-trigger-icon{display:grid;place-items:center;width:2.35rem;height:2.35rem;border:1px solid rgba(var(--accent-rgb),.52);border-radius:.45rem;color:var(--accent);box-shadow:inset 0 0 16px rgba(var(--accent-rgb),.1)}.nova-trigger small{display:block;color:var(--accent);font:600 .66rem "Fira Code",monospace;letter-spacing:.14em}.nova-trigger strong{display:block;margin-top:.12rem;font:600 .94rem "Fira Code",monospace}.nova-trigger>i{color:var(--accent);font-size:.82rem}.nova-dialog{width:min(690px,calc(100vw - 1.5rem));max-height:min(730px,calc(100vh - 1.5rem));padding:0;border:1px solid rgba(var(--accent-rgb),.45);border-radius:.85rem;background:#0c0b15;color:var(--paper);box-shadow:0 28px 100px rgba(0,0,0,.7)}.nova-dialog::backdrop{background:rgba(2,2,9,.76);backdrop-filter:blur(7px)}.nova-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border-bottom:1px solid rgba(255,255,255,.1);font:600 .74rem "Fira Code",monospace;color:var(--paper)}.nova-dialog-head span>i{display:inline-block;width:7px;height:7px;margin-right:.45rem;border-radius:50%;background:#56efb2;box-shadow:0 0 9px #56efb2}.nova-dialog-head small{margin-left:.45rem;color:#938b9f;font:400 .66rem "Fira Code",monospace}.nova-dialog-body{display:flex;flex-direction:column;padding:1.15rem}.nova-dialog-body h2{margin:0;font-size:clamp(1.6rem,4vw,2.35rem);letter-spacing:-.055em}.nova-dialog-body>p{max-width:560px;margin:.5rem 0 1rem;color:#bbb4c5;font-size:.87rem}.nova-dialog .nova-prompts{margin:0 0 1rem}.nova-dialog .nova-messages{height:260px;flex:none;padding:.85rem;border:1px solid rgba(255,255,255,.09);border-radius:.55rem;background:rgba(255,255,255,.018)}.nova-dialog .nova-form{margin-top:.8rem;padding:.65rem;border:1px solid rgba(255,255,255,.1);border-radius:.55rem;background:rgba(255,255,255,.025)}.tech-stack-panel .skill-card{position:relative;cursor:default;outline:none}.tech-stack-panel .skill-card::after{content:"";position:absolute;left:0;bottom:-1px;width:0;height:1px;background:var(--accent);box-shadow:0 0 13px 2px rgba(var(--accent-rgb),.7);transition:width .32s cubic-bezier(.2,.8,.2,1)}.tech-stack-panel .skill-card:hover::after,.tech-stack-panel .skill-card:focus-visible::after,.tech-stack-panel .skill-card.is-active::after{width:100%}.tech-stack-panel .skill-card:focus-visible{background:rgba(var(--accent-rgb),.06)!important}@media(max-width:800px){.nova-section{padding-block:1rem}.nova-trigger{padding:.9rem}.nova-dialog-body{padding:1rem}.nova-dialog .nova-messages{height:230px}.nova-dialog-head small{display:none}}
/* Mobile palette: keep the seven colour choices above every navigation layer. */
@media(max-width:800px){.palette{position:fixed!important;top:68px!important;right:12px!important;bottom:auto!important;left:auto!important;z-index:1000!important;width:156px;background:#11101c;border-color:rgba(255,255,255,.24);box-shadow:0 18px 46px rgba(0,0,0,.58)}.palette[hidden]{display:none!important}}
