:root[data-theme="dark"]{
  --bg:#0a0e17; --bg-alt:#0d1220; --surface:#111826; --surface-2:#161f30;
  --text:#dceeff; --text-dim:#7086a3; --text-faint:#3f4d63;
  --cyan:#00fff2; --cyan-dim:#0a8a85;
  --magenta:#ff2e88; --magenta-dim:#8a1550;
  --amber:#ffb700;
  --border:#1c2740; --border-glow:rgba(0,255,242,0.35);
  --shadow-glow:0 0 24px rgba(0,255,242,0.15);
  --chip-bg:rgba(0,255,242,0.10);
  --grid-dot:rgba(0,255,242,0.14);
  --shadow-glow-magenta:0 0 24px rgba(255,46,136,0.28);
}
:root[data-theme="light"]{
  --bg:#eef2f7; --bg-alt:#e4eaf2; --surface:#ffffff; --surface-2:#f4f7fb;
  --text:#0d1420; --text-dim:#4a5872; --text-faint:#8a97ad;
  --cyan:#0891b2; --cyan-dim:#0891b2;
  --magenta:#c0157a; --magenta-dim:#c0157a;
  --amber:#b5790a;
  --border:#d3dbe6; --border-glow:rgba(8,145,178,0.25);
  --shadow-glow:0 0 18px rgba(8,145,178,0.08);
  --chip-bg:rgba(8,145,178,0.08);
  --grid-dot:rgba(8,145,178,0.16);
  --shadow-glow-magenta:0 0 18px rgba(192,21,122,0.18);
}

* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  background:
    radial-gradient(var(--grid-dot) 1px, transparent 1px) 0 0/28px 28px,
    var(--bg);
  background-attachment:fixed;
  color:var(--text);
  font-family:'JetBrains Mono', monospace;
  line-height:1.65;
  transition:background .3s ease, color .3s ease;
  overflow-x:hidden;
}

h1,h2,h3,.display { font-family:'Rajdhani', sans-serif; font-weight:700; letter-spacing:0.02em; }

::selection { background:var(--cyan); color:var(--bg); }

/* Scanline overlay — subtle, ambient */
.scanlines {
  position:fixed; inset:0; pointer-events:none; z-index:9999;
  background:repeating-linear-gradient(
    to bottom, rgba(255,255,255,0.015) 0px, rgba(255,255,255,0.015) 1px,
    transparent 1px, transparent 3px
  );
  opacity:0.5;
}
:root[data-theme="light"] .scanlines { opacity:0.15; }

/* Nav */
nav {
  position:sticky; top:0; z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.1rem 2.5rem;
  background:rgba(10,14,23,0.85);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--border);
}
:root[data-theme="light"] nav { background:rgba(238,242,247,0.85); }
.logo { font-family:'Rajdhani',sans-serif; font-size:1.15rem; font-weight:700; color:var(--cyan); letter-spacing:0.06em; }
.logo .cursor { display:inline-block; width:8px; height:1.1rem; background:var(--cyan); margin-left:2px; vertical-align:-3px; animation:blink 1.1s steps(1) infinite; }
@keyframes blink { 50% { opacity:0; } }
.nav-links { display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:0.9rem 1.6rem; }
.nav-links a { color:var(--text-dim); text-decoration:none; font-size:0.85rem; letter-spacing:0.03em; transition:color .2s; position:relative; white-space:nowrap; }
.nav-links a:hover { color:var(--cyan); }
.nav-links a::before { content:'// '; color:var(--text-faint); }
.nav-hamburger { display:none; }

.theme-toggle {
  display:flex; align-items:center; gap:8px;
  background:var(--surface); border:1px solid var(--border);
  border-radius:20px; padding:4px; cursor:pointer;
  font-size:0.7rem; color:var(--text-dim);
}
.theme-toggle .track { position:relative; width:36px; height:18px; background:var(--bg-alt); border-radius:10px; border:1px solid var(--border); }
.theme-toggle .knob {
  position:absolute; top:1px; left:1px; width:14px; height:14px; border-radius:50%;
  background:var(--cyan); box-shadow:0 0 8px var(--cyan);
  transition:transform .25s ease;
}
:root[data-theme="light"] .theme-toggle .knob { transform:translateX(18px); background:var(--magenta); box-shadow:0 0 8px var(--magenta); }

/* Hero */
.hero {
  min-height:56vh; display:flex; flex-direction:column; justify-content:center;
  padding:2rem 2.5rem; max-width:900px; margin:0 auto; position:relative;
}
.hero .eyebrow { color:var(--text-dim); font-size:0.85rem; letter-spacing:0.02em; margin-bottom:1rem; }
.term-prompt { color:var(--magenta); }
.cmd { color:var(--cyan); }
.hero-identity { display:flex; flex-direction:row; align-items:center; gap:2rem; margin-bottom:1.8rem; }
.hero-photo {
  width:180px; height:180px; border-radius:50%; object-fit:cover;
  border:2px solid var(--cyan); box-shadow:var(--shadow-glow); flex-shrink:0;
}
.hero h1 {
  font-size:clamp(2.4rem, 6vw, 4.2rem); line-height:1.05;
  color:var(--text); margin-bottom:0.4rem;
}
.hero h1 .accent { color:var(--cyan); text-shadow:0 0 20px var(--border-glow); }
.hero .role {
  font-family:'JetBrains Mono',monospace; font-size:1.15rem; color:var(--text-dim);
  min-height:1.6rem;
}
.hero .role .typed-cursor { display:inline-block; width:9px; height:1.1rem; background:var(--magenta); vertical-align:-3px; animation:blink 0.9s steps(1) infinite; }
.hero p.pitch { color:var(--text-dim); font-size:0.95rem; margin-bottom:2.2rem; }
.hero-actions { display:flex; gap:1rem; flex-wrap:wrap; }
.btn {
  display:inline-flex; align-items:center; gap:0.5rem;
  font-family:'JetBrains Mono',monospace; font-size:0.85rem; font-weight:500;
  padding:0.8rem 1.5rem; border-radius:2px; text-decoration:none; cursor:pointer;
  border:1px solid var(--cyan); color:var(--cyan); background:transparent;
  transition:all .2s ease; letter-spacing:0.02em;
}
.btn svg { flex-shrink:0; }
.btn:hover { background:var(--cyan); color:var(--bg); box-shadow:var(--shadow-glow); }
.btn.ghost { border-color:var(--text-dim); color:var(--text); }
.btn.ghost:hover { border-color:var(--cyan); color:var(--cyan); background:transparent; box-shadow:none; }
.btn.resume-btn {
  border-color:var(--magenta); color:var(--magenta);
  animation:resumeBtnGlow 2.4s ease-in-out infinite;
}
.btn.resume-btn:hover {
  background:var(--magenta); color:var(--bg); box-shadow:var(--shadow-glow-magenta);
  animation-play-state:paused;
}
@keyframes resumeBtnGlow {
  0%, 100% { box-shadow:0 0 6px rgba(255,46,136,0.35), 0 0 14px rgba(255,46,136,0.2); }
  50% { box-shadow:0 0 14px rgba(255,46,136,0.75), 0 0 30px rgba(255,46,136,0.45); }
}
.resume-actions { margin-bottom:0.9rem; }

.contact-row { display:flex; gap:1rem; flex-wrap:wrap; margin-top:3.5rem; }

/* Tech logo marquee */
.logo-marquee-wrap { max-width:1000px; margin:2rem auto 5rem; padding:0 2.5rem; }
.logo-marquee {
  position:relative; overflow:hidden;
  border:1px solid var(--border); border-radius:3px;
  background:var(--surface);
  padding:2.4rem 0;
}
.logo-marquee::before, .logo-marquee::after {
  content:''; position:absolute; top:0; bottom:0; width:80px; z-index:2; pointer-events:none;
}
.logo-marquee::before { left:0; background:linear-gradient(to right, var(--surface) 25%, transparent); }
.logo-marquee::after { right:0; background:linear-gradient(to left, var(--surface) 25%, transparent); }
.logo-marquee-edge {
  position:absolute; top:0; bottom:0; width:3px; z-index:3; pointer-events:none;
  background:var(--cyan);
  box-shadow:0 0 10px var(--cyan), 0 0 22px var(--cyan), 0 0 36px rgba(0,255,242,0.5);
  animation:edgePulse 2.4s ease-in-out infinite;
}
.logo-marquee-edge::before, .logo-marquee-edge::after {
  content:''; position:absolute; left:50%; width:14px; height:3px;
  background:inherit; box-shadow:inherit; transform:translateX(-50%);
}
.logo-marquee-edge::before { top:10px; }
.logo-marquee-edge::after { bottom:10px; }
.logo-marquee-edge.edge-left { left:0; }
.logo-marquee-edge.edge-right {
  right:0; background:var(--magenta);
  box-shadow:0 0 10px var(--magenta), 0 0 22px var(--magenta), 0 0 36px rgba(255,46,136,0.5);
  animation-delay:1.2s;
}
@keyframes edgePulse { 0%, 100% { opacity:0.65; } 50% { opacity:1; } }
.logo-track { display:flex; align-items:center; gap:1.4rem; width:max-content; animation:marqueeScroll 34s linear infinite; }
.logo-sep { display:inline-flex; gap:1px; }
.logo-sep span {
  font-family:'JetBrains Mono', monospace; font-weight:700; font-size:0.9rem;
  color:var(--magenta); opacity:0.25;
  animation:chevronChase 1.4s ease-in-out infinite;
}
.logo-sep span:nth-child(1) { animation-delay:0s; }
.logo-sep span:nth-child(2) { animation-delay:0.15s; }
.logo-sep span:nth-child(3) { animation-delay:0.3s; }
@keyframes chevronChase {
  0%, 100% { opacity:0.25; text-shadow:none; }
  50% { opacity:1; text-shadow:0 0 8px var(--magenta); }
}
.logo-marquee:hover .logo-track { animation-play-state:paused; }
.logo-item { position:relative; display:flex; align-items:center; }
.logo-item img {
  height:30px; width:auto; opacity:0.65;
  filter:drop-shadow(0 0 6px var(--border-glow));
  transition:opacity .2s ease, filter .2s ease, transform .2s ease;
}
.logo-item:hover img { opacity:1; filter:drop-shadow(0 0 12px var(--cyan)); transform:translateY(-2px); }
.logo-item img.logo-fallback { filter:grayscale(1) brightness(1.6) drop-shadow(0 0 6px var(--border-glow)); }
.logo-item:hover img.logo-fallback { filter:grayscale(1) brightness(1.8) drop-shadow(0 0 12px var(--cyan)); }
:root[data-theme="dark"] .logo-item img.logo-fallback { filter:grayscale(1) brightness(2.6) drop-shadow(0 0 6px var(--border-glow)); }
:root[data-theme="dark"] .logo-item:hover img.logo-fallback { filter:grayscale(1) brightness(2.9) drop-shadow(0 0 12px var(--cyan)); }
.logo-label {
  position:absolute; top:calc(100% + 10px); left:50%;
  transform:translate(-50%, 0);
  font-family:'JetBrains Mono', monospace; font-size:0.65rem; font-weight:600; letter-spacing:0.03em;
  color:var(--cyan); background:var(--chip-bg); border:1px solid var(--cyan-dim);
  padding:3px 8px; border-radius:2px; white-space:nowrap;
  opacity:0.85; pointer-events:none; z-index:5;
  transition:opacity .18s ease, transform .18s ease;
}
.logo-label::before { content:'> '; color:var(--magenta); }
.logo-item:hover .logo-label { opacity:1; transform:translate(-50%, 0) scale(1.05); }
.logo-label.label-top { top:auto; bottom:calc(100% + 10px); }
@keyframes marqueeScroll {
  from { transform:translateX(0); }
  to { transform:translateX(-50%); }
}

/* Resume fetch modal */
.resume-modal-overlay {
  position:fixed; inset:0; z-index:10000;
  background:rgba(0,0,0,0.6); backdrop-filter:blur(4px);
  display:none; align-items:center; justify-content:center;
  opacity:0; transition:opacity .2s ease;
}
.resume-modal-overlay.active { display:flex; opacity:1; }
.resume-modal {
  background:var(--surface); border:1px solid var(--cyan-dim);
  box-shadow:var(--shadow-glow); border-radius:4px;
  padding:1.8rem 2.2rem; min-width:340px; width:min(420px, 90vw);
  font-family:'JetBrains Mono',monospace;
  transform:translateY(6px); transition:transform .2s ease;
}
.resume-modal-overlay.active .resume-modal { transform:translateY(0); }
.resume-modal-title { color:var(--text-dim); font-size:0.85rem; margin-bottom:1rem; letter-spacing:0.02em; }
.resume-modal-log { min-height:132px; margin-bottom:0.9rem; }
.resume-modal-log .log-line {
  font-size:0.74rem; color:var(--text-dim); margin-bottom:0.4rem; letter-spacing:0.01em;
  opacity:0; transform:translateX(-4px); animation:logIn .25s ease forwards;
}
.resume-modal-log .log-line .prompt { color:var(--magenta); margin-right:0.35rem; }
.resume-modal-log .log-line .ok { color:var(--cyan); font-weight:600; }
@keyframes logIn { to { opacity:1; transform:translateX(0); } }
.resume-modal-bar {
  width:100%; height:8px; background:var(--bg-alt); border:1px solid var(--border);
  border-radius:2px; overflow:hidden; margin-bottom:0.6rem;
}
.resume-modal-fill {
  height:100%; width:0%;
  background:linear-gradient(90deg, var(--cyan-dim), var(--cyan));
  box-shadow:0 0 10px var(--cyan);
  transition:width .15s linear;
}
.resume-modal-status { font-size:0.72rem; color:var(--text-faint); text-align:right; letter-spacing:0.05em; }

/* Resume viewer modal */
.resume-view-overlay {
  position:fixed; inset:0; z-index:10000;
  background:rgba(0,0,0,0.7); backdrop-filter:blur(4px);
  display:none; align-items:center; justify-content:center;
  padding:2rem; opacity:0; transition:opacity .2s ease;
}
.resume-view-overlay.active { display:flex; opacity:1; }
.resume-view-modal {
  background:var(--surface); border:1px solid var(--cyan-dim);
  box-shadow:var(--shadow-glow); border-radius:4px;
  width:min(920px, 100%); max-height:88vh;
  display:flex; flex-direction:column; overflow:hidden;
  transform:translateY(8px); transition:transform .2s ease;
}
.resume-view-overlay.active .resume-view-modal { transform:translateY(0); }
.resume-view-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:0.9rem 1.4rem; border-bottom:1px solid var(--border);
  font-size:0.8rem; color:var(--text-dim); flex-shrink:0;
}
.resume-view-close {
  background:transparent; border:1px solid var(--border); color:var(--text-dim);
  width:28px; height:28px; border-radius:2px; cursor:pointer; font-size:0.9rem;
  transition:all .2s ease; line-height:1;
}
.resume-view-close:hover { border-color:var(--magenta); color:var(--magenta); }
.resume-view-body { overflow-y:auto; padding:1.8rem 2.2rem; }
.resume-view-body a { color:var(--cyan); }
.resume-view-body a:hover { color:var(--magenta); }
.resume-view-body::-webkit-scrollbar { width:9px; }
.resume-view-body::-webkit-scrollbar-track { background:var(--bg-alt); }
.resume-view-body::-webkit-scrollbar-thumb { background:var(--cyan-dim); border-radius:4px; }
.resume-view-footer {
  padding:1rem 1.4rem; border-top:1px solid var(--border);
  display:flex; justify-content:flex-end; flex-shrink:0;
}

/* Rendered resume document */
.resume-doc { font-size:0.85rem; color:var(--text-dim); }
.resume-doc .r-name { font-family:'Rajdhani',sans-serif; font-size:1.7rem; font-weight:700; color:var(--text); text-align:center; margin-bottom:0.3rem; }
.resume-doc .r-contact { text-align:center; font-size:0.78rem; color:var(--text-faint); margin-bottom:1.8rem; }
.resume-doc .r-contact a { color:var(--cyan); text-decoration:none; }
.resume-doc .r-contact a:hover { text-decoration:underline; }
.resume-doc .r-section { margin-top:1.7rem; }
.resume-doc .r-section-title {
  font-size:0.75rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--magenta);
  border-bottom:1px solid var(--border); padding-bottom:0.4rem; margin-bottom:0.9rem;
  animation:sectionTitleGlow 2.4s ease-in-out infinite;
}
@keyframes sectionTitleGlow {
  0%, 100% { text-shadow:0 0 6px rgba(255,46,136,0.55), 0 0 14px rgba(255,46,136,0.35), 0 0 24px rgba(255,46,136,0.15); }
  50% { text-shadow:0 0 12px rgba(255,46,136,0.95), 0 0 26px rgba(255,46,136,0.6), 0 0 42px rgba(255,46,136,0.3); }
}
.resume-doc .r-summary { color:var(--text-dim); line-height:1.75; }
.resume-doc .r-skill-row { display:flex; gap:0.7rem; font-size:0.82rem; margin-bottom:0.55rem; flex-wrap:wrap; }
.resume-doc .r-skill-label { color:var(--cyan); min-width:165px; font-weight:600; flex-shrink:0; }
.resume-doc .r-job { margin-bottom:1.5rem; }
.resume-doc .r-job:last-child { margin-bottom:0; }
.resume-doc .r-job-head { display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; color:var(--text); font-weight:600; font-size:0.88rem; }
.resume-doc .r-job-dates { color:var(--text-faint); font-weight:400; font-size:0.78rem; white-space:nowrap; }
.resume-doc .r-job-title { color:var(--cyan-dim); font-style:italic; font-size:0.82rem; margin:0.25rem 0 0.7rem; }
.resume-doc .r-bullets { list-style:none; display:flex; flex-direction:column; gap:0.5rem; }
.resume-doc .r-bullets li { position:relative; padding-left:1.15rem; font-size:0.82rem; line-height:1.65; }
.resume-doc .r-bullets li::before { content:'▸'; position:absolute; left:0; color:var(--magenta); }
.resume-doc .r-bullets li b { color:var(--text); }
.resume-doc .r-edu-item { font-size:0.85rem; }
.resume-doc .r-edu-item b { color:var(--text); display:block; }

/* Section shell */
section, .logo-marquee-wrap { scroll-margin-top:90px; }
section { max-width:1000px; margin:0 auto; padding:5rem 2.5rem; }
.section-head { display:flex; align-items:baseline; gap:1rem; margin-bottom:2.5rem; }
.section-head .idx { color:var(--magenta); font-size:0.85rem; }
.section-head h2 { font-size:1.8rem; color:var(--text); }
.section-head .rule { flex:1; height:1px; background:var(--border); }

/* Projects grid */
.projects-grid { display:grid; grid-template-columns:1fr; gap:1.25rem; }
.card {
  background:var(--surface); border:1px solid var(--border); border-radius:3px;
  padding:1.5rem; cursor:pointer; transition:border-color .2s ease, box-shadow .2s ease;
  position:relative; overflow:hidden;
}
.card::before {
  content:''; position:absolute; top:0; left:0; width:2px; height:100%;
  background:var(--cyan); opacity:0; transition:opacity .2s ease;
}
.card:hover { border-color:var(--border-glow); box-shadow:var(--shadow-glow); }
.card:hover::before { opacity:1; }
.card .card-top { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:0.9rem; }
.card h3 { font-size:1.25rem; color:var(--text); }
.card .impact { color:var(--cyan); font-size:0.8rem; font-weight:500; }
.card .summary { color:var(--text-dim); font-size:0.88rem; margin-bottom:1rem; }
.tags { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:1rem; }
.tag { font-size:0.7rem; font-weight:600; letter-spacing:0.02em; color:var(--cyan); background:var(--chip-bg); border:1px solid var(--cyan-dim); padding:3px 9px; border-radius:2px; }
.expand-hint { font-size:0.75rem; color:var(--text-faint); }
.expand-hint::after { content:' ↓'; color:var(--magenta); }

/* GitHub pinned-repo card */
.repo-card + .repo-card { margin-top:1.25rem; }
.repo-card {
  display:block; text-decoration:none;
  background:var(--surface); border:1px solid var(--border); border-radius:3px;
  padding:1.5rem; transition:border-color .2s ease, box-shadow .2s ease;
  position:relative; overflow:hidden;
}
.repo-card::before {
  content:''; position:absolute; top:0; left:0; width:2px; height:100%;
  background:var(--cyan); opacity:0; transition:opacity .2s ease;
}
.repo-card:hover { border-color:var(--border-glow); box-shadow:var(--shadow-glow); }
.repo-card:hover::before { opacity:1; }
.repo-card-top { display:flex; align-items:center; gap:0.6rem; margin-bottom:0.8rem; }
.repo-icon { color:var(--cyan); flex-shrink:0; }
.repo-name { font-family:'JetBrains Mono',monospace; font-size:0.95rem; color:var(--text); }
.repo-desc { color:var(--text-dim); font-size:0.85rem; margin-bottom:1rem; }
.repo-meta { display:flex; gap:1rem; font-size:0.78rem; color:var(--text-dim); }
.repo-lang { display:flex; align-items:center; gap:0.4rem; }
.repo-lang-dot { width:9px; height:9px; border-radius:50%; background:var(--cyan); display:inline-block; }
.repo-card-links { display:flex; gap:0.8rem; flex-wrap:wrap; margin-top:1.2rem; }
.repo-link {
  font-family:'JetBrains Mono',monospace; font-size:0.78rem; font-weight:500;
  padding:0.5rem 1rem; border-radius:2px; text-decoration:none; letter-spacing:0.02em;
  border:1px solid var(--cyan-dim); color:var(--cyan); background:transparent;
  transition:all .2s ease;
}
.repo-link:hover { background:var(--cyan); color:var(--bg); border-color:var(--cyan); }
.repo-link-live { border-color:var(--magenta); color:var(--magenta); animation:resumeBtnGlow 2.4s ease-in-out infinite; }
.repo-link-live:hover { background:var(--magenta); color:var(--bg); border-color:var(--magenta); box-shadow:var(--shadow-glow-magenta); animation-play-state:paused; }

/* How this site was built */
.build-card {
  background:var(--surface); border:1px solid var(--border); border-radius:3px;
  padding:1.75rem;
}
.build-card p { color:var(--text-dim); font-size:0.92rem; margin-bottom:1rem; }
.build-card p:last-child { margin-bottom:0; }
.build-card b { color:var(--cyan); font-weight:600; }

.detail {
  max-height:0; overflow:hidden; transition:max-height .35s ease;
  border-top:1px solid var(--border); margin-top:0;
}
.card.open .detail { max-height:2400px; margin-top:1rem; padding-top:1rem; }
.card.open .expand-hint::after { content:' ↑'; }
.detail h4 { font-size:0.75rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--magenta); margin:0.8rem 0 0.3rem; }
.detail h4:first-child { margin-top:0; }
.detail p { font-size:0.85rem; color:var(--text-dim); }
.diagram { width:100%; margin:0.4rem 0 0.6rem; }
.diagram svg { width:100%; height:auto; display:block; }

/* About */
.about-grid { display:grid; grid-template-columns:1fr 1fr; gap:2.5rem; }
.about-grid p { color:var(--text-dim); font-size:0.92rem; margin-bottom:1rem; }
.stack-list { display:flex; flex-direction:column; gap:0.6rem; }
.stack-row { display:flex; justify-content:space-between; border-bottom:1px dashed var(--border); padding-bottom:0.5rem; font-size:0.85rem; }
.stack-row span:first-child { color:var(--text-dim); }
.stack-row span:last-child { color:var(--cyan); }

/* Footer */
footer { border-top:1px solid var(--border); padding:2.5rem; text-align:center; }
footer .contact-links { display:flex; justify-content:center; gap:1.8rem; margin-bottom:1rem; flex-wrap:wrap; }
footer a { color:var(--text-dim); text-decoration:none; font-size:0.85rem; transition:color .2s; }
footer a:hover { color:var(--cyan); }
footer .copy { color:var(--text-faint); font-size:0.75rem; }

@media (max-width:640px) {
  nav { padding:1rem 1.2rem; flex-wrap:wrap; }
  .nav-hamburger {
    display:flex; flex-direction:column; justify-content:center; align-items:center; gap:4px;
    width:34px; height:34px; background:transparent; border:1px solid var(--border);
    border-radius:2px; cursor:pointer; padding:0; order:3;
  }
  .nav-hamburger span { display:block; width:16px; height:2px; background:var(--cyan); }
  .nav-links {
    display:none; order:4; width:100%;
    flex-direction:column; align-items:flex-start; gap:0;
    margin-top:1rem; padding-top:1rem; border-top:1px solid var(--border);
  }
  .nav-links.open { display:flex; }
  .nav-links a { padding:0.6rem 0; width:100%; }
  .hero-identity { flex-direction:column; align-items:flex-start; gap:1rem; }
  .hero-photo { width:120px; height:120px; }
  section { padding:3.5rem 1.2rem; }
  .about-grid { grid-template-columns:1fr; }
  .resume-doc .r-skill-row { flex-direction:column; gap:0.2rem; }
  .resume-doc .r-skill-label { min-width:0; }
  .stack-row { flex-direction:column; gap:0.2rem; }
  .stack-row span:last-child { text-align:left; }
  .logo-marquee-wrap { padding:0 1.2rem; margin-bottom:3.5rem; }
  .logo-track { gap:0.9rem; animation-duration:24s; }
  .logo-item img { height:24px; }
  .logo-label { font-size:0.6rem; padding:2px 6px; top:calc(100% + 8px); }
  .logo-label.label-top { top:auto; bottom:calc(100% + 8px); }
  .logo-marquee::before, .logo-marquee::after { width:40px; }
}

/* Chat widget */
.chat-fab {
  position:fixed; bottom:1.8rem; right:1.8rem; z-index:9000;
  display:flex; align-items:center; gap:0.5rem;
  background:var(--surface); border:1px solid var(--cyan); color:var(--cyan);
  font-family:'JetBrains Mono', monospace; font-size:0.85rem; font-weight:600;
  padding:0.8rem 1.3rem; border-radius:24px; cursor:pointer;
  animation:chatFabGlow 2.4s ease-in-out infinite;
  transition:transform .15s ease;
}
.chat-fab:hover { transform:translateY(-2px); }
.chat-fab.hidden { display:none; }
.chat-fab-icon { font-weight:700; }
@keyframes chatFabGlow {
  0%, 100% { box-shadow:0 0 6px rgba(0,255,242,0.35), 0 0 14px rgba(0,255,242,0.2); }
  50% { box-shadow:0 0 14px rgba(0,255,242,0.75), 0 0 30px rgba(0,255,242,0.45); }
}

.chat-panel {
  position:fixed; bottom:1.8rem; right:1.8rem; z-index:9001;
  width:min(420px, calc(100vw - 2.4rem)); height:min(580px, calc(100vh - 3.6rem));
  background:var(--surface); border:1px solid var(--cyan-dim); border-radius:6px;
  box-shadow:var(--shadow-glow);
  display:none; flex-direction:column; overflow:hidden;
  font-family:'JetBrains Mono', monospace;
}
.chat-panel.open { display:flex; }
.chat-panel-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:0.8rem 1rem; border-bottom:1px solid var(--border);
  font-size:0.78rem; color:var(--text-dim); flex-shrink:0;
}
.chat-panel-close {
  background:transparent; border:1px solid var(--border); color:var(--text-dim);
  width:24px; height:24px; border-radius:2px; cursor:pointer; font-size:0.8rem;
  transition:all .2s ease;
}
.chat-panel-close:hover { border-color:var(--magenta); color:var(--magenta); }
.chat-panel-body {
  flex:1; overflow-y:auto; padding:1rem; display:flex; flex-direction:column; gap:0.7rem;
}
.chat-panel-body::-webkit-scrollbar { width:8px; }
.chat-panel-body::-webkit-scrollbar-track { background:var(--bg-alt); }
.chat-panel-body::-webkit-scrollbar-thumb { background:var(--cyan-dim); border-radius:4px; }
.chat-msg { font-size:0.82rem; line-height:1.55; padding:0.55rem 0.75rem; border-radius:4px; max-width:88%; }
.chat-msg-bot { align-self:flex-start; background:var(--chip-bg); border:1px solid var(--cyan-dim); color:var(--text); }
.chat-msg-bot strong { color:var(--cyan); font-weight:700; }
.chat-msg-bot code {
  font-family:'JetBrains Mono', monospace; background:var(--bg-alt); border:1px solid var(--border);
  padding:1px 5px; border-radius:2px; font-size:0.78rem;
}
.chat-msg-bot ul { margin:0.4rem 0 0.4rem 1.1rem; padding:0; }
.chat-msg-bot li { margin-bottom:0.25rem; }
.chat-msg-user { align-self:flex-end; background:var(--surface-2); border:1px solid var(--border); color:var(--text); }
.chat-msg-error { align-self:center; color:var(--magenta); font-size:0.75rem; text-align:center; }
.chat-msg-thinking { align-self:flex-start; color:var(--text-faint); font-size:0.78rem; font-style:italic; }
.chat-suggestions { display:flex; flex-wrap:wrap; gap:0.4rem; padding:0 0.8rem 0.6rem; flex-shrink:0; }
.chat-suggestion {
  font-family:'JetBrains Mono', monospace; font-size:0.72rem; color:var(--cyan);
  background:var(--chip-bg); border:1px solid var(--cyan-dim); border-radius:12px;
  padding:0.35rem 0.7rem; cursor:pointer; transition:all .2s ease; text-align:left;
}
.chat-suggestion:hover { background:var(--cyan); color:var(--bg); }
.chat-panel-input-row { display:flex; gap:0.5rem; padding:0.8rem; border-top:1px solid var(--border); flex-shrink:0; }
.chat-input {
  flex:1; background:var(--bg-alt); border:1px solid var(--border); color:var(--text);
  font-family:'JetBrains Mono', monospace; font-size:0.82rem; padding:0.55rem 0.7rem; border-radius:3px;
}
.chat-input:focus { outline:none; border-color:var(--cyan-dim); }
.chat-send-btn {
  background:transparent; border:1px solid var(--cyan); color:var(--cyan);
  font-family:'JetBrains Mono', monospace; font-size:0.78rem; font-weight:600;
  padding:0.55rem 0.9rem; border-radius:3px; cursor:pointer; transition:all .2s ease;
}
.chat-send-btn:hover { background:var(--cyan); color:var(--bg); }
.chat-send-btn:disabled { opacity:0.4; cursor:not-allowed; }

@media (max-width:640px) {
  .chat-fab { bottom:1rem; right:1rem; padding:1rem 1.5rem; font-size:1rem; gap:0.65rem; }
  .chat-fab-icon { font-size:1.1rem; }
  .chat-panel {
    bottom:0; right:0; width:100vw; height:100vh;
    border-radius:6px 6px 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  * { animation:none !important; transition:none !important; }
}

/* Terminal easter egg toast */
.egg-toast {
  position:fixed; bottom:1.8rem; left:1.8rem; z-index:9500;
  background:var(--surface); border:1px solid var(--cyan); box-shadow:var(--shadow-glow);
  color:var(--text); font-family:'JetBrains Mono',monospace; font-size:0.82rem;
  padding:0.8rem 1.1rem; border-radius:3px; max-width:min(360px, calc(100vw - 3.6rem));
  opacity:0; transform:translateY(8px); pointer-events:none;
  transition:opacity .25s ease, transform .25s ease;
}
.egg-toast.show { opacity:1; transform:translateY(0); }

/* Print stylesheet — force a plain, complete, paginated document regardless
   of the on-screen dark/light theme or collapsed card state. */
@media print {
  * { animation:none !important; transition:none !important; box-shadow:none !important; text-shadow:none !important; }
  body {
    background:#fff !important; color:#000 !important;
  }
  .scanlines, nav, .chat-fab, .chat-panel,
  .resume-modal-overlay, .resume-view-overlay,
  .hero-photo, .logo-marquee-wrap {
    display:none !important;
  }
  .hero, section, footer { max-width:none; color:#000 !important; }
  h1, h2, h3, .display, .hero h1 .accent, .card h3 { color:#000 !important; text-shadow:none !important; }
  .hero p.pitch, .about-grid p, .card .summary, .detail p, .stack-row span,
  .term-prompt, .cmd, .eyebrow, .role { color:#333 !important; }
  .card {
    background:#fff !important; border:1px solid #999 !important;
    break-inside:avoid; page-break-inside:avoid;
  }
  .detail {
    max-height:none !important; overflow:visible !important;
    margin-top:1rem !important; padding-top:1rem !important; display:block !important;
  }
  .expand-hint { display:none !important; }
  .tag { border:1px solid #999 !important; background:#fff !important; color:#000 !important; }
  section { break-before:page; }
  .hero { break-before:auto; }
  a { color:#000 !important; text-decoration:underline; }
}
