:root{--bg: #14100e;--bg2: #1d1714;--panel: #241c18;--panel2: #2e231d;--ink: #ece4d8;--muted: #a3937f;--line: #3b2d25;--blood: #b8342a;--blood2: #e05a45;--gold: #d8a83c;--soul: #6fc7d8;--ok: #6cc47a}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:radial-gradient(1200px 600px at 50% -10%,#2a1e18,var(--bg)) fixed;color:var(--ink);font:14px/1.45 Segoe UI,system-ui,sans-serif}#topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);background:#14100ee6;position:sticky;top:0;z-index:10}.brand{font-weight:800;letter-spacing:3px;color:var(--blood2)}.spacer{flex:1}.who{color:var(--muted)}main{padding:16px;max-width:1400px;margin:0 auto}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:16px}.panel.narrow{max-width:380px;margin:8vh auto}h1,h2{margin:0 0 12px}h1{font-size:22px}h2{font-size:16px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.row{display:flex;gap:8px;align-items:center}.row h2{margin:0}label{display:block;margin-bottom:10px;color:var(--muted);font-size:12px}input{display:block;width:100%;margin-top:4px;padding:9px 10px;background:var(--bg2);color:var(--ink);border:1px solid var(--line);border-radius:7px}button{cursor:pointer;font:inherit;font-weight:600;background:var(--blood);color:#fff;border:1px solid #7d2019;border-radius:7px;padding:8px 12px}button:hover{background:var(--blood2)}button:disabled{opacity:.4;cursor:not-allowed;background:#3a2a25;border-color:#3a2a25}button.ghost{background:transparent;color:var(--ink);border-color:var(--line)}button.ghost:hover{background:var(--panel2)}button.small{padding:4px 8px;font-size:12px}.error{color:var(--blood2);min-height:18px;margin:8px 0 0}.list{list-style:none;padding:0;margin:0 0 12px}.list li{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:7px;margin-bottom:6px;background:var(--bg2)}.list li .grow{flex:1}.game{display:grid;grid-template-columns:1fr 320px;gap:16px;align-items:start}.board{display:flex;flex-direction:column;gap:14px}.middle{display:flex;flex-direction:column;gap:10px}.opponents{display:flex;gap:10px;flex-wrap:wrap}.pcard{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:10px;min-width:180px;flex:1}.pcard.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}.pcard.you{border-color:#4b6b8a}.pcard.dead{opacity:.5}.pcard.targetable{cursor:pointer;border-color:var(--blood2);box-shadow:0 0 0 1px var(--blood2) inset}.pcard h3{margin:0 0 6px;font-size:14px;display:flex;align-items:center;gap:6px}.pcard .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.pcard .dot.on{background:var(--ok)}.stats{color:var(--muted);font-size:12px;display:flex;gap:10px;flex-wrap:wrap}.hearts{color:var(--blood2);letter-spacing:1px}.soulcount{color:var(--soul)}.chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.chip{font-size:11px;padding:2px 6px;border-radius:5px;border:1px solid var(--line);background:var(--bg2);color:var(--muted)}.chip.gold{border-color:var(--gold);color:var(--gold)}.chip.charged{border-color:#476b4c;color:#a9d9b1}.chip.spent{opacity:.5}.decks{display:flex;gap:8px;flex-wrap:wrap}.deckbtn{background:var(--panel);border:1px dashed var(--line);border-radius:8px;padding:8px 10px;color:var(--muted);font-size:12px;cursor:pointer}.deckbtn:hover:not(:disabled){border-color:var(--gold);color:var(--ink)}.slots{display:flex;gap:10px;flex-wrap:wrap}.card{width:190px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:10px;display:flex;flex-direction:column;gap:6px}.card.shop{border-style:dashed}.card.boss{border-color:var(--gold)}.card h4{margin:0;font-size:13px}.card .text{font-size:11px;color:var(--muted);flex:1}.card .soul{color:var(--soul);font-size:11px}.card.targetable{cursor:pointer;border-color:var(--blood2);box-shadow:0 0 0 1px var(--blood2) inset}.card .actions{display:flex;gap:6px}.card .actions button{flex:1;padding:5px 6px;font-size:12px}.empty{color:var(--muted);font-style:italic;padding:10px}.me .hand{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.me .hand .card{width:170px;background:var(--panel2)}.sidebar{display:flex;flex-direction:column;gap:10px;position:sticky;top:64px}.status{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:10px;font-size:12px;color:var(--muted)}.status b{color:var(--ink)}.status .priority{color:var(--gold)}.attackbar{background:#2a1a16;border:1px solid var(--blood);border-radius:9px;padding:10px}.attackbar h4{margin:0 0 6px;color:var(--blood2);font-size:13px}.attackbar .dice{font-size:26px;font-weight:800}.attackbar .actions{display:flex;gap:6px;margin-top:6px}.log{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:8px 10px;height:46vh;overflow-y:auto;font-size:12px}.log div{padding:3px 0;border-bottom:1px solid #241c18;color:var(--muted)}.log div.hot{color:var(--ink)}.log div.roll{color:var(--gold)}.log div.dmg{color:var(--blood2)}.log div.soul{color:var(--soul)}.hint{color:var(--muted);font-size:12px}.banner{background:var(--gold);color:#221806;font-weight:700;text-align:center;padding:8px;border-radius:8px;margin-bottom:10px}.appfooter{text-align:center;color:var(--muted);font-size:11px;padding:10px 16px 24px}.appfooter code{color:var(--ink)}@media (max-width: 1000px){.game{grid-template-columns:1fr}.sidebar{position:static}}
