/*
 * GeoShield theme tokens — GENERATED from ui/styling.py at request time.
 *
 * Do not edit this in a browser devtools panel and paste it back into the
 * repository: `ui/styling.py` is the source, and `tests/test_ui_frontend.py`
 * asserts that every value below appears in it.
 */

:root {
  --gs-base: #0A0B0D;
  --gs-base-navy: #101216;
  --gs-surface: #16181D;
  --gs-surface-raised: #1D2026;
  --gs-line: #282C34;
  --gs-line-soft: #1A1D22;
  --gs-text: #F2F4F7;
  --gs-body: #A7AEBA;
  --gs-muted: #858D9C;
  --gs-secure: #3DD68C;
  --gs-action: #4F9CFF;
  --gs-warn: #F5B547;
  --gs-elevated: #F7853A;
  --gs-critical: #F0595E;
  --gs-secure-tint: rgba(61, 214, 140, 0.13);
  --gs-action-tint: rgba(79, 156, 255, 0.13);
  --gs-warn-tint: rgba(245, 181, 71, 0.14);
  --gs-elevated-tint: rgba(247, 133, 58, 0.14);
  --gs-critical-tint: rgba(240, 89, 94, 0.14);
  --gs-hover: rgba(255, 255, 255, 0.045);
  --gs-header: rgba(10, 11, 13, 0.86);
  --gs-shadow: rgba(0, 0, 0, 0.55);
  --gs-focus: rgba(79, 156, 255, 0.45);
  --gs-on-accent: #06121F;
  --gs-glow-action: rgba(79, 156, 255, 0.30);
  --gs-glow-critical: rgba(240, 89, 94, 0.26);
  --gs-glow-warm: rgba(247, 133, 58, 0.20);
  --gs-glass: rgba(255, 255, 255, 0.035);
  --gs-glass-edge: rgba(255, 255, 255, 0.09);
  --gs-lift: rgba(0, 0, 0, 0.45);
  --gs-font-sans: "Inter", "Segoe UI", system-ui, -apple-system, "Noto Sans Georgian", "BPG Nino Mtavruli", "Sylfaen", sans-serif;
  --gs-font-georgian: "Noto Sans Georgian", "BPG Nino Mtavruli", "Sylfaen", "Inter", sans-serif;
  --gs-font-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;
  --gs-radius: 10px;
  --gs-radius-sm: 7px;
  --gs-radius-lg: 22px;
  color-scheme: dark;
}

/* Band colours, for anything that cannot read the Python constant. */
:root {
  --gs-band-low: #3DD68C;
  --gs-band-medium: #F5B547;
  --gs-band-high: #F7853A;
  --gs-band-critical: #F0595E;
}

/* The same tokens for a workstation set to a light appearance. The
   band fills above are not restated: a filled swatch reads on either
   background, and only the accents used as *text* are darkened.

   `:not([data-theme="dark"])` is how a reader overrules their own
   machine. Asking for dark on a light workstation sets that attribute,
   which no block below matches, so the unqualified `:root` above is
   what applies. See the module docstring. */
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) {
    --gs-base: #F6F7F9;
    --gs-base-navy: #FFFFFF;
    --gs-surface: #F2F4F7;
    --gs-surface-raised: #E8EBF0;
    --gs-line: #DBDFE6;
    --gs-line-soft: #EDEFF3;
    --gs-text: #0F1318;
    --gs-body: #4C5464;
    --gs-muted: #5E6674;
    --gs-secure: #0A6E4B;
    --gs-action: #1660D8;
    --gs-warn: #8A5A00;
    --gs-elevated: #A64A0C;
    --gs-critical: #C32B31;
    --gs-secure-tint: rgba(10, 110, 75, 0.10);
    --gs-action-tint: rgba(22, 96, 216, 0.10);
    --gs-warn-tint: rgba(138, 90, 0, 0.11);
    --gs-elevated-tint: rgba(166, 74, 12, 0.11);
    --gs-critical-tint: rgba(195, 43, 49, 0.10);
    --gs-hover: rgba(15, 19, 24, 0.04);
    --gs-header: rgba(246, 247, 249, 0.88);
    --gs-shadow: rgba(15, 19, 24, 0.14);
    --gs-focus: rgba(22, 96, 216, 0.40);
    --gs-on-accent: #FFFFFF;
    --gs-glow-action: rgba(22, 96, 216, 0.16);
    --gs-glow-critical: rgba(195, 43, 49, 0.14);
    --gs-glow-warm: rgba(166, 74, 12, 0.12);
    --gs-glass: rgba(255, 255, 255, 0.72);
    --gs-glass-edge: rgba(15, 19, 24, 0.08);
    --gs-lift: rgba(15, 19, 24, 0.10);
    color-scheme: light;
  }
}

/* Light because the reader asked for it, whatever the machine prefers.
   Same specificity as the block above and written after it, which is
   the entire reason the explicit choice wins. */
:root[data-theme="light"] {
  --gs-base: #F6F7F9;
  --gs-base-navy: #FFFFFF;
  --gs-surface: #F2F4F7;
  --gs-surface-raised: #E8EBF0;
  --gs-line: #DBDFE6;
  --gs-line-soft: #EDEFF3;
  --gs-text: #0F1318;
  --gs-body: #4C5464;
  --gs-muted: #5E6674;
  --gs-secure: #0A6E4B;
  --gs-action: #1660D8;
  --gs-warn: #8A5A00;
  --gs-elevated: #A64A0C;
  --gs-critical: #C32B31;
  --gs-secure-tint: rgba(10, 110, 75, 0.10);
  --gs-action-tint: rgba(22, 96, 216, 0.10);
  --gs-warn-tint: rgba(138, 90, 0, 0.11);
  --gs-elevated-tint: rgba(166, 74, 12, 0.11);
  --gs-critical-tint: rgba(195, 43, 49, 0.10);
  --gs-hover: rgba(15, 19, 24, 0.04);
  --gs-header: rgba(246, 247, 249, 0.88);
  --gs-shadow: rgba(15, 19, 24, 0.14);
  --gs-focus: rgba(22, 96, 216, 0.40);
  --gs-on-accent: #FFFFFF;
  --gs-glow-action: rgba(22, 96, 216, 0.16);
  --gs-glow-critical: rgba(195, 43, 49, 0.14);
  --gs-glow-warm: rgba(166, 74, 12, 0.12);
  --gs-glass: rgba(255, 255, 255, 0.72);
  --gs-glass-edge: rgba(15, 19, 24, 0.08);
  --gs-lift: rgba(15, 19, 24, 0.10);
  color-scheme: light;
}
