/* ===== Portal SSP — Secretaria de Segurança Pública · Elite SP ===== */
:root {
  --bg:#080b12; --bg2:#0c111c; --panel:#111a2b; --panel2:#16223a;
  --line:#22304c; --line2:#33446a; --blue:#3d7dff; --blue-soft:#82acff;
  --text:#e9eef8; --dim:#9babc8; --mute:#5e6e8e; --gold:#e0b04a;
  --ok:#2bd47e; --bad:#ff5468; --warn:#e0b04a;
}
* { margin:0; padding:0; box-sizing:border-box; }
body {
  background:radial-gradient(900px 480px at 50% -12%, rgba(61,125,255,.11), transparent 70%), var(--bg);
  color:var(--text); min-height:100vh;
  font-family:'Segoe UI',system-ui,-apple-system,Roboto,sans-serif;
}
a { color:inherit; text-decoration:none; }
b { color:#f3f6fc; }

/* ----- Cabeçalho ----- */
.ssp-top {
  display:flex; align-items:center; gap:18px;
  padding:13px clamp(14px,3vw,36px); border-bottom:1px solid var(--line);
  background:rgba(8,11,18,.92); backdrop-filter:blur(8px);
  position:sticky; top:0; z-index:20;
}
.ssp-brand { display:flex; align-items:center; gap:11px; flex:none; }
.ssp-shield {
  width:40px; height:40px; display:flex; align-items:center; justify-content:center;
  border-radius:9px; background:linear-gradient(160deg,var(--panel2),var(--panel));
  border:1px solid var(--line2); color:var(--blue);
}
.ssp-shield svg { width:22px; height:22px; }
.ssp-brand b { font-size:1.05rem; font-weight:800; letter-spacing:.15em; display:block; line-height:1.05; }
.ssp-brand small { color:var(--mute); font-size:.66rem; letter-spacing:.03em; }
.ssp-busca { display:flex; align-items:center; gap:0; margin-left:auto; max-width:480px; flex:1; }
.ssp-busca select {
  background:var(--panel); color:var(--dim); border:1px solid var(--line2); border-right:0;
  border-radius:9px 0 0 9px; padding:9px 8px; font-size:.84rem; font-family:inherit; outline:none;
}
.ssp-busca input {
  flex:1; min-width:90px; background:var(--bg2); color:var(--text); border:1px solid var(--line2);
  padding:9px 12px; font-size:.9rem; font-family:inherit; outline:none;
}
.ssp-busca input:focus { border-color:var(--blue); }
.ssp-busca button {
  background:linear-gradient(160deg,var(--blue),#2b5fd0); color:#fff; border:1px solid #4f86ff;
  border-radius:0 9px 9px 0; padding:9px 16px; font-size:.84rem; font-weight:700; cursor:pointer;
}
.ssp-busca button:hover { filter:brightness(1.1); }
.ssp-user { display:flex; align-items:center; gap:9px; font-size:.86rem; font-weight:600; flex:none; }
.ssp-user img { width:28px; height:28px; border-radius:50%; border:1px solid var(--line2); }
.ssp-user .nm { max-width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ssp-sair {
  padding:6px 12px; border-radius:7px; font-size:.78rem; font-weight:600;
  border:1px solid var(--line2); color:var(--dim);
}
.ssp-sair:hover { border-color:var(--bad); color:#ffd0d6; }

/* ----- Navegação ----- */
.ssp-nav {
  display:flex; gap:4px; padding:0 clamp(14px,3vw,36px); border-bottom:1px solid var(--line);
  background:var(--bg2); overflow-x:auto;
}
.ssp-nav a {
  padding:13px 16px; font-size:.86rem; font-weight:600; color:var(--dim);
  border-bottom:2px solid transparent; white-space:nowrap;
}
.ssp-nav a:hover { color:var(--text); }
.ssp-nav a.on { color:var(--blue-soft); border-bottom-color:var(--blue); }

/* ----- Conteúdo ----- */
.ssp-main { max-width:1320px; margin:0 auto; padding:clamp(20px,4vw,38px) clamp(14px,3vw,36px) 80px; }
.ssp-h1 {
  font-size:1.18rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; margin-bottom:4px;
}
.ssp-h1 em { font-style:normal; color:var(--blue-soft); }
.ssp-sub { color:var(--mute); font-size:.85rem; margin-bottom:20px; }
.ssp-flash {
  margin-bottom:18px; padding:12px 15px; border-radius:9px; font-size:.9rem;
  background:rgba(61,125,255,.1); border:1px solid var(--line2); color:var(--blue-soft);
}
.ssp-sec {
  margin:26px 0 12px; font-size:.74rem; font-weight:700; letter-spacing:.15em;
  text-transform:uppercase; color:var(--mute);
}

/* ----- Identidade do agente ----- */
.ssp-ident {
  display:flex; align-items:center; gap:14px; padding:16px 20px;
  background:linear-gradient(170deg,var(--panel2),var(--panel));
  border:1px solid var(--line2); border-radius:13px;
}
.ssp-ident .bdg {
  width:46px; height:46px; flex:none; border-radius:10px; color:var(--blue);
  display:flex; align-items:center; justify-content:center;
  background:rgba(61,125,255,.1); border:1px solid var(--line2);
}
.ssp-ident .bdg svg { width:24px; height:24px; }
.ssp-ident h2 { font-size:1.05rem; font-weight:800; }
.ssp-ident .corp { color:var(--gold); font-size:.84rem; font-weight:600; margin-top:2px; }
.ssp-ident .caps { display:flex; flex-wrap:wrap; gap:6px; margin-left:auto; }
.ssp-ident .caps span {
  font-size:.68rem; font-weight:700; padding:4px 9px; border-radius:5px;
  background:rgba(61,125,255,.12); border:1px solid var(--line2); color:var(--blue-soft);
}

/* ----- Tiles de estatística ----- */
.ssp-stats { display:grid; gap:13px; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); margin-top:14px; }
.ssp-tile {
  background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:18px 20px;
}
.ssp-tile .n { font-size:1.9rem; font-weight:800; line-height:1; }
.ssp-tile .l { color:var(--mute); font-size:.78rem; font-weight:600; margin-top:7px;
  text-transform:uppercase; letter-spacing:.06em; }
.ssp-tile.is-bad .n { color:var(--bad); }
.ssp-tile.is-warn .n { color:var(--gold); }
.ssp-tile.is-ok .n { color:var(--ok); }
@keyframes ssp-pulse { 0%,100% { opacity:1; } 50% { opacity:.3; } }

/* ----- Painéis ----- */
.ssp-cols { display:grid; gap:16px; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); }
.ssp-dash { display:grid; gap:16px; grid-template-columns:1fr 380px; align-items:start; }
.ssp-online-c {
  background:rgba(63,185,80,.15); color:var(--ok); font-size:.78rem; font-weight:700;
  border-radius:20px; padding:1px 9px; min-width:22px; text-align:center;
}
.ssp-online-list { display:flex; flex-direction:column; max-height:560px; overflow-y:auto; }
.ssp-on-row {
  display:flex; align-items:center; gap:9px; padding:8px 4px;
  font-size:.9rem; border-bottom:1px solid var(--line);
}
.ssp-on-row:last-child { border-bottom:0; }
.ssp-on-row .nm { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ssp-on-row .dot {
  width:8px; height:8px; border-radius:50%; flex:none; background:var(--ok);
  box-shadow:0 0 6px var(--ok); animation:ssp-pulse 2s ease-in-out infinite;
}
.ssp-on-empty { color:var(--mute); font-size:.86rem; padding:8px 4px; font-style:italic; }
/* ----- Policiais em serviço (efetivo) ----- */
.ssp-ef-busca {
  width:100%; margin-bottom:10px; background:var(--bg2); color:var(--text);
  border:1px solid var(--line2); border-radius:8px; padding:7px 10px;
  font-size:.82rem; outline:none;
}
.ssp-ef-busca::placeholder { color:var(--mute); }
.ssp-ef-busca:focus { border-color:var(--blue); }
.ssp-on-row .grow { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.ssp-on-row .ttl { display:flex; align-items:center; gap:7px; font-weight:600; font-size:.88rem; }
.ssp-on-row .nm { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ssp-on-row .ssp-pp {
  flex:none; font-family:'Consolas',monospace; font-size:.72rem; color:var(--blue-soft);
  background:rgba(61,125,255,.12); border:1px solid var(--line2); border-radius:5px; padding:1px 7px;
}
.ssp-on-row .ssp-pc { flex:none; width:15px; height:15px; color:var(--blue-soft); }
.ssp-on-row .meta {
  color:var(--mute); font-size:.76rem;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.ssp-on-row.is-site { background:rgba(61,125,255,.06); }
.ssp-on-row.is-site .ssp-pp { background:rgba(61,125,255,.22); color:#cfe0ff; }
/* Barra de rolagem temada (azul/dark) */
.ssp-online-list { scrollbar-width:thin; scrollbar-color:var(--line2) transparent; padding-right:4px; }
.ssp-online-list::-webkit-scrollbar { width:8px; }
.ssp-online-list::-webkit-scrollbar-track { background:transparent; }
.ssp-online-list::-webkit-scrollbar-thumb { background:var(--line2); border-radius:8px; }
.ssp-online-list::-webkit-scrollbar-thumb:hover { background:var(--blue); }
/* Cor por corporação: PC=preto · PM=azul · Federal=amarelo · GCM=branco */
.ssp-corp {
  display:inline-block; font-size:.66rem; font-weight:700; letter-spacing:.02em;
  padding:1px 6px; border-radius:4px; border:1px solid transparent; vertical-align:middle;
}
.ssp-corp.corp-pm   { background:rgba(61,125,255,.18); color:#9fc0ff; border-color:rgba(61,125,255,.5); }
.ssp-corp.corp-fed  { background:rgba(224,176,74,.18); color:#f0cd82; border-color:rgba(224,176,74,.55); }
.ssp-corp.corp-gcm  { background:rgba(255,255,255,.92); color:#0a0e16; border-color:#ffffff; }
.ssp-corp.corp-pc   { background:#05070c; color:#e6e9f0; border-color:#33415e; }
.ssp-corp.corp-mute { background:var(--bg); color:var(--mute); border-color:var(--line); }
/* Linha em 2 níveis (Boletins/Prisões): título + data em cima; subtítulo full-width
   embaixo, passando por baixo da data — assim o texto usa a largura toda. */
.ssp-row.ssp-row--stack { display:block; }
.ssp-row.ssp-row--stack .ssp-r1 { display:flex; align-items:center; gap:10px; }
.ssp-row.ssp-row--stack .ssp-r1 .ttl { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ssp-row.ssp-row--stack .ssp-r1 .ssp-when,
.ssp-row.ssp-row--stack .ssp-r1 .ssp-tag { flex:none; }
.ssp-row.ssp-row--stack .meta { display:block; margin-top:3px; }
/* Linha do efetivo agora é clicável (abre a ficha) */
a.ssp-on-row { text-decoration:none; color:inherit; cursor:pointer; }
a.ssp-on-row:hover { background:rgba(61,125,255,.08); }
a.ssp-on-row:hover .nm { color:var(--blue-soft); }
/* Bloco "Atuação policial" na ficha */
.fic-pol-head { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.fic-pol-pat { font-weight:700; font-size:.95rem; color:var(--blue-soft); }
/* Lista longa com rolagem local + busca (ficha) */
.ssp-list.ssp-scroll {
  max-height:520px; overflow-y:auto; padding-right:4px;
  scrollbar-width:thin; scrollbar-color:var(--line2) transparent;
}
.ssp-list.ssp-scroll::-webkit-scrollbar { width:8px; }
.ssp-list.ssp-scroll::-webkit-scrollbar-track { background:transparent; }
.ssp-list.ssp-scroll::-webkit-scrollbar-thumb { background:var(--line2); border-radius:8px; }
.ssp-list.ssp-scroll::-webkit-scrollbar-thumb:hover { background:var(--blue); }
.ssp-filtro-local {
  width:100%; margin-bottom:10px; background:var(--bg2); color:var(--text);
  border:1px solid var(--line2); border-radius:8px; padding:6px 10px; font-size:.8rem; outline:none;
}
.ssp-filtro-local:focus { border-color:var(--blue); }
.ssp-filtro-local::placeholder { color:var(--mute); }
/* RH — botões de gestão (ficha) + aba Gestão */
.fic-pol-acoes { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 14px; }
.fic-pol-acoes form { margin:0; }
.ssp-btn-rh {
  border:1px solid var(--line2); background:var(--bg2); color:var(--text);
  border-radius:8px; padding:6px 14px; font-size:.82rem; font-weight:600; cursor:pointer;
}
.ssp-btn-rh:hover { filter:brightness(1.12); }
.ssp-btn-rh--ok   { border-color:rgba(43,212,126,.5); color:#7ee8b3; }
.ssp-btn-rh--warn { border-color:rgba(224,176,74,.5); color:#f0cd82; }
.ssp-btn-rh--bad  { border-color:rgba(255,84,104,.5); color:#ff9aa6; }
.ssp-btn-rh--hire { background:linear-gradient(160deg,var(--blue),#2b5fd0); color:#fff; border-color:#4f86ff; }
.ssp-gestao-bar { display:flex; align-items:center; gap:10px; }
.ssp-gestao-lbl { font-size:.8rem; color:var(--mute); }
.ssp-gestao-hire { display:flex; gap:8px; }
.ssp-gestao-hire input {
  flex:1; min-width:0; background:var(--bg2); color:var(--text);
  border:1px solid var(--line2); border-radius:8px; padding:7px 10px; font-size:.85rem; outline:none;
}
.ssp-gestao-hire input:focus { border-color:var(--blue); }
/* Remove as setas nativas do input number (ficavam "padrão do SO") */
.ssp-gestao-hire input[type=number]::-webkit-inner-spin-button,
.ssp-gestao-hire input[type=number]::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.ssp-gestao-hire input[type=number] { -moz-appearance:textfield; appearance:textfield; }
/* Dropdown próprio (no tema) — substitui o <select> nativo e sua barra de rolagem do SO */
.ssp-select { position:relative; display:inline-block; min-width:210px; }
.ssp-select-btn {
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:10px;
  background:var(--bg2); color:var(--text); border:1px solid var(--line2);
  border-radius:8px; padding:7px 12px; font-size:.85rem; cursor:pointer;
}
.ssp-select-btn svg { width:16px; height:16px; color:var(--mute); flex:none; transition:transform .15s ease; }
.ssp-select.open .ssp-select-btn { border-color:var(--blue); }
.ssp-select.open .ssp-select-btn svg { transform:rotate(180deg); }
.ssp-select-list {
  display:none; position:absolute; z-index:30; top:calc(100% + 4px); left:0; right:0;
  max-height:280px; overflow-y:auto;
  background:var(--panel2); border:1px solid var(--line2); border-radius:8px; padding:4px;
  box-shadow:0 12px 30px rgba(0,0,0,.5);
  scrollbar-width:thin; scrollbar-color:var(--line2) transparent;
}
.ssp-select.open .ssp-select-list { display:block; }
.ssp-select-list::-webkit-scrollbar { width:8px; }
.ssp-select-list::-webkit-scrollbar-track { background:transparent; }
.ssp-select-list::-webkit-scrollbar-thumb { background:var(--line2); border-radius:8px; }
.ssp-select-list::-webkit-scrollbar-thumb:hover { background:var(--blue); }
.ssp-select-opt {
  display:block; padding:7px 10px; border-radius:6px; color:var(--text);
  font-size:.85rem; text-decoration:none; white-space:nowrap;
}
.ssp-select-opt:hover { background:rgba(61,125,255,.12); color:var(--blue-soft); }
.ssp-select-opt.on { background:rgba(61,125,255,.18); color:var(--blue-soft); }
@media (max-width:880px) { .ssp-dash { grid-template-columns:1fr; } }
.ssp-panel {
  background:linear-gradient(170deg,var(--panel2),var(--panel));
  border:1px solid var(--line2); border-radius:13px; padding:18px 20px;
}
.ssp-panel > h3 {
  font-size:.95rem; font-weight:700; margin-bottom:12px;
  display:flex; align-items:center; justify-content:space-between;
}
.ssp-panel > h3 a { font-size:.76rem; font-weight:600; color:var(--blue-soft); }

/* ----- Listas ----- */
.ssp-list { display:flex; flex-direction:column; gap:7px; }
.ssp-row {
  display:flex; align-items:center; gap:11px; padding:10px 13px;
  background:var(--bg2); border:1px solid var(--line); border-radius:9px;
}
a.ssp-row:hover { border-color:var(--line2); background:var(--panel); }
.ssp-row .ttl { font-weight:600; font-size:.9rem; }
.ssp-row .meta { color:var(--mute); font-size:.78rem; margin-top:2px; }
.ssp-row .grow { flex:1; min-width:0; display:flex; flex-direction:column; }
.ssp-row .grow .ttl, .ssp-row .grow .meta { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ssp-row .rt { text-align:right; flex:none; }
/* Variante p/ conteúdo que deve aparecer inteiro (ex.: artigos das multas). */
.ssp-row--wrap { align-items:flex-start; }
.ssp-row--wrap .grow .ttl,
.ssp-row--wrap .grow .meta { white-space:normal; overflow:visible; text-overflow:clip; }
/* Linha de procurado: clica para expandir e ler o motivo inteiro. */
.ssp-proc { cursor:pointer; }
.ssp-proc:hover { border-color:var(--line2); }
.ssp-proc.aberto { align-items:flex-start; }
.ssp-proc.aberto .grow .ttl,
.ssp-proc.aberto .grow .meta { white-space:normal; overflow:visible; text-overflow:clip; }
.ssp-exp { flex:none; color:var(--mute); font-size:.95rem; line-height:1; transition:transform .15s ease; }
.ssp-proc.aberto .ssp-exp { transform:rotate(90deg); }
.ssp-pp {
  font-family:'Consolas',monospace; font-size:.78rem; color:var(--mute);
  background:var(--bg); border:1px solid var(--line); border-radius:5px; padding:3px 7px; flex:none;
}
.ssp-when {
  flex:none; white-space:nowrap; color:var(--mute);
  font-size:.74rem; font-family:'Consolas',monospace;
}

/* ----- Badges ----- */
.ssp-tag {
  font-size:.68rem; font-weight:700; padding:3px 8px; border-radius:5px;
  text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; flex:none;
}
.ssp-tag--bad  { background:rgba(255,84,104,.16); color:#ff9aa6; border:1px solid rgba(255,84,104,.4); }
.ssp-tag--ok   { background:rgba(43,212,126,.14); color:#7ee8b3; border:1px solid rgba(43,212,126,.36); }
.ssp-tag--warn { background:rgba(224,176,74,.14); color:#f0cd82; border:1px solid rgba(224,176,74,.36); }
.ssp-tag--info { background:rgba(61,125,255,.14); color:var(--blue-soft); border:1px solid var(--line2); }
.ssp-tag--mute { background:var(--bg); color:var(--mute); border:1px solid var(--line); }

/* ----- Estados ----- */
.ssp-empty { color:var(--mute); font-size:.88rem; font-style:italic; padding:14px 4px; }
.ssp-construcao {
  text-align:center; padding:60px 20px; color:var(--mute);
  background:var(--panel); border:1px dashed var(--line2); border-radius:13px;
}
.ssp-construcao b { display:block; font-size:1.05rem; color:var(--dim); margin-bottom:6px; }

/* ----- Telas de bloqueio (login / negado) ----- */
.ssp-gate-wrap {
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px;
}
.ssp-card {
  max-width:440px; width:100%; text-align:center;
  background:linear-gradient(170deg,var(--panel2),var(--panel));
  border:1px solid var(--line2); border-radius:16px; padding:42px 34px 36px;
  box-shadow:0 30px 70px rgba(0,0,0,.55);
}
.ssp-card .big-shield {
  width:78px; height:78px; margin:0 auto; border-radius:50%;
  display:flex; align-items:center; justify-content:center; color:var(--blue);
  background:radial-gradient(circle at 35% 25%,rgba(61,125,255,.3),rgba(61,125,255,.04));
  border:1px solid var(--line2);
}
.ssp-card .big-shield svg { width:38px; height:38px; }
.ssp-card .big-shield.is-bad  { color:var(--bad);
  background:radial-gradient(circle at 35% 25%,rgba(255,84,104,.28),rgba(255,84,104,.04)); }
.ssp-card .big-shield.is-warn { color:var(--gold);
  background:radial-gradient(circle at 35% 25%,rgba(224,176,74,.26),rgba(224,176,74,.04)); }
.ssp-card h1 { font-size:1.4rem; font-weight:800; letter-spacing:.04em; margin-top:16px; text-transform:uppercase; }
.ssp-card p { color:var(--dim); font-size:.94rem; line-height:1.6; margin-top:12px; }
.ssp-btn {
  display:inline-flex; align-items:center; gap:9px; justify-content:center; width:100%;
  margin-top:22px; padding:13px 20px; border-radius:10px; font-weight:700; font-size:.95rem;
  background:linear-gradient(160deg,var(--blue),#2b5fd0); color:#fff; border:1px solid #4f86ff; cursor:pointer;
}
.ssp-btn:hover { filter:brightness(1.1); }
.ssp-btn svg { width:20px; height:20px; }
.ssp-btn--ghost { background:none; color:var(--dim); border:1px solid var(--line2); }
.ssp-btn--ghost:hover { border-color:var(--bad); color:#ffd0d6; filter:none; }
.ssp-aviso {
  display:flex; gap:10px; align-items:flex-start; text-align:left;
  margin-top:18px; padding:13px 15px; border-radius:10px; font-size:.85rem; line-height:1.55;
  background:rgba(224,176,74,.09); border:1px solid rgba(224,176,74,.35); color:var(--dim);
}
.ssp-aviso svg { width:20px; height:20px; flex:none; color:var(--gold); margin-top:1px; }
.ssp-aviso b { color:var(--gold); }
.ssp-aviso--erro { background:rgba(255,84,104,.1); border-color:rgba(255,84,104,.4); color:#ff9aa6; }
.ssp-aviso--erro b { color:#ff9aa6; }

/* ----- Gerador de BO ----- */
.cb-wrap { display:grid; gap:18px; grid-template-columns:1.05fr .95fr; align-items:start; }
.cb-form { display:flex; flex-direction:column; gap:14px; }
.cb-sec {
  background:linear-gradient(170deg,var(--panel2),var(--panel));
  border:1px solid var(--line2); border-radius:12px; padding:16px 18px;
}
.cb-sec > h3 { font-size:.88rem; font-weight:700; margin-bottom:11px; color:var(--blue-soft); }
.cb-field { margin-bottom:11px; }
.cb-field:last-child { margin-bottom:0; }
.cb-field > label {
  display:block; font-size:.72rem; font-weight:700; letter-spacing:.05em;
  text-transform:uppercase; color:var(--mute); margin-bottom:5px;
}
.cb-inp {
  width:100%; background:var(--bg2); color:var(--text); border:1px solid var(--line2);
  border-radius:8px; padding:9px 12px; font-size:.9rem; font-family:inherit; outline:none;
}
.cb-inp:focus { border-color:var(--blue); }
textarea.cb-inp { min-height:120px; resize:vertical; line-height:1.55; }
.cb-grid2 { display:grid; gap:11px; grid-template-columns:1fr 1fr; }
.cb-rows { display:flex; flex-direction:column; gap:8px; }
.cb-row { display:flex; gap:7px; }
.cb-row .cb-inp { flex:1; min-width:0; }
.cb-row .cb-sm { flex:none; width:140px; }
.cb-del {
  flex:none; width:38px; border:1px solid var(--line2); background:var(--bg2);
  color:var(--mute); border-radius:8px; cursor:pointer; font-size:1.05rem; line-height:1;
}
.cb-del:hover { border-color:var(--bad); color:#ffd0d6; }
.cb-add {
  align-self:flex-start; margin-top:9px; background:none; border:1px dashed var(--line2);
  color:var(--blue-soft); border-radius:8px; padding:8px 14px; font-size:.81rem; font-weight:600; cursor:pointer;
}
.cb-add:hover { border-color:var(--blue); }
.cb-preview { position:sticky; top:80px; }
.cb-saida {
  background:#05070c; border:1px solid var(--line2); border-radius:12px; padding:18px;
  font-family:'Consolas','Courier New',monospace; font-size:.79rem; line-height:1.5;
  color:#cfe0ff; white-space:pre-wrap; word-break:break-word;
  min-height:320px; max-height:64vh; overflow:auto;
}
.cb-acoes { display:flex; gap:9px; margin-top:11px; }
.cb-dica { font-size:.8rem; color:var(--mute); margin-bottom:11px; line-height:1.5; }
.cb-fatos { display:grid; gap:8px 14px; grid-template-columns:repeat(auto-fill,minmax(205px,1fr)); }
.cb-ck { display:flex; align-items:center; gap:8px; font-size:.85rem; color:var(--dim); cursor:pointer; }
.cb-ck input { accent-color:var(--blue); width:15px; height:15px; flex:none; cursor:pointer; }
.cb-regen {
  margin-left:8px; background:none; border:1px solid var(--line2); color:var(--blue-soft);
  border-radius:6px; padding:3px 9px; font-size:.7rem; font-weight:600; cursor:pointer;
  text-transform:none; letter-spacing:0;
}
.cb-regen:hover { border-color:var(--blue); }
.cb-ac-list {
  position:absolute; z-index:60; max-height:240px; overflow:auto;
  background:var(--panel); border:1px solid var(--line2); border-radius:8px;
  box-shadow:0 14px 32px rgba(0,0,0,.55);
}
.cb-ac-item {
  display:flex; justify-content:space-between; align-items:center; gap:10px;
  padding:8px 12px; font-size:.86rem; cursor:pointer;
}
.cb-ac-item b { color:var(--mute); font-family:'Consolas',monospace; font-size:.77rem; font-weight:600; }
.cb-ac-item:hover, .cb-ac-item.on { background:var(--panel2); }
.cb-ac-item:hover b, .cb-ac-item.on b { color:var(--blue-soft); }
@media (max-width:880px) { .cb-wrap { grid-template-columns:1fr; } .cb-preview { position:static; } }

/* ----- Ficha do cidadão ----- */
.fic-head {
  display:flex; gap:18px; align-items:center; padding:20px 22px;
  background:linear-gradient(170deg,var(--panel2),var(--panel));
  border:1px solid var(--line2); border-radius:14px;
}
.fic-head.is-wanted { border-color:rgba(255,84,104,.5); }
.fic-foto {
  width:78px; height:78px; border-radius:12px; flex:none;
  border:1px solid var(--line2); background:var(--bg2); object-fit:cover;
}
.fic-foto-vazia { display:flex; align-items:center; justify-content:center; color:var(--mute); }
.fic-foto-vazia svg { width:36px; height:36px; }
.fic-head h1 { font-size:1.32rem; font-weight:800; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.fic-head h1 .pp {
  font-family:'Consolas',monospace; font-size:.78rem; font-weight:600; color:var(--mute);
  background:var(--bg); border:1px solid var(--line); border-radius:6px; padding:3px 9px;
}
.fic-head .meta { color:var(--dim); font-size:.87rem; margin-top:5px; }
.fic-wanted {
  margin-top:14px; padding:14px 18px; border-radius:11px;
  background:rgba(255,84,104,.1); border:1px solid rgba(255,84,104,.42);
}
.fic-wanted b { color:#ff9aa6; font-size:.8rem; letter-spacing:.09em; }
.fic-wanted p { color:var(--text); font-size:.95rem; margin-top:5px; }
.fic-wanted .sub { color:var(--mute); font-size:.78rem; }
.fic-grid { display:grid; grid-template-columns:auto 1fr; gap:9px 16px; font-size:.87rem; }
.fic-grid dt { color:var(--mute); white-space:nowrap; }
.fic-grid dd { color:var(--text); font-weight:600; text-align:right; }

/* ----- Boletim: detalhe + formulário ----- */
.bo-acoes { display:flex; gap:9px; flex-wrap:wrap; margin-bottom:16px; }
.bo-btn {
  display:inline-flex; align-items:center; gap:7px; padding:9px 16px; border-radius:9px;
  font-size:.85rem; font-weight:700; cursor:pointer; border:1px solid var(--line2);
  background:var(--panel); color:var(--text);
}
.bo-btn:hover { border-color:var(--line2); filter:brightness(1.15); }
.bo-btn--primary { background:linear-gradient(160deg,var(--blue),#2b5fd0); border-color:#4f86ff; color:#fff; }
.bo-btn--danger:hover { border-color:var(--bad); color:#ffd0d6; }
.ssp-filtro { display:flex; align-items:stretch; gap:0; flex:1; max-width:460px; }
.ssp-filtro input {
  flex:1; min-width:0; background:var(--bg2); color:var(--text);
  border:1px solid var(--line2); border-right:0; border-radius:9px 0 0 9px;
  padding:10px 13px; font-size:.9rem; font-family:inherit; outline:none;
}
.ssp-filtro input:focus { border-color:var(--blue); }
.ssp-filtro button {
  flex:none; background:linear-gradient(160deg,var(--blue),#2b5fd0); color:#fff;
  border:1px solid #4f86ff; border-radius:0 9px 9px 0;
  padding:10px 20px; font-size:.85rem; font-weight:700; font-family:inherit; cursor:pointer;
}
.ssp-filtro button:hover { filter:brightness(1.1); }
.bo-texto {
  white-space:normal; line-height:1.62; font-size:.94rem; color:var(--text);
  background:var(--bg2); border:1px solid var(--line); border-radius:10px; padding:16px 18px;
}
.bo-pessoas { display:flex; flex-wrap:wrap; gap:7px; }
.bo-pessoas a, .bo-pessoas span {
  font-size:.82rem; padding:5px 10px; border-radius:6px;
  background:var(--bg2); border:1px solid var(--line);
}
.bo-pessoas a:hover { border-color:var(--blue); color:var(--blue-soft); }
.ssp-form { display:flex; flex-direction:column; gap:14px; max-width:680px; }
.ssp-form label { display:block; font-size:.82rem; font-weight:700; color:var(--dim);
  text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px; }
.ssp-form input[type=text], .ssp-form textarea {
  width:100%; background:var(--bg2); color:var(--text); border:1px solid var(--line2);
  border-radius:9px; padding:10px 13px; font-size:.92rem; font-family:inherit; outline:none;
}
.ssp-form input[type=text]:focus, .ssp-form textarea:focus { border-color:var(--blue); }
.ssp-form textarea { min-height:170px; resize:vertical; line-height:1.55; }
.ssp-form .hint { font-size:.78rem; color:var(--mute); margin-top:5px; }
.ssp-form .row2 { display:grid; gap:14px; grid-template-columns:1fr 1fr; }
.ssp-form .ck { display:flex; align-items:center; gap:8px; font-size:.9rem; }
.ssp-form .acoes { display:flex; gap:10px; margin-top:6px; }

@media (max-width:720px) {
  .ssp-top { flex-wrap:wrap; }
  .ssp-busca { order:3; max-width:none; width:100%; margin-left:0; }
}
