.party{position:relative;z-index:22;isolation:isolate}
.party-toggle{display:flex;align-items:center;padding:7px 12px;border:1px solid var(--line);border-radius:20px;min-height:34px;color:var(--muted);touch-action:manipulation}.party-toggle:hover{color:var(--ink);border-color:var(--muted)}.party-caption{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:11px;line-height:1.6}.party-caption>.icon{width:13px;height:13px;stroke-width:1.6}.party-stop{display:none!important}.party[data-state=playing] .party-play,.party[data-state=loading] .party-play{display:none}.party[data-state=playing] .party-stop,.party[data-state=loading] .party-stop{display:block!important}.party[data-state=playing] .party-toggle,.party[data-state=loading] .party-toggle{color:var(--green);border-color:var(--green)}.party audio{display:none}
/* The viewport layer is a direct child of body, independent of header transforms. */
.party-overlay{--party-gap:16px;--party-base-width:224px;--party-base-size:132px;--party-width:min(var(--party-base-width),calc(var(--party-vw,100vw) - max(var(--party-gap),env(safe-area-inset-left)) - max(var(--party-gap),env(safe-area-inset-right))));position:fixed;z-index:30;left:calc(var(--party-vleft,0px) + max(var(--party-gap),env(safe-area-inset-left)));top:calc(var(--party-vtop,0px) + var(--party-vh,100dvh) - max(16px,env(safe-area-inset-bottom)));bottom:auto;width:var(--party-width);isolation:isolate;transform:translateY(-100%)!important;perspective:none!important;pointer-events:none}
.party-stage{display:none;padding:0;border:0;background:none}.party-overlay .party-stage{display:block;position:relative;width:100%;height:min(190px,calc(var(--party-vh,100dvh) - 56px));perspective:600px;perspective-origin:50% 50%;pointer-events:auto;cursor:pointer;overflow:hidden;--party-size:min(var(--party-base-size),calc(var(--party-width) * .59),calc(var(--party-vh,100dvh) * .38))}
.party-turn{position:absolute;left:50%;top:50%;width:var(--party-size);height:calc(var(--party-size) * 505 / 560);margin-left:calc(var(--party-size) / -2);margin-top:calc(var(--party-size) * -505 / 1120);transform-origin:50% 50%;transform-style:preserve-3d;pointer-events:none}.party-overlay #party-sprite{position:static;display:block;width:100%;height:auto;transform-origin:50% 100%;filter:drop-shadow(0 5px 4px #00000016);pointer-events:none}.party-overlay[data-state=playing] .party-turn,.party-overlay[data-state=playing] #party-sprite{will-change:transform}
.party-stage:after{content:"点击停止";position:absolute;left:0;right:0;bottom:0;text-align:center;color:var(--muted);font-size:10px;font-weight:400}.party-source{display:none}.party-overlay .party-source{display:block;width:max-content;max-width:100%;margin:4px auto 0;position:relative;text-align:center;color:var(--muted);font-size:9px;line-height:1.7;pointer-events:auto}.party-source:hover{color:var(--ink)}html[data-party=playing] .companion{visibility:hidden;pointer-events:none}
@media(max-width:600px){.party-toggle{padding:6px 10px;min-height:32px}.party-caption{font-size:10px;gap:5px}.party-caption>.icon{width:12px;height:12px}.party-overlay{--party-gap:9px;--party-base-width:180px;--party-base-size:104px}.party-overlay .party-stage{height:min(161px,calc(var(--party-vh,100dvh) - 56px))}.party-overlay .party-source{font-size:8px}}
/* Every participant follows the same audio clock. */
html[data-page-party=on] [data-party-dance]{transform:perspective(1600px) rotateY(var(--page-party-angle,0deg)) scale(var(--page-party-sx,1),var(--page-party-sy,1));transform-origin:50% 100%;backface-visibility:visible;will-change:transform;animation:none!important;transition:none!important}html[data-page-party=on] body{overflow-x:clip}

html[data-page-party=on]{overflow-x:clip}
