/* Last ten seconds and the result banner (match-end.js). Sits above the battlefield, under modals; never takes clicks. */
#end-countdown,#result-banner{position:fixed;left:50%;transform:translateX(-50%);z-index:40;pointer-events:none;text-align:center;font-family:var(--font-display);letter-spacing:.04em;text-shadow:4px 4px 0 #000,-2px -2px 0 #000}
#end-countdown{top:14%;display:grid;gap:0;line-height:.9}
#end-countdown span{font-size:clamp(18px,3vw,28px);color:#f3f1dc}
#end-countdown b{font-size:clamp(72px,12vw,140px);font-weight:400;color:#ffe55d;animation:end-tick 1s ease-out infinite}
#end-countdown.victory b{color:#ccff34}#end-countdown.defeat b{color:#ff4b9a}
#result-banner{top:32%;width:min(92vw,820px);padding:18px 16px 22px;border-block:4px solid currentColor;background:linear-gradient(90deg,transparent,#0b0d12e8 18%,#0b0d12e8 82%,transparent);animation:banner-in .45s cubic-bezier(.2,1.6,.4,1) both}
#result-banner b{display:block;font-size:clamp(64px,13vw,150px);font-weight:400;line-height:.9}
#result-banner span{display:block;margin-top:6px;font-family:var(--font-stencil);font-size:clamp(13px,2vw,18px);color:#f3f1dc}
#result-banner.victory{color:#ccff34}#result-banner.defeat{color:#ff4b9a}
#end-countdown[hidden],#result-banner[hidden]{display:none}
@keyframes end-tick{0%{transform:scale(1.35)}35%{transform:scale(1)}}
@keyframes banner-in{0%{opacity:0;transform:translateX(-50%) scale(1.8) rotate(-4deg)}100%{opacity:1;transform:translateX(-50%) scale(1) rotate(-2deg)}}
@media(prefers-reduced-motion:reduce){#end-countdown b,#result-banner{animation:none}}
/* Between public rounds: the character screen is open over the match (app.js pickNextRound). */
#next-round-bar{position:fixed;left:50%;bottom:max(14px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;width:max-content;max-width:calc(100vw - 32px);padding:10px 14px;border:2px solid #ff4b9a;background:#0b0d12f2;box-shadow:4px 4px 0 #000;font-family:var(--font-stencil);color:#ccff34;letter-spacing:.05em}
#next-round-bar[hidden]{display:none}
/* Result first (app.js results): the outcome in huge type, your line, FIGHT AGAIN; awards as chips, scoreboard on click. */
#modal .result-first{text-align:center}
#modal .result-first .result-word{display:block;margin:4px 0 2px;font:400 clamp(72px,11vw,132px)/.9 var(--font-display);letter-spacing:.04em;text-shadow:5px 5px 0 #000,-2px -2px 0 #000;transform:rotate(-2deg)}
#modal .result-first.victory .result-word{color:#ccff34}#modal .result-first.defeat .result-word{color:#ff4b9a}
#modal .result-first .result-you{font-size:13px;line-height:1.5}
#modal .result-first .result-mine{margin:6px 0;font:400 clamp(16px,2.4vw,22px) var(--font-display);color:#ccff34}
#modal .result-first .result-mine b{color:#ffe55d}
#modal .result-first .result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:14px 0 10px}
#modal .result-first .result-actions #again{min-height:60px;padding:0 36px;font-size:clamp(20px,3vw,28px)}
#modal .result-first .result-awards{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:6px 0 14px;padding:0;list-style:none}
#modal .result-first .result-awards li{padding:6px 10px;font-size:12px;background:#11161dee;border:2px solid #090c10}
#modal .result-first .result-awards li.you{border-color:#ccff34;box-shadow:0 0 0 2px #090c10}
#modal .result-first .result-awards b{margin-right:4px;font-family:var(--font-display);font-weight:400;color:#ffe55d}
@media(prefers-reduced-motion:reduce){#modal .result-first .result-word{transform:none}}
/* Slim first-death card (app.js): who got you, with what, and that your build survives. */
#hud .respawn .respawn-killer{display:block;margin-top:6px;font:600 13px/1.35 var(--font-body);letter-spacing:0;color:#f3f1dc}
#hud .respawn .respawn-killer b{color:#ff4b9a}
/* Weekly quests (quests-ui.js, behind ?quests=1): Profile panel and match-end ticks. Dark panels, lime progress. */
.weekly-quests{margin:12px 0;padding:10px 12px;background:#0b0d12f0;border:2px solid #090c10;box-shadow:3px 3px 0 #000;color:#f3f1dc}
.weekly-quests h3{margin:0 0 8px;font:400 18px var(--font-display);color:#ccff34;letter-spacing:.04em}
.weekly-quests h3 small{margin-left:6px;font:600 10px var(--font-body);letter-spacing:0;color:#aab6af}
.weekly-quests ul{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.weekly-quests li{position:relative;display:flex;justify-content:space-between;gap:10px;padding:6px 8px 9px;font:600 12px var(--font-body);background:#151a22;border:1px solid #2b3340}
.weekly-quests li small{color:#ff72b1;font-weight:700}
.weekly-quests li b{color:#ffe55d;font-variant-numeric:tabular-nums;white-space:nowrap}
.weekly-quests li i{position:absolute;left:0;bottom:0;height:3px;width:calc(var(--p) * 100%);background:#ccff34}
.weekly-quests li.done{opacity:.65}.weekly-quests li.done b{color:#ccff34}
.weekly-quests .weekly-note{margin:8px 0 0;font-size:11px;color:#aab6af}
#modal .quest-ticks{display:grid;gap:4px;margin:0 auto 12px;padding:0;max-width:420px;list-style:none;text-align:left}
#modal .quest-ticks li{padding:4px 8px;font:600 12px var(--font-body);background:#11161dee;border-left:3px solid #ffe55d}
#modal .quest-ticks li.done{border-left-color:#ccff34;color:#ccff34}
#modal .quest-ticks b{margin-right:4px}
/* Next-mode vote (public rooms): two candidate rounds under the result, the server's tally live on each. */
#modal .next-vote{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin:8px 0 12px}
#modal .next-vote[hidden]{display:none}
#modal .next-vote>span{flex-basis:100%;font:700 11px var(--font-body);letter-spacing:.08em;color:#aab6af}
#modal .next-vote button{display:grid;gap:2px;min-width:200px;padding:8px 14px}
#modal .next-vote button small{font-size:10px;letter-spacing:0;opacity:.8}
#modal .next-vote button[aria-pressed=true]{outline:3px solid #ccff34;outline-offset:2px}
#modal .next-vote em{flex-basis:100%;font-size:10px;font-style:normal;color:#8a958f}
/* Guest save nudge (app.js saveNudge): one dark line under the result actions, dismissible, never over FIGHT AGAIN. */
#modal .save-nudge{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:0 auto 12px;padding:6px 10px;max-width:460px;font:600 12px var(--font-body);color:#f3f1dc;background:#11161d;border:2px solid #ff3ea5}
#modal .save-nudge .save-nudge-go{min-height:44px;padding:0 14px;font:800 13px var(--font-body);color:#0b0d12;background:#ff3ea5;border:2px solid #090c10}
#modal .save-nudge .save-nudge-x{min-width:44px;min-height:44px;padding:0;color:#aab6af;background:none;border:0;font-size:16px}
