:root{--bg:#f4f6f8;--card:#fff;--ink:#17212b;--muted:#6c7885;--line:#dde3e8;--accent:#143e66;--accent2:#1f618d;--danger:#a83232;--ok:#216e45;--shadow:0 4px 18px rgba(21,43,60,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit}.topbar{height:58px;background:#102b45;color:#fff;display:flex;align-items:center;padding:0 22px;gap:26px}.brand{font-weight:800;font-size:20px}.brand span{font-weight:500}.topbar nav{display:flex;gap:8px;flex:1}.topbar nav a{padding:9px 12px;text-decoration:none;border-radius:7px}.topbar nav a:hover{background:rgba(255,255,255,.1)}.userbox{display:grid;grid-template-columns:auto auto;gap:0 12px;align-items:center}.userbox small{opacity:.75}.userbox a{grid-column:2;text-align:right;font-size:12px}.page{padding:16px;min-height:calc(100vh - 58px)}.card,.content-card,.subcard{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.dash-grid{height:calc(100vh - 90px);display:grid;grid-template-columns:1fr 1fr;grid-template-rows:92px minmax(260px,1fr) minmax(230px,.8fr);gap:12px}.kpis{grid-column:1/3;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.kpi{padding:14px 18px;display:flex;flex-direction:column;justify-content:center}.kpi span{font-size:13px;color:var(--muted)}.kpi strong{font-size:34px;line-height:1}.chart-card,.map-card,.monthly-card{padding:12px;min-height:0}.monthly-card{grid-column:1/3}.card header{height:34px;display:flex;justify-content:space-between;align-items:center}.card header h2,.subcard h2{font-size:15px;margin:0}.card header span{font-size:11px;color:var(--muted)}.chart{height:calc(100% - 34px)}#mapa{height:calc(100% - 34px);border-radius:8px}.segmented{display:flex;gap:2px;background:#eef2f5;border-radius:8px;padding:2px}.segmented button{border:0;background:transparent;padding:6px 9px;border-radius:6px;cursor:pointer}.segmented button.active{background:#fff;box-shadow:0 1px 4px #bbb}.content-card{max-width:1320px;margin:0 auto;padding:20px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.section-head h1{margin:0;font-size:24px}.section-head p{margin:4px 0 0;color:var(--muted)}.section-head.compact{margin-bottom:10px}.section-head.compact h2{font-size:16px}.btn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 14px;cursor:pointer;text-decoration:none;color:var(--ink)}.btn:hover{filter:brightness(.98)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{background:#fff5f5;border-color:#e1b5b5;color:var(--danger)}.toolbar{display:flex;gap:8px;margin-bottom:12px}.toolbar input,.location-search input{flex:1}.table-wrap{overflow:auto;max-height:calc(100vh - 220px)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line);font-size:13px}th{position:sticky;top:0;background:#fff;color:var(--muted)}input,select,textarea{width:100%;border:1px solid #cdd6dd;border-radius:8px;padding:9px 10px;font:inherit;background:#fff}label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:#45515c}.form-shell{max-width:1180px}.subcard{padding:15px;margin:12px 0;box-shadow:none}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid.three{grid-template-columns:repeat(3,1fr)}.location-search{display:flex;gap:8px;margin-bottom:8px}#mapaCaptura{height:330px;border-radius:8px;margin:8px 0 12px}.search-results{display:grid;gap:4px}.search-result{border:1px solid var(--line);padding:8px;border-radius:7px;cursor:pointer;background:#fff}.search-result:hover{background:#f5f8fb}.victim-card,.hechor-card{border:1px solid var(--line);background:#fafcfd;border-radius:9px;padding:12px;margin:8px 0}.victim-card h3,.hechor-card h3{font-size:13px;margin:0 0 9px}.actions{display:flex;gap:8px;align-items:center;margin-top:14px}.spacer{flex:1}.status{min-height:24px;margin-top:10px;font-size:13px}.status.ok{color:var(--ok)}.status.error{color:var(--danger)}.badge{padding:6px 10px;border-radius:999px;background:#edf3f8;font-size:12px}.hidden{display:none!important}.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:2000}.modal-card{width:min(460px,90vw);background:#fff;border-radius:12px;padding:20px;box-shadow:0 20px 60px rgba(0,0,0,.25)}.login-wrap{min-height:90vh;display:grid;place-items:center}.login-card{width:min(390px,90vw);background:#fff;border:1px solid var(--line);padding:28px;border-radius:14px;box-shadow:var(--shadow);display:grid;gap:14px}.login-card h1{margin:0}.login-card p{margin:-8px 0 0;color:var(--muted)}.alert.error{background:#fff2f2;color:var(--danger);padding:9px;border-radius:7px}.muted{color:var(--muted)}@media(max-width:900px){.dash-grid{height:auto;display:block}.kpis{display:grid;margin-bottom:12px}.chart-card,.map-card,.monthly-card{height:360px;margin-bottom:12px}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.topbar nav{display:none}.userbox{margin-left:auto}}

/* ===== Dashboard ejecutivo V2 ===== */
.dashboard-executive{padding:10px 14px 14px;overflow:hidden}.executive-dashboard{height:calc(100vh - 82px);display:grid;grid-template-rows:48px 92px minmax(0,1fr) 232px;gap:10px;max-width:1900px;margin:0 auto}.dash-heading{display:flex;align-items:center;justify-content:space-between;min-height:0;padding:0 4px}.dash-heading h1{font-size:22px;line-height:1.05;margin:2px 0 0}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.12em;color:#71808d}.dash-heading-actions{display:flex;align-items:center;gap:10px}.dash-updated{font-size:12px;color:var(--muted)}.icon-btn{width:36px;height:36px;border:1px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;font-size:19px}.executive-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;min-height:0}.metric-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 16px;box-shadow:0 3px 13px rgba(21,43,60,.06);display:flex;flex-direction:column;justify-content:center;min-width:0}.metric-card.metric-primary{border-top:3px solid var(--accent)}.metric-label{text-transform:uppercase;letter-spacing:.045em;font-size:10px;font-weight:800;color:#72808c}.metric-main{display:flex;align-items:flex-end;gap:10px;margin-top:5px}.metric-main strong{font-size:34px;line-height:.95;letter-spacing:-.04em}.metric-main span{font-size:11px;color:var(--muted);padding-bottom:3px}.trend-down{color:#23714b}.trend-up{color:#a83232}.executive-main-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(360px,.8fr);gap:10px;min-height:0}.executive-side-stack{display:grid;grid-template-rows:1fr 1fr;gap:10px;min-height:0}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 13px rgba(21,43,60,.06);padding:10px 12px;min-height:0;overflow:hidden}.panel-head{height:42px;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head h2{font-size:14px;margin:0}.panel-head p{font-size:10px;color:var(--muted);margin:2px 0 0}.map-panel{display:grid;grid-template-rows:42px minmax(0,1fr)}.map-panel #mapa{height:100%;min-height:0;border-radius:8px;background:#eef2f5}.map-status{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.map-status span{font-size:10px;background:#edf4f8;border-radius:999px;padding:5px 8px}.map-status .pending{background:#fff4e8}.compact-panel{display:grid;grid-template-rows:42px minmax(0,1fr)}.compact-panel .chart{height:100%;min-height:0}.monthly-panel{display:grid;grid-template-rows:42px minmax(0,1fr)}.monthly-panel .chart{height:100%;min-height:0}.monthly-head{height:42px}.segmented{flex-shrink:0}.segmented button{font-size:11px;padding:5px 9px}.leaflet-popup-content{font-size:12px;line-height:1.45}.map-popup strong{font-size:13px}@media(max-width:1100px){.dashboard-executive{overflow:auto}.executive-dashboard{height:auto;display:block}.dash-heading,.executive-kpis,.executive-main-grid,.monthly-panel{margin-bottom:10px}.executive-kpis{grid-template-columns:repeat(2,1fr)}.executive-main-grid{grid-template-columns:1fr}.map-panel{height:470px}.executive-side-stack{grid-template-columns:1fr 1fr;grid-template-rows:280px}.monthly-panel{height:300px}}@media(max-width:700px){.executive-kpis{grid-template-columns:1fr 1fr}.metric-main strong{font-size:28px}.executive-side-stack{grid-template-columns:1fr;grid-template-rows:260px 260px}.dash-heading-actions .dash-updated{display:none}.dashboard-executive{padding:8px}.executive-dashboard{display:block}.monthly-panel{height:330px}.map-panel{height:420px}}

/* ===== Dashboard ejecutivo V3 ===== */
.report-btn{font-size:12px;padding:8px 12px;background:#fff}.pending-text{font-size:19px!important;letter-spacing:-.02em!important;color:#a56618}.executive-bottom-grid{display:grid;grid-template-columns:minmax(0,1.62fr) minmax(420px,.78fr);gap:10px;min-height:0}.executive-bottom-grid>.panel{height:100%}.weather-panel{display:grid;grid-template-rows:42px minmax(0,1fr)}.weather-updated{font-size:9px;color:var(--muted);white-space:nowrap}.weather-content{min-height:0;display:grid;grid-template-columns:1fr;gap:5px;align-content:stretch}.weather-loading,.weather-error{display:grid;place-items:center;height:100%;font-size:11px;color:var(--muted);text-align:center;padding:12px}.weather-zone{border:1px solid #e5eaee;background:#fafcfd;border-radius:8px;padding:7px 9px;display:grid;grid-template-columns:76px 1fr;grid-template-rows:auto auto;column-gap:8px;min-height:0}.weather-zone-title{font-size:11px;font-weight:800}.weather-condition{font-size:9px;color:var(--muted);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.weather-metrics{grid-column:1/3;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:4px}.weather-metrics span{display:grid;grid-template-columns:auto auto;justify-content:start;align-items:baseline;column-gap:2px;min-width:0}.weather-metrics b{font-size:16px;line-height:1}.weather-metrics small{font-size:8px;color:var(--muted);white-space:nowrap}.weather-metrics em{grid-column:1/3;font-size:8px;color:#7e8993;font-style:normal;margin-top:2px}.metric-main .trend-down{color:#23714b}.metric-main .trend-up{color:#a83232}

@media(max-width:1100px){.executive-bottom-grid{grid-template-columns:1fr}.weather-panel{height:250px;margin-top:10px}.weather-content{grid-template-columns:repeat(3,1fr)}.weather-zone{display:block}.weather-condition{text-align:left;margin:3px 0 8px}.weather-metrics{display:block}.weather-metrics span{margin:5px 0}.executive-bottom-grid .monthly-panel{height:300px}.report-btn{display:none}}

@media print{
  @page{size:A4 landscape;margin:7mm}
  html,body{background:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .topbar{display:none!important}
  .page,.dashboard-executive{padding:0!important;min-height:0!important;overflow:visible!important}
  .executive-dashboard{height:185mm!important;max-width:none!important;grid-template-rows:12mm 20mm minmax(0,1fr) 47mm!important;gap:2.2mm!important}
  .dash-heading-actions .icon-btn,.dash-heading-actions .report-btn{display:none!important}
  .dash-heading h1{font-size:16px!important}.eyebrow{font-size:7px!important}.dash-updated{font-size:8px!important}
  .executive-kpis{gap:2mm!important}.metric-card{padding:2mm 3mm!important;border-radius:6px!important;box-shadow:none!important}.metric-label{font-size:7px!important}.metric-main strong{font-size:22px!important}.metric-main span{font-size:7px!important}
  .executive-main-grid,.executive-bottom-grid{gap:2mm!important}.panel{padding:2mm 2.5mm!important;border-radius:6px!important;box-shadow:none!important}.panel-head{height:8mm!important}.panel-head h2{font-size:9px!important}.panel-head p{font-size:7px!important}.map-status span{font-size:7px!important;padding:1mm 2mm!important}.executive-bottom-grid{grid-template-columns:1.62fr .78fr!important}.weather-zone{padding:1.2mm 1.8mm!important}.weather-zone-title{font-size:7px!important}.weather-condition{font-size:6px!important}.weather-metrics b{font-size:10px!important}.weather-metrics small,.weather-metrics em{font-size:5.5px!important}
  .leaflet-control-container{display:none!important}
}

/* ===== Gestión de cierres diarios ===== */
.zero-closures-card{margin-top:16px}.zero-closures-card .section-head h2{margin:0;font-size:20px}.zero-closures-card .section-head p{margin:4px 0 0;color:var(--muted)}.facts-table{max-height:44vh}.closures-table{max-height:34vh}.row-actions{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}.row-actions .btn{padding:6px 10px;font-size:12px}.modal-card label{margin-top:12px}

/* ===== V3.2 · Usuarios ===== */
.users-card{max-width:1180px}.users-table-wrap{max-height:calc(100vh - 260px)}.role-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 16px}.role-summary>div{border:1px solid var(--line);background:#fafcfd;border-radius:9px;padding:10px 12px;display:grid;gap:3px}.role-summary strong{font-size:11px;color:var(--accent);letter-spacing:.04em}.role-summary span{font-size:11px;color:var(--muted)}.role-badge,.state-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:800;letter-spacing:.03em}.role-badge.admin{background:#e9eef7;color:#153f68}.role-badge.specialist{background:#e9f4ef;color:#216e45}.role-badge.viewer{background:#f0f2f4;color:#58636e}.state-pill.on{background:#eaf5ef;color:#216e45}.state-pill.off{background:#f7ecec;color:#9d3333}.user-modal-card{width:min(620px,92vw)}.user-form-grid{margin-top:14px}.field-help{font-size:11px;color:var(--muted);margin:5px 0 0}.user-modal-card input:disabled{background:#f1f3f5;color:#68737d}.user-modal-card .status{margin-bottom:-4px}@media(max-width:760px){.role-summary{grid-template-columns:1fr}.user-form-grid{grid-template-columns:1fr!important}}

/* ===== V3.2 · Clima gráfico ===== */
.weather-content{display:block;overflow:hidden}.weather-graphic-grid{height:100%;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:5px}.weather-metric-card{border:1px solid #e3e9ee;background:#fafcfd;border-radius:8px;padding:5px 7px;display:grid;grid-template-columns:105px minmax(0,1fr);align-items:center;min-height:0;overflow:hidden}.weather-metric-card header{display:flex;gap:6px;align-items:center;min-width:0}.weather-metric-card header div{display:grid}.weather-metric-card header b{font-size:10px;line-height:1.1}.weather-metric-card header small{font-size:7px;color:var(--muted);margin-top:2px}.wx-icon{font-size:17px;line-height:1}.weather-metric-card>.wx-row{grid-column:2;display:grid;grid-template-columns:48px minmax(42px,1fr) auto auto;gap:4px;align-items:center;min-height:15px}.wx-zone{font-size:7.5px;color:#5e6b76;font-weight:700}.wx-track{height:5px;border-radius:999px;background:#e7edf1;overflow:hidden}.wx-track i{display:block;height:100%;border-radius:999px;background:#5579bc}.wx-rain .wx-track i{background:#4b91ba}.wx-wind .wx-track i{background:#65737e}.wx-temp .wx-track i{background:#b46a52}.wx-row strong{font-size:9px;line-height:1;text-align:right}.wx-row small{font-size:6.5px;color:var(--muted);white-space:nowrap}.weather-error{height:100%;display:grid;place-items:center;color:var(--muted);font-size:11px;text-align:center}.metric-main .trend-down{color:#23714b}.metric-main .trend-up{color:#a83232}

/* ===== V3.2 · Impresión A4 horizontal en UNA página ===== */
@media print{
  @page{size:A4 landscape;margin:3mm}
  html,body{width:291mm!important;height:204mm!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.report-print{width:291mm!important;height:204mm!important;overflow:hidden!important}
  .topbar{display:none!important}
  .page.dashboard-executive,.dashboard-executive{width:291mm!important;height:204mm!important;min-height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}
  .executive-dashboard{display:grid!important;width:291mm!important;height:203mm!important;max-width:none!important;margin:0!important;grid-template-rows:9mm 17mm 111mm 60mm!important;gap:2mm!important;overflow:hidden!important;break-inside:avoid!important;page-break-inside:avoid!important;page-break-after:avoid!important}
  .dash-heading{display:flex!important;margin:0!important;padding:0 1mm!important;min-height:0!important}.dash-heading h1{font-size:14px!important;margin:0!important}.eyebrow{font-size:6.5px!important}.dash-heading-actions{gap:2mm!important}.dash-updated{font-size:7px!important}.dash-heading-actions .icon-btn,.dash-heading-actions .report-btn{display:none!important}
  .executive-kpis{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:2mm!important;margin:0!important;min-height:0!important}.metric-card{height:auto!important;margin:0!important;padding:1.5mm 2.5mm!important;border-radius:5px!important;box-shadow:none!important}.metric-label{font-size:6.5px!important}.metric-main{margin-top:.8mm!important;gap:2mm!important}.metric-main strong{font-size:18px!important}.metric-main span{font-size:6px!important;padding-bottom:.6mm!important}.pending-text{font-size:12px!important}
  .executive-main-grid{display:grid!important;grid-template-columns:minmax(0,1.52fr) minmax(0,.78fr)!important;gap:2mm!important;margin:0!important;min-height:0!important;height:auto!important}.executive-side-stack{display:grid!important;grid-template-columns:1fr!important;grid-template-rows:1fr 1fr!important;gap:2mm!important;height:auto!important;min-height:0!important}.map-panel,.compact-panel,.monthly-panel,.weather-panel{height:auto!important;margin:0!important;min-height:0!important}.panel{padding:1.4mm 1.8mm!important;border-radius:5px!important;box-shadow:none!important;overflow:hidden!important;break-inside:avoid!important;page-break-inside:avoid!important}.panel-head,.monthly-head{height:7mm!important;min-height:0!important}.panel-head h2{font-size:8px!important}.panel-head p{font-size:5.5px!important;margin:.4mm 0 0!important}.map-status{gap:1mm!important}.map-status span{font-size:5.5px!important;padding:.7mm 1.3mm!important}.map-panel{display:grid!important;grid-template-rows:7mm minmax(0,1fr)!important}.compact-panel{display:grid!important;grid-template-rows:7mm minmax(0,1fr)!important}.compact-panel .chart,.monthly-panel .chart{height:100%!important;min-height:0!important}.map-panel #mapa{height:100%!important;min-height:0!important;border-radius:4px!important}.leaflet-control-container{display:none!important}
  .executive-bottom-grid{display:grid!important;grid-template-columns:minmax(0,1.62fr) minmax(0,.78fr)!important;gap:2mm!important;margin:0!important;height:auto!important;min-height:0!important}.monthly-panel{display:grid!important;grid-template-rows:7mm minmax(0,1fr)!important}.segmented button{font-size:6px!important;padding:.8mm 1.2mm!important}.weather-panel{display:grid!important;grid-template-rows:7mm minmax(0,1fr)!important}.weather-updated{font-size:5.2px!important}.weather-content{height:100%!important;min-height:0!important;overflow:hidden!important}.weather-graphic-grid{gap:1mm!important}.weather-metric-card{grid-template-columns:24mm minmax(0,1fr)!important;padding:.8mm 1mm!important;border-radius:4px!important}.weather-metric-card header{gap:1mm!important}.weather-metric-card header b{font-size:5.8px!important}.weather-metric-card header small{font-size:4.5px!important}.wx-icon{font-size:9px!important}.weather-metric-card>.wx-row{grid-template-columns:11mm minmax(10mm,1fr) auto auto!important;gap:.8mm!important;min-height:3.2mm!important}.wx-zone{font-size:4.8px!important}.wx-track{height:1.2mm!important}.wx-row strong{font-size:5.5px!important}.wx-row small{font-size:4.2px!important}
  canvas{max-width:100%!important}.leaflet-container{overflow:hidden!important}
}

/* Margen de seguridad para Chrome cuando "Encabezados y pies" está activado. */
@media print{
  @page{size:A4 landscape;margin:5mm}
  html,body,body.report-print{width:278mm!important;height:180mm!important;overflow:hidden!important}
  .page.dashboard-executive,.dashboard-executive{width:278mm!important;height:180mm!important;overflow:hidden!important}
  .executive-dashboard{width:278mm!important;height:180mm!important;grid-template-rows:8mm 16mm 100mm 50mm!important;gap:2mm!important}
}

/* ===== V3.4 · Clima operacional 3 zonas ===== */
.weather-panel{display:grid;grid-template-rows:46px minmax(0,1fr)}
.weather-head{height:46px!important;align-items:flex-start!important}
.weather-head h2{font-size:13px!important;margin:0}
.weather-head p{font-size:8px!important;margin:2px 0 0!important;color:var(--muted)}
.weather-updated{display:grid!important;justify-items:end;align-content:start;gap:1px;min-width:118px;color:#151b20!important;text-align:right;line-height:1.05!important;white-space:normal!important}
.weather-updated b{font-size:8px;font-weight:700}
.weather-updated span{font-size:7px;font-weight:500}
.weather-content{height:100%;min-height:0;overflow:hidden;padding:0 2px 2px;display:block!important}
.weather-ops-grid{height:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-items:stretch}
.weather-ops-zone{min-width:0;display:grid;grid-template-rows:24px minmax(60px,1fr) 24px auto;justify-items:center;align-items:center;padding:4px 5px 5px;border-right:1px solid #edf0f2}
.weather-ops-zone:last-child{border-right:0}
.weather-ops-zone h3{margin:0;font-size:13px;font-weight:500;letter-spacing:.01em;color:#171d22;align-self:end}
.weather-ops-icon{width:76px;height:66px;display:grid;place-items:center;align-self:end}
.wx-symbol{width:72px;height:72px;display:block;overflow:visible;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08))}
.weather-ops-range{display:flex;align-items:center;gap:4px;color:#4d5257;font-size:20px;line-height:1}
.weather-ops-range strong{font-size:20px;font-weight:500;letter-spacing:-.03em}.weather-ops-range span{font-size:14px;color:#8a8f94}
.weather-ops-details{width:100%;display:grid;gap:3px;align-self:end;padding:5px 3px 0;font-size:7.5px;line-height:1.08;color:#171d22}
.weather-ops-details>div{display:flex;align-items:baseline;gap:4px;white-space:nowrap;min-width:0}
.weather-ops-details b{font-size:7.3px;font-weight:600}.weather-ops-details span{font-size:7.3px;overflow:hidden;text-overflow:ellipsis}
.weather-loading,.weather-error{height:100%;display:grid;place-items:center;font-size:10px;color:var(--muted);text-align:center;padding:12px}

@media(min-width:1450px){
  .weather-ops-zone h3{font-size:14px}.weather-ops-icon{width:86px;height:74px}.wx-symbol{width:82px;height:82px}
  .weather-ops-range strong{font-size:22px}.weather-ops-details b,.weather-ops-details span{font-size:8px}
}

@media(max-width:1100px){
  .weather-panel{height:250px}.weather-head{height:48px!important}.weather-ops-grid{gap:4px}
  .weather-ops-zone{grid-template-rows:25px minmax(70px,1fr) 27px auto;padding:4px 3px}
  .weather-ops-zone h3{font-size:13px}.weather-ops-icon{width:78px;height:70px}.wx-symbol{width:76px;height:76px}
  .weather-ops-range strong{font-size:20px}.weather-ops-details b,.weather-ops-details span{font-size:7.5px}
}

@media print{
  .weather-panel{grid-template-rows:8mm minmax(0,1fr)!important}
  .weather-head{height:8mm!important;align-items:flex-start!important}.weather-head h2{font-size:7px!important}.weather-head p{font-size:4.2px!important}
  .weather-updated{min-width:25mm!important}.weather-updated b{font-size:4.4px!important}.weather-updated span{font-size:3.8px!important}
  .weather-content{padding:0!important}.weather-ops-grid{gap:1mm!important}.weather-ops-zone{grid-template-rows:5mm minmax(12mm,1fr) 5mm auto!important;padding:.5mm!important;border-right:.2mm solid #edf0f2!important}
  .weather-ops-zone h3{font-size:5.5px!important}.weather-ops-icon{width:15mm!important;height:13mm!important}.wx-symbol{width:14mm!important;height:14mm!important;filter:none!important}
  .weather-ops-range{gap:.7mm!important}.weather-ops-range strong{font-size:7px!important}.weather-ops-range span{font-size:5px!important}
  .weather-ops-details{gap:.6mm!important;padding:.8mm 0 0!important}.weather-ops-details>div{gap:.5mm!important}.weather-ops-details b,.weather-ops-details span{font-size:3.8px!important}
}

/* V3.5 - selector Incidencias / Radar MARN */
.map-panel-head{overflow:visible}.map-head-tools{display:flex;align-items:center;gap:7px;min-width:0}.map-mode-toggle{display:flex;align-items:center;padding:2px;background:#edf2f5;border:1px solid #dbe3e9;border-radius:8px;flex-shrink:0}.map-mode-toggle button{border:0;background:transparent;color:#5f6d79;font:700 9px/1.2 Inter,system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em;padding:5px 8px;border-radius:6px;cursor:pointer;white-space:nowrap}.map-mode-toggle button.active{background:#fff;color:#143e66;box-shadow:0 1px 4px rgba(21,43,60,.15)}.radar-map-status .radar-source{background:#e5f7fb;color:#08798c;font-weight:800}.radar-time-label{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:900;background:rgba(11,25,36,.88);color:#fff;border:1px solid rgba(255,255,255,.42);border-radius:999px;padding:6px 12px;font-size:10px;font-weight:800;letter-spacing:.07em;box-shadow:0 4px 12px rgba(0,0,0,.18);pointer-events:none;white-space:nowrap}.radar-time-label.error{background:rgba(150,40,40,.92)}
@media(max-width:1250px){.map-mode-toggle button{padding:5px 6px;font-size:8px}.map-head-tools{gap:4px}}
@media(max-width:700px){.map-panel-head{height:auto!important;min-height:52px}.map-head-tools{align-items:flex-end;flex-direction:column}.map-mode-toggle{order:2}}
@media print{.map-mode-toggle{display:none!important}.radar-time-label{top:2mm!important;padding:1mm 2mm!important;font-size:5.5px!important;box-shadow:none!important}}


/* ===== V3.6 · Identidad KC Platforms ===== */
.brand-lockup{display:grid;gap:1px;line-height:1;flex-shrink:0}.brand-lockup .brand{font-weight:800;font-size:20px;letter-spacing:.01em}.kc-solution-link{font-size:8px;line-height:1.15;letter-spacing:.055em;text-transform:uppercase;color:rgba(255,255,255,.68);text-decoration:none;white-space:nowrap}.kc-solution-link strong{font-weight:800;color:#fff}.kc-solution-link:hover{color:#fff}.dashboard-solution{margin-top:2px;font-size:8px;line-height:1.05;letter-spacing:.045em;color:#82909b}.dashboard-solution strong{color:#143e66}.login-solution{margin:-2px 0 3px;padding:9px 10px;border:1px solid #e2e8ed;background:#f8fafb;border-radius:8px;text-align:center;font-size:10px;color:#63717d;line-height:1.35}.login-solution span{font-size:9px;text-transform:uppercase;letter-spacing:.06em}.login-solution strong{color:#143e66}.topbar nav{min-width:0}
@media(max-width:1050px){.kc-solution-link{display:none}}
@media print{.dashboard-solution{font-size:4.7px!important;margin-top:.35mm!important;color:#5f6b75!important}.dashboard-solution strong{color:#143e66!important}}

/* ===== KC Platforms · topbar actual (V3.13 CLEAN) ===== */
.topbar-account-cluster{display:flex;align-items:center;gap:12px;margin-left:auto}
.kc-platforms-credit{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:3px 8px 3px 5px;border:1px solid rgba(255,170,51,.22);border-radius:8px;background:rgba(255,170,51,.045);color:#dfe7ef;text-decoration:none;pointer-events:auto;transition:.16s ease;white-space:nowrap}
.kc-platforms-credit:hover{border-color:rgba(255,170,51,.48);background:rgba(255,170,51,.10);color:#fff;box-shadow:0 0 10px rgba(255,170,51,.14)}
.kc-platforms-credit:focus-visible{outline:2px solid #ffaa33;outline-offset:2px}
.kc-platforms-logo{width:22px;height:22px;flex:0 0 22px;display:block}
.kc-platforms-credit-copy{display:flex;flex-direction:column;line-height:1.05}
.kc-platforms-credit-copy small{color:#91a2b5;font-size:.44rem;letter-spacing:.55px}
.kc-platforms-credit-copy b{color:#ffcc66;font-size:.67rem;letter-spacing:.8px;font-weight:700}
@media(max-width:1050px){.kc-platforms-credit-topbar .kc-platforms-credit-copy small{display:none}.kc-platforms-credit-topbar{padding-right:6px}.kc-platforms-credit-topbar .kc-platforms-logo{width:20px;height:20px;flex-basis:20px}}
@media(max-width:760px){.kc-platforms-credit-topbar{display:none}}
@media print{.kc-platforms-credit-topbar{display:none!important}}

/* ===== V3.13.2 · Exportación PDF / PNG directa ===== */
.report-export-actions{display:flex;align-items:center;gap:6px}
.report-export-actions .report-btn{min-width:64px;font-weight:700}
.report-export-actions .report-btn[disabled]{opacity:.55;cursor:wait}
.report-capture-overlay{position:fixed;inset:0;z-index:99999;background:rgba(9,26,40,.72);backdrop-filter:blur(2px);display:grid;place-items:center;color:#fff;font-size:14px;font-weight:800;letter-spacing:.04em}
.report-capture-overlay>div{padding:15px 20px;border:1px solid rgba(255,255,255,.2);border-radius:10px;background:rgba(12,38,58,.9);box-shadow:0 12px 38px rgba(0,0,0,.25)}

/* El modo de captura reproduce una hoja horizontal estable en pantalla antes
   de rasterizarla. Evita depender del viewport o de las reglas responsive. */
body.report-capture{overflow:hidden!important;background:#fff!important}
body.report-capture .topbar{display:none!important}
body.report-capture .page.dashboard-executive{position:fixed!important;left:0!important;top:0!important;width:1600px!important;height:1036px!important;min-height:0!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#fff!important;z-index:99990!important}
body.report-capture .executive-dashboard{display:grid!important;width:1600px!important;height:1036px!important;max-width:none!important;margin:0!important;grid-template-rows:46px 92px 576px 288px!important;gap:11px!important;overflow:hidden!important}
body.report-capture .dash-heading{display:flex!important;margin:0!important;padding:0 6px!important;min-height:0!important}
body.report-capture .dash-heading-actions .icon-btn,body.report-capture .report-export-actions{display:none!important}
body.report-capture .executive-kpis{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:11px!important;margin:0!important;min-height:0!important}
body.report-capture .executive-main-grid{display:grid!important;grid-template-columns:minmax(0,1.52fr) minmax(0,.78fr)!important;gap:11px!important;margin:0!important;min-height:0!important;height:auto!important}
body.report-capture .executive-side-stack{display:grid!important;grid-template-columns:1fr!important;grid-template-rows:1fr 1fr!important;gap:11px!important;height:auto!important;min-height:0!important}
body.report-capture .executive-bottom-grid{display:grid!important;grid-template-columns:minmax(0,1.62fr) minmax(0,.78fr)!important;gap:11px!important;margin:0!important;height:auto!important;min-height:0!important}
body.report-capture .map-panel,body.report-capture .compact-panel,body.report-capture .monthly-panel,body.report-capture .weather-panel{height:auto!important;margin:0!important;min-height:0!important}
body.report-capture .map-panel{display:grid!important;grid-template-rows:42px minmax(0,1fr)!important}
body.report-capture .compact-panel{display:grid!important;grid-template-rows:42px minmax(0,1fr)!important}
body.report-capture .monthly-panel{display:grid!important;grid-template-rows:42px minmax(0,1fr)!important}
body.report-capture .weather-panel{display:grid!important;grid-template-rows:46px minmax(0,1fr)!important}
body.report-capture .map-panel #mapa,body.report-capture .compact-panel .chart,body.report-capture .monthly-panel .chart{height:100%!important;min-height:0!important}
body.report-capture .leaflet-control-container,body.report-capture .map-mode-toggle{display:none!important}
body.report-capture canvas{max-width:100%!important}
body.report-capture .leaflet-container{overflow:hidden!important}
@media(max-width:1100px){.report-export-actions{display:flex}.report-export-actions .report-btn{display:inline-flex!important}}
@media print{.report-export-actions{display:none!important}}

/* ===== V3.13.4 · Doble comparativo mensual + mapa rasterizado para reporte ===== */
.map-report-stage{position:relative;min-height:0;height:100%;overflow:hidden;border-radius:8px;background:#eef2f5}
.map-report-stage #mapa{height:100%!important;min-height:0!important;border-radius:8px}
.report-map-snapshot{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:fill;object-position:center;border:0;border-radius:8px;background:#eef2f5}
body.report-map-snapshotting .leaflet-control-container{display:none!important}
body.report-capture .map-report-stage #mapa{visibility:hidden!important}
body.report-capture .report-map-snapshot.ready{display:block!important}

.monthly-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;min-height:0;height:100%}
.monthly-split>.monthly-panel{height:100%;min-width:0;margin:0}
.monthly-split .panel-head h2{font-size:12px}
.monthly-split .panel-head p{font-size:9px}

body.report-capture .monthly-split{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:11px!important;height:100%!important;min-height:0!important}
body.report-capture .monthly-split>.monthly-panel{display:grid!important;grid-template-rows:42px minmax(0,1fr)!important;height:100%!important;min-height:0!important;margin:0!important}
body.report-capture .monthly-split .panel-head h2{font-size:12px!important}
body.report-capture .monthly-split .panel-head p{font-size:8px!important}
body.report-capture .monthly-split .chart{height:100%!important;min-height:0!important}

@media(max-width:1100px){
  .monthly-split{grid-template-columns:1fr 1fr;gap:10px}
  .executive-bottom-grid .monthly-split .monthly-panel{height:300px}
}
@media(max-width:700px){
  .monthly-split{grid-template-columns:1fr}
  .executive-bottom-grid .monthly-split .monthly-panel{height:300px}
}

@media print{
  .map-report-stage{height:100%!important;min-height:0!important}
  .map-report-stage #mapa{height:100%!important}
  .monthly-split{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:2mm!important;height:100%!important;min-height:0!important}
  .monthly-split>.monthly-panel{display:grid!important;grid-template-rows:7mm minmax(0,1fr)!important;height:100%!important;min-height:0!important;margin:0!important}
  .monthly-split .panel-head h2{font-size:6.2px!important}
  .monthly-split .panel-head p{font-size:4.5px!important}
  .monthly-split .chart{height:100%!important;min-height:0!important}
}

/* [2026-10-01] selector de mes del panel 'Mes en curso' */
.daily-month-select{flex-shrink:0;max-width:170px;border:1px solid var(--line);background:#fff;border-radius:7px;font:600 10px/1.2 Inter,system-ui,sans-serif;color:#33414d;padding:4px 6px;cursor:pointer}
@media print{.daily-month-select{display:none!important}}
body.report-capture .daily-month-select{display:none!important}
