.festival-layer{position:fixed;inset:0;z-index:8;pointer-events:none;overflow:hidden}
.festival-glow{position:absolute;inset:-20%;background:radial-gradient(circle at 15% 15%,color-mix(in srgb,var(--festival-color) 22%,transparent),transparent 34%),radial-gradient(circle at 85% 22%,color-mix(in srgb,var(--festival-accent) 18%,transparent),transparent 30%);opacity:.72}
.festival-particles{position:absolute;inset:0}.festival-particles i{position:absolute;left:var(--x);top:-8vh;color:var(--festival-color);font-size:var(--size);font-style:normal;text-shadow:0 0 12px color-mix(in srgb,var(--festival-accent) 80%,transparent);opacity:.8;animation:festival-fall var(--duration) linear var(--delay) infinite}
.festival-particles i:nth-child(2n){color:var(--festival-accent);animation-name:festival-drift}.festival-particles i:nth-child(3n){opacity:.45}
.festival-badge{position:fixed;right:24px;top:78px;display:grid;gap:1px;min-width:220px;padding:10px 13px;border:1px solid color-mix(in srgb,var(--festival-color) 40%,#d8e2ef);border-radius:13px;background:color-mix(in srgb,#fff 90%,var(--festival-accent));box-shadow:0 10px 30px rgba(15,35,65,.13);color:#122d51}
.festival-badge span{color:var(--festival-color);font-size:9px;font-weight:900;letter-spacing:.13em}.festival-badge b{font-size:13px}.festival-badge small{color:#687a91;font-size:10px}
body[data-theme="dark"] .festival-badge{background:color-mix(in srgb,#10213a 88%,var(--festival-color));color:#fff}
@keyframes festival-fall{0%{transform:translate3d(0,-8vh,0) rotate(0);opacity:0}12%{opacity:.85}100%{transform:translate3d(40px,112vh,0) rotate(300deg);opacity:0}}
@keyframes festival-drift{0%{transform:translate3d(0,-8vh,0) rotate(0);opacity:0}15%{opacity:.72}50%{transform:translate3d(-32px,54vh,0) rotate(160deg)}100%{transform:translate3d(22px,112vh,0) rotate(330deg);opacity:0}}
@media(max-width:700px){.festival-badge{right:12px;top:66px;min-width:0;padding:8px 10px}.festival-badge span,.festival-badge small{display:none}.festival-particles i:nth-child(2n){display:none}}
@media(prefers-reduced-motion:reduce){.festival-particles{display:none}.festival-glow{opacity:.35}}
