:root {

  /* === Colors === */
  --color-primary: #0f2a43;
  --color-secondary: #5b7185;
  --color-accent: #1d6fd1;
  --color-bg: #f7f9fc;
  --color-background: #f7f9fc;
  --color-surface: #edeff2;
  --color-text: #111827;
  --color-text-secondary: #5b7185;
  --color-text-muted: #5b7185;
  --color-link: #0f2a43;

  /* === Typography === */
  --font-primary: Work Sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-secondary: Space Mono, "Courier New", Courier, monospace;
  --font-size-base: 1.0625rem;
  --font-size-sm: 0.9375rem;
  --font-size-lg: 1.1875rem;
  --font-size-xl: 1.375rem;
  --font-size-2xl: 1.625rem;
  --font-size-3xl: 2.125rem;
  --font-size-4xl: 2.875rem;
  --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.85;

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

  /* === Layout === */
  --content-width: 56rem;
  --spacing-xs: 0.5rem;
  --spacing-sm: 1rem;
  --spacing-md: 1.5rem;
  --spacing-lg: 2.5rem;
  --spacing-xl: 3.5rem;
  --spacing-2xl: 5rem;
  --spacing-3xl: 7rem;
  --content-width-readable: 56rem;
  --content-width-wide: 78rem;
  --space-scale: 1.5; /* 0.75 | 1 | 1.25 */;

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

  /* === Depth === */
  --shadow-none: none;
  --shadow-sm: 0 2px 8px rgba(15,42,67,0.06);
  --shadow-md: 0 6px 16px rgba(15,42,67,0.08);
  --shadow-lg: 0 16px 48px rgba(15,42,67,0.12);
  --shadow-xl: 0 24px 64px rgba(15,42,67,0.16);

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

/* === Motion System (luxury) === */
:root {
  /* Motion tokens */
  --motion-duration-sm: 160ms;
  --motion-duration-md: 240ms;
  --motion-duration-lg: 340ms;
  --motion-ease-standard: cubic-bezier(0.33, 0, 0.2, 1);
  --motion-ease-emphasized: cubic-bezier(0.32, 0, 0.06, 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. The larger movements ride the emphasized curve — that is
   what separates a quiet fade-up from a deliberate slide-up. */
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);
  transition-timing-function: var(--motion-ease-emphasized);
}
body.trf-motion [data-motion="scale"] { transform: scale(0.98); }
body.trf-motion [data-motion="scale-up"] {
  transform: scale(0.965);
  transition-timing-function: var(--motion-ease-emphasized);
}

/* 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"; }

/* Site background treatment: soft_blobs (subtle) */
:root {
  --bg-image: radial-gradient(circle at 15% 20%, rgba(29, 111, 209, 0.05) 0%, rgba(29, 111, 209, 0) 45%), radial-gradient(circle at 85% 30%, rgba(15, 42, 67, 0.04) 0%, rgba(29, 111, 209, 0) 40%);
}
