#hv-seasonal-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:9990}
.hv-fx{position:absolute;will-change:transform;animation-timing-function:linear;animation-iteration-count:infinite}
.hv-screen-temporary{transition:opacity .4s ease}
.hv-screen-ending{opacity:0!important}

/* ---- shared falling / rising motion ---- */
@keyframes hv-fall{to{transform:translate3d(6vw,110vh,0) rotate(220deg)}}
@keyframes hv-rise{to{transform:translate3d(4vw,-115vh,0) rotate(140deg)}}
@keyframes hv-fly{to{transform:translate3d(115vw,var(--drift,0px),0)}}
@keyframes hv-twinkle{to{opacity:.25;transform:scale(.65)}}
@keyframes hv-sweep{from{transform:rotate(-22deg)}to{transform:rotate(22deg)}}
@keyframes hv-bob{to{transform:translateY(-10px) rotate(3deg)}}
@keyframes hv-pop{to{transform:scale(2.2);opacity:0}}
@keyframes hv-drift-fog{from{transform:translate3d(-10vw,0,0)}to{transform:translate3d(10vw,0,0)}}
@keyframes hv-shimmer{0%,100%{opacity:.55}50%{opacity:1}}

/* ---- snow: soft round flakes, two depths for a little parallax ---- */
.hv-snowflake{top:-3rem;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#dff3ff 70%,transparent);opacity:.85;animation-name:hv-fall;filter:blur(.3px)}

/* ---- string lights (christmas) ---- */
.hv-light{position:absolute;top:0;width:14px;height:14px;border-radius:50%;box-shadow:0 0 8px 2px currentColor;animation:hv-twinkle 1.4s infinite alternate}

/* ---- sparkles: small rotated diamonds, used by several themes ---- */
.hv-sparkle{top:-3rem;animation-name:hv-fall;background:currentColor;clip-path:polygon(50% 0,65% 35%,100% 50%,65% 65%,50% 100%,35% 65%,0 50%,35% 35%);opacity:.9}
.hv-sparkle-gold{color:#ffd85e;filter:drop-shadow(0 0 4px rgba(255,216,94,.65))}
.hv-sparkle-silver{color:#dfe9ff;filter:drop-shadow(0 0 4px rgba(223,233,255,.6))}

/* ---- halloween: moon, fog, minimalist bat silhouette ---- */
.hv-moon{border-radius:50%;background:#f4ecd8;box-shadow:inset 10px -6px 0 0 #2a2f4a, 0 0 30px 6px rgba(244,236,216,.35)}
.hv-fog{width:40vw;height:12vh;border-radius:50%;background:radial-gradient(ellipse at center,rgba(180,170,210,.28),transparent 70%);animation-name:hv-drift-fog;animation-direction:alternate;animation-timing-function:ease-in-out}
.hv-bat-shape{background:#241a33;animation-name:hv-fly;clip-path:polygon(50% 20%,58% 0,62% 22%,85% 0,78% 30%,100% 35%,72% 42%,90% 65%,60% 48%,50% 70%,40% 48%,10% 65%,28% 42%,0 35%,22% 30%,15% 0,38% 22%,42% 0)}

/* ---- birthday: confetti + simple balloon shape ---- */
.hv-confetti{bottom:-2rem;background:var(--fx-color,#ffd85e);animation-name:hv-rise;border-radius:2px}
.hv-balloon-shape{bottom:-4rem;background:var(--fx-color,#ff6b81);border-radius:50% 50% 50% 50%/60% 60% 40% 40%;animation-name:hv-rise;position:relative}
.hv-balloon-shape:after{content:'';position:absolute;left:50%;bottom:-14px;width:1px;height:14px;background:rgba(0,0,0,.35);transform:translateX(-50%)}

/* ---- VE Day / coronation banner strip (replaces flag emoji) ---- */
.hv-banner-strip{position:fixed;left:0;right:0;top:4.5rem;z-index:9989;text-align:center;padding:.55rem 1rem;font-weight:800;letter-spacing:.04em;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);box-shadow:0 2px 10px rgba(0,0,0,.25)}
.hv-banner-vd{background:linear-gradient(90deg,#173f7a 0 33%,#f4f4f4 33% 66%,#b52234 66%);color:#111;text-shadow:none}
.hv-banner-coronation{background:linear-gradient(90deg,#4b1d75,#7a2f9c 50%,#4b1d75)}
.hv-crown-shape{position:absolute;background:linear-gradient(180deg,#ffd85e,#e8b53a);clip-path:polygon(0 100%,0 40%,20% 60%,35% 20%,50% 55%,65% 20%,80% 60%,100% 40%,100% 100%);animation:hv-bob 2s ease-in-out infinite alternate;filter:drop-shadow(0 3px 4px rgba(0,0,0,.35))}

/* ---- concert: spotlight sweeps + simple musical note shape ---- */
.hv-stage-light{top:-15%;width:10vw;height:120vh;transform-origin:top;background:linear-gradient(to bottom,rgba(255,255,255,.35),transparent 75%);animation:hv-sweep 4s ease-in-out infinite alternate}
.hv-note-shape{bottom:-3rem;animation-name:hv-rise;background:transparent}
.hv-note-shape:before{content:'';display:block;width:60%;height:60%;border-radius:50%;background:#dfe9ff;margin-top:40%}
.hv-note-shape:after{content:'';position:absolute;right:6%;top:0;width:12%;height:70%;background:#dfe9ff;border-radius:2px}

/* ---- 10th anniversary badge ---- */
.hv-badge-ten{position:absolute;display:flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff6d8,#ffd85e 60%,#e8b53a);color:#4a3200;font-weight:800;font-size:1.25rem;box-shadow:0 4px 14px rgba(0,0,0,.25);animation:hv-shimmer 2.4s ease-in-out infinite}
.hv-badge-ten:after{content:'10'}

/* ---- easter eggs: solid pastel shapes instead of emoji ---- */
.hv-egg{position:absolute;z-index:9991;width:2.4rem;height:3rem;border:0;cursor:pointer;border-radius:50% 50% 50% 50%/62% 62% 38% 38%;box-shadow:0 3px 6px rgba(0,0,0,.35);animation:hv-bob 1.8s ease-in-out infinite alternate}
.hv-egg-pink{background:linear-gradient(160deg,#ffd6e6,#ff9dc4)}
.hv-egg-blue{background:linear-gradient(160deg,#dcefff,#8fc7ff)}
.hv-egg-yellow{background:linear-gradient(160deg,#fff6d0,#ffe27a)}
.hv-egg-mint{background:linear-gradient(160deg,#e0fff0,#8fe3bb)}
.hv-egg:focus{outline:3px solid #fff;outline-offset:2px}
.hv-egg.found{animation:hv-pop .35s forwards;pointer-events:none}
#hv-egg-counter{position:fixed;right:1rem;bottom:1rem;z-index:9993;background:rgba(22,25,43,.94);color:#fff;padding:.7rem 1rem;border:1px solid rgba(255,255,255,.35);border-radius:999px;font-weight:700;box-shadow:0 8px 24px rgba(0,0,0,.3)}

/* ---- major concert countdown ---- */
#hv-major-countdown{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);z-index:9994;display:flex;gap:.8rem;align-items:center;padding:.8rem 2.6rem .8rem 1rem;background:rgba(20,20,35,.95);color:#fff;border:1px solid rgba(255,215,0,.65);box-shadow:0 8px 30px rgba(0,0,0,.35)}
#hv-major-countdown strong{color:#ffd85e}
#hv-major-countdown button{position:absolute;right:.45rem;top:.3rem;border:0;background:none;color:#fff;font-size:1.3rem;cursor:pointer}

.hv-celebrate{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:rgba(0,0,0,.6);padding:1rem}
.hv-celebrate>div{max-width:520px;text-align:center;background:#2a2f4a;color:#fff;padding:2rem;border:2px solid #ffd85e;border-radius:6px}
.hv-celebrate button{margin-top:1rem}

@media(prefers-reduced-motion:reduce){.hv-fx,.hv-egg,.hv-badge-ten{animation-duration:.001ms!important;animation-iteration-count:1!important}.hv-stage-light{display:none}}
@media(max-width:600px){#hv-major-countdown{width:calc(100% - 1rem);bottom:.5rem;flex-direction:column;gap:.2rem;text-align:center}.hv-banner-strip{font-size:.75rem}}
