/* Shared event atmosphere: compositor motion, no moving body text. */
#party-app .party-atmosphere{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;contain:strict}
#party-app .party-light{position:absolute;width:68vw;height:70vh;border-radius:50%;opacity:0;will-change:transform;pointer-events:none}
#party-app .light-violet{left:-20vw;top:-15vh;background:radial-gradient(ellipse,#b23bff2e,transparent 68%)}
#party-app .light-amber{right:-25vw;bottom:-22vh;background:radial-gradient(ellipse,#ff76252b,transparent 68%)}
html.motion-full #party-app .light-violet{opacity:1;animation:party-violet-drift 19s ease-in-out infinite alternate}
html.motion-full #party-app .light-amber{opacity:1;animation:party-amber-drift 23s ease-in-out infinite alternate}
#party-app .party-mote{position:absolute;left:var(--mote-x);bottom:-12px;width:var(--mote-size);height:var(--mote-size);border-radius:50%;background:#d99cff;box-shadow:0 0 10px #c87fff5e;opacity:0;pointer-events:none}
#party-app .party-mote:nth-of-type(2n){background:#ffb36c;box-shadow:0 0 10px #ff9d5350}
html.motion-full #party-app .party-mote{animation:party-mote-rise 19s linear var(--mote-delay) infinite}
#party-app .party-motion-surface{position:relative;overflow:hidden;isolation:isolate}
#party-app .party-surface-light{position:absolute;inset:0;z-index:1;border-radius:inherit;overflow:hidden;pointer-events:none}
#party-app .party-surface-light:before{content:"";position:absolute;top:-30%;bottom:-30%;left:-55%;width:42%;background:linear-gradient(105deg,transparent 10%,#ddadff0a 42%,#fff2d813 50%,transparent 85%);transform:translateX(-170%) skewX(-14deg);opacity:0}
#party-app .party-surface-light:after{content:"";position:absolute;top:0;left:-70%;height:1px;width:65%;background:linear-gradient(90deg,transparent,#ffc18caa,#da9effaa,transparent);opacity:0}
html.motion-full #party-app .party-surface-light:before{animation:party-card-glance 10.5s ease-in-out var(--party-delay,0s) infinite}
html.motion-full #party-app .party-surface-light:after{animation:party-edge-travel 10.5s ease-in-out var(--party-delay,0s) infinite}
html.motion-full #party-app .pc-cover>img{transform-origin:65% 50%;animation:party-photo-breathe 16s ease-in-out infinite alternate}
html.motion-full #party-app .pc-pass-watermark{animation:party-watermark-drift 6.5s ease-in-out infinite alternate}
html.motion-full #party-app .pc-girls .pc-pass-watermark{animation-delay:-3.3s}
html.motion-full #party-app .pc-dj-mark{animation:party-icon-float 4.3s ease-in-out infinite}
html.motion-full #party-app .pc-detail summary:hover .pc-detail-icon svg{animation:party-icon-turn .65s ease}
#party-app .party-equalizer{display:flex;align-items:center;justify-content:center;gap:5px;height:50px;margin:4px auto 20px;pointer-events:none}
#party-app .party-equalizer i{display:block;width:3px;height:var(--bar-height);border-radius:3px;background:linear-gradient(#e4b5ff,#b46fe3 50%,#ffa15f);opacity:.7;transform:scaleY(.45);transform-origin:center}
html.motion-full #party-app .party-equalizer i{animation:party-equalizer-beat 1.25s ease-in-out var(--bar-delay) infinite alternate}
#party-app .vote-empty:has(.party-equalizer)>svg{display:none}
html.motion-full #party-app .desktop-nav button.active{color:#ffac6a;text-shadow:0 0 18px #ff953e35}
html.motion-full #party-app .desktop-nav button.active:after{background:linear-gradient(90deg,#ff893d,#ffba7a,#c282f4);animation:party-nav-glow 3.4s ease-in-out infinite}
#party-app .pc-detail[open] .pc-expand{color:#ffbd86}
#party-app .pc-detail .pc-expand{transition:transform .3s ease,color .3s ease}
#party-app .pc-detail[open] .pc-expand{transform:rotate(45deg)}
#party-app :is(.pc-text-button,.pc-lock-reset,.pc-location-other,.desktop-nav button){position:relative;isolation:isolate}
#party-app :is(.pc-lock-reset,.pc-location-other,.pc-text-button):active{transform:scale(.975)}
html.motion-full #party-app .party-stock-updated{animation:party-stock-pop .5s cubic-bezier(.2,.75,.25,1)}
html.motion-full.motion-ready .reveal-visible{animation-duration:.72s}
@media(hover:hover) and (pointer:fine){
 #party-app .party-motion-surface{transition:transform .28s cubic-bezier(.2,.75,.25,1),border-color .28s ease,box-shadow .28s ease}
 #party-app :is(.pc-pass,.pc-booking-note,.pc-dj-card):hover{transform:translateY(-4px);border-color:#d6a2eb8a;box-shadow:0 16px 35px #0c041c36}
 #party-app .pc-shortcut:hover .pc-shortcut-icon{transform:scale(1.1)}
 #party-app .party-motion-surface:hover>.party-surface-light:after{opacity:.9}
 #party-app .pc-text-button:hover svg{transform:translateX(4px)}
}
@keyframes party-violet-drift{from{transform:translate(0,0) scale(1)}to{transform:translate(31vw,17vh) scale(1.18)}}
@keyframes party-amber-drift{from{transform:translate(0,0) scale(1)}to{transform:translate(-29vw,-13vh) scale(1.12)}}
@keyframes party-mote-rise{0%{opacity:0;transform:translate3d(0,0,0)}15%,70%{opacity:.32}100%{opacity:0;transform:translate3d(30px,-88vh,0)}}
@keyframes party-card-glance{0%,65%{opacity:0;transform:translateX(-170%) skewX(-14deg)}70%{opacity:.85}90%{opacity:.85;transform:translateX(470%) skewX(-14deg)}100%{opacity:0;transform:translateX(470%) skewX(-14deg)}}
@keyframes party-edge-travel{0%,65%{opacity:0;transform:translateX(0)}70%{opacity:.9}94%{opacity:.9;transform:translateX(270%)}100%{opacity:0;transform:translateX(270%)}}
@keyframes party-photo-breathe{from{transform:scale(1.01)}to{transform:scale(1.055)}}
@keyframes party-watermark-drift{from{transform:translateY(3px) rotate(-4deg)}to{transform:translateY(-4px) rotate(2deg)}}
@keyframes party-icon-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}
@keyframes party-icon-turn{50%{transform:rotate(-12deg) scale(1.1)}}
@keyframes party-equalizer-beat{from{transform:scaleY(.35);opacity:.5}to{transform:scaleY(1.05);opacity:1}}
@keyframes party-nav-glow{0%,100%{opacity:.7;box-shadow:0 0 8px #ff914236}50%{opacity:1;box-shadow:0 0 15px #ff91425c}}
@keyframes party-stock-pop{0%{transform:translateY(6px) scale(.95);opacity:.5}55%{transform:translateY(-2px) scale(1.07);opacity:1}100%{transform:translateY(0) scale(1)}}
@media(max-width:760px){#party-app .party-mote:nth-of-type(n+6){display:none}#party-app .party-light{width:100vw;height:65vh}#party-app .party-equalizer{gap:4px;height:43px}}
html.motion-reduced #party-app .party-atmosphere,html.motion-reduced #party-app .party-surface-light{display:none}
html.page-hidden #party-app .party-atmosphere *,html.page-hidden #party-app .party-surface-light:before,html.page-hidden #party-app .party-surface-light:after{animation-play-state:paused!important}
html.motion-reduced #party-app *,html.motion-reduced #party-app *:before,html.motion-reduced #party-app *:after{animation:none!important;transition:none!important}
