/* CIVWATCH Design Standard v2 — generated by src/build_tokens.py. Do not hand-edit. */
/* Fonts: IBM Plex Sans 400–700, IBM Plex Mono 400–600, Source Serif 4 (opsz 8–60, 400–700) via Google Fonts. */
/* Copied verbatim into the public site; contrast verified in claude/design/contrast-report.md (0 failures). */

:root {
  --cw-font-sans: "IBM Plex Sans", system-ui, sans-serif;
  --cw-font-serif: "Source Serif 4", Georgia, serif;
  --cw-font-mono: "IBM Plex Mono", ui-monospace, monospace;
  --cw-space-1: 4px;
  --cw-space-2: 8px;
  --cw-space-3: 12px;
  --cw-space-4: 16px;
  --cw-space-6: 24px;
  --cw-space-8: 32px;
  --cw-space-12: 48px;
  --cw-space-16: 64px;
  --cw-radius-sm: 2px;
  --cw-radius-md: 4px;
  --cw-radius-lg: 6px;
  --cw-radius-xl: 8px;
  --cw-dur-fast: 100ms;
  --cw-dur-base: 160ms;
  --cw-dur-slow: 240ms;
  --cw-ease-standard: cubic-bezier(0.2,0,0,1);
  --cw-ease-exit: cubic-bezier(0.4,0,1,1);
  --cw-focus-width: 2px;
  --cw-focus-offset: 2px;
  --cw-shadow-overlay: 0 8px 24px rgba(0, 0, 0, 0.40);
  --cw-cone-fill-opacity: 0.18;
  --cw-cone-stroke: 1.5px;
  --cw-halo-fill-opacity: 0.08;
  --cw-dv-alpr-fixed: #E69F00;
  --cw-dv-alpr-mobile-ptz: #56B4E9;
  --cw-dv-acoustic-gunshot: #CC79A7;
  --cw-dv-public-mic: #009E73;
  --cw-dv-contract-geo: #F0E442;
  --cw-dv-cell-anomaly: #D55E00;
  --cw-dv-other-device: #0072B2;
  --cw-dv-unclassified: #A8B0BC;
  --cw-seq-0: #00224E;
  --cw-seq-1: #1A386F;
  --cw-seq-2: #434E6C;
  --cw-seq-3: #61656F;
  --cw-seq-4: #7D7C78;
  --cw-seq-5: #9B9476;
  --cw-seq-6: #BCAE6C;
  --cw-seq-7: #DEC958;
  --cw-seq-8: #FEE838;
  --cw-type-display-xl: 600 56px/1.05 var(--cw-font-serif);
  --cw-track-display-xl: -0.02em;
  --cw-type-display: 600 40px/1.1 var(--cw-font-serif);
  --cw-track-display: -0.015em;
  --cw-type-h1: 600 32px/1.15 var(--cw-font-sans);
  --cw-track-h1: -0.01em;
  --cw-type-h2: 600 24px/1.25 var(--cw-font-sans);
  --cw-type-h3: 600 20px/1.3 var(--cw-font-sans);
  --cw-type-body-lg: 400 18px/1.6 var(--cw-font-serif);
  --cw-type-body: 400 16px/1.5 var(--cw-font-sans);
  --cw-type-body-sm: 400 14px/1.45 var(--cw-font-sans);
  --cw-type-label: 500 13px/1.3 var(--cw-font-sans);
  --cw-track-label: 0.01em;
  --cw-type-eyebrow: 600 12px/1.3 var(--cw-font-sans);
  --cw-track-eyebrow: 0.06em;
  --cw-type-caption: 400 12px/1.35 var(--cw-font-sans);
  --cw-type-data: 400 13px/1.4 var(--cw-font-mono);
}

:root, [data-theme="editorial"] {
  color-scheme: light;
  --cw-bg-canvas: #F7F6F2;
  --cw-bg-surface: #FFFFFF;
  --cw-bg-raised: #FFFFFF;
  --cw-text-primary: #111418;
  --cw-text-secondary: #4A5260;
  --cw-text-muted: #5F6773;
  --cw-text-on-accent: #FFFFFF;
  --cw-border-subtle: #D9D6CE;
  --cw-border-control: #7A808A;
  --cw-accent: #0E6E85;
  --cw-accent-subtle: #E4F0F2;
  --cw-focus-ring: #0E6E85;
  --cw-success: #1F7A4D;
  --cw-success-subtle: #E6F2EB;
  --cw-warning: #8A5A00;
  --cw-warning-subtle: #FBF1DC;
  --cw-danger: #B42318;
  --cw-danger-subtle: #FBEAE8;
  --cw-info: #2B5CB8;
  --cw-info-subtle: #E8EEF9;
  --cw-neutral: #4A5260;
  --cw-neutral-subtle: #EFEDE7;
  --cw-marker-stroke: #111418;
  --cw-row-h: 44px;
  --cw-control-h: 40px;
  --cw-cell-px: 16px;
}
[data-theme="ops"] {
  color-scheme: dark;
  --cw-bg-canvas: #0A0C10;
  --cw-bg-surface: #111418;
  --cw-bg-raised: #161B22;
  --cw-text-primary: #E6EAF0;
  --cw-text-secondary: #A8B0BC;
  --cw-text-muted: #8B949E;
  --cw-text-on-accent: #0A0C10;
  --cw-border-subtle: #2A313B;
  --cw-border-control: #6B7684;
  --cw-accent: #56C2D6;
  --cw-accent-subtle: #0D2328;
  --cw-focus-ring: #E6EAF0;
  --cw-success: #3FB37F;
  --cw-success-subtle: #10241B;
  --cw-warning: #E8A33D;
  --cw-warning-subtle: #2A2112;
  --cw-danger: #F2685F;
  --cw-danger-subtle: #2A1517;
  --cw-info: #7AA7FF;
  --cw-info-subtle: #121D33;
  --cw-neutral: #A8B0BC;
  --cw-neutral-subtle: #161B22;
  --cw-marker-stroke: #0A0C10;
  --cw-map-land: #12161B;
  --cw-map-water: #0B1016;
  --cw-map-road: #232A33;
  --cw-map-label: #8B949E;
  --cw-row-h: 36px;
  --cw-control-h: 32px;
  --cw-cell-px: 12px;
}
[data-density="comfortable"] { --cw-row-h: 44px; --cw-control-h: 40px; --cw-cell-px: 16px; }
[data-density="default"] { --cw-row-h: 36px; --cw-control-h: 32px; --cw-cell-px: 12px; }
[data-density="compact"] { --cw-row-h: 28px; --cw-control-h: 28px; --cw-cell-px: 8px; }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: var(--cw-focus-width) solid var(--cw-focus-ring);
  outline-offset: var(--cw-focus-offset);
}
.cw-num { font-family: var(--cw-font-mono); font-variant-numeric: tabular-nums slashed-zero; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
