/* Scroll motion enhancement. Load after site.css; no script = visible content. */
.hero-copy,.hero-art,.art-chip{animation:none}
/* Pausing must leave the same control available to resume. */
.motion-controls-ready .motion-toggle{display:flex}
.motion-enabled .reveal,
.motion-enabled .reveal:not(.is-visible){
  opacity:1;
  transform:none;
  transition:none;
}
.motion-enabled .reveal{
  --motion-distance:32px;
  --motion-direction:1;
}
.motion-enabled .reveal.reveal-heading{--motion-distance:26px}
.motion-enabled .reveal.reveal-from-above{--motion-direction:-1}
.motion-enabled .reveal.is-reveal-pending:not(.is-visible){
  opacity:0;
  transform:translate3d(0,calc(var(--motion-distance) * var(--motion-direction)),0);
}
.motion-enabled .reveal.is-visible{
  opacity:1;
  transform:none;
  transition:opacity .65s ease,transform .9s cubic-bezier(.16,1,.3,1);
  transition-delay:var(--reveal-delay,0ms);
}
/* Anchors and keyboard navigation must expose their target immediately. */
.motion-enabled .reveal:target,
.motion-enabled .reveal:focus-within{
  opacity:1!important;
  transform:none!important;
  transition:none!important;
}
/* Only ornamental surfaces move continuously. Copy and diagrams remain fixed. */
.motion-enabled .security-panel:not([hidden]),
.motion-enabled .point-detail:not([hidden]){animation:none}
.motion-enabled .route-line,
.motion-enabled .route-node>circle:first-child,
.motion-enabled .hero-route-dash,
.motion-enabled .hero-art .glass-panel,
.motion-enabled .logistiher-rings i{animation-play-state:paused}
.motion-enabled .route-line.ambient-visible,
.motion-enabled .route-node.ambient-visible>circle:first-child,
.motion-enabled .hero-art.ambient-visible .hero-route-dash,
.motion-enabled .hero-art.ambient-visible .glass-panel,
.motion-enabled .logistiher-rings.ambient-visible i{animation-play-state:running}
.motion-enabled .route-line{animation-duration:28s}
.motion-enabled .hero-route-dash{animation-duration:22s}
.motion-enabled .hero-art .glass-panel{animation-name:aw-glass-float;animation-duration:7s}
.motion-enabled .logistiher-rings i{animation-name:aw-ring-float;animation-duration:6.5s}
/* A small GPS halo stays visible on phones where numbered pins are hidden. */
.scene-canvas::after{
  content:'';
  position:absolute;
  left:27.6%;
  top:29.6%;
  width:25px;
  height:25px;
  margin:-13px 0 0 -13px;
  border:1.5px solid #7398b0;
  border-radius:50%;
  box-shadow:0 0 0 6px #96b4c51a;
  pointer-events:none;
  opacity:0;
}
.scene-canvas[data-scene="warehouse"]::after{left:60.8%;top:44.6%}
.motion-enabled .scene-canvas.ambient-visible::after{animation:aw-gps-halo 3.8s ease-in-out infinite}
@keyframes aw-gps-halo{
  0%,100%{transform:scale(.76);opacity:.3}
  50%{transform:scale(1.18);opacity:.72}
}
@keyframes aw-glass-float{
  0%,100%{transform:translate3d(0,0,0) rotate(-8deg)}
  50%{transform:translate3d(4px,-10px,0) rotate(-5deg)}
}
@keyframes aw-ring-float{
  0%,100%{translate:0 0}
  50%{translate:0 -9px}
}
@media(max-width:860px){
  .motion-enabled .reveal{--motion-distance:44px}
  .motion-enabled .reveal.reveal-heading{--motion-distance:34px}
  .motion-enabled .reveal.is-visible{transition-duration:.7s,.9s;transition-delay:0ms}
  .route-decoration{opacity:.32}
  .art-routes{opacity:.6}
  .motion-enabled .route-line{animation-duration:24s}
  .motion-enabled .hero-route-dash{animation-duration:20s}
  .motion-enabled .hero-art .glass-panel{animation-duration:6.5s}
  .motion-enabled .logistiher-rings i:nth-child(3){animation:none}
  .route-node.third{display:none}
  .scene-canvas::after{width:19px;height:19px;margin:-10px 0 0 -10px;box-shadow:0 0 0 4px #96b4c51a}
}
/* Fail open immediately, including the interval before JS handles a preference. */
.motion-paused .reveal,
.motion-paused .reveal.is-reveal-pending:not(.is-visible){opacity:1!important;transform:none!important;transition:none!important}
.motion-paused .scene-canvas::after{animation:none!important;opacity:0}
@media(prefers-reduced-motion:reduce){
  .motion-controls-ready .motion-toggle{display:none}
  .motion-enabled .reveal,
  .motion-enabled .reveal.is-reveal-pending:not(.is-visible){opacity:1!important;transform:none!important;transition:none!important}
  .scene-canvas::after{animation:none!important;opacity:0}
}
