:root{
  --bg:#07131d;--surface:#0d1c28;--surface2:#112737;--line:#203a4a;--text:#eef6f8;--muted:#9fb5bf;
  --accent:#20d3b0;--accent2:#57a8ff;--warn:#ffc65c;--danger:#ff7b7b;--shadow:0 18px 50px rgba(0,0,0,.28);
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:linear-gradient(180deg,#06111a,#091722 45%,#07131d);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.5}
button,input,select{font:inherit}.topbar{min-height:84px;display:flex;align-items:center;justify-content:space-between;padding:16px clamp(18px,4vw,58px);border-bottom:1px solid var(--line);background:rgba(7,19,29,.86);backdrop-filter:blur(14px);position:sticky;top:0;z-index:1000}.brand{display:flex;gap:14px;align-items:center}.mark{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#031019;font-weight:900;letter-spacing:.03em}.brand h1{font-size:17px;margin:0}.brand p{font-size:12px;color:var(--muted);margin:3px 0 0}.status-pill{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:8px 12px;color:var(--muted);white-space:nowrap}.status-pill span{display:inline-block;width:8px;height:8px;background:var(--accent);border-radius:50%;margin-right:7px}.tabs{display:flex;gap:6px;padding:10px clamp(18px,4vw,58px);border-bottom:1px solid var(--line);overflow:auto;background:#081620}.tab{border:0;background:transparent;color:var(--muted);padding:9px 14px;border-radius:8px;cursor:pointer}.tab.active,.tab:hover{color:var(--text);background:var(--surface2)}main{max-width:1540px;margin:auto;padding:26px clamp(16px,3vw,42px) 50px}.view{display:none}.view.active{display:block}.hero-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:20px}.hero-card{padding:34px;border:1px solid var(--line);border-radius:18px;background:radial-gradient(circle at 80% 10%,rgba(32,211,176,.12),transparent 36%),var(--surface);box-shadow:var(--shadow)}.hero-card h2{font-size:clamp(28px,4vw,46px);line-height:1.05;max-width:850px;margin:8px 0 16px}.hero-card p{max-width:900px;color:#c4d3d9}.eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:800}.hero-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:22px}.primary,.secondary{border-radius:9px;padding:10px 14px;cursor:pointer}.primary{border:1px solid var(--accent);background:var(--accent);color:#031716;font-weight:800}.secondary{border:1px solid var(--line);background:var(--surface2);color:var(--text)}.full{width:100%}.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.kpi{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:18px;display:flex;flex-direction:column;justify-content:center;min-height:122px}.kpi span,.kpi small{color:var(--muted);font-size:12px}.kpi strong{font-size:34px;line-height:1.15;margin:5px 0}.map-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px;margin-top:20px}.panel,.map-card,.section-block{border:1px solid var(--line);background:var(--surface);border-radius:16px;box-shadow:var(--shadow)}.panel{padding:18px}.panel-title{font-weight:800;font-size:14px;margin-bottom:14px}.controls label{display:block;font-size:12px;color:var(--muted);margin:14px 0}.controls select,.controls input,.search,.filter-row select{width:100%;margin-top:7px;background:#08151f;border:1px solid var(--line);color:var(--text);border-radius:8px;padding:10px}.controls hr{border:0;border-top:1px solid var(--line);margin:20px 0}.hint{font-size:11px;color:var(--muted)}.legend-box{margin-top:18px;padding:13px;background:#08151f;border-radius:11px;border:1px solid var(--line);font-size:12px;color:#bed0d6}.map-card{position:relative;overflow:hidden;min-height:630px}#map{height:630px;background:#0a1924}.map-message{position:absolute;left:16px;bottom:16px;z-index:500;background:rgba(5,15,22,.9);border:1px solid var(--line);border-radius:9px;padding:10px 12px;color:var(--muted);font-size:12px;max-width:440px}.section-block{margin-top:20px;padding:22px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:18px}.section-head h2,.section-head h3{margin:4px 0 0}.search{max-width:330px;margin:0}.district-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.district-card{padding:14px;border-radius:12px;background:#091924;border:1px solid var(--line);display:flex;gap:12px}.district-id{width:36px;height:36px;display:grid;place-items:center;border-radius:9px;background:var(--surface2);font-weight:900;color:var(--accent)}.district-card b{display:block}.district-card small{color:var(--muted)}.district-card.indigenous{border-color:#7b6a2c}.district-card .tag{font-size:10px;color:var(--warn);display:block;margin-top:4px}.warning-chip{font-size:11px;border:1px solid #6f5b2e;background:#2b2515;color:var(--warn);padding:7px 10px;border-radius:999px}.note{border:1px solid var(--line);border-radius:12px;background:#0a1a26;padding:14px 16px;color:#c5d4da;margin-bottom:18px}.note.important{border-left:4px solid var(--warn)}.election-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.chart-panel{min-height:390px}.chart-panel canvas{max-height:330px}.filter-row{display:flex;gap:8px}.filter-row select{margin:0;min-width:160px}.table-wrap{overflow:auto;max-height:650px;border:1px solid var(--line);border-radius:10px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{padding:10px 11px;text-align:left;border-bottom:1px solid #18313f;white-space:nowrap}th{position:sticky;top:0;background:#0d2230;z-index:2;color:#b8cbd3;font-size:11px;text-transform:uppercase;letter-spacing:.04em}tbody tr:hover{background:#102534}.methodology-card ol{padding-left:20px;color:#c8d7dc}.methodology-card li{margin-bottom:10px}.topic-grid,.framework-grid,.methods-grid,.source-grid,.download-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.topic-grid>div,.framework,.method-card,.source-card{border:1px solid var(--line);background:#091a25;border-radius:12px;padding:16px}.topic-grid b{display:block;margin-bottom:5px}.topic-grid span,.framework p,.method-card p,.source-card p{font-size:12px;color:var(--muted)}.framework span{font-size:11px;color:var(--accent);font-weight:900}.framework h3{font-size:16px}.methods-grid{margin-top:18px}.method-card code{font-size:12px;color:var(--accent);white-space:normal}.pipeline{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.pipeline>div{position:relative;border:1px solid var(--line);border-radius:12px;padding:14px;background:#091a25;min-height:150px}.pipeline strong{display:block;color:var(--accent);font-size:24px}.pipeline b{display:block;margin:8px 0}.pipeline span{font-size:11px;color:var(--muted)}.source-card a,.download-grid a{color:var(--accent);text-decoration:none}.source-card small{color:var(--muted)}.references{display:grid;gap:9px}.reference{font-size:13px;color:#c9d6db;padding:10px;border-left:2px solid var(--line)}.download-grid a{border:1px solid var(--line);border-radius:10px;background:#091a25;padding:15px}.leaflet-container{font-family:inherit}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#0c202d;color:#eef6f8}.leaflet-control-zoom a{background:#0c202d!important;color:#eef6f8!important;border-color:#244253!important}footer{display:grid;grid-template-columns:1fr 1fr;gap:24px;border-top:1px solid var(--line);padding:26px clamp(18px,4vw,58px);color:var(--muted);font-size:12px}.footer-note{text-align:right}
@media(max-width:1000px){.hero-grid,.map-layout,.two-col{grid-template-columns:1fr}.map-card,#map{min-height:520px;height:520px}.pipeline{grid-template-columns:repeat(3,1fr)}.election-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.topbar{position:static}.status-pill{display:none}.brand p{display:none}.hero-card{padding:22px}.kpi-grid,.election-kpis{grid-template-columns:1fr 1fr}.pipeline{grid-template-columns:1fr}.section-head{align-items:stretch;flex-direction:column}.filter-row{flex-direction:column}.search{max-width:none}.map-card,#map{min-height:430px;height:430px}footer{grid-template-columns:1fr}.footer-note{text-align:left}}

.mini-flag{display:inline-block;margin-left:4px;padding:1px 5px;border-radius:999px;border:1px solid #6f5b2e;background:#2b2515;color:var(--warn);font-size:9px;font-weight:800}
.compact-topics{grid-template-columns:repeat(2,minmax(0,1fr))}
.compact-topics>div{min-height:78px}
@media (max-width:760px){.compact-topics{grid-template-columns:1fr}.election-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v3 · fichas territoriales y estadística espacial */
.profile-toolbar{display:grid;grid-template-columns:1fr 1.2fr auto auto;gap:12px;align-items:end;margin-bottom:12px}
.profile-toolbar label{font-size:12px;color:var(--muted)}
.profile-toolbar select,.profile-toolbar input{width:100%;margin-top:7px;background:#08151f;border:1px solid var(--line);color:var(--text);border-radius:8px;padding:10px}
.profile-sheet{border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,#0d1f2b,#0a1924);padding:24px;box-shadow:var(--shadow)}
.profile-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:18px}
.profile-head h2{font-size:clamp(26px,3vw,40px);margin:4px 0 5px}.profile-head p{margin:0;color:var(--muted)}
.profile-badge{border:1px solid var(--accent);color:var(--accent);padding:8px 12px;border-radius:999px;font-weight:800;font-size:12px;white-space:nowrap}
.profile-kpis{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:18px}.profile-kpis .kpi{min-height:105px}.profile-kpis .kpi strong{font-size:28px}
.profile-charts{margin-bottom:16px}.narrative{display:grid;gap:10px}.narrative .insight{padding:10px 12px;border-radius:10px;background:#08151f;border:1px solid var(--line);font-size:13px}.narrative .insight b{color:var(--accent)}
.census-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.census-item{padding:10px;border-radius:10px;border:1px solid var(--line);background:#08151f}.census-item span{display:block;color:var(--muted);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.census-item strong{display:block;margin-top:3px;font-size:16px}
.import-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.import-grid input{width:100%;margin:8px 0;padding:9px;border:1px solid var(--line);border-radius:8px;background:#08151f;color:var(--text)}.import-status{font-size:11px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;padding:9px;margin-top:10px}.import-status.ok{border-style:solid;border-color:#235c51;color:var(--accent)}.import-status.error{border-style:solid;border-color:#704047;color:#ff9ca9}
.mini-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.mini-stat{background:#08151f;border:1px solid var(--line);border-radius:9px;padding:10px}.mini-stat span{display:block;font-size:10px;color:var(--muted)}.mini-stat strong{font-size:18px}
.correlation-value{align-self:end;padding:10px 14px;border-radius:9px;border:1px solid var(--line);background:#08151f;font-size:18px;font-weight:800;color:var(--accent);min-width:100px;text-align:center}
.spatial-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px;margin-bottom:18px}.spatial-map-card{min-height:560px}#spatialMap{height:560px;background:#0a1924}.spatial-kpis{margin-top:18px}.lisa-HH{color:#ff8ea1}.lisa-LL{color:#57a8ff}.lisa-HL{color:#ffc65c}.lisa-LH{color:#b79cff}.lisa-NS{color:var(--muted)}
.muted{color:var(--muted)}
@media(max-width:1100px){.profile-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-toolbar{grid-template-columns:1fr 1fr}.spatial-layout{grid-template-columns:1fr}.spatial-map-card,#spatialMap{height:500px;min-height:500px}}
@media(max-width:700px){.profile-kpis{grid-template-columns:1fr 1fr}.profile-toolbar,.import-grid{grid-template-columns:1fr}.census-grid{grid-template-columns:1fr}.profile-head{flex-direction:column}.spatial-map-card,#spatialMap{height:430px;min-height:430px}}
@media print{.topbar,.tabs,footer,.profile-toolbar,.hint,#fichas>.section-block{display:none!important}body{background:white;color:#111}.view{display:none!important}#fichas.view{display:block!important}#profileSheet{border:0;box-shadow:none;background:white;padding:0}.panel,.kpi{background:white;color:#111;border-color:#bbb;box-shadow:none}.kpi span,.kpi small,.muted{color:#555}.profile-badge{color:#111;border-color:#111}.chart-panel{break-inside:avoid}.profile-sheet canvas{max-height:260px!important}}
