*{box-sizing:border-box}
body{font-family:system-ui,sans-serif;margin:0;padding:1rem;background:#14161a;color:#e8e8ea;line-height:1.45}
.wrap{max-width:760px;margin:0 auto}
a{color:#7db4ff;word-break:break-all}
h1{margin:.2rem 0 1rem}
.card{background:#1c1f25;border:1px solid #2d3139;border-radius:10px;padding:1rem;margin:1rem 0}
input,select{background:#22252b;color:inherit;border:1px solid #3a3e46;border-radius:6px;padding:.5rem;font:inherit}
button{background:#3b82f6;border:0;color:#fff;border-radius:6px;padding:.5rem .9rem;font:inherit;cursor:pointer}
button.sec{background:#2f343c} button.red{background:#c0392b} button.on{outline:2px solid #fff}
button:disabled{opacity:.4;cursor:default}
label{display:inline-block;margin:.25rem .75rem .25rem 0}
.row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.5rem 0}
.sw{width:30px;height:30px;border-radius:50%;border:2px solid #444;padding:0}
.sw.on{border-color:#fff}
.st{font-size:1.4rem;padding:.2rem .45rem;background:#2f343c}
#stage{position:relative;width:100%;max-width:min(100%,calc(62vh*16/9));margin:0 auto;aspect-ratio:16/9;background-color:#1b1e24;
 background-image:linear-gradient(#262a31 1px,transparent 1px),linear-gradient(90deg,#262a31 1px,transparent 1px);background-size:5% 8.888%;
 border:1px solid #3a3e46;border-radius:8px;overflow:hidden}
#stage canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
#banner{background:#7a2e2e;border-radius:6px;padding:.5rem .8rem;margin:.5rem 0;display:none}
.pend{display:flex;gap:.6rem;align-items:center;margin:.4rem 0}
.pend img{max-width:120px;max-height:80px;border-radius:6px;background:#000}
.muted{opacity:.7;font-size:.9rem}
