/* Slow, composited motion behind the content. No canvas loop or moving text. */
body::before{inset:-2%;animation:night-landscape 36s ease-in-out infinite alternate}
.night-atmosphere{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;contain:strict}
.night-atmosphere>div{position:absolute;pointer-events:none}
.night-moonlight{inset:-10% -10% 10% 35%;background:radial-gradient(ellipse at 78% 12%,#f1cfa344,transparent 39%),conic-gradient(from 168deg at 80% 0%,transparent 0deg,#efc6b219 10deg,transparent 20deg,#d7a1c41a 31deg,transparent 43deg);animation:night-moon 17s ease-in-out infinite alternate}
.night-candlelight{inset:20% -15% -25% 25%;background:radial-gradient(ellipse at 100% 90%,#f8973238,transparent 62%),radial-gradient(ellipse at 0% 100%,#cc645023,transparent 55%);animation:night-candle 7s ease-in-out infinite alternate}
.night-mist{left:-20%;width:140%;height:60vh;bottom:-22vh;background:radial-gradient(ellipse at 30% 65%,#d2b1c426,transparent 48%),radial-gradient(ellipse at 70% 70%,#9476ac32,transparent 48%);animation:night-mist-near 28s ease-in-out infinite alternate;transform-origin:bottom}
.night-mist.mist-far{bottom:-7vh;opacity:.5;background:radial-gradient(ellipse at 70% 80%,#b7a1c030,transparent 52%);animation:night-mist-far 39s ease-in-out -15s infinite alternate}
.night-stars,.night-embers,.night-leaves{inset:0}
.night-stars i,.night-embers i{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);border-radius:50%;opacity:0}
.night-stars i{background:#ffe4ba;box-shadow:0 0 9px 2px #ffd29c55;animation:night-twinkle var(--duration) ease-in-out var(--delay) infinite}
.night-embers i{background:#ffc780;box-shadow:0 0 12px 3px #ef985b45;animation:night-ember var(--duration) ease-in-out var(--delay) infinite}
.night-leaves svg{position:absolute;left:var(--x);top:-12%;width:15px;height:23px;fill:#bd6b35;opacity:0;animation:night-leaf var(--duration) linear var(--delay) infinite}
.night-leaves svg path+path{fill:none;stroke:#e3ab6566;stroke-width:1}
.night-is-paused .night-atmosphere *,.night-is-paused body::before,.night-is-paused .card-ritual *{animation-play-state:paused!important}
@keyframes night-landscape{from{transform:scale(1) translate3d(0,0,0)}to{transform:scale(1.025) translate3d(-.4%,.4%,0)}}
@keyframes night-moon{from{opacity:.4;transform:rotate(-2deg)}to{opacity:.95;transform:rotate(2deg)}}
@keyframes night-candle{0%,100%{opacity:.4}35%{opacity:.75}70%{opacity:.5}}
@keyframes night-mist-near{from{transform:translate3d(-6%,3%,0) scaleX(1);opacity:.5}to{transform:translate3d(6%,-5%,0) scaleX(1.12);opacity:.95}}
@keyframes night-mist-far{from{transform:translate3d(8%,0,0)}to{transform:translate3d(-8%,-7%,0)}}
@keyframes night-twinkle{0%,100%{opacity:.08;transform:scale(.7)}50%{opacity:.7;transform:scale(1.2)}}
@keyframes night-ember{0%{opacity:0;transform:translate3d(0,40px,0) scale(.6)}22%{opacity:.65}70%{opacity:.35}100%{opacity:0;transform:translate3d(var(--drift),-160px,0) scale(.3)}}
@keyframes night-leaf{0%{opacity:0;transform:translate3d(0,0,0) rotate(-30deg)}12%,75%{opacity:.38}100%{opacity:0;transform:translate3d(100px,115vh,0) rotate(270deg)}}
@media(max-width:600px){.night-embers i:nth-child(n+11),.night-stars i:nth-child(n+10),.night-leaves svg:nth-child(n+2){display:none}.night-moonlight{left:10%}.night-mist{height:48vh}}
@media(prefers-reduced-motion:reduce){body::before,.night-atmosphere *{animation:none!important;transform:none!important}.night-embers,.night-leaves{display:none}.night-stars i{opacity:.2}.night-moonlight,.night-candlelight{opacity:.5}}

/* A shared constellation connects the gathering, card flip and final seal. */
.ritual-flourish{position:absolute;inset:50% auto auto 50%;width:min(72vw,550px);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;z-index:0}
.flourish-ring{position:absolute;inset:2%;border:1px solid #e9c79350;border-radius:50%;box-shadow:0 0 28px #d99f5020,inset 0 0 28px #d99f5015;animation:flourish-breathe 4s ease-in-out infinite}
.flourish-ring:before,.flourish-ring:after{content:'';position:absolute;inset:3%;border:1px dashed #e6bb7440;border-radius:50%;animation:ritual-orbit 48s linear infinite}
.flourish-ring:after{inset:9%;border-style:solid;border-color:#f1cda322}
.flourish-ring.ring-offset{inset:16%;border-style:dotted;animation:flourish-breathe 4s ease-in-out -2s infinite}
.flourish-aura{position:absolute;inset:-10%;background:radial-gradient(circle,#ecc68918,transparent 65%);animation:flourish-breathe 5s ease-in-out infinite}
.ritual-flourish>span{position:absolute;inset:0;transform:rotate(var(--angle));text-align:center}
.ritual-flourish>span>b{display:inline-block;color:#efc384;font:13px Georgia,serif;text-shadow:0 0 12px #f2ca94;animation:flourish-star 3.5s ease-in-out var(--delay) infinite}
.ritual-gather{isolation:isolate}.ritual-gather>.ritual-flourish{z-index:-1;width:330px}
.ritual-gather-card{animation-duration:3.6s}.ritual-gather-star,.ritual-breath span{animation-duration:3.6s}
.ritual-stage>.ritual-flourish{width:340px;opacity:.55;transition:opacity 1.6s,transform 1.6s}
.card-ritual[data-phase=revealing] .ritual-stage>.ritual-flourish,.card-ritual[data-phase=revealed] .ritual-stage>.ritual-flourish{opacity:1;transform:translate(-50%,-50%) scale(1.13)}
.ritual-stage:after{content:'';position:absolute;z-index:3;pointer-events:none;inset:0;background:linear-gradient(115deg,transparent 30%,#ffe4b745 48%,transparent 62%);opacity:0;transform:translateX(-45%)}
.card-ritual[data-phase=revealing] .ritual-stage:after{animation:ritual-silken-light 1.9s ease both}
.ritual-cadence{display:flex;align-items:center;justify-content:center;gap:11px;margin:23px 0 14px;max-width:100%;color:#dec39e;font-size:11px;letter-spacing:.3px}
.ritual-cadence>span{display:flex;align-items:center;gap:7px;animation:cadence-light 1.3s ease both}
.ritual-cadence>span:nth-of-type(2){animation-delay:1s}.ritual-cadence>span:nth-of-type(3){animation-delay:2s}
.ritual-cadence i{width:5px;height:5px;flex:none;border-radius:50%;background:#efc794;box-shadow:0 0 12px #f3c17b}
.ritual-cadence>b{height:1px;width:28px;background:linear-gradient(90deg,#c4956430,#f6ce9199);transform-origin:left;animation:ritual-thread 1.4s .6s ease both}.ritual-cadence>b:last-of-type{animation-delay:1.6s}
.card-ritual[data-phase=connecting] .ritual-spread figure{animation-duration:1.9s;animation-delay:calc(var(--card)*.28s)}
.card-ritual[data-phase=connecting] .ritual-thread i{animation-duration:3s}
.ritual-outcome .ritual-cadence{margin:18px 0 4px}.ritual-outcome .ritual-open-reading{margin-top:16px}
.card-ritual[data-phase=ready] .ritual-result-seal{animation:flourish-seal 1.5s ease both}
.card-ritual[data-phase=processing] .consultation-weave{position:relative;isolation:isolate}
.consultation-weave>.ritual-flourish{z-index:-1;width:min(74vw,380px)}
.daily-finale{position:relative;width:min(78vw,380px);height:330px;display:grid;place-items:center;margin:25px 0 0;isolation:isolate}
.daily-finale>.ritual-flourish{width:340px;z-index:-1}
.daily-finale>img{height:270px;max-width:54vw;object-fit:contain;border:1px solid #efce90;border-radius:9px;box-shadow:0 15px 50px #0007,0 0 40px #ebbc7545;animation:daily-finale-card 2.8s ease both}
.daily-ritual[data-phase=connecting] .ritual-cosmos{background:radial-gradient(ellipse at 50% 46%,#aa705e40,transparent 62%),linear-gradient(140deg,#100e23,#21131d 64%,#382334)}
@keyframes flourish-breathe{0%,100%{opacity:.45;transform:scale(.97)}50%{opacity:1;transform:scale(1.03)}}
@keyframes flourish-star{0%,100%{opacity:.3;transform:scale(.6)}50%{opacity:1;transform:scale(1.2)}}
@keyframes ritual-silken-light{0%{opacity:0;transform:translateX(-45%)}40%{opacity:.7}100%{opacity:0;transform:translateX(45%)}}
@keyframes cadence-light{from{opacity:.2;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes flourish-seal{0%{transform:scale(.8);opacity:.45}55%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes daily-finale-card{0%{opacity:0;transform:translateY(22px) scale(.88) rotate(-5deg)}45%{opacity:1}100%{opacity:1;transform:translateY(-5px) scale(1) rotate(0)}}
@media(max-width:600px){.ritual-stage>.ritual-flourish{width:285px}.ritual-cadence{font-size:9px;gap:7px;letter-spacing:0}.ritual-cadence>b{width:15px}.ritual-cadence>span{gap:5px}.daily-finale{height:285px}.daily-finale>img{height:235px}.daily-finale>.ritual-flourish{width:280px}}
@media(prefers-reduced-motion:reduce){.ritual-flourish,.ritual-flourish *,.ritual-cadence *,.daily-finale>img{animation:none!important}.ritual-stage:after{display:none}.ritual-cadence>span{opacity:1}}
