/* Three quiet light layers, always behind content and controls. */
.ambient-background{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;contain:strict}
main,.footer{position:relative;z-index:1}
.ambient-glow{position:absolute;inset:-16%;background:radial-gradient(ellipse at 12% 78%,#dcfa6b16 0%,transparent 46%),radial-gradient(ellipse at 89% 24%,#c0d57513 0%,transparent 40%);animation:ambient-drift 22s ease-in-out infinite alternate;transform:translate3d(-3%,2%,0)}
.ambient-waves{position:absolute;left:48%;top:7%;width:85vw;height:100vh;background:radial-gradient(ellipse at center,transparent 44%,#dcfa6b12 44.2%,transparent 44.4%,transparent 50%,#dcfa6b18 50.2%,transparent 50.4%,transparent 56%,#dcfa6b10 56.2%,transparent 56.4%);transform:translate3d(0,-3%,0) rotate(-24deg);animation:ambient-wave 28s ease-in-out infinite alternate;opacity:.7}
.hero::after{content:'';position:absolute;inset:-25%;z-index:-1;pointer-events:none;background:linear-gradient(115deg,transparent 46%,#dcfa6b00 48%,#dcfa6b17 54%,#dcfa6b05 58%,transparent 62%),radial-gradient(ellipse at 75% 40%,#dcfa6b15 0%,transparent 38%);transform:translate3d(-8%,0,0) rotate(-5deg);animation:hero-light 16s ease-in-out infinite alternate}
@keyframes ambient-drift{to{transform:translate3d(4%,-4%,0) scale(1.08);opacity:.65}}
@keyframes ambient-wave{to{transform:translate3d(-7%,6%,0) rotate(-13deg) scale(1.08);opacity:.35}}
@keyframes hero-light{to{transform:translate3d(9%,2%,0) rotate(4deg);opacity:.45}}
.ambient-paused .ambient-glow,.ambient-paused .ambient-waves,.ambient-paused .hero::after,.hero.ambient-offscreen::after{animation-play-state:paused}
@media(max-width:620px){.ambient-waves{display:none}.ambient-glow{opacity:.7}.hero::after{opacity:.7;animation-duration:20s}}
@media(prefers-reduced-motion:reduce){.ambient-glow,.ambient-waves,.hero::after{animation:none;transform:none}.ambient-waves{opacity:.35}}

/* Keep the offer readable; the light sits behind the text, never over it. */
.hero-inner{position:relative;isolation:isolate}
.hero-inner::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 340px 220px at var(--offer-x,28%) var(--offer-y,48%),#dcfa6b16,transparent 75%)}
.hero h1 em{position:relative;text-shadow:0 0 38px #dcfa6b25}
.hero h1 em::after{content:'';position:absolute;left:0;right:15%;bottom:-.12em;height:2px;background:linear-gradient(90deg,var(--lime),#dcfa6b35,transparent);box-shadow:0 3px 15px #dcfa6b35;transform-origin:left;animation:offer-underline 1.2s .15s cubic-bezier(.2,.7,.2,1) both;pointer-events:none}
.hero-promise{color:var(--text)}
.hero-cta .button{position:relative;box-shadow:0 0 24px #dcfa6b16}
.hero-cta .button::before{content:'';position:absolute;inset:-5px;border:1px solid #dcfa6b65;border-radius:calc(var(--radius) + 5px);box-shadow:0 0 25px #dcfa6b1c;opacity:.35;pointer-events:none;animation:offer-breathe 5.5s ease-in-out infinite}
.button:not(#mix-play)>span:last-child{display:inline-block;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.button:not(#mix-play):focus-visible>span:last-child{transform:translate(3px,-3px)}
.trial-price strong{color:var(--lime);text-shadow:0 0 28px #dcfa6b20}
@keyframes offer-underline{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}
@keyframes offer-breathe{0%,100%{opacity:.25}50%{opacity:.8}}
@media(hover:hover) and (pointer:fine){.button:not(#mix-play):hover>span:last-child{transform:translate(3px,-3px)}}
.ambient-paused .hero h1 em::after,.ambient-paused .hero-cta .button::before,.hero.ambient-offscreen h1 em::after,.hero.ambient-offscreen .hero-cta .button::before{animation-play-state:paused}
@media(max-width:620px){.hero-inner::before{background:radial-gradient(ellipse at 20% 50%,#dcfa6b10,transparent 70%)}.hero-cta .button::before{inset:-4px}}
@media(prefers-reduced-motion:reduce){.hero h1 em::after,.hero-cta .button::before{animation:none}.hero-inner::before{background:radial-gradient(ellipse at 28% 48%,#dcfa6b12,transparent 70%)}.button:not(#mix-play)>span:last-child{transition:none}.button:not(#mix-play):hover>span:last-child,.button:not(#mix-play):focus-visible>span:last-child{transform:none}}
