*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
 color:#1a1a1a;background:#fafafa;line-height:1.6}
.wrap{max-width:960px;margin:0 auto;padding:20px}
.pwrap{max-width:520px;margin:0 auto;padding:18px}
h1{font-size:20px;margin:0 0 4px}
h2{font-size:15px;margin:22px 0 8px;color:#111}
.sub{color:#6b7280;font-size:12px;margin-bottom:16px}
.card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px;margin-bottom:14px}
label{display:block;font-size:13px;margin:10px 0 4px;color:#374151}
input,select,textarea{width:100%;padding:9px 10px;border:1px solid #d1d5db;border-radius:7px;
 font-size:14px;font-family:inherit}
button,.btn{display:inline-block;background:#1a1a1a;color:#fff;border:0;border-radius:8px;
 padding:10px 16px;font-size:14px;cursor:pointer;text-decoration:none}
.btn.g{background:#fff;color:#1a1a1a;border:1px solid #d1d5db}
.muted{color:#6b7280;font-size:12px}
.warn{background:#fdf3f2;border-left:3px solid #c0392b;padding:10px 12px;font-size:13px;margin:12px 0}
.ok{background:#f3f4f6;border-left:3px solid #6b7280;padding:10px 12px;font-size:13px;margin:12px 0}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{border:1px solid #e5e7eb;padding:7px 9px;text-align:left}
th{background:#f3f4f6}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.seat{border:1px solid #d1d5db;border-radius:9px;padding:10px;background:#fff;font-size:12px;min-height:78px}
.seat .no{font-size:16px;font-weight:600}
.seat.blue{border-color:#2563eb;background:#eff6ff}
.seat.deep{border-color:#1e40af;background:#dbeafe}
.seat.green{border-color:#059669;background:#ecfdf5}
.seat.yellow{border-color:#d97706;background:#fffbeb}
.seat.dark{opacity:.45}
.seat.flag{border:1px solid #b91c1c}          /* 静默标记：细线，不填充、不闪、不弹 */
/* 圆点头像：随机色由后端生成（与背景主色硬性对比达标）。
   白描边＋投影是第二道保险：即便颜色意外贴近背景，轮廓也在。 */
.dot{display:inline-block;width:13px;height:13px;border-radius:50%;
 border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.55);
 vertical-align:-2px;margin-right:5px;flex-shrink:0}
.timeline{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.tl{padding:5px 9px;border:1px solid #e5e7eb;border-radius:6px;font-size:12px;color:#6b7280}
.tl.on{background:#1a1a1a;color:#fff;border-color:#1a1a1a}
.big{font-size:26px;font-weight:600}
.lock{text-align:center;padding:36px 10px;color:#6b7280}
.notice{font-size:11px;color:#9ca3af;margin-top:18px}
.tiny{font-size:11px;color:#9ca3af}
.quiet{background:#fcfcfc;border-color:#e0e0e0;color:#4b5563;font-size:12px}
/* 参与者端不出现任何分数：本文件不定义 .score / .rank / 进度条动画 */
