:root{
  --bg:#0c0f19; --bg-elev:#0f1322; --text:#e9eef7; --muted:#9aa3b2; --line:#1e2436;
  --brand:#00bfe6; --pink:#ff3df0; --lime:#9dff3d; --violet:#7a5cff;
}
*{box-sizing:border-box} html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Noto Sans",Arial;line-height:1.65;overflow-x:hidden}
.wrap{width:min(1100px,92%);margin:0 auto}
a{color:var(--brand)} a:hover{text-decoration:underline}

/* Canvas */
#stars{position:fixed;inset:0;z-index:-1;display:none}

/* Top Nav */
.topnav{position:sticky;top:0;z-index:8;background:rgba(12,15,25,.75);backdrop-filter: blur(10px);border-bottom:1px solid var(--line)}
.navrow{display:flex;align-items:center;justify-content:space-between;gap:12px}
.logo{font-weight:800;font-size:1.1rem;padding:.9rem 0;letter-spacing:.2px}
.menu{display:flex;gap:18px;list-style:none;margin:0;padding:0}
.menu a{display:block;padding:1rem .5rem}
.burger{display:none;flex-direction:column;gap:4px;background:transparent;border:1px solid var(--line);border-radius:8px;padding:6px 8px;color:var(--text)}
.burger span{display:block;width:18px;height:2px;background:var(--text)}
@media (max-width: 780px){
  .burger{display:inline-flex}
  .menu{position:absolute;right:12px;top:58px;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;display:none;flex-direction:column;min-width:180px}
  .menu.open{display:flex}
}

/* Toggle */
.theme-toggle{
  position:fixed;top:12px;right:12px;z-index:10;display:inline-flex;align-items:center;gap:.6rem;
  border:1px solid var(--line);background:var(--bg-elev);color:var(--text);border-radius:999px;padding:.45rem .75rem;cursor:pointer
}
.theme-toggle .label{font-size:.9rem}
.theme-toggle .dot{width:10px;height:10px;border-radius:50%;background:var(--brand)}

/* Pulse animation for theme toggle — subtle by default, stronger in Pixel mode */
@keyframes pj-pulse {
  0% { box-shadow: 0 0 0 0 rgba(0,230,255,0.0); transform: translateY(0); }
  50% { box-shadow: 0 0 12px 6px rgba(0,230,255,0.06); transform: translateY(-1px); }
  100% { box-shadow: 0 0 0 0 rgba(0,230,255,0.0); transform: translateY(0); }
}
.theme-toggle{
  animation: pj-pulse 2.8s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce){ .theme-toggle{ animation: none; } }
/* Stronger pulse in Pixel mode (≈5–10% more pronounced via scale & shadow) */
@keyframes pj-pulse-pixel {
  /* Idle state shows a subtle glow so the toggle appears lit before interaction */
  0% { box-shadow: 0 0 6px 3px rgba(0,230,255,0.08); transform: translateY(0) scale(1); }
  50% { box-shadow: 0 0 20px 10px rgba(0,230,255,0.18); transform: translateY(-1px) scale(1.08); }
  100% { box-shadow: 0 0 6px 3px rgba(0,230,255,0.08); transform: translateY(0) scale(1); }
}
body.pixel .theme-toggle{ animation: pj-pulse-pixel 2s ease-in-out infinite; }

/* Give the inner dot a soft glow in Pixel mode so the toggle reads as "on" even at rest */
body.pixel .theme-toggle .dot{
  box-shadow: 0 0 8px 3px rgba(0,230,255,0.14), 0 0 18px 6px rgba(122,92,255,0.06);
}

/* Center the theme toggle on small screens so it doesn't overlap the burger/menu */
@media (max-width: 780px){
  .theme-toggle{
    right: auto;
    left: 50%;
    transform: translateX(-50%);
    z-index: 12; /* ensure it sits above the nav/menu */
  }
}

/* Hero */
/* Clean theme keeps masthead minimal (no purple glow) */
.masthead{border-bottom:1px solid var(--line);padding:46px 0 30px;background:none}
.brand{font-size:clamp(28px,6vw,46px);margin:0 0 8px;font-weight:800;letter-spacing:.3px}
.brand .pix{display:none}
.tag{color:var(--muted);margin:0 0 18px}
.hero .invaders{display:none}

/* Headings: clean theme => white, no glow; pixel theme => pink + glow */
body.clean h1,body.clean h2,body.clean h3,body.clean h4,body.clean h5,body.clean h6,
h1,h2,h3,h4,h5,h6{color:var(--text);text-shadow:none;}
body.pixel h1,body.pixel h2,body.pixel h3,body.pixel h4,body.pixel h5,body.pixel h6{
  /* Revert to inherited text color (white) while keeping glow */
  color:var(--text);
  text-shadow:0 0 3px rgba(255,255,255,.6),0 0 14px var(--violet),0 0 30px var(--pink);
}

/* Sections + Grid */
.section{padding:30px 0;border-top:1px solid var(--line)}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}

/* About section photo */
.about-photo{display:flex;justify-content:center;margin:14px 0}
.about-photo img{width:clamp(120px,20vw,240px);height:auto;border-radius:12px;object-fit:cover;border:1px solid rgba(255,255,255,0.06);display:block}

/* Two-column about layout (avatar + content) */
.about-grid{display:grid;grid-template-columns:260px 1fr;gap:22px;align-items:center}
.about-content p{margin-bottom:12px}

/* Pixel-style framed avatar */
.pixel-frame{width:260px;height:260px;padding:16px;border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));
  box-shadow: 0 10px 28px rgba(0,0,0,0.35); border:4px solid rgba(255,255,255,0.04);}
.pixel-frame img{width:100%;height:100%;object-fit:cover;border-radius:10px;display:block;transform:scale(1.2);transform-origin:center center}

/* Show the neon/pink outline only in Pixel mode */
body.pixel .pixel-frame{ border-color: var(--pink); box-shadow: 0 8px 22px rgba(0,0,0,0.35), 0 0 18px rgba(122,92,255,0.06); }

/* CTA: clean by default, pixel-styled in Pixel theme */
.pixel-cta{
  display:inline-block;
  padding:.6rem .9rem;
  border-radius:8px;
  border:1px solid var(--line);
  color:var(--text);
  background:transparent;
  text-decoration:none;
  font-family:inherit;
  font-size:14px;
}
.pixel-cta:hover{ box-shadow: 0 6px 18px rgba(0,0,0,0.16); }

/* Pixel-mode override: switch to pixel font and neon outline */
body.pixel .pixel-cta{
  border:3px solid var(--pink);
  font-family: "Press Start 2P", monospace;
  font-size:12px;
  color:var(--text);
  box-shadow: 0 6px 18px rgba(122,92,255,0.12);
}

/* Contact section: refined layout & actions */
.contact-grid{display:grid;grid-template-columns:1fr 300px;gap:24px;align-items:start}
.contact-card{background:var(--bg-elev);border:1px solid var(--line);padding:24px 24px 22px;border-radius:16px;display:flex;flex-direction:column;gap:10px}
.contact-card .lead{margin:0;color:var(--text);line-height:1.55;font-size:1rem}
.contact-actions{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 4px}
.contact-actions .btn{display:inline-flex;align-items:center;gap:.55rem;padding:.65rem 1rem;border-radius:12px;border:1px solid var(--line);background:var(--bg-elev);color:var(--text);text-decoration:none;font-weight:600;font-size:.9rem;line-height:1.2}
.contact-actions .btn i{font-size:1.05rem}
.contact-actions .btn.primary{border-color:var(--brand);background:var(--brand);color:#04141c}
.contact-actions .btn.primary:hover{filter:brightness(1.06)}
.contact-actions .btn.ghost{background:transparent;border-color:var(--line)}
.contact-actions .btn.ghost:hover{background:rgba(255,255,255,0.04)}
.contact-utilities{display:flex;flex-direction:column;gap:14px}
.socials.clean{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.socials.clean .icon{display:inline-flex;background:transparent;border:1px solid var(--line);border-radius:12px;padding:6px;transition:background .15s ease}
.socials.clean .icon:hover{background:rgba(255,255,255,0.05)}
.socials.clean .icon svg{width:30px;height:30px}
.contact-meta .muted{color:var(--muted);margin:0;font-size:.85rem;line-height:1.3}
@media (max-width: 780px){
  .contact-grid{grid-template-columns:1fr;gap:18px}
  .contact-utilities{order:2}
  .contact-actions .btn{flex:1 1 140px;justify-content:center}
}

@media (max-width: 780px){
  .contact-grid{grid-template-columns:1fr;}
  .contact-utilities{order:-1}
}

@media (max-width: 780px){
  .about-grid{grid-template-columns:1fr;gap:12px}
  .pixel-frame{width:180px;height:180px;margin:0 auto}
  .about-photo{order:-1}
  .pixel-cta{font-size:11px}
}


/* Icon-first Card */
.card{border:1px solid var(--line);border-radius:14px;background:var(--bg-elev);padding:18px 18px 16px;display:flex;flex-direction:column;gap:12px}
.logo-slot{
  width:64px;height:64px;border-radius:16px;display:grid;place-items:center;
  background:linear-gradient(145deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
  border:1px solid rgba(255,255,255,.08);
}
.logo-slot img{max-width:70%;max-height:70%;object-fit:contain;filter: none}
.logo-slot svg{width:32px;height:32px}
/* Font icon / inline SVG styling for logo-slot: make icons white and sized consistently */
.logo-slot i,
.logo-slot svg,
.logo-slot .fa,
.logo-slot .fas,
.logo-slot .fab,
.logo-slot .far,
.logo-slot .fal {
  color: #fff;           /* make font icons white */
  fill: currentColor;    /* make inline SVG follow currentColor */
  font-size: 28px;       /* adjust icon size to fit the slot */
  display: inline-block;
  line-height: 1;
  vertical-align: middle;
}

/* Optional: if you want to invert certain raster images to white use this */
.logo-slot img.invert-to-white {
  filter: invert(1) grayscale(1) contrast(1.2);
}
.card h3{margin:0;font-size:1.1rem}
.card p{margin:0;color:var(--muted)}
.card .actions{margin-top:auto}
.card .btn{display:inline-block;padding:.6rem .9rem;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--text);text-decoration:none}

.footer{border-top:1px solid var(--line);padding:26px 0 44px;color:var(--muted);text-align:center}

/* Hover / focus glow for cards — subtle lift and cyan glow, stronger in Pixel mode */
.card{
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
  will-change: transform, box-shadow;
  cursor:pointer;
}
.card a,
.card button{ cursor: auto; }
.card .actions a,
.card .actions button{ cursor: pointer; }
.card:hover,
.card:focus-within{
  transform: translateY(-6px) scale(1.01);
  box-shadow: 0 12px 28px rgba(0,230,255,0.12), 0 6px 18px rgba(0,0,0,0.18);
}
.card:focus{
  outline: none;
  box-shadow: 0 12px 28px rgba(0,230,255,0.16), 0 6px 18px rgba(0,0,0,0.2);
}

/* Stronger glow when user enabled Pixel mode */
body.pixel .card:hover,
body.pixel .card:focus-within{
  transform: translateY(-8px) scale(1.02);
  box-shadow: 0 20px 40px rgba(0,230,255,0.28), 0 8px 28px rgba(0,0,0,0.22);
  filter: drop-shadow(0 0 10px rgba(0,230,255,0.12));
}

/* Ensure logo images are centered and crisp */
.card .logo-slot img{ display:block; width:100%; height:auto; object-fit:contain; }

/* Pixel Mode */
body.pixel{--brand:#00e6ff}
body.pixel #stars{display:block}
body.pixel .brand{font-family:"Press Start 2P",monospace;text-transform:uppercase;letter-spacing:1px}
body.pixel .brand .pix{display:inline}
body.pixel .masthead{background:linear-gradient(180deg,rgba(122,92,255,.18),transparent 40%)}
/* (Heading glow now covered earlier for all levels) */
body.pixel .logo-slot{ box-shadow: 0 0 0 1px rgba(0,230,255,.25), 0 10px 34px rgba(0,0,0,.35) }
body.pixel .icon svg{ filter: drop-shadow(0 0 6px rgba(255,255,255,.85)) drop-shadow(0 0 22px rgba(0,230,255,.35)) }
.hero .invaders img{width:48px;height:48px;image-rendering:pixelated;margin:0 6px;filter: drop-shadow(0 0 8px rgba(255,255,255,.25))}
body.pixel .hero .invaders{display:flex;justify-content:center;margin-bottom:10px}

