/* Contextual motion in the shared blue-violet palette. */
.site-wave-surface{position:relative;isolation:isolate;--ambient-alpha:.12;--detail-alpha:.19}
.site-wave-layer{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;z-index:-1;contain:paint}
.site-wave-layer::before,.site-wave-layer::after{content:"";position:absolute;inset:-15%;pointer-events:none}
.site-wave-layer::before{background:radial-gradient(ellipse at 75% 30%,#8e55ff,transparent 48%),radial-gradient(ellipse at 20% 80%,#299cff,transparent 44%);opacity:var(--ambient-alpha);animation:ambient-breathe 13s ease-in-out infinite alternate}
.hero.site-wave-surface,.page-hero.site-wave-surface{--ambient-alpha:.4;--detail-alpha:.38}
.site-footer.site-wave-surface,.arch-section.site-wave-surface,.home-final.site-wave-surface{--ambient-alpha:.2;--detail-alpha:.3}
.site-header.site-wave-surface{--ambient-alpha:.12;--detail-alpha:.1}
.cta-panel.site-wave-surface{--ambient-alpha:.24;--detail-alpha:.3}
.hero.site-wave-surface::before,.hero.site-wave-surface::after,.page-hero.site-wave-surface::before,.page-hero.site-wave-surface::after{display:none}
.page-hero.site-wave-surface{background:#0b102d}.home-final.site-wave-surface{background-image:none}
/* Aurora: broad flowing light in heroes and introductions. */
[data-background="aurora"]>.site-wave-layer::after{background:linear-gradient(125deg,transparent 30%,#4259ff30 42%,#9270ffb0 49%,#51b9ff60 53%,transparent 65%);opacity:var(--detail-alpha);transform-origin:70% 50%;animation:aurora-sweep 9s ease-in-out infinite alternate}
@keyframes aurora-sweep{from{transform:translate3d(-10%,6%,0) skewY(-8deg) scale(1.12)}to{transform:translate3d(10%,-6%,0) skewY(8deg) scale(1.2)}}
/* Signals: packets travel along the data grid. */
[data-background="signals"]>.site-wave-layer::before{background:linear-gradient(#6a65d51c 1px,transparent 1px),linear-gradient(90deg,#6a65d51c 1px,transparent 1px);background-size:64px 64px;opacity:.65;animation:none;mask-image:linear-gradient(90deg,transparent,#000 25%,#000 75%,transparent)}
[data-background="signals"]>.site-wave-layer::after{background:radial-gradient(ellipse 26px 2px at 32px 32px,#7450e8 65%,transparent 100%);background-size:256px 128px;opacity:var(--detail-alpha);animation:signal-drift 8s linear infinite}
@keyframes signal-drift{from{transform:translate3d(-128px,0,0)}to{transform:translate3d(128px,0,0)}}
/* Particles: small points drift through editorial sections. */
[data-background="particles"]>.site-wave-layer::after{background-image:radial-gradient(circle,#7b65d2 1px,transparent 1.8px),radial-gradient(circle,#5596e5 1.3px,transparent 2px);background-size:83px 97px,151px 137px;background-position:0 0,47px 39px;opacity:var(--detail-alpha);animation:particle-field 18s ease-in-out infinite alternate}
@keyframes particle-field{from{transform:translate3d(-20px,15px,0)}to{transform:translate3d(25px,-25px,0)}}
/* Ripples: gently expanding contours around outcomes. */
[data-background="ripples"]>.site-wave-layer::after{background:repeating-radial-gradient(ellipse at 75% 50%,transparent 0 44px,#8569d445 45px 46px,transparent 47px 88px);opacity:var(--detail-alpha);animation:ripple-expand 10s ease-in-out infinite alternate}
@keyframes ripple-expand{from{transform:scale(.94);opacity:calc(var(--detail-alpha) * .65)}to{transform:scale(1.12);opacity:var(--detail-alpha)}}
/* Glow: soft highlights behind calls to action. */
[data-background="glow"]>.site-wave-layer::after{background:radial-gradient(ellipse at 20% 50%,#b9b0ffb0,transparent 38%),radial-gradient(ellipse at 85% 60%,#80d7ff80,transparent 40%);opacity:var(--detail-alpha);animation:cta-glow-travel 8s ease-in-out infinite alternate}
@keyframes cta-glow-travel{from{transform:translate3d(-7%,0,0) scale(.95)}to{transform:translate3d(7%,0,0) scale(1.12)}}
@keyframes ambient-breathe{from{transform:translate3d(-4%,-3%,0) scale(1)}to{transform:translate3d(4%,3%,0) scale(1.08)}}
.site-wave-surface:nth-of-type(even)>.site-wave-layer::after{animation-delay:-3s}
@media(max-width:680px){.site-wave-layer::before{animation-duration:18s}.site-wave-layer::after{animation-duration:14s}[data-background="signals"]>.site-wave-layer::after{inset:-15% -140px}}
.effects-paused .site-wave-layer::before,.effects-paused .site-wave-layer::after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.site-wave-layer::before,.site-wave-layer::after{animation:none!important;transform:none}}
@media(forced-colors:active),print{.site-wave-layer{display:none}}
