/* Shared design tokens — single source for the primitives that were previously
   hand-mirrored across public.css / admin.css. Linked before the surface
   stylesheet in every base template (public_base, base, error). Surface-specific
   tokens (fonts, shadows, status-colour families, layout metrics) stay in their
   own :root. Only cross-surface primitives live here. */
:root {
  /* Colour + radius — byte-identical across all three surfaces before this file
     existed; consolidating carries no visual change. */
  --bg: #f5f8fc;
  --surface: #ffffff;
  --surface-soft: #eef4fb;
  --ink: #0f1f34;
  --ink-muted: #4c607d;
  --line: #d9e2ef;
  --brand: #003366;
  --brand-strong: #00264d;
  --danger: #b3261e;
  --radius: 0.45rem;
  --radius-sm: 0.3rem;

  /* 8px spacing scale — every margin/padding/gap should resolve here (sub-4px
     optical nudges exempt). Previously admin-only; now available site-wide. */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;

  /* Type scale (rem) — for incremental adoption; replaces freehand font sizes
     as rules get touched. Display headlines keep their bespoke clamp(). */
  --type-xs: 0.75rem;
  --type-sm: 0.875rem;
  --type-base: 1rem;
  --type-md: 1.125rem;
  --type-lg: 1.25rem;
  --type-xl: 1.5rem;
  --type-2xl: 2rem;
  --type-3xl: 2.5rem;

  /* Canonical breakpoints (were prose in ARCHITECTURE.md). CSS custom properties
     can't drive @media conditions without a build step, so these document the
     set and are usable in @container queries as that adoption lands. */
  --bp-sm: 30rem;
  --bp-md: 48rem;
  --bp-lg: 64rem;
}
