/* Keep the text anchored while opacity, focus and line masks follow the board. */
:root[data-tactics-text-motion="ready"] #approach .tactics-stage {
  opacity: 1;
  visibility: hidden;
  transition: none;
}
:root[data-tactics-text-motion="ready"][data-tactics-copy-visible="true"] #approach .tactics-stage {
  visibility: visible;
}
:root[data-tactics-text-motion="ready"] #approach :is(.tactics-heading,.tactics-services) {
  translate: 0 0;
  transition: none;
}
:root[data-tactics-text-motion="ready"] #approach :is(.tactics-service,.tactics-foot) {
  transition: none;
}
.motion-source { display: block; opacity: 0; }
.motion-overlay { position: absolute; inset: 0; pointer-events: none; }
.motion-line { position: absolute; overflow: clip; }
.motion-line-inner { position: absolute; }
.motion-unit { display: block; white-space: pre; transform-origin: 50% 90%; }
@media (prefers-reduced-motion: reduce) {
  #approach .motion-unit { filter: none !important; }
  #approach .motion-line { clip-path: none !important; }
  :root[data-tactics-text-motion="ready"] #approach :is(.tactics-service,.tactics-foot) { transform: none !important; }
}
