/* ============================================
   RUNTIME INTERFACE — Design System
   Interactive Developer Control-Panel Portfolio
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Chakra+Petch:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Azeret+Mono:wght@300;400;500;600&family=Syne:wght@400;500;600;700;800&display=swap');

/* ── Theme Tokens ── */
[data-theme="dark"] {
  --bg-deep:      #06080c;
  --bg-surface:   #0d1117;
  --bg-card:      #131a24;
  --bg-elevated:  #1a2332;
  --bg-hover:     #222d3d;
  --text-primary:   #e6edf3;
  --text-secondary: #8b949e;
  --text-muted:     #484f58;
  --border:         rgba(255, 255, 255, 0.06);
  --border-active:  rgba(56, 189, 248, 0.4);
  --glass:          rgba(13, 17, 23, 0.8);
  --glass-heavy:    rgba(6, 8, 12, 0.92);
  --nav-bg:         rgba(6, 8, 12, 0.88);
  --shadow-color:   rgba(0, 0, 0, 0.3);
  --scanline-color: rgba(56, 189, 248, 0.006);
  --grid-color:     rgba(56, 189, 248, 0.015);
  --selection-bg:   rgba(56, 189, 248, 0.15);
}

[data-theme="light"] {
  --bg-deep:      #f8fafc;
  --bg-surface:   #f1f5f9;
  --bg-card:      #ffffff;
  --bg-elevated:  #ffffff;
  --bg-hover:     #f1f5f9;
  --text-primary:   #0f172a;
  --text-secondary: #475569;
  --text-muted:     #94a3b8;
  --border:         rgba(0, 0, 0, 0.08);
  --border-active:  rgba(14, 116, 144, 0.4);
  --glass:          rgba(248, 250, 252, 0.8);
  --glass-heavy:    rgba(248, 250, 252, 0.92);
  --nav-bg:         rgba(248, 250, 252, 0.88);
  --shadow-color:   rgba(0, 0, 0, 0.06);
  --scanline-color: transparent;
  --grid-color:     rgba(14, 116, 144, 0.03);
  --selection-bg:   rgba(14, 116, 144, 0.12);
}

:root {
  /* Signal Colors — shared between themes */
  --accent:       #38bdf8;
  --accent-dim:   rgba(56, 189, 248, 0.12);
  --accent-glow:  rgba(56, 189, 248, 0.2);
  --green:        #4ade80;
  --green-dim:    rgba(74, 222, 128, 0.1);
  --amber:        #fbbf24;
  --red:          #f87171;
  --purple:       #a78bfa;

  /* Typography */
  --font-display: 'Syne', 'Chakra Petch', sans-serif;
  --font-ui:      'Chakra Petch', sans-serif;
  --font-mono:    'Azeret Mono', 'Fira Code', monospace;
  --fs-hero:      clamp(3.5rem, 9vw, 7rem);
  --fs-h1:        clamp(2rem, 4.5vw, 3rem);
  --fs-h2:        clamp(1.4rem, 3vw, 2rem);
  --fs-h3:        clamp(1.05rem, 2vw, 1.25rem);
  --fs-body:      clamp(0.9rem, 1.1vw, 1rem);
  --fs-small:     clamp(0.78rem, 0.95vw, 0.88rem);
  --fs-mono:      clamp(0.7rem, 0.85vw, 0.78rem);

  /* Spacing */
  --space-xs: 0.5rem;
  --space-s:  1rem;
  --space-m:  2rem;
  --space-l:  3rem;
  --space-xl: 5rem;
  --space-2xl: 8rem;

  /* Motion */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --dur-fast: 150ms;
  --dur-med:  300ms;
  --dur-slow: 600ms;
}

/* Light theme color overrides */
[data-theme="light"] {
  --accent: #0891b2;
  --accent-dim: rgba(8, 145, 178, 0.08);
  --accent-glow: rgba(8, 145, 178, 0.15);
  --green: #059669;
  --green-dim: rgba(5, 150, 105, 0.08);
  --amber: #d97706;
  --red: #dc2626;
  --purple: #7c3aed;
}

/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }

body {
  font-family: var(--font-ui);
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-deep);
  overflow-x: hidden;
  transition: background var(--dur-med), color var(--dur-med);
}

/* Subtle grid background */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  opacity: 1;
  background-image:
    linear-gradient(var(--grid-color) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);
  background-size: 50px 50px;
}

a { color: var(--accent); text-decoration: none; transition: color var(--dur-fast); }
a:hover { filter: brightness(1.2); }
img { max-width: 100%; display: block; }
::selection { background: var(--selection-bg); color: var(--accent); }
.container { max-width: 1160px; margin: 0 auto; padding: 0 var(--space-m); }

/* ── Scroll Reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* ── Animations ── */
@keyframes slideIn {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
@keyframes barGrow { from { width: 0; } }
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes borderGlow {
  0%, 100% { border-color: rgba(56, 189, 248, 0.2); }
  50% { border-color: rgba(56, 189, 248, 0.5); }
}
