:root{--bg:#14101c;--card:#211a2e;--line:#3a2f4f;--fg:#f6f0ff;--dim:#a99bc4;--pink:#ff6fa8;--mint:#5ce0b8;--warn:#ffb84d;color-scheme:dark}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:var(--bg);color:var(--fg)}
body{display:flex;flex-direction:column;align-items:center;font-size:15px}
button{font:inherit;font-weight:700;border:0;border-radius:14px;padding:12px 16px;background:var(--card);color:var(--fg);cursor:pointer;border:1px solid var(--line)}
button.on{background:var(--pink);border-color:var(--pink);color:#1a0f1f}
button.main{background:var(--pink);color:#1a0f1f;border:0;font-size:17px;padding:16px 20px}
button.end{background:#3a1a24;border-color:#6b2a3c;color:#ffb3c8}
.wrap{width:100%;max-width:520px;padding:16px;display:flex;flex-direction:column;gap:12px}
h1{font-size:22px;display:flex;align-items:center;gap:8px}
h1 i{font-style:normal;font-size:12px;font-weight:700;color:var(--bg);background:var(--mint);border-radius:8px;padding:3px 7px}
.stage{position:relative;width:100%;aspect-ratio:3/4;background:#000;border-radius:18px;overflow:hidden}
.stage canvas,.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.badge{position:absolute;left:10px;top:10px;font-size:13px;font-weight:700;padding:5px 9px;border-radius:10px;background:#000a}
.badge.live{background:var(--pink);color:#1a0f1f}
.row{display:flex;gap:8px;flex-wrap:wrap}
.row button{flex:1 1 0;min-width:0;padding:11px 4px;font-size:14px;white-space:nowrap}
.lbl{font-size:13px;color:var(--dim);font-weight:700}
.link{display:flex;gap:8px}
.link input{flex:1;min-width:0;font:inherit;font-size:13px;background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:12px;padding:10px}
.log{font-size:13px;color:var(--dim);min-height:18px}
.log b{color:var(--warn)}
.hide{display:none!important}
/* 팬 화면 */
body.fan{background:#000;justify-content:center;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.fanstage{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#000}
.fanstage video{width:100%;height:100%;object-fit:contain;pointer-events:none}
#wm{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cover{position:fixed;inset:0;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;background:#000;z-index:5;font-weight:700;font-size:18px;text-align:center;padding:24px}
.cover small{color:var(--dim);font-size:14px;font-weight:400}
