/* LicitaRadar: identidade da marca (laranja #d05e15 + grafite #1c242d), linhas finas, sombras suaves.
   Tema claro em :root; escuro via prefers-color-scheme e via data-theme (o botão de tema vence). */
:root {
  --bg: #f5f6f8;
  --bg-grade: rgba(28, 36, 45, 0.045);
  --surface: #ffffff;
  --surface-2: #f0f2f5;
  --surface-vidro: rgba(255, 255, 255, 0.78);
  --linha: rgba(28, 36, 45, 0.10);
  --linha-forte: rgba(28, 36, 45, 0.18);
  --text: #1c242d;
  --text-muted: #66707d;
  --accent: #d05e15;
  --accent-2: #e8792f;
  --accent-suave: rgba(208, 94, 21, 0.10);
  --accent-brilho: rgba(208, 94, 21, 0.28);
  --sobre-accent: #ffffff;
  --green: #14855c;  --green-bg: rgba(20, 133, 92, 0.11);
  --yellow: #9a6a05; --yellow-bg: rgba(197, 138, 16, 0.15);
  --red: #c53a32;    --red-bg: rgba(197, 58, 50, 0.11);
  --neutro: #8a939e; --neutro-bg: rgba(28, 36, 45, 0.06);
  --sombra-1: 0 1px 0 rgba(255,255,255,.8) inset, 0 1px 2px rgba(28,36,45,.04), 0 8px 24px -12px rgba(28,36,45,.14);
  --sombra-2: 0 1px 0 rgba(255,255,255,.8) inset, 0 2px 4px rgba(28,36,45,.05), 0 22px 44px -18px rgba(28,36,45,.26);
  --raio: 14px;
  --display: 'Sora', 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --corpo: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0d1116; --bg-grade: rgba(255, 255, 255, 0.035);
    --surface: #151b22; --surface-2: #1b232c; --surface-vidro: rgba(21, 27, 34, 0.78);
    --linha: rgba(255, 255, 255, 0.09); --linha-forte: rgba(255, 255, 255, 0.17);
    --text: #eef1f4; --text-muted: #98a3af;
    --accent: #f0762a; --accent-2: #ff9550; --accent-suave: rgba(240, 118, 42, 0.13); --accent-brilho: rgba(240, 118, 42, 0.35);
    --sobre-accent: #16100b;
    --green: #3fc594; --green-bg: rgba(63, 197, 148, 0.13);
    --yellow: #e5b345; --yellow-bg: rgba(229, 179, 69, 0.14);
    --red: #f0736b; --red-bg: rgba(240, 115, 107, 0.14);
    --neutro: #7d8793; --neutro-bg: rgba(255, 255, 255, 0.07);
    --sombra-1: 0 1px 0 rgba(255,255,255,.04) inset, 0 10px 30px -14px rgba(0,0,0,.7);
    --sombra-2: 0 1px 0 rgba(255,255,255,.05) inset, 0 26px 50px -18px rgba(0,0,0,.85);
  }
}
:root[data-theme="dark"] {
  --bg: #0d1116; --bg-grade: rgba(255, 255, 255, 0.035);
  --surface: #151b22; --surface-2: #1b232c; --surface-vidro: rgba(21, 27, 34, 0.78);
  --linha: rgba(255, 255, 255, 0.09); --linha-forte: rgba(255, 255, 255, 0.17);
  --text: #eef1f4; --text-muted: #98a3af;
  --accent: #f0762a; --accent-2: #ff9550; --accent-suave: rgba(240, 118, 42, 0.13); --accent-brilho: rgba(240, 118, 42, 0.35);
  --sobre-accent: #16100b;
  --green: #3fc594; --green-bg: rgba(63, 197, 148, 0.13);
  --yellow: #e5b345; --yellow-bg: rgba(229, 179, 69, 0.14);
  --red: #f0736b; --red-bg: rgba(240, 115, 107, 0.14);
  --neutro: #7d8793; --neutro-bg: rgba(255, 255, 255, 0.07);
  --sombra-1: 0 1px 0 rgba(255,255,255,.04) inset, 0 10px 30px -14px rgba(0,0,0,.7);
  --sombra-2: 0 1px 0 rgba(255,255,255,.05) inset, 0 26px 50px -18px rgba(0,0,0,.85);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--corpo); font-size: 14px; -webkit-font-smoothing: antialiased; }
h1, h2, h3 { font-family: var(--display); margin: 0 0 4px; letter-spacing: -0.01em; }
h1 { font-size: 26px; font-weight: 600; }
h2 { font-size: 18px; font-weight: 600; }
.muted { color: var(--text-muted); font-size: 13.5px; }
a { color: var(--accent); }
button { font-family: inherit; cursor: pointer; }
button:disabled { opacity: .6; cursor: default; }
input, select, textarea {
  font-family: inherit; background: var(--surface-2); border: 1px solid var(--linha); border-radius: 10px;
  padding: 9px 11px; color: var(--text); font-size: 14px; width: 100%; transition: border-color .15s, box-shadow .15s;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-suave); }
select option { background: var(--surface); color: var(--text); }
label { font-size: 12.5px; font-weight: 600; margin: 12px 0 5px; display: block; color: var(--text-muted); }
hr { border: none; border-top: 1px solid var(--linha); margin: 18px 0; }

/* logo: uma imagem por tema */
.logo-escuro { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .logo-claro { display: none; }
  :root:not([data-theme="light"]) .logo-escuro { display: block; }
}
:root[data-theme="dark"] .logo-claro { display: none; }
:root[data-theme="dark"] .logo-escuro { display: block; }
:root[data-theme="light"] .logo-claro { display: block; }
:root[data-theme="light"] .logo-escuro { display: none; }

/* botões */
.btn-primary, .btn-ghost, .btn-danger {
  border-radius: 10px; padding: 9px 16px; font-weight: 600; font-size: 13.5px; border: 1px solid transparent;
  transition: transform .12s ease, box-shadow .2s ease, border-color .2s ease, color .2s ease; display: inline-flex; align-items: center; gap: 6px;
}
.btn-primary { background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: var(--sobre-accent); box-shadow: 0 6px 18px -8px var(--accent-brilho); }
.btn-primary:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 10px 24px -8px var(--accent-brilho); }
.btn-ghost { background: var(--surface); color: var(--text); border-color: var(--linha-forte); }
.btn-ghost:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
.btn-danger { background: var(--red-bg); color: var(--red); }

/* fundo: grade fina + brilho da marca */
.app-bg, .auth-bg { position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
  background-image: linear-gradient(var(--bg-grade) 1px, transparent 1px), linear-gradient(90deg, var(--bg-grade) 1px, transparent 1px);
  background-size: 44px 44px; -webkit-mask-image: radial-gradient(ellipse 90% 80% at 60% 0%, #000 30%, transparent 85%); mask-image: radial-gradient(ellipse 90% 80% at 60% 0%, #000 30%, transparent 85%); }
.orb { position: absolute; border-radius: 50%; filter: blur(90px); opacity: .22; }
.orb-1, .orb-a1 { width: 460px; height: 460px; background: var(--accent); top: -180px; right: 8%; }
.orb-2, .orb-a2 { width: 360px; height: 360px; background: #2b6cb0; bottom: -160px; left: 22%; opacity: .12; }

/* ---------- login ---------- */
.auth-shell { position: relative; z-index: 1; min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; }
.auth-card { background: var(--surface-vidro); backdrop-filter: blur(18px); border: 1px solid var(--linha); border-radius: 20px; padding: 34px 32px; width: 100%; max-width: 390px; box-shadow: var(--sombra-2); position: relative; }
.auth-card::before { content: ''; position: absolute; top: -1px; left: 28px; right: 28px; height: 1px; background: linear-gradient(90deg, transparent, var(--accent), transparent); }
.brand { text-align: center; margin-bottom: 22px; }
.brand img { height: 40px; margin: 0 auto; }
.brand-sub { color: var(--text-muted); font-size: 13px; margin: 12px 0 0; }
.tabs { display: flex; gap: 4px; background: var(--surface-2); border-radius: 10px; padding: 4px; margin-bottom: 14px; }
.tab-btn { flex: 1; border: none; background: transparent; padding: 8px; border-radius: 8px; color: var(--text-muted); font-weight: 600; }
.tab-btn.active { background: var(--surface); color: var(--text); box-shadow: var(--sombra-1); }
.auth-form .btn-primary { width: 100%; margin-top: 16px; justify-content: center; }
.auth-erro { color: var(--red); font-size: 13px; margin-top: 8px; min-height: 16px; }

/* ---------- estrutura ---------- */
.app-shell { position: relative; z-index: 1; display: grid; grid-template-columns: 264px 1fr; min-height: 100vh; }
.sidebar { background: var(--surface-vidro); backdrop-filter: blur(18px); border-right: 1px solid var(--linha); padding: 20px 14px 14px; display: flex; flex-direction: column; gap: 4px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.side-logo { display: block; padding: 2px 8px 18px; }
.side-logo img { height: 30px; }
.nav { display: flex; flex-direction: column; gap: 2px; }
.nav-item { display: flex; align-items: center; gap: 11px; padding: 9px 11px; border-radius: 10px; border: 1px solid transparent; background: transparent; color: var(--text-muted); font-weight: 500; font-size: 13.5px; text-align: left; width: 100%; position: relative; transition: color .15s, background .15s; }
.nav-item svg { width: 18px; height: 18px; flex-shrink: 0; stroke: currentColor; fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.nav-item:hover { color: var(--text); background: var(--neutro-bg); }
.nav-item.ativo { color: var(--text); background: var(--surface); border-color: var(--linha); box-shadow: var(--sombra-1); font-weight: 600; }
.nav-item.ativo svg { stroke: var(--accent); }
.nav-item.ativo::before { content: ''; position: absolute; left: -15px; top: 9px; bottom: 9px; width: 2px; background: var(--accent); border-radius: 2px; box-shadow: 0 0 10px var(--accent-brilho); }
.nav-badge { margin-left: auto; font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: var(--accent); color: var(--sobre-accent); }
.side-secao { font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--text-muted); padding: 18px 11px 6px; display: flex; align-items: center; gap: 8px; }
.side-secao::after { content: ''; flex: 1; height: 1px; background: var(--linha); }
.side-nav { display: flex; flex-direction: column; gap: 3px; }
.perfil-item { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: 9px 11px; border-radius: 10px; border: 1px solid transparent; background: transparent; color: var(--text); text-align: left; width: 100%; }
.perfil-item:hover { background: var(--neutro-bg); }
.perfil-item.active { border-color: var(--accent); background: var(--accent-suave); }
.perfil-item .p-nome { font-weight: 600; font-size: 13.5px; }
.perfil-item .p-meta { font-size: 11.5px; color: var(--text-muted); }
.side-novo { margin-top: 6px; background: transparent; border: 1px dashed var(--linha-forte); border-radius: 10px; padding: 8px; font-weight: 600; font-size: 13px; color: var(--text-muted); }
.side-novo:hover { border-color: var(--accent); color: var(--accent); }
.side-footer { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--linha); display: flex; align-items: center; gap: 6px; }
.user-chip { display: flex; align-items: center; gap: 9px; flex: 1; min-width: 0; }
.user-chip > div { min-width: 0; }
.avatar { width: 32px; height: 32px; border-radius: 10px; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: var(--sobre-accent); display: grid; place-items: center; font-weight: 700; font-size: 13px; flex-shrink: 0; }
.user-chip b { display: block; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.user-chip small { color: var(--text-muted); font-size: 11.5px; }
.icon-btn { width: 32px; height: 32px; border-radius: 9px; border: 1px solid var(--linha); background: transparent; color: var(--text-muted); display: grid; place-items: center; flex-shrink: 0; padding: 0; }
.icon-btn:hover { color: var(--accent); border-color: var(--accent); }
.icon-btn svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }

.content { padding: 30px 36px 60px; min-width: 0; }
.content-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; flex-wrap: wrap; gap: 12px; padding-bottom: 18px; border-bottom: 1px solid var(--linha); position: relative; }
.content-header::after { content: ''; position: absolute; left: 0; bottom: -1px; width: 64px; height: 1px; background: var(--accent); box-shadow: 0 0 12px var(--accent-brilho); }
.sobretitulo { font-size: 10.5px; text-transform: uppercase; letter-spacing: .14em; color: var(--accent); font-weight: 600; margin: 0 0 6px; }
.header-actions { display: flex; gap: 8px; align-items: center; }
.empty-state { max-width: 440px; margin: 14vh auto; text-align: center; }
.empty-state p { color: var(--text-muted); margin: 10px 0 18px; }
.abas { display: none; }

/* ---------- entrada animada: os blocos "se montam" ao aparecer ---------- */
.reveal { opacity: 0; transform: translateY(16px) scale(.985); filter: blur(5px); }
.reveal.visivel { opacity: 1; transform: none; filter: none; transition: opacity .55s cubic-bezier(.2,.7,.2,1), transform .55s cubic-bezier(.2,.7,.2,1), filter .55s ease, box-shadow .25s ease, border-color .2s ease; transition-delay: var(--atraso, 0ms); }
.reveal.montado { transition-delay: 0ms; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; filter: none; } .reveal.visivel { transition: none; } }

/* cartão base: linha fina no topo que se desenha ao entrar */
.painel-card, .lic-card, .kpi, .doc-item, .bloco {
  background: var(--surface); border: 1px solid var(--linha); border-radius: var(--raio); box-shadow: var(--sombra-1); position: relative;
}
.painel-card::before, .lic-card::before, .kpi::before {
  content: ''; position: absolute; top: -1px; left: 16px; height: 1px; width: 0; background: linear-gradient(90deg, var(--accent), transparent);
  transition: width .8s cubic-bezier(.2,.7,.2,1) .15s;
}
.painel-card.visivel::before, .lic-card.visivel::before, .kpi.visivel::before { width: 42%; }
@media (prefers-reduced-motion: reduce) { .painel-card::before, .lic-card::before, .kpi::before { width: 42%; transition: none; } }

/* ---------- painel ---------- */
.kpi-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 16px; }
@media (min-width: 1500px) { .kpi-grid { grid-template-columns: repeat(6, 1fr); } }
@media (max-width: 700px) { .kpi-grid { grid-template-columns: repeat(2, 1fr); } }
.kpi { padding: 16px 18px; }
.kpi-rotulo { font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: var(--text-muted); font-weight: 600; }
.kpi-valor { font-family: var(--display); font-size: clamp(22px, 2.2vw, 30px); font-weight: 600; line-height: 1.15; margin-top: 8px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.kpi-nota { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.painel-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 14px; }
.painel-card { padding: 18px 20px; grid-column: span 6; min-width: 0; }
.painel-card.c4 { grid-column: span 4; } .painel-card.c8 { grid-column: span 8; } .painel-card.c12 { grid-column: span 12; }
.painel-card h3 { font-size: 13.5px; font-weight: 600; margin: 0; }
.painel-card .sub { font-size: 12px; color: var(--text-muted); margin: 2px 0 14px; }
.painel-vazio { color: var(--text-muted); font-size: 13px; padding: 14px 0; }

/* barras horizontais: uma série, uma cor */
.barras { display: flex; flex-direction: column; gap: 8px; }
.barra-linha { display: grid; grid-template-columns: minmax(48px, 140px) 1fr auto; align-items: center; gap: 10px; font-size: 12.5px; }
.barra-linha .rot { color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.barra-linha .trilho { height: 8px; border-radius: 4px; background: var(--neutro-bg); overflow: hidden; }
.barra-linha .preench { display: block; height: 100%; width: 0; border-radius: 0 4px 4px 0; background: var(--accent); transition: width .9s cubic-bezier(.2,.7,.2,1) .2s; }
.barra-linha .val { font-weight: 600; font-variant-numeric: tabular-nums; min-width: 22px; text-align: right; }
.barra-linha:hover .rot { color: var(--text); }
/* colunas: prazos por semana */
.colunas { display: grid; grid-template-columns: repeat(6, 1fr); gap: 2px; align-items: end; height: 150px; border-bottom: 1px solid var(--linha-forte); }
.coluna { display: flex; flex-direction: column; justify-content: flex-end; align-items: center; height: 100%; }
.coluna .corpo { width: 62%; max-width: 44px; height: 0; border-radius: 4px 4px 0 0; background: var(--accent); transition: height .9s cubic-bezier(.2,.7,.2,1) .2s; }
.coluna .num { font-size: 12px; font-weight: 600; margin-bottom: 4px; font-variant-numeric: tabular-nums; }
.coluna:hover .corpo { background: var(--accent-2); }
.colunas-eixo { display: grid; grid-template-columns: repeat(6, 1fr); gap: 2px; margin-top: 6px; font-size: 11px; color: var(--text-muted); text-align: center; }
/* barra de situação: cores de estado, sempre com rótulo na legenda */
.estado-barra { display: flex; gap: 2px; height: 12px; border-radius: 6px; overflow: hidden; background: var(--neutro-bg); }
.estado-barra span { height: 100%; transition: flex-grow .9s cubic-bezier(.2,.7,.2,1) .2s; flex-grow: 0; flex-basis: 0; }
.estado-barra .verde { background: var(--green); } .estado-barra .amarelo { background: var(--yellow); }
.estado-barra .vermelho { background: var(--red); } .estado-barra .cinza { background: var(--neutro); }
.legenda { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 12px; font-size: 12.5px; }
.legenda span { display: inline-flex; align-items: center; gap: 6px; color: var(--text-muted); }
.legenda b { color: var(--text); font-variant-numeric: tabular-nums; }
.legenda i { width: 9px; height: 9px; border-radius: 3px; display: inline-block; }
.legenda i.verde { background: var(--green); } .legenda i.amarelo { background: var(--yellow); }
.legenda i.vermelho { background: var(--red); } .legenda i.cinza { background: var(--neutro); }
[data-dica] { position: relative; }
[data-dica]:hover::after { content: attr(data-dica); position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); background: var(--text); color: var(--bg); font-size: 11.5px; font-weight: 500; padding: 4px 8px; border-radius: 6px; white-space: nowrap; z-index: 5; pointer-events: none; }
.prazo-linha { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--linha); cursor: pointer; }
.prazo-linha:last-child { border-bottom: none; }
.prazo-linha:hover .prazo-orgao { color: var(--accent); }
.prazo-dia { width: 54px; flex-shrink: 0; text-align: center; font-family: var(--display); font-weight: 600; font-size: 18px; line-height: 1; }
.prazo-dia small { display: block; font-family: var(--corpo); font-size: 10.5px; font-weight: 500; color: var(--text-muted); margin-top: 3px; }
.prazo-orgao { font-weight: 600; font-size: 13.5px; transition: color .15s; }
.prazo-titulo { font-size: 12.5px; color: var(--text-muted); }
/* ---------- radar ---------- */
.radar-mini { width: 76px; height: 76px; flex-shrink: 0; padding: 0; border: 1px solid var(--linha); border-radius: 50%; background: var(--surface); box-shadow: var(--sombra-1); transition: border-color .2s, box-shadow .2s, transform .2s; }
.radar-mini:hover { border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-suave); transform: scale(1.05); }
.radar-mini svg { width: 100%; height: 100%; display: block; border-radius: 50%; }
.rd * { vector-effect: non-scaling-stroke; }
.rd-anel, .rd-eixo, .rd-diag, .rd-tique, .rd-arco, .rd-guia { fill: none; stroke: var(--linha-forte); stroke-width: 1; }
.rd-borda { stroke: var(--accent); stroke-opacity: .55; }
.rd-tracejado { stroke-dasharray: 2 7; }
.rd-diag { stroke: var(--linha); }
.rd-tique-g { stroke: var(--text-muted); }
.rd-grau { font: 500 9px ui-monospace, 'Cascadia Mono', Consolas, monospace; fill: var(--text-muted); text-anchor: middle; letter-spacing: .5px; }
.rd-arco { stroke: var(--accent); stroke-width: 1.5; stroke-opacity: .7; stroke-linecap: round; }
.rd-arco-fino { stroke-width: 1; stroke-opacity: .4; }
.rd-uf { fill: var(--neutro); fill-opacity: .55; }
.rd-fatia { fill: var(--accent); }
.rd-frente { stroke: var(--accent); stroke-width: 1.5; }
.rd-centro { fill: var(--accent); }
.rd-varredura, .rd-orbita { transform-origin: 300px 300px; }
.rd-varredura { animation: girar 6s linear infinite; }
.rd-orbita { animation: girar 40s linear infinite reverse; }
.rd-orbita-2 { animation-duration: 24s; animation-direction: normal; }
.rd-pino-mini { fill: var(--accent); }
.rd-losango { fill: var(--accent); stroke: var(--surface); stroke-width: 1.5; }
.rd-guia { stroke: var(--accent); stroke-opacity: .6; }
.rd-etiqueta { fill: var(--surface); stroke: var(--accent); stroke-width: 1; }
.rd-sigla { font: 600 11.5px var(--corpo); fill: var(--text); text-anchor: middle; letter-spacing: .3px; }
.rd-pulso { fill: none; stroke: var(--accent); stroke-width: 1.5; transform-box: fill-box; transform-origin: center; animation: pulsar 2.6s ease-out infinite; animation-delay: calc(var(--i) * 0.28s); }
@keyframes girar { to { transform: rotate(360deg); } }
@keyframes pulsar { 0% { transform: scale(.3); opacity: .9; } 100% { transform: scale(1.5); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .rd-varredura, .rd-orbita, .rd-pulso { animation: none; } .rd-pulso { opacity: .5; } }

/* modo radar: o painel encolhe em módulos e o radar toma a tela */
.radar-palco { position: relative; width: min(100%, calc(100vh - 64px)); aspect-ratio: 1; margin: 0 auto; animation: radarEntrar .7s cubic-bezier(.2,.7,.2,1); }
.radar-palco svg { width: 100%; height: 100%; display: block; overflow: visible; }
@keyframes radarEntrar { from { opacity: 0; transform: scale(.55); filter: blur(8px); } }
@media (prefers-reduced-motion: reduce) { .radar-palco { animation: none; } }
.radar-leitura { position: absolute; font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--text-muted); line-height: 1.5; max-width: 190px; }
.radar-leitura b { display: block; font: 600 17px var(--display); color: var(--text); letter-spacing: 0; text-transform: none; font-variant-numeric: tabular-nums; }
.radar-leitura.rl-1 b { font: 600 10.5px var(--corpo); color: var(--accent); letter-spacing: .14em; text-transform: uppercase; }
.rl-1 { top: 0; left: 0; } .rl-2 { top: 0; right: 0; text-align: right; }
.rl-3 { bottom: 0; left: 0; } .rl-4 { bottom: 0; right: 0; text-align: right; }
.radar-leitura::before { content: ''; display: block; width: 22px; height: 1px; background: var(--accent); margin-bottom: 6px; }
.rl-2::before, .rl-4::before { margin-left: auto; }
.radar-barra { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; background: var(--surface); border: 1px solid var(--accent); border-radius: var(--raio); box-shadow: var(--sombra-1); }
.radar-barra b { display: block; font: 600 13px var(--display); }
.radar-barra small { color: var(--text-muted); font-size: 11.5px; }
.radar-barra .btn-primary { padding: 8px 12px; font-size: 12.5px; white-space: nowrap; }
#view-painel.modo-radar { display: grid; grid-template-columns: minmax(0, 1fr) 290px; gap: 18px; align-items: start; }
#view-painel.modo-radar .content-header { display: none; }
#view-painel.modo-radar .radar-palco { grid-column: 1; grid-row: 1 / span 3; }
#view-painel.modo-radar .radar-barra { grid-column: 2; }
#view-painel.modo-radar .kpi-grid { grid-column: 2; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0; }
#view-painel.modo-radar .kpi { padding: 10px 12px; }
#view-painel.modo-radar .kpi-rotulo { font-size: 9px; letter-spacing: .08em; }
#view-painel.modo-radar .kpi-valor { font-size: 19px; margin-top: 4px; }
#view-painel.modo-radar .kpi-valor small { font-size: 11px !important; }
#view-painel.modo-radar .kpi-nota { display: none; }
#view-painel.modo-radar .painel-grid { grid-column: 2; display: block; }
#view-painel.modo-radar .painel-card { display: none; }
#view-painel.modo-radar .painel-card.modulo-prazos { display: block; padding: 12px 14px; }
#view-painel.modo-radar .modulo-prazos .sub { display: none; }
#view-painel.modo-radar .modulo-prazos h3 { margin-bottom: 4px; }
#view-painel.modo-radar .prazo-linha { padding: 7px 0; gap: 8px; }
#view-painel.modo-radar .prazo-dia { width: 40px; font-size: 14px; }
#view-painel.modo-radar .prazo-orgao { font-size: 12px; }
#view-painel.modo-radar .prazo-titulo { display: none; }
@media (max-width: 1000px) { #view-painel.modo-radar { grid-template-columns: 1fr; } #view-painel.modo-radar .radar-palco, #view-painel.modo-radar .radar-barra, #view-painel.modo-radar .kpi-grid, #view-painel.modo-radar .painel-grid { grid-column: 1; grid-row: auto; }
  #view-painel.modo-radar .radar-barra { order: -1; } }

/* ---------- licitações ---------- */
.busca-status { background: var(--surface); border: 1px solid var(--linha); border-left: 2px solid var(--accent); border-radius: 10px; padding: 10px 14px; margin-bottom: 16px; font-size: 13.5px; }
.cards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
.lic-card { padding: 16px 16px 14px; cursor: pointer; display: flex; flex-direction: column; gap: 6px; }
.lic-card.visivel:hover { transform: translateY(-2px); box-shadow: var(--sombra-2); border-color: var(--linha-forte); }
.lic-tag { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 600; padding: 3px 9px; border-radius: 999px; width: fit-content; white-space: nowrap; }
.lic-tag.verde { background: var(--green-bg); color: var(--green); }
.lic-tag.amarelo { background: var(--yellow-bg); color: var(--yellow); }
.lic-tag.vermelho { background: var(--red-bg); color: var(--red); }
.lic-tag.cinza { background: var(--neutro-bg); color: var(--text-muted); }
.lic-orgao { font-family: var(--display); font-weight: 600; font-size: 14px; }
.lic-objeto { font-size: 13px; color: var(--text-muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.lic-meta { display: flex; justify-content: space-between; gap: 8px; font-size: 12.5px; color: var(--text-muted); margin-top: 2px; }
.lic-valor { font-weight: 700; color: var(--text); white-space: nowrap; }
.lic-datas { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-size: 12.5px; padding-top: 8px; margin-top: 4px; border-top: 1px solid var(--linha); }
.lic-datas .lic-pub { color: var(--text-muted); width: 100%; }
.lic-btn-ia { margin-top: 6px; width: 100%; font-size: 12.5px; padding: 7px 10px; justify-content: center; }
.lic-resumo { margin-top: 6px; padding-top: 8px; border-top: 1px solid var(--linha); font-size: 13px; }
.lic-resumo p { margin: 0 0 4px; }
.lic-resumo ul { margin: 4px 0 0; padding-left: 16px; color: var(--text-muted); }

/* ---------- documentos ---------- */
.doc-topo { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.doc-topo a.btn-primary, a.ck-kit { text-decoration: none; }
.doc-resumo { display: flex; gap: 8px; flex-wrap: wrap; }
.doc-cat { margin-top: 22px; }
.doc-cat h3 { font-family: var(--corpo); font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--text-muted); margin: 0 0 8px; font-weight: 600; display: flex; align-items: center; gap: 10px; }
.doc-cat h3::after { content: ''; flex: 1; height: 1px; background: var(--linha); }
.doc-item { padding: 12px 14px; margin-bottom: 8px; }
.doc-item-topo { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.doc-item-nome { font-weight: 600; flex: 1; min-width: 200px; }
.doc-item-dica { font-size: 12.5px; color: var(--text-muted); margin: 4px 0 0; }
.doc-arq { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; padding: 8px 0 0; margin-top: 8px; border-top: 1px dashed var(--linha); }
.doc-arq .doc-arq-nome { flex: 1; min-width: 160px; }
.doc-arq a, .doc-item a, .ck-item a, .arquivo-item a { color: var(--accent); text-decoration: none; }
.doc-btn { background: var(--surface-2); border: 1px solid var(--linha); border-radius: 8px; padding: 5px 10px; font-size: 12.5px; font-weight: 600; color: var(--text); }
.doc-btn:hover { border-color: var(--accent); color: var(--accent); }
.doc-btn.perigo { color: var(--red); }
.ck-item { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; border-bottom: 1px solid var(--linha); font-size: 13.5px; }
.ck-item .lic-tag { flex-shrink: 0; min-width: 74px; justify-content: center; }
a.ck-kit { display: inline-flex; margin-top: 12px; }

/* ---------- notificações, empresa, equipe, configurações ---------- */
.bloco { padding: 20px 22px; margin-bottom: 14px; }
.bloco h2 { font-size: 15px; margin-bottom: 2px; }
.bloco > .muted { margin: 0 0 6px; }
.form-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0 14px; }
.form-grid > div { grid-column: span 3; min-width: 0; }
.form-grid > .c2 { grid-column: span 2; } .form-grid > .c4 { grid-column: span 4; } .form-grid > .c6 { grid-column: span 6; } .form-grid > .c1 { grid-column: span 1; }
.linha-acoes { display: flex; gap: 8px; align-items: center; margin-top: 18px; flex-wrap: wrap; }
.notif { display: flex; gap: 14px; align-items: flex-start; padding: 14px 16px; background: var(--surface); border: 1px solid var(--linha); border-left-width: 2px; border-radius: 12px; margin-bottom: 8px; cursor: pointer; box-shadow: var(--sombra-1); }
.notif.visivel:hover { transform: translateX(3px); }
.notif.critico { border-left-color: var(--red); } .notif.atencao { border-left-color: var(--yellow); } .notif.info { border-left-color: var(--neutro); }
.notif-titulo { font-weight: 600; }
.notif-texto { font-size: 13px; color: var(--text-muted); margin-top: 2px; }
.notif .seta { margin-left: auto; color: var(--text-muted); align-self: center; }
.tabela { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.tabela th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .1em; color: var(--text-muted); font-weight: 600; padding: 8px 10px; border-bottom: 1px solid var(--linha-forte); white-space: nowrap; }
.tabela td { padding: 10px; border-bottom: 1px solid var(--linha); vertical-align: middle; }
.tabela tr.inativo td { opacity: .5; }
.tabela select { width: auto; padding: 5px 8px; font-size: 13px; }
.tabela-rolagem { overflow-x: auto; }
.papeis-explica { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px; font-size: 12.5px; color: var(--text-muted); }
.papeis-explica b { display: block; color: var(--text); font-size: 13px; }

/* ---------- modal ---------- */
.modal-overlay { position: fixed; inset: 0; background: rgba(8, 11, 15, 0.55); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 50; padding: 20px; animation: surgir .2s ease; }
.modal { background: var(--surface); border: 1px solid var(--linha); border-radius: 16px; width: 100%; max-width: 540px; max-height: 88vh; overflow-y: auto; box-shadow: var(--sombra-2); animation: subir .28s cubic-bezier(.2,.7,.2,1); }
@keyframes surgir { from { opacity: 0; } }
@keyframes subir { from { opacity: 0; transform: translateY(14px) scale(.985); } }
@media (prefers-reduced-motion: reduce) { .modal-overlay, .modal, .toast { animation: none; } }
.modal-wide { max-width: 740px; }
.modal-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-bottom: 1px solid var(--linha); position: sticky; top: 0; background: var(--surface); z-index: 2; }
.modal-close { background: transparent; border: none; font-size: 16px; color: var(--text-muted); }
.modal-body { padding: 16px 20px 20px; }
.modal-actions { display: flex; justify-content: space-between; margin-top: 18px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.checkbox-label { display: flex; align-items: center; gap: 8px; font-weight: 500; color: var(--text); margin-top: 12px; }
.checkbox-label input { width: auto; }
.detalhe-secao { margin-bottom: 16px; }
.detalhe-secao h3 { font-family: var(--corpo); font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--text-muted); margin-bottom: 6px; font-weight: 600; }
.detalhe-lista { margin: 0; padding-left: 18px; }
.detalhe-lista li { margin-bottom: 4px; }
.badge-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.badge { background: var(--surface-2); border: 1px solid var(--linha); border-radius: 999px; padding: 3px 10px; font-size: 12px; }
.arquivo-item { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--linha); font-size: 13.5px; }
.sugestor { background: var(--accent-suave); border: 1px solid var(--linha); border-radius: 12px; padding: 4px 12px 12px; margin-top: 10px; }
.sugestor-linha { display: flex; gap: 8px; }
.sugestor-linha .btn-ghost { white-space: nowrap; }
#sugestor-resultado { margin-top: 10px; font-size: 13px; }
.sug-lista { display: flex; flex-direction: column; gap: 4px; margin: 6px 0; }
.sug-item { display: flex; align-items: flex-start; gap: 8px; margin: 0; font-weight: 500; color: var(--text); cursor: pointer; }
.sug-item input { width: auto; margin-top: 3px; }
.sug-item .sug-n { margin-left: auto; white-space: nowrap; font-weight: 700; }
.sug-item .sug-ex { display: block; color: var(--text-muted); font-size: 12px; font-weight: 400; }
.sug-item.zero { opacity: .55; }
.sug-acoes { display: flex; gap: 8px; margin-top: 8px; }
.uf-grid { display: flex; flex-wrap: wrap; gap: 5px; }
.uf-chip { margin: 0; cursor: pointer; }
.uf-chip input { position: absolute; opacity: 0; width: 0; }
.uf-chip span { display: inline-block; min-width: 34px; text-align: center; padding: 4px 6px; border-radius: 8px; border: 1px solid var(--linha); background: var(--surface-2); font-size: 12.5px; font-weight: 600; color: var(--text-muted); }
.uf-chip input:checked + span { background: var(--accent); border-color: var(--accent); color: var(--sobre-accent); }
.uf-chip input:focus-visible + span { box-shadow: 0 0 0 3px var(--accent-suave); }

.toast-container { position: fixed; bottom: 20px; right: 20px; display: flex; flex-direction: column; gap: 8px; z-index: 100; }
.toast { background: var(--surface); border: 1px solid var(--linha); border-left: 2px solid var(--accent); border-radius: 10px; padding: 10px 16px; box-shadow: var(--sombra-2); font-size: 13.5px; max-width: 340px; animation: subir .25s ease; }
.toast.erro { border-left-color: var(--red); color: var(--red); }

/* quem só consulta não vê os controles de alteração */
body.somente-leitura :is(#btn-novo-perfil, #btn-novo-perfil-2, #btn-editar-perfil, #btn-buscar-agora, .lic-btn-ia, .doc-btn, #form-empresa .linha-acoes, .detalhe-secao button) { display: none !important; }

@media (max-width: 1100px) { .painel-card, .painel-card.c4, .painel-card.c8 { grid-column: span 12; } }
@media (max-width: 860px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: static; height: auto; }
  .content { padding: 22px 16px 50px; }
  .form-grid > div, .form-grid > .c2, .form-grid > .c4, .form-grid > .c1 { grid-column: span 6; }
  .papeis-explica { grid-template-columns: 1fr; }
}

/* ---------- logística ---------- */
.lic-local { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; font-size: 12.5px; color: var(--text-muted); }
.lic-local b { color: var(--text); font-weight: 600; }
.lg-base { padding: 9px 11px; border: 1px dashed var(--linha-forte); border-radius: 10px; font-weight: 600; min-height: 38px; }
.lg-base a { font-weight: 500; }
.lg-resultado { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--linha); }
.lg-numeros { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.lg-num { border-left: 2px solid var(--accent); padding-left: 12px; min-width: 0; }
.lg-num small { display: block; font-size: 10.5px; text-transform: uppercase; letter-spacing: .1em; color: var(--text-muted); font-weight: 600; }
.lg-num b { display: block; font: 600 22px var(--display); font-variant-numeric: tabular-nums; margin-top: 4px; white-space: nowrap; }
.lg-num span { font-size: 12px; color: var(--text-muted); }
.lg-calculadoras { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.lg-saida { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--linha); }
.lg-saida table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.lg-saida td { padding: 5px 0; }
.lg-saida td:last-child { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.lg-saida tr.total td { border-top: 1px solid var(--linha-forte); padding-top: 10px; font: 600 17px var(--display); }
.lg-saida tr.total td:last-child { color: var(--accent); }
.lg-saida .muted { margin: 8px 0 0; }
@media (max-width: 1100px) { .lg-calculadoras { grid-template-columns: 1fr; } .lg-numeros { grid-template-columns: repeat(2, 1fr); } }

/* estados do radar são botões */
.rd-pino { cursor: pointer; outline: none; }
.rd-pino:hover .rd-etiqueta, .rd-pino:focus-visible .rd-etiqueta { fill: var(--accent); }
.rd-pino:hover .rd-sigla, .rd-pino:focus-visible .rd-sigla { fill: var(--sobre-accent); }
.rd-pino:hover .rd-losango, .rd-pino:focus-visible .rd-losango { stroke: var(--accent); stroke-width: 3; }
.rd-pino-vazio .rd-pulso { display: none; }
.rd-pino-vazio .rd-losango { fill: var(--surface); stroke: var(--neutro); }
.rd-pino-vazio .rd-etiqueta { stroke: var(--linha-forte); }
.rd-pino-vazio .rd-sigla { fill: var(--text-muted); font-weight: 500; }
.rd-pino-vazio .rd-guia { stroke: var(--linha-forte); }
.filtro-uf { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; background: var(--accent-suave); border: 1px solid var(--accent); border-radius: 10px; padding: 8px 12px; margin-bottom: 16px; font-size: 13.5px; font-weight: 600; }
