/* ============================================================================
   DESIGN REVIEW 2026-08 — CAMADA DE OVERRIDE (Integra Saúde+)
   Carregar DEPOIS de assets/app.css em todas as telas:
     <link rel="stylesheet" href="assets/app.css">
     <link rel="stylesheet" href="assets/design-review.css">
   Fonte: Prompt Mestre "Identidade Visual e Design System V1" + telas
   aprovadas no design review (projeto Integra Saúde+).
   Nada aqui muda funcionalidade — só tokens e apresentação.
   ============================================================================ */

:root{
  /* §4 — Primary Navy oficial (sidebar/institucional) */
  --navy:#0F2747;
  --navy-2:#173A63;            /* hover (spec §18) */
  --navy-deep:#0A1F3A;         /* variação profunda */
  --sidebar:#0F2747;
  --sidebar-sep:#1B3A61;

  /* §6 — Verde saúde / teal (novo token; não usar decorativamente) */
  --teal:#14B8A6;
  --teal-alt:#10B981;
  --teal-soft:#ECFDF5;
  --teal-ink:#047857;

  /* §7 — semânticas (inalteradas, confirmadas): ok/warn/crit/info */
  --info:#0284C7; --info-soft:#F0F9FF;

  /* §8 — neutros */
  --bg:#F7F9FC;
  --muted:#64748B;             /* terciário mais suave que o atual #374151 */
  --ink-2:#475569;

  /* §29/§32/§38 — raios oficiais */
  --radius:12px;               /* cards (era 16) */
  --radius-sm:8px;             /* botões/inputs (era 10) */
  --radius-lg:16px;            /* modais (era 20) */
  --radius-tb:12px;

  /* §29 — sombra mais leve */
  --sh-1:0 1px 3px rgba(15,23,42,.06);

  /* §14/§23 — layout: sidebar 232px, topbar 64px */
  --w-side:232px;
  --h-appbar:64px;

  /* §103 — escala de espaçamento (base 8px) — NOVO */
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-6:24px; --space-8:32px; --space-10:40px; --space-12:48px;
}

/* §32/§38 — botões e inputs: altura padrão 40px (era 44). Checkbox/radio
   ficam de fora (12 telas os usam fora de .check-item — virariam caixas de
   40px). No celular o app.css impõe min-height:44px, que vence isto. */
button{height:40px}
input:not([type=checkbox]):not([type=radio]),select{height:40px}
header.appbar .gbusca input{height:40px;border-radius:var(--radius-sm);background:#F8FAFC}

/* §16-§19 — menu da sidebar: item 42px, ativo = azul sólido + texto branco
   (substitui o padrão anterior de fundo elevado + borda esquerda) */
aside.sidebar a.item{padding:0 14px;height:42px;border-left:0;border-radius:8px;
  transition:background 180ms}
aside.sidebar a.item:hover{background:var(--navy-2)}
aside.sidebar a.item.ativo{background:var(--pri);color:#fff;border-left:0;font-weight:600}
aside.sidebar .grp{font-size:10px;letter-spacing:1px;color:#5A7196}
aside.sidebar .side-filtro input{background:var(--navy-deep);border-color:#1B3A61}

/* §15 — área da marca: acompanha a topbar (64px) para a linha de separação
   continuar alinhada entre sidebar e appbar. Tile 36px (o SVG padrão em
   /branding/logo já é o tile gradiente) + wordmark + subtítulo. */
aside.sidebar .brand{height:var(--h-appbar);border-bottom-color:#1B3A61;gap:10px;padding:0 16px}
aside.sidebar .brand img.logo{width:36px;height:36px;border-radius:10px}
aside.sidebar .brand .marca{display:flex;flex-direction:column;line-height:1.15;min-width:0}
aside.sidebar .brand .wordmark{font-weight:700;font-size:15px;color:#fff;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
aside.sidebar .brand .wordmark .mais{color:var(--teal-alt)}
aside.sidebar .brand .sub{font-size:10px;font-weight:600;color:#8FA3C4;letter-spacing:.5px}
.login-marca .mais{color:var(--pri)}

/* Tema clean redefine --sidebar em :root[data-tema] (especificidade maior):
   precisa de linha própria para herdar o Primary Navy do review */
:root[data-tema="clean"]{--sidebar:#0F2747;--navy:#0F2747;--navy-2:#173A63}

/* §23 — topbar branca sem sombra pesada */
header.appbar{box-shadow:none}

/* §29 — cards: padding 16–24, borda discreta */
.card{padding:20px}

/* §30/§31 — KPI: número 28–36px (era 40/800 — reduz o “grito”) */
.kpi .num{font-size:32px;font-weight:700;line-height:40px}
.kpi{border-left-width:3px;min-height:0}

/* §44/§45 — tabelas: header suave, linhas 44–52px, hover neutro */
thead th{background:#F8FAFC;text-transform:none;letter-spacing:0;font-size:12.5px}
td,th{height:48px}
tbody tr:hover{background:#F8FAFC}
tbody tr.selecionada,tbody tr.sel{background:#EFF6FF}

/* §49-§53 — badges pill 22–26px (já conforme; garante altura) */
.pill,.badge{height:24px}

/* §62 — agenda: tons pastéis já padronizados nos .st-*; sem mudança */

/* §99 — animações discretas confirmadas (150–250ms) */

/* Tema escuro (§100): mantém tema-dark/premium; navy do command center
   acompanha o novo Primary Navy */
body.tema-dark .card,body.tema-dark .kpi,body.tema-dark .metric,
body.tema-dark .donut{background:var(--navy);border-color:#1B3A61}


/* ============================================================================
   COMPOSIÇÃO DAS TELAS DE ALTA FIDELIDADE (protótipo do Claude Design, 23/08)
   O protótipo não muda só tokens: recompõe os componentes partilhados. Como
   .kpi/.sec-tit/.hero vivem no app.css, mudar aqui muda TODAS as telas —
   é o design system, não uma tela.
   ============================================================================ */

/* Cabeçalho da página dentro do conteúdo (h1 28px + subtítulo + pílula de estado) */
.pg-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:0 0 6px}
.pg-head h1{margin:0;font-size:28px;font-weight:700;line-height:1.15;color:var(--ink)}
.pg-head .pg-sub{font-size:14px;color:var(--muted);margin-top:4px}
.pg-head .pg-pill{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;
  color:#16A34A;background:#F0FDF4;border:1px solid #BBF7D0;border-radius:999px;padding:8px 16px;white-space:nowrap}
.pg-head .pg-pill::before{content:"";width:8px;height:8px;border-radius:50%;background:#16A34A}

/* Título de secção: texto 18/700 + subtítulo 12 muted; sem ícone (o protótipo não usa) */
.sec-tit{font-size:18px;font-weight:700;align-items:baseline;gap:10px;margin:14px 0 4px}
.sec-tit .ic{display:none}
.sec-tit small{font-size:12px;color:#94A3B8;font-weight:400}

/* Card KPI: rótulo 13px muted em sentence case + badge de estado à direita,
   valor 26px em tinta (o estado vai na borda e no badge — nunca só na cor do número) */
.hero{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.kpi{padding:18px;border-left-width:3px;gap:6px;min-width:0}   /* min-width:0: item de grid não estoura a coluna no celular */
.kpi .kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0}
.kpi .kpi-top .lbl{min-width:0;overflow-wrap:anywhere}
.kpi .lbl{font-size:13px;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:500}
.kpi .num{font-size:26px;font-weight:700;line-height:1.15;color:var(--ink);margin-top:4px}
.kpi.crit .num,.kpi.warn .num,.kpi.ok .num,.kpi.info .num,.kpi.ia .num{color:var(--ink)}
.kpi .hint{font-size:12px;color:#94A3B8;margin-top:2px}
.kpi .badge{margin:0;font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;flex:0 1 auto;text-align:center}
.badge.b-crit{background:#FEE2E2;color:#991B1B}
.badge.b-warn{background:#FEF9C3;color:#854D0E}
.badge.b-ok{background:#DCFCE7;color:#166534}
.badge.b-info{background:#DBEAFE;color:#1E40AF}
.badge.b-ia{background:#EDE9FE;color:#5B21B6}

/* Donut: card branco, anel 110px, rótulo 13/600 e sub 12 muted */
.donuts{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.donut{padding:20px}
.donut svg{width:118px;height:118px}
.donut-lbl{font-size:13px;font-weight:600}

/* Aviso informativo (liga Sala de Situação) no desenho do protótipo */
.alerta.info{background:#F0F9FF;border:1px solid #BAE6FD;border-radius:10px;padding:14px 16px;font-size:13px;line-height:1.5}


/* ============================================================================
   PADRÃO GENÉRICO "TELA V1" (as 76 telas de conceito) — protótipo tela_v1
   ============================================================================ */
/* h2/h3 de secção: 17/700 tinta (o protótipo não usa ícones nem caixa alta) */
main h2{font-size:17px;font-weight:700;line-height:24px;color:var(--ink);margin:6px 0 10px}
main h3,.card h3{font-size:15px;font-weight:700;color:var(--ink);margin:0 0 8px}
.card h2{font-size:17px}
/* Tabela: cabeçalho #F8FAFC 12/600 #475569; linhas 13px #475569, 12×16 de padding */
thead th{font-size:12px;font-weight:600;color:#475569;padding:12px 16px;height:auto;line-height:1.3}
tbody td{font-size:13px;color:#475569;padding:12px 16px;height:auto;line-height:1.35;border-bottom:1px solid #EEF2F6}
tbody td b,tbody td strong{color:var(--ink)}
/* Formulários: rótulo 12/600 #334155; campos 40px raio 8 (já na camada) */
label{font-size:12px;font-weight:600;color:#334155;margin:10px 0 5px}
/* Botões: 14/600, raio 8; secundário com borda */
button{font-size:14px;font-weight:600;border-radius:8px}
button.ghost,button.neutro{font-weight:600}
/* Listas em card: linha 12px 0 com separador #EEF2F6 (padrão do protótipo) */
.card ul{list-style:none;margin:0;padding:0}
.card ul>li{padding:10px 0;border-bottom:1px solid #EEF2F6;font-size:13px}
.card ul>li:last-child{border-bottom:0}


/* ---- pedidos das frentes de alta fidelidade (regras partilhadas) ---------- */
/* ações à direita do .pg-head (select com rótulo + botões alinhados pela base) */
.pg-head .pg-acts{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.pg-head .pg-acts button{margin:0;white-space:nowrap}
.pg-head .pg-acts .pg-campo label{margin:0 0 4px}
.pg-head .pg-acts .pg-campo select{width:auto;min-width:200px;max-width:100%}
/* cartões de atalho (ícone + rótulo) */
.atalhos{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.atalhos a{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:18px 12px;
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--sh-1);text-decoration:none;
  color:var(--ink);font-weight:600;font-size:14px;background:var(--surface)}
.atalhos a:hover{border-color:var(--pri);box-shadow:var(--sh-2)}
.atalhos a img.ic{width:24px;height:24px}
/* qualquer componente com display próprio respeita o atributo hidden */
[hidden]{display:none !important}
/* título de secção no celular: o subtítulo desce em vez de espremer o título */
@media (max-width:767px){.sec-tit{flex-wrap:wrap;gap:2px 10px}}
/* donut: o sub sai do SVG e fica sob o rótulo (como no protótipo) */
.donut-sub{font-size:12px;color:#94A3B8;margin-top:2px;text-align:center}
/* pedidos da frente C */
.busca-paciente .bp-row button{white-space:nowrap;margin:0}
button.neutro{background:#fff;border:1px solid #CBD5E1;color:#334155}
button.neutro:hover{background:#F1F5F9}
/* ---- pedidos da frente C (revisão das telas de conceito) ----------------- */
/* botão alinhado ao campo da mesma linha: <div class="fim"><button>…</button></div> */
.row>.fim,.row3>.fim{align-self:end}
.row>.fim button,.row3>.fim button{margin:0}
/* caixa de seleção dentro de grelha de formulário: alinha à base, sem disputar com label */
.row3 .check-item,.row .check-item{align-self:end;justify-content:flex-start;padding-left:0;font-size:13px;margin:0}
/* camadas de mapa (mapa_rede / mapa_capacidade) */
.cam-lbl{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cam-lbl .cam-btn{margin:0;padding:2px 10px;height:auto;min-height:0;font-size:12px}
/* botões dentro de tabela são compactos por desenho */
td button{margin:0;padding:4px 10px;height:32px;font-size:13px}
/* ---- pedidos da frente D --------------------------------------------------- */
/* .sec (catálogo/acessos): secção 17/700 como no catlogo_v1, sem caixa alta */
.sec{margin:8px 0 12px;color:var(--ink);font-size:17px;font-weight:700;line-height:24px;text-transform:none;letter-spacing:0}
/* .metric (app.css) alinhado ao KPI: rótulo sentence case, valor em tinta, borda 3px */
.metric{border-left-width:3px}
.metric .lbl{font-size:13px;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:500}
.metric .num,.metric.ok .num,.metric.warn .num,.metric.crit .num,.metric.info .num{font-size:26px;color:var(--ink)}
/* ---- pedidos da frente A --------------------------------------------------- */
/* barra de navegação por dia (agendas): setas 40px, período, unidade à direita */
.barra-dia{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;margin-bottom:14px}
.barra-dia button{margin:0}
.barra-dia .arw{width:40px;padding:0;font-size:18px;line-height:1}
.barra-dia .per{font-weight:700;min-width:170px;text-align:center;color:var(--ink)}
.barra-dia select{margin-left:auto;width:auto;min-width:220px;max-width:100%}
@media (max-width:640px){.barra-dia select{margin-left:0;width:100%}}
/* célula de grelha que alinha o botão pela base, sem inline */
.alinha-fim{align-self:end} .alinha-fim button,.btns button{margin:0}
/* <label> que faz de botão (input file escondido) = botão secundário */
label.botao{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 18px;margin:0;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:#334155;font-size:14px;font-weight:600;cursor:pointer}
label.botao:hover{background:var(--bg-2)}
/* contador/hora ao lado do h2 do card */
.card h2 small{font-size:13px;color:var(--ink-2);font-weight:500}
/* ---- pedidos da frente B --------------------------------------------------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.tabs .tab.on{color:var(--pri);border-bottom-color:var(--mod,var(--pri))}
@media (max-width:767px){.tabs .tab{min-height:36px;padding:6px 10px}}
.pg-head .pg-extra{margin-left:8px;color:var(--ink-2)}
.pg-head .pg-extra small,.pg-head .pg-extra span{font-size:13px;font-weight:500}
