:root{
  --sena:#39A900;
  --sena-dark:#007832;
  --navy:#00304D;
  --purple:#71277A;
  --yellow:#FDC300;
  --cyan:#50E5F9;
  --bg:#F6F6F6;
  --surface:#FFFFFF;
  --ink:#1F2937;
  --muted:#667085;
  --line:#DDE3E8;
  --danger:#B42318;
  --danger-bg:#FEF3F2;
  --warning:#9A6700;
  --warning-bg:#FFF7D6;
  --success:#027A48;
  --success-bg:#ECFDF3;
  --radius:16px;
  --shadow:0 10px 30px rgba(0,48,77,.08);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:"Work Sans",Calibri,Arial,sans-serif}
body{overflow-x:hidden}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.5}
.app-shell{min-height:100vh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:78px;padding:10px clamp(16px,3vw,36px);background:#fff;border-bottom:1px solid var(--line);box-shadow:0 3px 16px rgba(0,48,77,.06)}
.brand{display:flex;align-items:center;gap:16px;min-width:0}
.brand img{width:58px;height:auto;display:block;flex:0 0 auto}
.brand-copy{min-width:0}
.brand-kicker{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--sena-dark);font-weight:700}
.brand-title{font-size:clamp(1rem,2vw,1.3rem);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.badge{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:var(--success-bg);color:var(--success);font-size:.75rem;font-weight:700;border:1px solid #ABEFC6}
.btn{border:1px solid transparent;border-radius:10px;padding:10px 14px;font-weight:650;line-height:1;min-height:40px;background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.16s ease}
.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 16px rgba(0,48,77,.1)}
.btn-primary{background:var(--sena);color:#fff;border-color:var(--sena)}
.btn-primary:hover:not(:disabled){background:#2f8f00}
.btn-secondary{border-color:#B8C4CC;color:var(--navy)}
.btn-ghost{border-color:transparent;background:transparent;color:var(--navy)}
.btn-danger{border-color:#FDA29B;color:var(--danger);background:#fff}
.btn-sm{padding:8px 10px;min-height:34px;font-size:.83rem}
main{width:min(1520px,100%);margin:0 auto;padding:clamp(16px,2.6vw,34px);flex:1}
.hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:24px;align-items:stretch}
.hero-copy,.upload-card,.panel,.kpi-card,.notice,.quality-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.hero-copy{padding:clamp(24px,4vw,48px);position:relative;overflow:hidden}
.hero-copy:after{content:"";position:absolute;right:-70px;bottom:-110px;width:260px;height:260px;border-radius:50%;border:42px solid rgba(57,169,0,.08)}
.hero-copy h1{font-size:clamp(2rem,4vw,3.35rem);line-height:1.02;margin:8px 0 16px;max-width:780px;letter-spacing:-.035em;color:var(--navy)}
.hero-copy p{font-size:clamp(1rem,1.8vw,1.15rem);line-height:1.55;color:var(--muted);max-width:760px;margin:0 0 20px}
.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--sena-dark)}
.feature-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.feature-chip{border-radius:999px;padding:8px 11px;background:#F2F9EF;color:#285D12;border:1px solid #D7EFCB;font-size:.82rem;font-weight:650}
.upload-card{padding:22px;display:flex;flex-direction:column;gap:14px}
.upload-card h2{margin:0;font-size:1.15rem;color:var(--navy)}
.dropzone{flex:1;min-height:230px;border:2px dashed #9BC98A;border-radius:14px;background:linear-gradient(180deg,#FBFEFA,#F4FAF1);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:26px;transition:.18s ease}
.dropzone.dragover{border-color:var(--sena);background:#ECF8E7;transform:scale(1.01)}
.drop-icon{width:58px;height:58px;border-radius:16px;background:var(--sena);color:#fff;display:grid;place-items:center;font-size:1.6rem;font-weight:800;margin-bottom:14px}
.dropzone strong{color:var(--navy);font-size:1rem}
.dropzone small{display:block;color:var(--muted);margin-top:6px;line-height:1.4}
.privacy-note{display:flex;gap:9px;align-items:flex-start;padding:10px 12px;border-radius:10px;background:#F8FAFC;color:#475467;font-size:.78rem;line-height:1.4}
.hidden{display:none!important}
.dashboard{display:flex;flex-direction:column;gap:18px}
.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.dashboard-header h2{margin:0;color:var(--navy);font-size:1.45rem}
.source-summary{color:var(--muted);font-size:.84rem;margin-top:4px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.filters{padding:16px}
.filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}
.filter-search{grid-column:1/-1}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field label{font-size:.75rem;font-weight:750;color:#475467}
.field input,.field select,.field textarea{width:100%;border:1px solid #BCC7CF;border-radius:9px;background:#fff;color:var(--ink);padding:9px 10px;min-height:40px;outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--sena);box-shadow:0 0 0 3px rgba(57,169,0,.13)}
.filter-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.check{display:inline-flex;align-items:center;gap:8px;min-height:40px;font-size:.8rem;color:#475467}
.check input{width:17px;height:17px;accent-color:var(--sena)}
.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.kpi-card{padding:15px 16px;box-shadow:none;position:relative;overflow:hidden}
.kpi-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sena)}
.kpi-label{color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.kpi-value{font-size:clamp(1.25rem,2.3vw,1.85rem);font-weight:800;color:var(--navy);margin-top:6px;line-height:1.1}
.kpi-sub{font-size:.72rem;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.panel{padding:16px;box-shadow:none;min-width:0}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}
.panel h3{font-size:1rem;margin:0;color:var(--navy)}
.panel-sub{font-size:.75rem;color:var(--muted)}
.status-stack{height:22px;border-radius:999px;background:#EAEFF2;overflow:hidden;display:flex;margin:6px 0 16px}
.status-seg{height:100%;min-width:0;transition:width .2s ease}
.status-no{background:#D92D20}.status-reported{background:var(--sena)}.status-empty{background:#98A2B3}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.75rem;color:#475467}
.legend-item{display:inline-flex;align-items:center;gap:6px}
.legend-dot{width:9px;height:9px;border-radius:50%}
.bar-list{display:flex;flex-direction:column;gap:10px}
.bar-item{display:grid;grid-template-columns:minmax(120px,1.5fr) minmax(90px,2fr) auto;gap:10px;align-items:center;font-size:.77rem}
.bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#344054}
.bar-track{height:9px;border-radius:999px;background:#EEF2F4;overflow:hidden}
.bar-fill{height:100%;background:var(--sena);border-radius:999px}
.bar-value{font-variant-numeric:tabular-nums;color:var(--navy);font-weight:750}

.status-panel{padding-bottom:15px}
.charts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.chart-panel{min-height:360px}
.chart-shell{width:100%;min-height:270px;display:flex;flex-direction:column;justify-content:center}
.bar-chart{display:block;width:100%;height:auto;min-height:245px;overflow:visible}
.chart-track{fill:#EEF2F4}
.chart-bar{fill:var(--sena)}
.chart-label{font:600 12px "Work Sans",Calibri,Arial,sans-serif;fill:#344054}
.chart-value{font:800 12px "Work Sans",Calibri,Arial,sans-serif;fill:var(--navy)}
.chart-note{font-size:.72rem;color:var(--muted);margin-top:6px;line-height:1.35}
.timeline-panel{min-height:390px}
.timeline-shell{width:100%;min-height:300px;display:flex;flex-direction:column;justify-content:center}
.timeline-chart{display:block;width:100%;height:auto;min-height:280px;overflow:visible}
.chart-gridline{stroke:#E6EAED;stroke-width:1}
.chart-axis-line{stroke:#98A2B3;stroke-width:1}
.chart-axis-label{font:600 11px "Work Sans",Calibri,Arial,sans-serif;fill:#667085}
.timeline-line{fill:none;stroke:var(--sena);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.timeline-point{fill:#fff;stroke:var(--sena-dark);stroke-width:2}
.quality-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.quality-card{padding:12px 14px;box-shadow:none;border-radius:12px}
.quality-card strong{display:block;font-size:1.15rem;color:var(--navy);margin-bottom:3px}
.quality-card span{font-size:.72rem;color:var(--muted);line-height:1.25}
.tabs{display:flex;gap:4px;overflow:auto;padding:4px;background:#E9EEF1;border-radius:12px;width:max-content;max-width:100%}
.tab{border:0;background:transparent;padding:9px 13px;border-radius:9px;color:#475467;font-weight:700;font-size:.8rem;white-space:nowrap}
.tab.active{background:#fff;color:var(--navy);box-shadow:0 2px 7px rgba(0,48,77,.09)}
.table-panel{padding:0;overflow:hidden}
.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.table-title{font-weight:800;color:var(--navy);font-size:.95rem}
.table-count{font-size:.76rem;color:var(--muted)}
.table-wrap{width:100%;overflow:auto;max-height:570px}
table{border-collapse:separate;border-spacing:0;width:100%;min-width:980px;font-size:.77rem}
th{position:sticky;top:0;z-index:2;background:#F4F7F8;color:#344054;text-align:left;padding:10px 12px;border-bottom:1px solid #CBD5DC;font-size:.7rem;text-transform:uppercase;letter-spacing:.025em;white-space:nowrap}
td{padding:9px 12px;border-bottom:1px solid #EDF0F2;vertical-align:top;color:#344054;line-height:1.35}
tbody tr:hover td{background:#FBFDFB}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-weight:750;font-size:.68rem;white-space:nowrap}
.status-pill.no{color:#B42318;background:#FEF3F2}.status-pill.reported{color:#027A48;background:#ECFDF3}.status-pill.empty{color:#475467;background:#F2F4F7}
.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-top:1px solid var(--line);background:#fff;flex-wrap:wrap}
.page-info{font-size:.76rem;color:var(--muted)}
.page-actions{display:flex;gap:6px}
.notice{padding:12px 14px;display:flex;gap:10px;align-items:flex-start;box-shadow:none;background:#FFFDF4;border-color:#F5DC8A}
.notice strong{display:block;color:#7A4F00;font-size:.8rem;margin-bottom:2px}.notice p{margin:0;color:#735B25;font-size:.76rem;line-height:1.4}
.toast-area{position:fixed;right:18px;bottom:18px;z-index:80;display:flex;flex-direction:column;gap:8px;max-width:min(390px,calc(100vw - 36px))}
.toast{background:#101828;color:#fff;padding:12px 14px;border-radius:11px;box-shadow:0 12px 32px rgba(16,24,40,.25);font-size:.82rem;line-height:1.35;animation:toastIn .18s ease}
.toast.error{background:#912018}.toast.success{background:#05603A}
@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,25,41,.58);display:grid;place-items:center;padding:18px;z-index:120;backdrop-filter:blur(2px)}
.modal{width:min(680px,100%);max-height:min(84vh,760px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 28px 80px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.5)}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 19px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;color:var(--navy);font-size:1.05rem}
.icon-btn{width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:#fff;color:#475467;font-weight:800}
.modal-body{padding:18px 19px;line-height:1.5;font-size:.86rem;color:#344054}
.modal-body h4{color:var(--navy);margin:14px 0 7px}.modal-body h4:first-child{margin-top:0}.modal-body ul{padding-left:19px}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 19px;border-top:1px solid var(--line);flex-wrap:wrap}
.progress-overlay{position:fixed;inset:0;background:rgba(255,255,255,.88);z-index:90;display:grid;place-items:center;padding:20px}
.progress-card{width:min(420px,100%);background:#fff;border-radius:16px;border:1px solid var(--line);box-shadow:var(--shadow);padding:22px;text-align:center}
.spinner{width:38px;height:38px;border:4px solid #DDE8D7;border-top-color:var(--sena);border-radius:50%;margin:0 auto 13px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.progress-card strong{display:block;color:var(--navy);margin-bottom:5px}.progress-card span{font-size:.79rem;color:var(--muted)}
.footer{padding:20px clamp(16px,3vw,36px);border-top:1px solid var(--line);background:#fff;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;color:#667085;font-size:.74rem}
.footer strong{color:var(--sena-dark)}
.empty-state{padding:44px 18px;text-align:center;color:var(--muted)}
.empty-state strong{display:block;color:var(--navy);font-size:1rem;margin-bottom:4px}
@media(max-width:1180px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.quality-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.charts-grid{grid-template-columns:1fr}.chart-panel{min-height:340px}}
@media(max-width:820px){.topbar{position:relative;align-items:flex-start}.hero{grid-template-columns:1fr}.brand-title{white-space:normal}.header-actions .badge{display:none}.filter-grid{grid-template-columns:1fr 1fr}.filter-search{grid-column:1/-1}.kpi-grid{grid-template-columns:1fr 1fr}.bar-item{grid-template-columns:minmax(110px,1fr) minmax(80px,1.3fr) auto}.timeline-panel{min-height:330px}.timeline-chart{min-height:240px}}
@media(max-width:560px){main{padding:12px}.topbar{padding:10px 12px}.brand img{width:52px}.brand-title{font-size:.95rem}.header-actions .btn span.btn-label{display:none}.hero-copy{padding:24px 20px}.upload-card{padding:16px}.filter-grid{grid-template-columns:1fr}.filter-search{grid-column:auto}.kpi-grid{grid-template-columns:1fr 1fr;gap:8px}.kpi-card{padding:12px}.quality-grid{grid-template-columns:1fr 1fr}.actions{width:100%}.actions .btn{flex:1}.table-toolbar{align-items:flex-start}.footer{padding:18px 14px}.modal-backdrop{padding:8px}.modal{max-height:94vh;border-radius:14px}}
@media print{.topbar,.footer,.actions,.filters,.tabs,.pagination{display:none!important}body{background:#fff}.panel,.kpi-card,.quality-card{box-shadow:none}}


/* v1.4.0 - analitica interactiva, calidad, paginacion numerica y tablas ordenables */
.quality-control{padding-bottom:14px}
.quality-control-head{align-items:flex-start}
.quality-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.quality-summary{display:flex;gap:8px;flex-wrap:wrap}
.quality-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid #D8E0E5;background:#F8FAFC;border-radius:999px;padding:7px 10px;font-size:.76rem;color:#475467}
.quality-chip strong{color:var(--navy);font-size:.84rem}
.quality-chip.ok{background:#F2F9EF;border-color:#D7EFCB}
.quality-chip.warn{background:#FFF9E6;border-color:#F5DC8A}

.attention-panel{padding-bottom:14px}
.attention-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.attention-card{border:1px solid var(--line);border-radius:12px;background:#FAFCFD;padding:13px;min-width:0;display:flex;flex-direction:column;gap:4px}
.attention-kicker{font-size:.69rem;font-weight:800;text-transform:uppercase;letter-spacing:.035em;color:#667085}
.attention-card strong{color:var(--navy);font-size:.98rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.attention-card span{font-size:.74rem;color:var(--muted);min-height:18px}
.detail-link{align-self:flex-start;border:0;background:transparent;color:var(--sena-dark);font-weight:800;font-size:.74rem;padding:4px 0;text-decoration:underline;text-underline-offset:2px}
.detail-link:hover{color:var(--navy)}
.table-detail{white-space:nowrap}

.timeline-head{align-items:flex-start}
.segmented{display:inline-flex;gap:2px;padding:3px;background:#E9EEF1;border-radius:10px;flex-wrap:wrap}
.segment{border:0;background:transparent;color:#475467;font-size:.75rem;font-weight:750;padding:7px 10px;border-radius:8px;min-height:32px}
.segment.active{background:#fff;color:var(--navy);box-shadow:0 1px 5px rgba(0,48,77,.1)}

.chart-drill{cursor:pointer;outline:none}
.chart-drill:hover .chart-bar,.chart-drill:focus .chart-bar{fill:var(--sena-dark)}
.chart-drill:focus .chart-label{font-weight:800;fill:var(--navy)}

.sort-btn{width:100%;border:0;background:transparent;padding:0;color:inherit;font:inherit;font-weight:inherit;text-transform:inherit;letter-spacing:inherit;display:inline-flex;align-items:center;gap:5px;justify-content:flex-start;white-space:nowrap}
th.num .sort-btn{justify-content:flex-end}
.sort-btn span{font-size:.65rem;color:#98A2B3}
.sort-btn.active span{color:var(--sena-dark)}
.action-col{width:88px;text-align:center;white-space:nowrap}

.page-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.page-number{min-width:34px;height:34px;border:1px solid #C7D0D7;border-radius:9px;background:#fff;color:var(--navy);font-weight:750;font-size:.78rem;padding:0 9px}
.page-number:hover{border-color:var(--sena);background:#F2F9EF}
.page-number.active{background:var(--sena);border-color:var(--sena);color:#fff}
.page-ellipsis{display:inline-grid;place-items:center;min-width:24px;height:34px;color:#667085;font-weight:700}

.modal-wide{width:min(1120px,100%)}
.issue-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;max-height:54vh;margin-top:12px}
.issue-table{min-width:900px;font-size:.74rem}
.issue-table th{position:sticky;top:0}
.modal-note{font-size:.75rem;color:var(--muted);margin-top:10px}
.file-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.file-mode-card{border:1px solid #C8D2D9;border-radius:13px;background:#fff;padding:16px;text-align:left;display:flex;flex-direction:column;gap:7px;color:var(--ink)}
.file-mode-card:hover{border-color:var(--sena);background:#F7FCF4;box-shadow:0 6px 18px rgba(0,48,77,.08)}
.file-mode-card strong{color:var(--navy)}
.file-mode-card span{font-size:.79rem;line-height:1.4;color:var(--muted)}

@media(max-width:1280px){.attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.quality-control-head,.timeline-head{flex-direction:column;align-items:stretch}.quality-actions{justify-content:flex-start}.attention-grid{grid-template-columns:1fr}.file-mode-grid{grid-template-columns:1fr}}

/* Analítica de Certificados SENA */
.certificate-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.certificate-search{grid-column:1/-1}
.formation-complementaria{background:#39A900}
.formation-titulada{background:#00304D}
.formation-other{background:#98A2B3}
.evolution-chart{display:block;width:100%;height:auto;min-height:270px}
.evolution-bar-comp{fill:#39A900}.evolution-bar-tit{fill:#00304D}.evolution-bar-other{fill:#98A2B3}
.evolution-grid{stroke:#E4E9ED;stroke-width:1}.evolution-axis{stroke:#AAB5BE;stroke-width:1}
.evolution-label{font:12px "Work Sans",Arial,sans-serif;fill:#667085}.evolution-value{font:11px "Work Sans",Arial,sans-serif;fill:#344054;font-weight:700}
.evolution-group{cursor:pointer}.evolution-group:hover .evolution-bar-comp,.evolution-group:focus .evolution-bar-comp{fill:#007832}.evolution-group:hover .evolution-bar-tit,.evolution-group:focus .evolution-bar-tit{fill:#185875}
.source-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}.source-badge{font-size:.68rem;padding:4px 7px;border-radius:999px;background:#EEF4F6;color:#475467;border:1px solid #D8E0E5}
@media(max-width:820px){.certificate-filter-grid{grid-template-columns:1fr 1fr}.certificate-search{grid-column:1/-1}}
@media(max-width:560px){.certificate-filter-grid{grid-template-columns:1fr}.certificate-search{grid-column:auto}}

/* v1.1.0 - modulos separados y barra de progreso 0-100 */
.module-switcher-shell{width:min(1520px,100%);margin:0 auto;padding:14px clamp(16px,2.6vw,34px) 0}
.module-switcher{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.module-card{border:1px solid #C8D2D9;border-radius:14px;background:#fff;padding:13px 16px;display:flex;align-items:center;gap:12px;text-align:left;box-shadow:0 4px 14px rgba(0,48,77,.05);min-width:0;transition:.18s ease;color:var(--ink)}
.module-card:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(0,48,77,.08)}
.module-card.active{border-color:var(--sena);box-shadow:0 0 0 3px rgba(57,169,0,.11),0 8px 22px rgba(0,48,77,.08)}
.module-card[data-module="Titulada"].active{border-color:var(--navy);box-shadow:0 0 0 3px rgba(0,48,77,.09),0 8px 22px rgba(0,48,77,.08)}
.module-icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;color:#fff;font-size:1rem;font-weight:850;flex:0 0 auto}
.module-icon.titulada{background:var(--navy)}
.module-icon.complementaria{background:var(--sena)}
.module-copy{display:flex;flex-direction:column;gap:3px;min-width:0}
.module-copy strong{color:var(--navy);font-size:.93rem}
.module-copy small{color:var(--muted);font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.module-card.active .module-copy small{font-weight:700;color:#475467}

.progress-card{width:min(520px,100%);padding:24px;text-align:left}
.progress-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.progress-head strong{margin:0!important;color:var(--navy);font-size:1rem}
.progress-head span{font-size:1.05rem!important;font-weight:850;color:var(--sena-dark)!important}
.progress-track{width:100%;height:16px;border-radius:999px;background:#E4E9ED;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,48,77,.08);margin-bottom:10px}
.progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--sena-dark),var(--sena));border-radius:inherit;transition:width .22s ease}
.progress-card>span{display:block;font-size:.78rem;color:var(--muted);line-height:1.45;text-align:left}

.module-tag{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;font-size:.75rem;font-weight:800;border:1px solid #D8E0E5;background:#fff;color:var(--navy)}
.module-tag.titulada{border-color:#B5C4CD;background:#F2F6F8}
.module-tag.complementaria{border-color:#CBE6BF;background:#F2F9EF;color:#285D12}

@media(max-width:700px){.module-switcher{grid-template-columns:1fr}.module-switcher-shell{padding-top:10px}.module-copy small{white-space:normal}}

/* v1.2.0 - comparacion historica, mapa, perfiles, Excel y resumen general */
.module-switcher-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.module-icon.general{background:var(--purple)}
.module-card[data-module="General"].active{border-color:var(--purple);box-shadow:0 0 0 3px rgba(113,39,122,.09),0 8px 22px rgba(0,48,77,.08)}
.analysis-nav{display:flex;gap:6px;padding:5px;background:#E9EEF1;border-radius:12px;width:max-content;max-width:100%;overflow:auto}
.analysis-nav-btn{border:0;background:transparent;padding:9px 14px;border-radius:9px;color:#475467;font-weight:750;font-size:.8rem;white-space:nowrap}
.analysis-nav-btn.active{background:#fff;color:var(--navy);box-shadow:0 2px 7px rgba(0,48,77,.09)}
.filter-quick-row{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.quick-filter-group{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.quick-filter-group>span{font-size:.72rem;font-weight:800;color:#667085;margin-right:3px}
.quick-btn{border:1px solid #C7D0D7;background:#fff;color:#475467;border-radius:8px;padding:7px 9px;font-size:.74rem;font-weight:750}
.quick-btn.active{background:var(--navy);border-color:var(--navy);color:#fff}
.chart-panel-wide{min-height:390px}.evolution-main-panel{padding-bottom:12px}.evolution-panel-head{align-items:flex-start}.evolution-line-shell{min-height:310px}
.evolution-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.evolution-line.line-tit{stroke:var(--navy)}.evolution-line.line-comp{stroke:var(--sena)}
.evolution-point{fill:#fff;stroke-width:3}.evolution-point.line-tit{stroke:var(--navy)}.evolution-point.line-comp{stroke:var(--sena)}
.legend-dot.line-tit{background:var(--navy)}.legend-dot.line-comp{background:var(--sena)}
.charts-grid-three{grid-template-columns:repeat(3,minmax(0,1fr))}.charts-grid-three .chart-panel{min-height:350px}
.map-panel{grid-column:auto}.map-shell{min-height:290px;width:100%;display:flex;align-items:stretch}
.map-loading{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);text-align:center}.map-loading span{width:30px;height:30px;border-radius:50%;border:3px solid #DCE4E8;border-top-color:var(--sena);animation:spin .85s linear infinite}
.territorial-map{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:10px;width:100%}.territorial-map-main{min-width:0}.territorial-map svg{display:block;width:100%;height:250px;background:#FAFCFB;border:1px solid #E2E8E4;border-radius:10px}
.map-municipality{stroke:#587065;stroke-width:.7;vector-effect:non-scaling-stroke;cursor:pointer;transition:.15s}.map-municipality:hover{stroke:#00304D;stroke-width:2;filter:brightness(.95)}
.map-scale{display:flex;align-items:center;gap:6px;font-size:.65rem;color:var(--muted);margin-top:6px}.map-scale i{width:90px;height:8px;border-radius:999px;background:linear-gradient(90deg,#DEF1D6,#39A900,#007832)}
.map-source{font-size:.62rem;color:#7A8790;line-height:1.35;margin-top:5px}.map-ranking{border-left:1px solid var(--line);padding-left:10px;display:flex;flex-direction:column;gap:5px;min-width:0}.map-ranking>strong{font-size:.72rem;color:var(--navy);margin-bottom:2px}.map-ranking button{border:0;background:transparent;padding:5px 4px;text-align:left;display:flex;justify-content:space-between;gap:8px;font-size:.65rem;color:#475467;border-radius:6px}.map-ranking button:hover{background:#F2F9EF}.map-ranking button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-ranking button b{white-space:nowrap;color:var(--navy)}
.map-fallback{width:100%;display:flex;flex-direction:column;gap:6px}.map-fallback-note{background:#FFF9E6;border:1px solid #F5D477;border-radius:9px;padding:9px 10px;display:flex;flex-direction:column;gap:3px;font-size:.7rem}.map-fallback-note span{color:#735B25}.map-rank-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(80px,1.4fr) auto;gap:8px;align-items:center;border:0;background:#fff;padding:6px;border-radius:7px;text-align:left;font-size:.68rem}.map-rank-row:hover{background:#F7FBF5}.map-rank-row i{height:7px;background:#EDF1F3;border-radius:999px;overflow:hidden}.map-rank-row i b{display:block;height:100%;background:var(--sena)}.map-rank-row>strong{font-size:.65rem;color:var(--navy);white-space:nowrap}
.attention-card.warning{border-left:4px solid #F79009}.attention-card.info{border-left:4px solid var(--cyan)}
.empty-inline{padding:12px;color:var(--muted);font-size:.8rem}
.people-kpi:before{background:var(--navy)}
.comparison-header{padding-bottom:14px}.comparison-selects{display:grid;grid-template-columns:minmax(180px,1fr) 58px minmax(180px,1fr);gap:12px;align-items:end;max-width:620px}.compare-vs{height:40px;display:grid;place-items:center;font-weight:900;color:var(--navy)}
.comparison-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.comparison-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px}.comparison-kpi>span{font-size:.72rem;text-transform:uppercase;font-weight:800;color:#667085}.comparison-kpi>div{display:flex;align-items:center;gap:8px;font-size:1.2rem;color:var(--navy)}.comparison-kpi i{font-style:normal;color:#98A2B3}.comparison-kpi>b{font-size:.8rem}.comparison-kpi.up{border-top:4px solid var(--sena)}.comparison-kpi.up>b{color:#027A48}.comparison-kpi.down{border-top:4px solid #D92D20}.comparison-kpi.down>b{color:#B42318}.comparison-kpi.flat{border-top:4px solid #98A2B3}.comparison-kpi.flat>b{color:#667085}
.comparison-legend{display:flex;gap:8px;margin-bottom:10px}.comparison-legend span,.status-pill{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:.68rem;font-weight:800}.growth{background:#ECFDF3;color:#027A48}.decline{background:#FEF3F2;color:#B42318}.stable{background:#F2F4F7;color:#475467}
.profile-title{font-size:1.2rem;font-weight:800;color:var(--navy);margin-bottom:5px}.profile-doc{margin:0 0 12px;color:var(--muted)}.profile-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px}.profile-kpis span{border:1px solid var(--line);background:#F8FAFC;border-radius:10px;padding:10px;font-size:.72rem;color:#667085}.profile-kpis strong{display:block;color:var(--navy);font-size:1.05rem;margin-bottom:2px}.profile-mini-table{overflow:auto}.profile-mini-table table{min-width:540px}.profile-tags{display:flex;gap:6px;flex-wrap:wrap}.profile-tags span{background:#F2F9EF;border:1px solid #D7EFCB;border-radius:999px;padding:6px 9px;font-size:.72rem;color:#285D12}
.general-module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.general-module-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.general-module-card.titulada{border-top:5px solid var(--navy)}.general-module-card.complementaria{border-top:5px solid var(--sena)}.general-module-card>span{display:block;text-transform:uppercase;font-size:.72rem;font-weight:800;color:#667085}.general-module-card>strong{display:block;font-size:1.65rem;color:var(--navy);margin:7px 0}.general-module-card>div{font-size:.78rem;color:var(--muted)}
.general-two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.general-summary-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.general-summary-list span{background:#F8FAFC;border:1px solid var(--line);border-radius:9px;padding:10px;font-size:.74rem;color:#667085}.general-summary-list b{display:block;font-size:1.05rem;color:var(--navy)}
@media(max-width:1180px){.charts-grid-three{grid-template-columns:1fr 1fr}.map-panel{grid-column:1/-1}.comparison-kpis{grid-template-columns:1fr 1fr}.module-switcher-three{grid-template-columns:1fr 1fr}.module-card[data-module="General"]{grid-column:1/-1}}
@media(max-width:860px){.charts-grid-three{grid-template-columns:1fr}.map-panel{grid-column:auto}.territorial-map{grid-template-columns:1fr}.map-ranking{border-left:0;border-top:1px solid var(--line);padding:8px 0 0}.comparison-selects{grid-template-columns:1fr}.compare-vs{height:auto}.profile-kpis{grid-template-columns:1fr 1fr}.general-two-col,.general-module-grid{grid-template-columns:1fr}}
@media(max-width:600px){.module-switcher-three{grid-template-columns:1fr}.module-card[data-module="General"]{grid-column:auto}.comparison-kpis{grid-template-columns:1fr}.filter-quick-row{flex-direction:column}.evolution-panel-head{flex-direction:column}.general-summary-list{grid-template-columns:1fr}}
.comparison-pairs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:14px 0 0}.comparison-pairs>span{font-size:.72rem;font-weight:800;color:#667085;margin-right:3px}.comparison-pairs button{border:1px solid #C7D0D7;background:#fff;color:var(--navy);border-radius:999px;padding:6px 9px;font-size:.72rem;font-weight:750}.comparison-pairs button:hover{border-color:var(--sena);background:#F2F9EF}

/* v1.3.0 - mapa territorial completo, consolidacion municipal y busqueda optimizada */
.map-panel-wide{grid-column:span 2;min-height:520px}
.map-panel-wide .map-shell{min-height:455px}
.territorial-map{grid-template-columns:minmax(0,1fr) 285px;gap:14px}
.territorial-map-main{display:flex;flex-direction:column;min-width:0}
.territorial-map svg.department-map-svg,.territorial-map svg.tolima-tile-map{width:100%;height:420px;min-height:420px;background:#FBFCFB;border:1px solid #E2E8E4;border-radius:12px}
.map-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}
.map-title-row>div{display:flex;flex-direction:column;gap:2px}.map-title-row strong{font-size:.78rem;color:var(--navy)}.map-title-row span{font-size:.67rem;color:var(--muted)}.map-title-row em{font-style:normal;font-size:.64rem;color:#7A5E15;background:#FFF9E8;border:1px solid #F0D68A;border-radius:8px;padding:5px 7px;max-width:330px;line-height:1.35}
.map-ranking{padding-left:13px}.map-ranking-sub{font-size:.62rem;color:var(--muted);margin:-2px 0 4px}.map-ranking button{font-size:.68rem;padding:6px 5px}.map-ranking button b{font-size:.64rem}.map-empty{font-size:.7rem;color:var(--muted);padding:8px}
.map-scale-complete{gap:7px;flex-wrap:wrap}.map-scale-complete i{width:130px;background:linear-gradient(90deg,#E1F2D8,#91D270,#39A900,#007832,#003D20)}.map-scale-complete b{font-size:.63rem;color:#667085;margin-right:5px}.no-data-key{width:13px;height:9px;border-radius:3px;background:#E4E7EC;border:1px solid #B9C0C8}
.map-municipality.no-data{cursor:default}.map-municipality.no-data:hover{stroke:#587065;stroke-width:.7;filter:none}.map-municipality.has-data{cursor:pointer}
.map-tile{outline:none}.map-tile rect{stroke:#6B7B72;stroke-width:.8;vector-effect:non-scaling-stroke;transition:.16s}.map-tile.has-data{cursor:pointer}.map-tile.has-data:hover rect,.map-tile.has-data:focus rect{stroke:#00304D;stroke-width:2;filter:brightness(.95)}.map-tile.no-data rect{stroke:#B7BEC7}.map-tile-name{font-size:8.4px;font-weight:800;pointer-events:none}.map-tile-value{font-size:7.2px;font-weight:650;pointer-events:none}
.territorial-map-offline .map-source{margin-top:7px}

@media(max-width:1180px){.map-panel-wide{grid-column:1/-1}.territorial-map{grid-template-columns:minmax(0,1fr) 260px}}
@media(max-width:860px){.map-panel-wide{grid-column:auto}.territorial-map{grid-template-columns:1fr}.map-ranking{border-left:0;border-top:1px solid var(--line);padding:10px 0 0}.territorial-map svg.department-map-svg,.territorial-map svg.tolima-tile-map{height:auto;min-height:360px}.map-title-row{flex-direction:column}.map-title-row em{max-width:none}}
@media(max-width:560px){.territorial-map svg.department-map-svg,.territorial-map svg.tolima-tile-map{min-height:300px}.map-panel-wide{min-height:430px}}

/* v1.4.0 - navegación lateral permanente */
.app-sidebar{
  position:fixed;
  left:0;
  top:78px;
  bottom:0;
  z-index:22;
  width:238px;
  background:#fff;
  border-right:1px solid var(--line);
  box-shadow:6px 0 24px rgba(0,48,77,.05);
  padding:16px 12px 14px;
  display:flex;
  flex-direction:column;
  gap:12px;
  overflow:auto;
}
.sidebar-head{padding:2px 8px 10px;display:flex;flex-direction:column;gap:4px}
.sidebar-eyebrow{font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--sena-dark);font-weight:850}
.sidebar-head strong{font-size:1rem;color:var(--navy)}
.sidebar-head small{font-size:.69rem;line-height:1.35;color:var(--muted)}
.sidebar-nav{display:flex;flex-direction:column;gap:6px}
.sidebar-item,.sidebar-tool{
  width:100%;
  border:1px solid transparent;
  background:transparent;
  color:#344054;
  border-radius:11px;
  text-align:left;
  transition:.16s ease;
}
.sidebar-item{padding:9px;display:grid;grid-template-columns:34px minmax(0,1fr);gap:9px;align-items:center}
.sidebar-item:hover,.sidebar-tool:hover{background:#F6F9F5;border-color:#E0E7DD}
.sidebar-item.active{background:#F1F8ED;border-color:#CBE5BF;box-shadow:inset 3px 0 0 var(--sena)}
.sidebar-item[data-module="General"].active{background:#F8F3F9;border-color:#E4D5E7;box-shadow:inset 3px 0 0 var(--purple)}
.sidebar-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:#fff;font-size:.78rem;font-weight:850}
.sidebar-icon.titulada{background:var(--navy)}
.sidebar-icon.complementaria{background:var(--sena)}
.sidebar-icon.general{background:var(--purple)}
.sidebar-item>span:last-child{min-width:0;display:flex;flex-direction:column;gap:2px}
.sidebar-item strong{font-size:.79rem;color:var(--navy)}
.sidebar-item small{font-size:.63rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-section-label{padding:8px 9px 2px;border-top:1px solid #EEF1F3;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:#98A2B3;font-weight:850}
.sidebar-tools{gap:3px}
.sidebar-tool{padding:9px 10px;display:flex;align-items:center;gap:9px;font-size:.75rem}
.sidebar-tool span{width:24px;height:24px;border-radius:7px;background:#F2F4F7;display:grid;place-items:center;color:var(--navy);font-weight:850;flex:0 0 auto}
.sidebar-tool b{font-size:.74rem;font-weight:750}
.sidebar-tool.active{background:#F2F9EF;color:#285D12}
.sidebar-tool.active span{background:#DDF0D4;color:#285D12}
.sidebar-foot{margin-top:auto;border-top:1px solid #EEF1F3;padding:11px 9px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted)}
.sidebar-foot span{font-size:.64rem}.sidebar-foot small{font-size:.62rem;font-weight:800;color:var(--navy)}
.app-shell>main{width:auto;max-width:none;margin:0 0 0 238px}
.app-shell>.footer{margin-left:238px}
.topbar{padding-left:18px}
.sidebar-anchor-flash{animation:sidebarFlash 1.2s ease}
@keyframes sidebarFlash{0%,100%{box-shadow:none}35%{box-shadow:0 0 0 4px rgba(57,169,0,.18)}}

@media(max-width:1040px){
  .app-sidebar{width:210px}
  .app-shell>main{margin-left:210px}
  .app-shell>.footer{margin-left:210px}
  .sidebar-head small{display:none}
}
@media(max-width:760px){
  .app-sidebar{position:sticky;top:78px;bottom:auto;width:100%;height:auto;z-index:21;padding:8px 10px;display:block;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--line);box-shadow:0 4px 14px rgba(0,48,77,.05)}
  .sidebar-head,.sidebar-section-label,.sidebar-foot{display:none}
  .sidebar-nav{display:flex;flex-direction:row;gap:6px;width:max-content}
  .sidebar-nav+.sidebar-section-label+.sidebar-nav{margin-left:6px;display:inline-flex}
  .sidebar-item{width:180px;grid-template-columns:30px minmax(0,1fr);padding:7px}
  .sidebar-icon{width:30px;height:30px}
  .sidebar-tools{display:none}
  .app-shell>main{margin-left:0}
  .app-shell>.footer{margin-left:0}
}
.map-title-actions{display:flex;align-items:flex-end;gap:7px;flex-direction:column}
.map-retry{border:1px solid #B8C4CC;background:#fff;color:var(--navy);border-radius:8px;padding:6px 9px;font-size:.64rem;font-weight:750}
.map-retry:hover{border-color:var(--sena);background:#F2F9EF;color:#285D12}
@media(max-width:860px){.map-title-actions{align-items:flex-start;width:100%}}

/* v1.5 - Reportes centralizados y ámbitos de análisis */
.sidebar-icon.reports{background:linear-gradient(135deg,var(--sena),var(--sena-dark));font-size:1rem}
.sidebar-report.active{background:#F1F8ED;border-color:#CBE5BF;box-shadow:inset 3px 0 0 var(--sena)}
.reports-header h2{margin:0;color:var(--navy);font-size:1.5rem}
.reports-hero .hero-copy h1{font-size:clamp(1.9rem,3.6vw,3rem);max-width:720px}
.report-mode-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:22px}
.report-mode-btn{appearance:none;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px;text-align:left;cursor:pointer;transition:.16s ease;display:flex;flex-direction:column;gap:3px;color:var(--navy)}
.report-mode-btn:hover{border-color:#A8CE98;background:#F8FCF6}.report-mode-btn.active{border-color:#7DBB63;background:#F1F8ED;box-shadow:inset 0 0 0 1px #CBE5BF}
.report-mode-btn strong{font-size:.82rem}.report-mode-btn span{font-size:.68rem;color:var(--muted)}
.report-classification-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.report-class-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.report-class-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#98A2B3}.report-class-card.general:before{background:var(--purple)}.report-class-card.titulada:before{background:var(--navy)}.report-class-card.complementaria:before{background:var(--sena)}
.report-class-card span{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}.report-class-card strong{display:block;margin:5px 0 3px;font-size:1.45rem;color:var(--navy)}.report-class-card small{font-size:.69rem;color:var(--muted)}
.report-files-list{overflow:auto}.report-files-list table{width:100%;border-collapse:collapse}.report-files-list th,.report-files-list td{padding:10px 12px;border-bottom:1px solid #EEF1F3;text-align:left;font-size:.72rem;white-space:nowrap}.report-files-list th{font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:#667085;background:#F8FAFC}.report-files-list td:first-child{white-space:normal;min-width:220px}.report-type-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:.63rem;font-weight:800}.report-type-pill.titulada{background:#E8F0F5;color:var(--navy)}.report-type-pill.complementaria{background:#EAF6E4;color:#285D12}.report-type-pill.unknown{background:#FFF3DA;color:#8A5600}
.general-module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.general-module-card.general{border-top:5px solid var(--purple)}
.legend-dot.line-general,.evolution-point.line-general{fill:var(--purple)}.evolution-line.line-general{stroke:var(--purple)}
.scope-context{display:inline-flex;align-items:center;gap:6px;font-size:.66rem;color:var(--muted)}
@media(max-width:980px){.report-classification-grid,.general-module-grid{grid-template-columns:1fr}.report-mode-row{grid-template-columns:1fr}}


/* v1.6.0 - Reportes visible y optimizaciones de experiencia */
.sidebar-primary-label{border-top:0;padding-top:2px;color:#667085}
.sidebar-primary-nav{padding:0 2px 6px;border-bottom:1px solid #EEF1F3}
.sidebar-report{background:#F7FBF5;border-color:#D9EBCF;min-height:56px}
.sidebar-report:hover{background:#EFF8EA;border-color:#B9DDA9}
.sidebar-report strong{font-size:.86rem}
.sidebar-report small{font-size:.65rem}
.sidebar-report .sidebar-icon{box-shadow:0 4px 10px rgba(57,169,0,.18)}
.search-busy{position:relative}
.search-busy:after{content:"Actualizando…";position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:.6rem;color:#667085;background:#fff;padding-left:6px}
@media(max-width:760px){.sidebar-primary-label{display:none}.sidebar-primary-nav{display:inline-flex!important;border-bottom:0;padding:0}.sidebar-report{min-height:46px}}

/* v1.7 · rendimiento, reportes y cobertura nacional */
.reports-export-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}.export-card{display:flex;flex-direction:column;gap:10px;min-height:220px}.export-card h3{margin:0}.export-card p{margin:0;color:#667085;line-height:1.45;flex:1}.export-icon{width:54px;height:34px;border-radius:9px;background:#eef8e9;color:#277900;font-weight:800;display:grid;place-items:center;font-size:12px}.performance-export-note{padding:4px 0;color:#59636e}.session-status{font-size:11px;color:#667085;margin-top:8px;text-align:center;min-height:14px}.perf-help{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin:8px 0 14px}.perf-help span{background:#f6f8fa;border:1px solid #e6e9ed;border-radius:8px;padding:8px 10px}.national-tile-map,.department-data-map{width:100%;height:auto;display:block;min-height:420px}.department-data-map{min-height:260px}.map-empty-large{min-height:280px;display:grid;place-items:center}.territorial-map .map-tile{cursor:pointer}.territorial-map .map-tile.no-data{cursor:pointer}.territorial-map .map-tile rect{stroke:#fff;stroke-width:1.2}.territorial-map .map-tile:focus rect,.territorial-map .map-tile:hover rect{stroke:#1d5f13;stroke-width:2}.map-title-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.map-title-actions .map-retry:empty{display:none}.certificate-filter-grid{grid-template-columns:minmax(240px,1.5fr) repeat(6,minmax(130px,1fr))}.sidebar-tool#sidebarExportsBtn span{font-weight:800}.sidebar-item.sidebar-report .sidebar-icon{background:#e9f7e3;color:#2f8100}
@media (max-width:1280px){.reports-export-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.certificate-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.certificate-search{grid-column:span 3}}
@media (max-width:760px){.reports-export-grid,.perf-help{grid-template-columns:1fr}.certificate-filter-grid{grid-template-columns:1fr}.certificate-search{grid-column:auto}.national-tile-map{min-width:760px}.territorial-map-main{overflow:auto}}

/* v1.7.1 - mapa geografico inspirado en GAE 360 + barra de concentracion */
.certificate-real-map{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,.58fr);gap:14px;width:100%;align-items:stretch}
.certificate-real-map-main{min-width:0;border:1px solid #dce6df;border-radius:14px;background:#fbfdfb;padding:12px;display:flex;flex-direction:column}
.certificate-real-map-svg{width:100%;height:auto;min-height:430px;max-height:570px;display:block;background:#fff;border:1px solid #e2e9e4;border-radius:12px}
.certificate-map-head{align-items:flex-start}
.certificate-map-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-left:auto}
.certificate-map-range{display:grid;grid-template-columns:auto minmax(150px,220px);align-items:center;gap:8px;min-width:275px;font-size:.67rem;font-weight:800;color:#5f6f66;white-space:nowrap;background:#fff;border:1px solid #dfe8e2;border-radius:9px;padding:7px 9px}
.certificate-map-range span{display:flex;align-items:center;gap:4px}.certificate-map-range b{color:#007832;min-width:38px;text-align:right}
.certificate-map-range input[type="range"]{width:100%;margin:0;accent-color:#39A900;cursor:pointer}
.certificate-map-muni{outline:none}.certificate-map-muni path{transition:filter .14s,stroke-width .14s,opacity .14s}.certificate-map-muni.has-data{cursor:pointer}.certificate-map-muni.has-data:hover path,.certificate-map-muni.has-data:focus path{stroke:#00304D;stroke-width:2;filter:brightness(.94)}
.certificate-map-muni.no-data{cursor:default}.certificate-map-muni.no-data path{opacity:.88}.certificate-map-muni.outside-concentration path{opacity:.72}
.certificate-map-label{font-size:8.4px;font-weight:800;fill:#294336;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:2px;stroke-linejoin:round;pointer-events:none}
.certificate-map-coverage{display:grid;grid-template-columns:auto minmax(150px,1fr) auto;gap:8px;align-items:center;margin-top:8px;font-size:.66rem;color:#5f6f66}
.certificate-map-coverage>div{height:9px;background:#e7ece9;border-radius:999px;overflow:hidden;border:1px solid #dbe4de}.certificate-map-coverage>div i{display:block;height:100%;background:linear-gradient(90deg,#9bd47e,#39A900,#007832);border-radius:999px}.certificate-map-coverage b{color:#007832;min-width:42px;text-align:right}
.certificate-real-map .map-ranking{border:1px solid #dce6df;border-radius:14px;background:#fbfdfb;padding:12px;max-height:660px;overflow:auto}
.certificate-real-map .map-ranking>strong{display:block;font-size:.76rem;margin-bottom:2px}.certificate-real-map .map-ranking-sub{display:block;margin-bottom:7px}.certificate-real-map .map-ranking button{padding:7px 5px}
.certificate-map-fallback{width:100%;border:1px solid #dce6df;border-radius:14px;background:#fbfdfb;padding:12px}.map-fallback-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:5px 0 10px}.map-fallback-actions small{color:#7a8790;font-size:.62rem}
.map-fallback-list{display:grid;gap:4px}.map-fallback-row{display:grid;grid-template-columns:minmax(130px,1.1fr) minmax(100px,1.5fr) auto;gap:9px;align-items:center;width:100%;border:0;background:#fff;border-radius:7px;padding:7px;text-align:left;color:#475467;font-size:.66rem}.map-fallback-row:hover{background:#f2f9ef}.map-fallback-row i{height:7px;border-radius:999px;background:#e7ece9;overflow:hidden}.map-fallback-row i b{display:block;height:100%;background:#39A900;border-radius:999px}.map-fallback-row strong{font-size:.64rem;color:#17351e;white-space:nowrap}
.map-loading small{font-size:.65rem;color:#7a8790}
.map-scale.map-scale-complete strong{font-size:.63rem;color:#31513b;margin-left:auto}
@media(max-width:1050px){.certificate-real-map{grid-template-columns:1fr}.certificate-real-map .map-ranking{max-height:340px}.certificate-real-map-svg{min-height:360px}.certificate-map-controls{justify-content:flex-start;margin-left:0;width:100%}.certificate-map-range{grid-template-columns:auto minmax(120px,1fr);width:100%}}
@media(max-width:700px){.certificate-map-range{min-width:0}.certificate-map-coverage{grid-template-columns:1fr auto}.certificate-map-coverage>div{grid-column:1/-1;grid-row:2}.certificate-real-map-svg{min-height:300px}.map-fallback-row{grid-template-columns:1fr auto}.map-fallback-row i{grid-column:1/-1;grid-row:2}}

/* v1.8 · PE-04 opcional + composicion territorial compacta */
.pe04-upload-panel{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(290px,.8fr);gap:18px;align-items:stretch;margin-top:14px}
.pe04-upload-copy{display:flex;flex-direction:column;justify-content:center;gap:8px;min-width:0}
.pe04-upload-copy h3{margin:0;color:var(--navy)}
.pe04-upload-copy p{margin:0;color:#667085;line-height:1.5;max-width:920px}
.pe04-status{font-size:.72rem;color:#52605a;background:#f6f9f6;border:1px solid #e0e9e2;border-radius:9px;padding:8px 10px}
.pe04-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.pe04-dropzone{min-height:126px;border:1.5px dashed #9ec98a;border-radius:13px;background:#fbfef9;padding:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:5px;cursor:pointer;transition:.15s ease}
.pe04-dropzone:hover,.pe04-dropzone.dragover{border-color:#39A900;background:#f2faed;box-shadow:0 0 0 3px rgba(57,169,0,.08)}
.pe04-dropzone strong{color:#246a10}.pe04-dropzone small,.pe04-dropzone span{color:#667085;font-size:.7rem}.pe04-dropzone span{font-size:.64rem}
.pe04-trace-panel{margin-top:12px}.pe04-trace-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.pe04-trace-list>span{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border:1px solid #e4e9e5;border-radius:9px;background:#fafcfa}.pe04-trace-list small{color:#667085;font-size:.65rem}
.pe04-filter-panel{border:1px solid #dce8de;background:#f9fcf8;border-radius:12px;padding:10px 12px;margin-top:10px}.pe04-filter-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.pe04-filter-head strong{color:#2c6f18;font-size:.74rem}.pe04-filter-head span{color:#667085;font-size:.65rem}.pe04-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.pe04-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:10px 0 14px}.pe04-kpi-card{background:#f8fbf7;border:1px solid #dce8de;border-radius:11px;padding:11px 12px;display:flex;flex-direction:column;gap:3px}.pe04-kpi-card>div{font-size:.64rem;text-transform:uppercase;letter-spacing:.03em;color:#667085}.pe04-kpi-card strong{font-size:1.05rem;color:#17351e}.pe04-kpi-card span{font-size:.64rem;color:#667085}

.territorial-dashboard-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(310px,.82fr);gap:14px;align-items:stretch;margin-bottom:14px}
.territorial-dashboard-grid>.map-panel{grid-column:auto;min-width:0;min-height:690px;display:flex;flex-direction:column}
.territorial-dashboard-grid>.map-panel .map-shell{flex:1;min-height:0}
.territorial-side-stack{display:grid;grid-template-rows:1fr 1fr;gap:14px;min-width:0}
.territorial-side-stack>.compact-side-chart{min-height:0;display:flex;flex-direction:column;overflow:hidden}
.territorial-side-stack>.compact-side-chart .chart-shell{flex:1;min-height:0;overflow:auto}
.territorial-side-stack>.compact-side-chart .bar-chart{min-width:0}
.map-location-segments{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px}.map-location-segments .segment{font-size:.65rem;padding:6px 8px}.map-location-segments .segment:disabled{opacity:.5;cursor:not-allowed}
.territorial-dashboard-grid .certificate-real-map{height:100%}.territorial-dashboard-grid .certificate-real-map-main{min-height:610px}.territorial-dashboard-grid .certificate-real-map-svg{min-height:455px;max-height:565px}
.certificate-real-map .map-ranking{max-height:625px}
.certificate-real-map .map-ranking .map-ranking-more,.map-fallback-list .map-ranking-more{margin-top:4px;background:#edf8e8;border:1px dashed #92c878;color:#236b12;font-weight:800}
.certificate-real-map .map-ranking .map-ranking-more:hover,.map-fallback-list .map-ranking-more:hover{background:#e4f5dc}
.certificate-real-map .map-ranking .map-ranking-more b{color:#236b12}

@media(max-width:1180px){
  .territorial-dashboard-grid{grid-template-columns:1fr}
  .territorial-dashboard-grid>.map-panel{min-height:auto}
  .territorial-side-stack{grid-template-columns:1fr 1fr;grid-template-rows:auto}
  .territorial-dashboard-grid .certificate-real-map-main{min-height:0}
  .pe04-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:860px){
  .pe04-upload-panel{grid-template-columns:1fr}
  .pe04-filter-grid,.territorial-side-stack{grid-template-columns:1fr}
  .territorial-side-stack{grid-template-rows:auto}
  .territorial-side-stack>.compact-side-chart{min-height:320px}
  .map-location-segments{justify-content:flex-start;width:100%}
}
@media(max-width:560px){.pe04-kpi-grid{grid-template-columns:1fr}.pe04-filter-head{align-items:flex-start;flex-direction:column}}

/* v1.8.1 · Acciones de detalle siempre en modal */
body.modal-open{overflow:hidden}
.eye-detail-btn{width:34px;height:34px;display:inline-grid;place-items:center;padding:0;border:1px solid #C9D8CE;border-radius:10px;background:#F4FAF1;color:var(--sena-dark);text-decoration:none;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease}
.eye-detail-btn:hover{background:#E7F5E1;border-color:#8FBE80;color:var(--navy);transform:translateY(-1px)}
.eye-detail-btn:focus-visible{outline:3px solid rgba(57,169,0,.2);outline-offset:2px}
.eye-detail-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.action-col .eye-detail-btn{margin:auto}
.attention-card .eye-detail-btn{margin-top:auto;align-self:flex-start}
.detail-data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin:14px 0}
.detail-data-grid>div{background:#F6F8F9;border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px}
.detail-data-grid b{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}.detail-data-grid span{font-weight:700;color:var(--navy);word-break:break-word}
@media(max-width:680px){.detail-data-grid{grid-template-columns:1fr}}

/* v1.9.0 · Vista compacta a 100%, flujo de carga en 2 pasos y PE-04 ampliado */
@media(min-width:761px){
  .topbar{min-height:66px;padding:7px 18px;gap:14px}
  .brand{gap:11px}
  .brand img{width:48px}
  .brand-kicker{font-size:.66rem}
  .brand-title{font-size:1.08rem}
  .header-actions{gap:6px}
  .badge{padding:5px 9px;font-size:.68rem}
  .app-sidebar{top:66px;width:208px;padding:10px 9px 10px;gap:7px}
  .sidebar-head{padding:0 7px 6px;gap:2px}
  .sidebar-head strong{font-size:.88rem}
  .sidebar-head small{font-size:.61rem;line-height:1.25}
  .sidebar-eyebrow{font-size:.58rem}
  .sidebar-nav{gap:3px}
  .sidebar-section-label{padding:6px 8px 1px;font-size:.56rem}
  .sidebar-item{padding:6px 7px;grid-template-columns:29px minmax(0,1fr);gap:7px;border-radius:9px}
  .sidebar-icon{width:29px;height:29px;border-radius:8px;font-size:.68rem}
  .sidebar-item strong{font-size:.7rem}
  .sidebar-item small{font-size:.57rem}
  .sidebar-tool{padding:6px 8px;gap:7px;font-size:.68rem}
  .sidebar-tool span{width:21px;height:21px;border-radius:6px}
  .sidebar-tool b{font-size:.67rem}
  .sidebar-foot{padding:7px 7px 0}
  .app-shell>main{margin-left:208px;padding:20px 22px}
  .app-shell>.footer{margin-left:208px}
  .hero{grid-template-columns:minmax(0,1.42fr) minmax(300px,.58fr);gap:16px}
  .hero-copy{padding:30px 34px}
  .hero-copy h1{font-size:clamp(2rem,3vw,2.65rem);margin:6px 0 12px;max-width:760px}
  .hero-copy p{font-size:.93rem;line-height:1.47;margin-bottom:15px}
  .eyebrow{font-size:.68rem}
  .feature-row{gap:7px;margin-top:16px}
  .feature-chip{padding:6px 9px;font-size:.71rem}
  .upload-card{padding:17px;gap:10px}
  .upload-card h2{font-size:1.02rem}
  .dropzone{min-height:186px;padding:18px}
  .drop-icon{width:50px;height:50px;border-radius:14px;font-size:1.45rem;margin-bottom:10px}
  .dropzone strong{font-size:.88rem}
  .dropzone small{font-size:.72rem}
  .privacy-note{padding:8px 10px;font-size:.69rem}
  .dashboard{gap:14px}
  .panel{padding:14px}
}

.load-next-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;border:1px solid #dce6df;border-radius:14px;padding:14px 16px;margin-top:12px;box-shadow:0 7px 20px rgba(0,48,77,.05)}
.load-next-actions>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0}.load-next-actions strong{color:var(--navy);font-size:.88rem}.load-next-actions span{color:var(--muted);font-size:.7rem;line-height:1.35}.load-next-buttons{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.load-stepper{display:grid;grid-template-columns:auto minmax(40px,1fr) auto minmax(40px,1fr) auto;align-items:center;gap:9px;max-width:760px;margin:0 auto 2px;color:#98A2B3;font-size:.72rem;font-weight:750}.load-stepper>span{display:flex;align-items:center;gap:7px;white-space:nowrap}.load-stepper b{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#EEF2F4;color:#667085;font-size:.7rem}.load-stepper>i{height:2px;background:#E4E7EC;border-radius:999px}.load-stepper .done{color:#287615}.load-stepper .done b{background:#E6F5DF;color:#287615}.load-stepper .active{color:var(--navy)}.load-stepper .active b{background:var(--sena);color:#fff}.load-stepper .done+i{background:#B8DEA9}
.pe04-setup-view{max-width:1500px;margin:0 auto}.pe04-setup-header{margin-bottom:0}.pe04-setup-grid{display:grid;grid-template-columns:minmax(310px,.82fr) minmax(420px,1.18fr);gap:14px;align-items:stretch}.pe04-setup-summary,.pe04-setup-upload{min-height:390px}.pe04-setup-summary{display:flex;flex-direction:column;gap:10px}.pe04-setup-summary h3{margin:0;color:var(--navy);font-size:1.15rem}.pe04-setup-cert-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.pe04-setup-cert-summary>div{background:#F7F9FA;border:1px solid #E2E7EA;border-radius:10px;padding:10px 11px;display:flex;flex-direction:column;gap:2px}.pe04-setup-cert-summary strong{font-size:1.05rem;color:var(--navy)}.pe04-setup-cert-summary span{font-size:.65rem;color:#667085}.pe04-explain{background:#F3F9F0;border:1px solid #D6EBCB;border-radius:11px;padding:11px 12px}.pe04-explain strong{font-size:.76rem;color:#286C16}.pe04-explain p{margin:5px 0 0;font-size:.7rem;color:#52605A;line-height:1.48}.pe04-setup-summary>.btn{margin-top:auto;align-self:flex-start}.pe04-setup-upload{display:flex;flex-direction:column}.pe04-dropzone-large{min-height:235px;flex:1;padding:24px}.pe04-drop-icon{width:54px;height:54px;margin-bottom:7px}.pe04-dropzone-large strong{font-size:.95rem}.pe04-dropzone-large small{font-size:.72rem}.pe04-continue-panel{display:flex;align-items:center;justify-content:space-between;gap:16px}.pe04-continue-panel>div{display:flex;flex-direction:column;gap:2px}.pe04-continue-panel strong{font-size:.85rem;color:var(--navy)}.pe04-continue-panel span{font-size:.69rem;color:#667085}

.pe04-insights{margin-top:2px}.pe04-insights-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.pe04-insights-head h3{margin:0;color:var(--navy);font-size:1rem}.pe04-insights-head p{margin:3px 0 0;color:#667085;font-size:.7rem}.pe04-insights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.pe04-insights-grid>.panel{min-height:275px}.pe04-insights-grid .chart-shell{min-height:220px}
.pe04-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr))}

.pe04-detail-banner{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid #BFE2AF;background:#F1F9ED;border-radius:11px;color:#285F17;margin:8px 0 12px}.pe04-detail-banner strong{font-size:.76rem}.pe04-detail-banner span{display:block;font-size:.67rem;line-height:1.4;margin-top:2px;color:#4C6950}.pe04-detail-missing{padding:12px 14px;background:#FFF8E8;border:1px solid #F0D58B;border-radius:10px;color:#795A13;font-size:.72rem;line-height:1.45}.ficha-base-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 10px;margin:10px 0 12px}.ficha-detail-group{border:1px solid #DFE6E1;background:#FAFCFA;border-radius:11px;margin:8px 0;overflow:hidden}.ficha-detail-group summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:.75rem;font-weight:800;color:var(--navy);display:flex;align-items:center;justify-content:space-between;gap:8px}.ficha-detail-group summary::-webkit-details-marker{display:none}.ficha-detail-group summary:after{content:'+';font-size:1rem;color:#4A6C56}.ficha-detail-group[open] summary{background:#F0F7ED;border-bottom:1px solid #DCE9D6}.ficha-detail-group[open] summary:after{content:'−'}.ficha-detail-group .detail-data-grid{margin:0;padding:10px;background:#fff}.ficha-detail-group .detail-data-grid>div{padding:9px 10px}.ficha-detail-group .detail-data-grid b{font-size:.64rem}.ficha-detail-group .detail-data-grid span{font-size:.74rem}.ficha-detail-group h5{margin:0}.modal-note{font-size:.68rem;color:#667085}

@media(max-width:1180px){.pe04-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pe04-setup-grid{grid-template-columns:1fr 1fr}.ficha-base-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:940px){.pe04-setup-grid,.pe04-insights-grid{grid-template-columns:1fr}.pe04-setup-summary,.pe04-setup-upload{min-height:0}.pe04-dropzone-large{min-height:210px}.load-next-actions,.pe04-continue-panel{align-items:flex-start;flex-direction:column}.load-next-buttons{justify-content:flex-start}}
@media(max-width:760px){.app-sidebar{top:66px}.pe04-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.load-stepper{grid-template-columns:auto 1fr auto;max-width:none}.load-stepper>span:nth-of-type(3),.load-stepper>i:nth-of-type(2){display:none}}
@media(max-width:560px){.pe04-kpi-grid,.pe04-setup-cert-summary,.ficha-base-grid{grid-template-columns:1fr}.load-next-buttons{width:100%}.load-next-buttons .btn,.pe04-continue-panel>.btn{width:100%}.load-stepper{display:flex;justify-content:space-between}.load-stepper>i{display:none}.pe04-insights-grid>.panel{min-height:240px}}

/* v1.9.1 · Panel lateral de filtros múltiples */
body.filter-drawer-open{overflow:hidden}
.dashboard-filter-bar{display:grid;grid-template-columns:minmax(260px,1.15fr) minmax(280px,1.6fr) auto;gap:14px;align-items:end;padding:14px 16px}
.dashboard-filter-search{display:flex;flex-direction:column;gap:6px;min-width:0}
.dashboard-filter-search label,.filter-summary-label{font-size:.7rem;font-weight:800;color:#667085;text-transform:uppercase;letter-spacing:.05em}
.dashboard-filter-search input{width:100%;min-height:40px;border:1px solid #BCC7CF;border-radius:10px;padding:9px 11px;outline:none;background:#fff;color:var(--ink)}
.dashboard-filter-search input:focus{border-color:var(--sena);box-shadow:0 0 0 3px rgba(57,169,0,.13)}
.dashboard-filter-summary{min-width:0;display:flex;flex-direction:column;gap:7px}
.active-filter-chips{display:flex;gap:6px;align-items:center;flex-wrap:wrap;min-height:40px}
.filter-empty-chip{display:inline-flex;align-items:center;min-height:30px;padding:6px 9px;border:1px dashed #CBD5DC;border-radius:9px;color:#7A8691;background:#FAFBFC;font-size:.72rem}
.active-filter-chip{display:inline-flex;align-items:center;gap:7px;max-width:230px;min-height:30px;border:1px solid #CDE6C3;background:#F1F8EE;color:#285F17;border-radius:999px;padding:5px 8px 5px 10px;font-size:.7rem;font-weight:700}
.active-filter-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.active-filter-chip b{font-size:.9rem;line-height:1;color:#46713B}
.dashboard-filter-actions{display:flex;align-items:flex-end;justify-content:flex-end;gap:12px;flex-wrap:wrap}
.compact-ranking{justify-content:flex-end}
.btn-filter{position:relative;background:#fff;border-color:#99C989;color:#235F11;min-width:108px}
.btn-filter:hover:not(:disabled){border-color:var(--sena);background:#F4FAF1}
.btn-filter svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.filter-count-badge{position:absolute;right:-6px;top:-7px;display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--sena);color:#fff;font-size:.65rem;font-weight:800;border:2px solid #fff}
.filter-drawer-backdrop{position:fixed;inset:0;z-index:148;background:rgba(0,31,49,.28);backdrop-filter:blur(1px)}
.filter-drawer{position:fixed;top:0;right:0;z-index:150;width:min(540px,calc(100vw - 16px));height:100dvh;background:#fff;border-left:1px solid #DDE3E8;box-shadow:-22px 0 55px rgba(0,48,77,.18);display:flex;flex-direction:column;transform:translateX(102%);visibility:hidden;transition:transform .22s ease,visibility .22s ease}
.filter-drawer.open{transform:translateX(0);visibility:visible}
.filter-drawer-head{display:flex;justify-content:space-between;gap:14px;padding:18px 20px 15px;border-bottom:1px solid var(--line);background:#fff}
.filter-drawer-head h3{margin:4px 0 4px;color:var(--navy);font-size:1.15rem}
.filter-drawer-head p{margin:0;color:#667085;font-size:.76rem;line-height:1.4}
.filter-drawer-close{flex:0 0 auto;width:36px;height:36px;border-radius:10px;border:1px solid #D7DEE3;background:#fff;color:#344054;font-size:1.35rem;line-height:1}
.filter-drawer-body{flex:1;overflow:auto;padding:14px 16px 18px;background:#F7F9FA}
.filter-drawer-section{background:#fff;border:1px solid #E0E6EA;border-radius:13px;padding:12px;margin-bottom:10px}
.filter-drawer-section.period-section{border-color:#CAE5BF;background:#FBFEFA}
.filter-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:9px}
.filter-group-head strong{display:block;color:var(--navy);font-size:.78rem}
.filter-group-head small{display:block;color:#7A8591;font-size:.64rem;margin-top:2px}
.filter-group-head>button{border:0;background:transparent;color:#4B6C55;font-weight:750;font-size:.66rem;padding:2px 0}
.filter-group-head>button:hover{color:var(--sena-dark);text-decoration:underline}
.filter-group-search{width:100%;min-height:34px;border:1px solid #D4DDE2;border-radius:8px;padding:7px 9px;margin:0 0 9px;font-size:.72rem;outline:none}
.filter-group-search:focus{border-color:#8DC87C;box-shadow:0 0 0 2px rgba(57,169,0,.09)}
.filter-period-quick{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:9px}
.filter-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:250px;overflow:auto;padding:1px}
#filterOptions-program,#filterOptions-ficha,#filterOptions-residence,#filterOptions-fichaMunicipality{grid-template-columns:1fr;max-height:285px}
.filter-choice{position:relative;display:flex;align-items:center;gap:7px;min-height:34px;border:1px solid #DCE3E7;border-radius:9px;background:#fff;padding:6px 8px;cursor:pointer;transition:.12s ease;min-width:0}
.filter-choice:hover{border-color:#A7C99B;background:#FAFDF9}
.filter-choice.selected{border-color:#86C46E;background:#EFF8EB;box-shadow:inset 0 0 0 1px rgba(57,169,0,.05)}
.filter-choice input{position:absolute;opacity:0;pointer-events:none}
.filter-choice-mark{width:18px;height:18px;flex:0 0 18px;border-radius:5px;border:1px solid #B7C3C9;display:grid;place-items:center;color:transparent;background:#fff;font-size:.65rem;font-weight:900}
.filter-choice.selected .filter-choice-mark{background:var(--sena);border-color:var(--sena);color:#fff}
.filter-choice-text{min-width:0;color:#344054;font-size:.7rem;font-weight:650;line-height:1.25;overflow-wrap:anywhere}
.filter-choice-empty{grid-column:1/-1;padding:11px;border:1px dashed #DCE3E7;border-radius:8px;background:#FAFBFC;color:#7A8691;font-size:.7rem;text-align:center}
.filter-more-btn{margin-top:8px;width:100%;border:1px solid #D6DEE3;background:#fff;border-radius:8px;min-height:32px;color:#466054;font-size:.68rem;font-weight:750}
.filter-more-btn:hover{border-color:#99C989;background:#F7FBF5}
.pe04-drawer-section{border-color:#CFE5C8;background:#FAFDF9}
.filter-drawer-subgroup+.filter-drawer-subgroup{margin-top:12px;padding-top:12px;border-top:1px solid #E3ECE0}
.filter-options-section{padding:9px 12px}
.filter-duplicate-check{min-height:32px;font-weight:650}
.filter-drawer-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid var(--line);background:#fff;box-shadow:0 -8px 22px rgba(0,48,77,.05)}
.filter-drawer-foot>div{display:flex;gap:8px}
@media(max-width:1180px){.dashboard-filter-bar{grid-template-columns:1fr 1fr}.dashboard-filter-actions{grid-column:1/-1;justify-content:space-between}.compact-ranking{justify-content:flex-start}}
@media(max-width:760px){.dashboard-filter-bar{grid-template-columns:1fr}.dashboard-filter-actions{grid-column:auto;align-items:center}.dashboard-filter-summary{order:3}.filter-drawer{width:100vw}.filter-choice-grid{grid-template-columns:1fr}.filter-drawer-head{padding:15px 16px}.filter-drawer-body{padding:12px}.filter-drawer-foot{padding:10px 12px}}
@media print{.dashboard-filter-bar,.filter-drawer,.filter-drawer-backdrop{display:none!important}}

/* v1.9.2 - filtros encadenados y acceso compacto junto a Informe PDF */
.dashboard-header .actions .btn-filter-compact{min-width:92px;padding-inline:10px;gap:6px;background:#fff;border-color:#9CCF8B;color:#245F15;box-shadow:none}
.dashboard-header .actions .btn-filter-compact:hover:not(:disabled){background:#F3FAF0;border-color:var(--sena)}
.dashboard-header .actions .btn-filter-compact .filter-expand-mark{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#EDF7E9;color:var(--sena-dark);font-style:normal;font-size:1rem;font-weight:900;line-height:1;transition:transform .18s ease,background .18s ease}
.dashboard-header .actions .btn-filter-compact[aria-expanded="true"] .filter-expand-mark{background:#DFF1D8;transform:rotate(180deg)}
.dashboard-header .actions .btn-filter-compact .filter-count-badge{right:-7px;top:-8px}
.dashboard-filter-actions{justify-content:flex-end}
.filter-drawer-section{transition:border-color .15s ease,box-shadow .15s ease}
.filter-drawer-section:focus-within{border-color:#B8DDAA;box-shadow:0 0 0 2px rgba(57,169,0,.05)}
@media(max-width:760px){.dashboard-header .actions .btn-filter-compact{min-width:84px}.dashboard-header .actions{gap:6px}}

/* v1.9.3 - barra de acciones, filtros compactos y comparación de programas */
.dashboard-main-actions{flex:1 1 760px;min-width:0;justify-content:space-between;align-items:center;width:100%}
.dashboard-action-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.dashboard-main-actions>.btn-filter-compact{margin-left:auto;flex:0 0 auto}
.filter-choice-grid{max-height:220px}
.filter-more-btn{display:flex;align-items:center;justify-content:center;gap:6px}

.program-comparison-header{padding-bottom:14px}
.program-comparison-counter{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.program-comparison-counter>strong{display:inline-flex;align-items:center;min-height:30px;padding:5px 10px;border-radius:999px;background:#EEF7EA;color:#285D12;font-size:.72rem}
.program-comparison-picker{display:grid;gap:10px}
.program-compare-search{display:flex;flex-direction:column;gap:6px;max-width:620px}
.program-compare-search label{font-size:.72rem;font-weight:800;color:#475467}
.program-compare-search input{width:100%;border:1px solid #BCC7CF;border-radius:9px;background:#fff;color:var(--ink);padding:9px 10px;min-height:40px;outline:none}
.program-compare-search input:focus{border-color:var(--sena);box-shadow:0 0 0 3px rgba(57,169,0,.13)}
.program-compare-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.program-compare-choice{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:center;border:1px solid #D8E0E5;border-radius:10px;background:#fff;padding:9px 10px;cursor:pointer;min-width:0;transition:.15s ease}
.program-compare-choice:hover{border-color:#9CCF8B;background:#F8FCF6}
.program-compare-choice.selected{border-color:#79B960;background:#F0F8EC;box-shadow:inset 0 0 0 1px #D3EAC8}
.program-compare-choice input{position:absolute;opacity:0;pointer-events:none}
.program-compare-check{width:22px;height:22px;border-radius:6px;border:1px solid #B8C4CC;display:grid;place-items:center;color:transparent;background:#fff;font-weight:900;font-size:.72rem}
.program-compare-choice.selected .program-compare-check{background:var(--sena);border-color:var(--sena);color:#fff}
.program-compare-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.program-compare-copy strong{font-size:.73rem;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.program-compare-copy small{font-size:.64rem;color:#667085}
.program-compare-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:14px 0}
.program-compare-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:12px;min-width:0;position:relative;overflow:hidden}
.program-compare-card>.program-color-dot{position:absolute;left:0;top:0;bottom:0;width:4px;height:auto;border-radius:0}
.program-compare-card>strong{display:block;color:var(--navy);font-size:.76rem;line-height:1.25;margin:0 0 8px 3px;min-height:38px}
.program-compare-card>div{display:grid;grid-template-columns:1fr;gap:4px;margin-left:3px}
.program-compare-card span{font-size:.65rem;color:#667085}.program-compare-card span b{color:var(--navy);font-size:.78rem;margin-right:3px}
.program-compare-chart-head{align-items:flex-start;flex-wrap:wrap}
.program-metric-bars{display:flex;flex-direction:column;gap:12px;padding:8px 0}
.program-metric-row{display:grid;grid-template-columns:minmax(170px,1.4fr) minmax(220px,4fr) 86px;gap:12px;align-items:center}
.program-metric-label{display:flex;align-items:center;gap:8px;min-width:0}.program-metric-label strong{font-size:.72rem;color:#344054;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.program-metric-track{height:18px;border-radius:999px;background:#EEF1F3;overflow:hidden}.program-metric-fill{display:block;height:100%;border-radius:999px;min-width:3px}
.program-metric-row>b{text-align:right;color:var(--navy);font-size:.82rem}
.program-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.pc1,.program-metric-fill.pc1{background:#39A900}.pc2,.program-metric-fill.pc2{background:#00304D}.pc3,.program-metric-fill.pc3{background:#7A5AF8}.pc4,.program-metric-fill.pc4{background:#F79009}.pc5,.program-metric-fill.pc5{background:#0BA5EC}
.evolution-line.program-line-1{stroke:#39A900}.evolution-point.program-line-1,.legend-dot.program-line-1{fill:#39A900}
.evolution-line.program-line-2{stroke:#00304D}.evolution-point.program-line-2,.legend-dot.program-line-2{fill:#00304D}
.evolution-line.program-line-3{stroke:#7A5AF8}.evolution-point.program-line-3,.legend-dot.program-line-3{fill:#7A5AF8}
.evolution-line.program-line-4{stroke:#F79009}.evolution-point.program-line-4,.legend-dot.program-line-4{fill:#F79009}
.evolution-line.program-line-5{stroke:#0BA5EC}.evolution-point.program-line-5,.legend-dot.program-line-5{fill:#0BA5EC}

@media(max-width:1180px){.program-compare-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.program-compare-options{grid-template-columns:1fr 1fr}}
@media(max-width:860px){.dashboard-main-actions{flex-basis:100%}.program-compare-kpis{grid-template-columns:1fr 1fr}.program-metric-row{grid-template-columns:minmax(130px,1fr) minmax(150px,2fr) 70px}}
@media(max-width:600px){.dashboard-action-left{width:100%}.dashboard-action-left .btn{flex:1 1 calc(50% - 8px)}.dashboard-main-actions>.btn-filter-compact{margin-left:auto}.program-compare-options{grid-template-columns:1fr}.program-compare-kpis{grid-template-columns:1fr}.program-metric-row{grid-template-columns:1fr}.program-metric-row>b{text-align:left}.program-metric-track{order:3}}

/* v1.9.6 - mapa territorial de certificados basado en la experiencia GAE 4.32 */
#gaeMapZone .dash-chart-title{display:none!important}
#gaeMapZone .dash-chart-wrap.is-map{min-height:660px!important;overflow:visible}
#dashMapMunicipios.dash-leafletmap{height:auto!important;min-height:620px!important;border:0!important;border-radius:0!important;overflow:visible!important;background:transparent!important}
.gae-territorial-shell{position:relative;display:grid;gap:12px;min-width:0;color:#24372b}
.gae-territorial-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:2px 2px 0}
.gae-territorial-head h3{margin:4px 0 2px;font-size:19px;line-height:1.15;color:#123f23}
.gae-territorial-head p{margin:0;font-size:11px;color:#6a786f}
.gae-map-breadcrumb{display:flex;align-items:center;gap:5px;font-size:10px;color:#607067}
.gae-map-breadcrumb button{border:0;background:transparent;padding:0;color:#007832;font-weight:800;cursor:pointer}.gae-map-breadcrumb .is-current{color:#344b3b;cursor:default}.gae-map-breadcrumb span{color:#9aa79f}
.gae-map-secondary-tools{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.gae-map-search{height:36px;min-width:250px;display:flex;align-items:center;gap:7px;border:1px solid #d6e0d8;background:#fff;border-radius:10px;padding:0 10px}.gae-map-search span{font-size:17px;color:#607269}.gae-map-search input{width:100%;min-width:0;border:0!important;outline:0!important;padding:0!important;font-size:11px!important;background:transparent!important;box-shadow:none!important}
.gae-map-icon-btn,.gae-map-tool-btn{min-height:36px;border:1px solid #d5dfd8;background:#fff;color:#31523c;border-radius:10px;padding:0 10px;font-size:10px;font-weight:850;cursor:pointer}.gae-map-icon-btn:hover,.gae-map-tool-btn:hover{border-color:#39A900;background:#f1f8ed}.gae-map-tool-btn.is-active{background:#e9f7e3;border-color:#39A900;color:#176000}.gae-map-tool-btn:disabled{opacity:.45;cursor:not-allowed}
.gae-territorial-toolbar{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;padding:10px;border:1px solid #dce5df;background:#f8fbf8;border-radius:13px}
.gae-territorial-toolbar label,.gae-map-compare-row label{display:grid;gap:4px;font-size:9.5px;font-weight:850;color:#5d6d63}.gae-territorial-toolbar select,.gae-map-compare-row select{height:34px;min-width:140px;border:1px solid #cfdad2;border-radius:9px;background:#fff;color:#203b29;font-size:11px;padding:0 28px 0 9px}
.gae-map-compare-row{display:none;align-items:flex-end;gap:8px;flex-wrap:wrap;padding:10px 12px;border:1px dashed #cbd8cf;border-radius:12px;background:#fff}.gae-map-compare-row.is-open{display:flex}.gae-map-compare-row>span{padding-bottom:8px;color:#78857d;font-size:10px;font-weight:800}.gae-map-compare-row small{padding-bottom:8px;color:#6b786f;font-size:9.5px}
.gae-territorial-layout{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(270px,.54fr);gap:12px;min-width:0}
.gae-map-canvas-card,.gae-map-inspector{border:1px solid #dce5df;background:#fff;border-radius:16px;min-width:0}.gae-map-canvas-card{padding:12px;display:flex;flex-direction:column}.gae-map-inspector{padding:12px;display:flex;flex-direction:column;gap:12px;max-height:690px}
.gae-territorial-svg{width:100%;height:auto;min-height:500px;max-height:620px;background:linear-gradient(180deg,#fbfdfc,#f6faf7);border:1px solid #e3ebe5;border-radius:13px;display:block;touch-action:manipulation}
.gae-territory{cursor:pointer;outline:none}.gae-territory path{transition:filter .12s ease,stroke .12s ease,stroke-width .12s ease,opacity .12s ease}.gae-territory:hover path,.gae-territory:focus path{filter:brightness(.93);stroke:#00304D!important;stroke-width:2.2!important}.gae-territory.no-data path{opacity:.88}.gae-map-bubble-circle{fill:#0a7a35;fill-opacity:.58;stroke:#fff;stroke-width:1.2;pointer-events:none}.gae-map-place-label{font:700 8.5px Arial,sans-serif;fill:#213f2b;paint-order:stroke;stroke:#fff;stroke-width:2.5px;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.gae-map-legend{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:9px;font-size:9.5px;color:#627168}.gae-map-legend>i:not(.s){width:180px;height:9px;border:1px solid #cad7cd;border-radius:99px;background:linear-gradient(90deg,#d5ebcc,#39A900,#007832)}.gae-map-legend>i.delta{background:linear-gradient(90deg,#c62828,#e6ebe7,#2e7d32)}.gae-map-legend>b{margin-left:auto;color:#36523f}.gae-status-legend{gap:12px}.gae-status-legend span{display:flex;align-items:center;gap:5px}.gae-status-legend .s{width:9px;height:9px;border-radius:50%;display:inline-block}.gae-status-legend .attention{background:#2E7D32}.gae-status-legend .normal{background:#F2A629}.gae-status-legend .critical{background:#7A0019}.gae-status-legend .nodata{background:#e5e9e6;border:1px solid #c6d0c9}
.gae-map-source-line{margin-top:6px;font-size:8.7px;line-height:1.35;color:#7b867f}
.gae-map-detail-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding-bottom:9px;border-bottom:1px solid #e7ece8}.gae-map-detail-head small{font-size:8.5px;text-transform:uppercase;letter-spacing:.08em;color:#738078}.gae-map-detail-head h4{margin:2px 0 1px;font-size:17px;color:#143d24;line-height:1.12}.gae-map-detail-head span{font-size:10px;color:#6b786f}.gae-map-status{border-radius:99px;padding:5px 8px;font-size:8.5px!important;font-weight:900;white-space:nowrap}.status-attention{background:#e6f4e5;color:#1d6c2a}.status-normal{background:#fff0c7;color:#8a5600}.status-critical{background:#f3dce2;color:#7A0019}.status-nodata{background:#edf0ee;color:#657168}
.gae-map-detail-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px}.gae-map-detail-kpis>div{border:1px solid #e1e8e3;background:#f9fbf9;border-radius:10px;padding:8px}.gae-map-detail-kpis b{display:block;font-size:14px;color:#123f23}.gae-map-detail-kpis span{font-size:8.5px;color:#69776f}.gae-map-filter-dash{width:100%;margin-top:10px;border:0;border-radius:10px;background:#39A900;color:#fff;font-size:10px;font-weight:900;padding:10px;cursor:pointer}.gae-map-filter-dash:hover{background:#2f8f00}
.gae-map-delta-card{display:grid;grid-template-columns:1fr auto;gap:2px 10px;border:1px solid #dde5df;border-radius:11px;padding:9px;margin-top:9px}.gae-map-delta-card span{font-size:9px;color:#6a776f}.gae-map-delta-card b{grid-row:1/3;grid-column:2;font-size:19px;color:#46534b}.gae-map-delta-card b.up{color:#2e7d32}.gae-map-delta-card b.down{color:#c62828}.gae-map-delta-card small{font-size:9px;color:#738078}
.gae-map-ranking{min-height:0;overflow:auto;border-top:1px solid #e6ece8;padding-top:8px}.gae-map-ranking-title{font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;color:#607067;padding:0 2px 5px}.gae-map-ranking button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:9px;border:0;border-bottom:1px solid #edf1ee;background:transparent;padding:8px 3px;color:#35493b;cursor:pointer;text-align:left}.gae-map-ranking button:hover{background:#f2f8f2}.gae-map-ranking button span{min-width:0;display:flex;align-items:center;gap:7px;font-size:10px}.gae-map-ranking button span b{flex:0 0 19px;width:19px;height:19px;border-radius:50%;display:grid;place-items:center;background:#ecf4ed;color:#35702d;font-size:8px}.gae-map-ranking button strong{font-size:10px;color:#0f6e2b;white-space:nowrap}.gae-map-detail-empty{padding:15px 7px;color:#718078;font-size:10px;text-align:center}
.gae-map-tooltip{position:absolute;z-index:50;pointer-events:none;min-width:200px;max-width:250px;background:rgba(20,38,27,.96);color:#fff;border-radius:10px;padding:9px 10px;box-shadow:0 8px 24px rgba(0,0,0,.18);font-size:9.5px;line-height:1.35}.gae-map-tooltip b{display:block;font-size:11px;margin-bottom:3px}.gae-map-tooltip span{display:block;color:#dfe8e2}.gae-map-tooltip strong{color:#fff}
.gae-map-loading-pro{min-height:590px!important}
.gae-map-offline-fallback{min-height:520px;border:1px solid #dce5df;border-radius:16px;background:#fbfdfb;padding:20px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-content:start}.gae-map-offline-icon{font-size:34px}.gae-map-offline-fallback b{font-size:13px;color:#21452c}.gae-map-offline-fallback p{font-size:10px;color:#68766d;margin:3px 0}.gae-map-offline-fallback>button{height:36px;border:1px solid #39A900;background:#eff9ea;color:#2d6e16;border-radius:9px;font-weight:850;font-size:10px;cursor:pointer}.gae-map-dept-fallback{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:7px;margin-top:8px}.gae-map-dept-fallback button{display:grid;gap:3px;text-align:left;border:1px solid #e0e7e2;background:#fff;border-radius:10px;padding:10px;cursor:pointer}.gae-map-dept-fallback button:hover{border-color:#39A900}.gae-map-dept-fallback span{font-size:10px;font-weight:850;color:#294434}.gae-map-dept-fallback b{font-size:10px}.gae-map-dept-fallback small{font-size:8.5px;color:#748078}
.gae-map-expanded-body{overflow:hidden!important}.gae-map-zone.gae-map-expanded{position:fixed!important;inset:10px!important;z-index:99998!important;margin:0!important;padding:12px!important;background:#f5f8f6!important;border:1px solid #d5e0d8!important;border-radius:18px!important;overflow:auto!important;box-shadow:0 18px 60px rgba(0,0,0,.28)!important}.gae-map-zone.gae-map-expanded .dash-chart-map{margin:0!important;max-width:none!important}.gae-map-zone.gae-map-expanded #dashMapMunicipios{min-height:calc(100vh - 70px)!important}.gae-map-zone.gae-map-expanded .gae-territorial-svg{min-height:650px;max-height:none}.gae-map-zone.gae-map-expanded #gaeMapFullscreen{background:#eaf6e5;border-color:#39A900}
@media(max-width:1050px){.gae-territorial-layout{grid-template-columns:1fr}.gae-map-inspector{max-height:380px}.gae-territorial-svg{min-height:440px}.gae-map-search{min-width:220px}}
@media(max-width:760px){#gaeMapZone .dash-chart-wrap.is-map{min-height:0!important}.gae-territorial-head{flex-direction:column}.gae-map-secondary-tools{justify-content:flex-start;width:100%}.gae-map-search{width:100%;min-width:0}.gae-territorial-toolbar>*{flex:1 1 145px}.gae-territorial-toolbar select{width:100%;min-width:0}.gae-territorial-svg{min-height:340px}.gae-map-place-label{display:none}.gae-map-legend>b{width:100%;margin-left:0}.gae-map-inspector{max-height:none}.gae-map-offline-fallback{grid-template-columns:1fr}.gae-map-dept-fallback{grid-column:1}.gae-map-zone.gae-map-expanded{inset:4px!important;padding:7px!important}.gae-map-zone.gae-map-expanded .gae-territorial-svg{min-height:420px}}


/* GAE 4.20.0 · Mapa 2D centrado + concentración decimal + atención por terciles */
.gae-map-stage{position:relative;min-width:0;overflow:visible}
.gae-map-concentration-control{min-width:230px!important;display:grid!important;grid-template-columns:1fr;align-content:end;gap:3px!important}
.gae-map-concentration-control>span{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gae-map-concentration-control b{color:#007832;font-variant-numeric:tabular-nums;min-width:58px;text-align:right}
.gae-map-concentration-control input[type="range"]{width:220px;max-width:100%;margin:0;accent-color:#39A900;cursor:pointer}
.gae-map-concentration-control small{display:flex;justify-content:space-between;width:220px;max-width:100%;font-size:8px;color:#7a877f;font-weight:750}
.gae-map-concentration-control small i{font-style:normal}
@media(max-width:760px){
  .gae-map-concentration-control{width:100%;min-width:0!important}
  .gae-map-concentration-control input[type="range"],.gae-map-concentration-control small{width:100%}
}

.gae-map-stage{display:flex;align-items:center;justify-content:center}
.gae-map-empty-text{font:800 16px Arial,sans-serif;fill:#748078}


/* GAE 4.21.0 - detalle municipal completo */
.gae-map-municipality-directory{border-top:1px solid #e6ece8;padding-top:8px;min-height:0;display:flex;flex-direction:column}
.gae-map-directory-title{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 6px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;color:#607067}
.gae-map-directory-title b{display:grid;place-items:center;min-width:25px;height:20px;padding:0 6px;border-radius:99px;background:#edf5ee;color:#2c6e2a;font-size:9px}
.gae-map-directory-list{display:grid;gap:3px;overflow:auto;max-height:260px;padding-right:2px}
.gae-map-directory-list>button{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;border:1px solid #edf1ee;border-radius:9px;background:#fff;padding:7px 8px;text-align:left;cursor:pointer;color:#35493b}
.gae-map-directory-list>button:hover,.gae-map-directory-list>button:focus{border-color:#9ecb8a;background:#f4faf2;outline:none}
.gae-map-directory-list>button.is-out{opacity:.64}
.gae-map-directory-list>button>span:first-child{min-width:0;display:grid;gap:1px}
.gae-map-directory-list strong{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#274531}
.gae-map-directory-list small{font-size:7.5px;color:#78837c}
.gae-map-dir-metrics{display:grid!important;grid-template-columns:auto auto;gap:0 4px!important;text-align:right;align-items:baseline}
.gae-map-dir-metrics b{font-size:8.5px;color:#0f6e2b}
.gae-map-dir-metrics small{font-size:7px}
.gae-map-muni-fallback{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:7px;margin-top:8px;max-height:420px;overflow:auto}
.gae-map-muni-fallback button{display:grid;gap:3px;text-align:left;border:1px solid #e0e7e2;background:#fff;border-radius:10px;padding:10px;cursor:pointer}
.gae-map-muni-fallback button:hover{border-color:#39A900;background:#f5faf3}
.gae-map-muni-fallback span{font-size:10px;font-weight:850;color:#294434}.gae-map-muni-fallback b{font-size:10px}.gae-map-muni-fallback small{font-size:8.5px;color:#748078}
@media(max-width:760px){.gae-map-directory-list{max-height:360px}.gae-map-dir-metrics{display:none!important}}


/* GAE 4.22.0 · zoom territorial + etiquetas inteligentes */
.gae-territorial-svg{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}
.gae-territorial-svg:active{cursor:grabbing}
.gae-map-zoom-controls{position:absolute;z-index:12;top:12px;left:12px;display:grid;grid-template-columns:34px 34px 34px auto;gap:5px;align-items:center;padding:5px;border:1px solid #d7e1da;border-radius:11px;background:rgba(255,255,255,.94);box-shadow:0 4px 14px rgba(29,55,37,.11);backdrop-filter:blur(5px)}
.gae-map-zoom-controls button{width:34px;height:34px;border:1px solid #d3ddd6;border-radius:8px;background:#fff;color:#174b2a;font-size:18px;font-weight:900;line-height:1;cursor:pointer;padding:0}
.gae-map-zoom-controls button:hover,.gae-map-zoom-controls button:focus-visible{border-color:#39A900;background:#f0f8ec;outline:none}
.gae-map-zoom-controls span{min-width:44px;padding:0 5px;text-align:center;font-size:9px;font-weight:900;color:#52655a;font-variant-numeric:tabular-nums}
.gae-map-dept-label{font-size:10px;font-weight:900;letter-spacing:.01em;fill:#173e27;stroke-width:3px}
.gae-map-muni-label{font-size:8px;font-weight:800;fill:#244b31;stroke-width:2.4px}
.gae-map-external-label{dominant-baseline:central}
.gae-map-label-line{stroke:#567261;stroke-width:.8;stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:none}
.gae-map-label-dot{fill:#284f34;stroke:#fff;stroke-width:.7;vector-effect:non-scaling-stroke;pointer-events:none}
.gae-map-label-layer{pointer-events:none}
@media(max-width:760px){
  .gae-map-zoom-controls{top:8px;left:8px;grid-template-columns:38px 38px 38px auto}
  .gae-map-zoom-controls button{width:38px;height:38px}
  .gae-map-place-label{display:block}
  .gae-map-dept-label{font-size:11px}
  .gae-map-muni-label{font-size:8.5px}
}

/* GAE 4.24.0 · listado lateral de Atención */
.gae-map-attention-panel{min-height:0;border-top:1px solid #e6ece8;padding-top:8px;display:flex;flex-direction:column;gap:7px}
.gae-map-attention-panel-title{display:grid;gap:1px;padding:0 2px 3px}.gae-map-attention-panel-title>span{font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.045em;color:#53665a}.gae-map-attention-panel-title small{font-size:7.8px;color:#839087}
.gae-map-attention-group{border:1px solid #e4eae6;border-radius:10px;background:#fff;overflow:hidden;flex:0 0 auto}
.gae-map-attention-group-head{min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:7px;padding:6px 8px;border-bottom:1px solid #edf1ee}.gae-map-attention-group-head>span{min-width:0;display:flex;align-items:center;gap:5px}.gae-map-attention-group-head i{width:9px;height:9px;border-radius:50%;flex:0 0 9px}.gae-map-attention-group-head strong{font-size:9.5px;color:#304538}.gae-map-attention-group-head small{font-size:7.5px;color:#7c8981;white-space:nowrap}.gae-map-attention-group-head>b{display:grid;place-items:center;min-width:24px;height:19px;padding:0 5px;border-radius:99px;background:#f0f4f1;color:#53665a;font-size:8px}
.gae-map-attention-names{max-height:112px;overflow:auto;padding:3px}.gae-map-attention-names button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:7px;border:0;border-bottom:1px solid #f0f3f1;background:transparent;padding:6px 5px;text-align:left;cursor:pointer;border-radius:6px}.gae-map-attention-names button:last-child{border-bottom:0}.gae-map-attention-names button:hover,.gae-map-attention-names button:focus-visible{background:#f5f8f5;outline:none}.gae-map-attention-names button>span{min-width:0;font-size:8.8px;font-weight:800;color:#34493b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gae-map-attention-names button>span small{display:block;font-size:7px;font-weight:650;color:#849087;overflow:hidden;text-overflow:ellipsis}.gae-map-attention-names button>b{font-size:8px;color:#607067;white-space:nowrap}.gae-map-attention-empty{padding:8px;text-align:center;color:#8a958e;font-size:8px}
.gae-map-attention-group.group-attention{border-left:4px solid #2E7D32}.gae-map-attention-group.group-attention .gae-map-attention-group-head i{background:#2E7D32}.gae-map-attention-group.group-normal{border-left:4px solid #F2A629}.gae-map-attention-group.group-normal .gae-map-attention-group-head i{background:#F2A629}.gae-map-attention-group.group-critical{border-left:4px solid #7A0019}.gae-map-attention-group.group-critical .gae-map-attention-group-head i{background:#7A0019}.gae-map-attention-group.group-nodata{border-left:4px solid #aeb8b1}.gae-map-attention-group.group-nodata .gae-map-attention-group-head i{background:#aeb8b1}.gae-map-attention-group.group-nodata .gae-map-attention-names button>span,.gae-map-attention-group.group-nodata .gae-map-attention-names button>b{color:#6f7b73}
.gae-map-attention-note{display:flex;align-items:flex-start;gap:6px;padding:7px 8px;border-radius:9px;background:#f6f8f6;color:#727f77;font-size:7.5px;line-height:1.35}.gae-map-attention-note>i{width:8px;height:8px;margin-top:1px;border-radius:50%;background:#aeb8b1;flex:0 0 8px}.gae-map-attention-note b{color:#56645b}
@media(max-width:1050px){.gae-map-attention-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.gae-map-attention-panel-title,.gae-map-attention-note{grid-column:1/-1}.gae-map-attention-names{max-height:150px}}
@media(max-width:620px){.gae-map-attention-panel{grid-template-columns:1fr}.gae-map-attention-panel-title,.gae-map-attention-note{grid-column:1}.gae-map-attention-names{max-height:180px}}

.gae-territory.no-attended path{opacity:.78}.gae-territory.no-attended:hover path,.gae-territory.no-attended:focus path{opacity:1}


/* GAE 4.25.0 · filtro local multidepartamento del mapa */
.gae-map-dept-filter-control{position:relative;display:grid;gap:4px;min-width:185px;font-size:9.5px;font-weight:850;color:#5d6d63}
.gae-map-dept-filter{position:relative;min-width:185px;font-weight:700;color:#294434}
.gae-map-dept-filter>summary{height:34px;display:flex;align-items:center;justify-content:space-between;gap:9px;border:1px solid #cfdad2;border-radius:9px;background:#fff;padding:0 9px;cursor:pointer;list-style:none;font-size:10.5px;user-select:none}
.gae-map-dept-filter>summary::-webkit-details-marker{display:none}.gae-map-dept-filter>summary i{font-style:normal;color:#6f7d74;font-size:11px;transition:transform .15s ease}.gae-map-dept-filter[open]>summary i{transform:rotate(180deg)}
.gae-map-dept-menu{position:absolute;z-index:45;top:39px;left:0;width:270px;max-width:min(88vw,320px);padding:8px;border:1px solid #d5dfd8;border-radius:11px;background:#fff;box-shadow:0 12px 30px rgba(28,52,35,.16)}
.gae-map-dept-menu-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 2px 7px;border-bottom:1px solid #edf1ee}.gae-map-dept-menu-head>span{font-size:8.5px;color:#78857d}.gae-map-dept-menu-head button{border:0;background:#eef7ea;color:#2b6d18;border-radius:7px;padding:5px 8px;font-size:8px;font-weight:900;cursor:pointer}
.gae-map-dept-list{display:grid;gap:2px;max-height:250px;overflow:auto;padding:5px 1px}.gae-map-dept-list label{display:flex!important;grid-template-columns:none!important;align-items:center;gap:8px!important;padding:6px 5px;border-radius:7px;cursor:pointer;font-size:9px!important;font-weight:750!important;color:#34493b!important}.gae-map-dept-list label:hover{background:#f4f8f4}.gae-map-dept-list input{width:15px;height:15px;accent-color:#39A900;flex:0 0 auto}.gae-map-dept-list label>span{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:8px;flex:1}.gae-map-dept-list label b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gae-map-dept-list label small{font-size:7.5px;color:#849087;white-space:nowrap}
.gae-map-dept-apply{width:100%;height:32px;border:0;border-radius:8px;background:#39A900;color:#fff;font-size:9px;font-weight:900;cursor:pointer}.gae-map-dept-apply:hover{background:#2f8f00}
@media(max-width:760px){.gae-map-dept-filter-control{width:100%;min-width:0}.gae-map-dept-filter{width:100%;min-width:0}.gae-map-dept-menu{position:fixed;left:12px;right:12px;top:auto;width:auto;max-width:none}.gae-map-dept-list{max-height:310px}.gae-map-dept-filter>summary{min-height:44px}}

/* GAE 4.26.0 · distribución Atención + No atendido geográfico */
.gae-territorial-layout.is-attention{
  grid-template-columns:minmax(0,1fr) minmax(360px,.5fr);
  align-items:start;
}
.gae-territorial-layout.is-attention .gae-map-inspector{
  max-height:690px;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.gae-territorial-layout.is-attention .gae-map-attention-panel{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  align-items:start;
}
.gae-territorial-layout.is-attention .gae-map-attention-panel-title,
.gae-territorial-layout.is-attention .gae-map-attention-note{
  grid-column:1/-1;
}
.gae-territorial-layout.is-attention .gae-map-attention-group{
  min-width:0;
}
.gae-territorial-layout.is-attention .gae-map-attention-names{
  max-height:128px;
}
.gae-map-attention-names button.no-records>b{
  color:#8a958e;
  font-weight:750;
}
.gae-map-no-data-message{
  margin-top:10px;
  padding:12px;
  border:1px solid #e0e6e2;
  border-radius:11px;
  background:#f6f8f6;
  display:grid;
  gap:4px;
}
.gae-map-no-data-message b{font-size:10px;color:#56645b}
.gae-map-no-data-message span{font-size:8.5px;line-height:1.4;color:#7a867e}
@media(max-width:1180px){
  .gae-territorial-layout.is-attention{grid-template-columns:minmax(0,1fr) minmax(320px,.56fr)}
}
@media(max-width:1050px){
  .gae-territorial-layout.is-attention{grid-template-columns:1fr}
  .gae-territorial-layout.is-attention .gae-map-inspector{max-height:none;overflow:visible}
  .gae-territorial-layout.is-attention .gae-map-attention-panel{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .gae-territorial-layout.is-attention .gae-map-attention-panel{grid-template-columns:1fr}
  .gae-territorial-layout.is-attention .gae-map-attention-panel-title,
  .gae-territorial-layout.is-attention .gae-map-attention-note{grid-column:1}
}


/* GAE 4.27.0 · mapa completo + lateral sin duplicados */
.gae-map-attention-note{display:none!important}
.gae-map-dir-no-data{font-size:8px;font-weight:850;color:#8a958e;white-space:nowrap}
.gae-map-directory-list button.is-out{background:#fafbfa}
.gae-map-directory-list button.is-out>span:first-child strong{color:#6f7b73}
.gae-map-directory-list button.is-out>span:first-child small{color:#9aa39d}


/* GAE 4.28.0 · Clasificación territorial horizontal bajo el mapa */
.gae-territorial-layout.is-attention{
  grid-template-columns:minmax(0,1.72fr) minmax(270px,.54fr);
  align-items:start;
}
.gae-territorial-layout.is-attention .gae-map-inspector{
  max-height:690px;
  overflow:auto;
}
.gae-map-attention-panel{
  margin-top:12px;
  border:1px solid #dce5df;
  border-radius:16px;
  background:#fff;
  padding:11px 12px 12px;
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:8px!important;
  min-width:0;
}
.gae-map-attention-panel-title{
  display:flex!important;
  align-items:flex-end;
  justify-content:space-between;
  gap:10px;
  padding:0 2px 2px!important;
}
.gae-map-attention-panel-title>span{font-size:9.5px!important}
.gae-map-attention-panel-title small{font-size:7.8px!important;text-align:right}
.gae-map-attention-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  align-items:start;
  min-width:0;
}
.gae-map-attention-group{min-width:0;height:auto}
.gae-map-attention-names{
  max-height:none!important;
  overflow:visible!important;
  padding:3px!important;
}
.gae-map-attention-more{
  border-top:1px solid #edf1ee;
  margin-top:2px;
}
.gae-map-attention-more>summary{
  list-style:none;
  min-height:30px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  cursor:pointer;
  border-radius:7px;
  color:#2f6f23;
  font-size:8.5px;
  font-weight:900;
  user-select:none;
}
.gae-map-attention-more>summary::-webkit-details-marker{display:none}
.gae-map-attention-more>summary:hover,.gae-map-attention-more>summary:focus-visible{background:#f2f8ef;outline:none}
.gae-map-attention-more>summary span{font-size:7.5px;color:#748178}
.gae-map-attention-more[open]>summary{margin-bottom:2px;background:#f7faf7}
.gae-map-attention-more-list{display:grid}
@media(max-width:1180px){
  .gae-map-attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1050px){
  .gae-territorial-layout.is-attention{grid-template-columns:1fr}
  .gae-territorial-layout.is-attention .gae-map-inspector{max-height:none;overflow:visible}
}
@media(max-width:620px){
  .gae-map-attention-panel-title{align-items:flex-start;flex-direction:column}
  .gae-map-attention-panel-title small{text-align:left}
  .gae-map-attention-grid{grid-template-columns:1fr}
}


/* GAE 4.29.0 · cierre UX territorial: resumen, ruta, seleccion, foco y exportacion */
.gae-map-reset-btn{padding-inline:11px;white-space:nowrap}
.gae-map-territorial-summary{display:flex;align-items:center;gap:12px;min-width:0;padding:8px 10px;border:1px solid #dce5df;border-radius:13px;background:linear-gradient(180deg,#fbfdfb,#f7faf7)}
.gae-map-territorial-summary.is-empty{min-height:43px;color:#748178;font-size:9.5px;justify-content:center;background:#fafcfa}
.gae-map-summary-place{min-width:175px;max-width:270px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;border-right:1px solid #dfe7e2;padding-right:12px}
.gae-map-summary-place small{width:100%;font-size:7.5px;line-height:1;text-transform:uppercase;letter-spacing:.05em;color:#7a877f;font-weight:850}
.gae-map-summary-place strong{font-size:12.5px;line-height:1.15;color:#173f27;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:210px}
.gae-map-summary-place .gae-map-status{margin-left:auto}
.gae-map-summary-kpis{flex:1;min-width:0;display:grid;grid-template-columns:repeat(6,minmax(72px,1fr));gap:5px}
.gae-map-summary-kpis>span{min-width:0;padding:3px 7px;border-left:1px solid #e2e9e4;display:grid;gap:1px}
.gae-map-summary-kpis b{font-size:12px;line-height:1.1;color:#123f23;font-variant-numeric:tabular-nums}.gae-map-summary-kpis i{font-style:normal;font-size:7.5px;color:#718078;white-space:nowrap}
.gae-map-breadcrumb strong.is-current{font-size:10px;color:#344b3b;font-weight:900}.gae-map-breadcrumb button:not(.is-current):hover{text-decoration:underline;text-underline-offset:2px}
.gae-territory.is-selected .gae-territory-top{stroke:#00304D!important;stroke-width:3.2!important;filter:drop-shadow(0 1px 1px rgba(0,48,77,.28)) brightness(.98)}
.gae-territory.is-selected .gae-map-bubble-circle{stroke:#00304D!important;stroke-width:2.4!important}
.gae-map-place-label.is-selected,.gae-map-callout-label.is-selected .gae-map-place-label{font-weight:950!important;fill:#00304D!important;stroke:#fff!important;stroke-width:4px!important;font-size:10.5px!important}
.gae-map-callout-label.is-selected .gae-map-label-line{stroke:#00304D!important;stroke-width:1.8!important}.gae-map-callout-label.is-selected .gae-map-label-dot{fill:#00304D!important;r:2.8px}
#dashMapMunicipios{--gae-map-zoom:1}.gae-map-place-label{transition:font-size .12s ease,opacity .12s ease,filter .12s ease}.gae-map-muni-label{font-size:7.6px}.gae-map-dept-label{font-size:9.6px}
.gae-map-attention-group-head{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;gap:7px;padding:7px 7px 6px;text-align:left;cursor:pointer;border-radius:8px;color:inherit}.gae-map-attention-group-head:hover,.gae-map-attention-group-head:focus-visible{background:#f5f8f5;outline:none}.gae-map-attention-group-head[aria-pressed="true"]{background:#eff6ec;box-shadow:inset 0 0 0 1px rgba(57,169,0,.25)}
.gae-territory.is-attention-dimmed{opacity:.14}.gae-territory.is-attention-focused{opacity:1}.gae-map-attention-group.is-attention-dimmed{opacity:.36}.gae-map-attention-group.is-attention-focused{opacity:1;box-shadow:0 0 0 2px rgba(57,169,0,.13)}.gae-map-attention-group.is-focus-pinned{box-shadow:0 0 0 2px rgba(0,48,77,.16)}
.gae-territory{transition:opacity .14s ease}.gae-map-attention-group{transition:opacity .14s ease,box-shadow .14s ease}
@media(max-width:1000px){.gae-map-territorial-summary{align-items:flex-start;flex-direction:column}.gae-map-summary-place{max-width:none;width:100%;border-right:0;border-bottom:1px solid #e1e8e3;padding-right:0;padding-bottom:7px}.gae-map-summary-kpis{width:100%;grid-template-columns:repeat(3,minmax(0,1fr))}.gae-map-summary-kpis>span:nth-child(1),.gae-map-summary-kpis>span:nth-child(4){border-left:0}}
@media(max-width:620px){.gae-map-summary-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.gae-map-summary-kpis>span:nth-child(odd){border-left:0}.gae-map-reset-btn{width:auto!important;flex:1 1 auto}}

/* GAE 4.30.0 · exportacion cartografica con etiquetas externas */
.gae-map-export-layout{height:36px;display:flex;align-items:center;gap:6px;border:1px solid #d5dfd8;background:#fff;border-radius:10px;padding:0 7px;color:#607067;font-size:8px;font-weight:850;white-space:nowrap}
.gae-map-export-layout span{line-height:1.05;max-width:58px}
.gae-map-export-layout select{height:28px;min-width:112px;border:0;background:#f7faf7;color:#254531;border-radius:7px;padding:0 24px 0 7px;font-size:9px;font-weight:850;outline:none}
.gae-map-export-layout:focus-within{border-color:#39A900;box-shadow:0 0 0 2px rgba(57,169,0,.12)}
@media(max-width:760px){.gae-map-export-layout{width:100%;justify-content:space-between;height:auto;min-height:36px}.gae-map-export-layout span{max-width:none}.gae-map-export-layout select{flex:1;max-width:190px}}

/* Adaptacion especifica para Analitica de Certificados SENA */
.certificate-gae-map{position:relative;min-width:0;color:#24372b}
.certificate-gae-map .gae-territorial-head h3{color:#123f23}
.certificate-gae-map .gae-map-source-line{padding-bottom:2px}
.certificate-gae-map .gae-map-inspector{max-height:690px;overflow:auto}
.certificate-gae-map .gae-map-directory-list{max-height:430px;overflow:auto}
.certificate-gae-map .gae-map-tooltip{position:absolute}
.certificate-gae-map .gae-map-loading-pro{min-height:580px}
.certificate-gae-map .gae-status-legend .cert-high{background:#2E7D32}
.certificate-gae-map .gae-status-legend .cert-medium{background:#F2A629}
.certificate-gae-map .gae-status-legend .cert-low{background:#7A0019}
.certificate-gae-map .cert-status-high{background:#e6f4e5;color:#1d6c2a}
.certificate-gae-map .cert-status-medium{background:#fff0c7;color:#8a5600}
.certificate-gae-map .cert-status-low{background:#f3dce2;color:#7A0019}
.certificate-gae-map .cert-class-high .gae-map-attention-group-head i{background:#2E7D32}
.certificate-gae-map .cert-class-medium .gae-map-attention-group-head i{background:#F2A629}
.certificate-gae-map .cert-class-low .gae-map-attention-group-head i{background:#7A0019}
.certificate-gae-map .cert-class-nodata .gae-map-attention-group-head i{background:#e5e9e6;border:1px solid #c6d0c9}
.certificate-gae-map .gae-map-attention-group-head>span{display:flex;align-items:center;gap:6px;min-width:0}
.certificate-gae-map .gae-map-attention-group-head>span>i{width:9px;height:9px;flex:0 0 9px;border-radius:50%;display:inline-block}
.certificate-gae-map .gae-map-attention-group-head>span>strong{font-size:9px;white-space:nowrap}
.certificate-gae-map .gae-map-attention-group-head>span>small{font-size:7.5px;color:#7a867e;white-space:nowrap}
.certificate-gae-map .gae-map-attention-group-head>b{font-size:9px;color:#53655a}
.certificate-gae-map .gae-map-attention-names button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:0;border-bottom:1px solid #edf1ee;background:transparent;padding:6px 5px;text-align:left;cursor:pointer;color:#34483b}
.certificate-gae-map .gae-map-attention-names button:hover{background:#f5f9f4}
.certificate-gae-map .gae-map-attention-names button>span{display:grid;gap:1px;min-width:0;font-size:8.5px;font-weight:800}
.certificate-gae-map .gae-map-attention-names button>span small{font-size:7px;color:#7b877f;font-weight:600}
.certificate-gae-map .gae-map-attention-names button>b{font-size:8px;color:#1e6124;white-space:nowrap}
.certificate-gae-map .gae-map-attention-names button.no-records>b{color:#8b9690}
.certificate-gae-map .gae-map-attention-empty{padding:10px 6px;color:#8b9690;font-size:8px;text-align:center}
.certificate-gae-map .gae-map-stage{position:relative;min-width:0}
.certificate-gae-map .gae-map-zoom-controls{position:absolute;z-index:8;left:10px;top:10px;display:grid;grid-template-columns:34px;gap:4px;background:rgba(255,255,255,.94);border:1px solid #d9e3dc;border-radius:10px;padding:5px;box-shadow:0 5px 16px rgba(18,52,31,.08)}
.certificate-gae-map .gae-map-zoom-controls button{width:34px;height:31px;border:0;border-radius:7px;background:#f5f9f5;color:#244c31;font-size:15px;font-weight:900;cursor:pointer}
.certificate-gae-map .gae-map-zoom-controls button:hover{background:#e9f6e4;color:#176000}
.certificate-gae-map .gae-map-zoom-controls span{font-size:7.5px;text-align:center;color:#6d7b72;font-weight:800;padding:2px 0}
.certificate-gae-map .gae-map-label-line{stroke:#708779;stroke-width:1;pointer-events:none}
.certificate-gae-map .gae-map-label-dot{fill:#4d6a58;pointer-events:none}
.certificate-gae-map .gae-map-external-label{font-size:7.4px}
.certificate-gae-map .gae-map-municipality-directory{display:grid;gap:6px;min-height:0;border-top:1px solid #e6ece8;padding-top:8px;overflow:hidden}
.certificate-gae-map .gae-map-directory-list{display:grid;min-height:0}
.certificate-gae-map .gae-map-directory-list button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:0;border-bottom:1px solid #edf1ee;background:transparent;padding:7px 3px;text-align:left;cursor:pointer}
.certificate-gae-map .gae-map-directory-list button:hover{background:#f3f8f3}
.certificate-gae-map .gae-map-directory-list button>span:first-child{display:grid;gap:1px;min-width:0}
.certificate-gae-map .gae-map-directory-list button strong{font-size:9px;color:#2b4935;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.certificate-gae-map .gae-map-directory-list button small{font-size:7.2px;color:#7d8881}
.certificate-gae-map .gae-map-directory-list button>span:last-child{display:grid;justify-items:end;gap:1px;white-space:nowrap}
.certificate-gae-map .gae-map-directory-list button>span:last-child b{font-size:8.5px;color:#14702c}
.certificate-gae-map .cert-map-dept-filter-control{display:grid;gap:4px;font-size:9.5px;font-weight:850;color:#5d6d63;position:relative}
.certificate-gae-map .cert-map-dept-filter>summary{height:34px;min-width:145px;border:1px solid #cfdad2;border-radius:9px;background:#fff;color:#203b29;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 9px;cursor:pointer;list-style:none}
.certificate-gae-map .cert-map-dept-filter>summary::-webkit-details-marker{display:none}
.certificate-gae-map .cert-map-dept-filter>summary i{font-style:normal;color:#728078}
.certificate-gae-map .cert-map-dept-menu{position:absolute;z-index:40;right:0;top:58px;width:min(360px,85vw);background:#fff;border:1px solid #d7e1da;border-radius:12px;padding:10px;box-shadow:0 16px 36px rgba(20,45,29,.16)}
.certificate-gae-map .cert-map-dept-menu-head{display:flex;justify-content:space-between;gap:8px;align-items:center;padding-bottom:7px;border-bottom:1px solid #edf1ee;font-size:8.5px}
.certificate-gae-map .cert-map-dept-menu-head button{border:0;background:transparent;color:#23720f;font-weight:900;cursor:pointer}
.certificate-gae-map .cert-map-dept-master{display:inline-flex;align-items:center;gap:5px;color:#23720f;font-weight:900;cursor:pointer;white-space:nowrap}
.certificate-gae-map .cert-map-dept-master input{accent-color:#39A900;margin:0}
.certificate-gae-map .cert-map-dept-apply:disabled{opacity:.45;cursor:not-allowed}
.certificate-gae-map .cert-map-dept-list{max-height:260px;overflow:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:8px 0}
.certificate-gae-map .cert-map-dept-list label{display:flex;align-items:center;gap:6px;border:1px solid #e3e9e5;border-radius:8px;padding:6px;cursor:pointer;background:#fbfdfb}
.certificate-gae-map .cert-map-dept-list label:has(input:checked){border-color:#a9d69a;background:#f0f9ed}
.certificate-gae-map .cert-map-dept-list input{accent-color:#39A900}
.certificate-gae-map .cert-map-dept-list span{display:grid;gap:1px;min-width:0}
.certificate-gae-map .cert-map-dept-list b{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.certificate-gae-map .cert-map-dept-list small{font-size:7px;color:#7b8780}
.certificate-gae-map .cert-map-dept-apply{width:100%;border:0;border-radius:8px;background:#39A900;color:#fff;padding:8px;font-size:9px;font-weight:900;cursor:pointer}
.certificate-gae-map .gae-map-concentration-control{min-width:245px!important;flex:1 1 260px}
.certificate-gae-map .gae-map-concentration-control>span{display:flex;align-items:center;justify-content:space-between;gap:9px}
.certificate-gae-map .gae-map-concentration-control b{color:#007832}
.certificate-gae-map .gae-map-concentration-control input{width:100%;accent-color:#39A900;cursor:pointer}
.certificate-gae-map .gae-map-concentration-control small{display:flex;justify-content:space-between;color:#8b9690;font-size:7px;font-weight:650}
.certificate-gae-map .gae-map-concentration-control i{font-style:normal}
.certificate-gae-map .gae-map-offline-fallback{min-height:520px}
.certificate-gae-map .gae-map-loading{min-height:520px;display:grid;place-items:center;align-content:center;gap:5px;border:1px solid #dce5df;border-radius:16px;background:#fbfdfb;color:#65736a;text-align:center}
.certificate-gae-map .gae-map-loading>span{width:27px;height:27px;border:3px solid #dfe8e1;border-top-color:#39A900;border-radius:50%;animation:certMapSpin .8s linear infinite}
.certificate-gae-map .gae-map-loading b{font-size:12px;color:#21482d}.certificate-gae-map .gae-map-loading small{font-size:8.5px}
@keyframes certMapSpin{to{transform:rotate(360deg)}}
.cert-map-expanded-body{overflow:hidden!important}
#municipalityMap.cert-map-expanded{position:fixed!important;inset:10px!important;z-index:99998!important;margin:0!important;padding:12px!important;background:#f5f8f6!important;border:1px solid #d5e0d8!important;border-radius:18px!important;overflow:auto!important;box-shadow:0 18px 60px rgba(0,0,0,.28)!important}
#municipalityMap.cert-map-expanded .gae-territorial-svg{max-height:none;min-height:720px}
#municipalityMap.cert-map-expanded .gae-map-inspector{max-height:820px}
.territorial-dashboard-grid>.map-panel{min-height:780px}
.territorial-dashboard-grid>.map-panel .map-shell{overflow:visible}
@media(max-width:1250px){.certificate-gae-map .gae-territorial-layout{grid-template-columns:minmax(0,1.45fr) minmax(230px,.55fr)}.certificate-gae-map .gae-map-search{min-width:210px}.certificate-gae-map .cert-map-dept-list{grid-template-columns:1fr}}
@media(max-width:1050px){.certificate-gae-map .gae-territorial-layout{grid-template-columns:1fr}.certificate-gae-map .gae-map-inspector{max-height:none}.certificate-gae-map .gae-map-directory-list{max-height:300px}.certificate-gae-map .gae-map-attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.certificate-gae-map .gae-territorial-head{flex-direction:column}.certificate-gae-map .gae-map-secondary-tools{width:100%;justify-content:flex-start}.certificate-gae-map .gae-map-search{min-width:0;width:100%}.certificate-gae-map .gae-territorial-toolbar>label{width:100%}.certificate-gae-map .gae-territorial-toolbar select{width:100%}.certificate-gae-map .gae-map-attention-grid{grid-template-columns:1fr}.certificate-gae-map .gae-map-summary-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.certificate-gae-map .cert-map-dept-filter-control{width:100%}.certificate-gae-map .cert-map-dept-filter>summary{width:100%}}

/* v1.9.7 - departamentos sin registros permanecen visibles */
.gae-map-dept-label.is-no-data{fill:#657168;font-weight:800;opacity:.92}

/* v1.9.10 - Municipios sin datos visibles con nombre */
.certificate-gae-map .gae-map-muni-label.is-no-data{fill:#657168;font-weight:700;opacity:.9}
.certificate-gae-map .gae-map-callout-label.is-no-data .gae-map-label-line{stroke:#8c9790;opacity:.8}
.certificate-gae-map .gae-map-callout-label.is-no-data .gae-map-label-dot{fill:#8c9790}
