/* A celebratory finish, with readable all-player standings instead of a winner-only splash. */
.party-finale{max-width:720px;margin:auto}.party-finale .final-card{position:relative;padding:12px 15px 24px;isolation:isolate;overflow:hidden}.party-finale .clean-game-logo{width:170px;margin:0 auto 6px}.winner-crown{color:#ffff29;font-size:64px;line-height:1;margin:4px 0 12px;filter:drop-shadow(3px 4px 0 #005dff);animation:crown-pop .7s ease-out both}.party-finale .final-card h1{font-size:clamp(36px,9vw,64px);line-height:1.03;margin:15px auto 12px;max-width:100%;overflow-wrap:anywhere}.party-finale .final-card h1>span{display:block}.party-finale .final-card h1>.winner-and{font-size:24px;color:#ff62bc;margin:5px}.party-finale .final-card .eyebrow{font-size:10px;color:#ffff29}.champion-points{display:inline-flex;gap:8px;align-items:center;background:#ffff29;color:#061333!important;transform:rotate(-3deg);padding:8px 18px;border-radius:8px;font-size:12px;font-weight:900}.champion-points strong{font-size:30px;line-height:1}.party-finale .final-cheer{font-size:12px!important;line-height:1.5;margin-top:18px;color:#cedbfa!important}.final-ranking-section{margin-top:8px}.final-ranking-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.final-ranking-heading h2{font-size:18px;letter-spacing:.02em;margin:0;color:#ffff29}.final-ranking-heading>span{font-size:8px;font-weight:800;color:#b7c9eb}.ranked-board{margin:0;padding:0;list-style:none}.ranked-board li{display:grid;grid-template-columns:44px 34px minmax(0,1fr) 56px;gap:10px;align-items:center;padding:14px 12px}.ranked-board .rank{font-size:17px;width:auto;color:#bcd0ff}.ranked-board li.leader .rank{color:#ffff29}.ranked-board .avatar{width:34px;height:34px;flex-basis:34px}.ranked-name{min-width:0;display:flex;gap:4px;flex-direction:column}.ranked-name strong{font-size:16px;overflow-wrap:anywhere;line-height:1.2}.ranked-name small{font-size:8px;letter-spacing:.12em;color:#b7c9eb}.ranked-board .score-num{font-size:27px;text-align:right;line-height:1}.ranked-board .score-num small{display:block;font-size:7px;letter-spacing:.07em;line-height:1.4;margin-top:4px}.tie-note{text-align:center;font-size:10px;color:#b7c9eb;margin:12px 0 6px}.party-finale .end-summary{margin:18px 0 12px}.party-music-controls{display:flex;justify-content:center;gap:8px}.party-music-controls button{min-height:44px;padding:10px 12px;font-size:10px;font-weight:900;border:1px solid #496ca5;background:#112749;color:#dceaff;border-radius:24px}.party-music-controls button:first-child{color:#ffff29}.party-music-note{font-size:9px;color:#9eb7df;text-align:center;line-height:1.6;margin:8px 0 23px}.party-finale .play-again-button{font-size:15px;min-height:62px;animation:play-again-glow 2s ease-in-out 2}.play-again-note{font-size:11px;line-height:1.6;text-align:center;margin:12px 0 0;color:#b7c9eb}.final-sparkles{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.final-sparkles i{position:absolute;left:calc(var(--i)*7%);top:-30px;font-style:normal;font-size:24px;color:#ff62bc;opacity:0;animation:party-confetti 3.5s ease-out both;animation-delay:calc(var(--i)*.07s)}.final-sparkles i:nth-child(3n){color:#ffff29}.final-sparkles i:nth-child(3n+1){color:#2ee9bf}.party-finale .confetti{pointer-events:none}
@keyframes party-confetti{0%{opacity:0;transform:translateY(-20px) rotate(0)}15%{opacity:.8}90%{opacity:.5}100%{opacity:0;transform:translateY(530px) rotate(270deg)}}
@keyframes crown-pop{0%{transform:scale(.3) rotate(-15deg)}65%{transform:scale(1.1) rotate(7deg)}100%{transform:scale(1) rotate(0)}}
@keyframes play-again-glow{50%{box-shadow:0 0 25px #ffff2944}}
@media(max-width:380px){.ranked-board li{grid-template-columns:35px 28px minmax(0,1fr) 44px;gap:7px;padding:13px 9px}.ranked-board .avatar{width:28px;height:28px;font-size:11px}.ranked-board .rank{font-size:14px}.ranked-name strong{font-size:14px}.ranked-board .score-num{font-size:24px}.party-finale .final-card{padding-left:0;padding-right:0}.party-finale .clean-game-logo{width:150px}.party-finale .final-card .eyebrow{font-size:8px}.party-music-controls button{font-size:9px}}
@media(prefers-reduced-motion:reduce){.final-sparkles{display:none}.winner-crown,.party-finale .play-again-button{animation:none!important}}

.party-playback-status{min-height:2.5em;font-size:10px;line-height:1.5;color:#c9dcff;text-align:center;margin:-12px 0 20px;overflow-wrap:anywhere}
.fullscreen-confetti{position:fixed;inset:0;z-index:850;pointer-events:none!important;overflow:hidden;contain:strict}.fullscreen-confetti *{pointer-events:none!important}.fullscreen-confetti i{position:absolute;left:var(--x);top:-25px;width:6px;height:11px;border-radius:1px;background:var(--color);opacity:.78;animation:full-party-fall var(--fall) linear var(--delay) infinite;will-change:transform}.fullscreen-confetti i:nth-child(3n){width:7px;height:7px;border-radius:50%}.fullscreen-confetti i:nth-child(5n){width:4px;height:15px}.fullscreen-confetti i:nth-child(4n){opacity:.45}@keyframes full-party-fall{0%{transform:translate3d(0,-30px,0) rotate(0)}100%{transform:translate3d(var(--drift),calc(100vh + 55px),0) rotate(var(--spin))}}@media(prefers-reduced-motion:reduce){.fullscreen-confetti{display:none!important}.fullscreen-confetti i{animation:none!important}}
.challenge-risk{font-size:12px;line-height:1.6;text-align:center;padding:12px 10px;margin:18px 0 0;background:#ff62bc12;border:1px solid #ff62bc66;border-radius:10px;color:#e6efff}.challenge-risk b{color:#ffb8df}.turn-score-changes{list-style:none;padding:0;margin:18px 0;display:grid;gap:7px}.turn-score-changes li{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#0b2144;border:1px solid #2b4d7c;border-radius:9px;padding:11px 13px;text-align:left;font-size:13px}.turn-score-changes li>span{overflow-wrap:anywhere;min-width:0}.turn-score-changes strong{white-space:nowrap;color:#c6ff72;font-size:19px}.turn-score-changes small{font-size:8px}.turn-score-changes .penalty{border-color:#a94479;background:#3c193a}.turn-score-changes .penalty strong,.ranked-board .score-num.negative-score{color:#ffb0d5}.reveal-card .two-actions small{line-height:1.5}
