/* =========================================================
   CDL — Motion: reveal, stagger, flourish, reduced-motion
   ========================================================= */

/* ---- Reveal on scroll ---- */
.js .reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--ch-dur-xslow) var(--ch-ease-out),
    transform var(--ch-dur-xslow) var(--ch-ease-out),
    translate var(--ch-dur) var(--ch-ease-spring),
    box-shadow var(--ch-dur) var(--ch-ease-out),
    border-color var(--ch-dur) var(--ch-ease-out);
}
.js .reveal.is-visible {
  opacity: 1;
  transform: none;
  transition-delay: var(--reveal-delay, 0ms);
}

/* Directional reveals */
.js .reveal--left { transform: translateX(28px); }
.js .reveal--right { transform: translateX(-28px); }
.js .reveal--scale { transform: scale(0.94); }
.js .reveal--left.is-visible,
.js .reveal--right.is-visible,
.js .reveal--scale.is-visible { transform: none; }

/* ---- Scramble target ---- */
[data-scramble] { display: inline-block; }
[data-scramble].is-scrambling { color: var(--ch-accent); }

/* ---- Cursor-growing targets (only when custom cursor is active) ---- */
body.has-cursor a,
body.has-cursor button,
body.has-cursor [data-cursor] { cursor: none; }
@media (hover: none) { a, button, [data-cursor] { cursor: auto; } }

/* ---- Tilt cards ---- */
[data-tilt] { transform-style: preserve-3d; }

/* ---- Marquee duplicate track ---- */
.marquee__track[aria-hidden="true"] { pointer-events: none; }

/* ---- View-transition theming ---- */
@media (prefers-reduced-motion: no-preference) {
  ::view-transition-old(root),
  ::view-transition-new(root) { animation-duration: 260ms; }
}

/* ---- Reduced motion ---- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .js .reveal,
  .js .reveal--left,
  .js .reveal--right,
  .js .reveal--scale { opacity: 1 !important; transform: none !important; }
  .atmosphere__field { animation: none; }
  .hero__art, .solution__art img { animation: none; }
  .hero__chip { animation: none; }
  .core__ring, .core__center, .core__sat svg { animation: none; }
  .marquee__track { animation: none; }
}

/* ---- Print ---- */
@media print {
  .atmosphere, .noise, .site-header, .hero__orbit, .hero__chips, .scroll-progress,
  .loader, .cursor, .cursor-dot { display: none !important; }
  body { background: #fff; }
}