/* Guião — estilos. Sem estilos inline (a CSP não os permite). Telemóvel primeiro. */
:root {
  --bg: #f6f7f9;
  --card: #ffffff;
  --fg: #1b2330;
  --muted: #5d6b7c;
  --borda: #d9dee6;
  --acento: #1246e6; /* azul mike apps */
  --acento-fg: #ffffff;
  --acento-suave: #e6edff;
  --perigo: #b42318;
  --perigo-suave: #fde8e6;
  --amarelo: #fff3b8;
  --amarelo-borda: #e6c84a;
  --verde-suave: #def5e5;
  --verde: #1a7f3c;
  --azul: #1246e6;
  --azul-suave: #dbe6ff;
  --azul-fg: #ffffff;
  --mudou: #fff0d6;
  --mudou-borda: #e89b1c;
  --sombra: 0 1px 2px rgba(15, 25, 40, 0.08), 0 2px 8px rgba(15, 25, 40, 0.06);
  --raio: 10px;
  --gutter: 16px;
  color-scheme: light dark;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) {
    --bg: #12171e;
    --card: #1b222c;
    --fg: #e8edf3;
    --muted: #9aa8b8;
    --borda: #2f3946;
    --acento: #5b9bff;
    --acento-fg: #06142b;
    --acento-suave: #14224a;
    --perigo: #ff8b7e;
    --perigo-suave: #3d1d1a;
    --amarelo: #4a4210;
    --amarelo-borda: #8a7a1c;
    --verde-suave: #14341f;
    --verde: #5fd08a;
    --azul: #5b9bff;
    --azul-suave: #162a55;
    --azul-fg: #06142b;
    --mudou: #46331a;
    --mudou-borda: #c98418;
    --sombra: none;
  }
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--fg);
  font: 16px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  overflow-wrap: anywhere;
}
h1, h2, h3 { line-height: 1.2; margin: 0 0 .5em; }
h1 { font-size: 1.35rem; }
h2 { font-size: 1.15rem; }
h3 { font-size: 1rem; }
a { color: var(--acento); }
p { margin: 0 0 .75em; }
.muted { color: var(--muted); }
.pequeno { font-size: .85rem; }
.escondido, [hidden] { display: none !important; }
.so-leitor { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.pagina.larga { max-width: none; }
.pagina { max-width: 1200px; margin: 0 auto; padding: 0 var(--gutter) 48px; }
.estreita { max-width: 640px; }

/* botões e campos */
button, .botao {
  font: inherit;
  min-height: 40px;
  padding: 0 14px;
  border-radius: 8px;
  border: 1px solid var(--borda);
  background: var(--card);
  color: var(--fg);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-decoration: none;
}
button:hover, .botao:hover { border-color: var(--acento); }
button:focus-visible, .botao:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 3px solid var(--acento);
  outline-offset: 1px;
}
button.primario, .botao.primario { background: var(--acento); color: var(--acento-fg); border-color: var(--acento); font-weight: 600; }
.botao.grande { min-height: 52px; font-size: 1.1rem; width: 100%; }
button.perigo { color: var(--perigo); border-color: var(--perigo); }
button:disabled { opacity: .55; cursor: not-allowed; }
button.pequeno-bt { min-height: 32px; padding: 0 10px; font-size: .9rem; }
button.icone { width: 36px; min-width: 36px; min-height: 36px; padding: 0; }
input, select, textarea {
  font: inherit;
  color: var(--fg);
  background: var(--card);
  border: 1px solid var(--borda);
  border-radius: 8px;
  padding: 8px 10px;
  min-height: 40px;
  max-width: 100%;
}
textarea { resize: vertical; }
label { display: block; font-weight: 600; font-size: .9rem; margin: 10px 0 4px; }
label.linha-check { display: flex; gap: 8px; align-items: center; font-weight: 400; }
label.linha-check input { min-height: 0; width: 18px; height: 18px; }
.campo { display: block; width: 100%; }
.cartao { background: var(--card); border: 1px solid var(--borda); border-radius: var(--raio); padding: 14px var(--gutter); box-shadow: var(--sombra); margin-bottom: 14px; }
.largo { grid-column: 1 / -1; }
.grelha-2 { display: grid; gap: 12px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .grelha-2 { grid-template-columns: 1fr 1fr; } }
.barra { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.barra .espaco { flex: 1; }

.mensagem { padding: 12px 14px; border-radius: 8px; border: 1px solid var(--borda); background: var(--acento-suave); margin: 12px 0; }
.mensagem.erro { background: var(--perigo-suave); border-color: var(--perigo); color: var(--fg); }
.mensagem.aviso { background: var(--amarelo); border-color: var(--amarelo-borda); }
.mensagem.ok { background: var(--verde-suave); border-color: var(--verde); }
.estado-bloqueado { text-align: center; padding: 48px 16px; }
.estado-bloqueado h1 { margin-bottom: 12px; }

/* cabeçalho de páginas */
.topo { position: sticky; top: 0; z-index: 20; background: var(--bg); border-bottom: 1px solid var(--borda); padding: 10px var(--gutter) 8px; margin: 0 calc(var(--gutter) * -1) 12px; }
.topo h1 { margin: 0; font-size: 1.15rem; }
.topo .sub { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; color: var(--muted); font-size: .85rem; margin-top: 2px; }
.chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 99px; font-size: .78rem; border: 1px solid var(--borda); background: var(--card); color: var(--muted); }
.chip.ok { color: var(--verde); border-color: var(--verde); }
.chip.aviso { color: var(--fg); background: var(--amarelo); border-color: var(--amarelo-borda); }
.chip.erro { color: var(--perigo); border-color: var(--perigo); background: var(--perigo-suave); }
#voltar { margin: 0 0 6px; }
button.chip { min-height: 0; padding: 3px 10px; cursor: pointer; font: inherit; font-size: .78rem; }
.piscar { animation: piscar 1.2s ease-in-out 2; }
@keyframes piscar { 50% { outline: 3px solid var(--azul); outline-offset: -2px; } }
.chip.novo { background: var(--verde-suave); color: var(--verde); border-color: var(--verde); font-weight: 600; }
.chip.mudou { background: var(--mudou); color: var(--fg); border-color: var(--mudou-borda); font-weight: 600; }

/* separadores de dias */
.dias { display: flex; gap: 6px; overflow-x: auto; padding: 4px 0 8px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.dias button { flex: 0 0 auto; white-space: nowrap; }
.dias button[aria-selected="true"] { background: var(--acento); color: var(--acento-fg); border-color: var(--acento); font-weight: 600; }
.filtros { display: grid; gap: 8px; grid-template-columns: 1fr 1fr; margin-bottom: 10px; }
.filtros .pesquisa { grid-column: 1 / -1; }
@media (min-width: 720px) { .filtros { grid-template-columns: 2fr 1fr 1fr; } .filtros .pesquisa { grid-column: auto; } }
.filtros input, .filtros select { width: 100%; }

/* consulta: lista */
.lista-dia { margin: 0 0 24px; padding: 0; list-style: none; }
.item { display: grid; grid-template-columns: 74px 1fr; gap: 4px 12px; background: var(--card); border: 1px solid var(--borda); border-left: 4px solid var(--borda); border-radius: var(--raio); padding: 10px 12px; margin-bottom: 8px; }
.item.novo { border-left-color: var(--verde); }
.item.mudou { border-left-color: var(--mudou-borda); background: var(--mudou); }
.item .hora { font-variant-numeric: tabular-nums; font-weight: 700; line-height: 1.3; }
.item .hora small { display: block; font-weight: 400; color: var(--muted); }
.item.agora { border-left-color: var(--azul); background: var(--azul-suave); box-shadow: 0 0 0 2px var(--azul); }
.item.seguinte { border-left-style: dashed; border-left-color: var(--azul); }
.chip.agora { background: var(--azul); color: var(--azul-fg); border-color: var(--azul); font-weight: 700; margin-top: 4px; }
.chip.seguinte { color: var(--azul); border-color: var(--azul); margin-top: 4px; }
.item .titulo { font-weight: 600; }
.item .meta { display: flex; flex-wrap: wrap; gap: 4px 6px; margin-top: 4px; align-items: center; }
.item .quem { color: var(--muted); font-size: .9rem; margin-top: 2px; }
.item .extra { font-size: .92rem; margin-top: 3px; white-space: pre-wrap; }
.item .rotulo { display: inline-block; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; margin-right: 6px; }
.item .notas { white-space: pre-wrap; font-size: .9rem; margin-top: 4px; color: var(--muted); }
.item .tags { margin-top: 4px; display: flex; flex-wrap: wrap; gap: 4px; }
.sala-tag { background: var(--acento-suave); color: var(--fg); border-radius: 6px; padding: 1px 7px; font-size: .8rem; }
.cat-tag { border: 1px solid var(--borda); border-radius: 6px; padding: 1px 7px; font-size: .8rem; color: var(--muted); }
.cabeca-dia { font-size: 1.05rem; margin: 14px 0 8px; }
.cabeca-dia::first-letter { text-transform: uppercase; }
.faixa-mudancas { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; padding: 10px 12px; border-radius: 8px; background: var(--mudou); border: 1px solid var(--mudou-borda); margin-bottom: 12px; }
.removidas summary { cursor: pointer; }
.removidas li { text-decoration: line-through; color: var(--muted); }

/* editor: grelha */
.barra-editor { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.grelha-wrap { width: 100%; }
table.grelha { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--card); border: 1px solid var(--borda); border-radius: var(--raio); }
table.grelha th { text-align: left; font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); padding: 8px 6px; border-bottom: 1px solid var(--borda); background: var(--card); position: sticky; top: 0; z-index: 2; }
table.grelha td { padding: 2px; border-bottom: 1px solid var(--borda); vertical-align: top; }
table.grelha tr:last-child td { border-bottom: 0; }
table.grelha input, table.grelha textarea, table.grelha select { width: 100%; border: 1px solid transparent; background: transparent; min-height: 36px; padding: 6px 6px; border-radius: 6px; }
table.grelha textarea { resize: none; overflow: hidden; min-height: 36px; height: auto; max-height: 130px; field-sizing: content; line-height: 1.3; }
table.grelha textarea:focus { overflow: auto; }
table.grelha input:hover, table.grelha textarea:hover, table.grelha select:hover { border-color: var(--borda); }
table.grelha input:focus, table.grelha textarea:focus, table.grelha select:focus { border-color: var(--acento); background: var(--card); }
table.grelha tr.oculta td { opacity: .55; }
table.grelha tr.a-guardar td.c-acoes::after { content: "…"; color: var(--muted); }
table.grelha tr.mudou-agora { background: var(--mudou); }
table.grelha tr.agora td { background: var(--azul-suave); }
table.grelha tr.agora td:first-child { box-shadow: inset 4px 0 0 var(--azul); }
table.grelha tr.seguinte td:first-child { box-shadow: inset 4px 0 0 var(--azul); opacity: 1; }
table.grelha .c-acoes .chip { margin: 0 4px 0 0; }
@media (min-width: 821px) { table.grelha .c-acoes .chip { display: none; } }
table.grelha tr.com-erro td { background: var(--perigo-suave); }
table.grelha td.invalido input { border-color: var(--perigo); background: var(--perigo-suave); }
table.grelha { table-layout: fixed; }
table.grelha .c-acoes { white-space: nowrap; width: 216px; }
table.grelha .c-acoes button.icone { width: 26px; min-width: 26px; min-height: 32px; padding-left: 0; padding-right: 0; font-size: .8rem; }
table.grelha .c-hora { width: 58px; }
table.grelha .c-dia { width: 92px; }
table.grelha .c-titulo { width: 18%; }
table.grelha .c-categoria { width: 8%; }
table.grelha .c-sala { width: 10%; }
table.grelha .c-sala + .c-sala { width: 7%; }
table.grelha .c-quem { width: 10%; }
table.grelha .c-notas { width: 13%; }
table.grelha .c-livre { min-width: 110px; }
@media (min-width: 821px) { table.grelha { min-width: var(--larg-grelha, 900px); } }
table.grelha td.c-hora input { padding: 6px 3px; text-align: center; }
.grelha-wrap { overflow-x: auto; }
.conflito { grid-column: 1 / -1; padding: 10px 12px; background: var(--amarelo); border: 1px solid var(--amarelo-borda); border-radius: 8px; margin: 4px; }
.conflito .barra { margin-top: 6px; }
tr.linha-conflito td { padding: 0; }
.cell-rotulo { display: none; }

/* editor no telemóvel: cada linha é um cartão */
@media (max-width: 820px) {
  table.grelha { table-layout: auto; }
  .grelha-wrap { overflow-x: visible; }
  table.grelha, table.grelha tbody, table.grelha tr, table.grelha td { display: block; width: auto; }
  table.grelha thead { display: none; }
  table.grelha { background: transparent; border: 0; }
  table.grelha tr.linha { background: var(--card); border: 1px solid var(--borda); border-radius: var(--raio); margin-bottom: 10px; padding: 6px; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 8px; }
  table.grelha td { border: 0; padding: 0; }
  table.grelha .c-acoes, table.grelha .c-titulo, table.grelha .c-notas, table.grelha .c-quem, table.grelha .c-livre, table.grelha tr.linha td.c-larga { grid-column: 1 / -1; width: auto; }
  table.grelha { min-width: 0; }
  table.grelha .c-hora, table.grelha .c-dia, table.grelha .c-sala, table.grelha .c-categoria { width: auto; }
  table.grelha .c-acoes button.icone { width: 36px; min-width: 36px; min-height: 36px; }
  .cell-rotulo { display: block; font-size: .72rem; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; padding: 4px 6px 0; }
  table.grelha input, table.grelha textarea, table.grelha select { border-color: var(--borda); }
  table.grelha tr.linha.agora { box-shadow: 0 0 0 2px var(--azul); background: var(--azul-suave); }
  table.grelha tr.linha.agora td, table.grelha tr.linha.agora td:first-child { background: transparent; box-shadow: none; }
  table.grelha tr.linha.seguinte { border-left: 4px dashed var(--azul); }
  table.grelha textarea { min-height: 40px; }
  table.grelha .c-acoes { display: flex; gap: 4px; align-items: center; justify-content: flex-end; }
  tr.linha-conflito { display: block; }
}

/* diálogos */
dialog { border: 1px solid var(--borda); border-radius: 12px; background: var(--card); color: var(--fg); padding: 0; width: min(920px, calc(100vw - 24px)); max-height: calc(100vh - 24px); box-shadow: 0 10px 40px rgba(0, 0, 0, .35); }
dialog::backdrop { background: rgba(10, 16, 24, .55); }
dialog .dlg-corpo { padding: 14px var(--gutter) 16px; overflow: auto; max-height: calc(100vh - 150px); }
dialog .dlg-topo { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px var(--gutter); border-bottom: 1px solid var(--borda); }
dialog .dlg-topo h2 { margin: 0; }
dialog .dlg-pe { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; padding: 10px var(--gutter); border-top: 1px solid var(--borda); }
dialog form { margin: 0; }

/* tabelas de dados em diálogos */
table.simples { width: 100%; border-collapse: collapse; font-size: .9rem; }
table.simples td.alca { cursor: grab; color: var(--muted); user-select: none; width: 22px; }
table.simples tr.oculta td { opacity: .6; }
table.simples tr.alvo td { background: var(--acento-suave); }
table.simples th, table.simples td { text-align: left; padding: 6px 6px; border-bottom: 1px solid var(--borda); vertical-align: top; }
table.simples th { color: var(--muted); font-size: .75rem; text-transform: uppercase; }
.tabela-rolagem { overflow-x: auto; max-width: 100%; }

/* importação */
.passos { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.passos span { padding: 3px 10px; border-radius: 99px; border: 1px solid var(--borda); font-size: .82rem; color: var(--muted); }
.passos span.ativo { background: var(--acento); color: var(--acento-fg); border-color: var(--acento); font-weight: 600; }
.zona-ficheiro { border: 2px dashed var(--borda); border-radius: 12px; padding: 28px 16px; text-align: center; }
.zona-ficheiro.sobre { border-color: var(--acento); background: var(--acento-suave); }
table.previa tr.suspeita td { background: var(--amarelo); }
table.previa tr.duplicada td { opacity: .6; }
table.previa tr.excluida td { opacity: .4; text-decoration: line-through; }
table.previa td.aviso-txt { font-size: .78rem; color: var(--muted); max-width: 220px; }
.mapa-linha { display: grid; grid-template-columns: 1fr; gap: 4px; padding: 8px 0; border-bottom: 1px solid var(--borda); }
@media (min-width: 640px) { .mapa-linha { grid-template-columns: 1.2fr 2fr 1.2fr; align-items: center; } }
.mapa-campo { display: grid; gap: 4px; }
.mapa-campo .nome-coluna { min-height: 34px; }
.mapa-linha .exemplos { color: var(--muted); font-size: .85rem; }

/* links */
.token-caixa { background: var(--acento-suave); border: 1px solid var(--acento); border-radius: 8px; padding: 10px 12px; }
.token-caixa code { display: block; user-select: all; word-break: break-all; margin: 6px 0; font-size: .95rem; }

/* toasts */
#toasts { position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 100; display: grid; gap: 6px; width: min(480px, calc(100vw - 24px)); pointer-events: none; }
.toast { pointer-events: auto; background: var(--fg); color: var(--bg); padding: 10px 14px; border-radius: 8px; box-shadow: 0 6px 20px rgba(0, 0, 0, .3); font-size: .92rem; }
.toast.erro { background: var(--perigo); color: #fff; }
/* o cartão «dentro/fora do tempo» ocupa o fundo do ecrã do operador: os avisos passam para o topo */
body.com-avaliacao #toasts { top: 10px; bottom: auto; }

/* impressão: ver.html mostra todos os dias, sem controlos */
@media print {
  :root { --bg: #fff; --card: #fff; --fg: #000; --muted: #333; --borda: #999; }
  body { background: #fff; color: #000; font-size: 11pt; }
  .nao-imprimir, .topo .sub .chip, .filtros, .dias, .faixa-mudancas, #toasts, button { display: none !important; }
  .topo { position: static; border: 0; padding: 0; margin: 0 0 8px; }
  .pagina { max-width: none; padding: 0; }
  .dia-bloco { display: block !important; page-break-inside: auto; }
  .cabeca-dia { page-break-after: avoid; margin-top: 12pt; border-bottom: 1px solid #000; }
  .item { break-inside: avoid; box-shadow: none; border: 0; border-bottom: 1px solid #bbb; border-radius: 0; background: #fff !important; padding: 4pt 0; margin: 0; grid-template-columns: 70pt 1fr; }
  .item.mudou, .item.novo { background: #fff !important; }
  .chip.novo, .chip.mudou, .chip.estado-hora { display: none !important; }
  .item.agora, .item.seguinte { box-shadow: none; border-left: 0; }
  .sala-tag { background: none; border: 1px solid #999; }
  a { color: #000; text-decoration: none; }
  .so-impressao { display: block !important; }
}
.so-impressao { display: none; }



/* NO AR */
:root { --noar: #c4121a; --noar-suave: #fde8ea; --noar-fg: #ffffff; }
@media (prefers-color-scheme: dark) { :root:not([data-tema="claro"]) { --noar: #ff5a62; --noar-suave: #45171b; --noar-fg: #2a0507; } }
.chip.no-ar { background: var(--noar); color: var(--noar-fg); border-color: var(--noar); font-weight: 800; letter-spacing: .04em; margin-top: 4px; }
.item.no-ar { border-left-color: var(--noar); background: var(--noar-suave); box-shadow: 0 0 0 2px var(--noar); }
.item.no-ar .titulo::before { content: "● NO AR · "; color: var(--noar); font-weight: 800; }
.item .meta .chip.no-ar { margin-top: 0; }
.no-ar-bt { min-height: 48px; min-width: 120px; padding: 8px 18px; font-size: 1.05rem; font-weight: 800; border-radius: 10px; border: 2px solid var(--noar); background: var(--card); color: var(--noar); cursor: pointer; }
.no-ar-bt.ligado { background: var(--noar); color: var(--noar-fg); }
.no-ar-bt.retomar { border-style: dashed; font-weight: 700; }
.vivo .no-ar-bt { min-height: 52px; }
.acoes-linha { gap: 8px; }
.vivo-sala.tem-no-ar { border-color: var(--noar); box-shadow: 0 0 0 2px var(--noar); }
.vivo-cronometro { font-variant-numeric: tabular-nums; font-weight: 700; color: var(--noar); }
.vivo-no-ar-lista { margin: 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.toast.com-acao { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.toast-acao { min-height: 40px; padding: 6px 14px; border-radius: 8px; border: 0; background: var(--bg); color: var(--fg); font-weight: 700; cursor: pointer; }
table.grelha tr.no-ar td { background: var(--noar-suave); }
table.grelha tr.no-ar td:first-child { box-shadow: inset 5px 0 0 var(--noar); }
table.grelha .c-acoes .bt-no-ar-lugar { display: flex; margin-bottom: 3px; }
table.grelha .c-acoes .bt-no-ar-lugar .no-ar-bt { min-height: 36px; min-width: 0; width: 100%; padding: 4px 8px; font-size: .95rem; }
table.grelha .c-acoes { white-space: normal; }
table.grelha .c-acoes button.icone { vertical-align: top; }
@media (max-width: 820px) {
  table.grelha .c-acoes .bt-no-ar-lugar { flex: 1 0 100%; margin-bottom: 4px; }
  table.grelha .c-acoes .bt-no-ar-lugar .no-ar-bt { min-height: 48px; font-size: 1.05rem; }
  table.grelha .c-acoes { flex-wrap: wrap; }
  table.grelha tr.linha.no-ar { box-shadow: 0 0 0 2px var(--noar); background: var(--noar-suave); }
  table.grelha tr.linha.no-ar td, table.grelha tr.linha.no-ar td:first-child { background: transparent; box-shadow: none; }
}
@media print { .no-ar-bt, .toast, .vivo-no-ar-lista { display: none !important; } .item.no-ar { box-shadow: none; background: #fff; } }


/* progresso da linha NO AR */
:root { --ambar: #8a5a00; --ambar-suave: #fff3d6; --ambar-borda: #e0a21a; }
@media (prefers-color-scheme: dark) { :root:not([data-tema="claro"]) { --ambar: #ffcf6b; --ambar-suave: #473a12; --ambar-borda: #c99a2e; } }
.progresso { --cor: var(--verde); --fundo: var(--verde-suave); margin-top: 8px; padding: 8px 10px; border-radius: 10px; border: 2px solid var(--cor); background: var(--fundo); }
.progresso[data-estado="ambar"] { --cor: var(--ambar); --fundo: var(--ambar-suave); }
.progresso[data-estado="excedido"] { --cor: var(--noar); --fundo: var(--noar-suave); }
.progresso[data-estado="neutro"] { --cor: var(--muted); --fundo: var(--card); }
.prog-topo { display: flex; gap: 6px; align-items: center; font-weight: 700; font-size: .85rem; color: var(--cor); text-transform: uppercase; letter-spacing: .03em; }
.prog-texto { font-size: 1.5rem; font-weight: 800; line-height: 1.2; color: var(--fg); font-variant-numeric: tabular-nums; margin: 2px 0 6px; }
.progresso[data-estado="excedido"] .prog-texto { color: var(--noar); }
.prog-barra { position: relative; height: 14px; border-radius: 99px; background: var(--card); border: 1px solid var(--borda); overflow: hidden; }
.prog-enchimento { position: absolute; left: 0; top: 0; bottom: 0; background: var(--cor); }
.prog-marcador { position: absolute; top: -2px; bottom: -2px; width: 4px; margin-left: -2px; background: var(--fg); border-radius: 2px; }
.progresso.compacto .prog-texto, table.grelha .progresso .prog-texto { font-size: 1rem; }
table.grelha .progresso { margin-top: 3px; padding: 4px 6px; }
table.grelha .progresso .prog-topo { font-size: .7rem; }
.progresso.grande .prog-texto { font-size: clamp(1.6rem, 3.6vw, 3.2rem); }
.progresso.grande .prog-topo { font-size: 1.1rem; }
.progresso.grande .prog-barra { height: 26px; }
.decorrido { font-variant-numeric: tabular-nums; font-weight: 700; }
.chip.folga { color: var(--ambar); border-color: var(--ambar-borda); background: var(--ambar-suave); }
.chip.duracao { font-variant-numeric: tabular-nums; }
.item.terminada { opacity: .62; }
.item.terminada .titulo { text-decoration: none; }

/* realce forte da linha NO AR + piscar suave (respeita «reduzir movimento») */
.item.no-ar { border-left-width: 12px; border-left-color: var(--noar); background: var(--noar-suave); box-shadow: 0 0 0 3px var(--noar); }
table.grelha tr.no-ar td:first-child { box-shadow: inset 10px 0 0 var(--noar); }
@keyframes noar-pisca { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }
.chip.no-ar, .item.no-ar .titulo::before { animation: noar-pisca 2.4s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .chip.no-ar, .item.no-ar .titulo::before, .piscar { animation: none !important; } }

/* desvio da sala (grande) e fim previsto */
.vivo-desvio-grande { display: inline-flex; align-items: baseline; gap: 6px; padding: 2px 12px; border-radius: 10px; border: 2px solid var(--borda); font-weight: 800; }
.vivo-desvio-grande .num { font-size: 1.6rem; font-variant-numeric: tabular-nums; }
.vivo-desvio-grande .rot { font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; }
.vivo-desvio-grande.atraso { color: var(--noar); border-color: var(--noar); background: var(--noar-suave); }
.vivo-desvio-grande.adiantado { color: var(--adiantado); border-color: var(--adiantado); background: var(--adiantado-suave); }
.vivo-desvio-grande.ok { color: var(--verde); border-color: var(--verde); background: var(--verde-suave); }
.vivo-fim-sala { font-size: .9rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.vivo-comecou { font-weight: 700; color: var(--noar); font-size: .9rem; }

/* vista grande (backstage) */
.sair-grande { display: none; }
body.modo-grande main.pagina, body.modo-grande #toasts .toast:not(.com-acao) { display: none; }
body.modo-grande { background: #0b0f14; color: #f2f5f8; }
body.modo-grande .sair-grande { display: block; position: fixed; bottom: 10px; right: 10px; z-index: 50; opacity: .55; }
body.modo-grande .sair-grande:hover, body.modo-grande .sair-grande:focus { opacity: 1; }
.grande { padding: 16px var(--gutter) 40px; }
.grande-topo { display: flex; flex-wrap: wrap; gap: 8px 24px; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.grande-evento { font-size: clamp(1.1rem, 2.4vw, 2rem); font-weight: 700; }
.grande-relogio { font-size: clamp(2rem, 6vw, 5rem); font-weight: 800; font-variant-numeric: tabular-nums; }
.grande-salas { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.grande-sala { border: 2px solid var(--borda); border-radius: 16px; padding: 16px; background: var(--card); color: var(--fg); display: grid; gap: 12px; align-content: start; }
.grande-sala.tem-no-ar { border-color: var(--noar); box-shadow: 0 0 0 4px var(--noar); }
.grande-sala-topo { display: flex; flex-wrap: wrap; gap: 8px; justify-content: space-between; align-items: center; }
.grande-nome { font-size: clamp(1.4rem, 3.2vw, 2.6rem); font-weight: 800; }
.grande-titulo { font-size: clamp(1.8rem, 4.6vw, 3.6rem); font-weight: 800; line-height: 1.15; }
.grande-nada { font-size: clamp(1.2rem, 3vw, 2rem); color: var(--muted); }
.dur-calc { display: block; font-size: .72rem; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
/* ações externas (QVP / Cue Timer): barra de feedback, botões ▶ das linhas e diálogo «Ações» */
.barra-externos { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin: 0 0 10px; }
.barra-externos[hidden] { display: none; }
/* dentro do topo fixo: mesmo espaçamento do resto do topo */
.topo > .barra-externos { margin: 6px 0 0; }
.topo > .faixa-mudancas, .topo > .faixa-ensaio, .topo > .faixa-sala { margin: 6px 0 0; }
.ext-item { display: inline-block; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--borda); font-size: .9rem; font-variant-numeric: tabular-nums; background: var(--card); color: var(--fg); }
.ext-ok { background: #dff5e5; border-color: #0a6b2d; color: #0a5a28; }
.ext-pausa { background: #fff1cc; border-color: #b07a00; color: #7a5200; }
.ext-parado { color: var(--muted); }
.ext-erro { background: #fde2e2; border-color: #a31515; color: #8f1111; font-weight: 600; }
.barra-grande { margin: 0 0 16px; }
.barra-grande .ext-item { font-size: clamp(1rem, 2.2vw, 1.8rem); padding: 6px 16px; }
body:not(.modo-grande) #barra-externos-grande { display: none; }
.acao-externa { display: inline-flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; }
.acao-bt { min-height: 44px; padding: 8px 14px; border-radius: 10px; border: 1px solid #1246E6; background: #fff; color: #1246E6; font-weight: 600; cursor: pointer; }
.acao-bt.alvo-timer { border-color: #7a3db8; color: #6a2fa5; }
.acao-bt.ocupado, .acao-bt:disabled { opacity: .6; cursor: progress; }
.acao-estado { font-size: .85rem; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--borda); }
.acao-estado.est-ok { background: #dff5e5; border-color: #0a6b2d; color: #0a5a28; }
.acao-estado.est-erro { background: #fde2e2; border-color: #a31515; color: #8f1111; }
.acao-estado.est-espera { background: #e3ebff; border-color: #1246E6; color: #1246E6; }
.acoes-dialogo { display: grid; gap: 10px; }
.acao-cartao { border: 1px solid var(--borda); border-radius: 10px; padding: 10px; display: grid; gap: 8px; }
.acao-linha { display: flex; flex-wrap: wrap; gap: 8px; }
.acao-linha > * { flex: 1 1 12rem; }
.campo-acao { display: grid; gap: 4px; }
.erro-campo { color: #a31515; font-weight: 600; }
.grande-proximas { display: grid; gap: 8px; }
.grande-seguinte { display: flex; flex-wrap: wrap; gap: 2px 14px; align-items: baseline; font-size: clamp(1.1rem, 2.4vw, 1.9rem); }
.grande-seg-titulo { font-weight: 700; }
.grande-seg-hora { font-variant-numeric: tabular-nums; color: var(--muted); }
.grande-ultimo { font-size: clamp(1rem, 2vw, 1.5rem); color: var(--muted); font-variant-numeric: tabular-nums; }
.grande-midia { flex: 1 1 100%; font-size: clamp(1rem, 2vw, 1.5rem); color: var(--muted); overflow-wrap: anywhere; }
.grande-midia.da-atual { font-size: clamp(1.2rem, 3vw, 2.2rem); font-weight: 700; color: var(--fg); }
.grande-midia .rotulo { font-size: .7em; text-transform: uppercase; letter-spacing: .04em; }
.grande-midia-escolha { font-size: .9rem; color: var(--muted); }
.grande-midia-escolha .campo { width: auto; min-width: 8rem; }
.grande .chip { font-size: 1rem; padding: 4px 12px; }
.grande .vivo-desvio-grande .num { font-size: clamp(1.6rem, 4vw, 3rem); }
@media print { .grande, .sair-grande, #grande-lugar { display: none !important; } }


/* filtros do editor */
.filtros-editor { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin: 0 0 10px; }
.filtros-editor .pesquisa { flex: 1 1 220px; min-width: 0; }
.filtros-editor select { min-width: 150px; }
.filtros-editor.com-filtro { padding: 6px 8px; border-radius: 10px; background: var(--azul-suave); border: 1px solid var(--azul); }
.filtro-salas { position: relative; }
.filtro-salas summary { cursor: pointer; list-style: none; padding: 8px 12px; min-height: 40px; border: 1px solid var(--borda); border-radius: 8px; background: var(--card); white-space: nowrap; }
.filtro-salas[open] summary { border-color: var(--acento); }
.filtro-salas-lista { position: absolute; z-index: 30; left: 0; top: calc(100% + 4px); min-width: 240px; max-height: 50vh; overflow: auto; padding: 8px 10px; background: var(--card); border: 1px solid var(--borda); border-radius: 10px; box-shadow: var(--sombra), 0 8px 24px rgba(0, 0, 0, .2); display: grid; gap: 4px; }
.filtro-salas-lista .linha-check { padding: 4px 2px; min-height: 36px; }

/* painel ao vivo compacto: uma linha por sala, fixo no topo */
.vivo { position: sticky; top: var(--topo-h, 0px); z-index: 15; max-height: 34vh; overflow: auto; }
.vivo.recolhido { max-height: none; }
@media (max-width: 820px) { .vivo { position: static; max-height: none; } }
.vivo-barra-salas { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; }
.chip[type="button"], button.chip { cursor: pointer; }
.vivo-salas.compacto { display: grid; gap: 6px; grid-template-columns: 1fr; }
.vivo-salas.compacto .vivo-sala { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; padding: 6px 10px; border-radius: 10px; }
.vivo-salas.compacto .vivo-sala-topo { flex: 0 1 260px; min-width: 190px; justify-content: flex-start; gap: 8px; flex-wrap: nowrap; }
.vivo-salas.compacto .vivo-sala-nome { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vivo-salas.compacto .vivo-desvio-grande { padding: 0 8px; border-width: 1px; }
.vivo-salas.compacto .vivo-desvio-grande .num { font-size: 1rem; }
.vivo-salas.compacto .vivo-desvio-grande .rot { display: none; }
.vivo-salas.compacto .vivo-agora { flex: 1 1 220px; min-width: 0; }
.vivo-salas.compacto .vivo-agora .vivo-titulo { font-size: 1rem; }
.vivo-salas.compacto .vivo-seguinte { flex: 0 1 260px; font-size: .85rem; color: var(--muted); }
.vivo-salas.compacto .vivo-fim-sala { flex: 0 0 auto; font-size: .78rem; }
.vivo-salas.compacto .progresso { flex: 1 1 200px; margin: 0; padding: 3px 8px; }
.vivo-salas.compacto .progresso .prog-texto { font-size: 1.05rem; margin: 0 0 3px; }
.vivo-salas.compacto .progresso .prog-topo { font-size: .7rem; }
.vivo-salas.compacto .progresso .prog-barra { height: 10px; }
.vivo-salas.compacto .vivo-botoes { flex: 0 0 auto; gap: 6px; }
.vivo-salas.compacto .vivo-botoes button.grande { min-height: 44px; padding: 4px 12px; }
.vivo-salas.compacto .no-ar-bt { min-height: 44px; min-width: 96px; padding: 4px 12px; font-size: .95rem; }
.fav { min-width: 36px; min-height: 36px; padding: 0; border: 0; background: transparent; font-size: 1.25rem; line-height: 1; cursor: pointer; color: var(--muted); }
.fav.ativa { color: var(--ambar-borda); }
.vivo-grupo-horario { border: 1px dashed var(--borda); border-radius: 10px; padding: 6px 10px; }
.vivo-grupo-horario summary { cursor: pointer; font-weight: 600; color: var(--muted); min-height: 36px; display: flex; align-items: center; }
.vivo-grupo-horario > .vivo-salas { margin-top: 6px; }


/* vista pessoal */
.vista { margin: 0 0 10px; display: grid; gap: 6px; }
.vista-linha { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; }
.chip-vista { min-height: 36px; padding: 4px 14px; border-radius: 99px; border: 1px solid var(--borda); background: var(--card); color: var(--fg); cursor: pointer; font: inherit; font-size: .9rem; }
.chip-vista.ativa { background: var(--acento); color: var(--acento-fg); border-color: var(--acento); font-weight: 700; }
.vista-aviso { padding: 8px 12px; border-radius: 10px; background: var(--amarelo); border: 2px solid var(--amarelo-borda); display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; }
.vista-filtros { display: grid; gap: 12px; }
.vista-col { border: 1px solid var(--borda); border-radius: 10px; padding: 8px 10px; }
.vista-col h3 { margin: 0 0 6px; font-size: .95rem; }
.vista-col .campo { width: 100%; }
.vista-valores { margin-top: 6px; }
.vista-valores summary { cursor: pointer; min-height: 36px; display: flex; align-items: center; color: var(--muted); }
.vista-valores-lista { display: grid; gap: 2px; max-height: 40vh; overflow: auto; padding: 4px 0; }
.vista-valores-lista .linha-check { min-height: 36px; }
.vista-colunas { display: grid; gap: 4px; }
.vista-colunas .linha-check { min-height: 40px; }
@media print { .vista { display: none !important; } }

/* ajuste de tempo ao vivo */
.faixa-ensaio { background: repeating-linear-gradient(45deg, var(--amarelo), var(--amarelo) 12px, var(--card) 12px, var(--card) 24px); border: 2px solid var(--amarelo-borda); border-radius: 10px; padding: 8px 12px; margin: 0 0 10px; font-weight: 600; }
.voltar-plano { border-color: var(--noar); color: var(--noar); font-weight: 700; }
.vivo-historico ul { margin: 6px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; max-height: 30vh; overflow: auto; }
.vivo-historico li { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; font-size: .9rem; }
.vivo-historico li.desfeita { opacity: .6; text-decoration: line-through; }
.vivo-historico .quando { font-variant-numeric: tabular-nums; font-weight: 700; }
@media print { .faixa-ensaio { display: none; } }

table.grelha .prev-hora { display: block; font-size: .72rem; line-height: 1.2; color: var(--atraso); font-weight: 700; text-align: center; white-space: nowrap; }
table.grelha .estado-vivo { display: block; font-size: .72rem; line-height: 1.2; text-align: center; white-space: nowrap; color: var(--verde); }
table.grelha .estado-vivo[data-estado="em_curso"] { color: var(--azul); font-weight: 700; }
table.grelha .c-acoes button.icone.ativo { background: var(--amarelo); border-color: var(--amarelo-borda); }
table.grelha tr.linha.em-curso td:first-child { box-shadow: inset 4px 0 0 var(--azul); }
table.grelha tr.linha.com-aviso-vivo td.c-acoes { box-shadow: inset 0 -3px 0 var(--amarelo-borda); }

:root { --atraso: #b4540a; --atraso-suave: #fff0dc; --adiantado: #0f6b3a; --adiantado-suave: #def5e5; }
@media (prefers-color-scheme: dark) { :root:not([data-tema="claro"]) { --atraso: #ffb067; --atraso-suave: #47301a; --adiantado: #5fd08a; --adiantado-suave: #14341f; } }
.chip.atraso { background: var(--atraso-suave); color: var(--atraso); border-color: var(--atraso); font-weight: 700; }
.chip.adiantado { background: var(--adiantado-suave); color: var(--adiantado); border-color: var(--adiantado); font-weight: 700; }
.chip.em-curso { background: var(--azul); color: var(--azul-fg); border-color: var(--azul); font-weight: 700; margin-top: 4px; }
.chip.terminada { color: var(--verde); border-color: var(--verde); margin-top: 4px; }
.chip.grande-chip { font-size: .95rem; padding: 4px 12px; }
.item .hora .plano, .hora .plano { color: var(--muted); font-weight: 400; text-decoration: line-through; }
.item .hora .prev { color: var(--atraso); }
.item .hora.com-previsto small { font-size: .8rem; line-height: 1.25; }
.item .hora.alterada small .prev { color: var(--atraso); font-weight: 700; }
.item.terminada { opacity: .7; }
.item .meta .chip.atraso, .item .meta .chip.adiantado, .item .meta .chip.em-curso, .item .meta .chip.terminada { margin-top: 0; }
.vivo { background: var(--card); border: 1px solid var(--borda); border-radius: var(--raio); padding: 10px 12px; margin: 0 0 12px; display: grid; gap: 10px; }
.vivo.ocupado { opacity: .65; pointer-events: none; }
.vivo-resumo { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.vivo-avisos { margin: 0; padding: 0; list-style: none; display: grid; gap: 4px; }
.vivo-aviso { background: var(--amarelo); border: 1px solid var(--amarelo-borda); border-radius: 8px; padding: 6px 10px; font-size: .9rem; }
.vivo-salas { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.vivo-sala { border: 1px solid var(--borda); border-radius: 10px; padding: 10px; display: grid; gap: 6px; background: var(--bg); }
.vivo-sala-topo { display: flex; gap: 8px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.vivo-agora, .vivo-seguinte { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: baseline; }
.vivo-agora .vivo-titulo { font-weight: 700; font-size: 1.05rem; }
.vivo-hora { font-variant-numeric: tabular-nums; color: var(--muted); }
.vivo .rotulo { color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; }
.vivo-botoes, .vivo-acoes { display: flex; flex-wrap: wrap; gap: 8px; }
.vivo button.grande, .vivo-dlg button.grande { min-height: 48px; min-width: 48px; padding: 8px 16px; font-size: 1rem; }
.vivo-ajustes ul { margin: 6px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.vivo-ajustes li { display: flex; gap: 8px; align-items: center; justify-content: space-between; flex-wrap: wrap; font-size: .88rem; }
.vivo-dlg .radios { display: grid; gap: 6px; margin: 4px 0 8px; }
.vivo-rapidos { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 4px; }
.vivo-previa { margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: var(--bg); border: 1px dashed var(--borda); font-size: .9rem; height: 7.5em; overflow: auto; }
.vivo-previa.a-calcular { opacity: .6; }
table.grelha tr.linha.fixa td.c-hora input { font-weight: 700; }
table.grelha .c-acoes .chip.previsto-chip { margin-top: 2px; }
table.grelha tr.linha.terminada td { opacity: .75; }
@media print { .vivo { display: none !important; } .item .hora .plano { text-decoration: line-through; } .chip.atraso, .chip.adiantado, .chip.em-curso, .chip.terminada { display: none !important; } }

#titulo-evento.editavel { cursor: pointer; border-bottom: 1px dashed currentColor; width: fit-content; }
#titulo-evento.editavel:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

/* links do dono */
.token-caixa .qr { display: block; margin-top: 10px; width: min(240px, 100%); height: auto; image-rendering: pixelated; border: 1px solid var(--borda); background: #fff; }
.token-caixa .barra { flex-wrap: wrap; }
.links-inativos { margin-top: 12px; border: 1px dashed var(--borda); border-radius: 10px; padding: 6px 10px; }
.links-inativos summary { cursor: pointer; font-weight: 600; color: var(--muted); min-height: 36px; display: flex; align-items: center; }

/* salas sem linhas: a cinzento */
.filtro-salas-lista .linha-check.vazia { opacity: .55; }

/* botão «No ar» das linhas: discreto até ser preciso (a linha NO AR é que fica vermelha) */
.no-ar-bt.discreto { border-color: var(--borda); color: var(--muted); font-weight: 600; background: transparent; font-size: .9rem; }
.no-ar-bt.discreto:hover, .no-ar-bt.discreto:focus-visible { border-color: var(--noar); color: var(--noar); background: var(--card); }
table.grelha .c-acoes .bt-no-ar-lugar .no-ar-bt.discreto { min-height: 30px; font-size: .85rem; padding: 2px 8px; }
@media (max-width: 820px) { table.grelha .c-acoes .bt-no-ar-lugar .no-ar-bt.discreto { min-height: 44px; font-size: 1rem; } }
.item .acoes-linha .no-ar-bt.discreto { min-height: 44px; min-width: 96px; }

/* ordem pessoal das colunas e ficheiro de vistas */
.vista-coluna-linha { display: flex; align-items: center; justify-content: space-between; gap: 8px; border-bottom: 1px solid var(--borda); }
.vista-ordem { display: inline-flex; gap: 4px; }
.vista-ordem button.icone { min-width: 40px; min-height: 40px; }

.vista-aviso.leve { background: var(--card); border: 1px solid var(--borda); }
.vista-aviso .fechar-aviso { margin-left: auto; min-width: 36px; }
.vista-aviso-fechado { display: flex; }

/* rodapé com a versão */
.rodape { margin: 24px 0 8px; padding-top: 10px; border-top: 1px solid var(--borda); display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; font-size: .8rem; color: var(--muted); }
.rodape.com-novidade { color: var(--fg); background: var(--amarelo); border: 2px solid var(--amarelo-borda); border-radius: 10px; padding: 8px 12px; }
.rodape-versao { font-variant-numeric: tabular-nums; }

/* importar por cima: novas / alteradas / removidas */
.cmp-resumo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
@media (min-width: 640px) { .cmp-resumo { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.cmp-resumo > div { border: 1px solid var(--borda); border-radius: 10px; padding: 8px 10px; background: var(--card); }
.cmp-resumo strong { font-size: 1.2rem; }
.cmp-grupo { border: 1px solid var(--borda); border-radius: 10px; padding: 8px 10px; margin-bottom: 10px; background: var(--card); }
.cmp-grupo > summary { cursor: pointer; padding: 4px 0; }
.cmp-lista { display: grid; gap: 6px; margin-top: 6px; }
.cmp-linha { display: grid; gap: 4px; border: 1px solid var(--borda); border-radius: 8px; padding: 8px; min-width: 0; }
.cmp-linha.nova { grid-template-columns: auto auto minmax(0, 1fr); align-items: start; gap: 8px; border-left: 4px solid var(--ok, #1a7f37); }
.cmp-linha.alterada { border-left: 4px solid var(--acento); }
.cmp-linha.alterada.separada { border-left-color: var(--muted); }
.cmp-linha.removida { grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 8px; border-left: 4px solid var(--perigo); }
.cmp-linha.removida .cmp-acao { grid-column: 1 / -1; }
.cmp-topo { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: start; gap: 8px; cursor: pointer; }
.cmp-hora { font-variant-numeric: tabular-nums; font-weight: 600; min-width: 3.2em; }
.cmp-corpo { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.cmp-diffs { margin: 4px 0 0; padding-left: 18px; display: grid; gap: 4px; }
.cmp-diff { overflow-wrap: anywhere; font-size: .92rem; }
.cmp-campo { color: var(--muted); }
.cmp-antes { text-decoration: line-through; color: var(--muted); }
.cmp-depois { font-weight: 600; }
.cmp-diff.conflito { background: var(--amarelo); border-radius: 6px; padding: 4px 6px; list-style-position: inside; }
.cmp-conflito, .cmp-incerta { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; margin-top: 4px; }
.cmp-aviso-txt { color: var(--perigo); font-size: .85rem; }
.cmp-vivo { justify-self: start; }
@media (max-width: 480px) { .dlg-importar .cmp-linha { padding: 6px; } }

/* editor de sala: faixa com as salas e linhas só de leitura */
.faixa-sala { background: var(--acento-suave); border: 1px solid var(--acento); border-radius: 10px; padding: 8px 12px; margin: 8px 0; font-size: .92rem; }
.so-leitura-chip { font-size: .72rem; }
tr.linha.so-leitura { opacity: .72; }
tr.linha.so-leitura .c-acoes button { display: none; }
tr.linha.so-leitura input:disabled, tr.linha.so-leitura textarea:disabled, tr.linha.so-leitura select:disabled { cursor: not-allowed; }
@media (min-width: 821px) { table.grelha .c-acoes .chip.so-leitura-chip:not([hidden]) { display: inline-block; } }

/* rodapé: versão legível + estado em palavras */
.rodape-codigo { font-size: .68rem; opacity: .6; font-variant-numeric: tabular-nums; }
.rodape-estado[data-estado="atual"] { color: var(--ok, #1a7f37); font-weight: 600; }
.rodape-estado[data-estado="nova"] { font-weight: 700; }
.mensagem.aviso-sem-dia { background: var(--amarelo); border-color: var(--amarelo-borda); }

/* ao vivo: iniciar / terminar o dia, estado por sala em palavras, ajuda de 1.ª utilização */
.vivo-iniciar { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin: 6px 0 10px; }
.vivo-iniciar .iniciar-dia { font-size: 1.1rem; min-height: 52px; padding: 8px 20px; }
.vivo-ajuda ol { margin: 6px 0 8px; padding-left: 20px; }
.vivo-estado { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; margin: 2px 0; font-size: .92rem; }
.vivo-estado:empty { display: none; }
.vivo-estado .atrasa { color: var(--perigo); font-weight: 600; }
.chip.estado-sala.antes { background: var(--acento-suave); }
.chip.estado-sala.terminou { background: var(--card); border-color: var(--borda); }
.terminar-dia { border-color: var(--perigo); }
.vivo-ajuda { padding: 8px 12px; margin: 6px 0; }
.vivo-ajuda summary { cursor: pointer; }
@media (max-width: 820px) { .vivo-iniciar .muted { display: none; } }

/* editor (ecrã largo): a tabela é a «janela» que rola; o cabeçalho e as colunas-chave ficam fixos */
@media (min-width: 821px) {
  .grelha-wrap {
    position: sticky; top: calc(var(--topo-h, 0px) + var(--vivo-h, 0px)); z-index: 5;
    max-height: calc(100vh - var(--topo-h, 0px) - var(--vivo-h, 0px) - 8px); overflow: auto; overscroll-behavior: contain;
  }
  table.grelha thead th { position: sticky; top: 0; z-index: 6; background: var(--card); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; word-break: keep-all; hyphens: none; }
  table.grelha th .th-nome { overflow: hidden; text-overflow: ellipsis; }
  /* alça para mudar a largura da coluna: na borda direita do cabeçalho */
  table.grelha thead th { position: sticky; }
  table.grelha th .col-resize { position: absolute; top: 0; right: 0; bottom: 0; width: 9px; cursor: col-resize; touch-action: none; z-index: 2; }
  table.grelha th .col-resize::after { content: ''; position: absolute; top: 25%; bottom: 25%; right: 3px; width: 2px; background: var(--borda); border-radius: 1px; }
  table.grelha th .fixar-col { z-index: 3; } /* o alfinete fica por cima da alça de largura */
  table.grelha th .col-resize:hover::after, table.grelha th .col-resize:active::after { background: var(--primaria, #1d4ed8); }
  table.grelha thead th.col-fixa { z-index: 8; }
  table.grelha td.col-fixa, table.grelha th.col-fixa { position: sticky; background: var(--card); }
  table.grelha td.col-fixa { z-index: 4; }
  table.grelha .fixa-0 { left: var(--fixa-0, 0px); }
  table.grelha .fixa-1 { left: var(--fixa-1, 0px); }
  table.grelha .fixa-2 { left: var(--fixa-2, 0px); }
  table.grelha .fixa-3 { left: var(--fixa-3, 0px); }
  table.grelha tr.agora td.col-fixa, table.grelha tr.seguinte td.col-fixa { background: var(--azul-suave); }
  table.grelha tr.no-ar td.col-fixa { background: var(--noar-suave); }
  table.grelha tr.oculta td.col-fixa { opacity: 1; }
  table.grelha tr.oculta td.col-fixa input, table.grelha tr.oculta td.col-fixa textarea { opacity: .55; }
  table.grelha th.col-fixa, table.grelha td.col-fixa { box-shadow: 1px 0 0 var(--borda); }
  /* o alfinete sobrepõe-se ao canto do cabeçalho (não rouba largura ao nome): só se vê ao passar o rato / com foco, ou se estiver fixa */
  table.grelha thead th { position: sticky; }
  .fixar-col { position: absolute; right: 1px; top: 50%; transform: translateY(-50%); border: 0; background: var(--card); padding: 0 1px; min-height: 0; min-width: 0; width: auto; font-size: .6rem; line-height: 1; opacity: 0; cursor: pointer; border-radius: 4px; }
  .fixar-col::before { content: "📌"; }
  table.grelha th:hover .fixar-col, .fixar-col:focus-visible { opacity: .9; }
  .fixar-col.ativa { opacity: .8; }
}
@media (max-width: 820px) { .fixar-col { display: none; } }
/* recolher painel e filtros */
#conteudo.topo-recolhido #filtros, #conteudo.topo-recolhido #vista-lugar, #conteudo.topo-recolhido #vivo-lugar { display: none; }

/* «dentro do tempo»: caixa de 3 estados e chips (ícone + texto, não só cor) */
.tempo-bt { min-height: 40px; min-width: 150px; padding: 6px 12px; border-radius: 10px; font-weight: 600; border: 2px solid var(--borda); background: var(--card); }
.tempo-bt.vazio { color: var(--muted); }
.tempo-bt.dentro { background: #dff5e3; border-color: #1a7f37; color: #0b4a1f; }
.tempo-bt.fora { background: #ffe9c2; border-color: #c25e00; color: #7a3a00; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .tempo-bt.dentro { background: #0f3a1d; color: #9be4ad; } :root:not([data-theme="light"]) .tempo-bt.fora { background: #4a2a00; color: #ffcf8a; } }
:root[data-theme="dark"] .tempo-bt.dentro { background: #0f3a1d; color: #9be4ad; }
:root[data-theme="dark"] .tempo-bt.fora { background: #4a2a00; color: #ffcf8a; }
.chip.tempo.dentro { background: #dff5e3; border-color: #1a7f37; color: #0b4a1f; }
.chip.tempo.fora { background: #ffe9c2; border-color: #c25e00; color: #7a3a00; }
.chip.tempo-total { font-weight: 600; }
.vivo-tempo-sala { font-size: .85rem; color: var(--muted); }
table.grelha .c-acoes .tempo-bt { min-height: 36px; min-width: 0; width: 100%; font-size: .85rem; margin-bottom: 3px; }
@media (min-width: 821px) { table.grelha .c-acoes .tempo-bt { padding: 2px 6px; } }
@media (min-width: 821px) { table.grelha .c-acoes .chip.tempo { display: inline-block; } }

/* procurar por coluna: linha de caixas sob o cabeçalho (cola-se por baixo dele) */
.cabecalho-filtros th { background: var(--card); padding: 3px 4px; border-bottom: 1px solid var(--borda); text-transform: none; }
.cf-caixa { position: relative; display: flex; align-items: center; }
table.grelha .cf-input { min-height: 30px; padding: 3px 22px 3px 6px; border: 1px solid var(--borda); background: var(--bg); font-size: .85rem; border-radius: 6px; }
table.grelha .cf-input:focus { border-color: var(--acento); }
.cf-x { position: absolute; right: 2px; top: 50%; transform: translateY(-50%); border: 0; background: transparent; min-height: 0; min-width: 0; width: auto; padding: 0 5px; font-size: 1rem; line-height: 1; cursor: pointer; color: var(--muted); }
.cf-acoes { display: flex; gap: 8px; align-items: center; white-space: nowrap; }
.cf-contagem { font-size: .8rem; font-weight: 600; text-transform: none; }
#conteudo.sem-filtros-coluna #cabecalho-filtros { display: none; }
@media (max-width: 820px) { .cabecalho-filtros, #bt-filtros-coluna { display: none; } }
@media (min-width: 821px) {
  table.grelha thead .cabecalho-filtros th { position: sticky; top: var(--cab1-h, 34px); z-index: 6; }
  table.grelha thead .cabecalho-filtros th.col-fixa { z-index: 8; }
}
td.acerto, table.grelha td.col-fixa.acerto, table.grelha tr.agora td.acerto, table.grelha tr.no-ar td.acerto { background: var(--amarelo); }

/* ao vivo: cartão «acabou de terminar», atraso clicável e nota rápida */
.vivo-avaliacoes { display: grid; gap: 8px; margin: 6px 0 10px; }
.vivo-avaliacao { border: 2px solid var(--acento); background: var(--acento-suave); border-radius: 12px; padding: 8px 10px; display: grid; gap: 6px; }
.aval-topo { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: baseline; }
.aval-fechar { margin-left: auto; }
.aval-tempo, .aval-atraso { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; }
.vivo-avaliacao .tempo-bt { min-width: 0; }
.vivo-avaliacao .tempo-bt.proposto { outline: 3px dashed var(--acento); outline-offset: 1px; }
.vivo-avaliacao .tempo-bt.escolhido { box-shadow: 0 0 0 2px var(--fg); }
.atraso-bt, .nota-bt { min-height: 36px; padding: 4px 10px; border-radius: 10px; border: 1px solid var(--borda); background: var(--card); font-size: .85rem; text-align: left; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.atraso-bt.atraso { border-color: var(--perigo); color: var(--perigo); font-weight: 600; }
.atraso-bt.adiantado { border-color: #1a7f37; color: #1a7f37; font-weight: 600; }
.nota-bt.com-nota { background: var(--amarelo); border-color: var(--amarelo-borda); }
/* o som por orador pode ter várias linhas: quebra em vez de alargar a página */
.som-bt { white-space: normal; overflow-wrap: anywhere; text-overflow: clip; height: auto; max-width: 100%; }
.acoes-linha { min-width: 0; }

table.grelha .c-acoes .bt-no-ar-lugar { flex-wrap: wrap; gap: 3px; }
table.grelha .c-acoes .bt-no-ar-lugar .no-ar-bt, table.grelha .c-acoes .bt-no-ar-lugar .tempo-bt, table.grelha .c-acoes .bt-no-ar-lugar .atraso-bt, table.grelha .c-acoes .bt-no-ar-lugar .nota-bt { flex: 1 1 100%; width: 100%; }
/* cartões «acabou de terminar»: painel fixo no fundo (ao pé de quem tocou, sem rolar até ao topo) */
.vivo-avaliacoes.fixo { position: fixed; left: 50%; transform: translateX(-50%); bottom: 64px; width: min(560px, calc(100vw - 16px)); max-height: 45vh; overflow: auto; z-index: 90; margin: 0; }
.vivo-avaliacoes.fixo[hidden] { display: none; }
.vivo-avaliacoes.fixo .vivo-avaliacao { background: var(--card); box-shadow: 0 6px 20px rgba(0, 0, 0, .28); }

/* relógio fixo no topo: hora real (servidor + fuso do evento), tabular, sem empurrar o layout */
.topo { position: sticky; }
.relogio-topo { position: absolute; top: 6px; right: var(--gutter, 16px); display: flex; align-items: flex-start; gap: 6px; text-align: right; line-height: 1.15; pointer-events: auto; }
.rt-texto { display: grid; justify-items: end; }
.rt-hora { font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; font-weight: 700; font-size: 1.1rem; letter-spacing: .02em; min-width: 6.2ch; text-align: right; }
.rt-nota { font-size: .62rem; color: var(--muted); max-width: 11rem; white-space: normal; text-align: right; }
.rt-botao { border: 0; background: transparent; min-height: 0; min-width: 0; width: auto; padding: 1px 3px; font-size: .75rem; opacity: .55; cursor: pointer; }
.rt-botao:hover, .rt-botao:focus-visible { opacity: 1; }
.relogio-topo.rt-oculto .rt-texto { display: none; }
.topo.com-relogio h1 { padding-right: 6.4rem; }
@media (max-width: 480px) { .rt-hora { font-size: 1rem; } .topo.com-relogio h1 { padding-right: 5.6rem; } }
body.modo-grande .relogio-topo { display: none; }
.rt-linha { display: inline-flex; align-items: baseline; gap: 4px; }
.rt-aviso { font-size: .7rem; color: var(--perigo); cursor: help; }
/* ecrãs estreitos: só o ⚠ (com a explicação na dica); a nota por extenso cabe a partir de 600 px */
@media (max-width: 600px) { .rt-nota { display: none; } }

.acao-repetir { display: flex; align-items: center; gap: 6px; font-size: .9em; color: var(--texto-suave, inherit); }

/* fonte Google Sheets (só leitura) e vista da régie */
.barra-fonte { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; margin: 0 0 10px; padding: 6px 10px; border: 1px solid var(--borda); border-radius: 10px; background: var(--card); }
.barra-fonte[hidden] { display: none; }
.fonte-estado { font-weight: 700; }
.fonte-estado[data-fonte="erro"] { color: #a31515; }
.tag-fonte { margin-left: 4px; padding: 0 6px; border-radius: 999px; font-size: .68rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; background: #e3ebff; color: #1246E6; }
td.da-fonte input, td.da-fonte textarea, td.da-fonte select { background: var(--fonte-bg); color: var(--fonte-fg); cursor: not-allowed; }
tr.fonte-removida { opacity: .6; }
tr.fonte-removida input[data-campo="titulo"] { text-decoration: line-through; }
.fonte-dialogo .tabela-rolagem, .fonte-sinc .fonte-lista { max-height: 50vh; overflow: auto; }
.fonte-lista ul { margin: 4px 0 8px 18px; padding: 0; }
.regie-filtro { align-items: center; margin-bottom: 6px; }
.regie-filtro > * { flex: 1 1 10rem; }
.regie-filtro > button { flex: 0 0 auto; }

/* Fonte: mapear colunas (cartões + resumo + pré-visualização) */
.mapa-resumo p { margin: 0 0 6px; }
.mapa-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 8px; }
.mapa-lista { display: flex; flex-direction: column; gap: 6px; max-height: 45vh; overflow: auto; margin: 8px 0; }
.mapa-linha { display: grid; grid-template-columns: minmax(7rem, 1fr) minmax(8rem, 1.6fr) minmax(11rem, 14rem); gap: 6px 10px; align-items: center; padding: 6px 8px; border: 1px solid var(--borda); border-left-width: 4px; border-radius: 8px; opacity: .72; }
.mapa-linha.usada { opacity: 1; border-left-color: var(--acento, #1246E6); background: var(--acento-suave, transparent); }
.mapa-exemplos { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.mapa-exemplo { padding: 1px 7px; border-radius: 999px; background: var(--card); border: 1px solid var(--borda); font-size: .78rem; color: var(--muted); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mapa-escolha select { width: 100%; }
.mapa-avancado { margin: 10px 0; }
.mapa-avancado > summary { cursor: pointer; color: var(--muted); font-size: .9rem; }
table.mapa-previa td, table.mapa-previa th { white-space: nowrap; }
@media (max-width: 640px) { .mapa-linha { grid-template-columns: 1fr; } }

/* Modo escuro suave: cores que estavam fixas para o tema claro (campos «do Excel», etiquetas, estados) */
:root { --fonte-bg: #f4f6fb; --fonte-fg: var(--muted); }
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) { --fonte-bg: #161c25; --fonte-fg: #c3cdd8; }
  :root:not([data-tema="claro"]) table.grelha td.da-fonte input,
  :root:not([data-tema="claro"]) table.grelha td.da-fonte textarea,
  :root:not([data-tema="claro"]) table.grelha td.da-fonte select { border-color: transparent; }
  :root:not([data-tema="claro"]) .tag-fonte { background: #1d2c52; color: #a9c6ff; }
  :root:not([data-tema="claro"]) .ext-ok, :root:not([data-tema="claro"]) .acao-estado.est-ok { background: #123521; border-color: #3fae6a; color: #a6e8bf; }
  :root:not([data-tema="claro"]) .ext-pausa { background: #3d3112; border-color: #b48a22; color: #f1d58a; }
  :root:not([data-tema="claro"]) .ext-erro, :root:not([data-tema="claro"]) .acao-estado.est-erro { background: #3d1d1a; border-color: #e0685d; color: #ffb9b0; }
  :root:not([data-tema="claro"]) .acao-estado.est-espera { background: #162a55; border-color: #5b9bff; color: #b9d2ff; }
  :root:not([data-tema="claro"]) .acao-bt { background: var(--card); border-color: #5b9bff; color: #b9d2ff; }
  :root:not([data-tema="claro"]) .acao-bt.alvo-timer { border-color: #b98ae6; color: #d9bdf5; }
  :root:not([data-tema="claro"]) .erro-campo, :root:not([data-tema="claro"]) .fonte-estado[data-fonte="erro"] { color: #ff9a8f; }
  :root:not([data-tema="claro"]) .chip.tempo.dentro { background: #0f3a1d; border-color: #3fae6a; color: #9be4ad; }
  :root:not([data-tema="claro"]) .chip.tempo.fora { background: #4a2a00; border-color: #d98a2b; color: #ffcf8a; }
  :root:not([data-tema="claro"]) .atraso-bt.adiantado { border-color: #5fd08a; color: #5fd08a; }
  /* amarelo/âmbar menos agressivo: fundo escuro e discreto, texto normal */
  :root:not([data-tema="claro"]) { --amarelo: #3a3416; --amarelo-borda: #7d6d1e; --mudou: #3d2f19; }
}

/* Consulta: o que interessa à régie em evidência; o que vem do cliente, mais discreto */
.item .extra.cliente, .item .quem.cliente, .item .notas.cliente { font-size: .84rem; color: var(--muted); }
.item .extra.cliente .rotulo { opacity: .8; }
.item .extra.destaque, .item .quem.destaque, .item .notas.destaque { color: var(--fg); font-size: 1rem; font-weight: 600; padding: 4px 8px; border-radius: 6px; background: var(--acento-suave); border-left: 4px solid var(--acento); }
.item .extra.nosso, .item .notas.nosso, .item .quem.nosso { color: var(--fg); font-size: .98rem; padding: 4px 8px; border-radius: 6px; background: var(--ambar-suave); border-left: 4px solid var(--ambar-borda); }
.item .extra.nosso .rotulo, .item .notas.nosso .rotulo { color: var(--ambar); font-weight: 700; }
.item .extra.destaque.cliente { font-size: 1rem; color: var(--fg); }
@media print { .item .extra.destaque, .item .extra.nosso, .item .notas.nosso { background: none; border-left: 3px solid #000; } }
.mapa-escolha { display: flex; flex-direction: column; gap: 4px; }
.mapa-escolha input[hidden] { display: none; }
/* campos em destaque lado a lado (menos altura por cartão) */
.item .extra.destaque { display: inline-block; margin: 4px 8px 0 0; vertical-align: top; }

/* Consulta: ficheiros (nome para informação) e aba «Conteúdo a descarregar» */
.item .extra.ficheiros .fich { display: inline-block; margin: 2px 6px 2px 0; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--borda); background: var(--card); color: var(--fg); font-size: .9rem; font: inherit; }
.item .extra.ficheiros button.fich { cursor: pointer; border-color: var(--acento); color: var(--acento); }
.item .extra.ficheiros.destaque .fich { font-weight: 600; }
.separadores { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.separadores button { min-height: 40px; padding: 6px 14px; border-radius: 999px; border: 1px solid var(--borda); background: var(--card); color: var(--fg); font: inherit; cursor: pointer; }
.separadores button[aria-selected="true"] { background: var(--acento); color: var(--acento-fg); border-color: var(--acento); font-weight: 700; }
.conteudo-lista { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 8px; }
.conteudo-item { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; justify-content: space-between; padding: 10px 12px; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--card); }
.conteudo-nome { min-width: 0; flex: 1 1 14rem; }
.conteudo-nome strong { overflow-wrap: anywhere; }
@media print { .nao-imprimir-bt { border: 0 !important; } }
/* ---- ecrã do palco: contagem decrescente grande + mensagens da régie (monitor para o orador) ---- */
body.modo-palco main.pagina, body.modo-palco #toasts .toast:not(.com-acao), body.modo-palco .relogio-topo { display: none; }
body.modo-palco { background: #05080c; color: #f2f5f8; }
body.modo-palco .sair-grande { display: block; position: fixed; bottom: 10px; right: 10px; z-index: 50; opacity: .45; }
body.modo-palco .sair-grande:hover, body.modo-palco .sair-grande:focus { opacity: 1; }
body:not(.modo-palco) #sair-palco { display: none; }
body.modo-palco #sair-grande { display: none; }
.palco[hidden] { display: none; }
.palco { min-height: 100vh; padding: 16px var(--gutter) 56px; display: flex; flex-direction: column; gap: 16px; }
.palco-topo { display: flex; flex-wrap: wrap; gap: 8px 24px; align-items: center; justify-content: space-between; }
.palco-sala { font-size: clamp(1.4rem, 4vw, 3.4rem); font-weight: 800; }
.palco-relogio { font-size: clamp(1.6rem, 5vw, 4rem); font-weight: 800; font-variant-numeric: tabular-nums; color: #aab4c0; }
.palco-seletor { color: #aab4c0; }
.palco-atual { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: 8px; }
.palco-titulo { font-size: clamp(1.6rem, 5vw, 4.2rem); font-weight: 800; line-height: 1.15; overflow-wrap: anywhere; }
.palco-contagem { font-size: clamp(4.5rem, 24vw, 22rem); font-weight: 900; font-variant-numeric: tabular-nums; line-height: 1; color: #4ade80; }
.palco-contagem.ambar { color: #ffb020; }
.palco-contagem.fora { color: #ff4d4d; }
.palco-sem-fim { font-size: clamp(3rem, 14vw, 10rem); font-weight: 900; color: #4ade80; }
.palco-legenda { font-size: clamp(1rem, 2.6vw, 2rem); color: #aab4c0; }
.palco-nada { font-size: clamp(1.4rem, 4vw, 3rem); color: #aab4c0; }
.palco-atual.parado .palco-titulo { color: #d6dde5; }
.palco-seguintes { display: grid; gap: 6px; font-size: clamp(1.1rem, 2.6vw, 2.2rem); border-top: 2px solid #1f2933; padding-top: 12px; }
.palco-seguinte { display: flex; gap: 16px; align-items: baseline; }
.palco-seg-hora { font-variant-numeric: tabular-nums; color: #aab4c0; min-width: 4.5ch; }
.palco-seg-titulo { overflow-wrap: anywhere; }
.palco-mensagens { display: grid; gap: 8px; }
.palco-msg { padding: 14px 20px; border-radius: 14px; font-size: clamp(1.6rem, 5.5vw, 5rem); font-weight: 900; text-align: center; line-height: 1.1; overflow-wrap: anywhere; }
.palco-msg.info { background: #1d4ed8; color: #fff; }
.palco-msg.aviso { background: #ffb020; color: #111; }
.palco-msg.urgente { background: #dc2626; color: #fff; }
.palco-msg.nova { animation: palco-pisca .7s ease-in-out 6; }
@keyframes palco-pisca { 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) { .palco-msg.nova { animation: none; } }
.palco-presets { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.palco-ativa { margin: 6px 0; }
/* o botão «Palco» do editor não cabe na barra em ecrãs estreitos: aí envia-se pela página de consulta/operador */
@media (max-width: 520px) { .barra-editor #bt-palco { display: none; } }
/* ---- relatório do evento ---- */
.rel-cartoes { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin: 8px 0 12px; }
.rel-cartao { border: 1px solid var(--borda); border-radius: 10px; padding: 8px 10px; display: grid; gap: 2px; background: var(--card); }
.rel-cartao .rel-valor { font-size: 1.35rem; font-variant-numeric: tabular-nums; }
.rel-cartao.atraso { border-color: var(--perigo); }
.rel-cartao.atraso .rel-valor { color: var(--perigo); }
.rel-cartao.adiantado .rel-valor { color: #0a6b3a; }
#relatorio td.atraso { color: var(--perigo); font-weight: 600; }
#relatorio td.adiantado { color: #0a6b3a; font-weight: 600; }
#relatorio td.num { white-space: nowrap; font-variant-numeric: tabular-nums; }
dialog.dlg-relatorio { width: min(1100px, calc(100vw - 24px)); }
@media print {
  body.imprimir-relatorio main, body.imprimir-relatorio .topo, body.imprimir-relatorio .dlg-topo, body.imprimir-relatorio .dlg-pe { display: none !important; }
  body.imprimir-relatorio dialog[open] { position: static !important; width: 100% !important; max-height: none !important; border: 0; box-shadow: none; }
  body.imprimir-relatorio dialog .dlg-corpo { max-height: none !important; overflow: visible !important; }
  body.imprimir-relatorio .rel-cartao { break-inside: avoid; }
  body.imprimir-relatorio #relatorio table { font-size: 9pt; }
  body.imprimir-relatorio #relatorio tr { break-inside: avoid; }
}
@media (max-width: 520px) { .barra-editor #bt-relatorio { display: none; } }
/* alertas de fim de linha: moldura vermelha a piscar uns segundos */
body.alerta-flash { box-shadow: inset 0 0 0 8px #dc2626; }
@media (max-width: 520px) { #nivel ~ #bt-alertas .al-txt { display: none; } }
@media (max-width: 520px) { #nivel ~ #bt-alertas { display: none; } }

/* de que nuvem é o link (a de quem montou o guião) */
.chip.nuvem { margin-left: 6px; font-size: .72rem; }

/* botão «?» (ajuda da função) */
.ajuda-bt { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; min-height: 0; min-width: 0; padding: 0; border-radius: 50%; border: 1px solid var(--borda); background: var(--card); color: var(--muted); font-size: .8rem; font-weight: 700; line-height: 1; cursor: pointer; vertical-align: middle; }
.ajuda-bt:hover, .ajuda-bt:focus-visible { color: var(--fg); border-color: var(--fg); }
.ajuda-corpo .ajuda-serve { font-weight: 600; }
.ajuda-corpo ol, .ajuda-corpo ul { padding-left: 20px; }
.ajuda-cuidados { margin-top: 10px; padding: 8px 10px; border-left: 3px solid var(--amarelo-borda, #d4a017); background: var(--amarelo, #fff6d6); border-radius: 6px; }
.cartao.download { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
/* segundo fator do dono */
.qr-caixa { display: inline-block; background: #fff; padding: 4px; border-radius: 8px; }
.qr-caixa canvas { display: block; max-width: 100%; height: auto; }
.codigos-recuperacao { white-space: pre-wrap; overflow-wrap: anywhere; background: var(--card); border: 1px solid var(--borda); border-radius: 8px; padding: 10px; font-size: 1rem; line-height: 1.6; user-select: all; }
.mensagem-convite { white-space: pre-wrap; word-break: break-word; text-align: left; }
/* editor: coluna de ficheiros com link → mostra só o nome; o endereço volta ao clicar */
table.grelha td .fich-nomes { display: none; }
table.grelha td.mostra-nomes .fich-nomes { display: block; padding: 6px 8px; white-space: pre-wrap; overflow-wrap: anywhere; cursor: text; border: 1px solid var(--borda); border-radius: 6px; min-height: 2.2em; }
table.grelha td.mostra-nomes textarea { display: none; }
table.grelha td .fich-item a { color: var(--acento); text-decoration: underline; }
table.grelha td .fich-editar { margin-top: 4px; }
.convite-codigo > summary { cursor: pointer; padding: 4px 0; }
.convite-codigo[open] > summary { margin-bottom: 6px; }
/* «só o timer»: a contagem ocupa o ecrã */
.palco-atual.so-timer { flex: 1; display: flex; align-items: center; justify-content: center; }
.palco-atual.so-timer .palco-contagem { font-size: min(36vw, 60vh); }
.palco-atual.so-timer .palco-sem-fim { font-size: min(22vw, 40vh); }
.palco-fs-dica { position: fixed; right: 12px; bottom: 12px; z-index: 30; background: rgba(0, 0, 0, .55); color: #fff; border: 1px solid rgba(255, 255, 255, .35); border-radius: 999px; padding: 8px 14px; font-size: .95rem; cursor: pointer; }
.palco-fs-dica[hidden] { display: none; }
body:not(.modo-palco) .palco-fs-dica { display: none; }
