:root {
  --paper: #faf8f5;
  --ink: #2a2a2a;
  --muted: #7a7a7a;
  --room: #2b2f36;
  --room2: #353a43;
  --red: #d93636;
  --gold: #e0a526;
  --green: #2e9e6a;
  --card: #fff;
  --line: #e4e0da;
}
/* 表情符號一律用系統彩色 emoji，避免被圓體字型換成黑白圖示 */
@font-face {
  font-family: 'ColorEmoji';
  src: local('Apple Color Emoji'), local('Segoe UI Emoji'), local('Noto Color Emoji');
  unicode-range: U+1F000-1FAFF, U+2600-27BF, U+2B00-2BFF, U+FE0F;
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; height: 100%; }
body {
  font-family: 'ColorEmoji', 'Huninn', 'PingFang TC', 'Noto Sans TC', 'Microsoft JhengHei', sans-serif;
  background: #1d2026;
  color: var(--ink);
  overscroll-behavior: none;
}
#app {
  max-width: 480px; margin: 0 auto; min-height: 100%; height: 100dvh;
  position: relative; overflow: hidden; background: var(--paper);
}
button { font-family: inherit; cursor: pointer; }
.screen { position: absolute; inset: 0; overflow-y: auto; padding: 24px 18px calc(24px + env(safe-area-inset-bottom)); }
.center { text-align: center; }
.muted { color: var(--muted); font-size: 14px; }
.btn {
  display: block; width: 100%; max-width: 320px; margin: 16px auto 0;
  background: var(--ink); color: #fff; border: 0; border-radius: 999px;
  padding: 15px 24px; font-size: 18px;
}
.btn.ghost { background: transparent; color: var(--ink); border: 2px solid var(--ink); }
.btn:active { transform: scale(.97); }

/* 標題畫面 */
.title { display: flex; flex-direction: column; justify-content: center; text-align: center; background: linear-gradient(#faf8f5, #f1e9dd); }
.title h1 { font-size: 44px; margin: 8px 0; letter-spacing: 2px; }
.title .tag { font-size: 16px; color: #8b5e34; margin-bottom: 4px; }
.title .faces { display: flex; justify-content: center; gap: 4px; margin: 18px 0 8px; }
.title .faces svg { width: 52px; height: 52px; }

/* 抽牌 */
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 18px; }
.flip { perspective: 800px; height: 150px; }
.flip .inner { position: relative; width: 100%; height: 100%; transition: transform .6s; transform-style: preserve-3d; }
.flip.open .inner { transform: rotateY(180deg); }
.flip .face { position: absolute; inset: 0; backface-visibility: hidden; border-radius: 16px; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(0,0,0,.1); }
.flip .front { background: var(--room); color: #fff; font-size: 40px; }
.flip .front small { font-size: 13px; opacity: .7; margin-top: 6px; }
.flip .back { background: #fff; transform: rotateY(180deg); padding: 8px; text-align: center; }
.flip .back svg { width: 72px; height: 72px; }
.flip .back b { font-size: 15px; margin-top: 4px; }
.flip.dim { opacity: .35; }
.flip.pick .back { outline: 3px solid var(--gold); }

/* 設定 */
.badge { display: inline-block; background: var(--room); color: #fff; border-radius: 999px; padding: 6px 14px; font-size: 14px; }
.traits { background: #fff; border-radius: 14px; padding: 12px 14px; margin: 14px 0; font-size: 14px; line-height: 1.7; text-align: left; }
.pick2 { display: flex; gap: 14px; justify-content: center; }
.pick2 button { background: #fff; border: 2.5px solid #eee; border-radius: 16px; padding: 8px; width: 128px; font-size: 16px; }
.pick2 button.on { border-color: var(--ink); }
.pick2 svg { width: 96px; height: 96px; display: block; margin: 0 auto 2px; }
.field { margin: 18px 0 6px; font-size: 14px; color: var(--muted); }
input.name { width: 100%; border: 2px solid #ccc; border-radius: 12px; padding: 12px; font-size: 20px; font-family: inherit; background: #fff; }

/* 戰情室 */
.room { background: var(--room); color: #fff; padding: 0; display: flex; flex-direction: column; }
.hud { padding: 14px 14px 10px; background: rgba(0,0,0,.18); }
.hud .row { display: flex; justify-content: space-between; align-items: center; font-size: 14px; }
.hud .date b { font-size: 16px; }
.hud .clock { font-variant-numeric: tabular-nums; background: rgba(255,255,255,.1); padding: 3px 10px; border-radius: 999px; }
.hud .clock.late { background: #4b3a7a; }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.stat { background: rgba(255,255,255,.08); border-radius: 10px; padding: 6px 2px 7px; text-align: center; font-size: 14px; white-space: nowrap; }
.stat i { display: block; font-style: normal; font-size: 10.5px; opacity: .7; letter-spacing: -0.3px; }
.stat .bar { height: 4px; background: rgba(255,255,255,.15); border-radius: 4px; margin-top: 4px; overflow: hidden; }
.stat .bar div { height: 100%; background: #9fd3a8; transition: width .5s; }
.stat.low .bar div { background: #ff7a7a; }
.stat.bump { animation: bump .5s; }
@keyframes bump { 50% { transform: scale(1.12); } }
.stage { flex: 1; overflow-y: auto; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 10px; position: relative; }
.stage .boss svg { width: 132px; height: 132px; }
.stage .who { margin-top: 6px; font-size: 15px; opacity: .85; }
.bubble { background: #fff; color: var(--ink); border-radius: 16px; padding: 10px 14px; margin-bottom: 12px; font-size: 16px; position: relative; max-width: 86%; text-align: center; }
.bubble:after { content: ''; position: absolute; left: 50%; bottom: -8px; margin-left: -8px; border: 8px solid transparent; border-top-color: #fff; border-bottom: 0; }
.bubble.shake { animation: shake .4s; }
@keyframes shake { 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }

/* 卡牌 */
.overlay { position: absolute; inset: 0; background: rgba(0,0,0,.55); display: flex; align-items: center; justify-content: center; padding: 14px; z-index: 5; }
.card { width: 100%; max-width: 400px; max-height: 100%; overflow-y: auto; background: var(--card); color: var(--ink); border-radius: 20px; box-shadow: 0 12px 32px rgba(0,0,0,.4); animation: pop .25s ease-out; }
@keyframes pop { from { transform: scale(.85) translateY(20px); opacity: 0; } }
.card .head { padding: 10px 16px; color: #fff; display: flex; justify-content: space-between; align-items: center; font-size: 16px; }
.card .head .q { font-size: 13px; background: rgba(255,255,255,.25); padding: 2px 8px; border-radius: 999px; }
.k-fire .head, .k-crisis .head { background: var(--red); }
.k-main .head { background: #3a5ba0; }
.k-money .head { background: #8a6d1d; }
.k-tv .head { background: #8b1e1e; }
.k-daily .head { background: #4f6d5a; }
.k-build .head { background: #6b4fa0; }
.k-poll .head { background: #2e6f8e; }
.k-topic .head { background: #b5651d; }
.k-policy .head { background: #1f7a6d; }
.timer { height: 7px; background: #eee; }
.timer div { height: 100%; background: var(--red); width: 100%; }
.card .body { padding: 14px 16px 16px; }
.card .who { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.card .who svg { width: 50px; height: 50px; flex: none; }
.card .who small { color: var(--muted); }
.card .eyebrow { font-size: 13px; color: var(--muted); margin-bottom: 4px; letter-spacing: 1px; }
.card h2 { font-size: 21px; margin: 2px 0 8px; line-height: 1.35; }
.card p { font-size: 15px; line-height: 1.65; margin: 0 0 12px; color: #444; }
.opt { display: block; width: 100%; text-align: left; border: 2px solid #e6e2dc; background: #faf9f7; border-radius: 14px; padding: 12px; font-size: 16px; line-height: 1.45; margin-bottom: 8px; color: var(--ink); }
.opt:active { background: #f0ece6; }
.opt[disabled] { opacity: .4; }
.opt small { display: block; color: var(--muted); font-size: 12px; }
.res { font-size: 16px; line-height: 1.6; margin: 6px 0; padding: 10px 12px; border-radius: 12px; }
.res.good { background: #eaf6ee; }
.res.bad { background: #fdecec; }
.res.defy { background: #fff4dc; }
.res.boss { background: #ece8ff; font-size: 18px; }
.res.note { background: #f1f1f1; }
.res.say { background: transparent; font-size: 13px; color: var(--muted); padding: 6px 2px; margin-top: 4px; border-top: 1px dashed #e2ddd5; border-radius: 0; }
.res.say .who svg { width: 30px; height: 30px; }
.res .who svg { width: 40px; height: 40px; flex: none; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 2px; }
.chip { font-size: 13px; padding: 3px 9px; border-radius: 999px; background: #f0f0f0; }
.chip.up { background: #dff3e6; color: #1e6b45; }
.chip.down { background: #fbdede; color: #9b2222; }

/* 民調 */
.pollrow { margin: 10px 0; }
.pollrow .lab { display: flex; justify-content: space-between; font-size: 15px; margin-bottom: 4px; }
.pollrow .track { height: 18px; background: #eee; border-radius: 9px; overflow: hidden; }
.pollrow .track div { height: 100%; border-radius: 9px; transition: width 1s; width: 0; }

/* 週次轉場 */
.weekcard { text-align: center; }
.weekcard .big { font-size: 34px; margin: 6px 0; }

/* 結局 */
.end { background: linear-gradient(#2b2f36, #3d3150); color: #fff; text-align: center; }
.end .emoji { font-size: 64px; margin-top: 8px; }
.end h2 { font-size: 26px; margin: 6px 0; }
.end .story { background: rgba(255,255,255,.1); border-radius: 16px; padding: 14px; line-height: 1.75; font-size: 16px; text-align: left; }
.end .btn { background: #fff; color: var(--ink); }
.end .btn.ghost { background: transparent; color: #fff; border-color: #fff; }
.votes { margin: 14px 0; text-align: left; }
.votes .pollrow .lab { color: #fff; }
.votes .track { background: rgba(255,255,255,.15); }
.big-result { font-size: 30px; margin: 8px 0; }

/* 圖鑑 */
.gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
.gallery div { background: #fff; border-radius: 12px; padding: 10px; font-size: 14px; text-align: center; min-height: 86px; }
.gallery div.lock { background: #e9e6e1; color: #aaa; }
.gallery .e { font-size: 30px; display: block; }

.toast { position: absolute; left: 50%; top: 14px; transform: translateX(-50%); background: #fff; color: var(--ink); padding: 8px 14px; border-radius: 999px; font-size: 14px; z-index: 20; box-shadow: 0 4px 12px rgba(0,0,0,.3); animation: pop .25s; }

/* 行程板 */
.board { width: 100%; max-width: 440px; }
.board-head { display: flex; align-items: center; gap: 10px; font-size: 16px; }
.board-head small { color: #bbb; font-size: 13px; }
.board-head .mini svg { width: 46px; height: 46px; display: block; }
.board-head .bsec { font-variant-numeric: tabular-nums; }
.board .timer { margin: 10px 0; border-radius: 4px; overflow: hidden; background: rgba(255,255,255,.15); }
.board .timer div { background: var(--gold); }
.board-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.act { background: #fff; color: var(--ink); border: 0; border-radius: 14px; padding: 10px; text-align: left; font-size: 15px; line-height: 1.4; min-height: 74px; display: flex; flex-direction: column; justify-content: space-between; gap: 6px; }
.act small { color: var(--muted); font-size: 11.5px; }
.act:active { transform: scale(.97); }
.act[disabled] { opacity: .45; }

.profile-face { width: 120px; height: 120px; margin: 6px auto 0; }
.traits .who svg { width: 48px; height: 48px; flex: none; }
.traits .who { display: flex; align-items: center; gap: 10px; }

/* 肝：數字越高越健康，快爆時變紅閃爍 */
#st-liver.low { animation: liverblink 1s infinite; }
@keyframes liverblink { 50% { background: rgba(224, 85, 85, .35); } }
@media (prefers-reduced-motion: reduce) { #st-liver.low { animation: none; background: rgba(224, 85, 85, .35); } }
/* 對手聲勢 */
.rivalrow { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; color: #ddd; }
.rivalrow .bar { flex: 1; height: 6px; background: rgba(255,255,255,.15); border-radius: 4px; overflow: hidden; }
.rivalrow .bar div { height: 100%; background: #a08bd6; transition: width .5s; }
.rivalrow b { font-weight: normal; min-width: 52px; text-align: right; }

/* 數值分區：候選人、總幹事、對手 */
.box { border: 1px solid rgba(255,255,255,.14); border-radius: 12px; padding: 6px 7px 7px; margin-top: 7px; }
.boxtitle { font-size: 12px; color: #bbb; margin: 0 0 5px 2px; }
.boxtitle b { color: #fff; font-weight: normal; }
.rivalbox { padding: 7px 9px; }
.rivalbox .rivalrow { margin-top: 0; }
#st-favor span { display: inline; }
#st-favor { white-space: nowrap; }
.stats.three { grid-template-columns: repeat(3, 1fr); }

/* 檢討會 */
.end .story .res { color: var(--ink); }
.statline { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px dashed rgba(255,255,255,.15); font-size: 15px; }

/* 總幹事手冊 */
.manual { position: absolute; inset: 0; z-index: 40; background: rgba(0,0,0,.6); display: flex; align-items: center; justify-content: center; padding: 14px; }
.mcard { background: var(--paper); color: var(--ink); border-radius: 18px; width: 100%; max-width: 420px; max-height: 100%; display: flex; flex-direction: column; overflow: hidden; }
.mhead { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; background: #3a5ba0; color: #fff; font-size: 17px; }
.mhead button { background: none; border: 0; color: #fff; font-size: 20px; }
.mbody { overflow-y: auto; padding: 4px 16px 18px; font-size: 15px; line-height: 1.7; }
.mbody h3 { font-size: 17px; margin: 16px 0 4px; }
.mbody ul { margin: 4px 0; padding-left: 20px; }
.mbody p { margin: 4px 0; }
.mbtn { background: rgba(255,255,255,.12); border: 0; border-radius: 999px; padding: 3px 9px; font-size: 14px; color: #fff; }

/* 頂列：窄螢幕不換行 */
.hud .row { gap: 8px; }
.hud .date { flex: 1; min-width: 0; font-size: 13px; line-height: 1.4; }
.hud .row > span:last-child { white-space: nowrap; flex: none; }
.hud .clock { white-space: nowrap; }

/* 總幹事的結局 */
.story.mgr { background: rgba(160, 139, 214, .18); border: 1px solid rgba(201, 184, 255, .35); }
.story.mgr .memoji { font-size: 40px; text-align: center; }
#closebox .opt { color: var(--ink); }

/* 首頁的新版提醒 */
.news { text-align: left; background: #fff; border: 2px solid #e0a526; border-radius: 14px; padding: 10px 14px; margin: 14px auto 0; max-width: 340px; font-size: 14px; line-height: 1.7; }
.news b { display: block; margin-bottom: 2px; }

/* 圖鑑分頁、稀有度、結局小卡 */
/* 分頁全部攤開（換行），不用左右滑，點了也不會跳回第一個 */
.tabs { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 0 4px; }
.tab { flex: 0 0 auto; border: 1.5px solid #ddd; background: #fff; border-radius: 999px; padding: 6px 12px; font-size: 14px; color: var(--ink); }
.tab small { margin-left: 4px; color: var(--muted); font-size: 11px; }
.tab.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.tab.on small { color: #ddd; }
.gcell { position: relative; background: #fff; border: 0; border-radius: 12px; padding: 18px 8px 10px; font-size: 14px; text-align: center; min-height: 96px; color: var(--ink); width: 100%; }
.gcell.lock { background: #e9e6e1; color: #aaa; }
.gcell .e { font-size: 30px; display: block; }
.rtag { position: absolute; top: 6px; right: 6px; font-size: 10px; padding: 1px 6px; border-radius: 999px; }
.ecard .rtag { position: static; display: inline-block; font-size: 12px; padding: 2px 10px; }
.r-common { background: #eceae6; color: #777; }
.r-rare { background: #dbe7ff; color: #2d5bbf; }
.r-legend { background: #fff0c2; color: #9a6a00; }
.gcell.lock .rtag { opacity: .7; }
.ecard { text-align: center; }
.ecard .big-e { font-size: 56px; margin-top: 8px; }
.ecard h3 { margin: 4px 0 6px; }
.ecard .quip { font-size: 18px; margin: 14px 0; color: #5a3b8c; }
.einfo { text-align: left; background: #fff; border-radius: 12px; padding: 10px 12px; margin: 8px 0; font-size: 14px; line-height: 1.7; }
.runrow { display: block; width: 100%; text-align: left; background: #fff; border: 1.5px solid #e6e2dc; border-radius: 12px; padding: 10px 12px; margin: 8px 0; font-size: 14px; line-height: 1.6; color: var(--ink); }
.runrow b { display: block; }
.runrow small { color: var(--muted); }
.statline.dark { border-bottom-color: #e2ddd5; }

/* 首頁的更新小連結 */
.newslink { background: none; border: 0; color: #9a6a00; font-size: 14px; text-decoration: underline; margin-top: 10px; }
.verlink { background: none; border: 0; color: inherit; font-size: 12px; text-decoration: underline; padding: 0 0 0 4px; }
.newslist { padding-left: 20px; line-height: 1.8; }

/* 節奏選擇：慢慢來／極限爆肝 */
.pace { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; width: 100%; max-width: 340px; margin: 14px auto 2px; }
.pace-opt { background: var(--card); border: 2px solid var(--line); border-radius: 14px; padding: 10px 6px; font: inherit; font-size: 15px; color: var(--ink); line-height: 1.3; }
.pace-opt small { display: block; color: var(--muted); font-size: 11px; margin-top: 3px; }
.pace-opt.on { border-color: var(--ink); background: #fff7e3; box-shadow: 0 2px 0 var(--ink); }
.slow .timer { visibility: hidden; }

/* ---------- v2.0 手感 ---------- */
.stat.bump.up { animation: bump .5s, glowup .9s; }
.stat.bump.down { animation: bump .5s, glowdown .9s; }
@keyframes glowup { 20%, 60% { box-shadow: 0 0 0 2px rgba(46, 158, 106, .6) inset; } }
@keyframes glowdown { 20%, 60% { box-shadow: 0 0 0 2px rgba(217, 54, 54, .6) inset; } }
.floater { position: fixed; z-index: 60; transform: translate(-50%, 0); font-weight: bold; font-size: 18px; pointer-events: none;
  text-shadow: 0 1px 0 #fff, 0 0 6px rgba(0,0,0,.25); animation: floatup 1.1s ease-out forwards; }
.floater.up { color: #1f8a57; }
.floater.down { color: #d93636; }
@keyframes floatup { from { opacity: 0; transform: translate(-50%, 6px) scale(.8); } 15% { opacity: 1; transform: translate(-50%, 0) scale(1.15); } to { opacity: 0; transform: translate(-50%, -38px) scale(1); } }
.card.shake { animation: shake .4s; }
.confetti { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 80; }
.hurry .timer div { background: #d93636 !important; animation: hurry .5s infinite alternate; }
.hurry #sec, .hurry #bsec { color: #d93636; }
@keyframes hurry { to { opacity: .45; } }
.res.combo { background: linear-gradient(90deg, #fff1c9, #ffe0b8); color: #8a3b00; font-weight: bold; animation: pop .35s; }

/* 脆上的反應 */
.threads { margin-top: 10px; border-top: 1px dashed var(--line); padding-top: 8px; text-align: left; }
.th-head { font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.th-post { display: flex; gap: 8px; padding: 6px 0; animation: pop .35s both; }
.th-post:nth-child(3) { animation-delay: .15s; }
.th-post:nth-child(4) { animation-delay: .3s; }
.th-ava { flex: 0 0 28px; height: 28px; border-radius: 50%; background: #2a2a2a; color: #fff; font-size: 13px; display: flex; align-items: center; justify-content: center; }
.th-body { min-width: 0; font-size: 14px; line-height: 1.4; }
.th-body b { font-size: 12px; margin-right: 6px; }
.th-body span { display: block; }
.th-body small { color: var(--muted); font-size: 11px; }

/* 掃街小遊戲 */
.mg .body { text-align: center; }
.mg-score { font-size: 15px; margin-bottom: 8px; }
.mg-score b { font-size: 26px; color: #e0a526; }
.mg-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mg-cell { position: relative; aspect-ratio: 1; max-width: 100%; border: 0; border-radius: 16px; background: #f1ece4; font-size: 26px; overflow: hidden; touch-action: manipulation; }
.mg-stall { position: absolute; bottom: 6px; left: 0; right: 0; font-size: 22px; opacity: .55; }
.mg-who { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 44px; transform: translateY(100%); transition: transform .12s; }
.mg-cell.on .mg-who { transform: translateY(-6px); }
.mg-cell.gold { background: #fff1c9; box-shadow: 0 0 0 3px #e0a526 inset; }
.mg-cell.hit { background: #d8f3e4; }
.mg-cell.miss { background: #fbd9d9; }
.mg-end .mg-big { font-size: 64px; }

/* 開票夜 */
.counted { color: #ccc; font-size: 14px; margin: 4px 0 2px; }
.counted b { color: #ffd166; font-size: 20px; }
.vn { display: block; text-align: right; color: #aaa; font-size: 12px; font-variant-numeric: tabular-nums; }
.ticker { margin: 12px auto 0; max-width: 340px; background: rgba(255,255,255,.08); border-radius: 10px; padding: 10px 12px; color: #fff; font-size: 14px; min-height: 42px; }
.ticker.flash { animation: pop .3s; }

/* 語言切換 */
.langbar { display: flex; justify-content: center; gap: 6px; margin-bottom: 10px; }
.langbar button { background: transparent; border: 1.5px solid var(--line); border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 13px; color: var(--muted); }
.langbar button.on { border-color: var(--ink); color: var(--ink); background: #fff7e3; }
html[lang="en"] .title h1 { font-size: 42px; white-space: nowrap; }
html[lang="en"] .title .tag { font-size: 15px; }

/* 電視辯論：觀眾好感條 */
.k-debate .head { background: #2b3a67; }
.aud { display: flex; align-items: center; gap: 8px; padding: 8px 14px 0; font-size: 13px; color: var(--muted); }
.aud span { white-space: nowrap; }
.aud-bar { flex: 1; height: 8px; border-radius: 99px; background: #e7e3ee; overflow: hidden; }
.aud-bar div { height: 100%; background: linear-gradient(90deg, #7a6ba8, #e0a526); transition: width .8s cubic-bezier(.2,.9,.3,1.2); }
.aud b { min-width: 26px; text-align: right; color: var(--ink); font-variant-numeric: tabular-nums; }
.aud.up .aud-bar div { background: linear-gradient(90deg, #2e9e6a, #e0a526); }
.aud.down .aud-bar div { background: linear-gradient(90deg, #d93636, #e07a5f); }

/* 本局稱號 */
.runtitle { margin: 14px auto 6px; max-width: 340px; background: rgba(255, 209, 102, .12); border: 2px solid rgba(255, 209, 102, .6); border-radius: 16px; padding: 10px 14px; text-align: center; color: #fff; }
.runtitle small { display: block; color: #ffd166; font-size: 12px; letter-spacing: 1px; }
.runtitle b { display: block; font-size: 20px; margin: 2px 0; }
.runtitle span { font-size: 13px; color: #ddd; }

/* 結果卡的「繼續」固定在卡片底部（.card 是捲動容器） */
.card #next { position: sticky; bottom: 0; z-index: 2; box-shadow: 0 -10px 16px 6px var(--card); }
/* 本局脆上最熱門的留言 */
.toppost { margin: 8px auto; max-width: 340px; background: rgba(255,255,255,.08); border-radius: 14px; padding: 8px 12px; text-align: left; color: #fff; }
.toppost > small { display: block; color: #c9b8ff; font-size: 12px; margin-bottom: 2px; }
.toppost .th-body small { color: #aaa; }
.toppost .th-ava { background: #6b5aa8; }
