/* Lenis owns interpolation when active; native anchor smoothing is the fallback. */
html.lenis { scroll-behavior: auto !important; }

/* A precise dot and a softly trailing ring, as on the consumer Moovha site. */
.pointer-trail {
  position: fixed;
  inset: 0 auto auto 0;
  z-index: 10000;
  pointer-events: none;
  opacity: 0;
  mix-blend-mode: difference;
}
.pointer-dot, .pointer-ring {
  position: absolute;
  left: 0;
  top: 0;
  border-radius: 50%;
  pointer-events: none;
}
.pointer-dot { width: 6px; height: 6px; background: #fff; }
.pointer-ring {
  width: 40px;
  height: 40px;
  border: 1px solid #ffffff99;
  transition: width .25s ease, height .25s ease, border-color .25s ease;
}
.pointer-trail.is-hover .pointer-ring { width: 60px; height: 60px; border-color: #fff; }
.pointer-trail.is-pressed .pointer-ring { width: 32px; height: 32px; }
.pointer-trail.is-pressed .pointer-dot { width: 4px; height: 4px; }
@media (min-width: 861px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) and (forced-colors: none) {
  .cursor-visible .pointer-trail { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  .pointer-trail { display: none; }
}
@media print { .pointer-trail { display: none; } }

/* One gentle entrance per section. The default, including no JS, is visible. */
@media (prefers-reduced-motion: no-preference) and (forced-colors: none) {
  .reveal-pending {
    opacity: 0;
    transform: translate3d(0, 20px, 0);
    transition: opacity .8s cubic-bezier(.2,.7,.2,1), transform .8s cubic-bezier(.16,1,.3,1);
    transition-delay: var(--reveal-delay, 0ms);
  }
  figure.reveal-pending { transform: translate3d(0, 20px, 0) scale(.985); }
  .reveal-pending.is-revealed { opacity: 1; transform: none; }
  .reveal-pending.reveal-immediate { transition: none; }
  @media (max-width: 600px) {
    .reveal-pending { transform: translate3d(0, 14px, 0); transition-duration: .65s; transition-delay: 0ms; }
    figure.reveal-pending { transform: translate3d(0, 14px, 0) scale(.99); }
    .reveal-pending.is-revealed { transform: none; }
  }
}
@media print {
  .reveal-pending { opacity: 1 !important; transform: none !important; transition: none !important; }
}

/* An SVG layer brings the existing illustration's connections to life. */
.intro-illustration { position: relative; }
.connection-motion {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transition: opacity .8s ease;
}
.illustration-is-active .connection-motion { opacity: 1; }
.connection-flow {
  stroke: var(--lime);
  stroke-width: 3.5;
  stroke-linecap: round;
  stroke-dasharray: 5 95;
  animation: connection-travel 8s linear infinite;
}
.connection-flow:nth-child(2) { animation-delay: -3.2s; animation-duration: 9s; }
.connection-flow:nth-child(3) { animation-delay: -5.4s; animation-duration: 7s; }
.connection-pulse {
  stroke: var(--blue);
  stroke-width: 1.5;
  transform-box: fill-box;
  transform-origin: center;
  animation: connection-breathe 5.6s ease-out infinite;
}
.connection-spark { fill: var(--lime); opacity: .75; }
.connection-nodes > g:nth-child(2n) .connection-pulse { animation-delay: -1.8s; }
.connection-nodes > g:nth-child(3n) .connection-pulse { animation-delay: -3.6s; }
.connection-nodes > g:nth-child(7) .connection-pulse { animation-delay: -2.7s; }
.connection-flow, .connection-pulse { animation-play-state: paused; }
.illustration-is-active .connection-flow, .illustration-is-active .connection-pulse { animation-play-state: running; }
@keyframes connection-travel {
  0% { stroke-dashoffset: 100; opacity: 0; }
  12%, 80% { opacity: .9; }
  100% { stroke-dashoffset: 0; opacity: 0; }
}
@keyframes connection-breathe {
  0% { transform: scale(.9); opacity: .48; }
  65%, 100% { transform: scale(2.5); opacity: 0; }
}
@media (prefers-reduced-motion: reduce), (forced-colors: active) {
  .connection-motion { display: none; }
  .connection-flow, .connection-pulse { animation: none; }
}
@media print { .connection-motion { display: none; } }
