:root {
  --azul: #0b1a3a;
  --azul-escuro: #060f24;
  --azul-claro: #2e7cf0;
  --laranja: #2e7cf0;
  --cinza: #f4f6fb;
  --borda: #dde3ee;
  --texto: #1a2333;
  --erro: #c0392b;
  --sucesso: #1e824c;
}

* { box-sizing: border-box; }

img { max-width: 100%; height: auto; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  background: var(--cinza);
  color: var(--texto);
  margin: 0;
}

.topbar {
  background: linear-gradient(135deg, var(--azul-escuro), var(--azul));
  color: #fff;
  padding: 16px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.topbar .brand { display: flex; align-items: center; gap: 10px; }
.topbar .brand img { height: 32px; width: auto; display: block; }

.topbar h1 {
  font-size: 18px;
  margin: 0;
  font-weight: 600;
}

.topbar nav a {
  color: #fff;
  text-decoration: none;
  margin-left: 18px;
  font-size: 14px;
  opacity: 0.85;
}

.topbar nav a:hover,
.topbar nav a.active {
  opacity: 1;
  border-bottom: 2px solid var(--laranja);
}

.container {
  max-width: 960px;
  margin: 24px auto;
  padding: 0 16px;
}

.card {
  background: #fff;
  border: 1px solid var(--borda);
  border-radius: 8px;
  padding: 24px;
  margin-bottom: 20px;
}

.card h2 {
  margin-top: 0;
  font-size: 16px;
  color: var(--azul);
}

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.grid .full { grid-column: 1 / -1; }

label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 4px;
  color: #4a5a6a;
}

input[type=text], input[type=file], select {
  width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--borda);
  border-radius: 6px;
  font-size: 14px;
  background: #fff;
}

input:focus, select:focus {
  outline: none;
  border-color: var(--laranja);
}

button, .btn {
  background: var(--laranja);
  color: #fff;
  border: none;
  padding: 10px 18px;
  border-radius: 6px;
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
  text-decoration: none;
  display: inline-block;
}

button:hover, .btn:hover { opacity: 0.9; }

.btn-secondary {
  background: #fff;
  border: 1px solid var(--borda);
  color: var(--texto);
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

th, td {
  text-align: left;
  padding: 10px 8px;
  border-bottom: 1px solid var(--borda);
}

th { color: #5a6b7a; font-size: 12px; text-transform: uppercase; }

.badge {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 10px;
  background: #eef1f5;
  color: #556;
}

.msg {
  padding: 10px 14px;
  border-radius: 6px;
  margin-bottom: 16px;
  font-size: 14px;
}

.msg.sucesso { background: #eafaf1; color: var(--sucesso); border: 1px solid #b7e4c7; }
.msg.erro { background: #fdecea; color: var(--erro); border: 1px solid #f5c2c0; }

.filtros { display: flex; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.filtros input, .filtros select { width: auto; min-width: 160px; }

.acoes a { margin-right: 10px; font-size: 13px; }

/* Paginação corrigida para bases grandes */
.paginacao {
  margin-top: 16px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  max-width: 100%;
  overflow-x: auto;
  padding-bottom: 6px;
}

.paginacao .btn {
  min-width: 42px;
  text-align: center;
  white-space: nowrap;
}

.paginacao .disabled {
  opacity: 0.45;
  pointer-events: none;
}

.paginacao-reticencias,
.paginacao-info {
  color: #6b7785;
  font-size: 13px;
  padding: 8px 4px;
  white-space: nowrap;
}

table {
  table-layout: auto;
}

@media (max-width: 768px) {
  .container { padding: 0 8px; }
  .card { padding: 14px; }
  .filtros { flex-direction: column; }
  .filtros input, .filtros select, .filtros button, .filtros .btn { width: 100%; }
  table { font-size: 12px; }
  th, td { padding: 8px 6px; }
}

/* ---------------- Contadores ---------------- */
.stats-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 20px;
}

.stat-card {
  background: #fff;
  border: 1px solid var(--borda);
  border-radius: 8px;
  padding: 18px;
  text-align: center;
}

.stat-num {
  font-size: 26px;
  font-weight: 700;
  color: var(--azul);
}

.stat-label {
  font-size: 12px;
  color: #6b7785;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-top: 4px;
}

@media (max-width: 768px) {
  .stats-row { grid-template-columns: 1fr; }
}

/* ---------------- Pesquisa instantânea ---------------- */
.busca-instantanea {
  position: relative;
}

.busca-instantanea input {
  font-size: 15px;
  padding: 12px 14px;
}

.sugestoes-dropdown {
  display: none;
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 4px);
  background: #fff;
  border: 1px solid var(--borda);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(30,58,95,0.12);
  max-height: 340px;
  overflow-y: auto;
  z-index: 20;
}

.sugestao-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 14px;
  text-decoration: none;
  color: var(--texto);
  border-bottom: 1px solid #f0f2f5;
}

.sugestao-item:last-child { border-bottom: none; }
.sugestao-item:hover { background: var(--cinza); }
.sugestao-item span { font-size: 12px; color: #6b7785; }
.sugestao-vazia { color: #9aa5b1; cursor: default; }
.sugestao-vazia:hover { background: none; }

.export-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0;
}
.btn-whatsapp {
  background: #128c7e;
  border-color: #128c7e;
}
.btn-small {
  padding: 6px 10px;
  font-size: 13px;
}
.hint {
  font-size: 14px;
  color: #5a6b7a;
}
textarea {
  width: 100%;
  border: 1px solid var(--borda);
  border-radius: 6px;
  padding: 10px;
  font: inherit;
  resize: vertical;
}
.checkline {
  display: flex;
  align-items: end;
  padding-bottom: 8px;
}
.checkline label {
  font-weight: 500;
}
@media (max-width: 720px) {
  .export-actions .btn, .export-actions button { width: 100%; text-align: center; }
}

/* ===== Módulo Pesquisa WhatsApp ===== */
.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.page-head h2{margin:0 0 4px}.page-head p{margin:0;color:#6b7785}.dash-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:16px 0}.stat-card{background:#fff;border:1px solid var(--borda);border-radius:14px;padding:18px;box-shadow:0 8px 20px rgba(16,24,40,.05)}.stat-card span{font-size:13px;color:#6b7785}.stat-card strong{display:block;font-size:28px;margin-top:8px;color:var(--azul)}.badge{display:inline-block;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;text-transform:uppercase}.badge.ativa{background:#dff7e8;color:#176b3a}.badge.rascunho{background:#fff4d6;color:#8a6200}.badge.encerrada{background:#eee;color:#555}.actions{white-space:nowrap}.btn.small{padding:7px 10px;font-size:12px;margin:2px}.btn.danger{background:#c0392b;color:#fff}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full,.full{grid-column:1/-1}.form-grid label{font-weight:600;font-size:14px}.form-grid input,.form-grid select,.form-grid textarea,.question textarea,.question input[type=text]{width:100%;margin-top:6px;border:1px solid var(--borda);border-radius:10px;padding:10px;font:inherit}.check{display:flex;align-items:center;gap:8px}.question-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--borda)}.question{margin:18px 0;padding:14px;border:1px solid var(--borda);border-radius:12px;background:#fbfcfd}.option{display:block;margin-top:10px;font-weight:600;color:#12182b;font-size:15.5px}
.option input{margin-right:6px;transform:scale(1.15);vertical-align:middle}.campaign-img{max-width:100%;border-radius:12px;margin:10px 0}.public-form{max-width:760px}.success-box{text-align:center;margin-top:40px}.fullbtn{width:100%;font-size:16px;padding:14px}.alerta{background:#fff7dd;border:1px solid #f2d180;padding:12px;border-radius:10px;color:#705100}.table-wrap{overflow:auto}
@media(max-width:800px){.dash-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.page-head{display:block}.actions{white-space:normal}.topbar{display:block}.topbar nav a{display:inline-block;margin:8px 10px 0 0}}

/* --- módulo de pesquisa: partido, link público e edição de candidatos --- */
.partido-tag{display:inline-block;background:var(--cinza);border:1px solid var(--borda);border-radius:6px;padding:1px 6px;font-size:11px;font-weight:700;color:var(--azul);margin-left:4px;vertical-align:middle}
.link-box{display:flex;gap:8px;align-items:center}
.link-box input{flex:1;border:1px solid var(--borda);border-radius:8px;padding:10px;font:inherit;background:var(--cinza)}
.question-block{border-bottom:1px solid var(--borda);padding:14px 0}
.question-block:last-child{border-bottom:none}
.opcoes-lista{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.opcao-row{display:flex;gap:6px;align-items:center}
.opcao-row input[type=text]{border:1px solid var(--borda);border-radius:8px;padding:8px;font:inherit}
.opcao-row input[type=text]:not(.partido-input){flex:2}
.partido-input{flex:1;max-width:140px}
.opcao-row.nova{margin-top:6px;padding-top:8px;border-top:1px dashed var(--borda)}

/* --- tela inicial: cards de módulo --- */
.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:8px}
.module-card{background:#fff;border:1px solid var(--borda);border-radius:14px;padding:24px;text-decoration:none;color:var(--texto);box-shadow:0 8px 20px rgba(16,24,40,.05);transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column;gap:8px}
.module-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(16,24,40,.09)}
.module-icon{font-size:32px}
.module-card h2{margin:0;font-size:18px;color:var(--azul)}
.module-card p{margin:0;font-size:14px;color:#5b6875;line-height:1.4}
.module-stats{display:flex;gap:20px;margin-top:8px;font-size:13px;color:#5b6875}
.module-stats strong{color:var(--azul);font-size:16px;margin-right:4px}
@media(max-width:800px){.module-grid{grid-template-columns:1fr}}

/* --- pesquisa anônima --- */
.alerta-suave{background:#eef4fb;border:1px solid #cfe0f5;color:var(--azul);padding:10px 14px;border-radius:10px;font-size:13px;margin:10px 0}

/* --- marca E-Pesquisas no formulário público --- */
.public-form-logo{display:block;width:140px;max-width:45%;margin:0 auto 18px}
.campaign-img{max-width:100%;height:auto;border-radius:12px;margin:10px 0;display:block}

/* --- responsividade mobile (telas pequenas) --- */
@media (max-width: 600px) {
  .public-form-logo{width:100px}
  .link-box{flex-direction:column;align-items:stretch}
  .link-box button{width:100%}
  .opcao-row{flex-wrap:wrap}
  .opcao-row input[type=text]:not(.partido-input){flex:1 1 100%}
  .partido-input{flex:1 1 100%;max-width:none}
  .opcao-row button{flex:1 1 auto}
  .module-icon{font-size:28px}
  .card{padding:16px}
  .topbar h1{font-size:16px}
  .public-form h1{font-size:22px}
  .dash-grid{grid-template-columns:1fr}
}


/* ===== Login administrativo ===== */
.login-body{min-height:100vh;background:linear-gradient(135deg,#eef4fb 0%,#f8fafc 48%,#e9f5f1 100%);display:grid;place-items:center;padding:24px}.login-shell{width:min(440px,100%)}.login-card{background:#fff;border:1px solid rgba(30,58,95,.12);border-radius:24px;padding:34px;box-shadow:0 24px 70px rgba(20,39,67,.14)}.login-logo{display:block;width:155px;max-height:90px;object-fit:contain;margin:0 auto 22px}.login-copy{text-align:center;margin-bottom:24px}.eyebrow{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#16745b;margin-bottom:7px}.login-copy h1{font-size:26px;margin:0 0 8px;color:var(--azul)}.login-copy p{margin:0;color:#667085;line-height:1.5}.login-card label{display:block;font-size:14px;font-weight:700;margin-bottom:8px}.password-wrap{display:flex;border:1px solid var(--borda);border-radius:12px;overflow:hidden;background:#fff}.password-wrap:focus-within{border-color:var(--azul);box-shadow:0 0 0 3px rgba(30,58,95,.10)}.password-wrap input{border:0!important;outline:0;flex:1;padding:13px 14px;font:inherit;min-width:0}.password-toggle{border:0;background:#f3f6f9;color:var(--azul);font-weight:700;padding:0 14px;cursor:pointer}.login-button{width:100%;margin-top:16px;padding:13px}.login-error{background:#fff0f0;border:1px solid #efb6b6;color:#9b2525;border-radius:10px;padding:11px 13px;margin-bottom:16px;font-size:14px}.login-security{text-align:center;color:#7a8794;font-size:12px;margin:18px 0 0}

/* ===== Dashboard executivo ===== */
.logout-link{color:#b42318!important}.executive-dashboard{padding-bottom:38px}.executive-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:8px 0 22px}.executive-head h2{font-size:30px;margin:0 0 5px;color:var(--azul)}.executive-head p{margin:0;color:#667085}.head-actions{display:flex;gap:9px}.executive-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.kpi-card{background:#fff;border:1px solid var(--borda);border-radius:16px;padding:18px;display:flex;gap:13px;align-items:flex-start;box-shadow:0 8px 24px rgba(16,24,40,.045)}.kpi-card.kpi-primary{background:linear-gradient(145deg,var(--azul),#2b5f91);color:#fff;border:0}.kpi-icon{width:43px;height:43px;border-radius:12px;background:#edf3f8;display:grid;place-items:center;font-size:20px;flex:none}.kpi-primary .kpi-icon{background:rgba(255,255,255,.16)}.kpi-card span{display:block;font-size:13px;color:#667085}.kpi-card strong{display:block;font-size:27px;line-height:1.1;color:var(--azul);margin:5px 0}.kpi-card small{display:block;color:#8793a1;font-size:11.5px}.kpi-primary span,.kpi-primary strong,.kpi-primary small{color:#fff}.kpi-primary small{opacity:.78}.dashboard-columns{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.75fr);gap:18px;margin-bottom:18px}.lower-grid{grid-template-columns:minmax(0,1.35fr) minmax(320px,.85fr)}.executive-panel{padding:20px;border-radius:16px}.panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-title h3{margin:0 0 4px;color:var(--azul);font-size:17px}.panel-title p{margin:0;color:#7a8794;font-size:12px}.panel-title>a{font-size:13px;font-weight:700;text-decoration:none;color:var(--azul)}.live-pill{font-size:11px;color:#16745b;background:#e8f7f1;border-radius:999px;padding:6px 9px}.bar-chart{height:230px;display:flex;align-items:stretch;gap:12px;padding-top:12px}.bar-item{flex:1;min-width:24px;display:flex;flex-direction:column;align-items:center;gap:7px}.bar-track{width:min(42px,82%);flex:1;background:#f0f3f6;border-radius:9px 9px 4px 4px;display:flex;align-items:flex-end;overflow:hidden}.bar-fill{width:100%;background:linear-gradient(180deg,#3a7ab5,var(--azul));border-radius:9px 9px 4px 4px;min-height:5px}.bar-value{font-size:11px;font-weight:800;color:var(--azul)}.bar-item small{font-size:10px;color:#7a8794}.ranking-list{display:flex;flex-direction:column;gap:14px}.ranking-row{display:flex;align-items:center;gap:11px}.ranking-position{width:28px;height:28px;border-radius:9px;background:#edf3f8;color:var(--azul);font-weight:800;font-size:12px;display:grid;place-items:center}.ranking-info{flex:1}.ranking-info>div:first-child{display:flex;justify-content:space-between;gap:8px;font-size:12px}.ranking-info span{color:#667085}.progress{height:6px;background:#edf1f4;border-radius:99px;margin-top:7px;overflow:hidden}.progress i{display:block;height:100%;background:var(--azul);border-radius:99px}.compact-table table{width:100%}.compact-table td,.compact-table th{padding:11px 8px}.compact-table td:first-child strong{display:block}.compact-table td:first-child small{display:block;color:#8a96a3;font-size:10px;margin-top:3px}.table-action{text-decoration:none;font-size:12px;font-weight:700;color:var(--azul);white-space:nowrap}.activity-list{display:flex;flex-direction:column}.activity-item{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid #edf0f2;text-decoration:none;color:inherit}.activity-item:last-child{border-bottom:0}.activity-dot{width:8px;height:8px;border-radius:50%;background:#2e8b70;box-shadow:0 0 0 4px #e6f4ef}.activity-item strong{display:block;font-size:12px;color:#25364b}.activity-item p{margin:3px 0 0;font-size:11px;color:#7d8996}.activity-item time{font-size:10px;color:#8a96a3;white-space:nowrap}.empty-state{font-size:13px;color:#8793a1;text-align:center;padding:24px}.quick-modules{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.quick-modules>a{background:#fff;border:1px solid var(--borda);border-radius:14px;padding:16px;display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;text-decoration:none;color:inherit;transition:.15s}.quick-modules>a:hover{transform:translateY(-2px);box-shadow:0 9px 22px rgba(16,24,40,.07)}.quick-modules>a>span{font-size:24px}.quick-modules strong,.quick-modules small{display:block}.quick-modules strong{font-size:13px;color:var(--azul)}.quick-modules small{font-size:10.5px;color:#7a8794;margin-top:3px}.quick-modules b{color:var(--azul)}
@media(max-width:1000px){.executive-kpis{grid-template-columns:repeat(2,1fr)}.dashboard-columns,.lower-grid{grid-template-columns:1fr}.quick-modules{grid-template-columns:1fr}}
@media(max-width:650px){.login-card{padding:25px 20px}.executive-head{display:block}.head-actions{margin-top:14px}.head-actions .btn{flex:1;text-align:center}.executive-kpis{grid-template-columns:1fr}.executive-head h2{font-size:25px}.bar-chart{gap:5px;height:190px}.compact-table{overflow-x:auto}.topbar nav{display:flex;overflow-x:auto;white-space:nowrap;padding-bottom:4px}.quick-modules{grid-template-columns:1fr}}
