/* ===================================================================
   style.css — administrador (autocontido).
   Reorganizado: removidos ~80 seletores herdados de outras páginas
   (sidebar, hero de dashboard, calendário, onboarding, tela de login,
   editor do supervisor) que não são usados por este HTML/JS. Ver
   resumo da limpeza na mensagem que acompanha este arquivo.
   =================================================================== */

:root{
  /* Aliases pros tokens de brand.css (carregado antes deste arquivo) —
     mesmo padrão do admin/style.css. --bg-2/--panel/--panel-2 ficam
     estáticos claros (nunca escurecem no dark do SO): o cabeçalho usa
     var(--header-bg) direto, não passa por --bg-2. */
  --bg:var(--page-bg); --bg-2:var(--surface-bg); --panel:var(--surface-bg); --panel-2:var(--surface-bg);
  --line:var(--border-subtle); --line-soft:var(--border-subtle);
  --ink:var(--text-primary); --ink-dim:var(--text-secondary); --ink-faint:var(--text-secondary);
  --signal:var(--estado-sucesso-fg); --signal-dim:var(--estado-sucesso-fg);
  --amber:var(--estado-aviso-fg); --alert:var(--estado-erro-fg); --sky:var(--link); --violet:var(--estado-esclarecer-fg);
  --paper:var(--brand-paper);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{font-family:var(--fonte-corpo);background:var(--bg);color:var(--ink);line-height:1.5;overflow-x:hidden;}
.mono{font-family:'SF Mono','Consolas','Roboto Mono',monospace;}
a{color:var(--link);}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;}

/* ===== Cabeçalho da página (logo + usuário + sair) =====
   Fundo/texto usam --header-* direto (não --bg-2/--ink) porque
   invertem no dark do SO — ver media query em brand.css. */
.page-topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 28px;border-bottom:1px solid var(--border-subtle);background:var(--header-bg);color:var(--header-text);}
.page-topbar-user{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--header-text-secondary);}
.brand{display:flex;align-items:center;gap:14px;}
.brand-plate{display:inline-flex;background:var(--brand-paper);border-radius:8px;padding:6px 10px;line-height:0;}
.brand .lockup{width:min(340px,52vw);height:auto;display:block;}
.brand .nm{font-family:var(--fonte-marca);font-size:20px;font-weight:600;letter-spacing:.02em;}
.brand .sub{font-size:10px;color:var(--header-text-secondary);letter-spacing:.16em;text-transform:uppercase;margin-top:1px;}

/* Tela estreita: mesma lógica do admin — largura fixa segura pro
   wordmark não cair abaixo de 20px (ver comentário completo em
   admin/style.css, mesma medição via getBBox()). */
@media (width <= 640px){
  .page-topbar{padding:10px 12px;flex-wrap:wrap;row-gap:8px;}
  .brand{flex-direction:column;align-items:flex-start;gap:4px;}
  .brand-plate{padding:4px 6px;}
  .brand .lockup{width:min(280px,100%);}
  .painel-user{font-size:12px;gap:10px;}
}

/* ===== Botões ===== */
.btn{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;padding:10px 17px;border-radius:9px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);cursor:pointer;transition:all .15s;text-decoration:none;font-family:inherit;}
.btn:hover{border-color:var(--sky);}
.btn.ghost{background:transparent;}
/* Botão "Sair" mora dentro do próprio .page-topbar (diferente do admin,
   onde fica fora) — precisa ler as cores do cabeçalho, que invertem no
   dark do SO, senão o texto escuro do botão some sobre o fundo ink. */
.page-topbar .btn.ghost{color:var(--header-text);border-color:var(--header-text-secondary);}
.page-topbar .btn.ghost:hover{border-color:var(--header-text);}
.btn.btn-sm{padding:6px 12px;font-size:11.5px;}
.card-h .btn.btn-sm{margin-left:auto;}

/* ===== Callout ===== */
.callout{background:linear-gradient(120deg,rgba(74,163,224,.08),rgba(139,127,232,.06));border:1px solid var(--line);border-left:3px solid var(--sky);border-radius:10px;padding:15px 18px;font-size:13px;color:var(--ink-dim);margin-bottom:18px;}
.callout b{color:var(--ink);}

/* ===== Grid / Cards ===== */
.grid{display:grid;gap:16px;}
.g4{grid-template-columns:repeat(4,1fr);}
.g3{grid-template-columns:repeat(3,1fr);}
.g2{grid-template-columns:repeat(2,1fr);}
@media (width <= 1024px){.g4{grid-template-columns:repeat(2,1fr);}}
@media (width <= 640px){.g4,.g3,.g2{grid-template-columns:1fr;}}

.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.card-h .t{font-size:14px;font-weight:600;color:var(--ink);}
.card-h .lk{font-size:12px;color:var(--sky);cursor:pointer;font-weight:500;}
.section-gap{margin-top:16px;}
.align-top{align-items:start;}

/* ===== Lista de linhas (usuários ativos, documentos, radar de risco) ===== */
.rows{display:flex;flex-direction:column;}
.row{display:flex;align-items:center;gap:14px;padding:13px 4px;border-bottom:1px solid var(--line-soft);}
.row:last-child{border-bottom:0;}
.row .rdot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.row .rmain{flex:1;min-width:0;}
.row .rtitle{font-size:13.5px;font-weight:550;color:var(--ink);}
.row .rsub{font-size:11.5px;color:var(--ink-faint);margin-top:2px;}
.row .rtag{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap;}
.tag-ok{background:var(--estado-sucesso-bg);color:var(--estado-sucesso-fg);}
.tag-warn{background:var(--estado-aviso-bg);color:var(--estado-aviso-fg);}
.tag-crit{background:var(--estado-erro-bg);color:var(--estado-erro-fg);}
.tag-neutral{background:var(--panel-2);color:var(--ink-dim);}
.rdot-ok{background:var(--signal);}
.rdot-warn{background:var(--amber);}

.demo-flag{position:fixed;bottom:16px;right:16px;z-index:100;font-size:11px;color:var(--ink-faint);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:6px 14px;letter-spacing:.04em;}

/* ===== Hub: barra de navegação horizontal (categorias) ===== */
.hub-navbar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--bg-2);border-bottom:1px solid var(--line);padding:0 24px;position:sticky;top:0;z-index:20;overflow-x:auto;}
.hub-navbar-items{display:flex;align-items:stretch;gap:4px;overflow-x:auto;}
.hn-item{display:flex;align-items:center;white-space:nowrap;padding:16px 14px;font-size:13px;font-weight:600;color:var(--ink-dim);cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;}
.hn-item:hover{color:var(--ink);}
.hn-item.active{color:var(--sky);border-bottom-color:var(--sky);}
.hub-navbar-limpar{flex-shrink:0;}
.hub-main-full{padding:22px 28px 60px;min-width:0;}

/* ===== Faixa de cabeçalho da categoria ===== */
.categoria-header{display:flex;align-items:center;justify-content:space-between;background:var(--panel-2);border:1px solid var(--line);border-radius:14px;padding:18px 26px;margin-bottom:20px;gap:20px;}
.categoria-header .ch-brand{display:flex;align-items:center;gap:12px;flex-shrink:0;}
.categoria-header .ch-nome{font-size:15px;font-weight:800;}
.categoria-header .ch-sub{font-size:10px;color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase;}
.categoria-header .ch-titulo{font-size:24px;font-weight:800;flex:1;text-align:center;}
.categoria-header .ch-icon{width:48px;height:48px;border-radius:12px;background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
@media (width <= 1024px){.categoria-header{flex-wrap:wrap;}.categoria-header .ch-titulo{text-align:left;width:100%;order:3;}}

/* ===== Sub-abas (Resumo / Base / Vigências / Cláusulas / Radar / Contratos) ===== */
.subtabs{display:flex;gap:6px;margin-bottom:20px;border-bottom:1px solid var(--line);padding-bottom:0;}
.subtab{padding:10px 16px;font-size:13px;font-weight:600;color:var(--ink-faint);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;}
.subtab:hover{color:var(--ink-dim);}
.subtab.on{color:var(--sky);border-bottom-color:var(--sky);}

/* ===== Barra de filtros (Contratos & Anatel) ===== */
.filtros-bar{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:20px;}
.filtros-bar .fl{display:flex;flex-direction:column;gap:6px;}
.filtros-bar .fl label{font-size:11px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em;}
.filtros-bar select{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:var(--ink);font-size:12.5px;font-family:inherit;}
@media (width <= 1024px){.filtros-bar{grid-template-columns:repeat(3,1fr);}}
@media (width <= 640px){.filtros-bar{grid-template-columns:repeat(2,1fr);}}

/* ===== KPIs de contratos ===== */
.kpi-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;}
.kpi-box .kb-l{font-size:12px;color:var(--ink-faint);font-weight:600;margin-bottom:8px;}
.kpi-box .kb-v{font-size:26px;font-weight:800;}
.kpi-box.kb-global{background:rgba(139,127,232,.12);border-color:rgba(139,127,232,.3);}
.kpi-box.kb-emitido{background:rgba(74,163,224,.12);border-color:rgba(74,163,224,.3);}
.kpi-box.kb-saldo{background:rgba(47,217,138,.1);border-color:rgba(47,217,138,.28);}

/* ===== Global x Limite de Aprovação ===== */
.limite-track{position:relative;height:120px;background:var(--bg-2);border-radius:10px;margin-top:10px;display:flex;align-items:flex-end;padding:0 30px;gap:24px;}
.limite-barra{width:64px;border-radius:6px 6px 0 0;position:relative;display:flex;align-items:flex-start;justify-content:center;padding-top:6px;font-size:11px;font-weight:800;color:#06121F;}
.limite-marcador{position:absolute;left:0;right:0;border-top:2px dashed var(--alert);}
.limite-marcador .lm-label{position:absolute;right:8px;top:-18px;font-size:10.5px;font-weight:700;color:var(--alert);background:var(--bg-2);padding:0 4px;}
.limite-legenda{display:flex;gap:18px;margin-top:10px;font-size:11.5px;color:var(--ink-faint);}
.limite-legenda span{display:inline-flex;align-items:center;gap:6px;}
.limite-legenda .ll-dot{width:9px;height:9px;border-radius:2px;}

/* ===== Próximos vencimentos (mini-lista) ===== */
.venc-mini-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line-soft);}
.venc-mini-row:first-child{border-top:none;}
.venc-mini-row .vm-nome{font-size:12.5px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.venc-mini-row .vm-escopo{font-size:11px;color:var(--ink-faint);}

/* ===== Anel de proporção Ativos x Inativos ===== */
.prop-card{display:flex;align-items:center;justify-content:center;gap:60px;flex-wrap:wrap;padding:10px 0;}
.prop-block{display:flex;align-items:center;gap:16px;}
.prop-block .pb-legend{display:flex;flex-direction:column;gap:3px;}
.prop-block .pb-txt{font-size:12px;color:var(--ink-faint);}
.prop-block .pb-v{font-size:16px;font-weight:800;}

/* ===== Comparativo de barras (Emitido x Global) ===== */
.hbar-row{margin-bottom:14px;}
.hbar-row .hb-label{font-size:12.5px;color:var(--ink-dim);margin-bottom:5px;}
.hbar-track{position:relative;height:20px;background:var(--bg-2);border-radius:6px;overflow:hidden;}
.hbar-fill{position:absolute;top:0;left:0;height:100%;border-radius:6px;display:flex;align-items:center;padding-left:8px;font-size:10.5px;font-weight:700;color:#06121F;white-space:nowrap;}
.hbar-fill.hb-emitido{background:var(--sky);}
.hbar-fill.hb-global{background:var(--panel-2);color:var(--ink-dim);z-index:-1;}

/* ===== Timeline de vencimento (Gestão de Vigências) =====
   Gradiente de urgência: vermelho → amarelo → verde. As mesmas 7 cores
   se repetem em .venc-cel (célula da tabela) — mantenha os dois em
   sincronia se ajustar algum tom. */
.venc-timeline{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin:18px 0 20px;}
.venc-bucket{border-radius:10px;padding:14px 10px;text-align:center;cursor:pointer;border:2px solid transparent;transition:all .15s;}
.venc-bucket .vb-l{font-size:11px;font-weight:700;margin-bottom:6px;opacity:.85;}
.venc-bucket .vb-v{font-size:24px;font-weight:800;}
.venc-bucket.on{border-color:#fff;}
.venc-bucket.vb-1,.venc-cel.vb-1{background:#B91C1C;color:#fff;}
.venc-bucket.vb-2,.venc-cel.vb-2{background:#EF4444;color:#fff;}
.venc-bucket.vb-3,.venc-cel.vb-3{background:#D97706;color:#fff;}
.venc-bucket.vb-4,.venc-cel.vb-4{background:#F59E0B;color:#1A1200;}
.venc-bucket.vb-5,.venc-cel.vb-5{background:#FCD34D;color:#3F2D05;}
.venc-bucket.vb-6,.venc-cel.vb-6{background:#059669;color:#fff;}
.venc-bucket.vb-7,.venc-cel.vb-7{background:#6EE7B7;color:#03301F;}
@media (width <= 1024px){.venc-timeline{grid-template-columns:repeat(4,1fr);}}
@media (width <= 640px){.venc-timeline{grid-template-columns:repeat(2,1fr);}}

/* ===== Tabela ===== */
.tabela-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;}
table.tb{width:100%;border-collapse:collapse;font-size:12.5px;white-space:nowrap;}
table.tb th{background:var(--bg-2);color:var(--ink-faint);text-align:left;padding:10px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0;}
table.tb th.th-ordenavel{cursor:pointer;user-select:none;transition:color .15s;}
table.tb th.th-ordenavel:hover{color:var(--sky);}
table.tb td{padding:9px 12px;border-top:1px solid var(--line-soft);}
table.tb tr:hover td{background:rgba(30,42,50,.035);}
.pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;}
.pill.p-ativo{background:var(--estado-sucesso-bg);color:var(--estado-sucesso-fg);}
.pill.p-inativo{background:var(--estado-erro-bg);color:var(--estado-erro-fg);}
.pill.sev-critico{background:var(--estado-erro-bg);color:var(--estado-erro-fg);}
.pill.sev-moderado{background:var(--estado-aviso-bg);color:var(--estado-aviso-fg);}
.pill.sev-informativo{background:var(--estado-info-bg);color:var(--estado-info-fg);}
.pill.sev-resolvido{background:var(--panel-2);color:var(--ink-faint);}
.venc-cel{display:inline-block;min-width:44px;text-align:center;padding:3px 8px;border-radius:6px;font-weight:700;}

/* ===== Achados (observações do consultor por módulo) ===== */
.achados-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.achados-modulo-cab{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-faint);margin-top:12px;}
.achados-modulo-cab:first-child{margin-top:0;}
.achado-item{border:1px solid var(--line);border-left:3px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--bg-2);}
.achado-item.achado-critico{border-left-color:var(--alert);}
.achado-item.achado-moderado{border-left-color:var(--amber);}
.achado-item.achado-informativo{border-left-color:var(--sky);}
.achado-item.achado-resolvido{border-left-color:var(--line);opacity:.7;}
.achado-cab{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
.achado-cab strong{font-size:13.5px;color:var(--ink);}
.achado-desc{margin:0;font-size:13px;color:var(--ink-dim);white-space:pre-wrap;}

/* ===== Busca (Obrigações Regulatórias) ===== */
.lex-busca input{width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:9px;padding:11px 14px;color:var(--ink);font-size:13.5px;font-family:inherit;}
.lex-busca input:focus{outline:none;border-color:var(--sky);}
.lex-contador{font-size:12px;color:var(--ink-faint);}

/* ===== Placeholder das categorias ainda não construídas ===== */
.categoria-vazia{border:1.5px dashed var(--line);border-radius:14px;padding:48px 24px;text-align:center;color:var(--ink-faint);}
.categoria-vazia .cv-t{font-size:15px;font-weight:700;color:var(--ink-dim);margin-bottom:6px;}

/* ===== Cláusulas extraídas (leitor de contrato) ===== */
.cr-picker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;}
.cr-picker button{background:var(--bg-2);border:1px solid var(--line);border-radius:9px;padding:9px 14px;color:var(--ink-dim);font-size:12.5px;font-weight:600;cursor:pointer;text-align:left;font-family:inherit;transition:all .15s;}
.cr-picker button .csub{display:block;font-size:10.5px;font-weight:500;color:var(--ink-faint);margin-top:2px;}
.cr-picker button:hover{border-color:var(--sky);color:var(--ink);}
.cr-picker button.active{border-color:var(--sky);background:rgba(74,163,224,.1);color:var(--ink);}
.cr-body{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:22px;}
.cr-body .cdt{font-size:10.5px;color:var(--ink-faint);letter-spacing:.1em;margin-bottom:4px;}
.cr-body .cdn{font-size:14px;font-weight:700;margin-bottom:14px;}
.cr-text{font-size:13.5px;line-height:1.9;color:var(--ink-dim);}
.clausex{border-bottom:2px solid;padding:1px 2px;border-radius:3px;cursor:default;}
.clausex.cx-reajuste{border-color:var(--amber);background:rgba(245,184,65,.08);}
.clausex.cx-risco{border-color:var(--alert);background:rgba(242,109,91,.08);}
.clausex.cx-ok{border-color:var(--signal);background:rgba(47,217,138,.08);}
.cr-legend{display:flex;gap:18px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-faint);flex-wrap:wrap;}
.cr-legend span{display:inline-flex;align-items:center;gap:6px;}
.cr-legend .lsw{width:10px;height:10px;border-radius:2px;flex-shrink:0;}
.achados-lista{margin-top:16px;padding-top:14px;border-top:1px solid var(--line-soft);}
.achado-item{display:flex;gap:10px;padding:9px 0;font-size:12.5px;}
.achado-item .ai-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex-shrink:0;}
.achado-item .ai-k{font-weight:700;color:var(--ink);display:block;margin-bottom:2px;}
.achado-item .ai-txt{color:var(--ink-dim);}

/* ===== Documentos / contratos do cliente ===== */
.doc{display:flex;align-items:center;gap:13px;padding:12px 4px;border-bottom:1px solid var(--line-soft);}
.doc:last-child{border-bottom:none;}
.doc .dic{width:34px;height:34px;border-radius:9px;background:var(--bg-2);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.doc .dmain{flex:1;min-width:0;}
.doc .dt{font-size:13px;font-weight:600;}
.doc .ds{font-size:11px;color:var(--ink-faint);margin-top:2px;}

/* ===== Biblioteca regulatória ===== */
.lib-tile{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--bg-2);display:block;text-decoration:none;color:inherit;transition:all .15s;}
.lib-tile .lt-t{font-size:13.5px;font-weight:700;margin-bottom:4px;color:var(--ink);}
.lib-tile .lt-s{font-size:11.5px;color:var(--ink-faint);}
.lib-tile .lt-badge{display:inline-block;margin-top:10px;font-size:10.5px;padding:3px 9px;border-radius:12px;background:var(--panel-2);color:var(--ink-faint);}
.lib-tile-pronta{border-color:var(--sky);cursor:pointer;}
.lib-tile-pronta:hover{background:var(--panel-2);border-color:var(--sky);transform:translateY(-1px);}
.lt-badge-pronta{background:rgba(74,163,224,.15);color:var(--sky);font-weight:700;}
.lib-tile-construcao{cursor:pointer;}
.lib-tile-construcao:hover{background:var(--panel-2);border-color:var(--amber);transform:translateY(-1px);}
.lt-badge-construcao{background:rgba(245,184,65,.13);color:var(--amber);font-weight:700;}

/* ===== Responsivo (ajustes finos gerais) ===== */
@media (width <= 640px){
  .categoria-header{padding:14px 16px;}
  .categoria-header .ch-titulo{font-size:19px;}
  .hub-navbar-items{gap:0;}
  .hn-item{padding:13px 10px;font-size:12px;}
  .hub-main-full{padding:16px 14px 60px;}
  .prop-card{gap:24px;}
  table.tb{font-size:11.5px;}
}

/* ===================================================================
   Dashboard de leads — classes que NÃO existem na página Administrador
   original (porta de senha, status de contato, nota, linha de detalhe).
   Sem cor nova: só --sky / --amber / --signal / --alert e os tokens de
   superfície já definidos acima. O JS (app.js) não foi tocado — estes
   seletores casam com os elementos/classes que ele já gera.
   =================================================================== */

/* --- célula numérica (JS: td(valor, "num")) --- */
table.tb td.num,table.tb th.num{text-align:right;font-variant-numeric:tabular-nums;}

/* --- texto secundário: telefone (JS: div.muted) --- */
.muted{color:var(--ink-faint);font-size:11px;}

/* --- select de status (JS troca a className p/ "status-<valor>") --- */
table.tb select{background:var(--bg-2);border:1px solid var(--line);border-left-width:3px;border-radius:7px;padding:5px 8px;color:var(--ink);font-size:12px;font-family:inherit;}
table.tb select:focus{outline:none;border-color:var(--sky);}
select.status-novo{border-left-color:var(--sky);color:var(--sky);}
select.status-contatado{border-left-color:var(--amber);color:var(--amber);}
select.status-fechado{border-left-color:var(--signal);color:var(--signal);}
select.status-descartado{border-left-color:var(--alert);color:var(--alert);}

/* --- input de nota (JS: input.nota) --- */
.nota{background:var(--bg-2);border:1px solid var(--line);border-radius:7px;padding:5px 8px;color:var(--ink);font-size:12px;font-family:inherit;width:150px;}
.nota:focus{outline:none;border-color:var(--sky);}

/* --- feedback ao lado do campo (JS: span.salvo / span.erro) --- */
.salvo{color:var(--signal);font-size:11px;margin-left:6px;}
.erro{color:var(--alert);font-size:11px;margin-left:6px;}

/* --- botão "ver obrigações" (JS: button.linkbtn) --- */
.linkbtn{background:none;border:0;color:var(--sky);cursor:pointer;padding:0;font:inherit;font-size:12px;}
.linkbtn:hover{text-decoration:underline;}
.linkbtn:disabled{opacity:.5;cursor:default;text-decoration:none;}

/* --- linha de detalhe: obrigações do lead (JS: tr.detalhe) --- */
table.tb tr.detalhe td{background:var(--bg-2);white-space:normal;}
table.tb tr.detalhe td>div{font-weight:600;color:var(--ink);font-size:12.5px;margin-bottom:6px;}
table.tb tr.detalhe ul{margin:0 0 4px;padding-left:20px;}
table.tb tr.detalhe li{margin:3px 0;font-size:12.5px;color:var(--ink-dim);}
table.tb tr.detalhe li strong{color:var(--ink);font-weight:600;}

/* --- feedback ao lado do botão "baixar" (JS: span.dl-msg) --- */
.dl-msg{font-size:11px;margin-left:6px;color:var(--ink-faint);}
.dl-msg.erro{color:var(--alert);}

/* --- conformidade: resumo + lista de obrigações com botões de status --- */
/* a linha de detalhe herda a largura da tabela (que rola na horizontal);
   sticky-left + cap na viewport mantém tudo visível sem rolar até os botões. */
.conf-resumo,.conf-lista{position:sticky;left:0;max-width:min(900px,92vw);}
.conf-resumo{font-size:12px;color:var(--ink-dim);margin-bottom:10px;}
.conf-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.conf-lista li{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  padding:10px 0;border-bottom:1px solid var(--line-soft);}
@media (width <= 720px){
  .conf-lista li{flex-direction:column;align-items:stretch;gap:6px;}
}
.conf-lista li:last-child{border-bottom:0;}
.conf-txt{flex:1;min-width:0;font-size:12.5px;color:var(--ink-dim);line-height:1.5;}
.conf-txt strong{color:var(--ink);font-weight:600;}
.conf-sub{font-size:11px;color:var(--ink-faint);margin-top:2px;}
.ans-group{display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap;align-items:center;}
.ans-btn{border:1px solid var(--line);background:var(--panel-2);color:var(--ink-faint);
  font-size:10.5px;font-weight:600;padding:5px 9px;border-radius:6px;cursor:pointer;
  font-family:inherit;white-space:nowrap;}
.ans-btn:hover{color:var(--ink);}
.ans-btn.on-sim{background:rgba(47,217,138,.18);border-color:var(--signal);color:var(--signal);}
.ans-btn.on-nao{background:rgba(242,109,91,.18);border-color:var(--alert);color:var(--alert);}
.ans-btn.on-impl{background:rgba(245,184,65,.18);border-color:var(--amber);color:var(--amber);}
.ans-btn.on-na{background:var(--panel);border-color:var(--ink-faint);color:var(--ink-dim);}

/* ===================================================================
   PAINEL DO CLIENTE — classes que só esta página usa (login/troca de
   senha, anel de índice, calendário, barras por categoria). Tudo com
   os tokens já definidos no :root — nenhuma cor literal nova. Larguras
   e arcos dinâmicos vêm do JS via el.style.* / atributo SVG (a CSP
   `style-src 'self'` proíbe <style> e style="").
   =================================================================== */

/* `hidden` tem que vencer os `display:flex/grid` das classes abaixo
   (.painel-user etc.) — a regra de UA para [hidden] perde em especificidade. */
[hidden]{display:none !important;}

/* --- login / troca de senha (telas 1 e 2) --- */
.painel-auth{max-width:400px;margin:9vh auto 0;}
.painel-auth .card-h{margin-bottom:14px;}
.painel-auth-hint{font-size:13px;color:var(--ink-dim);margin-bottom:16px;line-height:1.55;}
.painel-campo{display:block;width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:9px;padding:11px 14px;color:var(--ink);font-size:13.5px;font-family:inherit;margin-bottom:12px;}
.painel-campo:focus{outline:none;border-color:var(--sky);}
.painel-auth .btn{width:100%;justify-content:center;margin-top:2px;}
.painel-auth-erro{color:var(--alert);font-size:12.5px;margin-top:11px;min-height:18px;}

/* --- topbar: empresa + sair --- */
.painel-user{display:flex;align-items:center;gap:14px;font-size:13px;color:var(--header-text-secondary);}
.painel-user .pu-empresa{font-weight:600;color:var(--header-text);}

/* --- seção genérica do dashboard --- */
.painel-secao{margin-bottom:18px;}
.painel-secao>.ps-titulo{font-size:12px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;}
.painel-vazio{font-size:13px;color:var(--ink-faint);padding:6px 2px;}

/* --- anel de índice de conformidade (hero) --- */
.anel-wrap{display:flex;justify-content:center;padding:8px 0 4px;}
.anel{position:relative;width:180px;height:180px;}
.anel svg{width:100%;height:100%;transform:rotate(-90deg);}
.anel-track{fill:none;stroke:var(--line);stroke-width:12;}
.anel-prog{fill:none;stroke:var(--signal);stroke-width:12;stroke-linecap:round;transition:stroke-dashoffset .5s ease;}
.anel-centro{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 18px;}
.anel-pct{font-size:38px;font-weight:800;color:var(--ink);line-height:1;}
.anel-cap{font-size:11.5px;color:var(--ink-faint);margin-top:7px;}
.anel-vazio{font-size:12.5px;color:var(--ink-dim);line-height:1.5;}

/* --- KPIs: reaproveita .kpi-box; falta a variante pendente --- */
.kpi-box.kb-pendente{background:var(--estado-aviso-bg);border-color:var(--estado-aviso-fg);}
/* valor "suave" (ex.: "Aguardando avaliação" no card Pendentes sem respostas) */
.kpi-box .kb-v.kb-v-suave{font-size:14px;font-weight:600;color:var(--ink-faint);}
.painel-na{font-size:12px;color:var(--ink-faint);margin-top:10px;padding-left:2px;}

/* --- calendário do mês --- */
.cal-head{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:10px;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cal-dow{font-size:10px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;text-align:center;padding:4px 0;letter-spacing:.03em;}
.cal-cel{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12.5px;color:var(--ink-dim);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:8px;}
.cal-cel.vazio{background:transparent;border-color:transparent;}
button.cal-cel{cursor:pointer;font-family:inherit;font-weight:700;color:var(--estado-aviso-fg);border-color:var(--estado-aviso-fg);background:var(--estado-aviso-bg);}
button.cal-cel:hover{filter:brightness(0.96);}
button.cal-cel.aberto{border-color:var(--estado-info-fg);color:var(--estado-info-fg);background:var(--estado-info-bg);}
.cal-detalhe{margin-top:12px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:13px 16px;}
.cal-detalhe .cd-dia{font-size:12px;font-weight:700;color:var(--ink);margin-bottom:6px;}
.cal-detalhe ul{list-style:none;margin:0;padding:0;}
.cal-detalhe li{font-size:12.5px;color:var(--ink-dim);padding:3px 0;}

/* --- barras por categoria --- */
.barra-row{margin-bottom:13px;}
.barra-row:last-child{margin-bottom:0;}
.barra-label{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-dim);margin-bottom:5px;}
.barra-label .bl-nums{color:var(--ink-faint);font-variant-numeric:tabular-nums;}
.barra-track{display:flex;height:16px;background:var(--bg-2);border-radius:5px;overflow:hidden;}
.barra-seg{height:100%;}
.barra-seg.seg-conforme{background:var(--signal);}
.barra-seg.seg-pendente{background:var(--amber);}
.barra-legenda{display:flex;gap:18px;margin-top:14px;font-size:11.5px;color:var(--ink-faint);}
.barra-legenda span{display:inline-flex;align-items:center;gap:6px;}
.barra-legenda .bg-sw{width:10px;height:10px;border-radius:2px;flex-shrink:0;}
.barra-legenda .sw-conforme{background:var(--signal);}
.barra-legenda .sw-pendente{background:var(--amber);}

/* --- lista de obrigações (read-only): reusa .conf-lista/.conf-txt/.conf-sub --- */
.obr-lista{list-style:none;margin:0;padding:0;}
.obr-lista li{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line-soft);}
.obr-lista li:last-child{border-bottom:0;}
.obr-txt{flex:1;min-width:0;font-size:13px;color:var(--ink-dim);line-height:1.5;}
.obr-txt strong{color:var(--ink);font-weight:600;}
.obr-sub{font-size:11px;color:var(--ink-faint);margin-top:3px;}
/* .rtag base é escopado em `.row .rtag`; aqui a lista não é `.row`, então
   repetimos a forma (as cores vêm de .tag-ok/.tag-warn/.tag-crit/.tag-neutral). */
.obr-lista .rtag{flex-shrink:0;font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap;}

/* --- feedback do download (reusa .dl-msg do bloco admin) --- */

/* --- Fase F: remover documento (botão "perigo") + upload autenticado --- */
.linkbtn.perigo{color:var(--alert);}
.doc-upload{margin-top:16px;padding-top:16px;border-top:1px solid var(--line-soft);}
.doc-upload-hint{font-size:11.5px;color:var(--ink-faint);margin:0 0 10px;}
.doc-upload input[type="file"]{display:block;width:100%;font-size:12.5px;color:var(--ink-dim);margin-bottom:10px;}
.doc-rejeitados{list-style:none;margin:0 0 10px;padding:0;font-size:11.5px;color:var(--alert);}
.doc-rejeitados li{margin:2px 0;}
.doc-upload-acoes{display:flex;align-items:center;gap:10px;}
.doc-upload-acoes .btn{padding:8px 16px;font-size:12.5px;}

@media (width <= 640px){
  .painel-campo,.btn,.linkbtn,.doc-upload input[type="file"]{min-height:44px;}
  .linkbtn{display:inline-flex;align-items:center;}
  .cal-cel{min-height:44px;aspect-ratio:auto;}
  .anel{width:150px;height:150px;}
  .anel-pct{font-size:32px;}
  .cal-grid{gap:4px;}
  .obr-lista li{flex-direction:column;align-items:stretch;gap:6px;}
}
