/* SEN3i — Vanilla design tokens (mirrors src/index.css) */
:root {
  --background: 150 25% 99%;
  --foreground: 155 30% 10%;
  --surface: 150 20% 97%;
  --surface-elevated: 0 0% 100%;
  --card: 0 0% 100%;
  --card-foreground: 155 30% 10%;

  --primary: 152 60% 36%;
  --primary-foreground: 0 0% 100%;
  --primary-glow: 148 65% 48%;
  --primary-deep: 156 70% 22%;

  --accent: 152 60% 36%;
  --accent-foreground: 0 0% 100%;
  --secondary: 150 20% 94%;
  --secondary-foreground: 155 30% 18%;
  --muted: 150 18% 96%;
  --muted-foreground: 155 12% 40%;
  --destructive: 0 84% 55%;
  --destructive-foreground: 0 0% 100%;
  --warning: 38 95% 52%;
  --success: 152 65% 42%;

  --border: 150 18% 88%;
  --border-strong: 150 18% 78%;
  --input: 150 18% 90%;
  --ring: 152 60% 36%;

  --gradient-primary: linear-gradient(135deg, hsl(152 60% 36%), hsl(148 65% 48%));
  --gradient-radial: radial-gradient(circle at 50% 0%, hsl(152 60% 36% / 0.12), transparent 60%);
  --gradient-command: linear-gradient(135deg, hsl(156 45% 10%), hsl(156 50% 6%));
}

.dark {
  --background: 156 30% 6%;
  --foreground: 150 15% 94%;
  --surface: 156 28% 9%;
  --surface-elevated: 156 26% 11%;
  --card: 156 26% 10%;
  --card-foreground: 150 15% 94%;

  --primary: 148 70% 48%;
  --primary-foreground: 156 45% 8%;
  --primary-glow: 145 80% 58%;
  --primary-deep: 152 70% 32%;

  --accent: 148 70% 48%;
  --accent-foreground: 156 45% 8%;
  --secondary: 156 20% 16%;
  --secondary-foreground: 150 15% 92%;
  --muted: 156 22% 14%;
  --muted-foreground: 150 10% 62%;
  --destructive: 0 75% 58%;
  --warning: 38 95% 58%;
  --success: 148 70% 48%;

  --border: 156 20% 18%;
  --border-strong: 156 20% 26%;
  --input: 156 20% 18%;
  --ring: 148 70% 48%;

  --gradient-primary: linear-gradient(135deg, hsl(148 70% 42%), hsl(145 80% 55%));
  --gradient-radial: radial-gradient(circle at 50% 0%, hsl(148 70% 48% / 0.18), transparent 60%);
  --gradient-command: linear-gradient(135deg, hsl(156 50% 5%), hsl(156 55% 3%));
}

html { scroll-behavior: smooth; }
body { font-family: 'Inter', system-ui, -apple-system, sans-serif; }
.font-mono { font-family: 'JetBrains Mono','IBM Plex Mono',ui-monospace,monospace; }

/* === Component utilities === */
.bg-tactical-grid {
  background-image:
    linear-gradient(hsl(var(--border) / 0.6) 1px, transparent 1px),
    linear-gradient(90deg, hsl(var(--border) / 0.6) 1px, transparent 1px);
  background-size: 48px 48px;
}
.bg-tactical-dots {
  background-image: radial-gradient(hsl(var(--border-strong) / 0.5) 1px, transparent 1px);
  background-size: 20px 20px;
}
.bg-gradient-radial { background: var(--gradient-radial); }
.bg-gradient-primary { background: var(--gradient-primary); }
.bg-gradient-command { background: var(--gradient-command); }
.text-gradient-primary {
  background: var(--gradient-primary);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}
.text-balance { text-wrap: balance; }

/* Tactical corner brackets */
.tactical-corners { position: relative; }
.tactical-corners::before, .tactical-corners::after {
  content:""; position:absolute; width:12px; height:12px;
  border:1.5px solid hsl(var(--primary));
}
.tactical-corners::before { top:-1px; left:-1px; border-right:none; border-bottom:none; }
.tactical-corners::after  { bottom:-1px; right:-1px; border-left:none; border-top:none; }

/* Telemetry text */
.telemetry { font-family:'JetBrains Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:.18em; color:hsl(var(--muted-foreground)); }
.telemetry-primary { font-family:'JetBrains Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:.18em; color:hsl(var(--primary)); }

/* Reveal-on-mount fade */
.reveal { opacity: 0; transform: translateY(12px); animation: reveal .6s ease forwards; }
@keyframes reveal { to { opacity: 1; transform: none; } }

/* Leaflet — hide attribution + zoom controls */
.leaflet-control-attribution, .leaflet-control-zoom { display: none !important; }
.leaflet-container { background: hsl(var(--surface)); }

/* === Waveform bars (Emergency Workflow preview) === */
@keyframes waveform-bar {
  0%, 100% { transform: scaleY(0.3); }
  50%       { transform: scaleY(1); }
}

/* === Radar sweep (Contact page briefing card) === */
@keyframes radar-sweep {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
.animate-radar-sweep { animation: radar-sweep 10s linear infinite; }

/* === Pulse ring (Contact page) === */
@keyframes pulse-ring {
  0%    { transform: scale(0.8); opacity: 0.8; }
  100%  { transform: scale(2.6); opacity: 0; }
}
.pulse-ring { animation: pulse-ring 2.4s cubic-bezier(0.4, 0, 0.6, 1) infinite; }

/* === Float (decorative elements) === */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-6px); }
}
.animate-float { animation: float 3s ease-in-out infinite; }

/* === No-scrollbar utility (hides scrollbar on overflow-y-auto elements) === */
.no-scrollbar { scrollbar-width: none; -ms-overflow-style: none; }
.no-scrollbar::-webkit-scrollbar { display: none; }

/* === Scanline (tactical overlay) === */
@keyframes scanline {
  0%   { top: 0%; }
  100% { top: 100%; }
}
.scanline { animation: scanline 4s linear infinite; }
