:root {
  color-scheme: dark;
  --portal-bg: #05090e;
  --portal-bg-deep: #020509;
  --surface-elevated: #0b151e;
  --surface-raised: #101f2a;
  --surface-inset: #071017;
  --border: rgba(139, 191, 213, .18);
  --border-luminous: rgba(65, 231, 255, .58);
  --text-primary: #effbff;
  --text-secondary: #a7c0ca;
  --text-muted: #667c86;
  --positive: #55e6a5;
  --warning: #ffbe55;
  --danger: #ff5d72;
  --live: #ff4566;
  --shiny: #ffe16a;
  --specimen-signal: var(--region-accent);
  --species-caught: var(--positive);
  --species-missing: var(--locked);
  --species-selected: var(--region-accent);
  --scanner-field: rgba(65, 231, 255, .12);
  --completion-track: var(--border);
  --locked: #71818a;
  --focus: #fff3a4;
  --region-accent: #f26464;
  --region-secondary: #f5d9a9;
  --region-shadow: #7d252a;
  --region-atmosphere: #452326;
  --region-grid: 52px;
  --region-field-strength: .38;
  --space-1: .25rem;
  --space-2: .5rem;
  --space-3: .75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --radius-sm: .4rem;
  --radius-md: .85rem;
  --radius-lg: 1.35rem;
  --font-xs: .68rem;
  --font-sm: .82rem;
  --font-md: 1rem;
  --font-lg: clamp(1.15rem, 2vw, 1.45rem);
  --font-xl: clamp(1.8rem, 4vw, 3.6rem);
  --motion-fast: 140ms;
  --motion-base: 260ms;
  --motion-slow: 650ms;
  --ease-out: cubic-bezier(.2, .8, .2, 1);
  --layer-map: 0;
  --layer-content: 10;
  --layer-hud: 20;
  --layer-panel: 30;
  --layer-modal: 40;
  --layer-critical: 50;
}

[data-portal-region="johto"] { --region-accent: #e8bd55; --region-secondary: #6fc58a; --region-shadow: #72551f; --region-atmosphere: #293d2d; --region-grid: 64px; --region-field-strength: .42; }
[data-portal-region="hoenn"] { --region-accent: #4ce1b5; --region-secondary: #53aef3; --region-shadow: #126b72; --region-atmosphere: #0b4548; --region-grid: 46px; --region-field-strength: .44; }

@media (prefers-reduced-motion: reduce) {
  :root { --motion-fast: 0ms; --motion-base: 0ms; --motion-slow: 0ms; }
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}
