:root {
  --bg: #0a0b0d;
  --panel: #111317;
  --border: #1f242e;
  --text: #e2e8f0;
  --dim-text: #6272a4;
  --unmapped: #161a22;
  --graticule: #1b202b;
  --country-stroke: #1e2430;
  --accent: #00ff66;
}

body.light-theme {
  --bg: #e8f1f9;
  --panel: #f8fafc;
  --border: #cbd5e1;
  --text: #0f172a;
  --dim-text: #475569;
  --unmapped: #d1d5db;
  --graticule: #c0d6e8;
  --country-stroke: #94a3b8;
  --accent: #0284c7;
}

body {
  background-color: var(--bg);
  color: var(--text);
  font-family: 'Geist', sans-serif;
  transition: background-color 0.3s ease, color 0.3s ease;
}

.country {
  stroke: var(--country-stroke);
  stroke-width: 0.4px;
  transition: fill 0.4s cubic-bezier(0.16, 1, 0.3, 1), stroke 0.2s ease, stroke-width 0.2s ease, opacity 0.3s ease;
  cursor: crosshair;
}

.country:hover {
  stroke: var(--accent) !important;
  stroke-width: 1.2px !important;
}

.empire-capital {
  stroke: rgba(255, 255, 255, 0.85);
  stroke-width: 0.7px;
}

body.light-theme .empire-capital {
  stroke: #0f172a;
  stroke-width: 0.7px;
}

.suzerain-highlight {
  stroke: #ffcc00 !important;
  stroke-width: 1.2px !important;
}

.suzerain-hover-highlight {
  stroke: #f59e0b !important;
  stroke-width: 1.2px !important;
  stroke-opacity: 1.0 !important;
  filter: drop-shadow(0 0 4px rgba(245, 158, 11, 0.6));
}

.playing-highlight {
  stroke: #00ffcc !important;
  stroke-width: 1.0px !important;
}

body.light-theme .playing-highlight {
  stroke: #0f766e !important;
  stroke-width: 1.0px !important;
}

.campaign-faction-territory {
  stroke: #f59e0b !important;
  stroke-width: 0.8px !important;
  stroke-opacity: 0.85 !important;
}

.flow-arc {
  fill: none;
  stroke-dasharray: 4, 4;
  animation: flowDash 1s linear infinite;
  pointer-events: none;
}

.active-clash-ray {
  fill: none !important;
  stroke: #00ffcc !important;
  stroke-dasharray: 4, 4;
  animation: flowDash 0.5s linear infinite;
  pointer-events: none;
  filter: drop-shadow(0 0 6px rgba(0, 255, 204, 0.8));
}

.conquest-wave-ring {
  fill: none !important;
  stroke: #ff2255 !important;
  stroke-dasharray: 4, 3;
  pointer-events: none;
  filter: drop-shadow(0 0 10px rgba(255, 34, 85, 0.9));
}

@keyframes flowDash {
  to {
    stroke-dashoffset: -12px;
  }
}

.graticule {
  fill: none;
  stroke: var(--graticule);
  stroke-width: 0.5px;
  pointer-events: none;
}

/* Custom Cyberpunk Slider Range Styling */
input[type=range] {
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
}

input[type=range]:focus {
  outline: none;
}

input[type=range]::-webkit-slider-runnable-track {
  height: 6px;
  background: var(--border);
  border-radius: 3px;
  cursor: pointer;
}

input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  height: 14px;
  width: 14px;
  border-radius: 3px;
  background: #f59e0b;
  border: 2px solid #0a0b0d;
  margin-top: -4px;
  cursor: pointer;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.6);
  transition: transform 0.15s ease, background-color 0.15s ease;
}

input[type=range]::-webkit-slider-thumb:hover {
  transform: scale(1.25);
  background: #00ff66;
  box-shadow: 0 0 12px rgba(0, 255, 102, 0.8);
}

/* Custom Tactical Scrollbar */
::-webkit-scrollbar {
  width: 4px;
  height: 4px;
}

::-webkit-scrollbar-track {
  background: #0a0b0d;
}

::-webkit-scrollbar-thumb {
  background: #1f242e;
  border-radius: 2px;
}

::-webkit-scrollbar-thumb:hover {
  background: #00ff66;
}
