:root {
  /* Colors */
  --color-primary: #2563eb;
  --color-primary-hover: #1d4ed8;
  --color-secondary: #7c3aed;
  --color-neutral-900: #111827;
  --color-neutral-600: #4b5563;
  --color-neutral-300: #d1d5db;
  --color-neutral-100: #f3f4f6;
  --color-bg: #ffffff;
  --color-bg-dark: #0f172a;
  /* Семантический UI-текст/поверхности (дефолт = существующая светлая схема) */
  --color-text: var(--color-neutral-900);
  --color-text-muted: var(--color-neutral-600);
  --color-text-faint: rgba(17, 24, 39, 0.45);
  --color-surface: var(--color-bg);
  --color-surface-2: var(--color-neutral-100);
  --color-border: rgba(17, 24, 39, 0.12);
  --color-success: #10b981;
  --color-error: #ef4444;
  --color-warning: #f59e0b;
  --color-info: #0ea5e9;

  /* Product marketing — тёмные лендинги индикаторов (Dynamic Level Robot и др.) */
  --color-product-surface-0: #14161c;
  --color-product-surface-1: #1c2129;
  --color-product-surface-2: #232a35;
  --color-product-text: #f4f6fa;
  /* opacity через отдельный слой — для совместимости без color-mix */
  --color-product-muted: rgba(244, 246, 250, 0.68);
  --color-product-accent: #e4512b;
  --color-product-accent-hover: #ff6a42;
  --color-product-accent-alt: #e86c3f;
  --color-product-split-muted: #a0a0a0;
  --color-product-glow: rgba(228, 81, 43, 0.22);
  --color-product-chart-line-1: rgba(244, 246, 250, 0.35);
  --color-product-chart-line-dash: rgba(228, 81, 43, 0.5);
  --color-product-chart-line-poc: rgba(100, 180, 255, 0.45);
  --color-product-chart-line-val: rgba(100, 255, 180, 0.35);
  --color-product-gradient-orb-a: rgba(60, 80, 120, 0.18);
  --color-product-gradient-orb-b: rgba(228, 81, 43, 0.08);
  --color-product-va-fill-top: rgba(232, 108, 63, 0.2);
  --color-product-va-fill-bottom: rgba(100, 180, 255, 0.12);
  --color-product-svg-panel: rgba(0, 0, 0, 0.25);
  --color-product-svg-stroke-soft: rgba(255, 255, 255, 0.08);
  --color-product-svg-label: rgba(255, 255, 255, 0.55);
  --color-product-svg-poc-line: rgba(100, 200, 255, 0.85);
  --color-product-svg-poc-text: rgba(100, 200, 255, 0.95);
  --color-product-svg-price: rgba(244, 246, 250, 0.45);
  --color-product-svg-dot: rgba(228, 81, 43, 0.9);

  /* Typography */
  --font-heading: 'Syne', sans-serif;
  --font-body: 'DM Sans', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;
  --text-5xl: 3rem;

  /* Typography — tracking & leading (см. design-tokens.md, typography-rules.md) */
  --tracking-tight: -0.03em;
  --tracking-tighter: -0.04em;
  --tracking-wide: 0.08em;
  --tracking-wider: 0.15em;
  --leading-tight: 0.95;
  --leading-snug: 1.1;
  --leading-relaxed: 1.65;

  /* Spacing */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 24px;
  --spacing-xl: 40px;
  --spacing-2xl: 64px;
  --spacing-3xl: 96px;

  /* Borders & radius */
  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --radius-full: 9999px;
  --border-default: 1px solid var(--color-neutral-300);

  /* Shadows */
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
  --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.08);
  --shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.12);
  --shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.04);
  --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.06), 0 8px 24px rgba(0, 0, 0, 0.04);
  --shadow-elevated: 0 4px 8px rgba(0, 0, 0, 0.06), 0 16px 48px rgba(0, 0, 0, 0.08);
  --shadow-floating: 0 8px 16px rgba(0, 0, 0, 0.08), 0 32px 64px rgba(0, 0, 0, 0.12);

  /* Glassmorphism */
  --glass-bg: rgba(255, 255, 255, 0.05);
  --glass-bg-light: rgba(255, 255, 255, 0.08);
  --glass-border: rgba(255, 255, 255, 0.1);
  --glass-blur: blur(20px);
  --glass-blur-heavy: blur(40px);

  /* Breakpoints (для JS / custom media, при необходимости) */
  --bp-mobile: 640px;
  --bp-tablet: 768px;
  --bp-desktop: 1024px;
  --bp-wide: 1280px;

  /* Motion — см. standards/motion-tokens.md */
  --duration-instant: 100ms;
  --duration-fast: 200ms;
  --duration-normal: 300ms;
  --duration-slow: 500ms;
  --duration-enter: 700ms;
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-linear: linear;
}

/* App theme: задать <html data-theme="light"> или data-theme="dark" */
:root[data-theme="light"] {
  --color-bg: #f7f6f2;
  --color-surface: #f9f8f5;
  --color-surface-2: #fbfbf9;
  --color-border: rgba(40, 37, 29, 0.12);
  --color-text: #28251d;
  --color-text-muted: #7a7974;
  --color-text-faint: rgba(40, 37, 29, 0.45);
}

:root[data-theme="dark"] {
  --color-bg: #171614;
  --color-surface: #1c1b19;
  --color-surface-2: #201f1d;
  --color-border: rgba(205, 204, 202, 0.1);
  --color-text: #cdccca;
  --color-text-muted: #797876;
  --color-text-faint: rgba(205, 204, 202, 0.5);
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
