/* GENERATED from design/tokens.css by scripts/sync-tokens.mjs. Do not edit. */
/* Deploro color tokens: the single source for the dashboard, deploro.com and
   docs.deploro.com.

   Edit THIS file only. The landing and docs sites are static-asset Workers
   with no build step, so `node scripts/sync-tokens.mjs` copies it into
   apps/landing/assets/tokens.css and apps/docs/assets/tokens.css, and
   tests/design-tokens.test.ts fails if a copy drifts. The dashboard imports it
   directly from global.css.

   Values are OKLCH. Neutrals lean very slightly toward the accent's hue (118)
   so the grays belong to the acid green rather than sitting beside it.

   Contrast floor: every text token clears 4.5:1 on every surface token in its
   theme, including --surface-3. --text-muted is the lowest-contrast text the
   system allows; nothing readable goes below it.

   Accent roles, which must not be mixed:
     --accent      the acid green as a FILL (buttons, active chips, the logo tile)
     --accent-fg   text or icons sitting ON an --accent fill
     --accent-ink  the accent used AS text, icon, or stroke on a neutral surface
     --accent-bg   a faint accent tint for a surface; pair with --accent-ink text */

:root,
:root[data-theme="dark"] {
  color-scheme: dark;

  --bg:            oklch(14.5% 0.003 118);
  --surface:       oklch(17.8% 0.004 118);
  --surface-2:     oklch(20% 0.004 118);
  --surface-3:     oklch(22.6% 0.005 118);
  --border:        oklch(26.9% 0.005 118);
  --border-subtle: oklch(21.8% 0.004 118);
  --border-strong: oklch(36% 0.006 118);

  --text:           oklch(96.5% 0.004 118);
  --text-secondary: oklch(71.5% 0.008 118);
  --text-muted:     oklch(62% 0.008 118);

  --accent:        oklch(95.9% 0.144 118);
  --accent-dim:    oklch(80.9% 0.126 119);
  --accent-fg:     oklch(14.5% 0.003 118);
  --accent-ink:    oklch(95.9% 0.144 118);
  --accent-bg:     oklch(95.9% 0.144 118 / 0.10);
  --accent-border: oklch(14.5% 0.003 118 / 0.15);
  --accent-glow:   oklch(95.9% 0.144 118 / 0.30);

  --success: oklch(80% 0.182 152);
  --warning: oklch(83.7% 0.164 84);
  --danger:  oklch(71.1% 0.166 22);
  --info:    oklch(82.8% 0.101 230);
  --success-bg: oklch(80% 0.182 152 / 0.10);
  --warning-bg: oklch(83.7% 0.164 84 / 0.10);
  --danger-bg:  oklch(71.1% 0.166 22 / 0.10);
  --info-bg:    oklch(82.8% 0.101 230 / 0.12);

  --scrollbar:       oklch(26.9% 0.005 118);
  --scrollbar-hover: oklch(34% 0.006 118);
  --overlay:         oklch(0% 0 0 / 0.55);
  --card-shadow: none;
  --shadow-pop:  0 8px 24px oklch(0% 0 0 / 0.45);
}

:root[data-theme="light"] {
  color-scheme: light;

  --bg:            oklch(98.5% 0.003 106);
  --surface:       oklch(99.8% 0.002 106);
  --surface-2:     oklch(96.4% 0.004 106);
  --surface-3:     oklch(94.5% 0.005 106);
  --border:        oklch(92.1% 0.005 106);
  --border-subtle: oklch(94.2% 0.004 106);
  --border-strong: oklch(84% 0.008 106);

  --text:           oklch(20.2% 0.015 108);
  --text-secondary: oklch(44% 0.014 108);
  --text-muted:     oklch(52% 0.014 108);

  --accent:        oklch(95.9% 0.144 118);
  --accent-dim:    oklch(88% 0.14 118);
  --accent-fg:     oklch(30.3% 0.071 119);
  --accent-ink:    oklch(50% 0.12 118);
  --accent-bg:     oklch(60% 0.13 118 / 0.10);
  --accent-border: oklch(30.3% 0.071 119 / 0.18);
  --accent-glow:   oklch(60% 0.13 118 / 0.20);

  --success: oklch(52.7% 0.137 150);
  --warning: oklch(54.3% 0.123 62);
  --danger:  oklch(53.3% 0.183 31);
  --info:    oklch(50% 0.119 243);
  --success-bg: oklch(52.7% 0.137 150 / 0.08);
  --warning-bg: oklch(54.3% 0.123 62 / 0.08);
  --danger-bg:  oklch(53.3% 0.183 31 / 0.08);
  --info-bg:    oklch(50% 0.119 243 / 0.08);

  --scrollbar:       oklch(86% 0.006 106);
  --scrollbar-hover: oklch(76% 0.008 106);
  --overlay:         oklch(20% 0.015 108 / 0.35);
  --card-shadow: 0 1px 2px oklch(20% 0.015 108 / 0.06);
  --shadow-pop:  0 8px 24px oklch(20% 0.015 108 / 0.12);
}
