/* ============================================================================
   SKIN: conexaovida_nova — Design System moderno do Conexão Vida
   ----------------------------------------------------------------------------
   • Escopado em `body.cvnova` para não vazar para outras skins.
   • Tema claro/escuro via [data-theme] (setado pelo _shared/skin_runtime.js).
   • REGRA AGENTS.md: `!important` obrigatório em background/color/border/
     box-shadow/display/visibility porque Materialize + css/style_geral.css são
     carregados ANTES da skin e venceriam sem isso.
   • Sem Bootstrap/Materialize próprios: um único sistema visual, leve.
   ============================================================================ */

body.cvnova, .cvnx-host{   /* .cvnx-host: usado por module/inicio.php para portar as métricas a outras skins */
  /* Marca */
  --cvn-brand:#2563EB; --cvn-brand-deep:#1E40AF; --cvn-brand-soft:#EFF4FF;
  --cvn-accent:#0EA5A4; --cvn-accent-soft:#E2F7F6;
  --cvn-success:#16A34A; --cvn-success-soft:#E7F6ED;
  --cvn-warning:#D97706; --cvn-warning-soft:#FDF3E3;
  --cvn-danger:#DC2626;  --cvn-danger-soft:#FCEBEB;
  /* Superfícies / neutros */
  --cvn-bg:#F4F7FB; --cvn-surface:#FFFFFF; --cvn-surface-2:#FBFCFE;
  --cvn-line:#E5EAF1; --cvn-ink:#0F172A; --cvn-ink-2:#475569; --cvn-ink-3:#94A3B8;
  --cvn-side:#0B1B3B; --cvn-side-ink:#AEB9D2; --cvn-side-ink-2:#7C8BAB;
  /* Forma */
  --cvn-r-sm:8px; --cvn-r-md:12px; --cvn-r-lg:18px;
  --cvn-sh-sm:0 1px 2px rgba(15,23,42,.06);
  --cvn-sh-md:0 4px 14px rgba(15,23,42,.08);
  --cvn-sh-lg:0 18px 50px rgba(15,23,42,.22);
  --cvn-side-w:248px; --cvn-top-h:64px;
  --cvn-font:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
body.cvnova[data-theme="dark"]{
  --cvn-brand:#5B8DEF; --cvn-brand-deep:#3F6AD8; --cvn-brand-soft:#1A2742;
  --cvn-accent:#2DD4CF; --cvn-accent-soft:#10312F;
  --cvn-success:#34D399; --cvn-success-soft:#10271E;
  --cvn-warning:#FBBF24; --cvn-warning-soft:#2B2310;
  --cvn-danger:#F87171;  --cvn-danger-soft:#2C1717;
  --cvn-bg:#0A1020; --cvn-surface:#121A2E; --cvn-surface-2:#0F1726;
  --cvn-line:#23304B; --cvn-ink:#EAF0FB; --cvn-ink-2:#A8B5CC; --cvn-ink-3:#6B7A98;
  --cvn-side:#070E1E; --cvn-side-ink:#AEB9D2; --cvn-side-ink-2:#6B7A98;
  --cvn-sh-sm:0 1px 2px rgba(0,0,0,.4); --cvn-sh-md:0 6px 18px rgba(0,0,0,.45); --cvn-sh-lg:0 20px 55px rgba(0,0,0,.6);
}

body.cvnova{
  margin:0 !important; padding:0 !important;
  background:var(--cvn-bg) !important; color:var(--cvn-ink) !important;
  font-family:var(--cvn-font); font-size:14px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
body.cvnova *{ box-sizing:border-box; }
body.cvnova a{ color:inherit; text-decoration:none; }
body.cvnova svg{ width:18px; height:18px; }

/* ============================================================
   TRANSIÇÃO DE PÁGINA — site inteiro (View Transitions API)
   Toda navegação same-origin faz um crossfade suave. O "chrome"
   persistente (sidebar e topbar) fica estável; só o conteúdo
   transiciona, dando um efeito tipo app. Degrada sem suporte.
   ============================================================ */
@view-transition { navigation: auto; }
body.cvnova .cvn-side{ view-transition-name: cvn-side; }
body.cvnova .cvn-top{ view-transition-name: cvn-top; }
::view-transition-group(root){ animation-duration:.34s; }
::view-transition-old(root){ animation-timing-function:cubic-bezier(.4,0,.2,1); }
::view-transition-new(root){ animation-timing-function:cubic-bezier(.4,0,.2,1); }
/* sidebar/topbar trocam suave (sem "piscar") quando mudam de página */
::view-transition-group(cvn-side),
::view-transition-group(cvn-top){ animation-duration:.34s; }
@media (prefers-reduced-motion: reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){ animation:none !important; }
}

/* ============ APP SHELL ============ */
.cvn-app{ display:grid !important; grid-template-columns:var(--cvn-side-w) 1fr; min-height:100vh; }

/* ---- Sidebar ---- */
.cvn-side{
  background:var(--cvn-side) !important; color:var(--cvn-side-ink) !important;
  display:flex !important; flex-direction:column; gap:4px; padding:18px 14px;
  position:sticky; top:0; height:100vh; overflow-y:auto;
}
.cvn-brand{ display:flex; align-items:center; gap:12px; padding:6px 8px 14px; }
.cvn-brand-mark{
  width:38px; height:38px; border-radius:11px;
  background:linear-gradient(140deg,var(--cvn-brand),var(--cvn-accent)) !important;
  color:#fff !important; display:grid; place-items:center; font-weight:800; font-size:14px;
}
.cvn-brand-text strong{ color:#fff !important; font-size:16px; display:block; line-height:1.1; }
.cvn-brand-text span{ color:var(--cvn-side-ink-2) !important; font-size:11px; }

.cvn-kbd-hint{
  display:flex; align-items:center; gap:8px; margin:2px 8px 10px; cursor:pointer;
  font-size:12px; color:var(--cvn-side-ink-2) !important;
  background:rgba(255,255,255,.05) !important; border:1px solid rgba(255,255,255,.08) !important;
  padding:9px 10px; border-radius:10px;
}
.cvn-kbd{ font-size:11px; font-weight:700; background:rgba(255,255,255,.12) !important; color:#cdd7ea !important; border-radius:6px; padding:2px 6px; }

.cvn-nav-label{ font-size:11px; text-transform:uppercase; letter-spacing:.8px; color:var(--cvn-side-ink-2) !important; margin:12px 12px 4px; }
.cvn-nav-item{
  display:flex; align-items:center; gap:11px; padding:10px 12px; border-radius:10px;
  font-size:14px; color:var(--cvn-side-ink) !important; cursor:pointer; transition:.12s;
}
.cvn-nav-item:hover{ background:rgba(255,255,255,.06) !important; color:#fff !important; }
.cvn-nav-item.active{ background:linear-gradient(100deg,var(--cvn-brand),rgba(37,99,235,.55)) !important; color:#fff !important; box-shadow:var(--cvn-sh-sm) !important; }
.cvn-nav-item .cvn-badge{ margin-left:auto; background:var(--cvn-danger) !important; color:#fff !important; font-size:11px; font-weight:700; border-radius:999px; padding:1px 7px; }

.cvn-side-foot{ margin-top:auto; padding-top:12px; border-top:1px solid rgba(255,255,255,.08) !important; }
.cvn-skin-switch-label{ font-size:11px; color:var(--cvn-side-ink-2) !important; margin:4px 4px 6px; text-transform:uppercase; letter-spacing:.6px; }
.cvn-skin-switch{
  display:block !important; height:auto !important; appearance:auto; -webkit-appearance:auto;
  width:100%; padding:9px 10px; border-radius:10px; font-size:13px; cursor:pointer; box-sizing:border-box;
  background:rgba(255,255,255,.06) !important; color:#fff !important; border:1px solid rgba(255,255,255,.12) !important;
}
.cvn-side-foot select{ display:block !important; }
.cvn-skin-switch option{ color:#0F172A; background:#fff; }

/* ---- Main / topbar ---- */
.cvn-main{ display:flex !important; flex-direction:column; min-width:0; }
.cvn-top{
  display:flex !important; align-items:center; gap:14px; height:var(--cvn-top-h); padding:0 24px;
  background:var(--cvn-surface) !important; border-bottom:1px solid var(--cvn-line) !important;
  position:sticky; top:0; z-index:30;
}
.cvn-cmdk{
  flex:1; max-width:460px; display:flex; align-items:center; gap:10px; padding:9px 14px; cursor:text;
  border:1.5px solid var(--cvn-line) !important; border-radius:999px;
  background:var(--cvn-bg) !important; color:var(--cvn-ink-3) !important; font-size:14px;
}
.cvn-cmdk:hover{ border-color:var(--cvn-brand) !important; }
.cvn-cmdk .cvn-kbd{ margin-left:auto; background:var(--cvn-surface) !important; color:var(--cvn-ink-2) !important; border:1px solid var(--cvn-line) !important; }
.cvn-cmdk input{ display:none; }
.cvn-top-actions{ margin-left:auto; display:flex; align-items:center; gap:10px; }
.cvn-icon-btn{
  width:40px; height:40px; border-radius:11px; display:grid !important; place-items:center; cursor:pointer; position:relative;
  border:1.5px solid var(--cvn-line) !important; background:var(--cvn-surface) !important; color:var(--cvn-ink-2) !important;
}
.cvn-icon-btn:hover{ background:var(--cvn-bg) !important; }
.cvn-icon-btn .cvn-dot, .cvn-dot{
  position:absolute; top:6px; right:7px; min-width:16px; height:16px; padding:0 4px; border-radius:999px;
  background:var(--cvn-danger) !important; color:#fff !important; font-size:10px; font-weight:700;
  display:grid; place-items:center; border:2px solid var(--cvn-surface) !important;
}
.cvn-user{ display:flex; align-items:center; gap:10px; }
.cvn-avatar{ width:36px; height:36px; border-radius:50%; background:linear-gradient(140deg,var(--cvn-accent),var(--cvn-brand)) !important; color:#fff !important; display:grid; place-items:center; font-weight:700; font-size:13px; }
.cvn-user-meta strong{ font-size:13px; display:block; line-height:1.1; color:var(--cvn-ink) !important; }
.cvn-user-meta span{ font-size:11px; color:var(--cvn-ink-3) !important; }

/* Busca global (helper cv_render_search_form) */
.cvn-search{ display:none; } /* a busca vive na command palette; helper mantido p/ fallback */

/* ---- Conteúdo / card que envolve o módulo ---- */
.cvn-content{ padding:24px; overflow:auto; }
.cvn-card{
  background:var(--cvn-surface) !important; border:1px solid var(--cvn-line) !important;
  border-radius:var(--cvn-r-lg); box-shadow:var(--cvn-sh-sm) !important; padding:22px; min-height:60vh;
}
.cvn-foot{ text-align:center; color:var(--cvn-ink-3) !important; font-size:12px; margin:18px 0 6px; }

/* Estilo base, gentil, para o conteúdo dos módulos (não quebra tabelas/forms) */
.cvn-content h1,.cvn-content h2,.cvn-content h3{ color:var(--cvn-ink) !important; }
.cvn-content a{ color:var(--cvn-brand) !important; }
.cvn-content table{ border-collapse:collapse; }
.cvn-content table th{ color:var(--cvn-ink-2) !important; border-bottom:1px solid var(--cvn-line) !important; }
.cvn-content table td{ border-bottom:1px solid var(--cvn-line) !important; }
.cvn-content input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=reset]):not([type=image]):not(.button),
.cvn-content select, .cvn-content textarea{
  border:1.5px solid var(--cvn-line) !important; border-radius:var(--cvn-r-sm) !important;
  background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important;
}
.cvn-content input:focus, .cvn-content select:focus, .cvn-content textarea:focus{
  outline:0; border-color:var(--cvn-brand) !important; box-shadow:0 0 0 4px var(--cvn-brand-soft) !important;
}
.cvn-content .btn, .cvn-content button[type=submit], .cvn-content input[type=submit], .cvn-content input[type=button], .cvn-content input[type=reset]{
  background:var(--cvn-brand) !important; color:#fff !important; border:0 !important;
  border-radius:var(--cvn-r-sm) !important; box-shadow:var(--cvn-sh-sm) !important; cursor:pointer;
}

/* ============ NOTIFICAÇÕES (classes do helper cv_render_notifications_panel) ============ */
.cvn-notif-wrap{ position:relative; }
.cv-notif-panel{
  position:absolute; right:0; top:48px; width:320px; z-index:50; display:none !important;
  background:var(--cvn-surface) !important; border:1px solid var(--cvn-line) !important;
  border-radius:var(--cvn-r-md); box-shadow:var(--cvn-sh-lg) !important; overflow:hidden;
}
.cv-notif-panel.cv-notif-open{ display:block !important; }
.cv-notif-head{ display:flex; align-items:center; justify-content:space-between; padding:13px 15px; border-bottom:1px solid var(--cvn-line) !important; }
.cv-notif-head strong{ color:var(--cvn-ink) !important; font-size:14px; }
.cv-notif-count{ font-size:11px; color:var(--cvn-brand) !important; background:var(--cvn-brand-soft) !important; padding:3px 8px; border-radius:999px; }
.cv-notif-list{ max-height:340px; overflow:auto; }
.cv-notif-item{ display:flex; gap:11px; padding:12px 15px; border-bottom:1px solid var(--cvn-line) !important; }
.cv-notif-item.unread{ background:var(--cvn-surface-2) !important; }
.cv-notif-icon{ width:30px; height:30px; border-radius:8px; flex:0 0 auto; background:var(--cvn-brand-soft) !important; }
.cv-notif-icon-agenda{ background:var(--cvn-brand-soft) !important; }
.cv-notif-icon-exame{ background:var(--cvn-accent-soft) !important; }
.cv-notif-icon-rx{ background:var(--cvn-warning-soft) !important; }
.cv-notif-icon-msg{ background:var(--cvn-success-soft) !important; }
.cv-notif-icon-sys{ background:var(--cvn-bg) !important; }
.cv-notif-title{ font-size:13px; color:var(--cvn-ink) !important; font-weight:600; }
.cv-notif-meta{ font-size:12px; color:var(--cvn-ink-3) !important; }
.cv-notif-foot{ padding:11px 15px; text-align:center; }
.cv-notif-foot a{ color:var(--cvn-brand) !important; font-size:12px; font-weight:600; }

/* ============ COMMAND PALETTE (⌘K) ============ */
.cvn-cmd-overlay{
  position:fixed; inset:0; z-index:9999; display:none !important;
  align-items:flex-start; justify-content:center; padding-top:12vh;
  background:rgba(8,15,30,.5) !important; backdrop-filter:blur(3px);
}
.cvn-cmd-overlay.open{ display:flex !important; }
.cvn-cmd-box{
  width:100%; max-width:580px; overflow:hidden;
  background:var(--cvn-surface) !important; border:1px solid var(--cvn-line) !important;
  border-radius:var(--cvn-r-lg); box-shadow:var(--cvn-sh-lg) !important;
}
.cvn-cmd-search{ display:flex; align-items:center; gap:12px; padding:16px 18px; border-bottom:1px solid var(--cvn-line) !important; }
.cvn-cmd-search input{
  flex:1; border:0 !important; outline:0; background:transparent !important; color:var(--cvn-ink) !important; font-size:16px;
}
.cvn-cmd-list{ max-height:50vh; overflow:auto; padding:8px; }
.cvn-cmd-group{ font-size:11px; text-transform:uppercase; letter-spacing:.6px; color:var(--cvn-ink-3) !important; padding:10px 12px 4px; font-weight:700; }
.cvn-cmd-item{ display:flex; align-items:center; gap:12px; padding:11px 12px; border-radius:10px; cursor:pointer; font-size:14px; color:var(--cvn-ink) !important; }
.cvn-cmd-item:hover, .cvn-cmd-item.sel{ background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }
.cvn-cmd-item .cvn-ci{ width:30px; height:30px; border-radius:8px; flex:0 0 auto; display:grid; place-items:center; background:var(--cvn-bg) !important; color:var(--cvn-ink-2) !important; font-weight:700; }
.cvn-cmd-item:hover .cvn-ci, .cvn-cmd-item.sel .cvn-ci{ background:var(--cvn-surface) !important; color:var(--cvn-brand) !important; }
.cvn-cmd-item small{ margin-left:auto; color:var(--cvn-ink-3) !important; font-size:11px; }
.cvn-cmd-foot{ display:flex; gap:14px; padding:10px 16px; border-top:1px solid var(--cvn-line) !important; font-size:11px; color:var(--cvn-ink-3) !important; }
.cvn-cmd-empty{ padding:24px; text-align:center; color:var(--cvn-ink-3) !important; font-size:13px; }

/* ============ RESPONSIVO ============ */
.cvn-mobile-toggle{ display:none !important; }
@media (max-width:920px){
  .cvn-app{ grid-template-columns:1fr; }
  .cvn-side{
    position:fixed; left:0; top:0; z-index:60; width:var(--cvn-side-w);
    transform:translateX(-100%); transition:transform .2s;
  }
  .cvn-side.cv-sidebar-open{ transform:translateX(0); }
  .cvn-mobile-toggle{ display:grid !important; }
}

/* ============ MENU DE USUÁRIO / LOGIN ============ */
.cvn-usermenu{ position:relative; }
.cvn-user{
  display:flex !important; align-items:center; gap:10px; cursor:pointer;
  border:1.5px solid var(--cvn-line) !important; background:var(--cvn-surface) !important;
  color:var(--cvn-ink) !important; border-radius:999px; padding:5px 12px 5px 6px;
}
.cvn-user:hover{ background:var(--cvn-bg) !important; }
.cvn-av-img{ width:36px; height:36px; border-radius:50% !important; object-fit:cover; display:block; }
.cvn-avatar.cvn-avatar-in{ background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }
.cvn-user .cvn-user-meta{ text-align:left; }
.cvn-user-meta strong{ font-size:13px; display:block; line-height:1.1; color:var(--cvn-ink) !important; max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cvn-user-meta span{ font-size:11px; color:var(--cvn-ink-3) !important; }
.cvn-caret{ width:16px; height:16px; color:var(--cvn-ink-3) !important; transition:transform .15s; }
.cvn-usermenu.open .cvn-caret{ transform:rotate(180deg); }

.cvn-user-pop{
  position:absolute; right:0; top:54px; width:270px; z-index:55; display:none !important;
  background:var(--cvn-surface) !important; border:1px solid var(--cvn-line) !important;
  border-radius:var(--cvn-r-md); box-shadow:var(--cvn-sh-lg) !important; overflow:hidden;
}
.cvn-usermenu.open .cvn-user-pop{ display:block !important; }
.cvn-user-pop-head{ display:flex; align-items:center; gap:11px; padding:14px 15px; border-bottom:1px solid var(--cvn-line) !important; background:var(--cvn-surface-2) !important; }
.cvn-user-pop-head strong{ font-size:14px; display:block; color:var(--cvn-ink) !important; }
.cvn-user-pop-head span{ font-size:12px; color:var(--cvn-ink-3) !important; }
.cvn-user-pop-item{ display:flex !important; align-items:center; gap:11px; padding:12px 15px; font-size:14px; color:var(--cvn-ink) !important; cursor:pointer; }
.cvn-user-pop-item svg{ width:18px; height:18px; color:var(--cvn-ink-2) !important; }
.cvn-user-pop-item:hover{ background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }
.cvn-user-pop-item:hover svg{ color:var(--cvn-brand) !important; }
.cvn-user-pop-out{ border-top:1px solid var(--cvn-line) !important; color:var(--cvn-danger) !important; }
.cvn-user-pop-out svg{ color:var(--cvn-danger) !important; }
.cvn-user-pop-out:hover{ background:var(--cvn-danger-soft) !important; color:var(--cvn-danger) !important; }

/* Login form dentro do popover */
.cvn-user-pop--login{ width:300px; }
.cvn-login-form{ padding:14px 15px; }
.cvn-login-label{ display:block !important; font-size:12px; font-weight:600; color:var(--cvn-ink-2) !important; margin:8px 0 5px; }
.cvn-login-input{
  width:100%; padding:11px 12px; font-size:14px; border-radius:var(--cvn-r-sm) !important;
  border:1.5px solid var(--cvn-line) !important; background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important;
}
.cvn-login-input:focus{ outline:0; border-color:var(--cvn-brand) !important; box-shadow:0 0 0 4px var(--cvn-brand-soft) !important; }
.cvn-login-btn{
  width:100%; margin-top:14px; padding:12px; font-size:14px; font-weight:650; cursor:pointer;
  border:0 !important; border-radius:var(--cvn-r-sm) !important; background:var(--cvn-brand) !important; color:#fff !important;
}
.cvn-login-btn:hover{ background:var(--cvn-brand-deep) !important; }
@media (max-width:560px){ .cvn-user .cvn-user-meta{ display:none; } .cvn-user{ padding:5px; } }

/* ============================================================================
   HARMONIZAÇÃO DO CONTEÚDO DOS MÓDULOS COM O DESIGN SYSTEM (claro + escuro)
   Mira hooks reais: cabeçalho azul (<tr> #6699FF), linhas .tr_listagem,
   paginação .listagem-pagination__*, toolbar .listagem-toolbar__*, botões .button.
   Tudo escopado em .cvn-content para não afetar o chrome.
   ============================================================================ */
.cvn-content{ color:var(--cvn-ink) !important; }
.cvn-content table{ border-collapse:collapse !important; background:transparent !important; }

/* Cabeçalho de listagem (1ª linha azul -> neutro do tema).
   `:not(.button)` impede que botões de ação legados (tabelas de 1 linha, em que
   o <td class="button"> é tr:first-child) sejam tratados como cabeçalho e fiquem
   escuros — eles devem manter o estilo de botão (.cvn-content .button). */
.cvn-content thead th:not(.button), .cvn-content thead td:not(.button),
.cvn-content table > tbody > tr:first-child > td:not(.button),
.cvn-content table > tr:first-child > td:not(.button){
  background:var(--cvn-surface-2) !important;
  color:var(--cvn-ink-2) !important;
  font-weight:700 !important;
  border-bottom:1px solid var(--cvn-line) !important;
  letter-spacing:.2px;
}
/* Linhas de dados */
.cvn-content tr.tr_listagem td{ border-bottom:1px solid var(--cvn-line) !important; color:var(--cvn-ink) !important; background:transparent !important; }
.cvn-content tr.tr_listagem:hover td{ background:var(--cvn-brand-soft) !important; }
.cvn-content tr.tr_listagem a{ color:var(--cvn-brand) !important; }

/* Paginação */
.cvn-content .listagem-pagination,
.cvn-content .listagem-pagination-wrap{ display:flex; gap:6px; flex-wrap:wrap; align-items:center; background:transparent !important; box-shadow:none !important; border:0 !important; }
.cvn-content .listagem-pagination__page,
.cvn-content .listagem-pagination__nav{
  background:var(--cvn-surface) !important; color:var(--cvn-ink-2) !important;
  border:1px solid var(--cvn-line) !important; border-radius:9px !important;
  min-width:36px; height:36px; display:inline-flex; align-items:center; justify-content:center; font-weight:600;
}
.cvn-content .listagem-pagination__page:hover,
.cvn-content .listagem-pagination__nav:hover{ background:var(--cvn-bg) !important; color:var(--cvn-brand) !important; border-color:var(--cvn-brand) !important; }
.cvn-content .listagem-pagination__page.is-active{ background:var(--cvn-brand) !important; color:#fff !important; border-color:var(--cvn-brand) !important; }
.cvn-content .listagem-pagination__page.is-ellipsis{ background:transparent !important; border-color:transparent !important; color:var(--cvn-ink-3) !important; }

/* Toolbar de listagem */
.cvn-content .listagem-toolbar{ background:var(--cvn-surface-2) !important; border:1px solid var(--cvn-line) !important; border-radius:var(--cvn-r-md) !important; box-shadow:none !important; }
.cvn-content .listagem-toolbar__label{ color:var(--cvn-ink-3) !important; }

/* Botões legados (.button) e selects/inputs nativos do módulo */
.cvn-content .button{
  background:var(--cvn-brand) !important; color:#fff !important;
  box-shadow:var(--cvn-sh-sm) !important; border:0 !important; border-radius:10px !important;
  min-width:0 !important; line-height:1.2 !important; padding:11px 18px !important;
  font-size:14px !important; font-weight:650 !important;
}
.cvn-content .button:hover{ background:var(--cvn-brand-deep) !important; color:#fff !important; box-shadow:var(--cvn-sh-md) !important; }
.cvn-content select{ background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important; border:1.5px solid var(--cvn-line) !important; border-radius:var(--cvn-r-sm) !important; }

/* Barras de seção azuis de módulos (ex.: cabeçalho de cards de conteúdo) */
.cvn-content [style*="background:#1583e9"], .cvn-content [style*="background: #1583e9"],
.cvn-content [style*="background:#6699ff"], .cvn-content [style*="background: #6699ff"]{
  background:var(--cvn-brand) !important; color:#fff !important;
}

/* Widgets select2 / jquery-ui combobox no tema (claro + escuro) */
body.cvnova .select2-container--default .select2-selection--single,
body.cvnova .select2-container--default .select2-selection--multiple,
.cvn-content .custom-combobox-input,
.cvn-content input.ui-autocomplete-input{
  background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important;
  border:1.5px solid var(--cvn-line) !important; border-radius:var(--cvn-r-sm) !important; min-height:42px;
}
body.cvnova .select2-selection--single .select2-selection__rendered{ color:var(--cvn-ink) !important; line-height:40px !important; }
body.cvnova .select2-selection--single .select2-selection__arrow{ height:40px !important; }
body.cvnova .select2-selection__arrow b{ border-color:var(--cvn-ink-3) transparent transparent transparent !important; }
body.cvnova .select2-selection__placeholder{ color:var(--cvn-ink-3) !important; }
body.cvnova .select2-selection--multiple .select2-selection__choice{ background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; border:1px solid var(--cvn-line) !important; }
body.cvnova .select2-dropdown{ background:var(--cvn-surface) !important; border-color:var(--cvn-line) !important; }
body.cvnova .select2-results__option{ color:var(--cvn-ink) !important; background:var(--cvn-surface) !important; }
body.cvnova .select2-results__option--highlighted{ background:var(--cvn-brand) !important; color:#fff !important; }
body.cvnova .select2-search__field{ background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important; border:1px solid var(--cvn-line) !important; }

/* Setas da paginação (forçar cor do tema, removendo laranja legado) */
.cvn-content .listagem-pagination__nav{ color:var(--cvn-ink-2) !important; }
.cvn-content .listagem-pagination__nav *,
.cvn-content .listagem-pagination__nav::before,
.cvn-content .listagem-pagination__nav::after{ color:var(--cvn-ink-2) !important; }

/* CKEditor: enquadra como cartão (intencional em claro e escuro; mantém ícones legíveis
   na toolbar clara em vez de tematizar o sprite escuro). A superfície de edição segue
   "folha" branca para leitura do texto clínico. */
body.cvnova .cke_chrome{
  border:1px solid var(--cvn-line) !important;
  border-radius:10px !important; overflow:hidden !important;
  box-shadow:var(--cvn-sh-sm) !important; background:var(--cvn-surface) !important;
}
body.cvnova .cke_top{ border-bottom:1px solid var(--cvn-line) !important; }
body.cvnova .cke_bottom{ border-top:1px solid var(--cvn-line) !important; background:#f6f8fb !important; }
/* No tema escuro, margem visual entre a folha branca e o fundo escuro */
body.cvnova[data-theme="dark"] .cke_chrome{ box-shadow:0 0 0 4px rgba(0,0,0,.15) !important; border-color:var(--cvn-line) !important; }
/* Tema escuro: escurece o "chrome" do editor (barra, rodapé, combos), mantendo a
   FOLHA de edição branca — documento clínico com timbre e texto preto fica legível. */
body.cvnova[data-theme="dark"] .cke_top,
body.cvnova[data-theme="dark"] .cke_bottom,
body.cvnova[data-theme="dark"] .cke_toolbox,
body.cvnova[data-theme="dark"] .cke_reset_all .cke_combopanel{ background:var(--cvn-surface-2) !important; border-color:var(--cvn-line) !important; }
body.cvnova[data-theme="dark"] .cke_button,
body.cvnova[data-theme="dark"] .cke_toolgroup,
body.cvnova[data-theme="dark"] .cke_combo_button{ background:transparent !important; border-color:var(--cvn-line) !important; }
body.cvnova[data-theme="dark"] .cke_button:hover,
body.cvnova[data-theme="dark"] .cke_button:focus,
body.cvnova[data-theme="dark"] .cke_button_on,
body.cvnova[data-theme="dark"] .cke_combo_button:hover,
body.cvnova[data-theme="dark"] .cke_combo_on .cke_combo_button{ background:rgba(255,255,255,.08) !important; }
body.cvnova[data-theme="dark"] .cke_combo_text,
body.cvnova[data-theme="dark"] .cke_combo_inlinelabel,
body.cvnova[data-theme="dark"] .cke_path_item,
body.cvnova[data-theme="dark"] .cke_path_empty{ color:var(--cvn-ink-2) !important; }
/* O sprite de ícones do CKEditor é escuro → inverte p/ ficar visível no fundo escuro.
   ATENÇÃO: a classe correta é `.cke_button_icon` (um underscore só). */
body.cvnova[data-theme="dark"] .cke_button_icon,
body.cvnova[data-theme="dark"] .cke_combo_arrow,
body.cvnova[data-theme="dark"] .cke_hidpi .cke_button_icon,
body.cvnova[data-theme="dark"] a.cke_button .cke_button_icon{ filter:invert(1) hue-rotate(180deg) brightness(1.1) !important; }

/* O editor on-screen (#imprimir) recebe via JS um "papel": gradiente BRANCO + marca
   d'água do timbre do hospital. Na tela isso é desnecessário e, no tema escuro,
   vazava como "cinza" nas áreas vazias (ex.: coluna "Exames anexos"). Removemos o
   fundo do #imprimir NA TELA (claro e escuro). A IMPRESSÃO usa uma janela separada
   (não estilizada por esta skin), então a marca d'água do documento impresso é preservada. */
body.cvnova #imprimir,
body.cvnova #imprimir_body{ background-image:none !important; background-color:transparent !important; }

/* ============================================================================
   DASHBOARD DO INÍCIO (escopado à skin)
   ============================================================================ */
.cvn-dash{ color:var(--cvn-ink) !important; }
.cvn-dash-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:20px; }
.cvn-dash-hi{ font-size:23px !important; font-weight:730 !important; margin:0 !important; color:var(--cvn-ink) !important; }
.cvn-dash-date{ margin:5px 0 0 !important; color:var(--cvn-ink-2) !important; font-size:14px; }
.cvn-dash-proffilter{ margin-top:10px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.cvn-dash-proflbl{ font-size:12px; color:var(--cvn-ink-3) !important; font-weight:600; }
.cvn-dash-prof{ display:inline-block !important; min-width:230px; max-width:340px; padding:7px 10px; font-size:13px; color:var(--cvn-ink) !important; background:var(--cvn-bg-2, #fff) !important; border:1px solid var(--cvn-line) !important; border-radius:9px; cursor:pointer; }
.cvn-dash-prof:focus{ outline:none; border-color:var(--cvn-brand) !important; box-shadow:0 0 0 3px color-mix(in srgb, var(--cvn-brand) 18%, transparent); }
.cvn-content a.cvn-dash-cta{
  display:inline-flex; align-items:center; gap:8px; padding:12px 18px; border-radius:var(--cvn-r-md);
  background:var(--cvn-brand) !important; color:#fff !important; font-weight:650; font-size:14px; box-shadow:var(--cvn-sh-sm) !important;
}
.cvn-content a.cvn-dash-cta:hover{ background:var(--cvn-brand-deep) !important; color:#fff !important; }
.cvn-dash-cta svg{ width:18px; height:18px; }

.cvn-dash-kpis{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:22px; }
.cvn-dash-kpi{ background:var(--cvn-surface-2) !important; border:1px solid var(--cvn-line) !important; border-radius:var(--cvn-r-lg); padding:18px; }
.cvn-dash-ic{ width:42px; height:42px; border-radius:12px; display:inline-grid; place-items:center; margin-bottom:13px; }
.cvn-dash-ic svg{ width:22px; height:22px; }
.cvn-dash-ic.ic-blue{ background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }
.cvn-dash-ic.ic-teal{ background:var(--cvn-accent-soft) !important; color:var(--cvn-accent) !important; }
.cvn-dash-ic.ic-amber{ background:var(--cvn-warning-soft) !important; color:var(--cvn-warning) !important; }
.cvn-dash-ic.ic-rose{ background:var(--cvn-danger-soft) !important; color:var(--cvn-danger) !important; }
.cvn-dash-val{ font-size:27px; font-weight:760; letter-spacing:-.5px; line-height:1; color:var(--cvn-ink) !important; }
.cvn-dash-lbl{ color:var(--cvn-ink-2) !important; font-size:13px; margin-top:6px; }

.cvn-dash-grid{ display:grid; grid-template-columns:1.4fr 1fr; gap:18px; }
.cvn-dash-sec{ font-size:14px !important; font-weight:700 !important; margin:0 0 12px !important; color:var(--cvn-ink) !important; }
.cvn-dash-quick{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.cvn-dash-action{
  display:flex; align-items:center; gap:12px; padding:14px; border-radius:var(--cvn-r-md);
  background:var(--cvn-surface-2) !important; border:1px solid var(--cvn-line) !important; transition:.14s;
}
.cvn-dash-action:hover{ border-color:var(--cvn-brand) !important; transform:translateY(-2px); box-shadow:var(--cvn-sh-md) !important; }
.cvn-dash-action b{ font-size:14px; display:block; color:var(--cvn-ink) !important; }
.cvn-dash-action span{ font-size:12px; color:var(--cvn-ink-3) !important; }
.cvn-dash-action .cvn-dash-ic{ margin-bottom:0; width:38px; height:38px; flex:0 0 auto; }

.cvn-dash-tip{
  display:flex; align-items:center; gap:10px; margin-top:14px; padding:12px 14px; border-radius:var(--cvn-r-md);
  background:var(--cvn-brand-soft) !important; color:var(--cvn-ink-2) !important; font-size:13px;
}
.cvn-dash-tip svg{ width:18px; height:18px; color:var(--cvn-brand) !important; flex:0 0 auto; }
.cvn-dash-tip .cvn-kbd{ background:var(--cvn-surface) !important; color:var(--cvn-ink-2) !important; border:1px solid var(--cvn-line) !important; }

.cvn-dash-recent{ display:flex; flex-direction:column; gap:8px; }
.cvn-dash-recent-item{
  display:flex; align-items:center; gap:12px; padding:11px 13px; border-radius:var(--cvn-r-md);
  background:var(--cvn-surface-2) !important; border:1px solid var(--cvn-line) !important;
}
.cvn-dash-recent-item:hover{ border-color:var(--cvn-brand) !important; background:var(--cvn-brand-soft) !important; }
.cvn-dash-av{ width:34px; height:34px; border-radius:50%; flex:0 0 auto; display:grid; place-items:center; font-weight:700; font-size:13px; background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }
.cvn-dash-recent-name{ flex:1; min-width:0; font-size:14px; color:var(--cvn-ink) !important; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cvn-dash-recent-item svg{ width:18px; height:18px; color:var(--cvn-ink-3) !important; }
.cvn-dash-empty{ color:var(--cvn-ink-3) !important; font-size:13px; padding:14px; text-align:center; }
.cvn-dash-foot{ text-align:center; color:var(--cvn-ink-3) !important; font-size:12px; margin:22px 0 2px; }

@media (max-width:1000px){ .cvn-dash-kpis{ grid-template-columns:repeat(2,1fr); } .cvn-dash-grid{ grid-template-columns:1fr; } }
@media (max-width:560px){ .cvn-dash-quick{ grid-template-columns:1fr; } }

/* ============================================================================
   TEMA ESCURO — APROFUNDAMENTO (controles nativos + widgets de body)
   ============================================================================ */
/* color-scheme: rende date pickers, spinners, scrollbars e checkboxes nativos escuros */
body.cvnova[data-theme="dark"]{ color-scheme: dark; }
/* checkbox/radio com a cor de marca (nos dois temas) */
.cvn-content input[type=checkbox], .cvn-content input[type=radio]{ accent-color:var(--cvn-brand); }
/* fieldset / legend / hr no conteúdo */
.cvn-content fieldset{ border:1px solid var(--cvn-line) !important; border-radius:var(--cvn-r-md) !important; }
.cvn-content legend{ color:var(--cvn-ink-2) !important; font-weight:600; padding:0 6px; }
.cvn-content hr{ border:0 !important; border-top:1px solid var(--cvn-line) !important; }
/* caixas brancas declaradas inline no HTML do módulo -> superfície do tema (só no dark) */
body.cvnova[data-theme="dark"] .cvn-content [style*="background:#fff" i],
body.cvnova[data-theme="dark"] .cvn-content [style*="background: #fff" i],
body.cvnova[data-theme="dark"] .cvn-content [style*="background-color:#fff" i],
body.cvnova[data-theme="dark"] .cvn-content [style*="background-color: #fff" i],
body.cvnova[data-theme="dark"] .cvn-content [style*="background:white" i]{ background:var(--cvn-surface-2) !important; }
/* texto preto declarado inline -> tinta do tema (só no dark) */
body.cvnova[data-theme="dark"] .cvn-content [style*="color:#000" i],
body.cvnova[data-theme="dark"] .cvn-content [style*="color: #000" i],
body.cvnova[data-theme="dark"] .cvn-content [style*="color:black" i]{ color:var(--cvn-ink) !important; }

/* Widgets renderizados no <body> (fora de .cvn-content): qtip + jQuery UI */
body.cvnova[data-theme="dark"] .qtip-bootstrap,
body.cvnova[data-theme="dark"] .qtip-default,
body.cvnova[data-theme="dark"] .qtip-content{ background:var(--cvn-surface) !important; color:var(--cvn-ink) !important; border-color:var(--cvn-line) !important; box-shadow:var(--cvn-sh-lg) !important; }
body.cvnova[data-theme="dark"] .ui-datepicker,
body.cvnova[data-theme="dark"] .ui-autocomplete,
body.cvnova[data-theme="dark"] .ui-menu,
body.cvnova[data-theme="dark"] .ui-widget-content{ background:var(--cvn-surface) !important; color:var(--cvn-ink) !important; border-color:var(--cvn-line) !important; }
body.cvnova[data-theme="dark"] .ui-datepicker .ui-datepicker-header{ background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important; border-color:var(--cvn-line) !important; }
body.cvnova[data-theme="dark"] .ui-datepicker td a,
body.cvnova[data-theme="dark"] .ui-datepicker th,
body.cvnova[data-theme="dark"] .ui-menu .ui-menu-item-wrapper{ color:var(--cvn-ink) !important; background:transparent !important; }
body.cvnova[data-theme="dark"] .ui-state-hover,
body.cvnova[data-theme="dark"] .ui-state-active,
body.cvnova[data-theme="dark"] .ui-menu .ui-menu-item-wrapper.ui-state-active{ background:var(--cvn-brand) !important; color:#fff !important; border-color:var(--cvn-brand) !important; }

/* ============================================================================
   GRUPOS RECOLHÍVEIS DO MENU LATERAL (Clínicas / Administração)
   ============================================================================ */
.cvn-nav-group{
  display:flex !important; align-items:center; justify-content:space-between;
  width:calc(100% - 24px); margin:12px 12px 4px; padding:2px 0; cursor:pointer;
  background:transparent !important; border:0 !important; font-family:inherit;
  font-size:11px; text-transform:uppercase; letter-spacing:.8px; font-weight:700;
  color:var(--cvn-side-ink-2) !important;
}
.cvn-nav-group:hover{ color:#fff !important; }
.cvn-nav-caret{ width:14px; height:14px; transition:transform .18s; flex:0 0 auto; }
.cvn-nav-group[aria-expanded="false"] .cvn-nav-caret{ transform:rotate(-90deg); }
.cvn-nav-collapse.collapsed{ display:none !important; }

/* ============================================================================
   IFRAMES embutidos nos módulos (fila de espera, fotos, mapas, etc.)
   Fundo transparente para acompanhar o tema (o documento dentro já é
   transparente). Exclui o iframe de edição do CKEditor (folha branca proposital).
   ============================================================================ */
body.cvnova .cvn-content iframe:not(.cke_wysiwyg_frame){ background:transparent !important; }
/* Célula/tabela que envolve o iframe da fila de espera (membros.php) -> tema */
body.cvnova .cvn-content td:has(> iframe){ background:transparent !important; }

/* ============================================================================
   SIDEBAR MINI (icon rail) + ATALHOS / AJUDA
   ============================================================================ */
.cvn-collapse-toggle{ display:grid !important; }
@media (max-width:920px){ .cvn-collapse-toggle{ display:none !important; } }
body.cvn-mini .cvn-app{ grid-template-columns:74px 1fr; }
body.cvn-mini .cvn-side{ width:74px !important; padding:18px 10px; }
body.cvn-mini .cvn-brand-text,
body.cvn-mini .cvn-nav-item span,
body.cvn-mini .cvn-nav-group span,
body.cvn-mini .cvn-nav-group .cvn-nav-caret,
body.cvn-mini .cvn-nav-label,
body.cvn-mini .cvn-kbd-hint span,
body.cvn-mini .cvn-kbd-hint .cvn-kbd,
body.cvn-mini .cvn-nav-item .cvn-badge,
body.cvn-mini .cvn-side-foot{ display:none !important; }
body.cvn-mini .cvn-nav-item,
body.cvn-mini .cvn-kbd-hint{ justify-content:center !important; padding-left:0 !important; padding-right:0 !important; }
body.cvn-mini .cvn-brand{ justify-content:center; }
/* grupos recolhíveis (Clínicas/Administração) ocultos no mini */
body.cvn-mini .cvn-nav-group,
body.cvn-mini .cvn-nav-collapse{ display:none !important; }

/* Overlay de ajuda (atalhos) — reaproveita o padrão da command palette */
.cvn-help-overlay{
  position:fixed; inset:0; z-index:9999; display:none !important; align-items:flex-start; justify-content:center; padding-top:14vh;
  background:rgba(8,15,30,.5) !important; backdrop-filter:blur(3px);
}
.cvn-help-overlay.open{ display:flex !important; }
.cvn-help-box{ width:100%; max-width:460px; overflow:hidden; background:var(--cvn-surface) !important; border:1px solid var(--cvn-line) !important; border-radius:var(--cvn-r-lg); box-shadow:var(--cvn-sh-lg) !important; }
.cvn-help-head{ display:flex; align-items:center; justify-content:space-between; padding:16px 18px; border-bottom:1px solid var(--cvn-line) !important; }
.cvn-help-head strong{ font-size:15px; color:var(--cvn-ink) !important; }
.cvn-help-body{ padding:8px 18px 16px; }
.cvn-help-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:9px 0; border-bottom:1px solid var(--cvn-line) !important; }
.cvn-help-row:last-child{ border-bottom:0; }
.cvn-help-row em{ color:var(--cvn-ink-2) !important; font-style:normal; font-size:13px; }
.cvn-help-row .cvn-keys{ display:flex; gap:5px; align-items:center; color:var(--cvn-ink-3) !important; font-size:12px; }


/* ============================================================
   POLIMENTO FINO — acessibilidade + microinterações
   ============================================================ */

/* Foco visível apenas para teclado (não dispara no clique do mouse) */
body.cvnova :focus-visible{
  outline:2px solid var(--cvn-brand) !important;
  outline-offset:2px;
  border-radius:6px;
}
body.cvnova :focus:not(:focus-visible){ outline:0; }
/* anéis suaves nos controles principais */
body.cvnova .cvn-nav-item:focus-visible,
body.cvnova .cvn-icon-btn:focus-visible,
body.cvnova .cvn-kbd-hint:focus-visible,
body.cvnova .cvn-collapse-toggle:focus-visible,
body.cvnova .cvn-usermenu-trigger:focus-visible,
body.cvnova .cvn-user-pop-item:focus-visible{
  outline:0 !important;
  box-shadow:0 0 0 1px var(--cvn-brand), 0 0 0 4px var(--cvn-brand-soft) !important;
}

/* Seleção de texto na identidade da marca */
body.cvnova ::selection{ background:var(--cvn-brand); color:#fff; }
body.cvnova[data-theme="dark"] ::selection{ background:var(--cvn-brand); color:#0A1020; }

/* Microinterações — transições coerentes */
body.cvnova .cvn-nav-item,
body.cvnova .cvn-icon-btn,
body.cvnova .cvn-kbd-hint,
body.cvnova .cvn-usermenu-trigger,
body.cvnova .cvn-dash-cta,
body.cvnova .cvn-user-pop-item,
body.cvnova .cvn-collapse-toggle{
  transition: background-color .16s ease, color .16s ease, box-shadow .16s ease, transform .12s ease, border-color .16s ease;
}
/* feedback tátil de clique */
body.cvnova .cvn-icon-btn:active,
body.cvnova .cvn-collapse-toggle:active,
body.cvnova .cvn-nav-item:active{ transform:translateY(1px) scale(.99); }
body.cvnova .cvn-dash-cta:active{ transform:translateY(1px); }

/* Rail mini: largura anima suavemente (preserva também a transição de tema) */
body.cvnova .cvn-app{ transition: grid-template-columns .22s cubic-bezier(.4,0,.2,1); }
body.cvnova .cvn-side{ transition: width .22s cubic-bezier(.4,0,.2,1), background-color .25s ease, color .25s ease, border-color .25s ease; }

/* Fade-in do conteúdo ao carregar */
@keyframes cvnFadeUp{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
body.cvnova .cvn-content{ animation: cvnFadeUp .34s cubic-bezier(.4,0,.2,1) both; }

/* Palette e ajuda entram suaves */
@keyframes cvnPop{ from{ opacity:0; transform:translateY(-6px) scale(.985); } to{ opacity:1; transform:none; } }
body.cvnova .cvn-help-box,
body.cvnova .cvn-cmd-box{ animation: cvnPop .16s ease both; }

/* Transição de tema (bg/cor/borda) — leve (.cvn-side já tratado acima) */
body.cvnova,
body.cvnova .cvn-top,
body.cvnova .cvn-card,
body.cvnova .cvn-content{ transition: background-color .25s ease, color .25s ease, border-color .25s ease; }

/* Respeita quem pede menos movimento */
@media (prefers-reduced-motion: reduce){
  body.cvnova *,
  body.cvnova *::before,
  body.cvnova *::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}


/* ============================================================
   DRILL-DOWN DAS MÉTRICAS — KPIs clicáveis + página de detalhe
   ============================================================ */

/* KPI do dashboard agora é link (abre o detalhe da métrica) */
.cvn-content a.cvn-dash-kpi{ color:inherit !important; text-decoration:none; }
.cvn-dash-kpi{ position:relative; display:block; cursor:pointer;
  transition: transform .14s ease, box-shadow .16s ease, border-color .16s ease, background-color .16s ease; }
.cvn-dash-kpi:hover{ border-color:var(--cvn-brand) !important;
  box-shadow:0 12px 28px -16px rgba(37,99,235,.55) !important; transform:translateY(-3px); }
.cvn-dash-kpi:active{ transform:translateY(-1px); }
.cvn-dash-go{ position:absolute; top:14px; right:14px; width:24px; height:24px; border-radius:8px;
  display:grid; place-items:center; color:var(--cvn-ink-3) !important; opacity:0; transform:translateX(-4px);
  transition:opacity .16s ease, transform .16s ease, background-color .16s ease, color .16s ease; }
.cvn-dash-go svg{ width:16px; height:16px; }
.cvn-dash-kpi:hover .cvn-dash-go{ opacity:1; transform:none; background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }

/* ---- Página de detalhe da métrica ---- */
.cvn-md{ max-width:920px; }
.cvn-content a.cvn-md-back{ color:var(--cvn-ink-2) !important; }
.cvn-md-back{ display:inline-flex; align-items:center; gap:7px; font-size:13px; text-decoration:none;
  margin-bottom:16px; transition:color .15s ease, transform .15s ease; }
.cvn-md-back svg{ width:16px; height:16px; }
.cvn-md-back:hover{ color:var(--cvn-brand) !important; transform:translateX(-2px); }

.cvn-md-hero{ display:flex; align-items:center; gap:18px; padding:22px;
  border:1px solid var(--cvn-line) !important; border-radius:var(--cvn-r-lg);
  background:var(--cvn-surface-2) !important; margin-bottom:18px; }
.cvn-md-hero-ic{ width:60px; height:60px; border-radius:16px; display:grid; place-items:center; flex:0 0 auto; }
.cvn-md-hero-ic svg{ width:30px; height:30px; }
.cvn-md-hero-ic.ic-blue{ background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important; }
.cvn-md-hero-ic.ic-teal{ background:var(--cvn-accent-soft) !important; color:var(--cvn-accent) !important; }
.cvn-md-hero-ic.ic-amber{ background:var(--cvn-warning-soft) !important; color:var(--cvn-warning) !important; }
.cvn-md-hero-ic.ic-rose{ background:var(--cvn-danger-soft) !important; color:var(--cvn-danger) !important; }
.cvn-md-hero-txt{ flex:1; min-width:0; }
.cvn-md-hero-val{ font-size:38px; font-weight:780; letter-spacing:-1px; line-height:1; color:var(--cvn-ink) !important; }
.cvn-md-hero-lbl{ font-size:15px; font-weight:650; color:var(--cvn-ink) !important; margin-top:5px; }
.cvn-md-hero-sub{ font-size:13px; color:var(--cvn-ink-3) !important; margin-top:4px; }
.cvn-content a.cvn-md-cta{ color:var(--cvn-brand) !important; }
.cvn-md-cta{ flex:0 0 auto; display:inline-flex; align-items:center; gap:6px; padding:10px 14px;
  border:1px solid var(--cvn-line) !important; border-radius:12px; background:var(--cvn-surface) !important;
  font-size:13px; font-weight:600; text-decoration:none; transition:background-color .15s ease, border-color .15s ease, transform .12s ease; }
.cvn-md-cta svg{ width:16px; height:16px; }
.cvn-md-cta:hover{ border-color:var(--cvn-brand) !important; background:var(--cvn-brand-soft) !important; }
.cvn-md-cta:active{ transform:translateY(1px); }

.cvn-md-chips{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:18px; }
.cvn-md-chip{ display:inline-flex; align-items:center; gap:6px; padding:8px 13px; border-radius:999px;
  font-size:12.5px; background:var(--cvn-surface-2) !important; border:1px solid var(--cvn-line) !important; color:var(--cvn-ink-2) !important; }
.cvn-md-chip b{ color:var(--cvn-ink) !important; font-weight:740; }
.cvn-md-chip.chip-rose b,
.cvn-md-chip.chip-high b{ color:var(--cvn-danger) !important; }
.cvn-md-chip.chip-mod b{ color:var(--cvn-warning) !important; }
.cvn-md-chip.chip-low b{ color:var(--cvn-accent) !important; }

.cvn-md-sec{ font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--cvn-ink-3) !important; margin:0 0 11px; }
.cvn-md-list{ display:flex; flex-direction:column; gap:8px; }
.cvn-content a.cvn-md-item{ color:inherit !important; }
.cvn-md-item{ display:flex; align-items:flex-start; gap:14px; padding:14px 16px;
  border:1px solid var(--cvn-line) !important; border-radius:14px; background:var(--cvn-surface) !important;
  text-decoration:none; transition:background-color .15s ease, border-color .15s ease, transform .14s ease, box-shadow .15s ease; }
.cvn-md-item:hover{ border-color:var(--cvn-brand) !important; background:var(--cvn-surface-2) !important;
  transform:translateX(3px); box-shadow:0 8px 22px -16px rgba(37,99,235,.5) !important; }
.cvn-md-av{ width:38px; height:38px; border-radius:11px; background:var(--cvn-brand-soft) !important; color:var(--cvn-brand) !important;
  display:grid; place-items:center; font-weight:700; font-size:14px; flex:0 0 auto; align-self:center; }
.cvn-md-main{ flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.cvn-md-name{ font-weight:620; color:var(--cvn-ink) !important; font-size:14.5px; }
.cvn-md-desc{ font-size:13px; color:var(--cvn-ink-2) !important; line-height:1.45; }
.cvn-md-meta{ font-size:12px; color:var(--cvn-ink-3) !important; }
.cvn-md-done{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.3px;
  color:var(--cvn-accent) !important; border:1px solid var(--cvn-accent) !important; border-radius:999px; padding:1px 7px; margin-left:6px; }
.cvn-md-arr{ width:18px; height:18px; color:var(--cvn-ink-3) !important; flex:0 0 auto; align-self:center; }

.cvn-risk{ flex:0 0 auto; align-self:center; font-size:11px; font-weight:700; padding:4px 10px; border-radius:999px;
  text-transform:uppercase; letter-spacing:.3px; white-space:nowrap; }
.cvn-risk.alto{ background:var(--cvn-danger-soft) !important; color:var(--cvn-danger) !important; }
.cvn-risk.moderado{ background:var(--cvn-warning-soft) !important; color:var(--cvn-warning) !important; }
.cvn-risk.baixo{ background:var(--cvn-accent-soft) !important; color:var(--cvn-accent) !important; }

.cvn-md-empty{ padding:24px; text-align:center; color:var(--cvn-ink-3) !important;
  border:1px dashed var(--cvn-line) !important; border-radius:14px; }

@media (max-width:680px){
  .cvn-md-hero{ flex-wrap:wrap; }
  .cvn-md-cta{ width:100%; justify-content:center; }
}


/* ============================================================
   AGENDA (calendário cv2-*) — tema escuro
   O módulo agendamentos.php define suas cores em variáveis --cv2-*
   (no :root). No tema escuro, sobrescrevemos essas variáveis no
   body.cvnova[data-theme="dark"] (vence o :root por herança), re-
   tematizando o calendário inteiro sem tocar no módulo.
   ============================================================ */
body.cvnova[data-theme="dark"]{
  --cv2-primary: #5B8DEF;
  --cv2-primary-dark: #3F6AD8;
  --cv2-primary-soft: rgba(91,141,239,.16);
  --cv2-text: #EAF0FB;
  --cv2-text-muted: #A8B5CC;
  --cv2-border: #23304B;
  --cv2-bg: #121A2E;
  --cv2-bg-alt: #0F1726;
  --cv2-bg-today: rgba(91,141,239,.16);
  --cv2-shadow: 0 6px 18px rgba(0,0,0,.45);
}
/* Pontos com branco FIXO (não-variável) no calendário. Os seletores do módulo usam
   o id #cv-agenda2 / #cv-agenda2-modal (especificidade alta), então prefixamos com
   o id para vencer. */
body.cvnova[data-theme="dark"] #cv-agenda2 .cv2-toolbar{
  background:linear-gradient(180deg, var(--cvn-surface-2) 0%, var(--cvn-surface) 100%) !important;
}
body.cvnova[data-theme="dark"] #cv-agenda2 .cv2-legend,
body.cvnova[data-theme="dark"] #cv-agenda2 .cv2-segment,
body.cvnova[data-theme="dark"] #cv-agenda2 .cv2-btn{
  background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important; border-color:var(--cvn-line) !important;
}
body.cvnova[data-theme="dark"] #cv-agenda2 .cv2-btn:hover{ background:var(--cvn-line) !important; color:var(--cvn-ink) !important; }
body.cvnova[data-theme="dark"] #cv-agenda2 .cv2-btn.cv2-active{ background:var(--cvn-brand) !important; color:#fff !important; border-color:var(--cvn-brand) !important; }
body.cvnova[data-theme="dark"] #cv-agenda2-modal .cv2-modal-content{ background:var(--cvn-surface) !important; color:var(--cvn-ink) !important; }
body.cvnova[data-theme="dark"] #cv-agenda2-modal input[type=text],
body.cvnova[data-theme="dark"] #cv-agenda2-modal select,
body.cvnova[data-theme="dark"] #cv-agenda2-modal textarea{ background:var(--cvn-surface-2) !important; color:var(--cvn-ink) !important; border-color:var(--cvn-line) !important; }


/* ============================================================
   ABAS do Início (Métricas | Artigos recorrentes)
   ============================================================ */
.cvn-content .cvn-tabs{
  display:flex; gap:4px; margin:0 0 20px; flex-wrap:wrap;
  border-bottom:1px solid var(--cvn-line) !important;
}
.cvn-content a.cvn-tab{
  display:inline-flex; align-items:center; gap:8px; padding:11px 16px;
  font-size:14px; font-weight:600; color:var(--cvn-ink-2) !important;
  border:0 !important; border-bottom:2px solid transparent !important;
  margin-bottom:-1px; border-radius:10px 10px 0 0; cursor:pointer;
  transition:background-color .15s ease, color .15s ease, border-color .15s ease;
}
.cvn-content a.cvn-tab svg{ width:17px; height:17px; }
.cvn-content a.cvn-tab:hover{ color:var(--cvn-ink) !important; background:var(--cvn-surface-2) !important; }
.cvn-content a.cvn-tab.is-active{ color:var(--cvn-brand) !important; border-bottom-color:var(--cvn-brand) !important; }
.cvn-tab-panel{ animation:cvnFadeUp .28s cubic-bezier(.4,0,.2,1) both; }


/* ============================================================
   Wrapper portátil (.cvnx-host) — métricas/abas em skins != nova
   ============================================================ */
.cvnx-host{ font-family:var(--cvn-font); color:var(--cvn-ink) !important; }
.cvnx-host a{ color:inherit; }


/* ============================================================
   Accordion Bootstrap-collapse (atendimentos.php e afins)
   A skin nova nao carrega Bootstrap, entao reimplementamos o
   contrato `.collapse`/`.collapse.show` (toggle no conexaovida_nova.js).
   Os paineis sao <td colspan> -> quando visiveis, table-cell.
   Escopo `.acc.collapse` p/ atingir so os paineis de accordion.
   ============================================================ */
body.cvnova .acc.collapse{ display:none !important; }
body.cvnova .acc.collapse.show{ display:block !important; }
/* O accordion do atendimentos.php usa <td colspan> dentro de <table>: o painel
   ativo (Atendimentos previos / Exames anexos) ficava preso na largura da coluna,
   renderizando estreito. Linearizamos a tabela -> thead = barra de abas (flex);
   tbody/tr/td = bloco full-width. Escopo #table_atendimentos (so essa tabela). */
body.cvnova #table_atendimentos,
body.cvnova #table_atendimentos > tbody,
body.cvnova #table_atendimentos > tbody > tr{ display:block !important; width:100% !important; }
body.cvnova #table_atendimentos > thead{ display:block !important; width:100% !important; }
body.cvnova #table_atendimentos > thead > tr{ display:flex !important; width:100% !important; }
body.cvnova #table_atendimentos > thead > tr > th{ flex:1 1 0 !important; }
body.cvnova #table_atendimentos > tbody > tr > td.acc.collapse.show{ width:100% !important; box-sizing:border-box !important; }


/* ============================================================
   Chat widget (chat.js.php) no tema ESCURO da skin
   O widget e claro (fundo branco) e nao adapta ao dark; no modo escuro
   a tinta clara da skin (--cvn-ink ~ #eaf0fb) vazava por heranca e deixava
   o texto das respostas / o input / o titulo / as opcoes do select de LLM
   quase invisiveis sobre o fundo branco. Forcamos tinta escura + color-scheme
   claro DENTRO do #ow-window (so no dark). Elementos com cor propria (botoes
   escuros, select2 da sidebar, balao do usuario) nao sao afetados.
   ============================================================ */
body.cvnova[data-theme="dark"] #ow-window{ color:#0f172a !important; color-scheme:light; }
body.cvnova[data-theme="dark"] #ow-window #ow-model-sel{ color:#0f172a !important; }


/* ============================================================
   INCREMENTOS VISUAIS v1 (2026-07-07, Recife)
   ------------------------------------------------------------
   Polish adicional sutil, coerente com os tokens da skin e com
   técnicas inspiradas na galeria de efeitos CSS de referência.
   Tudo aditivo/reversível. REGRA AGENTS.md: !important em
   background/box-shadow/border/color. Movimento respeita o bloco
   global de prefers-reduced-motion (já definido acima).
   Entradas usam animation-fill-mode:backwards (NÃO "both") para
   não travar os transforms de :hover já existentes nos cards.
   ============================================================ */

/* 1) KPIs do dashboard: faixa de destaque em gradiente no topo do
      card — discreta em repouso, plena no hover (borrow: gradient-border). */
/* clip da faixa as bordas arredondadas do card: sem overflow, os cantos
   quadrados da linha ultrapassavam o topo arredondado no hover. */
body.cvnova .cvn-dash-kpi{ overflow:hidden !important; }
body.cvnova .cvn-dash-kpi::before{
  content:""; position:absolute; left:0; right:0; top:0; height:3px;
  border-radius:var(--cvn-r-lg) var(--cvn-r-lg) 0 0;
  background:linear-gradient(90deg,var(--cvn-brand),var(--cvn-accent)) !important;
  opacity:.5; transform:scaleX(.92); transform-origin:left center;
  transition:opacity .18s ease, transform .18s ease; pointer-events:none;
}
body.cvnova .cvn-dash-kpi:hover::before{ opacity:1; transform:scaleX(1); }
/* o ícone do KPI ganha um leve realce quando o card é focado/hover */
body.cvnova .cvn-dash-kpi .cvn-dash-ic{ transition:transform .18s ease; }
body.cvnova .cvn-dash-kpi:hover .cvn-dash-ic{ transform:translateY(-1px) scale(1.06); }

/* 2) CTA primário: brilho suave que cruza o botão no hover
      (borrow: gradient-slide / shine). Sem custo em repouso. */
body.cvnova .cvn-dash-cta,
body.cvnova .cvn-md-cta{ position:relative; overflow:hidden; }
body.cvnova .cvn-dash-cta::after,
body.cvnova .cvn-md-cta::after{
  content:""; position:absolute; top:0; bottom:0; left:-60%; width:42%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent) !important;
  transform:skewX(-18deg); pointer-events:none; opacity:0;
}
body.cvnova .cvn-dash-cta:hover::after,
body.cvnova .cvn-md-cta:hover::after{ opacity:1; animation:cvnSheen .7s ease; }
@keyframes cvnSheen{ from{ left:-60%; } to{ left:130%; } }

/* 4) Ação rápida: o ícone acompanha o lift do card no hover. */
body.cvnova .cvn-dash-action .cvn-dash-ic{ transition:transform .16s ease; }
body.cvnova .cvn-dash-action:hover .cvn-dash-ic{ transform:translateY(-1px) scale(1.04); }


/* ============================================================
   INCREMENTOS VISUAIS v2 (2026-07-07, Recife) — botoes e selects
   ------------------------------------------------------------
   Consistencia dos botoes de formulario dos modulos e caret
   custom nos selects nativos. Escopo body.cvnova/.cvn-content.
   REGRA AGENTS.md: !important em background/color/border/box-shadow.
   Respeita o bloco global de prefers-reduced-motion.
   ============================================================ */

/* Grupo A — botoes de formulario reais (input[type=submit|button|reset],
   button[type=submit], .btn). Antes recebiam so cor de marca, sem padding
   nem feedback: ex. "Abrir" ficava minusculo (1px 6px). Aqui ganham padding,
   tipografia, min-height, transicao e feedback tatil coerentes com .button. */
body.cvnova .cvn-content .btn,
body.cvnova .cvn-content button[type=submit],
body.cvnova .cvn-content input[type=submit],
body.cvnova .cvn-content input[type=button],
body.cvnova .cvn-content input[type=reset]{
  display:inline-flex !important; align-items:center; justify-content:center; gap:8px;
  padding:10px 18px !important; min-height:40px; line-height:1.2 !important;
  font-size:14px !important; font-weight:650 !important;
  border-radius:10px !important; border:0 !important;
  background:var(--cvn-brand) !important; color:#fff !important;
  box-shadow:var(--cvn-sh-sm) !important; cursor:pointer;
  transition:background-color .15s ease, box-shadow .16s ease, transform .12s ease !important;
}
body.cvnova .cvn-content .btn:hover,
body.cvnova .cvn-content button[type=submit]:hover,
body.cvnova .cvn-content input[type=submit]:hover,
body.cvnova .cvn-content input[type=button]:hover,
body.cvnova .cvn-content input[type=reset]:hover{
  background:var(--cvn-brand-deep) !important; color:#fff !important;
  box-shadow:var(--cvn-sh-md) !important; transform:translateY(-1px);
}
body.cvnova .cvn-content .btn:active,
body.cvnova .cvn-content button[type=submit]:active,
body.cvnova .cvn-content input[type=submit]:active,
body.cvnova .cvn-content input[type=button]:active,
body.cvnova .cvn-content input[type=reset]:active{ transform:translateY(1px); box-shadow:var(--cvn-sh-sm) !important; }

/* Grupo B — .button legado (pode ser <td>/<a>): so adiciona transicao suave
   e anel de foco; NAO altera display/transform para nao quebrar layout de td. */
body.cvnova .cvn-content .button{ transition:background-color .15s ease, box-shadow .16s ease !important; }
body.cvnova .cvn-content .button:focus-visible,
body.cvnova .cvn-content .btn:focus-visible,
body.cvnova .cvn-content button[type=submit]:focus-visible,
body.cvnova .cvn-content input[type=submit]:focus-visible,
body.cvnova .cvn-content input[type=button]:focus-visible,
body.cvnova .cvn-content input[type=reset]:focus-visible{ outline:0; box-shadow:0 0 0 4px var(--cvn-brand-soft) !important; }

/* Selects nativos: caret custom (chevron) alinhado ao tema, mantendo o
   foco/hover do tema. select2 usa <span> (classe .select2-hidden-accessible
   no <select> oculto), entao fica de fora. */
body.cvnova .cvn-content select:not(.select2-hidden-accessible){
  -webkit-appearance:none !important; -moz-appearance:none !important; appearance:none !important;
  background-color:var(--cvn-surface-2) !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important; background-position:right 10px center !important;
  padding-right:34px !important;
}
body.cvnova .cvn-content select:not(.select2-hidden-accessible):hover{ border-color:var(--cvn-brand) !important; }


/* ============================================================
   INCREMENTOS VISUAIS v3 (2026-07-07, Recife) — inputs e scrollbars
   ------------------------------------------------------------
   Polish transversal e de baixo risco: transicao + hover de borda
   nos controles de formulario (distinto do foco), cor de placeholder
   coerente e scrollbars sutis no tema. Escopo body.cvnova/.cvn-content.
   REGRA AGENTS.md: !important em background/color/border/box-shadow.
   ============================================================ */

/* Controles de formulario: transicao suave + hover de borda (o foco
   continua com borda + anel de marca ja definidos no tema). */
body.cvnova .cvn-content input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=reset]):not([type=image]):not(.button),
body.cvnova .cvn-content select:not(.select2-hidden-accessible),
body.cvnova .cvn-content textarea{ transition:border-color .15s ease, box-shadow .15s ease !important; }
body.cvnova .cvn-content input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]):not([type=reset]):not([type=image]):not(.button):hover:not(:focus),
body.cvnova .cvn-content select:not(.select2-hidden-accessible):hover:not(:focus),
body.cvnova .cvn-content textarea:hover:not(:focus){ border-color:var(--cvn-brand) !important; }

/* Placeholder com tinta coerente (ink-3) em ambos os temas. */
body.cvnova .cvn-content input::placeholder,
body.cvnova .cvn-content textarea::placeholder{ color:var(--cvn-ink-3) !important; opacity:1; }

/* Scrollbars sutis, alinhadas ao tema (claro/escuro via tokens). */
body.cvnova{ scrollbar-width:thin; scrollbar-color:var(--cvn-line) transparent; }
body.cvnova ::-webkit-scrollbar{ width:10px; height:10px; }
body.cvnova ::-webkit-scrollbar-track{ background:transparent !important; }
body.cvnova ::-webkit-scrollbar-thumb{ background:var(--cvn-line) !important; border-radius:8px; border:2px solid transparent; background-clip:padding-box; }
body.cvnova ::-webkit-scrollbar-thumb:hover{ background:var(--cvn-ink-3) !important; }


/* ============================================================
   INCREMENTOS VISUAIS v4 (2026-07-07, Recife) — linhas da listagem
   ------------------------------------------------------------
   As linhas de dados ja tem a classe .tr_listagem (module/listagem.php)
   e o hover de fundo ja existe (regra .tr_listagem:hover td). Aqui so
   reforcamos a affordance de linha clicavel: cursor + realce lateral
   de marca no hover, com transicao. Nao precisa de nova classe/PHP.
   REGRA AGENTS.md: !important em box-shadow.
   ============================================================ */
body.cvnova .cvn-content tr.tr_listagem{ cursor:pointer; }
body.cvnova .cvn-content tr.tr_listagem td{ transition:background-color .14s ease, box-shadow .14s ease !important; }
body.cvnova .cvn-content tr.tr_listagem:hover td:first-child{ box-shadow:inset 3px 0 0 var(--cvn-brand) !important; }


/* ============================================================
   INCREMENTOS VISUAIS v5 (2026-07-07, Recife) — sino de ALERTAS
   ------------------------------------------------------------
   O sino (cvn-notif-wrap) agora lista os alertas clinicos reais
   (nao resolvidos, por risco). Aqui evidenciamos os mais importantes:
   barra lateral + icone por risco, badge de risco, contagem em
   destaque quando ha alto risco, e pulso no ponto do sino.
   REGRA AGENTS.md: !important em background/color/box-shadow.
   ============================================================ */
.cv-notif-icon-alerta{ background:var(--cvn-danger-soft) !important; }
.cv-notif-count.is-danger{ color:var(--cvn-danger) !important; background:var(--cvn-danger-soft) !important; }
.cv-notif-empty{ padding:26px 15px; text-align:center; color:var(--cvn-ink-3) !important; font-size:13px; }
.cv-notif-body{ min-width:0; flex:1; }
.cv-notif-meta{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* item como link */
a.cv-notif-item{ text-decoration:none; color:inherit; transition:background-color .14s ease !important; }
a.cv-notif-item:hover{ background:var(--cvn-surface-2) !important; }

/* realce por risco: barra lateral + tinta do icone */
.cv-notif-item.risk-alto{ box-shadow:inset 3px 0 0 var(--cvn-danger) !important; }
.cv-notif-item.risk-moderado{ box-shadow:inset 3px 0 0 var(--cvn-warning) !important; }
.cv-notif-item.risk-baixo{ box-shadow:inset 3px 0 0 var(--cvn-accent) !important; }
.cv-notif-item.risk-alto .cv-notif-icon{ background:var(--cvn-danger-soft) !important; }
.cv-notif-item.risk-moderado .cv-notif-icon{ background:var(--cvn-warning-soft) !important; }
.cv-notif-item.risk-baixo .cv-notif-icon{ background:var(--cvn-accent-soft) !important; }

/* badge de risco ao lado do titulo */
.cv-notif-risk{ display:inline-block; margin-left:6px; font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; padding:1px 6px; border-radius:999px; vertical-align:middle; }
.cv-notif-risk.risk-alto{ background:var(--cvn-danger-soft) !important; color:var(--cvn-danger) !important; }
.cv-notif-risk.risk-moderado{ background:var(--cvn-warning-soft) !important; color:var(--cvn-warning) !important; }
.cv-notif-risk.risk-baixo{ background:var(--cvn-accent-soft) !important; color:var(--cvn-accent) !important; }

/* ponto do sino pulsa quando ha alerta de alto risco (respeita reduced-motion global) */
.cvn-dot.cvn-dot-pulse{ animation:cvnDotPulse 1.8s ease-in-out infinite; }
@keyframes cvnDotPulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(220,38,38,.5); } 70%{ box-shadow:0 0 0 6px rgba(220,38,38,0); } }


/* ============================================================
   INCREMENTOS VISUAIS v6 (2026-07-07, Recife) — sino: meta completa + datas
   ------------------------------------------------------------
   O texto do alerta (.cv-notif-meta) agora aparece INTEGRAL (quebra de linha,
   sem corte pelo limite do card). Nova sub-linha (.cv-notif-sub) com a data da
   ultima consulta e a data estimada de retorno. Painel um pouco mais largo e
   itens alinhados ao topo para acomodar varias linhas.
   ============================================================ */
.cv-notif-panel{ width:360px !important; }
.cv-notif-list{ max-height:440px; }
.cv-notif-item{ align-items:flex-start; }
.cv-notif-meta{ white-space:normal !important; overflow:visible !important; text-overflow:clip !important; line-height:1.4; margin-top:2px; }
.cv-notif-sub{ margin-top:4px; font-size:11px; color:var(--cvn-ink-3) !important; }


/* ============================================================
   INCREMENTOS VISUAIS v7 (2026-07-07, Recife) — motivo da data de retorno
   ------------------------------------------------------------
   Linha que explicita POR QUE aquela data de retorno foi definida
   (base do calculo + intervalo + motivo clinico). Ver _alertas_notif.php.
   ============================================================ */
.cv-notif-motivo{ margin-top:3px; font-size:11px; color:var(--cvn-ink-3) !important; line-height:1.35; }


/* ============================================================
   INCREMENTOS VISUAIS v8 (2026-07-07, Recife) — carregamento async do sino
   ------------------------------------------------------------
   O painel de alertas agora carrega via fetch (/?cvn_alertas_ajax=1) apos a
   pagina, para nao atrasar o render. Estilos do estado "carregando".
   ============================================================ */
.cv-notif-loading{ display:flex; align-items:center; justify-content:center; gap:9px; padding:24px 15px; color:var(--cvn-ink-3) !important; font-size:13px; }
.cv-notif-spin{ width:16px; height:16px; border-radius:50%; border:2px solid var(--cvn-line); border-top-color:var(--cvn-brand) !important; display:inline-block; animation:cvnSpin .7s linear infinite; }
.cv-notif-count-loading{ color:var(--cvn-ink-3) !important; background:var(--cvn-bg) !important; }
@keyframes cvnSpin{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .cv-notif-spin{ animation-duration:1.4s; } }
.cv-notif-profwrap{ padding:9px 15px; border-bottom:1px solid var(--cvn-line) !important; }
.cv-notif-prof{ display:block !important; width:100%; box-sizing:border-box; padding:7px 9px; font-size:12.5px; color:var(--cvn-ink) !important; background:var(--cvn-bg-2, #fff) !important; border:1px solid var(--cvn-line) !important; border-radius:8px; cursor:pointer; }
.cv-notif-prof:focus{ outline:none; border-color:var(--cvn-brand) !important; }
