:root {
  --bg: #060a13; --panel: #0b1221; --panel2: #121b2e; --line: #1d2940; --text: #e8edf6; --muted: #8a96ad;
  --ok: #19c37d; --warn: #f2a33a; --err: #e5303a; --accent: #2f6fed; --input: #080e1a;
  --cond: Bahnschrift, "Bahnschrift SemiCondensed", "Avenir Next Condensed", "Roboto Condensed", "Arial Narrow", system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; background: var(--bg); color: var(--text); font: calc(15px * var(--fz, 1))/1.4 system-ui, -apple-system, "Segoe UI", sans-serif; }
.boot { padding: 40px; color: var(--muted); }
.hidden { display: none !important; }
a { color: var(--accent); }

/* ---------- topo ---------- */
.top { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.brand { font-weight: 700; letter-spacing: .02em; }
.top select { min-width: 180px; }
.nav { display: flex; gap: 4px; flex-wrap: wrap; }
.nav button { background: transparent; color: var(--muted); padding: 8px 12px; }
.nav button.on { background: var(--panel2); color: var(--text); }
.spacer { flex: 1; }
.user { color: var(--muted); font-size: calc(13px * var(--fz, 1)); }

main { padding: 16px; display: grid; gap: 16px; }
.cols { display: grid; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr); gap: 16px; align-items: start; }
@media (max-width: 900px) { .cols { grid-template-columns: 1fr; } }
.stack { display: grid; gap: 16px; align-content: start; }
section { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 14px; min-width: 0; }
section h2 { font-size: calc(12px * var(--fz, 1)); text-transform: uppercase; letter-spacing: .08em; color: var(--muted); margin: 0 0 10px; font-weight: 600; }
.note { font-size: calc(12px * var(--fz, 1)); color: var(--muted); margin: 10px 0 0; }
.empty { color: var(--muted); padding: 6px 0; }

/* ---------- formulários ---------- */
input, select, textarea { width: 100%; background: var(--input); border: 1px solid var(--line); color: var(--text); border-radius: 6px; padding: 8px 10px; font: inherit; }
select { width: auto; }
label { display: block; font-size: calc(12px * var(--fz, 1)); color: var(--muted); margin: 8px 0 4px; }
button { font: inherit; border: 0; border-radius: 6px; padding: 9px 14px; cursor: pointer; color: #fff; background: #2a3342; }
button:hover:not(:disabled) { filter: brightness(1.15); }
button:disabled { opacity: .45; cursor: default; }
button.primary { background: var(--accent); }
button.danger { background: var(--err); font-weight: 700; }
button.ghost { background: transparent; border: 1px solid var(--line); }
button.small { padding: 5px 9px; font-size: calc(13px * var(--fz, 1)); }
.row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 10px; }
.row.end { justify-content: flex-end; }
.grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
@media (max-width: 600px) { .grid3 { grid-template-columns: 1fr; } }
.err-msg { color: var(--err); font-size: calc(13px * var(--fz, 1)); margin-top: 8px; min-height: 1em; }

/* ---------- login ---------- */
.login { max-width: 380px; margin: 12vh auto; padding: 0 16px; }
.login section { padding: 22px; }
.login h1 { font-size: calc(20px * var(--fz, 1)); margin: 0 0 4px; }

/* ---------- estados ---------- */
.pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: var(--input); font-size: calc(13px * var(--fz, 1)); }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--muted); flex: none; }
.ok .dot { background: var(--ok); } .warn .dot { background: var(--warn); } .err .dot { background: var(--err); }
.banner { padding: 10px 12px; border-radius: 6px; font-size: calc(14px * var(--fz, 1)); }
.banner.warn { background: #3a2c12; color: #ffd28a; }
.banner.err { background: #3a1d22; color: #ffb3b6; }
dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 0; font-size: calc(13px * var(--fz, 1)); }
dt { color: var(--muted); } dd { margin: 0; word-break: break-word; }

/* ---------- realização ---------- */
.bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.bar select { flex: 1; min-width: 160px; }
.speakers { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; margin-top: 12px; }
.spk { text-align: left; padding: 14px; background: var(--panel2); border: 2px solid transparent; min-height: 88px; }
.spk.live { border-color: var(--ok); }
.key { display: inline-block; font: 600 calc(11px * var(--fz, 1)) monospace; background: var(--input); padding: 2px 6px; border-radius: 4px; color: var(--warn); }
.spk .n { display: block; font-weight: 600; margin-top: 6px; }
.spk .r { display: block; color: var(--muted); font-size: calc(13px * var(--fz, 1)); }
.spk .no { display: block; color: var(--warn); font-size: calc(12px * var(--fz, 1)); margin-top: 4px; }
.actions { display: flex; gap: 8px; flex-wrap: wrap; }
.actions .danger { margin-left: auto; padding: 12px 20px; }
ol.hist { margin: 0; padding-left: 0; list-style: none; font: calc(12px * var(--fz, 1))/1.7 ui-monospace, monospace; max-height: 260px; overflow: auto; }
.inst { padding: 8px; border: 1px solid var(--line); border-radius: 6px; margin-top: 6px; font-size: calc(12px * var(--fz, 1)); }

/* ---------- editor de lista ---------- */
.srow { display: grid; grid-template-columns: 78px 1.3fr 1.3fr 1fr 1fr auto; gap: 6px; align-items: center; margin-bottom: 6px; }
.srow.head { font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.srow select { width: 100%; }
.tools { display: flex; gap: 4px; }
@media (max-width: 800px) { .srow { grid-template-columns: 1fr 1fr; } .srow.head { display: none; } }

/* ---------- tabelas e listas ---------- */
table { width: 100%; border-collapse: collapse; font-size: calc(14px * var(--fz, 1)); }
th, td { text-align: left; padding: 8px 6px; border-bottom: 1px solid var(--line); vertical-align: middle; }
th { color: var(--muted); font-weight: 500; font-size: calc(12px * var(--fz, 1)); }
.table-wrap { overflow-x: auto; }
.assets { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
.asset { background: var(--panel2); border-radius: 6px; padding: 8px; font-size: calc(13px * var(--fz, 1)); }
.asset .thumb { height: 100px; display: grid; place-items: center; border-radius: 4px; margin-bottom: 6px;
  background: repeating-conic-gradient(#2a3342 0% 25%, #1a202b 0% 50%) 50% / 16px 16px; }
.asset .thumb img { max-width: 100%; max-height: 100px; }
.asset .meta { color: var(--muted); font-size: calc(12px * var(--fz, 1)); }
.asset .thumb-link, .lv-vd-th.lnk { display: grid; place-items: center; width: 100%; height: 100%; background: #0b0f16; color: #cfd6e2; font-weight: 700; font-size: calc(13px * var(--fz, 1)); }
.lv-vd-th.lnk { width: 112px; height: 63px; }
code.url { display: block; padding: 8px; background: var(--input); border-radius: 6px; word-break: break-all; font-size: calc(12px * var(--fz, 1)); }

/* ---------- modal e avisos ---------- */
.modal { position: fixed; inset: 0; background: rgba(0,0,0,.6); display: grid; place-items: center; padding: 16px; z-index: 10; }
.modal-box { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 18px; width: min(560px, 100%); max-height: 90vh; overflow: auto; }
.modal-box h3 { margin: 0 0 8px; }
#toasts { position: fixed; right: 16px; bottom: 16px; display: grid; gap: 8px; z-index: 20; }
.toast { background: var(--panel2); border-left: 4px solid var(--accent); padding: 10px 14px; border-radius: 6px; max-width: 360px; font-size: calc(14px * var(--fz, 1)); }
.toast.err { border-color: var(--err); } .toast.ok { border-color: var(--ok); }

/* ================================================================ Fase 3: biblioteca */
.lib-bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.lib-bar > input { flex: 1; min-width: 160px; width: auto; }
.tabs { display: flex; gap: 4px; }
.tabs button { background: transparent; border: 1px solid var(--line); color: var(--muted); }
.tabs button.on { background: var(--panel2); color: var(--text); }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.card { background: var(--panel2); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; }
.card .thumb { position: relative; aspect-ratio: 16 / 9; overflow: hidden; cursor: pointer;
  background: repeating-conic-gradient(#2a3342 0% 25%, #1a202b 0% 50%) 50% / 16px 16px; }
.card .thumb.vertical { aspect-ratio: 9 / 16; max-height: 220px; margin: 0 auto; width: 124px; }
.card .body { padding: 10px; display: grid; gap: 4px; }
.card .title { font-weight: 600; display: flex; gap: 6px; align-items: center; }
.card .meta { color: var(--muted); font-size: calc(12px * var(--fz, 1)); }
.badge { font-size: calc(11px * var(--fz, 1)); padding: 1px 6px; border-radius: 4px; background: var(--input); color: var(--muted); }
.badge.ready { color: #6be3a2; } .badge.draft { color: #ffd28a; }
.star { background: transparent; padding: 0 4px; color: var(--muted); font-size: calc(16px * var(--fz, 1)); }
.star.on { color: var(--warn); }
.starters { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; margin: 10px 0; }
.starters button { text-align: left; padding: 12px; background: var(--panel2); }
.starters button strong { display: block; }
.modal-box.wide { width: min(900px, 100%); }

/* ================================================================ Fase 3: editor */
main.editing { padding: 0; }
.ed { display: flex; flex-direction: column; height: calc(100vh - 58px); min-height: 520px; }
.ed-toolbar { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; padding: 8px 12px; border-bottom: 1px solid var(--line); background: var(--panel); }
.ed-toolbar .ed-name { width: 170px; padding: 6px 8px; }
.ed-toolbar button.small { padding: 5px 8px; }
.ed-toolbar button.on { background: var(--panel2); border-color: var(--accent); }
.ed-kind { font-size: calc(11px * var(--fz, 1)); text-transform: uppercase; letter-spacing: .08em; color: var(--warn); }
.ed-sep { width: 1px; height: 22px; background: var(--line); margin: 0 4px; }
.ed-saved { white-space: nowrap; }
.ed-body { flex: 1; display: grid; grid-template-columns: 220px minmax(0, 1fr) 290px; min-height: 0; }
.ed-left, .ed-right { background: var(--panel); overflow: auto; padding: 10px; }
.ed-left { border-right: 1px solid var(--line); }
.ed-right { border-left: 1px solid var(--line); }
.ed-left h2 { font-size: calc(12px * var(--fz, 1)); text-transform: uppercase; letter-spacing: .08em; color: var(--muted); margin: 0 0 8px; }
.ed-left .tools { flex-wrap: wrap; margin-bottom: 8px; }
.ed-layer { display: flex; align-items: center; gap: 6px; padding: 6px; border-radius: 5px; cursor: pointer; font-size: calc(13px * var(--fz, 1)); }
.ed-layer:hover { background: var(--panel2); }
.ed-layer.on { background: #24324a; }
.ed-layer.off .ed-layer-name { opacity: .45; }
.ed-layer-type { width: 18px; text-align: center; color: var(--muted); }
.ed-layer-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
button.tiny { padding: 2px 6px; font-size: calc(12px * var(--fz, 1)); background: transparent; }
.ed-stage-wrap { position: relative; overflow: auto; display: grid; place-items: center; background: #0a0d12; touch-action: none; }
.ed-canvas-holder { position: relative; flex: none; box-shadow: 0 0 0 1px #2a3342;
  background: repeating-conic-gradient(#262d39 0% 25%, #1b2029 0% 50%) 0 0 / 24px 24px; }
.ed-canvas, .ed-overlay { position: absolute; left: 0; top: 0; transform-origin: 0 0; }
.ed-canvas { overflow: hidden; }
.ed-overlay { pointer-events: none; }
.ed-sel { position: absolute; border: 2px solid var(--accent); box-sizing: border-box; transform-origin: 50% 50%; }
.ed-sel.locked { border-style: dashed; border-color: var(--muted); }
.ed-h { position: absolute; background: #fff; border: 1px solid var(--accent); pointer-events: auto; box-sizing: border-box; }
.ed-h.nw { left: 0; top: 0; cursor: nwse-resize; } .ed-h.n { left: 50%; top: 0; cursor: ns-resize; }
.ed-h.ne { left: 100%; top: 0; cursor: nesw-resize; } .ed-h.e { left: 100%; top: 50%; cursor: ew-resize; }
.ed-h.se { left: 100%; top: 100%; cursor: nwse-resize; } .ed-h.s { left: 50%; top: 100%; cursor: ns-resize; }
.ed-h.sw { left: 0; top: 100%; cursor: nesw-resize; } .ed-h.w { left: 0; top: 50%; cursor: ew-resize; }
.ed-guide { position: absolute; background: #ff3fa4; }
.ed-guide.x { top: 0; bottom: 0; width: 2px; } .ed-guide.y { left: 0; right: 0; height: 2px; }
.ed-safe { position: absolute; border: 2px dashed rgba(232, 163, 61, .45); }
.ed-safe.title { border-color: rgba(61, 139, 253, .45); }
.ed-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.08) 1px, transparent 1px); }
.ed-group { border-bottom: 1px solid var(--line); padding: 10px 0; }
.ed-group h3 { font-size: calc(12px * var(--fz, 1)); text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin: 0 0 6px; }
.ed-f { display: grid; gap: 3px; margin: 6px 0; font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.ed-f input, .ed-f select, .ed-group textarea { width: 100%; padding: 6px 8px; font-size: calc(13px * var(--fz, 1)); }
.ed-f.check { display: flex; align-items: center; gap: 6px; }
.ed-f.check input { width: auto; }
.ed-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ed-row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; }
.ed-color { display: flex; gap: 6px; }
.ed-color input[type=color] { width: 40px; padding: 2px; height: 32px; flex: none; }
.ed-fields { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-top: 6px; }
.ed-fields .tiny { border: 1px solid var(--line); }
.ed-preview { position: relative; overflow: hidden; margin: 12px auto; border-radius: 4px;
  background: repeating-conic-gradient(#262d39 0% 25%, #1b2029 0% 50%) 0 0 / 20px 20px; }
@media (max-width: 1100px) { .ed-body { grid-template-columns: 180px minmax(0, 1fr) 250px; } }
@media (max-width: 860px) {
  .ed { height: auto; }
  .ed-body { grid-template-columns: 1fr; }
  .ed-stage-wrap { height: 60vh; order: -1; }
}

/* ================================================================ Fase 4 */
.sdetails { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: -2px 0 10px 84px; padding: 8px 10px; background: var(--panel2); border-radius: 6px; }
@media (max-width: 800px) { .sdetails { grid-template-columns: 1fr; margin-left: 0; } }
.asset-pick { display: flex; gap: 6px; align-items: center; }
.asset-pick select { flex: 1; width: 100%; }
.mini-thumb { width: 36px; height: 36px; flex: none; border-radius: 4px; display: grid; place-items: center; overflow: hidden;
  background: repeating-conic-gradient(#2a3342 0% 25%, #1a202b 0% 50%) 50% / 10px 10px; }
.mini-thumb img { max-width: 100%; max-height: 100%; }
.tools button.on { background: var(--accent); }
.spk .ph { float: right; width: 44px; height: 44px; border-radius: 50%; object-fit: cover; margin-left: 8px; }
.spk .tag { display: inline-block; font-size: calc(11px * var(--fz, 1)); color: var(--muted); margin-left: 6px; }
.previews { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 700px) { .previews { grid-template-columns: 1fr; } }
.pv { display: grid; gap: 6px; }
.pv-box { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 6px; border: 2px solid var(--line);
  background: repeating-conic-gradient(#262d39 0% 25%, #1b2029 0% 50%) 0 0 / 16px 16px; }
.pv-box.live { border-color: var(--ok); }
.pv-box .pv-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-size: calc(13px * var(--fz, 1)); text-align: center; padding: 8px; }
.pv-label { font-size: calc(12px * var(--fz, 1)); color: var(--muted); display: flex; justify-content: space-between; gap: 8px; }
.search-results { display: grid; gap: 6px; margin-top: 8px; max-height: 260px; overflow: auto; }
.search-results button { text-align: left; background: var(--panel2); }
.emerg { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.emerg button { padding: 12px; }
.emerg .danger { grid-column: 1 / -1; padding: 16px; font-size: calc(17px * var(--fz, 1)); }
.swatches { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.swatch { width: 20px; height: 20px; border-radius: 4px; border: 1px solid rgba(255,255,255,.3); padding: 0; cursor: pointer; }
.brand-card { background: var(--panel2); border-radius: 8px; padding: 10px; display: grid; gap: 6px; }
.brand-card .logos { display: flex; gap: 6px; flex-wrap: wrap; }
.brand-card .logos img { height: 32px; background: repeating-conic-gradient(#2a3342 0% 25%, #1a202b 0% 50%) 50% / 8px 8px; border-radius: 3px; }
.kbd { font: 600 calc(11px * var(--fz, 1)) ui-monospace, monospace; background: var(--input); padding: 2px 6px; border-radius: 4px; color: var(--warn); }
.irow { display: grid; grid-template-columns: 70px 1fr 2.2fr auto; gap: 6px; align-items: start; margin-bottom: 6px; }
.irow.head { font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.irow textarea { width: 100%; resize: vertical; }
@media (max-width: 800px) { .irow { grid-template-columns: 1fr; } .irow.head { display: none; } }
.list-tabs { display: flex; gap: 4px; margin: 10px 0 0; }
.list-tabs button { background: transparent; border: 1px solid var(--line); color: var(--muted); }
.list-tabs button.on { background: var(--panel2); color: var(--text); border-color: var(--accent); }
.items { display: grid; gap: 6px; margin-top: 12px; }
.item { text-align: left; padding: 10px 12px; background: var(--panel2); border: 2px solid transparent; display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; }
.item.live { border-color: var(--ok); }
.item .num { font: 700 calc(15px * var(--fz, 1)) ui-monospace, monospace; color: var(--warn); grid-row: span 2; }
.item .sec { font-size: calc(11px * var(--fz, 1)); text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.item .txt { font-size: calc(14px * var(--fz, 1)); }
.item .no { grid-column: 2; color: var(--warn); font-size: calc(12px * var(--fz, 1)); }
.entry { position: relative; display: grid; }
.entry > button { width: 100%; }
.entry-tools { position: absolute; right: 6px; top: 6px; display: flex; gap: 2px; opacity: .35; transition: opacity .15s; }
.entry:hover .entry-tools, .entry:focus-within .entry-tools { opacity: 1; }
@media (hover: none) { .entry-tools { opacity: 1; } }
.entry-tools .tiny { background: var(--input); border: 1px solid var(--line); padding: 3px 7px; }
.entry-tools .tiny.on { background: var(--ok); }
.item { padding-right: 150px; }
.item .res { grid-column: 2; font-size: calc(13px * var(--fz, 1)); font-weight: 600; color: #6be3a2; }
.item .res.rejected { color: #ff8a8d; } .item .res.tie { color: #ffd28a; } .item .res.withdrawn, .item .res.postponed { color: var(--muted); }
.quick-comment { display: grid; gap: 6px; margin-top: 10px; padding: 10px; background: var(--panel2); border-radius: 6px; }
.quick-comment textarea { width: 100%; }
.timers { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; margin-top: 12px; }
.timer-card { background: var(--panel2); border-radius: 8px; padding: 12px; display: grid; gap: 8px; border: 2px solid transparent; }
.timer-card.live { border-color: var(--ok); }
.tc-head { display: flex; gap: 8px; align-items: center; }
.tc-head .note { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-time { font: 700 calc(44px * var(--fz, 1)) ui-monospace, monospace; text-align: center; font-variant-numeric: tabular-nums; }
.tc-time.over { color: var(--err); }
.tc-btns { display: flex; gap: 4px; flex-wrap: wrap; }
.tc-btns button { flex: 1; padding: 8px 6px; }
.vote-table { display: grid; grid-template-columns: 20px 1fr 80px 80px 80px auto; gap: 6px 8px; align-items: center; margin: 10px 0; }
.vote-table input { padding: 6px; }
.vote-result { padding: 12px; border-radius: 6px; background: #13281d; color: #6be3a2; font-weight: 600; min-height: 1.4em; }
.vote-result.rejected { background: #3a1d22; color: #ffb3b6; } .vote-result.tie { background: #3a2c12; color: #ffd28a; }

/* ---- editor (dicas e seleção múltipla) ---- */
.ed-hint { padding: 8px 14px; background: #13281d; color: #a9e8c6; font-size: calc(13px * var(--fz, 1)); border-bottom: 1px solid var(--line); }
.ed-sel.multi { border-style: solid; border-color: rgba(61, 139, 253, .7); }
.ed-sel.group { border-style: dashed; border-color: var(--accent); background: rgba(61, 139, 253, .05); }
.ed-marquee { position: absolute; border: 1px dashed #fff; background: rgba(61, 139, 253, .15); }
.ed-layer-group { color: var(--accent); font-size: calc(12px * var(--fz, 1)); }
.ed-align { display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; }
.ed-align button { padding: 6px 0; font-size: calc(15px * var(--fz, 1)); }
button.danger-soft { background: #3a1d22; color: #ffb3b6; }
.asset .thumb video { max-width: 100%; max-height: 100px; }

/* ---- cronograma de animações (editor) ---- */
.ed-center { display: grid; grid-template-rows: minmax(0, 1fr) auto; min-height: 0; min-width: 0; }
.ed-tl { background: var(--panel); border-top: 1px solid var(--line); padding: 6px 10px 8px; max-height: 34vh; overflow: auto; }
.ed-tl-hd { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; font-size: calc(13px * var(--fz, 1)); }
.ed-tl-hd .note { margin: 0; }
.ed-tl-grid { position: relative; display: grid; gap: 2px; }
.ed-tl-row { display: grid; grid-template-columns: 120px minmax(0, 1fr); align-items: center; gap: 0; min-height: 26px; }
.ed-tl-row.on { background: #1d2a40; }
.ed-tl-name { font-size: calc(12px * var(--fz, 1)); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-right: 6px; cursor: pointer; }
.ed-tl-row.on .ed-tl-name { color: var(--text); }
.ed-tl-track { position: relative; height: 24px; background: repeating-linear-gradient(90deg, transparent 0 calc(10% - 1px), rgba(255,255,255,.04) calc(10% - 1px) 10%); border-radius: 4px; }
.ed-tl-scale .ed-tl-track { background: none; height: 16px; }
.ed-tl-tick { position: absolute; top: 0; font-size: calc(10px * var(--fz, 1)); color: var(--muted); border-left: 1px solid var(--line); padding-left: 2px; height: 14px; }
.ed-tl-bar { position: absolute; height: 10px; border-radius: 3px; cursor: grab; min-width: 6px; }
.ed-tl-bar.in { top: 2px; background: #2fbf71; }
.ed-tl-bar.out { bottom: 2px; background: #e8a33d; }
.ed-tl-bar.inherited { opacity: .45; }
.ed-tl-handle { position: absolute; right: -3px; top: -2px; bottom: -2px; width: 8px; cursor: ew-resize; }
.ed-tl-playhead { display: none; position: absolute; top: 0; bottom: 0; width: 2px; background: #ff3fa4; pointer-events: none; }
.ed-anim { border: 1px solid var(--line); border-radius: 6px; padding: 6px 8px; margin: 6px 0; }
.ed-anim h4 { margin: 0 0 4px; font-size: calc(12px * var(--fz, 1)); color: var(--muted); }

/* ================================================================ base de oradores */
.pp-av { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; flex: none; background: var(--panel2); }
.pp-av.none { display: grid; place-items: center; font: 700 calc(15px * var(--fz, 1)) var(--cond); color: var(--muted); border: 1px solid var(--line); }
.pp-av.big { width: 76px; height: 76px; font-size: calc(24px * var(--fz, 1)); }
.pp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 10px; }
.pp-card { display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center; background: var(--panel2); border-radius: 10px; padding: 12px; }
.pp-card .tools { grid-column: 1 / -1; justify-content: flex-end; }
.pp-info { display: grid; gap: 2px; min-width: 0; }
.pp-info strong { font: 600 calc(17px * var(--fz, 1)) var(--cond); }
.pp-list { display: grid; gap: 6px; margin-top: 10px; max-height: 50vh; overflow: auto; }
.pp-pick { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; text-align: left; background: var(--panel2); padding: 8px 12px; }
.pp-pick strong { display: block; } .pp-pick small { color: var(--muted); }
.pp-add { color: var(--accent); font-size: calc(13px * var(--fz, 1)); }
.pp-photo-field { display: grid; grid-template-columns: 96px 1fr; gap: 14px; align-items: center; margin-bottom: 6px; }
.pp-photo { width: 96px; height: 96px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: var(--panel2); border: 1px dashed var(--line); color: var(--muted); font-size: calc(12px * var(--fz, 1)); }
.pp-photo img { width: 100%; height: 100%; object-fit: cover; }
.srow-name { display: flex; gap: 6px; align-items: center; }
.srow-linked { color: var(--ok); font-size: calc(12px * var(--fz, 1)); }

/* ================================================================ painel de realização */
body.live-mode .top { display: none; }
main.live { padding: 0 14px; gap: 12px; min-height: 100vh; display: flex; flex-direction: column; }
main.live > .lv-body { flex: 1; }
.ic { display: block; flex: none; }

/* ---- cabeçalho ---- */
.lv-head { display: flex; align-items: center; gap: 14px; padding: 12px 6px; border-bottom: 1px solid var(--line); flex-wrap: wrap; position: sticky; top: 0; z-index: 5; background: var(--bg); }
.lv-brand { display: flex; align-items: center; gap: 10px; padding-right: 18px; border-right: 1px solid var(--line); }
.lv-brand strong { display: block; font: 700 calc(26px * var(--fz, 1))/1 var(--cond); letter-spacing: .02em; }
.lv-brand small { display: block; font: 600 calc(10px * var(--fz, 1)) var(--cond); letter-spacing: .14em; color: var(--muted); margin-top: 3px; }
.lv-logo { width: 38px; height: 38px; border-radius: 10px 10px 10px 2px; background: linear-gradient(135deg, #3b82f6, #1d4ed8); box-shadow: inset -8px -8px 0 rgba(0,0,0,.18); }
.lv-ev { display: flex; align-items: center; gap: 12px; background: transparent; text-align: left; padding: 4px 8px; max-width: 44vw; }
.lv-ev-t { min-width: 0; }
.lv-ev-t strong { display: block; font: 600 calc(22px * var(--fz, 1))/1.15 var(--cond); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-ev-t small { display: block; color: var(--muted); font-size: calc(14px * var(--fz, 1)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-caret { color: var(--muted); display: grid; place-items: center; border: 1px solid var(--line); border-radius: 6px; padding: 4px; }
.lv-studio { display: flex; align-items: center; gap: 10px; padding: 7px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); }
.lv-studio strong { display: block; font: 600 calc(15px * var(--fz, 1))/1.1 var(--cond); }
.lv-studio small { display: block; font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.lv-studio-dot { width: 18px; height: 18px; border-radius: 50%; background: var(--muted); }
.lv-studio.ok strong { color: #4ade80; } .lv-studio.ok .lv-studio-dot { background: var(--ok); box-shadow: 0 0 10px rgba(25,195,125,.6); }
.lv-studio.warn strong { color: #fbbf24; } .lv-studio.warn .lv-studio-dot { background: var(--warn); }
.lv-studio.err strong { color: #ff7b81; } .lv-studio.err .lv-studio-dot { background: var(--err); }
.lv-direct { display: flex; align-items: center; gap: 12px; text-align: left; padding: 7px 16px; border-radius: 8px; background: var(--panel); border: 1px solid var(--line); color: var(--muted); }
.lv-direct strong { display: block; font: 600 calc(15px * var(--fz, 1))/1.1 var(--cond); }
.lv-direct small { display: block; font: 600 calc(15px * var(--fz, 1))/1.1 var(--cond); font-variant-numeric: tabular-nums; }
.lv-direct-ic { width: 22px; height: 22px; border-radius: 50%; border: 3px solid currentColor; }
.lv-direct.idle { color: var(--text); border-color: #7a1f26; }
.lv-direct.idle .lv-direct-ic { background: #d3202c; border-color: #d3202c; }
.lv-direct.rec { background: #d3202c; border-color: #d3202c; color: #fff; }
.lv-direct.rec .lv-direct-ic { border-color: #fff; background: radial-gradient(circle, #fff 0 35%, transparent 40%); animation: lv-blink 1.6s infinite; }
.lv-direct.pause { background: #8a5a0b; border-color: var(--warn); color: #fff; }
.lv-direct.done { color: var(--text); }
@keyframes lv-blink { 50% { opacity: .35; } }
.lv-clock strong { display: block; font: 600 calc(24px * var(--fz, 1))/1 var(--cond); font-variant-numeric: tabular-nums; }
.lv-clock small { display: block; color: var(--muted); font-size: calc(14px * var(--fz, 1)); margin-top: 3px; }
.lv-lay small { display: block; font-size: calc(12px * var(--fz, 1)); color: var(--muted); margin-bottom: 3px; }
.lv-lay div { display: flex; gap: 4px; }
.lv-lay button { width: 28px; height: 28px; padding: 0; background: transparent; border: 1px solid var(--line); color: var(--text); font-weight: 600; }
.lv-lay button.on { background: var(--accent); border-color: var(--accent); }
.lv-panic { background: transparent; border: 1px solid #7a1f26; color: #ff8a8f; font-weight: 600; padding: 8px 12px; }
.lv-panic:hover { background: var(--err); color: #fff; }
.lv-user { display: flex; align-items: center; gap: 8px; background: transparent; padding: 4px; }
.lv-uav { width: 30px; height: 30px; border-radius: 50%; background: var(--accent); display: grid; place-items: center; font-weight: 700; font-size: calc(13px * var(--fz, 1)); }
.lv-uname { font-size: calc(14px * var(--fz, 1)); }
.lv-user .lv-caret { border: 0; padding: 0; }
.lv-banners { display: grid; gap: 6px; }
.lv-banners:empty { display: none; }

/* ---- botões ---- */
.lv-icon { display: grid; place-items: center; padding: 6px; background: transparent; color: var(--text); border-radius: 8px; }
.lv-icon.box { border: 1px solid var(--line); background: var(--panel2); padding: 8px; }
.lv-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: var(--panel2); border: 1px solid var(--line); color: var(--text); font: 500 calc(15px * var(--fz, 1)) var(--cond); padding: 9px 14px; border-radius: 8px; white-space: nowrap; }
.lv-btn.sm { padding: 6px 12px; font-size: calc(15px * var(--fz, 1)); }
.lv-btn.big { padding: 12px 20px; font-size: calc(17px * var(--fz, 1)); font-weight: 600; }
.lv-btn.green { background: var(--ok); border-color: var(--ok); color: #fff; }
.lv-btn.red { background: var(--err); border-color: var(--err); color: #fff; }
.lv-btn.blue { background: var(--accent); border-color: var(--accent); color: #fff; }
.lv-btn kbd { font: 600 calc(11px * var(--fz, 1)) ui-monospace, monospace; background: rgba(0,0,0,.25); padding: 1px 5px; border-radius: 4px; }
.lv-send { display: inline-grid; justify-items: center; gap: 0; padding: 8px 14px; font: 500 calc(14px * var(--fz, 1))/1.25 var(--cond); color: #fff; border-radius: 8px;
  background: color-mix(in srgb, var(--c) 22%, var(--panel)); border: 1px solid var(--c); }
.lv-send strong { font-size: calc(15px * var(--fz, 1)); }
.lv-send.plain { --c: var(--line); background: var(--panel2); }
.lv-menu { position: fixed; z-index: 30; min-width: 220px; background: var(--panel2); border: 1px solid var(--line); border-radius: 10px; padding: 6px; display: grid; box-shadow: 0 12px 30px rgba(0,0,0,.5); }
.lv-menu button { background: transparent; text-align: left; padding: 8px 12px; border-radius: 6px; font-size: calc(14px * var(--fz, 1)); }
.lv-menu button:hover:not(:disabled), .lv-menu button:focus { background: #1b2740; outline: none; }
.lv-menu .danger-t { color: #ff8a8f; }
.lv-menu hr { border: 0; border-top: 1px solid var(--line); margin: 4px 0; width: 100%; }

/* ---- saídas ---- */
.lv-outs { display: grid; grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); gap: 12px; align-items: start; } /* --cols: o painel equilibra as linhas (4 saídas → 4 ou 2×2, nunca 3+1) */
.lv-outs-sec { padding: 10px 12px 12px; }
.lv-outs-sec .lv-hd h2, .lv-final .lv-hd h2 { font-size: calc(17px * var(--fz, 1)); }
.lv-out { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 12px; display: grid; gap: 10px; align-content: start; min-width: 0; container-type: inline-size; }
.lv-out.sel { border-color: var(--c); box-shadow: 0 0 0 1px var(--c); }
.lv-out-hd { display: flex; align-items: center; gap: 10px; min-width: 0; }
.lv-out-hd strong { font: 600 calc(17px * var(--fz, 1)) var(--cond); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-dot { width: 14px; height: 14px; border-radius: 50%; background: var(--c); flex: none; }
.lv-res { font-size: calc(12px * var(--fz, 1)); color: var(--muted); white-space: nowrap; }
.lv-out-btns { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; }
.lv-status { font-size: calc(12px * var(--fz, 1)); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-height: 1.4em; }
.lv-status.ok { color: #6be3a2; } .lv-status.warn { color: #ffd28a; } .lv-status.err { color: #ff8a8d; }
.lv-final { border-width: 2px; padding: 10px 12px 12px; }
.lv-final.on { border-color: var(--err); }
.lv-tally { display: none; background: var(--err); color: #fff; font: 700 calc(12px * var(--fz, 1)) var(--cond); letter-spacing: .06em; padding: 4px 10px; border-radius: 999px; }
.lv-tally.on { display: inline-block; }
.lv-screen { position: relative; aspect-ratio: 16 / 9; border-radius: 8px; overflow: hidden; border: 2px solid var(--line); }
.lv-screen.on { border-color: var(--err); }
.lv-screen.checker { background: repeating-conic-gradient(#1c2434 0% 25%, #121826 0% 50%) 0 0 / 18px 18px; }
.lv-screen.cam { background: radial-gradient(ellipse at 50% 120%, #4b4f5c 0%, #2a2f3b 45%, #161b25 100%); }
.lv-screen.cam::before { content: ''; position: absolute; left: 32%; bottom: 0; width: 36%; height: 68%; border-radius: 45% 45% 0 0; background: #555b6b; opacity: .55; }
.lv-mon { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: transparent; pointer-events: none; }

/* ---- colunas e secções ---- */
.lv-body { display: grid; gap: 12px; align-content: start; }
.lv-lrow { display: grid; gap: 12px; align-items: start; }
.lv-col { display: grid; gap: 12px; align-content: start; min-width: 0; }
.lv-card { min-width: 0; display: grid; }
.lv-sec { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; align-content: start; container-type: inline-size; }
.lv-hd { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lv-hd h2 { margin: 0; font: 600 calc(22px * var(--fz, 1)) var(--cond); letter-spacing: .03em; text-transform: uppercase; color: var(--text); }
.lv-hd-ic { color: var(--text); }
.lv-count { font: 600 calc(14px * var(--fz, 1)) var(--cond); background: var(--panel2); border: 1px solid var(--line); border-radius: 6px; padding: 2px 9px; }
.lv-select { background: var(--input); min-width: 170px; }
.lv-search { display: flex; align-items: center; gap: 8px; margin: 0; padding: 0 12px; background: var(--input); border: 1px solid var(--line); border-radius: 8px; color: var(--muted); }
.lv-search input { border: 0; background: transparent; padding: 10px 0; font-size: calc(15px * var(--fz, 1)); }
.lv-search input:focus { outline: none; }
.lv-list { display: grid; }
.lv-empty { color: var(--muted); padding: 14px 4px; font-size: calc(14px * var(--fz, 1)); }
.lv-sub { margin: 4px 0 0; font: 600 calc(14px * var(--fz, 1)) var(--cond); letter-spacing: .04em; text-transform: uppercase; color: var(--text); }
.lv-row { display: grid; align-items: center; gap: 12px; padding: 10px 6px; border-bottom: 1px solid var(--line); border-radius: 6px; min-width: 0; }
.lv-row:last-child { border-bottom: 0; }
.lv-row.onair { background: color-mix(in srgb, var(--accent) 12%, transparent); }
.lv-row.dragging { opacity: .5; }
.lv-main { min-width: 0; display: grid; gap: 3px; }
.lv-t { font: 600 calc(17px * var(--fz, 1))/1.2 var(--cond); overflow-wrap: anywhere; }
.lv-t.clamp { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lv-s { font-size: calc(13px * var(--fz, 1)); color: var(--muted); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.lv-no { font-size: calc(12px * var(--fz, 1)); color: var(--warn); }
.lv-grip { color: var(--muted); cursor: grab; display: grid; place-items: center; width: 18px; }
.lv-grip.off { cursor: default; }

/* botões por saída nas linhas */
.lv-gfx { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.lv-g { min-width: 60px; padding: 7px 10px; border-radius: 6px; background: transparent; border: 1.5px solid var(--c); color: var(--c); font: 600 calc(14px * var(--fz, 1))/1.1 var(--cond); display: grid; justify-items: center; }
.lv-g small { font-size: calc(11px * var(--fz, 1)); font-weight: 600; letter-spacing: .02em; color: var(--muted); }
.lv-g:hover { background: color-mix(in srgb, var(--c) 15%, transparent); }
.lv-g.on { background: var(--c); color: #fff; }
.lv-g.on small { color: #fff; }
.lv-gfx.two .lv-g { min-width: 70px; padding: 5px 8px; }

/* oradores */
.lv-row.sp { grid-template-columns: auto auto minmax(0, 1fr) auto 136px 40px 40px 48px 36px; } /* grip, foto, nome, GFX, Lançar, 👁, falar, tecla, ⋮ (larguras fixas: as equipas alinham pelo mesmo sítio) */
.lv-av { width: 58px; height: 58px; border-radius: 8px; object-fit: cover; background: var(--panel2); }
.lv-av.none { display: grid; place-items: center; font: 700 calc(18px * var(--fz, 1)) var(--cond); color: var(--muted); border: 1px solid var(--line); }
.lv-key { min-width: 44px; height: 40px; display: grid; place-items: center; border-radius: 8px; background: var(--panel2); border: 1px solid var(--line); font: 700 calc(16px * var(--fz, 1)) var(--cond); }
.lv-key.on { background: var(--accent); border-color: var(--accent); }
.lv-key.none { color: var(--muted); font-weight: 400; }
.lv-other { display: grid; gap: 4px; padding-top: 6px; border-top: 1px dashed var(--line); }

/* ordem de trabalhos */
.lv-nextbar { display: flex; align-items: center; gap: 10px; padding: 8px 10px; background: var(--input); border: 1px solid var(--line); border-radius: 8px; }
.lv-next-t { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: calc(14px * var(--fz, 1)); }
.lv-row.it { grid-template-columns: auto auto minmax(0, 1fr) auto auto auto auto auto; }
.lv-num { width: 54px; height: 54px; padding: 0; background: var(--input); border: 1px solid var(--line); border-radius: 8px; font: 700 calc(22px * var(--fz, 1)) var(--cond); color: var(--text); }
.lv-row.it.passed .lv-num { background: var(--ok); border-color: var(--ok); color: #04170e; }
.lv-row.it.passed { background: rgba(25, 195, 125, .08); }
.lv-row.it.passed .lv-t { color: #a9e8c6; }
.lv-row.it.current { box-shadow: inset 3px 0 0 var(--ok); }
.lv-sec-name { max-width: 220px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-badge { font: 600 calc(11px * var(--fz, 1)) var(--cond); letter-spacing: .05em; padding: 2px 8px; border-radius: 4px; border: 1px solid var(--line); color: var(--muted); }
.lv-badge.cur { background: var(--ok); border-color: var(--ok); color: #fff; }
.lv-badge.done { color: #6be3a2; border-color: #1f5a3f; }
.lv-badge.next { color: #93b8ff; border-color: #274a8a; }
.lv-done { padding: 2px 8px; font-size: calc(12px * var(--fz, 1)); background: #11281d; color: #6be3a2; border: 1px solid #1f5a3f; border-radius: 4px; }
.lv-done.undo { background: transparent; color: var(--muted); border-color: var(--line); }
.lv-thumb { position: relative; overflow: hidden; border-radius: 6px; flex: none; border: 1px solid var(--line);
  background: radial-gradient(ellipse at 50% 120%, #3b3f4c 0%, #1d2230 70%); }
.lv-thumb .or-root { pointer-events: none; }

/* comentários */
.lv-qc { display: grid; gap: 8px; }
.lv-qc textarea { font: calc(15px * var(--fz, 1))/1.4 ui-monospace, monospace; resize: vertical; }
.lv-qc-row { display: grid; grid-template-columns: 1fr 1.2fr; gap: 8px; }
.lv-inp { display: flex; align-items: center; gap: 8px; margin: 0; padding: 0 10px; background: var(--input); border: 1px solid var(--line); border-radius: 6px; color: var(--muted); }
.lv-inp input { border: 0; background: transparent; padding: 10px 0; }
.lv-inp input:focus { outline: none; }
.lv-qc-send { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; }
.lv-row.cm { grid-template-columns: auto auto minmax(0, 1fr) auto auto; }
.lv-quote { font: 700 calc(40px * var(--fz, 1))/0.6 Georgia, serif; color: var(--text); padding-top: 14px; }
.lv-mini { display: flex; gap: 4px; }
.lv-mini .lv-icon.box { padding: 6px; }

/* tempos */
.lv-row.tm { grid-template-columns: auto auto 1fr auto auto; padding: 12px 6px; }
.lv-tm-pub { display: grid; grid-template-columns: auto 136px; gap: 8px; align-items: center; }
.lv-row.tm.running { background: rgba(25, 195, 125, .07); }
.lv-sw { width: 52px; height: 52px; border-radius: 6px; }
.lv-tm-name { font: 600 calc(22px * var(--fz, 1)) var(--cond); min-width: 70px; }
.lv-time { font: 600 calc(40px * var(--fz, 1))/1 ui-monospace, "SF Mono", Menlo, monospace; font-variant-numeric: tabular-nums; text-align: center; letter-spacing: .02em; }
.lv-time.over { color: var(--err); }
.lv-tm-btns { display: flex; gap: 6px; }
.lv-tb { min-width: 52px; height: 46px; display: grid; place-items: center; padding: 0 10px; background: var(--panel2); border: 1px solid var(--line); border-radius: 8px; font: 600 calc(16px * var(--fz, 1)) var(--cond); color: var(--text); }
.lv-tb.go { background: var(--ok); border-color: var(--ok); min-width: 62px; color: #fff; }
.lv-tb.go.on { background: var(--warn); border-color: var(--warn); }

/* composições */
.lv-cp { display: grid; gap: 12px; }
.lv-cp-main { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 14px; align-items: start; }
.lv-cp-prev .or-root { transform-origin: 0 0; pointer-events: none; }
.lv-cp-outs { display: grid; gap: 8px; }
.lv-cp-out { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 14px; border: 1px solid color-mix(in srgb, var(--c) 55%, var(--line)); border-radius: 8px; background: var(--panel2); }
.lv-cp-on { flex: 1; font: 500 calc(16px * var(--fz, 1)) var(--cond); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-st { min-width: 88px; padding: 7px 10px; font: 700 calc(14px * var(--fz, 1)) var(--cond); background: #1b2740; color: var(--text); border-radius: 6px; }
.lv-st.on { background: var(--ok); }
.lv-cp-info { display: grid; gap: 4px; }
.lv-cp-name { display: flex; align-items: center; gap: 6px; }
.lv-cp-name strong { font: 600 calc(20px * var(--fz, 1)) var(--cond); }
.lv-cp-btns { display: grid; grid-template-columns: 1.3fr 1fr 1fr auto; gap: 10px; }
.lv-cards { display: grid; gap: 10px; }
.lv-cc { background: var(--panel2); border: 1px solid var(--line); border-radius: 10px; padding: 14px; display: grid; gap: 12px; cursor: pointer; }
.lv-cc.sel { border-color: var(--accent); }
.lv-cc-hd { display: flex; align-items: center; gap: 14px; }
.lv-cc-n { font: 700 calc(34px * var(--fz, 1))/1 var(--cond); color: var(--warn); min-width: 28px; }
.lv-cc-t { flex: 1; min-width: 0; display: grid; }
.lv-cc-t strong { font: 600 calc(20px * var(--fz, 1)) var(--cond); }
.lv-cc-t span { color: var(--muted); font-size: calc(15px * var(--fz, 1)); }
.lv-oas { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.lv-oa { display: grid; justify-items: center; gap: 2px; padding: 10px; background: transparent; border: 2px solid var(--c); border-radius: 8px; color: var(--text); }
.lv-oa strong { font: 700 calc(17px * var(--fz, 1)) var(--cond); letter-spacing: .03em; }
.lv-oa span { font: 400 calc(15px * var(--fz, 1)) var(--cond); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-oa:hover { background: color-mix(in srgb, var(--c) 14%, transparent); }
.lv-oa.on { background: var(--c); color: #fff; }

/* histórico */
.lv-hist { display: flex; align-items: center; gap: 22px; padding: 12px 18px; margin-bottom: 12px; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; overflow-x: auto; white-space: nowrap; font-size: calc(14px * var(--fz, 1)); }
.lv-hist-t { display: flex; align-items: center; gap: 8px; padding-right: 18px; border-right: 1px solid var(--line); font-family: var(--cond); }
.lv-h { display: inline-flex; gap: 8px; align-items: center; color: var(--muted); }
.lv-h-time { color: var(--text); font-variant-numeric: tabular-nums; }
.lv-hdot { width: 12px; height: 12px; border-radius: 50%; flex: none; }

/* definições */
.lv-set-outs { display: grid; gap: 2px; }
.lv-set-outs .lv-dot { width: 12px; height: 12px; }

/* ---- ecrãs mais estreitos ---- */
@media (max-width: 1150px) {
  .lv-lrow { grid-template-columns: 1fr !important; }
  .lv-cp-main { grid-template-columns: 1fr; }
  .lv-ev { max-width: 100%; }
}
@media (max-width: 700px) {
  main.live { padding: 0 8px; }
  .lv-outs { grid-template-columns: 1fr; }
  .lv-brand { display: none; }
  .lv-cp-btns { grid-template-columns: 1fr 1fr; }
}
/* secção estreita: botões das saídas passam para baixo do texto */
@container (max-width: 780px) {
  .lv-row.sp { grid-template-columns: auto auto minmax(0, 1fr) auto auto auto auto; } /* 1.ª linha: 👁, falar, tecla, ⋮ */
  /* 2.ª linha: «Lançar» encostado à direita (136 px) e GFX logo à esquerda dele — igual em oradores e equipas */
  .lv-row.sp > .lv-it-gfx, .lv-row.team > .lv-it-gfx { grid-row: 2; grid-column: 1 / -1; justify-self: end; margin-right: 144px; }
  .lv-row.sp > .lv-launch, .lv-row.team > .lv-launch { grid-row: 2; grid-column: 1 / -1; justify-self: end; width: 136px; }
  .lv-row.team { grid-template-columns: auto minmax(0, 1fr) auto; }
  .lv-row.it { grid-template-columns: auto auto minmax(0, 1fr) auto; }
  .lv-row.it > .lv-thumb { display: none; }
  .lv-row.it > .lv-gfx { grid-column: 3 / -1; grid-row: 2; justify-content: flex-start; }
  .lv-row.cm { grid-template-columns: auto auto minmax(0, 1fr) auto; }
  .lv-row.cm > .lv-gfx { grid-column: 3 / -1; grid-row: 2; justify-content: flex-start; }
  .lv-row.tm { grid-template-columns: auto auto 1fr; }
  .lv-row.tm > .lv-tm-btns, .lv-row.tm > .lv-gfx, .lv-row.tm > .lv-tm-pub { grid-column: 1 / -1; justify-content: flex-start; }
  .lv-row.tm > .lv-tm-pub { justify-content: start; }
  .lv-qc-row { grid-template-columns: 1fr; }
}

/* registo da reunião */
.lv-mic { color: var(--muted); }
.lv-mic.on { background: #d3202c; border-color: #d3202c; color: #fff; }
.lv-mic.off { opacity: .45; }
.lv-log-hd { display: flex; align-items: center; gap: 8px; margin: 6px 0 10px; }
.lv-log { display: grid; gap: 4px; max-height: 58vh; overflow: auto; }
.lv-log-row { display: grid; grid-template-columns: 92px 70px 100px minmax(0, 1fr) 40px auto; gap: 8px; align-items: center; padding: 2px 4px; border-left: 3px solid var(--line); }
.lv-log-row input { padding: 5px 8px; font-size: calc(14px * var(--fz, 1)); }
.lv-log-time { font-variant-numeric: tabular-nums; }
.lv-log-rec { font: calc(12px * var(--fz, 1)) ui-monospace, monospace; color: var(--muted); }
.lv-log-kind { font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.lv-log-pt { font-size: calc(12px * var(--fz, 1)); color: var(--warn); }
.lv-log-row.k-item, .lv-log-row.k-item_done { border-left-color: var(--warn); }
.lv-log-row.k-speaker { border-left-color: var(--accent); }
.lv-log-row.k-vote { border-left-color: var(--ok); }
.lv-log-row.k-start, .lv-log-row.k-end, .lv-log-row.k-pause, .lv-log-row.k-resume { border-left-color: var(--err); }
@media (max-width: 700px) { .lv-log-row { grid-template-columns: 80px 1fr auto; } .lv-log-rec, .lv-log-kind, .lv-log-pt { display: none; } }

/* cartões minimizados e disposição editável */
.lv-sec.min > :not(.lv-hdbox):not(.lv-hd) { display: none; }
.lv-sec.min { padding-bottom: 10px; }
.lv-out.min > .lv-screen, .lv-out.min > .lv-status { display: none; }
.lv-icon.mini { padding: 2px; color: var(--muted); }
.lv-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.lv-chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--line); font: 500 calc(13px * var(--fz, 1)) var(--cond); color: var(--muted); }
.lv-chip .lv-dot { width: 9px; height: 9px; }
.lv-chip b { color: #fff; font-size: calc(11px * var(--fz, 1)); letter-spacing: .04em; }
.lv-chip.on { border-color: var(--c); color: var(--text); background: color-mix(in srgb, var(--c) 18%, transparent); }
.lv-tray { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; border: 1px dashed var(--accent); border-radius: 12px; background: color-mix(in srgb, var(--accent) 8%, var(--panel)); }
.lv-hidden-card { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 8px; background: var(--panel2); border: 1px solid var(--line); cursor: grab; font: 500 calc(14px * var(--fz, 1)) var(--cond); }
.lv-card.editing { outline: 1px dashed var(--accent); outline-offset: 3px; border-radius: 12px; }
.lv-card.editing > section { pointer-events: none; opacity: .85; }
.lv-card.dragging { opacity: .4; }
.lv-editbar { display: flex; align-items: center; gap: 8px; padding: 6px 10px; margin-bottom: 6px; background: var(--accent); color: #fff; border-radius: 8px; cursor: grab; font-family: var(--cond); }
.lv-editbar .small { color: #fff; border-color: rgba(255,255,255,.5); padding: 2px 8px; }
.lv-body.editing .lv-col { min-height: 90px; padding: 6px; border: 1px dashed var(--line); border-radius: 12px; }
.lv-colbar { display: flex; align-items: center; gap: 4px; font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.lv-colbar .small { padding: 2px 8px; }
.lv-drop-empty { display: grid; place-items: center; min-height: 80px; color: var(--muted); font-size: calc(13px * var(--fz, 1)); border-radius: 8px; background: rgba(255,255,255,.02); }
.lv-ph-line { height: 4px; border-radius: 2px; background: var(--accent); }
.lv-addrow { justify-self: start; display: inline-flex; align-items: center; gap: 6px; background: transparent; border: 1px dashed var(--line); color: var(--muted); }
.dropzone { display: grid; gap: 4px; place-items: center; text-align: center; padding: 18px; margin-bottom: 8px; border: 2px dashed var(--line); border-radius: 10px; color: var(--text); }
.dropzone.over { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); }
.tabs { flex-wrap: wrap; margin: 12px 0 10px; }
/* saída de cada quadro */
.lv-target { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: transparent; border: 1px dashed var(--line); color: var(--muted); font: 500 calc(14px * var(--fz, 1)) var(--cond); }
.lv-target.on { border: 1.5px solid var(--c); color: var(--text); background: color-mix(in srgb, var(--c) 14%, transparent); }
.lv-target .lv-dot { width: 10px; height: 10px; }
.lv-caret-s { font-size: calc(11px * var(--fz, 1)); opacity: .7; }
.lv-gfx.single .lv-g { min-width: 96px; padding: 9px 14px; font-size: calc(15px * var(--fz, 1)); }

/* seletor visual de desenhos */
.dz-grid { display: grid; grid-template-columns: repeat(auto-fill, 280px); gap: 12px; margin-top: 10px; }
.dz-card { display: grid; gap: 6px; align-content: start; }
.dz-pick { display: grid; gap: 8px; padding: 8px; text-align: left; background: var(--panel2); border: 2px solid var(--line); border-radius: 10px; position: relative; }
.dz-pick:hover:not(:disabled) { border-color: var(--accent); filter: none; }
.dz-card.on .dz-pick { border-color: var(--ok); box-shadow: 0 0 0 1px var(--ok); }
.dz-thumb { position: relative; overflow: hidden; border-radius: 6px; max-width: 100%; background: radial-gradient(ellipse at 50% 120%, #5b606d 0%, #2e3340 50%, #191d26 100%); }
.dz-thumb .or-root { pointer-events: none; }
.dz-name { display: grid; gap: 1px; min-width: 0; }
.dz-name strong { font: 600 calc(15px * var(--fz, 1)) var(--cond); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dz-name small { color: var(--muted); font-size: calc(12px * var(--fz, 1)); }
.dz-badge { position: absolute; top: 14px; right: 14px; background: var(--ok); color: #fff; font: 700 calc(11px * var(--fz, 1)) var(--cond); padding: 3px 8px; border-radius: 999px; }
.dz-badge.warn { background: var(--warn); }
.dz-sub { margin: 16px 0 0; font: 600 calc(14px * var(--fz, 1)) var(--cond); text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.dz-card .small { justify-self: start; }
.dz-fields { display: flex; gap: 14px; flex-wrap: wrap; align-items: start; }
.dz-field { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: center; text-align: left; padding: 6px 12px 6px 6px; background: var(--panel2); border: 1px solid var(--line); border-radius: 10px; min-width: 300px; }
.dz-field:hover { border-color: var(--accent); filter: none; }
.dz-field small { color: var(--accent); }
.lv-design { display: inline-flex; align-items: center; gap: 6px; max-width: 220px; padding: 5px 10px; border-radius: 8px; background: transparent; border: 1px solid var(--line); color: var(--muted); font: 500 calc(14px * var(--fz, 1)) var(--cond); }
.lv-design span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-design:hover { color: var(--text); border-color: var(--accent); }

/* equipas */
.lv-row.team { grid-template-columns: auto minmax(0, 1fr) auto auto; background: color-mix(in srgb, var(--c) 12%, transparent); border-left: 4px solid var(--c); margin-top: 6px; }
.lv-team-sw { min-width: 58px; height: 46px; display: grid; place-items: center; padding: 0 8px; border-radius: 8px; background: var(--c); color: #fff; font: 700 calc(18px * var(--fz, 1)) var(--cond); }
.lv-row.sp.in-team { padding-left: 22px; }
.lv-team-none { margin-top: 8px; padding: 6px; font: 600 calc(13px * var(--fz, 1)) var(--cond); color: var(--muted); text-transform: uppercase; letter-spacing: .05em; border-top: 1px dashed var(--line); }
.teams-box { display: grid; gap: 6px; margin: 6px 0 10px; }
.team-edit { display: grid; grid-template-columns: 1.6fr .6fr 60px auto; gap: 6px; align-items: center; }
.team-edit input[type=color] { height: 36px; padding: 2px; }
.srow-team { width: 10px; height: 10px; border-radius: 50%; flex: none; }

/* categorias da base de oradores */
.pp-cats { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0; }
.pp-cat { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: transparent; border: 1px solid var(--line); color: var(--muted); font-size: calc(13px * var(--fz, 1)); }
.pp-cat small { background: var(--panel2); border-radius: 999px; padding: 0 6px; font-size: calc(11px * var(--fz, 1)); }
.pp-cat.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.pp-cat.on small { background: rgba(0,0,0,.25); }
.pp-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 3px; }
.pp-tag { font-size: calc(11px * var(--fz, 1)); padding: 1px 7px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 20%, transparent); color: #b9cdf7; }
.pp-pick .pp-tags { margin-top: 4px; }

/* base de ordens de trabalhos */
.ag-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 10px; margin-top: 10px; }
.ag-card { display: grid; gap: 4px; background: var(--panel2); border-radius: 10px; padding: 12px; }
.ag-card strong { font: 600 calc(17px * var(--fz, 1)) var(--cond); }
.ag-first { font-size: calc(13px * var(--fz, 1)); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ag-card .tools { margin-top: 6px; }
.ag-pickbox { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 12px; margin: 8px 0; }
.ag-list { display: grid; gap: 6px; align-content: start; max-height: 50vh; overflow: auto; }
.ag-pick { display: grid; gap: 2px; text-align: left; background: var(--panel2); border: 2px solid transparent; padding: 8px 12px; }
.ag-pick small { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ag-pick.on { border-color: var(--accent); }
.ag-preview { display: grid; gap: 6px; align-content: start; max-height: 50vh; overflow: auto; padding: 10px; border: 1px dashed var(--line); border-radius: 8px; min-height: 120px; }
.ag-pv-row { display: grid; grid-template-columns: 34px 1fr; gap: 8px; font-size: calc(13px * var(--fz, 1)); }
.ag-pv-row small { display: block; color: var(--muted); font-size: calc(11px * var(--fz, 1)); text-transform: uppercase; }
.ag-num { font: 700 calc(15px * var(--fz, 1)) var(--cond); color: var(--warn); }
@media (max-width: 700px) { .ag-pickbox { grid-template-columns: 1fr; } }

/* registo: linha do tempo */
.lv-log-hd .lv-log-filter { display: inline-flex; gap: 6px; align-items: center; font-size: calc(13px * var(--fz, 1)); color: var(--muted); margin: 0; }
.lv-log-filter input { width: auto; }
.lv-log-row.k-onair, .lv-log-row.k-offair { border-left-color: #8b7cf6; opacity: .9; }
.lv-log-row.k-onair .lv-log-kind, .lv-log-row.k-offair .lv-log-kind { color: #b7aef7; }
.lv-log-group { margin: 10px 0 2px; font: 600 calc(13px * var(--fz, 1)) var(--cond); text-transform: uppercase; letter-spacing: .04em; color: var(--warn); }
.lv-stack-tag { font: 600 calc(11px * var(--fz, 1)) var(--cond); color: #b7aef7; border: 1px solid #4a3f8a; border-radius: 999px; padding: 1px 7px; white-space: nowrap; }
.lv-stack-opt { display: inline-flex; align-items: center; gap: 4px; margin: 0 0 0 auto; font-size: calc(12px * var(--fz, 1)); color: var(--muted); }
.lv-stack-opt input { width: auto; }
.lv-set-outs .ed-f.check { display: flex; align-items: center; gap: 6px; }

/* ---------- estado das saídas (palavra com cor) e seletor de GFX ---------- */
.lv-st-w { font: 600 calc(12px * var(--fz, 1)) var(--cond); letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: 4px; background: #1b2740; color: var(--muted); white-space: nowrap; }
.lv-st-w.air { background: var(--err); color: #fff; }
.lv-st-w.warn { background: #3a2c12; color: #ffd28a; }
.lv-st-w.off, .lv-st-w.err { background: #3a1d22; color: #ffb3b6; }
.lv-st-w.ready { background: #13281d; color: #6be3a2; }
.lv-mi { display: flex; align-items: center; gap: 8px; width: 100%; }
.lv-mi-ck { width: 12px; color: var(--ok); }
.lv-mi-n { flex: 1; }
.lv-mi .lv-dot { width: 10px; height: 10px; }
.lv-target .lv-dot.live { box-shadow: 0 0 0 3px color-mix(in srgb, var(--err) 45%, transparent); background: var(--err); }

/* ---------- pré-visualização e no ar ---------- */
.lv-pp { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@container (max-width: 400px) { .lv-pp { grid-template-columns: 1fr; } }
.lv-pp-mon { display: grid; gap: 6px; min-width: 0; }
.lv-pp-hd { display: flex; align-items: center; gap: 8px; min-height: 24px; }
.lv-pp-tag { font: 700 calc(13px * var(--fz, 1)) var(--cond); letter-spacing: .08em; padding: 3px 8px; border-radius: 4px; white-space: nowrap; }
@container (max-width: 640px) { .lv-pp-note { display: none; } }
.lv-pp-tag.pvw { background: #13281d; color: #6be3a2; border: 1px solid #1f6b40; }
.lv-pp-tag.pgm { background: var(--err); color: #fff; box-shadow: inset 4px 0 0 var(--c, transparent); padding-left: 12px; }
.lv-pp-note { font-size: calc(12px * var(--fz, 1)); color: var(--muted); white-space: nowrap; }
.lv-pp-mon.pvw .lv-screen.ready { border-color: var(--ok); }
.lv-pp-cap { font-size: calc(13px * var(--fz, 1)); color: var(--muted); min-height: 1.4em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-pp-cap strong { color: var(--text); font-weight: 600; }
.lv-pp-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.lv-pp-btns .lv-btn.big { flex: 1; }
.lv-btn:disabled { opacity: .45; cursor: not-allowed; }
.lv-pv-b.on { border-color: var(--ok); color: #6be3a2; background: #13281d; }

/* ---------- botão «Votação» na linha do ponto ---------- */
.lv-vote { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 6px; background: #2a1950; border: 1.5px solid #8b5cf6; color: #e3d8ff; font: 600 calc(15px * var(--fz, 1)) var(--cond); white-space: nowrap; }
.lv-vote:hover { background: #36206a; }
.lv-vote.done { border-color: var(--ok); color: #6be3a2; }
.lv-vote.draft { border-color: var(--warn); color: #ffd28a; }
.irow .tools .vote-tg { font-size: calc(12px * var(--fz, 1)); }
.irow .tools .vote-tg.on, .tools .vote-tg.on { background: #3a1d22; border-color: var(--err); color: #ffb3b6; }

/* ---------- janela de votação ---------- */
.modal-box.vm { width: min(1180px, 100%); padding: 0; display: flex; flex-direction: column; overflow: hidden; }
.modal-box.vm > .vm-grid { flex: 1; overflow: auto; min-height: 0; }
.vm-hd { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.vm-hd h3 { margin: 0; font: 600 calc(22px * var(--fz, 1)) var(--cond); }
.vm-status { display: flex; gap: 6px; margin-top: 4px; flex-wrap: wrap; }
.vm-badge { font: 600 calc(12px * var(--fz, 1)) var(--cond); letter-spacing: .05em; text-transform: uppercase; padding: 2px 8px; border-radius: 4px; background: #1b2740; color: var(--muted); }
.vm-badge.saved { background: #13281d; color: #6be3a2; }
.vm-badge.draft { background: #3a2c12; color: #ffd28a; }
.vm-badge.air { background: var(--err); color: #fff; box-shadow: inset 4px 0 0 var(--c); padding-left: 10px; }
.vm-point { padding: 10px 18px 0; display: grid; gap: 2px; }
.vm-point strong { font: 600 calc(17px * var(--fz, 1)) var(--cond); }
.vm-point div { color: var(--muted); }
.vm-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(300px, 1fr); gap: 16px; padding: 12px 18px; }
@media (max-width: 900px) { .vm-grid { grid-template-columns: 1fr; } }
.vm-left, .vm-right { display: grid; gap: 10px; align-content: start; min-width: 0; }
.vm-right { background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 12px; }
.vm-lbl { font: 600 calc(12px * var(--fz, 1)) var(--cond); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); margin-top: 4px; }
.vm-tabs { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; }
.vm-tab { padding: 9px 16px; border-radius: 6px; background: var(--panel2); border: 1px solid var(--line); color: var(--muted); font: 600 calc(15px * var(--fz, 1)) var(--cond); }
.vm-tab.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.vm-tab-note { font-size: calc(12px * var(--fz, 1)); color: var(--muted); margin-left: 6px; }
.vm-pane { display: grid; gap: 8px; }
.vm-pane-hd { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.vm-all { padding: 3px 8px; font-size: calc(12px * var(--fz, 1)); border-radius: 4px; background: var(--panel2); border: 1px solid var(--line); color: var(--muted); }
.vm-mems { display: grid; max-height: 46vh; overflow: auto; border: 1px solid var(--line); border-radius: 8px; }
.vm-mem { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 7px 10px; border-bottom: 1px solid var(--line); }
.vm-mem:last-child { border-bottom: 0; }
.vm-mem .lv-av { width: 38px; height: 38px; }
.vm-mem-n { display: grid; min-width: 0; }
.vm-mem-n strong { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vm-mem-n small { color: var(--muted); font-size: calc(12px * var(--fz, 1)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vm-seg { display: flex; gap: 4px; }
.vm-c { padding: 6px 10px; font: 600 calc(13px * var(--fz, 1)) var(--cond); border-radius: 5px; background: transparent; border: 1px solid var(--line); color: var(--muted); }
.vm-c.f { --k: var(--ok); } .vm-c.c { --k: var(--err); } .vm-c.a { --k: var(--warn); } .vm-c.n { --k: #64748b; }
.vm-c:hover { border-color: var(--k); color: var(--text); }
.vm-c.on { background: color-mix(in srgb, var(--k) 22%, transparent); border-color: var(--k); color: #fff; }
.vm-num { width: 64px; text-align: center; font: 600 calc(16px * var(--fz, 1)) ui-monospace, monospace; }
.vm-num.bad { border-color: var(--err) !important; background: #2a1215; }
.vm-quick { display: grid; gap: 8px; }
.vm-q { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel2); }
.vm-step { display: flex; gap: 6px; align-items: center; }
.vm-step button { width: 36px; height: 36px; font-size: calc(18px * var(--fz, 1)); padding: 0; }
.vm-more summary { cursor: pointer; color: var(--muted); font-size: calc(13px * var(--fz, 1)); }
.vm-boxes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.vm-box { border-radius: 8px; padding: 8px; text-align: center; background: var(--panel2); border: 1px solid var(--line); display: grid; }
.vm-box small { font-size: calc(11px * var(--fz, 1)); color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.vm-box b { font: 700 calc(30px * var(--fz, 1)) var(--cond); line-height: 1.1; }
.vm-box.f { border-color: #1f6b40; } .vm-box.f b { color: #6be3a2; }
.vm-box.c { border-color: #6b1a22; } .vm-box.c b { color: #ffb3b6; }
.vm-box.a { border-color: #6b5214; } .vm-box.a b { color: #ffd28a; }
.vm-res { display: grid; gap: 2px; padding: 10px 12px; border-radius: 8px; background: var(--panel2); border: 1px solid var(--line); }
.vm-res strong { font: 700 calc(22px * var(--fz, 1)) var(--cond); letter-spacing: .06em; }
.vm-res small { color: var(--muted); }
.vm-res.approved { background: #10241a; border-color: #1f6b40; } .vm-res.approved strong { color: #6be3a2; }
.vm-res.rejected { background: #2a1215; border-color: #6b1a22; } .vm-res.rejected strong { color: #ffb3b6; }
.vm-res.tie { background: #2a2010; border-color: #6b5214; } .vm-res.tie strong { color: #ffd28a; }
.vm-rule { font-size: calc(11px * var(--fz, 1)); }
.vm-model { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.vm-mod { display: grid; gap: 2px; text-align: left; padding: 8px 10px; border-radius: 8px; background: var(--panel2); border: 1px solid var(--line); color: var(--text); }
.vm-mod small { color: var(--muted); font-size: calc(12px * var(--fz, 1)); }
.vm-mod.on { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.vm-prev { min-height: 60px; max-height: 190px; border-radius: 8px; background: repeating-conic-gradient(#1c2434 0% 25%, #121826 0% 50%) 0 0 / 14px 14px; overflow: hidden; display: grid; place-items: center; }
.vm-outs { display: flex; gap: 6px; flex-wrap: wrap; }
.vm-out { display: grid; justify-items: start; gap: 2px; padding: 7px 10px; min-width: 96px; border-radius: 8px; background: var(--panel2); border: 1.5px solid var(--line); color: var(--text); }
.vm-out .lv-dot { width: 10px; height: 10px; }
.vm-out strong { font: 600 calc(15px * var(--fz, 1)) var(--cond); }
.vm-out.on { border-color: var(--c); background: color-mix(in srgb, var(--c) 16%, var(--panel2)); }
.modal-box.vm > .err-msg { padding: 0 18px; }
.vm-foot { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 12px 18px; border-top: 1px solid var(--line); background: var(--bg); border-radius: 0 0 8px 8px; }
.vm-foot .ghost.danger { color: #ffb3b6; border-color: var(--err); }
.vm-also { width: 100%; text-align: right; margin: 0; }
.vm-confirm { display: flex; gap: 12px; align-items: center; width: 100%; flex-wrap: wrap; }
.vm-confirm > div { display: grid; gap: 2px; }
.vm-warn { color: #ffd28a; }

.lv-pill { padding: 4px 10px; border: 1px solid var(--line); border-radius: 6px; font: 500 calc(14px * var(--fz, 1)) var(--cond); color: var(--text); background: var(--panel2); }
.lv-search.sm input { padding: 6px 0; font-size: calc(14px * var(--fz, 1)); width: 150px; }
/* ---------- ordem de trabalhos: grelha fixa (as colunas ficam iguais em todas as linhas) ---------- */
.lv-row.it2 { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 16px; padding: 10px 12px; margin-bottom: 6px;
  border: 1px solid var(--line); border-left: 4px solid #3a4560; border-radius: 8px; background: var(--panel2); }
.lv-row.it2.cur { border-left-color: var(--ok); }
.lv-row.it2.vote { border-left-color: #8b5cf6; }
.lv-row.it2.done { border-left-color: #2e6b4c; opacity: .85; }
.lv-row.it2.onair { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--err) 55%, transparent); }
.it-l { display: grid; grid-template-columns: auto 48px minmax(0, 1fr) auto; align-items: center; gap: 12px; min-width: 0; }
.it-r { display: grid; grid-template-columns: auto 132px 136px 136px 112px 36px; align-items: center; gap: 8px; justify-content: end; }
.lv-row.it2 .lv-num { width: 48px; height: 48px; display: grid; place-items: center; }
.lv-row.it2.done .lv-num { background: var(--ok); border-color: var(--ok); color: #04170e; }
.lv-row.it2 .lv-t { font: 600 calc(17px * var(--fz, 1)) var(--cond); }
.it-st { display: grid; grid-template-columns: 104px 92px; align-items: center; gap: 8px; }
.lv-badge2 { font: 700 calc(13px * var(--fz, 1)) var(--cond); letter-spacing: .04em; padding: 5px 0; border-radius: 5px; background: #2a3448; color: #c9d1de; white-space: nowrap; text-align: center; }
.lv-badge2.cur { background: var(--ok); color: #04170e; }
.lv-badge2.vote { background: #6d28d9; color: #fff; }
.lv-badge2.done { background: #13281d; color: #6be3a2; border: 1px solid #1f6b40; }
.lv-done2 { display: inline-flex; align-items: center; gap: 6px; background: transparent; border: 0; padding: 4px 2px; color: var(--muted); font: 500 calc(15px * var(--fz, 1)) var(--cond); white-space: nowrap; }
.lv-done2.on { color: #6be3a2; }
.lv-done2:hover { color: var(--text); }
.lv-it-gfx { display: flex; align-items: center; gap: 6px; }
.lv-it-gl { font: 500 calc(14px * var(--fz, 1)) var(--cond); color: var(--muted); }
.lv-gc { padding: 6px 10px; border-radius: 6px; background: transparent; border: 1.5px solid color-mix(in srgb, var(--c) 45%, var(--line)); color: var(--muted); font: 600 calc(14px * var(--fz, 1)) var(--cond); position: relative; white-space: nowrap; }
.lv-gc:hover { color: var(--text); border-color: var(--c); }
.lv-gc.sel { border-color: var(--c); color: #fff; background: color-mix(in srgb, var(--c) 28%, transparent); }
.lv-gc.live::after { content: ''; position: absolute; top: -4px; right: -4px; width: 9px; height: 9px; border-radius: 50%; background: var(--err); box-shadow: 0 0 0 2px var(--panel2); }
.lv-launch, .lv-pvt, .lv-row.it2 .lv-vote { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 40px; padding: 0 10px; border-radius: 6px; font: 600 calc(15px * var(--fz, 1)) var(--cond); white-space: nowrap; width: 100%; }
.lv-launch { background: #15803d; border: 1.5px solid #22c55e; color: #fff; }
.lv-launch:hover { background: #16a34a; }
.lv-launch.off { background: #3a1d22; border-color: var(--err); color: #ffb3b6; }
.lv-pvt { background: transparent; border: 1px solid var(--line); color: var(--text); font-weight: 500; }
.lv-pvt:hover { border-color: #3a4560; }
.lv-pvt.on { border-color: var(--ok); color: #6be3a2; background: #13281d; }
.lv-vote-slot { display: block; }
.it-r > .lv-thumb, .it-r > .dz-thumb { width: 132px; }
.lv-ires { font-size: calc(13px * var(--fz, 1)); font-weight: 600; color: #6be3a2; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.lv-ires.rejected { color: #ff8a8d; } .lv-ires.tie { color: #ffd28a; } .lv-ires.withdrawn, .lv-ires.postponed { color: var(--muted); }
.lv-res-b { padding: 2px 8px; font: 600 calc(12px * var(--fz, 1)) var(--cond); border-radius: 4px; background: transparent; border: 1px solid currentColor; color: inherit; }
.lv-res-b.on { background: var(--err); border-color: var(--err); color: #fff; }
/* cartão mais estreito: estado e botões passam para a linha de baixo, sempre nas mesmas colunas */
@container (max-width: 1340px) { .lv-row.it2 { grid-template-columns: minmax(0, 1fr); } }
@container (max-width: 880px) { .it-r { grid-template-columns: auto 132px 132px 112px 36px; } .it-r > .lv-thumb, .it-r > .dz-thumb { display: none; } }
@container (max-width: 780px) {
  .it-r { grid-template-columns: repeat(3, minmax(0, 1fr)) 36px; justify-content: stretch; }
  .it-r > .lv-it-gfx { grid-column: 1 / -1; flex-wrap: wrap; }
  .it-l { grid-template-columns: auto 40px minmax(0, 1fr); }
  .it-st { grid-column: 3 / -1; }
}
.lv-it-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; padding: 8px 4px 0; border-top: 1px solid var(--line); font: 500 calc(14px * var(--fz, 1)) var(--cond); color: var(--muted); }
.lv-lg { display: inline-flex; align-items: center; gap: 6px; }
.lv-lg i { width: 10px; height: 10px; border-radius: 50%; background: #64748b; }
.lv-lg.cur i { background: var(--ok); } .lv-lg.vote i { background: #8b5cf6; } .lv-lg.done i { background: transparent; border: 2px solid var(--ok); }
.lv-lg-k kbd { font: 600 calc(11px * var(--fz, 1)) ui-monospace, monospace; background: var(--panel2); border: 1px solid var(--line); padding: 1px 6px; border-radius: 4px; color: var(--text); }

/* cabeçalho da saída: o nome tem prioridade; a resolução e a etiqueta encolhem ou saem */
.lv-out-hd strong { flex: 1 1 auto; min-width: 0; }
.lv-out-hd .lv-res, .lv-out-hd .lv-stack-tag { flex: none; }
@container (max-width: 300px) { .lv-out-hd .lv-res { display: none; } }
@container (max-width: 230px) { .lv-out-hd .lv-stack-tag { display: none; } }
/* cabeçalho da ordem de trabalhos: filtro mais estreito para caber numa linha */
.lv-sec .lv-hd .lv-select { min-width: 0; }

/* cabeçalho dos cartões: título + grupo de ferramentas (nunca um botão sozinho numa linha) */
.lv-hd { justify-content: space-between; row-gap: 8px; }
.lv-hd-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.lv-hd-title h2 { white-space: nowrap; }
.lv-hd-tools { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; }
/* barra de topo: em ecrãs até 1500 px, textos secundários saem para caber numa linha */
@media (max-width: 1500px) {
  .lv-head { flex-wrap: nowrap; gap: 10px; }
  .lv-brand small, .lv-studio small, .lv-uname, .lv-lay small { display: none; }
  .lv-brand { padding-right: 10px; }
  .lv-brand strong { font-size: calc(22px * var(--fz, 1)); }
  .lv-ev { max-width: 30vw; }
  .lv-ev-t strong { font-size: calc(19px * var(--fz, 1)); }
  .lv-studio { padding: 6px 10px; }
}
@media (max-width: 1150px) {
  .lv-head { flex-wrap: wrap; }
}

/* equipas, oradores de outros eventos e composições: GFX + «Lançar no ar» */
.lv-row.team { grid-template-columns: auto minmax(0, 1fr) auto 136px 152px 36px; } /* 152 = 👁 + falar + tecla (+ espaços) dos oradores */
.lv-row.team > .lv-icon:last-child { grid-column: 6; }
.lv-row.sp-o { grid-template-columns: auto minmax(0, 1fr) auto 136px; }
.lv-cc-pub { display: grid; grid-template-columns: auto 136px; gap: 8px; align-items: center; justify-content: space-between; }
.lv-cp-pub { display: flex; justify-content: flex-start; }
.lv-cp-btns { grid-template-columns: 1fr 1fr 1fr auto; align-items: stretch; }
.lv-cp-btns .lv-launch, .lv-cp-btns .lv-pvt { height: auto; min-height: 40px; }
@container (max-width: 520px) {
  .lv-cc-pub { grid-template-columns: 1fr; }
  .lv-cp-btns { grid-template-columns: 1fr 1fr; }
}
/* tempos: quando não cabe tudo numa linha, GFX + «Lançar no ar» passam para baixo, à direita */
@container (max-width: 1040px) {
  .lv-row.tm { grid-template-columns: auto auto 1fr auto; }
  .lv-row.tm > .lv-tm-pub { grid-column: 1 / -1; justify-self: end; }
}
@container (max-width: 780px) { .lv-row.team { grid-template-columns: auto minmax(0, 1fr) auto; } } /* depois da regra larga das equipas */
@container (max-width: 780px) { .lv-row.team > .lv-icon:last-child { grid-column: 3; grid-row: 1; } }

/* vídeos: miniatura · nome · Repetir/Som/Pré-visualizar · GFX + «Lançar no ar» */
.lv-row.vd { grid-template-columns: 112px minmax(0, 1fr) auto auto; padding: 10px 6px; }
.lv-vd-th { width: 112px; height: 63px; object-fit: cover; border-radius: 4px; background: #000; display: block; }
.lv-vd-opts { display: flex; gap: 6px; align-items: center; }
.lv-vd-opts .lv-pvt { width: auto; }
.lv-vd-pub { display: grid; grid-template-columns: auto 136px; gap: 8px; align-items: center; }
.lv-tgl { display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 10px; border-radius: 6px; background: transparent; border: 1px solid var(--line); color: var(--muted); font: 500 calc(15px * var(--fz, 1)) var(--cond); white-space: nowrap; }
.lv-tgl:hover { color: var(--text); border-color: #3a4560; }
.lv-tgl.on { color: #fff; border-color: var(--ok); background: #13281d; }
@container (max-width: 1100px) {
  .lv-row.vd { grid-template-columns: 112px minmax(0, 1fr); }
  .lv-row.vd > .lv-vd-opts { grid-column: 2; }
  .lv-row.vd > .lv-vd-pub { grid-column: 1 / -1; justify-self: end; }
}
@container (max-width: 560px) {
  .lv-row.vd > .lv-vd-opts { grid-column: 1 / -1; flex-wrap: wrap; }
}

/* saída automática: chip no título do quadro e contagem no «Retirar do ar» */
.lv-target.lv-auto { --c: #f59e0b; gap: 5px; }
.lv-target.lv-auto:not(.on) { color: var(--muted); }
.lv-cd { margin-left: 2px; padding: 1px 6px; border-radius: 4px; background: rgba(255, 255, 255, .12); font-variant-numeric: tabular-nums; min-width: 34px; text-align: center; }

/* ---------- Alinhamento da emissão (rundown) ---------- */
.lv-rd-bar { display: grid; grid-template-columns: auto minmax(0, 1fr) auto minmax(0, 1.6fr); gap: 8px; align-items: stretch; }
.lv-rd-back { min-width: 44px; justify-content: center; }
.lv-rd-now { display: grid; align-content: center; gap: 2px; min-width: 0; padding: 6px 10px; background: var(--input); border: 1px solid var(--line); border-radius: 8px; }
.lv-rd-now small, .lv-rd-go-t { font: 700 calc(11px * var(--fz, 1)) var(--cond); letter-spacing: .08em; color: var(--muted); }
.lv-rd-now strong { font: 600 calc(15px * var(--fz, 1)) var(--cond); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-rd-bar .lv-pvt { width: 44px; height: auto; padding: 0; }
.lv-rd-go { display: grid; align-content: center; gap: 2px; min-width: 0; min-height: 56px; padding: 6px 14px; text-align: left; border-radius: 8px; background: #15803d; border: 1.5px solid #22c55e; color: #fff; cursor: pointer; }
.lv-rd-go:hover:not(:disabled) { background: #16a34a; }
.lv-rd-go:disabled { background: var(--input); border-color: var(--line); color: var(--muted); cursor: default; }
.lv-rd-go .lv-rd-go-t { display: flex; align-items: center; gap: 6px; color: #d7ffe6; }
.lv-rd-go:disabled .lv-rd-go-t { color: var(--muted); }
.lv-rd-go kbd { margin-left: auto; font: 600 calc(11px * var(--fz, 1)) var(--cond); padding: 1px 6px; border-radius: 4px; border: 1px solid rgba(255, 255, 255, .35); }
.lv-rd-go-n { font: 700 calc(17px * var(--fz, 1)) var(--cond); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lv-row.rd { grid-template-columns: auto 28px minmax(0, 1fr) auto auto auto; padding: 8px 6px; }
.lv-rd-n { font: 700 calc(15px * var(--fz, 1)) var(--cond); color: var(--muted); text-align: right; }
.lv-rd-k { display: inline-block; margin-right: 8px; padding: 1px 6px; border-radius: 4px; font: 700 calc(11px * var(--fz, 1)) var(--cond); letter-spacing: .04em; text-transform: uppercase; vertical-align: 2px;
  background: color-mix(in srgb, var(--k, #64748b) 22%, transparent); color: color-mix(in srgb, var(--k, #94a3b8) 70%, #fff); }
.k-speaker, .k-team { --k: #3b82f6; } .k-item, .k-vote { --k: #22c55e; } .k-comment { --k: #a855f7; } .k-timer { --k: #f59e0b; }
.k-comp { --k: #06b6d4; } .k-video { --k: #ec4899; } .k-hide { --k: #ef4444; }
.lv-rd-s { gap: 6px; margin-top: 3px; }
.lv-rd-o { padding: 0 6px; border-radius: 4px; font: 600 calc(12px * var(--fz, 1))/calc(18px * var(--fz, 1)) var(--cond); border: 1px solid color-mix(in srgb, var(--c) 60%, transparent); color: color-mix(in srgb, var(--c) 55%, #fff); }
.lv-rd-o.live { background: var(--c); color: #fff; }
.lv-rd-h { display: inline-flex; align-items: center; gap: 3px; font-size: calc(12px * var(--fz, 1)); }
.lv-rd-note { font-size: calc(12px * var(--fz, 1)); color: #fcd58a; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-rd-note::before { content: '✎ '; }
.lv-rd-st { font: 700 calc(11px * var(--fz, 1)) var(--cond); letter-spacing: .08em; min-width: 62px; text-align: center; }
.lv-row.rd.next { box-shadow: inset 3px 0 0 #22c55e; background: rgba(34, 197, 94, .07); }
.lv-row.rd.next .lv-rd-st { color: #4ade80; }
.lv-row.rd.cur { box-shadow: inset 3px 0 0 var(--warn); }
.lv-row.rd.cur .lv-rd-st { color: var(--warn); }
.lv-row.rd.done .lv-t, .lv-row.rd.done .lv-rd-n { opacity: .55; }
.lv-row.rd.bad .lv-t { color: var(--err); }
.lv-rd-fire { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px; border-radius: 6px; font: 600 calc(14px * var(--fz, 1)) var(--cond); background: transparent; border: 1.5px solid #22c55e; color: #86efac; white-space: nowrap; }
.lv-rd-fire:hover:not(:disabled) { background: #15803d; color: #fff; }
.lv-rd-outs { display: flex; flex-wrap: wrap; gap: 8px; }
.lv-rd-ock { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 6px; border: 1px solid color-mix(in srgb, var(--c) 60%, transparent); }
@container (max-width: 440px) {
  .lv-rd-bar { grid-template-columns: auto minmax(0, 1fr) auto; }
  .lv-rd-go { grid-column: 1 / -1; }
  .lv-row.rd { grid-template-columns: auto 24px minmax(0, 1fr) auto; }
  .lv-row.rd > .lv-rd-st { display: none; }
  .lv-row.rd > .lv-rd-fire { grid-column: 3; grid-row: 2; justify-self: start; }
}

/* ---------- Lançar juntos (vários grafismos num clique) ---------- */
.lv-combo-btn.on { background: #3b2a06; border-color: #f59e0b; color: #fcd34d; }
.lv-launch.pick { background: transparent; border: 1.5px dashed #f59e0b; color: #fcd34d; }
.lv-launch.pick:hover { background: #3b2a06; }
.lv-launch.pick.on { background: #f59e0b; border-style: solid; color: #1c1300; }
.lv-combo { position: fixed; left: 50%; bottom: 64px; transform: translateX(-50%); width: min(960px, calc(100vw - 32px)); z-index: 40; display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 12px; border-radius: 10px;
  background: #241a05; border: 1.5px solid #f59e0b; box-shadow: 0 6px 24px rgba(0, 0, 0, .45); }
.lv-combo-t { display: inline-flex; align-items: center; gap: 6px; font: 700 calc(13px * var(--fz, 1)) var(--cond); letter-spacing: .08em; color: #fcd34d; }
.lv-combo-h { font-size: calc(13px * var(--fz, 1)); color: #e8d4a0; }
.lv-combo-i { display: inline-flex; align-items: center; gap: 6px; padding: 3px 4px 3px 10px; border-radius: 6px; background: var(--panel); border: 1px solid color-mix(in srgb, var(--c) 70%, transparent); font: 600 calc(14px * var(--fz, 1)) var(--cond); }
.lv-combo-i small { font: 600 calc(11px * var(--fz, 1)) var(--cond); padding: 0 5px; border-radius: 4px; background: var(--c); color: #fff; }
.lv-combo-x { width: 22px; height: 22px; padding: 0; border-radius: 4px; background: transparent; border: 0; color: var(--muted); font-size: calc(16px * var(--fz, 1)); line-height: 1; }
.lv-combo-x:hover { color: #fff; background: rgba(255, 255, 255, .1); }
.lv-combo .lv-combo-go { width: auto; padding: 0 16px; }
.lv-combo .lv-combo-go:disabled { opacity: .5; }
.lv-sp-tm { display: inline-flex; align-items: center; gap: 3px; margin-left: 8px; padding: 0 6px; border-radius: 4px; vertical-align: 2px;
  font: 700 calc(11px * var(--fz, 1))/calc(18px * var(--fz, 1)) var(--cond); color: #fff; background: color-mix(in srgb, var(--c) 55%, #1e293b); }
