/* ===================================================================
   LAUDOS — Editor Word-like
   =================================================================== */

.laudos-full {
  display: flex;
  flex-direction: column;
  height: calc(100vh - 6.5rem);
  min-height: 0;
}

.medico-main--laudos {
  padding: 0 !important;
  height: 100vh;
  overflow: hidden;
}

.medico-main--laudos .laudos-full {
  height: 100vh;
}

.laudos-section {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}

/* Lista */

/* Meta bar (legado — mantido para evitar quebra de outros estilos) */

/* Barra compacta de seleção de máscara */
.mask-bar {
  background: #0d1521;
  border-bottom: 1px solid rgba(99,162,255,0.15);
  padding: 5px 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  flex-shrink: 0;
  position: relative;
}
.dark-mode .mask-bar {
  position: relative;
  z-index: 2;
  background: #070e1a;
  border-bottom-color: rgba(99,162,255,0.14);
}

/* Spotlight de palco — cone luminoso de cima batendo no picker centralizado */
.mask-bar::after {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 560px;
  height: 100%;
  pointer-events: none;
  clip-path: inset(0);   /* contém o efeito sem overflow:hidden no pai */
  background:
    radial-gradient(ellipse 180px 400% at 50% -10px, rgba(80,150,255,0.22) 0%, rgba(60,120,255,0.08) 35%, transparent 60%),
    radial-gradient(ellipse 60px 120% at 50% 0%,    rgba(140,200,255,0.18) 0%, transparent 55%);
  animation: spot-breathe 5s ease-in-out infinite;
  z-index: 0;
}
/* Oculta spotlight só quando o mod saiu do centro E não há nenhum picker--active centralizando */
.mask-bar:has(#laudo-modalidade-picker.picker--selected):not(:has(.picker--active))::after {
  opacity: 0;
  transition: opacity 0.4s;
}
@keyframes spot-breathe {
  0%, 100% { opacity: 0.6; }
  50%       { opacity: 1;   }
}

/* Glow ring no picker box quando centrali  zado */
#laudo-modalidade-picker:not(.picker--selected) {
  box-shadow: 0 0 14px 4px rgba(80,150,255,0.20), 0 0 2px 1px rgba(100,170,255,0.15);
  transition: box-shadow 0.4s;
}
#laudo-modalidade-picker.picker--selected {
  box-shadow: none;
  transition: box-shadow 0.3s;
}

/* Toolbar */
.editor-toolbar-bar {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-top: none;
  padding: 0 12px;
  height: 40px;
  display: flex;
  gap: 0;
  align-items: center;
  flex-wrap: nowrap;
  overflow: visible;
  user-select: none;
  flex-shrink: 0;
}

.editor-toolbar-group {
  display: flex;
  gap: 1px;
  align-items: center;
  padding: 0 0.5rem;
  border-right: 1px solid #e2e8f0;
}

.editor-toolbar-group:first-child { padding-left: 0; }
.editor-toolbar-group:last-child  { border-right: none; }

.etb-btn {
  background: none;
  border: 1px solid transparent;
  border-radius: 4px;
  width: 28px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #334155;
  font-size: 0.88rem;
  padding: 0;
  transition: background 0.12s, border-color 0.12s;
  flex-shrink: 0;
}

.etb-btn:hover   { background: #e2e8f0; border-color: #cbd5e1; }
.etb-btn.is-active { background: #dbeafe; border-color: #93c5fd; color: #1d4ed8; }

.etb-btn svg { display: block; pointer-events: none; }

.etb-b { font-weight: 700; font-size: 0.95rem; }
.etb-i { font-style: italic; font-size: 0.95rem; }
.etb-u { text-decoration: underline; font-size: 0.95rem; }

.etb-select {
  border: 1px solid #e2e8f0;
  border-radius: 4px;
  padding: 0.15rem 0.35rem;
  font-size: 0.82rem;
  background: #fff;
  cursor: pointer;
  height: 26px;
  color: #334155;
}

/* Editor body: page-wrap + snippets side panel */
.editor-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: row;
}

/* A4 page area */
.editor-page-wrap {
  flex: 1;
  min-height: 0;
  background: #d4d8dc;
  overflow-y: auto;
  overflow-x: auto;
  padding: 2rem 1.5rem 3rem;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  border: 1px solid #e2e8f0;
  border-top: none;
  border-left: none;
  border-radius: 0 0 10px 0;
}

/* ── Snippets / Frases Rápidas panel ────────────────────────────────────── */
.laudo-snippets-panel {
  width: 174px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-top: none;
  border-radius: 0 0 0 10px;
  overflow: hidden;
  transition: width 0.18s ease;
}

.laudo-snippets-panel.is-collapsed {
  width: 34px;
}

.laudo-snippets-panel-right {
  width: 280px;
  border-radius: 0;
  border-left: none;
  transition: width 0.2s ease;
}

/* ── Coluna ÓRGÃOS + EXTRAS empilhados (scroll único) ───────────────────── */
.laudo-orgaos-col {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow-y: auto;
}
/* Painéis internos não rolam sozinhos: a coluna inteira rola como um só */
.laudo-orgaos-col > .laudo-snippets-panel-right {
  flex: 0 0 auto;
  overflow: visible;
  border-radius: 0;
}
.laudo-orgaos-col > .laudo-snippets-panel-right #snp-body-2 {
  overflow: visible;
}
.laudo-orgaos-col > .laudo-active-panel {
  flex: 0 0 auto;
  overflow: visible;
  border-left: none;
  border-radius: 0 0 0 10px;
}
.laudo-orgaos-col > .laudo-active-panel #snp-body-ativas {
  overflow: visible;
}
/* Título "Extras" redundante quando empilhado: Impressão/Observações/Achados
   fluem como acordeões logo abaixo de Intestino */
.laudo-orgaos-col > .laudo-active-panel > .snp-header {
  display: none;
}

/* Expanded state: when left panel (Frases Rápidas) is collapsed */
.laudo-snippets-panel-right.is-expanded {
  width: 480px;
}
.laudo-snippets-panel-right.is-expanded #snp-body-2 {
  overflow-x: hidden;
}
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px 8px;
}
/* Complex items always full-width in grid */
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open .snp-item-variants,
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open .snp-item-wrap,
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open .snp-show-when,
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open .snp-divider,
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open .snp-loc-inline,
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open [data-snp-normal="true"] {
  grid-column: 1 / -1;
}
.laudo-snippets-panel-right.is-expanded .snp-cat-body.is-open .snp-item {
  width: 100%;
  box-sizing: border-box;
}
/* Headings in expanded mode */
.laudo-snippets-panel-right.is-expanded .snp-cat-hdr {
  background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%);
}
.dark-mode .laudo-snippets-panel-right.is-expanded .snp-cat-hdr {
  background: linear-gradient(135deg, #131d35 0%, #0f1624 100%);
}

/* ── Bosniak 2019 — formulário interativo ────────────────────────────────── */
.bnk-form { display:flex; flex-direction:column; gap:5px; padding:6px 0; }
.bnk-row  { display:flex; flex-wrap:wrap; align-items:center; gap:4px; }
.bnk-lbl  { font-size:9px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.5px; flex-basis:100%; margin-bottom:1px; }
.bnk-chips { display:flex; flex-wrap:wrap; gap:3px; }
.bnk-chip {
  font-size:11px; padding:2px 8px; border-radius:12px; border:1px solid rgba(59,130,246,.3);
  background:rgba(15,20,40,.6); color:#94a3b8; cursor:pointer; transition:all .15s;
}
.bnk-chip:hover   { border-color:#3b82f6; color:#93c5fd; }
.bnk-chip.is-active { background:rgba(37,99,235,.35); border-color:#3b82f6; color:#bfdbfe; font-weight:600; }
.bnk-chk  { font-size:11px; color:#94a3b8; display:flex; align-items:center; gap:3px; cursor:pointer; }
.bnk-num  { width:52px; padding:2px 5px; background:rgba(15,20,40,.7); border:1px solid rgba(59,130,246,.25); border-radius:6px; color:#cbd5e1; font-size:11px; text-align:center; }
.bnk-uh   { width:58px; }
.bnk-num:focus { outline:none; border-color:#3b82f6; }
.bnk-realce { font-size:11px; color:#64748b; padding:2px 6px; border-radius:10px; background:rgba(30,40,60,.5); }
.bnk-realce--ausente  { color:#4ade80; }
.bnk-realce--minimo   { color:#fbbf24; }
.bnk-realce--evidente { color:#f87171; }
.bnk-result { display:flex; align-items:center; gap:8px; margin-top:4px; padding:5px 8px; border-radius:8px; background:rgba(15,25,60,.6); border:1px solid rgba(59,130,246,.2); }
.bnk-result-class { font-size:13px; font-weight:700; color:#64748b; }
.bnk-cls-I   { color:#4ade80; }
.bnk-cls-II  { color:#4ade80; }
.bnk-cls-IIF { color:#fbbf24; }
.bnk-cls-III { color:#f97373; }
.bnk-cls-IV  { color:#dc2626; }
.bnk-result-risk { font-size:10px; color:#64748b; }
.bnk-preview { font-size:11px; color:#94a3b8; line-height:1.5; padding:4px 0; min-height:16px; }
.bnk-insert-btn, .bnk-add-btn {
  font-size:11px; padding:3px 10px; border-radius:8px; cursor:pointer; border:1px solid;
  background:transparent; margin-top:2px; transition:all .15s;
}
.bnk-insert-btn { border-color:#3b82f6; color:#93c5fd; }
.bnk-insert-btn:hover { background:rgba(37,99,235,.3); }
.bnk-add-btn { border-color:rgba(59,130,246,.3); color:#64748b; margin-left:6px; }
.bnk-add-btn:hover { border-color:#3b82f6; color:#93c5fd; }

/* ── Background 3D animado – camada global fixa cobrindo toda a viewport ── */
#snippets-bg-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 0;
}

/* Todos os containers de conteúdo ficam acima do canvas */
#laudos-editor-section {
  position: relative;
  z-index: 1;
  background: transparent;
}

.dark-mode #laudos-editor-section {
  background: transparent;
}

.snp-header { position: relative; z-index: 1; }
.snp-body   { position: relative; z-index: 1; }

/* Seção de cabeçalho TC (fixa, acima do snp-body) */
.snp-tc-cabecalho {
  flex-shrink: 0;
  padding: 0;                          /* sections têm padding próprio */
  border-bottom: 1px solid #e2e8f0;
  background: #f8fafc;
}
.dark-mode .snp-tc-cabecalho {
  background: #161b27;
  border-bottom-color: rgba(0,212,255,0.12);
}

/* Layout compacto: seções dentro do painel de 174px */
.snp-tc-cabecalho .section {
  padding: 6px 8px;
}
.snp-tc-cabecalho .section-label {
  font-size: 9px;
  margin-bottom: 5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.snp-tc-cabecalho .ig-header {
  margin-bottom: 5px;
  gap: 4px;
}
.snp-tc-cabecalho .field-row {
  gap: 5px;
  margin-bottom: 4px;
}
.snp-tc-cabecalho .field-row .field-label {
  font-size: 9px;
}
/* Inputs compactos — override de .input dentro do cabeçalho TC */
.snp-tc-cabecalho input[type="text"] {
  height: 24px;
  padding: 0 5px;
  font-size: 0.70rem;
}

.snp-tc-cabecalho .snp-minigroup-title {
  font-size: 9px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #475569;
  margin-bottom: 4px;
  border-bottom: none;
  display: flex;
  align-items: center;
  gap: 4px;
}
.dark-mode .snp-tc-cabecalho .snp-minigroup-title { color: #94a3b8; }
.snp-tc-indicacao { padding: 0; border-bottom: none; margin-top: 6px; }

/* Painel "Frases Removidas" (lado direito do documento) */
.editor-right-panels {
  width: 210px;
  flex-shrink: 0;
  align-self: stretch;
  display: flex;
  flex-direction: column;
}

.laudo-active-panel {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-top: none;
  border-left: none;
  border-radius: 0 0 10px 0;
  overflow: hidden;
}

/* ── Painel de Prontuário (coluna direita do editor — ex-"Extras") ─────────── */
.laudo-prontuario-panel {
  width: 215px;
  flex-shrink: 0;
  /* min-height: 0 deixa o item flex encolher até a altura da row (.editor-body);
     sem isso o painel cresce com o conteúdo e transborda sobre a barra flutuante
     Config/EdSpace. O scroll real fica no .lpp-body. (igual .laudo-orgaos-col) */
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-top: none;
  border-left: none;
  border-radius: 0 0 10px 0;
  overflow: hidden;
}
/* Header: título protagonista (Montserrat) + badge CIFRADO discreta à direita. */
.lpp-header {
  display: flex; align-items: center; gap: 8px;
  padding: 0.7rem 0.85rem; background: #fff;
  border-bottom: 1px solid #e2e8f0; flex-shrink: 0;
}
.lpp-title { font-family: 'Montserrat','Inter',system-ui,sans-serif; font-size: 0.74rem; font-weight: 700; color: #334155; text-transform: uppercase; letter-spacing: .09em; }
.lpp-badge { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; font-size: 0.55rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: #0891b2; background: transparent; border: 1px solid rgba(8,145,178,.4); border-radius: 999px; padding: 2px 7px; }
.lpp-badge::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: #0891b2; flex: 0 0 auto; }
/* padding-bottom extra: o último item (nota RIS) não fica atrás das pílulas
   flutuantes Config/EdSpace (position: fixed; bottom: 18px; ~34px de altura). */
.lpp-body { flex: 1; overflow-y: auto; padding: 16px 14px 66px; display: flex; flex-direction: column; gap: 16px; }

/* Card do paciente — só o aviso de laudo avulso. Quando há paciente vinculado,
   o box é ocultado (hidden): nome/exame/nascimento já vivem no banner do topo. */
.lpp-paciente { display: flex; flex-direction: column; gap: 5px; padding: 12px; background: #f1f5f9; border: 1px solid transparent; border-radius: 8px; }
.lpp-avulso { font-size: 11px; font-style: italic; color: #64748b; }

/* 2. Salvar — ação secundária: ghost/outline ciano, preenche no hover. */
.lpp-btn { height: 34px; border: none; border-radius: 6px; cursor: pointer; font-size: 12px; font-weight: 600; background: #e2e8f0; color: #334155; transition: background .18s cubic-bezier(0.16,1,0.3,1), border-color .18s cubic-bezier(0.16,1,0.3,1), color .18s cubic-bezier(0.16,1,0.3,1); }
.lpp-btn:hover { background: #d8e0e8; }
.lpp-btn--save { height: 36px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; background: transparent; color: #0891b2; border: 1px solid rgba(8,145,178,.5); }
.lpp-btn--save:hover { background: rgba(8,145,178,.08); border-color: #0891b2; }
.lpp-btn--save:active { transform: translateY(0.5px); }

/* 3. Histórico — protagonista funcional. Título hugueia a lista (seção própria). */
.lpp-section { display: flex; flex-direction: column; gap: 8px; padding-top: 16px; border-top: 1px solid rgba(15,23,42,.06); }
.lpp-sec-title { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: #94a3b8; }
/* A sidebar não lista mais os itens: só uma linha de status + o botão do pop-up. */
.lpp-hist-status:empty { display: none; }

/* Badge de modalidade — cor por categoria (US/TC/RM/RX). Reusada no pop-up. */
.lpp-mod { font-size: 9px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; border-radius: 999px; padding: 1px 6px; color: #0891b2; background: rgba(8,145,178,.1); }
.lpp-mod--us  { color: #0891b2; background: rgba(8,145,178,.1); }
.lpp-mod--tc  { color: #b45309; background: rgba(245,158,11,.13); }
.lpp-mod--rm  { color: #6d28d9; background: rgba(124,58,237,.13); }
.lpp-mod--rx  { color: #0f766e; background: rgba(20,184,166,.13); }
.lpp-mod--gen { color: #475569; background: rgba(100,116,139,.12); }
/* Consulta: badge neutro cinza-azulado (fora da paleta de imagem, dentro do DS). */
.lpp-mod--cons { color: #475569; background: rgba(71,85,105,.08); border: 1px solid rgba(71,85,105,.24); padding: 0 5px; }
/* Laboratório: verde-água dessaturado — distinto do teal do RX, ainda na paleta. */
.lpp-mod--lab  { color: #3f7d6e; background: rgba(63,125,110,.13); }

/* Botão que abre o pop-up de histórico completo (categorizado, refinado). */
.lpp-vertudo {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  margin-top: 4px; height: 30px; width: 100%;
  font-family: 'Inter', system-ui, sans-serif; font-size: 11.5px; font-weight: 600; letter-spacing: .02em;
  color: #0891b2; background: transparent; border: 1px dashed rgba(8,145,178,.4);
  border-radius: 7px; cursor: pointer;
  transition: background .16s cubic-bezier(0.16,1,0.3,1), border-color .16s cubic-bezier(0.16,1,0.3,1), color .16s cubic-bezier(0.16,1,0.3,1);
}
.lpp-vertudo[hidden] { display: none; }
.lpp-vertudo:hover { background: rgba(8,145,178,.07); border-color: rgba(8,145,178,.7); }
.lpp-vertudo svg { transition: transform .16s ease; }
.lpp-vertudo:hover svg { transform: translateX(2px); }

/* Estado vazio — informativo, não de falha: ícone sutil + frase neutra. */
.lpp-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 11px; color: #94a3b8; text-align: center; padding: 20px 10px; line-height: 1.5; }
.lpp-empty-ic { width: 26px; height: 26px; color: #cbd5e1; }

/* 4. Status de imagens (loop RIS→PACS): âmbar = aguardando (espera, não erro),
   verde = imagens no PACS. Sem margin-top:auto — segue logo após o histórico. */
.lpp-ris { display: flex; flex-direction: column; gap: 6px; padding-top: 16px; border-top: 1px solid rgba(15,23,42,.06); }
.lpp-ris-cap { font-size: 10px; color: #94a3b8; text-align: center; }

.lpp-imgbtn { display: flex; align-items: center; gap: 8px; padding: 0 12px; position: relative; border: 1px solid transparent; transition: background .18s, border-color .18s, color .18s; }
.lpp-imgbtn-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; background: #94a3b8; }
.lpp-imgbtn-lbl { flex: 1 1 auto; text-align: left; }
.lpp-imgbtn-spin { width: 13px; height: 13px; flex: 0 0 auto; border-radius: 50%; border: 2px solid currentColor; border-top-color: transparent; opacity: 0; }
.lpp-imgbtn--checking .lpp-imgbtn-spin { opacity: .9; animation: lpp-spin .6s linear infinite; }
@keyframes lpp-spin { to { transform: rotate(360deg); } }

.lpp-imgbtn--neutral { background: #fff; color: #0891b2; border-color: rgba(8,145,178,.4); }
.lpp-imgbtn--neutral:hover { background: rgba(8,145,178,.08); }

.lpp-imgbtn--pending { background: rgba(245,158,11,.08); color: #b45309; border-color: rgba(245,158,11,.42); }
.lpp-imgbtn--pending:hover { background: rgba(245,158,11,.14); }
.lpp-imgbtn--pending .lpp-imgbtn-dot { background: #f59e0b; animation: lpp-pulse 2s ease-in-out infinite; }
@keyframes lpp-pulse { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(245,158,11,.5); } 50% { opacity: .5; box-shadow: 0 0 0 4px rgba(245,158,11,0); } }

.lpp-imgbtn--ready { background: rgba(22,163,74,.09); color: #15803d; border-color: rgba(22,163,74,.5); }
.lpp-imgbtn--ready:hover { background: rgba(22,163,74,.15); }
.lpp-imgbtn--ready .lpp-imgbtn-dot { background: #16a34a; box-shadow: 0 0 7px rgba(22,163,74,.8); }

@media (prefers-reduced-motion: reduce) {
  .lpp-imgbtn--pending .lpp-imgbtn-dot,
  .lpp-imgbtn--checking .lpp-imgbtn-spin { animation: none; }
  .lpp-vertudo, .lpp-vertudo svg { transition: none; }
}

/* Dark mode */
.dark-mode .laudo-prontuario-panel { background: #0d1420; border-color: #1e2d3c; }
.dark-mode .lpp-header { background: #0a0f18; border-color: #1e2d3c; }
.dark-mode .lpp-title { color: #cfe4ee; }
.dark-mode .lpp-badge { color: #34d399; border-color: rgba(52,211,153,.4); }
.dark-mode .lpp-badge::before { background: #34d399; }
.dark-mode .lpp-paciente { background: #131d2a; }
.dark-mode .lpp-avulso { color: #6b8aa0; }
.dark-mode .lpp-btn { background: #1a2735; color: #9ab3c4; }
.dark-mode .lpp-btn:hover { background: #1f2e3d; }
.dark-mode .lpp-btn--save { background: transparent; color: #00e5ff; border-color: rgba(0,229,255,.45); }
.dark-mode .lpp-btn--save:hover { background: rgba(0,229,255,.1); border-color: #00e5ff; }
.dark-mode .lpp-section,
.dark-mode .lpp-ris { border-color: rgba(255,255,255,.06); }
.dark-mode .lpp-sec-title { color: #6b8aa0; }
.dark-mode .lpp-empty { color: #6b8aa0; }
.dark-mode .lpp-empty-ic { color: #33506a; }
.dark-mode .lpp-mod { color: #00e5ff; background: rgba(0,229,255,.1); }
.dark-mode .lpp-mod--tc  { color: #fbbf24; background: rgba(251,191,36,.12); }
.dark-mode .lpp-mod--rm  { color: #a78bfa; background: rgba(167,139,250,.13); }
.dark-mode .lpp-mod--rx  { color: #34d399; background: rgba(52,211,153,.12); }
.dark-mode .lpp-mod--gen { color: #9ab3c4; background: rgba(154,179,196,.12); }
.dark-mode .lpp-mod--cons { color: #9ab3c4; background: rgba(154,179,196,.1); border-color: rgba(154,179,196,.26); }
.dark-mode .lpp-mod--lab  { color: #7dd3c0; background: rgba(125,211,192,.12); }
.dark-mode .lpp-vertudo { color: #00e5ff; border-color: rgba(0,229,255,.35); }
.dark-mode .lpp-vertudo:hover { background: rgba(0,229,255,.08); border-color: rgba(0,229,255,.6); }
.dark-mode .lpp-ris-cap { color: #4a6478; }
.dark-mode .lpp-imgbtn--neutral { background: #131d2a; color: #00e5ff; border-color: rgba(0,229,255,.35); }
.dark-mode .lpp-imgbtn--neutral:hover { background: #16222f; }
.dark-mode .lpp-imgbtn--neutral .lpp-imgbtn-dot { background: #4a6478; }
.dark-mode .lpp-imgbtn--pending { background: rgba(251,191,36,.10); color: #fbbf24; border-color: rgba(251,191,36,.4); }
.dark-mode .lpp-imgbtn--pending:hover { background: rgba(251,191,36,.16); }
.dark-mode .lpp-imgbtn--pending .lpp-imgbtn-dot { background: #fbbf24; }
.dark-mode .lpp-imgbtn--ready { background: rgba(52,211,153,.12); color: #34d399; border-color: rgba(52,211,153,.45); }
.dark-mode .lpp-imgbtn--ready:hover { background: rgba(52,211,153,.18); }
.dark-mode .lpp-imgbtn--ready .lpp-imgbtn-dot { background: #34d399; box-shadow: 0 0 8px rgba(52,211,153,.85); }

.laudo-active-panel #snp-body-ativas {
  flex: 1;
  overflow-y: auto;
  padding: 0;
}

.snp-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.55rem 0.65rem;
  background: #fff;
  border-bottom: 1px solid #e2e8f0;
  flex-shrink: 0;
}

.snp-title {
  font-size: 0.72rem;
  font-weight: 700;
  color: #475569;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  white-space: nowrap;
  overflow: hidden;
}

.snp-collapse-btn {
  background: none;
  border: none;
  cursor: pointer;
  color: #94a3b8;
  font-size: 0.7rem;
  padding: 2px 4px;
  border-radius: 3px;
  flex-shrink: 0;
  line-height: 1;
}
.snp-collapse-btn:hover { background: #e2e8f0; color: #475569; }

.laudo-snippets-panel.is-collapsed .snp-title { display: none; }

.snp-body {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
}

.laudo-snippets-panel.is-collapsed .snp-body { display: none; }

.snp-cat { border-bottom: 1px solid #e2e8f0; }
.snp-cat:last-child { border-bottom: none; }

.snp-cat-hdr {
  width: 100%;
  background: #fff;
  border: none;
  padding: 0.42rem 0.65rem;
  text-align: left;
  display: flex;
  align-items: center;
  gap: 0.4rem;
  cursor: pointer;
  font-size: 0.78rem;
  font-weight: 600;
  color: #334155;
  transition: background 0.1s;
}
.snp-cat-hdr:hover { background: #f1f5f9; }

.snp-cat-lbl { flex: 1; }
.snp-arrow { font-size: 0.62rem; color: #94a3b8; }

.snp-cat-body {
  display: none;
  padding: 0.3rem 0.5rem 0.45rem;
  background: #f8fafc;
}
.snp-cat-body.is-open { display: block; }

.snp-item {
  display: block;
  width: 100%;
  text-align: left;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 5px;
  padding: 0.28rem 0.55rem;
  font-size: 0.76rem;
  color: #334155;
  cursor: pointer;
  margin-bottom: 3px;
  transition: background 0.1s, border-color 0.1s, color 0.1s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
}
.snp-item:last-child { margin-bottom: 0; }
.snp-item:hover {
  background: #eff6ff;
  border-color: #93c5fd;
  color: #1d4ed8;
}
.snp-item.is-active {
  background: #dbeafe;
  border-color: #3b82f6;
  color: #1d4ed8;
  font-weight: 600;
}

/* Divisor interno de categoria */
.snp-divider {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #94a3b8;
  padding: 6px 2px 2px;
  margin-top: 2px;
  border-top: 1px solid #e2e8f0;
}
.dark-mode .snp-divider {
  color: #475569;
  border-top-color: #1e2638;
}

/* Mini-grupos lado a lado (ex: Observações — Técnica / Observação) */
.snp-minigroups {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 4px 2px 2px;
}
.snp-minigroup {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
  background: rgba(100,116,139,0.08);
  border-radius: 7px;
  padding: 5px 4px 6px;
}
.dark-mode .snp-minigroup { background: rgba(255,255,255,0.04); }
.snp-minigroup-title {
  font-size: 0.6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #64748b;
  text-align: center;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(100,116,139,0.2);
  margin-bottom: 1px;
}
.dark-mode .snp-minigroup-title { color: #475569; border-bottom-color: rgba(255,255,255,0.07); }
.snp-minigroup .snp-item {
  font-size: 0.72rem;
  padding: 4px 5px;
  text-align: center;
  white-space: normal;
  line-height: 1.2;
}
.snp-contraste-box {
  border: 1px solid rgba(148,163,184,0.2);
  border-radius: 6px;
  padding: 4px 5px 5px;
  margin-top: 3px;
}
.snp-contraste-label {
  display: block;
  font-size: 0.58rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #94a3b8;
  text-align: center;
  margin-bottom: 3px;
}
.snp-contraste-btns {
  display: flex;
  gap: 3px;
}
.snp-contraste-btns .snp-item {
  flex: 1;
  text-align: center;
  padding: 4px 2px;
  overflow: visible;
  text-overflow: clip;
  white-space: nowrap;
  font-size: 0.7rem;
  font-weight: 600;
}

/* Caixa SIM/NÃO da Comparação */
.snp-comp-simno-box {
  border: 1px solid rgba(148,163,184,0.2);
  border-radius: 6px;
  padding: 4px 5px 5px;
  margin-top: 3px;
}
.snp-comp-simno-label {
  display: block;
  font-size: 0.58rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #94a3b8;
  margin-bottom: 3px;
}
.snp-comp-simno-box .snp-contraste-btns .snp-item.is-active {
  background: #22c55e !important;
  border-color: #16a34a !important;
  color: #fff !important;
  box-shadow: 0 0 6px 1px #4ade80aa;
}
.snp-comp-simno-box .snp-contraste-btns .snp-item:hover:not(.is-active) {
  background: #f0fdf4;
}
.dark-mode .snp-comp-simno-box { border-color: rgba(148,163,184,0.15); }
.dark-mode .snp-comp-simno-label { color: #64748b; }
.dark-mode .snp-comp-simno-box .snp-contraste-btns .snp-item.is-active {
  background: #16a34a !important;
  border-color: #15803d !important;
  box-shadow: 0 0 6px 1px #4ade8088;
}
/* Input de texto do achado comparativo */
.snp-comp-texto-input {
  width: 100%;
  box-sizing: border-box;
  font-size: 0.72rem;
  padding: 5px 7px;
  border: 1px solid #bbf7d0;
  border-radius: 5px;
  background: #f0fdf4;
  color: #1e293b;
  outline: none;
  margin-top: 4px;
}
.snp-comp-texto-input:focus { border-color: #22c55e; background: #fff; }
.dark-mode .snp-comp-texto-input { background: #1a2035; border-color: #1e3a24; color: #e2e8f0; }
.dark-mode .snp-comp-texto-input:focus { border-color: #16a34a; }
/* Painel de detalhes da Comparação (data + texto) */
.snp-comp-details { padding: 4px 0 0; }

/* Input de data para seção Comparação */
.snp-comp-date-row {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 6px 8px 4px;
  background: #f0f4ff;
  border-radius: 6px;
  margin: 4px 0 2px;
}
.dark-mode .snp-comp-date-row { background: #1a2035; }
.snp-comp-date-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #1d4ed8;
}
.dark-mode .snp-comp-date-label { color: #93c5fd; }
.snp-comp-date-field-row {
  display: flex;
  align-items: center;
  gap: 4px;
  position: relative;
}
.snp-comp-cal-btn {
  flex-shrink: 0;
  background: none;
  border: 1px solid #c7d2fe;
  border-radius: 4px;
  padding: 3px 5px;
  cursor: pointer;
  font-size: 0.85rem;
  line-height: 1;
  color: #6366f1;
}
.snp-comp-cal-btn:hover { background: #eef2ff; }
.dark-mode .snp-comp-cal-btn { border-color: #334155; color: #818cf8; }
.dark-mode .snp-comp-cal-btn:hover { background: #1e2638; }
.snp-comp-date-input {
  flex: 1;
  min-width: 0;
  box-sizing: border-box;
  font-size: 0.7rem;
  padding: 3px 4px;
  border: 1px solid #c7d2fe;
  border-radius: 4px;
  background: #fff;
  color: #1e293b;
  outline: none;
}
.snp-comp-date-input:focus { border-color: #6366f1; }
.dark-mode .snp-comp-date-input { background: #1e2638; border-color: #334155; color: #e2e8f0; }
.dark-mode .snp-comp-date-input:focus { border-color: #818cf8; }
.snp-comp-mod-row {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 2px;
  flex-wrap: wrap;
}
.snp-comp-mod-btns {
  display: flex;
  gap: 4px;
}
.snp-comp-mod-btn {
  padding: 2px 8px;
  border: 1px solid #c7d2fe;
  border-radius: 4px;
  background: none;
  font-size: 0.66rem;
  font-weight: 700;
  cursor: pointer;
  color: #4f46e5;
  transition: background 0.12s, color 0.12s;
}
.snp-comp-mod-btn:hover { background: #eef2ff; }
.snp-comp-mod-btn.is-active { background: #4f46e5; color: #fff; border-color: #4f46e5; }
.dark-mode .snp-comp-mod-btn { border-color: #334155; color: #818cf8; }
.dark-mode .snp-comp-mod-btn:hover { background: #1e2638; }
.dark-mode .snp-comp-mod-btn.is-active { background: #6366f1; border-color: #6366f1; color: #fff; }

/* ── Dados do Paciente (cabeçalho opcional do laudo) ── */
.snp-minigroup-title {
  display: flex;
  align-items: center;
  gap: 5px;
}

/* Gear button ao lado do título */
.snp-ph-gear {
  margin-left: auto;
  padding: 1px 4px;
  font-size: 0.8rem;
  line-height: 1;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  color: #64748b;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s;
  flex-shrink: 0;
}
.snp-ph-gear:hover {
  color: #6366f1;
  border-color: #6366f1;
  background: rgba(99,102,241,0.08);
}
.dark-mode .snp-ph-gear { color: #4a5568; }
.dark-mode .snp-ph-gear:hover { color: #818cf8; border-color: #818cf8; background: rgba(129,140,248,0.1); }

/* Painel de controle de posição */
.snp-ph-pos-ctrl {
  display: none;
  align-items: center;
  gap: 5px;
  margin-bottom: 4px;
  padding: 4px 6px;
  background: rgba(99,102,241,0.06);
  border: 1px solid rgba(99,102,241,0.25);
  border-radius: 6px;
}
.snp-ph-pos-label {
  font-size: 0.68rem;
  color: #64748b;
  white-space: nowrap;
}
.snp-ph-pos-val {
  font-size: 0.72rem;
  font-weight: 600;
  color: #4f46e5;
  min-width: 38px;
  text-align: center;
}
.snp-ph-pos-minus,
.snp-ph-pos-plus {
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  line-height: 1;
  font-weight: 700;
  background: #312e81;
  color: #c7d2fe;
  border: 1px solid #4f46e5;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.12s;
  padding: 0;
}
.snp-ph-pos-minus:hover,
.snp-ph-pos-plus:hover { background: #4f46e5; color: #fff; }
.dark-mode .snp-ph-pos-ctrl { background: rgba(99,102,241,0.05); border-color: rgba(99,102,241,0.2); }
.dark-mode .snp-ph-pos-label { color: #475569; }
.dark-mode .snp-ph-pos-val { color: #818cf8; }

.snp-patient-header-block {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

/* Sub-grupo: label + input em linha */
.snp-ph-subgroup {
  display: flex;
  align-items: center;
  gap: 6px;
}
.snp-ph-sublabel {
  font-size: 0.6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #64748b;
  white-space: nowrap;
  min-width: 38px;
  text-align: right;
}
.dark-mode .snp-ph-sublabel { color: #475569; }

.snp-ph-nome,
.snp-ph-data,
.snp-ph-medico {
  width: 100%;
  box-sizing: border-box;
  font-size: 0.72rem;
  padding: 4px 6px;
  border: 1px solid #c7d2fe;
  border-radius: 5px;
  background: #fff;
  color: #1e293b;
  outline: none;
  line-height: 1.4;
}

.snp-ph-nome:focus,
.snp-ph-data:focus,
.snp-ph-medico:focus { border-color: #6366f1; }

.snp-ph-inserir-btn {
  width: 100%;
  margin-top: 2px;
  padding: 4px 8px;
  font-size: 0.70rem;
  font-weight: 600;
  background: #312e81;
  color: #c7d2fe;
  border: 1px solid #4f46e5;
  border-radius: 5px;
  cursor: pointer;
  transition: background 0.12s, color 0.12s;
}

.snp-ph-inserir-btn:hover {
  background: #4f46e5;
  color: #fff;
}

/* dark mode */
.dark-mode .snp-ph-nome,
.dark-mode .snp-ph-data,
.dark-mode .snp-ph-medico {
  background: #0d1521;
  border-color: #2a3a55;
  color: #94a3b8;
}

.dark-mode .snp-ph-nome:focus,
.dark-mode .snp-ph-data:focus,
.dark-mode .snp-ph-medico:focus { border-color: #6366f1; }

/* Indicação clínica input (mini-group) */
.snp-clinica-input {
  width: 100%;
  box-sizing: border-box;
  font-size: 0.72rem;
  padding: 4px 6px;
  border: 1px solid #c7d2fe;
  border-radius: 5px;
  background: #f1f5f9;
  color: #1e293b;
  outline: none;
  line-height: 1.4;
}
.snp-clinica-input:focus { border-color: #6366f1; background: #fff; }
.dark-mode .snp-clinica-input {
  background: #0d1521;
  border-color: #2a3a55;
  color: #94a3b8;
}
.dark-mode .snp-clinica-input:focus { border-color: #6366f1; background: #0d1521; }

/* Profile button */
.snp-profile-btn {
  width: 100%;
  font-size: 0.8rem;
  font-weight: 600;
  padding: 7px 10px;
  border-radius: 6px;
  background: #f1f5f9;
  border: 1.5px solid #cbd5e1;
  color: #334155;
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
  text-align: left;
}
.snp-profile-btn:hover { background: #e0e7ff; border-color: #6366f1; color: #4338ca; }
.snp-profile-btn.is-active { background: #4f46e5; border-color: #4f46e5; color: #fff; }

/* Linha de variantes inline (ex: Microangiopatia Leve / Mod. / Acentuada) */
.snp-item-variants {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 3px;
  padding: 4px 2px 2px;
}
.snp-item-variants + .snp-item-variants {
  padding-top: 1px;
  margin-top: -2px;
}
.snp-var-label {
  font-size: 0.73rem;
  font-weight: 500;
  color: #475569;
}
.snp-var-btns {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.snp-var-btn {
  font-size: 0.72rem;
  padding: 3px 10px;
  border-radius: 4px;
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #334155;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.1s, border-color 0.1s, color 0.1s;
}
.snp-var-btn:hover {
  background: #eff6ff;
  border-color: #93c5fd;
  color: #1d4ed8;
}
.snp-var-btn.is-active {
  background: #dbeafe;
  border-color: #3b82f6;
  color: #1d4ed8;
  font-weight: 600;
}
/* ── Sinus selector ───────────────────────────────────────────────────────── */
.snp-sinus-sel {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 4px 2px 2px;
  margin-bottom: 3px;
}
.snp-sg-row, .snp-sl-row {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.snp-sg-btn, .snp-sl-btn {
  font-size: 0.72rem;
  padding: 3px 9px;
  border-radius: 4px;
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #334155;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.1s, border-color 0.1s, color 0.1s;
}
.snp-sg-btn:hover, .snp-sl-btn:hover { background: #eff6ff; border-color: #93c5fd; color: #1d4ed8; }
.snp-sg-btn.is-active, .snp-sl-btn.is-active { background: #dbeafe; border-color: #3b82f6; color: #1d4ed8; font-weight: 600; }
.snp-sinus-opts {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 5px 6px 4px;
  background: #f8fafc;
  border-radius: 6px;
  border: 1px solid #e2e8f0;
}
.snp-sinus-checks {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.snp-sc-lbl {
  display: flex;
  align-items: center;
  gap: 3px;
  font-size: 0.72rem;
  color: #334155;
  cursor: pointer;
  white-space: nowrap;
}
.snp-sc-lbl input[type="checkbox"] { accent-color: #3b82f6; cursor: pointer; }
.snp-sinus-apply {
  font-size: 0.72rem;
  padding: 3px 10px;
  border-radius: 4px;
  border: 1px solid #86efac;
  background: #dcfce7;
  color: #166534;
  cursor: pointer;
  font-weight: 600;
  align-self: flex-start;
  transition: background 0.1s;
}
.snp-sinus-apply:hover { background: #bbf7d0; border-color: #4ade80; }
/* Botão "+ Outro cisto" inline no editor */
.snp-extra-add-btn {
  font-size: 0.75rem;
  padding: 2px 10px;
  border-radius: 4px;
  border: 1px dashed #93c5fd;
  background: #eff6ff;
  color: #1d4ed8;
  cursor: pointer;
  font-weight: 500;
  user-select: none;
  transition: background 0.1s;
}
.snp-extra-add-btn:hover { background: #dbeafe; border-color: #3b82f6; }
.dark-mode .snp-sg-btn, .dark-mode .snp-sl-btn { background: #1e293b; border-color: #334155; color: #cbd5e1; }
.dark-mode .snp-sg-btn:hover, .dark-mode .snp-sl-btn:hover { background: #1e3a5f; border-color: #3b82f6; color: #93c5fd; }
.dark-mode .snp-sg-btn.is-active, .dark-mode .snp-sl-btn.is-active { background: #1e3a5f; border-color: #3b82f6; color: #93c5fd; }
.dark-mode .snp-sinus-opts { background: #0f172a; border-color: #334155; }
.dark-mode .snp-sc-lbl { color: #cbd5e1; }
.dark-mode .snp-sinus-apply { background: #14532d; border-color: #166534; color: #86efac; }
.dark-mode .snp-sinus-apply:hover { background: #166534; }

/* Row buttons (independent toggles, same visual as var-btn) */
.snp-row-btn {
  font-size: 0.72rem;
  padding: 3px 10px;
  border-radius: 4px;
  border: 1px solid #e2e8f0;
  background: #fff;
  color: #334155;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.1s, border-color 0.1s, color 0.1s;
}
.snp-row-btn:hover { background: #eff6ff; border-color: #93c5fd; color: #1d4ed8; }
.snp-row-btn.is-active { background: #dbeafe; border-color: #3b82f6; color: #1d4ed8; font-weight: 600; }
.dark-mode .snp-row-btn { background: #1e293b; border-color: #334155; color: #94a3b8; }
.dark-mode .snp-row-btn:hover { background: #1e2638; border-color: #6366f1; color: #818cf8; }
.dark-mode .snp-row-btn.is-active { background: #1e2847; border-color: #6366f1; color: #818cf8; }

/* ── Campos editáveis no laudo ──────────────────────────────────────────── */
.laudo-campo {
  display: inline;
  color: #b04000;
  background: rgba(255,150,50,0.08);
  border-radius: 3px;
  padding: 0 2px;
  cursor: text;
  outline: none;
}
/* Campo com opções predefinidas — indica clicabilidade */
.laudo-campo[data-options] {
  color: #1a6fbf;
  background: rgba(26,111,191,0.09);
  border-bottom: 1.5px dashed rgba(26,111,191,0.45);
  cursor: pointer;
  border-radius: 3px 3px 0 0;
  padding: 0 3px;
  transition: background 0.12s, border-color 0.12s;
}
.laudo-campo[data-options]:hover {
  background: rgba(26,111,191,0.18);
  border-bottom-color: rgba(26,111,191,0.80);
}
/* Campo preenchido — aparência discreta, mantém re-seleção */
.laudo-campo[data-filled] {
  color: inherit;
  background: transparent;
  border-bottom: 1.5px solid rgba(26,111,191,0.22);
  cursor: pointer;
  padding: 0;
  border-radius: 0;
}
.laudo-campo[data-filled]:hover {
  background: rgba(26,111,191,0.07);
  border-bottom-color: rgba(26,111,191,0.50);
}

.editor-page {
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent calc(29.7cm - 1.5px),
      rgba(99, 102, 241, 0.45) calc(29.7cm - 1.5px),
      rgba(99, 102, 241, 0.45) 29.7cm
    )
    #fff;
  box-sizing: border-box;   /* min-height inclui o padding — total = A4 exato */
  width: 21cm;
  min-height: 29.7cm;
  padding: 2.5cm 2cm;
  box-shadow: 0 4px 20px rgba(0,0,0,0.18), 0 0 0 1px rgba(0,0,0,0.06);
  border-radius: 1px;
  flex-shrink: 0;
}

#laudo-editor {
  outline: none;
  font-family: Calibri, sans-serif;
  font-size: 10pt;
  line-height: 1.8;
  min-height: 22cm;
  color: #111;
  word-wrap: break-word;
}

/* Parágrafos inseridos por máscaras preservam seus estilos inline */
#laudo-editor p {
  margin: 0;
  padding: 0;
}

/* ── Seletor de modalidade (TC / RM / USG / RX) ────────────────────────────── */
.modality-picker {
  display: inline-flex;
  gap: 4px;
  padding: 3px;
  border-radius: 10px;
  background: #eef2f8;
  border: 1px solid #dde3ee;
  position: relative;
  z-index: 1;   /* fica acima do ::after spotlight da mask-bar */
}

/* Centralização dinâmica da mask-bar */
#laudo-modalidade-picker {
  margin: 0 auto;
}
#laudo-modalidade-picker.picker--selected {
  margin: 0;
}
#editor-subcategoria-picker.picker--active {
  margin: 0 auto;
}
#editor-subcategoria-picker.picker--selected {
  margin: 0;
}
#editor-sub2-picker.picker--active {
  margin: 0 auto;
}

.mod-btn {
  background: transparent;
  border: none;
  border-radius: 7px;
  padding: 0.32rem 0.9rem;
  font-size: 0.80rem;
  font-weight: 700;
  color: #64748b;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, box-shadow 0.15s, transform 0.1s,
              max-width 0.25s ease, opacity 0.2s ease, padding 0.25s ease, margin 0.25s ease;
  letter-spacing: 0.04em;
  white-space: nowrap;
  overflow: hidden;
  max-width: 6rem;
  opacity: 1;
}
.mod-btn--hidden {
  max-width: 0 !important;
  opacity: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  pointer-events: none;
}

.mod-btn:hover {
  background: #fff;
  color: #1e293b;
}

.mod-btn.is-active {
  background: #fff;
  color: #6366f1;
  box-shadow: 0 1px 4px rgba(0,0,0,0.12);
}

.mod-btn[data-mod="TC"].is-active  { color: #6366f1; }
.mod-btn[data-mod="RM"].is-active  { color: #10b981; }
.mod-btn[data-mod="USG"].is-active { color: #f59e0b; }
.mod-btn[data-mod="RX"].is-active  { color: #64748b; }

/* ── Sub-categoria: animação de entrada ─────────────────────────────────────── */
@keyframes subPickerIn {
  from { opacity: 0; transform: translateY(-5px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0)    scale(1);    }
}

.subcategoria-picker,
#editor-sub2-picker {
  display: flex;
  gap: 4px;
  margin-top: 0;
  flex-wrap: wrap;
  align-items: center;
  animation: subPickerIn 0.2s cubic-bezier(0.22,1,0.36,1) both;
  will-change: opacity, transform;
  position: relative;
  z-index: 1;
}

/* ── Sub-categoria nivel 1 (Crânio / Abdome / MSK …) ───────────────────────── */
.sub-btn {
  background: #f1f5f9;
  border: 1px solid #dde3ee;
  border-radius: 20px;
  padding: 0.22rem 0.75rem;
  font-size: 0.76rem;
  font-weight: 600;
  color: #475569;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  max-width: 10rem;
  opacity: 1;
  transition: background 0.13s, color 0.13s, border-color 0.13s, box-shadow 0.13s,
              max-width 0.25s ease, opacity 0.2s ease, padding 0.25s ease, margin 0.25s ease;
}

.sub-btn:hover {
  background: #e2e8f0;
  color: #1e293b;
  border-color: #94a3b8;
}

.sub-btn.is-active {
  background: #6366f1;
  color: #fff;
  border-color: #6366f1;
  box-shadow: 0 0 0 2px rgba(99,102,241,0.2);
}

/* ── Sub2 (Abdome Total / Superior …) — pill mais compacto ─────────────────── */
.sub2-btn {
  font-size: 0.72rem;
  padding: 0.17rem 0.6rem;
  border-radius: 20px;
  background: #f8fafc;
  border: 1px dashed #cbd5e1;
  color: #64748b;
  cursor: pointer;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  max-width: 14rem;
  opacity: 1;
  transition: background 0.13s, color 0.13s, border-color 0.13s,
              max-width 0.25s ease, opacity 0.2s ease, padding 0.25s ease, margin 0.25s ease;
  white-space: nowrap;
}

.sub2-btn:hover {
  background: #e9edf5;
  color: #334155;
  border-style: solid;
}

.sub2-btn.is-active {
  background: #0ea5e9;
  color: #fff;
  border-color: #0ea5e9;
  border-style: solid;
}

#laudo-editor:empty::before {
  content: 'Digite o laudo aqui ou insira uma máscara acima...';
  color: #94a3b8;
  pointer-events: none;
  display: block;
}

#laudo-editor[contenteditable="false"] {
  cursor: default;
}

@media (max-width: 768px) {

  .editor-page {
    padding: 1.5cm 1cm;
  }

  .medico-main--laudos .laudos-full {
    height: 100vh;
  }
}

/* ─── Botão toggle dark mode ──────────────────────────────────────────────── */
.dark-toggle-btn {
  background: none;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 0.35rem 0.65rem;
  font-size: 1rem;
  cursor: pointer;
  line-height: 1;
  transition: background 0.15s, border-color 0.15s;
  color: inherit;
}
.dark-toggle-btn:hover { background: #e2e8f0; }

/* ─── DARK MODE ───────────────────────────────────────────────────────────── */
.dark-mode.page-medico-dashboard {
  background: #060d1a;  /* cor base — canvas fixed fica acima desta camada */
}

/* Main area — transparente + stacking context acima do canvas (z-index:0) */
.dark-mode .medico-main {
  position: relative;
  z-index: 1;
  background: transparent;
}

/* Topbar */
.dark-mode .medico-topbar h1 {
  color: #e2e8f0;
}
.dark-mode #medico-user-name {
  color: #64748b !important;
}
.dark-mode .dark-toggle-btn {
  border-color: #2a3650;
  color: #94a3b8;
}
.dark-mode .dark-toggle-btn:hover {
  background: #1e2638;
  border-color: #3d4f6e;
}

/* Botões */
.dark-mode .btn-outline {
  color: #94a3b8;
  border-color: #2a3650;
  background: transparent;
}
.dark-mode .btn-outline:hover {
  background: #1e2638;
  color: #e2e8f0;
  border-color: #3d4f6e;
}

/* ── Laudos list ── */

/* Dropdown busca paciente */

/* Erro */
.dark-mode .laudos-erro {
  background: #2d1515;
  color: #f87171;
}

/* ── Editor meta bar ── */

/* Select máscara */
.dark-mode #laudo-mask-select {
  background: #0f1624;
  border-color: #2a3650;
  color: #e2e8f0;
  color-scheme: dark;
}
.dark-mode #laudo-mask-select option {
  background: #1a2133;
  color: #e2e8f0;
}

/* ── Toolbar formatação ── */
.dark-mode .editor-toolbar-bar {
  position: relative;
  z-index: 2;
  background: #0a1222;
  border-color: #2a3650;
}
.dark-mode .editor-toolbar-group {
  border-right-color: rgba(99,162,255,0.12);
}
.dark-mode .etb-btn {
  color: #5a7aaa;
  background: transparent;
}
.dark-mode .etb-btn:hover {
  background: rgba(77,158,255,0.12);
  border-color: rgba(77,158,255,0.25);
  color: #b2d0ff;
}
.dark-mode .etb-btn.is-active {
  background: rgba(77,158,255,0.18);
  border-color: rgba(77,158,255,0.45);
  color: #7ab8ff;
}
.dark-mode .etb-select {
  background: rgba(10,20,42,0.60);
  border-color: rgba(99,162,255,0.20);
  color: #94a3b8;
  color-scheme: dark;
  backdrop-filter: blur(4px);
}

/* ── Área da página A4 ── */
.dark-mode .editor-page-wrap {
  background: transparent;  /* canvas 3D aparece atrás do preview */
  border-color: #2a3650;
}

/* Painel direito de achados/impressão ── sem fundo sólido no dark */
.dark-mode .laudo-active-panel {
  background: transparent;
}
/* A página em si permanece branca (representa papel impresso) */
.dark-mode .editor-page {
  background:
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent calc(29.7cm - 1.5px),
      rgba(99, 102, 241, 0.45) calc(29.7cm - 1.5px),
      rgba(99, 102, 241, 0.45) 29.7cm
    )
    #fff;
  box-shadow: 0 4px 32px rgba(0,0,0,0.7), 0 0 0 1px rgba(255,255,255,0.04);
}

@media print {
  .editor-page { background: #fff !important; }
  #laudo-editor p { margin: 0 !important; padding: 0 !important; }
}
.dark-mode #laudo-editor {
  color: #111;
}
.dark-mode #laudo-editor:empty::before {
  color: #9ca3af;
}

/* ── Seletor de modalidade e sub-categoria — dark mode ── */
.dark-mode .modality-picker {
  background: #111827;
  border-color: #1e2d44;
}

.dark-mode .mod-btn {
  color: #4b5f7c;
}

.dark-mode .mod-btn:hover {
  background: #1a2540;
  color: #94a3b8;
}

.dark-mode .mod-btn.is-active {
  background: #1a2540;
  box-shadow: 0 1px 6px rgba(0,0,0,0.4);
}

.dark-mode .mod-btn[data-mod="TC"].is-active  { color: #818cf8; }
.dark-mode .mod-btn[data-mod="RM"].is-active  { color: #34d399; }
.dark-mode .mod-btn[data-mod="USG"].is-active { color: #fbbf24; }
.dark-mode .mod-btn[data-mod="RX"].is-active  { color: #94a3b8; }

.dark-mode .sub-btn {
  background: #111827;
  border-color: #1e2d44;
  color: #4b5f7c;
}

.dark-mode .sub-btn:hover {
  background: #1a2540;
  border-color: #2d4266;
  color: #94a3b8;
}

.dark-mode .sub-btn.is-active {
  background: #312e81;
  border-color: #4f46e5;
  color: #c7d2fe;
  box-shadow: 0 0 0 2px rgba(99,102,241,0.25);
}

.dark-mode .sub2-btn {
  background: #0d1521;
  border-color: #1e2d44;
  color: #3d5270;
}

.dark-mode .sub2-btn:hover {
  background: #1a2540;
  border-color: #2d4266;
  color: #7fa8c9;
  border-style: solid;
}

.dark-mode .sub2-btn.is-active {
  background: #0369a1;
  border-color: #0ea5e9;
  color: #e0f2fe;
  border-style: solid;
}

/* ── Toast no escuro ── */
.dark-mode .medico-toast.success {
  background: #0e7490;
  color: #fff;
}

/* ── Sidebar (já é escura, pequenos ajustes) ── */
.dark-mode .medico-sidebar {
  background: #080d18;
  border-right: 1px solid #1a2133;
}

/* ── Snippets panel (dark) ── */
.dark-mode .laudo-snippets-panel {
  background: transparent;
  border-color: #2a3650;
}

.dark-mode .snp-header {
  background: rgba(0,212,255,0.04);
  border-bottom-color: rgba(0,212,255,0.12);
}
.dark-mode .snp-title { color: #00efff; }
.dark-mode .snp-collapse-btn { color: #4b5563; }
.dark-mode .snp-collapse-btn:hover { background: #1e2638; color: #94a3b8; }

.dark-mode .snp-cat { border-bottom-color: #1e2638; }

.dark-mode .snp-cat-hdr {
  background: #161b27;
  color: #94a3b8;
}
.dark-mode .snp-cat-hdr:hover { background: #1e2638; }
.dark-mode .snp-arrow { color: #374151; }

.dark-mode .snp-cat-body { background: #0f1624; }

.dark-mode .snp-item {
  background: #161b27;
  border-color: #2a3650;
  color: #94a3b8;
}
.dark-mode .snp-item:hover {
  background: #1e2d44;
  border-color: #3b82f6;
  color: #60a5fa;
}
.dark-mode .snp-var-label { color: #64748b; }
.dark-mode .snp-var-btn {
  background: #161b27;
  border-color: #2a3650;
  color: #94a3b8;
}
.dark-mode .snp-var-btn:hover {
  background: #1e2d44;
  border-color: #3b82f6;
  color: #60a5fa;
}
.dark-mode .snp-item.is-active {
  background: #1e3a5f;
  border-color: #3b82f6;
  color: #60a5fa;
}
.dark-mode .snp-var-btn.is-active {
  background: #1e3a5f;
  border-color: #3b82f6;
  color: #60a5fa;
}

/* ── Inputs inline de campos livres ──────────────────────────────────────── */
.snp-loc-inline {
  margin-top: 0.35rem;
  padding: 0.4rem 0.4rem 0.3rem;
  background: rgba(59,130,246,0.06);
  border: 1px solid rgba(59,130,246,0.28);
  border-radius: 6px;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 0.3rem;
}
.snp-loc-row {
  display: flex;
  gap: 6px;
  margin-top: 2px;
}
.snp-loc-row .snp-loc-inline {
  flex: 1;
  min-width: 0;
}
.snp-loc-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  min-width: 50px;
}
.snp-loc-field-input-row {
  display: flex;
  align-items: center;
  gap: 3px;
}
.snp-loc-field-input-row .snp-loc-inline-input {
  flex: 1;
  min-width: 0;
}
.snp-loc-unit {
  font-size: 0.65rem;
  color: #64748b;
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
}
.snp-loc-field-label {
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #1d4ed8;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dark-mode .snp-loc-field-label { color: #93c5fd; }
.snp-loc-inline-input {
  width: 100%;
  box-sizing: border-box;
  font-size: 0.78rem;
  padding: 4px 7px;
  border: 1px solid #cbd5e1;
  border-radius: 4px;
  background: #fff;
  color: #1e293b;
  outline: none;
  font-family: inherit;
}
.snp-loc-inline-input:focus {
  border-color: #3b82f6;
  box-shadow: 0 0 0 2px rgba(59,130,246,0.15);
}
.snp-loc-field--calice {
  flex: 1;
  min-width: 80px;
}
.snp-calice-btns {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 1px;
}
.snp-calice-btn {
  padding: 3px 9px;
  border-radius: 12px;
  border: 1px solid #334155;
  background: transparent;
  color: #64748b;
  font-size: 0.72rem;
  font-family: inherit;
  cursor: pointer;
  transition: border-color 0.13s, color 0.13s, background 0.13s;
  line-height: 1.4;
}
.snp-calice-btn:hover {
  border-color: #60a5fa;
  color: #bfdbfe;
}
.snp-calice-btn.is-active {
  background: #1e3a5f;
  border-color: #3b82f6;
  color: #93c5fd;
  font-weight: 600;
}
/* Peer group: seletor de tipo agrupado */
.snp-peer-group { margin: 2px 0 2px; }
.snp-peer-sels { display: flex; gap: 4px; margin-bottom: 4px; }
.snp-peer-sel {
  flex: 1; padding: 4px 8px; border-radius: 6px;
  border: 1px solid #334155; background: transparent;
  color: #64748b; font-size: 0.75rem; font-family: inherit;
  cursor: pointer; transition: border-color 0.13s, color 0.13s, background 0.13s;
  line-height: 1.4;
}
.snp-peer-sel:hover { border-color: #60a5fa; color: #bfdbfe; }
.snp-peer-sel.is-active { background: #1e3a5f; border-color: #3b82f6; color: #93c5fd; font-weight: 600; }
.snp-peer-panel--hidden { display: none !important; }

/* ───────────────────────────────────────────────────────────────────────────
   Otimização de layout do MENU DE ACHADOS (painel direito #laudo-snippets-panel-2)
   Apenas densidade e consistência visual — sem alterar conteúdo clínico.
   Escopado no painel-2 para não afetar o painel esquerdo (Técnica) nem o USG.
   ─────────────────────────────────────────────────────────────────────────── */
#laudo-snippets-panel-2 .snp-cat-body { padding: 0.22rem 0.45rem 0.34rem; }

/* Grupos de variantes (label + chips) mais compactos e com ritmo uniforme */
#laudo-snippets-panel-2 .snp-item-variants { gap: 3px; margin-bottom: 2px; padding: 3px 2px 1px; }
#laudo-snippets-panel-2 .snp-item-variants + .snp-item-variants { margin-top: 0; padding-top: 2px; }
#laudo-snippets-panel-2 .snp-var-label { font-size: 0.7rem; color: #64748b; line-height: 1.25; }
#laudo-snippets-panel-2 .snp-var-btns { gap: 3px; }
#laudo-snippets-panel-2 .snp-var-btn { padding: 3px 9px; }

/* Achados isolados full-width um pouco mais compactos */
#laudo-snippets-panel-2 .snp-item { margin-bottom: 2px; padding: 0.26rem 0.5rem; }

/* "Normal (restaurar)" = utilitário: discreto (tracejado/mutado), não compete com os achados */
#laudo-snippets-panel-2 .snp-item[data-snp-normal="true"] {
  background: transparent;
  border: 1px dashed #cbd5e1;
  color: #64748b;
  font-size: 0.72rem;
  padding: 0.2rem 0.5rem;
}
#laudo-snippets-panel-2 .snp-item[data-snp-normal="true"]:hover {
  background: #f1f5f9; border-color: #94a3b8; color: #334155;
}
.dark-mode #laudo-snippets-panel-2 .snp-item[data-snp-normal="true"] {
  border-color: #334155; color: #94a3b8;
}
.dark-mode #laudo-snippets-panel-2 .snp-item[data-snp-normal="true"]:hover {
  background: rgba(255,255,255,0.05); border-color: #475569; color: #cbd5e1;
}

/* Achados isolados (sem lateralidade) fluem como CHIPS inline — uniformiza com os
   grupos de variantes e adensa. Exclui "Normal restaurar" (full-width) e itens com
   inputs inline (.snp-item-wrap mantém largura total). */
#laudo-snippets-panel-2 .snp-cat-body > .snp-item:not([data-snp-normal="true"]) {
  display: inline-block;
  width: auto;
  max-width: 100%;
  vertical-align: top;
  margin-right: 3px;
}
