/* GENERATED by apps/web/build_tokens.py from identity/design-tokens.json.
   Do not edit. A colour typed by hand here would drift from the frozen identity. */
:root {
  --color-bg-base: #0E1116;
  --color-bg-raised: #151A21;
  --color-bg-overlay: #1B2129;
  --color-bg-sunken: #0A0D11;
  --color-bg-inset: #11161C;
  --color-border-subtle: #212932;
  --color-border-default: #2C3742;
  --color-border-strong: #3D4A58;
  --color-border-grid: #FFFFFF12;
  --color-text-primary: #E6EAF0;
  --color-text-secondary: #A5B0BF;
  --color-text-muted: #7D8897;
  --color-text-disabled: #616C7B;
  --color-text-inverse: #0E1116;
  --color-interaction-accent: #37C9E0;
  --color-interaction-accent-dim: #1E7F91;
  --color-interaction-accent-wash: #37C9E01F;
  --color-interaction-hover: #FFFFFF0A;
  --color-interaction-focus: #37C9E0;
  --color-interaction-link: #5FD4E6;
  --color-status-verified: #3FB27F;
  --color-status-designed: #A5B0BF;
  --color-status-proposed: #D9A02B;
  --color-status-warning: #E0813C;
  --color-status-blocked: #E35A51;
  --color-status-unknown: #8792A3;
  --color-status-changed: #A47BE8;
  --color-status-stale: #7A8490;
  --color-topology-node-device: #1B2129;
  --color-topology-node-stroke: #3D4A58;
  --color-topology-node-wan: #16222B;
  --color-topology-group-stroke: #2C3742;
  --color-topology-group-fill: #FFFFFF05;
  --color-topology-link-default: #8792A3;
  --color-topology-port-fill: #0E1116;
  --color-topology-port-stroke: #5A6472;
  --color-rack-frame: #3D4A58;
  --color-rack-unit-free: #11161C;
  --color-rack-unit-rule: #FFFFFF0A;
  --color-rack-existing: #232B35;
  --font-family-ui: Inter, 'Segoe UI', system-ui, sans-serif;
  --font-family-mono: 'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace;
  --font-size-micro: 10px;
  --font-size-xs: 11px;
  --font-size-sm: 12px;
  --font-size-base: 13px;
  --font-size-md: 15px;
  --font-size-lg: 18px;
  --font-size-xl: 24px;
  --font-size-display: 40px;
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-tracking-wordmark: 0.18em;
  --font-tracking-label: 0.06em;
  --font-tracking-normal: 0;
  --font-numeric: tabular-nums;
  --space-unit: 4px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --density-row-compact: 36px;
  --density-row-standard: 44px;
  --density-control-height: 32px;
  --density-nav-height: 48px;
  --density-inspector-width: 360px;
  --radius-none: 0;
  --radius-sm: 2px;
  --radius-md: 4px;
  --border-width-hairline: 1px;
  --border-width-emphasis: 2px;
  --stroke-link-infrastructure: 2px;
  --stroke-link-access: 1px;
  --stroke-node: 1.5px;
  --stroke-group: 1px;
  --dash-copper: none;
  --dash-fiber: 10 5;
  --dash-dac: 3 3;
  --dash-unresolved: 2 4;
  --dash-group: 4 4;
  --dash-proposed: 6 4;
  --elevation-flat: none;
  --elevation-overlay: 0 8px 24px #00000066;
  --opacity-disabled: 0.45;
  --opacity-stale: 0.55;
  --opacity-grid: 0.07;
  --motion-micro: 80ms;
  --motion-standard: 140ms;
  --motion-large: 220ms;
  --motion-easing: cubic-bezier(0.2, 0, 0, 1);
  --motion-reduced: 0ms;
  --icon-size-sm: 14px;
  --icon-size-md: 16px;
  --icon-size-lg: 20px;
  --icon-stroke: 1.5px;
  --print-bg: #FFFFFF;
  --print-text: #111418;
  --print-rule: #C7CDD5;
  --print-muted: #5B6673;
  --print-status-blocked: #B3372F;
  --print-status-proposed: #9A6E10;
  --print-status-verified: #1F7A52;
  --print-status-unknown: #5B6673;
}

/* Frozen semantic states: hue + glyph. The word comes from the lexicon. */
[data-stato="BLOCKED"] { --stato-colore: var(--color-status-blocked); }
[data-stato="BLOCKED"] > .glifo::before { content: "\2B22"; }
[data-stato="CHANGED"] { --stato-colore: var(--color-status-changed); }
[data-stato="CHANGED"] > .glifo::before { content: "\0394"; }
[data-stato="DESIGNED"] { --stato-colore: var(--color-status-designed); }
[data-stato="DESIGNED"] > .glifo::before { content: ""; }
[data-stato="FIELD_CONFIRMATION_REQUIRED"] { --stato-colore: var(--color-status-proposed); }
[data-stato="FIELD_CONFIRMATION_REQUIRED"] > .glifo::before { content: "\2316"; }
[data-stato="PROPOSED"] { --stato-colore: var(--color-status-proposed); }
[data-stato="PROPOSED"] > .glifo::before { content: "\25C7"; }
[data-stato="STALE"] { --stato-colore: var(--color-status-stale); }
[data-stato="STALE"] > .glifo::before { content: "\25A4"; }
[data-stato="UNKNOWN"] { --stato-colore: var(--color-status-unknown); }
[data-stato="UNKNOWN"] > .glifo::before { content: "?"; }
[data-stato="VERIFIED"] { --stato-colore: var(--color-status-verified); }
[data-stato="VERIFIED"] > .glifo::before { content: "\2713"; }
[data-stato="WARNING"] { --stato-colore: var(--color-status-warning); }
[data-stato="WARNING"] > .glifo::before { content: "\25B3"; }
