/*
 * tokens.css — OLYMPIANER design tokens (single source of truth)
 *
 * Linked by: index.html, impressum.html, datenschutz.html, agb.html, widerruf.html
 * Extracted from index.html :root block per /autoplan Phase 4 taste-decision (Claude voice).
 *
 * When tokens change, change them here. Both home and legal pages pick it up.
 * Cached by nginx with `expires 7d; immutable` (see staging.olympianer.de.conf).
 */

:root {
  /* Typography (v0.11.25: typography is a design token, owned by tokens.css.
     chrome.css applies it via var(--font-sans). Prior to v0.11.25 chrome
     hard-coded 'Poppins, sans-serif' on body + .nav-brand + .logo-customizer
     — making future font swaps a 3-file change. Now it's a 1-line token.) */
  --font-sans: 'Poppins', sans-serif;

  /* Surfaces */
  --white: #ffffff;
  --off-white: #f8f9fc;
  --navy: #1c244b;

  /* Brand accent + states */
  --blue: #467ff7;
  --blue-light: rgba(70, 127, 247, 0.08);
  --blue-hover: #3568d4;
  /* v0.10.25 (B3, OLYMPIANER-25): --blue-text is the WCAG-AA-safe variant
     of --blue for use as text on light backgrounds. The brand accent
     `--blue` (#467ff7) renders at ~3.7:1 against white — bright, but
     fails Level AA (4.5:1) for normal-size text. `--blue-text`
     (#2e5cd0) renders at ~5.7:1 — passes AA for normal text, still
     visually-blue, brand-recognizable. Use --blue for fills, borders,
     icons, and brand accents where contrast is less critical. Use
     --blue-text wherever text reads against a light surface. */
  --blue-text: #2e5cd0;

  /* Type + utility grays */
  --gray: #6b7280;
  --gray-light: #9ca3af;
  --gray-dim: #d1d5db;
  --border: #e5e7eb;

  /* Spacing rhythm — used by main site sections AND legal-page main column */
  --section-pad: clamp(3rem, 8vw, 6rem) clamp(1.25rem, 4vw, 3rem);

  /* v0.11.11: fixed top-nav height. Single source of truth for body clearance
     under the nav. Used by:
       body { padding-top: var(--nav-height); }   sitewide content offset
       html { scroll-padding-top: var(--nav-height); }   anchor-landing offset
     Approximate measurement: nav-cart button governs height (44px min-height) +
     1rem top/bottom padding = ~76px. Touching nav.top-nav's vertical padding
     requires updating this value. */
  --nav-height: 76px;

  /* WCAG link tokens. Updated 2026-05-07 with audited contrast ratios:
   *   --blue (#467ff7) on white: ~3.7:1 — fails AA normal text, passes Large.
   *   --blue-text (#2e5cd0) on white: ~5.7:1 — passes AA normal.
   *   --blue on --navy (#1c244b): use --link-on-dark.
   *   --link-on-dark (#8aaeff) on --navy: ~6.0:1 — passes AA normal. */
  --link-on-light: var(--blue-text);
  --link-on-dark: #8aaeff;
}
