.party-fx-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:85;pointer-events:none}.view-board:before{content:"";position:fixed;left:-20%;right:-20%;top:-80%;height:160%;background:conic-gradient(from 0deg at 50% 0%,transparent 0deg,#8255e51a 16deg,transparent 28deg,transparent 95deg,#ddff0011 111deg,transparent 125deg,transparent 215deg,#44dcff12 232deg,transparent 250deg);pointer-events:none;z-index:-1;transform-origin:50% 0;animation:party-spotlights 16s ease-in-out infinite alternate}.view-board[data-party-scene=arcade] .app-header{border-bottom-color:#a867ff88}.view-board[data-party-scene=photo] .app-header{border-bottom-color:#ddff0066}.view-board main>.arcade-scene,.view-board main>.photo-duel{animation:party-scene-enter .65s cubic-bezier(.2,.75,.2,1) both}.view-board .photo-result-card.winner{box-shadow:0 0 36px #ddff0022,8px 8px 0 #9070ff33;animation:party-winner-pop .6s cubic-bezier(.17,.89,.34,1.35) both}.view-board .photo-result-card:nth-child(2){animation-delay:.08s}.view-board .photo-result-card:nth-child(3){animation-delay:.16s}@keyframes party-spotlights{from{transform:rotate(-12deg);opacity:.5}to{transform:rotate(14deg);opacity:1}}@keyframes party-scene-enter{from{opacity:0;transform:translateY(16px) scale(.985);filter:blur(3px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes party-winner-pop{from{transform:scale(.94) rotate(-1deg);opacity:.3}to{transform:scale(1) rotate(0);opacity:1}}

/* The suspense remains three seconds; longer celebration settings extend the
   readable reward rather than stretching the wait for the correct answer. */
.effect-result .show-cue{animation:krawall-verdict-in .65s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(3000ms - var(--cue-age))}
.effect-result .show-wipe{animation:krawall-curtain 3400ms linear both;animation-delay:calc(0ms - var(--cue-age))}
.effect-result .cue-suspense{animation:krawall-suspense 3000ms linear both;animation-delay:calc(0ms - var(--cue-age))}
.effect-result .cue-marquee{animation:krawall-marquee .45s ease both;animation-delay:calc(3000ms - var(--cue-age))}
.effect-victory .show-cue{animation:krawall-verdict-in .9s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(0ms - var(--cue-age))}
.effect-victory .show-wipe{animation:krawall-curtain 6500ms linear both;animation-delay:calc(0ms - var(--cue-age))}
#show-effects.celebration-settled .show-cue{animation:none;top:76px;width:min(92vw,1100px);padding:10px 20px;background:#110c24ef;border:1px solid #ddff0077;box-shadow:0 0 30px #ddff001a;transform:translate(-50%,0);opacity:1;flex-direction:row;gap:18px;align-items:center;justify-content:center}
#show-effects.celebration-settled .cue-headline{font-size:clamp(25px,3vw,48px);line-height:1;max-width:65%;flex-shrink:1;animation:none;transform:none;color:var(--gold)}
#show-effects.celebration-settled .cue-subtitle{font-size:clamp(12px,1.2vw,18px);margin:0;padding:0;background:none;max-width:45%;border:0;color:#f4f0ff}
#show-effects.celebration-settled .cue-kicker,#show-effects.celebration-settled .cue-stamp,#show-effects.celebration-settled .cue-marquee,#show-effects.celebration-settled .cue-suspense{display:none}
.party-celebrating.view-board .answer-card.correct{box-shadow:0 0 25px #ddff0055}
@keyframes krawall-verdict-in{0%{opacity:0;transform:translate(-50%,-50%) scale(2.4) rotate(-8deg)}70%{opacity:1;transform:translate(-50%,-50%) scale(.96) rotate(1deg)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes krawall-curtain{0%{opacity:0}12%,75%{opacity:.96}100%{opacity:0}}
@keyframes krawall-suspense{0%,85%{opacity:1}100%{opacity:0;visibility:hidden}}
@keyframes krawall-marquee{from{opacity:0;transform:translateX(-100%) rotate(-4deg)}to{opacity:1;transform:translateX(0) rotate(-4deg)}}
@media(max-width:560px){#show-effects.celebration-settled .show-cue{top:40px;gap:7px;flex-direction:column;padding:9px 12px}#show-effects.celebration-settled .cue-headline{font-size:26px;max-width:100%}#show-effects.celebration-settled .cue-subtitle{font-size:11px;max-width:100%}}
@media(prefers-reduced-motion:reduce){.party-fx-canvas{display:none}.view-board:before,.view-board main>.arcade-scene,.view-board main>.photo-duel,.view-board .photo-result-card.winner{animation:none!important}#show-effects.effect-result .show-cue,#show-effects.effect-victory .show-cue{opacity:1}.effect-result .cue-suspense{display:none!important}}
