
:root{
  /* ===== Paleta OFICIAL — idêntica à do site institucional alvosst.com.br, pra que o cliente
     que sai do site e entra no sistema não perceba diferença. ALVO Navy #102A43 (institucional),
     ALVO Mint #19C37D (destaque), texto #0F172A, secundário #64748B, superfície #F8FAFC.
     ATENÇÃO: o Mint puro tem contraste 2.30 com branco — texto branco sobre ele é ilegível.
     Por isso existe --accent-dark (#118454, contraste 4.72), usado sempre que precisar de
     texto claro sobre fundo verde. ===== */
  --brand:#102A43; --brand-dark:#0A1F33; --brand-light:#E6F0F9;
  --accent:#19C37D; --accent-dark:#118454; --accent-light:#E4FCF2;
  --ink:#0F172A; --ink-soft:#64748B; --ink-faint:#7C8AA0;
  --paper:#FFFFFF; --panel:#FFFFFF; --bg:#F8FAFC; --line:#E2E8F0;
  --danger:#C0392B; --danger-light:#FBEAE7; --ok:#00875A; --ok-light:#DFF7EC;
  --warn:#8D6608; --warn-light:#FDF3D9;
  --radius:14px; --radius-sm:10px;
  --shadow-sm:0 1px 3px rgba(13,43,69,.05); --shadow-md:0 6px 20px rgba(13,43,69,.08);
  /* nomes antigos mantidos como apelido, pra não quebrar nada que ainda referencie */
  --steel:var(--brand); --steel-dark:var(--brand-dark); --safety:var(--accent); --risk:var(--danger);
  --sidebar-icon-color:#EAF2EE; --skeleton-shine:#EDE9DE; --warn-border:#E9C57E; --warn-ink:#6B4E12;
}
*{box-sizing:border-box;}
body{margin:0;font-family:'Manrope',sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;}
h1,h2,h3,.display{font-family:'Manrope',sans-serif;font-weight:700;letter-spacing:-.01em;}
code,.mono,.tag{font-family:'IBM Plex Mono',monospace;}
.app{display:flex;min-height:100vh;}

/* ===== Sidebar ===== */
.sidebar{width:238px;flex-shrink:0;background:linear-gradient(180deg,var(--brand-dark),#062922 85%);color:#DCEAE5;padding:22px 0;position:sticky;top:0;height:100vh;overflow-y:auto;transition:width .2s ease;}
.brand img{max-width:150px;transition:max-width .2s ease;}
.sidebar.compacto{width:60px;overflow-x:hidden;}
.sidebar.compacto .brand .sub,.sidebar.compacto .brand button,.sidebar.compacto .brand #usuarioLogadoEmail,.sidebar.compacto .brand>div{display:none;}
.sidebar.compacto .brand{padding:0 8px;}
.sidebar.compacto .brand img{max-width:36px;}
.sidebar.compacto .nav-folder-header span:first-child{font-size:0;}
.sidebar.compacto .nav-folder-header .nav-folder-icon{font-size:18px;}
.sidebar.compacto .nav-folder-header .nav-folder-count,.sidebar.compacto .nav-folder-header .chev{display:none;}
.sidebar.compacto .nav-folder-items,.sidebar.compacto .nav-separador-admin{display:none !important;}
.btn-toggle-sidebar{width:100%;background:transparent;border:none;color:#B8C2CC;padding:8px 20px;text-align:left;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:8px;border-top:1px solid rgba(255,255,255,.1);border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:6px;}
.btn-toggle-sidebar:hover{background:rgba(255,255,255,.06);color:var(--sidebar-icon-color,#EAF2EE);}
.sidebar.compacto .btn-toggle-sidebar{padding:8px;justify-content:center;}
.sidebar.compacto .btn-toggle-sidebar span:last-child{display:none;}
.brand{padding:0 20px 20px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:16px;}
.brand .name{font-size:17px;font-weight:700;letter-spacing:.2px;color:var(--panel,#fff);}
.brand .sub{font-family:'IBM Plex Mono';font-size:10px;color:var(--accent);text-transform:uppercase;letter-spacing:.1em;margin-top:3px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 20px;font-size:13.5px;cursor:pointer;color:#B9C9C2;border-left:3px solid transparent;transition:.15s;}
.nav-fav-star{margin-left:auto;opacity:.35;font-size:13px;padding:2px 4px;transition:.15s;}
.nav-item:hover .nav-fav-star{opacity:.75;}
.nav-fav-star:hover{opacity:1 !important;transform:scale(1.15);}
.nav-fav-star.ativa{opacity:.9;}
.nav-item:hover{background:rgba(255,255,255,.06);color:var(--panel,#fff);}
.nav-item.active{background:rgba(232,163,61,.14);border-left-color:var(--accent);color:var(--panel,#fff);font-weight:600;}
.nav-item.disabled{opacity:.35;cursor:not-allowed;pointer-events:none;}
.nav-section-label{font-family:'IBM Plex Mono';font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:#7C8F87;padding:16px 20px 6px;}
.nav-separador-admin{margin:16px 20px 6px;padding-top:14px;border-top:1px solid rgba(255,255,255,.12);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:rgba(234,242,238,.45);font-weight:600;}
.gauge-clicavel{cursor:pointer;border-radius:var(--radius-sm);transition:.15s;}
.gauge-clicavel:hover{background:var(--bg);}
.nav-folder-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 20px;font-size:13.5px;cursor:pointer;color:var(--sidebar-icon-color,#EAF2EE);font-weight:600;user-select:none;}
.nav-folder-header:hover{background:rgba(255,255,255,.06);}
.nav-folder-header .chev{font-size:10px;color:var(--accent);transition:transform .15s;}
.nav-folder-header.open .chev{transform:rotate(90deg);}
.nav-folder-icon{margin-right:8px;}.nav-folder-icon svg{width:18px;height:18px;vertical-align:-4px;color:var(--sidebar-icon-color,currentColor);}
.nav-folder-items{overflow:hidden;}
.nav-folder-items .nav-item{padding-left:38px;}
.nav-folder-count{font-family:'IBM Plex Mono';font-size:10px;color:#0C2B24;background:var(--accent);border-radius:8px;padding:1px 7px;font-weight:700;}
.nav-subgrupo-label{font-family:'IBM Plex Mono';font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.45);padding:10px 14px 4px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;}
.nav-subgrupo-label:hover{color:rgba(255,255,255,.75);}
.chev-sub{font-size:9px;}

/* ===== Topbar / breadcrumb ===== */
.main{flex:1;min-width:0;padding:26px 36px;}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;flex-wrap:wrap;gap:12px;}
.client-select{display:flex;align-items:center;gap:10px;}
.client-select select,.client-select input{font-family:'Manrope';font-size:14px;padding:9px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);min-width:230px;}
.client-badge{font-family:'IBM Plex Mono';font-size:11px;background:var(--brand);color:var(--panel,#fff);padding:4px 9px;border-radius:5px;letter-spacing:.03em;}
.breadcrumb{display:flex;align-items:center;gap:6px;font-family:'IBM Plex Mono';font-size:11px;color:var(--ink-faint);margin-bottom:16px;flex-wrap:wrap;text-transform:uppercase;letter-spacing:.04em;}
.crumb-link{cursor:pointer;transition:color .15s;}
.crumb-link:hover{color:var(--brand);text-decoration:underline;}
.breadcrumb .sep{color:var(--line);}
.breadcrumb .atual{color:var(--brand);font-weight:700;}

h2.section-title{font-size:23px;margin:0 0 4px;font-weight:700;}
.section-desc{color:var(--ink-soft);font-size:13.5px;margin:0 0 22px;max-width:640px;}

/* ===== Cards e painéis ===== */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:18px;transition:.15s;}
.subhead{font-family:'IBM Plex Mono';font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--brand);font-weight:600;margin:20px 0 10px;padding-top:14px;border-top:1px solid var(--line);}
.subhead:first-child{margin-top:0;padding-top:0;border-top:none;}
.grid{display:grid;gap:14px;}
.grid.cols-2{grid-template-columns:1fr 1fr;}
.grid.cols-3{grid-template-columns:1fr 1fr 1fr;}
.grid.cols-4{grid-template-columns:1fr 1fr 1fr 1fr;}

label{display:block;font-size:11.5px;font-weight:600;color:var(--ink-soft);margin-bottom:5px;text-transform:uppercase;letter-spacing:.04em;}
input,select,textarea{width:100%;font-family:'Manrope';font-size:14px;padding:9px 11px;border:1.5px solid var(--line);border-radius:var(--radius-sm);background:#FCFDFB;color:var(--ink);transition:.12s;}
/* iOS dá ZOOM AUTOMÁTICO ao focar um campo com fonte abaixo de 16px — a tela salta, o teclado
   cobre o formulário e a pessoa precisa dar pinch pra voltar. Em telas de toque, 16px é o
   mínimo que evita isso. No desktop os 14px continuam, mantendo a densidade. */
@media (max-width:900px){
  input,select,textarea{font-size:16px;}
}
/* Respeitar quem configurou "reduzir movimento" no sistema — pessoas com sensibilidade
   vestibular podem passar mal com animações. É preferência de acessibilidade do SO, não gosto. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important;}
}
textarea{resize:vertical;min-height:64px;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-light);}
.field{margin-bottom:2px;}

/* ===== Botões ===== */
.btn{font-family:'Manrope';font-weight:600;font-size:13.5px;padding:10px 18px;border-radius:var(--radius-sm);border:1.5px solid transparent;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:7px;}
.btn:active{transform:scale(.97);}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;}
.btn:focus-visible,.crumb-link:focus-visible,[data-tab]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2.5px solid var(--brand);outline-offset:2px;}
.item-card{transition:transform .15s,box-shadow .15s,border-color .15s;}
.panel{animation:fadeIn .2s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
.skeleton-line{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--line) 25%,var(--skeleton-shine) 50%,var(--line) 75%);background-size:200% 100%;animation:skeletonPulse 1.4s ease-in-out infinite;}
@keyframes skeletonPulse{0%{background-position:200% 0;}100%{background-position:-200% 0;}}
.btn-primary{background:var(--brand);color:var(--panel,#fff);box-shadow:var(--shadow-sm);}
.btn-primary:hover{background:var(--brand-dark);box-shadow:var(--shadow-md);}
.btn-safety{background:var(--accent);color:#3A2A08;box-shadow:var(--shadow-sm);}
.btn-safety:hover{background:var(--accent-dark);color:var(--panel,#fff);}
.btn-ghost{background:transparent;color:var(--brand);border-color:var(--line);}
.btn-ghost:hover{background:var(--brand-light);border-color:var(--brand);}
.btn-danger{background:transparent;color:var(--danger);border-color:var(--danger-light);}
.btn-danger:hover{background:var(--danger-light);border-color:var(--danger);}
.btn-sm{padding:6px 11px;font-size:12.5px;}
/* Alvo de toque mínimo — Apple HIG (44pt) e Material (48dp). Aplicado só em telas de toque
   pra não engordar a interface no desktop, onde o mouse é preciso e a densidade importa.
   min-height em vez de padding fixo: o texto continua no mesmo tamanho, só a área clicável cresce. */
@media (max-width:900px){
  .btn{min-height:44px;}
  .btn-sm{min-height:40px;}
  #btnLogout,#btnAlterarLogo,#btnLogoPadrao{min-height:40px;}
  .sidebar nav a,.sidebar .nav-item{min-height:44px;display:flex;align-items:center;}
  /* Botões da topbar e o recolher menu usam classes próprias, fora de .btn */
  .theme-toggle,#btnRecolherMenu,.btn-recolher{min-height:44px;min-width:44px;}
}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.row-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap;}
/* Cabeçalho de painel com ação primária alinhada à direita — convenção usada nas telas novas */
.panel-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
.panel-header h2,.panel-header h3{margin:0;}

/* ===== Listas de item ===== */
.card-list{display:flex;flex-direction:column;gap:10px;}
.item-card{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;background:#FEFEFD;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;transition:.15s;}
.menu-contexto-wrap{position:relative;display:inline-block;}
.btn-menu-contexto{width:32px;height:32px;padding:0;justify-content:center;border-radius:50%;font-size:18px;line-height:1;color:var(--ink-soft);background:transparent;}
.btn-menu-contexto:hover{background:var(--bg);color:var(--ink);}
.menu-contexto-lista{position:absolute;right:0;top:calc(100% + 4px);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:180px;z-index:200;overflow:hidden;display:none;}
.menu-contexto-lista.aberto{display:block;}
.menu-contexto-lista button{width:100%;text-align:left;padding:9px 14px;border:none;background:transparent;font-family:'Manrope';font-size:13px;cursor:pointer;display:flex;align-items:center;gap:8px;color:var(--ink);}
.menu-contexto-lista button:hover{background:var(--bg);}
.menu-contexto-lista button.perigo{color:var(--danger);}
.paginacao{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:14px;font-size:13px;}
.paginacao button{padding:5px 12px;}
.paginacao button:disabled{opacity:.4;cursor:not-allowed;}
.item-card:hover{border-color:var(--brand);box-shadow:var(--shadow-sm);transform:translateY(-1px);}
.item-card .info b{font-size:14.5px;}
.item-card .info .meta{font-size:12.5px;color:var(--ink-soft);margin-top:3px;}
.item-card .actions{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;}
.ghe-tag{display:inline-block;font-family:'IBM Plex Mono';font-size:10.5px;background:var(--brand-dark);color:var(--panel,#fff);padding:2px 8px;border-radius:4px;margin-right:6px;white-space:nowrap;}
.cat-tag{display:inline-block;font-family:'IBM Plex Mono';font-size:10.5px;background:var(--accent);color:#3A2A08;padding:2px 8px;border-radius:4px;margin-right:6px;font-weight:600;white-space:nowrap;}
.risk-badge{display:inline-flex;align-items:center;gap:5px;font-family:'IBM Plex Mono';font-size:11px;padding:3px 9px;border-radius:20px;font-weight:700;}
.risk-badge.excede{background:var(--danger-light);color:var(--danger);}
.risk-badge.ok{background:var(--ok-light);color:var(--ok);}
.risk-badge.pendente{background:var(--warn-light);color:#8A5D14;}

/* ===== Medidores circulares (indicador-assinatura) ===== */
.gauge-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px;}
.processo-stepper{margin-bottom:18px;}
.barra-progresso{height:6px;border-radius:3px;background:#E7E2D6;overflow:hidden;margin:8px 0 14px;}
.barra-progresso-preenchida{height:100%;background:var(--brand);border-radius:3px;transition:width .3s ease;}
.processo-etapas{display:flex;flex-wrap:wrap;gap:6px 18px;}
.processo-etapa{display:flex;align-items:center;gap:6px;font-size:13px;padding:4px 0;}
.processo-etapa-marca{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;}
.processo-etapa-concluido .processo-etapa-marca{background:var(--ok);color:var(--panel,#fff);}
.processo-etapa-concluido .processo-etapa-label{color:var(--text);}
.processo-etapa-atual .processo-etapa-marca{background:var(--brand);color:var(--panel,#fff);}
.processo-etapa-atual .processo-etapa-label{color:var(--brand-dark);font-weight:600;}
.processo-etapa-pendente .processo-etapa-marca{background:#E7E2D6;color:#999;}
.processo-etapa-pendente .processo-etapa-label{color:#999;}
.gauge-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-sm);}
.gauge-card svg{flex-shrink:0;}
.gauge-card .gauge-num{font-family:'Manrope';font-size:20px;font-weight:700;}
.gauge-card .gauge-label{font-family:'IBM Plex Mono';font-size:10.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;line-height:1.4;margin-top:2px;}

.empty-state{text-align:center;padding:50px 20px;color:var(--ink-soft);border:1.5px dashed var(--line);border-radius:var(--radius);}
.empty-state .icon{font-size:32px;margin-bottom:10px;}
.hint{font-size:12px;color:var(--ink-soft);margin-top:6px;line-height:1.5;}
.disclaimer{background:var(--warn-light);border:1px solid var(--warn-border);border-radius:var(--radius-sm);padding:12px 16px;font-size:12.5px;color:var(--warn-ink);margin-bottom:20px;line-height:1.5;}
.thumb{width:60px;height:60px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line);flex-shrink:0;}
.toggle-group{display:inline-flex;border:1.5px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;}
.toggle-group button{border:none;background:var(--panel,#fff);padding:9px 16px;font-family:'Manrope';font-weight:600;font-size:13px;cursor:pointer;color:var(--ink-soft);}
.toggle-group button.active{background:var(--brand);color:var(--panel,#fff);}
.doc-toolbar{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap;align-items:center;}

/* ===== Breadcrumb / Toast / Spinner / Tooltip ===== */
#toastWrap{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;max-width:340px;}
.body-com-banner-noticia #content{padding-bottom:56px;}
#faixaAssinatura{padding:10px 18px;display:flex;align-items:center;gap:12px;font-size:13px;font-weight:500;}
#faixaAssinatura.aviso{background:var(--warn-light);color:var(--warn);border-bottom:2px solid var(--warn);}
#faixaAssinatura.urgente{background:var(--danger-light);color:var(--danger);border-bottom:2px solid var(--danger);}
#faixaAssinatura .faixa-texto{flex:1;}
#faixaAssinatura .faixa-btn{background:var(--accent-dark);color:var(--panel,#fff);border:none;border-radius:8px;padding:7px 14px;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;}
#faixaAssinatura .faixa-btn:hover{filter:brightness(1.1);}
/* Somente leitura: sinal visual nos campos. O bloqueio REAL acontece dentro das funções de
   gravação (podeEscreverAgora), não aqui — tentar bloquear botões por CSS sempre deixa escapar
   algum caminho (cartão de Kanban, atalho, botão novo). O visual é só o aviso. */
body.somente-leitura #content input:not([type=file]),
body.somente-leitura #content textarea,
body.somente-leitura #content select{background:var(--line);cursor:not-allowed;}
#bannerNoticiaRodape{position:fixed;bottom:0;left:0;right:0;z-index:500;background:var(--brand-dark);color:var(--panel,#fff);padding:9px 16px;display:flex;align-items:center;gap:10px;font-size:12.5px;box-shadow:0 -2px 8px rgba(0,0,0,.15);}
#bannerNoticiaRodape .banner-tag{background:var(--accent);color:var(--panel,#fff);font-weight:700;font-size:10px;letter-spacing:.04em;padding:3px 8px;border-radius:4px;flex-shrink:0;text-transform:uppercase;}
#bannerNoticiaRodape .banner-texto{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;}
#bannerNoticiaRodape .banner-fechar{background:transparent;border:none;color:var(--panel,#fff);opacity:.6;cursor:pointer;font-size:16px;flex-shrink:0;padding:0 4px;}
#bannerNoticiaRodape .banner-fechar:hover{opacity:1;}
.toast{background:var(--ink);color:var(--panel,#fff);padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;box-shadow:var(--shadow-md);display:flex;align-items:center;gap:8px;animation:toastIn .2s ease-out;}
.toast-com-desfazer{justify-content:space-between;gap:16px;}
.toast-btn-desfazer{background:transparent;border:1px solid rgba(255,255,255,.4);color:var(--panel,#fff);border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;}
.toast-btn-desfazer:hover{background:rgba(255,255,255,.15);}
.toast-btn-desfazer:disabled{opacity:.5;cursor:default;}
.toast.sucesso{background:var(--ok);}
.toast.erro{background:var(--danger);}
.toast.info{background:var(--brand-dark);}
@keyframes toastIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.spinner{display:inline-block;width:18px;height:18px;border:2.5px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:girar .7s linear infinite;vertical-align:middle;margin-right:8px;}
@keyframes girar{to{transform:rotate(360deg);}}
/* ===== Skeleton screens — pra telas com carregamento visível (Kanban, Painel de Chamada,
   listas), em vez do spinner genérico. Imita o formato do conteúdo final, reduzindo a
   sensação de "travado" enquanto os dados chegam. ===== */
@keyframes skeleton-pulso{0%{opacity:.55;}50%{opacity:1;}100%{opacity:.55;}}
.skeleton{background:var(--line);border-radius:var(--radius-sm);animation:skeleton-pulso 1.3s ease-in-out infinite;}
.skeleton-linha{height:14px;margin-bottom:8px;}
.skeleton-linha.curta{width:40%;}
.skeleton-linha.media{width:65%;}
.skeleton-linha.longa{width:90%;}
.skeleton-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;}
.skeleton-titulo{height:18px;width:50%;margin-bottom:12px;}
.loading-inline{display:flex;align-items:center;gap:8px;color:var(--ink-soft);font-size:13px;padding:20px 0;}
[data-tip]{position:relative;}
[data-tip]:hover::after,[data-tip].tip-ativo::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--ink);color:var(--panel,#fff);font-size:11px;padding:6px 10px;border-radius:5px;white-space:normal;width:max-content;max-width:220px;text-align:left;line-height:1.4;z-index:100;box-shadow:var(--shadow-md);}
[data-tip]:hover::before,[data-tip].tip-ativo::before{content:'';position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);border:4px solid transparent;border-top-color:var(--ink);z-index:100;}
.campo-ajuda{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--line);color:var(--ink-soft);font-size:11px;font-weight:700;font-style:normal;cursor:help;margin-left:5px;vertical-align:middle;}

/* ===== Tabelas ===== */
table{border-collapse:collapse;}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}

/* ===== Documento impresso (laudo/ASO/prontuário — mantém tom neutro pra impressão) ===== */
.paper{background:var(--paper);border:1px solid var(--line);max-width:840px;margin:0 auto;padding:60px 64px;font-family:'Manrope';line-height:1.6;font-size:13px;color:#1A1A1A;box-shadow:var(--shadow-md);border-radius:4px;}
/* Versão compacta — só pra ASO e Prontuário Clínico (documentos densos, tipo formulário, onde o
   pedido explícito foi ocupar o mínimo de páginas possível). Os outros 15 documentos continuam
   usando .paper normal, sem essa mudança. */
.paper-compacto{background:var(--paper);border:1px solid var(--line);max-width:840px;margin:0 auto;padding:22px 26px;font-family:'Manrope';line-height:1.15;font-size:11px;color:#1A1A1A;box-shadow:var(--shadow-md);border-radius:4px;}
.paper-compacto table{table-layout:fixed;width:100%;border-collapse:collapse;margin:2px 0 5px;font-size:10.5px;}
.paper-compacto td,.paper-compacto th{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word;padding:2px 5px;vertical-align:top;}
.paper-compacto td span{white-space:normal !important;display:inline-block;}
.paper-compacto th{background:var(--brand-dark);color:var(--panel,#fff);text-align:left;font-weight:600;}
.paper-compacto td{border-bottom:1px solid var(--line);}
.paper-compacto h2{margin:0;line-height:1.1;}
.paper-compacto h3.doc-h3{font-size:11px;margin:4px 0 1px;color:var(--ink);}
.paper-compacto p{margin:1px 0;}
.paper table{table-layout:fixed;width:100%;}
.paper td,.paper th{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word;}
.paper td span{white-space:normal !important;display:inline-block;}
.paper h1.doc-title{font-family:'Manrope';font-size:24px;text-align:center;margin:0 0 6px;color:var(--ink);}
.paper .doc-sub{text-align:center;color:var(--ink-soft);font-size:12.5px;margin-bottom:36px;letter-spacing:.04em;text-transform:uppercase;}
.paper h2.doc-h2{font-family:'Manrope';font-size:15px;margin:28px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--brand);color:var(--brand-dark);}
.paper h3.doc-h3{font-size:13px;margin:16px 0 6px;color:var(--ink);}
.paper h3.doc-h3-destaque{font-size:14px;font-weight:700;margin:22px 0 10px;padding:9px 14px;background:var(--brand-dark);color:var(--panel,#fff);border-radius:4px;}
.paper table{width:100%;table-layout:fixed;border-collapse:collapse;margin:10px 0 18px;font-size:11px;}
.paper table td, .paper table th{overflow-wrap:break-word;word-break:break-word;}
.paper th{background:var(--brand-dark);color:var(--panel,#fff);text-align:left;padding:6px 8px;font-weight:600;}
.paper td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top;}
.paper .cover{text-align:center;padding:70px 0 50px;}
.paper .cover .tag-code{font-family:'IBM Plex Mono';color:var(--accent-dark);letter-spacing:.1em;font-size:12px;}
.stamp{margin-top:40px;border:2px solid var(--brand-dark);border-radius:var(--radius-sm);padding:16px 18px;display:flex;justify-content:space-between;gap:20px;}
.stamp .col{font-size:12px;}
.stamp .col b{display:block;font-size:13px;margin-bottom:3px;}
.conclusao-box{border-left:4px solid var(--brand);background:#F1F3EF;padding:8px 12px;margin:6px 0;font-size:11.5px;}
.conclusao-box.excede{border-left-color:var(--danger);background:var(--danger-light);}
.conclusao-box.ok{border-left-color:var(--ok);background:var(--ok-light);}
.paper .foto{max-width:100%;max-height:900px;width:auto;height:auto;display:block;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--line);margin:8px auto;}
.anexo-block{margin-bottom:22px;padding-bottom:16px;border-bottom:1px dashed var(--line);}
.quadro-conclusao{width:100%;border-collapse:collapse;font-size:11px;margin:0;}
.quadro-conclusao td{border:1px solid #000;padding:6px 8px;vertical-align:top;}
.page-break{height:0;}
@media print{
  .page-break{ page-break-before: always; }
  .sidebar{display:none !important;}
  .main > *:not(#content){display:none !important;}
  #content > *:not(.paper):not(.paper-compacto):not(#prontuarioConteudo){display:none !important;}
  #prontuarioConteudo > *:not(.paper):not(.paper-compacto){display:none !important;}
  .paper,.paper-compacto{position:static;box-shadow:none;border:none;width:100%;max-width:none;margin:0;padding:20px 40px;}
}
@media (max-width:900px){
  .app{flex-direction:column;}
  .sidebar{
    position:fixed; top:0; left:0; width:280px; max-width:85vw; height:100vh; z-index:200;
    transform:translateX(-100%); transition:transform .22s ease; overflow-y:auto; padding:10px 0;
    box-shadow:4px 0 24px rgba(0,0,0,.25);
  }
  .sidebar.menu-mobile-aberto{transform:translateX(0);}
  /* No mobile, "compacto" não existe (a barra some inteira em vez de encolher) — anula
     qualquer resquício dessa classe pra não conflitar com o comportamento de gaveta. */
  .sidebar.compacto{width:280px;max-width:85vw;}
  .sidebar.compacto .brand .sub,.sidebar.compacto .brand button,.sidebar.compacto .brand #usuarioLogadoEmail,.sidebar.compacto .brand>div{display:flex;}
  .sidebar.compacto .nav-folder-header span:first-child{font-size:inherit;}
  .sidebar.compacto .nav-folder-header .nav-folder-count,.sidebar.compacto .nav-folder-header .chev{display:inline;}
  .sidebar.compacto .nav-folder-items,.sidebar.compacto .nav-separador-admin{display:block !important;}
  #overlayMenuMobile{
    display:none; position:fixed; inset:0; background:rgba(13,26,22,.5); z-index:190;
  }
  #overlayMenuMobile.aberto{display:block;}
  #btnAbrirMenuMobile{
    display:flex; align-items:center; gap:6px; position:fixed; top:12px; left:12px; z-index:180;
    background:var(--brand-dark); color:var(--panel,#fff); border:none; border-radius:8px; padding:9px 12px;
    font-size:13px; cursor:pointer; box-shadow:var(--shadow-md);
  }
  .brand{padding:0 14px 10px;}
  .brand img{max-width:120px !important;}
  .nav-folder-header, .nav-item{white-space:normal;}
  .grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr;}
  .gauge-row{grid-template-columns:1fr 1fr;}
  .paper{padding:30px 20px;}
  .topbar{flex-direction:column;align-items:stretch;gap:8px;padding:10px 14px 10px 56px;}
  .client-select{max-width:none !important;}
  .topbar > div[style*="margin-left:auto"]{max-width:none !important;margin-left:0 !important;}
  table{font-size:12px;}
  .doc-toolbar{flex-wrap:wrap;}
  .row-actions{flex-wrap:wrap;}
  .main{padding:18px 16px;}
}
#btnAbrirMenuMobile{display:none;}
@media (max-width:600px){
  h2.section-title{font-size:19px;}
  .btn{padding:10px 14px;font-size:13px;min-height:40px;}
  .panel, .card-list .item-card{padding:14px;}
  .gauge-row{grid-template-columns:1fr;}
  .item-card{flex-direction:column;}
  .item-card .actions{width:100%;justify-content:flex-start;}
  /* Botão de busca/comandos: só o ícone, compacto — "Ctrl+K" e texto longo não fazem
     sentido em tela sem teclado físico. */
  #btnAbrirComandos{width:44px;flex:0 0 auto;padding:0;justify-content:center;}
  #btnAbrirComandos .txt-comandos{display:none;}
}
/* ===== Blocos grandes de cliente (tela Clientes) ===== */
.clientes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;}
.cliente-bloco{position:relative;background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:var(--panel,#fff);border-radius:var(--radius);padding:22px;cursor:pointer;transition:.18s;overflow:hidden;min-height:110px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow-sm);}
.cliente-bloco:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);}
.cliente-bloco .nome{font-family:'Manrope';font-size:16.5px;font-weight:700;line-height:1.25;}
.cliente-bloco .meta{font-family:'IBM Plex Mono';font-size:11px;opacity:.8;margin-top:6px;}
.cliente-bloco .grupo-tag{position:absolute;top:14px;right:14px;background:rgba(255,255,255,.18);font-family:'IBM Plex Mono';font-size:10px;padding:2px 8px;border-radius:20px;}
.cliente-bloco .del-btn{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.2);border:none;color:var(--panel,#fff);width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:13px;opacity:0;transition:.15s;}
.cliente-bloco:hover .del-btn{opacity:1;}
.cliente-bloco .del-btn:hover{background:var(--danger);}
.cliente-bloco:nth-child(3n+2){background:linear-gradient(135deg,#146356,var(--brand-dark));}
.cliente-bloco:nth-child(3n+3){background:linear-gradient(135deg,#0A4F44,#052821);}

/* ===== Alertas em cor viva/neon ===== */
.alerta-neon{border-radius:var(--radius);padding:16px 18px;margin-bottom:14px;position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--neon-cor,var(--brand));}
.alerta-neon .subhead{color:var(--neon-cor,var(--brand)) !important;}

/* ===== Modo escuro ===== */
[data-theme="dark"]{
  --ink:#EAF0EC; --ink-soft:#9FB0A8; --ink-faint:#84948C;
  --paper:#132420; --panel:#132420; --bg:#0A1512; --line:#1F3831;
  --brand-light:#0F3A31; --danger-light:#3A1613; --ok-light:#0F3324; --warn-light:#3A2A0C;
  --skeleton-shine:#2A4940; --warn-border:#7A5A1E; --warn-ink:#F5D78E;
}
[data-theme="dark"] body{background:var(--bg);}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{background:#0E1F1A;color:var(--ink);border-color:var(--line);}
[data-theme="dark"] .item-card,[data-theme="dark"] .gauge-card{background:#0F221C;}
[data-theme="dark"] .paper{background:var(--panel,#fff);color:#1A1A1A;} /* documentos impressos continuam claros, sempre */
[data-theme="dark"] .toggle-group button{background:#0E1F1A;color:var(--ink-soft);}
[data-theme="dark"] .barra-progresso{background:#1F3831;}
[data-theme="dark"] .processo-etapa-pendente .processo-etapa-marca{background:#1F3831;color:var(--ink-soft);}
[data-theme="dark"] .processo-etapa-pendente .processo-etapa-label{color:var(--ink-soft);}
[data-theme="dark"] .conclusao-box{background:#132420;}
.theme-toggle{background:transparent;border:1.5px solid var(--line);border-radius:20px;padding:6px 12px;cursor:pointer;font-size:13px;color:var(--ink-soft);display:inline-flex;align-items:center;gap:6px;transition:.15s;}
.theme-toggle:hover{border-color:var(--brand);color:var(--brand);}
/* ===== Indicador de status de salvamento ===== */
.status-salvamento{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:6px 12px;border-radius:20px;transition:.2s;}
.status-salvamento.salvando{background:var(--warn-light);color:#8A5D14;}
.status-salvamento.salvo{background:var(--ok-light);color:var(--ok);}
.status-salvamento.erro{background:var(--danger-light);color:var(--danger);}
.status-salvamento .ponto{width:7px;height:7px;border-radius:50%;background:currentColor;}
.status-salvamento.salvando .ponto{animation:piscar 1s infinite;}
@keyframes piscar{50%{opacity:.3;}}
/* ===== Modal profissional (substitui confirm()/alert() do navegador) ===== */
#overlayModalSistema{display:none;position:fixed;inset:0;background:rgba(10,20,17,.5);z-index:9997;align-items:center;justify-content:center;padding:20px;}
.modal-sistema{background:var(--panel);border-radius:var(--radius);width:min(420px,100%);padding:26px;box-shadow:var(--shadow-md);}
#overlayAssistenteCliente{display:none;position:fixed;inset:0;background:rgba(10,20,17,.5);z-index:9998;align-items:center;justify-content:center;padding:20px;}
.assistente-modal{background:var(--panel);border-radius:var(--radius);width:min(560px,100%);padding:28px;box-shadow:var(--shadow-md);max-height:90vh;overflow-y:auto;}
.assistente-passos{display:flex;gap:6px;margin-bottom:20px;}
.assistente-passo-dot{flex:1;height:4px;border-radius:2px;background:var(--line);}
.assistente-passo-dot.feito,.assistente-passo-dot.atual{background:var(--brand);}
.modal-sistema .titulo{font-family:'Manrope';font-size:17px;font-weight:700;margin-bottom:8px;}
.modal-sistema .mensagem{font-size:13.5px;color:var(--ink-soft);line-height:1.55;margin-bottom:22px;}
.modal-sistema .acoes{display:flex;gap:10px;justify-content:flex-end;}
/* ===== Assistente Fechar e Faturar ===== */
.assistente-overlay{display:none;position:fixed;inset:0;background:rgba(10,20,17,.55);z-index:9996;align-items:center;justify-content:center;padding:20px;}
.assistente-box{background:var(--panel);border-radius:var(--radius);width:min(560px,100%);max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-md);}
.assistente-passos{display:flex;gap:4px;padding:18px 22px 0;}
.assistente-passo-dot{flex:1;height:4px;border-radius:3px;background:var(--line);}
.assistente-passo-dot.feito{background:var(--ok);}
.assistente-passo-dot.atual{background:var(--brand);}
.assistente-conteudo{padding:22px;}
.assistente-titulo{font-family:'Manrope';font-size:18px;font-weight:700;margin-bottom:4px;}
.assistente-sub{font-size:12.5px;color:var(--ink-soft);margin-bottom:18px;}
.assistente-rodape{display:flex;justify-content:space-between;gap:10px;padding:16px 22px;border-top:1px solid var(--line);}
/* ===== Empresa Ativa (cabeçalho contextual) ===== */
.empresa-ativa-bar{background:linear-gradient(135deg,var(--brand),var(--brand-dark));border-radius:var(--radius);padding:18px 22px;margin-bottom:18px;color:var(--panel,#fff);}
.empresa-ativa-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.empresa-ativa-nome{font-family:'Manrope';font-size:19px;font-weight:700;}
.empresa-ativa-cnpj{font-family:'IBM Plex Mono';font-size:11.5px;opacity:.8;margin-top:2px;}
.empresa-ativa-kpis{display:flex;gap:22px;flex-wrap:wrap;margin-top:10px;}
.empresa-ativa-kpi{font-size:12px;opacity:.9;}
.empresa-ativa-kpi b{display:block;font-family:'Manrope';font-size:17px;font-weight:700;}
.empresa-ativa-status{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.status-pill{display:inline-flex;align-items:center;gap:5px;background:rgba(255,255,255,.14);border-radius:20px;padding:4px 11px;font-size:11.5px;cursor:pointer;transition:.15s;}
.status-pill:hover{background:rgba(255,255,255,.26);}
.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.status-dot.ok{background:#4ADE80;}
.status-dot.atencao{background:var(--accent);}
.status-dot.critico{background:#FB7185;}
.empresa-ativa-acoes{display:flex;gap:8px;flex-wrap:wrap;}
.empresa-ativa-acoes .btn{background:rgba(255,255,255,.14);color:var(--panel,#fff);border-color:transparent;}
.empresa-ativa-acoes .btn:hover{background:rgba(255,255,255,.26);}
/* ===== Central de Comandos ===== */
.comando-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;font-size:13.5px;}
.comando-item:hover, .comando-item.selecionado{background:var(--brand-light);}
.comando-item .icone{width:22px;text-align:center;flex-shrink:0;}
.comando-item .sub{font-size:11px;color:var(--ink-soft);}
.comando-grupo-label{font-family:'IBM Plex Mono';font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);padding:10px 12px 4px;}
/* ===== Painel Financeiro Global ===== */
.pfg-filtros{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:18px;}
.pfg-filtros .field{margin-bottom:0;min-width:160px;}
.pfg-secao{margin-bottom:22px;}
.pfg-secao-titulo{display:flex;align-items:center;gap:8px;font-family:'Manrope';font-size:16px;font-weight:700;margin-bottom:12px;}
.pfg-secao-titulo .icone-secao{width:32px;height:32px;border-radius:9px;background:var(--brand-light);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.pfg-mini-status{display:flex;gap:10px;flex-wrap:wrap;}
.pfg-mini-status-item{flex:1;min-width:140px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;text-align:center;}
.pfg-mini-status-item .num{font-family:'Manrope';font-size:22px;font-weight:700;}
.pfg-mini-status-item .label{font-size:11px;color:var(--ink-soft);margin-top:2px;}
.cal-financeiro-grade{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.cal-financeiro-diasemana{font-family:'IBM Plex Mono';font-size:10px;text-transform:uppercase;color:var(--ink-faint);text-align:center;padding:4px 0;}
.cal-financeiro-dia{min-height:64px;border:1px solid var(--line);border-radius:8px;padding:5px;cursor:pointer;transition:.12s;background:var(--panel);}
.cal-financeiro-dia:hover{border-color:var(--brand);}
.cal-financeiro-dia.selecionado{border-color:var(--brand);background:var(--brand-light);}
.cal-financeiro-dia.vazio{visibility:hidden;}
.cal-financeiro-dia .num{font-family:'Manrope';font-size:13px;font-weight:600;}
.cal-financeiro-dia .badges{display:flex;flex-wrap:wrap;gap:2px;margin-top:4px;}
.cal-financeiro-dia .badge{font-size:9px;padding:1px 4px;border-radius:5px;color:var(--panel,#fff);}
