/* V54 cinematic, progressive visual layer; all access rules remain in Supabase. */
#welcome{isolation:isolate}
.v54-ambient{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.v54-ambient i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;background:#fff2c7;box-shadow:0 0 8px 2px #e6bd77a8;opacity:.3;animation:v54twinkle 6s ease-in-out var(--delay) infinite alternate}
@keyframes v54twinkle{0%,100%{opacity:.12;transform:scale(.6)}50%{opacity:.7;transform:scale(1.6)}}
#welcome .winter-town,#welcome .fairy-lights{transition:filter 1.6s ease}
body.v54-phase-0 #welcome .winter-town{filter:brightness(.83)}
body.v54-phase-1 #welcome .winter-town{filter:brightness(1.04)}
body.v54-phase-2 #welcome .winter-town{filter:brightness(1.12) saturate(1.07)}
body.v54-phase-3 #welcome .winter-town{filter:brightness(1.22) saturate(1.1)}
body.v54-phase-4 #welcome .winter-town{filter:brightness(1.32) saturate(1.16)}
body.v54-phase-5 #welcome .winter-town{filter:brightness(1.48) saturate(1.2)}
.v54-calendar-glow{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 20%,#eecb7b20,transparent 65%);transition:opacity 2s ease}
body.v54-phase-3 .v54-calendar-glow{opacity:.3}body.v54-phase-4 .v54-calendar-glow{opacity:.65}body.v54-phase-5 .v54-calendar-glow{opacity:1}
#days .day{position:relative}
#days .day .gift-box{transition:filter .5s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
#days .day.unwrapping[data-v54-opening="ribbon"] .gift-box{filter:drop-shadow(0 0 18px #f4d48b);transform:rotate(-5deg) scale(1.07)}
#days .day.unwrapping[data-v54-opening="stardust"] .gift-box{filter:drop-shadow(0 0 24px #fff0b8);transform:scale(1.13)}
#days .day.unwrapping[data-v54-opening="snow"] .gift-box{filter:drop-shadow(0 0 18px #d9eaff);transform:translateY(-8px) rotate(3deg)}
#days .day.unwrapping[data-v54-opening="envelope"] .gift-box{filter:drop-shadow(0 0 18px #edc4a0);transform:rotate(6deg) scale(1.08)}
#days .day.unwrapping[data-v54-opening="glow"] .gift-box{filter:drop-shadow(0 0 25px #ffcf73);transform:scale(1.15)}
#days .day.unwrapping[data-v54-opening="royal"] .gift-box{filter:drop-shadow(0 0 30px #ffdc81);transform:scale(1.18)}
.v54-gift-burst{position:absolute;inset:-12px;pointer-events:none;border-radius:50%;background:radial-gradient(circle,#ffe6a888 0%,#f6c56c33 35%,transparent 70%);animation:v54burst 1.5s ease-out both}
@keyframes v54burst{0%{opacity:0;transform:scale(.5)}35%{opacity:1}100%{opacity:0;transform:scale(1.8)}}
#modal:not(.hidden) .letter{animation:v54letter .7s cubic-bezier(.18,.75,.25,1) both}
@keyframes v54letter{from{opacity:.3;transform:translateY(18px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
#modal[data-v54-opening="envelope"] .letter{box-shadow:0 0 30px #f3cfa24d}
#modal[data-v54-opening="royal"] .letter{box-shadow:0 0 50px #f8d17c66}
.v54-finale-aurora{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 18%,#eec56b3b,transparent 55%);opacity:.6;animation:v54aurora 8s ease-in-out infinite alternate}
@keyframes v54aurora{to{opacity:1;filter:hue-rotate(8deg)}}
@media (orientation:portrait){.v54-ambient i{transform-origin:center}#welcome .winter-town{background-position:center center}}
@media (orientation:landscape){#welcome .winter-town{background-position:center 48%}}
@media (prefers-reduced-motion:reduce){.v54-ambient i,.v54-gift-burst,.v54-finale-aurora,#modal:not(.hidden) .letter{animation:none!important}.v54-ambient i{opacity:.25}.v54-gift-burst{display:none}}
body.reduced .v54-ambient i,body.reduced .v54-finale-aurora,body.reduced #modal .letter{animation:none!important}body.reduced .v54-gift-burst{display:none}
