:root{
  --bg:#f8fafc;
  --surface:#ffffff;
  --surface-raised:#ffffff;
  --border:#e2e8f0;
  --border-hover:#cbd5e1;
  --text-900:#0f172a;
  --text-700:#334155;
  --text-500:#64748b;
  --text-400:#94a3b8;
  --teal-600:#0d9488;
  --teal-700:#0b7d72;
  --teal-500:#14b8a6;
  --teal-100:#ccfbf1;
  --teal-50:#f0fdfa;
  --red-500:#ef4444;
  --red-100:#fee2e2;
  --red-50:#fef2f2;
  --green-600:#16a34a;
  --green-100:#dcfce7;
  --amber-500:#f59e0b;
  --amber-100:#fef3c7;
  --blue-600:#2563eb;
  --blue-100:#dbeafe;
  --blue-50:#eff6ff;
  --purple-600:#7c3aed;
  --purple-100:#ede9fe;
  --radius:14px;
  --radius-sm:10px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.06);
  --shadow:0 4px 12px rgba(15,23,42,.08);
}

*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--text-700);
  font-family:'DM Sans',system-ui,sans-serif; line-height:1.55;
}
h1,h2,h3,h4{font-family:'Space Grotesk',system-ui,sans-serif; color:var(--text-900); margin:0 0 .4em; line-height:1.25}
a{color:inherit}
table{border-collapse:collapse}

.skip-link{
  position:absolute; left:-999px; top:0; background:var(--text-900); color:#fff;
  padding:.75rem 1.25rem; border-radius:0 0 8px 0; z-index:200; font-weight:600;
}
.skip-link:focus{left:0}

/* Shell */
.ds-shell{display:flex; min-height:100vh}
.ds-sidebar{
  width:240px; flex-shrink:0; background:var(--text-900); color:#fff;
  padding:24px 18px; display:flex; flex-direction:column; gap:24px;
}
.ds-logo-mark{width:32px; height:32px; border-radius:8px; background:#fff; display:flex; align-items:center; justify-content:center; flex-shrink:0}
.ds-logo{display:flex; align-items:center; gap:10px; text-decoration:none; color:#fff}
.ds-logo-name{font-family:'Space Grotesk'; font-weight:700; font-size:.95rem; display:block}
.ds-logo-sub{font-size:.68rem; color:#94a3b8; text-transform:uppercase; letter-spacing:.06em}
.ds-nav{list-style:none; margin:0; padding:0; display:grid; gap:2px}
.ds-nav a{
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:var(--radius-sm);
  color:#cbd5e1; text-decoration:none; font-size:.88rem; font-weight:500;
}
.ds-nav a:hover{background:rgba(255,255,255,.06); color:#fff}
.ds-nav a.active{background:var(--teal-700); color:#fff}
.nav-badge{
  display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px;
  padding:0 5px; border-radius:9px; background:var(--red-500); color:#fff;
  font-size:.68rem; font-weight:700; margin-left:6px;
}
.ds-nav-user{margin-top:auto; border-top:1px solid rgba(255,255,255,.12); padding-top:16px; font-size:.82rem; color:#94a3b8}
.ds-nav-user strong{display:block; color:#fff; font-size:.86rem; margin-bottom:2px}
.ds-nav-user a{color:#5eead4; text-decoration:none; font-size:.8rem}

.ds-content{flex:1; min-width:0}
.ds-section{padding:40px 48px}

/* Topbar mobile + toggle de menu */
.mobile-topbar{display:none}
.sidebar-backdrop{display:none}

.sidebar-toggle{
  width:40px; height:40px; border:0; background:transparent; border-radius:var(--radius-sm);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px;
  cursor:pointer; flex-shrink:0;
}
.sidebar-toggle:hover{background:rgba(0,0,0,.05)}
.sidebar-toggle span{width:20px; height:2px; background:var(--text-900); border-radius:2px; transition:transform .2s ease, opacity .2s ease}
.sidebar-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.sidebar-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.sidebar-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

@media (max-width:900px){
  .mobile-topbar{
    display:flex; align-items:center; gap:12px; padding:12px 16px;
    background:var(--text-900); color:#fff; position:sticky; top:0; z-index:120;
  }
  .mobile-topbar .sidebar-toggle span{background:#fff}
  .mobile-topbar-brand{font-family:'Space Grotesk'; font-weight:700; font-size:.95rem}

  .ds-shell{display:block}
  .ds-sidebar{
    position:fixed; top:0; left:0; bottom:0; z-index:150;
    transform:translateX(-100%); transition:transform .25s ease;
    box-shadow:2px 0 24px rgba(0,0,0,.25);
  }
  .ds-sidebar.is-open{transform:translateX(0)}

  .sidebar-backdrop.is-open{
    display:block; position:fixed; inset:0; background:rgba(15,23,42,.5); z-index:140;
  }

  .ds-section{padding:28px 20px}
}

@media (prefers-reduced-motion:reduce){
  .ds-sidebar{transition:none}
  .sidebar-toggle span{transition:none}
}

/* Hero de página */
.hero-ds{margin-bottom:28px}
.hero-breadcrumb-ds{font-size:.78rem; color:var(--text-500); margin-bottom:6px}
.hero-overline-ds{
  display:inline-block; font-size:.72rem; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--teal-600); margin-bottom:8px;
}
.hero-title-ds{font-size:1.5rem; margin:0 0 4px}
.hero-desc-ds{color:var(--text-500); font-size:.92rem; margin:0}
.hero-actions-ds{display:flex; gap:10px; margin-top:16px; flex-wrap:wrap}

/* Botões */
.btn-primary, .btn-secondary, .btn-ghost-ds, .btn-danger{
  display:inline-flex; align-items:center; gap:7px;
  font-family:'DM Sans'; font-weight:700; font-size:.86rem;
  padding:10px 18px; border-radius:var(--radius-sm);
  text-decoration:none; border:1px solid transparent; cursor:pointer;
}
.btn-primary{background:var(--teal-700); color:#fff}
.btn-primary:hover{background:#096b62}
.btn-secondary{background:#fff; color:var(--text-900); border-color:var(--border)}
.btn-secondary:hover{border-color:var(--border-hover); background:var(--teal-50)}
.btn-ghost-ds{background:transparent; color:var(--text-700); border-color:transparent}
.btn-danger{background:#fff; color:var(--red-500); border-color:var(--red-100)}
.btn-danger:hover{background:var(--red-50)}
.btn-sm{padding:7px 12px; font-size:.78rem}

/* Cards / KPIs */
.grid-kpi{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:16px; margin-bottom:28px}
.kpi-card{
  display:block; background:var(--surface-raised); border:1px solid var(--border); border-radius:var(--radius);
  padding:18px 20px; box-shadow:var(--shadow-sm); border-left:3px solid var(--kpi-color,var(--teal-600));
  text-decoration:none; color:inherit;
  transition:transform .2s ease, box-shadow .2s ease, border-left-width .2s ease;
}
.kpi-card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow);
  border-left-width:5px;
}
.kpi-label{font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--text-500)}
.kpi-value{
  font-family:'Space Grotesk'; font-size:1.7rem; font-weight:700; color:var(--text-900); margin-top:4px;
  transition:color .2s ease;
}
.kpi-card:hover .kpi-value{color:var(--kpi-color,var(--teal-600))}

/* Cores dos KPI cards — substitui style="--kpi-color:..." inline (CSP script-src/style-src) */
.kpi-teal{--kpi-color:#0d9488}
.kpi-blue{--kpi-color:#2563eb}
.kpi-purple{--kpi-color:#7c3aed}
.kpi-green{--kpi-color:#16a34a}
.kpi-red{--kpi-color:#ef4444}
.kpi-amber{--kpi-color:#f59e0b}

@media (prefers-reduced-motion: reduce){
  .kpi-card{transition:none}
  .kpi-card:hover{transform:none}
}

/* Utilitários que substituem estilos inline pontuais */
.mt-lg{margin-top:24px}
.mt-sm{margin-top:12px}
.mb-md{margin-bottom:16px}
/* Honeypot anti-bot em formulários públicos sem login (LGPD, contato) —
   mesma técnica do site institucional: fora da tela, nunca display:none
   (alguns leitores de tela ignoram display:none em heurísticas de bot,
   mas o padrão aqui é consistência com assets/legado-os.css .hp-field) */
.hp-field-ds{position:absolute; left:-9999px; top:-9999px}
.input-label-normal{font-weight:400; display:flex; align-items:center; gap:6px}

/* Paleta fechada para categorias configuráveis da Transparência — mesmos
   tokens de cor dos kpi-card/pill, expostos como classe (nunca hex livre
   via style inline, que o CSP do painel não permite). */
.cat-color-teal{--cat-color:#0d9488}
.cat-color-blue{--cat-color:#2563eb}
.cat-color-purple{--cat-color:#7c3aed}
.cat-color-green{--cat-color:#16a34a}
.cat-color-red{--cat-color:#ef4444}
.cat-color-amber{--cat-color:#f59e0b}
.cat-color-slate{--cat-color:#475569}
.cat-icon-preview{color:var(--cat-color)}
.text-md{font-size:1.2rem}
.text-lg{font-size:1.3rem}
.center-screen{display:flex; align-items:center; justify-content:center; min-height:100vh}
.brand-row{display:flex; align-items:center; gap:10px; margin-bottom:20px}
.brand-title{font-family:'Space Grotesk'; font-weight:700; font-size:1rem}
.brand-subtitle{font-size:.72rem; color:var(--text-500); text-transform:uppercase; letter-spacing:.06em}
.ds-logo-mark-dark{background:var(--text-900)}
.subtitle{color:var(--text-500); font-size:.88rem; margin-bottom:20px}
.btn-block{width:100%; justify-content:center}
.empty-state{padding:32px; text-align:center; color:var(--text-500)}
.detail-table{margin:-8px 0}
.detail-table td:first-child{width:160px; color:var(--text-500)}
.inline-form{display:inline}
.link-btn{text-decoration:underline}
.btn-text-inline{
  background:none; border:0; padding:0; margin:0; color:inherit; font:inherit;
  cursor:pointer; text-decoration:underline;
}
.form-divider-top{margin-top:20px; border-top:1px solid var(--border); padding-top:20px}

/* Formulários */
.form-panel{background:#fff; border:1px solid var(--border); border-radius:var(--radius); padding:28px; max-width:960px}
/* Painéis que guardam tabela/texto longo (não campos de formulário curtos)
   usam esse modificador pra ocupar a largura toda do conteúdo, em vez do
   limite de leitura confortável do .form-panel comum. */
.form-panel-full{max-width:none}
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.form-grid.full{grid-template-columns:1fr}
.input-label{display:block; font-size:.8rem; font-weight:600; color:var(--text-700); margin-bottom:6px}
.input-ds{
  width:100%; padding:10px 12px; border:1px solid var(--border); border-radius:var(--radius-sm);
  font-family:'DM Sans'; font-size:.9rem; color:var(--text-900); background:#fff;
}
.input-ds:focus{outline:none; border-color:var(--teal-500); box-shadow:0 0 0 3px rgba(20,184,166,.15)}
.input-hint{font-size:.76rem; color:var(--text-500); margin-top:4px}
.input-error{border-color:var(--red-500)}
.input-error-msg{font-size:.78rem; color:var(--red-500); margin-top:4px}
.form-field{margin-bottom:16px}
.form-actions{display:flex; gap:10px; margin-top:20px}

/* Alertas */
.alert-ds{padding:12px 16px; border-radius:var(--radius-sm); font-size:.86rem; margin-bottom:20px; border:1px solid transparent}
.alert-erro{background:var(--red-50); border-color:var(--red-100); color:#991b1b}
.alert-sucesso{background:var(--green-100); border-color:#bbf7d0; color:#166534}

/* Pills */
.pill{display:inline-flex; align-items:center; gap:5px; font-size:.74rem; font-weight:700; padding:4px 10px; border-radius:20px}
.pill-teal{background:var(--teal-100); color:#0b6d63}
.pill-purple{background:var(--purple-100); color:#5b21b6}
.pill-green{background:var(--green-100); color:#166534}
.pill-slate{background:#f1f5f9; color:#475569}
.pill-red{background:var(--red-100); color:#991b1b}
.pill-amber{background:var(--amber-100); color:#92400e}

/* Tabela */
.table-panel-ds{background:#fff; border:1px solid var(--border); border-radius:var(--radius); overflow:hidden}
.table-toolbar-ds{display:flex; align-items:center; justify-content:space-between; padding:16px 20px; border-bottom:1px solid var(--border); gap:12px; flex-wrap:wrap}
.table-title-ds{font-weight:700; color:var(--text-900); font-size:.94rem}
.table-panel-note{padding:0 20px 16px}
.table-panel-body{padding:20px}

/* Lista de dados de detalhamento (ex.: tela de detalhe de contratação do
   PNCP) — grid de pares rótulo/valor, 2 colunas no desktop, 1 no mobile. */
.dl-detalhe{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px 24px;
  margin:0;
}
.dl-detalhe > div{display:flex; flex-direction:column; gap:2px}
.dl-detalhe dt{font-size:.74rem; font-weight:700; color:var(--text-500); text-transform:uppercase; letter-spacing:.02em}
.dl-detalhe dd{margin:0; font-size:.92rem; color:var(--text-900)}
.dl-detalhe .dl-full{grid-column:1/-1}

/* Lista de itens com ícone (ex: controles de segurança na página pública
   do GovShield) — grid de 1 coluna, cada item com ícone + título + texto */
.security-list{display:grid; gap:16px; list-style:none; margin:0; padding:0}
.security-item{display:flex; gap:14px; align-items:flex-start}
.security-item i{font-size:1.2rem; color:var(--teal-600); margin-top:2px; flex-shrink:0}
.security-item strong{display:block; color:var(--text-900); font-size:.94rem; margin-bottom:2px}
.security-item span{color:var(--text-700); font-size:.86rem; line-height:1.5}
.tbl-search-ds{padding:8px 12px; border:1px solid var(--border); border-radius:var(--radius-sm); font-size:.85rem; min-width:220px}
.ds-table{width:100%; font-size:.86rem}
.ds-table th{text-align:left; padding:10px 20px; color:var(--text-500); font-weight:600; font-size:.74rem; text-transform:uppercase; letter-spacing:.04em; border-bottom:1px solid var(--border)}
.ds-table td{padding:12px 20px; border-bottom:1px solid var(--border); color:var(--text-700)}
.ds-table tr:last-child td{border-bottom:none}
.ds-table code{font-family:monospace; font-size:.82rem; background:#f1f5f9; padding:2px 6px; border-radius:4px}
.table-footer-ds{display:flex; align-items:center; justify-content:space-between; padding:12px 20px; font-size:.8rem; color:var(--text-500)}
.row-actions{display:flex; gap:6px}

/* Nota legal */
.legal-note-ds{
  background:var(--blue-50); border:1px solid var(--blue-100); border-radius:var(--radius-sm);
  padding:12px 16px; font-size:.8rem; color:var(--text-700); display:flex; gap:8px; align-items:flex-start;
  margin-top:16px;
}

.visually-hidden{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0}
.is-hidden{display:none}

.text-muted-ds{color:var(--text-500); font-size:.8rem}

/* Atalhos do GovShield */
.grid-shortcuts{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px; margin-top:8px}
.shortcut-card{
  display:block; background:#fff; border:1px solid var(--border); border-radius:var(--radius);
  padding:20px; text-decoration:none; color:inherit; box-shadow:var(--shadow-sm);
  transition:transform .2s ease, box-shadow .2s ease;
}
.shortcut-card:hover{transform:translateY(-4px); box-shadow:var(--shadow); border-color:var(--border-hover)}
.shortcut-card h2{margin:10px 0 6px}
.shortcut-card p{margin:0; font-size:.86rem; color:var(--text-500)}

@media (prefers-reduced-motion: reduce){
  .shortcut-card{transition:none}
  .shortcut-card:hover{transform:none}
}

/* Páginas públicas (ex: Diário Oficial) — sem sidebar, cabeçalho simples */
.public-header{
  display:flex; align-items:center; justify-content:space-between; padding:18px 32px; background:var(--text-900);
  flex-wrap:wrap; gap:12px;
}
.public-logo-name{color:#fff}
.public-logo-sub{color:#94a3b8}
.public-header-nav{display:flex; gap:20px}
.public-header-nav a{color:#cbd5e1; text-decoration:none; font-size:.86rem; font-weight:500}
.public-header-nav a:hover{color:#fff}
.public-shell{max-width:840px; margin:0 auto; padding:48px 32px; width:100%}
.public-shell-wide{max-width:1080px}
.public-footer{
  max-width:840px; margin:40px auto 0; padding:24px 32px; text-align:center;
  color:var(--text-500); font-size:.8rem; border-top:1px solid var(--border);
}
.public-search{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:20px}
.public-search .input-ds{flex:1; min-width:200px}
.public-search-select{max-width:220px}
.public-search-select-sm{max-width:120px}
.ato-texto{white-space:pre-wrap; line-height:1.7}
.hash-box{
  font-family:monospace; font-size:.76rem; word-break:break-all; background:#f1f5f9;
  border-radius:var(--radius-sm); padding:10px 12px; color:var(--text-500);
}

/* Editor rich text limitado (negrito/itálico/listas/títulos) */
.rte-toolbar{display:flex; gap:4px; flex-wrap:wrap; padding:8px; border:1px solid var(--border); border-bottom:0; border-radius:var(--radius-sm) var(--radius-sm) 0 0; background:#f8fafc}
.rte-btn{
  padding:6px 10px; border:1px solid transparent; border-radius:6px; background:transparent;
  color:var(--text-700); font-size:.82rem; cursor:pointer;
}
.rte-btn:hover{background:#fff; border-color:var(--border)}
.rte-editor{
  min-height:520px; max-height:80vh; overflow-y:auto;
  padding:14px 16px; border:1px solid var(--border); border-top:0;
  border-radius:0 0 var(--radius-sm) var(--radius-sm); background:#fff; font-size:.9rem; line-height:1.6;
}
.rte-editor:focus{outline:none; box-shadow:inset 0 0 0 2px rgba(20,184,166,.25)}
.rte-editor h3, .rte-editor h4{margin:.6em 0 .3em}
.rte-editor p{margin:0 0 .6em}
.rte-editor ul, .rte-editor ol{margin:0 0 .6em; padding-left:1.4em}

/* Painel de fluxo de aprovação */
.aprovacao-box{
  background:#fff; border:1px solid var(--border); border-radius:var(--radius);
  padding:20px; margin-top:20px;
}
.doc-anexo-box{display:flex; align-items:center; gap:10px; padding:12px 14px; background:#f8fafc; border-radius:var(--radius-sm); border:1px solid var(--border)}
.edicao-logo{max-height:72px; width:auto}
.table-scroll-ds{overflow-x:auto}

@media (max-width:640px){
  .public-shell{padding:32px 20px}
  .public-footer{padding:20px}
}

/* Catálogo público de Transparência: categorias configuráveis + cards +
   modal de base legal (tudo alimentado pelo painel admin, ver
   transparencia/admin/categorias.php e cards.php) */
.section-block{margin-bottom:36px}
.section-block:last-child{margin-bottom:0}
.cat-header{display:flex; align-items:flex-start; gap:14px; margin-bottom:16px; padding-bottom:14px; border-bottom:2px solid var(--cat-color,var(--teal-600))}
.cat-header-icon{
  width:40px; height:40px; border-radius:var(--radius-sm); display:flex; align-items:center; justify-content:center;
  background:var(--cat-color,var(--teal-600)); color:#fff; font-size:1.1rem; flex-shrink:0;
}
.cat-header-title{font-family:'Space Grotesk'; font-weight:700; font-size:1.15rem; color:var(--text-900)}
.cat-header-sub{font-size:.84rem; color:var(--text-500); margin-top:2px}
.law-link{color:var(--cat-color,var(--teal-600)); text-decoration:underline; font-weight:500; cursor:pointer; background:none; border:0; padding:0; font:inherit}
.law-link:hover{opacity:.8}

.law-overlay{
  display:none; position:fixed; inset:0; background:rgba(15,23,42,.6); z-index:200;
  align-items:center; justify-content:center; padding:20px;
}
.law-overlay.open{display:flex}
.law-modal{
  background:#fff; border-radius:var(--radius); max-width:520px; width:100%;
  padding:28px; box-shadow:var(--shadow); max-height:85vh; overflow-y:auto;
}
.law-modal-header{display:flex; align-items:flex-start; gap:14px; margin-bottom:16px}
.law-icon{
  width:40px; height:40px; border-radius:var(--radius-sm); background:var(--teal-100); color:var(--teal-600);
  display:flex; align-items:center; justify-content:center; font-size:1.1rem; flex-shrink:0;
}
.law-modal-title{font-family:'Space Grotesk'; font-weight:700; font-size:1.05rem; color:var(--text-900)}
.law-modal-badge{font-size:.78rem; color:var(--text-500); margin-top:2px}
.law-close{
  margin-left:auto; background:transparent; border:0; color:var(--text-500); cursor:pointer; font-size:1rem;
  padding:6px; border-radius:6px; line-height:1;
}
.law-close:hover{background:#f1f5f9; color:var(--text-900)}
.law-excerpt{
  font-style:italic; color:var(--text-700); font-size:.9rem; line-height:1.6; padding:14px 16px;
  background:#f8fafc; border-left:3px solid var(--teal-600); border-radius:0 var(--radius-sm) var(--radius-sm) 0; margin-bottom:16px;
}
.law-compliance{display:flex; gap:10px; align-items:flex-start; font-size:.86rem; color:var(--text-700); line-height:1.5; margin-bottom:20px}
.law-compliance-icon{color:var(--green-600); font-size:1rem; margin-top:2px; flex-shrink:0}
.law-footer{display:flex; justify-content:flex-end; gap:10px}

/* Busca de tela (página pública de Transparência) */
.busca-tela-box{
  position:relative; margin-bottom:28px; max-width:480px;
}
.busca-tela-box i{
  position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--text-500); pointer-events:none;
}
.busca-tela-box .input-ds{padding-left:38px}

/* Pisca o card de atalho sinalizado pela busca de tela, usando a cor
   primária da própria categoria (--cat-color, já definida via .cat-color-*)
   — por isso o efeito muda de cor conforme o card. */
@keyframes ds-pulse-card{
  0%, 100%{box-shadow:0 0 0 0 color-mix(in srgb, var(--cat-color, var(--teal-600)) 55%, transparent)}
  50%{box-shadow:0 0 0 7px color-mix(in srgb, var(--cat-color, var(--teal-600)) 0%, transparent)}
}
.shortcut-card.card-piscando{
  animation:ds-pulse-card 1s ease-in-out 3;
  border-color:var(--cat-color, var(--teal-600));
}
/* Ênfase permanente enquanto a busca de tela estiver ativa (a animação
   acima só cobre os primeiros segundos; sem isso o card volta ao normal e
   fica indistinguível dos demais, mesmo sendo o único resultado). */
.shortcut-card.card-destaque{
  border-color:var(--cat-color, var(--teal-600)); border-width:2px;
  box-shadow:0 0 0 3px color-mix(in srgb, var(--cat-color, var(--teal-600)) 20%, transparent);
}
@media (prefers-reduced-motion: reduce){
  .shortcut-card.card-piscando{animation:none}
}
/* Busca de tela: some com quem não bateu (card, categoria inteira ou
   tabela de dados) em vez de só sinalizar o que bateu no meio de tudo. */
.busca-oculto{display:none !important}

/* Paginação das tabelas de dados */
.pager-ds{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.pager-select{width:auto; padding:5px 8px; font-size:.78rem}
.table-toolbar-ds .tbl-search-ds{margin-left:auto}

/* Busca avançada — caixa no cabeçalho público */
.public-header-busca{display:flex; align-items:center; gap:0; background:rgba(255,255,255,.08); border-radius:var(--radius-sm); overflow:hidden}
.public-header-busca input{
  background:transparent; border:0; padding:8px 10px; color:#fff; font-family:'DM Sans'; font-size:.84rem; width:180px;
}
.public-header-busca input::placeholder{color:#94a3b8}
.public-header-busca input:focus{outline:none}
.public-header-busca button{
  background:transparent; border:0; color:#cbd5e1; padding:8px 12px; cursor:pointer; display:flex; align-items:center;
}
.public-header-busca button:hover{color:#fff}

/* Busca avançada — página de resultados */
.busca-avancada-form{display:flex; gap:10px; margin-bottom:28px; max-width:640px}
.busca-avancada-form .input-ds{flex:1}
.busca-resultados{display:flex; flex-direction:column; gap:12px}
.busca-resultado-item{
  display:flex; gap:14px; align-items:flex-start; background:#fff; border:1px solid var(--border);
  border-left:3px solid var(--cat-color, var(--teal-600)); border-radius:var(--radius); padding:16px 20px;
  text-decoration:none; color:inherit; box-shadow:var(--shadow-sm); transition:transform .15s ease, box-shadow .15s ease;
}
.busca-resultado-item:hover{transform:translateY(-2px); box-shadow:var(--shadow)}
.busca-resultado-item i{font-size:1.3rem; margin-top:2px; flex-shrink:0}
.busca-resultado-tipo{margin-bottom:6px}
.busca-resultado-item h2{margin:0 0 4px}
.busca-resultado-item p{margin:0; font-size:.86rem; color:var(--text-500)}
@media (prefers-reduced-motion: reduce){
  .busca-resultado-item{transition:none}
  .busca-resultado-item:hover{transform:none}
}
@media (max-width:640px){
  .public-header-busca{width:100%}
  .public-header-busca input{width:100%}
}

/* Accordion (página pública de Transparência): os blocos de dados oficiais
   (SICONFI, SADIPEM, CGU, TransfereGov, PNCP, CEIS) usam <details>/<summary>
   nativo — acessível de fábrica (teclado, leitor de tela, sem depender de
   JS pra abrir/fechar) em vez de JS custom. */
.acc-list{display:grid; gap:10px; margin-bottom:28px}
.acc-item{background:#fff; border:1px solid var(--border); border-radius:var(--radius); overflow:hidden}
.acc-item summary{
  list-style:none; cursor:pointer; display:flex; align-items:center; gap:12px; padding:16px 20px;
}
.acc-item summary::-webkit-details-marker{display:none}
.acc-item summary:focus-visible{outline:2px solid var(--teal-500); outline-offset:-2px}
.acc-icon{width:34px; height:34px; border-radius:var(--radius-sm); display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:1.05rem; background:var(--cat-color, var(--teal-600)); color:#fff}
.acc-title{font-weight:700; color:var(--text-900); font-size:.92rem; flex:1}
.acc-sub{font-size:.76rem; color:var(--text-500); font-weight:400}
.acc-chevron{color:var(--text-500); transition:transform .2s ease; flex-shrink:0}
.acc-item[open] .acc-chevron{transform:rotate(180deg)}
.acc-body{padding:0 20px 18px; border-top:1px solid var(--border); padding-top:14px}
@media (prefers-reduced-motion: reduce){
  .acc-chevron{transition:none}
}

/* Tabelas dentro do accordion em telas estreitas: em vez de rolagem
   horizontal (table-scroll-ds), cada linha vira um "cartão" com o nome da
   coluna ao lado do valor (data-label preenchido no PHP), mais legível no
   celular pra tabelas com várias colunas numéricas. */
@media (max-width:640px){
  .acc-body table,
  .acc-body thead,
  .acc-body tbody,
  .acc-body th,
  .acc-body td,
  .acc-body tr{display:block; width:auto}
  .acc-body thead{position:absolute; left:-9999px; top:-9999px}
  .acc-body tr{
    border:1px solid var(--border); border-radius:var(--radius-sm); padding:4px 14px; margin-bottom:10px; background:#fbfcfd;
  }
  .acc-body tr:last-child{margin-bottom:0}
  .acc-body td{
    display:flex; justify-content:space-between; align-items:flex-start; gap:12px;
    border-bottom:1px solid var(--border); padding:10px 0; text-align:right;
  }
  .acc-body td:last-child{border-bottom:0}
  .acc-body td[data-label]::before{
    content:attr(data-label); text-align:left; font-weight:700; color:var(--text-500);
    font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; flex-shrink:0; max-width:45%;
  }
}

/* Acesso rápido — gaveta lateral fixa (Opção A aprovada: aba na borda
   esquerda em telas largas; em mobile vira bloco normal no fluxo, sem
   posição fixa, porque não cabe/sobrepõe conteúdo em tela estreita). */
.quick-link{
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:var(--radius-sm);
  color:var(--text-700); text-decoration:none; font-size:.86rem; font-weight:500; border:1px solid transparent;
}
.quick-link:hover{background:var(--teal-50); border-color:var(--border)}
.quick-link:focus-visible{outline:2px solid var(--teal-500); outline-offset:1px}
.quick-link-icon{
  width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center;
  flex-shrink:0; font-size:.95rem; background:var(--cat-color, var(--teal-600)); color:#fff;
}
.opt-a-tab{
  position:fixed; left:0; top:50%; transform:translateY(-50%) rotate(-90deg); transform-origin:left top;
  background:var(--teal-700); color:#fff; border:0; border-radius:0 0 var(--radius-sm) var(--radius-sm);
  padding:10px 16px; font-family:'DM Sans'; font-weight:700; font-size:.82rem; cursor:pointer;
  display:flex; align-items:center; gap:8px; box-shadow:var(--shadow-sm); z-index:60;
  transition:left .25s ease;
}
.opt-a-tab:hover{background:#096b62}
/* Anda junto com a gaveta: quando ela abre (270px de largura), a aba sai da
   borda esquerda da tela e reaparece grudada na borda direita da gaveta,
   como se fizessem parte da mesma peça — em vez de ficar parada em left:0
   por baixo da gaveta aberta. */
.opt-a-tab.open{left:270px}
.opt-a-backdrop{
  position:fixed; inset:0; background:rgba(15,23,42,.35); z-index:58;
  opacity:0; pointer-events:none; transition:opacity .2s ease;
}
.opt-a-backdrop.open{opacity:1; pointer-events:auto}
.opt-a-drawer{
  position:fixed; left:0; top:0; bottom:0; width:270px; background:#fff; border-right:1px solid var(--border);
  box-shadow:var(--shadow); padding:20px 16px; transform:translateX(-100%); transition:transform .25s ease; z-index:59;
  display:flex; flex-direction:column; gap:8px; overflow-y:auto;
}
.opt-a-drawer.open{transform:translateX(0)}
.opt-a-drawer-head{display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px}
.opt-a-drawer h2{font-size:.8rem; text-transform:uppercase; letter-spacing:.04em; color:var(--text-500); margin:0}
.opt-a-close{
  background:transparent; border:0; color:var(--text-500); cursor:pointer; font-size:1.1rem; line-height:1;
  padding:4px; border-radius:8px; display:flex; align-items:center; justify-content:center;
}
.opt-a-close:hover{background:var(--bg); color:var(--text-900)}
.opt-a-close:focus-visible{outline:2px solid var(--teal-500)}
@media (prefers-reduced-motion: reduce){
  .opt-a-drawer, .opt-a-backdrop, .opt-a-tab{transition:none}
}
@media (max-width:640px){
  .opt-a-tab, .opt-a-backdrop{display:none}
  .opt-a-drawer{
    position:static; transform:none; width:auto; box-shadow:none; z-index:auto;
    border:1px solid var(--border); border-radius:var(--radius); margin-bottom:28px; overflow-y:visible;
  }
  .opt-a-close{display:none}
}