/* =========================================================================
   RT Escalas — redesign.css  (camada aditiva)
   Carregue DEPOIS de styles.css. Não substitui nada da base — apenas
   refina o que o audit apontou. Para reverter, remova o <link>.
   ========================================================================= */

/* ---- 1. Navegação agrupada (Operação / Cadastros / Comunicação / Gestão) --- */
.nav-group-label {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.09em;
  color: #5b6a92;
  text-transform: uppercase;
  padding: 16px 10px 6px;
  user-select: none;
}
.nav-group-label:first-child { padding-top: 4px; }
.sidebar .nav { gap: 2px; }

/* ---- 2. Ícones das métricas (substitui os rótulos EV/ES/PR/CF/OK) -------- */
.metric-icon svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
/* tabular numbers nas métricas para alinhamento */
.metric strong { font-variant-numeric: tabular-nums; }

/* ---- 3. Sistema de status em 4 estados + confirmação -------------------- */
/* Base já tem .badge.success / .warning / .danger. Adicionamos os faltantes
   e um ponto colorido para não depender só da cor do texto (acessibilidade). */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.badge::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  flex: none;
}
.badge.info,           /* Em confirmação */
.badge.status-review {
  color: var(--primary);
  background: var(--primary-soft);
}
.badge.neutral,        /* Rascunho */
.badge.status-draft {
  color: #475569;
  background: #f1f5f9;
}
/* aliases semânticos para as telas */
.badge.status-complete { color: var(--success); background: var(--success-bg); }   /* Concluída */
.badge.status-incomplete { color: #b45309; background: var(--warning-bg); }         /* Incompleta */
.badge.status-conflict { color: var(--danger); background: var(--danger-bg); }      /* Conflito */

/* ---- 4. Badge de função principal vs. alternativa ----------------------- */
.role-tag {
  display: inline-flex;
  align-items: center;
  font-size: 11px;
  font-weight: 700;
  border-radius: 6px;
  padding: 2px 8px;
  white-space: nowrap;
}
.role-tag.primary {           /* Função principal — tem prioridade na escala */
  color: var(--primary);
  background: var(--primary-soft);
}
.role-tag.secondary {         /* Alternativa — só quando não há principal */
  color: var(--muted);
  background: transparent;
  border: 1px solid var(--line);
}

/* ---- 5. Barra de cobertura (escalados / necessários) -------------------- */
.coverage-bar {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.coverage-track {
  width: 96px;
  height: 7px;
  background: #e2e8f0;
  border-radius: 8px;
  overflow: hidden;
}
.coverage-fill { height: 100%; border-radius: 8px; background: var(--success); }
.coverage-fill.partial { background: var(--warning); }
.coverage-fill.empty { background: var(--danger); }

/* ---- 6. Tabela densa opcional para listas longas (Profissionais) -------- */
/* Aplique a classe .table-dense num .responsive-table para linhas compactas. */
.table-dense .data-table td { padding: 10px 12px; font-size: 13px; }
.table-dense .data-table th { position: sticky; top: 0; z-index: 1; }
.data-table td { font-variant-numeric: tabular-nums; }

/* ---- 7. Consistência de botões ------------------------------------------ */
/* Verde reservado só para "enviar/convocar" (WhatsApp). Danger vira contorno
   por padrão; use .button.danger.solid apenas na confirmação destrutiva. */
.button.whatsapp { background: var(--success); border-color: var(--success); color: #fff; }
.button.whatsapp:hover { filter: brightness(0.96); }
.button.danger:not(.solid) {
  background: #fff;
  color: var(--danger);
  border: 1px solid var(--danger-line);
}
.button.danger:not(.solid):hover { background: var(--danger-bg); }
.button:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

/* ---- 8. Widget de confirmações do dashboard (barra empilhada) ----------- */
.confirm-stacked {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  padding: 2px 0;
}
.confirm-stacked .figure { font-size: 13px; color: var(--ink-2); }
.confirm-stacked .figure b { font-size: 16px; }
.confirm-stacked .track {
  flex: 1;
  min-width: 160px;
  height: 9px;
  border-radius: 8px;
  overflow: hidden;
  display: flex;
  background: #e2e8f0;
}
.confirm-stacked .seg-ok { background: var(--success); }
.confirm-stacked .seg-pend { background: #f59e0b; }
.confirm-stacked .seg-ref { background: var(--danger); }

/* ---- 9. Empty states consistentes -------------------------------------- */
.empty-state {
  text-align: center;
  color: var(--muted);
  padding: 40px 20px;
  font-size: 13px;
}

/* ---- 10. Menos scroll aninhado no dashboard ----------------------------- */
/* A lista de eventos do dashboard não precisa de altura fixa + scroll interno. */
.dashboard-showcase .event-panel .event-list {
  max-height: none;
  overflow: visible;
}

/* ---- 6. Botão Voltar das telas sem link no menu (Conflitos / Exportação) ----
   Essas duas telas são alcançadas por atalho e não têm .nav-link próprio, então
   o menu não marca nada como ativo e o usuário fica sem saída. O botão devolve
   para a página de onde ele veio (previousPageId em app.js). */
.back-button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  margin-bottom: 10px;
  padding: 6px 12px;
  font-size: 12.5px;
}

.back-button svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ---- 7. Painel de possiveis nomes duplicados (tela de Conflitos) ---------- */
.dup-list { display: flex; flex-direction: column; gap: 10px; }
.dup-intro { font-size: 13px; color: var(--muted); margin: 0 0 4px; }
.dup-card {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--panel);
  padding: 12px 14px;
}
.dup-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.dup-conf {
  font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em;
  padding: 2px 8px; border-radius: 999px; white-space: nowrap;
}
.dup-conf.conf-3 { color: var(--danger); background: var(--danger-bg); }
.dup-conf.conf-2 { color: #8a5a00; background: var(--warning-bg); }
.dup-conf.conf-1 { color: var(--muted); background: var(--primary-soft); }
.dup-reason { font-size: 12.5px; color: var(--ink); }
.dup-people {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px;
  margin-bottom: 10px;
}
.dup-people strong { display: block; font-size: 14px; }
.dup-people small { display: block; color: var(--muted); font-size: 11.5px; margin-top: 1px; }
.dup-people > div:last-child { text-align: right; }
.dup-x { color: var(--muted); font-size: 16px; }
.dup-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.dup-manual {
  margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--line-strong);
}
.dup-manual h3 { margin: 0 0 2px; font-size: 14px; }
.dup-manual .meta { color: var(--muted); font-size: 12px; margin-bottom: 10px; }
.dup-manual-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; }
.dup-manual-row label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 600; }
.dup-manual-row .select { min-width: 200px; }

/* barra de ferramentas de um painel (busca + botao lado a lado) */
.panel-tools { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.panel-tools .input, .panel-tools input[type="search"] { min-width: 220px; }

@media (max-width: 640px) {
  .dup-people { grid-template-columns: 1fr; text-align: left; }
  .dup-people > div:last-child { text-align: left; }
  .dup-x { display: none; }
  .dup-manual-row .select { min-width: 140px; }
}

/* ---- 8. Calendario de escalas + cartao no formato da escala em papel -------- */
.agenda-panel { padding-bottom: 6px; }
.agenda-grid .agenda-cell {
  position: relative; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 2px; min-height: 44px;
}
.agenda-cell.has-events { font-weight: 700; }
.agenda-count {
  font-size: 10px; font-weight: 800; line-height: 1;
  padding: 1px 5px; border-radius: 999px;
  color: #fff; background: var(--primary);
}
.agenda-cell.selected { outline: 2px solid var(--primary); outline-offset: -2px; }
.agenda-day-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 10px; margin: 18px 0 10px;
}
.agenda-day-head h3 { margin: 0; font-size: 16px; text-transform: capitalize; }
.agenda-day-head span { color: var(--muted); font-size: 12.5px; }

/* cartao que imita a celula da tabela do Word */
.doc-grid {
  display: grid; gap: 12px;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}
.doc-card {
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--panel);
  padding: 12px 14px;
  font-size: 12.5px;
  line-height: 1.55;
}
.doc-head { margin-bottom: 8px; }
.doc-head div { white-space: normal; }
.doc-pair, .doc-row {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
.doc-pair { margin-bottom: 6px; }
.doc-block {
  margin: 10px 0; padding-top: 8px; border-top: 1px dashed var(--line);
}
.doc-labels { font-weight: 700; margin-bottom: 3px; }
.doc-row span { min-height: 17px; }
.doc-foot { margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--line); }
.doc-blank {
  display: inline-block; width: 60%; border-bottom: 1px solid var(--line-strong);
}

@media print {
  /* imprime so' a escala do dia, no formato de papel */
  body.printing-agenda .sidebar,
  body.printing-agenda .topbar,
  body.printing-agenda .app-page:not(#agenda),
  body.printing-agenda #agenda .panel,
  body.printing-agenda #agenda .section-heading button { display: none !important; }
  body.printing-agenda .doc-grid { grid-template-columns: repeat(2, 1fr); }
  body.printing-agenda .doc-card { break-inside: avoid; border-color: #000; }
}

/* ---- 9. Lanches por pessoa (pagina Funcoes e caches) ---------------------- */
.lanche-box {
  margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--line-strong);
  display: grid; gap: 10px;
}
.lanche-box h3 { margin: 0 0 2px; font-size: 14px; }
.lanche-box .meta { color: var(--muted); font-size: 12px; margin: 0; }
.lanche-box label {
  display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600;
}
.lanche-box input { width: 90px; }
.lanche-resumo {
  background: var(--primary-soft); border-radius: var(--radius-sm); padding: 10px 12px;
}
.lanche-resumo strong { font-size: 18px; display: inline-block; }
.lanche-resumo small { display: block; color: var(--muted); font-size: 11.5px; margin-top: 2px; }
.doc-note { color: var(--muted); font-size: 11.5px; }

/* Tabela de Profissionais: colunas curtas não quebram, ações em ícones.
   Seletores longos de propósito: precisam vencer ".main .data-table td *" (layout.css). */
.main .data-table.professionals-table th,
.main .data-table.professionals-table td.nowrap,
.main .data-table.professionals-table td.nowrap *,
.main .data-table.professionals-table td .role-tag { white-space: nowrap; }
.main .data-table.professionals-table { min-width: 0; }
.professionals-table td { vertical-align: middle; }
.table-dense .data-table.professionals-table td, .table-dense .data-table.professionals-table th { padding: 9px 10px; }
.professionals-table .num { text-align: center; font-weight: 700; font-variant-numeric: tabular-nums; }
.professionals-table td:first-child { min-width: 140px; }
.chip-list { display: flex; flex-wrap: wrap; gap: 4px; max-width: 200px; }
.chip { cursor: help; }
.main .data-table.professionals-table td .chip-long { max-width: 196px; overflow: hidden; text-overflow: ellipsis; display: inline-block; vertical-align: middle; }
/* Restrições (salão preferido, bloqueios): o selo quebra linha dentro da coluna em vez de invadir
   "Escalas" e alargar a tabela (a rolagem lateral escondia a coluna do nome). */
.main .data-table.professionals-table td .role-tag.chip:not(.chip-long) { white-space: normal; max-width: 100%; overflow-wrap: anywhere; line-height: 1.3; }
.main .data-table.professionals-table td .chip-list { max-width: 240px; }
.actions-col { width: 1%; }
/* ações sempre visíveis: coluna fixa à direita quando a tabela precisa rolar */
.professionals-table th:last-child,
.professionals-table td:last-child { position: sticky; right: 0; background: #fff; box-shadow: -8px 0 8px -8px rgba(15, 23, 42, .12); }
.professionals-table th:last-child { background: #f8fafc; z-index: 2; }
.row-actions { display: flex; gap: 4px; justify-content: flex-end; }
.icon-button {
  width: 32px; height: 32px;
  border-radius: 9px;
  border: 1px solid var(--line);
  background: #fff;
  color: #4b5068;
  display: inline-grid; place-items: center;
  cursor: pointer;
  padding: 0;
  transition: background .15s, color .15s, border-color .15s;
}
.icon-button svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.icon-button:hover, .icon-button:focus-visible { background: var(--primary-soft); color: var(--primary); border-color: #c7d2fe; outline: none; }
.icon-button.danger { color: var(--danger); }
.icon-button.danger:hover, .icon-button.danger:focus-visible { background: var(--danger-bg); border-color: var(--danger-line); color: var(--danger); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Cadastro de equipe (Profissionais) */
.signup-panel { margin-bottom: 18px; }
.signup-group { margin-bottom: 14px; }
.signup-group > summary { cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 8px 0; list-style-position: inside; font-weight: 700; }
.signup-group > summary .role-tag { font-size: 14px; }
.signup-group-check { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; font-size: 13px; font-weight: 600; color: var(--muted, #6c7186); cursor: pointer; }
.signup-group-check input, .signup-check { width: 18px; height: 18px; accent-color: var(--primary, #4338ca); cursor: pointer; }
.signup-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.signup-item.selected { border-color: var(--primary, #4338ca); box-shadow: 0 0 0 3px rgba(67, 56, 202, .12); }
.signup-bulk { position: sticky; top: 0; z-index: 3; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 12px; margin-bottom: 12px; border-radius: 12px; background: #f6f7fb; border: 1px solid var(--line, #e4e6ef); }
.signup-bulk.active { background: var(--primary-soft, #eef2ff); border-color: var(--primary, #4338ca); }
.signup-bulk button[disabled] { opacity: .45; cursor: not-allowed; }
/* Notificações */
body:not([data-role="admin"]):not([data-role="scheduler"]) .manager-only { display: none !important; }
html:not([data-backend="1"]) body .nav-link.manager-only { display: flex !important; }
.notif-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.notif-history-panel, .notif-plan-panel { grid-column: 1 / -1; }
.notif-plan-panel { order: -1; }
.plan-rules { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
.plan-upcoming-head { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; margin: 18px 0 10px; }
.plan-upcoming-head h3 { margin: 0 auto 6px 0; }
.plan-upcoming-head label { display: grid; gap: 4px; font-size: 12.5px; font-weight: 700; }
.plan-table td { vertical-align: middle; }
.plan-off-row td { opacity: .55; }
.plan-on { color: #059669; }
.plan-off { color: #b45309; }
.notif-send [hidden] { display: none !important; }
@media (max-width: 1100px) { .notif-grid { grid-template-columns: 1fr; } }
.notif-send textarea { width: 100%; }
.notif-send code { background: #f1f2f8; padding: 1px 5px; border-radius: 5px; font-size: 12px; }
.notif-people { max-height: 260px; overflow-y: auto; border: 1px solid var(--line, #e4e6ef); border-radius: 10px; padding: 6px 10px; margin-top: 8px; display: grid; gap: 2px; }
.notif-people .muted { opacity: .55; }
.notif-people small { color: var(--muted, #6c7186); margin-left: 4px; }
.notif-preview { margin: 14px 0; display: grid; gap: 8px; }
.notif-phone { display: grid; gap: 3px; max-width: 380px; padding: 12px 14px; border-radius: 16px; background: #1f2937; color: #f9fafb; box-shadow: 0 8px 24px rgba(15, 23, 42, .25); font-size: 14px; line-height: 1.4; }
.notif-phone .notif-app { font-size: 11.5px; color: #cbd5e1; }
.notif-template-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.notif-template { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; padding: 12px 14px; border: 1px solid var(--line, #e4e6ef); border-radius: 12px; }
.notif-template.off { opacity: .6; }
.notif-template-text { display: grid; gap: 4px; min-width: 0; }
.notif-bubble { display: block; margin-top: 4px; padding: 8px 10px; border-radius: 10px; background: #f6f7fb; font-size: 13px; color: #374151; }
.notif-template-actions { display: flex; flex-direction: column; gap: 6px; flex: none; }
@media (max-width: 620px) { .notif-template { flex-direction: column; } .notif-template-actions { flex-direction: row; flex-wrap: wrap; } }
/* Início clicável */
.metric-link, .clickable { cursor: pointer; transition: transform .12s, box-shadow .12s, border-color .12s; }
.metric-link:hover, .clickable:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(15, 23, 42, .1); border-color: var(--primary, #4338ca); }
.metric-link:focus-visible, .clickable:focus-visible { outline: 3px solid rgba(67, 56, 202, .35); outline-offset: 2px; }
.metric.has-action small::after { content: " · ver lista →"; color: var(--primary, #4338ca); font-weight: 700; }
.drill-dialog { padding: 0; }
.drill-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 24px 6px; }
.drill-head h2 { margin: 0; font-size: 19px; }
.drill-intro { padding: 0 24px; margin: 0 0 8px; }
.drill-list { list-style: none; margin: 0; padding: 4px 24px; max-height: min(60vh, 560px); overflow-y: auto; display: grid; gap: 8px; }
.drill-item { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; padding: 12px 14px; border: 1px solid var(--line, #e4e6ef); border-radius: 12px; }
.drill-text { display: grid; gap: 3px; min-width: 0; }
.drill-text .meta { font-size: 12.5px; }
.drill-lines { margin: 4px 0 0; padding-left: 18px; font-size: 13px; color: #4b5068; display: grid; gap: 2px; }
.drill-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; flex: none; }
.drill-footer { display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; padding: 14px 24px 20px; }
.drill-dialog .empty-state { margin: 8px 24px; }
@media (max-width: 620px) { .drill-item { flex-direction: column; } .drill-actions { justify-content: flex-start; } }
/* Equipe por número de formandos */
.team-rules-panel { grid-column: 1 / -1; }
.team-rules-table input { width: 64px; padding: 6px 8px; border: 1px solid var(--line, #e4e6ef); border-radius: 8px; font: inherit; text-align: center; }
.team-rules-table th { white-space: normal; font-size: 12px; min-width: 70px; }
.rule-range { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.team-rules-panel .panel-header { flex-wrap: wrap; gap: 12px; }
.team-rules-panel .panel-header > div:first-child { flex: 1 1 380px; }
.team-rules-panel .data-actions { flex-wrap: nowrap; }
.team-rules-panel .data-actions .button { white-space: nowrap; }
/* Importar calendário do mês (Word) */
.calendar-warnings { margin: 0 0 12px; padding: 10px 14px 10px 28px; border-radius: 12px; background: #fffbeb; border: 1px solid #fde68a; color: #92400e; display: grid; gap: 4px; font-size: 13.5px; }
.calendar-import-table input, .calendar-import-table select { width: 100%; min-width: 120px; padding: 7px 9px; border: 1px solid var(--line, #e4e6ef); border-radius: 9px; font: inherit; }
.calendar-import-table td:nth-child(4) { min-width: 240px; }
.calendar-import-table input[type="time"] { min-width: 96px; }
.cal-origin { display: block; margin-top: 4px; font-size: 11.5px; color: #059669; }
.cal-origin.warn { color: #b45309; font-weight: 700; }
/* Usuários: só o admin vê o item do menu; "Trocar minha senha" só existe no modo servidor. */
body:not([data-role="admin"]) .admin-only { display: none !important; }
html:not([data-backend="1"]) .backend-only { display: none !important; }
.users-table td { vertical-align: middle; }
.users-table tr.inactive td { opacity: .6; }
.users-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.role-guide { margin: 0; padding-left: 18px; display: grid; gap: 8px; line-height: 1.5; }
.backup-status { display: grid; gap: 8px; margin-bottom: 14px; }
.backup-line { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; font-size: 14px; line-height: 1.45; }
.backup-line .status-dot { flex: none; }
.backup-status[hidden], .data-actions [hidden] { display: none !important; }
.signup-link { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 6px; }
.signup-url { flex: 1 1 280px; min-width: 0; font-size: 13px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; background: #f8fafc; color: var(--muted); }
.signup-subtitle { font-size: 13px; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin: 16px 0 8px; }
.signup-item { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; display: grid; gap: 6px; }
.signup-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.signup-warning { font-size: 12.5px; color: #92400e; background: #fffbeb; border-radius: 8px; padding: 6px 10px; }
.signup-merge { display: inline-flex; gap: 6px; align-items: center; }
.signup-merge select { max-width: 220px; padding: 6px 8px; border-radius: 8px; border: 1px solid var(--line); font: inherit; font-size: 13px; }
/* Check-in na escala */
.checkin-badge { font-size: 11.5px; font-weight: 700; border-radius: 999px; padding: 3px 9px; white-space: nowrap; }
.checkin-badge.checkin-ok { background: var(--success-bg); color: var(--success); }
.checkin-badge.checkin-warn { background: #fffbeb; color: #b45309; }

/* Fila de respostas do link de confirmação (Mensagens) */
.responses-panel{max-width:900px;margin-bottom:18px}.response-item{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;display:grid;gap:6px}.response-item .meta{margin:0}.response-actions{display:flex;gap:8px;flex-wrap:wrap}

/* Funções numeradas (🎥1 / 🎥2) */
.position-badge { display: inline-flex; align-items: center; gap: 2px; padding: 2px 8px; border-radius: 999px; background: var(--primary-soft, #eef2ff); color: var(--primary, #4338ca); font-weight: 800; font-size: 12.5px; white-space: nowrap; }

/* Versões da escala (Escalas → Escalas salvas) */
.schedule-versions .table-scroll { overflow-x: auto; }
.versions-table td { vertical-align: top; }
.versions-table .version-current td { background: var(--surface-muted, rgba(37, 99, 235, 0.06)); }
.versions-table .version-diff { color: var(--muted, #64748b); font-size: 0.78em; }
.versions-table .row-actions { white-space: nowrap; }

/* Recepção: líder da formatura e supervisora do dia */
.role-tag.title-tag { background: rgba(245, 158, 11, 0.14); color: #92400e; border-color: rgba(245, 158, 11, 0.4); }
.position-badge.leader-badge { background: rgba(245, 158, 11, 0.16); color: #92400e; }
.agenda-supervisor { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; font-weight: 600; }
.agenda-supervisor.muted { font-weight: 400; color: var(--muted, #64748b); }
.agenda-supervisor select { min-width: 200px; }

/* Logo do menu volta para a Visão geral */
.brand-home { color: inherit; text-decoration: none; cursor: pointer; }
.brand-home:hover .rt-logo { opacity: 0.85; }

/* Pedido de lanches */
.snack-controls { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin-bottom: 14px; }
.snack-controls label { display: grid; gap: 4px; font-weight: 600; }
.snack-controls [hidden] { display: none; }
.snack-days { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; margin-top: 14px; }
.snack-day header { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.snack-day header .meta { display: block; }
.snack-events { display: grid; gap: 2px; margin-top: 8px; font-size: 0.82em; color: var(--muted, #64748b); }
.snack-total { margin-top: 14px; }
.snack-total .table-scroll { overflow-x: auto; }
@media print {
  .sidebar, .topbar, .snack-controls, .mobile-nav { display: none !important; }
  .snack-day { break-inside: avoid; }
}

/* Escala oficial (publicação) */
.publication-warning { border: 1px solid rgba(245, 158, 11, 0.5); background: rgba(245, 158, 11, 0.1); border-radius: 10px; padding: 10px 12px; margin-bottom: 12px; }
.publication-warning ul { margin: 8px 0 0; padding-left: 18px; max-height: 260px; overflow: auto; }
.publication-ok { color: #15803d; margin-bottom: 12px; }
.publication-list-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 6px 0 8px; }
#publicationSendList .table-scroll { overflow-x: auto; max-height: 420px; overflow-y: auto; }

/* Conferência com o papel */
.review-progress { display: grid; gap: 4px; }
.review-progress-bar { height: 8px; border-radius: 99px; background: var(--line, #e5e7eb); overflow: hidden; }
.review-progress-bar span { display: block; height: 100%; background: #16a34a; }
.review-table td { vertical-align: top; }
.review-table .review-short { color: #b45309; font-weight: 700; }
.review-table .review-actions { min-width: 230px; }
.review-table .review-actions .button { margin: 4px 4px 0 0; }
.review-status { font-weight: 700; }
.review-ok .review-status { color: #15803d; }
.review-divergencia .review-status, .review-mudou .review-status { color: #b45309; }
.review-divergencia { background: rgba(245, 158, 11, 0.07); }
.review-note { font-size: 0.85em; color: #92400e; }
#reviewTable .table-scroll { overflow-x: auto; }

/* Documento impresso (caderno, visão geral, lanches): prévia na tela e só ele no papel */
#printRoot { display: none; color: #000; font-size: 10.5pt; }
body.previewing-doc { overflow: hidden; }
body.previewing-doc #printRoot { display: block; position: fixed; inset: 0; z-index: 2000; overflow: auto; background: #d9dee8; }
#printRoot .print-toolbar { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 8px; padding: 10px 16px; background: #0b1f3a; color: #fff; }
#printRoot .print-toolbar span { flex: 1; font-weight: 700; }
#printRoot .print-sheet { background: #fff; width: min(210mm, 100%); margin: 16px auto 40px; padding: 12mm; box-shadow: 0 8px 30px rgba(15, 23, 42, 0.25); }
#printRoot .print-sheet.wide { width: min(297mm, 100%); }
#printRoot .print-head { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1.5px solid #000; padding-bottom: 4px; margin-bottom: 10px; }
#printRoot .print-day { margin-top: 14px; }
#printRoot .print-day h2 { font-size: 12pt; margin: 0 0 8px; padding: 4px 8px; background: #0b1f3a; color: #fff; border-radius: 4px; }
#printRoot .print-day h2::first-letter { text-transform: uppercase; }
#printRoot .book-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: start; }
#printRoot .book-card { border: 1px solid #000; border-radius: 4px; padding: 6px 8px; break-inside: avoid; page-break-inside: avoid; font-size: 9.5pt; }
#printRoot .book-head { display: grid; gap: 1px; margin-bottom: 5px; }
#printRoot .book-team { width: 100%; border-collapse: collapse; }
#printRoot .book-team th { text-align: left; font-size: 8.5pt; background: #eef1f6; border: 1px solid #555; padding: 2px 4px; }
#printRoot .book-team td { border: 1px solid #999; padding: 2px 4px; vertical-align: top; }
#printRoot .book-team td:first-child { width: 44%; }
#printRoot .book-box { width: 22px; text-align: center; font-size: 11pt; }
#printRoot .book-open td { color: #b45309; font-style: italic; }
#printRoot .book-foot { margin-top: 5px; font-size: 8.5pt; line-height: 1.7; }
#printRoot .book-system { margin-top: 3px; font-size: 8pt; color: #15803d; }
#printRoot .print-table { width: 100%; border-collapse: collapse; font-size: 8.5pt; }
#printRoot .print-table th, #printRoot .print-table td { border: 1px solid #000; padding: 2px 4px; text-align: left; }
#printRoot .print-table th { background: #eef1f6; }
#printRoot .print-table tr { break-inside: avoid; }
#printRoot .print-box { text-align: center; font-size: 11pt; }
#printRoot .print-legend { font-size: 8pt; margin-top: 6px; }
#printRoot .snack-days { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#printRoot .snack-day { break-inside: avoid; border: 1px solid #000; padding: 6px; }
#printRoot .planning-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 8px; }
@media (max-width: 700px) { #printRoot .book-grid { grid-template-columns: 1fr; } #printRoot .print-sheet { padding: 12px; } }
@media print {
  body.printing-doc > *:not(#printRoot) { display: none !important; }
  body.printing-doc #printRoot { display: block; position: static; overflow: visible; background: #fff; }
  body.printing-doc #printRoot .print-toolbar { display: none; }
  body.printing-doc #printRoot .print-sheet { width: auto; margin: 0; padding: 0; box-shadow: none; }
  body.printing-doc #printRoot .print-day { break-before: page; margin-top: 0; }
  body.printing-doc #printRoot .print-day:first-of-type { break-before: auto; }
  body.printing-doc #printRoot .book-grid { grid-template-columns: 1fr 1fr; }
  body.printing-doc #printRoot .print-day h2 { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* Relatório impresso */
#printRoot .print-report-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px; }
#printRoot .print-report-grid .report-card { border: 1px solid #000; border-radius: 4px; padding: 8px; background: #fff; box-shadow: none; }
#printRoot .print-report-grid .report-card h3 { margin: 0; font-size: 9.5pt; }
#printRoot .print-report-grid .report-card strong { display: block; font-size: 16pt; margin: 2px 0; }
#printRoot .print-report-grid .report-card p { margin: 0; font-size: 8pt; color: #333; }
#printRoot .print-subtitle { font-size: 11pt; margin: 6px 0; }
#printRoot .print-report-grid .summary-tile { border: 1px solid #000; border-radius: 4px; padding: 8px; background: #fff; box-shadow: none; display: grid; }
#printRoot .print-report-grid .summary-tile strong { font-size: 14pt; }
#printRoot .print-report-grid .summary-tile span, #printRoot .print-report-grid .summary-tile small { font-size: 8pt; }

/* Lembrete de backup (Visão geral, só admin) */
.backup-reminder { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 14px; padding: 12px 14px; border-radius: 12px; border: 1px solid rgba(245, 158, 11, 0.5); background: rgba(245, 158, 11, 0.1); }
.backup-reminder div { display: grid; gap: 2px; max-width: 760px; }
.backup-reminder span { font-size: 13px; color: var(--muted, #64748b); }

/* Financeiro: abas, fechamento e pagamentos */
.finance-tabs { display: inline-flex; gap: 4px; padding: 4px; background: var(--line, #e5e7eb); border-radius: 12px; margin: 0 0 14px; flex-wrap: wrap; }
.finance-tabs button { border: 0; background: none; padding: 8px 14px; border-radius: 9px; font-weight: 700; color: var(--muted, #64748b); cursor: pointer; }
.finance-tabs button.active { background: var(--panel, #fff); color: var(--text, #0f172a); box-shadow: 0 1px 3px rgba(15, 23, 42, 0.12); }
.closing-event { border: 1px solid var(--line, #e5e7eb); border-radius: 10px; margin: 8px 0; background: var(--panel, #fff); }
.closing-event summary { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 12px; cursor: pointer; }
.closing-event.closed summary { background: rgba(22, 163, 74, 0.06); }
.closing-body { padding: 0 12px 12px; }
.pay-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; }
.pay-status { font-weight: 700; }
.pay-falta .pay-status { color: #b45309; }
.pay-nao_pagar td { color: var(--muted, #64748b); text-decoration: line-through; }
.pay-nao_pagar .pay-actions, .pay-nao_pagar .pay-status { text-decoration: none; }
.pay-pago .pay-status { color: #15803d; }
.pay-missing { color: #b45309; font-weight: 700; }
.pay-total td { border-top: 2px solid var(--line-strong, #cbd5e1); }
#financePagamentos code { font-size: 12px; background: var(--primary-soft, #eef2ff); padding: 1px 5px; border-radius: 5px; }

/* Cartões de memória */
.card-chip { display: inline-block; font-size: 12px; font-weight: 700; border-radius: 99px; padding: 2px 8px; background: #eef2f7; color: #334155; }
.card-chip.ok { background: #dcfce7; color: #15803d; }
.card-chip.warn { background: #fef3c7; color: #b45309; }
.card-chip.bad { background: #fee2e2; color: #b91c1c; }
.cards-event { border-top: 1px solid var(--line, #e5e7eb); padding: 10px 0; }
.cards-event h3 { margin: 0 0 6px; font-size: 14px; }
.cards-event h3 small { color: var(--muted, #64748b); font-weight: 500; }
.cards-row { display: grid; grid-template-columns: minmax(160px, 1.4fr) auto minmax(150px, 1fr) auto auto; gap: 8px; align-items: center; padding: 5px 0; }
@media (max-width: 760px) { .cards-row { grid-template-columns: 1fr 1fr; } }
#printRoot .book-none td:last-child, #printRoot .book-none td:nth-child(2) { color: #6b7280; font-style: italic; }
#printRoot .book-card-code { font-size: 8.5pt; margin-left: 4px; }
.card-late td { background: rgba(239, 68, 68, 0.06); }

/* Cartões: recolher por evento, histórico e relatório do evento */
.cards-event-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; }
.link-button { border: 0; background: none; padding: 0; cursor: pointer; color: var(--primary, #4338ca); text-decoration: underline; font: inherit; }
#cardsHistory .panel-header input { max-width: 280px; }
#printRoot .report-event-head { margin-bottom: 10px; display: grid; gap: 2px; }
#printRoot .report-event-head h2 { margin: 0 0 4px; font-size: 14pt; }
#printRoot .print-report-grid .summary-tile { border: 1px solid #000; }
#printRoot .report-refused td { color: #777; text-decoration: line-through; }
#printRoot .report-notes { min-height: 18px; white-space: pre-wrap; }
#printRoot .report-lines { margin-top: 8px; line-height: 2; color: #555; }
#printRoot .report-signatures { display: flex; justify-content: space-between; gap: 20px; margin-top: 26px; font-size: 9.5pt; }

/* Cartões: qual escala está valendo */
.cards-source { border-radius: 10px; padding: 10px 12px; margin: 0 0 12px; font-size: 13.5px; }
.cards-source.ok { background: #ecfdf5; border: 1px solid #a7f3d0; color: #065f46; }
.cards-source.bad { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; }
.cards-orphans { border: 1px solid #fecaca; }
.backup-reminder[hidden] { display: none; }
/* Regra geral: elemento marcado como escondido (atributo hidden) nunca aparece, mesmo com display definido pela classe */
[hidden] { display: none !important; }
