:root{color-scheme:dark;--bg: #0d1117;--panel: #161b22;--border: #30363d;--text: #e6edf3;--dim: #8b949e;--accent: #58a6ff;--boss: #f85149;--respawn: #3fb950}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-monospace,Cascadia Code,Consolas,monospace}a{color:var(--accent)}header{display:flex;align-items:center;gap:16px;padding:12px 20px;border-bottom:1px solid var(--border)}header h1{font-size:18px;margin:0}header .spacer{flex:1}main{padding:20px;max-width:1200px;margin:0 auto}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:16px}button,.btn{background:#21262d;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 14px;cursor:pointer;font:inherit;text-decoration:none;display:inline-block}button:hover,.btn:hover{border-color:var(--accent)}button.primary{background:#238636;border-color:#2ea043}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--border)}th{color:var(--dim);font-weight:400}.dim{color:var(--dim)}.match-layout{display:grid;grid-template-columns:1fr 300px;gap:16px}.area-tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:12px}.area-tabs button{padding:4px 10px;font-size:12px}.area-tabs button.active{background:var(--accent);color:#000}.grid{display:grid;grid-template-columns:repeat(15,26px);gap:2px;background:var(--panel);padding:8px;border-radius:8px;width:max-content}.cell{width:26px;height:26px;border-radius:4px;background:#21262d;display:flex;align-items:center;justify-content:center;font-size:13px;position:relative}.cell.boss{background:#3d1418;box-shadow:inset 0 0 0 1px var(--boss)}.cell.boss-dead{background:#21262d;opacity:.5}.cell.respawn{box-shadow:inset 0 0 0 1px var(--respawn)}.cell .dot{width:16px;height:16px;border-radius:50%;border:2px solid #fff3}.cell .dot.dead{opacity:.35;filter:grayscale(1)}.cell .multi{font-size:9px;position:absolute;bottom:0;right:1px;color:#fff}.hpbar{height:4px;background:#333;border-radius:2px;margin-top:4px}.hpbar>div{height:100%;background:var(--respawn);border-radius:2px}.player-card{font-size:12px;padding:8px;border-bottom:1px solid var(--border)}.log{height:260px;overflow-y:auto;font-size:12px;background:#0a0c10;padding:10px;border-radius:6px;border:1px solid var(--border)}.log .e{padding:1px 0}.log .e.battle,.log .e.encounter{color:#ffa657}.log .e.boss_down,.log .e.match_end,.log .e.gate_open{color:var(--boss);font-weight:700}.log .e.death{color:#f85149}.log .e.level_up,.log .e.victory{color:var(--respawn)}.key-box{background:#0a0c10;border:1px dashed var(--accent);padding:12px;border-radius:6px;word-break:break-all;font-size:13px}.badge{padding:1px 8px;border-radius:10px;font-size:11px;background:#21262d;border:1px solid var(--border)}.badge.combat{background:#3d1418;border-color:var(--boss);color:var(--boss)}.badge.dead{color:var(--boss)}
