:root {

  /* === Colors === */
  --color-primary: #00d9ff;
  --color-secondary: #0a0e27;
  --color-accent: #00ff88;
  --color-bg: #0a0e27;
  --color-background: #0a0e27;
  --color-surface: #191c34;
  --color-text: #F9FAFB;
  --color-text-secondary: #a5a7b1;
  --color-text-muted: #a5a7b1;
  --color-link: #00d9ff;

  /* === Typography === */
  --font-primary: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-secondary: Space Grotesk, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-size-base: 1.0625rem;
  --font-size-sm: 0.875rem;
  --font-size-lg: 1.1875rem;
  --font-size-xl: 1.375rem;
  --font-size-2xl: 1.625rem;
  --font-size-3xl: 2.125rem;
  --font-size-4xl: 3rem;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-bold: 700;
  --line-height-tight: 1.2;
  --line-height-normal: 1.55;
  --line-height-relaxed: 1.75;

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

  /* === Layout === */
  --content-width: 60rem;
  --spacing-xs: 0.125rem;
  --spacing-sm: 0.25rem;
  --spacing-md: 0.625rem;
  --spacing-lg: 1rem;
  --spacing-xl: 1.5rem;
  --spacing-2xl: 2rem;
  --spacing-3xl: 5rem;
  --content-width-readable: 60rem;
  --content-width-wide: 88rem;
  --space-scale: 0.625; /* 0.75 | 1 | 1.25 */;

  /* === Geometry === */
  --radius-full: 9999px;
  --border-width: 1px;
  --border-thin: 1px;
  --border-thick: 2px;

  /* === Depth === */
  --shadow-none: none;
  --shadow-sm: 0 0 12px rgba(0,217,255,0.15);
  --shadow-md: 0 0 28px rgba(0,217,255,0.25);
  --shadow-lg: 0 0 48px rgba(0,217,255,0.35);
  --shadow-xl: 0 0 64px rgba(0,217,255,0.45);

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

/* === Motion System (neo-modern) === */
:root {
  /* Motion tokens */
  --motion-duration-sm: 120ms;
  --motion-duration-md: 180ms;
  --motion-duration-lg: 260ms;
  --motion-ease-standard: cubic-bezier(0.16, 1, 0.3, 1);
  --motion-ease-emphasized: cubic-bezier(0.08, 1, 0.2, 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: radial_glow (medium) */
:root {
  --bg-image: radial-gradient(ellipse 80% 50% at 50% 0%, rgba(0, 255, 136, 0.1) 0%, rgba(0, 255, 136, 0) 70%), radial-gradient(ellipse 60% 40% at 90% 100%, rgba(0, 217, 255, 0.08) 0%, rgba(0, 255, 136, 0) 70%);
}
