/* /video-task.css */
/* «Сними ролик» (video-task.js, owner 2026-10-22): the quiet button «Получи до 7 500 ₽ за это видео. Как?»
 * inside the task card, right under the task text, and the sheet with two ways to be paid.
 * Calm on purpose (owner: it must not look like an ad banner): no shine, no pulse, it takes the
 * card's own ink (currentColor) on a light tint, «Как?» underlined like a link.
 * No emoji: icons from ui-icons.css. With prefers-reduced-motion nothing moves. */

.rp-video-task-cta[hidden] { display: none; }

.rp-video-task-cta {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 10px;
    box-sizing: border-box;
    width: 100%;
    min-height: 48px;
    margin: 16px 0 0;
    padding: 10px 14px;
    border: 1px solid color-mix(in srgb, currentColor 30%, transparent);
    border-radius: 14px;
    background: color-mix(in srgb, currentColor 10%, transparent);
    color: inherit;
    font: inherit;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: normal;
    text-transform: none;
    text-align: left;
    cursor: pointer;
    transition: background .15s ease, transform .1s ease;
    -webkit-tap-highlight-color: transparent;
}
.rp-video-task-cta .rp-icon { flex: none; width: 20px; height: 20px; }
.rp-video-task-cta-how { font-weight: 800; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.rp-video-task-cta:hover { background: color-mix(in srgb, currentColor 16%, transparent); }
.rp-video-task-cta:active { transform: scale(.98); }
.rp-video-task-cta:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

.rp-video-task-card {
    box-shadow: 0 0 0 2px rgba(255, 255, 255, .45), 0 18px 40px rgba(0, 0, 0, .35) !important;
}
/* The video task is not a card of the deck: no thumbs and no report flag on it. */
.rp-video-task-card .rp-card-vote,
.rp-video-task-card .rp-report-flag { visibility: hidden; }

/* The sheet: RoomPlay core surfaces, like «Час Premium за репост» (share-pass.js). */
.rp-video-task-overlay {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    background: rgba(10, 15, 31, .72);
    opacity: 0;
    transition: opacity .2s ease;
}
.rp-video-task-overlay.visible { opacity: 1; }
.rp-video-task-sheet {
    position: relative;
    box-sizing: border-box;
    width: 100%;
    max-width: 480px;
    max-height: 100%;
    overflow-y: auto;
    padding: 24px 16px calc(20px + env(safe-area-inset-bottom));
    border-radius: 24px 24px 0 0;
    background: #1a2140;
    color: #fff;
    font-family: inherit;
    text-align: center;
    transform: translateY(24px);
    transition: transform .2s ease;
}
.rp-video-task-overlay.visible .rp-video-task-sheet { transform: none; }
.rp-video-task-sheet:focus { outline: none; }
.rp-video-task-close {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: inherit;
    font-size: 20px;
    opacity: .75;
    cursor: pointer;
}
.rp-video-task-title { margin: 8px 40px 8px; font-size: 22px; font-weight: 800; line-height: 1.25; }
.rp-video-task-lead { margin: 0 0 16px; font-size: 16px; line-height: 1.45; color: #c9cfe6; }
.rp-video-task-option {
    margin: 0 0 12px;
    padding: 18px 16px 16px;
    border-radius: 20px;
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .12);
    text-align: left;
}
.rp-video-task-option-icon { display: block; width: 28px; height: 28px; margin: 0 0 8px; }
.rp-video-task-option--premium .rp-video-task-option-icon { color: #ffd166; }
.rp-video-task-option--money .rp-video-task-option-icon { color: #6ee7b7; }
.rp-video-task-option-title { margin: 0 0 6px; font-size: 18px; font-weight: 800; line-height: 1.25; }
.rp-video-task-option-text { margin: 0 0 14px; font-size: 15px; line-height: 1.45; color: #c9cfe6; }
.rp-video-task-option-cta {
    display: block;
    width: 100%;
    min-height: 48px;
    padding: 10px 16px;
    border: 0;
    border-radius: 30px;
    background: var(--settings-accent, #7c3aed);
    color: var(--rp-video-cta-ink, #fff);
    font: inherit;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
}
.rp-video-task-option--money .rp-video-task-option-cta {
    background: transparent;
    color: #fff;
    box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .35);
}
.rp-video-task-close:focus-visible, .rp-video-task-option-cta:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
    .rp-video-task-cta { transition: none; }
    .rp-video-task-overlay, .rp-video-task-sheet { transition: none; }
}
/* /content-report.css */
/*
 * Content report sheet (client/assets/js/content-report.js) and the small flag button
 * games put on their card. Shared component: games only set the --rp-report-* tokens.
 * Defaults sit in :where(:root) (zero specificity), so a game theme's :root tokens win whether
 * its stylesheet loads before or after this one.
 */
:where(:root) {
    --rp-report-surface: #1f2438;
    --rp-report-text: #ffffff;
    --rp-report-muted: #a7aec8;
    --rp-report-line: rgba(255, 255, 255, 0.14);
    --rp-report-chip: rgba(255, 255, 255, 0.08);
    --rp-report-accent: #ff3b6f;
    --rp-report-accent-ink: #ffffff;
    --rp-report-error: var(--rp-wrong, #ff8a9a);
    --rp-report-radius: 24px;
    --rp-report-button-radius: 30px;
    --rp-report-flag: rgba(255, 255, 255, 0.55);
}

/* Flag button on the card: 44 px hit area, quiet until pressed. */
.rp-report-flag {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--rp-report-flag);
    font-size: 18px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: color 150ms ease, background-color 150ms ease, transform 150ms ease;
}
.rp-report-flag:active { transform: scale(0.9); background: rgba(255, 255, 255, 0.08); }
.rp-report-flag:focus-visible { outline: 2px solid var(--rp-report-accent); outline-offset: 2px; }
@media (hover: hover) { .rp-report-flag:hover { color: var(--rp-report-text); } }

.rp-report {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    pointer-events: none;
}
.rp-report.is-open { pointer-events: auto; }
.rp-report__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    opacity: 0;
    transition: opacity 200ms ease;
}
.rp-report.is-open .rp-report__backdrop { opacity: 1; }

.rp-report__sheet {
    position: relative;
    width: 100%;
    max-width: 440px;
    max-height: calc(100dvh - 24px);
    overflow-y: auto;
    padding: 24px 16px calc(16px + env(safe-area-inset-bottom, 0px));
    border-radius: var(--rp-report-radius) var(--rp-report-radius) 0 0;
    background: var(--rp-report-surface);
    color: var(--rp-report-text);
    font-family: inherit;
    transform: translateY(100%);
    transition: transform 240ms cubic-bezier(.2, .9, .3, 1);
}
.rp-report.is-open .rp-report__sheet { transform: none; }
@media (min-width: 600px) and (min-height: 560px) {
    .rp-report { align-items: center; padding: 24px; }
    .rp-report__sheet { border-radius: var(--rp-report-radius); padding-bottom: 20px; }
}

.rp-report__title {
    margin: 0 0 8px;
    font-family: Unbounded, Manrope, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: -0.035em;
    line-height: 1.2;
    text-wrap: balance;
}
.rp-report__card {
    margin: 0 0 16px;
    padding: 8px 12px;
    border-left: 3px solid var(--rp-report-accent);
    border-radius: 4px;
    background: var(--rp-report-chip);
    color: var(--rp-report-muted);
    font-size: 15px;
    line-height: 1.4;
    overflow-wrap: anywhere;
}
.rp-report__reasons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 12px;
}
.rp-report__chip {
    min-height: 44px;
    padding: 8px 16px;
    border: 1px solid var(--rp-report-line);
    border-radius: 999px;
    background: var(--rp-report-chip);
    color: var(--rp-report-text);
    font: inherit;
    font-size: 16px;
    cursor: pointer;
    transition: background-color 150ms ease, border-color 150ms ease, transform 150ms ease;
}
.rp-report__chip:active { transform: scale(0.96); }
.rp-report__chip[aria-pressed="true"] {
    border-color: var(--rp-report-accent);
    background: var(--rp-report-accent);
    color: var(--rp-report-accent-ink);
}
.rp-report__comment {
    display: block;
    width: 100%;
    min-height: 64px;
    padding: 12px;
    border: 1px solid var(--rp-report-line);
    border-radius: 16px;
    background: transparent;
    color: var(--rp-report-text);
    font: inherit;
    font-size: 16px;
    resize: vertical;
    box-sizing: border-box;
}
.rp-report__comment::placeholder { color: var(--rp-report-muted); opacity: 1; }
.rp-report__status {
    min-height: 20px;
    margin: 8px 0;
    color: var(--rp-report-error);
    font-size: 14px;
}
.rp-report__actions {
    display: flex;
    gap: 8px;
}
.rp-report__button {
    flex: 1;
    min-height: 48px;
    padding: 12px 16px;
    border: 1px solid transparent;
    border-radius: var(--rp-report-button-radius);
    font: inherit;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 150ms ease, transform 150ms ease;
}
.rp-report__button:active:not(:disabled) { transform: scale(0.97); }
.rp-report__button--primary { background: var(--rp-report-accent); color: var(--rp-report-accent-ink); }
.rp-report__button--secondary { border-color: var(--rp-report-line); background: transparent; color: var(--rp-report-text); }
.rp-report__button:disabled { opacity: 0.45; cursor: default; }
.rp-report__chip:focus-visible,
.rp-report__button:focus-visible,
.rp-report__comment:focus-visible { outline: 2px solid var(--rp-report-accent); outline-offset: 2px; }

.rp-report__sheet.is-done {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding-top: 32px;
    text-align: center;
}
.rp-report__sheet.is-done .rp-report__button { flex: none; width: 100%; }
.rp-report__done-mark {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--rp-report-accent);
    position: relative;
}
.rp-report__done-mark::after {
    content: "";
    position: absolute;
    inset: 14px;
    background: var(--rp-report-accent-ink);
    -webkit-mask: var(--rp-icon-check, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")) center / contain no-repeat;
    mask: var(--rp-icon-check, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")) center / contain no-repeat;
}
.rp-report__done-text { margin: 0; font-size: 17px; line-height: 1.4; }

@media (prefers-reduced-motion: reduce) {
    .rp-report__backdrop,
    .rp-report__sheet,
    .rp-report-flag,
    .rp-report__chip,
    .rp-report__button { transition: none; }
}

/* Like / dislike under the card (ContentReport.attachVotes): quiet thumbs, filled when chosen. */
.rp-card-vote[hidden] { display: none; }
.rp-card-vote {
    display: flex;
    justify-content: center;
    gap: 6px;
}
.rp-card-vote__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--rp-report-flag);
    font-size: 20px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: color 150ms ease, background-color 150ms ease, transform 150ms ease;
}
.rp-card-vote__btn--dislike .rp-icon { transform: rotate(180deg); }
.rp-card-vote__btn--report { margin-left: 6px; color: var(--rp-report-flag); font-size: 18px; }
.rp-card-vote__btn[aria-pressed="true"] { color: var(--rp-report-accent); }
.rp-card-vote__btn:active { transform: scale(0.88); background: rgba(255, 255, 255, 0.08); }
.rp-card-vote__btn:focus-visible { outline: 2px solid var(--rp-report-accent); outline-offset: 2px; }
@media (hover: hover) { .rp-card-vote__btn:hover:not([aria-pressed="true"]) { color: var(--rp-report-text); } }
/* Thumbs + flag as the last row inside a content card (word, task, location): one look in every game.
   The game sets --rp-report-flag on its card to a muted tone of the card's ink (light cards need a dark one). */
.rp-card-vote--in-card { margin: 14px -8px -14px; }
.rp-card-vote--in-card .rp-card-vote__btn--report { margin-left: 0; }
@media (prefers-reduced-motion: no-preference) {
    .rp-card-vote__btn[aria-pressed="true"] .rp-icon { animation: rp-card-vote-pop 260ms ease-out; }
    .rp-card-vote__btn--dislike[aria-pressed="true"] .rp-icon { animation-name: rp-card-vote-pop-down; }
}
@keyframes rp-card-vote-pop { 0% { transform: scale(0.7); } 60% { transform: scale(1.18); } 100% { transform: scale(1); } }
@keyframes rp-card-vote-pop-down { 0% { transform: rotate(180deg) scale(0.7); } 60% { transform: rotate(180deg) scale(1.18); } 100% { transform: rotate(180deg) scale(1); } }
/* /post-game.css */
.quiz-post-game {
    width: 100%;
    display: grid;
    gap: 14px;
    margin: 4px 0 18px;
}

.qpg-card {
    width: 100%;
    padding: 18px;
    border: 1px solid rgba(139, 92, 246, 0.28);
    border-radius: 20px;
    background: rgba(26, 33, 64, 0.82);
    text-align: left;
}

.qpg-flow-screen {
    display: grid;
    gap: 14px;
}

.qpg-flow-screen[hidden] {
    display: none;
}

.qpg-flow-title {
    margin: 0;
    color: var(--text-primary);
    font-size: 20px;
    line-height: 1.25;
}

.qpg-flow-next {
    width: 100%;
    min-height: 52px;
    padding: 12px 18px;
    border: 0;
    border-radius: 16px;
    background: #ff3b6f;
    color: #fff;
    font: inherit;
    font-size: 17px;
    font-weight: 800;
    cursor: pointer;
}

.qpg-flow-next:active {
    transform: translateY(1px);
}

.qpg-recap {
    overflow: hidden;
    background:
        radial-gradient(circle at 92% 6%, rgba(255, 59, 111, 0.19), transparent 38%),
        linear-gradient(145deg, rgba(99, 102, 241, 0.20), rgba(26, 33, 64, 0.90));
}

.qpg-kicker {
    display: block;
    margin-bottom: 7px;
    color: #f9a8d4;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}

.qpg-recap-title,
.qpg-section-title {
    margin: 0;
    color: var(--text-primary);
    font-size: 20px;
    line-height: 1.25;
}

.qpg-recap-copy,
.qpg-section-hint {
    margin: 7px 0 14px;
    color: #aeb7d8;
    font-size: 14px;
    line-height: 1.45;
}

.qpg-conversation {
    display: grid;
    gap: 10px;
    margin-bottom: 15px;
}

.qpg-message {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    animation: qpg-message-in 360ms ease both;
}

.qpg-message[hidden] {
    display: none;
}

/* Awards: a title chip and the fact it is for, in the third person. */
.qpg-award {
    align-items: center;
}

.qpg-award-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 2px 8px;
}

.qpg-award-title {
    color: #fff;
    font-size: 15px;
    font-weight: 800;
    line-height: 1.25;
}

.qpg-award-title[hidden] {
    display: none;
}

.qpg-award .qpg-message-name {
    color: var(--onboarding-accent, #c4b5fd);
    font-size: 12px;
    font-weight: 700;
}

.qpg-award-text {
    color: rgba(255, 255, 255, .72);
    font-size: 13px;
    line-height: 1.35;
}

/* The award is revealed: the row pops in. */
.qpg-message-bubble--sent {
    animation: qpg-bubble-sent 280ms cubic-bezier(.3, 1.4, .5, 1) both;
    transform-origin: 0 0;
}

.qpg-message-avatar {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    overflow: hidden;
    border-radius: 50%;
    background: linear-gradient(135deg, #8b5cf6, #ff3b6f);
    color: #fff;
    font-size: 16px;
    font-weight: 800;
}

.qpg-message-avatar:has(img) {
    background: rgba(255, 255, 255, .08);
}

/* Same framing as the leaderboard avatars, so a player looks identical in both. */
.qpg-message-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.qpg-message-body {
    min-width: 0;
    display: grid;
    gap: 4px;
}

.qpg-message-name {
    color: #c4b5fd;
    font-size: 12px;
}

.qpg-message-bubble {
    position: relative;
    display: inline-block;
    padding: 10px 12px;
    border-radius: 4px 14px 14px 14px;
    background: rgba(255, 255, 255, 0.10);
    color: #fff;
    font-size: 14px;
    line-height: 1.35;
}

.qpg-share-button,
.qpg-secondary-button {
    width: 100%;
    min-height: 48px;
    padding: 10px 16px;
    border: 0;
    border-radius: 14px;
    font: inherit;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
}

.qpg-share-button {
    border: 1px solid rgba(167, 139, 250, 0.55);
    background: rgba(139, 92, 246, 0.13);
    color: #ddd6fe;
}

.qpg-share-button:disabled,
.qpg-secondary-button:disabled {
    cursor: wait;
    opacity: 0.65;
}

.qpg-stars {
    display: grid;
    grid-template-columns: repeat(5, minmax(44px, 1fr));
    gap: 5px;
}

.qpg-star {
    min-width: 44px;
    min-height: 48px;
    border: 0;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.07);
    color: #59617f;
    font-size: 29px;
    line-height: 1;
    cursor: pointer;
}

.qpg-star.selected {
    color: #fbbf24;
    background: rgba(251, 191, 36, 0.12);
}

.qpg-feedback {
    margin-top: 15px;
}

.qpg-feedback[hidden] {
    display: none;
}

.qpg-feedback-title,
.qpg-rating-message,
.qpg-status-loading,
.qpg-access-unavailable {
    margin: 0 0 10px;
    color: #aeb7d8;
    font-size: 13px;
    line-height: 1.4;
}

.qpg-rating-message {
    margin: 11px 0 0;
    color: #c4b5fd;
}

.qpg-rating-modal {
    position: fixed;
    z-index: 100;
    inset: 0;
    display: grid;
    place-items: center;
    padding: max(18px, env(safe-area-inset-top, 0px)) 18px max(18px, env(safe-area-inset-bottom, 0px));
    background: rgba(7, 10, 25, .76);
    backdrop-filter: blur(8px);
}

.qpg-rating-modal[hidden] {
    display: none;
}

.qpg-rating-dialog {
    position: relative;
    width: min(100%, 390px);
    max-height: calc(100dvh - 36px);
    overflow: auto;
    border-radius: 22px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .48);
}

.qpg-rating-dialog .qpg-rating {
    margin: 0;
    padding-top: 54px;
}

.qpg-rating-modal-close {
    position: absolute;
    z-index: 1;
    top: 7px;
    right: 7px;
    display: grid;
    width: 48px;
    height: 48px;
    place-items: center;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: #aeb7d8;
    font: inherit;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
}

.qpg-rating-success {
    min-height: 210px;
    margin: 0;
    padding: 32px 24px;
    display: grid;
    place-items: center;
    border-radius: 22px;
    background: rgba(26, 33, 64, .98);
    color: #fff;
    font-size: 20px;
    font-weight: 800;
    text-align: center;
}

.qpg-rating-success[hidden] {
    display: none;
}

.qpg-reasons {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-bottom: 10px;
}

.qpg-reason {
    min-height: 48px;
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.05);
    color: #dbe1ff;
    font: inherit;
    font-size: 13px;
    cursor: pointer;
}

.qpg-reason.selected {
    border-color: #8b5cf6;
    background: rgba(139, 92, 246, 0.20);
    color: #fff;
}

.qpg-comment {
    width: 100%;
    margin-bottom: 10px;
    padding: 12px;
    resize: vertical;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 12px;
    outline: none;
    background: rgba(8, 12, 30, 0.55);
    color: #fff;
    font: inherit;
    font-size: 16px;
    line-height: 1.4;
}

.qpg-comment:focus {
    border-color: #8b5cf6;
}

.qpg-secondary-button {
    border: 1px solid rgba(139, 92, 246, 0.55);
    background: rgba(139, 92, 246, 0.13);
    color: #ddd6fe;
}

.qpg-access-line {
    display: flex;
    align-items: center;
    gap: 12px;
}

.qpg-access-icon {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: 15px;
    background: linear-gradient(135deg, #7c3aed, #ff3b6f);
    color: #fff;
    font-size: 20px;
    font-weight: 900;
}

.qpg-access-copy {
    min-width: 0;
    display: grid;
    gap: 3px;
}

.qpg-access-copy strong {
    color: #fff;
    font-size: 14px;
}

.qpg-access-copy span {
    color: #aeb7d8;
    font-size: 12px;
    line-height: 1.35;
}

.qpg-access-paywall {
    width: 100%;
    min-height: 48px;
    margin-top: 14px;
    border: 1px solid rgba(167, 139, 250, 0.55);
    border-radius: 14px;
    background: rgba(139, 92, 246, 0.13);
    color: #ddd6fe;
    font: inherit;
    font-size: 14px;
    font-weight: 800;
    cursor: pointer;
}

.qpg-replay-packs {
    display: grid;
    gap: 12px;
}

.qpg-replay-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.qpg-replay-pack {
    position: relative;
    min-width: 0;
    min-height: 48px;
    padding: 0;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 16px;
    background: #1a2140;
    color: #fff;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: transform 180ms ease, border-color 180ms ease;
}

.qpg-replay-pack.selected {
    border-color: var(--game-accent, #ff3b6f);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--game-accent, #ff3b6f) 34%, transparent);
}

.qpg-replay-pack:not(:disabled):active {
    transform: scale(.97);
}

.qpg-replay-pack:disabled {
    cursor: default;
    opacity: .68;
}

.qpg-replay-art {
    position: relative;
    display: block;
    aspect-ratio: 1;
    overflow: hidden;
    background: #0d1329;
}

.qpg-replay-art > img:first-child {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}

.qpg-replay-pack.locked .qpg-replay-art > img:first-child {
    filter: none;
}

/* Same as the pack screens: flat covers stay in full colour and a small flat
   lock sits in a corner (top-left here, the check mark owns top-right). */
.qpg-replay-lock {
    position: absolute;
    top: 8px;
    left: 8px;
    width: 30px;
    height: 30px;
    object-fit: contain;
    filter: drop-shadow(0 2px 6px rgba(23, 25, 31, .35));
}

.qpg-replay-check {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: 2px solid rgba(255, 255, 255, .9);
    border-radius: 50%;
    background: var(--game-accent, #ff3b6f);
    color: #fff;
    font-size: 16px;
    font-weight: 900;
    line-height: 1;
    opacity: 0;
    transform: scale(.75);
    transition: opacity 140ms ease, transform 140ms ease;
}

.qpg-replay-pack.selected .qpg-replay-check {
    opacity: 1;
    transform: scale(1);
}

.qpg-replay-copy {
    display: grid;
    gap: 2px;
    padding: 10px 11px 12px;
}

.qpg-replay-copy strong {
    font-size: 14px;
    line-height: 1.2;
    overflow-wrap: anywhere;
}

.qpg-replay-copy small {
    color: #aeb7d8;
    font-size: 12px;
}

.qpg-replay-pack.locked .qpg-replay-copy small {
    color: #fbbf24;
    font-weight: 800;
}

.qpg-replay-continue {
    width: 100%;
    min-height: 52px;
    padding: 12px 18px;
    border: 0;
    border-radius: 16px;
    background: var(--game-accent, #ff3b6f);
    color: #fff;
    font: inherit;
    font-size: 17px;
    font-weight: 800;
    cursor: pointer;
}

.qpg-replay-continue:disabled {
    background: #59617f;
    cursor: default;
    opacity: .65;
}

/* «Сыграть ещё раз с набором «…»»: the pack name may need a second line. */
.qpg-replay-same {
    line-height: 1.2;
    white-space: normal;
    overflow-wrap: anywhere;
}

/* The packs just played, above «Сыграть ещё раз с набором «…»»: covers, name, size. */
.qpg-replay-played {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.qpg-replay-played-covers {
    display: flex;
    flex: 0 0 auto;
}

.qpg-replay-played-covers img {
    width: 64px;
    height: 64px;
    display: block;
    border: 2px solid var(--game-accent, #ff3b6f);
    border-radius: 14px;
    background: #0d1329;
    object-fit: cover;
}

.qpg-replay-played-covers img + img {
    margin-left: -26px;
}

.qpg-replay-played-copy {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.qpg-replay-played-copy strong {
    overflow: hidden;
    font-size: 16px;
    line-height: 1.2;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.qpg-replay-played-copy small {
    color: var(--text-secondary, #aeb7d8);
    font-size: 13px;
}

/* A mode the host has not tried (Квиз «ИИ-викторина»): the played-packs row and its own button, framed apart from the replay below. */
.qpg-replay-offer {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 2px solid var(--game-accent, #ff3b6f);
    border-radius: 18px;
}

.qpg-replay-offer-badge {
    justify-self: start;
    margin: 2px 0;
    padding: 3px 10px;
    border-radius: 999px;
    background: var(--game-accent, #ff3b6f);
    color: #fff;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.2;
}

/* A free player: Premium covers and three 18+ cards of the game, as on the paywall (client/payment/style.css .paywall-samples). */
.qpg-replay-preview {
    display: grid;
    gap: 8px;
    min-width: 0;
}

.qpg-replay-preview-covers {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}

.qpg-replay-preview-cover {
    position: relative;
    display: grid;
    gap: 3px;
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: transform 160ms ease;
}

.qpg-replay-preview-cover:active {
    transform: scale(.96);
}

.qpg-replay-preview-cover > img:first-child {
    width: 100%;
    aspect-ratio: 1;
    display: block;
    box-sizing: border-box;
    border: 2px solid transparent;
    border-radius: 12px;
    background: #0d1329;
    object-fit: cover;
}

.qpg-replay-preview-cover.selected > img:first-child {
    border-color: var(--game-accent, #ff3b6f);
}

.qpg-replay-preview-cover .qpg-replay-check {
    top: 5px;
    right: 5px;
    width: 22px;
    height: 22px;
    font-size: 13px;
}

.qpg-replay-preview-cover.selected .qpg-replay-check {
    opacity: 1;
    transform: scale(1);
}

.qpg-replay-preview-cover .qpg-replay-lock {
    top: 5px;
    left: 5px;
    width: 22px;
    height: 22px;
}

.qpg-replay-preview-cover small {
    overflow: hidden;
    font-size: 11px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qpg-replay-samples {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.qpg-replay-samples--edges {
    -webkit-mask-image: linear-gradient(to bottom, #000 0, #000 18%, #000 88%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 0, #000 18%, #000 88%, transparent 100%);
}

.qpg-replay-samples-head {
    margin: 0 0 2px 2px;
    overflow: hidden;
    font-size: 12px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qpg-replay-sample {
    overflow: hidden;
    padding: 4px 10px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 8px;
    background: rgba(255, 255, 255, .07);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qpg-replay-sample--edge {
    max-height: 11px;
    filter: blur(2.5px);
}

/* «Попробовать новые наборы» / «Выбрать другие наборы»: secondary, opens the pack grid. */
.qpg-replay-other {
    width: 100%;
    min-height: 48px;
    padding: 10px 16px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 16px;
    background: transparent;
    color: #fff;
    font: inherit;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
}

.qpg-replay-other:active {
    transform: translateY(1px);
}

/* «Выбрать другие наборы» under the free replay: a quiet link to the whole pack grid. */
.qpg-replay-link {
    justify-self: center;
    min-height: 36px;
    padding: 6px 12px;
    border: 0;
    background: transparent;
    color: var(--text-secondary, #aeb7d8);
    font: inherit;
    font-size: 14px;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    cursor: pointer;
}

/* Guests see the host's packs but can't pick or start: one quiet line says who does. */
.qpg-replay-guest-note {
    margin: 4px 0 0;
    color: var(--text-secondary, #8892b0);
    font-size: 14px;
    font-weight: 600;
    text-align: center;
}

.qpg-replay-continue:not(:disabled):active {
    transform: translateY(1px);
}

@media (hover: hover) {
    .qpg-replay-pack:not(:disabled):hover {
        transform: translateY(-2px);
        border-color: rgba(255, 255, 255, .28);
    }
}

.qpg-recommendations {
    display: grid;
    gap: 8px;
}

.qpg-game-card {
    min-height: 60px;
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 9px 10px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.06);
    color: #fff;
    text-decoration: none;
}

.qpg-game-icon {
    width: 40px;
    height: 40px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: 12px;
    background: rgba(124, 58, 237, 0.18);
    font-size: 22px;
}

.qpg-game-copy {
    min-width: 0;
    display: grid;
    gap: 2px;
    flex: 1;
}

.qpg-game-copy strong {
    font-size: 14px;
}

.qpg-game-copy small {
    overflow: hidden;
    color: #aeb7d8;
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qpg-game-arrow {
    color: #a78bfa;
    font-size: 25px;
}

.qpg-recommendations--catalog {
    gap: 12px;
}

.qpg-game-card--catalog {
    position: relative;
    min-height: 118px;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0;
    padding: 14px;
    border-radius: 16px;
    background: #1a2140;
    transition: transform 180ms ease, background 180ms ease;
}

.qpg-game-card--catalog .qpg-game-image {
    width: 76px;
    height: 76px;
    margin-right: 14px;
    overflow: hidden;
    flex: 0 0 auto;
    border-radius: 13px;
}

.qpg-game-card--catalog .qpg-game-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.qpg-game-card--catalog .qpg-game-copy {
    padding-top: 2px;
}

.qpg-game-card--catalog .qpg-game-copy strong {
    color: #ff3b6f;
    font-size: 16px;
    line-height: 1.2;
    letter-spacing: .02em;
    text-transform: uppercase;
}

.qpg-game-card--catalog .qpg-game-copy small {
    margin-top: 6px;
    color: #8892b0;
    font-size: 13px;
    line-height: 1.35;
    white-space: normal;
}

.qpg-game-tags {
    width: 100%;
    display: flex;
    gap: 6px;
    padding-left: 90px;
    margin-top: -18px;
}

.qpg-game-tags span {
    padding: 3px 7px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 12px;
    background: rgba(255, 255, 255, .08);
    color: #8892b0;
    font-size: 10px;
    font-weight: 600;
    white-space: nowrap;
}

@media (hover: hover) {
    .qpg-game-card--catalog:hover {
        transform: translateX(4px);
        background: #252b4a;
    }
}

.qpg-game-card--catalog:active {
    transform: scale(.98);
}

@keyframes qpg-bubble-sent {
    from { opacity: .4; transform: scale(.86); }
    to { opacity: 1; transform: scale(1); }
}

@keyframes qpg-message-in {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .qpg-message, .qpg-message-bubble--sent { animation: none; }
}

@media (max-width: 360px) {
    .qpg-card { padding: 15px; }
    .qpg-stars { gap: 3px; }
    .qpg-star { padding: 0; font-size: 25px; }
    .qpg-game-copy small { white-space: normal; }
}

/* Only with room for two columns, as in game-end.css. */
@media (orientation: landscape) and (max-height: 560px) and (min-width: 600px) {
    .quiz-post-game { grid-template-columns: 1fr 1fr; }
    .qpg-recap,
    .qpg-more-games { grid-column: 1 / -1; }
}

/* A guest tapped a similar game: the note «Игру выбирает хост» pulses once. */
.qpg-recommendations-guest-note { margin-top: 10px; }
.qpg-guest-note-flash { animation: qpg-guest-note-flash 600ms ease both; }
@keyframes qpg-guest-note-flash {
    0% { transform: scale(1); }
    35% { transform: scale(1.06); color: var(--text-primary, #fff); }
    100% { transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) { .qpg-guest-note-flash { animation: none; } }
.qpg-game-card[aria-disabled="true"] { cursor: default; }

/* Trustpilot review invite after a rating (shared/client/game-end/review-invite.ts). */
.qpg-review-invite {
    display: grid;
    gap: 10px;
    text-align: center;
}

.qpg-rating-dialog .qpg-review-invite {
    margin: 0;
    padding-top: 54px;
}

.qpg-review-invite--inline {
    flex-basis: 100%;
    margin-top: 12px;
    padding: 14px 0 0;
    border: 0;
    border-top: 1px solid rgba(139, 92, 246, 0.28);
    border-radius: 0;
    background: transparent;
}

.qpg-review-invite-text {
    margin: 0;
    color: #aeb7d8;
    font-size: 14px;
    line-height: 1.4;
}

.qpg-review-invite-link {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    text-decoration: none;
}

.qpg-review-invite-later {
    min-height: 44px;
    padding: 8px 16px;
    border: 0;
    background: transparent;
    color: #aeb7d8;
    font: inherit;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
}

/* The room's votes for the next game (a guest's tap on a card, «Предложить» on pause): «Голоса:» with
   the voters as «Аватарка с именем» chips under the card, the guest's own vote outlined. */
.qpg-game-voters {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 6px;
    margin-top: 8px;
    color: var(--accent-text, #ff3b6f);
    font-size: 12px;
    font-weight: 700;
}
.qpg-game-card:has(.qpg-game-voters) { flex-wrap: wrap; }
.qpg-game-card--catalog .qpg-game-voters { padding-left: 90px; }
.qpg-game-voters-chips { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; color: var(--text-primary, #fff); }
.qpg-game-card--voted {
    box-shadow: inset 0 0 0 2px var(--accent-text, #ff3b6f);
}
/* /game-end.css */
/*
 * Shared game-end screen («Игра окончена» → «Что дальше?»): hero, results board,
 * AI recap, replay packs, similar games and the rating, on top of post-game.css.
 * Markup: .template-app > .dashboard[data-share-root] > .dashboard-hero,
 * .leaderboard-card, #post-game, .catalog-link (see client/mini-games/game-template).
 * Colours come from theme tokens: a game sets body[data-theme="<game>"] (or the
 * .rp-game-end layer from shared/client/game-end/screen.ts carries it) while the
 * screen is shown and gets its palette (COMMON/roomplay-palettes.html), fonts and
 * button shape below. Game Template is the reference page; Never Have I Ever
 * (online) is the first real game on it.
 */
/* Full-screen layer (shared/client/game-end/screen.ts) that opens this screen on top of any
   game. It carries the Game Template's default tokens, so a game without a theme block
   below still gets a readable screen. */
.rp-game-end {
  --bg-primary: #0d1329; --bg-end: #0a0f1f; --bg-secondary: #1a2140; --bg-card: #252b4a;
  --accent-pink: #ff3b6f; --accent-text: var(--accent-pink); --on-accent: #fff;
  --text-primary: #fff; --text-secondary: #8892b0;
  --game-end-primary: #ff3b6f; --game-end-secondary: #ffc93c;
  --line: rgba(255, 255, 255, .14); --row-hi: rgba(255, 59, 111, .15); --recap-tint: rgba(255, 59, 111, .14);
  --star: #fbbf24; --star-off: #59617f;
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;
  --font-display: var(--font-body);
  --btn-radius: 30px; --btn-height: 56px; --btn-weight: 600;
  position: fixed;
  /* Above the game's screens, below its confirm dialog (1000), toasts and the paywall. */
  z-index: 990;
  inset: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  background: linear-gradient(180deg, var(--bg-primary) 0%, var(--bg-end) 100%);
  color: var(--text-primary);
  font-family: var(--font-body);
  text-align: left;
  -webkit-overflow-scrolling: touch;
}
.rp-game-end, .rp-game-end * { box-sizing: border-box; }
.rp-game-end[hidden], .rp-game-end [hidden] { display: none !important; }
html.rp-game-end-open, html.rp-game-end-open body { overflow: hidden; }
.rp-game-end .template-app { margin: 0 auto; }
.rp-game-end h1, .rp-game-end h2, .rp-game-end p { color: inherit; text-shadow: none; }
/* Games style .winner-icon, h1 and buttons for their own screens; the layer resets what leaks in
   (Alias and «Нарисуй и угадай» draw their mascot into .winner-icon). */
.rp-game-end .winner-icon {
  width: auto; height: auto; margin: 14px auto 4px; padding: 0;
  background: none; font-size: 48px; line-height: 1; text-align: center; animation: none;
}
.rp-game-end .winner-icon::before, .rp-game-end .winner-icon::after { content: none; }
.rp-game-end .dashboard h1 { letter-spacing: normal; text-transform: none; }
@media (max-width: 360px) { .rp-game-end .winner-icon { font-size: 60px; } }
.rp-game-end-back {
  position: absolute;
  z-index: 5;
  top: calc(18px + env(safe-area-inset-top, 0px));
  left: 16px;
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
  color: var(--text-primary);
  font: inherit;
  font-size: 26px;
  cursor: pointer;
}
.rp-game-end-back--label { width: auto; padding: 0 12px; font-size: 16px; font-weight: 700; white-space: nowrap; }
/* «Итоги игры»: brings the layer back over a reveal screen (roles, board). It is the first child of
   that screen, in its flow, so it covers nothing; same tokens via data-theme. */
.rp-game-end-reopen {
  position: relative;
  z-index: 2;
  display: block;
  flex: 0 0 auto;
  align-self: center;
  min-height: 40px;
  margin: 0 auto 12px;
  padding: 0 18px;
  border: 0;
  border-radius: 999px;
  background: var(--accent-pink, #ff3b6f);
  color: var(--on-accent, #fff);
  box-shadow: none;
  font: 700 14px/1 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  cursor: pointer;
}
.rp-game-end-reopen[hidden] { display: none; }
.rp-game-end-back:focus-visible { outline: 3px solid var(--text-primary); outline-offset: 3px; }
/* Preview tabs take the palette of their game (COMMON/roomplay-palettes.html and each *-theme.css). */
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="whosmostlikelyto"] {
  --game-end-primary: #e0336e; --game-end-secondary: #ff7aa2;
  --bg-primary: #171719; --bg-end: #171719; --bg-secondary: #323236; --bg-card: #262629;
  --text-primary: #fff; --text-secondary: #b4b3b8;
  --accent-pink: #a51043; --accent-text: #ff7aa2; --on-accent: #fff;
  --row-hi: rgba(224, 51, 110, .2); --recap-tint: rgba(165, 16, 67, .3);
  --star: #ffc93c; --star-off: #5c5b61; --line: rgba(255, 255, 255, .12);
  --font-display: 'Unbounded', var(--font-body);
  --btn-outline: rgba(228, 227, 229, .6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="quiz"] {
  --game-end-primary: #d5ae58; --game-end-secondary: #6640ba;
  --bg-primary: #100f36; --bg-end: #0b0a28; --bg-secondary: #2c2172; --bg-card: #211759;
  --text-primary: #fff; --text-secondary: #d6cfe8;
  --accent-pink: #6640ba; --accent-text: #d5ae58; --on-accent: #fff;
  --row-hi: rgba(213, 174, 88, .16); --recap-tint: rgba(102, 64, 186, .35);
  --star: #d5ae58; --star-off: #4d4386; --line: rgba(255, 255, 255, .16);
  --font-display: 'Unbounded', var(--font-body);
  --btn-outline: rgba(255, 255, 255, .75);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="alias"] {
  --game-end-primary: #cb1731; --game-end-secondary: #ffd333;
  --bg-primary: #fff; --bg-end: #fff; --bg-secondary: #fff; --bg-card: #fbecef;
  --text-primary: #211d22; --text-secondary: #686068;
  --accent-pink: #cb1731; --accent-text: #b6102a; --on-accent: #fff;
  --row-hi: #ffd333; --recap-tint: #fbecef;
  --star: #e8a91c; --star-off: #d4c4c8; --line: #d4c4c8;
  --font-body: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-display: 'Unbounded', 'Manrope', sans-serif;
  --btn-radius: 16px; --btn-weight: 700; --btn-primary: #b6102a; --btn-outline: #211d22;
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="secrethitler"] {
  --game-end-primary: #343431; --game-end-secondary: #79aeb7;
  --bg-primary: #ef6347; --bg-end: #ef6347; --bg-secondary: #fff8e8; --bg-card: #f3e2b8;
  --text-primary: #17191f; --text-secondary: #3a1410;
  --accent-pink: #343431; --accent-text: #7a1f14; --on-accent: #fff;
  --row-hi: #e9cf8e; --recap-tint: #f3e2b8;
  --star: #b07d00; --star-off: #c9b48a; --line: rgba(23, 25, 31, .18);
  --font-display: 'Unbounded', var(--font-body);
  --btn-outline: #343431;
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="neverhaveiever"] {
  --game-end-primary: #bc2438; --game-end-secondary: #f1dadd;
  --bg-primary: #171316; --bg-end: #171316; --bg-secondary: #3a2831; --bg-card: #2a1d24;
  --text-primary: #fff; --text-secondary: #d9c4c8;
  --accent-pink: #bc2438; --accent-text: #fd7276; --on-accent: #fff;
  --row-hi: rgba(188, 36, 56, .22); --recap-tint: rgba(188, 36, 56, .3);
  --star: #ffc93c; --star-off: #5e4a52; --line: rgba(241, 218, 221, .16);
  --font-body: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-display: 'Unbounded', 'Manrope', sans-serif;
  --btn-radius: 16px; --btn-height: 56px; --btn-weight: 800; --btn-outline: rgba(241, 218, 221, .6);
}

/* The rest of the games: generated from COMMON/roomplay-palettes.html (bg, surface, accent, secondary, text). */
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="wouldyourather"] {
  --game-end-primary: #ca003d; --game-end-secondary: #00bce9;
  --bg-primary: #006bcb; --bg-end: #006bcb; --bg-secondary: #3665b7; --bg-card: #2458b1;
  --text-primary: #ffffff; --text-secondary: #b3d3ef;
  --accent-pink: #00bce9; --accent-text: #ffffff; --on-accent: #17191f;
  --row-hi: rgba(0, 188, 233, 0.2); --recap-tint: rgba(0, 188, 233, 0.22);
  --star: #ffc93c; --star-off: #5b82c5; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="knowme"] {
  --game-end-primary: #822d29; --game-end-secondary: #313555;
  --bg-primary: #b64035; --bg-end: #b64035; --bg-secondary: #b44d43; --bg-card: #ad3d33;
  --text-primary: #ffffff; --text-secondary: #e9c6c2;
  --accent-pink: #822d29; --accent-text: #ffffff; --on-accent: #ffffff;
  --row-hi: rgba(130, 45, 41, 0.2); --recap-tint: rgba(130, 45, 41, 0.22);
  --star: #ffc93c; --star-off: #c26e66; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="truth-detector"] {
  --game-end-primary: #272723; --game-end-secondary: #e88629;
  --bg-primary: #f0cb19; --bg-end: #f0cb19; --bg-secondary: #ccae1a; --bg-card: #dcbb1a;
  --text-primary: #17191f; --text-secondary: #584e1d;
  --accent-pink: #272723; --accent-text: #272723; --on-accent: #ffffff;
  --row-hi: rgba(39, 39, 35, 0.2); --recap-tint: rgba(39, 39, 35, 0.22);
  --star: #c98a00; --star-off: #ab931b; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="taboo"] {
  --game-end-primary: #cf4525; --game-end-secondary: #f8ca34;
  --bg-primary: #54277b; --bg-end: #54277b; --bg-secondary: #763d78; --bg-card: #6a2c6c;
  --text-primary: #ffffff; --text-secondary: #ccbed7;
  --accent-pink: #cf4525; --accent-text: #f8ca34; --on-accent: #ffffff;
  --row-hi: rgba(207, 69, 37, 0.2); --recap-tint: rgba(207, 69, 37, 0.22);
  --star: #ffc93c; --star-off: #8f6191; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="headsup"] {
  --game-end-primary: #096697; --game-end-secondary: #8bcfee;
  --bg-primary: #0879ba; --bg-end: #0879ba; --bg-secondary: #1c81ba; --bg-card: #0876b4;
  --text-primary: #ffffff; --text-secondary: #b5d7ea;
  --accent-pink: #8bcfee; --accent-text: #ffffff; --on-accent: #17191f;
  --row-hi: rgba(139, 207, 238, 0.2); --recap-tint: rgba(139, 207, 238, 0.22);
  --star: #ffc93c; --star-off: #4698c7; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="soobrazhariy"] {
  --game-end-primary: #ffcf39; --game-end-secondary: #f3e8be;
  --bg-primary: #125ca5; --bg-end: #125ca5; --bg-secondary: #254d7c; --bg-card: #123d71;
  --text-primary: #ffffff; --text-secondary: #b8cee4;
  --accent-pink: #ffcf39; --accent-text: #ffcf39; --on-accent: #17191f;
  --row-hi: rgba(255, 207, 57, 0.2); --recap-tint: rgba(255, 207, 57, 0.22);
  --star: #ffc93c; --star-off: #4d6e95; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="codenames"] {
  --game-end-primary: #252329; --game-end-secondary: #f29a37;
  --bg-primary: #9f265c; --bg-end: #9f265c; --bg-secondary: #923661; --bg-card: #892553;
  --text-primary: #ffffff; --text-secondary: #e2bece;
  --accent-pink: #252329; --accent-text: #f29a37; --on-accent: #ffffff;
  --row-hi: rgba(37, 35, 41, 0.2); --recap-tint: rgba(37, 35, 41, 0.22);
  --star: #ffc93c; --star-off: #a75c7e; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="decoder"] {
  --game-end-primary: #b62f35; --game-end-secondary: #266a8b;
  --bg-primary: #eae5d9; --bg-end: #eae5d9; --bg-secondary: #eae8e1; --bg-card: #fcfaf2;
  --text-primary: #17191f; --text-secondary: #565657;
  --accent-pink: #b62f35; --accent-text: #b62f35; --on-accent: #ffffff;
  --row-hi: rgba(182, 47, 53, 0.2); --recap-tint: rgba(182, 47, 53, 0.22);
  --star: #c98a00; --star-off: #c3c2bd; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="bunker"] {
  --game-end-primary: #282823; --game-end-secondary: #a6a488;
  --bg-primary: #f0c523; --bg-end: #f0c523; --bg-secondary: #cca923; --bg-card: #dcb523;
  --text-primary: #17191f; --text-secondary: #584d20;
  --accent-pink: #282823; --accent-text: #282823; --on-accent: #ffffff;
  --row-hi: rgba(40, 40, 35, 0.2); --recap-tint: rgba(40, 40, 35, 0.22);
  --star: #c98a00; --star-off: #ab8e22; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="spy"] {
  --game-end-primary: #b9232e; --game-end-secondary: #25262a;
  --bg-primary: #f8f7f2; --bg-end: #f8f7f2; --bg-secondary: #eceded; --bg-card: #ffffff;
  --text-primary: #17191f; --text-secondary: #5b5c5e;
  --accent-pink: #b9232e; --accent-text: #b9232e; --on-accent: #ffffff;
  --row-hi: rgba(185, 35, 46, 0.2); --recap-tint: rgba(185, 35, 46, 0.22);
  --star: #c98a00; --star-off: #c5c6c7; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="bunny"] {
  --game-end-primary: #7735d5; --game-end-secondary: #5f87e6;
  --bg-primary: #090719; --bg-end: #090719; --bg-secondary: #2b2940; --bg-card: #19162f;
  --text-primary: #ffffff; --text-secondary: #b5b5ba;
  --accent-pink: #7735d5; --accent-text: #5f87e6; --on-accent: #ffffff;
  --row-hi: rgba(119, 53, 213, 0.2); --recap-tint: rgba(119, 53, 213, 0.22);
  --star: #ffc93c; --star-off: #535063; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="werewords"] {
  --game-end-primary: #9f302d; --game-end-secondary: #e6c75d;
  --bg-primary: #2e2930; --bg-end: #2e2930; --bg-secondary: #513b40; --bg-card: #422a2f;
  --text-primary: #ffffff; --text-secondary: #c0bfc1;
  --accent-pink: #9f302d; --accent-text: #e6c75d; --on-accent: #ffffff;
  --row-hi: rgba(159, 48, 45, 0.2); --recap-tint: rgba(159, 48, 45, 0.22);
  --star: #ffc93c; --star-off: #715f63; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="100-to-1"] {
  --game-end-primary: #ffd43a; --game-end-secondary: #d63a39;
  --bg-primary: #1258ae; --bg-end: #1258ae; --bg-secondary: #294a80; --bg-card: #163a75;
  --text-primary: #ffffff; --text-secondary: #b8cde7;
  --accent-pink: #ffd43a; --accent-text: #ffd43a; --on-accent: #17191f;
  --row-hi: rgba(255, 212, 58, 0.2); --recap-tint: rgba(255, 212, 58, 0.22);
  --star: #ffc93c; --star-off: #506b98; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="5seconds"] {
  --game-end-primary: #f6cf35; --game-end-secondary: #225ba7;
  --bg-primary: #c3262e; --bg-end: #c3262e; --bg-secondary: #d05340; --bg-card: #cc442f;
  --text-primary: #ffffff; --text-secondary: #edbec0;
  --accent-pink: #f6cf35; --accent-text: #f6cf35; --on-accent: #17191f;
  --row-hi: rgba(246, 207, 53, 0.2); --recap-tint: rgba(246, 207, 53, 0.22);
  --star: #ffc93c; --star-off: #d97363; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="melody"] {
  --game-end-primary: #a677ef; --game-end-secondary: #edc945;
  --bg-primary: #45218a; --bg-end: #45218a; --bg-secondary: #3b2a65; --bg-card: #2a1758;
  --text-primary: #ffffff; --text-secondary: #c7bcdc;
  --accent-pink: #a677ef; --accent-text: #a677ef; --on-accent: #17191f;
  --row-hi: rgba(166, 119, 239, 0.2); --recap-tint: rgba(166, 119, 239, 0.22);
  --star: #ffc93c; --star-off: #5f5182; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="movie-frame"] {
  --game-end-primary: #f5c518; --game-end-secondary: #e9e9e9;
  --bg-primary: #121212; --bg-end: #121212; --bg-secondary: #363636; --bg-card: #242424;
  --text-primary: #ffffff; --text-secondary: #b8b8b8;
  --accent-pink: #f5c518; --accent-text: #f5c518; --on-accent: #17191f;
  --row-hi: rgba(245, 197, 24, 0.2); --recap-tint: rgba(245, 197, 24, 0.22);
  --star: #ffc93c; --star-off: #5b5b5b; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="geoguessr"] {
  --game-end-primary: #d63037; --game-end-secondary: #9bcb31;
  --bg-primary: #302778; --bg-end: #302778; --bg-secondary: #332e62; --bg-card: #211c54;
  --text-primary: #ffffff; --text-secondary: #c1bed7;
  --accent-pink: #d63037; --accent-text: #9bcb31; --on-accent: #ffffff;
  --row-hi: rgba(214, 48, 55, 0.2); --recap-tint: rgba(214, 48, 55, 0.22);
  --star: #ffc93c; --star-off: #59557f; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="wavelength"] {
  --game-end-primary: #ed755b; --game-end-secondary: #72b8b0;
  --bg-primary: #193e47; --bg-end: #193e47; --bg-secondary: #4e5759; --bg-card: #3f484b;
  --text-primary: #ffffff; --text-secondary: #bac5c8;
  --accent-pink: #ed755b; --accent-text: #ed755b; --on-accent: #17191f;
  --row-hi: rgba(237, 117, 91, 0.2); --recap-tint: rgba(237, 117, 91, 0.22);
  --star: #ffc93c; --star-off: #6f7678; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="fibbage"] {
  --game-end-primary: #eba332; --game-end-secondary: #9ba592;
  --bg-primary: #70292c; --bg-end: #70292c; --bg-secondary: #904e3e; --bg-card: #863f2d;
  --text-primary: #ffffff; --text-secondary: #d4bfc0;
  --accent-pink: #eba332; --accent-text: #eba332; --on-accent: #17191f;
  --row-hi: rgba(235, 163, 50, 0.2); --recap-tint: rgba(235, 163, 50, 0.22);
  --star: #ffc93c; --star-off: #a46f62; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="quiplash"] {
  --game-end-primary: #743cae; --game-end-secondary: #73c3b6;
  --bg-primary: #542580; --bg-end: #542580; --bg-secondary: #673a92; --bg-card: #5a2988;
  --text-primary: #ffffff; --text-secondary: #ccbed9;
  --accent-pink: #73c3b6; --accent-text: #73c3b6; --on-accent: #17191f;
  --row-hi: rgba(115, 195, 182, 0.2); --recap-tint: rgba(115, 195, 182, 0.22);
  --star: #ffc93c; --star-off: #835fa6; --line: rgba(255, 255, 255, 0.14);
  --btn-outline: rgba(255, 255, 255, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="whatdoyoumeme"] {
  --game-end-primary: #267c86; --game-end-secondary: #7e3c9b;
  --bg-primary: #ffffff; --bg-end: #ffffff; --bg-secondary: #e0dfe5; --bg-card: #f1f0f6;
  --text-primary: #17191f; --text-secondary: #5d5e62;
  --accent-pink: #267c86; --accent-text: #267c86; --on-accent: #ffffff;
  --row-hi: rgba(38, 124, 134, 0.2); --recap-tint: rgba(38, 124, 134, 0.22);
  --star: #c98a00; --star-off: #bbbac0; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="jokinghazard"] {
  --game-end-primary: #236b92; --game-end-secondary: #77aa32;
  --bg-primary: #ffffff; --bg-end: #ffffff; --bg-secondary: #e4e4df; --bg-card: #f6f6f0;
  --text-primary: #17191f; --text-secondary: #5d5e62;
  --accent-pink: #236b92; --accent-text: #236b92; --on-accent: #ffffff;
  --row-hi: rgba(35, 107, 146, 0.2); --recap-tint: rgba(35, 107, 146, 0.22);
  --star: #c98a00; --star-off: #bebfbc; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="tower"] {
  --game-end-primary: #1d1b1a; --game-end-secondary: #8a5a32;
  --bg-primary: #f2782a; --bg-end: #e4572e; --bg-secondary: #fff4e2; --bg-card: #fff4e2;
  --text-primary: #1d1b1a; --text-secondary: #3d2a1c;
  --accent-pink: #1d1b1a; --accent-text: #1d1b1a; --on-accent: #ffffff;
  --row-hi: rgba(138, 90, 50, 0.2); --recap-tint: rgba(138, 90, 50, 0.22);
  --star: #8a5a32; --star-off: rgba(29, 27, 26, 0.3); --line: rgba(29, 27, 26, 0.16);
  --btn-outline: rgba(29, 27, 26, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="detective"] {
  --game-end-primary: #e9a23b; --game-end-secondary: #c9577f;
  --bg-primary: #17363c; --bg-end: #10282d; --bg-secondary: #10282d; --bg-card: #10282d;
  --text-primary: #f7eedc; --text-secondary: #c9dad6;
  --accent-pink: #e9a23b; --accent-text: #e9a23b; --on-accent: #1b1612;
  --row-hi: rgba(233, 162, 59, 0.2); --recap-tint: rgba(233, 162, 59, 0.22);
  --star: #e9a23b; --star-off: rgba(247, 238, 220, 0.3); --line: rgba(247, 238, 220, 0.16);
  --btn-outline: rgba(247, 238, 220, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="mix"] {
  --game-end-primary: #ffc94a; --game-end-secondary: #f45d84;
  --bg-primary: #2b2356; --bg-end: #221c47; --bg-secondary: #3a3170; --bg-card: #3a3170;
  --text-primary: #fff6ec; --text-secondary: #d9d2ee;
  --accent-pink: #ffc94a; --accent-text: #ffc94a; --on-accent: #1f1a3d;
  --row-hi: rgba(255, 201, 74, 0.2); --recap-tint: rgba(255, 201, 74, 0.2);
  --star: #ffc94a; --star-off: rgba(255, 246, 236, 0.3); --line: rgba(255, 246, 236, 0.16);
  --btn-outline: rgba(255, 246, 236, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="crocodile"] {
  --game-end-primary: #487b18; --game-end-secondary: #b4d846;
  --bg-primary: #93dceb; --bg-end: #93dceb; --bg-secondary: #eceded; --bg-card: #ffffff;
  --text-primary: #17191f; --text-secondary: #3c545c;
  --accent-pink: #487b18; --accent-text: #487b18; --on-accent: #ffffff;
  --row-hi: rgba(72, 123, 24, 0.2); --recap-tint: rgba(72, 123, 24, 0.22);
  --star: #c98a00; --star-off: #c5c6c7; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="drawful"] {
  --game-end-primary: #c61d76; --game-end-secondary: #252525;
  --bg-primary: #f0eeeb; --bg-end: #f0eeeb; --bg-secondary: #eceded; --bg-card: #ffffff;
  --text-primary: #17191f; --text-secondary: #58595c;
  --accent-pink: #c61d76; --accent-text: #c61d76; --on-accent: #ffffff;
  --row-hi: rgba(198, 29, 118, 0.2); --recap-tint: rgba(198, 29, 118, 0.22);
  --star: #c98a00; --star-off: #c5c6c7; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
:is(body, .rp-game-end, .rp-game-end-reopen)[data-theme="imaginarium"] {
  --game-end-primary: #422c35; --game-end-secondary: #72b3d9;
  --bg-primary: #de781b; --bg-end: #de781b; --bg-secondary: #ecdfbc; --bg-card: #fff0ca;
  --text-primary: #17191f; --text-secondary: #53361e;
  --accent-pink: #422c35; --accent-text: #422c35; --on-accent: #ffffff;
  --row-hi: rgba(66, 44, 53, 0.2); --recap-tint: rgba(66, 44, 53, 0.22);
  --star: #ffc93c; --star-off: #c5ba9f; --line: rgba(23, 25, 31, 0.14);
  --btn-outline: rgba(23, 25, 31, 0.6);
}
/* Cards and the second accent (whole palette on the shared screen, 2026-10-23). By default a
   card keeps the page colours; each game theme then gets its atlas surface with its own ink and
   the accents that read on it from the generated block below. Inside a card the usual tokens
   switch to these, so every rule further down stays written against --text-primary & co. */
.template-app {
  --card-bg: var(--bg-card); --card-ink: var(--text-primary); --card-ink-2: var(--text-secondary);
  --card-inner: var(--bg-secondary); --card-line: var(--line);
  --card-accent: var(--btn-primary, var(--accent-pink)); --on-card-accent: var(--on-accent);
  --card-accent-text: var(--accent-text); --card-accent-2-text: var(--game-end-secondary, var(--accent-text));
  --card-row-hi: var(--row-hi); --card-recap-tint: var(--recap-tint);
  --card-star: var(--star); --card-star-off: var(--star-off);
}
/* palette-roles:start — generated by scripts/generate-game-end-themes.js, do not edit by hand. */
:is(body, .rp-game-end)[data-theme="mix"] .template-app { --card-bg: #3A3170; --card-ink: #FFF6EC; --card-ink-2: #B0A7BA; --card-inner: #483F79; --card-line: rgba(255, 246, 236, 0.14); --card-accent: #FFC94A; --on-card-accent: #1F1A3D; --card-accent-text: #FFC94A; --card-accent-2-text: #F78BA3; --card-star: #FFC94A; --card-star-off: #9188A6; --card-row-hi: rgba(255, 201, 74, 0.16); --card-recap-tint: rgba(244, 93, 132, 0.24); }
:is(body, .rp-game-end)[data-theme="tower"] .template-app { --card-bg: #FFF4E2; --card-ink: #1D1B1A; --card-ink-2: #6E6962; --card-inner: #EFE5D4; --card-line: rgba(29, 27, 26, 0.14); --card-accent: #1D1B1A; --on-card-accent: #FFFFFF; --card-accent-text: #1D1B1A; --card-accent-2-text: #8A5A32; --card-star: #1D1B1A; --card-star-off: #8C857C; --card-row-hi: rgba(29, 27, 26, 0.16); --card-recap-tint: rgba(138, 90, 50, 0.24); }
:is(body, .rp-game-end)[data-theme="detective"] .template-app { --card-bg: #F2E6CE; --card-ink: #1B1612; --card-ink-2: #686156; --card-inner: #E3D7C1; --card-line: rgba(27, 22, 18, 0.14); --card-accent: #E9A23B; --on-card-accent: #1B1612; --card-accent-text: #95445E; --card-accent-2-text: #984F67; --card-star: #C9577F; --card-star-off: #857C6E; --card-row-hi: rgba(233, 162, 59, 0.16); --card-recap-tint: rgba(206, 104, 140, 0.24); }
:is(body, .rp-game-end)[data-theme="secrethitler"] .template-app { --card-bg: #F3E2B8; --card-ink: #17191F; --card-ink-2: #666156; --card-inner: #E4D4AD; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #343431; --on-card-accent: #FFFFFF; --card-accent-text: #343431; --card-accent-2-text: #48646B; --card-star: #343431; --card-star-off: #837C6A; --card-row-hi: rgba(52, 52, 49, 0.16); --card-recap-tint: rgba(121, 174, 183, 0.24); }
:is(body, .rp-game-end)[data-theme="neverhaveiever"] .template-app { --card-bg: #2A1D24; --card-ink: #FFFFFF; --card-ink-2: #AAA5A7; --card-inner: #392D33; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #BC2438; --on-card-accent: #FFFFFF; --card-accent-text: #F1DADD; --card-accent-2-text: #F1DADD; --card-star: #F1DADD; --card-star-off: #797175; --card-row-hi: rgba(188, 36, 56, 0.16); --card-recap-tint: rgba(241, 218, 221, 0.24); }
:is(body, .rp-game-end)[data-theme="wouldyourather"] .template-app { --card-bg: #FFFFFF; --card-ink: #17191F; --card-ink-2: #747579; --card-inner: #EFEFEF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #CA003D; --on-card-accent: #FFFFFF; --card-accent-text: #CA003D; --card-accent-2-text: #097B98; --card-star: #CA003D; --card-star-off: #888A8D; --card-row-hi: rgba(202, 0, 61, 0.16); --card-recap-tint: rgba(0, 188, 233, 0.24); }
:is(body, .rp-game-end)[data-theme="whosmostlikelyto"] .template-app { --card-bg: #262629; --card-ink: #FFFFFF; --card-ink-2: #A8A8A9; --card-inner: #353538; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #A51043; --on-card-accent: #FFFFFF; --card-accent-text: #E4E3E5; --card-accent-2-text: #E4E3E5; --card-star: #E4E3E5; --card-star-off: #767678; --card-row-hi: rgba(165, 16, 67, 0.16); --card-recap-tint: rgba(228, 227, 229, 0.24); }
:is(body, .rp-game-end)[data-theme="knowme"] .template-app { --card-bg: #FFF2DC; --card-ink: #17191F; --card-ink-2: #6B6763; --card-inner: #EFE3CF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #822D29; --on-card-accent: #FFFFFF; --card-accent-text: #822D29; --card-accent-2-text: #313555; --card-star: #822D29; --card-star-off: #88837B; --card-row-hi: rgba(130, 45, 41, 0.16); --card-recap-tint: rgba(49, 53, 85, 0.24); }
:is(body, .rp-game-end)[data-theme="truth-detector"] .template-app { --card-bg: #272723; --card-ink: #FFFFFF; --card-ink-2: #A9A9A7; --card-inner: #363632; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #E88629; --on-card-accent: #17191F; --card-accent-text: #E88629; --card-accent-2-text: #E88629; --card-star: #E88629; --card-star-off: #777774; --card-row-hi: rgba(232, 134, 41, 0.16); --card-recap-tint: rgba(232, 134, 41, 0.24); }
:is(body, .rp-game-end)[data-theme="alias"] .template-app { --card-bg: #CB1731; --card-ink: #FFFFFF; --card-ink-2: #F9E3E6; --card-inner: #CF273F; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #FFD333; --on-card-accent: #17191F; --card-accent-text: #FFE585; --card-accent-2-text: #FFE585; --card-star: #FFD333; --card-star-off: #EDAEB7; --card-row-hi: rgba(255, 211, 51, 0.16); --card-recap-tint: rgba(255, 211, 51, 0.24); }
:is(body, .rp-game-end)[data-theme="taboo"] .template-app { --card-bg: #FFFFFF; --card-ink: #17191F; --card-ink-2: #747579; --card-inner: #EFEFEF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #CF4525; --on-card-accent: #FFFFFF; --card-accent-text: #CF4525; --card-accent-2-text: #88722A; --card-star: #CF4525; --card-star-off: #888A8D; --card-row-hi: rgba(207, 69, 37, 0.16); --card-recap-tint: rgba(248, 202, 52, 0.24); }
:is(body, .rp-game-end)[data-theme="headsup"] .template-app { --card-bg: #FFFFFF; --card-ink: #17191F; --card-ink-2: #747579; --card-inner: #EFEFEF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #096697; --on-card-accent: #FFFFFF; --card-accent-text: #096697; --card-accent-2-text: #517487; --card-star: #096697; --card-star-off: #888A8D; --card-row-hi: rgba(9, 102, 151, 0.16); --card-recap-tint: rgba(139, 207, 238, 0.24); }
:is(body, .rp-game-end)[data-theme="soobrazhariy"] .template-app { --card-bg: #123D71; --card-ink: #FFFFFF; --card-ink-2: #A0B1C6; --card-inner: #234B7B; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #FFCF39; --on-card-accent: #17191F; --card-accent-text: #FFCF39; --card-accent-2-text: #F3E8BE; --card-star: #FFCF39; --card-star-off: #7A92B0; --card-row-hi: rgba(255, 207, 57, 0.16); --card-recap-tint: rgba(243, 232, 190, 0.24); }
:is(body, .rp-game-end)[data-theme="codenames"] .template-app { --card-bg: #FFF7E8; --card-ink: #17191F; --card-ink-2: #74726F; --card-inner: #EFE7DA; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #252329; --on-card-accent: #FFFFFF; --card-accent-text: #252329; --card-accent-2-text: #9A662D; --card-star: #252329; --card-star-off: #888682; --card-row-hi: rgba(37, 35, 41, 0.16); --card-recap-tint: rgba(242, 154, 55, 0.24); }
:is(body, .rp-game-end)[data-theme="decoder"] .template-app { --card-bg: #FCFAF2; --card-ink: #17191F; --card-ink-2: #737373; --card-inner: #ECEAE3; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #B62F35; --on-card-accent: #FFFFFF; --card-accent-text: #B62F35; --card-accent-2-text: #266A8B; --card-star: #B62F35; --card-star-off: #878887; --card-row-hi: rgba(182, 47, 53, 0.16); --card-recap-tint: rgba(38, 106, 139, 0.24); }
:is(body, .rp-game-end)[data-theme="bunker"] .template-app { --card-bg: #282823; --card-ink: #FFFFFF; --card-ink-2: #A9A9A7; --card-inner: #373732; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #A6A488; --on-card-accent: #17191F; --card-accent-text: #A6A488; --card-accent-2-text: #A6A488; --card-star: #A6A488; --card-star-off: #787874; --card-row-hi: rgba(166, 164, 136, 0.16); --card-recap-tint: rgba(166, 164, 136, 0.24); }
:is(body, .rp-game-end)[data-theme="spy"] .template-app { --card-bg: #FFFFFF; --card-ink: #17191F; --card-ink-2: #747579; --card-inner: #EFEFEF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #B9232E; --on-card-accent: #FFFFFF; --card-accent-text: #B9232E; --card-accent-2-text: #25262A; --card-star: #B9232E; --card-star-off: #888A8D; --card-row-hi: rgba(185, 35, 46, 0.16); --card-recap-tint: rgba(37, 38, 42, 0.24); }
:is(body, .rp-game-end)[data-theme="bunny"] .template-app { --card-bg: #19162F; --card-ink: #FFFFFF; --card-ink-2: #A3A2AC; --card-inner: #29263E; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #7735D5; --on-card-accent: #FFFFFF; --card-accent-text: #5F87E6; --card-accent-2-text: #5F87E6; --card-star: #5F87E6; --card-star-off: #6E6C7C; --card-row-hi: rgba(119, 53, 213, 0.16); --card-recap-tint: rgba(95, 135, 230, 0.24); }
:is(body, .rp-game-end)[data-theme="werewords"] .template-app { --card-bg: #EFE4C4; --card-ink: #17191F; --card-ink-2: #64625A; --card-inner: #E0D6B8; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #9F302D; --on-card-accent: #FFFFFF; --card-accent-text: #9F302D; --card-accent-2-text: #6A5F38; --card-star: #9F302D; --card-star-off: #817C70; --card-row-hi: rgba(159, 48, 45, 0.16); --card-recap-tint: rgba(230, 199, 93, 0.24); }
:is(body, .rp-game-end)[data-theme="quiz"] .template-app { --card-bg: #211759; --card-ink: #FFFFFF; --card-ink-2: #A6A2BD; --card-inner: #312765; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #6640BA; --on-card-accent: #FFFFFF; --card-accent-text: #D5AE58; --card-accent-2-text: #D5AE58; --card-star: #D5AE58; --card-star-off: #746D97; --card-row-hi: rgba(102, 64, 186, 0.16); --card-recap-tint: rgba(213, 174, 88, 0.24); }
:is(body, .rp-game-end)[data-theme="100-to-1"] .template-app { --card-bg: #163A75; --card-ink: #FFFFFF; --card-ink-2: #A2B0C8; --card-inner: #26487F; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #FFD43A; --on-card-accent: #17191F; --card-accent-text: #FFD43A; --card-accent-2-text: #EB9D9C; --card-star: #FFD43A; --card-star-off: #7D91B1; --card-row-hi: rgba(255, 212, 58, 0.16); --card-recap-tint: rgba(214, 58, 57, 0.24); }
:is(body, .rp-game-end)[data-theme="5seconds"] .template-app { --card-bg: #FFF9E8; --card-ink: #17191F; --card-ink-2: #74736F; --card-inner: #EFE9DA; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #225BA7; --on-card-accent: #FFFFFF; --card-accent-text: #225BA7; --card-accent-2-text: #225BA7; --card-star: #225BA7; --card-star-off: #888782; --card-row-hi: rgba(34, 91, 167, 0.16); --card-recap-tint: rgba(34, 91, 167, 0.24); }
:is(body, .rp-game-end)[data-theme="melody"] .template-app { --card-bg: #2A1758; --card-ink: #FFFFFF; --card-ink-2: #AAA2BC; --card-inner: #392764; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #A677EF; --on-card-accent: #17191F; --card-accent-text: #A677EF; --card-accent-2-text: #EDC945; --card-star: #A677EF; --card-star-off: #796D96; --card-row-hi: rgba(166, 119, 239, 0.16); --card-recap-tint: rgba(237, 201, 69, 0.24); }
:is(body, .rp-game-end)[data-theme="movie-frame"] .template-app { --card-bg: #242424; --card-ink: #FFFFFF; --card-ink-2: #A7A7A7; --card-inner: #333333; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #F5C518; --on-card-accent: #17191F; --card-accent-text: #F5C518; --card-accent-2-text: #E9E9E9; --card-star: #F5C518; --card-star-off: #757575; --card-row-hi: rgba(245, 197, 24, 0.16); --card-recap-tint: rgba(233, 233, 233, 0.24); }
:is(body, .rp-game-end)[data-theme="geoguessr"] .template-app { --card-bg: #211C54; --card-ink: #FFFFFF; --card-ink-2: #A6A4BB; --card-inner: #312C60; --card-line: rgba(255, 255, 255, 0.14); --card-accent: #D63037; --on-card-accent: #FFFFFF; --card-accent-text: #9BCB31; --card-accent-2-text: #9BCB31; --card-star: #D63037; --card-star-off: #747093; --card-row-hi: rgba(214, 48, 55, 0.16); --card-recap-tint: rgba(155, 203, 49, 0.24); }
:is(body, .rp-game-end)[data-theme="wavelength"] .template-app { --card-bg: #F0E4C9; --card-ink: #17191F; --card-ink-2: #65625C; --card-inner: #E1D6BD; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #ED755B; --on-card-accent: #17191F; --card-accent-text: #975043; --card-accent-2-text: #456968; --card-star: #C2634F; --card-star-off: #817C72; --card-row-hi: rgba(237, 117, 91, 0.16); --card-recap-tint: rgba(114, 184, 176, 0.24); }
:is(body, .rp-game-end)[data-theme="fibbage"] .template-app { --card-bg: #F0E5C6; --card-ink: #17191F; --card-ink-2: #65635B; --card-inner: #E1D7BA; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #EBA332; --on-card-accent: #17191F; --card-accent-text: #815E29; --card-accent-2-text: #595F59; --card-star: #AB7A2C; --card-star-off: #817D71; --card-row-hi: rgba(235, 163, 50, 0.16); --card-recap-tint: rgba(155, 165, 146, 0.24); }
:is(body, .rp-game-end)[data-theme="quiplash"] .template-app { --card-bg: #F4EFF8; --card-ink: #17191F; --card-ink-2: #66666D; --card-inner: #E5E0E9; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #743CAE; --on-card-accent: #FFFFFF; --card-accent-text: #743CAE; --card-accent-2-text: #456E6B; --card-star: #743CAE; --card-star-off: #848289; --card-row-hi: rgba(116, 60, 174, 0.16); --card-recap-tint: rgba(115, 195, 182, 0.24); }
:is(body, .rp-game-end)[data-theme="whatdoyoumeme"] .template-app { --card-bg: #F1F0F6; --card-ink: #17191F; --card-ink-2: #65666C; --card-inner: #E2E1E7; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #267C86; --on-card-accent: #FFFFFF; --card-accent-text: #7E3C9B; --card-accent-2-text: #7E3C9B; --card-star: #267C86; --card-star-off: #828389; --card-row-hi: rgba(38, 124, 134, 0.16); --card-recap-tint: rgba(126, 60, 155, 0.24); }
:is(body, .rp-game-end)[data-theme="jokinghazard"] .template-app { --card-bg: #F6F6F0; --card-ink: #17191F; --card-ink-2: #707173; --card-inner: #E6E7E1; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #236B92; --on-card-accent: #FFFFFF; --card-accent-text: #236B92; --card-accent-2-text: #51702A; --card-star: #236B92; --card-star-off: #848685; --card-row-hi: rgba(35, 107, 146, 0.16); --card-recap-tint: rgba(119, 170, 50, 0.24); }
:is(body, .rp-game-end)[data-theme="crocodile"] .template-app { --card-bg: #FFFFFF; --card-ink: #17191F; --card-ink-2: #747579; --card-inner: #EFEFEF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #487B18; --on-card-accent: #FFFFFF; --card-accent-text: #487B18; --card-accent-2-text: #667933; --card-star: #487B18; --card-star-off: #888A8D; --card-row-hi: rgba(72, 123, 24, 0.16); --card-recap-tint: rgba(180, 216, 70, 0.24); }
:is(body, .rp-game-end)[data-theme="drawful"] .template-app { --card-bg: #FFFFFF; --card-ink: #17191F; --card-ink-2: #747579; --card-inner: #EFEFEF; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #C61D76; --on-card-accent: #FFFFFF; --card-accent-text: #C61D76; --card-accent-2-text: #252525; --card-star: #C61D76; --card-star-off: #888A8D; --card-row-hi: rgba(198, 29, 118, 0.16); --card-recap-tint: rgba(37, 37, 37, 0.24); }
:is(body, .rp-game-end)[data-theme="imaginarium"] .template-app { --card-bg: #FFF0CA; --card-ink: #17191F; --card-ink-2: #6B665C; --card-inner: #EFE1BE; --card-line: rgba(23, 25, 31, 0.14); --card-accent: #422C35; --on-card-accent: #FFFFFF; --card-accent-text: #422C35; --card-accent-2-text: #45667C; --card-star: #422C35; --card-star-off: #888373; --card-row-hi: rgba(66, 44, 53, 0.16); --card-recap-tint: rgba(114, 179, 217, 0.24); }
/* palette-roles:end */
.template-app :is(.leaderboard-card, .qpg-card:not(.qpg-more-games), .qpg-game-card--catalog, .qpg-rating-success) {
  --bg-card: var(--card-bg); --bg-secondary: var(--card-inner);
  --text-primary: var(--card-ink); --text-secondary: var(--card-ink-2); --line: var(--card-line);
  --accent-pink: var(--card-accent); --btn-primary: var(--card-accent); --on-accent: var(--on-card-accent);
  --accent-text: var(--card-accent-text); --row-hi: var(--card-row-hi); --recap-tint: var(--card-recap-tint);
  --game-accent: var(--card-accent); --onboarding-accent: var(--card-accent-text);
  --btn-outline: var(--card-ink-2); --star: var(--card-star); --star-off: var(--card-star-off);
  color: var(--text-primary);
}
.template-app {
  position: relative;
  width: 100%;
  max-width: 430px;
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0 auto;
  padding: calc(24px + env(safe-area-inset-top, 0px)) 24px calc(24px + env(safe-area-inset-bottom, 0px));
}

.dashboard { display: flex; flex-direction: column; }
.dashboard-hero { padding: 6px 0 12px; text-align: center; }
.winner-icon { margin: 14px 0 4px; font-size: 48px; line-height: 1; }
.result-kicker { margin: 0 0 2px; color: var(--text-secondary); font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.qpg-rating--compact { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 10px; padding: 10px 14px !important; }
.qpg-rating--compact .qpg-section-title { margin: 0; font-size: 16px; }
.qpg-rating--compact .qpg-stars { gap: 0; }
.qpg-rating--compact .qpg-star { width: 34px; min-width: 34px; height: 44px; min-height: 44px; font-size: 28px; }
.qpg-rating--compact .qpg-feedback, .qpg-rating--compact .qpg-rating-message { flex-basis: 100%; }
.qpg-rating--compact .qpg-rating-message:empty { display: none; }
.dashboard h1 { margin: 0; font-family: var(--font-display); font-size: 23px; line-height: 1.2; }
/* More room for the board and the awards (user decision 2026-10-09): no «<игра> · игра окончена»
   line, no «Первое место — …» headline (screen readers still get it) and no «Итог вашей партии»
   over the awards; the hero, board and awards say it. The share image keeps its own texts. */
.dashboard-hero .result-kicker, .qpg-recap .qpg-kicker { display: none; }
.dashboard-hero h1 {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.leaderboard-card {
  margin-bottom: 10px;
  padding: 12px;
  border-radius: 16px;
  background: var(--bg-card);
}

.leaderboard-card h2 { margin: 0 0 8px; color: var(--text-secondary); font-size: 16px; font-weight: 600; text-align: center; }
.leaderboard { display: grid; gap: 6px; }

.leader-row {
  display: grid;
  grid-template-columns: 30px 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 4px 8px;
  border-radius: 10px;
  background: var(--bg-secondary);
}

.leader-row:first-child {
  border: 1px solid var(--accent-pink);
  background: var(--row-hi);
}

.rank {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 50%;
  background: var(--bg-card);
  color: var(--text-secondary);
  font-size: 11px;
  font-weight: 700;
}

.leader-row:first-child .rank { background: var(--accent-pink); color: var(--on-accent); }
.leader-avatar { display: grid; width: 34px; height: 34px; overflow: hidden; place-items: center; border-radius: 50%; background: var(--bg-card); color: var(--text-primary); font-size: 14px; font-weight: 700; }
.leader-avatar img { width: 100%; height: 100%; object-fit: cover; }
.leader-name { min-width: 0; overflow: hidden; font-size: 16px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.leader-score { color: var(--card-accent-2-text); font-size: 17px; font-weight: 700; }
.leader-row:first-child .leader-score { color: var(--accent-text); }

#post-game { display: grid; gap: 10px; }
.leader-row.leader-row--team { grid-template-columns: 30px minmax(0, 1fr) auto; }
.qpg-game-card--catalog .qpg-game-copy small { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.qpg-card { border: 0 !important; border-radius: 20px !important; background: var(--bg-card) !important; }
.qpg-recap {
  padding: 12px !important;
  background: linear-gradient(145deg, var(--recap-tint), var(--bg-card) 70%) !important;
}
.qpg-recap .qpg-kicker { margin-bottom: 3px; font-size: 10px; }
/* Section headings sit on the centre line like «Результаты» above them. */
.qpg-recap .qpg-kicker, .qpg-more-games .qpg-section-title { text-align: center; }
.qpg-recap .qpg-recap-title { font-size: 18px; }
.qpg-recap .qpg-recap-copy { margin: 4px 0 8px; font-size: 13px; line-height: 1.35; }
/* «12 карточек · 3 наказания»: the summary of games without a board or awards (Я никогда не). */
.qpg-recap-facts { display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; gap: 6px; margin-bottom: 8px; }
.qpg-recap-fact { display: grid; justify-items: center; gap: 2px; padding: 10px 6px; border-radius: 12px; background: var(--bg-secondary); text-align: center; }
.qpg-recap-fact-value { color: var(--card-accent-2-text); font-family: var(--font-display); font-size: 24px; line-height: 1.1; }
.qpg-recap-fact-label { color: var(--text-secondary); font-size: 12px; font-weight: 600; line-height: 1.2; }
.qpg-recap .qpg-recap-copy { color: var(--text-primary); text-align: center; }
.qpg-recap .qpg-conversation { gap: 5px; margin-bottom: 8px; }
.qpg-recap .qpg-message { gap: 7px; }
.qpg-recap .qpg-message-avatar { width: 34px; height: 34px; font-size: 13px; }
.qpg-recap .qpg-message-body { gap: 1px; }
.qpg-recap .qpg-message-name { font-size: 10px; }
.qpg-recap .qpg-message-bubble { padding: 6px 9px; border-radius: 3px 11px 11px; font-size: 12px; line-height: 1.25; }
.qpg-kicker, .qpg-message-name { color: var(--card-accent-2-text) !important; }
/* Primary: «Поделиться итогом», «Сыграть ещё раз», «Отправить». Secondary: «Продолжить», «Другие игры». */
.template-app :is(.qpg-share-button, .qpg-secondary-button, .qpg-replay-continue, .qpg-replay-other, .qpg-flow-next),
.template-app .dashboard[data-post-game-step="feedback"] .catalog-link {
  min-height: var(--btn-height) !important;
  padding: 4px 18px !important;
  border: 2px solid var(--btn-primary, var(--accent-pink)) !important;
  border-radius: var(--btn-radius) !important;
  background: var(--btn-primary, var(--accent-pink)) !important;
  color: var(--on-accent) !important;
  box-shadow: none !important;
  font-family: var(--font-body) !important;
  font-size: 16px !important;
  font-weight: var(--btn-weight) !important;
  letter-spacing: normal;
  text-transform: none;
}
.template-app .qpg-flow-next,
.template-app .qpg-replay-other,
.template-app .dashboard[data-post-game-step="feedback"] .catalog-link {
  border-color: var(--btn-outline, var(--line)) !important;
  background: transparent !important;
  color: var(--text-primary) !important;
}
.template-app .qpg-flow-next:active,
.template-app .qpg-replay-other:active,
.template-app .dashboard[data-post-game-step="feedback"] .catalog-link:active { background: var(--row-hi) !important; }
.qpg-reason { border-color: var(--line) !important; background: transparent !important; color: var(--text-primary) !important; }
.qpg-reason.selected { border-color: var(--accent-pink) !important; color: var(--text-primary) !important; }

/* The shared post-game styles are written for the dark default; the template
   points them at its theme tokens so light game themes stay readable. */
.template-app { --game-accent: var(--accent-pink); --onboarding-accent: var(--accent-text); }
.template-app .qpg-section-title, .template-app .qpg-flow-title { color: var(--text-primary); font-family: var(--font-display); }
.template-app .qpg-section-hint, .template-app .qpg-rating-message, .template-app .qpg-rating-modal-close { color: var(--text-secondary) !important; }
.template-app .qpg-award-title, .template-app .qpg-message-bubble { color: var(--text-primary) !important; }
.template-app .qpg-award-text { color: var(--text-secondary) !important; }
.template-app .qpg-message-avatar { background: var(--accent-pink); color: var(--on-accent); }
.template-app .qpg-message-avatar:has(img) { background: var(--bg-secondary); }
.template-app .qpg-comment { border-color: var(--line) !important; background: var(--bg-secondary) !important; color: var(--text-primary) !important; }
.template-app .qpg-rating-dialog .qpg-card, .template-app .qpg-rating-success { color: var(--text-primary); }
.template-app .qpg-rating-success { background: var(--bg-card) !important; }
.template-app .qpg-review-invite-text, .template-app .qpg-review-invite-later { color: var(--text-secondary) !important; }
.template-app .qpg-review-invite--inline { background: transparent !important; border-top: 1px solid var(--line) !important; border-radius: 0 !important; }
.template-app .qpg-replay-pack { border-color: var(--line) !important; background: var(--bg-secondary) !important; color: var(--text-primary) !important; }
.template-app .qpg-replay-pack.selected { border-color: var(--accent-pink) !important; }
.template-app .qpg-replay-art { background: var(--bg-card) !important; }
.template-app .qpg-replay-check { background: var(--accent-pink) !important; color: var(--on-accent) !important; }
.template-app .qpg-replay-copy small { color: var(--text-secondary) !important; }
.template-app .qpg-replay-pack.locked .qpg-replay-copy small { color: var(--accent-text) !important; }
.template-app .qpg-replay-continue:disabled { opacity: .5; }
.template-app .qpg-replay-played-covers img { border-color: var(--accent-pink); background: var(--bg-card); }
.template-app .qpg-replay-played-copy strong, .template-app .qpg-replay-preview, .template-app .qpg-replay-samples-head { color: var(--text-primary); }
.template-app .qpg-replay-played-copy small { color: var(--text-secondary); }
.template-app .qpg-replay-offer { border-color: var(--accent-pink); }
.template-app .qpg-replay-offer-badge { background: var(--accent-pink); color: var(--on-accent); }
.template-app .qpg-replay-preview-cover > img:first-child { background: var(--bg-card); }
.template-app .qpg-replay-preview-cover.selected > img:first-child { border-color: var(--accent-pink); }
.template-app .qpg-replay-link { color: var(--text-secondary); }
.template-app .qpg-replay-sample { border-color: var(--line); background: var(--bg-secondary); color: var(--text-primary); }
.template-app .qpg-game-card--catalog { border-color: var(--line) !important; background: var(--bg-card) !important; color: var(--text-primary) !important; }
.template-app .qpg-game-card--catalog .qpg-game-copy strong { color: var(--accent-text) !important; }
.template-app .qpg-game-card--catalog .qpg-game-copy small { color: var(--text-secondary) !important; }
.template-app .qpg-game-tags span { border-color: var(--line) !important; background: var(--bg-secondary) !important; color: var(--text-secondary) !important; }
.template-app .qpg-game-voters { color: var(--accent-text) !important; }
.template-app .qpg-game-voters-chips { color: var(--text-primary) !important; }
.dashboard[data-post-game-step="feedback"] .qpg-game-card--catalog .qpg-game-voters { padding-left: 60px; margin-top: 6px; }
.template-app .qpg-game-card--voted { border-color: var(--accent-text) !important; box-shadow: inset 0 0 0 1px var(--accent-text); }
.qpg-more-games { padding: 18px 0 0 !important; background: transparent !important; }
.qpg-more-games .qpg-section-title { margin-bottom: 12px; }

.qpg-stars {
  display: flex;
  justify-content: center;
  gap: 6px;
}

.qpg-star {
  width: 52px;
  min-width: 52px;
  height: 52px;
  min-height: 52px;
  padding: 0;
  border: 0 !important;
  border-radius: 50%;
  background: transparent !important;
  color: var(--star-off);
  font-size: 38px;
  transition: color 140ms ease, transform 140ms ease, filter 140ms ease;
}

.qpg-star.selected {
  background: transparent !important;
  color: var(--star) !important;
  filter: drop-shadow(0 3px 7px rgba(0, 0, 0, .18));
}

.qpg-star:active { transform: scale(.9); }

@media (hover: hover) {
  .qpg-star:hover { color: var(--star); transform: translateY(-2px); }
}

.dashboard[data-post-game-step="summary"] > .catalog-link {
  display: none;
}

.dashboard[data-post-game-step="feedback"] > .dashboard-hero,
.dashboard[data-post-game-step="feedback"] > .outcome-switcher,
.dashboard[data-post-game-step="feedback"] > .leaderboard-card {
  display: none;
}

.dashboard[data-post-game-step="feedback"] #post-game {
  padding-top: 5px;
}

.qpg-flow-feedback > .qpg-flow-title {
  min-height: 48px;
  margin-left: 40px;
  display: flex;
  align-items: center;
  font-size: 19px;
}

.qpg-rating-dialog .qpg-card { background: var(--bg-card) !important; }
.qpg-rating-modal-close:focus-visible { outline: 3px solid var(--text-primary); outline-offset: 1px; }

.catalog-link { display: grid; min-height: 48px; place-items: center; color: var(--text-secondary); font-size: 15px; text-decoration: none; }

.btn-back:focus-visible, .catalog-link:focus-visible, .qpg-game-card:focus-visible, .qpg-replay-pack:focus-visible, .qpg-replay-continue:focus-visible, .qpg-replay-other:focus-visible, .qpg-replay-preview-cover:focus-visible, .qpg-replay-link:focus-visible, .qpg-flow-next:focus-visible, .qpg-star:focus-visible { outline: 3px solid var(--text-primary); outline-offset: 3px; }

@media (max-width: 360px) {
  .template-app { padding-right: 16px; padding-left: 16px; }
  .winner-icon { font-size: 60px; }
  .leaderboard-card { padding: 14px; }
  .leader-row { grid-template-columns: 34px 38px minmax(0, 1fr) auto; padding-right: 9px; padding-left: 9px; }
  .leader-avatar, .qpg-recap .qpg-message-avatar { width: 38px; height: 38px; }
  .leader-score { font-size: 17px; }
  .qpg-rating-dialog .qpg-stars { gap: 4px; }
  .qpg-rating-dialog .qpg-star { width: 44px; min-width: 44px; height: 48px; min-height: 48px; font-size: 34px; }
}

/* A phone on its side. Only with room for both columns: a portrait phone whose viewport turns «landscape» for a
   moment (the keyboard, a split screen, a locked screen coming back) kept the two columns on a 390 px screen —
   the right one off the screen and two rows of the board (owner 2026-10-31, Мелодия with /tv/ on). */
@media (orientation: landscape) and (max-height: 560px) and (min-width: 600px) {
  .template-app { max-width: 760px; padding-top: calc(20px + env(safe-area-inset-top, 0px)); }
  .dashboard { display: grid; grid-template-columns: minmax(260px, .8fr) minmax(320px, 1.2fr); gap: 14px; }
  .dashboard-hero { align-self: start; padding-top: 42px; }
  .leaderboard-card { grid-column: 1; }
  #post-game, .catalog-link { grid-column: 2; }
  #post-game { grid-row: 1 / span 3; }
}

/* Team rows show their players' avatars next to the team name. */
.team-avatars { display: inline-flex; margin-left: 10px; vertical-align: middle; }
.team-avatars img { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; background: var(--bg-card); border: 2px solid var(--bg-secondary); }
.team-avatars img + img { margin-left: -8px; }

/* One screen, no page scroll. The awards get two lines (a third if the text is long, never cut), in
   a block whose height is fixed before the AI text arrives (no jumps); the
   leaderboard takes what is left and scrolls inside. If even that does not
   fit, the summary steps down through .fit-1….fit-3 (fitToScreen() in main.ts). */
.template-app .qpg-award[hidden] { display: flex !important; visibility: hidden; }
.template-app .qpg-award-head { flex-wrap: nowrap; min-height: 19px; overflow: hidden; }
.template-app .qpg-award-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.template-app .qpg-award .qpg-message-name { flex-shrink: 0; }
.template-app .qpg-award-text {
  display: -webkit-box;
  min-height: calc(2em * 1.35);
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-height: 1.35;
}
.template-app .qpg-award-text[hidden] { display: -webkit-box !important; visibility: hidden; }
.template-app:has(.dashboard[data-post-game-step="summary"]:not([hidden])) {
  display: flex;
  flex-direction: column;
  height: 100vh;
  height: 100dvh;
  min-height: 0;
}
.dashboard[data-post-game-step="summary"] { flex: 1 1 auto; min-height: 0; }
.dashboard[data-post-game-step="summary"] > .leaderboard-card {
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  min-height: 118px;
}
.dashboard[data-post-game-step="summary"] .leaderboard {
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: none;
  /* The cut-off row fades out, so it reads as "scroll for more". */
  -webkit-mask-image: linear-gradient(180deg, #000 calc(100% - 18px), transparent);
  mask-image: linear-gradient(180deg, #000 calc(100% - 18px), transparent);
}
.dashboard[data-post-game-step="summary"] .leaderboard::-webkit-scrollbar { display: none; }
.dashboard[data-post-game-step="summary"] .leaderboard.is-scrolled-end { -webkit-mask-image: none; mask-image: none; }
.dashboard[data-post-game-step="summary"] > .dashboard-hero,
.dashboard[data-post-game-step="summary"] > .outcome-switcher,
.dashboard[data-post-game-step="summary"] > #post-game { flex-shrink: 0; }
.dashboard.fit-1 { --fit-gap: 6px; }
.fit-1 .dashboard-hero { padding: 0 0 8px; }
.fit-1 .ge-hero { min-height: 0; padding-top: 12px; }
.fit-1 .ge-hero-avatar { width: 68px; height: 68px; }
.fit-1 .ge-hero svg.ge-blob { width: 60px; height: auto; }
.fit-1 .winner-icon { margin: 4px 0 2px; }
.fit-1 h1 { font-size: 20px; }
.fit-1 .leaderboard-card { margin-bottom: 8px; padding: 8px 10px; }
.fit-1 .leaderboard-card h2 { margin-bottom: 6px; font-size: 14px; }
.fit-1 .leaderboard { gap: 4px; }
.fit-1 .leader-row { min-height: 38px; padding-top: 2px; padding-bottom: 2px; }
.fit-1 .leader-avatar, .fit-1 .qpg-recap .qpg-message-avatar { width: 30px; height: 30px; }
.fit-1 #post-game, .fit-1 .qpg-flow-summary { gap: 8px; }
.fit-1 .qpg-recap .qpg-conversation { gap: 4px; margin-bottom: 6px; }
.fit-2 .ge-hero-avatar { width: 52px; height: 52px; }
.fit-2 .ge-hero svg.ge-blob { width: 46px; }
.fit-2 .ge-hero { padding-top: 10px; }
.fit-2 .leaderboard-card h2, .fit-2 .qpg-recap .qpg-kicker { display: none; }
.fit-3 .winner-icon { display: none; }
.fit-3 .dashboard-hero { padding-top: 4px; }
.dashboard.fit-3[data-post-game-step="summary"] > .leaderboard-card { min-height: 80px; }
/* Only the tightest screens trade button height (56 → 48) for a visible leaderboard row. */
.dashboard.fit-3, .dashboard.next-fit-3 { --btn-height: 48px; }


/* «Что дальше?» fits one screen too: packs in one swipeable row, compact
   game cards without descriptions, the rating moved to a popup. */
.dashboard[data-post-game-step="feedback"] .qpg-replay-packs { gap: 10px; padding: 10px !important; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
/* .next-fit-2 (small screens): the packs go back to one swipeable row. */
.dashboard.next-fit-2[data-post-game-step="feedback"] .qpg-replay-grid {
  grid-template-columns: none;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 20px) / 3.25);
  margin: 0 -10px;
  padding: 2px 10px 4px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding: 0 10px;
  scrollbar-width: none;
}
.dashboard[data-post-game-step="feedback"] .qpg-replay-grid::-webkit-scrollbar { display: none; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-pack { scroll-snap-align: start; border-radius: 14px; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-copy { padding: 6px 8px 8px; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-copy strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-copy small { font-size: 11px; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-lock { top: 6px; left: 6px; width: 24px; height: 24px; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-check { top: 6px; right: 6px; width: 22px; height: 22px; font-size: 13px; }
.dashboard[data-post-game-step="feedback"] .qpg-replay-continue { padding-right: 12px !important; padding-left: 12px !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* The pack's name may wrap: «Сыграть ещё раз с набором «Самые неловкие вопросы»». */
.dashboard[data-post-game-step="feedback"] .qpg-replay-same { line-height: 1.2; white-space: normal; text-overflow: clip; }
.dashboard[data-post-game-step="feedback"] .qpg-more-games { padding-top: 6px !important; }
.dashboard[data-post-game-step="feedback"] .qpg-more-games .qpg-section-title { margin-bottom: 8px; font-size: 18px; }
.dashboard[data-post-game-step="feedback"] .qpg-game-card--catalog { min-height: 0; align-items: center; padding: 8px 10px; }
.dashboard[data-post-game-step="feedback"] .qpg-game-card--catalog .qpg-game-image { width: 48px; height: 48px; margin-right: 12px; border-radius: 11px; }
.dashboard[data-post-game-step="feedback"] .qpg-game-card--catalog .qpg-game-copy small { margin-top: 2px; font-size: 12px; line-height: 1.3; -webkit-line-clamp: 2; }
.dashboard[data-post-game-step="feedback"] .qpg-game-tags { padding-left: 60px; margin-top: 6px; }
/* .next-fit-1: game cards drop their description first. */
.dashboard.next-fit-1[data-post-game-step="feedback"] .qpg-game-card--catalog .qpg-game-copy small { display: none; }
.dashboard.next-fit-1[data-post-game-step="feedback"] .qpg-game-tags { margin-top: -22px; }
.dashboard.next-fit-1[data-post-game-step="feedback"] .qpg-game-card--catalog .qpg-game-copy { padding: 0 0 22px; }
/* «Другие игры» is the game's secondary button (styled with the other buttons above). */
.dashboard[data-post-game-step="feedback"] .catalog-link { margin-top: 4px; }
.dashboard.next-fit-3[data-post-game-step="feedback"] .catalog-link { margin-top: 0; }
.dashboard.next-fit-3[data-post-game-step="feedback"] .qpg-more-games { padding-top: 0 !important; }
.dashboard.next-fit-3[data-post-game-step="feedback"] .qpg-more-games .qpg-section-title { margin-bottom: 4px; }
.dashboard[data-post-game-step="feedback"] .qpg-flow-feedback > .qpg-flow-title { min-height: 40px; }
.dashboard[data-post-game-step="feedback"] #post-game { padding-top: 0; }
