:root {
  --app-bg: #080d18;
  --app-surface: #111b2d;
  --app-surface-raised: #17243a;
  --app-border: rgba(148, 163, 184, .16);
  --app-border-strong: rgba(148, 163, 184, .26);
  --app-text: #e6edf7;
  --app-muted: #91a2bb;
  --app-accent: #50e3c2;
  --app-accent-strong: #13b89a;
  --app-danger: #fb7185;
  --app-warning: #f4c76b;
  --bs-primary: #13b89a;
  --bs-body-color: var(--app-text);
  --bs-body-bg: var(--app-bg);
}

* { box-sizing: border-box; }
body {
  min-height: 100vh; margin: 0; color: var(--app-text);
  background: radial-gradient(circle at 4% -8%, rgba(52, 211, 153, .13), transparent 34rem), radial-gradient(circle at 96% 8%, rgba(96, 165, 250, .12), transparent 31rem), var(--app-bg);
  font-family: "Segoe UI", Inter, Arial, sans-serif; letter-spacing: .01em;
}
a { color: var(--app-accent); text-decoration: none; }
a:hover { color: #8af3db; }
.navbar {
  position: sticky; top: 0; z-index: 1030; padding: 13px 0;
  background: rgba(10, 17, 31, .86); border-bottom: 1px solid var(--app-border);
  box-shadow: 0 12px 35px rgba(0, 0, 0, .22); backdrop-filter: blur(18px);
}
.navbar-brand { color: var(--app-text); font-size: 25px; font-weight: 800; letter-spacing: -.055em; }
.navbar-brand span { color: var(--app-accent); text-shadow: 0 0 25px rgba(80, 227, 194, .35); }
.nav { align-items: center; }
.nav-link { position: relative; padding: 9px 13px !important; color: var(--app-muted) !important; border-radius: 9px; font-size: 14px; transition: color .18s ease, background .18s ease, transform .18s ease; }
.nav-link:hover, .nav-link.fw-bold { color: var(--app-text) !important; background: rgba(80, 227, 194, .10); }
.nav-link.fw-bold::after { position: absolute; right: 13px; bottom: 4px; left: 13px; height: 2px; content: ""; background: var(--app-accent); border-radius: 99px; box-shadow: 0 0 12px rgba(80, 227, 194, .65); }
.local { color: var(--app-muted); font-size: 12px; white-space: nowrap; }
main { max-width: 1600px; }
.eyebrow { margin-bottom: 12px; color: var(--app-accent); font-size: 11px; font-weight: 700; letter-spacing: .18em; }
h1, h2, h3, h4, h5 { color: var(--app-text); }
h1 { margin-bottom: .35rem; font-size: clamp(30px, 3vw, 44px); font-weight: 750; letter-spacing: -.045em; }
h2, h3, h4, h5 { letter-spacing: -.02em; }
.card { color: var(--app-text); background: linear-gradient(145deg, rgba(23, 36, 58, .96), rgba(15, 26, 44, .96)); border: 1px solid var(--app-border); border-radius: 16px; box-shadow: 0 14px 35px rgba(0, 0, 0, .17), inset 0 1px rgba(255, 255, 255, .025); }
.card h2, .card h3 { color: var(--app-text); }
.form-label { color: #b9c7d9; font-size: 13px; font-weight: 600; }
.form-control, .form-select { min-height: 43px; color: var(--app-text); background-color: rgba(7, 14, 27, .62); border: 1px solid var(--app-border-strong); border-radius: 10px; }
.form-control::placeholder { color: #6f829d; }
.form-control:focus, .form-select:focus { color: var(--app-text); background-color: rgba(7, 14, 27, .84); border-color: var(--app-accent); box-shadow: 0 0 0 .2rem rgba(80, 227, 194, .14); }
.form-select option { color: #152238; background: #fff; }
input[type=file]::file-selector-button { color: var(--app-text); background: var(--app-surface-raised); border: 0; border-right: 1px solid var(--app-border-strong); }
.btn { min-height: 41px; padding: 9px 16px; border-radius: 10px; font-size: 13px; font-weight: 700; letter-spacing: .01em; transition: transform .18s ease, box-shadow .18s ease, filter .18s ease; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { color: #06131a; background: linear-gradient(135deg, var(--app-accent), var(--app-accent-strong)); border-color: transparent; box-shadow: 0 8px 20px rgba(19, 184, 154, .22); }
.btn-primary:hover, .btn-primary:focus { color: #06131a; background: linear-gradient(135deg, #82f4d9, #19c9a8); border-color: transparent; box-shadow: 0 11px 25px rgba(19, 184, 154, .32); }
.btn-outline-secondary { color: #bac8da; border-color: var(--app-border-strong); }
.btn-outline-secondary:hover { color: var(--app-text); background: rgba(148, 163, 184, .12); border-color: rgba(148, 163, 184, .42); }
.alert { color: #b9cbe0; border-radius: 13px; border-width: 1px; }
.alert-info { background: rgba(74, 143, 222, .12); border-color: rgba(114, 169, 255, .27); }
.alert-danger { color: #ffc1cb; background: rgba(251, 113, 133, .11); border-color: rgba(251, 113, 133, .28); }
.alert-warning { color: #f8d991; background: rgba(244, 199, 107, .10); border-color: rgba(244, 199, 107, .28); }
.text-muted { color: var(--app-muted) !important; }
.text-success { color: #5ee598 !important; }
.text-danger { color: var(--app-danger) !important; }
.text-warning { color: var(--app-warning) !important; }
.table { --bs-table-color: var(--app-text); --bs-table-bg: transparent; margin-bottom: 0; }
.table > :not(caption) > * > * { color: inherit; background: transparent; border-bottom-color: var(--app-border); }
th { color: #9eb1c9 !important; background: rgba(8, 15, 29, .62) !important; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
td, th { padding: 15px !important; vertical-align: top; }
td { min-width: 100px; color: #d9e2ef; font-size: 14px; }
td:first-child { min-width: 180px; }
.table-hover > tbody > tr:hover > * { color: var(--app-text); background: rgba(80, 227, 194, .045); }
.table-responsive { border-radius: 16px; }
.pendencia { min-width: 230px; margin-bottom: 6px; }
.pendencia:before { color: var(--app-warning); content: "• "; }
footer { color: #71839c !important; border-top: 1px solid var(--app-border); font-size: 12px; }
.visitas-menu { position: relative; }
.visitas-menu summary { cursor: pointer; list-style: none; }
.visitas-menu summary::-webkit-details-marker { display: none; }
.visitas-menu-itens { position: absolute; top: calc(100% + 9px); left: 0; z-index: 1100; min-width: 245px; padding: 8px !important; background: rgba(17, 27, 45, .98); box-shadow: 0 20px 40px rgba(0, 0, 0, .34); }
.visitas-menu-itens a { display: block; white-space: nowrap; }
.diabetes-painel, .visitas-painel { animation: page-in .35s ease both; }
.saude-mulher-painel .pratica-card { border-top: 3px solid rgba(80, 227, 194, .65); }
.saude-mulher-painel .badge { color: #062018 !important; background: var(--app-accent) !important; }
.saude-crianca-painel .pratica-card { border-top: 3px solid rgba(96, 165, 250, .68); }
.saude-crianca-painel details summary { color: #9eb1c9; cursor: pointer; }
.gestantes-painel .pratica-card { border-top: 3px solid rgba(13, 175, 154, .72); }
.gestantes-tabela { min-width: 1500px; }
.gestantes-tabela td { min-width: 150px; vertical-align: top; }
.gestantes-tabela details summary { color: #9eb1c9; cursor: pointer; }
.mais-acesso-painel { animation: page-in .35s ease both; }
.mais-acesso-painel .acesso-kpi { border-top: 3px solid var(--app-accent); }
.mais-acesso-painel .acesso-programada { border-top-color: #13b89a; }
.mais-acesso-painel .acesso-espontanea { border-top-color: #f0a94a; }
.mais-acesso-painel .acesso-neutro { border-top-color: #71839c; }
.mais-acesso-painel .acesso-numero { display: block; margin: 4px 0; font-size: clamp(28px, 3vw, 39px); line-height: 1.05; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.mais-acesso-painel .acesso-destaque { background: radial-gradient(circle at 80% 20%, rgba(19,184,154,.13), transparent 43%), linear-gradient(145deg, rgba(23,36,58,.98), rgba(10,23,38,.98)); }
.mais-acesso-painel .acesso-percentual { color: #62ead0; font-size: clamp(43px, 6vw, 70px); line-height: 1; letter-spacing: -.055em; }
.mais-acesso-painel .acesso-parametro { color: #051b17; background: #62ead0; }
.mais-acesso-painel .acesso-formula { color: #dbe6f3; font-size: clamp(15px, 2vw, 20px); font-weight: 650; }
.mais-acesso-painel .grafico-acesso { position: relative; min-height: 310px; }
.mais-acesso-painel details summary { color: #b9c7d9; cursor: pointer; }
.relatorios-painel { animation: page-in .35s ease both; }
.relatorios-painel .relatorio-card { border-top: 3px solid rgba(19,184,154,.72); }
.relatorios-painel .relatorio-nota { display: block; margin: 3px 0 12px; color: #62ead0; font-size: clamp(34px,4vw,48px); line-height: 1; letter-spacing: -.05em; }
.relatorios-painel .relatorio-progresso { height: 6px; background: rgba(158,177,201,.14); }
.relatorios-painel .relatorio-progresso .progress-bar { background: linear-gradient(90deg,#13b89a,#62ead0); }
.relatorios-painel .relatorios-grafico { position: relative; min-height: 390px; }
.conexoes-painel { animation: page-in .35s ease both; }
.login-body { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at 20% 10%, rgba(19,184,154,.12), transparent 38%), var(--app-bg); }
.login-card { width: min(100%, 430px); border-top: 3px solid var(--app-accent); box-shadow: 0 24px 60px rgba(0,0,0,.28); }
.login-logo { width: 76px; height: 76px; object-fit: contain; border-radius: 14px; margin-bottom: 18px; }
.auth-strip { border-bottom: 1px solid var(--app-border); background: rgba(6,19,32,.65); }
.conexoes-painel .conexao-item { border-color: var(--app-border) !important; }
.sync-painel { animation: page-in .35s ease both; }
.sync-painel .progress { background: rgba(158,177,201,.16); }
.sync-painel .progress-bar { background: linear-gradient(90deg, #13b89a, #62ead0); }
.sync-step { color: var(--app-muted); padding: 8px 10px; border: 1px solid var(--app-border); border-radius: 8px; }
.sync-step.fw-semibold { color: #62ead0; border-color: rgba(98,234,208,.44); background: rgba(19,184,154,.08); }
#municipio-atual { min-width: 170px; max-width: 220px; }
@keyframes page-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
.visitas-painel .visitas-demo { color: #8af3db; background: rgba(80, 227, 194, .10); border: 1px solid rgba(80, 227, 194, .16); border-radius: 10px; }
.visitas-painel .visitas-numero { font-size: clamp(26px, 3vw, 38px); line-height: 1.3; letter-spacing: -1px; font-variant-numeric: tabular-nums; }
.visitas-painel .visitas-percentual { font-size: 18px; font-weight: 600; }
.visitas-painel .visitas-desfecho { border-top: 3px solid; }
.visitas-painel .sucesso { border-top-color: var(--app-accent-strong); }.visitas-painel .sucesso .visitas-percentual { color: var(--app-accent); }
.visitas-painel .recusa { border-top-color: #ef6680; }.visitas-painel .recusa .visitas-percentual { color: #ff91a4; }
.visitas-painel .ausencia { border-top-color: #cf9b3c; }.visitas-painel .ausencia .visitas-percentual { color: var(--app-warning); }
.visitas-painel .visitas-abas { gap: 4px; }.visitas-painel .visitas-abas .nav-link { color: var(--app-muted) !important; font-size: 14px; }
.visitas-painel .visitas-abas .active { color: #06131a !important; background: var(--app-accent); }
.visitas-painel .visitas-grafico { position: relative; height: 260px; min-width: 0; }
.visitas-painel td { white-space: nowrap; }.visitas-painel tfoot { border-top: 2px solid var(--app-border); }
.grafico-container { position: relative; min-width: 0; height: 300px; }
.visitas-matriz { max-height: 65vh; }.visitas-matriz thead th { position: sticky; top: 0; z-index: 2; }
.visitas-matriz td.table-danger { color: #ffc1cb; background: rgba(251, 113, 133, .12) !important; }
#mapa-visitas { height: 550px; background-color: #142437; background-image: linear-gradient(rgba(114, 169, 255, .06) 1px, transparent 1px), linear-gradient(90deg, rgba(114, 169, 255, .06) 1px, transparent 1px); background-size: 32px 32px; }
.visita-popup h3 { margin: 0 0 12px; font-size: 16px; }.visita-popup p { margin: 9px 0 !important; font-size: 13px; white-space: normal; overflow-wrap: anywhere; }.visita-popup small { color: #617898; font-size: 11px; }
@media (max-width: 900px) {
  .navbar .container-fluid { align-items: flex-start; flex-wrap: wrap; }
  .navbar .nav { width: 100%; order: 3; overflow-x: auto; padding-top: 8px; }
  .local { margin-left: auto; padding-top: 7px; }
}
@media (max-width: 576px) {
  main { padding-right: 14px !important; padding-left: 14px !important; }
  .navbar .container-fluid { padding-right: 14px !important; padding-left: 14px !important; }
  .card { border-radius: 13px; }
  td, th { padding: 12px !important; }
}
