/* Главный экран: всё крупное, читается с дивана. Размеры через clamp(), чтобы работало от ноутбука до ТВ. */
body.host {
  font-size: clamp(16px, 1.25vw, 28px);
  min-height: 100vh;
  overflow-x: hidden;
}

.stage {
  min-height: 100vh;
  padding: 2.2em 3em;
}

.stage > * {
  min-height: calc(100vh - 4.4em);
}

.col {
  display: flex;
  flex-direction: column;
  gap: 1.2em;
}

.grow {
  flex: 1;
}

.center {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.center-text {
  text-align: center;
}

.title {
  font-size: 3.2em;
  font-weight: 900;
  margin: 0;
  text-shadow: 0 0.08em 0 rgba(0, 0, 0, 0.25);
}

.lead {
  font-size: 1.4em;
  opacity: 0.9;
  margin: 0;
}

.hint {
  opacity: 0.7;
  margin: 0;
}

.kicker {
  font-size: 2.4em;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--yellow);
}

.mega {
  font-size: 14em;
  font-weight: 900;
  line-height: 1;
  text-shadow: 0 0.06em 0 rgba(0, 0, 0, 0.3);
}

.badge,
.banner {
  display: inline-block;
  padding: 0.4em 1.2em;
  border-radius: 999px;
  background: var(--pink);
  font-size: 1.8em;
  font-weight: 900;
  box-shadow: var(--shadow);
}

.banner.sweep {
  background: var(--yellow);
  color: var(--ink);
  font-size: 2.6em;
  animation-name: pop, wiggle;
  animation-duration: 0.6s, 0.5s;
  animation-delay: 1.3s, 2s;
  animation-iteration-count: 1, 3;
}

/* --- панель инструментов --- */
.toolbar {
  position: fixed;
  top: 0.8rem;
  right: 0.8rem;
  display: flex;
  gap: 0.5rem;
  z-index: 10;
  opacity: 0.35;
  transition: opacity 0.2s;
}

.toolbar:hover,
.toolbar:focus-within {
  opacity: 1;
}

.tool {
  border: 0;
  border-radius: 999px;
  padding: 0.5rem 0.9rem;
  background: rgba(0, 0, 0, 0.35);
  color: #fff;
  font-size: 0.85rem;
  font-weight: 600;
}

.tool[hidden] {
  display: none;
}

/* --- лобби --- */
.lobby {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.3fr);
  gap: 2.5em;
  align-items: center;
}

.join-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.4em;
}

.logo {
  display: block;
  width: min(100%, 22em);
  height: auto;
  margin-bottom: 0.8em;
  filter: drop-shadow(0 0.3em 0.6em rgba(0, 0, 0, 0.25));
}

/* Маленький логотип в углу во время игры */
.host-brand {
  position: fixed;
  left: 1.2em;
  bottom: 1em;
  width: 9em;
  height: auto;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s;
  z-index: 3;
}

body.in-game .host-brand {
  opacity: 0.85;
}

.join-step {
  font-size: 1.3em;
  opacity: 0.85;
}

.join-url {
  font-size: 2em;
  font-weight: 800;
  padding: 0.2em 0.8em;
  border-radius: 0.6em;
  background: rgba(0, 0, 0, 0.25);
  margin-bottom: 0.4em;
  overflow-wrap: anywhere;
}

.room-code {
  display: flex;
  gap: 0.15em;
  margin: 0.1em 0 0.3em;
}

.room-code span {
  display: grid;
  place-items: center;
  width: 1.15em;
  height: 1.3em;
  font-size: 5.5em;
  font-weight: 900;
  color: var(--ink);
  background: var(--paper);
  border-radius: 0.18em;
  box-shadow: 0 0.08em 0 rgba(0, 0, 0, 0.3);
  animation: pop 0.6s cubic-bezier(0.2, 0.9, 0.3, 1.3) both;
}

.qr {
  width: 11em;
  height: 11em;
  border-radius: 0.8em;
  background: #fff;
  padding: 0.4em;
  box-shadow: var(--shadow);
  image-rendering: pixelated;
}

.join-hint {
  opacity: 0.75;
}

.players-panel h2 {
  font-size: 2em;
  margin: 0.4em 0;
}

.players-panel .count {
  opacity: 0.6;
}

.game-badge {
  display: inline-block;
  padding: 0.5em 1em;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.25);
  font-size: 1.1em;
}

.game-picker {
  display: flex;
  gap: 0.6em;
  margin-top: 0.6em;
}

.game-picker:empty {
  display: none;
}

.player-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1em;
}

.player-slot {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4em;
  padding: 1em 0.5em;
  border-radius: var(--radius);
  background: var(--white-soft);
  text-align: center;
}

.player-slot.empty {
  background: transparent;
  border: 0.15em dashed rgba(255, 255, 255, 0.3);
  opacity: 0.6;
}

.avatar.big {
  font-size: 2em;
}

.avatar.huge {
  font-size: clamp(2.5em, 7vh, 4.5em);
}

.avatar.tiny {
  display: inline-grid;
  font-size: 0.55em;
  vertical-align: middle;
  margin-left: 0.15em;
}

.avatar.ghost {
  background: transparent;
  border-style: dashed;
  border-color: rgba(255, 255, 255, 0.4);
  box-shadow: none;
}

.player-name {
  font-size: 1.25em;
  font-weight: 800;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.player-note {
  font-size: 0.85em;
  opacity: 0.7;
}

.offline-player {
  opacity: 0.45;
  filter: grayscale(0.8);
}

.crown {
  position: absolute;
  top: -0.6em;
  font-size: 1.6em;
  transform: rotate(-12deg);
}

.lobby-status {
  margin-top: 1.4em;
  padding: 0.8em 1.2em;
  border-radius: var(--radius);
  background: rgba(0, 0, 0, 0.25);
  font-size: 1.4em;
  font-weight: 700;
  text-align: center;
}

.lobby-status.ready {
  background: var(--mint);
  color: var(--ink);
  animation: pulse 1s ease-in-out infinite alternate;
}

/* --- общая шапка игровых экранов --- */
.top-bar {
  display: flex;
  align-items: center;
  gap: 1em;
  min-height: 5em;
}

.top-bar .timer {
  margin-left: auto;
}

.timer.big {
  font-size: 1.5em;
}

.pill {
  padding: 0.5em 1.2em;
  border-radius: 999px;
  background: var(--yellow);
  color: var(--ink);
  font-weight: 900;
  font-size: 1.2em;
}

.pill.soft {
  background: rgba(0, 0, 0, 0.25);
  color: #fff;
}

/* --- написание ответов --- */
.progress {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.2em;
  margin-top: 2em;
}

.progress-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4em;
  width: 9em;
  padding: 1em 0.5em;
  border-radius: var(--radius);
  background: var(--white-soft);
  transition: background 0.3s, transform 0.3s;
}

.progress-item .avatar {
  animation: wiggle 1s ease-in-out infinite;
}

.progress-item.done {
  background: var(--mint);
  color: var(--ink);
  transform: translateY(-0.3em);
}

.progress-item.done .avatar {
  animation: none;
}

.progress-mark {
  font-weight: 700;
}

/* --- голосование --- */
.prompt-card {
  align-self: center;
  max-width: 32em;
  padding: 0.8em 1.4em;
  border-radius: var(--radius);
  background: var(--paper);
  color: var(--ink);
  font-size: 2.2em;
  font-weight: 800;
  text-align: center;
  box-shadow: var(--shadow);
}

.versus {
  flex: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 1.5em;
}

.vs {
  font-size: 3em;
  font-weight: 900;
  color: var(--yellow);
  text-shadow: 0 0.08em 0 rgba(0, 0, 0, 0.35);
}

.answer-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.8em;
  min-height: 9em;
  padding: 1.4em;
  border-radius: 1.4em;
  color: var(--ink);
  text-align: center;
  box-shadow: 0 0.4em 0 rgba(0, 0, 0, 0.25);
  transition: transform 0.5s, opacity 0.5s;
}

.answer-card.left {
  background: #ffe066;
  transform: rotate(-1.5deg);
}

.answer-card.right {
  background: #8ce99a;
  transform: rotate(1.5deg);
}

.answer-card.winner {
  transform: scale(1.05) rotate(0);
  outline: 0.25em solid #fff;
}

.answer-card.loser {
  opacity: 0.75;
  transform: scale(0.95);
}

.answer-text {
  font-size: 2.2em;
  font-weight: 800;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.author {
  display: flex;
  align-items: center;
  gap: 0.5em;
  font-size: 1.3em;
  font-weight: 800;
}

.votes-line {
  display: flex;
  align-items: center;
  gap: 0.4em;
  font-size: 1.2em;
  font-weight: 700;
}

.voters .avatar.tiny {
  font-size: 0.8em;
}

.points {
  position: absolute;
  top: -0.7em;
  right: -0.4em;
  padding: 0.2em 0.6em;
  border-radius: 999px;
  background: var(--pink);
  color: #fff;
  font-size: 1.6em;
  font-weight: 900;
  box-shadow: var(--shadow);
}

.winner-tag {
  position: absolute;
  top: -0.9em;
  left: 50%;
  margin-left: -3em;
  width: 6em;
  padding: 0.2em 0;
  border-radius: 999px;
  background: var(--ink);
  color: var(--yellow);
  font-weight: 900;
}

.vote-status,
.result-banner {
  text-align: center;
  min-height: 3.5em;
}

.voted-count {
  font-size: 1.4em;
  font-weight: 700;
}

/* --- таблицы результатов --- */
.standings {
  list-style: none;
  margin: 0 auto;
  padding: 0;
  width: min(100%, 48em);
  display: flex;
  flex-direction: column;
  gap: 0.6em;
}

.standing {
  display: grid;
  grid-template-columns: 2em auto minmax(6em, 10em) 1fr 5em 4em;
  align-items: center;
  gap: 0.8em;
  padding: 0.5em 1em;
  border-radius: var(--radius);
  background: var(--white-soft);
  font-size: 1.3em;
}

.standing:first-child {
  background: rgba(255, 214, 10, 0.3);
}

.rank {
  font-weight: 900;
  font-size: 1.3em;
  text-align: center;
}

.standing-name {
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bar {
  height: 0.8em;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.2);
  overflow: hidden;
}

.bar i {
  display: block;
  height: 100%;
  border-radius: inherit;
  animation: grow 1.2s 0.4s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

@keyframes grow {
  from {
    width: 0;
  }
}

.standing-score {
  font-weight: 900;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.delta {
  color: var(--mint);
  font-weight: 800;
}

/* --- финал --- */
.final {
  align-items: center;
  justify-content: center;
}

.winners {
  display: flex;
  gap: 3em;
}

.winner-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3em;
}

.big-crown {
  font-size: 3em;
  margin-bottom: -0.3em;
  position: static;
}

.winner-name {
  font-size: 2.8em;
  font-weight: 900;
}

.final .standings {
  width: min(100%, 40em);
  font-size: 0.85em;
}

.final-actions {
  display: flex;
  gap: 1em;
  font-size: 1.3em;
  position: relative;
  z-index: 6;
}

@media (max-width: 900px) {
  .stage {
    padding: 1.2em;
  }
  .lobby {
    grid-template-columns: 1fr;
  }
  .player-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .versus {
    grid-template-columns: 1fr;
  }
  .standing {
    grid-template-columns: 2em auto 1fr 4em 3em;
  }
  .standing .bar {
    display: none;
  }
}

/* ================= сборник: выбор игры ================= */
.game-picker {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.6em;
}

.game-card {
  display: flex;
  flex-direction: column;
  gap: 0.15em;
  padding: 0.7em 0.9em;
  border: 0.15em solid transparent;
  border-radius: var(--radius);
  background: rgba(0, 0, 0, 0.25);
  color: #fff;
  text-align: left;
  transition: transform 0.15s, background 0.2s;
}

.game-card b {
  font-size: 1.25em;
}

.game-card span {
  font-size: 0.9em;
  opacity: 0.85;
}

.game-card small {
  opacity: 0.6;
}

.game-card:hover {
  transform: translateY(-2px);
}

.game-card.selected {
  background: var(--yellow);
  color: var(--ink);
  border-color: #fff;
  box-shadow: var(--shadow);
}

.game-badge[hidden] {
  display: none;
}

/* ================= общие игровые блоки ================= */
.progress.compact {
  margin-top: 0;
  gap: 0.6em;
}

.progress.compact .progress-item {
  width: auto;
  flex-direction: row;
  padding: 0.4em 0.8em;
  font-size: 0.85em;
}

.progress.compact .progress-item .avatar {
  font-size: 1.3em;
}

.prompt-card.fact {
  font-size: 2em;
  max-width: 36em;
}

.prompt-lead {
  font-size: 0.6em;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--bg-2);
  margin-bottom: 0.2em;
}

.prompt-card.big-prompt {
  font-size: 2.6em;
}

/* --- блеф: варианты и разоблачение --- */
.bluff-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14em, 1fr));
  gap: 0.8em;
}

.bluff-option {
  padding: 0.8em 1em;
  border-radius: var(--radius);
  background: var(--paper);
  color: var(--ink);
  font-size: 1.5em;
  font-weight: 800;
  text-align: center;
  box-shadow: var(--shadow);
  overflow-wrap: anywhere;
}

.bluff-option:nth-child(3n + 2) {
  background: #ffe066;
}

.bluff-option:nth-child(3n) {
  background: #8ce99a;
}

.bluff-reveal {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16em, 1fr));
  gap: 0.9em;
}

.reveal-card {
  display: flex;
  flex-direction: column;
  gap: 0.4em;
  padding: 0.9em 1.1em;
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.92);
  color: var(--ink);
  box-shadow: var(--shadow);
}

.reveal-card.truth {
  background: var(--mint);
  outline: 0.2em solid #fff;
  transform: scale(1.03);
}

.reveal-text {
  font-size: 1.6em;
  font-weight: 900;
  overflow-wrap: anywhere;
}

.reveal-label {
  font-weight: 800;
  color: #c9184a;
}

.reveal-label.truth {
  color: var(--ink);
  font-size: 1.2em;
}

.reveal-label .who {
  margin-right: 0.4em;
  white-space: nowrap;
}

.reveal-pickers {
  font-size: 0.95em;
  opacity: 0.85;
}

/* --- «Кто из нас?» --- */
.candidates {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1em;
  margin-top: 1em;
}

.candidate {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4em;
  width: 9em;
  padding: 1em 0.5em;
  border-radius: var(--radius);
  background: var(--white-soft);
  transition: background 0.3s;
}

.candidate .voted-mark {
  font-size: 0.85em;
  font-weight: 700;
  opacity: 0;
  transition: opacity 0.3s;
}

.candidate.has-voted {
  background: rgba(6, 214, 160, 0.35);
}

.candidate.has-voted .voted-mark {
  opacity: 1;
}

.vote-bars {
  display: flex;
  flex-direction: column;
  gap: 0.6em;
  width: min(100%, 52em);
  margin: 0 auto;
}

.vote-bar {
  display: grid;
  grid-template-columns: auto minmax(6em, 9em) 1fr auto 2.5em;
  align-items: center;
  gap: 0.8em;
  padding: 0.5em 1em;
  border-radius: var(--radius);
  background: var(--white-soft);
  font-size: 1.25em;
}

.vote-bar.lead {
  background: rgba(255, 214, 10, 0.35);
}

.bar-voters {
  display: flex;
  gap: 0.15em;
  min-width: 2em;
}

.title-banner {
  align-self: center;
  font-size: 2em;
  text-align: center;
}

.titles-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15em, 1fr));
  gap: 0.8em;
  width: min(100%, 60em);
}

.title-card {
  padding: 0.7em 1em;
  border-radius: var(--radius);
  background: var(--white-soft);
}

.title-card-head {
  display: flex;
  align-items: center;
  gap: 0.5em;
  font-size: 1.15em;
}

.title-card-head .standing-name {
  flex: 1;
}

.title-card ul {
  margin: 0.4em 0 0;
  padding: 0;
  list-style: none;
  font-weight: 600;
}

/* --- «Каляки» --- */
.art-layout {
  flex: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
  gap: 2em;
  align-items: center;
}

.artwork {
  margin: 0;
  justify-self: center;
  width: min(100%, 68vh);
  padding: 0.6em 0.6em 0.3em;
  border-radius: 0.6em;
  background: #fff;
  color: var(--ink);
  box-shadow: 0 0.5em 1.5em rgba(0, 0, 0, 0.35);
  transform: rotate(-1.5deg);
}

.artwork img {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  border-radius: 0.3em;
}

.artwork figcaption {
  padding: 0.3em 0;
  text-align: center;
  font-weight: 800;
}

.art-side .bluff-options,
.art-side .bluff-reveal {
  grid-template-columns: repeat(auto-fit, minmax(11em, 1fr));
}

.side-title {
  font-size: 2em;
  margin: 0;
}

@media (max-width: 900px) {
  .art-layout {
    grid-template-columns: 1fr;
  }
  .game-picker {
    grid-template-columns: 1fr;
  }
}

/* ================= «Смертельный квиз» ================= */
.maniac {
  display: flex;
  align-items: center;
  gap: 1em;
  align-self: center;
  max-width: 46em;
}

.maniac-face {
  font-size: 4em;
  filter: drop-shadow(0 0 0.3em rgba(255, 77, 109, 0.7));
}

.maniac.big .maniac-face {
  font-size: 8em;
}

.maniac-speech {
  position: relative;
  padding: 0.8em 1.2em;
  border-radius: 1em;
  background: var(--paper);
  color: var(--ink);
  font-size: 1.35em;
  font-weight: 700;
  box-shadow: var(--shadow);
}

.kicker.blood {
  color: var(--pink);
  text-shadow: 0 0 0.4em rgba(255, 77, 109, 0.6);
}

.quiz-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9em;
}

.quiz-options.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.quiz-option {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6em;
  padding: 0.8em 1.1em;
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.92);
  color: var(--ink);
  font-size: 1.6em;
  font-weight: 800;
  box-shadow: var(--shadow);
  transition: opacity 0.4s, transform 0.4s;
}

.quiz-option > b {
  display: grid;
  place-items: center;
  width: 1.6em;
  height: 1.6em;
  border-radius: 50%;
  background: var(--ink);
  color: var(--yellow);
  font-size: 0.8em;
}

.quiz-option.right {
  background: var(--mint);
  transform: scale(1.03);
}

.quiz-option.wrong {
  opacity: 0.55;
}

.option-voters {
  flex-basis: 100%;
  min-height: 1em;
  font-size: 0.75em;
}

.danger-banner {
  align-self: center;
  padding: 0.6em 1.4em;
  border-radius: 999px;
  background: #c9184a;
  font-size: 1.6em;
  font-weight: 900;
  text-align: center;
  box-shadow: 0 0 1.5em rgba(255, 77, 109, 0.5);
}

.doomed .avatar.big {
  font-size: 3em;
  animation: shake 0.8s ease-in-out infinite;
}

.cups,
.doors {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 1.4em;
}

.cup,
.door {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2em;
  min-width: 4.5em;
  padding: 0.6em 0.8em;
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.08);
  font-size: 3.4em;
  line-height: 1;
}

.door {
  font-size: 5em;
}

.cup small,
.door small {
  font-size: 0.3em;
  font-weight: 900;
}

.cup .faces,
.door .faces {
  font-size: 0.35em;
  min-height: 1.4em;
}

.cup.poisoned,
.door.maniac-door {
  background: rgba(201, 24, 74, 0.55);
  box-shadow: 0 0 1em rgba(255, 77, 109, 0.6);
}

.mega.shake {
  font-size: 8em;
  animation: shake 0.6s ease-in-out infinite;
}

.math-results {
  display: flex;
  flex-direction: column;
  gap: 0.6em;
  width: min(100%, 44em);
  margin: 0 auto;
}

.math-row {
  display: grid;
  grid-template-columns: auto minmax(5em, 9em) 1fr auto auto;
  align-items: center;
  gap: 0.8em;
  padding: 0.5em 1em;
  border-radius: var(--radius);
  font-size: 1.3em;
  background: rgba(6, 214, 160, 0.25);
}

.math-row.dead {
  background: rgba(201, 24, 74, 0.45);
}

/* --- дорожка финала --- */
.track {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.35em;
  padding: 0.8em 5em 0.8em 1em;
  border-radius: var(--radius);
  background: rgba(0, 0, 0, 0.3);
}

.lane {
  display: grid;
  grid-template-columns: 7em 1fr;
  align-items: center;
  gap: 0.6em;
}

.lane-name {
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.lane-road {
  position: relative;
  height: 2.4em;
  border-radius: 999px;
  background: repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.12) 0 2px, transparent 2px calc(100% / 9));
}

.runner {
  --pos: 0;
  position: absolute;
  top: 50%;
  left: calc(var(--pos) * (100% - 2.2em));
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 0.3em;
  transition: left 1.2s cubic-bezier(0.3, 1.3, 0.5, 1);
}

.runner .gain {
  color: var(--mint);
  font-weight: 900;
}

.exit-door {
  position: absolute;
  right: 0.8em;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: 3em;
  line-height: 1;
}

.exit-door small {
  font-size: 0.25em;
  font-weight: 900;
  letter-spacing: 0.1em;
  color: var(--mint);
}

@media (max-width: 900px) {
  .quiz-options,
  .quiz-options.three {
    grid-template-columns: 1fr;
  }
}
