:root {
  /* Semantic colour roles */
  --canvas: var(--bg);
  --surface-base: var(--bg2);
  --surface-raised: var(--bg3);
  --surface-interactive: var(--surface);
  --surface-interactive-hover: var(--surface2);
  --surface-selected: color-mix(in srgb, var(--accent) 10%, var(--surface-base));
  --divider: var(--border);
  --divider-strong: var(--border2);
  --text-primary: var(--text);
  --text-secondary: var(--text2);
  --text-muted: var(--text3);

  /* Spacing */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;

  /* Shape */
  --radius-control: 8px;
  --radius-panel: 14px;
  --radius-modal: 18px;
  --radius-round: 999px;

  /* Elevation is reserved for floating UI. */
  --shadow-menu: 0 12px 32px rgba(0, 0, 0, .28);
  --shadow-modal: 0 24px 72px rgba(0, 0, 0, .42);
  --shadow-drag: 0 18px 42px rgba(0, 0, 0, .34);
}

/*
 * Breakpoint reference  -  use these values in all new @media queries.
 * Existing queries are being migrated toward these over time.
 *
 *  --bp-sm:  480px   mobile portrait
 *  --bp-md:  768px   mobile landscape / small tablet
 *  --bp-lg:  900px   tablet / nav collapse
 *  --bp-xl:  1024px  laptop
 *  --bp-2xl: 1280px  wide desktop
 *
 * Usage: @media (max-width: 768px) { ... }
 * (CSS custom properties cannot be used inside @media conditions.)
 */
