/* Animated background scene (Admin → Appearance → Background & effects) */
.amb{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1;opacity:var(--amb-op,1);contain:strict}
.amb.amb-front{z-index:55}
.amb.amb-preview{position:absolute;z-index:0}
.amb-o{position:absolute;left:var(--x);top:var(--y);width:calc(var(--s) * var(--wk,1));height:var(--s);display:block;will-change:transform}
.amb-i{display:block;width:100%;height:100%;opacity:var(--op,.6);transform:rotate(var(--r0,0deg))}
.amb-i svg{display:block;width:100%;height:100%;fill:currentColor;overflow:visible}
.amb-move{animation:amb-move var(--d) linear var(--w) infinite}
.amb-float{animation:amb-float var(--d) ease-in-out var(--w) infinite alternate}
@keyframes amb-move{from{transform:translate3d(0,0,0)}50%{transform:translate3d(calc(var(--tx) / 2 + var(--wob,0px)),calc(var(--ty) / 2),0)}to{transform:translate3d(var(--tx),var(--ty),0)}}
@keyframes amb-float{from{transform:translate3d(0,0,0)}to{transform:translate3d(var(--fx),var(--fy),0)}}
.amb-m-spin{animation:amb-spin var(--md) linear infinite}
.amb-m-sway{animation:amb-sway var(--md) ease-in-out infinite alternate;transform-origin:50% 0}
.amb-m-twinkle{animation:amb-twinkle calc(var(--md) / 2) ease-in-out infinite alternate}
.amb-m-pulse{animation:amb-pulse var(--md) ease-in-out infinite alternate}
@keyframes amb-spin{from{transform:rotate(var(--r0))}to{transform:rotate(calc(var(--r0) + 360deg))}}
@keyframes amb-sway{from{transform:rotate(-22deg) translateX(-8px)}to{transform:rotate(22deg) translateX(8px)}}
@keyframes amb-twinkle{from{opacity:calc(var(--op) * .25);transform:scale(.7) rotate(var(--r0))}to{opacity:var(--op);transform:scale(1.08) rotate(var(--r0))}}
@keyframes amb-pulse{from{transform:scale(.88)}to{transform:scale(1.12)}}
/* more motions (v5.2) */
.amb-m-wobble{animation:amb-wobble calc(var(--md) / 3) ease-in-out infinite alternate}
.amb-m-flip{animation:amb-flip var(--md) linear infinite}
.amb-m-bounce{animation:amb-bounce calc(var(--md) / 2.5) ease-in-out infinite alternate}
.amb-m-orbit{animation:amb-orbit var(--md) linear infinite}
.amb-m-zigzag{animation:amb-zigzag calc(var(--md) / 1.5) linear infinite alternate}
.amb-m-swirl{animation:amb-swirl var(--md) ease-in-out infinite}
.amb-m-fade{animation:amb-fade var(--md) ease-in-out infinite alternate}
.amb-m-heartbeat{animation:amb-heart calc(var(--md) / 2) ease-in-out infinite}
@keyframes amb-wobble{from{transform:rotate(calc(var(--r0) - 12deg))}to{transform:rotate(calc(var(--r0) + 12deg))}}
@keyframes amb-flip{from{transform:rotate(var(--r0)) rotate3d(1,.6,.2,0deg)}to{transform:rotate(var(--r0)) rotate3d(1,.6,.2,360deg)}}
@keyframes amb-bounce{from{transform:rotate(var(--r0)) translateY(0)}to{transform:rotate(var(--r0)) translateY(-16px)}}
@keyframes amb-orbit{from{transform:rotate(0deg) translateX(14px) rotate(0deg)}to{transform:rotate(360deg) translateX(14px) rotate(-360deg)}}
@keyframes amb-zigzag{from{transform:rotate(var(--r0)) translateX(-14px)}to{transform:rotate(var(--r0)) translateX(14px)}}
@keyframes amb-swirl{0%{transform:rotate(var(--r0)) scale(.8)}50%{transform:rotate(calc(var(--r0) + 180deg)) scale(1.15)}100%{transform:rotate(calc(var(--r0) + 360deg)) scale(.8)}}
@keyframes amb-fade{from{opacity:0}to{opacity:var(--op)}}
@keyframes amb-heart{0%,40%,100%{transform:rotate(var(--r0)) scale(1)}10%,30%{transform:rotate(var(--r0)) scale(1.18)}20%{transform:rotate(var(--r0)) scale(.95)}}
/* special renderers */
.amb-orb .amb-i{border-radius:50%;background:currentColor;filter:blur(calc(var(--s) / 7))}
.amb-orb .amb-i svg{display:none}
.amb-dust .amb-i{filter:blur(.6px)}
.amb-dust .amb-i svg{filter:drop-shadow(0 0 3px currentColor)}
.amb-sweep{left:-30%;width:160%;height:calc(var(--s) * 1.6);color:inherit}
.amb-sweep .amb-i{border-radius:999px;background:currentColor;transform:rotate(-14deg)}
.amb-sweep.amb-move{animation:amb-band var(--d) ease-in-out var(--w) infinite alternate}
@keyframes amb-band{from{transform:translate3d(-12%,0,0)}to{transform:translate3d(12%,0,0)}}
/* phones */
@media (max-width:700px){.amb-mob-off{display:none}.amb-mob-half .amb-half{display:none}}
/* reduced motion: keep the picture, stop the movement */
@media (prefers-reduced-motion:reduce){.amb-o,.amb-i{animation:none!important}.amb-o:not(.amb-sweep){left:var(--rx);top:var(--ry)}}
.ui-anim-none .amb-o,.ui-anim-none .amb-i{animation:none!important}
.ui-anim-none .amb-o:not(.amb-sweep){left:var(--rx);top:var(--ry)}

/* readable text on dark scene backgrounds (sections without their own background) */
.scene-dark main>section:not([class*="hb-bg-"]) :is(.section-head h2,.section-head .kicker,.section-head p,.about-text h2,.about-text .lead,.video-text h2,.video-text .lead,.hb-text h2,.hb-text .prose,.hb-text .prose a,.hb-steps .st-head h2,.hf-title),
.scene-dark .hero-fallback p{color:#fff}
.scene-dark main>section:not([class*="hb-bg-"]) :is(.section-head .kicker,.about-text .kicker,.video-text .kicker){color:var(--aqua)}
.scene-dark main>section:not([class*="hb-bg-"]) .link-arrow{color:var(--aqua)}
.scene-dark main>section:not([class*="hb-bg-"]) .ql-grid a{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.14)}
.scene-dark .hero-fallback{background:transparent}
/* see-through: plain sections become transparent so the scene is visible */
.scene-through main>section:not([class*="hb-bg-"]):not(.hero-slider):not(.page-hero):not(.item-hero):not(.article-head):not(.stats-wrap),
.scene-through .page-body,.scene-through .stats-wrap{background:transparent}
