:root {
  color-scheme: dark;

  /* Plexdes v2 OKLCH primitives: canonical brand-token layer. */
  --plexdes-brand-bg-base: oklch(10% 0.006 260);
  --plexdes-brand-red: oklch(55% 0.16 25);
  --plexdes-brand-red-hover: oklch(60% 0.17 25);

  /* Neutral ramp: perceptual dark ladder. */
  --plexdes-neutral-1: oklch(10% 0.006 260);
  --plexdes-neutral-2: oklch(13% 0.008 260);
  --plexdes-neutral-3: oklch(16% 0.009 260);
  --plexdes-neutral-4: oklch(19% 0.010 260);
  --plexdes-neutral-5: oklch(23% 0.012 260);
  --plexdes-neutral-6: oklch(32% 0.014 260);
  --plexdes-neutral-7: oklch(46% 0.016 260);
  --plexdes-neutral-8: oklch(64% 0.018 260);
  --plexdes-neutral-9: oklch(78% 0.018 260);
  --plexdes-neutral-10: oklch(94% 0.012 260);

  /* Red ramp: calibrated as a signal, not default accent chrome. */
  --plexdes-red-1: oklch(13% 0.030 25);
  --plexdes-red-2: oklch(17% 0.045 25);
  --plexdes-red-3: oklch(22% 0.060 25);
  --plexdes-red-4: oklch(30% 0.080 25);
  --plexdes-red-5: oklch(40% 0.110 25);
  --plexdes-red-6: oklch(48% 0.140 25);
  --plexdes-red-7: var(--plexdes-brand-red);
  --plexdes-red-8: var(--plexdes-brand-red-hover);
  --plexdes-red-9: oklch(72% 0.115 25);
  --plexdes-red-10: oklch(86% 0.060 25);

  /* Surface ladder: hierarchy through substance and whitespace. */
  --plexdes-surface-canvas: var(--plexdes-neutral-1);
  --plexdes-surface-base: color-mix(in oklch, var(--plexdes-neutral-2) 86%, transparent);
  --plexdes-surface-raised: color-mix(in oklch, var(--plexdes-neutral-3) 90%, transparent);
  --plexdes-surface-active: color-mix(in oklch, var(--plexdes-neutral-4) 92%, transparent);
  --plexdes-surface-overlay: color-mix(in oklch, var(--plexdes-neutral-4) 96%, black 4%);
  --plexdes-hairline: color-mix(in oklch, var(--plexdes-neutral-10) 8%, transparent);
  --plexdes-hairline-strong: color-mix(in oklch, var(--plexdes-neutral-10) 14%, transparent);

  /* Semantic aliases for Plexdes surfaces. */
  --bg-default: var(--plexdes-surface-canvas);
  --bg-subtle: var(--plexdes-surface-base);
  --bg-element: var(--plexdes-surface-raised);
  --bg-hover: var(--plexdes-surface-active);
  --border-default: var(--plexdes-hairline);
  --border-strong: var(--plexdes-hairline-strong);
  --fg-muted: var(--plexdes-neutral-8);
  --fg-subtle: color-mix(in oklch, var(--plexdes-neutral-9) 88%, var(--plexdes-neutral-8));
  --fg-default: var(--plexdes-neutral-9);
  --fg-high: var(--plexdes-neutral-10);
  --red-bg: var(--plexdes-red-1);
  --red-bg-subtle: color-mix(in oklch, var(--plexdes-red-2) 62%, transparent);
  --red-element: var(--plexdes-red-3);
  --red-hover: var(--plexdes-red-4);
  --red-border: color-mix(in oklch, var(--plexdes-red-7) 20%, transparent);
  --red-border-strong: color-mix(in oklch, var(--plexdes-red-7) 34%, transparent);
  --red-solid: var(--plexdes-red-7);
  --red-solid-hover: var(--plexdes-red-8);
  --red-text-low: var(--plexdes-red-9);
  --red-text-high: var(--plexdes-red-10);

  /* Typography: six fixed semantic roles. */
  --plexdes-font-display: "Plus Jakarta Sans", Inter, system-ui, sans-serif;
  --plexdes-font-body: Inter, system-ui, sans-serif;
  --plexdes-font-mono: "JetBrains Mono", ui-monospace, monospace;
  --plexdes-type-display: 48px;
  --plexdes-type-title: 28px;
  --plexdes-type-section: 20px;
  --plexdes-type-body: 15px;
  --plexdes-type-label: 13px;
  --plexdes-type-mono: 13.5px;
  --plexdes-tracking-wordmark: 0.12em;
  --plexdes-tracking-label: 0;
  --plexdes-tracking-caption: 0;

  /* Spacing */
  --sp-0-5: 2px;
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;
  --sp-7: 48px;
  --sp-8: 64px;
  --sp-9: 96px;
  --sp-10: 128px;

  /* Shape and elevation */
  --radius-xs: 3px;
  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 12px;
  --shadow-overlay: none;
  --shadow-modal: none;

  /* Motion */
  --motion-instant: 0ms;
  --motion-fast: 100ms;
  --motion-normal: 200ms;
  --motion-slow: 350ms;
  --motion-deliberate: 500ms;
  --ease-enter: ease-out;
  --ease-exit: ease-in;
  --ease-change: ease-in-out;

  /* Status colors preserve dashboard semantics on Plexdes surfaces. */
  --plexdes-success: oklch(62% 0.14 142);
  --plexdes-success-bg: color-mix(in oklch, var(--plexdes-success) 14%, transparent);
  --plexdes-warning: oklch(75% 0.14 75);
  --plexdes-warning-bg: color-mix(in oklch, var(--plexdes-warning) 13%, transparent);
  --plexdes-info: oklch(70% 0.08 245);
  --plexdes-info-bg: color-mix(in oklch, var(--plexdes-info) 12%, transparent);
  --plexdes-danger: var(--plexdes-red-9);
  --plexdes-danger-bg: color-mix(in oklch, var(--plexdes-danger) 13%, transparent);
  --plexdes-maint: var(--plexdes-neutral-9);
  --plexdes-maint-bg: var(--bg-element);
}
