:root {
  /* Colors — dark default; light via html.theme-light */
  --color-surface: #2c2a26;
  --color-surface-soft: #383530;
  --color-text: #f1f5f9;
  --color-text-muted: rgba(255, 255, 255, 0.45);
  --color-primary: #20aee3;
  --color-success: #4ade80;
  --color-warning: #f59e0b;
  --color-danger: #f87171;
  --color-border: rgba(255, 255, 255, 0.1);
  --color-brand-logo: #ffffff;

  /* Spacing */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;

  /* Layout */
  --header-height: 56px;
  --header-brand-logo-height: 22px;
  --z-header: 100;
  --content-max-width: 1300px;
  --page-padding-x: var(--space-4);

  /* Component sizes — canonical; see docs/component-sizes.md */
  --control-height-md: 36px;
  --plaque-control-height: 32px;
  --plaque-label-width: 7.5rem;
  --plaque-label-width-wide: 10rem;
  --icon-size-md: 18px;
  --input-min-width: 200px;

  /* Shape & motion */
  --radius-sm: 8px;
  --duration-fast: 120ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);

  /* Typography */
  --font-sans: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  --font-size-base: 1rem;
  --font-size-sm: 0.875rem;
  --font-size-xs: 0.6875rem;

  /* Interactive surfaces */
  --hover-bg: rgba(255, 255, 255, 0.08);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  line-height: 1.5;
  color: var(--color-text);
  background: var(--color-surface);
}

html.theme-light {
  --color-surface: #f0ede8;
  --color-surface-soft: #e8e4dd;
  --color-header-surface: #faf9f7;
  --color-text: #1c1917;
  --color-text-muted: rgba(28, 25, 23, 0.55);
  --color-border: rgba(28, 25, 23, 0.12);
  --color-warning: #b45309;
  --color-brand-logo: #1c1917;
  --hover-bg: rgba(28, 25, 23, 0.06);
}
