/* ==================== 直播课堂 ==================== */

/* ---------- 入口页 ---------- */
.lv-pin-input {
  max-width: 220px; text-align: center; font-size: 22px; letter-spacing: 4px; font-weight: 700;
}
.lv-pin-input.big { max-width: none; width: 100%; font-size: 26px; padding: 14px; }
.lv-join-card { max-width: 460px; margin: 10px auto 22px; }
.lv-quiz-card .book-name { font-size: 16px; }

.lv-exp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; }
.lv-exp {
  border: 2px solid var(--line); border-radius: 12px; padding: 10px 12px; cursor: pointer;
  background: var(--card); transition: .12s;
}
.lv-exp:hover { border-color: var(--text-dim); }
.lv-exp.on { border-color: var(--gold); background: color-mix(in srgb, var(--gold) 10%, var(--card)); }
.lv-exp-emoji { font-size: 22px; }
.lv-exp-name { font-weight: 700; margin: 2px 0; }
.lv-exp-desc { font-size: 12px; color: var(--text-dim); line-height: 1.5; }
.lv-tag { font-size: 10px; font-weight: 500; background: var(--bg-soft); border-radius: 999px; padding: 1px 7px; margin-left: 6px; }
.lv-setting { display: block; font-size: 14px; margin: 6px 0; cursor: pointer; }

/* ---------- 编辑器 ---------- */
.lv-edit-title { font-size: 18px; font-weight: 600; }
.lv-edit-layout { display: grid; grid-template-columns: 280px 1fr; gap: 14px; align-items: start; }
@media (max-width: 800px) { .lv-edit-layout { grid-template-columns: 1fr; } }
.lv-edit-list {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  max-height: 55vh; overflow-y: auto;
}
.lv-edit-item {
  display: flex; align-items: center; gap: 8px; padding: 9px 12px; cursor: pointer;
  border-bottom: 1px solid var(--line); font-size: 14px;
}
.lv-edit-item:last-child { border-bottom: 0; }
.lv-edit-item:hover { background: var(--card-2); }
.lv-edit-item.on { background: color-mix(in srgb, var(--gold) 14%, var(--card)); }
.lv-edit-no { width: 22px; height: 22px; border-radius: 6px; background: var(--bg-soft); display: grid; place-items: center; font-size: 12px; flex: none; }
.lv-edit-item-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-add-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.lv-add-btn {
  display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 4px;
  border: 1px solid var(--line); border-radius: 10px; background: var(--card); cursor: pointer; font-size: 18px;
}
.lv-add-btn:hover { border-color: var(--gold); }
.lv-edit-fields { margin-top: 6px; }
.lv-opt-list { display: flex; flex-direction: column; gap: 7px; }
.lv-opt-row { display: flex; align-items: center; gap: 8px; }
.lv-opt-row input[type=text] { flex: 1; }
.lv-shape { width: 32px; height: 32px; flex: none; border-radius: 8px; color: #fff; display: grid; place-items: center; font-size: 14px; }
.lv-order { width: 28px; flex: none; text-align: center; font-weight: 700; color: var(--text-dim); }
.lv-correct { font-size: 13px; white-space: nowrap; cursor: pointer; }
.lv-media-preview { flex: 1; display: flex; align-items: center; justify-content: center; min-height: 60px; }
.lv-media.emoji { font-size: 48px; }
.lv-media.img { max-height: 90px; max-width: 100%; border-radius: 8px; }

/* ---------- 投屏 / 手机舞台模式：隐藏网站外壳 ---------- */
body.lv-stage-mode .topbar, body.lv-stage-mode .footer { display: none; }
body.lv-stage-mode main { max-width: none; padding: 0; }
body.lv-stage-mode { background: #2a1a5e; }

.lv-stage {
  min-height: 100vh; color: #fff; display: flex; flex-direction: column;
  background: radial-gradient(circle at 20% 10%, #4b2a9e 0%, #2a1a5e 55%, #1a0f3d 100%);
}
.lv-stage .muted, .lv-stage .small.muted { color: rgba(255,255,255,.7); }
.lv-top { display: flex; align-items: center; justify-content: space-between; padding: 12px 22px; gap: 12px; }
.lv-top-left { display: flex; align-items: center; gap: 14px; }
.lv-top-pin { background: rgba(255,255,255,.14); padding: 4px 12px; border-radius: 999px; font-size: 14px; }
.lv-top-pin b { letter-spacing: 2px; }
.lv-top-exp { font-size: 14px; opacity: .8; }
.lv-top-right { display: flex; gap: 8px; }
.lv-icon-btn {
  width: 36px; height: 36px; border-radius: 10px; border: 0; cursor: pointer;
  background: rgba(255,255,255,.14); color: #fff; font-size: 16px;
}
.lv-icon-btn:hover { background: rgba(255,255,255,.25); }
.lv-qno { background: rgba(255,255,255,.14); padding: 4px 14px; border-radius: 999px; font-weight: 700; }
.lv-center { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: 20px; text-align: center; }
.lv-big-btn { font-size: 20px; padding: 12px 34px; border-radius: 12px; margin-top: 18px; }
.lv-stage .btn:not(.primary) { background: rgba(255,255,255,.12); color: #fff; border-color: rgba(255,255,255,.25); }
.lv-stage .btn.primary { background: #fff; color: #2a1a5e; border-color: #fff; font-weight: 700; }

/* 大厅 */
.lv-lobby { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 10px 24px 30px; text-align: center; }
.lv-lobby-join {
  display: grid; grid-template-columns: auto auto; align-items: center; gap: 6px 22px;
  background: #fff; color: #222; border-radius: 16px; padding: 18px 30px; margin-top: 6px;
  box-shadow: 0 12px 40px rgba(0,0,0,.3);
}
.lv-lobby-step { font-size: 15px; color: #666; text-align: right; }
.lv-lobby-url { font-size: clamp(20px, 3vw, 34px); font-weight: 700; text-align: left; }
.lv-lobby-pin { font-size: clamp(44px, 8vw, 96px); font-weight: 900; letter-spacing: 6px; text-align: left; line-height: 1.1; }
.lv-lobby-title { font-size: 22px; font-weight: 700; margin-top: 22px; }
.lv-lobby-sub { font-weight: 400; opacity: .75; font-size: 16px; }
.lv-lobby-count { font-size: 18px; margin: 16px 0 8px; font-weight: 700; }
.lv-lobby-preset { font-size: 15px; margin: 0 0 10px; opacity: .9; }
a.lv-icon-btn { text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.lv-lobby-players { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; max-width: 1100px; }
.lv-lobby-player {
  background: #fff; color: #222; border: 3px solid transparent; border-radius: 10px;
  padding: 8px 16px; font-size: 18px; font-weight: 700; cursor: pointer; animation: pop .25s;
}
.lv-lobby-player:hover { text-decoration: line-through; opacity: .8; }
.lv-lobby-actions { display: flex; flex-direction: column; align-items: center; gap: 6px; margin-top: 10px; }

/* 倒计时 */
.lv-count-q { font-size: 20px; opacity: .85; }
.lv-count-n { font-size: clamp(90px, 18vw, 200px); font-weight: 900; line-height: 1; }
.lv-count-prompt { font-size: clamp(22px, 3.2vw, 38px); font-weight: 700; max-width: 1000px; }

/* 答题 */
.lv-q-wrap { flex: 1; display: grid; grid-template-columns: 130px 1fr 130px; align-items: center; gap: 10px; padding: 0 18px 24px; }
@media (max-width: 800px) { .lv-q-wrap { grid-template-columns: 1fr; } .lv-q-side { flex-direction: row !important; gap: 12px; } }
.lv-q-side { display: flex; flex-direction: column; align-items: center; }
.lv-q-center { display: flex; flex-direction: column; align-items: center; }
.lv-timer {
  width: 96px; height: 96px; border-radius: 50%; background: #fff; color: #2a1a5e;
  display: grid; place-items: center; font-size: 40px; font-weight: 900;
}
.lv-timer.low { background: #e21b3c; color: #fff; animation: pulse .5s infinite alternate; }
.lv-answered { font-size: 52px; font-weight: 900; }
.lv-replay { margin-top: 16px; }
.lv-h-q { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.lv-h-prompt {
  background: #fff; color: #222; border-radius: 14px; padding: 16px 26px; text-align: center;
  font-size: clamp(22px, 3.4vw, 42px); font-weight: 800; max-width: 1100px; width: 100%;
  font-family: Georgia, "PingFang SC", "Microsoft YaHei", serif;
}
.lv-h-media.emoji { font-size: clamp(70px, 11vw, 140px); line-height: 1; }
.lv-h-media.img { max-height: 30vh; max-width: 80%; border-radius: 12px; }
.lv-h-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; width: 100%; max-width: 1200px; }
.lv-h-opts.n2 { grid-template-columns: 1fr 1fr; }
.lv-h-opts.n5, .lv-h-opts.n6 { grid-template-columns: 1fr 1fr 1fr; }
.lv-h-opt {
  display: flex; align-items: center; gap: 14px; padding: 18px 22px; border-radius: 12px;
  font-size: clamp(18px, 2.4vw, 30px); font-weight: 700; color: #fff; min-height: 80px;
  box-shadow: 0 5px 0 rgba(0,0,0,.25); font-family: Georgia, "PingFang SC", serif;
}
.lv-h-icon { font-size: 28px; }
.lv-h-hint { font-size: 17px; opacity: .8; text-align: center; }
.lv-h-puzzle { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.lv-h-piece {
  background: #fff; color: #222; border-radius: 10px; padding: 12px 20px;
  font-size: clamp(18px, 2.4vw, 30px); font-weight: 700; font-family: Georgia, serif;
}
.lv-h-piece.ok { background: #26890c; color: #fff; }
.lv-h-slider { display: flex; align-items: center; gap: 14px; width: min(800px, 90%); font-size: 22px; font-weight: 700; }
.lv-h-track { flex: 1; height: 12px; border-radius: 999px; background: rgba(255,255,255,.35); }

/* 揭晓 */
.lv-reveal-wrap, .lv-board-wrap { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 6px 20px 30px; }
.lv-reveal-prompt { font-size: clamp(20px, 2.8vw, 34px); font-weight: 800; text-align: center; margin-bottom: 14px; max-width: 1100px; }
.lv-h-reveal { width: 100%; max-width: 1100px; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.lv-bars { display: flex; gap: 18px; align-items: flex-end; height: 300px; width: 100%; justify-content: center; }
.lv-bar-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; width: 130px; }
.lv-bar-col.dim { opacity: .4; }
.lv-bar-n { font-size: 26px; font-weight: 900; }
.lv-bar { width: 100%; min-height: 6px; border-radius: 8px 8px 0 0; transition: height .6s; }
.lv-bar-label { width: 100%; text-align: center; color: #fff; font-weight: 800; padding: 6px 0; font-size: 18px; border-radius: 0 0 8px 8px; }
.lv-bar-text { font-size: 16px; margin-top: 6px; text-align: center; font-family: Georgia, "PingFang SC", serif; }
.lv-answer-big { background: #26890c; color: #fff; border-radius: 14px; padding: 16px 34px; font-size: clamp(28px, 4vw, 52px); font-weight: 900; }
.lv-typed { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.lv-typed-item { padding: 6px 14px; border-radius: 999px; font-size: 18px; font-family: Georgia, serif; }
.lv-typed-item.ok { background: #26890c; }
.lv-typed-item.bad { background: rgba(255,255,255,.18); text-decoration: line-through; }
.lv-cloud {
  display: flex; flex-wrap: wrap; gap: 8px 22px; justify-content: center; align-items: center;
  background: #fff; border-radius: 16px; padding: 30px; max-width: 1100px; min-height: 240px;
}
.lv-cloud span { font-weight: 800; line-height: 1.1; }
.lv-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; width: 100%; max-height: 50vh; overflow-y: auto; }
.lv-wall-item { background: #fff; color: #222; border-radius: 12px; padding: 12px 14px; font-size: 16px; text-align: left; }
.lv-wall-item .muted { color: #888 !important; }
.lv-h-stat { font-size: 20px; font-weight: 700; margin: 4px 0; }

/* ---------- 玩法画面 ---------- */
.lv-board { width: 100%; max-width: 1000px; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.lv-board-title { font-size: 30px; margin: 4px 0 8px; color: #fff; }
.lv-board-title::before { display: none; }
.lv-lb { width: 100%; display: flex; flex-direction: column; gap: 10px; }
.lv-lb-row { display: grid; grid-template-columns: 50px 220px 1fr 110px; align-items: center; gap: 14px; background: #fff; color: #222; border-radius: 12px; padding: 12px 18px; font-size: 22px; animation: pop .3s; }
.lv-lb-rank { font-weight: 900; font-size: 26px; color: #864cbf; }
.lv-lb-name { font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-streak { font-size: 16px; }
.lv-lb-bar { height: 14px; background: #eee; border-radius: 999px; overflow: hidden; }
.lv-lb-bar i { display: block; height: 100%; background: linear-gradient(90deg, #864cbf, #1368ce); transition: width .6s; }
.lv-lb-score { text-align: right; }
@media (max-width: 800px) { .lv-lb-row { grid-template-columns: 36px 1fr 90px; } .lv-lb-bar { display: none; } }

.lv-teams { display: flex; gap: 30px; align-items: flex-end; height: 340px; }
.lv-team-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; width: 150px; }
.lv-team-score { font-size: 32px; font-weight: 900; }
.lv-team-bar { width: 100%; min-height: 8px; border-radius: 10px 10px 0 0; transition: height .6s; }
.lv-team-name { font-weight: 800; margin-top: 8px; font-size: 18px; background: #fff; padding: 4px 12px; border-radius: 999px; }

.lv-kd-score { display: flex; gap: 40px; font-size: 26px; font-weight: 900; background: #fff; padding: 8px 26px; border-radius: 999px; }
.lv-kd-map { display: grid; grid-template-columns: repeat(8, 1fr); gap: 6px; width: min(720px, 94%); }
.lv-kd-tile { aspect-ratio: 1.15; border-radius: 10px; background: rgba(255,255,255,.14); transition: background .6s, transform .4s; }
.lv-kd-tile.owned { transform: scale(1.02); box-shadow: inset 0 -5px 0 rgba(0,0,0,.2); }

.lv-towers { display: flex; gap: 40px; align-items: flex-end; min-height: 320px; }
.lv-tower-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; width: 130px; }
.lv-tower-n { font-size: 24px; font-weight: 900; margin-bottom: 6px; }
.lv-tower { display: flex; flex-direction: column-reverse; gap: 3px; width: 90px; }
.lv-block { border-radius: 4px; animation: pop .3s; }
.lv-tower-base { width: 130px; text-align: center; padding: 6px; border-radius: 8px; font-weight: 800; margin-top: 4px; }

.lv-sea {
  position: relative; width: min(900px, 94%); height: 160px; border-radius: 20px; overflow: hidden;
  background: linear-gradient(180deg, #3aa0d8 0%, #1a5fa0 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,.3);
}
.lv-sea-shark, .lv-sea-sub { position: absolute; top: 50%; transform: translate(-50%, -50%); font-size: 64px; transition: left 1.2s ease; }
.lv-sea-sub { transform: translate(-50%, -50%) scaleX(-1); }

.lv-art { position: relative; width: min(720px, 94%); aspect-ratio: 3 / 2; border-radius: 16px; overflow: hidden; box-shadow: 0 12px 40px rgba(0,0,0,.4); }
.lv-art.art0 { background:
  radial-gradient(circle at 75% 25%, #ffe38a 0 9%, transparent 10%),
  linear-gradient(170deg, transparent 55%, #2e6b3a 55.5%),
  linear-gradient(200deg, transparent 50%, #4a8c4f 50.5%),
  linear-gradient(180deg, #ff9a6c 0%, #ffcf8a 45%, #9ad0ec 46%, #5fa8d3 100%); }
.lv-art.art1 { background:
  radial-gradient(circle at 30% 30%, #fff 0 6%, transparent 7%),
  radial-gradient(ellipse at 50% 110%, #1b1b3a 0 45%, transparent 46%),
  radial-gradient(ellipse at 20% 100%, #2d2d5e 0 35%, transparent 36%),
  linear-gradient(180deg, #0f1b4d 0%, #5a3a8c 60%, #e07a9a 100%); }
.lv-art.art2 { background:
  repeating-linear-gradient(45deg, rgba(255,255,255,.08) 0 12px, transparent 12px 24px),
  radial-gradient(circle at 30% 40%, #e2463f 0 16%, transparent 17%),
  radial-gradient(circle at 65% 55%, #1d6fd6 0 20%, transparent 21%),
  radial-gradient(circle at 45% 75%, #d89e00 0 12%, transparent 13%),
  linear-gradient(135deg, #f6efe2, #e9dcc3); }
.lv-art-grid { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(8, 1fr); grid-template-rows: repeat(6, 1fr); }
.lv-art-tile { background: #3b2a7a; border: 1px solid rgba(255,255,255,.08); transition: opacity .8s, transform .8s; }
.lv-art-tile.open { opacity: 0; transform: scale(.6); }

.lv-summary { display: flex; gap: 12px; align-items: flex-end; height: 300px; width: 100%; justify-content: center; overflow-x: auto; }
.lv-sum-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; width: 60px; flex: none; }
.lv-sum-n { font-weight: 800; }
.lv-sum-bar { width: 100%; border-radius: 6px 6px 0 0; transition: height .6s; }
.lv-summary .small.muted { color: rgba(255,255,255,.75); }

/* 颁奖台 */
.lv-podium-wrap { display: flex; flex-direction: column; align-items: center; gap: 12px; width: 100%; }
.lv-podium-title { font-size: 42px; margin: 10px 0; }
.lv-podium { display: flex; align-items: flex-end; gap: 16px; margin-top: 20px; }
.lv-pod-col { display: flex; flex-direction: column; align-items: center; width: 190px; animation: pop .5s; }
.lv-pod-name { font-size: 26px; font-weight: 900; text-align: center; overflow-wrap: anywhere; }
.lv-pod-score { font-size: 18px; opacity: .85; margin-bottom: 8px; }
.lv-pod-block { width: 100%; background: linear-gradient(180deg, #864cbf, #5a2e9e); border-radius: 12px 12px 0 0; display: grid; place-items: center; font-size: 54px; box-shadow: inset 0 -8px 0 rgba(0,0,0,.2); }

/* ---------- 学生手机端 ---------- */
.lv-player {
  min-height: 100vh; display: flex; flex-direction: column; color: #fff;
  background: linear-gradient(160deg, #4b2a9e, #2a1a5e); transition: background .4s;
}
.lv-player.ok { background: linear-gradient(160deg, #3ea024, #1f6b0c); }
.lv-player.bad { background: linear-gradient(160deg, #e2463f, #9a1d17); }
.lv-p-center { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 24px 18px; text-align: center; }
.lv-p-logo { font-size: 28px; font-weight: 900; margin-bottom: 8px; }
.lv-p-card { width: min(380px, 100%); display: flex; flex-direction: column; gap: 12px; color: var(--text); }
.lv-p-go { font-size: 18px; padding: 12px; border-radius: 10px; width: 100%; }
.lv-player .btn.primary { background: #fff; color: #2a1a5e; border-color: #fff; font-weight: 700; }
.lv-player .btn:not(.primary) { background: rgba(255,255,255,.14); color: #fff; border-color: rgba(255,255,255,.3); }
.lv-player .lv-p-card .btn.primary { background: #2a1a5e; color: #fff; border-color: #2a1a5e; }
.lv-player a.small.muted { color: rgba(255,255,255,.75); }
.lv-p-head {
  display: flex; justify-content: space-between; align-items: center; padding: 10px 14px;
  background: rgba(0,0,0,.18); font-weight: 700;
}
.lv-p-name { display: flex; align-items: center; gap: 8px; }
.lv-p-team { font-size: 12px; padding: 2px 8px; border-radius: 999px; }
.lv-p-score { background: rgba(255,255,255,.2); padding: 2px 12px; border-radius: 999px; }
.lv-p-big { font-size: 32px; font-weight: 900; }
.lv-p-count { font-size: 96px; font-weight: 900; line-height: 1; }
.lv-p-q { flex: 1; display: flex; flex-direction: column; gap: 12px; padding: 14px; }
.lv-p-timer { background: #fff; color: #2a1a5e; border-radius: 999px; padding: 2px 12px; font-weight: 900; }
.lv-p-prompt { font-size: 20px; font-weight: 800; text-align: center; background: rgba(255,255,255,.12); padding: 12px; border-radius: 12px; }
.lv-p-prompt.dim { opacity: .75; font-weight: 500; font-size: 16px; }
.lv-p-conf { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center; }
.lv-p-conf .chip { background: rgba(255,255,255,.14); color: #fff; border-color: rgba(255,255,255,.3); }
.lv-p-conf .chip.on { background: #fff; color: #2a1a5e; }
.lv-p-input { flex: 1; display: flex; flex-direction: column; gap: 10px; }
.lv-p-grid { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; min-height: 50vh; }
.lv-p-grid.n2 { grid-template-columns: 1fr; }
.lv-p-btn {
  border: 0; border-radius: 12px; color: #fff; cursor: pointer; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 6px; padding: 10px; box-shadow: 0 5px 0 rgba(0,0,0,.25);
  font-size: 16px; font-weight: 700; transition: transform .08s;
}
.lv-p-btn:active { transform: translateY(3px); box-shadow: 0 2px 0 rgba(0,0,0,.25); }
.lv-p-btn.on { outline: 5px solid #fff; outline-offset: -5px; }
.lv-p-icon { font-size: 36px; }
.lv-p-text { font-family: Georgia, "PingFang SC", serif; font-size: 17px; overflow-wrap: anywhere; }
.lv-p-submit { font-size: 18px; padding: 12px; border-radius: 12px; }
.lv-p-text-input {
  width: 100%; font-size: 26px; padding: 14px; border-radius: 12px; border: 0; text-align: center;
  font-family: Georgia, serif; color: #222; background: #fff;
}
textarea.lv-p-text-input { font-size: 18px; text-align: left; }
.lv-p-puzzle { display: flex; flex-direction: column; gap: 8px; }
.lv-p-piece {
  background: #fff; color: #222; border-radius: 10px; padding: 14px; text-align: center;
  font-size: 20px; font-weight: 700; font-family: Georgia, serif; box-shadow: 0 3px 0 rgba(0,0,0,.2);
}
.lv-p-slider-val { font-size: 44px; font-weight: 900; text-align: center; }
.lv-p-range { width: 100%; accent-color: #fff; height: 36px; }
.lv-p-spinner { width: 46px; height: 46px; border-radius: 50%; border: 5px solid rgba(255,255,255,.3); border-top-color: #fff; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.lv-p-points { font-size: 30px; font-weight: 900; background: rgba(0,0,0,.2); padding: 6px 18px; border-radius: 12px; }
.lv-p-streak { font-size: 18px; font-weight: 700; }
.lv-p-answer { font-size: 16px; display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; align-items: center; }
.lv-p-ans-chip { padding: 4px 10px; border-radius: 8px; font-weight: 700; }
.lv-p-rank { font-size: 20px; font-weight: 800; }
.lv-p-podium { background: rgba(0,0,0,.2); border-radius: 12px; padding: 10px 18px; text-align: left; line-height: 1.9; }

/* ---------- 报告 ---------- */
.lv-rate { display: flex; align-items: center; gap: 8px; }
.lv-rate-bar { flex: 1; height: 8px; background: var(--bg-soft); border-radius: 999px; overflow: hidden; }
.lv-rate-bar i { display: block; height: 100%; }
.lv-grid td, .lv-grid th { padding: 7px 6px; }
.lv-cell { font-weight: 700; min-width: 30px; }
.lv-cell.ok { color: var(--ok); background: color-mix(in srgb, var(--ok) 10%, transparent); }
.lv-cell.bad { color: var(--bad); background: color-mix(in srgb, var(--bad) 10%, transparent); }
.lv-cell.none { color: var(--text-dim); }
.lv-cell.neutral { color: var(--text-dim); }

/* ---------- 扫码加入 ---------- */
.lv-lobby-entry { display: flex; gap: 18px; align-items: stretch; justify-content: center; flex-wrap: wrap; margin-top: 6px; }
.lv-lobby-entry .lv-lobby-join { margin-top: 0; }
.lv-lobby-qr {
  background: #fff; border-radius: 16px; padding: 12px 12px 8px; display: flex; flex-direction: column;
  align-items: center; box-shadow: 0 12px 40px rgba(0,0,0,.3);
}
.lv-qr { width: clamp(150px, 17vw, 230px); height: auto; display: block; image-rendering: pixelated; }
.lv-qr-cap { color: #444; font-size: 14px; margin-top: 4px; font-weight: 700; }
.lv-qr-big { width: min(360px, 80vw); height: auto; display: block; margin: 0 auto 8px; image-rendering: pixelated; }

/* ==================== 气氛升级（对照 Kahoot） ==================== */

/* 大屏背景：缓慢流动的光晕，别太抢戏 */
.lv-stage::before {
  content: ''; position: fixed; inset: -20%; z-index: 0; pointer-events: none;
  background:
    radial-gradient(38vw 38vw at 15% 20%, rgba(134,76,191,.38), transparent 70%),
    radial-gradient(34vw 34vw at 85% 30%, rgba(19,104,206,.30), transparent 70%),
    radial-gradient(30vw 30vw at 50% 95%, rgba(226,27,60,.22), transparent 70%);
  animation: lvDrift 24s ease-in-out infinite alternate;
}
.lv-stage > * { position: relative; z-index: 1; }
@keyframes lvDrift {
  from { transform: translate3d(-3%, -2%, 0) scale(1); }
  to   { transform: translate3d(3%, 2%, 0) scale(1.08); }
}
/* 答题阶段整体更"压迫"一点，揭晓阶段松一口气 */
.lv-stage[data-phase="question"]::before { animation-duration: 9s; filter: saturate(1.25); }
.lv-stage[data-phase="reveal"]::before,
.lv-stage[data-phase="board"]::before { filter: saturate(.85); }
@media (prefers-reduced-motion: reduce) {
  .lv-stage::before { animation: none; }
}

/* 圆环倒计时 */
.lv-timer-ring { position: relative; width: 120px; height: 120px; }
.lv-timer-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.lv-ring-bg { fill: rgba(255,255,255,.12); stroke: rgba(255,255,255,.18); stroke-width: 10; }
.lv-ring-fg {
  fill: none; stroke: #fff; stroke-width: 10; stroke-linecap: round;
  transition: stroke-dashoffset .12s linear, stroke .3s;
}
.lv-timer-num {
  position: absolute; inset: 0; display: grid; place-items: center;
  font-size: 44px; font-weight: 900; color: #fff;
}
.lv-timer-ring.low .lv-ring-fg { stroke: #ff4b5c; }
.lv-timer-ring.low .lv-timer-num { color: #ff4b5c; animation: lvBeat .5s infinite; }
@keyframes lvBeat { 0%,100% { transform: scale(1); } 45% { transform: scale(1.18); } }

/* 题目和选项依次入场 */
.lv-stage[data-phase="question"] .lv-h-prompt { animation: lvDrop .35s cubic-bezier(.2,.9,.3,1.4); }
@keyframes lvDrop { from { opacity: 0; transform: translateY(-18px) scale(.96); } }
.lv-h-opts .lv-h-opt { animation: lvRise .34s both; }
.lv-h-opts .lv-h-opt:nth-child(1) { animation-delay: .04s; }
.lv-h-opts .lv-h-opt:nth-child(2) { animation-delay: .10s; }
.lv-h-opts .lv-h-opt:nth-child(3) { animation-delay: .16s; }
.lv-h-opts .lv-h-opt:nth-child(4) { animation-delay: .22s; }
.lv-h-opts .lv-h-opt:nth-child(5) { animation-delay: .28s; }
.lv-h-opts .lv-h-opt:nth-child(6) { animation-delay: .34s; }
@keyframes lvRise { from { opacity: 0; transform: translateY(20px); } }
.lv-h-opt { transition: transform .2s; }
.lv-stage[data-phase="reveal"] .lv-bar-col:not(.dim) .lv-bar-label { animation: lvBeat .6s 2; }

/* 已作答人数跳一下 */
.lv-answered { transition: transform .15s; }

/* 最快答对 */
.lv-fastest {
  margin-top: 10px; background: rgba(255,255,255,.14); border-radius: 999px;
  padding: 8px 22px; font-size: 20px; animation: lvDrop .4s;
}
.lv-fastest b { font-size: 24px; }
.lv-fastest-ms { opacity: .8; font-size: 16px; }
.lv-fastest-pts { color: #ffd76a; font-weight: 800; }

/* 名次升降箭头 */
.lv-rank-arrow { font-size: 14px; font-weight: 800; margin-left: 6px; }
.lv-rank-arrow.up { color: #2ecc71; }
.lv-rank-arrow.down { color: #ff6b6b; }
.lv-lb-row { animation: lvSlide .35s both; }
.lv-lb-row:nth-child(2) { animation-delay: .05s; }
.lv-lb-row:nth-child(3) { animation-delay: .10s; }
.lv-lb-row:nth-child(4) { animation-delay: .15s; }
.lv-lb-row:nth-child(5) { animation-delay: .20s; }
@keyframes lvSlide { from { opacity: 0; transform: translateX(-24px); } }

/* 颁奖台升起来 */
.lv-pod-block { animation: lvGrow .7s cubic-bezier(.2,.9,.3,1.2) both; transform-origin: bottom; }
.lv-pod-col:nth-child(1) .lv-pod-block { animation-delay: .5s; }
.lv-pod-col:nth-child(2) .lv-pod-block { animation-delay: .1s; }
.lv-pod-col:nth-child(3) .lv-pod-block { animation-delay: .9s; }
@keyframes lvGrow { from { transform: scaleY(0); opacity: .3; } }

/* ---------- 学生手机端 ---------- */
.lv-pop { animation: lvPopIn .4s cubic-bezier(.2,.9,.3,1.5); }
@keyframes lvPopIn { from { opacity: 0; transform: scale(.6); } }
.lv-p-points { animation: lvPopIn .35s .05s both; }
.lv-p-streak { animation: lvPopIn .35s .12s both; }
.lv-player.ok .lv-p-big { text-shadow: 0 4px 18px rgba(0,0,0,.25); }
.lv-nick-dice { align-self: center; }
.lv-p-btn { position: relative; overflow: hidden; }
.lv-p-btn::after {
  content: ''; position: absolute; inset: 0; background: #fff; opacity: 0; transition: opacity .18s;
}
.lv-p-btn:active::after { opacity: .25; }

/* 白色卡片里的次要按钮：不能沿用深色背景上的白字，否则白底白字看不见 */
.lv-player .lv-p-card .btn:not(.primary) {
  color: var(--text); background: var(--bg-soft); border-color: var(--line);
}

/* ---------- 金库大盗（第 5 阶段） ---------- */
.lv-heist-feed { width: 100%; display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 8px; }
.lv-heist-ev { background: rgba(255,255,255,.92); color: #222; border-radius: 10px; padding: 8px 14px; font-size: 20px; font-weight: 700; animation: lvSlide .35s both; }
.lv-heist-ev.k-steal { background: #ffe1e1; color: #8a1010; }
.lv-heist-ev.k-double { background: #fff4c4; }
.lv-heist-ev.k-empty { opacity: .7; font-weight: 500; }
.lv-p-coins { font-size: .85em; opacity: .9; margin-left: 4px; }
.lv-chests-wrap { margin: 10px 0; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.lv-chests { display: flex; gap: 12px; justify-content: center; }
.lv-chest { font-size: 54px; width: 88px; height: 88px; border-radius: 18px; border: 3px solid rgba(255,255,255,.8); background: rgba(255,255,255,.18); cursor: pointer; animation: lvChestWobble 1.6s ease-in-out infinite; }
.lv-chest:nth-child(2) { animation-delay: .2s; } .lv-chest:nth-child(3) { animation-delay: .4s; }
.lv-chest:disabled { cursor: default; opacity: .6; animation: none; }
.lv-chest.opening { opacity: 1; transform: scale(1.15); }
@keyframes lvChestWobble { 0%, 100% { transform: rotate(0); } 45% { transform: rotate(-6deg); } 55% { transform: rotate(6deg); } }
.lv-chest-result { font-size: 22px; font-weight: 800; background: rgba(255,255,255,.95); color: #222; border-radius: 14px; padding: 10px 16px; }
.lv-chest-result.k-steal { background: #ffe1e1; color: #8a1010; }
.lv-chest-open { width: 72px; padding: 6px 0; border-radius: 12px; background: rgba(255,255,255,.15); font-size: 26px; text-align: center; opacity: .55; }
.lv-chest-open div { font-size: 12px; }
.lv-chest-open.mine { opacity: 1; background: rgba(255,255,255,.35); outline: 2px solid #fff; }
.lv-p-robbed { background: #ffe1e1; color: #8a1010; border-radius: 12px; padding: 8px 12px; font-weight: 700; margin: 8px 0; }
@media (prefers-reduced-motion: reduce) { .lv-chest { animation: none; } }

/* ---------- 钓鱼（第 5 阶段） ---------- */
.lv-pond { width: 100%; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; padding: 14px; border-radius: 18px; background: linear-gradient(180deg, rgba(64,164,223,.55), rgba(18,82,140,.65)); }
.lv-fish { background: rgba(255,255,255,.92); color: #222; border-radius: 14px; padding: 8px 10px; text-align: center; animation: lvSlide .4s both; }
.lv-fish.big { background: #fff4c4; box-shadow: 0 0 0 3px #f2c94c; }
.lv-fish-icon { font-size: 40px; line-height: 1.1; }
.lv-fish-name { font-weight: 800; font-size: 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-fish-what { font-size: 15px; }
.lv-fish-best { font-size: 18px; background: rgba(255,255,255,.15); padding: 6px 14px; border-radius: 999px; }
.lv-cast-btn { font-size: 28px; font-weight: 900; padding: 18px 36px; border-radius: 999px; border: 3px solid #fff; background: rgba(255,255,255,.2); color: #fff; cursor: pointer; animation: lvChestWobble 1.6s ease-in-out infinite; }
.lv-cast-btn:disabled { opacity: .6; animation: none; }
.lv-catch { background: rgba(255,255,255,.95); color: #222; border-radius: 16px; padding: 12px 18px; text-align: center; }
.lv-catch-icon { font-size: 64px; line-height: 1.1; }
.lv-catch-ru { font-size: 24px; font-weight: 900; }
@media (prefers-reduced-motion: reduce) { .lv-cast-btn { animation: none; } }
.lv-board-holder { width: 100%; display: flex; justify-content: center; }

/* ---------- 局内道具（第 5 阶段第 6 步） ---------- */
.lv-shop-feed { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; align-items: center; }
.lv-shop-title { font-weight: 800; margin-right: 4px; }
.lv-shop-ev { background: rgba(255,255,255,.18); border-radius: 999px; padding: 3px 12px; font-size: 16px; }
.lv-shop-ev.freeze { background: rgba(120,200,255,.35); }
.lv-shop { width: 100%; max-width: 420px; margin: 10px auto 0; background: rgba(0,0,0,.18); border-radius: 16px; padding: 10px; }
.lv-shop-head { display: flex; justify-content: space-between; align-items: center; font-weight: 800; margin-bottom: 6px; }
.lv-shop-items { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.lv-shop-item { border: 2px solid rgba(255,255,255,.7); background: rgba(255,255,255,.15); color: #fff; border-radius: 12px; padding: 6px 4px; cursor: pointer; font-size: 13px; line-height: 1.3; }
.lv-shop-item b { display: block; font-size: 22px; }
.lv-shop-item:disabled { opacity: .45; cursor: default; }
.lv-shop-item.owned { background: rgba(255,255,255,.4); border-color: #fff; }
.lv-shop-note { font-size: 12px; opacity: .85; margin-top: 6px; text-align: center; }
.lv-p-frozen { background: rgba(120,200,255,.35); border-radius: 12px; padding: 6px 10px; font-weight: 700; margin: 6px 0; }
.lv-p-items { font-size: .85em; margin-left: 4px; }
.lv-targets { display: flex; flex-direction: column; gap: 6px; max-height: 50vh; overflow: auto; }

/* ==================== 第 1 步：课堂游乐场视觉基础 ====================
 * live.css 全站加载。新增规则必须带 .lv-ui；共享 lv-* 类的原有规则保持不变。
 * .lv-ui 仅在直播容器 / 直播弹窗上，沿用 html[data-theme]，不写全局 :root。
 */
.lv-ui {
  --lv-font: -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, sans-serif;
  --lv-brand: #424fc2;
  --lv-brand-soft: #edf0ff;
  --lv-green: #167c75;
  --lv-orange: #ffc59b;
  --lv-ink: #242c50;
  --lv-muted: #626d87;
  --lv-bg: #f2f5ff;
  --lv-panel: #ffffff;
  --lv-panel-soft: #f6f8ff;
  --lv-line: #dce2f2;
  --lv-focus: #5363d9;
  --lv-radius: 20px;
  --lv-gap: 16px;
  --lv-shadow: 0 2px 4px rgba(36,44,80,.03), 0 10px 30px rgba(36,44,80,.07);
  --lv-stage-base: #262e70;
  --lv-stage-edge: #171d48;
  --lv-stage-glow: #424ea0;
  --lv-stage-text: #f8faff;
  --lv-stage-muted: #d6def5;
  --lv-stage-surface: rgba(255,255,255,.12);
  --lv-stage-line: rgba(255,255,255,.3);
  /* 站内组件只在直播容器内继承这些别名。 */
  --bg: var(--lv-bg);
  --bg-soft: var(--lv-brand-soft);
  --card: var(--lv-panel);
  --card-2: var(--lv-panel-soft);
  --text: var(--lv-ink);
  --text-dim: var(--lv-muted);
  --line: var(--lv-line);
  --accent: var(--lv-brand);
  --accent-text: #fff;
  --gold: var(--lv-brand);
  --radius: var(--lv-radius);
  --shadow: var(--lv-shadow);
  font-family: var(--lv-font);
  line-height: 1.6;
  color: var(--lv-ink);
}
[data-theme="dark"] .lv-ui {
  --lv-brand: #a8b4ff;
  --lv-brand-soft: #2a3459;
  --lv-green: #72d4c4;
  --lv-orange: #ffd0af;
  --lv-ink: #edf1ff;
  --lv-muted: #b2bfdc;
  --lv-bg: #161d32;
  --lv-panel: #202a43;
  --lv-panel-soft: #1b243c;
  --lv-line: #3c4867;
  --lv-focus: #bbc5ff;
  --lv-shadow: 0 2px 4px rgba(0,0,0,.12), 0 10px 30px rgba(0,0,0,.2);
  --lv-stage-base: #172342;
  --lv-stage-edge: #10182e;
  --lv-stage-glow: #29365f;
  --lv-stage-muted: #bac9e7;
  --accent-text: #151d39;
}

/* 仅铺视觉底色、组件语言和字阶；不重排备课界面的内容。 */
.lv-ui.lv-page {
  min-width: 0;
  padding: 24px;
  border: 1px solid var(--lv-line);
  border-radius: 26px;
  background: var(--lv-bg);
  background-image:
    radial-gradient(ellipse at 100% 0, rgba(255,197,155,.15), transparent 45%),
    radial-gradient(ellipse at 0 0, rgba(22,124,117,.07), transparent 50%);
}
.lv-ui.lv-page h1 { font-size: clamp(26px, 3vw, 34px); letter-spacing: -.025em; line-height: 1.3; }
.lv-ui.lv-page h2 { font-size: 20px; line-height: 1.4; }
.lv-ui.lv-page h2::before { background: var(--lv-green); }
.lv-ui .sub { font-size: 14px; line-height: 1.7; }
.lv-ui .card, .lv-ui .lv-edit-list {
  border-color: var(--lv-line);
  border-radius: var(--lv-radius);
  box-shadow: var(--lv-shadow);
}
.lv-ui .pad { padding: 20px; }
.lv-ui .btn {
  border-radius: 12px;
  font-weight: 650;
  transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.lv-ui .btn.primary {
  color: var(--accent-text);
  background: var(--lv-brand);
  border-color: var(--lv-brand);
  box-shadow: 0 3px 10px rgba(66,79,194,.16);
}
.lv-ui input[type=text], .lv-ui input[type=password], .lv-ui textarea, .lv-ui select {
  border-radius: 12px;
  font-family: var(--lv-font);
}
.lv-ui input:focus, .lv-ui textarea:focus, .lv-ui select:focus,
.lv-ui button:focus-visible, .lv-ui a:focus-visible {
  outline: 3px solid var(--lv-focus);
  outline-offset: 3px;
}
.lv-ui.lv-modal { color: var(--lv-ink); border: 1px solid var(--lv-line); border-radius: 24px; }
.lv-ui.lv-modal h3 { font-size: 21px; line-height: 1.4; }
.lv-ui.lv-modal .close { border-radius: 8px; }

/* 投影与手机保留亮字舞台，两种站内主题分别使用靛蓝 / 深海蓝。 */
.lv-ui.lv-stage, .lv-ui.lv-player {
  color: var(--lv-stage-text);
  background: var(--lv-stage-base);
  background-image:
    radial-gradient(ellipse at 12% 0, var(--lv-stage-glow), transparent 60%),
    linear-gradient(160deg, var(--lv-stage-base), var(--lv-stage-edge));
}
.lv-ui.lv-stage::before {
  /* 原创静态光晕，不增加持续动画或大面积模糊滤镜。 */
  inset: 0;
  background:
    radial-gradient(ellipse at 95% 15%, rgba(255,197,155,.1), transparent 45%),
    radial-gradient(ellipse at 0 95%, rgba(65,180,164,.13), transparent 50%);
  animation: none;
}
.lv-ui.lv-stage .muted, .lv-ui.lv-player .muted,
.lv-ui.lv-player a.small.muted { color: var(--lv-stage-muted); }
.lv-ui.lv-player .lv-p-card { color: var(--lv-ink); }
.lv-ui.lv-player .lv-p-card .muted { color: var(--lv-muted); }
.lv-ui.lv-stage .btn:not(.primary), .lv-ui.lv-player .btn:not(.primary) {
  background: var(--lv-stage-surface);
  color: var(--lv-stage-text);
  border-color: var(--lv-stage-line);
}
.lv-ui.lv-stage .btn.primary, .lv-ui.lv-player .btn.primary {
  background: var(--lv-orange);
  color: #38251b;
  border-color: var(--lv-orange);
}
.lv-ui.lv-player .lv-p-card .btn.primary {
  background: var(--lv-brand);
  color: var(--accent-text);
  border-color: var(--lv-brand);
}
.lv-ui.lv-player .lv-p-card .btn:not(.primary) {
  background: var(--lv-panel-soft);
  color: var(--lv-ink);
  border-color: var(--lv-line);
}
.lv-ui .lv-icon-btn { border: 1px solid var(--lv-stage-line); background: var(--lv-stage-surface); }
.lv-ui .lv-h-prompt, .lv-ui .lv-h-opt, .lv-ui .lv-h-piece,
.lv-ui .lv-bar-text, .lv-ui .lv-typed-item, .lv-ui .lv-p-text,
.lv-ui .lv-p-text-input, .lv-ui .lv-p-piece, .lv-ui .ru { font-family: var(--lv-font); }
.lv-ui .lv-timer:not(.low), .lv-ui .lv-p-timer { color: #303b8c; }
.lv-ui.lv-player.ok { background: linear-gradient(160deg, #167c75, #10574f); }
.lv-ui.lv-player.bad { background: linear-gradient(160deg, #a23e4b, #702d3a); }
[data-theme="dark"] .lv-ui.lv-player.ok { background: linear-gradient(160deg, #155e58, #123e3b); }
[data-theme="dark"] .lv-ui.lv-player.bad { background: linear-gradient(160deg, #753440, #482633); }

@media (max-width: 600px) {
  /* 不叠加主布局的手机边距，避免压窄已有题组网格和表单。 */
  .lv-ui.lv-page { padding: 0; border: 0; border-radius: 20px; }
  .lv-ui .pad { padding: var(--lv-gap); }
}
/* 只覆盖直播动画；共享撒花、作业页与其他游戏遵循原来的行为。 */
/* 投影大屏（.lv-stage）是给全班看的，不跟随老师电脑的「减少动画」设置（老师 2026-10-13：大屏要有撒花和颁奖动画） */
@media (prefers-reduced-motion: reduce) {
  .lv-ui:not(.lv-stage), .lv-ui:not(.lv-stage) *, .lv-ui:not(.lv-stage)::before, .lv-ui:not(.lv-stage)::after,
  .lv-ui:not(.lv-stage) *::before, .lv-ui:not(.lv-stage) *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}

/* ==================== 第 2 步：老师备课界面 ==================== */
/* 所有规则限定在直播作用域；不改变共享题型 / 导入组件在其他页面的样式。 */
.lv-ui .lv-home-hero { display: grid; grid-template-columns: minmax(0,1fr) 150px; align-items: center; gap: 20px; padding: 26px; margin-bottom: 18px; background: var(--lv-panel); border: 1px solid var(--lv-line); border-radius: 22px; box-shadow: var(--lv-shadow); }
.lv-ui .lv-hero-copy { min-width: 0; }
.lv-ui .lv-eyebrow { display: inline-block; color: var(--lv-green); font-size: 12px; font-weight: 750; letter-spacing: .08em; margin-bottom: 9px; }
.lv-ui .lv-home-intro { max-width: 580px; margin: 12px 0 0; }
.lv-ui .lv-hero-art { position: relative; height: 132px; }
.lv-ui .lv-hero-sheet { position: absolute; width: 88px; height: 110px; left: 18px; top: 12px; border: 2px solid var(--lv-brand); border-radius: 18px; background: var(--lv-brand-soft); transform: rotate(-12deg); box-shadow: 10px 9px 0 var(--lv-panel-soft); }
.lv-ui .lv-hero-sheet::before { content: ''; position: absolute; inset: 24px 18px auto; height: 5px; border-radius: 6px; background: var(--lv-brand); box-shadow: 0 16px 0 var(--lv-brand), 0 32px 0 var(--lv-brand); opacity: .65; }
.lv-ui .lv-hero-orbit { position: absolute; right: 0; top: 7px; width: 40px; height: 40px; border: 8px solid var(--lv-green); border-radius: 50%; }
.lv-ui .lv-hero-dot { position: absolute; right: 6px; bottom: 10px; width: 38px; height: 38px; background: var(--lv-orange); border-radius: 12px; transform: rotate(16deg); }
.lv-ui .lv-join-url { justify-content: space-between; gap: 12px; padding: 12px 4px; margin-bottom: 12px; }
.lv-ui .lv-join-address { min-width: 0; flex: 1 1 250px; overflow-wrap: anywhere; }
.lv-ui .lv-home-tabs { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; padding: 5px; border: 1px solid var(--lv-line); border-radius: 15px; background: var(--lv-panel); margin-bottom: 22px; }
.lv-ui .lv-home-tabs button { min-width: 0; border: 0; border-radius: 10px; padding: 11px 8px; line-height: 1.4; }
.lv-ui .lv-home-tabs button.on { color: var(--lv-brand); background: var(--lv-brand-soft); font-weight: 750; }
.lv-ui .lv-prep-actions { gap: 10px; margin: 0 0 20px; }
.lv-ui .lv-prep-actions .btn { min-height: 44px; }
.lv-ui .lv-quiz-grid { grid-template-columns: repeat(auto-fill,minmax(260px,1fr)); gap: 18px; }
.lv-ui .lv-quiz-card { --lv-card-tone: var(--lv-brand); display: flex; flex-direction: column; min-width: 0; border-top: 4px solid var(--lv-card-tone); padding: 20px; }
.lv-ui .lv-quiz-card[data-tone='1'] { --lv-card-tone: var(--lv-green); }
.lv-ui .lv-quiz-card[data-tone='2'] { --lv-card-tone: #b36532; }
[data-theme='dark'] .lv-ui .lv-quiz-card[data-tone='2'] { --lv-card-tone: var(--lv-orange); }
.lv-ui .lv-quiz-heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 17px; }
.lv-ui .lv-quiz-art { position: relative; width: 44px; height: 48px; flex: none; border-radius: 10px 13px 13px 10px; background: var(--lv-brand-soft); border: 2px solid var(--lv-card-tone); border-left-width: 7px; transform: rotate(-6deg); }
.lv-ui .lv-quiz-art::after { content: ''; position: absolute; width: 17px; height: 3px; background: var(--lv-card-tone); border-radius: 4px; top: 12px; left: 7px; box-shadow: 0 8px 0 var(--lv-card-tone); opacity: .7; }
.lv-ui .lv-quiz-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; font-size: 11px; min-width: 0; }
.lv-ui .lv-quiz-count { color: var(--lv-card-tone); background: var(--lv-panel-soft); padding: 3px 10px; border-radius: 8px; font-size: 12px; }
.lv-ui .lv-quiz-count b { font-size: 18px; font-weight: 800; }
.lv-ui .lv-quiz-card .book-name { font-size: 20px; line-height: 1.45; font-weight: 800; margin: 0; overflow-wrap: anywhere; }
.lv-ui .lv-quiz-owner { margin-top: 5px; }
.lv-ui .lv-quiz-description { margin: 9px 0 0; line-height: 1.7; overflow-wrap: anywhere; }
.lv-ui .lv-quiz-launch { margin-top: auto; padding-top: 22px; }
.lv-ui .lv-quiz-start.btn { width: 100%; min-height: 46px; font-size: 15px; border-radius: 13px; }
.lv-ui .lv-quiz-secondary { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 5px; border-top: 1px solid var(--lv-line); padding-top: 12px; margin-top: 14px; }
.lv-ui .lv-quiz-secondary .btn { padding: 7px 3px; background: var(--lv-panel-soft); border-color: transparent; font-size: 12px; min-width: 0; min-height: 38px; }
.lv-ui .lv-quiz-secondary .btn:hover { border-color: var(--lv-line); }

/* 玩法：原生按钮支持键盘，CSS 图形与选中勾号只负责展示。 */
.lv-ui.lv-launch-modal { padding: 24px; }
.lv-ui .lv-dialog-section-title { font-size: 15px; margin: 18px 0 12px; font-weight: 750; }
.lv-ui .lv-exp-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.lv-ui .lv-exp { position: relative; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; min-width: 0; text-align: left; padding: 16px; border: 2px solid var(--lv-line); border-radius: 16px; color: var(--lv-ink); background: var(--lv-panel); }
.lv-ui .lv-exp:hover { border-color: var(--lv-brand); background: var(--lv-panel-soft); }
.lv-ui .lv-exp.on { border-color: var(--lv-brand); background: var(--lv-brand-soft); box-shadow: 0 3px 12px rgba(66,79,194,.12); }
.lv-ui .lv-exp-art { display: grid; place-items: center; position: relative; isolation: isolate; width: 52px; height: 52px; background: var(--lv-panel-soft); border-radius: 16px; margin-bottom: 6px; }
.lv-ui .lv-exp-art::before { content: ''; position: absolute; z-index: -1; width: 32px; height: 32px; border: 2px solid var(--lv-green); border-radius: 10px; transform: rotate(-12deg); opacity: .3; }
.lv-ui .lv-exp-art::after { content: ''; position: absolute; right: 2px; top: 2px; z-index: -1; width: 15px; height: 15px; background: var(--lv-orange); border-radius: 50%; }
.lv-ui .lv-exp[data-experience='team'] .lv-exp-art::before { border-radius: 50%; transform: translateX(-6px); box-shadow: 12px 0 0 -3px var(--lv-green); }
.lv-ui .lv-exp[data-experience='heist'] .lv-exp-art::before { border-radius: 5px; transform: rotate(8deg); }
.lv-ui .lv-exp[data-experience='fishing'] .lv-exp-art::before { border-radius: 50% 50% 12px 12px; transform: rotate(-20deg); }
.lv-ui .lv-exp-glyph { font-size: 26px; line-height: 1; }
.lv-ui .lv-exp-name { font-size: 15px; line-height: 1.5; font-weight: 800; overflow-wrap: anywhere; }
.lv-ui .lv-exp-desc { font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
.lv-ui .lv-exp-check { position: absolute; right: 12px; top: 12px; display: grid; place-items: center; width: 22px; height: 22px; border: 1px solid var(--lv-line); border-radius: 50%; font-size: 13px; }
.lv-ui .lv-exp.on .lv-exp-check { color: var(--accent-text); background: var(--lv-brand); border-color: var(--lv-brand); }
.lv-ui .lv-launch-settings { margin-top: 22px; padding: 16px; border: 1px solid var(--lv-line); border-radius: 16px; background: var(--lv-panel-soft); }
.lv-ui .lv-launch-settings .lv-dialog-section-title { margin: 0 0 10px; }
.lv-ui .lv-launch-settings .lv-setting { display: flex; gap: 10px; align-items: flex-start; line-height: 1.7; margin: 10px 0; }
.lv-ui .lv-launch-settings input[type=checkbox] { flex: none; width: 18px; height: 18px; margin: 4px 0 0; accent-color: var(--lv-brand); }

/* 编辑器：题组信息、题目导航、编辑区域各有明确边界。 */
.lv-ui .lv-edit-header { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 15px 20px; padding: 20px; margin-bottom: 20px; background: var(--lv-panel); border: 1px solid var(--lv-line); border-radius: 20px; box-shadow: var(--lv-shadow); }
.lv-ui .lv-edit-back { grid-column: 1 / -1; justify-self: start; padding-left: 0; }
.lv-ui .lv-edit-title-field { min-width: 0; }
.lv-ui .lv-edit-header .field { margin-bottom: 0; }
.lv-ui .lv-edit-title { font-size: 20px; font-weight: 800; padding: 11px 13px; }
.lv-ui .lv-edit-description-field { grid-column: 1 / -1; min-width: 0; }
.lv-ui .lv-edit-save-actions { justify-content: flex-end; align-self: end; gap: 8px; }
.lv-ui .lv-save-status { flex-basis: 100%; min-height: 21px; text-align: right; font-size: 12px; }
.lv-ui .lv-edit-save-actions .btn { min-height: 44px; }
.lv-ui .lv-edit-layout { grid-template-columns: 270px minmax(0,1fr); gap: 20px; }
.lv-ui .lv-edit-sidebar { min-width: 0; }
.lv-ui .lv-list-heading { display: flex; justify-content: space-between; align-items: center; margin: 0 0 10px; padding: 0 3px; }
.lv-ui .lv-list-heading h3 { font-size: 15px; margin: 0; }
.lv-ui .lv-list-count { color: var(--lv-brand); background: var(--lv-brand-soft); font-size: 12px; font-weight: 750; padding: 2px 9px; border-radius: 7px; }
.lv-ui .lv-edit-list { max-height: 58vh; padding: 6px; border-radius: 16px; }
.lv-ui .lv-edit-item { --lv-type: var(--lv-brand); width: 100%; display: grid; grid-template-columns: 30px 22px minmax(0,1fr) auto; gap: 8px; padding: 12px 8px; text-align: left; color: var(--lv-ink); background: transparent; border: 1px solid transparent; border-left: 3px solid var(--lv-type); border-radius: 10px; margin-bottom: 5px; line-height: 1.4; }
.lv-ui .lv-edit-item:last-child { margin-bottom: 0; border-bottom: 1px solid transparent; }
.lv-ui .lv-edit-item.on { background: var(--lv-brand-soft); border-top-color: var(--lv-line); border-right-color: var(--lv-line); border-bottom-color: var(--lv-line); }
.lv-ui .lv-edit-no { width: 30px; height: 32px; font-size: 13px; font-weight: 850; border-radius: 9px; background: var(--lv-panel-soft); color: var(--lv-type); }
.lv-ui .lv-edit-item.on .lv-edit-no { background: var(--lv-brand); color: var(--accent-text); }
.lv-ui .lv-edit-item-copy { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.lv-ui .lv-edit-item-text { display: block; font-size: 13px; font-weight: 650; }
.lv-ui .lv-edit-type-icon { font-size: 16px; }
.lv-ui .lv-edit-type-label { font-size: 10px; color: var(--lv-muted); font-weight: 500; }
.lv-ui .lv-edit-duration { font-size: 11px; font-variant-numeric: tabular-nums; }
.lv-ui .lv-edit-item[data-type='type'], .lv-ui .lv-add-btn[data-type='type'], .lv-ui .lv-question-toolbar[data-type='type'] { --lv-type: var(--lv-green); }
.lv-ui .lv-edit-item[data-type='listen'], .lv-ui .lv-add-btn[data-type='listen'], .lv-ui .lv-question-toolbar[data-type='listen'] { --lv-type: #b36532; }
.lv-ui .lv-edit-item[data-type='poll'], .lv-ui .lv-edit-item[data-type='wordcloud'], .lv-ui .lv-edit-item[data-type='open'], .lv-ui .lv-add-btn[data-type='poll'], .lv-ui .lv-add-btn[data-type='wordcloud'], .lv-ui .lv-add-btn[data-type='open'] { --lv-type: var(--lv-green); }
[data-theme='dark'] .lv-ui .lv-edit-item[data-type='listen'], [data-theme='dark'] .lv-ui .lv-add-btn[data-type='listen'], [data-theme='dark'] .lv-ui .lv-question-toolbar[data-type='listen'] { --lv-type: var(--lv-orange); }
.lv-ui .lv-add { padding: 17px 0 0; }
.lv-ui .lv-add-title { margin: 0 0 4px; font-size: 14px; }
.lv-ui .lv-add > p { margin: 0 0 12px; font-size: 12px; }
.lv-ui .lv-add-grid { gap: 8px; }
.lv-ui .lv-add-btn { --lv-type: var(--lv-brand); color: var(--lv-ink); padding: 12px 3px; gap: 5px; border-top: 3px solid var(--lv-type); border-radius: 12px; }
.lv-ui .lv-add-btn .small { font-size: 11px; }
.lv-ui .lv-edit-main { min-width: 0; padding: 22px; }
.lv-ui .lv-question-toolbar { --lv-type: var(--lv-brand); justify-content: space-between; gap: 12px; padding-bottom: 17px; border-bottom: 1px solid var(--lv-line); }
.lv-ui .lv-question-toolbar > b { font-size: 16px; padding-left: 10px; border-left: 4px solid var(--lv-type); overflow-wrap: anywhere; }
.lv-ui .lv-question-actions { gap: 6px; }
.lv-ui .lv-question-actions .btn { min-width: 36px; min-height: 36px; }
.lv-ui .lv-edit-section { padding-top: 23px; }
.lv-ui .lv-edit-section + .lv-edit-section { margin-top: 8px; border-top: 1px solid var(--lv-line); }
.lv-ui .lv-edit-section-title { display: flex; align-items: center; gap: 9px; margin: 0 0 16px; font-size: 15px; }
.lv-ui .lv-edit-section-title > span { display: grid; place-items: center; width: 28px; height: 26px; border-radius: 7px; font-size: 11px; color: var(--lv-brand); background: var(--lv-brand-soft); }
.lv-ui .lv-edit-main .field > span { color: var(--lv-muted); font-size: 13px; font-weight: 600; }
.lv-ui .lv-edit-main input[type=text], .lv-ui .lv-edit-main textarea, .lv-ui .lv-edit-main select { min-width: 0; padding: 11px 12px; }
.lv-ui .lv-edit-main textarea { resize: vertical; min-height: 100px; line-height: 1.7; }
.lv-ui .lv-edit-media-row { align-items: flex-start; gap: 12px; }
.lv-ui .lv-edit-media-field { flex: 2 1 180px; min-width: 0; }
.lv-ui .lv-edit-media-row .lv-media-preview { background: var(--lv-panel-soft); border: 1px dashed var(--lv-line); border-radius: 12px; padding: 8px; min-width: 70px; min-height: 70px; }
.lv-ui .lv-edit-timing-row { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.lv-ui .lv-edit-main .lv-opt-row { display: grid; grid-template-columns: 32px minmax(0,1fr) auto auto; gap: 8px; padding: 10px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); border-radius: 13px; }
.lv-ui .lv-edit-main .lv-opt-row input[type=text] { width: 100%; min-width: 0; background: var(--lv-panel); }
.lv-ui .lv-edit-main input[type=checkbox] { accent-color: var(--lv-brand); }
.lv-ui .lv-edit-main .lv-opt-row .btn { padding: 4px 7px; }
.lv-ui .lv-edit-main .lv-edit-fields > .row > .field { flex: 1 1 120px !important; min-width: 0; }

/* 导入：保留通用组件的所有工具，直播弹窗内将表格和错误区局部滚动。 */
.lv-ui.lv-import-modal { max-width: 100%; padding: 24px; }
.lv-ui .lv-quiz-import { min-width: 0; }
.lv-ui .lv-import-intro { display: flex; align-items: center; gap: 13px; padding: 16px; margin-bottom: 20px; background: var(--lv-brand-soft); border-radius: 15px; }
.lv-ui .lv-import-intro > div { min-width: 0; }
.lv-ui .lv-import-intro b { font-size: 15px; }
.lv-ui .lv-import-intro p { margin: 5px 0 0; line-height: 1.7; }
.lv-ui .lv-import-mark { display: grid; place-items: center; width: 42px; height: 48px; flex: none; background: var(--lv-panel); border: 2px solid var(--lv-brand); color: var(--lv-brand); border-radius: 10px; transform: rotate(-7deg); font-size: 24px; }
.lv-ui .lv-quiz-import .imp-help { padding: 14px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); border-radius: 12px; line-height: 1.8; }
.lv-ui .lv-quiz-import .imp-cols { gap: 7px; }
.lv-ui .lv-quiz-import .imp-col { padding: 4px 8px; border-radius: 8px; font-size: 12px; max-width: 100%; overflow-wrap: anywhere; }
.lv-ui .lv-quiz-import .importer > .row { gap: 8px; }
.lv-ui .lv-quiz-import .importer .btn { min-height: 40px; white-space: normal; }
.lv-ui .lv-quiz-import textarea.imp-text { background: var(--lv-panel-soft); border: 1.5px dashed var(--lv-line); border-radius: 14px; padding: 14px; line-height: 1.8; font-size: 13px; margin-top: 8px; }
.lv-ui .lv-quiz-import textarea.imp-text:focus { border-style: solid; }
.lv-ui .lv-quiz-import .imp-summary { padding: 12px 14px; background: var(--lv-brand-soft); border-radius: 10px; line-height: 1.8; }
.lv-ui .lv-quiz-import .imp-errors { overflow-wrap: anywhere; }
.lv-ui .lv-quiz-import .imp-errors ul { background: var(--lv-panel-soft); padding: 13px 15px 13px 32px; border: 1px solid var(--bad); border-radius: 12px; line-height: 1.8; }
.lv-ui .lv-quiz-import .imp-table { width: 100%; max-width: 100%; border-radius: 12px; background: var(--lv-panel-soft); }
.lv-ui .lv-quiz-import .imp-table .wordtable { min-width: 600px; }
.lv-ui .lv-quiz-import .imp-table th { position: sticky; top: 0; z-index: 1; background: var(--lv-panel); padding: 12px; font-size: 12px; font-weight: 750; }
.lv-ui .lv-quiz-import .imp-table td { padding: 12px; font-size: 13px; max-width: 260px; overflow-wrap: anywhere; }

@media (max-width: 900px) {
  .lv-ui .lv-edit-header { grid-template-columns: minmax(0,1fr); }
  .lv-ui .lv-edit-save-actions { justify-content: flex-start; }
  .lv-ui .lv-save-status { text-align: left; }
  .lv-ui .lv-edit-layout { grid-template-columns: minmax(0,1fr); }
  .lv-ui .lv-edit-list { max-height: 260px; }
  .lv-ui .lv-add-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .lv-ui .lv-exp-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 600px) {
  .lv-ui .lv-home-hero { padding: 20px; grid-template-columns: minmax(0,1fr); gap: 0; }
  .lv-ui .lv-hero-art { display: none; }
  .lv-ui .lv-home-tabs button { padding: 10px 5px; font-size: 12px; min-height: 48px; }
  .lv-ui .lv-prep-actions { display: grid; grid-template-columns: minmax(0,1fr); }
  .lv-ui .lv-prep-actions .btn { text-align: left; padding: 12px 14px; }
  .lv-ui .lv-quiz-grid { grid-template-columns: minmax(0,1fr); gap: 16px; }
  .lv-ui .lv-quiz-card { padding: 20px; }
  .lv-ui .lv-quiz-secondary .btn { min-height: 44px; }
  .lv-ui.lv-launch-modal, .lv-ui.lv-import-modal { padding: 16px; }
  .lv-ui .lv-exp { padding: 12px; gap: 5px; }
  .lv-ui .lv-exp-art { width: 44px; height: 44px; }
  .lv-ui .lv-exp-name { font-size: 14px; }
  .lv-ui .lv-exp-desc { font-size: 11px; }
  .lv-ui .lv-exp-check { width: 19px; height: 19px; right: 8px; top: 8px; }
  .lv-ui .lv-exp-name .lv-tag { display: inline-block; margin: 3px 0 0 4px; }
  .lv-ui .lv-launch-settings { padding: 12px; }
  .lv-ui .lv-launch-settings .lv-setting { font-size: 13px; }
  .lv-ui .lv-edit-header, .lv-ui .lv-edit-main { padding: 16px; }
  .lv-ui .lv-edit-save-actions { gap: 8px; }
  .lv-ui .lv-edit-save-actions .btn { flex: 1 1 auto; }
  .lv-ui .lv-question-toolbar { align-items: flex-start; }
  .lv-ui .lv-question-toolbar > b { flex-basis: 100%; font-size: 15px; }
  .lv-ui .lv-question-actions { width: 100%; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); }
  .lv-ui .lv-question-actions .btn { min-height: 44px; }
  .lv-ui .lv-edit-main .lv-opt-row { grid-template-columns: 32px minmax(0,1fr) auto; gap: 7px; padding: 9px; }
  .lv-ui .lv-edit-main .lv-correct { grid-column: 2; grid-row: 2; font-size: 12px; }
  .lv-ui .lv-edit-main .lv-opt-row .btn { grid-column: 3; grid-row: 1; min-height: 38px; }
  .lv-ui .lv-edit-media-row .lv-media-preview { flex-basis: 100%; }
  .lv-ui .lv-quiz-import .importer > .row { display: grid; grid-template-columns: minmax(0,1fr); }
  .lv-ui .lv-quiz-import .importer .btn { min-height: 44px; }
  .lv-ui .lv-import-intro { align-items: flex-start; padding: 12px; }
  .lv-ui .lv-import-mark { width: 32px; height: 40px; font-size: 20px; }
  /* 手机预览与历史记录改为逐条卡片，所有列仍在，页面和表格都不横滚。 */
  .lv-ui .lv-quiz-import .imp-table .wordtable, .lv-ui .lv-history-table { display: block; min-width: 0; width: 100%; }
  .lv-ui .lv-quiz-import .imp-table thead, .lv-ui .lv-history-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
  .lv-ui .lv-quiz-import .imp-table tbody, .lv-ui .lv-history-table tbody { display: block; }
  .lv-ui .lv-quiz-import .imp-table tr, .lv-ui .lv-history-table tr { display: grid; grid-template-columns: minmax(0,1fr); padding: 12px; border: 1px solid var(--lv-line); border-radius: 12px; background: var(--lv-panel); margin-bottom: 10px; }
  .lv-ui .lv-quiz-import .imp-table td, .lv-ui .lv-history-table td { display: block; min-width: 0; max-width: none; width: auto; border: 0; padding: 5px 0; overflow-wrap: anywhere; }
  .lv-ui .lv-quiz-import .imp-table td::before, .lv-ui .lv-history-table td::before { display: inline-block; color: var(--lv-muted); font-size: 11px; margin-right: 8px; font-weight: 500; }
  .lv-ui .lv-quiz-import .imp-table td:nth-child(1)::before { content: '行'; }
  .lv-ui .lv-quiz-import .imp-table td:nth-child(2)::before { content: '题型'; }
  .lv-ui .lv-quiz-import .imp-table td:nth-child(3)::before { content: '题干'; }
  .lv-ui .lv-quiz-import .imp-table td:nth-child(4)::before { content: '答案 / 选项'; }
  .lv-ui .lv-quiz-import .imp-table td:nth-child(5)::before { content: '时限'; }
  .lv-ui .lv-history-table td:nth-child(1)::before { content: '时间'; }
  .lv-ui .lv-history-table td:nth-child(2)::before { content: '题组'; }
  .lv-ui .lv-history-table td:nth-child(3)::before { content: '玩法'; }
  .lv-ui .lv-history-table td:nth-child(4)::before { content: '人数'; }
  .lv-ui .lv-history-table td:nth-child(5)::before { content: '状态'; }
  .lv-ui .lv-history-table td:last-child .btn { min-height: 44px; width: 100%; }
}

/* 直播弹窗宽度须扣除 modalRoot 两侧各 18px 的留白，避免 grid 轨道被内联 vw 宽度撑开。 */
.lv-ui.lv-modal {
  min-width: 0;
  max-width: min(100%, calc(100vw - 36px));
}

/* ==================== 第 3 步：学生竖屏体验 ==================== */
/* 仅 .lv-ui.lv-player 生效。作业页中的 playerInput 保持原样。 */
.lv-ui.lv-player { min-height: 100vh; min-height: 100dvh; padding-top: env(safe-area-inset-top,0px); padding-right: env(safe-area-inset-right,0px); padding-bottom: env(safe-area-inset-bottom,0px); padding-left: env(safe-area-inset-left,0px); color: var(--lv-ink); background: var(--lv-bg); background-image: radial-gradient(ellipse at 100% 0,rgba(255,197,155,.2),transparent 55%),radial-gradient(ellipse at 0 100%,rgba(22,124,117,.1),transparent 60%); }
.lv-ui.lv-player .muted, .lv-ui.lv-player a.small.muted { color: var(--lv-muted); }
.lv-ui.lv-player .btn, .lv-ui.lv-player .chip { min-height: 44px; min-width: 44px; }
.lv-ui.lv-player .btn.primary { background: var(--lv-brand); border-color: var(--lv-brand); color: var(--accent-text); }
.lv-ui.lv-player .btn:not(.primary) { background: var(--lv-panel); border-color: var(--lv-line); color: var(--lv-ink); }
.lv-ui.lv-player .lv-p-center { width: 100%; gap: 16px; padding: 26px 18px; min-width: 0; }
.lv-ui.lv-player .lv-p-center > p { max-width: 100%; margin: 0; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-big { font-size: 27px; line-height: 1.35; overflow-wrap: anywhere; }

/* 原创纸张、圆环、叶片构成欢迎插画，不加载图片。 */
.lv-ui.lv-player .lv-p-welcome-card { width: min(400px,100%); padding: 26px; gap: 14px; border-radius: 28px; text-align: left; }
.lv-ui.lv-player .lv-p-welcome-art { position: relative; width: 180px; height: 112px; margin: 0 auto 6px; flex: none; }
.lv-ui.lv-player .lv-p-art-note { position: absolute; width: 82px; height: 92px; left: 45px; top: 10px; border: 2px solid var(--lv-brand); border-left-width: 8px; background: var(--lv-brand-soft); border-radius: 14px; transform: rotate(-10deg); box-shadow: 10px 8px 0 var(--lv-panel-soft); }
.lv-ui.lv-player .lv-p-art-note::before { content: ''; position: absolute; left: 13px; top: 24px; width: 35px; height: 4px; background: var(--lv-brand); border-radius: 5px; box-shadow: 0 13px 0 var(--lv-brand),0 26px 0 var(--lv-brand); opacity: .65; }
.lv-ui.lv-player .lv-p-art-ring { position: absolute; width: 34px; height: 34px; left: 15px; top: 4px; border: 8px solid var(--lv-orange); border-radius: 50%; }
.lv-ui.lv-player .lv-p-art-leaf { position: absolute; right: 9px; bottom: 6px; width: 33px; height: 54px; border-radius: 36px 8px 36px 8px; background: var(--lv-green); transform: rotate(22deg); }
.lv-ui.lv-player .lv-p-art-leaf::after { content: ''; position: absolute; left: 16px; top: 10px; height: 35px; width: 2px; background: var(--lv-panel); opacity: .65; transform: rotate(14deg); }
.lv-ui.lv-player .lv-p-eyebrow { color: var(--lv-green); font-size: 12px; font-weight: 750; letter-spacing: .06em; }
.lv-ui.lv-player .lv-p-logo { font-size: 25px; line-height: 1.45; font-weight: 850; margin: 0; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-welcome-note { margin: 0; line-height: 1.7; font-size: 13px; }
.lv-ui.lv-player .lv-p-entry-field { margin: 3px 0 0; min-width: 0; }
.lv-ui.lv-player .lv-p-entry-field > span { color: var(--lv-muted); font-size: 12px; font-weight: 650; }
.lv-ui.lv-player .lv-pin-input.big { min-height: 58px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); border-radius: 14px; color: var(--lv-ink); font-size: 26px; }
.lv-ui.lv-player .lv-p-entry-field input:not([inputmode=numeric]) { letter-spacing: 0; text-align: left; font-size: 20px; }
.lv-ui.lv-player .lv-p-go { min-height: 52px; font-size: 16px; font-weight: 750; border-radius: 14px; margin-top: 2px; }
.lv-ui.lv-player .lv-nick-dice { align-self: stretch; }
.lv-ui.lv-player .lv-p-home-link { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 14px; border-radius: 12px; }

/* 自己的昵称是身份徽标；不制造学生端尚未获得的头像数据。 */
.lv-ui.lv-player .lv-p-head { display: grid; grid-template-columns: minmax(0,1fr) auto auto; gap: 10px; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--lv-line); color: var(--lv-ink); background: var(--lv-panel); }
.lv-ui.lv-player .lv-p-name { min-width: 0; gap: 7px; flex-wrap: wrap; font-size: 13px; line-height: 1.4; }
.lv-ui.lv-player .lv-p-nickname { min-width: 0; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-avatar { display: inline-grid; place-items: center; width: 30px; height: 30px; flex: none; border-radius: 10px; color: var(--lv-brand); background: var(--lv-brand-soft); font-size: 16px; font-weight: 800; }
.lv-ui.lv-player .lv-p-progress { font-size: 12px; color: var(--lv-muted); font-variant-numeric: tabular-nums; }
.lv-ui.lv-player .lv-p-score { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; max-width: 130px; padding: 6px 9px; background: var(--lv-brand-soft); color: var(--lv-brand); border-radius: 10px; font-size: 13px; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.lv-ui.lv-player .lv-p-team { display: inline-block; color: #fff; font-size: 10px; line-height: 1.5; }
.lv-ui.lv-player .lv-p-state-card { display: flex; flex-direction: column; align-items: center; gap: 14px; width: min(440px,100%); min-width: 0; border-radius: 26px; padding: 24px 20px; color: var(--lv-ink); }
.lv-ui.lv-player .lv-p-state-card > p { margin: 0; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-status { display: inline-flex; align-items: center; gap: 7px; padding: 6px 12px; border-radius: 999px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); color: var(--lv-green); font-size: 12px; font-weight: 750; }
.lv-ui.lv-player .lv-p-self-badge { padding: 10px; border: 1px solid var(--lv-line); border-radius: 30px; background: var(--lv-panel-soft); }
.lv-ui.lv-player .lv-p-self-badge .lv-p-avatar { width: 70px; height: 70px; border-radius: 22px; font-size: 32px; }
.lv-ui.lv-player .lv-p-self-name { max-width: 100%; font-size: 21px; font-weight: 800; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-lobby-card .lv-p-big { font-size: 18px; }
.lv-ui.lv-player .lv-p-lobby-team { font-size: 14px; font-weight: 750; }
.lv-ui.lv-player .lv-p-wait-note { width: 100%; padding-top: 14px; border-top: 1px solid var(--lv-line); }
.lv-ui.lv-player .lv-p-count { color: var(--lv-brand); font-size: clamp(72px,20vw,112px); font-variant-numeric: tabular-nums; }
.lv-ui.lv-player .lv-p-spinner { width: 30px; height: 30px; border-width: 3px; border-color: var(--lv-line); border-top-color: var(--lv-brand); }

/* 作答内容保持流式高度；文本、排序、滑块的提交都紧随输入。 */
.lv-ui.lv-player .lv-p-q { width: min(600px,100%); align-self: center; min-width: 0; padding: 18px 16px 24px; gap: 14px; }
.lv-ui.lv-player .lv-p-question-meta { justify-content: space-between; gap: 10px; }
.lv-ui.lv-player .lv-p-timer { padding: 6px 12px; border-radius: 10px; color: var(--lv-brand); background: var(--lv-brand-soft); font-size: 14px; font-variant-numeric: tabular-nums; }
.lv-ui.lv-player .lv-p-prompt { padding: 17px; background: var(--lv-panel); border: 1px solid var(--lv-line); color: var(--lv-ink); border-radius: 18px; font-size: 19px; line-height: 1.6; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-prompt.dim { font-size: 15px; }
.lv-ui.lv-player .lv-p-conf { gap: 8px; justify-content: flex-start; }
.lv-ui.lv-player .lv-p-conf > span { flex-basis: 100%; color: var(--lv-muted); font-size: 12px; }
.lv-ui.lv-player .lv-p-conf .chip { flex: 1 1 80px; padding: 8px 6px; font-size: 12px; color: var(--lv-ink); background: var(--lv-panel); border-color: var(--lv-line); }
.lv-ui.lv-player .lv-p-conf .chip.on { color: var(--accent-text); background: var(--lv-brand); border-color: var(--lv-brand); }
.lv-ui.lv-player .lv-p-input { min-width: 0; gap: 12px; }
.lv-ui.lv-player .lv-p-grid { counter-reset: lv-student-choice; flex: none; grid-template-columns: repeat(2,minmax(0,1fr)); grid-auto-rows: minmax(118px,auto); min-height: 0; gap: 12px; }
.lv-ui.lv-player .lv-p-grid.n2 { grid-template-columns: minmax(0,1fr); grid-auto-rows: minmax(100px,auto); }
.lv-ui.lv-player .lv-p-grid.n5 .lv-p-btn:last-child { grid-column: 1 / -1; }
/* 仅覆盖内联 background 简写的 image 部分，颜色和顺序仍来自 SHAPES。 */
.lv-ui.lv-player .lv-p-btn { counter-increment: lv-student-choice; position: relative; min-width: 0; min-height: 100px; padding: 22px 12px 16px; gap: 8px; border: 1px solid rgba(255,255,255,.45); border-radius: 18px; background-image: linear-gradient(145deg,rgba(0,0,0,.04),rgba(0,0,0,.14)) !important; box-shadow: 0 3px 0 rgba(36,44,80,.18); }
.lv-ui.lv-player .lv-p-btn::before { content: counter(lv-student-choice); position: absolute; top: 10px; left: 10px; z-index: 1; min-width: 25px; height: 25px; display: grid; place-items: center; padding: 0 5px; border: 1px solid currentColor; border-radius: 8px; font-size: 12px; font-weight: 850; opacity: .9; }
.lv-ui.lv-player .lv-p-btn:active { transform: translateY(1px); }
.lv-ui.lv-player .lv-p-btn.on { outline: 3px solid var(--lv-ink); outline-offset: 2px; border-color: #fff; }
.lv-ui.lv-player .lv-p-btn.on::before { content: counter(lv-student-choice) ' ✓'; }
.lv-ui.lv-player .lv-p-text { font-size: 16px; font-weight: 750; line-height: 1.5; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-submit { position: static; width: 100%; min-height: 52px; margin-top: 2px; font-size: 16px; font-weight: 750; border-radius: 14px; padding: 13px 16px; }
.lv-ui.lv-player .lv-p-input-type, .lv-ui.lv-player .lv-p-input-wordcloud, .lv-ui.lv-player .lv-p-input-open, .lv-ui.lv-player .lv-p-input-slider { flex: none; padding: 16px; background: var(--lv-panel); border: 1px solid var(--lv-line); border-radius: 18px; }
.lv-ui.lv-player .lv-p-text-input { min-width: 0; min-height: 58px; padding: 14px; font-size: 22px; line-height: 1.6; color: var(--lv-ink); background: var(--lv-panel-soft); border: 1px solid var(--lv-line); border-radius: 12px; scroll-margin-top: 14px; scroll-margin-bottom: 80px; }
.lv-ui.lv-player textarea.lv-p-text-input { min-height: 128px; resize: vertical; text-align: left; font-size: 18px; }
.lv-ui.lv-player .lv-p-puzzle { gap: 10px; }
.lv-ui.lv-player .lv-p-piece { position: relative; min-height: 56px; border: 1px solid var(--lv-line); padding: 14px 16px 14px 42px; text-align: left; color: var(--lv-ink); background: var(--lv-panel); border-radius: 13px; font-size: 18px; line-height: 1.5; overflow-wrap: anywhere; box-shadow: 0 2px 0 var(--lv-line); touch-action: none; }
.lv-ui.lv-player .lv-p-piece::before { content: '⋮⋮'; position: absolute; left: 13px; top: 14px; color: var(--lv-muted); font-size: 19px; }
.lv-ui.lv-player .lv-p-piece.dragging { border-color: var(--lv-brand); background: var(--lv-brand-soft); }
.lv-ui.lv-player .lv-p-slider-val { color: var(--lv-brand); font-size: 36px; line-height: 1.4; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-range { min-height: 48px; width: 100%; accent-color: var(--lv-brand); }

/* 反馈：结果、得分细项、连对、名次各占一层，玩法控件全部保留。 */
.lv-ui.lv-player .lv-p-feedback-card { --lv-feedback: var(--lv-brand); border-top: 5px solid var(--lv-feedback); }
.lv-ui.lv-player.ok .lv-p-feedback-card { --lv-feedback: var(--lv-green); }
.lv-ui.lv-player.bad .lv-p-feedback-card { --lv-feedback: var(--bad); }
.lv-ui.lv-player .lv-p-feedback-symbol { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 20px; font-size: 38px; line-height: 1; color: var(--lv-feedback); background: var(--lv-panel-soft); border: 1px solid var(--lv-line); }
.lv-ui.lv-player.ok .lv-p-big { text-shadow: none; }
.lv-ui.lv-player .lv-p-points { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 100%; padding: 16px; border: 1px solid var(--lv-line); border-radius: 16px; background: var(--lv-brand-soft); color: var(--lv-brand); font-size: 30px; line-height: 1.4; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-points-label { font-size: 11px; color: var(--lv-muted); font-weight: 650; }
.lv-ui.lv-player .lv-p-points-value { font-size: 38px; font-weight: 850; font-variant-numeric: tabular-nums; }
.lv-ui.lv-player .lv-p-points-detail { font-size: 12px; font-weight: 650; line-height: 1.7; color: var(--lv-ink); }
.lv-ui.lv-player .lv-p-streak { font-size: 14px; color: var(--lv-ink); background: var(--lv-panel-soft); padding: 7px 12px; border-radius: 10px; }
.lv-ui.lv-player .lv-p-answer { font-size: 14px; line-height: 1.8; width: 100%; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-p-ans-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; padding: 6px 10px; }
.lv-ui.lv-player .lv-p-rank { width: 100%; padding: 13px 0; border-top: 1px solid var(--lv-line); border-bottom: 1px solid var(--lv-line); font-size: 15px; }
.lv-ui.lv-player .lv-rank-arrow { display: inline-block; margin-left: 6px; font-size: 13px; font-weight: 800; }
.lv-ui.lv-player .lv-rank-arrow.up { color: var(--lv-green); }
.lv-ui.lv-player .lv-rank-arrow.down { color: var(--bad); }
.lv-ui.lv-player .lv-p-podium { width: 100%; min-width: 0; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); color: var(--lv-ink); font-size: 14px; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-chests-wrap { width: 100%; min-width: 0; }
.lv-ui.lv-player .lv-chests { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); width: 100%; gap: 8px; }
.lv-ui.lv-player .lv-chest { width: 100%; min-width: 44px; height: 80px; font-size: 42px; background: var(--lv-panel-soft); border-color: var(--lv-line); }
.lv-ui.lv-player .lv-chest-open { min-width: 0; width: 100%; background: var(--lv-brand-soft); color: var(--lv-ink); }
.lv-ui.lv-player .lv-chest-open.mine { background: var(--lv-brand-soft); outline-color: var(--lv-brand); }
.lv-ui.lv-player .lv-chest-result, .lv-ui.lv-player .lv-catch { max-width: 100%; border: 1px solid var(--lv-line); background: var(--lv-panel-soft); color: var(--lv-ink); font-size: 18px; line-height: 1.5; overflow-wrap: anywhere; }
.lv-ui.lv-player .lv-chest-result.k-steal { background: #ffe1e1; color: #8a1010; }
.lv-ui.lv-player .lv-cast-btn { min-height: 56px; max-width: 100%; padding: 14px 20px; font-size: 22px; background: var(--lv-brand-soft); color: var(--lv-brand); border-color: var(--lv-line); }
.lv-ui.lv-player .lv-shop { background: var(--lv-panel-soft); border: 1px solid var(--lv-line); color: var(--lv-ink); padding: 12px; }
.lv-ui.lv-player .lv-shop-items { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; }
.lv-ui.lv-player .lv-shop-item { min-width: 44px; min-height: 72px; background: var(--lv-panel); color: var(--lv-ink); border-color: var(--lv-line); border-radius: 12px; padding: 8px 3px; }
.lv-ui.lv-player .lv-shop-item.owned { background: var(--lv-brand-soft); border-color: var(--lv-brand); }
.lv-ui.lv-player .lv-targets { padding-top: 10px; }

/* VisualViewport 检测到键盘时收起装饰，输入与提交保留正常滚动。 */
.lv-ui.lv-player.lv-keyboard-open { min-height: var(--lv-visible-height,100vh); }
.lv-ui.lv-player.lv-keyboard-open .lv-p-center { flex: none; justify-content: flex-start; padding-top: 12px; padding-bottom: 12px; }
.lv-ui.lv-player.lv-keyboard-open .lv-p-welcome-card { padding: 18px; gap: 10px; }
.lv-ui.lv-player.lv-keyboard-open .lv-p-welcome-art { display: none; }
.lv-ui.lv-player.lv-keyboard-open .lv-p-logo { font-size: 20px; }
.lv-ui.lv-player.lv-keyboard-open .lv-p-q { flex: none; gap: 10px; padding-top: 12px; }
.lv-ui.lv-player.lv-keyboard-open textarea.lv-p-text-input { min-height: 96px; }
@media (max-width: 360px) {
  .lv-ui.lv-player .lv-p-welcome-card { padding: 22px; }
  .lv-ui.lv-player .lv-p-head { gap: 7px; padding: 12px; }
  .lv-ui.lv-player .lv-p-state-card { padding: 22px 16px; }
  .lv-ui.lv-player .lv-p-text { font-size: 15px; }
}
@media (prefers-reduced-motion: reduce) {
  .lv-ui.lv-player, .lv-ui.lv-player *, .lv-ui.lv-player *::before, .lv-ui.lv-player *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .lv-ui.lv-player .lv-p-btn:active, .lv-ui.lv-player .lv-chest.opening { transform: none; }
}

/* ==================== 选项图形（原创一套，手机 / 大屏 / 编辑器 / 作业页共用） ====================
 * 用 em 画，跟随所在位置的字号缩放；颜色用 currentColor（即 SHAPES[i].ink）。 */
.lv-mark { position: relative; display: inline-block; flex: none; width: 1.15em; height: 1em; vertical-align: -.12em; }
.lv-mark::before, .lv-mark::after { content: ''; position: absolute; box-sizing: border-box; }
.lv-mark-arch::before { left: .04em; right: .04em; top: .1em; bottom: .1em; background: currentColor; border-radius: .55em .55em .1em .1em; }
.lv-mark-bars::before, .lv-mark-bars::after { top: .04em; bottom: .04em; width: .34em; background: currentColor; border-radius: .17em; }
.lv-mark-bars::before { left: .12em; }
.lv-mark-bars::after { right: .12em; }
.lv-mark-ring::before { left: .07em; top: 0; width: 1em; height: 1em; border: .16em solid currentColor; border-radius: 50%; }
.lv-mark-ring::after { left: .41em; top: .34em; width: .32em; height: .32em; background: currentColor; border-radius: 50%; }
.lv-mark-plus::before { left: .04em; right: .04em; top: .35em; height: .3em; background: currentColor; border-radius: .15em; }
.lv-mark-plus::after { left: .425em; top: 0; width: .3em; bottom: 0; background: currentColor; border-radius: .15em; }
.lv-mark-dots::before { left: 0; top: .34em; width: .32em; height: .32em; background: currentColor; border-radius: 50%; box-shadow: .415em 0 0 currentColor, .83em 0 0 currentColor; }
.lv-mark-slash::before { left: .14em; top: .02em; width: .2em; height: .96em; background: currentColor; border-radius: .1em; transform: skewX(-22deg); box-shadow: .35em 0 0 currentColor, .7em 0 0 currentColor; }
.lv-shape .lv-mark { font-size: 15px; }
.lv-p-ans-chip .lv-mark { font-size: 1em; }
.lv-ui.lv-player .lv-p-icon { font-size: 40px; line-height: 1; }

/* 答对 / 答错：整屏变色，教室里瞥一眼就知道；结果卡片仍是面板色压在上面 */
.lv-ui.lv-player.ok { background: linear-gradient(160deg, #22a084, #0f6656); }
.lv-ui.lv-player.bad { background: linear-gradient(160deg, #d8505f, #8f2b3b); }
[data-theme="dark"] .lv-ui.lv-player.ok { background: linear-gradient(160deg, #157a66, #0b4a3f); }
[data-theme="dark"] .lv-ui.lv-player.bad { background: linear-gradient(160deg, #a53a4a, #64202c); }

/* ==================== 第 4 步：投影大屏 ====================
 * 只作用于 .lv-ui.lv-stage；按 1366×768 / 1920×1080、后排约 8 米可读来定字号。 */
body.lv-stage-mode { background: #171d48; }
[data-theme="dark"] body.lv-stage-mode { background: #10182e; }
.lv-ui.lv-stage { min-height: 100vh; min-height: 100dvh; color: var(--lv-stage-text); }

/* 顶栏：半透明小胶囊 */
.lv-ui.lv-stage .lv-top { padding: 14px 24px; }
.lv-ui.lv-stage .lv-top-pin, .lv-ui.lv-stage .lv-qno, .lv-ui.lv-stage .lv-top-exp {
  background: var(--lv-stage-surface); border: 1px solid var(--lv-stage-line); border-radius: 999px; padding: 5px 14px; font-size: 15px; opacity: 1;
}
.lv-ui.lv-stage .lv-top-pin b { color: var(--lv-orange); letter-spacing: 3px; }
.lv-ui.lv-stage .lv-qno { font-size: 18px; font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-icon-btn { width: 40px; height: 40px; border-radius: 12px; color: var(--lv-stage-text); }
.lv-ui.lv-stage .lv-icon-btn:hover { background: rgba(255,255,255,.24); }
.lv-ui.lv-stage .lv-big-btn { min-height: 56px; padding: 12px 40px; border-radius: 16px; font-size: 21px; font-weight: 800; box-shadow: 0 6px 0 rgba(0,0,0,.18); }
.lv-ui.lv-stage .lv-big-btn:active { transform: translateY(3px); box-shadow: 0 3px 0 rgba(0,0,0,.18); }
.lv-ui.lv-stage .lv-h-hint { font-size: 18px; color: var(--lv-stage-muted); opacity: 1; }

/* 大厅：白色加入卡 + 二维码卡 + 名字胶囊 */
.lv-ui.lv-stage .lv-lobby { padding: 8px 28px 36px; }
.lv-ui.lv-stage .lv-lobby-join, .lv-ui.lv-stage .lv-lobby-qr {
  background: var(--lv-panel); color: var(--lv-ink); border: 1px solid var(--lv-line); border-radius: 26px;
  box-shadow: 0 18px 50px rgba(5,10,40,.35);
}
.lv-ui.lv-stage .lv-lobby-join { padding: 22px 34px; gap: 8px 26px; }
.lv-ui.lv-stage .lv-lobby-step {
  justify-self: end; padding: 4px 12px; border-radius: 999px; background: var(--lv-brand-soft); color: var(--lv-brand); font-size: 15px; font-weight: 750;
}
.lv-ui.lv-stage .lv-lobby-url { color: var(--lv-ink); letter-spacing: -.01em; }
.lv-ui.lv-stage .lv-lobby-pin { color: var(--lv-brand); letter-spacing: .08em; font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-qr-cap { color: var(--lv-muted); }
.lv-ui.lv-stage .lv-lobby-qr { padding: 14px; }
.lv-ui.lv-stage .lv-lobby-title { font-size: 26px; font-weight: 800; margin-top: 26px; }
.lv-ui.lv-stage .lv-lobby-sub { color: var(--lv-stage-muted); opacity: 1; font-size: 18px; }
.lv-ui.lv-stage .lv-lobby-count {
  display: inline-flex; align-items: center; gap: 8px; margin: 18px 0 12px; padding: 6px 18px; border-radius: 999px;
  background: var(--lv-orange); color: #38251b; font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums;
}
.lv-ui.lv-stage .lv-lobby-players { gap: 12px; max-width: 1200px; }
.lv-ui.lv-stage .lv-lobby-player {
  display: inline-flex; align-items: center; gap: 6px; padding: 9px 18px; border-radius: 999px;
  background: var(--lv-panel); color: var(--lv-ink); border: 3px solid transparent; font-size: 20px; font-weight: 750;
  box-shadow: 0 4px 0 rgba(5,10,40,.25);
}
.lv-ui.lv-stage .lv-lobby-player:hover { text-decoration: line-through; opacity: .75; }
.lv-ui.lv-stage .lv-lobby-preset { color: var(--lv-stage-muted); opacity: 1; font-size: 16px; }

/* 倒计时：数字放进一个大圆盘 */
.lv-ui.lv-stage .lv-count-q { padding: 6px 18px; border-radius: 999px; background: var(--lv-stage-surface); border: 1px solid var(--lv-stage-line); font-size: 20px; opacity: 1; }
.lv-ui.lv-stage .lv-count-disc {
  display: grid; place-items: center; box-sizing: border-box; height: clamp(140px, 30vh, 260px); min-width: clamp(140px, 30vh, 260px); padding: 0 .35em; border-radius: 999px;
  background: var(--lv-orange); color: #38251b; box-shadow: 0 0 0 16px rgba(255,255,255,.08), 0 0 0 32px rgba(255,255,255,.04);
}
.lv-ui.lv-stage .lv-count-n { font-size: clamp(56px, 15vh, 130px); font-variant-numeric: tabular-nums; white-space: nowrap; }
.lv-ui.lv-stage .lv-count-prompt { margin-top: 18px; }

/* 答题：题干卡 + 侧边计时 / 已答 */
.lv-ui.lv-stage .lv-q-wrap { grid-template-columns: 150px minmax(0, 1fr) 150px; gap: 18px; padding: 0 24px 28px; }
.lv-ui.lv-stage .lv-q-side {
  gap: 6px; padding: 18px 10px; border-radius: 24px; background: var(--lv-stage-surface); border: 1px solid var(--lv-stage-line);
}
.lv-ui.lv-stage .lv-side-label { font-size: 15px; color: var(--lv-stage-muted); }
.lv-ui.lv-stage .lv-answered { font-size: 60px; line-height: 1.1; color: var(--lv-orange); font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-skip-btn { margin-top: 12px; }
.lv-ui.lv-stage .lv-ring-bg { fill: rgba(255,255,255,.08); stroke: rgba(255,255,255,.16); }
.lv-ui.lv-stage .lv-ring-fg { stroke: var(--lv-orange); }
.lv-ui.lv-stage .lv-timer-num { color: var(--lv-stage-text); font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-timer-ring.low .lv-ring-fg { stroke: #ff6b78; }
.lv-ui.lv-stage .lv-timer-ring.low .lv-timer-num { color: #ff8a94; }
.lv-ui.lv-stage .lv-h-q { gap: 20px; }
.lv-ui.lv-stage .lv-h-prompt {
  background: var(--lv-panel); color: var(--lv-ink); border: 1px solid var(--lv-line); border-radius: 26px; padding: 22px 32px;
  font-size: clamp(26px, 3.4vw, 48px); line-height: 1.35; letter-spacing: -.01em; box-shadow: 0 16px 44px rgba(5,10,40,.3);
}
.lv-ui.lv-stage .lv-h-opts { gap: 16px; max-width: 1240px; }
.lv-ui.lv-stage .lv-h-opt {
  gap: 18px; min-height: 96px; padding: 18px 24px; border-radius: 22px; font-size: clamp(22px, 2.5vw, 34px); font-weight: 800;
  box-shadow: 0 6px 0 rgba(0,0,0,.22); background-image: linear-gradient(150deg, rgba(255,255,255,.1), rgba(0,0,0,.08));
}
.lv-ui.lv-stage .lv-h-icon {
  display: grid; place-items: center; flex: none; width: 56px; height: 56px; border-radius: 16px; background: rgba(255,255,255,.2); font-size: 30px;
}
.lv-ui.lv-stage .lv-h-piece { background: var(--lv-panel); color: var(--lv-ink); border-radius: 16px; box-shadow: 0 4px 0 rgba(5,10,40,.25); }
.lv-ui.lv-stage .lv-h-piece.ok { background: var(--lv-green); color: #fff; }
.lv-ui.lv-stage .lv-replay { margin-top: 18px; }

/* 揭晓：圆角柱状图，图形标签 */
.lv-ui.lv-stage .lv-reveal-prompt { font-size: clamp(24px, 3vw, 40px); }
.lv-ui.lv-stage .lv-bars { gap: 22px; height: min(42vh, 340px); }
.lv-ui.lv-stage .lv-bar-col { width: clamp(110px, 12vw, 160px); }
.lv-ui.lv-stage .lv-bar-n { font-size: 30px; font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-bar { border-radius: 14px 14px 0 0; }
.lv-ui.lv-stage .lv-bar-label { display: flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 0; font-size: 24px; border-radius: 0 0 14px 14px; }
.lv-ui.lv-stage .lv-bar-text { font-size: 18px; margin-top: 8px; }
.lv-ui.lv-stage .lv-bar-col.dim { opacity: .35; }
.lv-ui.lv-stage .lv-answer-big { background: var(--lv-green); border-radius: 22px; box-shadow: 0 8px 0 rgba(0,0,0,.2); }
.lv-ui.lv-stage .lv-typed-item.ok { background: var(--lv-green); color: #fff; }
.lv-ui.lv-stage .lv-cloud, .lv-ui.lv-stage .lv-wall-item { background: var(--lv-panel); color: var(--lv-ink); border-radius: 22px; }
.lv-ui.lv-stage .lv-fastest {
  display: inline-flex; align-items: baseline; gap: 6px; margin-top: 14px; padding: 8px 20px; border-radius: 999px;
  background: var(--lv-stage-surface); border: 1px solid var(--lv-stage-line); font-size: 20px;
}
.lv-ui.lv-stage .lv-fastest-pts { color: var(--lv-orange); }
[data-theme="dark"] .lv-ui.lv-stage .lv-h-opt { box-shadow: 0 6px 0 rgba(0,0,0,.35); }
@media (max-width: 800px) {
  .lv-ui.lv-stage .lv-q-wrap { grid-template-columns: minmax(0, 1fr); }
  .lv-ui.lv-stage .lv-q-side { justify-content: center; padding: 10px; }
}

/* ==================== 第 5 步：玩法画面与颁奖台 ====================
 * 大屏 .lv-ui.lv-stage 里的各玩法，统一成「白卡片 + 圆角 + 课堂游乐场配色」；
 * 学生端结果卡里的宝箱 / 钓鱼 / 商店改成浅色面板上的样式（原来是给深色背景配的白字）。 */
.lv-ui.lv-stage .lv-board { max-width: 1080px; gap: 16px; }
.lv-ui.lv-stage .lv-board-title { font-size: clamp(28px, 3vw, 38px); font-weight: 850; letter-spacing: -.01em; color: var(--lv-stage-text); }
.lv-ui.lv-stage .lv-board .small.muted, .lv-ui.lv-stage .lv-summary .small.muted { color: var(--lv-stage-muted); font-size: 16px; }

/* 排行榜 */
.lv-ui.lv-stage .lv-lb { gap: 12px; }
.lv-ui.lv-stage .lv-lb-row {
  grid-template-columns: 56px minmax(0, 240px) minmax(0, 1fr) 120px; padding: 14px 22px; border-radius: 20px;
  background: var(--lv-panel); color: var(--lv-ink); border: 1px solid var(--lv-line); box-shadow: 0 5px 0 rgba(5,10,40,.22); font-size: 24px;
}
.lv-ui.lv-stage .lv-lb-rank {
  display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: var(--lv-brand-soft); color: var(--lv-brand); font-size: 22px;
}
.lv-ui.lv-stage .lv-lb-row:nth-child(1) .lv-lb-rank { background: var(--lv-orange); color: #38251b; }
.lv-ui.lv-stage .lv-lb-bar { height: 16px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); }
.lv-ui.lv-stage .lv-lb-bar i { background: linear-gradient(90deg, var(--lv-green), var(--lv-brand)); border-radius: 999px; }
.lv-ui.lv-stage .lv-lb-score { font-weight: 850; font-variant-numeric: tabular-nums; color: var(--lv-brand); }
.lv-ui.lv-stage .lv-rank-arrow.up { color: var(--lv-green); }
.lv-ui.lv-stage .lv-rank-arrow.down { color: #cf4b45; }

/* 团队柱状图 / 高塔 / 汇总 */
.lv-ui.lv-stage .lv-teams { gap: 34px; height: min(44vh, 340px); }
.lv-ui.lv-stage .lv-team-score, .lv-ui.lv-stage .lv-tower-n { font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-team-bar { border-radius: 16px 16px 0 0; box-shadow: inset 0 -6px 0 rgba(0,0,0,.15); }
.lv-ui.lv-stage .lv-team-name { padding: 6px 16px; color: var(--lv-ink); background: var(--lv-panel); box-shadow: 0 4px 0 rgba(5,10,40,.22); }
.lv-ui.lv-stage .lv-block { border-radius: 6px; box-shadow: inset 0 -3px 0 rgba(0,0,0,.15); }
.lv-ui.lv-stage .lv-tower-base { border-radius: 12px; box-shadow: 0 4px 0 rgba(5,10,40,.22); }
.lv-ui.lv-stage .lv-sum-bar { border-radius: 8px 8px 0 0; }

/* 王国领地 */
.lv-ui.lv-stage .lv-kd-score { padding: 10px 30px; color: var(--lv-ink); background: var(--lv-panel); box-shadow: 0 5px 0 rgba(5,10,40,.22); }
.lv-ui.lv-stage .lv-kd-map { width: min(720px, 94%, calc((100vh - 420px) * 1.45)); gap: 8px; padding: 14px; border-radius: 24px; background: var(--lv-stage-surface); border: 1px solid var(--lv-stage-line); }
.lv-ui.lv-stage .lv-kd-tile { border-radius: 12px; }

/* 追逐 / 揭画 */
.lv-ui.lv-stage .lv-sea { border-radius: 26px; background: linear-gradient(180deg, #4fb3c9 0%, #22708f 100%); border: 1px solid var(--lv-stage-line); }
.lv-ui.lv-stage .lv-art { border-radius: 24px; border: 6px solid var(--lv-panel); }
.lv-ui.lv-stage .lv-art-tile { background: var(--lv-stage-base); border-color: rgba(255,255,255,.07); }

/* 金库 / 鱼塘 / 商店事件 */
.lv-ui.lv-stage .lv-heist-ev, .lv-ui.lv-stage .lv-fish { background: var(--lv-panel); color: var(--lv-ink); border: 1px solid var(--lv-line); border-radius: 18px; }
.lv-ui.lv-stage .lv-heist-ev.k-steal { background: #ffe5e3; color: #8a1f1a; }
.lv-ui.lv-stage .lv-heist-ev.k-double, .lv-ui.lv-stage .lv-fish.big { background: #fff1de; color: #4a2c12; }
.lv-ui.lv-stage .lv-fish.big { box-shadow: 0 0 0 3px var(--lv-orange); }
.lv-ui.lv-stage .lv-pond { border-radius: 26px; background: linear-gradient(180deg, rgba(79,179,201,.55), rgba(22,92,120,.7)); border: 1px solid var(--lv-stage-line); }
.lv-ui.lv-stage .lv-fish-best, .lv-ui.lv-stage .lv-shop-ev { background: var(--lv-stage-surface); border: 1px solid var(--lv-stage-line); }
.lv-ui.lv-stage .lv-shop-ev.freeze { background: rgba(120,200,255,.28); }

/* 颁奖台 */
.lv-ui.lv-stage .lv-podium-title { font-size: clamp(34px, 4vw, 48px); font-weight: 850; }
.lv-ui.lv-stage .lv-podium { gap: 20px; }
.lv-ui.lv-stage .lv-pod-col { width: clamp(150px, 15vw, 210px); }
.lv-ui.lv-stage .lv-pod-name { font-size: clamp(22px, 2.2vw, 30px); }
.lv-ui.lv-stage .lv-pod-score { color: var(--lv-stage-muted); opacity: 1; font-size: 20px; font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-pod-block { border-radius: 22px 22px 0 0; background: linear-gradient(180deg, var(--lv-brand), #2f3a98); box-shadow: inset 0 -10px 0 rgba(0,0,0,.18); }
.lv-ui.lv-stage .lv-pod-col:nth-child(2) .lv-pod-block { background: linear-gradient(180deg, #ffc59b, #e8955f); }
.lv-ui.lv-stage .lv-pod-col:nth-child(3) .lv-pod-block { background: linear-gradient(180deg, #2bb3a3, #167c75); }
[data-theme="dark"] .lv-ui.lv-stage .lv-pod-col:nth-child(1) .lv-pod-block { background: linear-gradient(180deg, #6170e0, #36409a); }

/* 学生端：结果卡里的宝箱 / 钓鱼 / 商店（浅色或深色面板上） */
.lv-ui.lv-player .lv-chest, .lv-ui.lv-player .lv-cast-btn {
  border: 2px solid var(--lv-brand); background: var(--lv-brand-soft); color: var(--lv-ink); box-shadow: 0 4px 0 rgba(36,44,80,.15);
}
.lv-ui.lv-player .lv-chest-result, .lv-ui.lv-player .lv-catch { background: var(--lv-panel-soft); color: var(--lv-ink); border: 1px solid var(--lv-line); }
.lv-ui.lv-player .lv-chest-result.k-steal, .lv-ui.lv-player .lv-p-robbed { background: #ffe5e3; color: #8a1f1a; }
.lv-ui.lv-player .lv-chest-open { background: var(--lv-panel-soft); border: 1px solid var(--lv-line); color: var(--lv-ink); }
.lv-ui.lv-player .lv-chest-open.mine { background: var(--lv-brand-soft); outline: 2px solid var(--lv-brand); }
.lv-ui.lv-player .lv-shop { background: var(--lv-panel-soft); border: 1px solid var(--lv-line); color: var(--lv-ink); }
.lv-ui.lv-player .lv-shop-item { min-height: 64px; border: 1px solid var(--lv-line); background: var(--lv-panel); color: var(--lv-ink); }
.lv-ui.lv-player .lv-shop-item.owned { background: var(--lv-brand-soft); border-color: var(--lv-brand); }
.lv-ui.lv-player .lv-shop-note { color: var(--lv-muted); opacity: 1; }
.lv-ui.lv-player .lv-p-frozen { background: #e3f3ff; color: #18456b; }
.lv-ui.lv-player .lv-p-podium { display: flex; flex-direction: column; gap: 6px; width: 100%; }
.lv-ui.lv-player .lv-p-podium > div { padding: 8px 12px; border-radius: 12px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); font-weight: 700; }
[data-theme="dark"] .lv-ui.lv-player .lv-chest-result.k-steal, [data-theme="dark"] .lv-ui.lv-player .lv-p-robbed { background: #4a2326; color: #ffd0cc; }
[data-theme="dark"] .lv-ui.lv-player .lv-p-frozen { background: #1d3550; color: #cfe8ff; }
[data-theme="dark"] .lv-ui.lv-stage .lv-heist-ev.k-steal { background: #4a2326; color: #ffd0cc; }
[data-theme="dark"] .lv-ui.lv-stage .lv-heist-ev.k-double, [data-theme="dark"] .lv-ui.lv-stage .lv-fish.big { background: #4a3520; color: #ffe3c4; }
@media (max-width: 800px) {
  .lv-ui.lv-stage .lv-lb-row { grid-template-columns: 44px minmax(0, 1fr) 90px; font-size: 18px; }
}

/* ==================== 第 6 步：赛后报告 ==================== */
.lv-ui.lv-report .stat-row { gap: 12px; }
.lv-ui.lv-report .stat {
  position: relative; overflow: hidden; padding: 16px 14px 14px; border-radius: 18px;
  background: var(--lv-panel); border: 1px solid var(--lv-line); box-shadow: var(--lv-shadow);
}
.lv-ui.lv-report .stat::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 5px; background: var(--lv-brand); }
.lv-ui.lv-report .stat:nth-child(4n+2)::before { background: var(--lv-green); }
.lv-ui.lv-report .stat:nth-child(4n+3)::before { background: var(--lv-orange); }
.lv-ui.lv-report .stat:nth-child(4n+4)::before { background: #c93f72; }
.lv-ui.lv-report .stat b { font-size: 26px; font-weight: 850; color: var(--lv-ink); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.lv-ui.lv-report .wordtable { border-collapse: separate; border-spacing: 0; }
.lv-ui.lv-report .wordtable th { font-size: 12px; font-weight: 750; color: var(--lv-muted); background: var(--lv-panel-soft); border-bottom: 1px solid var(--lv-line); }
.lv-ui.lv-report .wordtable tbody tr:hover td:not(.lv-cell) { background: var(--lv-panel-soft); }
.lv-ui.lv-report .lv-rate-bar { height: 10px; background: var(--lv-panel-soft); border: 1px solid var(--lv-line); }
.lv-ui.lv-report .lv-rate-bar i { border-radius: 999px; }
.lv-ui.lv-report .lv-cell { border-radius: 8px; }
.lv-ui.lv-report .lv-grid th:first-child, .lv-ui.lv-report .lv-grid td:first-child { position: sticky; left: 0; z-index: 1; background: var(--lv-panel); }

/* ==================== 颁奖典礼（podium.js） ==================== */
.lv-ui.lv-stage .lv-show { position: relative; width: 100%; max-width: 1100px; display: flex; flex-direction: column; align-items: center; gap: 14px; padding-top: 4px; }
.lv-ui.lv-stage .lv-show-caption { position: relative; z-index: 2; font-size: clamp(30px, 3.6vw, 48px); font-weight: 900; letter-spacing: -.01em; min-height: 1.3em; text-align: center; }
.lv-ui.lv-stage .lv-show-rest { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; width: 100%; max-width: 900px; }
.lv-ui.lv-stage .lv-show-rest-row { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px 14px; border-radius: 14px; background: var(--lv-panel); color: var(--lv-ink); font-size: 18px; font-weight: 700; opacity: 0; transform: translateY(14px); }
.lv-ui.lv-stage .lv-show.rest-in .lv-show-rest-row { animation: lvShowIn .45s var(--d, 0s) both; }
.lv-ui.lv-stage .lv-show-rest-rank { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: var(--lv-brand-soft); color: var(--lv-brand); font-size: 15px; }
.lv-ui.lv-stage .lv-show-rest-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-ui.lv-stage .lv-show-rest-score { color: var(--lv-brand); font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-show-podium { position: relative; z-index: 2; display: flex; align-items: flex-end; justify-content: center; gap: 18px; min-height: 330px; margin-top: 6px; }
.lv-ui.lv-stage .lv-show-col { display: flex; flex-direction: column; align-items: center; width: clamp(150px, 16vw, 220px); }
.lv-ui.lv-stage .lv-show-name, .lv-ui.lv-stage .lv-show-score, .lv-ui.lv-stage .lv-show-crown { opacity: 0; transform: translateY(10px) scale(.9); transition: opacity .4s .55s, transform .5s .55s cubic-bezier(.2,.9,.3,1.4); }
.lv-ui.lv-stage .lv-show-name { max-width: 100%; font-size: clamp(22px, 2.3vw, 32px); font-weight: 900; text-align: center; overflow-wrap: anywhere; }
.lv-ui.lv-stage .lv-show-score { margin: 2px 0 8px; color: var(--lv-stage-muted); font-size: 20px; font-variant-numeric: tabular-nums; }
.lv-ui.lv-stage .lv-show-block { position: relative; width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 4px; padding-top: 14px; border-radius: 22px 22px 0 0; box-shadow: inset 0 -10px 0 rgba(0,0,0,.18); transform: scaleY(0); transform-origin: bottom; transition: transform .7s cubic-bezier(.2,.9,.3,1.15); }
.lv-ui.lv-stage .lv-show-medal { font-size: 52px; line-height: 1; }
.lv-ui.lv-stage .lv-show-place { font-size: 17px; font-weight: 800; color: rgba(255,255,255,.92); }
.lv-ui.lv-stage .lv-show-col.p1 .lv-show-block { background: linear-gradient(180deg, #ffd27a, #e8955f); }
.lv-ui.lv-stage .lv-show-col.p1 .lv-show-place { color: #4a2c12; }
.lv-ui.lv-stage .lv-show-col.p2 .lv-show-block { background: linear-gradient(180deg, var(--lv-brand), #2f3a98); }
.lv-ui.lv-stage .lv-show-col.p3 .lv-show-block { background: linear-gradient(180deg, #2bb3a3, #167c75); }
.lv-ui.lv-stage .lv-show-col.up .lv-show-block { transform: scaleY(1); }
.lv-ui.lv-stage .lv-show-col.up .lv-show-name, .lv-ui.lv-stage .lv-show-col.up .lv-show-score, .lv-ui.lv-stage .lv-show-col.up .lv-show-crown { opacity: 1; transform: none; }
.lv-ui.lv-stage .lv-show-crown { font-size: 54px; line-height: 1; margin-bottom: 4px; }
.lv-ui.lv-stage .lv-show-col.p1.up .lv-show-crown { animation: lvCrown 1.6s .9s ease-in-out infinite; }
.lv-ui.lv-stage .lv-show-col.p1.up .lv-show-name { font-size: clamp(30px, 3.2vw, 44px); color: #ffd76a; text-shadow: 0 0 24px rgba(255,215,106,.55); }
.lv-ui.lv-stage .lv-show-col.p1.up .lv-show-block { box-shadow: inset 0 -10px 0 rgba(0,0,0,.18), 0 0 60px rgba(255,210,122,.55); }
/* 第一名出场前灯光暗下来，出场时一束聚光灯打在中间 */
.lv-ui.lv-stage .lv-show-spot { position: fixed; inset: 0; z-index: 1; pointer-events: none; opacity: 0; transition: opacity .8s; background: radial-gradient(ellipse 30% 70% at 50% 20%, rgba(255,240,200,.0), rgba(5,8,25,.75) 70%); }
.lv-ui.lv-stage .lv-show.dim .lv-show-spot { opacity: 1; }
.lv-ui.lv-stage .lv-show.champion .lv-show-spot { opacity: 1; background: radial-gradient(ellipse 22% 80% at 50% 10%, rgba(255,236,170,.35), rgba(255,236,170,.08) 45%, rgba(5,8,25,.55) 75%); }
.lv-ui.lv-stage .lv-show.dim .lv-show-rest, .lv-ui.lv-stage .lv-show.champion .lv-show-rest { opacity: .35; transition: opacity .6s; }
.lv-ui.lv-stage .lv-show.champion .lv-show-caption { color: #ffd76a; animation: lvChampion .8s cubic-bezier(.2,.9,.3,1.5) both; }
.lv-ui.lv-stage .lv-show-actions { position: relative; z-index: 3; justify-content: center; gap: 10px; margin-top: 20px; }
@keyframes lvShowIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes lvCrown { 0%, 100% { transform: translateY(0) rotate(-6deg); } 50% { transform: translateY(-8px) rotate(6deg); } }
@keyframes lvChampion { from { transform: scale(.6); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-height: 760px) {
  .lv-ui.lv-stage .lv-show-podium { min-height: 280px; }
  .lv-ui.lv-stage .lv-show-rest-row { padding: 6px 12px; font-size: 16px; }
}
