/* Broadcaster setup — a stage drawer (see .setupcol in index.html) opposite the
   chat, gated by the moderator password. Fills its drawer column. */
.su-modal{display:flex;flex-direction:column;background:#14181d;color:#e8eaed;
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}
.su-head{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:16px 18px;
  border-bottom:1px solid #2a2f36;font-weight:700;font-size:16px}
.su-head .su-x{margin-left:auto;background:transparent;border:0;color:#9aa0a6;
  font-size:26px;line-height:1;cursor:pointer;width:34px;height:34px;border-radius:8px}
.su-head .su-x:hover{background:rgba(255,255,255,.1);color:#fff}
/* Scrollable body with the scrollbar hidden (still scrolls) */
.su-body{flex:1 1 auto;overflow-y:auto;padding:16px 18px 24px;
  scrollbar-width:none;-ms-overflow-style:none}
.su-body::-webkit-scrollbar{display:none;width:0;height:0}

.su-gate .su-note{color:#9aa0a6;font-size:14px;margin:2px 0 14px}
.su-row{display:flex;gap:8px;align-items:center}
.su-panel{display:none}
.su-panel.show{display:block}
.su-gate.hide{display:none}

/* Page tabs — sticky at the top of the scrolling body. Negative margins pull
   the bar over the body's padding so content scrolls cleanly under it. */
.su-tabs{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;gap:6px;
  margin:-16px -18px 4px;padding:14px 18px 10px;background:#14181d;
  border-bottom:1px solid #22272d}
.su-tab{background:transparent;border:1px solid #2a2f36;color:#9aa0a6;border-radius:999px;
  padding:6px 11px;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap;
  transition:background .15s,color .15s}
.su-tab:hover{background:rgba(255,255,255,.08);color:#e8eaed}
.su-tab.on{background:#3b82f6;border-color:#3b82f6;color:#fff}

.su-sec{padding:16px 0;border-top:1px solid #22272d}
.su-sec:first-child{border-top:0;padding-top:4px}
/* First VISIBLE section on the current page (paging hides the others) */
.su-sec.pg-first{border-top:0;padding-top:8px}
.su-sec h3{margin:0 0 4px;font-size:13px;font-weight:700;letter-spacing:.3px;
  text-transform:uppercase;color:#b6bcc3}
.su-sec .hint{margin:0 0 12px;font-size:12.5px;color:#9aa0a6;line-height:1.5}
.su-fld{margin-bottom:12px}
.su-fld:last-child{margin-bottom:0}
.su-fld label{display:block;font-size:12.5px;color:#b6bcc3;margin-bottom:5px;font-weight:600}

.su-modal input[type=text],.su-modal input[type=password],.su-modal textarea{
  width:100%;background:#0b0d10;border:1px solid #2a2f36;border-radius:9px;
  color:#e8eaed;padding:10px 12px;font-size:14px;outline:none;font-family:inherit}
.su-modal input:focus,.su-modal textarea:focus{border-color:#3b82f6}
/* Masks the stream key without using type=password (so no browser "save password") */
.su-mask{-webkit-text-security:disc;text-security:disc}
.su-modal textarea{resize:vertical;min-height:84px;line-height:1.5}

.su-btn{background:rgba(255,255,255,.08);border:1px solid #2a2f36;color:#e8eaed;
  border-radius:9px;padding:9px 14px;font-size:13.5px;font-weight:600;cursor:pointer;
  white-space:nowrap;transition:background .15s}
.su-btn:hover{background:rgba(255,255,255,.16)}
.su-btn.primary{background:#3b82f6;border-color:#3b82f6;color:#fff}
.su-btn.primary:hover{background:#2f6fe0}
.su-btn.danger{background:transparent;border-color:#5b2320;color:#ff6b60}
.su-btn.danger:hover{background:rgba(255,59,48,.14)}
/* Segmented button rows (now-playing banner style) */
.su-seg{display:flex;gap:6px}
.su-seg .su-btn{flex:1}
.su-seg .su-btn.on{background:#3b82f6;border-color:#3b82f6;color:#fff}
.su-btn.ghost{background:transparent}
.su-btn:disabled{opacity:.55;cursor:default}

.su-inline{display:flex;gap:8px;align-items:center}
.su-inline input{flex:1 1 auto;min-width:0}
.su-status{font-size:12.5px;color:#8ad18a;margin-top:8px;min-height:16px}
.su-status.err{color:#ff8079}
.su-err{color:#ff8079;font-size:13px;margin-top:8px;min-height:16px}

.su-thumb{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
/* the drag-frame must never crowd out the Upload / Re-center / Remove
   column — it shrinks to fit and the buttons wrap under it when narrow */
.su-thumb .prev{width:160px;height:90px;border-radius:9px;background:#0b0d10 center/cover no-repeat;
  border:1px solid #2a2f36;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  color:#5b626b;font-size:12px;text-align:center;overflow:hidden}
.su-thumb .prev img{width:100%;height:100%;object-fit:cover}
.su-thumb .tcol{flex:1 1 190px;min-width:190px}
.su-thumb .tcol .su-btn{margin:0 8px 8px 0}

@media (max-width:480px){
  .su-thumb{flex-direction:column}
  .su-thumb .prev{width:100%;height:150px}
}
/* Current-song line above the manual link field */
.su-npnow{font-size:12px;color:#9aa0a6;margin:2px 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Share thumbnail: drag-to-reframe frame (16:9, shows the uncropped original) */
.su-thumb .prev.su-thumbframe{width:min(288px,100%);aspect-ratio:16/9;height:auto;
  flex:0 1 auto;background-size:cover;background-repeat:no-repeat}
.su-thumb .prev.su-thumbframe.has{cursor:grab;touch-action:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.su-thumb .prev.su-thumbframe.has:hover{box-shadow:inset 0 0 0 2px #3b82f6}
.su-thumb .prev.su-thumbframe.dragging{cursor:grabbing;box-shadow:inset 0 0 0 2px #3b82f6}
.su-thumb .prev.su-thumbframe.dragover{box-shadow:inset 0 0 0 2px #22c55e;background-color:rgba(34,197,94,.08)}
.su-thumb .prev.su-thumbframe:focus{outline:none;box-shadow:inset 0 0 0 2px #3b82f6}
@media (max-width:640px){ .su-thumb .prev.su-thumbframe{width:100%;height:170px} }
