/* Пять предметных сцен наследуют бумагу и цвет своей игры. */
:is(.gp-sell,.gp-bottle,.gp-three,.gp-hangman,.gp-letter){--party-paper:var(--game-paper,var(--surface));--party-tint:var(--game-tint,var(--soft));--party-ink:var(--game-ink,var(--ink));--party-edge:var(--game-edge,var(--line));--party-caption:var(--game-caption,var(--muted));--party-faint:var(--game-faint,var(--soft))}
.party-actor{margin:0 0 22px;font-size:13px;line-height:1.5;color:var(--party-caption);font-weight:650}.party-word-counter,.party-word-validation{margin:0;font-size:12px;line-height:1.65;color:var(--party-caption)}.party-word-counter{font-variant-numeric:tabular-nums}.party-word-validation.is-error{color:var(--danger,var(--ink))}.gp-letter .party-words-input[aria-invalid="true"]{border-color:var(--danger,var(--accent))}.gp-letter textarea:focus-visible{outline:3px solid var(--focus,var(--accent));outline-offset:3px}

/* Билет держит задание продавца, а оценки остаются отдельным простым действием. */
.party-sales-ticket{position:relative;width:min(100%,500px);margin:0 auto;padding:28px 30px 30px;border:1px solid var(--party-edge);border-radius:14px;background:var(--party-tint);color:var(--party-ink);box-shadow:0 4px 0 var(--party-faint)}.party-sales-ticket:before,.party-sales-ticket:after{content:'';position:absolute;top:50%;width:18px;height:18px;border:1px solid var(--party-edge);border-radius:50%;background:var(--party-paper);transform:translateY(-50%);pointer-events:none}.party-sales-ticket:before{left:-10px;border-left-color:transparent}.party-sales-ticket:after{right:-10px;border-right-color:transparent}.party-sales-symbol{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 22px;border:1.5px solid currentColor;border-radius:50%;color:var(--party-ink);font-size:34px;font-weight:750;line-height:1;transform:rotate(-8deg)}.party-sales-ticket .gp-prompt{font-size:clamp(23px,3.1vw,33px);line-height:1.35;letter-spacing:-.85px;color:var(--party-ink)}.party-stars{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;width:min(100%,460px);margin:3px auto 0}.party-stars .gp-button{min-width:0;min-height:66px;padding:12px 0;border:1px solid var(--party-edge);border-radius:12px;background:var(--party-paper);color:var(--party-ink);font-size:25px;font-weight:750;font-variant-numeric:tabular-nums}.party-stars .gp-button.is-selected{opacity:1;background:var(--party-ink);border-color:var(--party-ink);color:var(--party-paper)!important;box-shadow:0 3px 0 var(--party-tint)}.party-ratings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin-top:18px;text-align:left}.party-ratings p{margin:0;padding:12px 0;border-top:1px solid var(--party-edge);font-size:13px;line-height:1.6;overflow-wrap:anywhere;color:var(--party-caption)}

/* Круглый стол оставляет видимыми имена и направление горлышка. */
.party-bottle-board{position:relative;width:min(100%,440px);aspect-ratio:1;margin:8px auto 0;border:1px solid var(--party-edge);border-radius:50%;background:var(--party-faint);isolation:isolate}.party-bottle-board:before,.party-bottle-board:after{content:'';position:absolute;border:1px solid var(--party-edge);border-radius:50%;pointer-events:none;z-index:-1}.party-bottle-board:before{inset:10%}.party-bottle-board:after{inset:30%;border-style:dashed;opacity:.65}.party-bottle-ring{position:absolute;inset:0}.party-bottle-seat{position:absolute;transform:translate(-50%,-50%);width:60px;display:flex;flex-direction:column;align-items:center;gap:5px;z-index:2;pointer-events:none}.party-seat-avatar{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--party-edge);border-radius:50%;background:var(--party-paper);color:var(--party-ink);font-size:15px;font-weight:750;line-height:1;box-shadow:0 2px 0 var(--party-faint)}.party-seat-name{max-width:60px;font-size:11px;font-weight:650;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--party-caption)}.party-bottle-seat.is-selected .party-seat-avatar{background:var(--party-ink);color:var(--party-paper);border-color:var(--party-ink);outline:3px solid var(--party-tint);outline-offset:3px}.party-bottle-seat.is-selected .party-seat-name{font-weight:800;color:var(--party-ink)}.gp-bottle .gp-button-bottle{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:0;width:68px;height:166px;border:0;background:transparent;color:var(--party-ink);border-radius:12px;transform-origin:center;z-index:1}.gp-bottle .gp-button-bottle:disabled{opacity:1!important}.gp-bottle .gp-button-bottle>.party-bottle{filter:drop-shadow(3px 7px 3px #0002)}.party-selected{min-height:34px;margin:24px 0 0;font-size:clamp(22px,3vw,28px);font-weight:750;line-height:1.3;letter-spacing:-.65px;color:var(--party-ink);overflow-wrap:anywhere;text-wrap:balance}.party-bottle-board.is-crowded .party-seat-name{display:none}.party-bottle-board.is-crowded .party-seat-avatar{width:28px;height:28px;font-size:11px}.party-bottle-legend{text-align:left;font-size:12px;line-height:1.65;margin-top:18px;border-top:1px solid var(--party-edge);color:var(--party-caption)}.party-bottle-legend summary{min-height:48px;cursor:pointer;padding:12px 0;font-weight:650}.party-bottle-legend ol{padding-left:24px;margin:0 0 8px;columns:2;column-gap:24px}.party-bottle-legend li{padding:4px 8px 4px 0;overflow-wrap:anywhere;break-inside:avoid}

/* Секундомер остаётся главным объектом короткого устного раунда. */
.party-countdown{position:relative;display:grid;place-items:center;width:180px;height:180px;margin:28px auto 26px;border:6px solid var(--party-ink);border-radius:50%;background:var(--party-tint);box-shadow:inset 0 0 0 5px var(--party-paper);color:var(--party-ink);font-size:60px;font-weight:750;font-variant-numeric:tabular-nums;letter-spacing:-2px;line-height:1}.party-countdown:before{content:'';position:absolute;left:50%;top:-20px;width:32px;height:11px;background:var(--party-ink);border-radius:4px;transform:translateX(-50%)}.party-countdown:after{content:'';position:absolute;top:-12px;left:50%;width:8px;height:8px;background:var(--party-ink);transform:translateX(-50%)}.party-countdown.is-expired{background:var(--party-paper);border-style:dashed}.party-verdict{display:grid;grid-template-columns:1.2fr 1fr;gap:10px}.party-verdict .gp-button{min-height:54px}.gp-three .gp-scene>.gp-prompt{max-width:510px;margin:0 auto;font-size:clamp(24px,3.2vw,34px)}

/* Рисунок и открытые буквы читаются отдельно от доступных клавиш. */
.party-hangman{position:relative;width:min(100%,300px);height:auto;aspect-ratio:1;margin:0 auto 16px;isolation:isolate}.party-hangman-layer{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}.party-hangman-layer[hidden]{display:none}.party-word{--word-gap:clamp(2px,.65vw,6px);container-type:inline-size;display:grid;grid-template-columns:repeat(var(--word-length,1),minmax(0,1fr));gap:var(--word-gap);width:min(100%,calc(var(--word-length,1)*40px));margin:18px auto}.party-word>span{display:grid;place-items:center;min-width:0;min-height:41px;padding:1px 0 4px;border-bottom:2px solid var(--party-ink);border-radius:5px 5px 0 0;background:var(--party-faint);color:var(--party-ink);font-weight:750;font-size:min(26px,calc((100cqw - (var(--word-length,1) - 1)*var(--word-gap))/var(--word-length,1)*.78));line-height:1.2}.party-keyboard{display:grid;grid-template-columns:repeat(auto-fit,minmax(44px,1fr));gap:8px;width:min(100%,490px);margin:2px auto 0}.party-keyboard .gp-button{min-width:44px;min-height:48px;padding:10px 0;border-radius:9px;border-color:var(--party-edge);background:var(--party-paper);color:var(--party-ink);font-size:18px;font-weight:700}.party-keyboard .gp-button{position:relative}.party-keyboard .is-used{opacity:1}.party-keyboard .is-used.is-correct{opacity:1;background:color-mix(in srgb,var(--success) 14%,var(--party-paper));border-color:var(--success);color:var(--success)}.party-keyboard .is-used.is-missed{opacity:1;background:color-mix(in srgb,var(--danger) 12%,var(--party-paper));border-color:var(--danger);color:var(--danger);text-decoration:none}.party-keyboard .party-key-mark{position:absolute;top:4px;right:4px;width:10px;height:10px;pointer-events:none}.party-key-mark[hidden]{display:none}

/* Буква задаёт тему листа, линейки помогают собирать слова по одному. */
.party-letter-title{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:26px;width:min(100%,510px);margin:0 auto;padding:12px 0 18px}.party-letter{display:grid;place-items:center;width:96px;height:112px;border:1px solid var(--party-edge);border-radius:12px;background:var(--party-tint);color:var(--party-ink);box-shadow:4px 4px 0 var(--party-faint);font-size:70px;font-weight:750;line-height:1;transform:rotate(-5deg)}.party-letter-title .gp-prompt{text-align:left;font-size:clamp(23px,3vw,32px);color:var(--party-ink)}.party-letter-form{display:grid;gap:10px}.party-letter-form>.gp-label{margin:0;font-size:13px;color:var(--party-ink)}.gp-letter .party-words-input{resize:vertical;min-height:232px;padding:12px 18px 18px;font-family:inherit;font-size:16px;line-height:2;border-color:var(--party-edge);border-radius:12px;background-color:var(--party-paper);background-image:linear-gradient(to bottom,transparent calc(2em - 1px),var(--party-edge) calc(2em - 1px),var(--party-edge) 2em);background-size:100% 2em;background-origin:content-box;background-attachment:local;color:var(--party-ink)}.party-saved{margin:14px 0 0;font-size:12px;line-height:1.65;color:var(--party-caption)}.party-review,.party-lists{display:grid;gap:0;margin-top:22px}.party-list{text-align:left;border:0;border-top:1px solid var(--party-edge);border-radius:0;padding:18px 0}.party-list h3{font-size:15px;font-weight:750;line-height:1.5;margin:0 0 12px;overflow-wrap:anywhere;color:var(--party-ink)}.party-word-list{display:flex;flex-wrap:wrap;gap:8px}.party-word-list .gp-button,.party-word-item{max-width:100%;min-height:44px;padding:10px 12px;border:1px solid transparent;border-radius:8px;background:var(--party-tint);font-size:13px;line-height:1.65;overflow-wrap:anywhere;color:var(--party-ink)!important}.party-word-item{display:inline-block}.party-word-list .is-rejected{background:transparent;border-color:var(--party-edge);text-decoration:line-through;color:var(--party-caption)!important}.party-word-list .gp-button:disabled{opacity:1}

@media(hover:hover){.party-stars .gp-button:not(:disabled):not(.is-selected):hover,.party-keyboard .gp-button:not(:disabled):hover{background:var(--party-tint);border-color:var(--party-ink)}.party-word-list .gp-button:not(:disabled):hover{border-color:var(--party-ink)}}
@media(max-width:480px){.party-actor{margin-bottom:18px}.party-sales-ticket{padding:24px 22px 26px}.party-sales-symbol{width:50px;height:50px;margin-bottom:18px;font-size:30px}.party-stars{gap:7px}.party-stars .gp-button{min-height:59px;font-size:23px}.party-bottle-board{max-width:340px;margin-top:10px}.party-bottle-seat{width:48px;gap:3px}.party-seat-avatar{width:32px;height:32px;font-size:13px}.party-seat-name{max-width:48px;font-size:10px}.gp-bottle .gp-button-bottle{width:57px;height:140px}.party-selected{margin-top:23px;font-size:23px}.party-countdown{width:158px;height:158px;font-size:53px;margin-bottom:23px}.party-hangman{width:min(100%,250px);height:auto;margin-bottom:12px}.party-word>span{min-height:37px}.party-keyboard{gap:6px}.party-letter-title{gap:20px;padding:10px 0 14px}.party-letter{width:76px;height:90px;font-size:55px}.gp-letter .party-words-input{padding-inline:14px}.party-ratings{grid-template-columns:1fr}}
@media(max-width:360px){.party-verdict{grid-template-columns:1fr}.party-sales-ticket{padding-inline:18px}.party-stars{gap:5px}.party-stars .gp-button{min-height:55px;font-size:21px}.party-bottle-seat{width:42px}.party-seat-avatar{width:29px;height:29px;font-size:12px}.party-seat-name{max-width:42px}.gp-bottle .gp-button-bottle{width:51px;height:126px}.party-bottle-board.is-crowded .party-seat-avatar{width:24px;height:24px;font-size:10px}.party-selected{font-size:21px}.party-letter-title{gap:15px}.party-letter{width:68px;height:81px;font-size:50px}.party-letter-title .gp-prompt{font-size:22px}.party-bottle-legend ol{columns:1}}
@media(prefers-reduced-motion:reduce){.party-letter,.party-sales-symbol{transform:none}.gp-bottle .gp-button-bottle>.party-bottle{filter:none}:is(.gp-sell,.gp-bottle,.gp-three,.gp-hangman,.gp-letter) *{transition:none;scroll-behavior:auto}}

/* Сохраняет ориентацию и пропорции готового рисунка бутылки при вращении. */
.gp-bottle .gp-button-bottle>img.party-bottle{display:block;flex:none;width:130%;max-width:none;height:100%;margin:0;object-fit:fill;pointer-events:none}

/* Подготовка отделена от активного отсчёта одним понятным действием. */
.gp-table.gp-sell .party-sales-ticket.is-ready{box-shadow:none;border:1px solid var(--gp-edge);background:var(--gp-tint)}
.gp-table.gp-sell .party-sales-ticket.is-ready .gp-prompt{font-size:clamp(24px,4vw,32px);line-height:1.3}

/* Оставляет слово и место обратной связи неподвижными при открытии букв. */
.gp-table.gp-hangman>.gp-feedback{display:block;min-height:72px}.gp-table.gp-hangman>.gp-feedback:empty{visibility:hidden}

/* PNG-секундомер и его показания занимают отдельные слои. */
.gp-table.gp-three .party-countdown{position:relative;display:block;width:min(100%,230px);height:auto;aspect-ratio:1;margin:14px auto 18px;border:0;border-radius:0;background:none;box-shadow:none;letter-spacing:normal}
.gp-table.gp-three .party-countdown::before,.gp-table.gp-three .party-countdown::after{content:none}
.gp-table.gp-three .party-countdown-art{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.gp-table.gp-three .party-countdown-face{position:absolute;left:49.4%;top:59%;width:60%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--gp-ink);text-align:center}
.gp-table.gp-three .party-countdown-value{font-size:clamp(38px,9vw,56px);font-weight:800;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-2px;white-space:nowrap}
.gp-table.gp-three .party-countdown-label{font-size:11px;font-weight:700;line-height:1.25;letter-spacing:0;max-width:125px}
.gp-table.gp-three .party-countdown.is-expired .party-countdown-value{opacity:.7}
@media(max-width:480px){.gp-table.gp-three .party-countdown{width:min(100%,190px);margin:10px auto 14px}.gp-table.gp-three .party-countdown-value{font-size:44px}.gp-table.gp-three .party-countdown-label{font-size:10px}}

/* Подсказка не раскрывает ответ, цвет дополнен отметками и подписями. */
.party-hangman-hint{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:5px 8px;margin:0 auto 12px;max-width:100%;font-size:12px;line-height:1.6;color:var(--ink);overflow-wrap:anywhere}.party-hint-label{font-size:11px;color:var(--muted);margin-right:2px}.party-hint-separator{color:var(--muted)}.party-hangman-hint[hidden],.party-hangman-outcome[hidden]{display:none}.party-word>span.is-guessed,.party-word.is-solved>span{color:var(--success);border-color:var(--success);background:color-mix(in srgb,var(--success) 12%,var(--party-paper))}.party-word.is-failed>span{color:var(--danger);border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--party-paper))}.party-hangman-outcome{display:flex;align-items:center;justify-content:center;gap:7px;margin:0 0 8px;font-size:13px;font-weight:750}.party-hangman-outcome>svg{width:18px;height:18px;flex:none}.party-hangman-outcome.is-solved{color:var(--success)}.party-hangman-outcome.is-failed{color:var(--danger)}

/* Буква, тема и список держат одну сетку без наклона и разрозненных отступов. */
.gp-table.gp-letter{max-width:800px;margin-inline:auto}
.gp-table.gp-letter .party-letter-title{grid-template-columns:88px minmax(0,1fr);gap:22px;width:100%;margin:0;padding:0;text-align:left}
.gp-table.gp-letter .party-letter{width:88px;height:100px;border-radius:14px;font-size:64px;transform:none;box-shadow:none}
.gp-table.gp-letter .party-letter-title .gp-prompt{min-width:0;max-width:none;margin:0;font-size:clamp(24px,3vw,32px);line-height:1.3;letter-spacing:-.7px;text-align:left;text-wrap:pretty}
.gp-table.gp-letter .gp-scene>.gp-next-step{max-width:none;margin:16px 0 0;font-size:13px;line-height:1.65;text-align:left}
.gp-table.gp-letter .gp-interact{margin-top:22px}
.gp-table.gp-letter .party-letter-form{gap:10px}
.party-letter-form-heading{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:5px 16px}
.party-letter-form-heading>.gp-label{margin:0}
.party-letter-form-heading>.party-word-counter{flex:none}
.gp-table.gp-letter .party-words-input{min-height:192px;padding:14px 16px;font-size:16px;line-height:1.65;background-image:none}
.party-letter-form-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 20px}
.party-letter-form-footer>.party-saved{min-width:0;margin:0;text-align:left;overflow-wrap:anywhere}
.party-letter-form-footer>.gp-button{min-width:200px}
.gp-table.gp-letter .party-review{margin-top:18px}
@media(max-width:480px){.gp-table.gp-letter .party-letter-title{grid-template-columns:64px minmax(0,1fr);gap:16px}.gp-table.gp-letter .party-letter{width:64px;height:78px;border-radius:12px;font-size:48px}.gp-table.gp-letter .party-letter-title .gp-prompt{font-size:24px;letter-spacing:-.5px}.gp-table.gp-letter .gp-scene>.gp-next-step{margin-top:14px;font-size:12px}.gp-table.gp-letter .gp-interact{margin-top:18px}.gp-table.gp-letter .party-words-input{min-height:176px}.party-letter-form-heading>.gp-label{font-size:12px}.party-letter-form-footer{grid-template-columns:minmax(0,1fr);gap:8px}.party-letter-form-footer>.gp-button{width:100%;min-width:0}}
