:root{--azul:#2f6f52;--verde:#4a8a16;--verde2:#345f0f;--bg:#f3f6f4;--borda:#d7e0da;--surface:#ffffff;--surface-soft:#eef2f0;--text:#16241c;--muted:#5c6b64;--input-bg:#ffffff;--shadow:rgba(15,35,25,.08);--card:#ffffff;--input:#ffffff;--green:#4a8a16;--line:#d7e0da;--border:#d7e0da;--accent:#4a8a16}
:root[data-theme="dark"]{--azul:#72d4b4;--verde:#8cc63f;--verde2:#4a8a16;--bg:#0d1820;--borda:#253549;--surface:#152030;--surface-soft:#1c2d40;--text:#e5edf8;--muted:#7a96b2;--input-bg:#0d1820;--shadow:rgba(0,0,0,.35);--card:#152030;--input:#0d1820;--green:#8cc63f;--line:#253549;--border:#253549;--accent:#4a8a16}
*{box-sizing:border-box}
body{margin:0;font-family:'Inter',system-ui,-apple-system,'Segoe UI',Arial,sans-serif;background:var(--bg);color:var(--text);transition:background .2s ease,color .2s ease;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
header{background:var(--surface);border-bottom:3px solid var(--verde);padding:10px 20px;display:flex;align-items:center;flex-wrap:nowrap;box-shadow:0 2px 16px var(--shadow);position:sticky;top:0;z-index:800}
header img#siteLogo{margin:0 auto;width:160px;max-width:40%;height:auto;filter:none;flex-shrink:0}
header h1{margin:0;color:var(--azul);font-size:22px;font-weight:800;letter-spacing:-.025em}
header p{margin:3px 0 0;color:var(--muted);font-size:12.5px}
/* Depois do login o <header> antigo não é mais o cabeçalho visível do sistema — cada módulo
   (Início/Banco/Atendimento/...) renderiza seu próprio ".mod-topbar" dentro do painel, seguindo
   a identidade visual V12.3 (ver .mod-topbar/.atend-topbar). O <header> continua no DOM (login o
   usa como âncora de inserção, e o botão de menu mobile é injetado dentro dele por sidebar.js),
   só perde toda a moldura visível para não duplicar o cabeçalho. */
body.klm-pro-unlocked header{padding:0;border-bottom:0;box-shadow:none;background:transparent;min-height:0}
body.klm-pro-unlocked header img#siteLogo,
body.klm-pro-unlocked header .hdr-right{display:none}
main{max-width:none;margin:16px 0 0;padding:0 20px 30px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.tabbtn{background:var(--surface);border:1.5px solid var(--borda);padding:8px 15px;border-radius:999px;cursor:pointer;font-weight:600;color:var(--muted);font-size:13px;font-family:inherit;transition:all .18s ease;letter-spacing:.01em}
.tabbtn:hover{border-color:var(--verde);color:var(--text);transform:translateY(-1px);box-shadow:0 2px 8px var(--shadow)}
.tabbtn.active{background:var(--verde2);color:#fff;border-color:var(--verde2);box-shadow:0 3px 12px rgba(0,0,0,.2)}
.panel{display:none;background:var(--surface);border-radius:16px;padding:24px 26px;box-shadow:0 4px 28px var(--shadow),0 1px 4px rgba(0,0,0,.04)}
/* Sub-navegação em abas da aba "Exames" (Preenchimento Manual / Importar Exame / Exames
   Cadastrados / Comparativo e Evolução). Classes próprias (.exam-tab-*), não .tabbtn, porque
   openTab() em app.js remove "active" de todo .tabbtn ao trocar de aba principal. */
.exam-tabs{display:flex;gap:6px;margin:0 0 18px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.exam-tab-btn{flex:0 0 auto;white-space:nowrap;background:var(--surface);border:1.5px solid var(--borda);padding:8px 15px;border-radius:999px;cursor:pointer;font-weight:600;color:var(--muted);font-size:13px;font-family:inherit;transition:all .18s ease;letter-spacing:.01em}
.exam-tab-btn:hover{border-color:var(--verde);color:var(--text);transform:translateY(-1px);box-shadow:0 2px 8px var(--shadow)}
.exam-tab-btn.active{background:var(--verde2);color:#fff;border-color:var(--verde2);box-shadow:0 3px 12px rgba(0,0,0,.2)}
.exam-tab-panel{margin:0}
.exam-tab-panel>summary{display:none}
.exam-tab-panel[open]{padding-top:2px}
/* Cards do histórico "Exames Cadastrados" e acordeões internos (Hemograma, Lipidograma...),
   reaproveitando o mesmo visual de .card/.notice já usado no resto do sistema. */
.examHistCard{border:1px solid var(--borda);border-radius:12px;background:var(--surface-soft);margin:10px 0;box-shadow:0 1px 8px var(--shadow);overflow:hidden}
.examHistCard>summary{cursor:pointer;padding:12px 16px;font-weight:700;color:var(--text);list-style:none}
.examHistCard>summary::-webkit-details-marker{display:none}
.examHistCard>summary::before{content:"▸";display:inline-block;margin-right:8px;color:var(--verde);transition:transform .15s ease}
.examHistCard[open]>summary::before{transform:rotate(90deg)}
.examHistCardBody{padding:0 16px 16px}
.examHistActions{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
.examImportGroup{border:1px solid var(--borda);border-radius:10px;margin:10px 0;overflow:hidden}
.examImportGroup>summary{cursor:pointer;padding:9px 13px;font-weight:700;font-size:13px;background:var(--surface);color:var(--muted);list-style:none}
.examImportGroup>summary::-webkit-details-marker{display:none}
.examPublishBar,#examImportActionsBar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}
.panel.active{display:block}
h2{color:var(--verde);border-bottom:2px solid var(--borda);padding-bottom:10px;margin-top:4px;font-size:1.15rem;font-weight:800;letter-spacing:-.015em}
h3{color:var(--azul);margin-top:20px;font-weight:700;font-size:.97rem;letter-spacing:-.01em}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.full{grid-column:1/-1}
label{display:block;font-weight:600;font-size:11.5px;margin-bottom:5px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}
input,select,textarea{width:100%;padding:9px 11px;border:1.5px solid var(--borda);border-radius:8px;font-size:14px;background:var(--input-bg);color:var(--text);font-family:inherit;transition:border-color .18s ease,box-shadow .18s ease}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--verde);box-shadow:0 0 0 3px rgba(140,198,63,.18)}
textarea{min-height:72px;resize:vertical}
#interpExames{min-height:240px}
button{background:var(--verde2);color:#fff;border:0;border-radius:8px;padding:10px 16px;font-weight:700;cursor:pointer;font-family:inherit;font-size:13.5px;letter-spacing:.01em;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}
button:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.22);opacity:.93}
button:active{transform:translateY(0);box-shadow:none;opacity:1}
button.green{background:#4a9318} button.alt{background:#4b5563} button.red{background:#9f1239} button.gold{background:#986b00}
.actions{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0}
.notice{background:var(--surface-soft);color:var(--text);border:1px solid var(--borda);border-left:4px solid var(--verde);border-radius:8px;padding:12px 15px;font-size:13.5px;margin-bottom:14px;line-height:1.55}
.notice.storage-error{background:#fff1f2;border-color:#f3a7b8;border-left-color:#9f1239;color:#7f1d1d}
.card{border:1px solid var(--borda);border-radius:12px;padding:14px 16px;background:var(--surface-soft);margin:10px 0;box-shadow:0 1px 8px var(--shadow)}
table.ui{width:100%;border-collapse:collapse;font-size:13px;margin-top:10px}
table.ui th,table.ui td{border:1px solid var(--borda);padding:9px 11px;text-align:left;vertical-align:top}
table.ui th{background:var(--surface-soft);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
table.ui tbody tr:hover td{background:var(--surface-soft)}
canvas{max-width:100%;background:var(--surface);border:1px solid var(--borda);border-radius:12px;margin-top:12px;box-shadow:0 2px 10px var(--shadow)}
.checks{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.checks label{font-weight:500;background:var(--surface-soft);border:1.5px solid var(--borda);border-radius:8px;padding:9px;text-transform:none;letter-spacing:normal;cursor:pointer;transition:border-color .15s ease;font-size:13px}
.checks label:hover{border-color:var(--verde)}
.checks input{width:auto;margin-right:5px}
#preview,#painelNutri,#pedidoPreview,#recordatorioResumo{border:1px solid var(--borda);border-radius:12px;padding:18px;overflow:auto;background:var(--surface);box-shadow:0 1px 6px var(--shadow)}
#tabelaRecordatorio{overflow-x:auto;max-width:100%}
.plan-editor{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;gap:7px;padding:10px;margin:12px 0;background:var(--surface-soft);border:1px solid var(--borda);border-radius:12px;box-shadow:0 4px 18px var(--shadow)}
.editor-group{display:flex;align-items:center;gap:5px;padding-right:7px;border-right:1px solid var(--borda)}
.editor-group select{width:auto;min-width:82px;padding:7px}
.editor-buttons button,.editor-table-tools button{padding:7px 9px;min-height:34px;background:var(--surface);color:var(--text);border:1px solid var(--borda);font-weight:700}
.editor-buttons button:hover,.editor-table-tools button:hover{border-color:var(--verde);background:var(--bg)}
.editor-table-tools{flex:1;flex-wrap:wrap;border-right:0}
.editor-table-tools span{font-size:12px;font-weight:800;color:var(--muted)}
.editor-table-tools .danger-lite{color:#9f1239;border-color:#f3a7b8}
.editor-color{display:flex;align-items:center;gap:4px;height:34px;padding:4px 7px;margin:0;background:var(--surface);border:1px solid var(--borda);border-radius:7px;cursor:pointer}
.editor-color input{width:25px;height:23px;padding:0;border:0;background:transparent;cursor:pointer}
.editor-color.highlight{font-size:16px}
.editor-status{flex-basis:100%;font-size:12px;color:var(--muted);padding:2px 4px}
#preview [contenteditable="true"]{outline:2px dashed transparent;outline-offset:3px;transition:outline-color .15s ease}
#preview [contenteditable="true"]:focus{outline-color:var(--verde)}
#preview [contenteditable="true"] td:focus,#preview [contenteditable="true"] th:focus{outline:2px solid var(--verde);outline-offset:-2px}
.doc,.doc-page,.pd-preview-paper{--azul:#062842;--verde:#8cc63f;--verde2:#1f4f46;--text:#222;--surface:#fff;--surface-soft:#fff;--borda:#d1d5db;--muted:#555;color:#111}
/* Pré-visualização compacta de documento (ex.: portal-manager.js) — mesmo escopo de tokens
   "papel" de .doc/.doc-page, sem o tamanho/paginação A4 (usado dentro de painéis pequenos). */
.pd-preview-paper{background:#fff}
.doc .card,.doc-page .card,.doc .notice,.doc-page .notice{background:#fff!important;color:#111!important;border:1px solid #d1d5db!important;box-shadow:none!important}
.doc .card *,.doc-page .card *,.doc .notice *,.doc-page .notice *{color:#111!important}
.doc{font-family:Arial,Helvetica,sans-serif;color:#111;width:210mm;min-height:297mm;margin:auto;background:#fff;padding:14mm 12mm 0;border:2px solid #111}
.doc[contenteditable=true]{outline:2px dashed #c7df9b}
.doc .top-logo{text-align:center;margin-bottom:8px}
.doc .top-logo img{width:320px;max-width:90%;height:auto;filter:none}
.doc h1{text-align:center;font-size:18px;margin:10px 0 14px;color:#111;border:0;padding:0}
.doc h3{font-size:13px;margin:10px 0 5px;color:#111}
.doc p{font-size:12px;margin:4px 0;line-height:1.25}
.doc table{width:100%;border-collapse:collapse;margin-top:12px;font-size:11px}
.doc th{background:var(--verde);border:1px solid #111;padding:6px;text-align:center}
.doc td{border:1px solid #111;padding:5px;vertical-align:middle}
.doc .sec td{background:var(--verde);height:13px;padding:0;line-height:13px}
.doc .obs{font-size:11px;text-align:justify;margin-top:7px}
.signature-area{margin-top:28px;page-break-inside:avoid}
.signature-line{width:340px;margin:0 auto;border-top:1px solid #111;text-align:center;padding-top:5px;font-size:11px}
.footer-img{width:calc(100% + 24mm);margin-left:-12mm;margin-top:16px;display:block}
.small{font-size:12px;color:var(--muted)}
@media(max-width:900px){.grid,.grid3,.checks{grid-template-columns:1fr}.doc{width:100%;padding:18px 12px 0}.footer-img{width:calc(100% + 24px);margin-left:-12px}.plan-editor{position:static}.editor-group{border-right:0}.editor-group select{min-width:110px}}
@page{size:A4;margin:12mm}
@media print{
body{background:#fff!important}
header,.tabs,.panel:not(#plano),#plano>h2,#plano>.notice,#plano>.actions,#plano>.small,.plan-editor{display:none!important}
main{margin:0!important;padding:0!important;max-width:none!important}
#plano{display:block!important;box-shadow:none!important;padding:0!important;background:#fff!important}
#preview{border:0!important;padding:0!important;margin:0!important;overflow:visible!important}
.doc{width:186mm!important;min-height:auto!important;margin:0 auto!important;border:0!important;padding:0!important}
.doc tr{page-break-inside:avoid}
.footer-img{width:186mm!important;margin-left:0!important}
}

/* Navegação lateral recuável */
:root{
  --sidebar-width: 228px;
  --sidebar-collapsed-width: 62px;
}

body.with-sidebar{
  padding-left: var(--sidebar-width);
}

body.with-sidebar.sidebar-collapsed{
  padding-left: var(--sidebar-collapsed-width);
}

.app-sidebar{
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--sidebar-width);
  z-index: 900;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 8px;
  /* Chrome fixo (não segue o tema): a sidebar inteira usa uma paleta própria de
     texto quase-branco/overlays translúcidos (ver .app-sidebar .tabbtn e afins),
     igual ao precedente já adotado para header/sidebar do Portal do Paciente. */
  background: linear-gradient(180deg, #111c2d 0%, #0d1725 100%);
  border-right: 1px solid rgba(170, 205, 235, .18);
  box-shadow: 12px 0 32px rgba(0,0,0,.22);
  transition: width .22s ease;
  overflow: hidden;
}

body.sidebar-collapsed .app-sidebar{
  width: var(--sidebar-collapsed-width);
  align-items: center;
}

/* HARD AUTH GATE — three-layer protection:
   1. main[hidden] attribute set in HTML (works before any CSS or JS)
   2. This CSS rule hides main unconditionally (works even if HTML cache is stale)
   3. setAuthState(true) in supabase-online.js removes [hidden] and adds klm-pro-unlocked
   The dashboard is NEVER visible without an authenticated session. */
main { display: none !important; }
body.klm-pro-unlocked main { display: block !important; }
.app-sidebar { display: none !important; }
body.klm-pro-unlocked .app-sidebar { display: flex !important; }

/* During session check — hide everything to prevent any flash */
body.supabase-checking main,
body.supabase-checking .app-sidebar,
body.supabase-checking .supabase-auth-panel,
body.supabase-checking header .professional-user-menu{
  display: none !important;
}

body.supabase-locked{
  padding-left: 0 !important;
}

body.supabase-locked .app-sidebar,
body.supabase-locked .auth-user-chip,
body.supabase-locked .professional-user-menu{
  display: none !important;
}

.sidebar-head{
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 0 8px 7px;
  border-bottom: 1px solid rgba(255,255,255,.09);
  flex-shrink: 0;
}

/* Marca do app no topo da trilha compacta — substitui o antigo botão de recolher/expandir
   (a sidebar não tem mais modo largo, então não há mais o que alternar). */
.sidebar-brand{
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(135deg, #8cc63f, #4a8a16);
  color: #0d1725;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 13px;
  flex-shrink: 0;
}

/* Slot do botão de tema (mesmo #hdrThemeBtn do header antigo, só realocado aqui por JS —
   ver sidebar.js installSidebar). */
.sidebar-theme-slot{
  display: flex;
  justify-content: center;
  padding: 6px 0;
  flex-shrink: 0;
}
.app-sidebar #hdrThemeBtn{
  width: 42px;
  height: 42px;
  border-radius: 8px;
  color: #f4f8fb;
  border: 1px solid transparent;
  background: transparent;
}
.app-sidebar #hdrThemeBtn:hover{
  border-color: rgba(143, 203, 74, .45);
  background: rgba(143, 203, 74, .10);
  color: #f4f8fb;
}

.app-sidebar .tabs{
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  gap: 5px;
  flex: 1;
  min-height: 0;
  padding: 0 0 8px;
  margin: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: thin;
  scrollbar-color: rgba(143, 203, 74, .65) rgba(255,255,255,.06);
}

.app-sidebar .tabs::-webkit-scrollbar{
  width: 7px;
}

.app-sidebar .tabs::-webkit-scrollbar-thumb{
  background: rgba(143, 203, 74, .65);
  border-radius: 999px;
}

.app-sidebar .tabs::-webkit-scrollbar-track{
  background: rgba(255,255,255,.06);
}

.app-sidebar .tabbtn{
  display: flex;
  width: 100%;
  min-height: 30px;
  justify-content: flex-start;
  align-items: center;
  gap: 9px;
  padding: 7px 10px;
  text-align: left;
  border-radius: 6px;
  border: 1px solid transparent;
  background: transparent;
  color: #f4f8fb;
  box-shadow: none;
  white-space: nowrap;
  font-size: 12.5px;
  line-height: 1.1;
}

.app-sidebar .tabbtn:hover{
  transform: none;
  border-color: rgba(143, 203, 74, .45);
  background: rgba(143, 203, 74, .10);
}

.app-sidebar .tabbtn.active{
  border-color: rgba(143, 203, 74, .55);
  background: rgba(255, 255, 255, .10);
  color: #e8ffdb;
}

/* Ícone contextual "Atendimento em andamento" — só existe na sidebar enquanto há uma consulta
   ativa (ver window.klmSidebarSetAtendimentoActive em sidebar.js, chamado por atendimento.js). */
.app-sidebar .tabbtn.tabbtn-atend-active{
  border-color: rgba(143, 203, 74, .6);
  background: rgba(143, 203, 74, .16);
  color: #c8f59d;
}
.app-sidebar .tabbtn.tabbtn-atend-active.active{
  background: rgba(143, 203, 74, .3);
}

.sidebar-icon{
  width: 18px;
  min-width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: currentColor;
}

.sidebar-svg{
  width: 17px;
  height: 17px;
  display: block;
}

.sidebar-label{
  flex: 1;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.sidebar-collapsed .app-sidebar .tabbtn{
  width: 42px;
  height: 42px;
  padding: 0;
  justify-content: center;
}

body.sidebar-collapsed .sidebar-label{
  display: none;
}

body.sidebar-collapsed .app-sidebar .tabs{
  align-items: center;
}

body.with-sidebar > main{
  max-width: 100%;
}

.sidebar-user-slot{
  width: 100%;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,.09);
  flex-shrink: 0;
  margin-top: auto;
}

.sidebar-pro-info{
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 8px;
  border: 1px solid rgba(170,205,235,.18);
  border-radius: 8px;
  background: rgba(255,255,255,.045);
  width: 100%;
  box-sizing: border-box;
}
.sidebar-pro-info[hidden]{ display: none !important; }
.sidebar-pro-name{
  flex: 1;
  min-width: 0;
  color: #dfffdc;
  font-size: 12px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sidebar-logout-btn{
  width: auto;
  min-height: 30px;
  padding: 7px 9px;
  border-radius: 7px;
  background: rgba(75,85,99,.9);
  font-size: 12px;
  flex-shrink: 0;
}
body.sidebar-collapsed .sidebar-pro-info{
  width: 42px;
  padding: 0;
  border: 0;
  background: transparent;
  justify-content: center;
}
body.sidebar-collapsed .sidebar-pro-name{ display: none; }
body.sidebar-collapsed .sidebar-logout-btn{
  width: 42px;
  height: 42px;
  min-height: 42px;
  padding: 0;
}

.app-sidebar .professional-user-menu{
  width: 100%;
  margin: 0;
  padding: 8px;
  display: flex;
  align-items: center;
  gap: 7px;
  border: 1px solid rgba(170,205,235,.18);
  border-radius: 8px;
  background: rgba(255,255,255,.045);
}

.app-sidebar .professional-user-menu span{
  min-width: 0;
  flex: 1;
  max-width: none;
  color: #dfffdc;
  font-size: 12px;
  font-weight: 800;
}

.app-sidebar .professional-user-menu button{
  width: auto;
  min-height: 30px;
  padding: 7px 9px;
  border-radius: 7px;
  background: rgba(75, 85, 99, .9);
  font-size: 12px;
}

body.sidebar-collapsed .sidebar-user-slot{
  padding-top: 7px;
}

body.sidebar-collapsed .app-sidebar .professional-user-menu{
  width: 42px;
  padding: 0;
  border: 0;
  background: transparent;
  justify-content: center;
}

body.sidebar-collapsed .app-sidebar .professional-user-menu span{
  display: none;
}

body.sidebar-collapsed .app-sidebar .professional-user-menu button{
  width: 42px;
  height: 42px;
  min-height: 42px;
  padding: 0;
}

/* Corretor ortográfico dos documentos editáveis */
.spellcheck-dock{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 8px 0;
}

.spellcheck-button{
  border: 1px solid rgba(145, 210, 95, .75);
  background: rgba(74, 126, 24, .85);
  color: #fff;
  border-radius: 10px;
  padding: 8px 12px;
  font-weight: 800;
  cursor: pointer;
}

.spellcheck-button:hover{
  background: #5aa51d;
}

.spellcheck-panel{
  display: none;
  margin: 10px 0 16px;
  padding: 12px;
  border: 1px solid rgba(170, 205, 235, .22);
  border-radius: 14px;
  background: rgba(255,255,255,.045);
  color: var(--text);
}

.spellcheck-panel.active{
  display: block;
}

.spellcheck-panel h4{
  margin: 0 0 8px;
  color: var(--accent);
}

.spellcheck-issue{
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) auto;
  gap: 8px;
  align-items: center;
  padding: 8px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.10);
  margin-top: 7px;
}

.spellcheck-word{
  font-weight: 800;
}

.spellcheck-suggestion{
  color: #bdf0c7;
}

.spellcheck-actions{
  display: flex;
  gap: 6px;
}

.spellcheck-actions button{
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 8px;
  padding: 6px 9px;
  background: rgba(255,255,255,.07);
  color: var(--text);
  cursor: pointer;
}

.spellcheck-actions button:first-child{
  background: rgba(74, 126, 24, .9);
  color: #fff;
}

@media (max-width: 900px){
  body.with-sidebar,
  body.with-sidebar.sidebar-collapsed{
    padding-left: 0;
  }

  .app-sidebar{
    width: var(--sidebar-width) !important;
    align-items: flex-start !important;
    transform: translateX(-100%);
    transition: transform .28s cubic-bezier(.4,0,.2,1) !important;
    z-index: 1000;
    box-shadow: none;
  }

  body.mobile-sidebar-open .app-sidebar{
    transform: translateX(0);
    box-shadow: 8px 0 32px rgba(0,0,0,.45);
  }

  /* Resetar o estado collapsed no mobile — sidebar sempre expandida quando aberta */
  body.sidebar-collapsed .app-sidebar{
    width: var(--sidebar-width) !important;
    align-items: flex-start !important;
  }
  body.sidebar-collapsed .sidebar-head-label,
  body.sidebar-collapsed .sidebar-label{
    display: block !important;
  }
  body.sidebar-collapsed .app-sidebar .tabbtn{
    width: 100% !important;
    height: auto !important;
    padding: 7px 10px !important;
    justify-content: flex-start !important;
  }
  body.sidebar-collapsed .app-sidebar .tabs{
    align-items: flex-start !important;
  }
  body.sidebar-collapsed .app-sidebar .professional-user-menu{
    width: 100% !important;
    padding: 8px !important;
    border: 1px solid rgba(170,205,235,.18) !important;
    background: rgba(255,255,255,.045) !important;
    justify-content: flex-start !important;
  }
  body.sidebar-collapsed .app-sidebar .professional-user-menu span{ display: block !important; }
  body.sidebar-collapsed .app-sidebar .professional-user-menu button{ width: auto !important; height: auto !important; padding: 7px 9px !important; }
  body.sidebar-collapsed .sidebar-user-slot{ padding-top: 8px !important; }
  body.sidebar-collapsed .sidebar-pro-info{ width: 100% !important; padding: 8px !important; border: 1px solid rgba(170,205,235,.18) !important; background: rgba(255,255,255,.045) !important; justify-content: flex-start !important; }
  body.sidebar-collapsed .sidebar-pro-name{ display: block !important; }
  body.sidebar-collapsed .sidebar-logout-btn{ width: auto !important; height: auto !important; padding: 7px 9px !important; }

  /* Ocultar a seta de recolher no mobile */
  .sidebar-toggle{
    display: none !important;
  }

  /* Mostrar o cabeçalho da sidebar corretamente */
  .sidebar-head-label{
    display: block !important;
  }
  .sidebar-label{
    display: block !important;
  }
}

/* Overlay do menu lateral no mobile */
.mobile-sidebar-overlay{
  display: none;
  position: fixed;
  inset: 0;
  z-index: 999;
  background: rgba(10,18,30,.55);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}
body.mobile-sidebar-open .mobile-sidebar-overlay{
  display: block;
}

/* Botão hambúrguer do mobile (injetado no header via JS) */
.mobile-sidebar-btn{
  display: none;
  width: 38px;
  height: 38px;
  min-height: 38px;
  padding: 0;
  border-radius: 8px;
  background: var(--azul);
  color: #fff;
  border: 0;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0,0,0,.2);
}
.mobile-sidebar-btn .sidebar-svg{
  width: 20px;
  height: 20px;
}
@media (max-width: 900px){
  .mobile-sidebar-btn{
    display: inline-flex;
  }
}

/* Ocultar hambúrguer na tela de login / carregamento inicial */
body.supabase-locked .mobile-sidebar-btn,
body.auth-checking .mobile-sidebar-btn {
  display: none !important;
}

/* Scroll com momentum no iOS */
.app-sidebar .tabs{
  -webkit-overflow-scrolling: touch;
}

@media print{
  body.with-sidebar{
    padding-left: 0 !important;
  }
  .app-sidebar,
  .spellcheck-dock,
  .spellcheck-panel{
    display: none !important;
  }
}


/* ===== v10.5.14 – Modern Design Refresh ===== */
fieldset{border:1.5px solid var(--borda);border-radius:10px;padding:14px 16px;margin:10px 0}
fieldset legend{font-weight:700;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:0 6px}
fieldset:disabled{opacity:.65}
select[size]{border-radius:10px;padding:6px 8px}
.food-item-card{border:1px solid var(--borda);border-radius:10px;padding:10px 12px;background:var(--surface);margin:6px 0;box-shadow:0 1px 6px var(--shadow)}
.consultations-panel{background:var(--surface-soft);border:1px solid var(--borda);border-radius:12px;padding:16px;margin-top:12px}
.patient-bank-picker .grid,.patient-bank-picker{gap:14px}

.version-badge{background:#eef7f4;border:1px solid #b9ddd4;color:#1f4f46;border-radius:999px;padding:4px 10px;font-weight:700;font-size:11px;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle}
.site-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.site-title h1{margin:0}.app-info-btn{width:28px;height:28px;border-radius:50%;padding:0;min-height:0;background:var(--surface-soft);color:var(--azul);border:1px solid var(--borda);font-weight:900}.app-info-box{display:none;flex-basis:100%;max-width:720px;margin:4px 0 0!important;font-size:.92rem}.app-info-box.show{display:block}
.professional-user-menu{margin-left:auto;display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--borda);border-radius:999px;background:var(--surface-soft)}.professional-user-menu[hidden]{display:none!important}.professional-user-menu span{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:800;color:var(--azul);font-size:.92rem}.professional-user-menu button{width:auto;min-height:34px;padding:7px 10px}
.supabase-logged header .large-print-option{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:32px;margin:0;padding:5px 9px;border:1px solid var(--borda);border-radius:999px;background:var(--surface);font-size:0;color:var(--text);cursor:pointer}
.supabase-logged header .large-print-option::after{content:"A+";font-size:12px;font-weight:900}
.supabase-logged header .large-print-option input{width:14px;height:14px;margin:0}
.supabase-logged header .professional-user-menu{order:9;margin-left:0}
.professional-settings-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:18px}.professional-photo-preview{display:block;width:92px;height:92px;object-fit:cover;border:1px solid var(--borda);border-radius:50%;background:#fff}.notice.compact{padding:10px;margin:0}.external-link{display:inline-flex;align-items:center;min-height:42px;color:var(--verde2);font-weight:800}
.evo-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.evo-card{background:#fff;border:1px solid #d9dee7;border-radius:12px;padding:14px 16px;box-shadow:0 2px 10px rgba(0,0,0,.06);transition:transform .15s ease,box-shadow .15s ease}
.evo-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.1)}
.evo-card b{display:block;color:#062842;font-size:13px}
.evo-card span{font-size:20px;font-weight:800;color:#1f4f46}
.evo-good{border-left:5px solid #5a9d22}.evo-att{border-left:5px solid #986b00}.evo-bad{border-left:5px solid #9f1239}
.doc-page{font-family:Arial,Helvetica,sans-serif;color:#111;width:210mm;min-height:297mm;margin:0 auto 12mm;background:#fff;padding:14mm 12mm 0;border:2px solid #111;page-break-after:always}
.doc-page .top-logo{text-align:center;margin-bottom:8px}.doc-page .top-logo img{width:320px;max-width:90%;height:auto;filter:none}
.doc-page h1{text-align:center;font-size:18px;margin:10px 0 14px;color:#111;border:0;padding:0}.doc-page h3{font-size:13px;margin:10px 0 5px;color:#111}.doc-page p{font-size:12px;margin:4px 0;line-height:1.25}
.doc-page table{width:100%;border-collapse:collapse;margin-top:12px;font-size:11px}.doc-page th{background:var(--verde);border:1px solid #111;padding:6px;text-align:center}.doc-page td{border:1px solid #111;padding:5px;vertical-align:middle}
.doc-page .sec td{background:var(--verde);height:13px;padding:0;line-height:13px}.doc-page .obs{font-size:11px;text-align:justify;margin-top:7px}
.doc-page[contenteditable=true]{outline:2px dashed #c7df9b}
.page-title{background:#f0f5ef;border:1px solid #c9d7c2;border-radius:8px;padding:8px;margin:8px 0 12px;text-align:center;font-weight:800}
.tea-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tea-box{border:1px solid #111;padding:7px;border-radius:5px;font-size:11px;page-break-inside:avoid}
.tea-box b{display:block;color:#062842;margin-bottom:3px}
.print-note{font-size:11px;color:#555}
@media(max-width:900px){.evo-cards{grid-template-columns:1fr}.doc-page{width:100%;padding:18px 12px 0}}
@media print{.doc-page{width:186mm!important;min-height:273mm!important;margin:0 auto!important;border:0!important;padding:0!important}.doc-page{page-break-after:always}.doc-page:last-child{page-break-after:auto}}


/* v10.3.1 - Impressão A4 ajustada */
.doc-stack{background:#eee;padding:8px}
.doc-page{position:relative;overflow:hidden}
.doc-page.no-signature .signature-area{display:none!important}
.doc-page.with-signature{padding-bottom:38mm}
.doc-page.with-signature .signature-area{position:absolute;left:12mm;right:12mm;bottom:22mm;margin:0}
.doc-page.with-signature .footer-img{position:absolute;left:-12mm;right:0;bottom:0;margin:0;width:calc(100% + 24mm)}
#pedidoPreview .doc-page{padding-bottom:40mm}
#pedidoPreview .exam-request-list,#pedidoPreview .exam-request-list li,#pedidoPreview .exam-request-list .exam-name{color:#111!important;opacity:1!important;visibility:visible!important}
#pedidoPreview .exam-request-list{padding-left:7mm;margin:4mm 0}
#pedidoPreview .exam-request-list li{display:list-item;margin:1.6mm 0;font-size:12.5px;line-height:1.35}
#pedidoPreview .signature-area{position:absolute;left:12mm;right:12mm;bottom:22mm;margin:0}
#pedidoPreview .footer-img{position:absolute;left:-12mm;right:0;bottom:0;margin:0;width:calc(100% + 24mm)}
.food-row{display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr auto;gap:8px;align-items:end}
.food-item-card{border:1px solid #ddd;border-radius:8px;padding:8px;background:#fff;margin:6px 0}
.food-item-card b{color:#062842}
@media print{
  @page{size:A4;margin:10mm}
  .doc-stack{background:#fff!important;padding:0!important}
  .doc-page{width:190mm!important;min-height:277mm!important;margin:0 auto!important;border:0!important;padding:0!important;page-break-after:always;overflow:hidden!important}
  .doc-page.with-signature{padding-bottom:35mm!important}
  .doc-page.with-signature .signature-area{position:absolute!important;left:0!important;right:0!important;bottom:20mm!important;margin:0!important}
  .doc-page.with-signature .footer-img{position:absolute!important;left:0!important;bottom:0!important;width:190mm!important;margin:0!important}
  #pedidoPreview .doc-page{width:190mm!important;min-height:277mm!important;padding:0 0 35mm 0!important}
  #pedidoPreview .signature-area{position:absolute!important;left:0!important;right:0!important;bottom:20mm!important;margin:0!important}
  #pedidoPreview .footer-img{position:absolute!important;left:0!important;bottom:0!important;width:190mm!important;margin:0!important}
}


/* v10.3.2 - Rodapé em todas as páginas e assinatura apenas na última */
.doc-page{position:relative;overflow:hidden;padding-bottom:30mm!important}
.doc-page.no-signature .signature-area{display:none!important}
.doc-page.no-signature .footer-img{display:block!important}
.doc-page.with-signature{padding-bottom:48mm!important}
.doc-page .footer-img{position:absolute;left:-12mm;right:0;bottom:0;margin:0!important;width:calc(100% + 24mm)!important;display:block!important}
.doc-page.with-signature .signature-area{position:absolute;left:12mm;right:12mm;bottom:24mm;margin:0!important}
#pedidoPreview .doc-page{position:relative;overflow:hidden;padding-bottom:48mm!important}
#pedidoPreview .footer-img{position:absolute;left:-12mm;bottom:0;margin:0!important;width:calc(100% + 24mm)!important}
#pedidoPreview .signature-area{position:absolute;left:12mm;right:12mm;bottom:24mm;margin:0!important}
@media print{
  @page{size:A4;margin:8mm}
  body{background:#fff!important}
  .doc-stack{background:#fff!important;padding:0!important}
  .doc-page{width:194mm!important;min-height:281mm!important;margin:0 auto!important;border:0!important;padding:0 0 30mm 0!important;page-break-after:always;overflow:hidden!important;position:relative!important}
  .doc-page.with-signature{padding-bottom:45mm!important}
  .doc-page .footer-img{position:absolute!important;left:0!important;bottom:0!important;width:194mm!important;margin:0!important}
  .doc-page.with-signature .signature-area{position:absolute!important;left:0!important;right:0!important;bottom:22mm!important;margin:0!important}
  #pedidoPreview .doc-page{width:194mm!important;min-height:281mm!important;margin:0 auto!important;border:0!important;padding:0 0 45mm 0!important;position:relative!important;overflow:hidden!important}
  #pedidoPreview .footer-img{position:absolute!important;left:0!important;bottom:0!important;width:194mm!important;margin:0!important}
  #pedidoPreview .signature-area{position:absolute!important;left:0!important;right:0!important;bottom:22mm!important;margin:0!important}
}


/* v10.4.6 salvamento testado definitivo - correção de impressão e páginas A4 */
.doc-stack{background:#eee;padding:8px}
.doc-page{
  width:210mm!important;
  min-height:297mm!important;
  margin:0 auto 12mm!important;
  background:#fff!important;
  padding:12mm 12mm 8mm!important;
  border:1px solid #111!important;
  display:flex!important;
  flex-direction:column!important;
  position:relative!important;
  overflow:hidden!important;
}
.doc-page .top-logo{flex:0 0 auto}
.doc-page .doc-content{flex:1 1 auto}
.doc-page .footer-img{
  width:calc(100% + 24mm)!important;
  margin-left:-12mm!important;
  margin-right:-12mm!important;
  margin-top:auto!important;
  display:block!important;
  position:static!important;
}
.doc-page.no-signature .signature-area{display:none!important}
.doc-page.with-signature .signature-area{
  display:block!important;
  margin:16mm 0 6mm!important;
  position:static!important;
}
.doc-page.with-signature .footer-img{position:static!important}
#pedidoPreview .doc-page .signature-area{margin:18mm 0 6mm!important;position:static!important}
@media print{
  @page{size:A4;margin:8mm}
  body{background:#fff!important}
  header,.tabs,.panel:not(#plano),#plano>h2,#plano>.notice,#plano>.actions,#plano>.small{display:none!important}
  main{margin:0!important;padding:0!important;max-width:none!important}
  #plano{display:block!important;box-shadow:none!important;padding:0!important;background:#fff!important}
  #preview{border:0!important;padding:0!important;margin:0!important;overflow:visible!important}
  .doc-stack{background:#fff!important;padding:0!important}
  .doc-page{
    width:194mm!important;
    min-height:281mm!important;
    margin:0 auto!important;
    border:0!important;
    padding:0!important;
    page-break-after:always!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
  }
  .doc-page:last-child{page-break-after:auto!important}
  .doc-page .footer-img{width:194mm!important;margin-left:0!important;margin-right:0!important;margin-top:auto!important}
  .doc-page tr{page-break-inside:avoid!important}
}

/* Rodapé institucional: regra final única para tela, impressão e arquivos exportados. */
.doc,.doc-page{
  position:relative!important;
  overflow:hidden!important;
  padding-bottom:38mm!important;
}
.doc .footer-img,.doc-page .footer-img,
#pedidoPreview .doc-page .footer-img{
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:100%!important;
  height:auto!important;
  margin:0!important;
  display:block!important;
}
.doc-page.with-signature,#pedidoPreview .doc-page.with-signature{
  padding-bottom:52mm!important;
}
.doc-page.with-signature .signature-area,
#pedidoPreview .doc-page .signature-area{
  position:absolute!important;
  left:12mm!important;
  right:12mm!important;
  bottom:32mm!important;
  margin:0!important;
}
@media print{
  .doc,.doc-page,#pedidoPreview .doc-page{
    position:relative!important;
    padding-bottom:34mm!important;
  }
  .doc-page.with-signature,#pedidoPreview .doc-page.with-signature{
    padding-bottom:48mm!important;
  }
  .doc .footer-img,.doc-page .footer-img,#pedidoPreview .doc-page .footer-img{
    position:absolute!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    width:100%!important;
    margin:0!important;
  }
  .doc-page.with-signature .signature-area,#pedidoPreview .doc-page .signature-area{
    left:0!important;
    right:0!important;
    bottom:30mm!important;
  }
}

/* Formato final padronizado: A4 real (210 × 297 mm) em todos os documentos. */
@page{size:210mm 297mm;margin:0}
.doc,.doc-page,#pedidoPreview .doc-page{
  box-sizing:border-box!important;
  width:210mm!important;
  height:297mm!important;
  min-height:297mm!important;
  max-height:297mm!important;
}
@media print{
  html,body{
    width:210mm!important;
    margin:0!important;
    padding:0!important;
    background:#fff!important;
  }
  .doc,.doc-page,#pedidoPreview .doc-page{
    box-sizing:border-box!important;
    width:210mm!important;
    height:297mm!important;
    min-height:297mm!important;
    max-height:297mm!important;
    margin:0!important;
    border:0!important;
    padding:12mm 12mm 34mm!important;
    page-break-after:always!important;
    break-after:page!important;
    overflow:hidden!important;
  }
  .doc-page.with-signature,#pedidoPreview .doc-page.with-signature{
    padding-bottom:48mm!important;
  }
  .doc:last-child,.doc-page:last-child{
    page-break-after:auto!important;
    break-after:auto!important;
  }
}

/* Legibilidade final dos documentos; formatação manual em linha continua prevalecendo. */
.doc,.doc-page{font-size:12.5px;line-height:1.38}
.doc p,.doc-page p,.doc li,.doc-page li{font-size:12.5px;line-height:1.38}
.doc table,.doc-page table{font-size:11.5px}
.doc h1,.doc-page h1{font-size:19px}
.doc h2,.doc-page h2{font-size:16px}
.doc h3,.doc-page h3{font-size:13px}
:root[data-large-print="true"] .doc,:root[data-large-print="true"] .doc-page{font-size:15.5px;line-height:1.42}
:root[data-large-print="true"] .doc p,:root[data-large-print="true"] .doc-page p,:root[data-large-print="true"] .doc li,:root[data-large-print="true"] .doc-page li{font-size:15.5px;line-height:1.42}
:root[data-large-print="true"] .doc table,:root[data-large-print="true"] .doc-page table{font-size:14px}
:root[data-large-print="true"] .doc h1,:root[data-large-print="true"] .doc-page h1{font-size:23px}
:root[data-large-print="true"] .doc h2,:root[data-large-print="true"] .doc-page h2{font-size:20px}
:root[data-large-print="true"] .doc h3,:root[data-large-print="true"] .doc-page h3{font-size:17px}

/* Painel clínico de nutrientes — não integra os documentos impressos. */
.plan-subtabs{display:flex;gap:8px;margin:16px 0 0;padding:5px;border:1px solid var(--border,#cad6d1);border-radius:12px;background:rgba(5,40,66,.05)}
.plan-subtabs button{flex:1;margin:0;background:transparent;color:var(--text,#062842);border:0;border-radius:9px;padding:11px;font-weight:800}.plan-subtabs button.active{background:#277c43;color:#fff;box-shadow:0 3px 10px rgba(0,0,0,.14)}
.plan-subview{display:none}.plan-subview.active{display:block}
.nutrient-panel{margin:16px 0;padding:18px;border:1px solid var(--border,#cad6d1);border-radius:14px;background:var(--card,#fff);box-shadow:0 8px 24px rgba(5,40,66,.08)}
.nutrient-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.nutrient-panel-head h3{margin:0 0 4px;color:var(--text,#062842)}
.nutrient-panel-head p{margin:0;color:var(--muted,#5f6b70)}
.nutrient-row-editor{display:grid;grid-template-columns:minmax(210px,2fr) 110px 150px auto auto auto;gap:10px;align-items:end;padding:14px;border-radius:10px;background:rgba(92,157,34,.09);margin-bottom:14px}
.nutrient-row-editor>strong,.nutrient-row-editor>span{grid-column:1/-1}.nutrient-row-editor label{margin:0;font-weight:700}.nutrient-row-editor input,.nutrient-row-editor select{width:100%;margin-top:5px}
.nutrient-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}.nutrient-summary>div{padding:12px;border:1px solid var(--border,#d4ddd8);border-radius:10px;text-align:center}.nutrient-summary b{display:block;font-size:22px;color:#277c43}.nutrient-summary span{font-size:12px;color:var(--muted,#5f6b70)}
.nutrient-table-wrap{overflow-x:auto}.nutrient-table{min-width:720px}.nutrient-meter{display:inline-block;width:84px;height:8px;margin-right:7px;border-radius:8px;overflow:hidden;background:#e4e8e6;vertical-align:middle}.nutrient-meter i{display:block;height:100%;background:#4cae63}
.nutrient-status{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:800}.nutrient-status.adequate{background:#dff4e5;color:#176b35}.nutrient-status.attention{background:#fff0c7;color:#815d00}.nutrient-status.low{background:#fde2e2;color:#9b2525}
/* Fase 2 — IA do Recordatório (badges reaproveitados pelos cards da Etapa 7B) */
.ia-status{display:inline-block;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:800;margin:1px 3px 1px 0}
.ia-status-estimado{background:#e0e7ff;color:#3730a3}
.ia-alergeno-tag{font-size:11px;color:#9b2525;margin-top:3px}
/* Etapa 7B — Recordatório em cards (fluxo por descrição em linguagem natural, no espírito do
   Diário Alimentar do paciente). Reaproveita os tokens --surface/--surface-soft/--borda/--text/
   --muted já usados no resto do app — nenhuma cor nova, nenhuma regra extra pro tema escuro (o
   próprio token já troca de valor, mesmo padrão de .pd-food-card/.evo-card acima). */
.rec-meal-card{background:var(--surface-soft);border:1px solid var(--borda);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.rec-meal-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.rec-meal-meta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:15px}
.rec-meal-chips{display:flex;flex-wrap:wrap;gap:6px}
.rec-meal-desc{font-style:italic;color:var(--muted);font-size:13px;margin:6px 0}
.rec-food-actions,.rec-meal-actions{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0 0}
.rec-food-edit-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--borda)}
.rec-food-edit-fields label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted)}
.rec-food-edit-fields input,.rec-food-edit-fields select{margin-top:0}
/* Mesmo tom âmbar de #d69b15 já usado em .nutrient-issues (abaixo) pra "precisa de atenção" — só
   a borda (sem fundo preenchido), então não cria a "caixa clara esquecida" que um fundo pastel
   sólido criaria no tema escuro; não precisa de par --dark dedicado. */
.rec-food-alert{border-left:3px solid #d69b15}
.nutrient-issues{margin-top:12px;padding:12px;border-left:4px solid #d69b15;background:#fff8e7;color:#5f470d}.nutrient-issues ul{margin-bottom:0}.nutrient-note,.nutrient-empty{color:var(--muted,#5f6b70);font-size:12px}.nutrient-selected-row td{outline:2px solid #168a50;outline-offset:-2px}
@media(max-width:900px){.nutrient-row-editor{grid-template-columns:1fr 1fr}.nutrient-row-editor label:first-of-type{grid-column:1/-1}.nutrient-summary{grid-template-columns:1fr}}
@media print{.nutrient-panel,.plan-subtabs{display:none!important}.plan-subview{display:block!important}}

.adaptive-anamnesis{margin:18px 0;padding:16px;border:1px solid var(--borda);border-radius:14px;background:var(--surface-soft)}
.adaptive-anamnesis h3{display:flex;align-items:center;gap:10px;margin-top:0}.profile-badge{font-size:.75rem;padding:5px 9px;border-radius:999px;background:#277c43;color:#fff}
.adaptive-anamnesis-group{display:none;margin-top:14px;padding-top:10px;border-top:1px solid var(--borda)}.adaptive-anamnesis-group.active{display:block}.adaptive-anamnesis-group h4{color:var(--text);margin:0 0 10px}
.substitution-panel{margin:16px 0;padding:18px;border:1px solid var(--borda);border-radius:14px;background:var(--surface)}.substitution-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:12px 0}.substitution-controls label{min-width:180px;flex:1}.substitution-controls label input[type="checkbox"]{width:auto}.import-food-label input{display:block;margin-top:5px}.substitution-table-wrap{overflow:auto;margin:12px 0}.substitution-source{font-size:.82rem;color:var(--muted)}#substitutionPreview .doc-page{margin-top:18px}
.finalization-status{display:flex;flex-direction:column;gap:3px;margin:12px 0;padding:13px 15px;border-radius:12px;border:1px solid}.finalization-status.pending{background:#fff7df;border-color:#d89a17;color:#5b3b00}.finalization-status.ready{background:#e9f8ee;border-color:#3d9a5d;color:#174d2a}.finalization-status.stale{background:#fdecec;border-color:#c94b4b;color:#702020}.personalization-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:12px 0}.personalization-summary>div{padding:10px;border:1px solid var(--borda);border-radius:10px}.combo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.combo-card{border:1px solid #9aa4ad;border-radius:10px;padding:10px;background:#fff;color:#111}.combo-card b{color:#174d2a}
@media print{.substitution-controls,.substitution-panel>.actions{display:none!important}}
#planEditorView.editing-substitutions{padding:0}#planEditorView.editing-substitutions #preview{display:none}#planEditorView.editing-substitutions #planEditor{margin-bottom:10px}
.substitution-editor-host{display:none}.substitution-editor-host + .plan-editor{margin:14px 0 8px!important;top:52px!important;z-index:70}.editing-substitutions .editable-document-end-actions[data-document-target="preview"]{display:none!important}
.clinical-risk-section,.adaptive-conduct{margin:18px 0;padding:16px;border:1px solid var(--borda);border-radius:14px;background:var(--surface-soft)}.disease-checks label{min-width:180px}.protocol-guidance{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;margin-top:12px}.protocol-card{padding:12px;border:1px solid var(--borda);border-radius:10px;background:var(--surface);color:var(--text)}.protocol-card p{margin:5px 0}.protocol-card a{color:var(--accent)}.field-status{font-size:.72rem;margin-left:6px;padding:2px 6px;border-radius:999px}.field-status.required{background:#ffe0e0;color:#8c1d1d}.field-status.recommended{background:#fff0c7;color:#674800}.requirements-box{padding:12px;border:1px solid var(--borda);border-radius:10px;background:var(--surface-soft)}.requirements-box ul{margin:6px 0}.conduct-group{display:none;margin-top:12px}.conduct-group.active{display:block}.context-anthro{display:none}.context-anthro.active{display:block}
.calculation-engine{margin:18px 0;padding:16px;border:1px solid var(--borda);border-radius:14px;background:var(--surface-soft)}.calculation-recommendation{padding:12px;border-left:5px solid #277c43;background:var(--surface);border-radius:8px;margin:10px 0}.calculation-audit{margin-top:12px;padding:12px;border:1px solid var(--borda);border-radius:10px;background:var(--surface);font-size:.92rem}.calculation-audit table{width:100%;border-collapse:collapse}.calculation-audit td,.calculation-audit th{padding:6px;border:1px solid var(--borda);text-align:left}.method-warning{color:#9a3412;font-weight:700}
.calculation-relation-note{margin:14px 0 0;padding:11px 13px;border:1px solid color-mix(in srgb,var(--green) 45%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--green) 8%,var(--input));color:var(--text);font-size:.9rem;line-height:1.45}
.active-energy-method{margin-top:4px}.active-energy-formula{min-height:76px;padding:12px 14px;border:2px solid var(--verde);border-radius:10px;background:var(--surface);color:var(--text);line-height:1.5}.active-energy-formula code{display:inline-block;margin:5px 0;color:var(--text);white-space:normal}.energy-auto-tag{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:999px;background:#dff4e6;color:#185c35;font-size:.78rem}#energyKcalKgField[hidden],#energyCalorimetryField[hidden],#energyActivityField[hidden]{display:none!important}
.plan-calculation-check{margin:5mm 0;padding:4mm;border:1px solid #64748b;border-left:4px solid #64748b;border-radius:3mm;background:#fff;color:#111;font-size:11px}.plan-calculation-check p{margin:1.5mm 0}.plan-calculation-check.ok{border-left-color:#168a50}.plan-calculation-check.review{border-left-color:#d69b15;background:#fffaf0}

/* Harmonização do painel nutricional com todos os temas, inclusive o escuro. */
.plan-subtabs{border-color:var(--borda);background:var(--surface-soft)}
.plan-subtabs button{color:var(--text)}
.nutrient-panel{border-color:var(--borda);background:var(--surface);box-shadow:0 8px 24px var(--shadow)}
.nutrient-panel-head h3{color:var(--text)}.nutrient-panel-head p,.nutrient-note,.nutrient-empty{color:var(--muted)}
.nutrient-summary>div{border-color:var(--borda);background:var(--surface-soft)}.nutrient-summary b{color:var(--verde)}.nutrient-summary span{color:var(--muted)}
.nutrient-table th,.nutrient-table td{color:var(--text)!important;background:var(--surface)!important;border-color:var(--borda)!important}.nutrient-table th{background:var(--surface-soft)!important}
.nutrient-note a{color:var(--verde);font-weight:800}
.gestation-hidden,.gestation-tool{display:none!important}.gestation-tool.gestation-active{display:block!important}.checks label.gestation-tool.gestation-active{display:block!important}
.gestation-card{margin:12px 0 18px;padding:14px;border:1px solid #e4a9ba;border-left:5px solid #be185d;border-radius:10px;background:color-mix(in srgb,var(--surface) 88%,#fce7f3)}.gestation-card h3{margin-top:0;color:#be185d}
.patient-bank-picker{display:grid;grid-template-columns:minmax(220px,1fr) minmax(320px,2fr);gap:14px;align-items:start}.patient-bank-picker select,.consultations-panel select{min-height:190px;padding:5px}.patient-bank-picker option,.consultations-panel option{padding:9px 8px;border-bottom:1px solid var(--borda)}
.consultations-panel{margin-top:16px;padding:16px;border:1px solid var(--borda);border-left:5px solid var(--verde);border-radius:10px;background:var(--surface-soft)}.consultations-panel h3{margin-top:0}.bank-tools{padding-top:12px;border-top:1px solid var(--borda)}
@media(max-width:760px){.patient-bank-picker{grid-template-columns:1fr}}
.consultation-toolbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 0 14px;padding:9px 10px;border:1px solid var(--borda);border-radius:9px;background:var(--surface-soft);box-shadow:0 3px 10px var(--shadow)}.consultation-toolbar span{margin-right:auto;font-size:12px;font-weight:700;color:var(--muted)}.consultation-toolbar button{padding:7px 11px}
.consultation-locked>:not(.consultation-toolbar){opacity:.94}.consultation-locked input:disabled,.consultation-locked select:disabled,.consultation-locked textarea:disabled{opacity:1;color:var(--text);background:var(--surface-soft);cursor:not-allowed}
#fichaPaciente fieldset{margin:0;padding:0;border:0}#fichaPaciente fieldset:disabled input,#fichaPaciente fieldset:disabled select,#fichaPaciente fieldset:disabled textarea{opacity:1;color:var(--text);background:var(--surface-soft)}
.patient-documents{margin-top:16px;padding:14px;border:1px solid var(--borda);border-radius:10px;background:var(--surface-soft)}.patient-documents h3{margin-top:0}.patient-documents button{margin:4px}
@media(max-width:760px){.consultation-toolbar{position:static;flex-wrap:wrap}.consultation-toolbar span{flex-basis:100%}}
@media print{.consultation-toolbar{display:none!important}}

/* Evolução visual e relatório do paciente. */
#graficosEvolucao canvas{display:block;width:100%;height:auto;margin:16px 0;background:#fff!important;border:1px solid #cbd5df;border-radius:14px;box-shadow:0 5px 18px var(--shadow)}
.skinfold-panel{display:block!important;margin:22px 0;padding:22px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--green) 8%));box-shadow:0 8px 24px var(--shadow)}
.skinfold-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.skinfold-heading h3{margin:3px 0 5px;color:var(--text);font-size:1.45rem}
.skinfold-heading p{margin:0;color:var(--muted);max-width:820px;line-height:1.5}
.skinfold-kicker{color:var(--green);font-weight:800;font-size:.72rem;letter-spacing:.16em}
.skinfold-status{flex:none;padding:7px 12px;border:1px solid color-mix(in srgb,var(--green) 55%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--green) 12%,transparent);color:var(--text);font-size:.82rem;font-weight:700}
.skinfold-main-grid{display:grid;grid-template-columns:minmax(230px,1.5fr) minmax(150px,.75fr) minmax(150px,.75fr) minmax(180px,.8fr);gap:14px;align-items:stretch}
.skinfold-control,.skinfold-result,.skinfold-action,.skinfold-interpretation{border:1px solid var(--line);border-radius:14px;background:var(--input);padding:14px}
.skinfold-control label,.skinfold-interpretation label{display:block;margin-bottom:7px;font-weight:800;color:var(--text)}
.skinfold-control small,.skinfold-action small{display:block;margin-top:7px;color:var(--muted);line-height:1.35}
.skinfold-result{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:94px}
.skinfold-result span{font-size:.8rem;font-weight:700;color:var(--muted);margin-bottom:5px}
.skinfold-result input{border:0!important;background:transparent!important;padding:0!important;color:var(--text)!important;font-size:1.7rem!important;font-weight:850;box-shadow:none!important}
.skinfold-result strong{position:absolute;right:14px;bottom:18px;color:var(--muted);font-size:.86rem}
.skinfold-highlight{border-color:color-mix(in srgb,var(--green) 65%,var(--line));background:color-mix(in srgb,var(--green) 10%,var(--input))}
.skinfold-action{display:flex;flex-direction:column;justify-content:center}.skinfold-action button{width:100%;min-height:44px}
.skinfold-measurements{margin-top:14px;padding:16px;border:1px dashed color-mix(in srgb,var(--green) 55%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--input) 94%,var(--green) 6%)}
.skinfold-measurements:empty{display:none}
/* Etapa 5A — arquitetura de protocolos de dobras: os 10 campos são sempre os mesmos (nunca
   recriados); o protocolo escolhido só alterna qual campo fica em destaque (dobra-ativa) vs
   menor destaque (dobra-inativa) — mesma linguagem visual de .anthro-highlight (Antropometria),
   com classe própria pra não ser afetada por aquele mecanismo. */
.dobra-campo{transition:opacity .15s ease}
.dobra-campo.dobra-ativa{background:color-mix(in srgb,var(--card) 88%,var(--green) 12%);border-radius:8px;box-shadow:inset 3px 0 0 var(--green);padding:6px 8px;margin:-6px -8px}
.dobra-campo.dobra-ativa label{font-weight:700}
.dobra-campo.dobra-inativa{opacity:.6}
.skinfold-interpretation{margin-top:14px}.skinfold-interpretation textarea{min-height:86px;background:var(--card);color:var(--text)}
@media(max-width:900px){.skinfold-main-grid{grid-template-columns:1fr 1fr}.skinfold-control,.skinfold-action{grid-column:1/-1}}
@media(max-width:560px){.skinfold-panel{padding:16px}.skinfold-heading{display:block}.skinfold-status{display:inline-block;margin-top:10px}.skinfold-main-grid{grid-template-columns:1fr}.skinfold-control,.skinfold-action{grid-column:auto}}
/* Reorganização da Antropometria em 4 blocos (Condições/Medidas/Composição/Resultados) — reaproveita
   .card/.grid/.notice já existentes, só acrescenta: título de cada bloco, destaque visual dos campos
   calculados (readonly) e o recolhimento das referências técnicas. Nenhuma cor nova fora da paleta. */
#antropometria .anthro-block>h3{margin-top:0}
#antropometria input[readonly]{background:var(--surface-soft);border-color:var(--borda);color:var(--muted);font-weight:600}
#antropometria .anthro-references{margin-top:10px}
#antropometria .anthro-references summary{cursor:pointer;font-weight:600;color:var(--muted);padding:4px 0}
#antropometria .anthro-references .notice{margin:8px 0 0}
@media(max-width:600px){#antropometria .anthro-block{padding:12px}}
/* Etapa 6A — Bioimpedância: painel próprio (não é um bloco da Antropometria), mas reaproveita a
   MESMA linguagem visual (.card + .grid + .notice já existentes, mesmo padrão de título numerado
   de .anthro-block) — nenhuma cor nova fora da paleta, nenhum componente novo. */
#bioimpedancia .bio-block{margin-top:16px}
#bioimpedancia .bio-block>h3{margin-top:0}
@media(max-width:600px){#bioimpedancia .bio-block{padding:12px}}
/* Etapa 6B — Bioimpedância: avisos/consistência. Mesma técnica de destaque de campo já usada em
   .anthro-highlight/.dobra-campo.dobra-ativa (color-mix com --card, adapta sozinho aos dois temas,
   sem precisar de override em :root[data-theme="dark"]) — só troca a cor de acento (âmbar de aviso,
   já usado no projeto em .plan-calculation-check.review/.field-status.recommended) pelo verde. */
#bioimpedancia .bio-field-warn{background:color-mix(in srgb,var(--card) 85%,#d69b15 15%);border-radius:8px;box-shadow:inset 3px 0 0 #d69b15;padding:6px 8px;margin:-6px -8px}
#bioimpedancia .bio-field-warn label{font-weight:700}
.notice.bio-warning{background:color-mix(in srgb,var(--surface) 88%,#d69b15 12%);border-left-color:#d69b15}
.notice.bio-warning div{margin:3px 0}
/* Etapa 2 — Antropometria adaptada ao perfil: realça (nunca oculta) o campo mais relevante para
   o perfil identificado (idoso/gestante/atleta) — mesma cor de destaque já usada em .notice
   (borda esquerda verde), sem introduzir cor nova. O campo continua editável normalmente. */
#antropometria .anthro-highlight{background:color-mix(in srgb,var(--surface) 88%,var(--green) 12%);border-radius:8px;box-shadow:inset 3px 0 0 var(--green);padding:6px 8px;margin:-6px -8px}
#antropometria .anthro-highlight label{font-weight:700}
/* Etapa 3 — condições da avaliação atual (edema/ascite/amputação/etc.): reaproveita .checks
   (mesma grade de 4 colunas já usada em doenças/antecedentes) e .notice — nenhum componente novo. */
#antropometria .anthro-eval-conditions{margin-top:16px}
#antropometria .anthro-eval-conditions h4{margin:0 0 6px}
/* Etapa 4 — subgrupos de "Medidas antropométricas" (Básicas/Circunferências/Dobras/Outras).
   Reaproveita .grid/.notice já existentes; details/summary nativos dão navegação por teclado
   de graça (Tab não entra em conteúdo recolhido, Enter/Espaço no summary expande). */
#antropometria .anthro-measure-group{margin-top:14px}
#antropometria .anthro-measure-group:first-of-type{margin-top:10px}
#antropometria .anthro-measure-group>h4{margin:0 0 8px;font-size:.92rem;color:var(--text)}
#antropometria details.anthro-measure-group{border-top:1px solid var(--borda);padding-top:10px}
#antropometria details.anthro-measure-group summary{cursor:pointer;font-weight:700;font-size:.92rem;padding:2px 0}
#antropometria details.anthro-measure-group[open] summary{margin-bottom:8px}
/* Etapa 4 — identifica peso/altura como estimados (mesmo par de cores já usado em
   .field-status.recommended, só com classe própria pra não ser removido por status()). */
.est-badge{font-size:.72rem;margin-left:6px;padding:2px 6px;border-radius:999px;background:#fff0c7;color:#674800;font-weight:600}
:root[data-theme="dark"] .est-badge{background:rgba(161,98,7,.25);color:#fde047}
.body-evolution-card{max-width:920px;margin:18px auto;padding:22px;border:1px solid #374151;border-radius:18px;background:#fff;color:#111;box-shadow:none;overflow:hidden}.body-evolution-title{text-align:center}.body-evolution-title span{font-size:11px;font-weight:900;letter-spacing:2px;color:#111}.body-evolution-title h3{margin:5px 0;color:#111;font-size:25px}.body-evolution-title p{margin:0;color:#111}.body-evolution-layout{display:grid;grid-template-columns:1fr 210px 1fr;grid-template-rows:1fr 1fr;gap:18px;align-items:center;margin-top:14px}.body-silhouette{grid-column:2;grid-row:1/3;text-align:center}.body-silhouette svg{width:170px;max-height:330px}.body-metric{padding:14px;border:2px solid #374151;border-radius:12px;background:#fff;color:#111}.body-metric.left{text-align:right}.body-metric.right{text-align:left}.body-metric.top{align-self:end}.body-metric.bottom{align-self:start}.body-metric small,.body-metric span{display:block;color:#111}.body-metric b{display:block;margin:3px 0;font-size:23px;color:#111}.body-metric span{font-size:11px}.body-evolution-note{margin:12px 0 0;text-align:center;font-size:11px;color:#111}
.evolution-report-chart{display:block;width:100%;margin:14mm auto 0;border:1px solid #ccd6dc;border-radius:3mm}
.doc-page .body-evolution-card{margin:4mm auto;padding:5mm;border-radius:4mm;box-shadow:none}.doc-page .body-evolution-title h3{font-size:18px}.doc-page .body-evolution-layout{grid-template-columns:1fr 58mm 1fr;gap:3mm;margin-top:2mm}.doc-page .body-silhouette svg{width:50mm;max-height:96mm}.doc-page .body-metric{padding:3mm}.doc-page .body-metric b{font-size:15px}.doc-page .body-metric small,.doc-page .body-metric span{font-size:9px}
@media(max-width:700px){.body-evolution-layout{grid-template-columns:1fr 130px 1fr;gap:8px}.body-silhouette svg{width:120px}.body-metric{padding:9px}.body-metric b{font-size:17px}}
.body-silhouette img{display:block;width:230px;height:400px;margin:auto;object-fit:contain;object-position:center;border-radius:18px}.body-silhouette svg{display:none!important}
.body-evolution-layout{grid-template-columns:1fr 250px 1fr}
.doc-page .body-silhouette img{width:52mm;height:96mm;object-fit:contain;border-radius:3mm}
.evolution-report-charts{display:grid;grid-template-rows:repeat(3,1fr);gap:3mm}.evolution-report-charts .evolution-report-chart{display:block;width:100%;max-height:52mm;margin:0 auto;border:1px solid #ccd6dc;border-radius:3mm;object-fit:contain}
@media(max-width:700px){.body-silhouette img{width:120px;height:250px}}

/* Editor reutilizável dos documentos clínicos. */
.clinical-document-editor{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:12px 0;padding:9px;border:1px solid var(--borda);border-radius:9px;background:var(--surface-soft)}.clinical-document-editor strong{margin-right:5px}.clinical-document-editor button,.clinical-document-editor select{width:auto;padding:7px 9px}.clinical-document-editor input[type="color"]{width:34px;height:32px;padding:2px}.clinical-document-editor-status{font-size:11px;color:var(--muted);margin-left:auto}
#pedidoPreview:focus,#relatorioEvolucaoPreview:focus,#painelNutri:focus{outline:2px solid var(--verde);outline-offset:2px}
@media print{.clinical-document-editor{display:none!important}}

/* Mantém as ferramentas perto do documento durante edições longas. */
.plan-editor,.clinical-document-editor{position:sticky!important;top:52px;z-index:55;max-height:44vh;overflow:auto;box-shadow:0 7px 22px rgba(0,0,0,.2);backdrop-filter:blur(8px)}
.editable-document-end-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin:18px 0 28px;padding:14px;border:1px solid var(--borda);border-radius:12px;background:var(--surface-soft);box-shadow:0 4px 14px var(--shadow)}
.editable-document-end-actions[hidden]{display:none!important}.editable-document-end-actions .editable-save-state{margin-right:auto;color:var(--muted);font-size:.9rem;font-weight:700}.editable-document-end-actions.saved{border-color:#4da96b;background:#e8f8ee}.editable-document-end-actions.saved .editable-save-state{color:#166534}.editable-document-end-actions button{width:auto;min-height:40px}
.geb-method-details{margin:10px 0;padding:14px;border:1px solid var(--borda);border-left:5px solid var(--verde);border-radius:10px;background:var(--surface-soft);color:var(--text);line-height:1.45}.geb-method-details h4{margin:0 0 8px;color:var(--text)}.geb-method-details p{margin:5px 0}.geb-method-details .method-ok{color:#166534;font-weight:800}.geb-method-details .method-warning{color:#9a3412;font-weight:800}.geb-method-details code{white-space:normal;color:var(--text);background:var(--surface);padding:2px 5px;border-radius:4px}
@media(max-width:900px){.plan-editor,.clinical-document-editor{top:4px;max-height:48vh}.editable-document-end-actions{align-items:stretch;flex-direction:column}.editable-document-end-actions .editable-save-state{margin:0 0 4px}.editable-document-end-actions button{width:100%}}
@media print{.clinical-document-editor,.editable-document-end-actions{display:none!important}}

/* ═══════════════════════════════════════════════════════════════════════════
   DASHBOARD "INÍCIO" — v1.0.0
   ══════════════════════════════════════════════════════════════════════════ */

/* Skeleton enquanto carrega */
.dash-skeleton{
  padding: 32px;
  text-align: center;
  color: var(--muted);
  font-size: 14px;
}

/* Cabeçalho de boas-vindas */
.dash-header{
  padding: 22px 26px;
  margin: -24px -26px 24px;
  background: linear-gradient(135deg, var(--surface-soft) 0%, rgba(74,138,22,.12) 100%);
  border-bottom: 1px solid var(--borda);
  border-radius: 16px 16px 0 0;
}
.dash-greeting-block{
  display: flex;
  align-items: baseline;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.dash-greeting{
  font-size: 1.55rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -.025em;
}
.dash-date{
  font-size: .9rem;
  color: var(--muted);
  font-weight: 500;
}
.dash-summary{
  margin: 0;
  font-size: .93rem;
  color: var(--muted);
  line-height: 1.5;
}

/* Cards de estatísticas */
.dash-stats{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 24px;
}
.dash-stat-card{
  background: var(--surface-soft);
  border: 1px solid var(--borda);
  border-radius: 14px;
  padding: 18px 16px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.dash-stat-card[onclick]{
  cursor: pointer;
}
.dash-stat-card[onclick]:hover{
  transform: translateY(-2px);
  box-shadow: 0 6px 20px var(--shadow);
  border-color: var(--verde);
}
.dash-stat-icon svg{
  width: 22px;
  height: 22px;
  stroke: var(--azul);
}
.dash-stat-value{
  font-size: 2rem;
  font-weight: 900;
  color: var(--azul);
  line-height: 1;
}
.dash-stat-label{
  font-size: .78rem;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
}

/* Layout de duas colunas do dashboard */
.dash-body{
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 20px;
  align-items: start;
}
.dash-main{ min-width: 0; }
.dash-sidebar{ min-width: 0; }

/* Seções genéricas */
.dash-section{
  background: var(--surface-soft);
  border: 1px solid var(--borda);
  border-radius: 14px;
  padding: 18px 20px;
  margin-bottom: 16px;
}
.dash-section h3{
  margin: 0 0 12px;
  color: var(--azul);
  font-size: .97rem;
  font-weight: 800;
}
.dash-section-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.dash-section-head h3{ margin: 0; }
.dash-section-meta{
  font-size: .78rem;
  color: var(--muted);
  font-weight: 600;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 999px;
  padding: 3px 10px;
  white-space: nowrap;
}
.dash-empty{
  color: var(--muted);
  font-size: .9rem;
  margin: 0;
  padding: 10px 0;
}
.dash-ok{
  color: var(--verde);
  font-weight: 700;
}

/* Cards de atenção */
.dash-attention-card{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 14px;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-left: 4px solid #f59e0b;
  border-radius: 10px;
  margin-bottom: 8px;
}
.dash-attention-info{ min-width: 0; flex: 1; }
.dash-attention-name{
  display: block;
  font-weight: 700;
  font-size: .97rem;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dash-attention-meta{
  display: block;
  font-size: .8rem;
  color: var(--muted);
  margin-top: 2px;
}
.dash-attention-actions{ flex-shrink: 0; }
.dash-btn-sm{
  padding: 6px 12px;
  font-size: .8rem;
  border-radius: 7px;
  min-height: auto;
  font-weight: 700;
  cursor: pointer;
  border: 0;
  transition: opacity .15s;
}
.dash-btn-sm:hover{ opacity: .85; }
.dash-btn-primary{ background: var(--verde2); color: #fff; }

/* Atividade recente */
.dash-recent-list{ display: flex; flex-direction: column; gap: 8px; }
.dash-recent-card{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 14px;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 10px;
  cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.dash-recent-card:hover{
  border-color: var(--verde);
  box-shadow: 0 2px 10px var(--shadow);
}
.dash-recent-info{ min-width: 0; flex: 1; }
.dash-recent-name{
  display: block;
  font-weight: 700;
  font-size: .95rem;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dash-recent-meta{
  display: block;
  font-size: .8rem;
  color: var(--muted);
  margin-top: 2px;
}
.dash-recent-badge{
  flex-shrink: 0;
  background: rgba(74,138,22,.15);
  color: var(--verde);
  border: 1px solid rgba(74,138,22,.3);
  border-radius: 999px;
  padding: 3px 9px;
  font-size: .77rem;
  font-weight: 700;
}

/* Acesso rápido */
.dash-quick-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.dash-quick-btn{
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 14px 8px;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 12px;
  cursor: pointer;
  color: var(--text);
  font-size: .8rem;
  font-weight: 700;
  text-align: center;
  transition: border-color .15s ease, background .15s ease, transform .12s ease;
  min-height: 70px;
}
.dash-quick-btn:hover{
  border-color: var(--verde);
  background: var(--surface-soft);
  transform: translateY(-1px);
}
.dash-quick-btn svg{
  width: 20px;
  height: 20px;
  stroke: var(--azul);
}
.dash-quick-btn span{
  line-height: 1.2;
}

/* Tarefas */
.dash-task-add{
  display: flex;
  gap: 7px;
  margin-bottom: 12px;
}
.dash-task-add input{
  flex: 1;
  font-size: .9rem;
  padding: 8px 11px;
}
.dash-task-add button{
  padding: 8px 14px;
  font-size: 1.1rem;
  font-weight: 900;
  min-height: auto;
  border-radius: 8px;
}
.dash-task-list{ display: flex; flex-direction: column; gap: 6px; }
.dash-task-item{
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 12px;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 9px;
  transition: opacity .2s;
}
.dash-task-item.done{
  opacity: .55;
}
.dash-task-text{
  flex: 1;
  font-size: .9rem;
  color: var(--text);
  word-break: break-word;
}
.dash-task-item.done .dash-task-text{
  text-decoration: line-through;
  color: var(--muted);
}
.dash-task-toggle{
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  min-height: 28px;
  padding: 0;
  border-radius: 50%;
  background: transparent;
  border: 1.5px solid var(--borda);
  color: var(--verde);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.dash-task-toggle:hover{ border-color: var(--verde); background: rgba(74,138,22,.08); }
.dash-task-toggle svg{ width: 14px; height: 14px; }
.dash-task-delete{
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  min-height: 24px;
  padding: 0;
  border-radius: 6px;
  background: transparent;
  border: 1px solid transparent;
  color: var(--muted);
  font-size: 1rem;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.dash-task-delete:hover{ color: #9f1239; border-color: #9f1239; }

/* ─── Responsivo Dashboard ──────────────────────────────────────────────── */
@media (max-width: 1100px){
  .dash-stats{ grid-template-columns: repeat(2, 1fr); }
  .dash-body{ grid-template-columns: 1fr; }
  .dash-sidebar{ display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
}
@media (max-width: 700px){
  .dash-stats{ grid-template-columns: repeat(2, 1fr); }
  .dash-greeting{ font-size: 1.25rem; }
  .dash-sidebar{ grid-template-columns: 1fr; }
  .dash-quick-grid{ grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 480px){
  .dash-stats{ grid-template-columns: 1fr 1fr; }
  .dash-quick-grid{ grid-template-columns: repeat(2, 1fr); }
}

/* ═══════════════════════════════════════════════════════════════════════════
   BANCO DE PACIENTES REDESENHADO — v1.0.0
   ══════════════════════════════════════════════════════════════════════════ */

/* Barra de busca + filtros */
.bank-topbar{
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.bank-search-wrap{
  flex: 1;
  min-width: 200px;
}
.bank-search-wrap input{
  width: 100%;
  font-size: .97rem;
  padding: 10px 14px;
}
.banco-filter-bar{
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.banco-filter-chip{
  padding: 7px 14px;
  border-radius: 999px;
  border: 1.5px solid var(--borda);
  background: var(--surface-soft);
  color: var(--muted);
  font-size: .82rem;
  font-weight: 700;
  cursor: pointer;
  transition: border-color .15s, color .15s, background .15s;
  min-height: auto;
}
.banco-filter-chip:hover{
  border-color: var(--verde);
  color: var(--text);
}
.banco-filter-chip.active{
  background: var(--verde2);
  border-color: var(--verde2);
  color: #fff;
}

/* Layout de duas colunas */
.bank-cols{
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 16px;
  align-items: start;
  min-height: 420px;
  margin-bottom: 14px;
}

/* Lista visual de pacientes */
.bank-list-col{ position: relative; }
.bank-hidden-select{
  position: absolute;
  opacity: 0;
  pointer-events: none;
  height: 0;
  width: 0;
  overflow: hidden;
}
.bank-patient-visual-list{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 14px;
  overflow-y: auto;
  max-height: 520px;
  min-height: 200px;
}
.bank-list-empty{
  padding: 20px 16px;
  color: var(--muted);
  font-size: .9rem;
  text-align: center;
  margin: 0;
}
.bank-patient-item{
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--borda);
  cursor: pointer;
  transition: background .12s ease;
}
.bank-patient-item:last-child{ border-bottom: 0; }
.bank-patient-item:hover{ background: var(--surface); }
.bank-patient-item.selected{
  background: rgba(74,138,22,.14);
  border-left: 3px solid var(--verde2);
}
.bpi-name{
  font-weight: 700;
  font-size: .95rem;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bpi-meta{
  display: flex;
  gap: 8px;
  font-size: .78rem;
  color: var(--muted);
  flex-wrap: wrap;
}
.bpi-alert{ color: #f59e0b; font-weight: 700; }

/* Coluna de detalhe */
.bank-detail-col{
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.bank-detail-placeholder{
  background: var(--surface);
  border: 1.5px dashed var(--borda);
  border-radius: 14px;
  padding: 32px 24px;
  text-align: center;
  color: var(--muted);
  font-size: .92rem;
}
.bank-detail-placeholder p{ margin: 0; }

/* Card de resumo do paciente selecionado */
.bpsc-summary{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-top: 3px solid var(--verde);
  border-radius: 14px;
  padding: 18px 20px;
}
.bpsc-header{
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.bpsc-name{
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--text);
  flex: 1;
}
.bpsc-badges{ display: flex; gap: 6px; flex-wrap: wrap; }
.bpsc-badge{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 999px;
  padding: 3px 10px;
  font-size: .78rem;
  font-weight: 700;
  color: var(--muted);
}
.bpsc-obj{
  font-size: .9rem;
  color: var(--text);
  margin-bottom: 12px;
}
.bpsc-stats-row{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.bpsc-stat{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 10px;
  padding: 10px 12px;
  text-align: center;
}
.bpsc-stat-val{
  display: block;
  font-size: 1.2rem;
  font-weight: 900;
  color: var(--azul);
}
.bpsc-stat-lbl{
  display: block;
  font-size: .74rem;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-top: 2px;
}
.bpsc-contact{
  font-size: .85rem;
  color: var(--muted);
  margin-bottom: 12px;
}
/* Só leitura — abrir/nova/cancelar/excluir consulta agora é exclusivo da seção "Consultas"
   dentro do Centro de Atendimento (o Banco administra pacientes, não consultas). */
.bpsc-historico{ margin-bottom: 12px; display: flex; flex-direction: column; gap: 6px; }
.bpsc-historico-lbl{ font-size: 10px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.bpsc-historico-row{ display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 10px; border: 1px solid var(--borda); border-radius: 8px; background: var(--surface); }
.bpsc-historico-date{ font-size: .82rem; font-weight: 700; color: var(--text); }
.bpsc-historico-badge{ font-size: 10px; font-weight: 800; padding: 3px 9px; border-radius: 999px; background: var(--surface-soft); color: var(--muted); }
.bpsc-historico-badge.em_andamento{ background: rgba(59,130,246,.14); color: var(--azul); }
.bpsc-historico-badge.concluida{ background: rgba(22,163,74,.14); color: #16a34a; }
.bpsc-historico-badge.cancelada{ background: rgba(159,18,57,.12); color: #9f1239; }
:root[data-theme="dark"] .bpsc-historico-badge.cancelada{ color: #fda4af; }
.bpsc-action-row{
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.bpsc-action-row button{
  padding: 8px 14px;
  font-size: .85rem;
  min-height: auto;
}

/* Painel de consultas dentro da coluna de detalhe */
.bank-consult-panel{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 14px;
  padding: 16px 18px;
}
.bank-consult-panel h3{
  margin-top: 0;
  margin-bottom: 10px;
}
.bank-consult-label{
  display: block;
  font-weight: 600;
  font-size: 11.5px;
  margin-bottom: 6px;
  color: var(--muted);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.bank-consult-select{
  min-height: 160px;
  padding: 5px 8px;
  border-radius: 10px;
  margin-bottom: 10px;
}

/* Botões secundários e de ferramentas */
.banco-secondary-actions{ padding-top: 4px; border-top: 0; margin-top: 0; }
.bank-tools{ padding-top: 12px; border-top: 1px solid var(--borda); }

/* ─── Responsivo Banco ──────────────────────────────────────────────────── */
@media (max-width: 900px){
  .bank-cols{ grid-template-columns: 1fr; }
  .bank-patient-visual-list{ max-height: 260px; }
  .bank-topbar{ flex-direction: column; align-items: stretch; }
}
@media (max-width: 600px){
  .bpsc-stats-row{ grid-template-columns: repeat(3, 1fr); }
  .banco-filter-bar{ gap: 4px; }
  .banco-filter-chip{ padding: 6px 10px; font-size: .78rem; }
}

/* Escalas clínicas e biblioteca de orientações. */
.clinical-scales,.guidance-manager{margin:20px 0;padding:18px;border:1px solid var(--borda);border-radius:14px;background:var(--surface)}.clinical-scales h3,.guidance-manager h3{margin-top:0}.clinical-scale-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:14px 0}.clinical-scale-grid article{min-width:0;padding:14px;border:1px solid var(--borda);border-radius:12px;background:var(--surface-soft)}.clinical-scale-grid h4{margin:0 0 10px}.clinical-scale-grid img{display:block;width:100%;height:250px;object-fit:contain;margin:0 auto 12px;border-radius:8px;background:#fff}.scale-result{min-height:76px;margin-top:9px;padding:11px;border-left:4px solid var(--verde);border-radius:7px;background:var(--surface);color:var(--text)}.scale-result small,.guidance-summary small,.guidance-option small{display:block;margin-top:5px;color:var(--muted)}
.guidance-filters{display:grid;grid-template-columns:minmax(220px,1fr) 2fr;gap:12px;margin:14px 0}.guidance-summary{padding:12px;border:1px solid var(--borda);border-radius:9px;background:var(--surface-soft)}.guidance-library{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;max-height:430px;overflow:auto;margin:12px 0;padding:4px}.guidance-option{display:flex;align-items:flex-start;gap:9px;padding:11px;border:1px solid var(--borda);border-radius:9px;background:var(--surface-soft);cursor:pointer}.guidance-option:has(input:checked){border-color:var(--verde);box-shadow:inset 4px 0 var(--verde)}.guidance-option input,.check-line input{width:auto;margin-top:3px}.guidance-option.filtered{display:none}.child-guidance-options{margin-top:16px;padding:14px;border:1px solid #60a5fa;border-radius:10px;background:var(--surface-soft)}.child-guidance-options[hidden]{display:none}.check-line{display:flex;align-items:center;gap:8px}.guidance-doc-block{break-inside:avoid;margin:0 0 4mm}.guidance-doc-block h3{margin:3mm 0 1.5mm}.guidance-doc-block ul{margin:0 0 2mm;padding-left:6mm}.guidance-doc-block li{margin:1mm 0;line-height:1.35}.agreement-box{min-height:45mm;margin:8mm 0;padding:6mm;border:2px dashed #46a35f;border-radius:4mm;background:#f4fbf6;font-size:13pt;line-height:1.55}.agreement-signatures{display:grid;grid-template-columns:repeat(3,1fr);gap:8mm;margin-top:25mm}.agreement-signatures span{padding-top:2mm;border-top:1px solid #111;text-align:center}
@media(max-width:950px){.guidance-library{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.clinical-scale-grid,.guidance-filters,.guidance-library{grid-template-columns:1fr}.clinical-scale-grid img{height:auto;max-height:300px}.guidance-library{max-height:520px}}
@media print{.clinical-scales,.guidance-manager{display:none!important}.guidance-document .guidance-doc-block{break-inside:avoid}.guidance-document .clinical-box{break-inside:avoid}}
:root[data-theme="dark"] .notice{background:#273449;color:#f3f4f6;border-color:#526176}
:root[data-theme="dark"] .notice a{color:#bef264}

/* Curvas pediátricas OMS/SISVAN e relatório. */
.pediatric-growth-module{margin:22px 0;padding:18px;border:1px solid var(--borda);border-left:5px solid var(--verde);border-radius:12px;background:var(--surface)}
.pediatric-growth-module h3{margin-top:0}.pediatric-table{margin-top:15px}.pediatric-table th,.pediatric-table td{color:var(--text)!important;background:var(--surface)!important;border-color:var(--borda)!important}.pediatric-table th{background:var(--surface-soft)!important}
#pediatricGrowthChart{display:block;width:100%;height:auto;max-height:620px;margin:16px auto;background:#fff;border:1px solid #374151;border-radius:10px}
.pediatric-alert{margin:14px 0;color:var(--text)}
#pediatricReportPreview{margin-top:18px}.pediatric-report-charts{display:grid;grid-template-columns:1fr;gap:4mm}.pediatric-report-chart{display:block;width:100%;max-height:70mm;object-fit:contain;border:1px solid #9ca3af;page-break-inside:avoid}
@media(max-width:760px){.pediatric-growth-module{padding:11px}.pediatric-table{min-width:760px}.pediatric-growth-module #pediatricGrowthResults{overflow-x:auto}}
@media print{.pediatric-growth-module>.notice,.pediatric-growth-module>.grid,.pediatric-growth-module>.actions,#pediatricGrowthChart,#pediatricGrowthResults{display:none!important}.pediatric-report-chart{max-height:70mm}}
.guidance-group{margin:8px 0;border:1px solid var(--borda,#64748b);border-radius:10px;overflow:hidden;background:var(--surface,#1e293b)}
.guidance-group summary{cursor:pointer;padding:12px 14px;font-weight:800;display:flex;justify-content:space-between;gap:12px;background:rgba(46,139,87,.12)}
.guidance-group summary span{font-size:.82em;font-weight:600;opacity:.8}.guidance-group-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px;padding:10px}
.supplement-panel{margin-top:18px;padding:16px;border:1px solid var(--borda,#64748b);border-radius:14px;background:var(--surface,#1e293b)}
.supplement-editor{margin-top:12px;padding:14px;border:1px solid #64748b;border-radius:12px}.supplement-editor .warning{border-left:4px solid #d69b15}
.supplement-saved-item{position:relative;margin:8px 0;padding:12px 90px 12px 12px;border:1px solid #64748b;border-radius:10px}.supplement-saved-item small{display:block;margin-top:5px;color:var(--muted,#94a3b8)}.supplement-saved-item button{position:absolute;right:8px;top:8px}.supplement-saved-item .supp-reason{font-style:italic}.supplement-saved-item .supp-brand{color:var(--verde,#2e8b57)}
/* supp expanded UI */
.supp-search-wrap{display:flex;gap:6px;margin:10px 0}.supp-search-wrap input{flex:1;padding:8px 12px;border-radius:8px;border:1px solid var(--borda,#475569);background:var(--input,#0f172a);color:var(--texto,#e2e8f0);font-size:14px}.supp-search-wrap button{padding:6px 10px;border-radius:8px;border:1px solid var(--borda,#475569);background:transparent;color:var(--muted,#94a3b8);cursor:pointer}
.supp-search-results,.supp-favs-bar,.supp-cat-details{margin:8px 0}
.supp-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--verde,#2e8b57);margin-right:6px}
.supp-cat-details{border:1px solid var(--borda,#334155);border-radius:10px;overflow:hidden}.supp-cat-summary{cursor:pointer;padding:10px 14px;font-weight:700;display:flex;justify-content:space-between;background:rgba(46,139,87,.08)}.supp-cat-count{font-size:11px;opacity:.7;font-weight:400}.supp-cat-items{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px}
.supp-item-btn{padding:5px 12px;border-radius:20px;border:1px solid var(--borda,#475569);background:transparent;color:var(--texto,#e2e8f0);cursor:pointer;font-size:13px;transition:.15s}.supp-item-btn:hover{background:rgba(46,139,87,.2);border-color:var(--verde,#2e8b57)}.supp-item-btn.supp-fav{border-color:#f59e0b;color:#f59e0b}
.supp-cat-badge{margin-left:6px;font-size:10px;opacity:.7;font-weight:400}
.supp-no-results{color:var(--muted,#94a3b8);font-size:13px;padding:8px 0}
.supp-search-list{display:flex;flex-wrap:wrap;gap:6px;padding:6px 0}
.supp-editor-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:6px;gap:8px}.supp-editor-header h4{margin:0;flex:1}.supp-fav-toggle{background:none;border:none;font-size:20px;cursor:pointer;color:#94a3b8;padding:2px 6px}.supp-fav-toggle.active{color:#f59e0b}.supp-editor-close{background:none;border:1px solid var(--line,#e2e8f0);border-radius:6px;font-size:14px;cursor:pointer;color:var(--muted,#94a3b8);padding:2px 8px;line-height:1.4}.supp-editor-close:hover{background:var(--line,#e2e8f0);color:var(--ink,#0f172a)}
.supp-use-note,.supp-dir-note{font-size:13px;color:var(--muted,#94a3b8);margin:4px 0}

/* Importação inteligente de exames */
/* Exames: UI unificada em exam-manager.js (estilos inline no próprio módulo). */

/* Supabase Auth e banco online. */
.supabase-auth-panel{margin:14px auto 0;max-width:1560px;padding:16px 22px;border:1px solid var(--borda);border-radius:16px;background:var(--surface);box-shadow:0 8px 26px var(--shadow)}
.supabase-auth-panel h2{margin:0 0 4px;color:var(--verde)}.supabase-auth-panel p{margin:0;color:var(--muted)}
.supabase-auth-grid{display:grid;grid-template-columns:minmax(210px,1fr) minmax(180px,1fr) auto auto auto auto auto;gap:10px;align-items:end;margin-top:12px}
.supabase-auth-grid label{margin:0}.supabase-auth-grid button{width:auto;min-height:42px}
.supabase-google-btn{display:inline-flex!important;align-items:center;justify-content:center;gap:10px;background:#fff!important;color:#3c4043!important;border:1px solid #dadce0!important;border-radius:4px!important;font-family:Arial,sans-serif!important;font-weight:600!important;box-shadow:none!important}
.supabase-google-btn:hover{background:#f8fafd!important;border-color:#d2e3fc!important;box-shadow:0 1px 2px rgba(60,64,67,.2)!important}.google-mark{display:inline-block;width:18px;height:18px;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%23EA4335' d='M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z'/%3E%3Cpath fill='%234285F4' d='M46.5 24.5c0-1.57-.14-3.08-.41-4.5H24v9h12.64c-.55 2.96-2.2 5.47-4.69 7.16l7.25 5.62C43.43 37.88 46.5 31.65 46.5 24.5z'/%3E%3Cpath fill='%23FBBC05' d='M10.54 28.41c-.48-1.43-.76-2.96-.76-4.53s.28-3.1.76-4.53l-7.98-6.19C.93 16.43 0 20.1 0 23.88s.93 7.45 2.56 10.72l7.98-6.19z'/%3E%3Cpath fill='%2334A853' d='M24 48c6.48 0 11.92-2.13 15.89-5.81l-7.25-5.62c-2.01 1.35-4.58 2.15-8.64 2.15-6.26 0-11.57-4.22-13.46-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z'/%3E%3C/svg%3E")}
.linklike{background:transparent!important;color:var(--verde2)!important;border:0!important;text-decoration:underline;font-weight:800}
.role-selection-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}
.role-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:36px 20px;font-size:1.1rem;font-weight:700;border-radius:16px;border:2px solid var(--verde2);background:var(--surface-soft);color:var(--verde2);cursor:pointer;transition:background .15s,color .15s,transform .1s,box-shadow .15s}
.role-btn:hover{background:var(--verde2);color:#fff;transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,0,0,.15)}
.role-btn svg{width:52px;height:52px}
.role-back-btn{display:inline-block;margin-bottom:14px;font-size:.95rem}
body.supabase-locked main{display:none}
body.supabase-locked .supabase-auth-panel{max-width:760px;margin-top:30px}
body.supabase-locked .supabase-auth-grid{grid-template-columns:1fr 1fr}
body.supabase-locked #supabaseLoginBtn,body.supabase-locked #supabaseSignupBtn,body.supabase-locked #supabaseGoogleBtn,body.supabase-locked #supabaseForgotBtn{width:100%}
body.supabase-locked header{justify-content:center;padding-top:26px}body.supabase-locked header .professional-user-menu,body.supabase-locked header .app-info-btn,body.supabase-locked header .app-info-box{display:none!important}body.supabase-locked header img{width:260px}body.supabase-locked header .site-title h1{font-size:22px;text-align:center}
@media(max-width:560px){.role-selection-grid{grid-template-columns:1fr}}
body.supabase-logged .supabase-auth-panel{display:none!important}
@media(max-width:760px){.supabase-auth-grid,body.supabase-locked .supabase-auth-grid{grid-template-columns:1fr}.supabase-auth-grid button{width:100%}}
@media(max-width:900px){.professional-settings-layout{grid-template-columns:1fr}.professional-user-menu{width:100%;justify-content:space-between}}

/* ── Dark theme: override hardcoded light colors ───────────────────────────
   Documentos de impressão (.doc, .doc-page) redefinem as variáveis CSS em
   seu próprio escopo e não são afetados pelas regras abaixo.
─────────────────────────────────────────────────────────────────────────── */

/* Avisos */
.notice.storage-error{background:rgba(159,18,57,.2);border-color:rgba(159,18,57,.5);border-left-color:#9f1239;color:#fda4af}

/* Foto do profissional */
.professional-photo-preview{background:var(--surface-soft)}

/* Cartões de evolução */
.evo-card{background:var(--surface);border-color:var(--borda)}
.evo-card b{color:var(--azul)}
.evo-card span{color:var(--verde)}

/* Editor de alimentos */
.food-item-card{background:var(--surface-soft);border-color:var(--borda)}
.food-item-card b{color:var(--azul)}

/* Sub-abas do plano */
.plan-subtabs button.active{background:var(--verde2);color:#fff}

/* Resumo de nutrientes */
.nutrient-summary b{color:var(--verde)}
.nutrient-meter{background:rgba(255,255,255,.1)}
.nutrient-status.adequate{background:rgba(22,101,52,.3);color:#6ee7b7}
.nutrient-status.attention{background:rgba(161,98,7,.3);color:#fde047}
.nutrient-status.low{background:rgba(153,27,27,.3);color:#fca5a5}
.nutrient-issues{background:rgba(161,98,7,.12);color:var(--text);border-left-color:#d69b15}
.ia-status-estimado{background:rgba(67,56,202,.3);color:#c7d2fe}
.ia-alergeno-tag{color:#fca5a5}

/* ── Plano alimentar / Substituições — geradores pd-* (mesma marcação usada no Portal do
   Paciente, ver portal/portal.css). Usa as variáveis locais --surface/--text/--borda/--verde/
   --verde2/--muted, que já trocam de valor dentro de .doc/.doc-page (papel branco no documento
   final) e fora dele (:root, painel escuro do app) — por isso funciona nos dois contextos sem
   regra extra. */
.pd-doc{font-family:Arial,Helvetica,sans-serif;color:var(--text);max-width:100%}
.pd-title{margin:0 0 12px;font-size:19px;font-weight:800;color:var(--text);padding-bottom:10px;border-bottom:2px solid var(--verde)}
.pd-macro-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.pd-macro-chip,.rec-chip{background:var(--surface-soft);border:1px solid var(--borda);color:var(--text);padding:4px 12px;border-radius:20px;font-weight:700;font-size:13px}
.pd-badge{display:flex;align-items:center;gap:8px;background:rgba(22,163,74,.15);color:#16a34a;border-left:4px solid #16a34a;padding:9px 14px;border-radius:6px;font-weight:700;font-size:13px;margin-bottom:16px}
.pd-meal{background:var(--surface-soft);border:1px solid var(--borda);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.pd-meal-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.pd-meal-name{font-size:15px;font-weight:800;color:var(--text)}
.pd-meal-time,.rec-meal-time{font-size:12px;font-weight:700;color:var(--muted);background:var(--surface);border:1px solid var(--borda);border-radius:999px;padding:3px 10px}
.pd-opt-details,.rec-meal-foods-details{margin-bottom:8px;border:1px solid var(--borda);border-radius:8px;overflow:hidden}
.pd-opt-summary,.rec-meal-foods-details summary{background:var(--surface);color:var(--verde2);font-weight:700;font-size:13px;padding:8px 12px;cursor:pointer}
.pd-opt-caret{font-size:10px;color:var(--muted)}
.rec-meal-foods-details>:not(summary){padding:10px 12px}
.pd-table{width:100%;border-collapse:collapse;font-size:13px}
.pd-table th{text-align:left;background:var(--surface);color:var(--muted);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:2px solid var(--borda)}
.pd-table td{padding:9px 10px;border-bottom:1px solid var(--borda);color:var(--text);vertical-align:top}
.pd-table tr:last-child td{border-bottom:0}
.pd-table td.pd-muted{color:var(--muted)}
.pd-empty,.rec-empty-state{color:var(--muted);font-style:italic;font-size:13px;padding:10px 0}
.pd-group{margin-bottom:22px}
.pd-group-head{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;color:var(--verde);background:rgba(22,101,52,.15);padding:9px 14px;border-radius:8px;margin-bottom:12px;border-left:4px solid var(--verde2)}
.pd-food-card,.rec-food-card{background:var(--surface);border:1px solid var(--borda);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.pd-food-meal{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.pd-food-card-head,.rec-food-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--borda)}
.pd-food-name,.rec-food-name{font-size:14px;font-weight:800;color:var(--text)}
.pd-food-portion,.rec-food-qty{font-size:12px;font-weight:700;color:var(--muted)}
.pd-sub-list{display:flex;flex-direction:column;gap:8px}
.pd-sub-item{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.4;color:var(--text)}
.pd-sub-check{flex-shrink:0;width:18px;height:18px;margin-top:1px;color:var(--verde)}
.pd-sub-name{font-weight:700;color:var(--text)}
.pd-sub-portion,.pd-sub-crit{color:var(--muted)}
.pd-sub-pref{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:rgba(22,101,52,.25);color:var(--verde);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
.pd-note{margin-top:16px;padding:12px 14px;background:rgba(161,98,7,.15);border:1px solid rgba(161,98,7,.5);border-radius:8px;font-size:13px;color:var(--text)}

/* Status de finalização */
.finalization-status.pending{background:rgba(161,98,7,.15);border-color:rgba(161,98,7,.6);color:#fde047}
.finalization-status.ready{background:rgba(22,101,52,.15);border-color:rgba(22,101,52,.6);color:#6ee7b7}
.finalization-status.stale{background:rgba(153,27,27,.15);border-color:rgba(153,27,27,.6);color:#fca5a5}

/* Resumo de personalização */
.personalization-summary>div{background:var(--surface-soft);border-color:var(--borda)}

/* Combo de refeições */
.combo-card{background:var(--surface);color:var(--text);border-color:var(--borda)}
.combo-card b{color:var(--azul)}

/* Marcador de energia */
.energy-auto-tag{background:rgba(22,101,52,.2);color:#6ee7b7}

/* Status de campos do formulário */
.field-status.required{background:rgba(153,27,27,.25);color:#fca5a5}
.field-status.recommended{background:rgba(161,98,7,.25);color:#fde047}

/* Verificação de cálculo */
.plan-calculation-check{background:var(--surface);color:var(--text);border-color:var(--borda);border-left-color:var(--borda)}
.plan-calculation-check.ok{border-left-color:#168a50}
.plan-calculation-check.review{background:rgba(161,98,7,.1);border-left-color:#d69b15}

/* Gráficos de evolução */
#graficosEvolucao canvas{background:var(--surface)!important;border-color:var(--borda)}

/* Cartão de evolução corporal */
.body-evolution-card{background:var(--surface);color:var(--text);border-color:var(--borda)}
.body-evolution-title span,.body-evolution-title h3,.body-evolution-title p{color:var(--text)}
.body-metric{background:var(--surface-soft);border-color:var(--borda);color:var(--text)}
.body-metric small,.body-metric span,.body-metric b,.body-evolution-note{color:var(--text)}

/* Ações de documento salvo */
.editable-document-end-actions.saved{background:rgba(22,101,52,.15);border-color:rgba(22,101,52,.6)}
.editable-document-end-actions.saved .editable-save-state{color:#6ee7b7}

/* Escalas clínicas */
.clinical-scale-grid img{background:var(--surface-soft)}

/* Gráfico pediátrico */
#pediatricGrowthChart{background:var(--surface);border-color:var(--borda)}

/* h2 dentro de documentos de impressão: mantém cor escura */
.doc h2,.doc-page h2{color:#1f4f46}

/* Avisos dark (universaliza regra que era só para data-theme=dark) */
:root .notice{background:var(--surface-soft);color:var(--text);border-color:var(--borda)}
:root .notice a{color:var(--verde)}

/* ═══════════════════════════════════════════════════════════════════════════
   DASHBOARD v2 — Central Inteligente de Gestão Clínica
   Prefixo: .dashv2, .dv2-*
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Contêiner principal ───────────────────────────────────────────────── */
.dashv2{
  padding: 4px 0 32px;
  max-width: 1280px;
}

/* ── Topbar ────────────────────────────────────────────────────────────── */
.dv2-top{
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 20px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--borda);
}
.dv2-greet-name{
  margin: 0 0 3px;
  font-size: 1.65rem;
  font-weight: 900;
  color: var(--text);
  letter-spacing: -.03em;
  line-height: 1.1;
}
.dv2-greet-date{
  margin: 0;
  font-size: .88rem;
  color: var(--muted);
  font-weight: 500;
  text-transform: capitalize;
}
.dv2-pills{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.dv2-pill{
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border-radius: 20px;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .01em;
}
.dv2-pill svg{ flex-shrink: 0; }
.dv2-pill-green{ background: rgba(140,198,63,.15); color: var(--verde); border: 1px solid rgba(140,198,63,.35); }
.dv2-pill-yellow{ background: rgba(245,158,11,.14); color: #f59e0b; border: 1px solid rgba(245,158,11,.35); }
.dv2-pill-blue{ background: rgba(114,212,180,.14); color: var(--azul); border: 1px solid rgba(114,212,180,.35); }

/* ── KPIs ──────────────────────────────────────────────────────────────── */
.dv2-kpis{
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 12px;
  margin-bottom: 20px;
}
.dv2-kpi{
  background: var(--surface-soft);
  border: 1px solid var(--borda);
  border-radius: 14px;
  padding: 16px 15px;
  display: flex;
  align-items: center;
  gap: 13px;
  transition: transform .15s, box-shadow .15s, border-color .15s;
}
.dv2-kpi[onclick]{ cursor: pointer; }
.dv2-kpi[onclick]:hover{
  transform: translateY(-2px);
  box-shadow: 0 6px 20px var(--shadow);
  border-color: var(--verde);
}
.dv2-kpi-icon{
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: rgba(140,198,63,.1);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--verde);
}
.dv2-kpi-icon svg{ width: 22px; height: 22px; }
.dv2-kpi-body{ min-width: 0; }
.dv2-kpi-val{
  font-size: 1.7rem;
  font-weight: 900;
  color: var(--text);
  line-height: 1;
  margin-bottom: 2px;
}
.dv2-kpi-lbl{
  font-size: .73rem;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: 3px;
}
.dv2-kpi-sub{
  font-size: .72rem;
  color: var(--muted);
}
.dv2-kpi-trend{
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: .74rem;
  font-weight: 700;
}
.dv2-kpi-trend.up{ color: var(--verde); }
.dv2-kpi-trend.dn{ color: #f87171; }
.dv2-kpi-trend svg{ flex-shrink: 0; }

/* ── Grids de seções ───────────────────────────────────────────────────── */
.dv2-row-agenda{
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 14px;
  margin-bottom: 14px;
  align-items: start;
}
.dv2-row-attn{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-bottom: 14px;
  align-items: start;
}
.dv2-row-tl{
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 14px;
  margin-bottom: 14px;
  align-items: start;
}

/* ── Card base ─────────────────────────────────────────────────────────── */
.dv2-card{
  background: var(--surface-soft);
  border: 1px solid var(--borda);
  border-radius: 14px;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.dv2-card-head{
  display: flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--borda);
}
.dv2-card-ico{
  display: flex;
  align-items: center;
  color: var(--verde);
  flex-shrink: 0;
}
.dv2-card-ico svg{ width: 16px; height: 16px; }
.dv2-card-title{
  margin: 0;
  font-size: .88rem;
  font-weight: 800;
  color: var(--text);
  flex: 1;
}
.dv2-card-link{
  background: none;
  border: none;
  color: var(--azul);
  font-size: .76rem;
  font-weight: 600;
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 6px;
  transition: background .15s;
}
.dv2-card-link:hover{ background: rgba(114,212,180,.12); }
.dv2-card-badge{
  background: rgba(245,158,11,.18);
  color: #f59e0b;
  border-radius: 10px;
  padding: 2px 8px;
  font-size: .73rem;
  font-weight: 700;
}

/* ── Avatar ────────────────────────────────────────────────────────────── */
.dv2-avatar{
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  display: block;
}
.dv2-avatar-wrap{
  flex-shrink: 0;
  border-radius: 50%;
  overflow: hidden;
  display: block;
}
.dv2-avatar-init{
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-weight: 800;
  border-radius: 50%;
  flex-shrink: 0;
  letter-spacing: -.02em;
}

/* ── Prioridades e badges ──────────────────────────────────────────────── */
.dv2-priority{
  padding: 2px 9px;
  border-radius: 10px;
  font-size: .72rem;
  font-weight: 700;
  white-space: nowrap;
  flex-shrink: 0;
}
.dv2-pri-alta{ background: rgba(239,68,68,.18); color: #f87171; }
.dv2-pri-media{ background: rgba(245,158,11,.18); color: #fbbf24; }
.dv2-pri-baixa{ background: rgba(34,197,94,.18); color: #4ade80; }

.dv2-badge{
  padding: 3px 10px;
  border-radius: 10px;
  font-size: .72rem;
  font-weight: 700;
  flex-shrink: 0;
}
.dv2-badge-realizado{ background: rgba(34,197,94,.16); color: #4ade80; }
.dv2-badge-andamento{ background: rgba(245,158,11,.16); color: #fbbf24; }

.dv2-ok{ color: var(--verde); font-weight: 700; }
.dv2-empty{
  font-size: .84rem;
  color: var(--muted);
  text-align: center;
  padding: 12px 0;
  line-height: 1.6;
}
.dv2-empty small{ font-size: .78rem; }
.dv2-icon-btn{
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  transition: color .15s, background .15s;
  flex-shrink: 0;
}
.dv2-icon-btn:hover{ color: var(--azul); background: rgba(114,212,180,.1); }
.dv2-btn-outline{
  background: none;
  border: 1px solid var(--borda);
  color: var(--muted);
  border-radius: 10px;
  padding: 8px 14px;
  font-size: .8rem;
  font-weight: 600;
  cursor: pointer;
  width: 100%;
  transition: border-color .15s, color .15s, background .15s;
  margin-top: 4px;
}
.dv2-btn-outline:hover{ border-color: var(--verde); color: var(--verde); background: rgba(140,198,63,.08); }

/* ── Agenda ────────────────────────────────────────────────────────────── */
.dv2-agenda-list{ display: flex; flex-direction: column; gap: 8px; }
.dv2-agenda-item{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 10px;
  background: var(--surface);
  border: 1px solid var(--borda);
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.dv2-agenda-item:hover{ border-color: var(--verde); background: rgba(140,198,63,.06); }
.dv2-agenda-info{ flex: 1; min-width: 0; }
.dv2-agenda-name{
  display: block;
  font-size: .84rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dv2-agenda-type{
  display: block;
  font-size: .74rem;
  color: var(--muted);
  margin-top: 1px;
}

/* ── Atenção ───────────────────────────────────────────────────────────── */
.dv2-attn-list{ display: flex; flex-direction: column; gap: 8px; }
.dv2-attn-item{
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 8px;
  border-radius: 10px;
  background: var(--surface);
  border: 1px solid var(--borda);
}
.dv2-attn-info{ flex: 1; min-width: 0; }
.dv2-attn-name{
  display: block;
  font-size: .83rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dv2-attn-reason{
  display: block;
  font-size: .72rem;
  color: var(--muted);
  margin-top: 1px;
}

/* ── Tarefas ───────────────────────────────────────────────────────────── */
.dv2-tasks-card{ }
.dv2-task-add{
  display: flex;
  gap: 6px;
  align-items: center;
}
.dv2-task-add input{
  flex: 1;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 9px;
  padding: 7px 11px;
  font-size: .82rem;
  color: var(--text);
  outline: none;
  transition: border-color .15s;
  min-width: 0;
}
.dv2-task-add input:focus{ border-color: var(--verde); }
.dv2-pri-sel{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 8px;
  color: var(--text);
  font-size: .77rem;
  padding: 7px 6px;
  cursor: pointer;
  outline: none;
  flex-shrink: 0;
  max-width: 74px;
}
.dv2-task-add-btn{
  background: var(--verde2);
  color: #fff;
  border: none;
  border-radius: 9px;
  width: 32px;
  height: 32px;
  font-size: 1.2rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background .15s;
}
.dv2-task-add-btn:hover{ background: var(--verde); }
.dv2-task-list{
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 320px;
  overflow-y: auto;
}
.dv2-task-item{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 8px;
  border-radius: 9px;
  background: var(--surface);
  border: 1px solid var(--borda);
  transition: opacity .15s;
}
.dv2-task-item.done{ opacity: .5; }
.dv2-task-chk{
  background: none;
  border: 1.5px solid var(--borda);
  border-radius: 50%;
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  color: var(--verde);
  transition: border-color .15s, background .15s;
}
.dv2-task-item.done .dv2-task-chk{ background: rgba(140,198,63,.2); border-color: var(--verde); }
.dv2-task-chk:hover{ border-color: var(--verde); }
.dv2-task-body{ flex: 1; min-width: 0; }
.dv2-task-text{
  font-size: .82rem;
  color: var(--text);
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dv2-task-item.done .dv2-task-text{ text-decoration: line-through; color: var(--muted); }
.dv2-task-del{
  background: none;
  border: none;
  color: var(--muted);
  font-size: 1.1rem;
  cursor: pointer;
  padding: 2px 5px;
  border-radius: 6px;
  line-height: 1;
  flex-shrink: 0;
  transition: color .15s, background .15s;
}
.dv2-task-del:hover{ color: #f87171; background: rgba(239,68,68,.1); }

/* ── Timeline ──────────────────────────────────────────────────────────── */
.dv2-tl-list{ display: flex; flex-direction: column; gap: 8px; }
.dv2-tl-item{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--surface);
  border: 1px solid var(--borda);
}
.dv2-tl-body{ flex: 1; min-width: 0; }
.dv2-tl-name{
  display: block;
  font-size: .82rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dv2-tl-desc{
  display: block;
  font-size: .73rem;
  color: var(--muted);
  margin-top: 1px;
}
.dv2-tl-date{
  font-size: .72rem;
  color: var(--muted);
  flex-shrink: 0;
  white-space: nowrap;
}

/* ── Indicadores ───────────────────────────────────────────────────────── */
.dv2-inds{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.dv2-ind{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 10px;
  padding: 11px 10px;
  text-align: center;
  transition: border-color .15s;
}
.dv2-ind.warn{ border-color: rgba(245,158,11,.4); }
.dv2-ind.alert{ border-color: rgba(239,68,68,.4); }
.dv2-ind-val{
  display: block;
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--azul);
  line-height: 1;
  margin-bottom: 4px;
}
.dv2-ind.warn .dv2-ind-val{ color: #fbbf24; }
.dv2-ind.alert .dv2-ind-val{ color: #f87171; }
.dv2-ind-lbl{
  font-size: .68rem;
  color: var(--muted);
  font-weight: 600;
  line-height: 1.3;
}

/* ── Acesso rápido ─────────────────────────────────────────────────────── */
.dv2-quick-grid{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}
.dv2-quick-btn{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 11px;
  padding: 12px 6px 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  font-size: .72rem;
  font-weight: 600;
  color: var(--muted);
  transition: border-color .15s, color .15s, background .15s, transform .12s;
}
.dv2-quick-btn:hover{
  border-color: var(--verde);
  color: var(--verde);
  background: rgba(140,198,63,.07);
  transform: translateY(-1px);
}
.dv2-quick-btn svg{ color: var(--azul); transition: color .15s; }
.dv2-quick-btn:hover svg{ color: var(--verde); }
.dv2-quick-btn span{ text-align: center; line-height: 1.3; }

/* ── IA / Sugestões ────────────────────────────────────────────────────── */
.dv2-ai-card{ }
.dv2-ai-list{ display: flex; flex-direction: column; gap: 8px; }
.dv2-ai-item{
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 11px 13px;
  border-radius: 10px;
  border: 1px solid var(--borda);
  background: var(--surface);
}
.dv2-ai-item p{ margin: 0; font-size: .84rem; color: var(--text); line-height: 1.55; }
.dv2-ai-icon{ font-size: 1rem; flex-shrink: 0; margin-top: 1px; }
.dv2-ai-warn{ border-color: rgba(245,158,11,.4); background: rgba(245,158,11,.05); }
.dv2-ai-ok{ border-color: rgba(34,197,94,.4); background: rgba(34,197,94,.05); }
.dv2-ai-info{ border-color: rgba(114,212,180,.35); background: rgba(114,212,180,.05); }

/* ── Perfil do nutricionista na sidebar ────────────────────────────────── */
.dv2-sidebar-profile{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 13px 12px;
  margin-bottom: 4px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  overflow: hidden;
  flex-shrink: 0;
}
.dv2-sb-photo{
  width: 44px;
  height: 44px;
  min-width: 44px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--verde);
}
.dv2-sb-init{
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--verde2);
  color: #fff;
  font-weight: 900;
  font-size: 18px;
}
.dv2-sb-info{
  min-width: 0;
  overflow: hidden;
}
.dv2-sb-name{
  display: block;
  font-size: .85rem;
  font-weight: 800;
  color: #e5edf8;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.2;
}
.dv2-sb-role{
  display: block;
  font-size: .72rem;
  color: #7a96b2;
  margin-top: 1px;
}
.dv2-sb-crn{
  display: block;
  font-size: .7rem;
  color: #5a7a96;
  margin-top: 1px;
}
body.sidebar-collapsed .dv2-sb-info{ display: none; }
body.sidebar-collapsed .dv2-sidebar-profile{ justify-content: center; padding: 12px 8px; }

/* ── Banco — item com avatar ───────────────────────────────────────────── */
.bank-patient-item{
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  gap: 10px;
  padding: 9px 11px !important;
}
.bpi-avatar{ flex-shrink: 0; }
.bpi-body{ min-width: 0; flex: 1; }
.bpi-name{ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ── Responsivo ────────────────────────────────────────────────────────── */
@media (max-width: 1200px) {
  .dv2-kpis{ grid-template-columns: repeat(3, 1fr); }
  .dv2-row-agenda{ grid-template-columns: 1fr; }
  .dv2-row-attn{ grid-template-columns: 1fr 1fr; }
  .dv2-row-tl{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 800px) {
  .dv2-kpis{ grid-template-columns: repeat(2, 1fr); }
  .dv2-row-agenda,
  .dv2-row-attn,
  .dv2-row-tl{ grid-template-columns: 1fr; }
  .dv2-quick-grid{ grid-template-columns: repeat(4, 1fr); }
  .dv2-top{ flex-direction: column; align-items: flex-start; }
  .dv2-greet-name{ font-size: 1.3rem; }
  .dv2-inds{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 500px) {
  .dv2-kpis{ grid-template-columns: 1fr 1fr; }
  .dv2-quick-grid{ grid-template-columns: repeat(2, 1fr); }
}

/* ═══════════════════════════════════════════════════════════════════════════
   HEADER DIREITO — tema, notificações, perfil nutricionista
   ═══════════════════════════════════════════════════════════════════════════ */

/* Área direita do header */
.hdr-right{
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  margin-left: auto;
}

/* Botão de ícone genérico (tema / sino) */
.hdr-icon-btn{
  position: relative;
  background: none;
  border: 1px solid transparent;
  color: var(--muted);
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
  flex-shrink: 0;
}
.hdr-icon-btn:hover{
  background: var(--surface-soft);
  border-color: var(--borda);
  color: var(--text);
}
.hdr-icon-btn svg{ display: block; width: 19px; height: 19px; flex-shrink: 0; transition: transform .25s ease, opacity .2s ease; }
.hdr-icon-btn:focus-visible{ outline: 2px solid var(--verde); outline-offset: 2px; }

/* Toggle tema: sun visível em tema claro, moon em tema escuro */
:root[data-theme="dark"] .hdr-sun{ display: none; }
:root[data-theme="dark"] .hdr-moon{ display: block; animation: hdr-theme-pop .25s ease; }
:root:not([data-theme="dark"]) .hdr-sun{ display: block; animation: hdr-theme-pop .25s ease; }
:root:not([data-theme="dark"]) .hdr-moon{ display: none; }
@keyframes hdr-theme-pop{ from{ transform: scale(.5) rotate(-45deg); opacity: 0; } to{ transform: scale(1) rotate(0); opacity: 1; } }

/* Badge de notificações */
.hdr-notif-badge{
  position: absolute;
  top: 4px;
  right: 4px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  background: #ef4444;
  color: #fff;
  font-size: .62rem;
  font-weight: 800;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  pointer-events: none;
}

/* Wrapper com painel dropdown */
.hdr-notif-wrap{
  position: relative;
}

/* Painel de notificações dropdown */
.hdr-notif-panel{
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 340px;
  max-height: 420px;
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 14px;
  box-shadow: 0 12px 40px rgba(0,0,0,.45);
  z-index: 1200;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.hdr-notif-panel[hidden]{ display: none !important; }
.hdr-np-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 16px;
  border-bottom: 1px solid var(--borda);
  font-weight: 800;
  font-size: .9rem;
  color: var(--text);
  flex-shrink: 0;
}
.hdr-np-head button{
  background: none;
  border: none;
  color: var(--muted);
  font-size: 1.3rem;
  cursor: pointer;
  line-height: 1;
  padding: 2px 6px;
  border-radius: 6px;
  transition: color .15s;
}
.hdr-np-head button:hover{ color: var(--text); }
.hdr-np-list{
  overflow-y: auto;
  flex: 1;
}
.hdr-np-empty{
  margin: 0;
  padding: 24px 16px;
  text-align: center;
  color: var(--muted);
  font-size: .84rem;
}
.hdr-np-item{
  padding: 12px 16px;
  border-bottom: 1px solid var(--borda);
  cursor: pointer;
  transition: background .12s;
  display: flex;
  gap: 10px;
  align-items: flex-start;
}
.hdr-np-item:hover{ background: var(--surface-soft); }
.hdr-np-item:last-child{ border-bottom: none; }
.hdr-np-icon{
  font-size: 1.1rem;
  flex-shrink: 0;
  margin-top: 1px;
}
.hdr-np-body{ min-width: 0; flex: 1; }
.hdr-np-title{
  display: block;
  font-size: .83rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 2px;
}
.hdr-np-desc{
  display: block;
  font-size: .76rem;
  color: var(--muted);
  line-height: 1.4;
}
.hdr-np-item.unread{ background: rgba(140,198,63,.05); }
.hdr-np-item.unread .hdr-np-title{ color: var(--verde); }

/* Perfil do nutricionista no header */
.hdr-nutri{
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 5px 10px 5px 5px;
  border: 1px solid var(--borda);
  border-radius: 30px;
  background: var(--surface-soft);
  cursor: default;
  margin-left: 4px;
}
.hdr-nutri-avt{
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--verde2);
  color: #fff;
  font-weight: 800;
  font-size: .85rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  overflow: hidden;
}
.hdr-nutri-avt img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  display: block;
}
.hdr-nutri-info{
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.hdr-nutri-name{
  font-size: .82rem;
  font-weight: 800;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 140px;
  line-height: 1.2;
}
.hdr-nutri-role{
  font-size: .7rem;
  color: var(--muted);
  font-weight: 500;
}

/* ═══════════════════════════════════════════════════════════════════════════
   MODAL — Resumo Inteligente do Dia
   ═══════════════════════════════════════════════════════════════════════════ */

.dv2-modal-overlay{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.65);
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  backdrop-filter: blur(4px);
}
.dv2-modal-overlay[hidden]{ display: none !important; }
.dv2-modal{
  background: var(--surface);
  border: 1px solid var(--borda);
  border-radius: 18px;
  width: 100%;
  max-width: 560px;
  box-shadow: 0 24px 64px rgba(0,0,0,.55);
  overflow: hidden;
  animation: dv2-modal-in .2s ease;
}
@keyframes dv2-modal-in{
  from{ transform: scale(.95) translateY(10px); opacity: 0; }
  to{ transform: scale(1) translateY(0); opacity: 1; }
}
.dv2-modal-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--borda);
  font-weight: 800;
  font-size: .95rem;
  color: var(--text);
}
.dv2-modal-close{
  background: none;
  border: none;
  color: var(--muted);
  font-size: 1.4rem;
  cursor: pointer;
  line-height: 1;
  padding: 2px 8px;
  border-radius: 8px;
  transition: color .15s;
}
.dv2-modal-close:hover{ color: var(--text); }
.dv2-modal-body{
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.dv2-modal-loading{
  margin: 0;
  color: var(--muted);
  font-size: .9rem;
  text-align: center;
  padding: 20px 0;
}
.dv2-modal-section{
  background: var(--surface-soft);
  border: 1px solid var(--borda);
  border-radius: 12px;
  padding: 14px 16px;
}
.dv2-modal-section p{
  margin: 0;
  font-size: .88rem;
  line-height: 1.65;
  color: var(--text);
}
.dv2-modal-stat-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.dv2-modal-stat{
  background: var(--surface-soft);
  border: 1px solid var(--borda);
  border-radius: 10px;
  padding: 12px 14px;
  text-align: center;
}
.dv2-modal-stat-val{
  display: block;
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--azul);
  line-height: 1;
  margin-bottom: 4px;
}
.dv2-modal-stat-lbl{
  display: block;
  font-size: .73rem;
  color: var(--muted);
  font-weight: 600;
  line-height: 1.3;
}

/* ═══════════════════════════════════════════════════════════════════════════
   DASHBOARD v2 — fixes de layout
   ═══════════════════════════════════════════════════════════════════════════ */

/* Remover max-width antigo e preencher disponível */
.dashv2{
  width: 100%;
  max-width: none;
  padding: 4px 0 32px;
}

/* Botão Resumo Inteligente no topbar */
.dv2-btn-summary{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: linear-gradient(135deg, var(--verde2) 0%, rgba(140,198,63,.7) 100%);
  color: #fff;
  border: none;
  border-radius: 10px;
  padding: 8px 16px;
  font-size: .82rem;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: opacity .15s, transform .12s;
  flex-shrink: 0;
}
.dv2-btn-summary:hover{ opacity: .9; transform: translateY(-1px); }

/* Fix header no mobile com sidebar */
@media (max-width: 900px) {
  header{ padding: 10px 14px; }
  header img#siteLogo{ width: 120px; }
  .hdr-notif-panel{ right: -60px; width: 290px; }
}

/* Esconder nutri no header quando não autenticado */
body:not(.klm-pro-unlocked) #hdrNutri{ display: none !important; }

/* Topbar: alinhar pills + botão resumo à direita */
.dv2-top{
  flex-wrap: wrap;
}
.dv2-top-right{
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-left: auto;
}

/* Inteligência Clínica — grade responsiva dos blocos (reaproveita .dv2-card/.dv2-empty/
   .bank-detail-placeholder já existentes; só a grade em si é nova). */
.ci-blocks{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 14px;
  margin: 16px 0;
}
.ci-blocks[hidden]{ display: none; }
/* Fase 2: cada bloco vira <details> (mesmo padrão de .exam-tab-panel) para permitir
   recolher/expandir; .dv2-card mantém o mesmo visual, só o summary é novo. */
.ci-block-summary{
  cursor: pointer;
  padding-bottom: 10px;
  margin-bottom: 2px;
  border-bottom: 1px solid var(--borda);
}
/* A tabela de evolução tem 5 colunas e precisa de mais largura que os outros blocos de
   texto — ocupa a linha inteira da grade em vez de dividir espaço com os cards vizinhos. */
.ci-blocks details[data-ci-block="evolutionComparison"], .ci-blocks details[data-ci-block="consolidatedFindings"]{ grid-column: 1 / -1; }
.ci-block-summary .dv2-card-title{ display: inline; }
.ci-block-body{ display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.ci-block-body ul{ margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; }
.ci-block-body li{ line-height: 1.5; }
.ci-source-note{ display: block; color: var(--muted); font-size: .78rem; margin-top: 1px; }
.ci-evo-table{ width: 100%; border-collapse: collapse; font-size: .85rem; }
.ci-evo-table th, .ci-evo-table td{ text-align: left; padding: 5px 8px; border-bottom: 1px solid var(--borda); }
.ci-evo-table th{ color: var(--muted); font-weight: 700; font-size: .74rem; text-transform: uppercase; letter-spacing: .03em; white-space: nowrap; }
.ci-trend-up{ color: #f59e0b; font-weight: 700; }
.ci-trend-down{ color: var(--azul); font-weight: 700; }
.ci-trend-stable{ color: var(--verde); font-weight: 700; }
.ci-trend-insuf{ color: var(--muted); font-style: italic; }
.ci-trend-warn{ color: #f59e0b; font-style: italic; }
.ci-score-indisponivel td{ color: var(--muted); font-style: italic; }
.ci-evo-group-row td{ background: var(--surface-soft); color: var(--muted); font-weight: 700; font-size: .72rem; text-transform: uppercase; letter-spacing: .03em; padding-top: 8px; }
.ci-evo-group-row[hidden], .ci-block-details[hidden]{ display: none; }

/* Fase 4.2 — Refinamento visual: filtros rápidos, badges, botão "Ver origem" e foco por teclado.
   Reaproveita as cores já usadas em .tabbtn/.ci-trend-*/.notice.storage-error/.atend-notif-badge —
   nenhuma cor nova é introduzida no design system. */
.ci-filter-bar{ display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
.ci-filter-bar[hidden]{ display: none; }
.ci-filter-btn{ background: var(--surface); border: 1.5px solid var(--borda); padding: 8px 15px; min-height: 34px; border-radius: 999px; cursor: pointer; font-weight: 600; color: var(--muted); font-size: 13px; font-family: inherit; transition: all .18s ease; }
.ci-filter-btn:hover{ border-color: var(--verde); color: var(--text); }
.ci-filter-btn.active{ background: var(--verde); border-color: var(--verde); color: #fff; }
.ci-filter-btn:focus-visible{ outline: 2px solid var(--verde); outline-offset: 2px; }

.ci-badge{ display: inline-block; padding: 1px 9px; border-radius: 999px; font-size: .72rem; font-weight: 700; line-height: 1.6; white-space: nowrap; border: 1px solid currentColor; margin-right: 6px; vertical-align: middle; }
.ci-badge-melhorou{ background: var(--verde); color: #fff; border-color: transparent; }
.ci-badge-piorou{ background: #dc2626; color: #fff; border-color: transparent; }
.ci-badge-novo{ background: var(--azul); color: #fff; border-color: transparent; }
.ci-badge-insuf{ background: var(--surface-soft); color: var(--muted); font-style: italic; font-weight: 600; border-color: var(--borda); }

.ci-origin-btn{ display: inline-block; margin-left: 8px; padding: 3px 11px; min-height: 26px; border-radius: 999px; border: 1px solid var(--borda); background: transparent; color: var(--muted); font-size: .72rem; font-weight: 600; font-family: inherit; cursor: pointer; vertical-align: middle; transition: all .15s ease; }
.ci-origin-btn:hover{ border-color: var(--verde); color: var(--verde); }
.ci-origin-btn:focus-visible{ outline: 2px solid var(--verde); outline-offset: 2px; }

@media (max-width: 600px){
  .ci-filter-bar{ gap: 6px; }
  .ci-filter-btn{ padding: 7px 12px; font-size: 12.5px; }
  .ci-origin-btn{ display: block; margin: 6px 0 0; width: fit-content; }
}

/* Fase 5 — Achados consolidados: cartões que agrupam attentionPoints/clinicalRelationships/
   evolutionInsights/planAdherence já existentes, com prioridade, evidências e ações manuais.
   Mesmas cores/tokens já usados (.card/.dv2-card/.ci-badge/.notice) — nenhuma cor nova. */
.ci-badge-media{ background: #f59e0b; color: #fff; border-color: transparent; }
.ci-finding-card{ border: 1px solid var(--borda); border-radius: 12px; padding: 12px 14px; background: var(--surface-soft); display: flex; flex-direction: column; gap: 8px; }
.ci-finding-card + .ci-finding-card{ margin-top: 10px; }
.ci-finding-card.ci-finding-ignored{ padding: 8px 14px; opacity: .7; }
.ci-finding-head{ display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ci-finding-suggestion{ margin: 0; font-size: .88rem; color: var(--text); }
.ci-finding-details summary{ cursor: pointer; font-size: .82rem; color: var(--muted); font-weight: 600; }
.ci-finding-details ul{ margin: 8px 0 0; padding-left: 18px; display: flex; flex-direction: column; gap: 8px; }
.ci-finding-details li{ line-height: 1.5; font-size: .88rem; }
.ci-finding-actions{ display: flex; flex-wrap: wrap; gap: 8px; }
.ci-finding-actions button{ padding: 6px 12px; min-height: 32px; font-size: 12.5px; }
.ci-finding-undo{ background: none; border: none; color: var(--verde); text-decoration: underline; cursor: pointer; font: inherit; padding: 0; }
.ci-finding-undo:focus-visible{ outline: 2px solid var(--verde); outline-offset: 2px; }
#ciNotesBox textarea{ width: 100%; min-height: 90px; font-family: inherit; }
#ciAnalysisMeta{ margin: -4px 0 4px; }
.ci-history-item{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--borda);
  border-radius: 10px;
  background: var(--surface-soft);
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.ci-history-item.active{ border-color: var(--verde); }
/* Análise assistida por IA (v11 Fase 3) — reaproveita .ci-block-details/.dv2-card/.ci-source-note
   já usados na análise determinística; só o item com aceitar/ignorar é novo. */
.ci-ai-list{ list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.ci-ai-item{
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 12px;
  border: 1px solid var(--borda);
  border-radius: 10px;
  background: var(--surface-soft);
}
.ci-ai-item-actions{ display: flex; gap: 6px; margin-top: 4px; }
.ci-ai-state-btn{
  background: none;
  border: 1px solid var(--borda);
  color: var(--muted);
  font-size: .74rem;
  font-weight: 700;
  padding: 4px 9px;
  border-radius: 999px;
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.ci-ai-state-btn:hover{ border-color: var(--azul); color: var(--text); }
.ci-ai-state-btn.active{ background: var(--verde); border-color: var(--verde); color: #102033; }

/* ── Centro de Atendimento Inteligente (v12) — atendimento.js ──────────────────
   #atendimentoPanel é um <section class="panel"> normal (mesma classe/mecanismo de
   exibição de qualquer outra aba, via openTab()) — por isso o menu lateral e o
   cabeçalho reais nunca somem durante o atendimento. Os cartões usam .dv2-card/
   .dv2-card-head/.dv2-card-ico/.dv2-card-title/.dv2-card-link/.dv2-card-badge, o
   MESMO vocabulário que dashboard.js já usa no Centro de Comando — não um conjunto
   de classes à parte. Reaproveita as variáveis de tema de :root/:root[data-theme=
   "dark"] já definidas no topo deste arquivo — nenhuma cor nova. */
/* ── Topbar de módulo (identidade visual V12.3, wireframe aprovado) ────────────
   Mesma altura/borda/tipografia de .atend-topbar (não alterado — Atendimento continua exatamente
   como está), reaproveitada para Início/Banco/Cadastro/Ficha/Configurações. Cada módulo é dono do
   próprio painel (.panel com padding:0) e usa .mod-topbar + .mod-topbar-body como qualquer outro
   painel usaria .atend-topbar + .atend-cockpit — mesma arquitetura, conteúdo diferente. */
/* overflow:visible (não hidden) é proposital: um ancestral com qualquer overflow != visible vira
   o "scroll container" de referência para position:sticky nos descendentes, e como estes painéis
   não têm altura própria limitada (crescem com o conteúdo), isso quebrava o rodapé fixo do
   Atendimento — ele parava de grudar na viewport e só aparecia no fim da página. */
#inicio.panel, #banco.panel, #cadastro.panel, #fichaPaciente.panel, #configuracoes.panel{ padding: 0; overflow: visible; }
.mod-topbar{ background: var(--surface); border-bottom: 3px solid var(--verde); box-shadow: 0 2px 16px var(--shadow); padding: 14px 22px; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.mod-topbar h1{ margin: 0; font-size: 16px; font-weight: 800; color: var(--azul); letter-spacing: -.01em; }
.mod-topbar p{ margin: 1px 0 0; font-size: 12px; color: var(--muted); }
.mod-topbar-right{ margin-left: auto; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mod-topbar-body{ padding: 16px 22px 20px; }

/* overflow:visible (não hidden): ver comentário acima de #inicio.panel — overflow:hidden aqui
   quebrava o position:sticky de .atend-footer (o rodapé só aparecia no fim da página, não fixo
   na viewport). O painel não depende de overflow:hidden para nada (o scroll horizontal da
   .atend-quick-strip já é próprio, via overflow-x:auto nela mesma). */
#atendimentoPanel.panel{ padding: 0; overflow: visible; }
.atend-topbar{ background: var(--surface); border-bottom: 3px solid var(--verde); box-shadow: 0 2px 16px var(--shadow); padding: 11px 22px 10px; }
.atend-row1{ display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.atend-patient{ display: flex; align-items: center; gap: 11px; }
.atend-avatar{ width: 38px; height: 38px; border-radius: 50%; background: #345f0f; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 14px; flex-shrink: 0; }
.atend-id h1{ margin: 0; font-size: 16px; font-weight: 800; color: var(--azul); letter-spacing: -.01em; }
.atend-id p{ margin: 1px 0 0; font-size: 12px; color: var(--muted); }
.atend-live{ display: flex; align-items: center; gap: 6px; background: rgba(22,163,74,.13); color: #16a34a; border-radius: 999px; padding: 5px 12px 5px 9px; font-size: 11.5px; font-weight: 800; flex-shrink: 0; }
.atend-live .dot{ width: 6px; height: 6px; border-radius: 50%; background: #16a34a; animation: atend-pulse 1.8s infinite; }
@keyframes atend-pulse{ 0%,100%{ opacity: 1; } 50%{ opacity: .35; } }
.atend-timer{ font-variant-numeric: tabular-nums; font-weight: 800; color: var(--text); font-size: 12.5px; flex-shrink: 0; }
.atend-topbar-right{ margin-left: auto; display: flex; align-items: center; gap: 8px; }
.atend-exit-link{ font-size: 12px; font-weight: 700; color: var(--muted); background: none; border: 1px solid var(--borda); border-radius: 999px; padding: 6px 13px; cursor: pointer; transition: border-color .15s, color .15s; }
.atend-exit-link:hover{ border-color: var(--azul); color: var(--text); }
/* Sino de notificações da Inteligência Clínica — mesma contagem já usada no cartão "Alertas
   clínicos" (attentionPoints). */
.atend-notif-btn{ position: relative; width: 34px; height: 34px; border-radius: 9px; background: none; border: 1px solid var(--borda); color: var(--muted); cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.atend-notif-btn:hover{ border-color: var(--azul); color: var(--text); }
/* flex-shrink:0 é essencial aqui: o <svg> não tem width/height como atributo HTML (só viewBox),
   e dentro de um container flex (.atend-notif-btn) isso deixava o ícone colapsar pra width:0 —
   sino invisível, sobrando só o quadrado do botão sem nada dentro. Mesmo padrão já usado em
   .atend-chip svg (também flex + svg sem atributo de tamanho). */
.atend-notif-btn svg{ width: 16px; height: 16px; flex-shrink: 0; }
.atend-notif-badge{ position: absolute; top: -5px; right: -5px; min-width: 16px; height: 16px; padding: 0 3px; border-radius: 999px; background: #dc2626; color: #fff; font-size: 9.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; line-height: 1; }
/* Sem isso, o atributo HTML `hidden` (usado pra esconder o badge quando não há alerta) era
   ignorado: display:flex de uma regra de autor sempre vence o display:none do UA stylesheet
   pra [hidden], mesma especificidade — o badge continuava visível mostrando "0". */
.atend-notif-badge[hidden]{ display: none; }
/* Botão "Mapa" do cabeçalho (único — o da barra inferior das etapas foi removido por ser
   redundante). Mesmo problema do sino: <svg> sem width/height como atributo, dentro de
   .atend-btn (inline-flex), sem essa regra o navegador usa o tamanho padrão de substituição
   (~300x150px) — ícone gigante, botão desproporcional. */
#atendMapaToggleBtn svg{ width: 14px; height: 14px; flex-shrink: 0; }
/* Destaque temporário ao navegar até um cartão pelo sino de notificações. */
.atend-highlight{ animation: atend-highlight-pulse 1.2s ease; }
@keyframes atend-highlight-pulse{ 0%,100%{ box-shadow: none; } 30%{ box-shadow: 0 0 0 3px rgba(59,130,246,.35); } }
.atend-status-strip{ display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--borda); }
/* Barra de progresso + "Etapa N de M" (seção 1 do pedido) — mesma barra usada no cabeçalho
   principal (visão geral) e resumida na barra do host de módulo (ver .atend-module-step). */
.atend-progress-row{ margin-top: 8px; }
.atend-progress-meta{ display: flex; justify-content: space-between; font-size: 10.5px; font-weight: 700; color: var(--muted); margin-bottom: 4px; }
.atend-progress-bar{ height: 6px; border-radius: 999px; background: var(--surface-soft); overflow: hidden; }
.atend-progress-fill{ height: 100%; background: var(--verde2); border-radius: 999px; transition: width .25s ease; }
.atend-chip{ display: flex; align-items: center; gap: 5px; border-radius: 8px; padding: 4px 10px 4px 8px; font-size: 11.5px; font-weight: 700; background: var(--surface-soft); color: var(--text); white-space: nowrap; }
.atend-chip svg{ width: 13px; height: 13px; flex-shrink: 0; }
.atend-chip .m{ color: var(--muted); font-weight: 600; }
.atend-chip.ok{ background: rgba(22,163,74,.13); color: #16a34a; }
.atend-chip.warn{ background: rgba(245,158,11,.14); color: #b45309; }
:root[data-theme="dark"] .atend-chip.warn{ color: #fbbf24; }
.atend-chip.neutral{ color: var(--muted); }

/* Seletor principal do Modo Atendimento: [Visão Geral] [Histórico de Consultas] — área central e
   evidente, logo abaixo do cabeçalho (seção 3 do pedido). Classes próprias (.atend-view-tab), não
   .tabbtn, pelo mesmo motivo já documentado em .exam-tab-btn: openTab() (app.js) remove "active"
   de todo .tabbtn ao trocar de aba PRINCIPAL do sistema — usar a classe genérica aqui faria essa
   troca (Início/Banco/Config) desmarcar a aba certa do Atendimento sem relação nenhuma. Visual
   idêntico ao padrão já aprovado (mesmo pill, mesma cor ativa var(--verde2)) — não é um padrão
   novo, só isolado do :root da navegação principal.	*/
.atend-view-tabs{ display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; padding: 0 22px 14px; }
.atend-view-tab{ background: var(--surface); border: 1.5px solid var(--borda); padding: 9px 20px; border-radius: 999px; cursor: pointer; font-weight: 700; color: var(--muted); font-size: 13px; font-family: inherit; transition: all .18s ease; letter-spacing: .01em; }
.atend-view-tab:hover{ border-color: var(--verde); color: var(--text); transform: translateY(-1px); box-shadow: 0 2px 8px var(--shadow); }
.atend-view-tab.active{ background: var(--verde2); color: #fff; border-color: var(--verde2); box-shadow: 0 3px 12px rgba(0,0,0,.2); }
@media (max-width: 840px){ .atend-view-tabs{ padding: 0 14px 14px; } }

/* Proporções ~18-20% / ~60% / ~20-22% (wireframe V12.3 aprovado) — o centro é sempre o
   protagonista. */
.atend-cockpit{ display: grid; grid-template-columns: minmax(230px,19%) minmax(0,1fr) minmax(250px,21%); gap: 16px; padding: 16px 22px 20px; align-items: start; }
/* Modo foco (etapa aberta no host de módulo, classe em #atendimentoPanel.atend-shell — nome
   interno, nunca exibido como rótulo de aba) — painéis laterais da Visão Geral somem e o centro
   passa a ocupar quase toda a largura útil, como um prontuário eletrônico. Só a grade muda:
   nenhum painel é destruído, .atend-col-left/.atend-col-right continuam no DOM com todo o
   conteúdo intacto, só ficam display:none até voltar pra Visão Geral. */
.atend-shell.atend-consulta-ativa .atend-cockpit{ grid-template-columns: 1fr; }
.atend-shell.atend-consulta-ativa .atend-col-left,
.atend-shell.atend-consulta-ativa .atend-col-right{ display: none; }
/* O seletor [Visão Geral]/[Histórico de Consultas] não representa o modo foco (não é uma
   terceira aba) — some junto com o resto da Visão Geral, "Voltar à Visão Geral" na barra do
   módulo já cobre a saída. */
.atend-shell.atend-consulta-ativa .atend-view-tabs{ display: none; }
/* Regra base ANTES das media queries de propósito: .atend-col-right{display:none} abaixo (tablet/
   mobile) precisa vencer esta — como as duas têm a mesma especificidade, quem vem depois no
   arquivo manda. Já aconteceu de ficar na ordem errada aqui e a coluna direita nunca escondia de
   verdade em telas estreitas (media query "funcionava" mas era sempre sobrescrita). */
.atend-col-left, .atend-col-center, .atend-col-right{ display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.atend-quick-strip{ display: none; gap: 8px; overflow-x: auto; padding: 0 22px 14px; flex-shrink: 0; }
@media (max-width: 1239px){ .atend-cockpit{ grid-template-columns: 236px minmax(0,1fr); } .atend-col-right{ display: none; } .atend-quick-strip{ display: flex; } }
@media (max-width: 840px){ .atend-cockpit{ grid-template-columns: 1fr; padding: 14px; } .atend-col-left{ order: 1; } .atend-col-center{ order: 2; } }
.atend-col-left{ position: sticky; top: 16px; align-self: start; }
.atend-quick-strip .atend-qa-btn{ width: auto; flex-shrink: 0; }
.atend-quick-strip .atend-qa-group-lbl{ display: none; }

/* Cartões do Atendimento usam .dv2-card diretamente (mesma classe de dashboard.js) — só os
   acentos de borda superior e a animação de entrada são específicos daqui. */
.dv2-card.atend-today{ border-top: 3px solid var(--verde); animation: atend-card-in .28s ease both; }
.dv2-card.atend-ic{ border-top: 3px solid var(--azul); animation: atend-card-in .28s ease both; }
#atendColCenter .dv2-card, #atendColLeft .dv2-card, #atendColRight .dv2-card{ animation: atend-card-in .28s ease both; }
@keyframes atend-card-in{ from{ opacity: 0; transform: translateY(6px); } to{ opacity: 1; transform: translateY(0); } }
.dv2-card-link svg{ transition: transform .4s ease; }
.dv2-card-link.spin svg{ transform: rotate(360deg); }
.atend-tag{ background: rgba(47,111,82,.10); color: var(--azul); font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; padding: 3px 8px; border-radius: 999px; flex-shrink: 0; }
.atend-ic-meta{ display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--muted); font-weight: 600; }
.atend-ic-dot{ width: 6px; height: 6px; border-radius: 50%; background: #16a34a; flex-shrink: 0; }
.atend-ic-dot.off{ background: var(--muted); }

.atend-empty{ display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 18px 12px 4px; }
.atend-empty-ico{ width: 36px; height: 36px; border-radius: 50%; background: var(--surface); border: 1.5px dashed var(--borda); display: flex; align-items: center; justify-content: center; color: var(--muted); }
.atend-empty-ico svg{ width: 17px; height: 17px; }
.atend-empty p{ margin: 0; font-size: 12px; color: var(--muted); max-width: 34ch; line-height: 1.55; }

.atend-today-row{ display: flex; align-items: flex-start; gap: 9px; padding: 6.5px 2px; }
.atend-today-dot{ width: 20px; height: 20px; border-radius: 6px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: .5px; }
.atend-today-dot svg{ width: 12px; height: 12px; }
.atend-today-dot.ok{ background: rgba(22,163,74,.13); color: #16a34a; }
.atend-today-dot.warn{ background: rgba(245,158,11,.14); color: #b45309; }
:root[data-theme="dark"] .atend-today-dot.warn{ color: #fbbf24; }
.atend-today-row span{ font-size: 12.5px; color: var(--text); padding-top: 1px; }

.atend-snap-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.atend-snap-stat{ background: var(--surface); border: 1px solid var(--borda); border-radius: 10px; padding: 9px 10px; }
.atend-snap-stat b{ display: block; font-size: 1.02rem; font-weight: 900; color: var(--azul); }
.atend-snap-stat .delta{ display: flex; align-items: center; gap: 3px; font-size: 10px; font-weight: 800; margin-top: 1px; }
.atend-snap-stat .delta svg{ width: 10px; height: 10px; flex-shrink: 0; }
.atend-snap-lbl{ display: block; font-size: 9.5px; color: var(--muted); font-weight: 700; text-transform: uppercase; letter-spacing: .03em; margin-top: 3px; }
.atend-snap-list{ display: flex; flex-direction: column; gap: 6px; font-size: 12px; }
.atend-snap-list .row{ display: flex; justify-content: space-between; gap: 10px; }
.atend-snap-list .row .k{ color: var(--muted); }
.atend-snap-list .row .v{ color: var(--text); font-weight: 600; text-align: right; }
.atend-mini-label{ font-size: 10.5px; color: var(--muted); font-weight: 700; text-transform: uppercase; letter-spacing: .03em; margin-bottom: 5px; }
.atend-snap-tags{ display: flex; flex-wrap: wrap; gap: 6px; }
.atend-snap-tag{ background: var(--surface); border: 1px solid var(--borda); border-radius: 999px; padding: 4px 10px; font-size: 11px; font-weight: 700; color: var(--text); }
.atend-snap-tag.warn{ background: rgba(245,158,11,.14); border-color: transparent; color: #b45309; }
:root[data-theme="dark"] .atend-snap-tag.warn{ color: #fbbf24; }
.atend-small{ font-size: 11px; color: var(--muted); }

.atend-timeline{ display: flex; flex-direction: column; gap: 0; }
.atend-tl-item{ display: flex; gap: 10px; padding: 7px 0; position: relative; }
.atend-tl-item:not(:last-child)::before{ content: ""; position: absolute; left: 14px; top: 30px; bottom: -7px; width: 1.5px; background: var(--borda); }
.atend-tl-dot{ width: 26px; height: 26px; border-radius: 50%; background: var(--surface); border: 1.5px solid var(--borda); display: flex; align-items: center; justify-content: center; flex-shrink: 0; z-index: 1; color: var(--azul); }
.atend-tl-dot svg{ width: 13px; height: 13px; }
.atend-tl-item.r1 .tl-dot, .atend-tl-item.r1 .atend-tl-dot{ width: 30px; height: 30px; border-width: 2px; border-color: var(--verde); background: rgba(22,163,74,.13); color: var(--verde); }
.atend-tl-body .t{ font-size: 12.5px; font-weight: 700; color: var(--text); }
.atend-tl-body .d{ font-size: 10.5px; color: var(--muted); margin-top: 1px; }
.atend-tl-item.old{ opacity: .72; }
.atend-tl-item.old .atend-tl-body .t{ font-weight: 600; color: var(--muted); font-size: 12px; }

.atend-stat-grid{ display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; }
@media (max-width: 1239px){ .atend-stat-grid{ grid-template-columns: 1fr; } }
.atend-stat-tile{ background: var(--surface); border: 1px solid var(--borda); border-radius: 10px; padding: 11px 13px; display: flex; flex-direction: column; gap: 2px; }
.atend-stat-tile .lbl{ font-size: 10.5px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; }
.atend-stat-tile .top-row{ display: flex; align-items: flex-end; justify-content: space-between; gap: 8px; margin-top: 2px; }
.atend-stat-tile .val{ font-size: 1.2rem; font-weight: 900; color: var(--text); }
.atend-stat-tile .delta{ font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; gap: 3px; margin-top: 3px; }
.atend-stat-tile .delta svg{ width: 10px; height: 10px; }
.atend-delta-good{ color: #16a34a; } .atend-delta-bad{ color: #9f1239; } .atend-delta-flat{ color: var(--muted); }
.atend-stat-tile .from{ font-size: 10px; color: var(--muted); }

.atend-alert{ display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 10px; background: var(--surface); border: 1px solid var(--borda); border-left: 3px solid #f59e0b; }
.atend-alert-ico{ color: #b45309; flex-shrink: 0; margin-top: 1px; }
:root[data-theme="dark"] .atend-alert-ico{ color: #fbbf24; }
.atend-alert-ico svg{ width: 16px; height: 16px; }
.atend-alert b{ font-size: 12.5px; font-weight: 700; color: var(--text); display: block; }
.atend-alert span{ font-size: 11px; color: var(--muted); }

.atend-q-item{ border: 1px solid var(--borda); border-radius: 10px; background: var(--surface); padding: 9px 11px; display: flex; flex-direction: column; gap: 7px; }
.atend-q-item p{ margin: 0; font-size: 12.5px; color: var(--text); }
.atend-divider{ font-size: 10.5px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; padding-top: 9px; border-top: 1px dashed var(--borda); }

.atend-chk-row{ display: flex; align-items: center; gap: 10px; padding: 7px 2px; border-bottom: 1px solid var(--borda); font-size: 12.5px; }
.atend-chk-row:last-child{ border-bottom: none; }
.atend-chk-box{ width: 18px; height: 18px; border-radius: 6px; border: 1.5px solid var(--borda); background: var(--surface); flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: #fff; cursor: pointer; }
.atend-chk-box.on{ background: var(--verde); border-color: var(--verde); }
.atend-chk-box svg{ width: 11px; height: 11px; }
.atend-chk-label{ flex: 1; color: var(--text); cursor: pointer; }
.atend-chk-row.done .atend-chk-label{ color: var(--muted); text-decoration: line-through; }
.atend-mini-btn{ background: none; border: 1px solid var(--borda); border-radius: 7px; padding: 4px 9px; font-size: 10.5px; font-weight: 700; color: var(--muted); cursor: pointer; }
.atend-mini-btn:hover{ border-color: var(--azul); color: var(--text); }

.atend-textarea{ width: 100%; background: var(--surface); border: 1px solid var(--borda); border-radius: 10px; color: var(--text); padding: 10px 12px; font-family: inherit; font-size: 12.5px; line-height: 1.6; resize: vertical; }
.atend-textarea:focus{ outline: 2px solid var(--verde); outline-offset: 1px; }

.atend-btn{ display: inline-flex; align-items: center; gap: 7px; background: #345f0f; color: #fff; border: none; border-radius: 8px; padding: 9px 15px; font-weight: 700; font-size: 12px; cursor: pointer; transition: transform .15s, box-shadow .15s; }
.atend-btn:hover{ transform: translateY(-1px); box-shadow: 0 3px 10px var(--shadow); }
.atend-btn.ghost{ background: none; border: 1.5px solid var(--borda); color: var(--text); }
.atend-btn.ghost:hover{ border-color: var(--azul); }
.atend-btn.danger{ background: #9f1239; color: #fff; }

.atend-qa-group-lbl{ font-size: 10px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; margin: 6px 2px 1px; }
.atend-qa-group-lbl:first-child{ margin-top: 0; }
.atend-qa-btn{ display: flex; align-items: center; gap: 9px; background: var(--surface); border: 1px solid var(--borda); border-radius: 10px; padding: 8px 11px; color: var(--text); font-size: 12px; font-weight: 700; text-align: left; width: 100%; cursor: pointer; }
.atend-qa-btn:hover{ border-color: var(--verde); background: var(--surface-soft); }
.atend-qa-btn.soon{ opacity: .6; }
.atend-qa-ico{ width: 27px; height: 27px; border-radius: 8px; background: var(--surface-soft); color: var(--verde); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.atend-qa-ico svg{ width: 14px; height: 14px; }
.atend-qa-txt{ display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.atend-qa-meta{ font-size: 9.5px; color: var(--muted); font-weight: 600; }
.atend-qa-badge{ margin-left: auto; background: #fff1f2; color: #9f1239; border-radius: 999px; font-size: 9.5px; font-weight: 800; padding: 2px 6px; flex-shrink: 0; }
:root[data-theme="dark"] .atend-qa-badge{ background: rgba(159,18,57,.2); color: #fda4af; }

/* ── Navegação interna (prontuário clínico guiado) — substitui as antigas "ações rápidas" ──── */
/* Compacto de propósito (Mapa da Consulta é navegação lateral, não conteúdo principal — regra 3
   do pedido): item nunca passa de 2 linhas (rótulo + subtítulo/prévia), gap e padding reduzidos. */
.atend-nav-list{ display: flex; flex-direction: column; gap: 3px; }
.atend-nav-item-wrap{ display: flex; align-items: center; gap: 4px; }
.atend-nav-item{ display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; background: var(--surface); border: 1px solid var(--borda); border-radius: 8px; padding: 5px 8px; color: var(--text); text-align: left; cursor: pointer; }
.atend-nav-item:hover{ border-color: var(--verde); background: var(--surface-soft); }
.atend-nav-item.active{ border-color: var(--verde2); background: var(--surface-soft); box-shadow: inset 0 0 0 1px var(--verde2); }
.atend-nav-item.next{ border-color: var(--azul); }
/* Indicador ✓ concluída / ● etapa atual / ○ pendente (seção 1 do pedido) — o glifo é texto dentro
   do próprio marcador, cor herdada do status (andamento/done) já existente. */
.atend-nav-dot{ width: 15px; height: 15px; border-radius: 50%; background: var(--surface-soft); border: 1.5px solid var(--borda); color: var(--muted); display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 900; line-height: 1; flex-shrink: 0; }
.atend-nav-dot.andamento{ background: #f59e0b; border-color: #f59e0b; color: #fff; }
.atend-nav-dot.done{ background: #16a34a; border-color: #16a34a; color: #fff; }
.atend-nav-body{ display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.atend-nav-lbl{ font-size: 11.5px; font-weight: 700; color: var(--text); }
.atend-nav-sub{ font-size: 10px; color: var(--muted); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.atend-nav-done{ flex-shrink: 0; width: 24px; height: 24px; border-radius: 7px; background: var(--surface-soft); border: 1px solid var(--borda); color: var(--muted); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.atend-nav-done svg{ width: 11px; height: 11px; }
.atend-nav-done:hover{ border-color: var(--verde); color: var(--verde); }
.atend-nav-done.on{ background: rgba(22,163,74,.14); border-color: #16a34a; color: #16a34a; }
/* ⚠ possui pendência / indicador de alteração não salva (ao lado do rótulo da etapa) — mesmo
   vocabulário visual de .atend-nav-*, nenhuma cor nova: laranja/vermelho já usados em
   .dv2-card-badge/.atend-toast.error do mesmo arquivo. */
.atend-nav-warn{ color: #d97706; font-size: 10px; margin-left: 2px; }
.atend-nav-unsaved{ color: #dc2626; font-size: 7px; margin-left: 4px; vertical-align: middle; }
/* "Editar" de uma etapa concluída — ícone compacto ao lado de "marcar concluída", mesmo tamanho,
   nunca um botão de texto separado ocupando linha própria (regra 3 do pedido: item compacto). */
.atend-nav-edit{ flex-shrink: 0; width: 24px; height: 24px; border-radius: 7px; background: none; border: 1px solid var(--borda); color: var(--azul); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.atend-nav-edit svg{ width: 11px; height: 11px; }
.atend-nav-edit:hover{ border-color: var(--azul); background: rgba(59,130,246,.08); }

/* ── Mapa da consulta (drawer de navegação rápida) ───────────────────────────────────────────
   Overlay independente do host de módulo (z-index maior que .atend-module-host = 1550) — por
   isso fica alcançável tanto na visão geral quanto com uma etapa aberta em tela cheia por cima.
   "Recolhível no desktop" / "drawer no tablet" é o MESMO componente: só o padrão inicial de
   aberto/fechado muda por JS conforme a largura da tela (ver renderMapaDrawer). */
.atend-mapa-drawer{ position: fixed; top: 0; right: 0; height: 100vh; width: 340px; max-width: 92vw; background: var(--surface); border-left: 1px solid var(--borda); box-shadow: -10px 0 32px var(--shadow); z-index: 1700; display: flex; flex-direction: column; transform: translateX(100%); transition: transform .25s ease; }
.atend-mapa-drawer.open{ transform: translateX(0); }
.atend-mapa-backdrop{ position: fixed; inset: 0; background: rgba(0,0,0,.42); z-index: 1690; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.atend-mapa-backdrop.open{ opacity: 1; pointer-events: auto; }
@media (min-width: 1025px){ .atend-mapa-backdrop{ display: none; } } /* desktop: painel recolhível coexiste sem escurecer o formulário por trás */
.atend-mapa-head{ display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--borda); flex-shrink: 0; }
.atend-mapa-title{ display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: .92rem; color: var(--text); }
.atend-mapa-title svg{ width: 17px; height: 17px; color: var(--verde); }
.atend-mapa-close{ background: none; border: none; color: var(--muted); font-size: 1.2rem; padding: 2px 8px; border-radius: 8px; cursor: pointer; }
.atend-mapa-close:hover{ background: var(--surface-soft); }
.atend-mapa-resumo{ padding: 10px 16px; border-bottom: 1px solid var(--borda); flex-shrink: 0; display: flex; flex-direction: column; gap: 8px; max-height: 32vh; overflow-y: auto; }

/* Resumo Rápido (V12.3 aprovado, seção 6 do pedido): cards compactos de métrica + chips de
   status + destaques — nunca uma lista de pares chave/valor. */
.atend-rr-card{ border-top: 3px solid var(--azul); }
.atend-rr-objetivo{ margin: 0 0 8px; font-size: 12px; font-weight: 700; color: var(--text); background: var(--surface-soft); border-radius: 8px; padding: 6px 9px; }
.atend-rr-metrics{ display: grid; grid-template-columns: repeat(auto-fit, minmax(70px, 1fr)); gap: 8px; margin-bottom: 8px; }
.atend-rr-metric{ background: var(--surface-soft); border: 1px solid var(--borda); border-radius: 10px; padding: 7px 9px; display: flex; flex-direction: column; gap: 1px; }
.atend-rr-metric-lbl{ font-size: 9.5px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.atend-rr-metric-val{ font-size: 15px; font-weight: 800; color: var(--text); }
.atend-rr-metric-delta{ font-size: 10px; font-weight: 700; margin-left: 4px; color: var(--muted); }
.atend-rr-metric.ok{ border-color: #16a34a; } .atend-rr-metric.ok .atend-rr-metric-delta{ color: #16a34a; }
.atend-rr-metric.warn{ border-color: #f59e0b; } .atend-rr-metric.warn .atend-rr-metric-delta{ color: #b45309; }
:root[data-theme="dark"] .atend-rr-metric.warn .atend-rr-metric-delta{ color: #fbbf24; }
.atend-rr-chips{ display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 8px; }
.atend-rr-chips .atend-chip{ font-size: 10.5px; padding: 3px 8px 3px 7px; }
.atend-rr-chips .atend-chip svg{ width: 11px; height: 11px; }
.atend-rr-list{ margin: 0; padding-left: 16px; font-size: 11px; color: var(--text); line-height: 1.5; }
.atend-rr-list li{ margin-bottom: 2px; }
.atend-mapa-nav-list{ padding: 12px; overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: 6px; }

/* Seletor "Ir para etapa" (barra do módulo) — mesma altura/raio dos botões .atend-btn.sm vizinhos. */
/* Sem max-width, o <select> nativo se dimensiona pela option MAIS LARGA (ex.: "Avaliação Clínica
   e Nutricional"), não pela selecionada — ficava ocupando quase toda a barra mesmo mostrando só
   "Exames". Compacto e proporcional ao conteúdo, com teto responsivo (não filho de flex:1 nem
   flex-grow — só encolhe o próprio texto interno com ellipsis quando a option é mais larga que o
   teto). */
.atend-goto-select{ background: var(--surface); border: 1px solid var(--borda); border-radius: 8px; padding: 6px 9px; font-size: 11.5px; font-weight: 700; color: var(--text); cursor: pointer; flex: 0 1 auto; width: auto; max-width: 190px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 840px){ .atend-goto-select{ max-width: 130px; } }

/* ── "Continuar consulta" (Visão geral) ──────────────────────────────────────────────────── */
.atend-continue-card{ flex-direction: row; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-top: 3px solid var(--azul); }
.atend-continue-body{ display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.atend-continue-lbl{ font-size: 10px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.atend-continue-step{ font-size: 13px; font-weight: 700; color: var(--text); }

/* ── Seção "Consultas" ────────────────────────────────────────────────────────────────────── */
.atend-consultas-list{ display: flex; flex-direction: column; gap: 10px; }
.atend-consulta-row{ border: 1px solid var(--borda); border-radius: 12px; padding: 12px 14px; background: var(--surface); display: flex; flex-direction: column; gap: 7px; }
.atend-consulta-row.active{ border-color: var(--verde2); border-top: 3px solid var(--verde); }
.acr-main{ display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.acr-date{ font-size: 13px; font-weight: 800; color: var(--text); }
.acr-badge{ font-size: 10px; font-weight: 800; padding: 3px 9px; border-radius: 999px; background: var(--surface-soft); color: var(--muted); }
.acr-badge.em_andamento{ background: rgba(59,130,246,.14); color: var(--azul); }
.acr-badge.concluida{ background: rgba(22,163,74,.14); color: #16a34a; }
.acr-badge.cancelada{ background: rgba(159,18,57,.12); color: #9f1239; }
:root[data-theme="dark"] .acr-badge.cancelada{ color: #fda4af; }
.acr-badge.current{ background: var(--verde2); color: #fff; }
.acr-meta{ font-size: 11.5px; color: var(--muted); font-weight: 600; }
.acr-actions{ display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
/* Hierarquia dos botões do card (seção "Hierarquia dos botões" do pedido): Abrir/Editar são as
   ações principais (estilo .atend-btn.ghost padrão, mesmo peso visual de sempre) — Arquivar/
   Excluir ficam no grupo secundário, empurrado pra direita (margin-left:auto no primeiro grupo
   ausente aqui pois quem cresce é o secundário) e visualmente discretos (.quiet: sem borda visível
   em repouso, texto mais claro/menor), só ganham contorno/cor no hover — nunca mais chamativos
   que Abrir/Editar, mas continuam clicáveis e alcançáveis, nunca escondidos. */
.acr-actions-primary{ display: flex; gap: 7px; }
.acr-actions-secondary{ display: flex; gap: 4px; margin-left: auto; }
.atend-btn.ghost.quiet{ border-color: transparent; background: none; color: var(--muted); font-weight: 600; font-size: 11px; padding: 6px 10px; }
.atend-btn.ghost.quiet:hover{ border-color: var(--borda); color: var(--text); background: var(--surface-soft); transform: none; box-shadow: none; }
.atend-btn.ghost.quiet.danger-text{ color: var(--muted); border-color: transparent; }
.atend-btn.ghost.quiet.danger-text:hover{ border-color: rgba(159,18,57,.35); color: #9f1239; background: none; }
@media (max-width: 480px){ .acr-actions-secondary{ margin-left: 0; } }
.atend-btn.sm{ padding: 6px 11px; font-size: 11.5px; }
.atend-btn.danger-text{ color: #9f1239; border-color: rgba(159,18,57,.35); }
.atend-btn.danger-text:hover{ border-color: #9f1239; }
:root[data-theme="dark"] .atend-btn.danger-text{ color: #fda4af; }

/* Sticky (não fixed): como o Atendimento agora vive dentro do fluxo normal da página (é só mais
   um .panel), sticky respeita automaticamente a largura real do conteúdo — inclusive quando a
   sidebar está expandida/recolhida — sem precisar calcular nenhum offset manualmente. */
.atend-footer{ position: sticky; bottom: 0; z-index: 60; background: var(--surface); border-top: 1px solid var(--borda); box-shadow: 0 -6px 24px var(--shadow); padding: 10px 22px; display: flex; align-items: center; gap: 8px; overflow-x: auto; }
.atend-footer .spacer{ flex: 1; min-width: 8px; }
.atend-footer .atend-btn{ flex-shrink: 0; white-space: nowrap; }

.atend-toast{ position: fixed; left: 50%; bottom: 76px; transform: translateX(-50%) translateY(8px); background: var(--text); color: var(--bg); padding: 9px 16px; border-radius: 999px; font-size: 12.5px; font-weight: 700; display: flex; align-items: center; gap: 7px; box-shadow: 0 10px 30px rgba(0,0,0,.25); z-index: 1900; opacity: 0; pointer-events: none; transition: opacity .25s ease, transform .25s ease; }
.atend-toast.show{ opacity: 1; transform: translateX(-50%) translateY(0); }
.atend-toast svg{ width: 14px; height: 14px; color: #4ade80; flex-shrink: 0; }
:root[data-theme="dark"] .atend-toast{ background: var(--surface); color: var(--text); border: 1px solid var(--borda); }
.atend-toast.error{ background: #9f1239; color: #fff; }
.atend-toast.error svg{ color: #fecdd3; }
:root[data-theme="dark"] .atend-toast.error{ background: #9f1239; color: #fff; border-color: #9f1239; }

/* ── Host de módulo embutido (nenhuma ação clínica sai do Modo Atendimento) ──────────────────
   V12.3 (wireframe aprovado): deixou de ser overlay fixo cobrindo a página inteira — agora é um
   cartão normal DENTRO de #atendColCenter, com a mesma linguagem visual de .dv2-card (cantos
   arredondados, borda suave, sombra discreta). Cabeçalho/coluna esquerda/coluna direita NUNCA
   ficam cobertos — "a etapa aberta ocupa apenas o painel central". */
.atend-module-host{ display: flex; flex-direction: column; min-height: 60vh; background: var(--surface); border: 1px solid var(--borda); border-radius: 14px; box-shadow: 0 1px 8px var(--shadow); overflow: hidden; animation: atend-card-in .2s ease both; }
.atend-module-toolbar{ flex-shrink: 0; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; background: var(--surface-soft); border-bottom: 1px solid var(--borda); border-radius: 14px 14px 0 0; padding: 10px 16px; }
.atend-module-patient{ display: flex; align-items: center; gap: 9px; flex-shrink: 0; }
.atend-module-avatar{ width: 32px; height: 32px; border-radius: 50%; background: var(--verde2); color: #fff; font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.atend-module-name{ font-size: 13px; font-weight: 800; color: var(--text); white-space: nowrap; }
.atend-module-timer{ font-size: 11.5px; font-weight: 700; color: var(--muted); background: var(--surface-soft); border: 1px solid var(--borda); border-radius: 999px; padding: 3px 10px; font-variant-numeric: tabular-nums; }
.atend-module-title{ font-size: 13px; font-weight: 800; color: var(--verde2); flex: 1; min-width: 120px; display: flex; align-items: center; gap: 9px; }
.atend-module-step{ font-size: 10px; font-weight: 700; color: var(--muted); background: var(--surface-soft); border: 1px solid var(--borda); border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.atend-module-actions{ display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.atend-module-close{ background: none; border: 1.5px solid var(--borda); color: var(--muted); border-radius: 8px; width: 32px; height: 32px; font-size: 15px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.atend-module-close:hover{ border-color: #9f1239; color: #9f1239; }
.atend-module-body{ flex: 1; min-height: 0; overflow: auto; padding: 22px; }
.atend-module-actions [data-mh="edit"].active{ background: var(--verde2); color: #fff; border-color: var(--verde2); }
/* "Voltar à Visão Geral" (seção 6 do pedido): não deve se perder entre os outros botões ghost da
   barra — primeiro item da fileira, borda/texto na cor de destaque (--azul, mesmo tom já usado em
   .atend-nav-item.next) em vez do cinza padrão de .atend-btn.ghost. Sai do modo foco sem encerrar
   a consulta (closeModuleHost("visao") — cronômetro/progresso/patient_id/consultation_id intactos). */
.atend-btn.ghost.atend-module-back{ border-color: var(--azul); color: var(--azul); font-weight: 800; }
.atend-btn.ghost.atend-module-back:hover{ background: var(--surface-soft); border-color: var(--azul); }

.atend-embedded{ display: block !important; position: static !important; margin: 0 !important; max-width: 1200px; margin-left: auto !important; margin-right: auto !important; }
/* Comandos da etapa passam a viver exclusivamente na barra superior fixa (.atend-module-toolbar)
   quando o painel está embutido no Modo Atendimento — os controles internos abaixo (o mesmo
   "Editar"/"Salvar consulta" que o painel já tinha fora do Atendimento) ficam duplicados e somem
   só aqui, sem remover nada do HTML nem do comportamento fora do Atendimento. */
.atend-embedded .consultation-toolbar,
.atend-embedded #editarFichaBtn,
.atend-embedded .actions button[onclick^="salvarFichaPaciente"]{ display: none !important; }

.atend-modal-overlay{ position: fixed; inset: 0; background: rgba(0,0,0,.65); z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 20px; backdrop-filter: blur(4px); }
.atend-modal{ background: var(--surface); border: 1px solid var(--borda); border-radius: 18px; width: 100%; max-width: 540px; box-shadow: 0 24px 64px rgba(0,0,0,.55); overflow: hidden; max-height: 88vh; display: flex; flex-direction: column; animation: atend-modal-in .2s ease; }
.atend-modal.atend-modal-wide{ max-width: 760px; }
/* Preview do "Resumo do Paciente" (revisão antes de publicar) — papel branco fixo de propósito,
   igual a qualquer outro documento gerado (.doc/.doc-page/evolucaoPageHTML): representa o que o
   paciente vai efetivamente ver, não segue o tema escuro do app (é conteúdo, não interface). */
.atend-resumo-preview{ border: 1px solid var(--borda); border-radius: 10px; overflow: hidden; max-height: 50vh; overflow-y: auto; }
/* Evolução automática (IA) — texto pensado pra leitura de prontuário: entrelinha maior, largura
   confortável (nunca a largura toda do modal wide, ~68 caracteres por linha é o ideal de leitura)
   e mais respiro entre os blocos de seção (a própria string já vem com "\n\n" entre seções). */
.evo-ia-textarea{ line-height: 1.75; font-size: 13.5px; padding: 16px 18px; max-width: 68ch; margin: 0 auto; }
@keyframes atend-modal-in{ from{ transform: scale(.95) translateY(10px); opacity: 0; } to{ transform: scale(1) translateY(0); opacity: 1; } }
.atend-modal-head{ display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--borda); font-weight: 800; font-size: .95rem; color: var(--text); }
.atend-modal-close{ background: none; border: none; color: var(--muted); font-size: 1.4rem; padding: 2px 8px; border-radius: 8px; cursor: pointer; }
.atend-modal-body{ padding: 12px 20px 18px; display: flex; flex-direction: column; gap: 10px; overflow: auto; }
.atend-summary-hero{ display: flex; align-items: center; gap: 12px; background: var(--surface-soft); border: 1px solid var(--borda); border-radius: 12px; padding: 14px 16px; }
.atend-summary-hero-ico{ width: 38px; height: 38px; border-radius: 10px; background: rgba(22,163,74,.13); color: #16a34a; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.atend-summary-hero-ico svg{ width: 19px; height: 19px; }
.atend-summary-hero b{ display: block; font-size: 1.3rem; font-weight: 900; color: var(--text); }
.atend-summary-hero span{ font-size: 11px; color: var(--muted); font-weight: 600; }
.atend-summary-row{ display: flex; align-items: center; gap: 10px; padding: 9px 12px; background: var(--surface); border: 1px solid var(--borda); border-radius: 10px; font-size: 12.5px; }
.atend-summary-row .s-ico{ width: 22px; height: 22px; border-radius: 50%; background: rgba(22,163,74,.13); color: #16a34a; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.atend-summary-row .s-ico svg{ width: 12px; height: 12px; }
.atend-summary-row.pending .s-ico{ background: rgba(245,158,11,.16); color: #b45309; }
:root[data-theme="dark"] .atend-summary-row.pending .s-ico{ color: #fbbf24; }
.atend-summary-row .s-lbl{ color: var(--muted); font-weight: 600; }
.atend-summary-row .s-val{ margin-left: auto; font-weight: 700; color: var(--text); text-align: right; }
.atend-modal-foot{ padding: 14px 20px 18px; border-top: 1px solid var(--borda); display: flex; justify-content: flex-end; gap: 8px; }
