:root{--ink: #1b1b1b;--bg: #0b0d0f;--accent: #1f6f8b;--ok: #35b06a;--warn: #e0a33c;--bad: #d9534f}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overscroll-behavior:none}body{font-family:-apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg);color:#fff;-webkit-font-smoothing:antialiased}.viewport{position:fixed;inset:0;overflow:hidden}.stage{will-change:transform;transform:translateZ(0)}.slice{background-repeat:no-repeat;background-size:100% auto;background-position:0 0}.dot{width:9px;height:9px;border-radius:50%;background:var(--bad);flex:none;transition:background .2s}.dot.on{background:var(--ok)}.dot.idle{background:var(--warn)}.sep{width:1px;height:14px;background:#ffffff38;flex:none}.grow{flex:1}.hud{position:fixed;left:0;right:0;display:flex;align-items:center;gap:12px;padding:14px 22px;font-size:15px;letter-spacing:.02em;color:#ffffffdb;background:linear-gradient(to bottom,#0000009e,#0000);opacity:0;transition:opacity .4s;pointer-events:none;z-index:5}.hud-bottom{bottom:0;background:linear-gradient(to top,#0000009e,#0000)}.brand{position:fixed;top:26px;left:32px;max-width:min(56vw,900px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(16px,1.6vw,34px);font-weight:500;letter-spacing:.05em;color:#fffffff2;text-shadow:0 1px 4px rgba(0,0,0,.6),0 0 22px rgba(0,0,0,.35);opacity:0;transition:opacity .55s ease;z-index:6;pointer-events:none}.brand.on{opacity:1}.brand:empty{display:none}.screen.show-hud .hud{opacity:1}.screen.hide-cursor{cursor:none}.fatal{position:fixed;inset:0;display:grid;place-items:center;padding:32px;text-align:center;font-size:16px;line-height:1.8;background:var(--bg);z-index:20}.cover{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;background:var(--bg);z-index:3;display:none}.cover.on{display:block}.notice{position:fixed;inset:0;display:grid;place-items:center;padding:40px;text-align:center;font-size:clamp(20px,3vw,34px);letter-spacing:.04em;color:#ffffffb8;background:var(--bg);z-index:4;transition:opacity .5s}.notice.gone{opacity:0;pointer-events:none}
