:root {

  /* === Colors === */
  --color-primary: #2563EB;
  --color-secondary: #0EA5E9;
  --color-accent: #10B981;
  --color-bg: #FFFFFF;
  --color-background: #FFFFFF;
  --color-surface: #f5f5f5;
  --color-text: #111827;
  --color-text-secondary: #0EA5E9;
  --color-text-muted: #0ea5e9;
  --color-link: #2563EB;

  /* === Typography === */
  --font-primary: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-secondary: DM Sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-size-base: 1rem;
  --font-size-sm: 0.875rem;
  --font-size-lg: 1.125rem;
  --font-size-xl: 1.25rem;
  --font-size-2xl: 1.5rem;
  --font-size-3xl: 1.875rem;
  --font-size-4xl: 2.25rem;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-bold: 600;
  --line-height-tight: 1.25;
  --line-height-normal: 1.6;
  --line-height-relaxed: 1.75;

  /* Text scale and density */
  --text-scale: 1; /* 0.875 | 1 | 1.125 | 1.25 */
  --text-density: 1.6; /* влияет на line-height */

  /* === Layout === */
  --content-width: 56rem;
  --spacing-xs: 0.25rem;
  --spacing-sm: 0.5rem;
  --spacing-md: 1rem;
  --spacing-lg: 1.5rem;
  --spacing-xl: 2rem;
  --spacing-2xl: 3rem;
  --spacing-3xl: 4.5rem;
  --content-width-readable: 56rem;
  --content-width-wide: 76rem;
  --space-scale: 1; /* 0.75 | 1 | 1.25 */;

  /* === Geometry === */
  --radius: 0.375rem;
  --radius-sm: 0.25rem;
  --radius-md: 0.375rem;
  --radius-lg: 0.5rem;
  --radius-xl: 0.75rem;
  --radius-full: 9999px;
  --border-width: 1px;
  --border-thin: 1px;
  --border-thick: 2px;

  /* === Depth === */
  --shadow-none: none;
  --shadow-sm: 0 1px 3px rgba(15,23,42,0.06);
  --shadow-md: 0 4px 12px rgba(15,23,42,0.08);
  --shadow-lg: 0 8px 24px rgba(15,23,42,0.12);
  --shadow-xl: 0 16px 40px rgba(15,23,42,0.15);

  /* === Motion === */
  --transition-fast: 200ms;
  --transition-normal: 300ms;
  --transition-slow: 400ms;
}

/* === Motion System === */
:root {
  /* Motion tokens */
  --motion-duration-sm: 160ms;
  --motion-duration-md: 240ms;
  --motion-duration-lg: 340ms;
  --motion-ease-standard: cubic-bezier(0.2, 0.0, 0, 1);
  --motion-ease-emphasized: cubic-bezier(0.2, 0.0, 0, 1);
  --motion-distance-sm: 10px;
  --motion-distance-md: 16px;
  --motion-stagger-step: 40ms;
}

/* Reveal base: only opacity/transform for perf */
/* Safety: without JS, content must remain visible */
[data-motion] {
  opacity: 1;
  transform: none;
}

/* Enable reveal only when JS marks body */
body.trf-motion [data-motion] {
  opacity: 0;
  transform: translate3d(0, var(--motion-distance-sm), 0);
  transition-property: opacity, transform;
  transition-duration: var(--motion-duration-md);
  transition-timing-function: var(--motion-ease-standard);
  transition-delay: var(--motion-delay, 0ms);
  will-change: opacity, transform;
}
body.trf-motion [data-motion].is-inview {
  opacity: 1;
  transform: none;
}

/* Presets */
body.trf-motion [data-motion="fade"] { transform: none; }
body.trf-motion [data-motion="fade-up"] { transform: translate3d(0, var(--motion-distance-sm), 0); }
body.trf-motion [data-motion="slide-up"] { transform: translate3d(0, var(--motion-distance-md), 0); }
body.trf-motion [data-motion="scale"] { transform: scale(0.98); }
body.trf-motion [data-motion="scale-up"] { transform: scale(0.965); }

/* Stagger: data-motion-stagger on container, data-motion-item on children */
body.trf-motion [data-motion-stagger] > [data-motion-item] {
  transition-delay: calc(var(--motion-delay, 0ms) + (var(--motion-stagger-step) * var(--motion-i, 0)));
}

/* Reduced motion: always visible, no transforms */
@media (prefers-reduced-motion: reduce) {
  [data-motion] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  body.trf-motion [data-motion] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* Motion flavor hint: default preset preference for generator logic */
:root { --motion-default-preset: "fade-up"; }
