:root{--bg: #14101c;--panel: #1e1830;--panel2: #2a2342;--line: #3d3464;--text: #f2ead8;--muted: #9a92b8;--gold: #ffd93d;--red: #ff5555;--green: #55dd88;--blue: #3fa7ff}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif}#app{position:relative;width:100vw;height:100vh}.hidden{display:none!important}button{cursor:pointer;font:inherit}.muted{color:var(--muted)}.hint{color:var(--muted);font-size:13px;line-height:1.5}#boot{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--muted);z-index:50;background:var(--bg)}#plaza{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;padding:28px;z-index:10}.plaza-inner{max-width:1020px;margin:0 auto}.plaza-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}.plaza-head h1{margin:0;font-size:30px}.plaza-head .tag{font-size:12px;color:var(--gold);border:1px solid var(--gold);border-radius:10px;padding:2px 8px;vertical-align:middle}.plaza-meta{display:flex;gap:16px;color:var(--muted);font-size:14px}.plaza-cols{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:20px}@media(max-width:760px){.plaza-cols{grid-template-columns:1fr}}.plaza-col h2{font-size:16px;border-bottom:1px solid var(--line);padding-bottom:6px}.char-list,.stage-list{display:flex;flex-direction:column;gap:8px}.char-card,.stage-card{display:flex;gap:10px;align-items:center;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--text)}.char-card.selected,.stage-card.selected{border-color:var(--gold);background:var(--panel2)}.char-card:hover,.stage-card:hover{background:var(--panel2)}.char-dot{width:14px;height:14px;border-radius:50%;flex:none}.char-name,.stage-name{font-weight:700}.char-sub,.stage-sub{color:var(--muted);font-size:13px}.stage-card{flex-direction:column;align-items:flex-start;gap:2px}.stage-card.locked{opacity:.55}.stage-lock{font-size:12px;color:var(--muted)}.char-create{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.char-create select,.char-create input{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px}.char-create button,.play-btn{background:var(--gold);color:#221a00;border:none;border-radius:8px;padding:9px 16px;font-weight:700}.play-btn{width:100%;font-size:17px;padding:13px;margin-top:12px}.play-btn:disabled{opacity:.45;cursor:default}.players-list{display:flex;flex-wrap:wrap;gap:6px}.player-chip{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:3px 10px;font-size:13px}.player-chip.me{border-color:var(--gold)}#stage{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}#stage canvas.layer-3d,#stage canvas.layer-2d{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}#stage canvas.layer-2d{z-index:2;pointer-events:none}#hud{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.hud-top{position:absolute;top:10px;left:12px;right:190px}.hud-bars{display:flex;flex-direction:column;gap:4px;max-width:520px}.bar{position:relative;height:20px;background:#0000008c;border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.25)}.bar.hp{height:22px}.bar>div{height:100%;transition:width .15s}#hp-fill{background:linear-gradient(90deg,#e33,#f66);width:100%}#exp-fill{background:linear-gradient(90deg,#37a,#5cf);width:0%}.bar span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;text-shadow:0 1px 2px #000}.hud-info{display:flex;gap:14px;margin-top:6px;font-size:14px;font-weight:700;text-shadow:0 1px 3px #000}#boss-bar{position:absolute;top:74px;left:50%;transform:translate(-50%);width:min(560px,70vw);text-align:center}#boss-name{font-weight:800;color:#ffb3b3;text-shadow:0 1px 3px #000}.bar.boss{height:14px;margin-top:3px}#boss-fill{background:linear-gradient(90deg,#c00,#f44);width:100%}#skillbar{position:absolute;left:12px;bottom:12px;display:flex;gap:6px;flex-wrap:wrap}.skill-chip{background:#0009;border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:12px;text-transform:capitalize}#minimap{position:absolute;top:10px;right:12px;width:160px;height:160px;border:2px solid rgba(255,255,255,.35);border-radius:8px;background:#2e4a2a}#announce{position:absolute;top:22%;left:50%;transform:translate(-50%);font-size:26px;font-weight:800;color:var(--gold);text-shadow:0 2px 8px #000;text-align:center}#toasts{position:absolute;bottom:60px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;align-items:center}.toast{background:#000000b3;border:1px solid var(--line);border-radius:8px;padding:6px 14px;font-size:14px}.hud-help{position:absolute;bottom:10px;right:12px;font-size:12px;color:#ffffffa6;text-shadow:0 1px 2px #000}#picker{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#0a0614b8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.picker-inner{text-align:center;max-width:860px;padding:20px}.picker-inner h2{margin:0 0 4px;font-size:28px}#pk-hint{color:var(--muted);margin:0 0 18px}#pk-cards{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.pk-card{position:relative;width:230px;min-height:170px;text-align:left;background:var(--panel);border:2px solid var(--line);border-radius:14px;padding:16px 14px 14px;color:var(--text);display:flex;flex-direction:column;gap:6px}.pk-card:hover{border-color:var(--gold);transform:translateY(-2px)}.pk-card.q1{border-color:#3df08a}.pk-card.q2{border-color:#2f7bff}.pk-card.q3{border-color:#a020f0}.pk-card.q4{border-color:#ffa726}.pk-key{position:absolute;top:8px;right:10px;background:#ffffff26;border-radius:6px;padding:1px 8px;font-size:12px;font-weight:700}.pk-quality{font-size:12px;font-weight:800;text-transform:uppercase;color:var(--gold)}.pk-name{font-size:18px;font-weight:800}.pk-lines{font-size:13px;color:var(--muted);line-height:1.45}.pk-badge{align-self:flex-start;background:var(--gold);color:#221a00;font-size:11px;font-weight:800;border-radius:6px;padding:2px 7px}#pk-timer{margin-top:16px;font-size:15px;color:var(--muted)}#pk-timer.urgent{color:var(--red);font-weight:800}#gameover{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#0a0614d9;overflow-y:auto}.over-inner{text-align:center;max-width:620px;padding:30px}.over-inner h1{font-size:40px;margin:0}.over-sub{color:var(--muted)}.over-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.over-stats div{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 4px}.over-stats b{display:block;font-size:19px}.over-stats span{font-size:12px;color:var(--muted)}.over-loot,.over-save{font-size:14px;color:var(--muted)}.over-btns{display:flex;gap:10px;justify-content:center;margin-top:18px}.over-btns button{background:var(--gold);color:#221a00;border:none;border-radius:8px;padding:11px 20px;font-weight:700;font-size:15px}.over-btns button:last-child{background:var(--panel2);color:var(--text);border:1px solid var(--line)}
