﻿/* Small visual layers move independently. Frames, link boxes and media stay put. */
:root{--pointer-x:0;--pointer-y:0}
.parallax-link-ink{display:inline-block;pointer-events:none}
.chapter-heading h2>span[data-parallax-layer],.portfolio-eyebrow[data-parallax-layer],.home-about-copy>.chapter-status[data-parallax-layer]{display:inline-block}
[data-parallax-ink]{pointer-events:none}
.pointer-parallax-ready [data-parallax-layer]{backface-visibility:hidden}
.pointer-parallax-static [data-parallax-layer]{translate:0 0!important}
@media(prefers-reduced-motion:reduce),(any-hover:none){[data-parallax-layer]{translate:0 0!important}}

/* A short stroke follows each fixed Bézier path through its dash offset. The
   transparent field and 420 × 260 route boxes never translate, rotate or filter. */
.ambient-flow-field{position:fixed;inset:0;z-index:2;overflow:hidden;pointer-events:none;opacity:.9;transition:opacity .4s}
.ambient-flow-route{position:absolute;width:420px;height:260px;overflow:hidden;pointer-events:none;contain:strict}
.ambient-flow-route svg{display:block;width:100%;height:100%;overflow:hidden}
.ambient-flow-route path{fill:none;stroke:#ffff00;stroke-width:1.45;stroke-linecap:round;stroke-dasharray:11 111;stroke-dashoffset:12;vector-effect:non-scaling-stroke;opacity:0;animation:ambient-route-segment var(--flow-period) linear infinite;animation-delay:var(--flow-delay)}
.ambient-flow-route-a{left:-120px;top:20%;--flow-period:9.6s;--flow-delay:-2.8s}
.ambient-flow-route-b{right:-130px;top:49%;--flow-period:11.2s;--flow-delay:-6.4s}
.ambient-flow-route-b path{stroke-width:1.35;stroke-dasharray:9 113}
.ambient-flow-route-c{left:38%;bottom:-102px;--flow-period:13.4s;--flow-delay:-10.1s}
.ambient-flow-route-c path{stroke-width:1.2;stroke-dasharray:12 110}
.ambient-flow-field.is-still *{animation-play-state:paused!important}
.ambient-flow-field.is-in-scene,.v3-intro-running .ambient-flow-field{opacity:0}
.ambient-flow-field.is-in-scene *,.v3-intro-running .ambient-flow-field *{animation-play-state:paused!important}
@keyframes ambient-route-segment{
  0%{stroke-dashoffset:12;opacity:0}
  10%{opacity:.8}
  61%{opacity:.8}
  80%,100%{stroke-dashoffset:-110;opacity:0}
}
@media(prefers-reduced-motion:reduce){.ambient-flow-field{display:none}.ambient-flow-field *{animation:none!important}}
