/* ============================================================================
   theme-base.css — canonical registry of theme (color + shadow) tokens.
   ----------------------------------------------------------------------------
   Every token a theme is expected to provide is declared here exactly once.
   Concrete themes (default-dark.css, default-light.css, …) override these with
   their own values; this file is the single source of truth for *which* tokens
   a theme must define.

   Two jobs:
     1. Validation contract — core/theme.js reads the custom-property names
        declared here and, on load/switch, logs a console error for any token
        the active theme fails to define. Add a token here and every theme that
        omits it will report itself.
     2. Graceful fallback — these values are a neutral, legible palette. They
        are normally never seen (a complete theme overrides all of them); if a
        theme has a gap, the affected widgets fall back to these instead of
        rendering empty/broken, while the console error flags it for a fix.

   Theme-agnostic tokens (spacing, typography, sizing, layout, radii, focus,
   z-index, motion) live in tokens.css and are NOT part of this contract.

   Load order matters: tokens.css → theme-base.css → default-*.css. A theme's
   bare `:root` rule must come after this file so it wins when no data-theme
   attribute is set.
   ============================================================================ */

:root {
  /* ——— Color: surfaces ——— */
  --color-bg: #1a1a1a;
  --color-surface: #242424;
  --color-surface-2: #2e2e2e;
  --color-surface-3: #383838;
  --color-border: #3a3a3a;
  --color-border-strong: #4a4a4a;
  --color-text: #e0e0e0;
  --color-text-muted: #9a9a9a;
  --color-text-subtle: #6a6a6a;

  /* ——— Color: accent ——— */
  --color-accent: #7a7f87;
  --color-accent-hover: #8a8f97;
  --color-accent-active: #6a6f77;
  --color-accent-bg: rgba(122, 127, 135, 0.14);
  --color-on-accent: #ffffff;

  /* ——— Color: semantic ——— */
  --color-info: #5a7a9a;
  --color-info-bg: rgba(90, 122, 154, 0.12);
  --color-info-text: #b0c4d8;

  --color-success: #5a8a5a;
  --color-success-bg: rgba(90, 138, 90, 0.12);
  --color-success-text: #b0d0b0;

  --color-warn: #b0904a;
  --color-warn-bg: rgba(176, 144, 74, 0.13);
  --color-warn-text: #e0c890;

  --color-error: #b05a5a;
  --color-error-bg: rgba(176, 90, 90, 0.13);
  --color-error-text: #e0a0a0;

  /* ——— Shadows ——— */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
  --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.45);
  --shadow-floating: 0 10px 32px rgba(0, 0, 0, 0.5);
}
