:root{
  color-scheme:dark;
  --bg:#070a10;
  --bg2:#101622;
  --panel:#121a26;
  --panel2:#172231;
  --panel3:#1d2a3b;
  --line:#34445b;
  --line2:#657891;
  --text:#fbfdff;
  --text2:#edf5ff;
  --muted:#c5d4e8;
  --soft:#9fb2c9;
  --accent:#7dd3fc;
  --accent2:#6ee7b7;
  --accent3:#fbbf24;
  --danger:#fb7185;
  --purple:#c084fc;
  --shadow:0 30px 90px rgba(0,0,0,.38);
  --mono:"SFMono-Regular","JetBrains Mono","Cascadia Code",Consolas,"Liberation Mono",monospace;
  --sans:Inter,"Segoe UI",Roboto,Arial,sans-serif;
  --max:1240px;
}
body.theme-ubuntu{
  --bg:#160c1e; --bg2:#231330; --panel:#21182b; --panel2:#2b1d39; --panel3:#38264a;
  --line:#6f5081; --line2:#bd8bd0; --text:#fffaff; --text2:#fff3ff; --muted:#e7d4f3; --soft:#ceb4df;
  --accent:#ffb86b; --accent2:#6ee7b7; --accent3:#ffe08a; --purple:#d8b4fe;
}
body.theme-matrix{
  --bg:#020704; --bg2:#06120b; --panel:#08160e; --panel2:#0d2115; --panel3:#132c1d;
  --line:#245d38; --line2:#60c97d; --text:#f7fff8; --text2:#edfff1; --muted:#c7eecf; --soft:#9ad3a8;
  --accent:#58ff93; --accent2:#bdff70; --accent3:#f8ff9c; --purple:#8ee9ff;
}
body.theme-ice{
  --bg:#07111f; --bg2:#0b1b2d; --panel:#10243a; --panel2:#162d49; --panel3:#1c3a5c;
  --line:#3c638a; --line2:#83baf0; --text:#faffff; --text2:#eef8ff; --muted:#cde3f7; --soft:#a7c5e4;
  --accent:#7dd3fc; --accent2:#a5b4fc; --accent3:#fde68a; --purple:#c4b5fd;
}
body.theme-amber{
  --bg:#110a04; --bg2:#1b1306; --panel:#231807; --panel2:#2f210a; --panel3:#3d2e12;
  --line:#6f541f; --line2:#d29a34; --text:#fffaf0; --text2:#fff4dc; --muted:#edd7a9; --soft:#d0b371;
  --accent:#ffc857; --accent2:#ffe082; --accent3:#ffefb3; --purple:#fca5a5;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-height:100vh;
  background:
    radial-gradient(circle at 12% 2%, color-mix(in srgb,var(--accent) 18%, transparent), transparent 28rem),
    radial-gradient(circle at 88% 10%, color-mix(in srgb,var(--purple) 16%, transparent), transparent 32rem),
    linear-gradient(135deg,var(--bg),var(--bg2) 58%,#030509);
  color:var(--text);
  font-family:var(--sans);
  line-height:1.5;
}
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:-1;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.026) 0 1px,transparent 1px 4px);
  opacity:.25;
}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:var(--text)}
button{cursor:pointer;background:none;border:0}
strong,b{color:var(--text)}
.hidden{display:none!important}
.mono-label{font:900 .72rem var(--mono); text-transform:uppercase; letter-spacing:.14em; color:var(--accent2); margin:0 0 9px}
.page-shell{width:min(var(--max),calc(100% - 28px)); margin:0 auto; padding:28px 0 60px}

/* HUB */
.page-hub{height:100dvh; overflow:hidden}
.hub{height:100dvh; width:100%; overflow:hidden; display:grid; place-items:center; padding:18px; position:relative}
.hub-noise{position:absolute; inset:0; pointer-events:none; background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px); background-size:42px 42px; mask-image:radial-gradient(circle at 50% 50%,#000 0 58%,transparent 82%); opacity:.5}
.hub-window{width:min(1360px,100%); height:min(820px,calc(100dvh - 36px)); position:relative; overflow:hidden; border:1px solid var(--line); border-radius:38px; background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.028)); box-shadow:var(--shadow); display:grid; grid-template-columns:.95fr 1.05fr; grid-template-rows:auto 1fr auto; gap:18px; padding:clamp(20px,3vw,42px)}
.hub-window::before{content:""; position:absolute; right:-17%; top:-31%; width:58%; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,color-mix(in srgb,var(--accent) 22%, transparent),transparent 65%); border:1px solid color-mix(in srgb,var(--accent) 32%, transparent)}
.hub-window::after{content:""; position:absolute; left:-8%; bottom:-20%; width:38%; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,color-mix(in srgb,var(--accent2) 16%, transparent),transparent 68%)}
.window-dots{grid-column:1/-1; display:flex; gap:9px; position:relative; z-index:1}.window-dots span{width:13px;height:13px;border-radius:50%;display:block}.window-dots span:nth-child(1){background:#ff5f57}.window-dots span:nth-child(2){background:#ffbd2e}.window-dots span:nth-child(3){background:#28c840}
.hub-left{position:relative; z-index:1; align-self:center; min-width:0}.hub-kicker{font:900 clamp(.78rem,1.2vw,1rem) var(--mono); letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin-bottom:18px}.hub-left h1{font-size:clamp(3.7rem,8vw,8.9rem); line-height:.78; letter-spacing:-.09em; margin:0 0 22px; color:var(--text)}.hub-role{color:var(--text2); font-size:clamp(1.05rem,1.6vw,1.38rem); font-weight:800; max-width:680px; margin:0 0 26px}.hub-prompt{display:inline-flex; flex-wrap:wrap; gap:6px; align-items:center; border:1px solid var(--line); border-radius:18px; padding:13px 16px; background:rgba(0,0,0,.18); font:900 .95rem var(--mono); color:var(--text)}.hub-prompt .u,.terminal-line .u,.term-prompt .u{color:var(--accent2)}.hub-prompt .h,.terminal-line .h,.term-prompt .h{color:var(--accent)}.hub-prompt .p,.terminal-line .p,.term-prompt .p{color:var(--muted)}.cursor-text{color:var(--text)}.cursor-text::after{content:"_"; animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}
.hub-portals{position:relative; z-index:1; align-self:center; display:grid; gap:18px}.portal{min-height:220px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:22px; border:1px solid var(--line); border-radius:32px; padding:26px; background:linear-gradient(135deg,rgba(255,255,255,.105),rgba(255,255,255,.045)); box-shadow:0 18px 52px rgba(0,0,0,.25); transition:.22s ease; color:var(--text)}.portal:hover{transform:translateY(-4px); border-color:var(--line2); background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.06))}.portal-index{font:900 clamp(2.8rem,4vw,4.4rem) var(--mono); color:color-mix(in srgb,var(--accent) 75%, var(--text)); line-height:1}.portal-type{display:block; font:900 .82rem var(--mono); letter-spacing:.15em; color:var(--accent2); margin-bottom:8px}.portal strong{display:block; font-size:clamp(1.55rem,2.8vw,2.45rem); line-height:1.08; color:var(--text); margin-bottom:8px}.portal p{margin:0; color:var(--text2); font-size:clamp(.98rem,1.3vw,1.12rem); line-height:1.55; max-width:560px}.portal-enter{align-self:end; color:var(--accent); font:900 .92rem var(--mono); white-space:nowrap}.hub-foot{grid-column:1/-1; position:relative; z-index:1; display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; color:var(--muted); font:800 .84rem var(--mono)}

/* APP TOPBAR */
.app-topbar{position:sticky; top:0; z-index:60; background:color-mix(in srgb,var(--panel) 92%, transparent); border-bottom:1px solid var(--line); backdrop-filter:blur(20px); box-shadow:0 14px 40px rgba(0,0,0,.22)}
.bar-inner{width:min(var(--max),calc(100% - 28px)); margin:0 auto; min-height:62px; display:flex; align-items:center; gap:14px}.brand-link{font:950 .95rem var(--mono); color:var(--text); letter-spacing:.03em; padding:9px 12px; border-radius:999px; background:rgba(255,255,255,.06); border:1px solid var(--line)}.bar-inner nav{margin-left:auto; display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end}.bar-inner a:not(.brand-link),.bar-inner button{color:var(--text2); border:1px solid transparent; border-radius:999px; padding:9px 12px; font:850 .78rem var(--mono); transition:.16s ease}.bar-inner a:not(.brand-link):hover,.bar-inner button:hover{color:var(--text); background:rgba(255,255,255,.07); border-color:var(--line2)}

/* COMMON CARDS */
.cv-card,.section-card,.mini-card,.project-card{border:1px solid var(--line); background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.035)); box-shadow:0 16px 42px rgba(0,0,0,.18)}
.cv-card,.section-card{border-radius:28px; padding:24px}.cv-card h3,.section-head h2{margin:0 0 14px; color:var(--text); font-size:1.16rem}.cv-card p,.cv-card li,.mini-card p,.project-card p,.dense-list li{color:var(--text2); line-height:1.72}.cv-card ul,.dense-list{margin:.25rem 0 0 1.1rem; padding:0}.cv-card li,.dense-list li{margin:.28rem 0}.subhead{margin-top:20px!important}
.link-row{display:flex; gap:8px; flex-wrap:wrap; margin-top:12px}.link-row a{display:inline-flex; align-items:center; border:1px solid var(--line2); color:var(--text); background:rgba(255,255,255,.06); border-radius:999px; padding:8px 12px; font:900 .78rem var(--mono)}.link-row a:hover{border-color:var(--accent); box-shadow:0 8px 28px color-mix(in srgb,var(--accent) 18%, transparent)}

/* RH */
.rh-hero{display:grid; grid-template-columns:230px minmax(0,1fr); gap:22px; align-items:stretch; margin-bottom:18px; border:1px solid var(--line); border-radius:34px; background:linear-gradient(135deg,rgba(255,255,255,.09),rgba(255,255,255,.035)); box-shadow:var(--shadow); padding:24px}.rh-photo{border-radius:26px; border:1px dashed var(--line2); background:rgba(255,255,255,.04); display:grid; place-items:center; min-height:230px; overflow:hidden}.rh-photo img{width:100%; height:100%; object-fit:cover}.section-kicker{font:900 .78rem var(--mono); color:var(--accent2); text-transform:uppercase; letter-spacing:.16em; margin:0 0 8px}.rh-intro h1{font-size:clamp(3.2rem,7vw,6.4rem); line-height:.85; margin:0; letter-spacing:-.08em}.rh-intro h2{color:var(--accent); margin:12px 0 12px; font-size:1.22rem}.rh-intro p{color:var(--text2); line-height:1.75; max-width:850px}.contact-strip{display:flex; gap:8px; flex-wrap:wrap; margin-top:14px}.contact-strip span{border:1px solid var(--line); background:rgba(255,255,255,.055); border-radius:999px; padding:8px 11px; color:var(--text2); font:800 .8rem var(--mono)}.rh-layout{display:grid; grid-template-columns:repeat(12,1fr); gap:18px}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.timeline{display:grid; gap:18px}.timeline-item{border-left:3px solid var(--accent); padding-left:16px}.date{font:900 .78rem var(--mono); color:var(--accent3); margin-bottom:5px}.timeline-item h4{margin:0 0 7px; color:var(--text); font-size:1.03rem}.skill-list{display:grid; gap:12px}.skill-list div{border:1px solid var(--line); border-radius:18px; padding:13px; background:rgba(255,255,255,.04)}.skill-list b{display:block; margin-bottom:4px}.skill-list span{color:var(--text2); line-height:1.55}.project-list{display:grid; gap:14px}.project-list article{border:1px solid var(--line); border-radius:20px; padding:15px; background:rgba(255,255,255,.04)}.project-list h4{margin:0 0 6px; color:var(--text)}.project-list p{margin:.25rem 0; color:var(--text2)}

/* TECH */
.tech-shell{border:1px solid var(--line); border-radius:34px; overflow:hidden; background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.028)); box-shadow:var(--shadow); display:grid; grid-template-columns:330px minmax(0,1fr); align-items:stretch}.tech-aside{position:relative; min-height:100%; background:linear-gradient(180deg,color-mix(in srgb,var(--panel3) 92%,#000),color-mix(in srgb,var(--panel) 92%,#000)); border-right:1px solid var(--line); padding:22px}.tech-aside::before{content:""; position:absolute; inset:0; background:radial-gradient(circle at 24% 0%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 24rem); pointer-events:none}.aside-sticky{position:sticky; top:84px; display:grid; gap:16px; z-index:1}.profile-visual{width:100%; border-radius:24px; border:1px dashed var(--line2); background:rgba(255,255,255,.05); min-height:240px; object-fit:cover}.identity-box,.aside-card{border:1px solid var(--line); border-radius:22px; padding:16px; background:rgba(255,255,255,.055)}.identity-box h2{font-size:1.6rem; line-height:1; margin:0 0 8px; letter-spacing:-.04em}.identity-box p,.clean-list{color:var(--text2); margin:0}.clean-list{list-style:none; padding:0; display:grid; gap:8px}.clean-list.compact{gap:5px}.pill-row{display:flex; gap:8px; flex-wrap:wrap}.pill-row span{border:1px solid var(--line2); border-radius:999px; padding:7px 10px; color:var(--text); font:900 .75rem var(--mono); background:rgba(255,255,255,.06)}.tech-content{padding:clamp(22px,4vw,46px); min-width:0}.terminal-line{font:900 clamp(.8rem,1.4vw,.98rem) var(--mono); display:flex; flex-wrap:wrap; gap:6px; color:var(--text); margin-bottom:18px}.terminal-line .c{color:var(--text)}.tech-content h1{font-size:clamp(3.9rem,10vw,9rem); line-height:.79; letter-spacing:-.095em; margin:0; color:var(--text)}.tech-role{font:900 clamp(1rem,2vw,1.4rem) var(--mono); color:var(--accent2); margin:18px 0 14px}.tech-lead{color:var(--text2); font-size:clamp(1.02rem,1.55vw,1.2rem); line-height:1.75; max-width:920px}.stat-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:24px 0}.stat-grid article{border:1px solid var(--line); background:rgba(255,255,255,.055); border-radius:22px; padding:18px}.stat-grid strong{display:block; font-size:2.2rem; line-height:1}.stat-grid span{color:var(--muted); font:850 .83rem var(--mono)}.section-card{margin-top:18px}.section-head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:12px}.section-head span{font:900 .78rem var(--mono); color:var(--accent2); letter-spacing:.08em}.section-head h2{margin:0; font-size:1.5rem}.split-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px}.split-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.mini-card,.project-card{border-radius:22px; padding:16px; background:rgba(255,255,255,.045)}.mini-card h3,.project-card h3{margin:0 0 8px; color:var(--text); font-size:1.02rem}.mini-card p,.project-card p{margin:.2rem 0}.project-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px}.project-tag{font:900 .75rem var(--mono); color:var(--accent3); margin-bottom:8px}.contact-grid{display:flex; flex-wrap:wrap; gap:10px}.contact-grid span{border:1px solid var(--line); background:rgba(255,255,255,.05); border-radius:999px; padding:9px 12px; color:var(--text2); font:850 .82rem var(--mono)}.highlight-section{outline:3px solid color-mix(in srgb,var(--accent) 72%, transparent); outline-offset:4px; box-shadow:0 0 0 8px color-mix(in srgb,var(--accent) 12%, transparent), var(--shadow)}

/* TERMINAL OVERLAY */
.terminal-launch{position:fixed; right:22px; bottom:22px; z-index:70; display:inline-flex; align-items:center; gap:10px; border:1px solid var(--line2); border-radius:999px; background:color-mix(in srgb,var(--panel3) 88%,#000); color:var(--text); padding:13px 17px; font:900 .86rem var(--mono); box-shadow:var(--shadow)}.terminal-launch span{width:9px;height:9px;border-radius:50%;background:var(--accent2);box-shadow:0 0 18px var(--accent2)}.terminal-launch:hover{border-color:var(--accent); transform:translateY(-1px)}.terminal-window{position:fixed; right:24px; bottom:82px; width:min(760px,calc(100vw - 40px)); height:min(560px,calc(100dvh - 110px)); z-index:80; display:grid; grid-template-rows:auto 1fr auto; border:1px solid var(--line2); border-radius:18px; background:#080b10; box-shadow:0 35px 120px rgba(0,0,0,.62); overflow:hidden}.terminal-window.hidden{display:none!important}.terminal-titlebar{height:46px; background:linear-gradient(180deg,#2c2f38,#20232b); border-bottom:1px solid #3d414e; display:flex; align-items:center; gap:12px; padding:0 12px; user-select:none}.terminal-dots{display:flex; gap:8px}.terminal-dot{width:13px;height:13px;border-radius:50%;padding:0}.terminal-dot.close{background:#ff5f57}.terminal-dot.min{background:#ffbd2e}.terminal-dot.max{background:#28c840}.terminal-title{font:800 .78rem var(--mono); color:#f5f7fb; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}.terminal-help{border:1px solid rgba(255,255,255,.18); color:#f5f7fb; border-radius:999px; padding:5px 9px; font:900 .72rem var(--mono); background:rgba(255,255,255,.06)}.terminal-feed{overflow:auto; padding:16px; background:#06080d; color:#f3fff7; font:500 .88rem var(--mono); line-height:1.55}.term-entry{margin-bottom:14px}.term-prompt{color:#f5f7fb; font:850 .86rem var(--mono)}.term-prompt .u{color:#63e6be}.term-prompt .h{color:#ffb86b}.term-prompt .p{color:#aeb9c8}.term-prompt .c{color:#fff}.term-output{margin-top:5px; color:#dce7f7}.term-output a{color:#8be9fd; text-decoration:underline}.terminal-input-row{display:flex; align-items:center; gap:10px; border-top:1px solid #303541; background:#05070b; padding:12px 14px}.terminal-input-row input{flex:1; min-width:0; background:transparent; border:0; outline:0; color:#fff; font:900 .9rem var(--mono)}.terminal-window.minimized{height:46px; grid-template-rows:auto; overflow:hidden}.terminal-window.minimized .terminal-feed,.terminal-window.minimized .terminal-input-row{display:none}.terminal-window.terminal-max{width:calc(100vw - 32px);height:calc(100dvh - 32px);right:16px!important;bottom:16px!important}

@media (max-width:1100px){
  .hub-window{grid-template-columns:1fr; height:min(820px,calc(100dvh - 28px)); align-content:center}.hub-left h1{font-size:clamp(3.2rem,11vw,6.4rem)}.hub-portals{grid-template-columns:1fr 1fr}.portal{grid-template-columns:1fr; min-height:190px}.portal-index{font-size:2.4rem}.hub-foot{display:none}.tech-shell{grid-template-columns:1fr}.tech-aside{border-right:0;border-bottom:1px solid var(--line)}.aside-sticky{position:relative;top:auto;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.profile-visual{min-height:220px}.split-grid.three,.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rh-layout .span-4,.rh-layout .span-5,.rh-layout .span-6,.rh-layout .span-7,.rh-layout .span-8{grid-column:span 12}.rh-hero{grid-template-columns:1fr}.rh-photo{max-width:320px}.bar-inner{align-items:flex-start; padding:8px 0; flex-direction:column}.bar-inner nav{margin-left:0; justify-content:flex-start}.app-topbar{position:sticky;top:0}
}
@media (max-width:760px){
  .page-shell{width:min(100% - 16px,var(--max)); padding:18px 0 48px}.hub{padding:10px}.hub-window{height:calc(100dvh - 20px); border-radius:28px; padding:18px; gap:12px}.hub-left h1{font-size:clamp(3.4rem,17vw,5.8rem); margin-bottom:12px}.hub-role{font-size:.98rem; margin-bottom:14px}.hub-kicker{font-size:.68rem; margin-bottom:10px}.hub-prompt{display:none}.hub-portals{grid-template-columns:1fr;gap:10px}.portal{min-height:142px;padding:16px;border-radius:22px;gap:7px}.portal-index{position:absolute;right:16px;top:12px;font-size:1.5rem;opacity:.68}.portal strong{font-size:1.35rem}.portal p{font-size:.9rem; padding-right:38px}.portal-enter{font-size:.78rem}.window-dots span{width:11px;height:11px}.app-topbar{border-bottom-color:var(--line)}.brand-link{font-size:.82rem}.bar-inner nav a,.bar-inner nav button{font-size:.72rem; padding:7px 9px}.tech-content{padding:18px}.tech-content h1,.rh-intro h1{font-size:3.7rem}.stat-grid{grid-template-columns:1fr}.split-grid,.split-grid.three,.project-grid,.aside-sticky{grid-template-columns:1fr}.section-card,.cv-card{padding:18px;border-radius:22px}.rh-hero{padding:18px;border-radius:26px}.terminal-window{right:8px;bottom:70px;width:calc(100vw - 16px);height:min(560px,calc(100dvh - 92px))}.terminal-launch{right:12px;bottom:12px}.terminal-input-row{align-items:flex-start;flex-direction:column}.terminal-input-row input{width:100%}
}
@media (max-height:720px) and (min-width:900px){
  .hub-window{height:calc(100dvh - 24px); padding:22px 28px}.hub-left h1{font-size:clamp(3.2rem,7vw,6.4rem)}.hub-role{font-size:1rem}.portal{min-height:170px;padding:20px}.portal strong{font-size:1.6rem}.portal p{font-size:.94rem}.hub-kicker{margin-bottom:10px}.hub-prompt{padding:10px 12px}.hub-foot{font-size:.76rem}
}

/* Terminal easter eggs */
.terminal-art,
.snake-board,
.matrix-rain,
.pong-board{
  margin:8px 0 0;
  padding:12px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:14px;
  background:rgba(0,0,0,.28);
  color:#eafff2;
  overflow:auto;
  white-space:pre;
  font:800 .82rem var(--mono);
  line-height:1.25;
}
.snake-game{display:grid;gap:8px;margin-top:6px}.snake-hud{display:inline-flex;align-items:center;gap:8px;width:max-content;max-width:100%;border:1px solid rgba(99,230,190,.28);border-radius:999px;padding:6px 10px;background:rgba(99,230,190,.08);color:#d7fff1;font:900 .74rem var(--mono)}.snake-board{color:#8dffb2;text-shadow:0 0 14px rgba(99,230,190,.2)}.matrix-rain{color:#62ff93;text-shadow:0 0 16px rgba(98,255,147,.22)}.pong-board{color:#f8fbff}.confetti-piece{position:fixed;top:-12px;z-index:9999;width:9px;height:14px;border-radius:3px;background:linear-gradient(135deg,#63e6be,#ffb86b);animation:confettiFall 1.55s ease-in forwards;pointer-events:none}.confetti-piece:nth-child(3n){background:linear-gradient(135deg,#8be9fd,#bd93f9)}.confetti-piece:nth-child(4n){background:linear-gradient(135deg,#ff79c6,#f1fa8c)}@keyframes confettiFall{0%{transform:translate3d(0,-20px,0) rotate(0deg);opacity:1}100%{transform:translate3d(var(--x),105vh,0) rotate(var(--rot));opacity:0}}.glitch-mode{animation:pageGlitch .85s steps(2,end)}@keyframes pageGlitch{0%,100%{filter:none;transform:none}18%{filter:hue-rotate(60deg) contrast(1.25);transform:translateX(2px)}32%{filter:hue-rotate(-45deg) saturate(1.4);transform:translateX(-2px)}52%{filter:contrast(1.35) brightness(1.05);transform:translateY(1px)}72%{filter:hue-rotate(120deg);transform:translateX(1px)}}
@media (max-width:720px){.snake-board,.matrix-rain,.pong-board,.terminal-art{font-size:.68rem;padding:10px}.snake-hud{font-size:.68rem;width:100%}}
.term-output .dir{color:#8be9fd;font-weight:900}.term-output .muted{color:#aeb9c8}


/* Full-terminal mini apps */
.terminal-window{position:fixed}
.game-overlay{
  position:absolute;
  inset:46px 0 0;
  z-index:12;
  display:grid;
  grid-template-rows:auto 1fr auto;
  background:linear-gradient(180deg,#05070b,#080b10 70%,#05070b);
  color:#f4fff9;
}
.game-overlay.hidden{display:none!important}
.game-topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 14px;
  border-bottom:1px solid #2d3340;
  background:#0b0f17;
  font:900 .8rem var(--mono);
  color:#fff;
}
.game-topbar strong{letter-spacing:.12em;text-transform:uppercase;color:#63e6be;margin-right:10px}
.game-topbar span{color:#aeb9c8}
.game-topbar button{
  border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.06);
  color:#fff;
  border-radius:10px;
  padding:5px 10px;
  font:900 .8rem var(--mono);
  cursor:pointer;
}
.game-screen{
  margin:0;
  padding:18px;
  overflow:auto;
  color:#f4fff9;
  background:radial-gradient(circle at 50% 0,rgba(99,230,190,.08),transparent 48%),#06080d;
  font:900 clamp(.72rem,1.45vw,.95rem) var(--mono);
  line-height:1.28;
  white-space:pre;
  text-shadow:0 0 12px rgba(99,230,190,.12);
}
.game-footer{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  min-height:52px;
  padding:10px 14px;
  border-top:1px solid #2d3340;
  background:#05070b;
  color:#e8f5ff;
  font:850 .82rem var(--mono);
}
.game-inline-input{
  width:120px;
  border:1px solid #3d4658;
  border-radius:10px;
  background:#0c111b;
  color:#fff;
  padding:9px 10px;
  outline:none;
  font:900 .9rem var(--mono);
  text-transform:uppercase;
}
.game-footer button{
  border:1px solid #3d4658;
  border-radius:10px;
  background:#121826;
  color:#fff;
  padding:9px 12px;
  cursor:pointer;
  font:900 .8rem var(--mono);
}
.terminal-window.game-open .terminal-feed,
.terminal-window.game-open .terminal-input-row{visibility:hidden}
@media (max-width:720px){.game-screen{font-size:.62rem;padding:12px}.game-footer{align-items:flex-start;flex-direction:column}.game-inline-input{width:100%}}

/* --- Polish pass: richer tech sidebar + RH visual portfolio --- */
.aside-metrics{
  display:grid;
  gap:10px;
}
.metric-line{
  display:grid;
  grid-template-columns:74px minmax(0,1fr);
  gap:10px;
  align-items:baseline;
  padding:9px 0;
  border-bottom:1px solid color-mix(in srgb,var(--line) 70%, transparent);
}
.metric-line:last-child{border-bottom:0}
.metric-line strong{
  color:var(--accent2);
  font:950 1.25rem var(--mono);
  letter-spacing:-.04em;
}
.metric-line span{
  color:var(--text2);
  font-size:.93rem;
  line-height:1.35;
}
.pill-row.stacked span{
  border-color:color-mix(in srgb,var(--accent2) 55%, var(--line));
  background:color-mix(in srgb,var(--accent2) 10%, transparent);
}
.tech-aside{
  background:
    linear-gradient(180deg,color-mix(in srgb,var(--panel3) 96%,#000),color-mix(in srgb,var(--panel) 98%,#000)),
    radial-gradient(circle at 20% 0%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 24rem);
}
.aside-card,.identity-box{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 14px 28px rgba(0,0,0,.10);
}
.aside-card:hover{
  border-color:color-mix(in srgb,var(--accent) 55%, var(--line));
  transform:translateY(-1px);
  transition:.18s ease;
}
.clean-list.compact li{
  position:relative;
  padding-left:13px;
}
.clean-list.compact li::before{
  content:"";
  position:absolute;
  left:0;
  top:.7em;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--accent2);
  box-shadow:0 0 12px color-mix(in srgb,var(--accent2) 65%, transparent);
}

.rh-impact-row{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-top:18px;
}
.rh-impact-row div{
  border:1px solid var(--line);
  border-radius:18px;
  padding:13px 14px;
  background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.04));
}
.rh-impact-row strong{
  display:block;
  color:var(--text);
  font:950 1.45rem var(--mono);
  line-height:1;
}
.rh-impact-row span{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font:800 .77rem var(--mono);
  line-height:1.35;
}
.rh-showcase{
  display:grid;
  grid-template-columns:.72fr 1.28fr;
  gap:20px;
  align-items:stretch;
  margin:18px 0;
  border:1px solid var(--line);
  border-radius:32px;
  background:
    radial-gradient(circle at 78% 20%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 22rem),
    linear-gradient(135deg,rgba(255,255,255,.08),rgba(255,255,255,.035));
  padding:22px;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.showcase-copy{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:0;
}
.showcase-copy h3{
  margin:0 0 12px;
  color:var(--text);
  font-size:clamp(1.8rem,3vw,3rem);
  line-height:.98;
  letter-spacing:-.055em;
}
.showcase-copy p:not(.section-kicker){
  color:var(--text2);
  line-height:1.72;
  margin:.2rem 0;
}
.showcase-grid{
  display:grid;
  grid-template-columns:1.15fr .85fr;
  grid-template-rows:1fr 1fr;
  gap:13px;
  min-height:340px;
}
.shot-card{
  margin:0;
  position:relative;
  border:1px solid var(--line);
  border-radius:24px;
  overflow:hidden;
  min-height:160px;
  background:rgba(0,0,0,.16);
  box-shadow:0 16px 32px rgba(0,0,0,.16);
}
.shot-card.large{grid-row:span 2}
.shot-card img{
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(1.04) contrast(1.04);
}
.shot-card figcaption{
  position:absolute;
  left:12px;
  right:12px;
  bottom:12px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:999px;
  padding:8px 11px;
  color:#fff;
  background:rgba(0,0,0,.52);
  backdrop-filter:blur(10px);
  font:900 .78rem var(--mono);
  text-shadow:0 2px 10px rgba(0,0,0,.5);
}
.rh-page .project-list article{
  position:relative;
  overflow:hidden;
}
.rh-page .project-list article::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:4px;
  background:linear-gradient(180deg,var(--accent),var(--accent2));
  opacity:.85;
}
.rh-page .project-list article > *{position:relative}

@media (max-width:1100px){
  .rh-showcase{grid-template-columns:1fr}
  .showcase-grid{min-height:300px}
  .rh-impact-row{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
  .rh-impact-row{grid-template-columns:1fr 1fr}
  .rh-showcase{padding:16px;border-radius:24px}
  .showcase-grid{grid-template-columns:1fr;grid-template-rows:auto;min-height:0}
  .shot-card.large{grid-row:auto}
  .shot-card{min-height:190px}
  .metric-line{grid-template-columns:64px minmax(0,1fr)}
}

/* --- Responsive/product hardening pass --- */
html{scroll-padding-top:86px}
img{max-width:100%;display:block}
.app-page{padding-top:64px}
.app-topbar{position:fixed;left:0;right:0;top:0;z-index:90}
.bar-inner{min-height:64px;align-items:center;flex-direction:row;overflow:hidden}
.bar-inner nav{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;white-space:nowrap;max-width:100%}
.bar-inner nav::-webkit-scrollbar{display:none}
.bar-inner a:not(.brand-link),.bar-inner button{flex:0 0 auto}
.brand-link{flex:0 0 auto}

/* Hub: lighter choices, no meta footer */
.hub-window{grid-template-rows:auto 1fr;isolation:isolate}
.hub-foot{display:none!important}
.portal{min-height:185px}
.portal p{max-width:none;color:var(--muted);font-weight:700}
.portal-enter{text-transform:lowercase}

/* Tech/RH mobile resilience */
.tech-shell{min-width:0}
.tech-aside,.tech-content,.rh-page,.rh-layout,.cv-card,.section-card,.mini-card,.project-card{min-width:0}
.tech-content{overflow-wrap:anywhere}.cv-card,.section-card{overflow-wrap:anywhere}
.terminal-line,.term-prompt{overflow-wrap:anywhere}

/* Terminal games: compact and playable on touch screens */
.game-screen{font-size:clamp(.58rem,1.05vw,.86rem);line-height:1.18;tab-size:2}
.touch-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-left:auto}
.touch-controls button{border:1px solid #3d4658;border-radius:12px;background:#111827;color:#fff;min-width:42px;min-height:38px;padding:8px 12px;font:950 1rem var(--mono);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.touch-controls button:active{transform:translateY(1px);background:#1f2937}
.touch-controls.dpad{display:grid;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,38px);gap:6px;grid-template-areas:". up ." "left down right"}
.touch-controls.dpad [data-game-key="ArrowUp"]{grid-area:up}.touch-controls.dpad [data-game-key="ArrowLeft"]{grid-area:left}.touch-controls.dpad [data-game-key="ArrowDown"]{grid-area:down}.touch-controls.dpad [data-game-key="ArrowRight"]{grid-area:right}

@media (max-width:1100px){
  .bar-inner{align-items:center;flex-direction:row;padding:0;gap:10px}
  .bar-inner nav{margin-left:auto;justify-content:flex-start}
  .hub-window{height:calc(100dvh - 28px);grid-template-columns:1fr;grid-template-rows:auto auto 1fr;align-content:stretch;gap:14px}
  .hub-left{align-self:end}.hub-portals{align-self:stretch;grid-template-columns:1fr 1fr}
  .portal{min-height:0;height:100%;align-content:center}
}

@media (max-width:760px){
  html{scroll-padding-top:70px}
  .app-page{padding-top:58px}
  .page-shell{width:calc(100% - 14px);padding:12px 0 38px}
  .bar-inner{width:calc(100% - 14px);min-height:58px;gap:8px}
  .brand-link{font-size:.72rem;padding:7px 9px;max-width:42vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bar-inner nav a,.bar-inner nav button{font-size:.68rem;padding:7px 9px}

  .page-hub{height:100dvh;overflow:hidden}
  .hub{height:100dvh;padding:8px;align-items:center}
  .hub-window{height:calc(100dvh - 16px);border-radius:22px;padding:14px;gap:10px;grid-template-columns:1fr;grid-template-rows:auto auto 1fr}
  .window-dots{gap:7px}.window-dots span{width:10px;height:10px}
  .hub-left{align-self:end}.hub-kicker{font-size:.58rem;margin-bottom:7px;letter-spacing:.14em}.hub-left h1{font-size:clamp(2.55rem,14.5vw,4.65rem);line-height:.82;margin-bottom:8px}.hub-role{font-size:.86rem;margin:0;color:var(--muted)}
  .hub-portals{align-self:stretch;display:grid;grid-template-columns:1fr;gap:8px;min-height:0}.portal{height:auto;min-height:0;grid-template-columns:1fr auto;padding:14px;border-radius:19px;gap:10px}.portal-index{position:static;font-size:1.3rem;opacity:.85;grid-column:2;grid-row:1 / span 2}.portal-type{font-size:.64rem;margin-bottom:5px}.portal strong{font-size:1.18rem;margin-bottom:4px}.portal p{font-size:.78rem;line-height:1.25;padding-right:0}.portal-enter{display:none}.hub-window::before{width:78%;right:-30%;top:-18%}.hub-window::after{width:60%;bottom:-25%}

  .rh-hero{grid-template-columns:1fr;padding:14px;border-radius:22px;gap:14px}.rh-photo{min-height:160px;max-height:220px}.rh-intro h1{font-size:clamp(2.25rem,13vw,3.6rem)}.rh-intro h2{font-size:1rem}.rh-intro p{font-size:.96rem;line-height:1.62}.contact-strip span{font-size:.68rem;padding:7px 9px}.rh-impact-row{grid-template-columns:1fr 1fr;gap:8px}.rh-impact-row div{padding:10px}.rh-impact-row strong{font-size:1.15rem}.rh-impact-row span{font-size:.68rem}.rh-layout{gap:12px}.rh-showcase{margin:12px 0;padding:14px;border-radius:22px}.showcase-copy h3{font-size:1.55rem}.showcase-copy p:not(.section-kicker){font-size:.94rem;line-height:1.6}.shot-card{min-height:155px;border-radius:18px}.shot-card figcaption{font-size:.66rem;white-space:normal;border-radius:14px}

  .tech-shell{display:flex;flex-direction:column;border-radius:22px}.tech-content{order:1;padding:14px}.tech-aside{order:2;padding:14px;border-top:1px solid var(--line);border-bottom:0}.aside-sticky{display:grid;grid-template-columns:1fr;gap:12px;position:relative;top:auto}.profile-visual{min-height:180px;max-height:240px}.identity-box,.aside-card{border-radius:18px;padding:13px}.mono-label{font-size:.64rem}.tech-content h1{font-size:clamp(3rem,18vw,4.8rem);line-height:.82}.tech-role{font-size:.9rem;line-height:1.45}.tech-lead{font-size:.96rem;line-height:1.62}.stat-grid{grid-template-columns:1fr;gap:8px;margin:16px 0}.stat-grid article{padding:14px;border-radius:18px}.stat-grid strong{font-size:1.55rem}.section-card{margin-top:12px}.section-head h2{font-size:1.25rem}.split-grid,.split-grid.three,.project-grid{grid-template-columns:1fr;gap:10px}.mini-card,.project-card{border-radius:18px;padding:13px}.dense-list li,.mini-card p,.project-card p,.cv-card li,.cv-card p{line-height:1.62}.contact-grid span{font-size:.7rem;border-radius:14px;white-space:normal}

  .terminal-launch{right:10px;bottom:10px;padding:11px 13px;font-size:.74rem}
  .terminal-window{left:7px;right:7px!important;bottom:62px!important;width:auto;height:calc(100dvh - 76px);border-radius:14px}
  .terminal-window.terminal-max{left:7px;right:7px!important;bottom:7px!important;width:auto;height:calc(100dvh - 14px)}
  .terminal-titlebar{height:42px;padding:0 10px}.terminal-dot{width:11px;height:11px}.terminal-title{font-size:.68rem}.terminal-help{font-size:.65rem;padding:5px 7px}.terminal-feed{font-size:.76rem;padding:12px}.terminal-input-row{display:grid;grid-template-columns:1fr;gap:6px;padding:10px}.term-prompt{font-size:.72rem}.terminal-input-row input{font-size:.82rem;width:100%}
  .game-overlay{inset:42px 0 0}.game-topbar{padding:8px 10px;font-size:.68rem}.game-screen{font-size:clamp(.48rem,2.15vw,.64rem);padding:8px;line-height:1.12;overflow:auto}.game-footer{min-height:48px;padding:8px 10px;font-size:.7rem}.touch-controls{margin-left:0;width:100%;justify-content:center}.game-inline-input{width:100%;max-width:180px}
}

@media (max-height:650px) and (max-width:760px){
  .hub-window{padding:12px;gap:8px}.hub-left h1{font-size:clamp(2.2rem,12vw,3.6rem);margin-bottom:5px}.hub-role{display:none}.portal{padding:11px 12px}.portal p{display:none}.portal strong{font-size:1.08rem}.portal-type{margin-bottom:3px}.window-dots span{width:9px;height:9px}
}

@media (max-width:390px){
  .hub-left h1{font-size:clamp(2.15rem,13vw,3.4rem)}.portal strong{font-size:1.05rem}.portal-index{font-size:1.1rem}.bar-inner nav a{font-size:.63rem;padding:7px 8px}.brand-link{max-width:38vw}
  .game-screen{font-size:clamp(.43rem,2vw,.58rem)}
}
