.party-effect-layer{position:fixed;inset:0;pointer-events:none;z-index:5;overflow:hidden;contain:strict}.party-effect-layer[hidden]{display:none}.party-effect-layer canvas{width:100%;height:100%;display:block}.party-effect-banner{position:absolute;left:50%;bottom:5%;transform:translateX(-50%);display:grid;gap:6px;min-width:260px;max-width:80vw;padding:18px 42px;border:1px solid #b7adff80;border-radius:22px;background:linear-gradient(125deg,#181329f2,#242347ed);box-shadow:0 12px 55px #0009,0 0 45px #a876ff30;text-align:center;color:#fff;font-family:inherit}.party-effect-banner span{text-transform:uppercase;font-size:12px;letter-spacing:.22em;color:#b8ff7e}.party-effect-banner strong{font-size:clamp(22px,3vw,42px);overflow-wrap:anywhere}.effect-shop{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.effect-choice{display:grid;gap:10px;padding:22px 14px!important;text-align:center;border-radius:18px!important;background:linear-gradient(145deg,#34304c,#171725)!important}.effect-choice .effect-icon{font-size:36px}.effect-choice small{color:#c5ff85}.effect-choice:disabled{opacity:.45}.effect-status{min-height:1.5em;color:#c5ff85}
/* Keep the scan target and navigation readable above decorative particles. */
.join-card{position:relative;z-index:6}.party-effect-layer canvas{opacity:.85}
.party-effect-layer canvas{mask-image:linear-gradient(90deg,#000 0%,#000 62%,transparent 74%)}@media(max-width:900px){.party-effect-layer canvas{mask-image:linear-gradient(#000 0%,#000 50%,transparent 70%)}}
.screen-video-background,.screen-video-overlay{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.screen-video-background{z-index:0;filter:brightness(.35)}.screen-video-overlay{z-index:1;mix-blend-mode:screen}.screen-video-background[hidden],.screen-video-overlay[hidden],.screen-guest-video[hidden]{display:none}.screen-guest-video{position:fixed;left:3vw;top:15vh;width:65vw;height:65vh;z-index:7;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:12px;padding:16px;background:#10101cf5;border:1px solid #ae80ff80;border-radius:24px;box-shadow:0 25px 80px #000a}.screen-guest-video video{width:100%;height:100%;object-fit:contain;border-radius:12px}.screen-guest-video strong{text-align:center;font-size:clamp(18px,2vw,30px);color:#c5ff85}@media(max-width:700px){.screen-guest-video{left:4vw;width:92vw;height:50vh}.party-effect-banner{padding:16px 22px}}.party-effect-layer{contain:layout paint size}
.party-ambient-layer{position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.32;contain:strict}.party-ambient-layer[hidden]{display:none}.party-ambient-layer canvas{width:100%;height:100%}.party-follow-invitation .party-effect-banner{bottom:8%;left:35%;max-width:60vw;border-color:#c5ff85;background:linear-gradient(120deg,#271443f5,#371a60f5);box-shadow:0 20px 70px #0009,0 0 55px #a46bff60}.party-follow-invitation .party-effect-banner strong{color:#c5ff85}.party-follow-invitation .party-effect-banner span{color:#fff;font-size:clamp(12px,1.5vw,20px)}
#screen{z-index:2}.party-ambient-layer{z-index:0}.party-ambient-layer .party-effect-banner{display:none!important}.screen-host-ad.has-ad-image h3,.screen-host-ad.has-ad-image p{display:none}.side-carousel .screen-host-ad.has-ad-image{grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}.screen-host-ad.has-ad-image img{width:100%;height:100%;min-height:0;object-fit:contain}.side-carousel .screen-host-ad:not(.has-ad-image){grid-template-rows:auto;align-content:center}
.dance-overlay{position:fixed;left:1%;bottom:0;width:65%;height:30vh;z-index:4;pointer-events:none;display:flex;justify-content:space-around;align-items:end;overflow:hidden;contain:layout paint;isolation:isolate}.dance-overlay[hidden]{display:none}.dance-figure{height:100%;width:30%;overflow:visible;fill:#080713;stroke:#b99cff;stroke-width:.6;filter:drop-shadow(0 0 7px #ad77ff) drop-shadow(0 0 18px #8e48b788)}.dance-1{height:87%;fill:#111524;stroke:#7cecff;filter:drop-shadow(0 0 7px #66e8ff);transform:scaleX(-1)}.dance-2{height:94%;stroke:#ff85bc;filter:drop-shadow(0 0 7px #ff75c3)}.dance-body{transform-origin:100px 215px;animation:dance-sway 2.4s ease-in-out infinite}.dance-head{transform-origin:100px 64px;animation:dance-nod 1.2s ease-in-out infinite}.dance-arm.left{transform-origin:87px 78px;animation:dance-left 2.4s ease-in-out infinite}.dance-arm.right{transform-origin:115px 78px;animation:dance-right 2.4s ease-in-out infinite}.dance-leg.left{transform-origin:91px 143px;animation:dance-step 1.2s ease-in-out infinite alternate}.dance-leg.right{transform-origin:106px 143px;animation:dance-step 1.2s ease-in-out -.6s infinite alternate}.dance-1 *{animation-delay:-.6s!important}.dance-2 *{animation-delay:-1.3s!important}@keyframes dance-sway{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(6px) rotate(5deg)}}@keyframes dance-nod{50%{transform:rotate(10deg)}}@keyframes dance-left{0%,100%{transform:rotate(8deg)}50%{transform:rotate(66deg)}}@keyframes dance-right{0%,100%{transform:rotate(-24deg)}50%{transform:rotate(22deg)}}@keyframes dance-step{to{transform:rotate(9deg)}}.screen-video-overlay{z-index:3}.screen-video-overlay{mask-image:linear-gradient(90deg,#000 0%,#000 65%,transparent 74%)}@media(prefers-reduced-motion:reduce){.dance-overlay *{animation:none!important}}@media(max-width:700px){.dance-overlay{width:94%;height:20vh}.dance-2{display:none}}

.party-decoration-layer{position:fixed;inset:0 26% 0 0;z-index:4;pointer-events:none;overflow:hidden;mask-image:linear-gradient(to top,#000,transparent 75%)}.party-decoration-layer canvas{width:100%;height:100%}.party-decoration-layer[hidden]{display:none}.party-decoration-layer .party-effect-banner{display:none}

/* Restrained joint motion avoids rubber-limb poses; no per-frame SVG blur filters. */
.dance-figure{filter:none;stroke-width:.85;stroke-linejoin:round;paint-order:stroke fill}.dance-body{animation-duration:3.6s;transform-origin:100px 220px}.dance-head{animation-duration:1.8s}.dance-arm.left,.dance-arm.right{animation-duration:3.6s}.dance-leg.left,.dance-leg.right{animation-duration:1.8s}.dance-1 .dance-body{animation-duration:4s}.dance-2 .dance-body{animation-duration:3.2s}
@keyframes dance-sway{0%,100%{transform:translate(0,0) rotate(-2deg)}25%{transform:translate(2px,3px) rotate(0deg)}50%{transform:translate(0,0) rotate(2deg)}75%{transform:translate(-2px,3px) rotate(0deg)}}@keyframes dance-nod{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(4deg)}}@keyframes dance-left{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(12deg)}}@keyframes dance-right{0%,100%{transform:rotate(7deg)}50%{transform:rotate(-10deg)}}@keyframes dance-step{from{transform:rotate(-2deg)}to{transform:rotate(3deg)}}
