:root{--wood: #1a140e;--desk: #241c14;--kraft: #e4d3b0;--blotter: #f3e6c8;--ink: #1b1410;--muted: #6b5c4a;--seal: #b4232c;--seal-dark: #7a1218;--red: #c4453c;--blue: #35557a;--neutral: #8d7b62;--assassin: #14110e;--rule: rgba(27, 20, 16, .16);--shadow: 0 18px 40px rgba(0, 0, 0, .28)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(1200px 500px at 50% -80px,rgba(196,69,60,.12),transparent 55%),linear-gradient(180deg,#2a2118 0%,var(--wood) 40%,#120e0a 100%);color:var(--ink);font-family:Microsoft YaHei,微软雅黑,PingFang SC,sans-serif}#app{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:28px 0 48px}.mast{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;margin-bottom:22px;color:var(--kraft)}.seal{width:72px;height:72px;border:3px solid var(--seal);color:var(--seal);display:grid;place-items:center;font-family:Microsoft YaHei,微软雅黑,sans-serif;font-size:28px;letter-spacing:.12em;transform:rotate(-8deg);box-shadow:inset 0 0 0 1px #b4232c59}.mast h1{margin:0;font-family:Microsoft YaHei,微软雅黑,sans-serif;font-size:42px;font-weight:700;letter-spacing:.18em}.mast p{margin:4px 0 0;color:#cbb89a;font-size:13px;letter-spacing:.08em}.room-chip{font-family:Microsoft YaHei,微软雅黑,sans-serif;font-size:20px;letter-spacing:.28em;padding:10px 14px;border:1px dashed #cbb89a;color:var(--kraft)}button,input,select{font:inherit}button{cursor:pointer;border:0;background:var(--ink);color:var(--blotter);padding:10px 16px;letter-spacing:.06em}button.ghost{background:transparent;color:inherit;border:1px solid currentColor}button:disabled{opacity:.45;cursor:not-allowed}button.seal-btn{background:var(--seal);color:#fff8ee}input,select{background:var(--blotter);border:1px solid var(--rule);padding:10px 12px;color:var(--ink)}.sheet{background:var(--kraft);background-image:linear-gradient(180deg,rgba(255,255,255,.28),transparent 42%),repeating-linear-gradient(var(--blotter) 0 28px,transparent 28px 29px);box-shadow:var(--shadow);padding:28px;position:relative}.sheet:after{content:"机要处 · 行动代号";position:absolute;right:18px;bottom:12px;font-size:11px;letter-spacing:.2em;color:var(--muted)}.home{display:grid;gap:18px;max-width:460px}.home label{display:grid;gap:6px;font-size:13px;color:var(--muted)}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.teams{display:grid;grid-template-columns:1fr 1fr;gap:18px}.team{border:1px solid var(--rule);padding:16px;background:#f3e6c88c}.team.red{border-top:6px solid var(--red)}.team.blue{border-top:6px solid var(--blue)}.team h2{margin:0 0 12px;font-family:Microsoft YaHei,微软雅黑,sans-serif;font-size:24px;letter-spacing:.12em}.seat{width:100%;margin:0 0 8px;text-align:left;background:#fff8ee;color:var(--ink);border:1px solid var(--rule);min-height:44px}.seat.mine{outline:2px solid var(--seal)}.seat.taken{background:#efe0c0}.hint{color:var(--muted);font-size:13px}.play{display:grid;grid-template-columns:1fr 220px;gap:18px}.banner{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--rule)}.score{font-family:Microsoft YaHei,微软雅黑,sans-serif;font-size:28px;min-width:72px}.score.red{color:var(--red)}.score.blue{color:var(--blue)}.score span{display:block;font-size:11px;letter-spacing:.16em;color:var(--muted)}.clue-box{flex:1;text-align:center}.clue-box strong{font-family:Microsoft YaHei,微软雅黑,sans-serif;font-size:32px;letter-spacing:.12em}.board{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.card{position:relative;min-height:92px;background:#fff6e6;color:var(--ink);border:1px solid rgba(27,20,16,.12);box-shadow:0 1px #ffffffb3 inset,0 8px 16px #50321414;display:grid;place-items:center;text-align:center;padding:10px 8px 18px;font-size:18px;font-weight:700;letter-spacing:.08em;cursor:default;contain:layout paint}.card.guessable{cursor:pointer}.card.guessable:hover,.card.hovered{transform:translateY(-2px);box-shadow:0 10px 18px #50321429}.card.red{background:#c4453c;color:#fff8ee}.card.blue{background:#35557a;color:#fff8ee}.card.neutral{background:#cbb89a;color:#3a2f24}.card.assassin{background:#14110e;color:#e4d3b0}.card.key-red,.card.key-blue,.card.key-neutral,.card.key-assassin{padding-top:20px}.card.key-red:before,.card.key-blue:before,.card.key-neutral:before,.card.key-assassin:before{content:"";position:absolute;top:0;left:0;right:0;height:14px}.card.key-red{background:#f4c9c4;border:2px solid #c4453c;color:#6a1c18}.card.key-red:before{background:#c4453c}.card.key-blue{background:#c9d5e4;border:2px solid #35557a;color:#1c314c}.card.key-blue:before{background:#35557a}.card.key-neutral{background:#eadcc4;border:2px solid #8d7b62;color:#4a3e30}.card.key-neutral:before{background:#8d7b62}.card.key-assassin{background:#d2cbc3;border:2px solid #14110e;color:#14110e}.card.key-assassin:before{background:repeating-linear-gradient(90deg,#14110e 0 10px,#b4232c 10px 20px)}.pins{position:absolute;left:6px;right:6px;bottom:4px;display:flex;justify-content:center;gap:4px;flex-wrap:wrap}.pin{font-size:10px;background:var(--seal);color:#fff;padding:1px 5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hover-tag{position:absolute;top:6px;right:6px;font-size:10px;color:var(--blue)}.log{border:1px solid var(--rule);padding:12px;background:#fff8eeb3;min-height:200px}.log h3{margin:0 0 8px;font-size:13px;letter-spacing:.16em;color:var(--muted)}.log ul{margin:0;padding:0;list-style:none;font-size:13px;line-height:1.7}.overlay{position:fixed;inset:0;background:#120c088c;display:grid;place-items:center;z-index:5}.overlay .sheet{max-width:420px;text-align:center}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--ink);color:var(--blotter);padding:10px 16px;z-index:6}.clue-form{display:flex;gap:8px;justify-content:center;margin-top:8px}.narrow{display:none;color:var(--kraft);text-align:center;padding:40px 20px}@media(max-width:900px){.play{grid-template-columns:1fr}.card{font-size:15px;min-height:76px}}@media(max-width:720px){.narrow{display:block}#app{display:none}}@media(prefers-reduced-motion:reduce){.card,.seal{transform:none!important}}
