/* Modern dark/teal theme */
:root {
  --bg-start: #0d1b2a;          /* deep navy */
  --bg-end:   #1b263b;          /* dark steel blue */
  --fg:       #eaeff7;          /* light grey-blue for contrast */
  --accent:   #00ffd1;          /* neon aqua */
  --accent-muted: #0097c7;      /* deep cyan */
  --accent-glow: rgba(0,255,209,0.6); /* aqua glow */

  --link:        var(--accent);
  --link-hover:  #7fffe8;
  --link-visited: var(--accent);
}

/* Reset */
* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: "Segoe UI", system-ui, -apple-system, Arial, sans-serif;
  color: var(--fg);
  background: linear-gradient(135deg, var(--bg-start), var(--bg-end));
  overflow-x: hidden;
}

/* Three.js canvas */
#three-canvas { position: fixed; inset: 0; width: 100%; height: 100%; z-index: -1; display:block; }

/* Scroll progress */
#scroll-progress {
  position: fixed; top: 0; left: 0; height: 3px; width: 0%;
  background: linear-gradient(90deg, var(--accent), #7fffe8);
  box-shadow: 0 0 10px var(--accent-glow);
  z-index: 1000;
}

/* Links */
a {
  color: var(--link);
  text-decoration: none;
  border-bottom: 1px dotted transparent;
  transition: color .15s ease, text-shadow .15s ease, border-color .15s ease;
}
a:hover { color: var(--link-hover); text-shadow: 0 0 6px var(--accent-glow); border-color: var(--link-hover); }
a:visited { color: var(--link-visited); }
a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

a.hi-vis { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }

/* Header */
header { padding: 1rem 2rem; }
.header-inner { display: flex; align-items: center; gap: 1rem; }
.profile-pic { width: 4rem; height: 4rem; border-radius: 50%; border: 2px solid var(--accent); }
.glow { animation: glow 2s infinite alternate; }
@keyframes glow { from { box-shadow: 0 0 5px var(--accent-glow); } to { box-shadow: 0 0 20px var(--accent-glow); } }

.tagline { min-height: 2rem; font-size: 1.1rem; }
.lede { opacity: .85; max-width: 64ch; margin-top: .5rem; }

/* CTAs */
.cta { margin-top: 1rem; display: flex; gap: .75rem; flex-wrap: wrap; }
.btn { padding: .7rem 1rem; border-radius: 10px; font-weight: 600; letter-spacing:.02em; }
.btn-primary { background: var(--accent); color:#06251f; box-shadow: 0 0 18px var(--accent-glow); }
.btn-primary:hover { filter: brightness(1.1); }
.btn-ghost { color: var(--accent); border: 2px solid var(--accent); background: transparent; }
.btn-ghost:hover { background: rgba(0,255,209,.08); }
.btn:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }

/* Quick facts */
.quick-facts {
  margin-top: 1rem; display: grid; grid-auto-flow: column; gap: .75rem;
  width: fit-content; padding: .6rem .8rem; border-radius: 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: linear-gradient(135deg, rgba(6,12,20,.6), rgba(6,12,20,.3));
}
.quick-facts li { list-style: none; font-size: .95rem; opacity: .9; }
.fact-kicker { color: var(--accent); font-weight: 700; margin-right: .35rem; }

/* Nav */
nav ul { display: flex; justify-content: center; gap: 2rem; padding: .75rem 0; }
nav a {
  color: var(--accent-muted);
  font-weight: 600; letter-spacing: .05em; text-transform: uppercase;
  transition: color .2s, text-shadow .2s; border: 0;
}
nav a:hover, nav a.active { color: var(--accent); text-shadow: 0 0 6px var(--accent-glow); }

/* Neon headers */
.neon {
  color: var(--accent);
  text-shadow: 0 0 4px var(--accent-glow), 0 0 8px var(--accent-glow), 0 0 16px var(--accent-glow);
}

/* Main */
main { max-width: 900px; margin: 3rem auto; padding: 0 1rem; }
section { margin-bottom: 3rem; }
h2 { font-size: 2rem; padding-bottom: .5rem; margin-bottom: 1rem; border-bottom: 3px solid var(--accent-muted); }

/* Bullets */
.bullets { margin-top: .75rem; line-height: 1.6; padding-left: 1rem; }
.bullets li { margin: .25rem 0; }

/* Filters */
.filters { display:flex; gap:.5rem; flex-wrap:wrap; margin:.5rem 0 1rem; }
.filters button {
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.15);
  color:var(--fg); padding:.4rem .7rem; border-radius:999px; cursor:pointer;
  transition: border-color .2s, color .2s, background .2s;
}
.filters button.on, .filters button:hover { border-color: var(--accent); color: var(--accent); }

/* Cards */
.card {
  margin-bottom: 1.5rem;
  background: rgba(8, 15, 24, 0.88);
  padding: 1rem; border-radius: 12px; perspective: 800px;
  transition: transform .4s, box-shadow .4s;
  border: 1px solid rgba(255,255,255,.06);
  backdrop-filter: blur(2px);
}
.card:hover { transform: rotateY(5deg) rotateX(1.5deg); box-shadow: 0 10px 20px rgba(0,0,0,0.4), 0 0 20px var(--accent-glow); }

.case-study h4 { font-size: 1rem; margin: .75rem 0 .25rem; color: var(--accent); }
.case-study p { margin-bottom: 1rem; line-height: 1.55; }

/* In-content links pop */
section .links a, #contact a { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
section .links a:hover, #contact a:hover { color: var(--link-hover); border-bottom-color: var(--link-hover); }

/* Skills */
.skill { margin-bottom: 1rem; }
.skill span { display: block; margin-bottom: .3rem; font-weight: 600; }
.progress { background: rgba(255,255,255,0.12); border-radius: 6px; overflow: hidden; height: .6rem; }
.progress-fill { width: 0; height: 100%; background: var(--accent); box-shadow: 0 0 10px var(--accent-glow); transition: width 2s ease-out; }

/* Reveal on scroll */
.reveal { opacity: 0; transform: translateY(40px); transition: opacity .7s ease-out, transform .7s ease-out; }
.reveal.visible { opacity: 1; transform: translateY(0); }

/* Footer */
footer { text-align: center; padding: 1rem 0; font-size: .9rem; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
  .card:hover { transform: none; box-shadow: none; }
}
@media (max-width: 600px) {
  .header-inner { flex-direction: column; text-align: center; }
  nav ul { flex-wrap: wrap; gap: 1rem; }
  .quick-facts { grid-auto-flow: row; }
}
/* Hide portfolio body while in space travel / game */
.hide-main { display: none !important; }
