:root{--navy:#160d2a;--navy2:#25133f;--panel:#2d1851;--line:#54336f;--text:#fff8ff;--muted:#c9b7d8;--cyan:#2998d0;--red:#e32352;--orange:#ed7924;--yellow:#f5be27;--green:#4da74f;--purple:#6720a7;--magenta:#d51a81;--blue:#16528b;--shadow:0 18px 45px rgba(15,5,28,.38)}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--navy);color:var(--text)}button,input{font:inherit}.topbar{height:68px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 20px;background:#061724;border-bottom:1px solid #1d394f;position:relative;z-index:1001}.brand{display:flex;align-items:center;gap:11px}.brand-mark{width:38px;height:38px;border:2px solid #e9f7ff;border-radius:50%;display:grid;place-items:center;font-weight:900;color:#fff;position:relative}.brand-mark:after{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background:var(--red);top:2px;right:2px}.brand strong{display:block;font-size:17px;letter-spacing:.08em}.brand span{display:block;color:var(--muted);font-size:12px}.alert-status{display:flex;align-items:center;gap:10px;background:rgba(237,52,62,.12);border:1px solid rgba(237,52,62,.48);border-radius:10px;padding:8px 16px}.alert-status strong{display:block;color:#ff8a91;font-size:13px;letter-spacing:.08em}.alert-status small{display:block;color:#e3b4b6;font-size:11px}.pulse{width:10px;height:10px;background:var(--red);border-radius:50%;box-shadow:0 0 0 6px rgba(237,52,62,.14);animation:pulse 2s infinite}@keyframes pulse{50%{box-shadow:0 0 0 9px rgba(237,52,62,0)}}.top-actions{justify-self:end;display:flex;align-items:center;gap:12px}.clock{color:#bed1df;font-variant-numeric:tabular-nums}.icon-btn{width:36px;height:36px;border:1px solid var(--line);border-radius:8px;background:var(--navy2);color:white;cursor:pointer;font-size:20px}.workspace{height:calc(100% - 68px);display:grid;grid-template-columns:420px 1fr}.sidebar{height:100%;overflow:auto;padding:19px 20px 24px;background:linear-gradient(180deg,#0a2338,#071a2c);border-right:1px solid #25445c;z-index:700}.sidebar-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.eyebrow{font-size:11px;color:var(--cyan);letter-spacing:.11em;text-transform:uppercase}.sidebar h1{font-size:21px;margin:2px 0 0}.demo-badge{font-size:10px;font-weight:800;letter-spacing:.08em;color:#ffd392;background:rgba(244,155,49,.12);border:1px solid rgba(244,155,49,.4);padding:5px 7px;border-radius:5px}.demo-note{font-size:12px;line-height:1.45;color:#96adbd;background:#0c2941;border-left:3px solid var(--orange);padding:9px 10px;margin:14px 0}.tabs{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line);margin-bottom:16px}.tab{border:0;background:none;color:#8fa9bb;padding:10px 3px;border-bottom:2px solid transparent;cursor:pointer;font-size:13px}.tab.active{color:#fff;border-color:var(--cyan)}.panel{display:none}.panel.active{display:block}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:9px}.metrics article{background:rgba(18,58,88,.72);border:1px solid #21445e;border-radius:10px;padding:11px}.metrics span{display:block;color:#9db3c2;font-size:12px}.metrics strong{display:block;font-size:24px;margin:4px 0}.metrics em{font-size:11px;font-style:normal;color:#9fb5c5;margin-left:3px}.metrics small{font-size:11px;color:#91aabc}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.green{background:var(--green)}.orange{background:var(--orange)}.section-title{display:flex;justify-content:space-between;align-items:center;margin:17px 0 10px}.section-title h2{font-size:14px;margin:0}.section-title span{font-size:11px;color:#829eaf}.weather-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.weather-card{color:white;background:#0d2b44;border:1px solid #21445e;border-radius:9px;padding:9px;text-align:left;cursor:pointer}.weather-card.selected{border-color:var(--cyan);box-shadow:inset 0 0 0 1px rgba(32,189,224,.25)}.weather-card small,.weather-card strong{display:block}.weather-card small{color:#9fb5c5;margin:5px 0 2px}.weather-card strong{font-size:13px}.weather-icon{font-size:16px}.rain{color:#46c9e8}.temp{color:#ff777d}.humidity{color:#55aaff}.wind{color:#92d7e7}.pressure{color:#a6d3aa}.uv{color:#ffcc55}.chart-card{margin-top:12px;padding:0 12px 10px;border:1px solid #21445e;background:#0a263e;border-radius:10px}#trendChart{width:100%;display:block}.station-list,.risk-list{display:grid;gap:8px}.station-item,.risk-item{border:1px solid #23465f;background:#0b2942;border-radius:9px;padding:10px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;cursor:pointer}.status-ring{width:10px;height:10px;border-radius:50%}.station-item strong,.risk-item strong{display:block;font-size:13px}.station-item small,.risk-item small{color:#92aabd;font-size:11px}.station-reading{font-size:12px;color:#c7d7e1}.risk-pill{font-size:10px;font-weight:800;padding:4px 6px;border-radius:5px}.risk-pill.alto{background:rgba(237,52,62,.17);color:#ff8c92}.risk-pill.medio{background:rgba(244,155,49,.17);color:#ffc173}.risk-pill.bajo{background:rgba(244,208,63,.17);color:#ffe77a}.info-box,.source-note{margin-top:14px;padding:12px;background:rgba(32,189,224,.07);border:1px solid rgba(32,189,224,.25);border-radius:9px;font-size:12px;color:#abc4d3}.info-box p{margin:5px 0 0;line-height:1.45}.filter-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:11px;font-size:12px;color:#b2c5d1}.filter-row label{display:flex;gap:5px;align-items:center}.upload-btn,.secondary-btn{display:block;width:100%;border-radius:8px;padding:10px;text-align:center;font-size:13px;cursor:pointer}.upload-btn{margin-top:12px;background:#0e526c;border:1px solid #187b99;color:#e9fbff}.upload-btn input{display:none}.secondary-btn{margin-top:7px;background:transparent;border:1px solid #36566c;color:#c7dae6}.helper{font-size:11px;color:#7896a9;line-height:1.4}.source-card{display:grid;grid-template-columns:42px 1fr;gap:11px;padding:12px 0;border-bottom:1px solid #214159}.source-logo{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-weight:900}.source-logo.ambient{background:#1b5971;color:#61d6ef}.source-logo.geoglows{background:#164d55;color:#63e0c3}.source-logo.alertas{background:#5a252d;color:#ff8c92}.source-card strong{font-size:13px}.source-card p{font-size:11px;color:#91aabd;margin:3px 0 5px}.source-card a{font-size:12px;color:#4fd3ef;text-decoration:none}.map-shell{position:relative;min-width:0}.map-shell:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 90px rgba(4,17,28,.32);z-index:400}#map{height:100%;background:#102534}.map-toolbar{position:absolute;z-index:600;top:14px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;pointer-events:none}.search-box,.layer-controls{pointer-events:auto;background:rgba(6,23,36,.93);border:1px solid #31546b;box-shadow:var(--shadow);border-radius:9px}.search-box{width:min(330px,45%);display:flex;align-items:center;padding:0 11px}.search-box span{color:#77a2b8;font-size:20px}.search-box input{width:100%;height:42px;border:0;outline:0;background:transparent;color:white;padding:0 9px}.search-box input::placeholder{color:#7e9aac}.layer-controls{display:flex;gap:14px;padding:11px 12px}.layer-controls label{display:flex;align-items:center;gap:6px;color:#c7d9e3;font-size:12px;white-space:nowrap}.layer-symbol{width:10px;height:10px;border-radius:50%}.layer-symbol.station{background:var(--cyan);box-shadow:0 0 0 3px rgba(32,189,224,.2)}.layer-symbol.risk{background:var(--red);transform:rotate(45deg);border-radius:2px}.layer-symbol.river{height:3px;border-radius:4px;background:#46a8ff}.map-legend{position:absolute;z-index:600;right:14px;bottom:28px;background:rgba(6,23,36,.92);border:1px solid #31546b;border-radius:8px;padding:10px 12px;box-shadow:var(--shadow);display:flex;gap:10px;align-items:center;font-size:11px}.map-legend strong{font-size:11px;margin-right:3px}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.red{background:var(--red)}.yellow{background:var(--yellow)}.map-footnote{position:absolute;z-index:600;left:14px;bottom:10px;font-size:10px;background:rgba(6,23,36,.8);padding:3px 7px;border-radius:4px;color:#9eb3c0}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#0a263d;color:#ecf7fc}.leaflet-popup-content-wrapper{border:1px solid #31546b;border-radius:9px}.popup-title{font-size:14px;margin-bottom:6px}.popup-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;font-size:11px;color:#b4c8d3}.popup-grid strong{display:block;color:#fff;font-size:12px}.custom-marker{width:22px;height:22px;border-radius:50%;border:3px solid #dffaff;background:#15aaca;box-shadow:0 0 0 5px rgba(21,170,202,.22),0 3px 8px rgba(0,0,0,.35)}.risk-marker{width:18px;height:18px;transform:rotate(45deg);border-radius:4px;border:2px solid white;box-shadow:0 3px 8px rgba(0,0,0,.4)}.toast{position:fixed;z-index:2000;left:50%;bottom:22px;transform:translate(-50%,20px);background:#eaf8ff;color:#08243a;padding:10px 15px;border-radius:8px;box-shadow:var(--shadow);font-size:13px;opacity:0;pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:900px){.topbar{grid-template-columns:1fr auto}.alert-status{display:none}.workspace{grid-template-columns:360px 1fr}.layer-controls{flex-direction:column;gap:6px}.weather-grid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){body{height:auto}.topbar{position:sticky;top:0}.workspace{height:auto;display:flex;flex-direction:column}.sidebar{height:auto;max-height:none}.map-shell{height:62vh;min-height:460px;order:-1}.map-toolbar{flex-direction:column}.search-box{width:100%}.layer-controls{flex-direction:row;align-self:flex-end}.map-legend{left:14px;right:auto;bottom:30px;flex-wrap:wrap;max-width:280px}.brand span{display:none}.top-actions .clock{font-size:13px}}

/* Capas incorporadas desde el Plan de Acción Cantonal */
.tabs{grid-template-columns:repeat(4,1fr)}
.tab{font-size:11px;padding:9px 2px}
.risk-list{max-height:430px;overflow:auto;padding-right:3px}
.station-item,.risk-item{width:100%;color:inherit;text-align:left}
.station-item small,.risk-item small{display:block;margin-top:2px}
.risk-pill.inundacion{background:rgba(35,167,231,.17);color:#65d4ff}
.risk-pill.movimiento_masa{background:rgba(244,155,49,.17);color:#ffc173}
.risk-pill.maintenance{background:rgba(219,68,54,.2);color:#ffaaa2;white-space:nowrap}
.risk-pill.shelter{background:rgba(72,201,135,.16);color:#72e3a8}
.resource-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.resource-summary article{background:#0b2942;border:1px solid #23465f;border-radius:9px;padding:10px}
.resource-summary span,.resource-summary small{display:block;color:#92aabd;font-size:11px}
.resource-summary strong{font-size:20px}
.layer-controls{gap:10px;flex-wrap:wrap;justify-content:flex-end}
.layer-controls label{font-size:11px}
.search-box{width:min(330px,35%)}
.layer-symbol.shelter{background:var(--green);border-radius:2px}
.layer-symbol.facility{background:#b08cff}
.flood{background:#25a9e8}.mass{background:#f49b31}.shelter-dot{background:#48c987}
.risk-marker{width:17px;height:17px;border-radius:3px}
.shelter-marker{width:17px;height:17px;background:#34b876;border:2px solid white;border-radius:4px;box-shadow:0 3px 8px rgba(0,0,0,.4)}
.refuge-map-icon{border:2px solid #fff;border-radius:7px;object-fit:contain;background:#fff;box-shadow:0 3px 9px rgba(0,0,0,.48)}
.camp-marker,.maintenance-marker,.uploaded-marker{width:30px;height:30px;display:grid;place-items:center;border:2px solid #fff;border-radius:8px;box-shadow:0 3px 9px rgba(0,0,0,.5);font-size:18px;line-height:1}
.camp-marker{background:#0c8550}.maintenance-marker{background:#db4436}.uploaded-marker{width:28px;height:28px;background:#8d35bd;color:#fff;font-weight:900}
.facility-marker{width:14px;height:14px;background:#a77bef;border:2px solid white;border-radius:50%;box-shadow:0 3px 8px rgba(0,0,0,.4)}
.red-cross-marker{position:relative;width:14px;height:14px;background:#d71920;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px rgba(0,0,0,.42)}
.red-cross-marker:before,.red-cross-marker:after{content:"";position:absolute;background:#fff;border-radius:1px;left:50%;top:50%;transform:translate(-50%,-50%)}
.red-cross-marker:before{width:8px;height:3px}.red-cross-marker:after{width:3px;height:8px}
.ecu911-marker{display:grid;place-items:center;width:14px;height:14px;background:#1264a3;color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px rgba(0,0,0,.42);font-size:5px;font-weight:900;line-height:1;letter-spacing:-.2px}
@media(max-width:900px){.layer-controls{max-width:340px}.search-box{width:min(280px,40%)}}
@media(max-width:700px){.search-box{width:100%}.layer-controls{max-width:100%;align-self:stretch}.map-legend{max-width:330px}}

/* Estado de datos y capas del catastro actualizado */
.monitor-status{background:rgba(32,189,224,.1);border-color:rgba(32,189,224,.42)}
.monitor-status strong{color:#7de6f9}
.monitor-status small{color:#afd4df}
.monitor-status .pulse{background:var(--green);box-shadow:0 0 0 6px rgba(72,201,135,.14)}
.popup-note{font-size:11px;color:#b4c8d3;margin:8px 0 0;line-height:1.4}
.layer-symbol.hospital{background:#e96879;border-radius:2px}
.layer-symbol.flood-zone{background:#25a9e8;border:1px solid #a9edff;opacity:.8}
.legend-dot.zone-dot{background:#25a9e8;box-shadow:0 0 0 2px rgba(37,169,232,.25)}
.hospital-marker{width:18px;height:18px;background:#e96879;color:#fff;border:2px solid #fff;border-radius:4px;display:grid;place-items:center;font-size:13px;font-weight:900;box-shadow:0 3px 8px rgba(0,0,0,.4)}
.source-logo.msn{background:#27314b;color:#a8c5ff}
.source-logo.inec{background:#233f75;color:#9fc5ff}
.source-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.external-links-accordion{margin:0 0 12px;padding:0 0 9px;border-bottom:1px solid #67457e}.external-links-accordion summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;cursor:pointer}.external-links-accordion summary::-webkit-details-marker{display:none}.external-links-accordion summary strong,.external-links-accordion summary small{display:block}.external-links-accordion summary strong{font-size:13px;color:#fff}.external-links-accordion summary small{margin-top:3px;font-size:11px;color:#9eb3c0}.external-links-accordion summary>i{width:8px;height:8px;margin-right:2px;border-right:2px solid #d8c9e3;border-bottom:2px solid #d8c9e3;transform:rotate(45deg);transition:transform .2s ease}.external-links-accordion[open] summary>i{transform:rotate(225deg)}.external-links{display:grid;grid-template-columns:1fr 1fr;margin-top:7px}.external-links a{min-height:42px;text-align:center;line-height:1.25}.external-links a:last-child{grid-column:1/-1}
.source-actions a,.inec-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid #2d627c;background:#0d344f;color:#69dbf2;text-decoration:none;border-radius:7px;padding:8px 10px;font-size:11px}
.scope-control{display:flex;align-items:center;gap:7px;margin-bottom:10px;color:#b2c5d1;font-size:12px}
.scope-control select{min-width:150px;background:#0b2942;color:#eaf6fc;border:1px solid #31566f;border-radius:7px;padding:7px 9px}
.risk-summary,.population-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:11px}
.risk-summary{grid-template-columns:repeat(3,1fr)}
.risk-summary article,.population-grid article,.population-hero,.population-chart{background:#0b2942;border:1px solid #23465f;border-radius:9px;padding:10px}
.risk-summary span,.population-grid span,.population-grid small,.population-hero span,.population-hero small{display:block;color:#92aabd;font-size:11px}
.risk-summary strong,.population-grid strong{display:block;font-size:19px;margin-top:3px}
.population-hero{background:linear-gradient(135deg,#0e3d5b,#0b2942);margin-bottom:8px}
.population-hero strong{display:block;font-size:30px;margin:4px 0;color:#fff}
.census-hero{border-left:4px solid #2998d0}
.population-section-break{margin-top:22px;padding-top:17px;border-top:1px solid #67457e}
.exposure-hero{border-left:4px solid #ed7924;background:linear-gradient(135deg,rgba(121,55,39,.72),rgba(55,27,63,.94))!important}
.exposure-grid article:first-child{border-top:3px solid #f49b31}.exposure-grid article:last-child{border-top:3px solid #25a9e8}
.exposure-grid small{margin-top:3px;line-height:1.35}.exposure-note{border-left:3px solid #f5be27}
.exposure-parish-title{margin-top:15px}.exposure-parish-list{display:grid;gap:7px;margin:0 0 11px}.exposed-parish-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #67457e;border-radius:9px;background:rgba(45,24,81,.78)}
.exposed-parish-name strong,.exposed-parish-name small,.exposed-parish-values small,.exposed-parish-values strong{display:block}.exposed-parish-name strong{font-size:12px;color:#fff}.exposed-parish-name small{margin-top:3px;font-size:9px;line-height:1.35;color:#c9b7d8}.exposed-parish-values{display:grid;grid-template-columns:repeat(3,minmax(54px,auto));gap:7px;text-align:right}.exposed-parish-values span{padding-left:7px;border-left:1px solid #67457e}.exposed-parish-values small{font-size:8px;color:#bda8ce;white-space:nowrap}.exposed-parish-values strong{margin-top:2px;font-size:12px;color:#fff;font-variant-numeric:tabular-nums}.exposed-parish-values span:first-child strong{color:#f5be27}.exposed-parish-values span:nth-child(2) strong{color:#65c9f4}.exposed-parish-values .parish-exposed-total strong{color:#fff}
.population-accordion{margin-bottom:11px;border:1px solid #67457e;border-radius:10px;background:rgba(50,25,78,.72);overflow:hidden}
.population-accordion summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:62px;padding:11px 12px;cursor:pointer;user-select:none;background:linear-gradient(145deg,rgba(82,40,116,.92),rgba(44,25,71,.96))}
.population-accordion summary::-webkit-details-marker{display:none}.population-accordion summary:focus-visible{outline:2px solid #79d6ff;outline-offset:-3px}
.accordion-heading{min-width:0}.accordion-heading strong,.accordion-heading small{display:block}.accordion-heading strong{font-size:14px;color:#fff}.accordion-heading small{margin-top:4px;font-size:11px;color:#c9b7d8}
.accordion-value{display:flex;align-items:center;gap:9px;flex:0 0 auto}.accordion-value strong{font-size:17px;color:#fff;font-variant-numeric:tabular-nums}.accordion-value i{width:9px;height:9px;border-right:2px solid #d8c9e3;border-bottom:2px solid #d8c9e3;transform:rotate(45deg);transition:transform .2s ease}
.population-accordion[open] .accordion-value i{transform:rotate(225deg)}.census-accordion summary{border-left:4px solid #2998d0}.exposure-accordion summary{border-left:4px solid #ed7924}
.accordion-content{padding:12px}.accordion-content .population-hero{margin-top:0}.accordion-content .source-actions{margin-bottom:0}
.population-chart{margin:10px 0}
.population-chart-head,.bar-legend{display:flex;justify-content:space-between;gap:10px;align-items:center}
.population-chart-head{font-size:11px;color:#9fb5c5;margin-bottom:9px}
.stacked-bar{height:12px;border-radius:8px;overflow:hidden;display:flex;background:#173a53}
.bar-canton{background:#20bde0}.bar-concordia{background:#f49b31}
.bar-legend{font-size:10px;color:#92aabd;margin-top:8px;flex-wrap:wrap}
.canton-dot{background:#20bde0}.concordia-dot{background:#f49b31}
.inec-link{width:100%;margin-top:8px}
@media(max-width:460px){.risk-summary{grid-template-columns:1fr}.population-grid{grid-template-columns:1fr}.tabs{grid-template-columns:repeat(2,1fr)}.exposed-parish-list article{grid-template-columns:1fr}.exposed-parish-values{text-align:left}.exposed-parish-values span{padding:0 7px 0 0;border-left:0;border-right:1px solid #67457e}.exposed-parish-values span:last-child{border-right:0}}

/* Síntesis auditada del Plan Cantonal */
.plan-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:9px}.plan-summary article{background:linear-gradient(145deg,rgba(72,34,105,.86),rgba(37,22,63,.92));border:1px solid #67457e;border-radius:9px;padding:8px}.plan-summary strong,.plan-summary span{display:block}.plan-summary strong{font-size:18px;color:#fff}.plan-summary span{font-size:10px;color:#c9b7d8;line-height:1.25}
.exposure-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.exposure-summary article{border:1px solid #67457e;border-radius:10px;padding:10px;background:rgba(45,24,81,.85)}.exposure-summary span,.exposure-summary small{display:block}.exposure-summary span{font-size:11px;color:#c9b7d8}.exposure-summary strong{display:block;font-size:23px;margin:3px 0}.exposure-summary small{font-size:10px;color:#d7c8e2;line-height:1.35}.flood-exposure{border-top:3px solid #25a9e8!important}.mass-exposure{border-top:3px solid #f5be27!important}.priority-exposure{grid-column:1/-1;border-top:3px solid #db4436!important}
.plan-taxonomy{margin:0 0 12px;border:1px solid #67457e;border-radius:9px;background:rgba(49,25,77,.68);padding:9px}.plan-taxonomy summary{cursor:pointer;font-size:12px;font-weight:800;color:#fff}.taxonomy-grid{display:grid;gap:7px;margin-top:9px}.taxonomy-grid div{border-left:3px solid var(--magenta);padding-left:8px}.taxonomy-grid strong,.sector-title{font-size:11px}.taxonomy-grid p{margin:2px 0;color:#c9b7d8;font-size:10px;line-height:1.4}.sector-title{display:block;margin:10px 0 6px}.sector-chips{display:flex;gap:5px;flex-wrap:wrap}.sector-chips span{font-size:9px;background:#512573;border:1px solid #7c4a98;border-radius:10px;padding:4px 6px;color:#eadff1}

/* Superusuario, radar y cargas privadas */
.admin-notice{background:linear-gradient(135deg,#53217e,#8c176f);border:1px solid #d05aaf;border-radius:10px;padding:11px;margin-bottom:10px}.admin-notice strong,.admin-notice p{display:block}.admin-notice p{font-size:11px;line-height:1.45;margin:4px 0 0;color:#f0dcec}
.upload-card{display:grid;grid-template-columns:36px 1fr;gap:8px;background:rgba(57,28,86,.86);border:1px solid #70458a;border-radius:10px;padding:11px;margin-bottom:10px}.upload-card>input,.upload-card>.field-label,.upload-card>.upload-btn{grid-column:1/-1}.upload-card p{font-size:10px;line-height:1.4;color:#c9b7d8;margin:3px 0}.upload-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:#a11675;color:#fff;font-size:18px}.upload-card input[type=file]{width:100%;font-size:11px;color:#d8c9e3}.field-label{display:grid;gap:5px;font-size:11px;color:#d8c9e3}.field-label select{background:#321a4d;color:#fff;border:1px solid #70458a;border-radius:7px;padding:8px}.uploaded-list{display:grid;gap:7px}.uploaded-list article{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:7px;border:1px solid #67457e;background:#2d1851;border-radius:8px;padding:8px}.uploaded-list strong,.uploaded-list small{display:block}.uploaded-list strong{font-size:11px}.uploaded-list small{font-size:9px;color:#c9b7d8;margin-top:2px}.layer-symbol.uploads{background:#a93bd4;border-radius:2px}
.radar-card{position:relative;overflow:hidden;border:1px solid #7c4a98;border-radius:12px;padding:13px;background:linear-gradient(145deg,#351754,#201132)}.radar-card>strong{display:block;font-size:17px;margin-top:10px}.radar-card p{font-size:11px;color:#d2c1dd;line-height:1.45}.radar-link{display:flex;justify-content:center;text-decoration:none;color:#fff;background:linear-gradient(90deg,#6720a7,#d51a81);border:1px solid #eb6dba;border-radius:8px;padding:10px;font-size:12px;font-weight:800}.radar-preview{height:135px;border-radius:9px;position:relative;display:grid;place-items:center;background:radial-gradient(circle at 51% 52%,#ffdd36 0 6%,#e94b78 7% 12%,#7a34c5 13% 20%,#276ed3 21% 30%,rgba(32,82,135,.25) 31% 48%,transparent 49%),linear-gradient(145deg,#102a42,#17344a);overflow:hidden}.radar-preview:before,.radar-preview:after,.radar-preview i{content:"";position:absolute;border:1px solid rgba(255,255,255,.22);border-radius:50%}.radar-preview:before{width:55px;height:55px}.radar-preview:after{width:100px;height:100px}.radar-preview i:nth-of-type(1){width:150px;height:150px}.radar-preview span{font-size:20px;color:#fff;z-index:1}.source-logo.plan{background:#6720a7;color:#fff}
@media(max-width:460px){.plan-summary{grid-template-columns:repeat(2,1fr)}.exposure-summary{grid-template-columns:1fr}}

/* Simbología diferenciada de amenazas y recursos de respuesta */
.threat-selectors{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:10px}.priority-attention-card{grid-column:1/-1}
.threat-card{display:grid;grid-template-columns:54px 1fr;align-items:center;gap:9px;background:#0b2942;color:inherit;border:1px solid #31536b;border-radius:10px;padding:8px;text-align:left;cursor:pointer}
.threat-card:hover,.threat-card.active{border-color:#f4c12d;background:#12344e;box-shadow:inset 0 0 0 1px rgba(244,193,45,.25)}
.threat-card img{width:54px;height:54px;object-fit:contain;background:#fff;border-radius:8px}
.threat-card-icon{width:54px;height:54px;display:grid;place-items:center;border:2px solid #fff;border-radius:8px;background:#db4436;font-size:22px;line-height:1;box-shadow:0 2px 6px rgba(0,0,0,.35)}.threat-group-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;border:2px solid #fff;border-radius:6px;background:#db4436;font-size:17px;line-height:1}.priority-list-icon{color:#ff786d}
.threat-card strong,.threat-card small{display:block}.threat-card strong{font-size:13px;line-height:1.2}.threat-card small{font-size:11px;color:#9eb3c0;margin-top:4px;line-height:1.25}
.threat-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.threat-all{border:1px solid #31566f;background:#0b2942;color:#b9cbd6;border-radius:7px;padding:7px 9px;font-size:11px;cursor:pointer}.threat-all.active{border-color:var(--cyan);color:#fff;background:#0e405a}
.threat-controls .scope-control{margin:0}
.threat-group{margin:13px 0 16px}.threat-group-title{display:flex;align-items:center;gap:9px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid #25445c}
.threat-group-title img{width:38px;height:38px;object-fit:contain;background:#fff;border-radius:6px}.threat-group-title h3{font-size:14px;margin:0}.threat-group-title span{font-size:11px;color:#8fa9bb}
.risk-list-icon{width:30px;height:30px;object-fit:contain;background:#fff;border-radius:5px}.hazard-map-icon{border:2px solid #fff;border-radius:7px;object-fit:contain;background:#fff;box-shadow:0 3px 9px rgba(0,0,0,.48)}.flood-map-icon{border-color:#7be0ff}.mass-map-icon{border-color:#ffd45b}
.fire-truck-marker,.hospital-marker{width:30px;height:30px;display:grid;place-items:center;border:2px solid #fff;border-radius:8px;font-size:19px;line-height:1;box-shadow:0 3px 9px rgba(0,0,0,.5)}
.fire-truck-marker{background:#b9212b}.hospital-marker{background:#1876a8}
.resource-symbol{width:30px;height:30px;display:grid;place-items:center;font-size:21px;line-height:1}.layer-emoji{font-size:16px;line-height:1}.legend-image{width:20px;height:20px;object-fit:contain;background:#fff;border-radius:4px;margin-right:5px;vertical-align:middle}
@media(max-width:460px){.threat-selectors{grid-template-columns:1fr}.priority-attention-card{grid-column:auto}.threat-card{grid-template-columns:48px 1fr}.threat-card img,.threat-card-icon{width:48px;height:48px}}

/* Identidad visual Municipalidad de Santo Domingo */
body{background:var(--navy)}
.topbar{background:linear-gradient(100deg,#0c3d71 0%,#492077 52%,#9e126f 100%);border-bottom:3px solid var(--magenta)}
.brand-mark{background:linear-gradient(145deg,var(--blue),var(--purple));border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.1)}
.brand-mark:after{background:var(--orange)}
.alert-status{background:rgba(80,10,52,.45);border-color:rgba(255,167,217,.55)}
.alert-status strong{color:#fff}.alert-status small{color:#f5cae4}
.sidebar{background:linear-gradient(180deg,#2a1648 0%,#1d1235 48%,#130c26 100%);border-right-color:#7d3b91}
.municipal-banner{margin:12px 0 13px;border-radius:11px;overflow:hidden;background:#fff;box-shadow:0 8px 22px rgba(7,3,18,.35);border:1px solid rgba(255,255,255,.32)}
.municipal-banner img{display:block;width:100%;height:auto}
.eyebrow{color:#7fd5ff;font-weight:800}.demo-badge{color:#ffe1f3;background:rgba(213,26,129,.2);border-color:rgba(255,92,181,.58)}
.panorama-toggle{width:100%;padding:0 0 8px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.panorama-toggle:focus-visible{outline:2px solid #79d6ff;outline-offset:4px;border-radius:4px}.panorama-toggle-status{display:flex;align-items:center;gap:9px}.panorama-chevron{width:9px;height:9px;border-right:2px solid #d8c9e3;border-bottom:2px solid #d8c9e3;transform:rotate(225deg);transition:transform .2s ease}.panorama-toggle[aria-expanded="false"] .panorama-chevron{transform:rotate(45deg)}.panel.panorama-collapsed{display:none}
.demo-note{color:#d8c9e3;background:rgba(69,30,103,.48);border-left-color:var(--magenta)}
.tabs{border-bottom-color:#67407e}.tab{color:#bda7cd}.tab:hover{color:#fff;background:rgba(213,26,129,.08)}.tab.active{color:#fff;border-color:var(--magenta);background:linear-gradient(180deg,transparent,rgba(213,26,129,.15))}
.metrics article,.weather-card,.chart-card,.station-item,.risk-item,.resource-summary article,.risk-summary article,.population-grid article,.population-hero,.population-chart,.threat-card{background:linear-gradient(145deg,rgba(72,34,105,.86),rgba(37,22,63,.92));border-color:#67457e}
.metrics article:nth-child(1){border-top:3px solid var(--blue)}.metrics article:nth-child(2){border-top:3px solid var(--magenta)}.metrics article:nth-child(3){border-top:3px solid var(--green)}.metrics article:nth-child(4){border-top:3px solid var(--orange)}
.weather-card.selected{border-color:#ec49a6;box-shadow:inset 0 0 0 1px rgba(236,73,166,.35)}
.info-box,.source-note{background:rgba(97,32,151,.15);border-color:rgba(209,93,188,.34);color:#d8c9e3}
.search-box,.layer-controls,.map-legend{background:rgba(31,13,50,.94);border-color:#80519a}
.source-actions a,.inec-link{background:#371c55;border-color:#71428b;color:#8cdcff}.source-actions a:hover,.inec-link:hover{border-color:var(--magenta);color:#fff}
.source-card{border-bottom-color:#56376c}.source-card a{color:#79d6ff}
.threat-all{background:#321a4d;border-color:#70458a}.threat-all.active{background:linear-gradient(90deg,#55208b,#a11675);border-color:#eb58af}
.scope-control select{background:#321a4d;border-color:#70458a}
.map-footnote{background:rgba(32,13,51,.9);color:#d6c4e2}
@media(max-width:700px){.municipal-banner{margin-top:10px}.sidebar{border-top:2px solid var(--magenta)}}

/* .header-identity{display:block;width:220px;height:58px;object-fit:contain;object-position:center;border:0;background:transparent;box-shadow:none}
@media(max-width:700px){.header-identity{width:160px;height:50px}.topbar{padding:0 12px}} */

.header-identity {
  display: block;
  width: auto; /* <- El cambio clave: permite que el banner se expanda horizontalmente */
  height: 58px;
  object-fit: contain;
  object-position: center;
  border: 0;
  background: transparent;
  box-shadow: none;
}

@media(max-width:700px) {
  .header-identity {
    width: auto; /* <- El cambio clave para móviles */
    max-width: 45vw; /* Un límite de seguridad para que no choque con el logo ni el reloj en pantallas pequeñas */
    height: 50px;
  }
  .topbar {
    padding: 0 12px;
  }
}



/* Ajuste solicitado: identidad sin marco y sin recuadro bajo Panorama operativo */
.municipal-banner{margin:12px 0 13px;border:0;background:transparent;box-shadow:none;border-radius:0;overflow:visible}
.municipal-banner img{border:0;box-shadow:none;border-radius:0}
.demo-note{display:none}

/* Todos los puntos georreferenciados usan un tamaño uniforme de 17 × 17 px. */
.custom-marker,.facility-marker,.red-cross-marker,.ecu911-marker,.camp-marker,.maintenance-marker,.uploaded-marker,.fire-truck-marker,.hospital-marker{width:17px;height:17px;border-width:2px;box-shadow:0 2px 5px rgba(0,0,0,.42)}
.red-cross-marker,.ecu911-marker{width:17px;height:17px;border-width:1px}
.red-cross-marker:before{width:11px;height:3px}.red-cross-marker:after{width:3px;height:11px}
.ecu911-marker{font-size:6px}
.camp-marker,.maintenance-marker,.uploaded-marker,.fire-truck-marker,.hospital-marker{border-radius:4px;font-size:9px;line-height:1;display:grid;place-items:center}
.refuge-map-icon,.hazard-map-icon{width:17px!important;height:17px!important;border-width:2px;border-radius:4px;box-shadow:0 2px 5px rgba(0,0,0,.42)}

/* Alertas oficiales INAMHI: capa separada, sin datos simulados */
.official-alert-strip{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:9px;margin-top:12px;padding:10px 0;border-top:1px solid #67457e}.official-alert-strip strong,.official-alert-strip small{display:block}.official-alert-strip strong{font-size:12px}.official-alert-strip small{margin-top:3px;color:#c9b7d8;font-size:10px;line-height:1.35}.official-alert-mark{background:#fff;color:#432269;border-left:4px solid #d51a81;border-radius:5px;padding:6px 7px;font-size:9px;font-weight:900;letter-spacing:.08em}
.inamhi-card{padding:12px;border:1px solid #70458a;border-radius:10px;background:linear-gradient(145deg,rgba(69,29,102,.9),rgba(34,18,54,.96))}.inamhi-card>strong{font-size:13px}.inamhi-card p{color:#d2c1dd;font-size:11px;line-height:1.45}.alert-scale{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0;font-size:11px;color:#e8ddef}.alert-scale span,.alert-legend{display:flex;align-items:center;gap:5px}.alert-swatch{display:inline-block;width:11px;height:11px;border:2px solid rgba(255,255,255,.85);border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.35)}.yellow-alert{background:#f4cf2f}.orange-alert{background:#f28c28}.red-alert{background:#d7263d}.layer-symbol.inamhi-alert{background:linear-gradient(135deg,#f4cf2f 0 33%,#f28c28 34% 66%,#d7263d 67%);border:1px solid #fff;border-radius:2px}.alert-legend .alert-swatch{width:8px;height:8px;border-width:1px;margin-right:-3px}.popup-source-link{color:#79d6ff;font-size:11px;text-decoration:none}
.inamhi-upload-card{border-left:3px solid #f4cf2f}.upload-card input[type=datetime-local],.upload-card input[type=url]{width:100%;background:#321a4d;color:#fff;border:1px solid #70458a;border-radius:7px;padding:8px;color-scheme:dark}
@media(max-width:700px){.alert-legend{width:100%}.official-alert-strip{grid-template-columns:1fr}.official-alert-mark{width:max-content}}

/* Censo 2022: presentación exclusiva del cantón Santo Domingo */
.age-groups{grid-template-columns:repeat(3,1fr)}.age-groups article{border-top:3px solid #d51a81}.age-groups strong{color:#bfa8cc}.parish-population-list{display:grid;gap:6px}.parish-population-list article{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border:1px solid #67457e;border-radius:8px;background:rgba(58,29,88,.75)}.parish-population-list span{font-size:11px;color:#e5d9ec}.parish-population-list strong{font-size:12px;color:#bfa8cc}
@media(max-width:460px){.age-groups{grid-template-columns:1fr}}

/* 1. Posicionar la caja sobre el mapa y asegurar que reciba clics */
.map-toolbar {
  position: absolute;
  top: 15px;
  right: 15px;
  z-index: 9999; /* Obliga a la barra a estar por encima de Leaflet */
  pointer-events: auto; /* Permite hacer clic */
  display: flex;
  align-items: flex-start;
}

/* 2. El contenedor del botón con fondo sólido forzado */
.layer-dropdown {
  background-color: #ffffff !important;
  border-radius: 8px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
  margin-left: 10px;
  color: #333333 !important;
}

/* 3. El botón principal (Capas del mapa) */
.layer-dropdown-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  cursor: pointer;
  font-weight: 600;
  list-style: none; /* Elimina la flecha ▸ en Firefox/estándar */
}

/* Elimina la flecha ▸ nativa en Chrome, Edge y Safari */
.layer-dropdown-toggle::-webkit-details-marker {
  display: none;
}

/* 4. El panel blanco con las opciones que se despliega hacia abajo */
.layer-dropdown[open] .layer-controls {
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 8px;
  background-color: #ffffff;
  border-radius: 8px;
  box-shadow: 0 4px 15px rgba(0,0,0,0.25);
  padding: 15px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 230px;
  z-index: 10000;
}

/* 5. Estilo de cada fila (checkbox + icono + texto) */
.layer-dropdown[open] .layer-controls label {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  color: #333333;
  font-size: 14px;
}