:root {
  color-scheme: light;
  --cg-paper: oklch(97% 0.012 92);
  --cg-paper-muted: oklch(94% 0.018 126);
  --cg-paper-raised: oklch(99% 0.008 92);
  --cg-rule: oklch(79% 0.022 132);
  --cg-rule-strong: oklch(62% 0.035 145);
  --cg-ink: oklch(22% 0.026 153);
  --cg-ink-soft: oklch(39% 0.025 153);
  --cg-ink-muted: oklch(47% 0.024 153);
  --cg-forest: oklch(28% 0.062 158);
  --cg-forest-deep: oklch(21% 0.047 158);
  --cg-forest-ink: oklch(97% 0.012 92);
  --cg-copper: oklch(49% 0.145 36);
  --cg-copper-soft: oklch(92% 0.035 42);
  --cg-gold: oklch(46% 0.105 88);
  --cg-gold-soft: oklch(93% 0.042 90);
  --cg-sage: oklch(44% 0.075 154);
  --cg-sage-soft: oklch(91% 0.035 150);
  --cg-focus: oklch(52% 0.19 255);
  --cg-error: oklch(49% 0.17 28);
  --cg-rule-dark: oklch(43% 0.04 158);
  --cg-nav-muted: oklch(88% 0.018 135);
  --cg-nav-marker: oklch(78% 0.09 78);
  --cg-copper-ink: oklch(33% 0.11 30);
  --cg-attention-ink: oklch(36% 0.12 30);
  --cg-decision-ink: oklch(34% 0.08 80);
  --cg-waiting-soft: oklch(91% 0.018 250);
  --cg-complete-ink: oklch(34% 0.065 154);
  --cg-hover-paper: oklch(95% 0.018 118);
  --cg-font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --cg-font-wordmark: "Newsreader", ui-serif, serif;
  --cg-space-2xs: 0.25rem;
  --cg-space-xs: 0.5rem;
  --cg-space-sm: 0.75rem;
  --cg-space-md: 1rem;
  --cg-space-lg: 1.5rem;
  --cg-space-xl: 2.5rem;
  --cg-space-2xl: 4rem;
  --cg-radius-sm: 4px;
  --cg-radius-md: 7px;
  --cg-dur: 140ms;
  --cg-ease: cubic-bezier(0.16, 1, 0.3, 1);

  /*
   * Public-shell contract.
   *
   * The assessment workspace consumes the --cg-* primitives above. The public
   * home, data, policy, and guide surfaces consume these semantic aliases. Keep
   * both layers in this one file so a token refresh cannot silently leave an
   * entire public route on browser-default colors, spacing, and typography.
   */
  --color-paper: var(--cg-paper);
  --color-paper-raised: var(--cg-paper-raised);
  --color-paper-soft: var(--cg-paper-muted);
  --color-canvas: var(--cg-paper-muted);
  --color-surface: var(--cg-paper-raised);
  --color-white: oklch(100% 0 0);
  --color-ink: var(--cg-ink);
  --color-ink-soft: var(--cg-ink-soft);
  --color-muted: var(--cg-ink-muted);
  --color-rule: var(--cg-rule);
  --color-rule-strong: var(--cg-rule-strong);
  --color-leaf: var(--cg-forest);
  --color-leaf-dark: var(--cg-forest-deep);
  --color-leaf-light: var(--cg-sage-soft);
  --color-leaf-ink: var(--cg-forest-ink);
  --color-clay: var(--cg-copper);
  --color-clay-light: var(--cg-copper-soft);
  --color-blue: oklch(46% 0.12 250);
  --color-blue-light: var(--cg-waiting-soft);
  --color-sun: var(--cg-gold);
  --color-accent: var(--cg-sage);
  --color-accent-soft: var(--cg-sage-soft);
  --color-focus: var(--cg-focus);
  --color-shadow: oklch(20% 0.03 153 / 0.14);

  --font-body: "IBM Plex Sans", "Source Sans 3", var(--cg-font-body);
  --font-display: "Newsreader", ui-serif, Georgia, serif;
  --font-mono: "IBM Plex Mono", "Source Code Pro", ui-monospace, monospace;

  --space-3xs: 2px;
  --space-2xs: var(--cg-space-2xs);
  --space-xs: var(--cg-space-xs);
  --space-sm: var(--cg-space-sm);
  --space-md: var(--cg-space-md);
  --space-lg: var(--cg-space-lg);
  --space-xl: var(--cg-space-xl);
  --space-2xl: var(--cg-space-2xl);
  --space-3xl: 6rem;
  --space-4xl: 8rem;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-md: 1.25rem;
  --text-lg: 1.5625rem;
  --text-xl: 1.953rem;
  --text-2xl: 2.441rem;
  --text-display: clamp(3rem, 6vw, 5.25rem);

  --radius-small: var(--cg-radius-sm);
  --radius-large: var(--cg-radius-md);
  --rule-thin: 1px;
  --rule-heavy: 2px;
  --duration-fast: var(--cg-dur);
  --ease-out: var(--cg-ease);
}
