/* One CSS motion owner. Entrances/transitions use app.js + local Motion Mini. */
:root{--motion-hover-time:180ms;--motion-float-y:-5px}
.button,.step-select,.scenario-picker button,.quick-area button,.pricing-card,.faq-list summary span{transition:transform var(--motion-hover-time) ease,background var(--motion-hover-time) ease,color var(--motion-hover-time) ease,border-color var(--motion-hover-time) ease}
.header{transition:box-shadow 220ms ease,border-color 220ms ease}
#navigation>a:not(.button)::after{transition:transform var(--motion-hover-time) ease}
.button::after{content:none}
.button:hover .icon{transform:none}
.landing-modern .button .icon{transition:transform 220ms cubic-bezier(.2,.7,.2,1)}
.landing-modern .text-link{transition:color 180ms ease}
@media(hover:hover) and (pointer:fine){.landing-modern .button:hover .icon{transform:translateX(4px)}}
.question-list blockquote:hover{transform:none}
.benefit-grid article:hover{transform:none;box-shadow:none}
.typing-indicator>span{animation:conversation-dot 850ms ease-in-out infinite}
.typing-indicator>span:nth-child(2){animation-delay:110ms}
.typing-indicator>span:nth-child(3){animation-delay:220ms}
.hero-visual>.source-card{animation:source-float 7s ease-in-out infinite;will-change:auto}
.energy-pulse{animation:energy-flow 3.6s linear infinite}
.final-orb::before{animation:final-aura-pulse 4s ease-in-out infinite}
.orbit-energy{animation:final-orbit-flow 7s linear infinite}
.orbit-energy-2{animation-delay:-1.75s}.orbit-energy-3{animation-delay:-3.5s}.orbit-energy-4{animation-delay:-5.25s}
.page-motion-paused .final-orb::before,.page-motion-paused .orbit-energy{animation-play-state:paused}
.hero.hero-motion-paused .source-card,.hero.hero-motion-paused .energy-pulse,.typing-indicator.paused>span{animation-play-state:paused}
.principle-strip[data-marquee-ready=true] .marquee-track{animation:principle-loop 48s linear infinite}
.principle-strip[data-marquee-paused=true] .marquee-track,.marquee-viewport:focus-within .marquee-track{animation-play-state:paused}
@media(hover:hover) and (pointer:fine){
  .button:hover,.quick-area button:hover,.pricing-card:hover{transform:translateY(-2px)}
  .marquee-viewport:hover .marquee-track{animation-play-state:paused}
}
.button:active,.quick-area button:active{transform:none}
@media(max-width:620px){:root{--motion-float-y:-3px}}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .hero-visual>.source-card{transform:none;will-change:auto}
  .button:hover,.quick-area button:hover,.pricing-card:hover{transform:none}
  .landing-modern .button:hover .icon{transform:none}
  .energy-pulse{display:none}
  .orbit-energy{display:none}
  .final-orb::before{opacity:.45;transform:none}
}
@media(forced-colors:active){.energy-pulse{display:none}}
@keyframes conversation-dot{0%,70%,100%{opacity:.35;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}
@keyframes source-float{0%,100%{transform:translateY(0)}50%{transform:translateY(var(--motion-float-y))}}
@keyframes energy-flow{0%{stroke-dashoffset:12;opacity:0}10%{opacity:1}85%{opacity:1}100%{stroke-dashoffset:-100;opacity:0}}
@keyframes principle-loop{to{transform:translateX(-50%)}}
@keyframes final-aura-pulse{0%,100%{opacity:.4;transform:scale(.94)}50%{opacity:.8;transform:scale(1.08)}}
@keyframes final-orbit-flow{to{stroke-dashoffset:-100}}
.hero-type-cursor{animation:hero-cursor-blink 1s steps(1,end) infinite}
.page-motion-paused .hero-type-cursor{animation-play-state:paused}
@keyframes hero-cursor-blink{50%{opacity:0}}

.video-story-play::after{animation:video-play-pulse 2s ease-out infinite}
@keyframes video-play-pulse{0%{transform:scale(1);opacity:.8}85%,100%{transform:scale(1.65);opacity:0}}
@media(prefers-reduced-motion:reduce){.video-story-play::after{animation:none;opacity:0}}
