:root{--bg:#0d0b1e;--panel:#1b1e45;--line:#f4f1e6;--gold:#ffcc33;--red:#e4252b;--txt:#f4f1e6;--mut:#8b8fa8}
*{box-sizing:border-box}
body{margin:0;background:var(--bg) repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.015) 3px 4px);color:var(--txt);font:14px/1.6 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
.top{padding:18px 24px 6px}
h1{font:28px GZPixel,monospace;margin:0;color:var(--gold);text-shadow:2px 2px 0 #9e1a26}
h1 small{font-size:14px;color:var(--mut);text-shadow:none;margin-left:8px}
.warn{margin:6px 0 0;color:#ff8f8f;font-size:13px}
main{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;padding:12px 24px 40px;align-items:start}
@media (max-width:1000px){main{grid-template-columns:1fr}}
.stage{min-width:0}
.screen{position:relative;background:#000;border:4px solid var(--line);box-shadow:6px 6px 0 rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;max-height:78vh}
.screen canvas{display:block;max-width:100%;max-height:calc(78vh - 8px);image-rendering:pixelated}
.gate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(13,11,30,.55);gap:8px}
.gate.hide{display:none}
button{font:14px GZPixel,monospace;background:var(--panel);color:var(--txt);border:2px solid var(--line);padding:6px 14px;cursor:pointer;box-shadow:3px 3px 0 rgba(0,0,0,.5)}
button:hover:not(:disabled){background:#2a2f6b}
button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 rgba(0,0,0,.5)}
button:disabled{opacity:.45;cursor:not-allowed}
button.primary{background:var(--red);border-color:var(--gold);color:#fff;width:100%;padding:10px}
#bigPlay{font-size:22px;padding:12px 26px;background:var(--red);border-color:var(--gold)}
#loadMsg{margin:0;font:13px GZPixel,monospace;color:var(--gold)}
.bar{display:flex;gap:10px;align-items:center;margin-top:10px}
.bar input{flex:1;accent-color:var(--gold)}
#time{font:13px GZPixel,monospace;min-width:110px;text-align:right}
.opts{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:13px}
.opts select{background:var(--panel);color:var(--txt);border:2px solid var(--line);padding:4px 6px;margin-left:6px;font:inherit}
.chk{display:flex;align-items:center;gap:6px}
.card{background:var(--panel);border:2px solid var(--line);padding:12px 14px;margin-bottom:14px;box-shadow:4px 4px 0 rgba(0,0,0,.45)}
.card h2{font:16px GZPixel,monospace;margin:0 0 8px;color:var(--gold)}
.card.small p{font-size:12px;color:var(--mut);margin:0}
.hint{font-size:12px;color:var(--mut);margin:4px 0 8px}
.prog{height:10px;border:2px solid var(--line);margin-top:10px;background:#000}
#expBar{height:100%;width:0;background:repeating-linear-gradient(90deg,var(--gold) 0 6px,#d18b16 6px 8px)}
.covers{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}
.covers a{color:var(--mut);font-size:11px;text-decoration:none;display:flex;flex-direction:column;gap:4px}
.covers a:first-child{flex:16}.covers a:last-child{flex:5.4}
.covers img{width:100%;border:2px solid var(--line);image-rendering:pixelated}
.pubtabs{display:flex;gap:6px;margin-bottom:8px}
.pubtabs button.on{background:var(--red);border-color:var(--gold)}
.field{margin-bottom:8px}
.field b{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--gold);font-weight:normal}
.field b button{font-size:11px;padding:1px 8px;box-shadow:none}
.field pre{white-space:pre-wrap;word-break:break-all;background:#0d0b1e;border:1px solid #4d5170;padding:6px 8px;margin:4px 0 0;font:12px/1.55 system-ui,sans-serif;max-height:220px;overflow:auto}
