:root{
    --navy:#061b35;
    --navy-2:#082542;
    --navy-3:#102b47;
    --red:#b40718;
    --red-2:#d01124;
    --gray:#6b7280;
    --slate:#273443;
    --slate-2:#334155;
    --light:#f3f5f8;
    --white:#fff;
    --text:#111827;
    --muted:#6b7280;
    --border:#d7dde6;
    --shadow:0 12px 32px rgba(6,27,53,.14);
    --radius:16px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--light);color:var(--text)}
a{color:inherit;text-decoration:none}.app-body{overflow-x:hidden}.app-shell{display:flex;min-height:100vh}.sidebar{width:285px;background:linear-gradient(180deg,#061b35 0%,#082542 60%,#06172c 100%);color:#fff;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:50;box-shadow:8px 0 28px rgba(0,0,0,.22)}.brand{height:116px;display:flex;gap:15px;align-items:center;padding:24px 26px;border-bottom:1px solid rgba(255,255,255,.07)}.brand-mark{width:48px;height:48px;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;transform:skewY(-18deg)}.brand-mark span{background:var(--red-2);border-radius:4px 4px 0 0}.brand-mark span:nth-child(1){height:36px;align-self:end}.brand-mark span:nth-child(2){height:48px}.brand-mark span:nth-child(3){height:28px;align-self:end}.brand-title{font-size:31px;font-weight:900;letter-spacing:.5px;line-height:1}.brand-subtitle{font-size:12px;color:#dce5ef;font-weight:600;line-height:1.22;margin-top:5px}.sidebar-nav{padding:24px 10px;display:grid;gap:8px;flex:1}.sidebar-nav a{display:flex;align-items:center;gap:14px;padding:15px 22px;border-radius:10px;color:#f5f7fb;font-weight:700;transition:.15s ease}.sidebar-nav a i{width:23px;font-size:18px}.sidebar-nav a:hover{background:rgba(255,255,255,.08);transform:translateX(2px)}.sidebar-nav a.active{background:linear-gradient(90deg,var(--red) 0%,#901020 100%);box-shadow:0 8px 20px rgba(180,7,24,.28)}.sidebar-user{margin:12px;display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.11);border-radius:14px;padding:12px}.avatar{width:40px;height:40px;border-radius:50%;background:#31455f;display:grid;place-items:center}.sidebar-user-text{display:grid;line-height:1.2;flex:1}.sidebar-user-text strong{font-size:14px}.sidebar-user-text small{color:#ced7e4}.logout{color:#fff;opacity:.9}.main{margin-left:285px;min-height:100vh;width:calc(100% - 285px)}.topbar{height:84px;background:linear-gradient(90deg,#06172c 0%,#061b35 55%,#071d38 100%);color:#fff;display:flex;align-items:center;gap:18px;padding:0 28px;position:sticky;top:0;z-index:20;box-shadow:0 8px 20px rgba(0,0,0,.18)}.menu-toggle{width:46px;height:46px;border:0;border-radius:12px;background:rgba(255,255,255,.12);color:#fff;font-size:18px;cursor:pointer}.topbar h1{margin:0;text-transform:uppercase;font-size:18px;letter-spacing:.3px}.topbar p{margin:4px 0 0;color:#cdd7e4;font-size:13px}.topbar-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.content{padding:24px 28px 34px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:10px;padding:11px 16px;font-weight:800;cursor:pointer;transition:.16s ease;background:#fff;color:var(--navy);border:1px solid var(--border)}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,0,0,.1)}.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn.danger{background:linear-gradient(135deg,var(--red),var(--red-2));color:#fff;border-color:transparent}.btn.gray{background:var(--slate);color:#fff;border-color:transparent}.btn.ghost{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.18)}.btn.sm{padding:7px 10px;font-size:12px;border-radius:8px}.grid{display:grid;gap:18px}.stats{grid-template-columns:repeat(5,minmax(180px,1fr));margin-bottom:18px}.card{background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card{padding:18px;display:flex;align-items:center;gap:14px;min-height:112px}.stat-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:#fff;font-size:23px;box-shadow:0 10px 22px rgba(6,27,53,.24)}.stat-icon.red{background:var(--red)}.stat-icon.gray{background:#4b5563}.stat-label{font-size:12px;text-transform:uppercase;color:#6b7280;font-weight:900}.stat-value{font-size:28px;font-weight:900;margin-top:5px}.stat-sub{font-size:12px;color:#6b7280}.panel{padding:20px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-title h2{margin:0;font-size:20px;color:var(--navy)}.panel-title p{margin:4px 0 0;color:var(--muted);font-size:13px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:separate;border-spacing:0;min-width:920px}.table th{background:#eef2f7;color:#273443;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.3px;padding:13px;border-bottom:1px solid var(--border)}.table td{padding:13px;border-bottom:1px solid #e8edf3;vertical-align:middle;font-size:14px}.table tr:hover td{background:#f8fafc}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;background:#e5e7eb;color:#111827}.badge.red{background:#fee2e2;color:#991b1b}.badge.blue{background:#dbeafe;color:#1e40af}.badge.gray{background:#e5e7eb;color:#374151}.progress{height:9px;background:#e5e7eb;border-radius:999px;overflow:hidden;min-width:90px}.progress span{display:block;height:100%;background:var(--red);border-radius:inherit}.progress.blue span{background:#1d4ed8}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.form-field{display:grid;gap:7px}.form-field.full{grid-column:1/-1}.form-field label{font-weight:800;color:#1f2937;font-size:13px}.form-control,select,textarea,input[type="text"],input[type="number"],input[type="date"],input[type="email"],input[type="password"],input[type="file"],input[type="color"]{width:100%;border:1px solid var(--border);border-radius:11px;padding:11px 12px;background:#fff;color:#111827;outline:none;font:inherit}.form-control:focus,select:focus,textarea:focus,input:focus{border-color:#94a3b8;box-shadow:0 0 0 4px rgba(8,37,66,.08)}textarea{min-height:100px;resize:vertical}.actions{display:flex;gap:8px;flex-wrap:wrap}.alert{padding:12px 14px;border-radius:12px;margin-bottom:16px;font-weight:700;border:1px solid}.alert.success{background:#dcfce7;color:#166534;border-color:#bbf7d0}.alert.error{background:#fee2e2;color:#991b1b;border-color:#fecaca}.alert.info{background:#dbeafe;color:#1e40af;border-color:#bfdbfe}.filters{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr)) auto;gap:12px;align-items:end;background:#243447;color:#fff;border-radius:16px 16px 0 0;padding:16px}.filters label{display:block;font-size:12px;font-weight:800;margin-bottom:6px;color:#f8fafc}.filters select,.filters input{background:#192536;color:#fff;border-color:#46576a}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 430px;gap:18px}.map-card{overflow:hidden}.map{height:670px;background:#0e1f32;position:relative}.map-page .content{padding:20px}.map-detail{background:#263342;color:#fff;border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.detail-header{padding:22px;background:linear-gradient(135deg,#263342,#1d2937);display:flex;gap:14px;align-items:flex-start}.detail-icon{width:54px;height:54px;border-radius:12px;background:linear-gradient(135deg,var(--red),#7f0d1a);display:grid;place-items:center;font-size:24px}.detail-header h2{font-size:20px;line-height:1.15;margin:0}.detail-header .badge{margin-top:8px}.detail-tabs{display:flex;border-bottom:1px solid rgba(255,255,255,.1);padding:0 16px}.detail-tabs button{background:transparent;color:#cbd5e1;border:none;padding:14px 10px;font-weight:800;cursor:pointer;border-bottom:3px solid transparent}.detail-tabs button.active{color:#fff;border-color:var(--red-2)}.detail-body{padding:18px}.detail-list{display:grid;gap:13px}.detail-item{display:grid;grid-template-columns:25px 1fr auto;gap:9px;align-items:center;color:#dbe3ee;font-size:14px}.detail-item i{color:#a8b6c7}.detail-item strong{color:#fff;text-align:right}.legend{position:absolute;bottom:28px;left:18px;background:rgba(36,52,71,.92);color:#fff;padding:16px;border-radius:12px;border:1px solid rgba(255,255,255,.18);box-shadow:0 10px 24px rgba(0,0,0,.22);z-index:5}.legend h4{margin:0 0 10px}.legend div{display:flex;gap:8px;align-items:center;margin:7px 0}.dot{width:12px;height:12px;border-radius:50%;display:inline-block;background:var(--red)}.dot.blue{background:#1d4ed8}.dot.gray{background:#9ca3af}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,#15395c 0%,#071d38 38%,#050d1a 100%);padding:20px}.login-card{width:min(440px,100%);background:#fff;border-radius:24px;padding:32px;box-shadow:0 30px 80px rgba(0,0,0,.38)}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:24px}.login-brand .brand-mark{width:44px;height:44px}.login-brand h1{margin:0;font-size:30px;color:var(--navy)}.login-brand p{margin:2px 0 0;color:var(--muted);font-weight:700}.login-card .btn{width:100%;margin-top:10px}.mini-muted{font-size:12px;color:var(--muted)}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.media-card{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#fff}.media-thumb{height:130px;background:#e5e7eb;display:grid;place-items:center;color:#6b7280}.media-thumb img,.media-thumb video{width:100%;height:100%;object-fit:cover}.media-card .p{padding:12px}.tabs-inline{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.tabs-inline a{padding:10px 13px;border-radius:10px;background:#e5e7eb;font-weight:800}.tabs-inline a.active{background:var(--navy);color:#fff}.empty{padding:28px;text-align:center;color:#6b7280;border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc}.ol-popup{position:absolute;background:white;box-shadow:0 8px 22px rgba(0,0,0,.24);padding:13px;border-radius:12px;border:1px solid #d9e1ea;bottom:12px;left:-50px;min-width:260px}.ol-popup:after{content:"";position:absolute;top:100%;left:48px;border-width:10px;border-style:solid;border-color:white transparent transparent transparent}.ol-popup h3{margin:0 0 6px;color:var(--navy);font-size:15px}.ol-popup p{margin:0;color:#4b5563;font-size:13px}.map-card .ol-control button{background:var(--navy)!important}.responsive-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.search-box{max-width:360px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.color-pill{display:inline-flex;width:28px;height:16px;border-radius:20px;border:1px solid #cbd5e1;vertical-align:middle}.hide-mobile{display:inline-flex}
@media(max-width:1280px){.stats{grid-template-columns:repeat(3,1fr)}.map-layout{grid-template-columns:1fr}.map-detail{min-height:auto}.map{height:600px}}@media(max-width:920px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.stats,.form-grid,.form-grid.three,.form-grid.four,.filters,.two-col{grid-template-columns:1fr}.topbar{height:auto;padding:16px;align-items:flex-start}.topbar-actions{display:none}.content{padding:16px}.map{height:520px}.hide-mobile{display:none}} 

/* Ajustes producción: menú lateral colapsable y accesos rápidos sin bloque de alcance */
.quick-actions-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}.app-body.sidebar-collapsed .sidebar{width:86px}.app-body.sidebar-collapsed .brand{height:86px;justify-content:center;padding:18px 12px}.app-body.sidebar-collapsed .brand>div:last-child,.app-body.sidebar-collapsed .sidebar-nav a span,.app-body.sidebar-collapsed .sidebar-user-text{display:none}.app-body.sidebar-collapsed .brand-mark{width:42px;height:42px}.app-body.sidebar-collapsed .sidebar-nav{padding:18px 10px}.app-body.sidebar-collapsed .sidebar-nav a{justify-content:center;padding:15px 10px}.app-body.sidebar-collapsed .sidebar-nav a i{width:auto}.app-body.sidebar-collapsed .sidebar-user{justify-content:center;padding:10px;margin:10px}.app-body.sidebar-collapsed .logout{display:none}.app-body.sidebar-collapsed .main{margin-left:86px;width:calc(100% - 86px)}.sidebar,.main{transition:width .2s ease,margin-left .2s ease,transform .2s ease}.sidebar-mobile-open::before{content:"";position:fixed;inset:0;background:rgba(2,8,23,.52);z-index:45}@media(max-width:1280px){.quick-actions-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}}@media(max-width:920px){.quick-actions-grid{grid-template-columns:1fr}.app-body.sidebar-collapsed .sidebar{width:285px}.app-body.sidebar-collapsed .main{margin-left:0;width:100%}.app-body.sidebar-collapsed .brand>div:last-child,.app-body.sidebar-collapsed .sidebar-nav a span,.app-body.sidebar-collapsed .sidebar-user-text{display:block}.app-body.sidebar-collapsed .sidebar-nav a{justify-content:flex-start;padding:15px 22px}.app-body.sidebar-collapsed .logout{display:inline-flex}.sidebar.open{box-shadow:14px 0 34px rgba(0,0,0,.35)}}


/* Módulos de catálogos y filtros relacionados */
.catalog-filter{display:grid;grid-template-columns:1.2fr repeat(4,minmax(160px,1fr)) auto;gap:12px;align-items:end;margin-bottom:16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px}.catalog-filter.search-only{grid-template-columns:minmax(260px,1fr) auto}.align-end{align-self:end}.catalog-filter .actions{min-height:44px;align-items:center}.sidebar-nav{padding-top:18px;gap:6px}.sidebar-nav a{padding-top:12px;padding-bottom:12px}.app-body.sidebar-collapsed .sidebar-nav a{padding-top:13px;padding-bottom:13px}@media(max-width:1280px){.catalog-filter{grid-template-columns:repeat(2,minmax(180px,1fr))}.catalog-filter .actions{grid-column:1/-1}}@media(max-width:920px){.catalog-filter{grid-template-columns:1fr}}

.basemap-control{position:absolute;top:18px;right:18px;z-index:7;background:rgba(36,52,71,.94);color:#fff;padding:12px;border-radius:14px;border:1px solid rgba(255,255,255,.18);box-shadow:0 12px 28px rgba(0,0,0,.24);min-width:230px;backdrop-filter:blur(6px)}.basemap-control label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:900;margin-bottom:7px;text-transform:uppercase;letter-spacing:.25px;color:#f8fafc}.basemap-control select{width:100%;background:#fff;color:#111827;border:1px solid #d7dde6;border-radius:10px;padding:9px 10px;font-size:13px;font-weight:800;outline:none}.basemap-control select:focus{border-color:#94a3b8;box-shadow:0 0 0 4px rgba(255,255,255,.13)}@media(max-width:720px){.basemap-control{top:12px;right:12px;left:12px;min-width:0}.legend{bottom:18px;left:12px;right:12px}}

/* Ajustes visor: apartados, galería y vista ampliada */
.detail-tabs{gap:4px;overflow-x:auto}.detail-tabs button{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.detail-section-title{display:flex;align-items:center;gap:9px;font-weight:900;color:#fff;margin-bottom:14px;text-transform:uppercase;font-size:13px;letter-spacing:.25px}.progress-row{margin-bottom:15px;color:#dbe3ee}.detail-note,.detail-help{margin:14px 0 0;color:#cbd5e1;font-size:13px;line-height:1.45}.detail-empty{background:rgba(255,255,255,.05)!important;color:#dbe3ee!important;border-color:rgba(255,255,255,.12)!important}.investment-box{background:linear-gradient(135deg,#b40718,#7f0d1a);border-radius:16px;padding:18px;box-shadow:0 12px 26px rgba(0,0,0,.24)}.investment-box span{display:block;text-transform:uppercase;font-size:12px;font-weight:900;color:#ffe4e6}.investment-box strong{display:block;margin-top:8px;font-size:27px;color:#fff}.detail-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.detail-gallery-item{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:#111827;padding:0;cursor:pointer;min-height:118px;color:#fff;text-align:left}.detail-gallery-item img,.detail-gallery-item video{width:100%;height:118px;object-fit:cover;display:block;transition:transform .18s ease}.detail-gallery-item:hover img,.detail-gallery-item:hover video{transform:scale(1.04)}.detail-gallery-item span{position:absolute;left:0;right:0;bottom:0;padding:18px 10px 9px;background:linear-gradient(transparent,rgba(0,0,0,.82));font-size:12px;font-weight:800}.media-thumb .js-media-preview,.media-card .js-media-preview{display:block;width:100%;height:100%;border:0;background:transparent;padding:0;cursor:pointer}.media-thumb img{cursor:pointer}.media-lightbox{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:28px}.media-lightbox.open{display:flex}.media-lightbox-backdrop{position:absolute;inset:0;background:rgba(2,8,23,.82);backdrop-filter:blur(5px)}.media-lightbox-dialog{position:relative;width:min(1100px,96vw);max-height:92vh;background:#0f172a;border:1px solid rgba(255,255,255,.18);border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.55);overflow:hidden}.media-lightbox-title{padding:14px 58px 14px 18px;color:#fff;font-weight:900;background:#1f2937;border-bottom:1px solid rgba(255,255,255,.12)}.media-lightbox-content{display:grid;place-items:center;background:#020617;max-height:calc(92vh - 54px)}.media-lightbox-content img,.media-lightbox-content video{display:block;max-width:100%;max-height:calc(92vh - 54px);object-fit:contain}.media-lightbox-close{position:absolute;top:9px;right:10px;z-index:2;width:38px;height:38px;border:0;border-radius:50%;background:#b40718;color:#fff;cursor:pointer;font-size:18px}.media-lightbox-open{overflow:hidden}@media(max-width:720px){.detail-gallery{grid-template-columns:1fr}.media-lightbox{padding:12px}.media-lightbox-dialog{width:98vw;border-radius:16px}.media-lightbox-title{font-size:13px}}

/* v1.0.7: visor sin barra horizontal en apartados */
.map-detail{overflow:hidden}.detail-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;overflow:visible}.detail-tabs button{min-width:0;justify-content:center;padding:13px 5px;font-size:13px;white-space:nowrap}.detail-tabs button i{font-size:13px}@media(max-width:520px){.detail-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-tabs button{font-size:12px}}


/* v1.0.8: colores automáticos para capas GeoJSON */
.auto-color-box{min-height:44px;border:1px dashed #cbd5e1;background:#f8fafc;border-radius:12px;padding:9px 11px;display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center}.auto-color-box strong{font-size:13px;color:#111827}.auto-color-box small{display:block;color:#6b7280;font-size:11px;line-height:1.25;margin-top:2px}.auto-color-dots{display:flex;align-items:center}.auto-color-dots i{width:15px;height:15px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 5px rgba(15,23,42,.22);margin-left:-4px}.auto-color-dots i:first-child{margin-left:0}.auto-color-dots i:nth-child(1){background:#e11d48}.auto-color-dots i:nth-child(2){background:#2563eb}.auto-color-dots i:nth-child(3){background:#16a34a}.auto-color-dots i:nth-child(4){background:#f59e0b}.popup-color-dot{display:inline-block;width:11px;height:11px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35);margin-right:7px;vertical-align:-1px}.color-pill{box-shadow:0 1px 5px rgba(15,23,42,.22)}

/* v1.0.9 - Leyenda de capas y avance físico por paquete */
.project-layer-legend{min-width:290px;max-width:360px;max-height:310px;overflow-y:auto}.project-layer-legend .legend-empty{font-size:13px;color:#dbe3ee;line-height:1.35}.legend-layer{display:grid!important;grid-template-columns:16px 1fr;align-items:flex-start;gap:9px;margin:10px 0!important}.legend-layer-dot{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 7px rgba(0,0,0,.35);margin-top:2px;display:inline-block}.legend-layer strong{display:block;font-size:13px;line-height:1.2;color:#fff}.legend-layer small{display:block;margin-top:3px;color:#dbe3ee;font-size:12px;line-height:1.25}.detail-layer-list{display:grid;gap:9px}.detail-layer-row{display:grid;grid-template-columns:17px 1fr;gap:10px;align-items:flex-start;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.11);border-radius:12px;padding:10px}.detail-layer-row strong{display:block;color:#fff;font-size:13px;line-height:1.2}.detail-layer-row small{display:block;color:#cbd5e1;font-size:12px;margin-top:4px}.popup-package{display:flex;align-items:center;gap:7px;color:#111827;margin:7px 0 10px;font-size:14px}.popup-kpis{display:grid;gap:7px}.popup-kpis div{display:flex;justify-content:space-between;gap:14px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:9px;padding:8px 10px}.popup-kpis span{color:#64748b;font-size:12px;font-weight:800}.popup-kpis strong{color:#111827;font-size:12px}.ol-popup{min-width:310px;max-width:360px}.popup-color-dot{flex:0 0 auto}
@media(max-width:720px){.project-layer-legend{max-height:220px;max-width:none;min-width:0}.ol-popup{min-width:260px;max-width:300px}}

/* v1.0.11 - Formularios públicos */
.public-form-page{min-height:100vh;background:linear-gradient(135deg,#061b35 0%,#102b47 48%,#7f0d1a 100%);padding:26px;color:#111827}.public-form-shell{width:min(1120px,100%);margin:0 auto}.public-form-hero{display:flex;align-items:center;gap:16px;color:#fff;margin:0 0 20px}.public-form-hero .brand-mark{width:50px;height:50px}.public-form-hero h1{margin:0;font-size:25px;text-transform:uppercase;letter-spacing:.3px}.public-form-hero p{margin:5px 0 0;color:#dbe3ee;font-weight:700}.public-form-card{box-shadow:0 22px 60px rgba(2,8,23,.28)}.form-section-title{display:flex;align-items:center;gap:9px;margin:22px 0 13px;padding:10px 12px;border-radius:12px;background:#eef2f7;color:#061b35;font-weight:900;text-transform:uppercase;font-size:13px;letter-spacing:.25px}.readonly-project-box{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 4px}.readonly-project-box div{border:1px solid #e2e8f0;background:#f8fafc;border-radius:13px;padding:12px}.readonly-project-box span{display:block;font-size:11px;text-transform:uppercase;color:#64748b;font-weight:900;margin-bottom:5px}.readonly-project-box strong{display:block;color:#111827;font-size:14px}.public-form-actions{display:flex;justify-content:flex-end;margin-top:20px;padding-top:16px;border-top:1px solid #e5e7eb}.monthly-active-box{border-radius:16px;background:linear-gradient(135deg,#061b35,#0b4aa2);color:#fff;padding:20px;box-shadow:0 14px 30px rgba(6,27,53,.18)}.monthly-active-box span{display:block;text-transform:uppercase;font-size:12px;color:#dbeafe;font-weight:900}.monthly-active-box strong{display:block;font-size:30px;margin:6px 0}.monthly-active-box small{color:#dbe3ee;font-weight:700}.share-link-box{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}@media(max-width:920px){.public-form-page{padding:16px}.readonly-project-box{grid-template-columns:1fr}.share-link-box{grid-template-columns:1fr}.public-form-hero{align-items:flex-start}.public-form-hero h1{font-size:20px}.public-form-actions{justify-content:stretch}.public-form-actions .btn{width:100%}}

/* v1.0.14 - Componentes de formularios por pasos */
.public-form-titlebar{align-items:flex-start}.public-wizard-steps{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:6px 0 18px}.public-wizard-steps button{border:1px solid #e2e8f0;background:#f8fafc;color:#334155;border-radius:12px;padding:10px 8px;font-weight:900;font-size:11px;line-height:1.15;cursor:pointer;display:grid;place-items:center;gap:6px;min-height:62px}.public-wizard-steps button span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#e2e8f0;color:#061b35;font-size:12px}.public-wizard-steps button.active{background:linear-gradient(135deg,#061b35,#102b47);border-color:#061b35;color:#fff;box-shadow:0 10px 22px rgba(6,27,53,.18)}.public-wizard-steps button.active span{background:#b40718;color:#fff}.public-wizard-panel{display:none}.public-wizard-panel.active{display:block;animation:wizardFade .16s ease}.public-wizard-actions{justify-content:space-between}.public-wizard-actions [data-wizard-next]{margin-left:auto}.public-layer-wrap{display:grid;gap:12px;margin-top:12px}.public-layer-empty{border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc;color:#64748b;font-weight:800;padding:18px;text-align:center;margin-top:12px}.package-progress-card{border:1px solid #e2e8f0;border-left:6px solid var(--layer-color,#b40718);border-radius:15px;background:#fff;box-shadow:0 8px 18px rgba(15,23,42,.06);padding:14px;margin-bottom:12px}.package-progress-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}.package-progress-head strong{display:block;color:#061b35;font-size:15px}.package-progress-head small{display:block;color:#64748b;font-weight:800;margin-top:3px;font-size:12px}.layer-dot{width:15px;height:15px;border-radius:50%;background:var(--layer-color,#b40718);border:2px solid #fff;box-shadow:0 2px 7px rgba(15,23,42,.32);margin-top:3px;flex:0 0 auto}.package-progress-grid{gap:12px}.empty.compact{padding:18px}.public-summary-list{display:grid;gap:10px;margin-top:12px}.summary-item{border:1px solid #e2e8f0;background:#f8fafc;border-radius:13px;padding:12px}.summary-item span{display:block;text-transform:uppercase;font-size:11px;letter-spacing:.25px;color:#64748b;font-weight:900;margin-bottom:5px}.summary-item strong{display:block;color:#111827;font-size:14px;font-weight:800;white-space:pre-wrap;overflow-wrap:anywhere}.summary-group-title{margin:14px 0 2px;padding:10px 12px;border-radius:12px;background:#061b35;color:#fff;font-weight:900;text-transform:uppercase;font-size:12px;letter-spacing:.25px}.form-field small{color:#64748b;font-size:12px;font-weight:700}.public-wizard-panel input[type="file"]{padding:14px;background:#f8fafc;border-style:dashed}@keyframes wizardFade{from{opacity:.35;transform:translateY(4px)}to{opacity:1;transform:none}}@media(max-width:980px){.public-wizard-steps{grid-template-columns:repeat(4,minmax(0,1fr))}.public-wizard-steps button{min-height:56px}.package-progress-grid{grid-template-columns:1fr!important}}@media(max-width:620px){.public-wizard-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.public-wizard-actions{display:grid;grid-template-columns:1fr;gap:10px}.public-wizard-actions .btn{width:100%;margin-left:0!important}.form-grid.three,.form-grid.four{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}}


/* v1.0.16 - Contratistas simplificado: solo nombre y estado */
.sidebar-nav{padding:16px 10px 18px;display:block;gap:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.sidebar-nav::-webkit-scrollbar{width:7px}.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:999px}.nav-section{margin:0 0 13px}.nav-section-title{padding:8px 17px 7px;font-size:10.5px;text-transform:uppercase;letter-spacing:.9px;color:#9fb2c8;font-weight:900;line-height:1.1}.nav-section a{margin:3px 0;padding:11px 17px!important;font-size:13.5px}.nav-section a i{font-size:16px}.app-body.sidebar-collapsed .nav-section-title{display:none}.app-body.sidebar-collapsed .nav-section{margin:0 0 8px}.app-body.sidebar-collapsed .nav-section a{justify-content:center;padding:13px 10px!important}.module-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.module-group-card{border:1px solid #e2e8f0;background:linear-gradient(180deg,#fff 0%,#f8fafc 100%);border-radius:16px;padding:16px;box-shadow:0 8px 18px rgba(15,23,42,.06)}.module-group-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.module-group-head>i{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#061b35;color:#fff;font-size:18px;box-shadow:0 9px 20px rgba(6,27,53,.18)}.module-group-head h3{margin:0;color:#061b35;font-size:17px}.module-group-head p{margin:3px 0 0;color:#64748b;font-size:12.5px;font-weight:700}.module-actions{display:flex;flex-wrap:wrap;gap:9px}.module-actions .btn{padding:9px 12px;font-size:13px}.module-actions .btn.primary,.module-actions .btn.danger,.module-actions .btn.gray{min-width:145px}@media(max-width:1180px){.module-groups{grid-template-columns:1fr}}@media(max-width:920px){.sidebar-nav{padding:16px 10px 18px}.app-body.sidebar-collapsed .nav-section-title{display:block}.app-body.sidebar-collapsed .nav-section a{justify-content:flex-start;padding:11px 17px!important}.module-actions{display:grid;grid-template-columns:1fr}.module-actions .btn{width:100%}}

/* v1.0.20 - Dashboard de inicio */
.dashboard-hero{display:flex;justify-content:space-between;align-items:stretch;gap:22px;padding:24px;margin-bottom:18px;background:linear-gradient(135deg,#061b35 0%,#102b47 62%,#7f0d1a 100%);color:#fff;overflow:hidden;position:relative}.dashboard-hero:after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.08)}.dashboard-hero h2{font-size:30px;margin:7px 0 8px;line-height:1.05}.dashboard-hero p{margin:0;color:#dbe3ee;max-width:760px;font-weight:700}.dashboard-kicker{display:inline-flex;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);font-size:12px;text-transform:uppercase;font-weight:900;letter-spacing:.4px}.dashboard-period{min-width:260px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);border-radius:18px;padding:16px;display:grid;gap:8px;position:relative;z-index:1}.dashboard-period span{font-size:11px;text-transform:uppercase;color:#dbeafe;font-weight:900}.dashboard-period strong{font-size:22px}.dashboard-period small{color:#e2e8f0;font-weight:700}.dashboard-stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))!important}.dashboard-stats-single{grid-template-columns:minmax(240px,360px)!important}.small-money{font-size:20px!important;line-height:1.15}.dashboard-grid-main{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(330px,.75fr);gap:18px}.dashboard-bar-list{display:grid;gap:14px}.dashbar-row{display:grid;gap:7px}.dashbar-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.dashbar-head strong{color:#061b35}.dashbar-head span,.dashbar-row small{color:#64748b;font-size:12px;font-weight:800}.dashbar-track{height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden}.dashbar-track span{display:block;height:100%;background:linear-gradient(90deg,#b40718,#d01124);border-radius:inherit}.dashbar-track.blue span{background:linear-gradient(90deg,#0b4aa2,#2563eb)}.status-dashboard-list{display:grid;gap:10px}.status-dashboard-item{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:11px;border:1px solid #e2e8f0;border-radius:13px;padding:11px;background:#f8fafc}.status-dashboard-item strong{display:block;color:#061b35}.status-dashboard-item small{display:block;color:#64748b;font-weight:800;font-size:12px}.status-dashboard-item b{font-size:21px;color:#061b35}.monthly-evolution-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.month-card{border:1px solid #e2e8f0;background:#fff;border-radius:15px;padding:14px;box-shadow:0 8px 18px rgba(15,23,42,.06);display:grid;gap:10px}.month-card>strong{color:#061b35;font-size:16px}.month-card>span{color:#64748b;font-weight:800;font-size:12px}.mini-progress{display:grid;grid-template-columns:68px 1fr 48px;align-items:center;gap:8px}.mini-progress label{font-size:12px;color:#64748b;font-weight:900}.mini-progress b{text-align:right;font-size:12px;color:#111827}.dashboard-table{min-width:760px}.quick-dashboard-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quick-action{border:1px solid #e2e8f0;border-radius:14px;padding:14px;background:#f8fafc;display:grid;gap:4px;transition:.16s ease}.quick-action:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(15,23,42,.09)}.quick-action i{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#061b35;color:#fff}.quick-action span{font-weight:900;color:#061b35}.quick-action small{color:#64748b;font-weight:800}.recent-report-box{margin-top:18px;border-top:1px solid #e5e7eb;padding-top:14px}.recent-report-box h3{margin:0 0 10px;color:#061b35}.recent-report-item{display:block;border:1px solid #e2e8f0;border-radius:12px;padding:10px;margin-bottom:8px;background:#fff}.recent-report-item strong{display:block;color:#111827}.recent-report-item small{color:#64748b;font-weight:700}.monthly-filter-form{grid-template-columns:repeat(5,minmax(145px,1fr)) auto}.project-monthly-history .month-card .btn{justify-self:start}.color-pill{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:7px;vertical-align:-1px;border:2px solid #fff}
@media(max-width:1180px){.dashboard-grid-main{grid-template-columns:1fr}.monthly-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero{flex-direction:column}.dashboard-period{min-width:0}.quick-dashboard-actions{grid-template-columns:1fr}}
@media(max-width:720px){.dashboard-hero h2{font-size:23px}.monthly-filter-form{grid-template-columns:1fr}.mini-progress{grid-template-columns:1fr}.mini-progress b{text-align:left}.dashboard-stats .stat-card{min-height:auto}.quick-dashboard-actions{grid-template-columns:1fr}}

/* v1.0.25 - Mapa coloreado por sector y capas diferenciadas */
.select-search-input{margin-bottom:7px;background:#f8fafc;border-color:#dbe3ee!important}
.layer-filter-form{grid-template-columns:minmax(220px,1.2fr) minmax(210px,.9fr) minmax(260px,1.2fr) auto}
.layer-filter-form .actions{align-self:end}
@media(max-width:1180px){.layer-filter-form{grid-template-columns:1fr 1fr}.layer-filter-form .actions{grid-column:1/-1}}
@media(max-width:720px){.layer-filter-form{grid-template-columns:1fr}}

/* v1.0.26 - Minibuscador dentro del botón selector */
.mini-search-native{position:absolute!important;left:12px;bottom:8px;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;z-index:-1}
.mini-select{position:relative;width:100%}
.mini-select-button{width:100%;min-height:46px;border:1px solid var(--border);border-radius:11px;background:#fff;color:#111827;padding:11px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;font:inherit;font-weight:800;text-align:left;cursor:pointer;transition:.16s ease}
.mini-select-button:hover{border-color:#94a3b8;box-shadow:0 6px 16px rgba(15,23,42,.07)}
.mini-select.open .mini-select-button,.mini-select-button:focus{border-color:#94a3b8;box-shadow:0 0 0 4px rgba(8,37,66,.08);outline:none}
.mini-select-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;color:#111827}
.mini-select:not(.has-value) .mini-select-text{color:#6b7280;font-weight:700}
.mini-select-button i{color:#64748b;flex:0 0 auto;transition:.16s ease}
.mini-select.open .mini-select-button i{transform:rotate(180deg)}
.mini-select-menu{display:none;position:absolute;z-index:80;left:0;right:0;top:calc(100% + 7px);background:#fff;border:1px solid #dbe3ee;border-radius:14px;box-shadow:0 18px 42px rgba(15,23,42,.20);padding:10px}
.mini-select.open .mini-select-menu{display:block}
.mini-select-search-wrap{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #dbe3ee;border-radius:11px;padding:0 10px;margin-bottom:9px}
.mini-select-search-wrap i{color:#64748b;font-size:13px}
.mini-select-search{border:0!important;box-shadow:none!important;background:transparent!important;padding:10px 0!important;width:100%;font:inherit;font-size:13px;color:#111827;outline:none!important}
.mini-select-options{display:grid;gap:5px;max-height:260px;overflow:auto;padding-right:3px}
.mini-select-option{width:100%;border:0;background:#fff;color:#111827;text-align:left;border-radius:10px;padding:10px 11px;font:inherit;font-size:13px;font-weight:800;cursor:pointer;line-height:1.25}
.mini-select-option:hover{background:#f1f5f9}
.mini-select-option.active{background:#061b35;color:#fff}
.mini-select-option.placeholder{color:#64748b;background:#f8fafc}
.mini-select-empty{padding:14px 10px;text-align:center;color:#64748b;font-weight:800;font-size:13px;border:1px dashed #cbd5e1;border-radius:10px;background:#f8fafc}
.layer-filter-form{grid-template-columns:minmax(220px,1.2fr) minmax(280px,1.4fr) auto}
@media(max-width:1180px){.layer-filter-form{grid-template-columns:1fr 1fr}.layer-filter-form .actions{grid-column:1/-1}}
@media(max-width:720px){.layer-filter-form{grid-template-columns:1fr}.mini-select-menu{position:fixed;left:16px;right:16px;top:auto;bottom:20px;max-height:70vh}.mini-select-options{max-height:48vh}}


/* v1.0.26 - Líneas/multilíneas con borde, hover, etiqueta y popup visual */
.map .ol-layer canvas{transition:filter .18s ease}.ol-popup{min-width:330px;max-width:390px;padding:0!important;border:0!important;border-radius:18px!important;overflow:hidden;background:#ffffff!important;box-shadow:0 22px 55px rgba(6,27,53,.32),0 0 0 1px rgba(255,255,255,.75)!important;transform:translateY(-4px)}.ol-popup:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,#b40718,#0b4aa2,#6b7280)}.ol-popup:after{left:34px!important;border-width:11px!important;border-color:#fff transparent transparent transparent!important}.ol-popup .popup-topline{display:flex;align-items:center;gap:8px;padding:16px 16px 3px;color:#64748b;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.35px}.ol-popup h3{margin:0!important;padding:0 16px 5px;color:#061b35!important;font-size:16px!important;line-height:1.18!important}.popup-package{margin:0!important;padding:6px 16px 10px!important;color:#111827!important;font-size:14px!important;line-height:1.25!important;display:block!important}.popup-package strong{display:block}.popup-kpis{display:grid!important;grid-template-columns:1fr 1fr;gap:9px!important;padding:0 16px 14px!important}.popup-kpis div{display:grid!important;gap:3px!important;background:linear-gradient(180deg,#f8fafc,#eef2f7)!important;border:1px solid #e2e8f0!important;border-radius:12px!important;padding:10px!important}.popup-kpis span{font-size:11px!important;text-transform:uppercase;letter-spacing:.2px;color:#64748b!important;font-weight:900!important}.popup-kpis strong{font-size:15px!important;color:#061b35!important}.popup-progress{height:8px;margin:0 16px 16px;background:#e5e7eb;border-radius:999px;overflow:hidden}.popup-progress span{display:block;height:100%;background:linear-gradient(90deg,#b40718,#e11d48);border-radius:inherit}.popup-color-dot{width:13px!important;height:13px!important;border:2px solid #fff!important;box-shadow:0 2px 8px rgba(15,23,42,.28)!important}.legend.project-layer-legend{backdrop-filter:blur(7px)}
@media(max-width:720px){.ol-popup{min-width:280px!important;max-width:315px!important}.popup-kpis{grid-template-columns:1fr!important}}


/* v1.0.40 - CRUD estable para Catálogos base */
.alert.warning{background:#fef3c7;color:#92400e;border-color:#fde68a}
.btn.warning{background:#f59e0b;color:#fff;border-color:#f59e0b}
.catalog-form-note{display:grid;gap:6px;margin-bottom:16px}
.catalog-form-note strong{color:#061b35}

/* v1.0.42 - Botones Editar de catálogos por POST para no perder el ID en producción */
.inline-form{display:inline-flex;margin:0;padding:0}
.inline-form .btn{white-space:nowrap}

.media-thumb button,.media-edit-current button{border:0;background:transparent;padding:0;width:100%;height:100%;cursor:pointer}.media-edit-current{display:grid;grid-template-columns:180px 1fr;gap:14px;align-items:center;border:1px solid #e2e8f0;background:#f8fafc;border-radius:14px;padding:12px}.media-edit-current button{height:120px;border-radius:12px;overflow:hidden;background:#e5e7eb}.media-edit-current img,.media-edit-current video{width:100%;height:100%;object-fit:cover}@media(max-width:720px){.media-edit-current{grid-template-columns:1fr}.media-edit-current button{height:180px}}

.legend-sector{display:flex;align-items:center;gap:8px;margin:8px 0 10px;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.88);border:1px solid rgba(148,163,184,.35);font-size:12px;color:#0f172a}

.evidence-list{display:grid;gap:12px;margin-top:10px}.evidence-item{border:1px solid #e2e8f0;background:#f8fafc;border-radius:14px;padding:14px}.evidence-grid{grid-template-columns:minmax(220px,1fr) minmax(260px,1.35fr) auto;align-items:start}.evidence-remove-field{min-width:110px}.evidence-add{margin-top:12px}.btn.outline{background:#fff;color:#061b35;border:1px solid #cbd5e1}.btn.outline:hover{background:#f1f5f9}.package-progress-card{border-left-width:8px}.layer-dot{box-shadow:0 0 0 4px rgba(255,255,255,.85),0 2px 10px rgba(15,23,42,.38)}@media(max-width:820px){.evidence-grid{grid-template-columns:1fr}.evidence-remove-field{min-width:0}.evidence-remove-field label{display:none}}
.popup-date{margin-top:10px;font-size:12px;color:#475569;display:flex;gap:6px;align-items:center}

/* Actualización directa MEF */
.mef-progress-wrap{border:1px solid rgba(15,23,42,.10);border-radius:18px;padding:14px;background:#fff}
.mef-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;color:#111827}
.mef-progress-bar{height:12px;background:#eef2f7;border-radius:999px;overflow:hidden}
.mef-progress-bar span{display:block;width:0%;height:100%;background:linear-gradient(90deg,#dc2626,#f97316,#16a34a);transition:width .25s ease}
.mef-log{margin-top:12px;max-height:240px;overflow:auto;background:#0f172a;color:#e5e7eb;border-radius:14px;padding:12px;font-size:12px;line-height:1.45}
.mef-log-line{padding:4px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.mef-log-line.ok{color:#86efac}.mef-log-line.error{color:#fca5a5}.mef-log-line.warn{color:#fde68a}

/* v1.0.67 - Ficha completa del proyecto más visual */
.project-profile{display:grid;gap:18px}.project-hero-card{position:relative;overflow:hidden;border-radius:24px;padding:26px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;background:linear-gradient(135deg,#061b35 0%,#0f2747 55%,#172554 100%);color:#fff;box-shadow:0 24px 60px rgba(6,27,53,.20)}.project-hero-card:before{content:"";position:absolute;inset:auto -90px -120px auto;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,var(--sector-color),transparent 68%);opacity:.28}.project-hero-card:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--sector-color),transparent 28%);opacity:.18;pointer-events:none}.project-hero-main,.project-hero-actions{position:relative;z-index:1}.project-hero-main h1{margin:14px 0 8px;font-size:clamp(25px,3.2vw,42px);line-height:1.05;max-width:980px;letter-spacing:-.7px}.project-hero-subtitle{margin:0 0 14px;color:#dbeafe;font-size:16px;font-weight:800}.project-hero-labels{display:flex;flex-wrap:wrap;gap:9px}.hero-chip{--chip-color:#fff;display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.20);backdrop-filter:blur(7px);font-size:12px;font-weight:900;color:#fff}.hero-chip:not(.cui){box-shadow:inset 3px 0 0 var(--chip-color)}.project-hero-meta{display:flex;flex-wrap:wrap;gap:12px;color:#e2e8f0;font-weight:800}.project-hero-meta span{display:inline-flex;align-items:center;gap:7px}.project-hero-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;min-width:270px}.project-hero-actions .btn{background:rgba(255,255,255,.96);border-color:rgba(255,255,255,.70)}.project-hero-actions .btn.primary{background:#fff;color:#061b35}.project-hero-actions .btn.danger{background:#b40718;color:#fff;border-color:#b40718}.project-overview-grid{display:grid;grid-template-columns:minmax(320px,.95fr) minmax(360px,1.45fr);gap:18px}.project-visual-card{padding:0;overflow:hidden;border-radius:22px}.project-visual-media{height:280px;background:#e2e8f0}.project-visual-media button{width:100%;height:100%;border:0;padding:0;background:transparent;cursor:pointer}.project-visual-media img{width:100%;height:100%;object-fit:cover;display:block}.project-visual-placeholder{height:100%;display:grid;place-items:center;gap:10px;color:#64748b;background:linear-gradient(135deg,#f8fafc,#e2e8f0)}.project-visual-placeholder i{font-size:48px;color:#94a3b8}.project-visual-placeholder span{font-weight:900}.project-visual-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#fff}.project-visual-caption strong,.project-visual-caption small{display:block}.project-visual-caption strong{color:#061b35}.project-visual-caption small{color:#64748b;font-weight:800}.project-media-count{display:inline-flex;align-items:center;gap:6px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:8px 10px;color:#061b35;font-size:12px;font-weight:900}.project-kpi-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.kpi-progress-card{position:relative;overflow:hidden;padding:18px;border-radius:20px;min-height:132px;display:grid;align-content:space-between}.kpi-progress-card:before{content:"";position:absolute;inset:0 0 auto;height:6px;background:var(--accent,#b40718)}.kpi-progress-card:after{content:"";position:absolute;right:-42px;bottom:-48px;width:142px;height:142px;border-radius:50%;background:var(--accent,#b40718);opacity:.10}.kpi-head{display:flex;align-items:center;justify-content:space-between;color:#64748b;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.25px}.kpi-head i{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent,#b40718) 13%,#fff);color:var(--accent,#b40718)}.kpi-progress-card strong{font-size:32px;color:#061b35;letter-spacing:-.8px}.kpi-progress-card small{position:relative;z-index:1;color:#64748b;font-weight:900}.kpi-bar,.wide-progress{height:10px;border-radius:999px;background:#e5e7eb;overflow:hidden}.kpi-bar span,.wide-progress span{display:block;height:100%;border-radius:inherit;background:var(--accent,#b40718)}.accent-red{--accent:#e11d48}.accent-blue{--accent:#2563eb}.accent-green{--accent:#16a34a}.accent-purple{--accent:#7c3aed}.project-section-card{border-radius:22px;padding:20px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.section-heading h2{margin:2px 0 0;color:#061b35;font-size:21px}.section-heading.compact{margin-bottom:12px}.section-eyebrow{display:inline-flex;align-items:center;gap:6px;color:#b40718;text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:1000}.mef-date-badge{display:inline-flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:999px;padding:10px 12px;color:#0f172a;font-weight:900;font-size:13px}.finance-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.finance-tile{background:linear-gradient(180deg,#f8fafc,#fff);border:1px solid #e2e8f0;border-radius:16px;padding:15px}.finance-tile span{display:block;color:#64748b;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.2px}.finance-tile strong{display:block;margin-top:7px;color:#061b35;font-size:21px;line-height:1.1}.finance-progress-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:15px;margin-bottom:12px}.finance-progress-label{display:flex;justify-content:space-between;gap:12px;margin-bottom:7px;color:#334155;font-weight:900}.wide-progress span{background:linear-gradient(90deg,#b40718,#f97316)}.wide-progress.gray span{background:linear-gradient(90deg,#0f172a,#64748b)}.project-detail-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr);gap:18px}.info-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.info-mini{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:15px;padding:12px}.info-mini i{grid-row:1/3;width:38px;height:38px;border-radius:12px;background:#fff;color:#b40718;display:grid;place-items:center;box-shadow:0 8px 18px rgba(15,23,42,.06)}.info-mini span{color:#64748b;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.2px}.info-mini strong{color:#111827;line-height:1.22}.text-block-card{border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:15px;margin-bottom:12px}.text-block-card.muted{background:#f8fafc}.text-block-card strong{display:flex;align-items:center;gap:8px;color:#061b35}.text-block-card p{margin:9px 0 0;color:#334155;line-height:1.55}.monthly-visual-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:15px}.visual-month-card{border:1px solid #e2e8f0;background:linear-gradient(180deg,#fff,#f8fafc);border-radius:16px;padding:14px}.month-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.month-card-top strong{color:#061b35}.month-card-top span,.status-soft{display:inline-flex;align-items:center;border-radius:999px;padding:6px 9px;background:color-mix(in srgb,var(--status-color,#64748b) 14%,#fff);color:var(--status-color,#64748b);font-size:11px;font-weight:1000}.modern-table-wrap{margin-top:8px}.modern-table thead th{background:#f8fafc;color:#334155}.visual-empty{display:grid;place-items:center;gap:8px;min-height:118px;border:1px dashed #cbd5e1;border-radius:16px;background:#f8fafc;color:#64748b;font-weight:900}.visual-empty i{font-size:28px;color:#94a3b8}.package-report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.package-report-card{--layer-color:#b40718;border:1px solid #e2e8f0;border-left:7px solid var(--layer-color);border-radius:17px;background:#fff;padding:14px;box-shadow:0 12px 30px rgba(15,23,42,.05)}.package-report-top{display:flex;align-items:center;justify-content:space-between;color:#64748b;font-size:12px;font-weight:900}.package-report-top i{width:14px;height:14px;border-radius:50%;background:var(--layer-color);box-shadow:0 0 0 4px color-mix(in srgb,var(--layer-color) 18%,#fff)}.package-report-card h3{margin:8px 0 12px;color:#061b35;font-size:16px;line-height:1.18}.package-report-values{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.package-report-values div{background:#f8fafc;border-radius:12px;padding:10px}.package-report-values small{display:block;color:#64748b;font-weight:900}.package-report-values strong{display:block;color:#111827;margin-top:3px}.package-report-card p{margin:10px 0 0;color:#475569;font-size:13px;line-height:1.45}.lower-grid{align-items:start}.layer-list-visual{display:grid;gap:10px}.layer-visual-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:12px}.layer-marker{width:16px;height:16px;border-radius:50%;background:var(--layer-color);box-shadow:0 0 0 5px color-mix(in srgb,var(--layer-color) 18%,#fff)}.layer-visual-item strong{display:block;color:#061b35}.layer-visual-item small{color:#64748b;font-weight:800}.layer-visual-meta{text-align:right}.layer-visual-meta b{display:block;color:#111827}.layer-visual-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.visual-media-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.visual-media-card{border-radius:16px;overflow:hidden;border:1px solid #e2e8f0;box-shadow:0 12px 28px rgba(15,23,42,.06)}.visual-media-card .media-thumb{height:150px;position:relative}.main-media-badge{position:absolute;left:10px;top:10px;background:#061b35;color:#fff;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:1000}.visual-media-card .p small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:#64748b}
@media(max-width:1180px){.project-hero-card{flex-direction:column}.project-hero-actions{justify-content:flex-start;min-width:0}.project-overview-grid,.project-detail-grid{grid-template-columns:1fr}.finance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.monthly-visual-grid,.package-report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.project-hero-card{padding:20px;border-radius:18px}.project-hero-actions .btn{flex:1 1 140px}.project-overview-grid{gap:14px}.project-visual-media{height:210px}.project-kpi-board,.finance-grid,.finance-progress-grid,.info-card-grid,.monthly-visual-grid,.package-report-grid,.visual-media-grid{grid-template-columns:1fr}.section-heading{flex-direction:column}.project-section-card{padding:16px;border-radius:18px}.layer-visual-item{grid-template-columns:auto 1fr}.layer-visual-meta,.layer-visual-actions{grid-column:2/-1;text-align:left;justify-content:flex-start}.finance-tile strong{font-size:19px}}

.dashboard-charts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}.chart-panel{min-height:360px}.chart-panel.wide{min-height:380px}.chart-box{position:relative;width:100%;min-height:255px}.chart-box.tall{min-height:295px}.decision-list{display:grid;gap:10px}.decision-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:center;border:1px solid #e2e8f0;border-radius:14px;padding:12px;background:#f8fafc;transition:.16s ease}.decision-item:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(15,23,42,.08)}.decision-item strong{display:block;color:#061b35}.decision-item small{display:block;color:#64748b;font-weight:800}.decision-item>small{grid-column:1/-1}.dashboard-note{margin-top:10px;color:#64748b;font-size:12px;font-weight:800;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px}
@media(max-width:1180px){.dashboard-charts-grid{grid-template-columns:1fr}.chart-panel,.chart-panel.wide{min-height:auto}}
@media(max-width:720px){.chart-box,.chart-box.tall{min-height:230px}.decision-item{grid-template-columns:1fr}.decision-item .badge{justify-self:start}}

/* v1.0.77 - Presentación compacta de ficha completa */
.project-profile{width:100%;max-width:none;gap:14px}.project-profile .card{box-shadow:0 10px 26px rgba(6,27,53,.10)}.project-hero-card{padding:18px 20px;border-radius:20px;gap:16px;align-items:center}.project-hero-main h1{margin:10px 0 6px;font-size:clamp(19px,2vw,30px);line-height:1.18;max-width:1120px;letter-spacing:-.25px}.project-hero-subtitle{font-size:14px;margin-bottom:10px}.project-hero-meta{gap:9px;font-size:13px}.hero-chip{padding:6px 10px;font-size:11px}.project-hero-actions{min-width:235px;gap:7px}.project-hero-actions .btn{padding:9px 12px;border-radius:9px;font-size:13px}.project-overview-grid{grid-template-columns:minmax(280px,.85fr) minmax(360px,1.6fr);gap:14px}.project-visual-card{border-radius:18px}.project-visual-media{height:230px}.project-visual-caption{padding:12px 14px}.project-kpi-board{gap:12px}.kpi-progress-card{min-height:112px;padding:15px;border-radius:17px}.kpi-progress-card strong{font-size:27px}.project-section-card{padding:17px;border-radius:19px}.section-heading{margin-bottom:12px}.section-heading h2{font-size:19px}.finance-grid{gap:10px}.finance-tile{padding:13px;border-radius:14px}.finance-tile strong{font-size:19px}.finance-progress-grid{gap:13px;margin-top:12px}.project-detail-grid{grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr);gap:14px}.project-single-grid{display:grid;grid-template-columns:1fr;gap:14px}.project-narrative-card{display:grid;grid-template-columns:1fr 1fr;gap:12px}.project-narrative-card .section-heading{grid-column:1/-1;margin-bottom:0}.project-narrative-card .text-block-card{margin:0}.info-card-grid{gap:8px}.info-mini{padding:10px;border-radius:13px}.info-mini i{width:34px;height:34px;border-radius:10px}.info-mini strong{font-size:13px}.info-mini span{font-size:11px}.monthly-visual-grid,.package-report-grid{gap:10px}.project-gallery-section{overflow:hidden}.project-gallery-section .section-heading{align-items:center}.project-gallery-grid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px}.project-gallery-card{display:grid;grid-template-rows:auto 1fr;border-radius:17px}.project-gallery-card .media-thumb{height:185px;background:#e2e8f0}.project-gallery-card .gallery-copy{display:grid;gap:7px;padding:13px 14px;background:#fff}.project-gallery-card .gallery-copy strong{color:#061b35;font-size:14px;line-height:1.25}.project-gallery-card .gallery-copy small{display:block!important;-webkit-line-clamp:unset!important;-webkit-box-orient:initial!important;overflow:visible!important;color:#475569;line-height:1.45;white-space:normal}.project-layers-section .project-layer-list{grid-template-columns:repeat(2,minmax(0,1fr));display:grid;gap:10px}.project-layers-section .layer-visual-item{grid-template-columns:auto minmax(0,1fr) auto auto;border-radius:14px;padding:11px}.project-map-section{padding-bottom:18px}.project-map-shell{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:14px;align-items:stretch}.project-bottom-map{height:430px;min-height:430px;border-radius:18px;overflow:hidden;background:#0e1f32;border:1px solid #d7dde6;position:relative}.project-map-legend{background:#f8fafc;border:1px solid #e2e8f0;border-radius:18px;padding:14px;align-self:stretch;overflow:auto;max-height:430px}.project-map-legend h3{margin:0 0 10px;color:#061b35;font-size:16px}.project-map-legend-row{display:grid;grid-template-columns:14px 1fr;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #e2e8f0}.project-map-legend-row:last-child{border-bottom:0}.project-map-legend-row>span{width:14px;height:14px;margin-top:3px;border-radius:50%;background:var(--layer-color);box-shadow:0 0 0 4px color-mix(in srgb,var(--layer-color) 18%,#fff)}.project-map-legend-row strong{display:block;color:#061b35;line-height:1.25}.project-map-legend-row small{display:block;color:#64748b;font-weight:800;margin-top:3px}.project-map-popup{position:absolute;z-index:5;gap:3px;min-width:210px;background:#fff;border:1px solid #d9e1ea;border-radius:12px;padding:10px 12px;box-shadow:0 10px 24px rgba(15,23,42,.22);pointer-events:none}.project-map-popup strong{color:#061b35;font-size:13px}.project-map-popup small{color:#475569;font-size:12px;font-weight:800}.project-bottom-map .ol-zoom{top:12px;left:12px}.project-bottom-map .ol-control button{background:#061b35;color:#fff;border-radius:8px;margin:2px}.project-bottom-map .ol-control button:hover{background:#b40718}
@media(max-width:1280px){.project-layers-section .project-layer-list{grid-template-columns:1fr}.project-map-shell{grid-template-columns:1fr}.project-map-legend{max-height:none}.project-bottom-map{height:390px;min-height:390px}}
@media(max-width:1180px){.project-hero-card{align-items:flex-start}.project-overview-grid,.project-detail-grid{grid-template-columns:1fr}.project-narrative-card{grid-template-columns:1fr}.project-hero-actions{justify-content:flex-start}.project-gallery-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}
@media(max-width:760px){.project-hero-card{padding:16px}.project-hero-main h1{font-size:20px}.project-visual-media{height:200px}.project-kpi-board,.finance-grid,.finance-progress-grid,.info-card-grid{grid-template-columns:1fr}.project-gallery-card .media-thumb{height:170px}.project-bottom-map{height:330px;min-height:330px}.project-map-legend{padding:12px}}


/* v1.0.78: ficha compacta y visor de fotos con descripción */
.project-profile{gap:12px!important;}
.project-profile .project-hero-card{padding:14px 16px!important;border-radius:16px!important;align-items:flex-start!important;box-shadow:0 10px 24px rgba(6,27,53,.14)!important;}
.project-profile .project-hero-main h1{font-size:clamp(15px,1.35vw,21px)!important;line-height:1.28!important;margin:7px 0 5px!important;max-width:1180px!important;letter-spacing:0!important;font-weight:900!important;}
.project-profile .project-hero-subtitle{font-size:12px!important;margin:0 0 6px!important;}
.project-profile .project-hero-labels{gap:6px!important;}
.project-profile .hero-chip{padding:4px 8px!important;font-size:10.5px!important;}
.project-profile .project-hero-meta{font-size:11.5px!important;gap:8px!important;}
.project-profile .project-hero-actions{min-width:0!important;max-width:390px!important;gap:6px!important;}
.project-profile .project-hero-actions .btn{padding:7px 9px!important;font-size:11.5px!important;border-radius:8px!important;}
.project-profile .project-overview-grid{grid-template-columns:minmax(250px,.72fr) minmax(430px,1.68fr)!important;gap:12px!important;}
.project-profile .project-visual-media{height:185px!important;}
.project-profile .project-visual-caption{padding:10px 12px!important;}
.project-profile .project-visual-caption strong{font-size:13px!important;}
.project-profile .project-visual-caption small{display:none!important;}
.project-profile .project-kpi-board{gap:10px!important;}
.project-profile .kpi-progress-card{min-height:94px!important;padding:12px!important;border-radius:14px!important;}
.project-profile .kpi-progress-card strong{font-size:23px!important;}
.project-profile .kpi-head{font-size:10.5px!important;}
.project-profile .kpi-head i{width:28px!important;height:28px!important;border-radius:9px!important;}
.project-profile .project-section-card{padding:14px!important;border-radius:16px!important;}
.project-profile .section-heading{margin-bottom:10px!important;}
.project-profile .section-heading h2{font-size:16px!important;margin-top:1px!important;}
.project-profile .section-eyebrow{font-size:10px!important;}
.project-profile .finance-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:8px!important;}
.project-profile .finance-tile{padding:10px!important;border-radius:12px!important;}
.project-profile .finance-tile span{font-size:10.5px!important;}
.project-profile .finance-tile strong{font-size:15px!important;}
.project-profile .finance-progress-grid{margin-top:10px!important;margin-bottom:8px!important;gap:10px!important;}
.project-profile .project-detail-grid{grid-template-columns:minmax(0,1.2fr) minmax(310px,.8fr)!important;gap:12px!important;}
.project-profile .info-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important;}
.project-profile .info-mini{padding:8px!important;border-radius:11px!important;grid-template-columns:30px 1fr!important;}
.project-profile .info-mini i{width:30px!important;height:30px!important;border-radius:9px!important;font-size:12px!important;}
.project-profile .info-mini span{font-size:9.5px!important;}
.project-profile .info-mini strong{font-size:11.5px!important;line-height:1.16!important;}
.project-profile .project-narrative-card{grid-template-columns:1fr 1fr!important;}
.project-profile .text-block-card{padding:11px!important;border-radius:12px!important;}
.project-profile .text-block-card p{font-size:12px!important;line-height:1.4!important;}
.project-gallery-section .project-gallery-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))!important;gap:10px!important;}
.project-gallery-section .project-gallery-card .media-thumb{height:140px!important;}
.project-gallery-section .gallery-title-only{padding:9px 10px!important;min-height:42px!important;display:flex!important;align-items:center!important;background:#fff!important;}
.project-gallery-section .gallery-title-only strong{font-size:12.5px!important;line-height:1.2!important;color:#061b35!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important;}
.media-lightbox-dialog{width:min(980px,94vw)!important;max-height:90vh!important;border-radius:16px!important;}
.media-lightbox-caption{padding:12px 56px 11px 16px;color:#fff;background:#1f2937;border-bottom:1px solid rgba(255,255,255,.12);}
.media-lightbox-title{padding:0!important;background:transparent!important;border:0!important;font-size:15px!important;line-height:1.25!important;}
.media-lightbox-description{margin-top:5px;color:#dbe3ee;font-size:13px;line-height:1.38;font-weight:600;white-space:pre-line;}
.media-lightbox-content{max-height:calc(90vh - 86px)!important;}
.media-lightbox-content img,.media-lightbox-content video{max-height:calc(90vh - 86px)!important;}
@media(max-width:1180px){.project-profile .project-overview-grid,.project-profile .project-detail-grid{grid-template-columns:1fr!important}.project-profile .info-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.project-profile .project-narrative-card{grid-template-columns:1fr!important}}
@media(max-width:760px){.project-profile .project-hero-main h1{font-size:17px!important}.project-profile .finance-grid,.project-profile .info-card-grid{grid-template-columns:1fr!important}.project-profile .project-visual-media{height:170px!important}.project-gallery-section .project-gallery-card .media-thumb{height:130px!important}.media-lightbox-caption{padding-right:50px}.media-lightbox-title{font-size:14px!important}.media-lightbox-description{font-size:12px}}


/* v1.0.79: ficha más compacta y segura al 100% de zoom */
.project-profile{gap:10px!important}
.project-profile .project-hero-card{padding:10px 14px!important;border-radius:14px!important;min-height:auto!important}
.project-profile .project-hero-main h1{font-size:clamp(13px,1.05vw,17px)!important;line-height:1.25!important;margin:5px 0 3px!important;font-weight:900!important}
.project-profile .project-hero-subtitle{font-size:12px!important;margin:0 0 6px!important}
.project-profile .hero-chip{padding:4px 8px!important;font-size:10.5px!important}
.project-profile .project-hero-meta{font-size:11.5px!important;gap:7px!important}
.project-profile .project-hero-actions .btn{padding:7px 10px!important;font-size:12px!important}
.project-profile .project-overview-grid{grid-template-columns:minmax(230px,.62fr) minmax(440px,1.75fr)!important;gap:10px!important}
.project-profile .project-visual-media{height:155px!important}
.project-profile .project-visual-caption{padding:9px 12px!important}
.project-profile .kpi-progress-card{min-height:92px!important;padding:12px!important;border-radius:14px!important}
.project-profile .kpi-progress-card strong{font-size:22px!important}
.project-profile .project-section-card{padding:14px!important;border-radius:16px!important}
.project-profile .section-heading h2{font-size:17px!important}
.project-profile .finance-tile{padding:10px!important}
.project-profile .finance-tile strong{font-size:16px!important}
.project-profile .info-mini{padding:8px!important}
.project-profile .text-block-card{padding:11px!important}
.project-gallery-section .project-gallery-card .media-thumb{height:125px!important}
.project-gallery-section .gallery-title-only{min-height:36px!important;padding:8px 10px!important}
.project-gallery-section .gallery-title-only strong{font-size:12px!important}
.topbar{height:70px!important;padding:0 22px!important}
.topbar h1{font-size:15px!important;line-height:1.1!important}
.topbar p{font-size:11.5px!important;max-width:760px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1180px){.project-profile .project-overview-grid{grid-template-columns:1fr!important}.project-profile .project-visual-media{height:175px!important}}
@media(max-width:760px){.project-profile .project-hero-main h1{font-size:15px!important}.topbar{height:auto!important;min-height:64px!important}.topbar p{white-space:normal}.project-profile .project-visual-media{height:155px!important}}


/* v1.0.82: títulos de galería visibles sobre la imagen y CRUD usuarios sin autofill del administrador */
.project-gallery-section .project-gallery-grid{grid-template-columns:repeat(auto-fill,minmax(205px,1fr))!important;gap:12px!important;align-items:start!important}
.project-gallery-section .project-gallery-card{border-radius:14px!important;overflow:hidden!important;background:#fff!important;box-shadow:0 10px 24px rgba(15,23,42,.08)!important}
.project-gallery-section .project-gallery-card .media-thumb{height:152px!important;position:relative!important;overflow:hidden!important;background:#e2e8f0!important}
.project-gallery-section .project-gallery-card .media-thumb::after{content:"";position:absolute;left:0;right:0;bottom:0;height:68%;background:linear-gradient(180deg,rgba(2,8,23,0) 0%,rgba(2,8,23,.70) 58%,rgba(2,8,23,.92) 100%);pointer-events:none;z-index:1}
.project-gallery-section .gallery-thumb-title{position:absolute;left:0;right:0;bottom:0;z-index:2;display:block!important;padding:28px 12px 11px!important;color:#fff!important;font-size:13px!important;line-height:1.22!important;font-weight:900!important;text-shadow:0 2px 8px rgba(0,0,0,.65);white-space:normal!important;overflow:visible!important;pointer-events:none;letter-spacing:.01em}
.project-gallery-section .gallery-title-only{display:none!important}
.project-gallery-section .main-media-badge{z-index:3!important}
form[data-user-form="usuarios"] input[name="user_full_name"],form[data-user-form="usuarios"] input[name="user_login"],form[data-user-form="usuarios"] input[name="user_mail"]{background-clip:padding-box!important}
@media(max-width:760px){.project-gallery-section .project-gallery-card .media-thumb{height:145px!important}.project-gallery-section .gallery-thumb-title{font-size:12.5px!important;padding:24px 10px 10px!important}}

/* v1.0.83: ficha de proyecto sin KPI verde de financiero acumulado; etiquetas financieras actualizadas */
.project-profile .finance-progress-label span{text-transform:uppercase;letter-spacing:.25px;color:#0f172a}
.project-profile .project-kpi-board{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important}

.color-pill{display:inline-block;width:18px;height:18px;border-radius:50%;vertical-align:middle;border:2px solid #fff;box-shadow:0 2px 7px rgba(0,0,0,.22)}
@media(max-width:720px){.basemap-control{z-index:9}}

/* v1.0.85 - Corrección de escala visual en pantallas grandes
   Evita que el mapa, tarjetas y controles se vean demasiado pequeños al 100% de zoom. */
@media (min-width:1281px){
    .content > .map-page{margin:0}
    .content:has(> .map-page){padding:24px 30px 36px}
    .map-layout{grid-template-columns:minmax(0,1fr) minmax(455px,500px);gap:22px;align-items:stretch}
    .map-card{display:flex;flex-direction:column;min-height:0}
    .map-card .filters{flex:0 0 auto}
    .map{height:clamp(720px,calc(100vh - 190px),1080px)!important;min-height:720px}
    .filters{gap:14px;padding:18px;grid-template-columns:repeat(4,minmax(190px,1fr)) auto}
    .filters label{font-size:13px}
    .filters select,.filters input{min-height:48px;font-size:15px}
    .filters .btn{min-height:48px;font-size:14px;padding:12px 18px}
    .detail-header{padding:24px}
    .detail-header h2{font-size:22px;line-height:1.18}
    .detail-icon{width:60px;height:60px;font-size:26px}
    .detail-tabs button{font-size:14px;padding:16px 12px}
    .detail-body{padding:20px}
    .detail-item{font-size:15px;grid-template-columns:30px 1fr auto;gap:11px}
    .legend{font-size:14px;padding:17px 18px}
    .basemap-control{min-width:255px;font-size:13px;padding:13px 14px}
    .basemap-control select{min-height:42px;font-size:13.5px}
}

@media (min-width:1500px){
    .topbar{height:82px!important;padding:0 30px!important}
    .topbar h1{font-size:20px!important;line-height:1.18!important}
    .topbar p{font-size:13.5px!important;max-width:1120px!important}
    .content{padding:28px 34px 42px}
    .btn{font-size:15px;padding:12px 18px}
    .panel{padding:24px}
    .panel-title h2{font-size:22px}
    .panel-title p{font-size:14px}
    .stat-card{min-height:126px;padding:22px;gap:16px}
    .stat-icon{width:62px;height:62px;font-size:25px}
    .stat-value{font-size:34px}
    .stat-label,.stat-sub{font-size:13px}
    .dashboard-hero{padding:30px;gap:26px}
    .dashboard-hero h2{font-size:36px}
    .dashboard-hero p{font-size:16px;line-height:1.45}
    .dashboard-grid-main{grid-template-columns:minmax(0,1.55fr) minmax(380px,.7fr);gap:22px}
    .map-layout{grid-template-columns:minmax(0,1fr) minmax(480px,540px);gap:24px}
    .map{height:clamp(760px,calc(100vh - 198px),1220px)!important;min-height:760px}
}

@media (min-width:1800px){
    html,body{font-size:17px}
    .content{padding:32px 42px 48px}
    .topbar{height:88px!important;padding:0 36px!important}
    .topbar h1{font-size:22px!important}
    .topbar p{font-size:14.5px!important;max-width:1320px!important}
    .sidebar{width:300px}
    .main{margin-left:300px;width:calc(100% - 300px)}
    .app-body.sidebar-collapsed .sidebar{width:92px}
    .app-body.sidebar-collapsed .main{margin-left:92px;width:calc(100% - 92px)}
    .brand{height:124px;padding:26px 28px}
    .brand-title{font-size:34px}
    .brand-subtitle{font-size:13px}
    .nav-section-title{font-size:11.5px;padding-left:20px}
    .nav-section a{font-size:15px!important;padding:13px 20px!important}
    .nav-section a i{font-size:17px}
    .map-layout{grid-template-columns:minmax(0,1fr) minmax(520px,600px);gap:28px}
    .map{height:clamp(820px,calc(100vh - 210px),1380px)!important;min-height:820px}
    .detail-header h2{font-size:24px}
    .detail-body{padding:24px}
    .detail-item{font-size:16px}
    .detail-tabs button{font-size:15px;padding:18px 14px}
    .filters label{font-size:14px}
    .filters select,.filters input{font-size:16px;min-height:52px}
    .filters .btn{font-size:15px;min-height:52px}
    .dashboard-stats{grid-template-columns:repeat(auto-fit,minmax(235px,1fr))!important}
    .project-profile .project-hero-main h1{font-size:clamp(22px,1.55vw,34px)!important}
    .project-profile .project-hero-card{padding:18px 22px!important;border-radius:20px!important}
    .project-profile .project-visual-media{height:230px!important}
    .project-profile .kpi-progress-card{min-height:122px!important;padding:16px!important}
    .project-profile .kpi-progress-card strong{font-size:30px!important}
    .project-profile .project-section-card{padding:20px!important}
    .project-profile .section-heading h2{font-size:22px!important}
}

@media (min-width:2300px){
    html,body{font-size:18px}
    .content{padding:38px 52px 56px}
    .topbar h1{font-size:25px!important}
    .topbar p{font-size:16px!important;max-width:1600px!important}
    .btn{font-size:16px;padding:14px 20px}
    .panel-title h2{font-size:25px}
    .map-layout{grid-template-columns:minmax(0,1fr) minmax(590px,680px);gap:34px}
    .map{height:clamp(920px,calc(100vh - 225px),1650px)!important;min-height:920px}
    .detail-header h2{font-size:27px}
    .detail-tabs button{font-size:16.5px}
    .detail-item{font-size:17px}
}

/* v1.0.86 - Google Earth como proveedor único y filtro por CUI */
.map-card .filters{grid-template-columns:repeat(5,minmax(145px,1fr)) auto!important}.google-earth-control{position:absolute;top:18px;right:18px;z-index:7;background:rgba(36,52,71,.94);color:#fff;padding:12px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.18);box-shadow:0 12px 28px rgba(0,0,0,.24);min-width:205px;backdrop-filter:blur(6px);display:flex;align-items:center;gap:11px}.google-earth-control>i{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,#0f766e,#22c55e);display:grid;place-items:center;font-size:16px}.google-earth-control strong{display:block;font-size:12.5px;font-weight:950;text-transform:uppercase;letter-spacing:.25px;line-height:1}.google-earth-control small{display:block;margin-top:4px;color:#dbe3ee;font-size:11.5px;font-weight:800}.basemap-control{display:none!important}
@media(max-width:1320px){.map-card .filters{grid-template-columns:repeat(3,minmax(170px,1fr))!important}.map-card .filters .btn{grid-column:auto}}
@media(max-width:900px){.map-card .filters{grid-template-columns:repeat(2,minmax(0,1fr))!important}.map-card .filters .btn{grid-column:1/-1}.google-earth-control{top:12px;right:12px;min-width:0}}
@media(max-width:720px){.google-earth-control{left:12px;right:12px}.map-card .filters{grid-template-columns:1fr!important}}
@media (min-width:1800px){.map-card .filters{grid-template-columns:repeat(5,minmax(180px,1fr)) auto!important}.google-earth-control{min-width:230px;padding:14px 16px}.google-earth-control strong{font-size:14px}.google-earth-control small{font-size:12.5px}}
@media (min-width:2300px){.google-earth-control{transform:scale(1.08);transform-origin:top left}}

/* v1.0.85: Street View + visor multimedia grande con navegación */
.street-view-box{position:absolute;top:86px;right:18px;z-index:11;display:grid;gap:10px;justify-items:end;pointer-events:none}.street-view-box *{pointer-events:auto}.street-view-toolbar{display:flex;gap:8px;align-items:center}.street-view-main,.street-view-pick{border:0;border-radius:14px;background:rgba(6,27,53,.94);color:#fff;box-shadow:0 12px 28px rgba(0,0,0,.28);font-weight:950;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.street-view-main{padding:12px 15px;text-transform:uppercase;letter-spacing:.2px}.street-view-pick{width:44px;height:44px;background:linear-gradient(135deg,#b40718,#7f0d1a)}.street-view-box.picking .street-view-pick{outline:4px solid rgba(180,7,24,.28);transform:scale(1.04)}.street-view-panel{width:min(480px,calc(100vw - 36px));background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 24px 56px rgba(0,0,0,.38);border:1px solid #d9e1ea}.street-view-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;background:#061b35;color:#fff}.street-view-panel-head strong{font-size:13px}.street-view-panel-head div{display:flex;align-items:center;gap:9px}.street-view-panel-head a{font-size:12px;font-weight:900;color:#dbeafe;text-decoration:underline}.street-view-panel-head button{border:0;background:rgba(255,255,255,.12);color:#fff;border-radius:8px;width:30px;height:30px;cursor:pointer}.street-view-panel iframe{display:block;width:100%;height:330px;border:0;background:#111827}.street-view-panel small{display:block;padding:9px 12px;color:#475569;font-weight:800;background:#f8fafc}.project-street-view-box{top:12px;right:12px}.project-street-view-box .street-view-panel{width:min(420px,calc(100vw - 40px))}.project-street-view-box .street-view-panel iframe{height:260px}.media-lightbox.open{display:flex!important;align-items:center!important;justify-content:center!important;padding:18px!important}.media-lightbox-dialog{width:min(1560px,98vw)!important;height:min(96vh,980px)!important;max-height:96vh!important;display:grid!important;grid-template-rows:auto minmax(0,1fr)!important;border-radius:18px!important;overflow:hidden!important;background:#020617!important}.media-lightbox-caption{position:relative!important;padding:13px 62px 12px 18px!important;color:#fff!important;background:linear-gradient(90deg,#061b35,#111827)!important;border-bottom:1px solid rgba(255,255,255,.14)!important}.media-lightbox-counter{position:absolute;right:62px;top:14px;color:#cbd5e1;font-weight:900;font-size:12px}.media-lightbox-content{height:100%!important;max-height:none!important;display:grid!important;place-items:center!important;background:#020617!important}.media-lightbox-content img,.media-lightbox-content video{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;background:#020617!important}.media-lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:54px;height:72px;border:0;border-radius:16px;background:rgba(255,255,255,.16);color:#fff;font-size:24px;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(6px)}.media-lightbox-nav:hover{background:rgba(255,255,255,.28)}.media-lightbox-prev{left:18px}.media-lightbox-next{right:18px}.media-lightbox-nav[hidden]{display:none!important}.media-lightbox-close{z-index:4!important}.evidence-grid{grid-template-columns:minmax(210px,.9fr) minmax(220px,1fr) minmax(260px,1.2fr) auto!important}.evidence-item{border:1px dashed #cbd5e1;border-radius:16px;padding:14px;background:#f8fafc;margin-bottom:12px}.evidence-item select option[hidden]{display:none}.project-gallery-section .project-gallery-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))!important}.project-gallery-section .project-gallery-card .media-thumb{height:205px!important}.detail-gallery{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))!important}
@media(max-width:900px){.street-view-box{top:132px;left:12px;right:12px;justify-items:stretch}.street-view-toolbar{justify-content:flex-end}.street-view-panel{width:100%}.street-view-panel iframe{height:280px}.evidence-grid{grid-template-columns:1fr!important}.media-lightbox-dialog{width:100vw!important;height:100vh!important;max-height:100vh!important;border-radius:0!important}.media-lightbox.open{padding:0!important}.media-lightbox-nav{width:44px;height:58px}.media-lightbox-prev{left:10px}.media-lightbox-next{right:10px}.media-lightbox-counter{position:static;margin-top:4px}.project-gallery-section .project-gallery-card .media-thumb{height:170px!important}}

/* Street View actual: control por clic; estilos arrastrables retirados */
.street-view-host{position:relative!important;overflow:hidden!important}
.project-street-view-box{top:12px!important;right:12px!important}

/* v1.0.95: base Street View oscura/satelital para que no se vea blanco */
.street-coverage-base,.street-coverage-base canvas,.street-coverage-base img,.ol-layer.street-coverage-base canvas,.ol-layer.street-coverage-base img{filter:brightness(.72) contrast(1.18) saturate(.82)!important;opacity:1!important}
.street-coverage-overlay,.street-coverage-overlay canvas,.street-coverage-overlay img,.ol-layer.street-coverage-overlay canvas,.ol-layer.street-coverage-overlay img{filter:none!important;opacity:1!important;mix-blend-mode:screen!important}
.street-view-box.dragging::after{content:"Calles azules habilitadas para Street View sobre base satelital"!important;background:rgba(6,27,53,.94)!important;color:#e0f2fe!important;border-color:rgba(14,165,233,.45)!important}

/* v1.0.99: modo móvil/app y PWA */
:root{--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{padding-left:var(--safe-left);padding-right:var(--safe-right)}
.app-body.is-standalone-app .topbar{padding-top:calc(10px + var(--safe-top))}
.app-body.is-standalone-app .sidebar{padding-top:var(--safe-top)}
button,.btn,a,input,select,textarea{touch-action:manipulation}
input,select,textarea{font-size:16px}
.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px}
.table-scroll>.table,.table-scroll>table{min-width:760px}
.login-app-actions{display:grid;grid-template-columns:1fr;gap:8px;margin-top:8px}.login-app-actions .btn{margin-top:0}.login-app-note{margin:12px 0 0;color:#64748b;font-size:12.5px;line-height:1.45;text-align:center}.app-install-btn[hidden]{display:none!important}.offline-banner{position:fixed;left:calc(14px + var(--safe-left));right:calc(14px + var(--safe-right));bottom:calc(14px + var(--safe-bottom));z-index:2147483640;background:#7f1d1d;color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:12px 14px;box-shadow:0 16px 36px rgba(0,0,0,.28);font-weight:850;font-size:13px;text-align:center}
.download-app-page{min-height:100svh;background:radial-gradient(circle at top left,#15395c 0,#071d38 42%,#050d1a 100%);color:#111827;padding:calc(24px + var(--safe-top)) calc(18px + var(--safe-right)) calc(28px + var(--safe-bottom)) calc(18px + var(--safe-left))}.download-app-shell{width:min(1120px,100%);margin:0 auto}.download-hero{display:flex;align-items:center;gap:16px;color:#fff;margin-bottom:20px}.download-hero .brand-mark{width:54px;height:54px;flex:0 0 auto}.download-hero h1{margin:0;font-size:28px;text-transform:uppercase;letter-spacing:.35px}.download-hero p{margin:5px 0 0;color:#dbe3ee;font-weight:750;line-height:1.35}.download-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px}.download-card{display:flex;flex-direction:column;gap:12px;min-height:280px}.download-card h2{margin:0;color:#061b35;font-size:20px}.download-card p{margin:0;color:#475569;line-height:1.45}.download-card .btn{margin-top:auto}.download-card-icon{width:54px;height:54px;border-radius:16px;background:linear-gradient(135deg,#061b35,#0b4a7f);color:#fff;display:grid;place-items:center;font-size:24px;box-shadow:0 12px 28px rgba(6,27,53,.22)}.download-card-icon.apk{background:linear-gradient(135deg,#166534,#22c55e)}.download-card-icon.aab{background:linear-gradient(135deg,#1d4ed8,#38bdf8)}.primary-download-card{border-top:6px solid #b40718}.manual-install-help,.download-pending{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:11px;color:#475569;font-size:13px;line-height:1.45}.download-pending code,.download-instructions code{background:#e2e8f0;color:#0f172a;border-radius:6px;padding:2px 5px;font-size:.92em}.download-meta{margin:0;padding-left:18px;color:#475569;font-size:13px;line-height:1.55}.download-instructions h2,.privacy-card h2{margin:0 0 12px;color:#061b35;font-size:20px}.download-instructions ol{margin:0;padding-left:22px;color:#334155;line-height:1.68}.download-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.privacy-shell{width:min(920px,100%)}.privacy-card p{color:#334155;line-height:1.62;margin:0 0 18px}.privacy-card h2{margin-top:14px}
@media(max-width:920px){
  .topbar{gap:12px}.topbar h1{font-size:15px;line-height:1.2}.topbar p{font-size:12px}.menu-toggle{flex:0 0 44px}.sidebar{width:min(86vw,320px);padding-bottom:var(--safe-bottom)}.sidebar-nav{overflow-y:auto;-webkit-overflow-scrolling:touch}.content{padding:14px}.panel{padding:16px}.card{border-radius:16px}.filters{border-radius:14px;padding:13px}.filters .btn,.actions .btn,.responsive-actions .btn{width:100%}.responsive-actions{align-items:stretch;flex-direction:column}.search-box{max-width:none;width:100%}.map-layout{gap:14px}.map{height:calc(100svh - 250px);min-height:420px}.map-detail{border-radius:14px}.detail-header{padding:16px}.detail-body{padding:14px}.detail-item{grid-template-columns:22px 1fr}.detail-item strong{grid-column:2/-1;text-align:left}.download-grid{grid-template-columns:1fr}.download-hero{align-items:flex-start}.download-hero h1{font-size:23px}.download-card{min-height:auto}.download-actions .btn{width:100%}.download-app-page{padding-left:16px;padding-right:16px}.login-card{padding:24px;border-radius:20px}.login-brand h1{font-size:26px}}
@media(max-width:560px){
  .brand{height:auto;min-height:94px;padding:18px}.brand-title{font-size:27px}.brand-subtitle{font-size:11px}.topbar{position:sticky;top:0}.topbar>div:not(.topbar-actions){min-width:0}.map-page .content{padding:10px}.map-card{border-radius:14px}.map{height:calc(100svh - 300px);min-height:380px}.google-earth-control{font-size:12px}.public-wizard-steps{display:flex!important;overflow-x:auto;-webkit-overflow-scrolling:touch}.public-wizard-steps button{min-width:104px}.panel-title{flex-direction:column;align-items:flex-start}.download-hero .brand-mark{width:46px;height:46px}.download-hero h1{font-size:20px}.download-hero p{font-size:13px}.download-instructions ol{padding-left:18px}.privacy-card p{font-size:14px}}

.download-grid-single {
    grid-template-columns: minmax(0, 620px);
    justify-content: center;
}
.pwa-only-actions {
    margin-top: 18px;
    justify-content: center;
}


/* v1.0.100: instalación PWA visible para todos los equipos */
.install-share-box{background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px;color:#7c2d12;font-size:13px;line-height:1.45}.install-share-box p{margin:6px 0 10px;color:#9a3412}.install-link-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.install-link-row code{display:block;overflow:auto;white-space:nowrap;background:#ffedd5;color:#7c2d12;border-radius:10px;padding:10px;font-weight:800}.install-steps-card h2{margin:0 0 14px;color:#061b35}.install-steps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.install-steps-grid>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:14px}.install-steps-grid h3{margin:0 0 8px;color:#061b35;font-size:16px}.install-steps-grid p{margin:0;color:#475569;line-height:1.48}.app-install-btn.is-installed{opacity:.9}
@media(max-width:920px){.install-link-row{grid-template-columns:1fr}.install-link-row .btn{width:100%}.install-steps-grid{grid-template-columns:1fr}}

/* v1.0.101: instalación PWA correcta para iPhone/iPad */
.ios-install-help{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:13px;color:#334155;font-size:14px;line-height:1.55}.ios-install-help[hidden]{display:none!important}.ios-install-help strong{display:block;color:#061b35;margin-bottom:8px}.ios-install-help ol{margin:8px 0 0;padding-left:20px}.ios-install-help p{margin:8px 0 0!important;color:#475569!important}

/* v1.0.100: soporte para select multiple con minibuscador en agrupaciones gerenciales. */
.mini-select-multiple .mini-select-button{min-height:50px}
.mini-select-multiple .mini-select-option{position:relative;padding-left:12px}
.mini-select-multiple .mini-select-option.active{background:#061b35;color:#fff}
.mini-select-multiple .mini-select-options{max-height:320px}

/* v1.0.103: selector filtrable de varios proyectos para agrupaciones gerenciales. */
.mg-project-picker{border:1px solid var(--border);border-radius:14px;background:#fff;padding:12px;display:grid;gap:10px}
.mg-project-search-wrap{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #dbe3ee;border-radius:11px;padding:0 10px;position:sticky;top:0;z-index:2}
.mg-project-search-wrap i{color:#64748b;font-size:13px}
.mg-project-search{border:0!important;box-shadow:none!important;background:transparent!important;padding:11px 0!important;width:100%;font:inherit;font-size:14px;color:#111827;outline:none!important}
.mg-project-clear{border:0;background:#e2e8f0;color:#475569;border-radius:999px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:.14s ease;flex:0 0 auto}
.mg-project-clear:hover{background:#cbd5e1;color:#0f172a}
.mg-project-clear[hidden]{display:none!important}
.mg-project-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.mg-project-selected{display:inline-flex;align-items:center;width:max-content;max-width:100%;border-radius:999px;background:#f1f5f9;color:#475569;padding:6px 10px;font-size:12px;font-weight:900}
.mg-project-selected.has-selection{background:#dbeafe;color:#1e3a8a}
.mg-project-filter-selected{border:1px solid #dbe3ee;background:#fff;color:#475569;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.14s ease}
.mg-project-filter-selected:hover,.mg-project-filter-selected.active{border-color:#061b35;background:#eff6ff;color:#061b35}
.mg-project-results{font-size:12px;color:#64748b;font-weight:800}
.mg-project-empty{border:1px dashed #cbd5e1;border-radius:11px;background:#f8fafc;color:#64748b;font-size:13px;font-weight:800;padding:13px;text-align:center}
.mg-project-empty[hidden]{display:none!important}
.mg-project-list{display:grid;gap:7px;max-height:360px;overflow:auto;padding-right:4px;scrollbar-gutter:stable}
.mg-project-option{display:flex;align-items:flex-start;gap:10px;border:1px solid #e2e8f0;border-radius:11px;padding:10px 11px;background:#fff;cursor:pointer;font-weight:800;font-size:13px;line-height:1.25;transition:.14s ease}
.mg-project-option:hover{border-color:#94a3b8;background:#f8fafc}
.mg-project-option.active{border-color:#061b35;background:#eff6ff;color:#061b35}
.mg-project-option input{margin-top:2px;flex:0 0 auto;width:17px;height:17px;accent-color:#061b35}
.mg-project-option span{min-width:0}
.mg-project-option[hidden]{display:none!important}
@media(max-width:720px){.mg-project-list{max-height:420px}.mg-project-option{font-size:13.5px;padding:12px}.mg-project-toolbar{align-items:flex-start;flex-direction:column}.mg-project-filter-selected{width:100%;justify-content:center}}

/* v1.0.106 - Dashboard ejecutivo territorial */
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.card-head h3{margin:0;color:#061b35;font-size:18px}.card-head span{color:#64748b;font-size:12px;font-weight:800;text-align:right}.dashboard-charts-grid .chart-panel.wide{grid-column:1/-1}
.peru-map-card{margin-top:18px}.peru-map-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:18px;align-items:start}.peru-map-stage{min-height:760px;border:1px solid #e2e8f0;border-radius:18px;background:radial-gradient(circle at 35% 20%,rgba(37,99,235,.15),transparent 28%),linear-gradient(180deg,#f8fbff 0%,#edf4fb 100%);padding:18px;overflow:auto}.peru-map-3d{position:relative;width:560px;height:920px;margin:0 auto;transform:perspective(1200px) rotateX(55deg) rotateZ(-35deg);transform-style:preserve-3d}.peru-map-3d:before{content:"";position:absolute;inset:35px 110px 45px 110px;background:linear-gradient(180deg,rgba(6,27,53,.06),rgba(37,99,235,.03));clip-path:polygon(42% 0%,52% 2%,56% 7%,62% 11%,61% 18%,67% 22%,72% 28%,70% 38%,76% 44%,72% 54%,74% 64%,70% 70%,74% 79%,66% 87%,61% 97%,52% 100%,44% 96%,41% 87%,35% 82%,29% 73%,31% 64%,24% 58%,26% 46%,22% 38%,28% 30%,31% 20%,37% 13%,39% 6%);border-radius:30px;box-shadow:0 40px 80px rgba(6,27,53,.10),inset 0 0 0 1px rgba(6,27,53,.06)}
.peru-dept-node{position:absolute;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-width:76px;min-height:56px;padding:10px 11px 9px;border-radius:16px;border:1px solid rgba(255,255,255,.75);background:linear-gradient(180deg,#e2e8f0 0%,#cbd5e1 100%);box-shadow:0 12px 24px rgba(15,23,42,.18),0 8px 0 rgba(100,116,139,.30);transform:translateZ(18px);transition:transform .18s ease,box-shadow .18s ease}.peru-dept-node:hover{transform:translateZ(28px) translateY(-2px);box-shadow:0 20px 34px rgba(15,23,42,.22),0 10px 0 rgba(100,116,139,.28)}.peru-dept-node.active{border-color:rgba(255,255,255,.92);color:#fff;box-shadow:0 16px 28px rgba(6,27,53,.22),0 10px 0 rgba(6,27,53,.26)}.peru-dept-node strong{font-size:12px;line-height:1.1;max-width:110px}.peru-dept-node b{font-size:19px;line-height:1;margin-top:4px}.peru-dept-node small{font-size:10px;font-weight:800;opacity:.95;margin-top:2px}.peru-dept-node.zero strong,.peru-dept-node.zero b,.peru-dept-node.zero small{color:#475569}.peru-map-side{display:grid;gap:16px}.peru-map-summary,.peru-map-ranking{border:1px solid #e2e8f0;border-radius:16px;background:#f8fafc;padding:16px}.peru-map-summary strong,.peru-map-ranking strong{display:block;color:#061b35;margin-bottom:12px}.peru-map-summary ul{list-style:none;padding:0;margin:0;display:grid;gap:10px}.peru-map-summary li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #e2e8f0}.peru-map-summary li span{color:#64748b;font-weight:800}.peru-map-summary li b{color:#061b35}.dept-rank-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border:1px solid #e2e8f0;border-radius:12px;padding:10px;background:#fff}.dept-rank-badge{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:12px;font-weight:900;background:#061b35;color:#fff}.dept-rank-text strong{display:block;color:#061b35;font-size:14px}.dept-rank-text small{display:block;color:#64748b;font-weight:800;font-size:12px}.dept-rank-value{color:#b40718;font-size:18px;font-weight:900}
@media(max-width:1320px){.peru-map-layout{grid-template-columns:1fr}.peru-map-stage{min-height:auto}.peru-map-3d{transform:perspective(1100px) rotateX(52deg) rotateZ(-32deg) scale(.92)}}
@media(max-width:900px){.peru-map-3d{width:480px;height:840px;transform:perspective(980px) rotateX(48deg) rotateZ(-30deg) scale(.82)}.peru-map-stage{padding:12px}}
@media(max-width:720px){.card-head{flex-direction:column}.card-head span{text-align:left}.peru-map-3d{width:420px;height:780px;transform:perspective(900px) rotateX(42deg) rotateZ(-26deg) scale(.76)}.peru-dept-node{min-width:70px;min-height:52px;padding:8px 9px}.peru-dept-node strong{font-size:11px}.peru-dept-node b{font-size:17px}}

/* v1.0.107 - Filtros del dashboard + mapa con intensidad */
.dashboard-filter-card{margin-bottom:18px;display:grid;gap:14px}.dashboard-filter-form{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr)) auto;gap:14px;align-items:end}.dashboard-filter-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.dashboard-filter-actions .btn{white-space:nowrap}.dashboard-filter-chips{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.filter-chip{display:inline-flex;align-items:center;gap:7px;border-radius:999px;background:#eff6ff;color:#1d4ed8;padding:7px 12px;font-size:12px;font-weight:900;border:1px solid #bfdbfe}.filter-chip-title{background:#061b35;color:#fff;border-color:#061b35}.dashboard-filter-empty{color:#64748b;font-weight:800;font-size:13px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;padding:11px 12px}
.peru-map-legend{border:1px solid #e2e8f0;border-radius:16px;background:#f8fafc;padding:16px}.peru-map-legend strong{display:block;color:#061b35;margin-bottom:12px}.intensity-scale{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px}.intensity-step{display:block;height:16px;border-radius:999px}.intensity-step.low{background:linear-gradient(90deg,#93c5fd,#60a5fa)}.intensity-step.mid{background:linear-gradient(90deg,#60a5fa,#3b82f6)}.intensity-step.high{background:linear-gradient(90deg,#3b82f6,#dc2626)}.intensity-step.max{background:linear-gradient(90deg,#dc2626,#991b1b)}.intensity-labels{display:flex;justify-content:space-between;gap:12px;color:#64748b;font-size:12px;font-weight:900;margin-bottom:6px}.peru-map-legend small{display:block;color:#64748b;font-weight:800;line-height:1.45}.peru-map-summary,.peru-map-ranking,.peru-map-legend{box-shadow:0 10px 24px rgba(15,23,42,.05)}
.peru-dept-node{backface-visibility:hidden;will-change:transform,box-shadow}.peru-dept-node.active:hover{filter:saturate(1.08) brightness(1.03)}
@media(max-width:980px){.dashboard-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-filter-actions{grid-column:1/-1}}
@media(max-width:720px){.dashboard-filter-form{grid-template-columns:1fr}.dashboard-filter-actions{width:100%;flex-direction:column;align-items:stretch}.dashboard-filter-actions .btn{width:100%}.dashboard-filter-chips{align-items:flex-start;flex-direction:column}}

/* v1.0.108 - Rediseño visual del dashboard */
.dashboard-shell-modern{display:grid;gap:18px}.dashboard-section-head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:2px 0 2px}.dashboard-section-head.compact{margin-bottom:2px}.dashboard-section-head .section-eyebrow{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#e0ecff;color:#1d4ed8;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px}.dashboard-section-head h3{margin:0;color:#061b35;font-size:23px;line-height:1.1}.dashboard-section-head p{margin:0;color:#64748b;font-size:13px;font-weight:800;max-width:480px;text-align:right}
.dashboard-panel-soft{background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);box-shadow:0 18px 38px rgba(15,23,42,.07)}
.dashboard-hero-modern{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(290px,.7fr);gap:24px;padding:30px;min-height:220px;background:radial-gradient(circle at top right,rgba(96,165,250,.22),transparent 26%),radial-gradient(circle at 10% 0,rgba(255,255,255,.14),transparent 28%),linear-gradient(135deg,#041427 0%,#092648 48%,#0f4aa2 100%);border:0;box-shadow:0 24px 54px rgba(6,27,53,.22)}.dashboard-hero-copy h2{margin:10px 0 10px;font-size:38px;line-height:1.03;color:#fff}.dashboard-hero-copy p{margin:0;color:#dce7f6;max-width:820px;font-size:15px;line-height:1.55;font-weight:700}.dashboard-hero-pills{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.dashboard-hero-pills span{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.14);color:#fff;font-size:12px;font-weight:900}.dashboard-hero-side{display:grid;align-content:start;gap:12px}.hero-mini-card{background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.14);border-radius:18px;padding:16px;color:#fff;backdrop-filter:blur(5px)}.hero-mini-card small{display:block;font-size:11px;text-transform:uppercase;font-weight:900;letter-spacing:.4px;color:#dbeafe}.hero-mini-card strong{display:block;margin:7px 0 5px;font-size:28px;line-height:1.05}.hero-mini-card span{display:block;color:#dce7f6;font-weight:700;font-size:13px}.hero-mini-card.accent{background:linear-gradient(135deg,rgba(180,7,24,.90),rgba(208,17,36,.82));border-color:rgba(255,255,255,.16)}.hero-project-btn{justify-self:start;background:rgba(255,255,255,.08)!important;color:#fff!important;border-color:rgba(255,255,255,.20)!important}.hero-project-btn:hover{background:rgba(255,255,255,.16)!important}
.dashboard-kpi-grid{gap:16px!important}.dashboard-kpi-card{position:relative;overflow:hidden;border:1px solid #e5edf8;background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);box-shadow:0 16px 30px rgba(15,23,42,.06);transition:.18s ease}.dashboard-kpi-card:hover{transform:translateY(-3px);box-shadow:0 22px 38px rgba(15,23,42,.10)}.dashboard-kpi-card:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:var(--tone,#0f4aa2)}.dashboard-kpi-card:after{content:"";position:absolute;right:-18px;top:-18px;width:92px;height:92px;border-radius:50%;background:linear-gradient(180deg,rgba(15,74,162,.08),rgba(15,74,162,0));pointer-events:none}.dashboard-kpi-card.tone-blue{--tone:#0f4aa2}.dashboard-kpi-card.tone-red{--tone:#b40718}.dashboard-kpi-card.tone-green{--tone:#15803d}.dashboard-kpi-card.tone-purple{--tone:#7c3aed}.dashboard-kpi-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.dashboard-kpi-top small{font-size:11px;text-transform:uppercase;letter-spacing:.45px;font-weight:900;color:#64748b}.dashboard-kpi-badge{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,var(--tone,#0f4aa2),rgba(255,255,255,.24));color:#fff;box-shadow:0 14px 26px rgba(15,23,42,.12)}.dashboard-kpi-card .stat-label{font-weight:900;color:#475569;font-size:12px;text-transform:uppercase;letter-spacing:.4px}.dashboard-kpi-card .stat-value{color:#061b35}.dashboard-kpi-card .stat-sub{margin-top:8px}
.dashboard-filter-card{padding:22px}.dashboard-filter-form .form-field label{font-weight:900;color:#334155}.dashboard-filter-form .form-field select{border-radius:14px;border:1px solid #dbe4f0;background:#fff;padding:13px 14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}.dashboard-filter-actions .btn{min-height:48px;border-radius:14px;padding-inline:16px}.filter-chip{box-shadow:0 8px 20px rgba(29,78,216,.10)}
.dashboard-charts-modern{gap:18px}.modern-chart-panel{border:1px solid #e9eef7;background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);box-shadow:0 18px 34px rgba(15,23,42,.06);overflow:hidden}.modern-chart-panel:before{content:"";display:block;height:5px;background:var(--panel-tone,#0f4aa2)}.modern-chart-panel.tone-blue{--panel-tone:#0f4aa2}.modern-chart-panel.tone-green{--panel-tone:#15803d}.modern-chart-panel.tone-red{--panel-tone:#b40718}.modern-chart-panel.tone-slate{--panel-tone:#475569}.card-head.rich{margin-bottom:8px}.card-head.rich .chart-kicker{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef4ff;color:#1d4ed8;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}.card-head.rich h3{font-size:20px}.card-head.rich>div{display:grid}.modern-chart-panel .dashboard-note{margin-top:14px;background:#f8fafc;border:1px solid #e6edf5;color:#64748b}.chart-box{background:radial-gradient(circle at top right,rgba(96,165,250,.08),transparent 35%),#fff;border-radius:14px;padding:8px}
.peru-map-card-modern{border:1px solid #e5edf7;background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);box-shadow:0 22px 44px rgba(15,23,42,.07)}.peru-map-stage{background:radial-gradient(circle at 25% 15%,rgba(59,130,246,.14),transparent 28%),radial-gradient(circle at 80% 0%,rgba(255,255,255,.72),transparent 22%),linear-gradient(180deg,#f9fcff 0%,#edf4fb 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}.peru-map-summary,.peru-map-ranking,.peru-map-legend{background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);border-color:#e5edf6}.peru-map-summary strong,.peru-map-ranking strong,.peru-map-legend strong{font-size:16px}.dept-rank-item{box-shadow:0 8px 18px rgba(15,23,42,.04)}
@media(max-width:1180px){.dashboard-hero-modern{grid-template-columns:1fr}.dashboard-section-head{flex-direction:column;align-items:flex-start}.dashboard-section-head p{text-align:left;max-width:none}}
@media(max-width:720px){.dashboard-hero-modern{padding:24px}.dashboard-hero-copy h2{font-size:30px}.dashboard-hero-pills span{width:100%;justify-content:center}.hero-project-btn{width:100%;justify-self:stretch}.dashboard-section-head h3{font-size:20px}.dashboard-filter-card{padding:18px}}

/* v1.0.108 - Rediseño visual del dashboard y mapa realzado del Perú */
.dashboard-hero{background:radial-gradient(circle at top left,rgba(59,130,246,.28),transparent 26%),linear-gradient(135deg,#061b35 0%,#0f2747 52%,#b40718 100%);box-shadow:0 24px 48px rgba(15,23,42,.18)}
.dashboard-hero p{color:#e6edf7}.dashboard-period{backdrop-filter:blur(4px);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.dashboard-filter-card,.chart-panel,.peru-map-card{box-shadow:0 18px 40px rgba(15,23,42,.08)}
.dashboard-filter-card{border:1px solid #dbe7f3;background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%)}
.dashboard-filter-form .form-field label{font-size:12px;font-weight:900;color:#061b35;text-transform:uppercase;letter-spacing:.3px}.dashboard-filter-form select{border:1px solid #cbd5e1;background:#fff;box-shadow:0 6px 14px rgba(15,23,42,.04)}
.dashboard-filter-actions .btn{box-shadow:0 10px 24px rgba(15,23,42,.08)}
.stat-card{position:relative;overflow:hidden;box-shadow:0 14px 28px rgba(15,23,42,.08);transition:transform .18s ease,box-shadow .18s ease;border:1px solid #e5eef6}.stat-card:before{content:"";position:absolute;inset:auto -30px -42px auto;width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,rgba(37,99,235,.08),rgba(180,7,24,.10))}.stat-card:hover{transform:translateY(-3px);box-shadow:0 22px 38px rgba(15,23,42,.12)}.stat-card .stat-value{color:#061b35}.stat-card .stat-sub{color:#64748b;font-weight:800}.stat-card .stat-icon{box-shadow:0 12px 24px rgba(6,27,53,.18)}
.chart-panel{border:1px solid #e6edf5;background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%)}.card-head{padding-bottom:10px;border-bottom:1px solid #eef2f7}.card-head h3{font-size:19px}.chart-box{padding-top:8px}
.peru-map-card{border:1px solid #dbe7f3;background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%)}
.peru-map-layout{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:22px}.peru-map-stage{display:flex;align-items:center;justify-content:center;min-height:780px;padding:22px;border:1px solid #dce8f4;background:radial-gradient(circle at top left,rgba(96,165,250,.18),transparent 26%),linear-gradient(180deg,#f8fbff 0%,#eef5fb 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.peru-map-3d{position:relative;width:100%;max-width:700px;min-height:720px;height:auto;margin:0;transform:none!important;transform-style:flat}.peru-map-3d:before{display:none!important}
.peru-svg-map{width:100%;height:auto;max-height:720px;display:block}.peru-country-outline{fill:#f1f5f9;stroke:#cbd5e1;stroke-width:6;stroke-linejoin:round}.peru-department{cursor:default;transition:transform .16s ease}.peru-department-shape{stroke-linejoin:round;transition:filter .16s ease,transform .16s ease,opacity .16s ease}.peru-department.active:hover .peru-department-shape{filter:brightness(1.04) saturate(1.08)}.peru-department.active .peru-department-shape{opacity:1}.peru-department.inactive .peru-department-shape{opacity:.92}.peru-label{font-family:Inter,Segoe UI,Arial,sans-serif;font-weight:900;pointer-events:none}.peru-label-short{letter-spacing:.45px}.peru-label-count{font-size:14px}
.peru-map-summary,.peru-map-ranking,.peru-map-legend{border:1px solid #e5edf6;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%)}.peru-map-summary strong,.peru-map-ranking strong,.peru-map-legend strong{font-size:15px}.dept-rank-item{box-shadow:0 8px 18px rgba(15,23,42,.05)}.dept-rank-value{min-width:34px;text-align:right}
.intensity-scale{grid-template-columns:repeat(4,minmax(0,1fr))}.intensity-step.low{background:#e2e8f0}.intensity-step.mid{background:#93c5fd}.intensity-step.high{background:#60a5fa}.intensity-step.max{background:#b40718}.intensity-labels{font-size:11px}
@media(max-width:1320px){.peru-map-layout{grid-template-columns:1fr}.peru-map-stage{min-height:680px}}
@media(max-width:900px){.peru-map-stage{min-height:620px;padding:14px}.peru-map-3d{min-height:620px}.peru-svg-map{max-height:640px}.card-head h3{font-size:17px}}
@media(max-width:720px){.dashboard-hero{padding:20px}.stat-card{padding:16px}.peru-map-stage{min-height:520px}.peru-map-3d{min-height:520px}.peru-label-short{font-size:8px!important}.peru-label-count{font-size:11px!important}}

/* v1.0.109 - Mapa real del Perú desde GeoPackage departamental */
.peru-map-stage{position:relative;overflow:hidden;min-height:820px;background:radial-gradient(circle at 18% 10%,rgba(59,130,246,.18),transparent 28%),radial-gradient(circle at 78% 8%,rgba(14,165,233,.12),transparent 24%),linear-gradient(180deg,#f8fbff 0%,#edf5fc 100%)}
.peru-map-stage:before{content:"";position:absolute;inset:32px;border-radius:30px;background:linear-gradient(135deg,rgba(255,255,255,.78),rgba(255,255,255,0));pointer-events:none}
.peru-map-3d{z-index:1;display:flex;align-items:center;justify-content:center;width:100%;max-width:780px;min-height:760px;margin:0 auto;perspective:1400px;transform:none!important}
.peru-map-3d:before{display:none!important}.peru-svg-map.peru-real-map{width:100%;height:auto;max-height:780px;display:block;overflow:visible;filter:drop-shadow(0 26px 32px rgba(15,23,42,.16));transform:rotateX(0deg);transform-origin:center}.peru-real-extrusion{transform:translate(13px,17px)}.peru-department-extrude{stroke:none;pointer-events:none}.peru-real-departments{transform:translate(0,0)}.peru-department-shape{vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;transition:filter .16s ease,transform .16s ease,opacity .16s ease}.peru-department.active .peru-department-shape{filter:brightness(1.02) saturate(1.06);cursor:default}.peru-department.active:hover .peru-department-shape{filter:brightness(1.10) saturate(1.12);transform:translate(-2px,-2px)}.peru-department.inactive .peru-department-shape{opacity:.96}.peru-label{font-family:Inter,Segoe UI,Arial,sans-serif;font-weight:950;fill:#fff;letter-spacing:.35px;paint-order:stroke;stroke:#102033;stroke-width:4px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.peru-label-count{font-weight:950}.dept-color-legend{display:grid;gap:8px;max-height:230px;overflow:auto;padding-right:4px;margin-bottom:8px}.dept-color-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px 9px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;box-shadow:0 6px 14px rgba(15,23,42,.04)}.dept-color-item span{width:18px;height:18px;border-radius:6px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.62),0 3px 8px rgba(15,23,42,.16)}.dept-color-item b{font-size:12px;color:#061b35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dept-color-item small{min-width:28px;text-align:right;font-size:12px;font-weight:950;color:#b40718}.map-error b{color:#061b35}.peru-map-legend small{margin-top:8px}.peru-map-summary,.peru-map-ranking,.peru-map-legend{position:relative;z-index:2}.dept-rank-badge{background:linear-gradient(135deg,#061b35,#0f4aa2)}
@media(max-width:1320px){.peru-map-stage{min-height:760px}.peru-map-3d{max-width:720px;min-height:700px}.peru-svg-map.peru-real-map{max-height:720px}}
@media(max-width:900px){.peru-map-stage{min-height:660px;padding:12px}.peru-map-3d{min-height:620px}.peru-svg-map.peru-real-map{max-height:640px}.dept-color-legend{max-height:260px}}
@media(max-width:720px){.peru-map-stage{min-height:560px}.peru-map-3d{min-height:520px}.peru-svg-map.peru-real-map{max-height:540px}.peru-label-short{font-size:10px!important}.peru-label-count{font-size:12px!important}.dept-color-legend{max-height:none}}
@media(max-width:720px){.peru-map-3d{width:100%!important;height:auto!important;max-width:100%!important;transform:none!important}}


/* v1.0.113 - Orden de gráficos de ranking en filas de 2 */
.dashboard-charts-grid .paired-ranking-panel{
    grid-column:auto!important;
    min-height:390px;
}
.dashboard-charts-grid .paired-ranking-panel .chart-box.tall{
    min-height:315px;
}
@media(max-width:1180px){
    .dashboard-charts-grid .paired-ranking-panel{
        grid-column:1/-1!important;
    }
}


/* v1.0.114 - Dashboard inicia directamente en filtros */
.dashboard-shell-modern{
    padding-top:0;
}
.dashboard-filter-card{
    margin-top:0;
}


/* v1.0.115 - Gráficos combinados de beneficiarios e inversión */
.dashboard-charts-grid .combined-ranking-panel{
    grid-column:auto!important;
    min-height:430px;
}
.dashboard-charts-grid .combined-ranking-panel .combined-chart-box{
    min-height:345px;
}
@media(max-width:1180px){
    .dashboard-charts-grid .combined-ranking-panel{
        grid-column:1/-1!important;
    }
}


/* v1.0.116 - Pasteles más legibles: leyenda solo sector y valores en gráfico */
.dashboard-charts-grid .pie-sector-panel{
    min-height:430px;
}
.dashboard-charts-grid .pie-sector-panel .card-head{
    margin-bottom:8px;
}
.dashboard-charts-grid .pie-sector-panel .pie-chart-box{
    min-height:350px;
    padding:4px 4px 0;
}
@media(max-width:900px){
    .dashboard-charts-grid .pie-sector-panel{
        min-height:410px;
    }
    .dashboard-charts-grid .pie-sector-panel .pie-chart-box{
        min-height:330px;
    }
}


/* v1.0.118 - Tabla de agrupaciones gerenciales en dashboard */
.dashboard-management-groups-card{
    border:1px solid #e5edf7;
    background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);
    box-shadow:0 18px 34px rgba(15,23,42,.06);
    margin-bottom:18px;
}
.dashboard-management-groups-table th{
    white-space:nowrap;
}
.dashboard-management-groups-table td{
    vertical-align:middle;
}
.dashboard-management-groups-table td:nth-child(4){
    text-align:center;
    white-space:nowrap;
}

/* v1.0.122 - Importación de gerentes de proyecto */
.dashboard-management-groups-table th:nth-child(5),
.dashboard-management-groups-table td:nth-child(5){
    text-align:center;
    white-space:nowrap;
}




/* v1.0.126 - Valores de gráficos de pastel más visibles */
.dashboard-charts-grid .pie-sector-panel{
    min-height: 470px;
}
.dashboard-charts-grid .pie-sector-panel .pie-chart-box{
    min-height: 390px;
    padding: 8px 8px 2px;
}
.dashboard-charts-grid .pie-sector-panel canvas{
    filter: drop-shadow(0 8px 14px rgba(15,23,42,.08));
}
@media(max-width:900px){
    .dashboard-charts-grid .pie-sector-panel{
        min-height: 430px;
    }
    .dashboard-charts-grid .pie-sector-panel .pie-chart-box{
        min-height: 350px;
    }
}


/* v1.0.127 - Cuadro general de fecha de actualización de gerentes */
.dashboard-update-box{
    display:flex;
    justify-content:flex-end;
    margin:-6px 0 12px;
}
.dashboard-update-box > div{
    min-width:280px;
    border:1px solid #dbe7f5;
    border-radius:18px;
    padding:12px 16px;
    background:linear-gradient(135deg,#ffffff 0%,#f3f8ff 100%);
    box-shadow:0 12px 24px rgba(15,23,42,.07);
}
.dashboard-update-box span{
    display:block;
    color:#64748b;
    font-size:12px;
    font-weight:900;
    letter-spacing:.02em;
    text-transform:uppercase;
    margin-bottom:4px;
}
.dashboard-update-box strong{
    display:block;
    color:#061b35;
    font-size:16px;
    font-weight:950;
}
@media(max-width:760px){
    .dashboard-update-box{
        justify-content:stretch;
    }
    .dashboard-update-box > div{
        width:100%;
        min-width:0;
    }
}


/* v1.0.128 - Botón Limpiar visible en filtros del dashboard */
.dashboard-filter-card .actions .btn,
.dashboard-filter-card .actions a.btn,
.dashboard-filter-card .actions button.btn{
    opacity:1 !important;
    visibility:visible !important;
}
.dashboard-filter-card .actions .btn:not(.primary):not(.danger),
.dashboard-filter-card .actions a.btn:not(.primary):not(.danger),
.dashboard-filter-card .actions button.btn:not(.primary):not(.danger){
    background:#ffffff !important;
    color:#061b35 !important;
    border:1px solid #cbd5e1 !important;
    box-shadow:0 10px 22px rgba(15,23,42,.08) !important;
}
.dashboard-filter-card .actions .btn:not(.primary):not(.danger) i,
.dashboard-filter-card .actions a.btn:not(.primary):not(.danger) i,
.dashboard-filter-card .actions button.btn:not(.primary):not(.danger) i{
    color:#061b35 !important;
}
.dashboard-filter-card .actions .btn:not(.primary):not(.danger):hover,
.dashboard-filter-card .actions a.btn:not(.primary):not(.danger):hover,
.dashboard-filter-card .actions button.btn:not(.primary):not(.danger):hover{
    background:#f8fafc !important;
    color:#b40718 !important;
    border-color:#b40718 !important;
}
.dashboard-filter-card .actions .btn:not(.primary):not(.danger):hover i,
.dashboard-filter-card .actions a.btn:not(.primary):not(.danger):hover i,
.dashboard-filter-card .actions button.btn:not(.primary):not(.danger):hover i{
    color:#b40718 !important;
}


/* v1.0.130 - Capa responsiva general para celular y tablet */
html{
    width:100%;
    overflow-x:hidden;
    -webkit-text-size-adjust:100%;
}
body{
    width:100%;
    overflow-x:hidden;
}
img,video,canvas,svg{
    max-width:100%;
}
.app-shell,
.main,
.content,
.card,
.panel,
.table-wrap,
.map-card,
.peru-map-card{
    min-width:0;
}
@media (hover:none){
    .btn:hover{
        transform:none;
        box-shadow:none;
    }
}

/* Tablet */
@media(max-width:1180px){
    .content{
        padding:18px 18px 28px!important;
    }
    .stats,
    .dashboard-stats,
    .dashboard-kpi-grid{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    .form-grid,
    .form-grid.three,
    .form-grid.four,
    .catalog-filter,
    .monthly-filter-form,
    .layer-filter-form,
    .filters{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    .catalog-filter .actions,
    .monthly-filter-form .actions,
    .layer-filter-form .actions,
    .filters .actions,
    .dashboard-filter-actions{
        grid-column:1/-1!important;
    }
    .dashboard-charts-grid,
    .dashboard-charts-modern{
        grid-template-columns:1fr!important;
    }
    .panel-title{
        align-items:flex-start!important;
    }
}

/* Menú lateral en celular/tablet */
@media(max-width:920px){
    .app-shell{
        display:block!important;
        min-height:100svh;
    }
    .main{
        margin-left:0!important;
        width:100%!important;
        min-height:100svh;
    }
    .sidebar{
        width:min(88vw,330px)!important;
        max-width:330px!important;
        transform:translateX(-105%)!important;
        transition:transform .22s ease!important;
        z-index:1000!important;
        box-shadow:18px 0 44px rgba(0,0,0,.34)!important;
    }
    .sidebar.open{
        transform:translateX(0)!important;
    }
    .app-body.sidebar-mobile-open{
        overflow:hidden!important;
    }
    .app-body.sidebar-mobile-open::before{
        content:"";
        position:fixed;
        inset:0;
        background:rgba(2,6,23,.48);
        z-index:999;
        backdrop-filter:blur(2px);
    }
    .brand{
        min-height:84px!important;
        height:auto!important;
        padding:16px 18px!important;
    }
    .brand-title{
        font-size:26px!important;
    }
    .brand-subtitle{
        font-size:11px!important;
        line-height:1.2!important;
    }
    .sidebar-nav{
        padding:12px 10px 90px!important;
    }
    .sidebar-nav a{
        min-height:44px!important;
        padding:11px 12px!important;
        font-size:14px!important;
    }
    .sidebar-user{
        position:sticky!important;
        bottom:0!important;
        background:linear-gradient(180deg,rgba(6,27,53,.88),#061b35)!important;
        padding-bottom:calc(14px + env(safe-area-inset-bottom))!important;
    }
    .topbar{
        position:sticky!important;
        top:0!important;
        min-height:64px!important;
        height:auto!important;
        padding:10px 12px!important;
        gap:10px!important;
        z-index:900!important;
    }
    .menu-toggle{
        width:44px!important;
        height:44px!important;
        flex:0 0 44px!important;
        border-radius:12px!important;
    }
    .topbar > div:not(.topbar-actions){
        min-width:0!important;
        flex:1 1 auto!important;
    }
    .topbar h1{
        font-size:14px!important;
        line-height:1.15!important;
        letter-spacing:.15px!important;
        white-space:normal!important;
    }
    .topbar p{
        display:none!important;
    }
    .topbar-actions{
        margin-left:0!important;
        gap:6px!important;
        flex:0 0 auto!important;
    }
    .topbar-actions .btn{
        padding:9px 10px!important;
        min-height:40px!important;
        font-size:0!important;
        border-radius:11px!important;
    }
    .topbar-actions .btn i{
        font-size:15px!important;
        margin:0!important;
    }
}

/* Celular */
@media(max-width:760px){
    :root{
        --radius:14px;
    }
    .content{
        padding:14px 10px 24px!important;
    }
    .card,
    .panel{
        border-radius:14px!important;
    }
    .panel{
        padding:14px!important;
    }
    .panel-title,
    .card-head,
    .dashboard-section-head{
        flex-direction:column!important;
        align-items:flex-start!important;
        gap:8px!important;
        margin-bottom:12px!important;
    }
    .panel-title h2,
    .card-head h3,
    .dashboard-section-head h3{
        font-size:17px!important;
        line-height:1.2!important;
    }
    .panel-title p,
    .dashboard-section-head p,
    .card-head span{
        font-size:12px!important;
        text-align:left!important;
    }
    .stats,
    .dashboard-stats,
    .dashboard-kpi-grid,
    .dashboard-kpi-grid.dashboard-stats{
        grid-template-columns:1fr!important;
        gap:10px!important;
    }
    .stat-card,
    .dashboard-kpi-card{
        min-height:auto!important;
        padding:14px!important;
        gap:12px!important;
    }
    .stat-icon,
    .dashboard-kpi-badge{
        width:44px!important;
        height:44px!important;
        min-width:44px!important;
        font-size:18px!important;
    }
    .stat-value{
        font-size:24px!important;
        line-height:1.1!important;
        overflow-wrap:anywhere;
    }

    .form-grid,
    .form-grid.three,
    .form-grid.four,
    .catalog-filter,
    .monthly-filter-form,
    .layer-filter-form,
    .filters,
    .dashboard-filter-form,
    .map-card .filters{
        grid-template-columns:1fr!important;
        gap:10px!important;
    }
    .form-field.full{
        grid-column:auto!important;
    }
    .form-control,
    select,
    textarea,
    input[type="text"],
    input[type="number"],
    input[type="date"],
    input[type="email"],
    input[type="password"],
    input[type="file"],
    input[type="color"]{
        min-height:44px!important;
        font-size:16px!important;
        border-radius:12px!important;
    }
    textarea{
        min-height:120px!important;
    }
    .actions,
    .dashboard-filter-actions,
    .layer-filter-form .actions,
    .catalog-filter .actions{
        width:100%!important;
        display:grid!important;
        grid-template-columns:1fr!important;
        gap:8px!important;
    }
    .actions .btn,
    .dashboard-filter-actions .btn,
    .btn{
        width:100%;
        min-height:44px;
        padding:11px 12px;
        white-space:normal;
        text-align:center;
    }
    .actions .inline-form,
    .actions form{
        width:100%;
    }
    .actions .inline-form .btn,
    .actions form .btn{
        width:100%;
    }

    .dashboard-filter-card{
        padding:14px!important;
        margin-bottom:14px!important;
    }
    .dashboard-update-box{
        justify-content:stretch!important;
        margin:0 0 10px!important;
    }
    .dashboard-update-box > div{
        min-width:0!important;
        width:100%!important;
        padding:11px 13px!important;
    }
    .dashboard-update-box strong{
        font-size:14px!important;
    }

    .dashboard-charts-grid,
    .dashboard-charts-modern{
        gap:12px!important;
    }
    .modern-chart-panel,
    .chart-panel,
    .dashboard-charts-grid .pie-sector-panel,
    .dashboard-charts-grid .combined-ranking-panel{
        min-height:auto!important;
    }
    .chart-box,
    .chart-box.tall,
    .dashboard-charts-grid .pie-sector-panel .pie-chart-box,
    .dashboard-charts-grid .combined-ranking-panel .combined-chart-box{
        min-height:300px!important;
        height:300px!important;
        padding:4px!important;
    }
    .dashboard-charts-grid .pie-sector-panel .pie-chart-box{
        min-height:330px!important;
        height:330px!important;
    }

    .table-wrap{
        width:100%!important;
        overflow-x:auto!important;
        -webkit-overflow-scrolling:touch!important;
        border-radius:12px!important;
        border:1px solid #e5edf7!important;
        background:#fff!important;
        position:relative!important;
    }
    .table{
        min-width:760px!important;
    }
    .table th,
    .table td{
        padding:10px 11px!important;
        font-size:12.5px!important;
        vertical-align:top!important;
    }
    .table th{
        font-size:11px!important;
        white-space:nowrap!important;
    }
    .badge{
        white-space:nowrap;
    }

    .mg-project-picker{
        padding:10px!important;
    }
    .mg-project-toolbar{
        flex-direction:column!important;
        align-items:stretch!important;
    }
    .mg-project-search-wrap{
        min-height:44px!important;
    }
    .mg-project-list{
        max-height:360px!important;
    }
    .mg-project-option{
        padding:12px!important;
        font-size:13px!important;
        align-items:flex-start!important;
    }

    .project-profile .project-overview-grid,
    .project-profile .project-detail-grid,
    .project-profile .finance-grid,
    .project-profile .info-card-grid,
    .project-profile .project-narrative-card,
    .project-profile .project-kpi-board{
        grid-template-columns:1fr!important;
    }
    .project-profile .project-hero-card{
        padding:14px!important;
        border-radius:14px!important;
    }
    .project-profile .project-hero-main h1{
        font-size:18px!important;
        line-height:1.2!important;
    }
    .project-profile .project-hero-actions{
        width:100%!important;
    }
    .project-profile .project-hero-actions .btn{
        width:100%!important;
    }
    .project-visual-media{
        height:200px!important;
    }

    .map-layout,
    .peru-map-layout,
    .project-map-shell{
        grid-template-columns:1fr!important;
    }
    .map{
        height:480px!important;
        min-height:420px!important;
    }
    .map-detail{
        max-height:none!important;
        min-height:auto!important;
    }
    .detail-tabs{
        overflow-x:auto!important;
        display:flex!important;
        gap:4px!important;
        padding-bottom:2px!important;
    }
    .detail-tabs button{
        flex:0 0 auto!important;
        min-width:120px!important;
        white-space:nowrap!important;
    }
}

/* Celular pequeño */
@media(max-width:420px){
    .content{
        padding-left:8px!important;
        padding-right:8px!important;
    }
    .topbar h1{
        font-size:12.5px!important;
    }
    .topbar-actions{
        display:none!important;
    }
    .chart-box,
    .chart-box.tall,
    .dashboard-charts-grid .pie-sector-panel .pie-chart-box,
    .dashboard-charts-grid .combined-ranking-panel .combined-chart-box{
        height:285px!important;
        min-height:285px!important;
    }
    .dashboard-charts-grid .pie-sector-panel .pie-chart-box{
        height:310px!important;
        min-height:310px!important;
    }
    .table{
        min-width:680px!important;
    }
}


/* v1.0.131 - Dashboard sin filtro de subdirección */
.dashboard-filter-form{
    grid-template-columns:repeat(2,minmax(220px,1fr)) auto!important;
}
@media(max-width:980px){
    .dashboard-filter-form{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    .dashboard-filter-actions{
        grid-column:1/-1!important;
    }
}
@media(max-width:760px){
    .dashboard-filter-form{
        grid-template-columns:1fr!important;
    }
}

/* Pegman estilo Google Maps: sprite indicado por el usuario. */

/* Dashboard con filtros ampliados: departamento, sector, etapa y estado. */
.dashboard-filter-form{grid-template-columns:repeat(4,minmax(155px,1fr)) auto!important}
@media(max-width:1100px){.dashboard-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))!important}.dashboard-filter-actions{grid-column:1/-1!important}}
@media(max-width:720px){.dashboard-filter-form{grid-template-columns:1fr!important}}
.package-progress-table{min-width:1320px}
.card-soft{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px}

/* Editor enriquecido para Meta general del proyecto */
.rich-editor-wrap{border:1px solid #cbd5e1;border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 12px 28px rgba(15,23,42,.05)}
.rich-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:10px;background:linear-gradient(180deg,#f8fafc,#eef2f7);border-bottom:1px solid #e2e8f0}
.rich-toolbar button,.rich-select,.rich-color{height:34px;border:1px solid #cbd5e1;background:#fff;border-radius:9px;color:#334155;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;line-height:1;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.rich-toolbar button{width:34px;cursor:pointer;transition:.15s ease}
.rich-toolbar button:hover,.rich-color:hover,.rich-select:hover{border-color:#b40718;color:#b40718;background:#fff7f7}
.rich-select{width:auto;min-width:118px;padding:0 10px;outline:none}
.rich-separator{width:1px;height:26px;background:#cbd5e1;margin:0 3px}
.rich-color{padding:0 8px;cursor:pointer;position:relative}
.rich-color input{width:22px;height:22px;border:0;padding:0;background:transparent;cursor:pointer}
.rich-editor-area{min-height:180px;padding:16px 18px;outline:none;color:#111827;font-size:14px;line-height:1.65;background:#fff}
.rich-editor-area:empty:before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none}
.rich-editor-area h3,.rich-text-output h3{font-size:18px;line-height:1.3;margin:12px 0 8px;color:#0f172a}
.rich-editor-area h4,.rich-text-output h4{font-size:15px;line-height:1.35;margin:10px 0 6px;color:#1e293b}
.rich-editor-area p,.rich-text-output p{margin:0 0 10px}
.rich-editor-area ul,.rich-editor-area ol,.rich-text-output ul,.rich-text-output ol{margin:8px 0 12px 24px;padding:0}
.rich-editor-area li,.rich-text-output li{margin:4px 0}
.rich-editor-area blockquote,.rich-text-output blockquote{margin:10px 0;padding:10px 14px;border-left:4px solid #b40718;background:#fff5f5;border-radius:8px;color:#475569}
.rich-editor-source{display:none!important}
.rich-text-output{font-size:14px;line-height:1.65;color:#334155;word-break:break-word}
.rich-text-output a{color:#b40718;text-decoration:underline;font-weight:700}
.rich-text-output>:last-child{margin-bottom:0}
.text-block-card .rich-text-output{margin-top:10px}
@media(max-width:720px){.rich-toolbar{gap:5px;padding:8px}.rich-toolbar button{width:32px;height:32px}.rich-select{min-width:105px}.rich-editor-area{min-height:160px;padding:14px}}

/* v1.0.132 - Tabla elegante de paquetes en ficha del proyecto */
.project-packages-overview{overflow:hidden!important}
.package-summary-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.package-summary-strip article{position:relative;overflow:hidden;border:1px solid #e2e8f0;border-radius:16px;padding:13px 14px;background:linear-gradient(180deg,#ffffff 0%,#f8fafc 100%);box-shadow:0 12px 28px rgba(15,23,42,.05)}
.package-summary-strip article:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,#b40718,#061b35)}
.package-summary-strip span{display:block;color:#64748b;font-size:11px;font-weight:1000;text-transform:uppercase;letter-spacing:.28px;margin-bottom:6px}
.package-summary-strip strong{display:block;color:#061b35;font-size:clamp(18px,1.4vw,24px);line-height:1.15;letter-spacing:-.25px}
.package-summary-strip small{display:block;color:#64748b;font-size:11px;font-weight:800;margin-top:4px}
.project-package-table-wrap{overflow:auto;border:1px solid #e2e8f0;border-radius:18px;background:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.project-package-table{width:100%;min-width:1420px;border-collapse:separate;border-spacing:0;background:#fff}
.project-package-table th{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,#061b35,#082542);color:#fff;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.35px;padding:13px 12px;border-bottom:1px solid rgba(255,255,255,.12);white-space:nowrap}
.project-package-table th:first-child{border-top-left-radius:16px}
.project-package-table th:last-child{border-top-right-radius:16px}
.project-package-table td{padding:13px 12px;border-bottom:1px solid #eef2f7;color:#334155;font-size:13px;vertical-align:middle;background:#fff}
.project-package-table tbody tr:nth-child(even) td{background:#fbfdff}
.project-package-table tbody tr:hover td{background:#fff7f7}
.project-package-table tbody tr:last-child td{border-bottom:0}
.package-name-cell{min-width:210px;color:#061b35;background:linear-gradient(90deg,#fff,#ffffff)!important}
.package-name-cell strong{display:block;color:#061b35;line-height:1.25}
.money-cell{font-variant-numeric:tabular-nums;white-space:nowrap;color:#0f172a;font-weight:800}
.money-cell.strong,.project-package-table .strong{font-weight:1000;color:#061b35}
.package-percent-cell{display:grid;gap:6px;min-width:132px}
.package-percent-cell strong{color:#061b35;font-size:13px;font-weight:1000}
.package-mini-bar{height:8px;border-radius:999px;background:#e5e7eb;overflow:hidden;border:1px solid #dbe2ea}
.package-mini-bar span{display:block;height:100%;border-radius:inherit;background:#1d4ed8}
.package-mini-bar.physical span{background:#b40718}
.package-unit-pill,.package-layer-count{display:inline-flex;align-items:center;justify-content:center;min-width:38px;border-radius:999px;padding:5px 9px;background:#f1f5f9;color:#061b35;border:1px solid #dbe2ea;font-weight:1000;font-size:12px;text-transform:uppercase}
.package-layer-count{background:#dbeafe;color:#1e40af;border-color:#bfdbfe}
.project-package-table small{color:#64748b;font-weight:800;white-space:nowrap}
@media(max-width:1280px){.package-summary-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.package-summary-strip{grid-template-columns:1fr}.project-package-table{min-width:1280px}.project-package-table th,.project-package-table td{padding:11px 10px;font-size:12px}}

/* =========================================================
   v1.0.132 - Capa visual ejecutiva inspirada en DIMCOST
   Paleta clara, acentos suaves, tablas mas limpias y pills.
   ========================================================= */
:root{
    --navy:#23384f;
    --navy-2:#2f4b64;
    --navy-3:#e8eef5;
    --red:#dc5757;
    --red-2:#ef6b5f;
    --text:#172033;
    --muted:#68788d;
    --border:#dfe6ef;
    --light:#f5f7fb;
    --shadow:0 10px 26px rgba(23,32,51,.08);
    --radius:14px;
    --soft-surface:#ffffff;
    --soft-surface-2:#f0f4f9;
    --accent:#0f766e;
    --accent-2:#2563eb;
    --accent-3:#7c3aed;
    --accent-4:#d97706;
    --danger:#dc5757;
}

html,
body,
button,
input,
select,
textarea,
table,
th,
td{
    font-family:"Calibri Light", Calibri, "Segoe UI", Arial, sans-serif;
}

body{
    background:linear-gradient(180deg,#fbfcfe 0%,#f3f6fb 46%,#eef3f8 100%);
    color:var(--text);
}

.content{
    padding:22px 26px 34px;
}

.sidebar{
    background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%);
    color:var(--text);
    border-right:1px solid var(--border);
    box-shadow:8px 0 24px rgba(23,32,51,.08);
}

.brand{
    height:96px;
    border-bottom:1px solid var(--border);
    padding:20px 22px;
}

.brand-mark span{
    background:linear-gradient(180deg,var(--accent),#14b8a6);
}

.brand-title{
    color:var(--text);
    font-size:27px;
    letter-spacing:.2px;
}

.brand-subtitle{
    color:var(--muted);
    font-weight:700;
}

.nav-section-title{
    color:#8a98aa;
    letter-spacing:1.1px;
}

.sidebar-nav a{
    color:#344256;
    border:1px solid transparent;
    border-radius:12px;
    font-weight:800;
}

.sidebar-nav a i{
    color:#64748b;
}

.sidebar-nav a:hover{
    background:#eef6ff;
    border-color:#d7e6f7;
    color:#1f3a5f;
    transform:translateX(2px);
}

.sidebar-nav a:hover i{
    color:var(--accent-2);
}

.sidebar-nav a.active{
    background:linear-gradient(135deg,#e7f8f5 0%,#edf4ff 100%);
    color:#0f4f4a;
    border-color:#bfe7df;
    box-shadow:0 10px 22px rgba(15,118,110,.13);
}

.sidebar-nav a.active i{
    color:var(--accent);
}

.sidebar-user{
    background:#eef4f9;
    border-color:#d9e3ee;
    color:var(--text);
}

.avatar{
    background:#dbeafe;
    color:#1d4ed8;
}

.sidebar-user-text small{
    color:var(--muted);
}

.logout{
    color:#dc5757;
}

.topbar{
    min-height:74px!important;
    height:auto!important;
    background:rgba(255,255,255,.92)!important;
    color:var(--text)!important;
    border-bottom:1px solid var(--border);
    box-shadow:0 8px 22px rgba(23,32,51,.07)!important;
    backdrop-filter:blur(12px);
    padding:13px 24px!important;
}

.topbar h1{
    color:#1f2b3f;
    font-size:16px!important;
    letter-spacing:.35px;
}

.topbar p{
    color:var(--muted);
    font-size:12px!important;
    max-width:900px;
}

.menu-toggle{
    background:#eef4fb;
    color:#1f3a5f;
    border:1px solid #dbe4ef;
}

.topbar .btn.ghost{
    background:#f7fafc!important;
    color:#1f3a5f!important;
    border-color:#dbe4ef!important;
}

.topbar .btn.danger{
    background:#fff5f5!important;
    color:#b42323!important;
    border:1px solid #fecaca!important;
}

.card,
.panel,
.dashboard-filter-card,
.modern-chart-panel,
.dashboard-management-groups-card,
.peru-map-card,
.project-section-card,
.project-visual-card,
.kpi-progress-card,
.module-group-card,
.catalog-filter{
    background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%)!important;
    border:1px solid var(--border)!important;
    border-radius:14px!important;
    box-shadow:var(--shadow)!important;
}

.panel,
.dashboard-filter-card,
.project-section-card{
    padding:18px!important;
}

.dashboard-shell-modern{
    gap:16px;
}

.dashboard-section-head{
    margin:4px 0 0;
}

.dashboard-section-head .section-eyebrow,
.section-eyebrow,
.chart-kicker{
    background:#e7f8f5!important;
    color:#0f766e!important;
    border:1px solid #bde8df;
    border-radius:999px;
    letter-spacing:.7px;
}

.dashboard-section-head h3,
.panel-title h2,
.card-head h3,
.section-heading h2{
    color:#1f2b3f!important;
    letter-spacing:.1px;
}

.dashboard-filter-form{
    gap:12px!important;
}

.dashboard-filter-form .form-field label,
.catalog-filter .form-field label,
.filters label,
.form-field label{
    color:#506178!important;
    font-size:11px!important;
    letter-spacing:.65px;
    text-transform:uppercase;
}

.form-control,
select,
textarea,
input[type="text"],
input[type="number"],
input[type="date"],
input[type="email"],
input[type="password"],
input[type="file"],
input[type="color"]{
    background:#f8fbff!important;
    border:1px solid #dce5ef!important;
    border-radius:10px!important;
    color:var(--text)!important;
    min-height:42px;
}

.form-control:focus,
select:focus,
textarea:focus,
input:focus{
    border-color:#7dd3c7!important;
    box-shadow:0 0 0 4px rgba(15,118,110,.10)!important;
    background:#fff!important;
}

.btn{
    min-height:40px;
    border-radius:10px;
    font-size:12px;
    font-weight:800;
    box-shadow:none;
}

.btn:hover{
    box-shadow:0 8px 18px rgba(23,32,51,.10);
}

.btn.primary{
    background:linear-gradient(135deg,#0f766e,#14b8a6)!important;
    border-color:#0f766e!important;
}

.btn.danger{
    background:linear-gradient(135deg,#dc5757,#ef6b5f)!important;
    border-color:transparent!important;
}

.btn.gray{
    background:#475569!important;
}

.btn.outline,
.btn:not(.primary):not(.danger):not(.gray):not(.ghost){
    background:#fff!important;
    color:#23384f!important;
    border-color:#dbe4ef!important;
}

.dashboard-filter-actions .btn:not(.primary):not(.danger),
.dashboard-filter-actions a.btn:not(.primary):not(.danger),
.dashboard-filter-actions button.btn:not(.primary):not(.danger){
    background:#fff!important;
    color:#23384f!important;
    border-color:#dbe4ef!important;
}

.filter-chip{
    background:#eef7ff!important;
    color:#1d4ed8!important;
    border-color:#bfdbfe!important;
    box-shadow:none!important;
}

.filter-chip-title{
    background:#e7f8f5!important;
    color:#0f766e!important;
    border-color:#bde8df!important;
}

.dashboard-filter-empty,
.empty{
    background:#f8fbff!important;
    border-color:#dbe4ef!important;
    color:#66758b!important;
}

.stats,
.dashboard-stats,
.dashboard-kpi-grid{
    gap:14px!important;
}

.dashboard-kpi-card,
.stat-card{
    display:block;
    min-height:128px;
    padding:16px!important;
}

.dashboard-kpi-card:before,
.stat-card:before{
    content:""!important;
    position:absolute!important;
    left:0!important;
    right:0!important;
    top:0!important;
    bottom:auto!important;
    width:auto!important;
    height:4px!important;
    border-radius:0!important;
    background:var(--tone,#0f766e)!important;
}

.dashboard-kpi-card:after,
.stat-card:after{
    background:linear-gradient(180deg,rgba(15,118,110,.08),rgba(15,118,110,0))!important;
}

.dashboard-kpi-card.tone-blue{--tone:#2563eb}
.dashboard-kpi-card.tone-red{--tone:#0f766e}
.dashboard-kpi-card.tone-green{--tone:#16a34a}
.dashboard-kpi-card.tone-purple{--tone:#7c3aed}

.dashboard-kpi-top{
    margin-bottom:12px;
}

.dashboard-kpi-badge,
.stat-icon{
    width:44px!important;
    height:44px!important;
    border-radius:13px!important;
    background:color-mix(in srgb,var(--tone,#0f766e) 14%,#fff)!important;
    color:var(--tone,#0f766e)!important;
    box-shadow:none!important;
}

.dashboard-kpi-top small,
.stat-label{
    color:#66758b!important;
    font-size:10.5px!important;
    letter-spacing:.75px!important;
}

.stat-value{
    color:#1f2b3f!important;
    font-size:26px!important;
    line-height:1.08!important;
}

.stat-sub{
    color:#738196!important;
    font-weight:700;
}

.modern-chart-panel:before{
    height:4px!important;
    background:var(--panel-tone,#0f766e)!important;
}

.modern-chart-panel.tone-blue{--panel-tone:#2563eb}
.modern-chart-panel.tone-green{--panel-tone:#0f766e}
.modern-chart-panel.tone-red{--panel-tone:#d97706}
.modern-chart-panel.tone-slate{--panel-tone:#64748b}

.chart-box{
    background:linear-gradient(180deg,#ffffff,#f8fbff)!important;
    border:1px solid #edf2f7;
    border-radius:12px!important;
}

.card-head{
    border-bottom:1px solid #edf2f7!important;
}

.table-wrap{
    border:1px solid var(--border);
    border-radius:13px;
    background:#fff;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}

.table{
    border-collapse:separate;
    border-spacing:0;
}

.table th{
    position:sticky;
    top:0;
    z-index:2;
    background:linear-gradient(180deg,#2f4b64,#23384f)!important;
    color:#fff!important;
    font-size:10.5px!important;
    letter-spacing:.55px!important;
    padding:11px 12px!important;
    border-right:1px solid rgba(255,255,255,.12);
}

.table td{
    padding:10px 12px!important;
    border-bottom:1px solid #edf2f7!important;
    color:#27364a;
}

.table tbody tr:nth-child(even) td{
    background:#fbfdff;
}

.table tr:hover td{
    background:#edf8f6!important;
}

.badge{
    border-radius:999px;
    padding:5px 10px;
    font-size:11px;
    border:1px solid transparent;
}

.badge.blue{
    background:#e7f8f5!important;
    color:#0f766e!important;
    border-color:#bde8df!important;
}

.badge.red{
    background:#fff1f2!important;
    color:#be123c!important;
    border-color:#fecdd3!important;
}

.badge.gray{
    background:#f1f5f9!important;
    color:#475569!important;
    border-color:#dbe4ef!important;
}

.progress,
.wide-progress,
.kpi-bar,
.package-mini-bar{
    height:8px!important;
    background:#e8eef5!important;
    border-radius:999px!important;
    border:0!important;
}

.progress span,
.wide-progress span,
.kpi-bar span,
.package-mini-bar span{
    background:linear-gradient(90deg,#0f766e,#14b8a6)!important;
}

.progress.blue span,
.wide-progress.gray span,
.package-mini-bar.physical span{
    background:linear-gradient(90deg,#2563eb,#60a5fa)!important;
}

.finance-progress-label b,
.package-percent-cell strong,
.popup-kpis strong,
.investment-box span,
.dept-rank-value{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:max-content;
    max-width:100%;
    padding:4px 9px;
    border-radius:999px;
    background:#e7f8f5;
    color:#0f766e!important;
    border:1px solid #bde8df;
    font-size:12px;
    font-weight:900;
}

.project-hero-card{
    background:radial-gradient(circle at 8% 0,rgba(20,184,166,.18),transparent 32%),linear-gradient(135deg,#23384f 0%,#2f4b64 52%,#0f766e 100%)!important;
    box-shadow:0 18px 40px rgba(35,56,79,.18)!important;
}

.project-hero-card:after{
    opacity:.12!important;
}

.hero-chip{
    background:rgba(255,255,255,.13)!important;
    border-color:rgba(255,255,255,.22)!important;
}

.project-visual-caption{
    background:#fff!important;
}

.kpi-progress-card.accent-red{--accent:#0f766e}
.kpi-progress-card.accent-blue{--accent:#2563eb}
.kpi-progress-card.accent-green{--accent:#16a34a}
.kpi-progress-card.accent-purple{--accent:#7c3aed}

.kpi-head i{
    background:color-mix(in srgb,var(--accent,#0f766e) 14%,#fff)!important;
}

.finance-tile,
.info-mini,
.text-block-card,
.visual-month-card,
.package-report-card,
.detail-layer-row,
.evidence-item,
.card-soft{
    background:#f8fbff!important;
    border:1px solid #dfe7f1!important;
    border-radius:13px!important;
}

.finance-tile strong,
.info-mini strong,
.package-report-card h3,
.layer-visual-item strong{
    color:#1f2b3f!important;
}

.info-mini i{
    color:#0f766e!important;
    background:#e7f8f5!important;
}

.filters{
    background:#ffffff!important;
    color:var(--text)!important;
    border:1px solid var(--border);
    border-radius:14px 14px 0 0!important;
    box-shadow:0 8px 18px rgba(23,32,51,.07);
}

.filters select,
.filters input{
    background:#f8fbff!important;
    color:var(--text)!important;
    border-color:#dce5ef!important;
}

.map-detail{
    background:#ffffff!important;
    color:var(--text)!important;
    border:1px solid var(--border);
    box-shadow:var(--shadow)!important;
}

.detail-header{
    background:linear-gradient(180deg,#ffffff,#f8fbff)!important;
    border-bottom:1px solid var(--border);
}

.detail-header h2,
.detail-item strong,
.detail-section-title{
    color:#1f2b3f!important;
}

.detail-icon{
    background:linear-gradient(135deg,#0f766e,#14b8a6)!important;
}

.detail-tabs{
    border-bottom:1px solid var(--border)!important;
}

.detail-tabs button{
    color:#64748b!important;
}

.detail-tabs button.active{
    color:#0f766e!important;
    border-color:#0f766e!important;
}

.detail-body,
.detail-item,
.detail-note,
.detail-help{
    color:#536175!important;
}

.investment-box{
    background:linear-gradient(135deg,#0f766e,#14b8a6)!important;
}

.legend,
.basemap-control,
.legend h4,
.basemap-control label,

.peru-map-stage{
    background:radial-gradient(circle at 18% 10%,rgba(20,184,166,.14),transparent 28%),linear-gradient(180deg,#fbfdff 0%,#edf4fb 100%)!important;
}

.dept-color-item,
.dept-rank-item,
.peru-map-summary,
.peru-map-ranking,
.peru-map-legend{
    background:#fff!important;
    border-color:#dfe7f1!important;
}

.public-form-page{
    background:linear-gradient(180deg,#fbfcfe,#eef3f8)!important;
}

.public-form-hero{
    background:linear-gradient(135deg,#23384f,#0f766e)!important;
    border-radius:18px!important;
    box-shadow:0 18px 40px rgba(35,56,79,.18)!important;
}

.public-wizard-steps button.active{
    background:linear-gradient(135deg,#0f766e,#14b8a6)!important;
    border-color:#0f766e!important;
}

.public-wizard-steps button.active span{
    background:#23384f!important;
}

.form-section-title,
.summary-group-title{
    background:#e7f8f5!important;
    color:#0f766e!important;
}

.project-package-table th{
    background:linear-gradient(180deg,#2f4b64,#23384f)!important;
}

.package-summary-strip article:before{
    background:linear-gradient(90deg,#0f766e,#2563eb)!important;
}

.package-name-cell strong,
.package-summary-strip strong{
    color:#1f2b3f!important;
}

::-webkit-scrollbar{
    width:8px;
    height:8px;
}

::-webkit-scrollbar-track{
    background:#eef3f8;
}

::-webkit-scrollbar-thumb{
    background:#cbd5e1;
    border-radius:999px;
}

::-webkit-scrollbar-thumb:hover{
    background:#94a3b8;
}

@media(max-width:920px){
    .sidebar{
        background:#ffffff!important;
    }
}

@media(max-width:760px){
    .content{
        padding:12px 10px 24px!important;
    }

    .topbar{
        padding:10px 12px!important;
    }

    .dashboard-kpi-card,
    .stat-card{
        min-height:auto!important;
    }

    .table th,
    .table td{
        padding:9px 10px!important;
    }
}

/* v1.0.137 - Visor principal con Mapbox 3D y relieve realista */
.mapboxgl-map{
    font-family:Inter,Segoe UI,Arial,sans-serif!important;
}

.map .mapboxgl-canvas{
    outline:none!important;
}

.map .mapboxgl-ctrl-top-left{
    top:14px!important;
    left:12px!important;
}

.map .mapboxgl-ctrl-group{
    border-radius:13px!important;
    overflow:hidden!important;
    box-shadow:0 12px 28px rgba(0,0,0,.22)!important;
    border:1px solid rgba(255,255,255,.72)!important;
    background:rgba(255,255,255,.94)!important;
}

.map .mapboxgl-ctrl-group button{
    width:34px!important;
    height:34px!important;
}

.map .mapboxgl-ctrl-scale{
    margin:0 0 14px 14px!important;
    border-color:#23384f!important;
    color:#23384f!important;
    background:rgba(255,255,255,.88)!important;
    font-weight:900!important;
    box-shadow:0 8px 18px rgba(15,23,42,.13)!important;
}

.mapbox-3d-control>i{
    background:linear-gradient(135deg,#0f766e,#2563eb)!important;
}

.mapbox-style-control{
    position:absolute;
    top:18px;
    left:292px;
    z-index:9;
    display:grid;
    gap:9px;
    min-width:320px;
    padding:10px;
    border-radius:15px;
    color:#0f172a;
    background:rgba(255,255,255,.92);
    border:1px solid rgba(226,232,240,.92);
    box-shadow:0 18px 38px rgba(15,23,42,.18);
    backdrop-filter:blur(12px);
}

.mapbox-light-tabs{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:4px;
    padding:4px;
    border-radius:12px;
    background:#f1f5f9;
    box-shadow:inset 0 0 0 1px rgba(148,163,184,.22);
}

.mapbox-light-tabs button{
    min-height:32px;
    border:0;
    border-radius:9px;
    background:transparent;
    color:#334155;
    font-size:13px;
    font-weight:900;
    cursor:pointer;
    transition:.16s ease;
}

.mapbox-light-tabs button:hover{
    background:#e2e8f0;
}

.mapbox-light-tabs button.active{
    color:#fff;
    background:linear-gradient(135deg,#23384f,#0f766e);
    box-shadow:0 8px 18px rgba(15,118,110,.22);
}

.mapbox-relief-switch{
    display:grid;
    grid-template-columns:auto 1fr;
    gap:9px;
    align-items:center;
    cursor:pointer;
    padding:2px 2px 0;
}

.mapbox-relief-switch input{
    position:absolute;
    opacity:0;
    pointer-events:none;
}

.mapbox-relief-switch span{
    width:42px;
    height:24px;
    border-radius:999px;
    background:#cbd5e1;
    position:relative;
    box-shadow:inset 0 0 0 1px rgba(15,23,42,.10);
    transition:.18s ease;
}

.mapbox-relief-switch span:before{
    content:"";
    position:absolute;
    width:18px;
    height:18px;
    left:3px;
    top:3px;
    border-radius:50%;
    background:#fff;
    box-shadow:0 2px 7px rgba(15,23,42,.24);
    transition:.18s ease;
}

.mapbox-relief-switch input:checked + span{
    background:linear-gradient(135deg,#0f766e,#38bdf8);
}

.mapbox-relief-switch input:checked + span:before{
    transform:translateX(18px);
}

.mapbox-relief-switch strong{
    color:#0f172a;
    font-size:12.5px;
    line-height:1.18;
    font-weight:950;
}

.mapbox-style-control small{
    color:#475569;
    font-size:11.5px;
    font-weight:850;
    line-height:1.25;
    padding:0 2px 1px 51px;
}

.mapbox-error{
    position:absolute;
    inset:18px;
    display:grid;
    place-items:center;
    align-content:center;
    gap:10px;
    padding:24px;
    text-align:center;
    color:#e2e8f0;
    background:radial-gradient(circle at 50% 20%,rgba(37,99,235,.22),transparent 30%),linear-gradient(135deg,#061b35,#111827);
    border:1px solid rgba(255,255,255,.14);
    border-radius:18px;
    z-index:20;
}

.mapbox-error i{
    font-size:30px;
    color:#facc15;
}

.mapbox-error strong{
    color:#ffffff;
    font-size:18px;
}

.mapbox-error span{
    max-width:440px;
    line-height:1.45;
    font-weight:700;
}

.mapboxgl-popup.dimgep-popup{
    z-index:35;
}

.mapboxgl-popup.dimgep-popup .mapboxgl-popup-content{
    min-width:330px;
    max-width:390px;
    padding:0!important;
    border:0!important;
    border-radius:18px!important;
    overflow:hidden;
    background:#ffffff!important;
    box-shadow:0 22px 55px rgba(6,27,53,.32),0 0 0 1px rgba(255,255,255,.75)!important;
}

.mapboxgl-popup.dimgep-popup .mapboxgl-popup-content:before{
    content:"";
    position:absolute;
    inset:0 0 auto;
    height:5px;
    background:linear-gradient(90deg,#b40718,#0b4aa2,#0f766e);
}

.mapboxgl-popup.dimgep-popup .mapboxgl-popup-tip{
    border-top-color:#ffffff!important;
    border-bottom-color:#ffffff!important;
}

.mapboxgl-popup.dimgep-popup .popup-topline{
    display:flex;
    align-items:center;
    gap:8px;
    padding:16px 16px 3px;
    color:#64748b;
    font-size:11px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.35px;
}

.mapboxgl-popup.dimgep-popup h3{
    margin:0!important;
    padding:0 16px 5px;
    color:#061b35!important;
    font-size:16px!important;
    line-height:1.18!important;
}

.mapboxgl-popup.dimgep-popup .popup-package{
    margin:0!important;
    padding:6px 16px 10px!important;
    color:#111827!important;
    font-size:14px!important;
    line-height:1.25!important;
    display:block!important;
}

.mapboxgl-popup.dimgep-popup .popup-package strong{
    display:block;
}

.mapboxgl-popup.dimgep-popup .popup-kpis{
    display:grid!important;
    grid-template-columns:1fr 1fr;
    gap:9px!important;
    padding:0 16px 14px!important;
}

.mapboxgl-popup.dimgep-popup .popup-kpis div{
    display:grid!important;
    gap:3px!important;
    background:linear-gradient(180deg,#f8fafc,#eef2f7)!important;
    border:1px solid #e2e8f0!important;
    border-radius:12px!important;
    padding:10px!important;
}

.mapboxgl-popup.dimgep-popup .popup-kpis span{
    font-size:11px!important;
    text-transform:uppercase;
    letter-spacing:.2px;
    color:#64748b!important;
    font-weight:900!important;
}

.mapboxgl-popup.dimgep-popup .popup-kpis strong{
    font-size:15px!important;
    color:#061b35!important;
}

.mapboxgl-popup.dimgep-popup .popup-date,
.mapboxgl-popup.dimgep-popup .popup-progress{
    height:8px;
    margin:0 16px 16px;
    background:#e5e7eb;
    border-radius:999px;
    overflow:hidden;
}

.mapboxgl-popup.dimgep-popup .popup-progress span{
    display:block;
    height:100%;
    border-radius:inherit;
}

.mapboxgl-popup.dimgep-popup .popup-color-dot{
    width:13px!important;
    height:13px!important;
    border-radius:999px;
    border:2px solid #fff!important;
    box-shadow:0 2px 8px rgba(15,23,42,.28)!important;
}

@media(max-width:720px){
    .mapbox-style-control{
        top:132px;
        left:12px;
        right:12px;
        min-width:0;
    }

    .mapbox-light-tabs button{
        font-size:12px;
        min-height:30px;
    }

    .mapbox-style-control small{
        padding-left:0;
    }

    .mapboxgl-popup.dimgep-popup .mapboxgl-popup-content{
        min-width:280px;
        max-width:315px;
    }

    .mapboxgl-popup.dimgep-popup .popup-kpis{
        grid-template-columns:1fr!important;
    }
}

/* v1.0.133 - Tarjeta de usuario en la esquina superior derecha */
.topbar{
    align-items:center!important;
}

.topbar-title{
    min-width:0;
    flex:1 1 auto;
}

.topbar-user-actions{
    margin-left:auto!important;
    display:flex!important;
    align-items:center!important;
    justify-content:flex-end!important;
    flex:0 0 auto;
}

.topbar-user-card{
    min-width:220px;
    max-width:280px;
    height:54px;
    display:grid;
    grid-template-columns:38px minmax(0,1fr) 30px;
    align-items:center;
    gap:10px;
    padding:7px 9px 7px 11px;
    border-radius:14px;
    background:#eef6ff;
    border:1px solid #d7e6f7;
    box-shadow:0 8px 18px rgba(37,99,235,.07), inset 0 1px 0 rgba(255,255,255,.82);
}

.topbar-user-avatar{
    width:30px;
    height:30px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:#dbeafe;
    color:#2563eb;
    font-size:14px;
}

.topbar-user-copy{
    display:grid;
    min-width:0;
    line-height:1.1;
}

.topbar-user-copy strong{
    color:#0f2a55;
    font-size:12px;
    font-weight:900;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

.topbar-user-copy small{
    margin-top:3px;
    color:#64748b;
    font-size:11px;
    font-weight:800;
    letter-spacing:.45px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

.topbar-logout{
    width:28px;
    height:28px;
    display:grid;
    place-items:center;
    border-radius:9px;
    color:#ef5f62;
    transition:.15s ease;
}

.topbar-logout:hover{
    background:#ffe7e7;
    color:#dc2626;
}

.sidebar-user{
    display:none!important;
}

.app-body.sidebar-collapsed .sidebar-user{
    display:none!important;
}

@media(max-width:920px){
    .topbar{
        flex-wrap:wrap;
    }

    .topbar > .topbar-title{
        flex:1 1 calc(100% - 56px)!important;
    }

    .topbar-user-actions{
        display:flex!important;
        width:100%;
        margin-left:0!important;
        justify-content:flex-end!important;
    }

    .topbar-user-card{
        min-width:min(100%,220px);
        max-width:100%;
    }
}

@media(max-width:520px){
    .topbar-user-actions{
        justify-content:stretch!important;
    }

    .topbar-user-card{
        width:100%;
        grid-template-columns:36px minmax(0,1fr) 30px;
    }
}

/* v1.0.134 - Refuerzo de contraste para letras y numeros */
:root{
    --text:#0f172a;
    --muted:#475569;
    --strong:#08111f;
    --value:#071b3d;
    --label:#334155;
}

body,
.main,
.content,
.card,
.panel,
.table td,
.form-field,
.detail-body,
.project-profile,
.rich-text-output{
    color:var(--text)!important;
}

.topbar h1,
.brand-title,
.dashboard-section-head h3,
.panel-title h2,
.card-head h3,
.section-heading h2,
.project-hero-main h1,
.table-title-row h2,
.form-section-title,
.monthly-title,
.budget-title{
    color:var(--strong)!important;
    font-weight:900!important;
}

.topbar p,
.brand-subtitle,
.dashboard-section-head p,
.panel-title p,
.card-head span,
.stat-sub,
.mini-muted,
.form-field small,
.table small,
.detail-note,
.detail-help,
.project-visual-caption small,
.finance-tile span,
.info-mini span,
.text-block-card p,
.package-report-values small,
.project-package-table small{
    color:var(--muted)!important;
    font-weight:700!important;
}

.form-field label,
.dashboard-filter-form .form-field label,
.catalog-filter .form-field label,
.filters label,
.stat-label,
.dashboard-kpi-top small,
.section-eyebrow,
.dashboard-section-head .section-eyebrow,
.chart-kicker,
.package-summary-strip span,
.finance-progress-label span,
.kpi-head,
.table th{
    color:var(--label)!important;
    font-weight:900!important;
}

.stat-value,
.dashboard-kpi-card .stat-value,
.finance-tile strong,
.info-mini strong,
.kpi-progress-card strong,
.package-summary-strip strong,
.money-cell,
.money-cell.strong,
.project-package-table .strong,
.package-percent-cell strong,
.dept-rank-value,
.dashboard-update-box strong,
.topbar-user-copy strong,
.project-hero-subtitle,
.detail-item strong,
.investment-box strong,
.popup-kpis strong{
    color:var(--value)!important;
    font-weight:950!important;
}

.table td,
.project-package-table td,
.dashboard-management-groups-table td{
    color:#172033!important;
    font-weight:650!important;
}

.table td strong,
.dashboard-management-groups-table td strong,
.project-package-table td strong{
    color:#071b3d!important;
    font-weight:950!important;
}

.table th,
.project-package-table th{
    color:#ffffff!important;
    font-weight:950!important;
    text-shadow:0 1px 0 rgba(0,0,0,.16);
}

.badge,
.filter-chip,
.hero-chip,
.project-media-count,
.package-unit-pill,
.package-layer-count,
.finance-progress-label b,
.package-percent-cell strong,
.dept-rank-value{
    font-weight:950!important;
}

.topbar-user-card{
    background:#eaf3ff!important;
    border-color:#bfd7f3!important;
}

.topbar-user-copy strong{
    color:#071b3d!important;
}

.topbar-user-copy small{
    color:#334155!important;
    font-weight:900!important;
}

.topbar-user-avatar{
    color:#1d4ed8!important;
    background:#dbeafe!important;
}

.form-control,
select,
textarea,
input[type="text"],
input[type="number"],
input[type="date"],
input[type="email"],
input[type="password"],
input[type="file"],
input[type="color"]{
    color:#0f172a!important;
    font-weight:700!important;
}

.form-control::placeholder,
textarea::placeholder,
input::placeholder{
    color:#64748b!important;
    opacity:1;
}

.dashboard-kpi-badge,
.stat-icon,
.info-mini i{
    color:#0f766e!important;
}

.chart-box canvas{
    color:#0f172a!important;
}

.peru-label,
.dept-callout-title,
.dept-callout-text{
    fill:#071b3d!important;
}

.sidebar-nav a{
    color:#1e293b!important;
}

.sidebar-nav a i{
    color:#334155!important;
}

.sidebar-nav a.active,
.sidebar-nav a.active i{
    color:#064e3b!important;
}

/* v1.0.135 - Sidebar agrupado con submenus desplegables */
.sidebar-nav{
    display:block!important;
}

.nav-section{
    margin:0 0 9px!important;
}

.nav-section-toggle{
    width:100%;
    min-height:38px;
    display:grid;
    grid-template-columns:minmax(0,1fr) 22px;
    align-items:center;
    gap:8px;
    border:0;
    border-radius:12px;
    background:transparent;
    color:#334155;
    padding:9px 12px;
    cursor:pointer;
    text-align:left;
    transition:.16s ease;
}

.nav-section-toggle span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:10.5px;
    line-height:1.1;
    font-weight:950;
    letter-spacing:.9px;
    text-transform:uppercase;
}

.nav-section-toggle i{
    width:22px;
    height:22px;
    display:grid;
    place-items:center;
    border-radius:8px;
    background:#f1f5f9;
    color:#64748b;
    font-size:10px;
    transition:.16s ease;
}

.nav-section-toggle:hover{
    background:#f1f7ff;
    color:#0f766e;
}

.nav-section-toggle:hover i{
    background:#e7f8f5;
    color:#0f766e;
}

.nav-section.is-open .nav-section-toggle{
    background:#eef6ff;
    color:#0f4f4a;
}

.nav-section.is-open .nav-section-toggle i{
    transform:rotate(180deg);
    background:#dbeafe;
    color:#2563eb;
}

.nav-section-items{
    display:none;
    gap:3px;
    padding:4px 0 4px 8px;
    margin-left:8px;
    border-left:1px solid #dfe7f1;
}

.nav-section.is-open .nav-section-items{
    display:grid;
}

.nav-section-items a{
    min-height:38px;
    margin:2px 0!important;
    padding:10px 12px!important;
    border-radius:11px!important;
    font-size:13px!important;
}

.nav-section-items a span{
    white-space:normal;
    line-height:1.16;
}

.nav-section-items a.active{
    border-color:#bde8df!important;
}

.nav-section-title{
    display:none!important;
}

.app-body.sidebar-collapsed .nav-section-toggle{
    display:none!important;
}

.app-body.sidebar-collapsed .nav-section-items{
    display:grid!important;
    padding:0!important;
    margin-left:0!important;
    border-left:0!important;
}

.app-body.sidebar-collapsed .nav-section{
    margin-bottom:6px!important;
}

@media(max-width:920px){
    .app-body.sidebar-collapsed .nav-section-toggle{
        display:grid!important;
    }

    .app-body.sidebar-collapsed .nav-section-items{
        display:none!important;
        padding:4px 0 4px 8px!important;
        margin-left:8px!important;
        border-left:1px solid #dfe7f1!important;
    }

    .app-body.sidebar-collapsed .nav-section.is-open .nav-section-items{
        display:grid!important;
    }
}


/* v1.0.139 - Visor 3D limpio: sin panel de iluminación y con mejor lectura urbana */
.mapbox-style-control{
    display:none!important;
}
.mapbox-3d-control{
    min-width:190px;
    max-width:230px;
    background:rgba(15,23,42,.82)!important;
    border:1px solid rgba(255,255,255,.16)!important;
    color:#fff!important;
    box-shadow:0 18px 42px rgba(0,0,0,.24)!important;
    backdrop-filter:blur(12px);
}
.mapbox-3d-control>i{
    background:linear-gradient(135deg,#7c5a31,#0f766e)!important;
    box-shadow:0 8px 18px rgba(15,118,110,.22)!important;
}
.mapbox-3d-control strong{
    color:#fff!important;
    letter-spacing:.15px;
}
.mapbox-3d-control small{
    color:#dbeafe!important;
    font-weight:800!important;
}
.map .mapboxgl-ctrl-top-left{
    top:16px!important;
    left:14px!important;
}
@media(max-width:720px){
    .mapbox-3d-control{
        min-width:0;
        max-width:calc(100% - 24px);
    }
}

/* v1.0.144 - Selector Mapbox 3D / Google Satélite HD */
.map-provider-control{
    position:absolute;
    top:18px;
    left:50%;
    transform:translateX(-50%);
    z-index:14;
    display:flex;
    align-items:center;
    gap:6px;
    padding:6px;
    border-radius:16px;
    background:rgba(15,23,42,.84);
    border:1px solid rgba(255,255,255,.20);
    box-shadow:0 18px 42px rgba(0,0,0,.24);
    backdrop-filter:blur(14px);
}
.map-provider-control button{
    border:0;
    border-radius:12px;
    padding:10px 13px;
    display:inline-flex;
    align-items:center;
    gap:8px;
    color:#e5edf7;
    background:transparent;
    font-weight:950;
    font-size:12px;
    letter-spacing:.12px;
    cursor:pointer;
    white-space:nowrap;
    transition:.16s ease;
}
.map-provider-control button:hover{
    background:rgba(255,255,255,.12);
    transform:translateY(-1px);
}
.map-provider-control button.active{
    color:#061b35;
    background:linear-gradient(135deg,#ffffff,#dbeafe);
    box-shadow:0 10px 24px rgba(15,23,42,.18);
}
.google-satellite-map{
    position:absolute;
    inset:0;
    z-index:4;
    opacity:0;
    pointer-events:none;
    background:#111827;
    transition:opacity .18s ease;
}
.map-provider-google-active .google-satellite-map{
    z-index:6;
    opacity:1;
    pointer-events:auto;
}
.map-provider-google-active .mapboxgl-canvas-container,
.map-provider-google-active .mapboxgl-control-container{
    opacity:0;
    pointer-events:none!important;
}
.google-map-message{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    max-width:360px;
    display:grid;
    gap:8px;
    text-align:center;
    padding:20px 22px;
    border-radius:18px;
    color:#0f172a;
    background:rgba(255,255,255,.96);
    border:1px solid #e2e8f0;
    box-shadow:0 20px 46px rgba(0,0,0,.28);
}
.google-map-message i{
    width:48px;
    height:48px;
    margin:auto;
    display:grid;
    place-items:center;
    border-radius:16px;
    color:#fff;
    background:linear-gradient(135deg,#ef4444,#b40718);
    font-size:22px;
}
.google-map-message strong{
    font-size:16px;
    color:#061b35;
}
.google-map-message span{
    color:#475569;
    font-weight:800;
    line-height:1.4;
}
.google-info-window{
    min-width:260px;
    max-width:340px;
    font-family:Inter,Segoe UI,Arial,sans-serif;
}
.google-info-window .popup-topline,
.dimgep-popup .popup-topline{
    display:flex;
    align-items:center;
    gap:7px;
    color:#0f766e;
    font-size:11px;
    font-weight:950;
    text-transform:uppercase;
    letter-spacing:.25px;
    margin-bottom:6px;
}
.google-info-window .popup-color-dot,
.dimgep-popup .popup-color-dot{
    width:11px;
    height:11px;
    border-radius:999px;
    box-shadow:0 0 0 3px rgba(15,118,110,.13);
}
.google-info-window h3,
.dimgep-popup h3{
    margin:0 0 8px;
    color:#061b35;
    font-size:15px;
    line-height:1.2;
}
.google-info-window .popup-package,
.dimgep-popup .popup-package{
    color:#1f2937;
    font-size:13px;
    margin-bottom:9px;
}
.google-info-window .popup-kpis,
.dimgep-popup .popup-kpis{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
    margin-bottom:9px;
}
.google-info-window .popup-kpis div,
.dimgep-popup .popup-kpis div{
    border:1px solid #e2e8f0;
    border-radius:10px;
    background:#f8fafc;
    padding:8px;
}
.google-info-window .popup-kpis span,
.dimgep-popup .popup-kpis span{
    display:block;
    color:#64748b;
    font-size:10px;
    font-weight:950;
    text-transform:uppercase;
}
.google-info-window .popup-kpis strong,
.dimgep-popup .popup-kpis strong{
    display:block;
    color:#061b35;
    font-size:13px;
    margin-top:3px;
}
.google-info-window .popup-date,
.dimgep-popup .popup-date{
    color:#475569;
    font-size:12px;
    font-weight:800;
    margin-bottom:8px;
}
.google-info-window .popup-progress,
.dimgep-popup .popup-progress{
    height:8px;
    border-radius:999px;
    overflow:hidden;
    background:#e5e7eb;
}
.google-info-window .popup-progress span,
.dimgep-popup .popup-progress span{
    display:block;
    height:100%;
    border-radius:inherit;
}
.map-provider-google-active .street-view-box{
    z-index:16!important;
}
@media(max-width:1100px){
    .map-provider-control{
        top:74px;
        left:18px;
        transform:none;
    }
}
@media(max-width:720px){
    .map-provider-control{
        left:12px;
        right:12px;
        width:auto;
        justify-content:center;
    }
    .map-provider-control button{
        flex:1 1 0;
        justify-content:center;
        padding:9px 8px;
        font-size:11px;
    }
.google-earth-control.mapbox-3d-control{
        top:82px!important;
    }
}


/* =========================================================
   v1.0.145 - Geovisor ejecutivo elegante
   Refinamiento visual para profesionales y toma de decisiones.
   ========================================================= */
:root{
    --executive-navy:#10283d;
    --executive-navy-2:#17364e;
    --executive-ink:#162637;
    --executive-muted:#66778a;
    --executive-line:#dce4ec;
    --executive-surface:#ffffff;
    --executive-canvas:#f1f4f7;
    --executive-teal:#177b70;
    --executive-teal-soft:#e7f4f1;
    --executive-gold:#b89055;
    --executive-shadow:0 14px 38px rgba(16,40,61,.09);
}

html,body,button,input,select,textarea,table,th,td{
    font-family:Inter,"Segoe UI",Roboto,Arial,sans-serif!important;
}

body{
    background:var(--executive-canvas)!important;
    color:var(--executive-ink)!important;
}

/* Navegación institucional */
.sidebar{
    width:270px!important;
    background:linear-gradient(180deg,#0d2235 0%,#10283d 54%,#0b1d2d 100%)!important;
    border-right:1px solid rgba(255,255,255,.07)!important;
    box-shadow:12px 0 38px rgba(7,20,32,.18)!important;
    color:#fff!important;
}
.main{
    margin-left:270px!important;
    width:calc(100% - 270px)!important;
}
.brand{
    height:104px!important;
    padding:20px 22px!important;
    border-bottom:1px solid rgba(255,255,255,.09)!important;
    background:linear-gradient(135deg,rgba(255,255,255,.035),transparent)!important;
}
.brand-mark{
    width:42px!important;
    height:42px!important;
    gap:4px!important;
    filter:drop-shadow(0 8px 14px rgba(0,0,0,.22));
}
.brand-mark span{
    background:linear-gradient(180deg,#d7bb8b,#a98045)!important;
}
.brand-title{
    color:#fff!important;
    font-size:25px!important;
    letter-spacing:1.2px!important;
}
.brand-subtitle{
    color:#bfcbd6!important;
    font-size:11px!important;
    letter-spacing:.12px!important;
}
.sidebar-nav{
    padding:18px 12px 24px!important;
    scrollbar-color:rgba(255,255,255,.18) transparent;
}
.nav-section{
    margin-bottom:10px!important;
}
.nav-section-toggle{
    color:#aebdca!important;
    min-height:36px!important;
    padding:8px 10px!important;
}
.nav-section-toggle span{
    font-size:10px!important;
    letter-spacing:1.15px!important;
}
.nav-section-toggle i{
    background:rgba(255,255,255,.06)!important;
    color:#9db0c0!important;
}
.nav-section-toggle:hover,
.nav-section.is-open .nav-section-toggle{
    color:#ffffff!important;
    background:rgba(255,255,255,.055)!important;
}
.nav-section.is-open .nav-section-toggle i{
    color:#dbc399!important;
    background:rgba(184,144,85,.16)!important;
}
.nav-section-items{
    border-left:1px solid rgba(255,255,255,.11)!important;
}
.sidebar-nav a,
.nav-section-items a{
    color:#dce5ed!important;
    border:1px solid transparent!important;
    border-radius:10px!important;
    font-size:12.5px!important;
    font-weight:700!important;
    min-height:40px!important;
}
.sidebar-nav a i{
    color:#92a8ba!important;
    font-size:15px!important;
}
.sidebar-nav a:hover{
    color:#fff!important;
    background:rgba(255,255,255,.07)!important;
    border-color:rgba(255,255,255,.08)!important;
    transform:none!important;
}
.sidebar-nav a:hover i{
    color:#d7bb8b!important;
}
.sidebar-nav a.active{
    color:#fff!important;
    background:linear-gradient(135deg,rgba(23,123,112,.94),rgba(20,96,91,.94))!important;
    border-color:rgba(124,211,199,.28)!important;
    box-shadow:0 10px 24px rgba(0,0,0,.20),inset 3px 0 0 #d7bb8b!important;
}
.sidebar-nav a.active i{
    color:#fff!important;
}

/* Encabezado superior */
.topbar{
    min-height:76px!important;
    padding:12px 22px!important;
    background:rgba(255,255,255,.96)!important;
    border-bottom:1px solid var(--executive-line)!important;
    box-shadow:0 8px 24px rgba(16,40,61,.055)!important;
    backdrop-filter:blur(14px)!important;
}
.topbar-title h1,
.topbar h1{
    color:var(--executive-ink)!important;
    text-transform:none!important;
    font-size:17px!important;
    font-weight:800!important;
    letter-spacing:-.1px!important;
}
.topbar-title p,
.topbar p{
    color:var(--executive-muted)!important;
    font-size:11.5px!important;
    line-height:1.35!important;
    max-width:980px!important;
}
.menu-toggle{
    width:40px!important;
    height:40px!important;
    border-radius:10px!important;
    color:var(--executive-navy)!important;
    background:#f6f8fa!important;
    border:1px solid var(--executive-line)!important;
}
.topbar-user-card{
    min-width:215px!important;
    height:50px!important;
    border-radius:12px!important;
    background:#fff!important;
    border:1px solid var(--executive-line)!important;
    box-shadow:0 6px 18px rgba(16,40,61,.055)!important;
}
.topbar-user-avatar{
    background:var(--executive-teal-soft)!important;
    color:var(--executive-teal)!important;
}
.topbar-user-copy strong{
    color:var(--executive-ink)!important;
}
.topbar-user-copy small{
    color:#7a8998!important;
}
.topbar-logout{
    color:#a33b3b!important;
}
.topbar-logout:hover{
    color:#8f2525!important;
    background:#fff0f0!important;
}

/* Superficies generales */
.content{
    padding:20px 24px 32px!important;
}
.card,.panel,.dashboard-filter-card,.modern-chart-panel,.dashboard-management-groups-card,.peru-map-card,.project-section-card,.project-visual-card,.kpi-progress-card,.module-group-card,.catalog-filter{
    border:1px solid var(--executive-line)!important;
    border-radius:16px!important;
    background:#fff!important;
    box-shadow:var(--executive-shadow)!important;
}
.btn{
    border-radius:9px!important;
    font-weight:750!important;
    letter-spacing:.02px!important;
}
.btn.primary{
    background:linear-gradient(135deg,#177b70,#12665f)!important;
    border-color:#12665f!important;
}
.btn.primary:hover{
    box-shadow:0 10px 20px rgba(23,123,112,.19)!important;
}
.form-control,select,textarea,input[type="text"],input[type="number"],input[type="date"],input[type="email"],input[type="password"],input[type="file"],input[type="color"]{
    border-radius:9px!important;
    border-color:#d9e2ea!important;
    background:#fbfcfd!important;
}
.form-control:focus,select:focus,textarea:focus,input:focus{
    border-color:#62aa9f!important;
    box-shadow:0 0 0 3px rgba(23,123,112,.11)!important;
}

/* Espacio de trabajo del geovisor */
.geovisor-workspace .content{
    padding:16px 18px 26px!important;
    max-width:2400px;
    margin:0 auto;
}
.geovisor-context-bar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    margin-bottom:14px;
    padding:2px 2px 0;
}
.workspace-heading{
    display:flex;
    align-items:center;
    gap:18px;
    min-width:0;
}
.workspace-eyebrow,
.map-section-kicker{
    display:inline-flex;
    align-items:center;
    gap:7px;
    color:var(--executive-teal);
    font-size:10px;
    font-weight:850;
    letter-spacing:.75px;
    text-transform:uppercase;
}
.workspace-heading h2{
    margin:3px 0 2px;
    color:var(--executive-ink);
    font-size:20px;
    line-height:1.15;
    letter-spacing:-.25px;
}
.workspace-heading p{
    margin:0;
    color:var(--executive-muted);
    font-size:12px;
}
.workspace-meta{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    flex-wrap:wrap;
}
.workspace-meta-chip{
    min-height:34px;
    display:inline-flex;
    align-items:center;
    gap:7px;
    padding:7px 10px;
    color:#536476;
    font-size:10.5px;
    font-weight:800;
    background:#fff;
    border:1px solid var(--executive-line);
    border-radius:999px;
    box-shadow:0 5px 14px rgba(16,40,61,.045);
    white-space:nowrap;
}
.workspace-meta-chip.status-online i{
    width:7px;
    height:7px;
    border-radius:50%;
    background:#22a06b;
    box-shadow:0 0 0 4px rgba(34,160,107,.11);
}
.workspace-meta-chip.has-active-filters{
    color:#12665f;
    border-color:#b9ddd7;
    background:#eef8f6;
}
.map-layout{
    grid-template-columns:minmax(0,1fr) minmax(355px,405px)!important;
    gap:16px!important;
    align-items:stretch!important;
}
.map-card{
    overflow:hidden!important;
    border-radius:18px!important;
    min-width:0;
}
.map-filter-panel{
    padding:15px 16px 14px;
    background:#fff;
    border-bottom:1px solid #e7edf2;
}
.map-filter-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    margin-bottom:12px;
}
.map-filter-head p{
    margin:4px 0 0;
    color:#778797;
    font-size:11px;
}
.map-clear-button{
    min-height:34px!important;
    padding:8px 11px!important;
    color:#5d6c7b!important;
    background:#f8fafb!important;
    border:1px solid #dce4eb!important;
    font-size:10.5px!important;
}
.map-clear-button:hover{
    color:#914242!important;
    background:#fff5f5!important;
    border-color:#eccdcd!important;
}
.geovisor-workspace .filters,
.map-card .filters{
    display:grid!important;
    grid-template-columns:repeat(5,minmax(135px,1fr))!important;
    gap:10px!important;
    align-items:end!important;
    padding:0!important;
    color:var(--executive-ink)!important;
    background:transparent!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
}
.map-filter-field{
    min-width:0;
}
.map-filter-field label,
.geovisor-workspace .filters label{
    display:flex!important;
    align-items:center;
    gap:6px;
    margin:0 0 6px!important;
    color:#58697b!important;
    font-size:9.5px!important;
    font-weight:850!important;
    letter-spacing:.5px!important;
    text-transform:uppercase!important;
}
.map-filter-field label i{
    color:#8a9aaa;
    font-size:10px;
}
.geovisor-workspace .filters select{
    min-height:39px!important;
    padding:8px 30px 8px 10px!important;
    color:#26384a!important;
    font-size:11.5px!important;
    font-weight:650!important;
    background-color:#f9fbfc!important;
    border:1px solid #dce4eb!important;
    border-radius:9px!important;
}
.geovisor-workspace .filters select:hover{
    border-color:#b9c8d5!important;
    background:#fff!important;
}
.map-stage-head{
    min-height:58px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    padding:10px 16px;
    background:linear-gradient(180deg,#fbfcfd,#f5f8fa);
    border-bottom:1px solid #dce4eb;
}
.map-stage-title{
    display:flex;
    align-items:center;
    gap:10px;
    min-width:0;
}
.map-stage-icon{
    width:34px;
    height:34px;
    flex:0 0 34px;
    display:grid;
    place-items:center;
    border-radius:10px;
    color:var(--executive-teal);
    background:var(--executive-teal-soft);
    border:1px solid #cfe7e2;
}
.map-stage-title>span:last-child{
    display:grid;
    gap:2px;
    min-width:0;
}
.map-stage-title strong{
    color:#223547;
    font-size:12px;
}
.map-stage-title small{
    color:#748596;
    font-size:10.5px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.map-stage-pills{
    display:flex;
    align-items:center;
    gap:7px;
}
.map-stage-pills>span{
    display:inline-flex;
    align-items:center;
    gap:6px;
    min-height:30px;
    padding:6px 9px;
    border:1px solid #dce4eb;
    border-radius:999px;
    background:#fff;
    color:#66778a;
    font-size:10px;
    font-weight:800;
    white-space:nowrap;
}
.map-stage-pills .map-project-count{
    color:#12665f;
    border-color:#c4e1dc;
    background:#eef8f6;
}
.geovisor-workspace .map{
    height:clamp(610px,calc(100vh - 310px),980px)!important;
    min-height:610px!important;
    background:#172a3c!important;
}
.geovisor-workspace .map-detail{
    display:flex;
    flex-direction:column;
    min-width:0;
    min-height:100%;
    border-radius:18px!important;
    background:#fff!important;
    border:1px solid var(--executive-line)!important;
    box-shadow:var(--executive-shadow)!important;
    overflow:hidden!important;
}
.detail-rail-label{
    min-height:40px;
    display:flex;
    align-items:center;
    gap:8px;
    padding:10px 16px;
    color:#6b7b8b;
    background:#f6f8fa;
    border-bottom:1px solid #e3e9ef;
    font-size:9.5px;
    font-weight:850;
    letter-spacing:.75px;
    text-transform:uppercase;
}
.geovisor-workspace .detail-header{
    padding:18px 16px 15px!important;
    gap:12px!important;
    background:#fff!important;
    border-bottom:1px solid #edf1f4!important;
}
.geovisor-workspace .detail-icon{
    width:44px!important;
    height:44px!important;
    flex:0 0 44px;
    border-radius:12px!important;
    font-size:18px!important;
    background:linear-gradient(135deg,#177b70,#245b78)!important;
    box-shadow:0 10px 22px rgba(23,123,112,.18)!important;
}
.geovisor-workspace .detail-header h2{
    margin:1px 0 0!important;
    color:#203346!important;
    font-size:17px!important;
    line-height:1.25!important;
}
.geovisor-workspace .detail-header .badge{
    margin-top:7px!important;
    padding:4px 8px!important;
    font-size:9.5px!important;
}
.geovisor-workspace .detail-tabs{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr));
    padding:0 10px!important;
    background:#fbfcfd;
    border-bottom:1px solid #e4eaf0!important;
}
.geovisor-workspace .detail-tabs button{
    min-width:0;
    display:grid;
    justify-items:center;
    gap:5px;
    padding:11px 5px 9px!important;
    color:#748495!important;
    font-size:9.5px!important;
    border-bottom:2px solid transparent!important;
}
.geovisor-workspace .detail-tabs button i{
    font-size:12px;
}
.geovisor-workspace .detail-tabs button.active{
    color:#12665f!important;
    border-bottom-color:#177b70!important;
    background:linear-gradient(180deg,transparent,#eff8f6)!important;
}
.geovisor-workspace .detail-body{
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
    padding:16px!important;
    color:#536577!important;
    background:#fff!important;
}
.detail-empty-state{
    min-height:360px;
    display:grid;
    place-items:center;
    align-content:center;
    gap:9px;
    padding:34px 24px;
    text-align:center;
    border:1px dashed #ced9e2;
    border-radius:14px;
    background:linear-gradient(180deg,#fbfcfd,#f7f9fb);
}
.detail-empty-state>span{
    width:54px;
    height:54px;
    display:grid;
    place-items:center;
    border-radius:16px;
    color:#177b70;
    background:#e8f4f2;
    border:1px solid #cce5e0;
    font-size:20px;
}
.detail-empty-state strong{
    color:#273a4c;
    font-size:14px;
}
.detail-empty-state p{
    max-width:260px;
    margin:0;
    color:#758596;
    font-size:11.5px;
    line-height:1.5;
}
.geovisor-workspace .detail-item{
    grid-template-columns:24px minmax(0,1fr) minmax(90px,auto)!important;
    padding:9px 0;
    border-bottom:1px solid #edf1f4;
    color:#607184!important;
    font-size:11.5px!important;
}
.geovisor-workspace .detail-item strong{
    color:#26384a!important;
    font-size:11.5px!important;
}
.geovisor-workspace .detail-section-title{
    color:#26384a!important;
    font-size:11px!important;
    letter-spacing:.4px;
    text-transform:uppercase;
}
.geovisor-workspace .progress{
    height:7px!important;
    background:#e8edf2!important;
}
.geovisor-workspace .progress span{
    background:linear-gradient(90deg,#177b70,#31a497)!important;
}
.geovisor-workspace .progress.blue span{
    background:linear-gradient(90deg,#315e85,#4f87b5)!important;
}
.geovisor-workspace .investment-box{
    background:linear-gradient(135deg,#17364e,#177b70)!important;
    box-shadow:0 12px 26px rgba(16,40,61,.17)!important;
}

/* Controles del mapa */
.geovisor-workspace .map-provider-control{
    top:14px!important;
    padding:5px!important;
    border-radius:13px!important;
    background:rgba(12,30,46,.88)!important;
    border-color:rgba(255,255,255,.18)!important;
    box-shadow:0 14px 34px rgba(0,0,0,.24)!important;
}
.geovisor-workspace .map-provider-control button{
    padding:9px 11px!important;
    border-radius:9px!important;
    font-size:10.5px!important;
    font-weight:800!important;
}
.geovisor-workspace .map-provider-control button.active{
    color:#17364e!important;
    background:#fff!important;
}

.geovisor-workspace .mapbox-3d-control{
    background:rgba(12,30,46,.86)!important;
}
.geovisor-workspace .map .mapboxgl-ctrl-group{
    border-radius:10px!important;
}

/* Inicio de sesión */
.login-page{
    position:relative;
    overflow:hidden;
    background:
        radial-gradient(circle at 18% 18%,rgba(34,132,120,.22),transparent 32%),
        radial-gradient(circle at 82% 78%,rgba(184,144,85,.16),transparent 28%),
        linear-gradient(135deg,#0b1d2d 0%,#10283d 52%,#16384f 100%)!important;
}
.login-page:before,
.login-page:after{
    content:"";
    position:absolute;
    border:1px solid rgba(255,255,255,.07);
    border-radius:50%;
    pointer-events:none;
}
.login-page:before{
    width:540px;height:540px;left:-220px;bottom:-270px;
}
.login-page:after{
    width:420px;height:420px;right:-170px;top:-210px;
}
.login-card{
    position:relative;
    z-index:1;
    width:min(460px,100%)!important;
    padding:30px 32px 26px!important;
    border-radius:22px!important;
    border:1px solid rgba(255,255,255,.65)!important;
    background:rgba(255,255,255,.97)!important;
    box-shadow:0 36px 90px rgba(0,0,0,.34)!important;
}
.login-card:before{
    content:"";
    position:absolute;
    inset:0 0 auto;
    height:4px;
    border-radius:22px 22px 0 0;
    background:linear-gradient(90deg,#177b70,#b89055);
}
.login-access-pill{
    width:max-content;
    display:inline-flex;
    align-items:center;
    gap:7px;
    margin-bottom:18px;
    padding:6px 9px;
    color:#12665f;
    background:#edf7f5;
    border:1px solid #cce4df;
    border-radius:999px;
    font-size:9.5px;
    font-weight:850;
    letter-spacing:.65px;
    text-transform:uppercase;
}
.login-brand{
    margin-bottom:18px!important;
}
.login-brand .brand-mark span{
    background:linear-gradient(180deg,#177b70,#12665f)!important;
}
.login-brand h1{
    color:#17364e!important;
    font-size:28px!important;
    letter-spacing:1px;
}
.login-brand p{
    color:#718293!important;
    font-size:12px;
}
.login-welcome{
    margin:0 0 20px;
    padding-top:16px;
    border-top:1px solid #e7edf2;
}
.login-welcome h2{
    margin:0 0 5px;
    color:#1d3042;
    font-size:21px;
}
.login-welcome p{
    margin:0;
    color:#6d7d8d;
    font-size:12px;
    line-height:1.45;
}
.login-card .form-field label{
    color:#4c5f72!important;
    font-size:10px!important;
    letter-spacing:.55px;
    text-transform:uppercase;
}
.login-card input{
    min-height:46px!important;
    background:#f9fbfc!important;
}
.login-submit{
    min-height:46px!important;
    margin-top:18px!important;
    font-size:12.5px!important;
}
.login-security{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:7px;
    margin-top:16px;
    color:#8090a0;
    font-size:10.5px;
}
.login-security i{
    color:#177b70;
}

@media(max-width:1260px){
    .map-layout{
        grid-template-columns:minmax(0,1fr) 350px!important;
    }
    .geovisor-workspace .filters,
    .map-card .filters{
        grid-template-columns:repeat(3,minmax(150px,1fr))!important;
    }
}

@media(max-width:920px){
    .sidebar{
        width:min(290px,86vw)!important;
        background:linear-gradient(180deg,#0d2235,#0b1d2d)!important;
    }
    .main{
        margin-left:0!important;
        width:100%!important;
    }
    .geovisor-context-bar{
        align-items:flex-start;
        flex-direction:column;
    }
    .workspace-meta{
        justify-content:flex-start;
    }
    .map-layout{
        grid-template-columns:1fr!important;
    }
    .geovisor-workspace .map-detail{
        min-height:520px;
    }
    .geovisor-workspace .map{
        height:68vh!important;
        min-height:560px!important;
    }
}

@media(max-width:720px){
    .geovisor-workspace .content{
        padding:10px 9px 20px!important;
    }
    .topbar{
        padding:10px 11px!important;
    }
    .topbar-user-card{
        width:100%!important;
    }
    .workspace-heading{
        display:block;
    }
    .workspace-eyebrow{
        margin-bottom:6px;
    }
    .workspace-heading h2{
        font-size:18px;
    }
    .workspace-meta{
        width:100%;
        display:grid;
        grid-template-columns:1fr 1fr;
    }
    .workspace-meta-chip{
        justify-content:center;
        white-space:normal;
        text-align:center;
    }
    .workspace-meta-chip:last-child{
        grid-column:1/-1;
    }
    .map-filter-head{
        align-items:stretch;
        flex-direction:column;
    }
    .map-clear-button{
        width:100%;
    }
    .geovisor-workspace .filters,
    .map-card .filters{
        grid-template-columns:1fr!important;
    }
    .map-stage-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .map-stage-pills{
        width:100%;
    }
    .map-stage-pills>span{
        flex:1 1 0;
        justify-content:center;
    }
    .geovisor-workspace .map{
        min-height:520px!important;
        height:65vh!important;
    }
    .geovisor-workspace .map-provider-control{
        top:12px!important;
        left:12px!important;
        right:12px!important;
        transform:none!important;
    }
.geovisor-workspace .google-earth-control.mapbox-3d-control{
        top:126px!important;
        left:12px!important;
        right:auto!important;
        max-width:240px!important;
    }
    .geovisor-workspace .detail-tabs button{
        font-size:9px!important;
    }
    .login-card{
        padding:26px 22px 22px!important;
    }
}


/* v1.0.145 - Ajustes finales de interacción y puntos de quiebre */
@media(min-width:921px){
    .app-body.sidebar-collapsed .sidebar{
        width:82px!important;
    }
    .app-body.sidebar-collapsed .main{
        margin-left:82px!important;
        width:calc(100% - 82px)!important;
    }
}
@media(max-width:1100px) and (min-width:721px){
.geovisor-workspace .google-earth-control.mapbox-3d-control{
        top:70px!important;
        right:14px!important;
    }
}
@media(max-width:920px) and (min-width:721px){
    .geovisor-workspace .filters,
    .map-card .filters{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
}


/* v1.0.146 - Navegación con rueda presionada y vista satelital inicial */
.map.middle-mouse-navigation-active,
.map.middle-mouse-navigation-active .mapboxgl-canvas,
.map.middle-mouse-navigation-active .google-satellite-map,
body.middle-mouse-navigation-active{
    cursor:grabbing!important;
    user-select:none!important;
}
.map.middle-mouse-navigation-active *{
    cursor:grabbing!important;
}

/* v1.0.147 - Dashboard mensual de cronogramas por paquetes */
.schedule-dashboard-shell,
.monthly-import-shell{display:grid;gap:18px}
.schedule-filter-card{padding:22px;border:1px solid #dbe5ef;background:linear-gradient(145deg,#fff 0%,#f7faff 72%,#eef5ff 100%);box-shadow:0 18px 45px rgba(6,27,53,.08)}
.schedule-filter-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.schedule-filter-heading h2,.monthly-import-hero h2{margin:4px 0 6px;color:#061b35;font-size:clamp(22px,2.1vw,31px)}
.schedule-filter-heading p,.monthly-import-hero p{margin:0;color:#64748b;font-weight:650;line-height:1.55;max-width:850px}
.schedule-filter-form{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(210px,.9fr) minmax(300px,1.6fr) minmax(220px,1fr) auto;gap:12px;align-items:end}
.schedule-filter-form .form-field{margin:0}
.schedule-project-filter{min-width:0}
.schedule-filter-actions{display:flex;gap:8px;align-items:center;padding-bottom:1px}
.schedule-filter-status{margin-top:16px;padding:12px 14px;border:1px solid #dbe5ef;border-radius:14px;background:rgba(255,255,255,.82);display:flex;gap:10px;align-items:center;color:#475569;font-weight:750}
.schedule-filter-status i{color:#b40718}
.schedule-project-hero{padding:20px 22px;background:linear-gradient(135deg,#071c36 0%,#0c3767 58%,#164e87 100%);color:#fff;display:flex;justify-content:space-between;gap:18px;align-items:center;overflow:hidden;position:relative}
.schedule-project-hero:after{content:"";position:absolute;width:280px;height:280px;border-radius:50%;right:-95px;top:-130px;background:rgba(255,255,255,.09)}
.schedule-project-title{display:flex;align-items:center;gap:15px;position:relative;z-index:1}
.schedule-project-icon{width:56px;height:56px;border-radius:18px;background:rgba(255,255,255,.14);display:grid;place-items:center;font-size:24px;border:1px solid rgba(255,255,255,.2)}
.schedule-project-title span{font-size:11px;text-transform:uppercase;letter-spacing:.13em;font-weight:900;color:#b8d7f5}
.schedule-project-title h2{margin:3px 0 2px;color:#fff;font-size:clamp(21px,2vw,29px)}
.schedule-project-title p{margin:0;color:#d8e8f7;font-weight:700}
.schedule-project-badges{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;position:relative;z-index:1}
.schedule-project-badges span{padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.18);font-weight:850;font-size:12px}
.schedule-summary-grid,.monthly-import-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}
.schedule-summary-grid article,.monthly-import-stats article{padding:16px 17px;display:grid;gap:8px;border:1px solid #dfe8f1;background:#fff}
.schedule-summary-grid span,.monthly-import-stats span{color:#64748b;font-size:12px;font-weight:850;display:flex;align-items:center;gap:8px}
.schedule-summary-grid i,.monthly-import-stats i{color:#b40718}
.schedule-summary-grid strong,.monthly-import-stats strong{font-size:22px;color:#061b35;line-height:1.15;overflow-wrap:anywhere}
.monthly-import-stats strong.small{font-size:14px;line-height:1.4}
.schedule-stage-card{padding:0;overflow:hidden;border:1px solid #dbe5ef;box-shadow:0 18px 50px rgba(6,27,53,.07)}
.schedule-stage-card.design{--stage-accent:#1d4f83;--stage-soft:#eaf3fc}
.schedule-stage-card.physical{--stage-accent:#b40718;--stage-soft:#fff0f1}
.schedule-stage-head{padding:20px 22px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid #dbe5ef;background:linear-gradient(135deg,#fff,var(--stage-soft))}
.schedule-stage-head h2{margin:4px 0 4px;color:#061b35;font-size:22px}
.schedule-stage-head p{margin:0;color:#64748b;font-weight:750}
.schedule-type-pill{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;font-size:11px;font-weight:950;white-space:nowrap}
.schedule-type-pill.design{background:#dbeafe;color:#1e4f82;border:1px solid #bfdbfe}
.schedule-type-pill.physical{background:#fee2e2;color:#a30818;border:1px solid #fecaca}
.schedule-timeline-scroll{--month-width:66px;overflow-x:auto;overflow-y:hidden;background:#f8fafc;border-bottom:1px solid #dbe5ef;position:relative;scrollbar-color:#94a3b8 #e2e8f0}
.schedule-timeline-canvas{position:relative;min-width:calc(290px + (var(--month-count) * var(--month-width)));padding-bottom:8px}
.schedule-timeline-row{display:grid;grid-template-columns:290px calc(var(--month-count) * var(--month-width));min-height:54px;border-bottom:1px solid #e5edf5}
.schedule-timeline-row:last-child{border-bottom:0}
.schedule-timeline-label{position:sticky;left:0;z-index:4;background:#fff;border-right:1px solid #d7e1eb;padding:10px 14px;display:flex;flex-direction:column;justify-content:center;gap:3px;box-shadow:5px 0 12px rgba(6,27,53,.035)}
.schedule-timeline-label strong{color:#0b2545;font-size:12px;line-height:1.25}
.schedule-timeline-label small{color:#64748b;font-size:10px;font-weight:750;line-height:1.25}
.schedule-timeline-main-label{background:#1d5688;color:#fff;font-weight:950;letter-spacing:.03em}
.schedule-timeline-years{min-height:40px}
.schedule-timeline-months{min-height:30px}
.schedule-timeline-years .schedule-timeline-label,.schedule-timeline-months .schedule-timeline-label{padding-top:7px;padding-bottom:7px}
.schedule-timeline-track{position:relative;display:grid;grid-template-columns:repeat(var(--month-count),var(--month-width));align-items:center}
.schedule-years-grid{background:#1d5688;color:#fff}
.schedule-years-grid span{height:100%;display:grid;place-items:center;border-right:1px solid rgba(255,255,255,.27);font-size:12px;font-weight:950}
.schedule-months-grid{background:#e8f0f8;color:#244662}
.schedule-months-grid span{height:100%;display:grid;place-items:center;border-right:1px solid #cad8e5;font-size:9px;font-weight:900;text-transform:uppercase}
.schedule-month-grid{background:repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--month-width) - 1px),#d3dee8 calc(var(--month-width) - 1px),#d3dee8 var(--month-width)),linear-gradient(180deg,#fff,#f8fbfe)}
.schedule-gantt-bar{height:23px;margin:0 5px;border-radius:7px;display:flex;align-items:center;justify-content:flex-end;padding:0 7px;box-shadow:0 5px 10px rgba(6,27,53,.18);border:1px solid rgba(255,255,255,.55);overflow:hidden;min-width:12px}
.schedule-gantt-bar b{font-size:9px;color:#fff;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.schedule-gantt-bar.tone-1{background:#174f86}.schedule-gantt-bar.tone-2{background:#b65a00}.schedule-gantt-bar.tone-3{background:#6b7280}.schedule-gantt-bar.tone-4{background:#3f7d20}.schedule-gantt-bar.tone-5{background:#7c3aed}.schedule-gantt-bar.tone-6{background:#b40718}
.schedule-no-date{position:absolute;left:14px;color:#94a3b8;font-size:10px;font-weight:800;font-style:italic}
.schedule-cutoff-line{position:absolute;z-index:3;top:0;bottom:0;left:calc(290px + (var(--cutoff-index) * var(--month-width)));border-left:3px dashed #e60023;pointer-events:none}
.schedule-cutoff-line span{position:sticky;top:4px;transform:translateX(-50%);display:block;width:max-content;padding:5px 8px;border-radius:8px;background:#fff;color:#e60023;border:1px solid #fecaca;box-shadow:0 6px 16px rgba(180,7,24,.14);font-size:9px;text-align:center;font-weight:900;line-height:1.25}
.schedule-table-title{padding:16px 20px 10px;display:flex;justify-content:space-between;gap:15px;align-items:center}
.schedule-table-title div{display:flex;align-items:center;gap:9px;color:#061b35;font-weight:900}
.schedule-table-title i{color:var(--stage-accent)}
.schedule-table-title small{color:#64748b;font-weight:700}
.schedule-detail-table-wrap{padding:0 14px 18px}
.schedule-detail-table{min-width:1180px;border:1px solid #d7e1eb}
.schedule-detail-table thead th{background:#154e7e;color:#fff;font-size:9px;text-transform:uppercase;letter-spacing:.025em;text-align:center;vertical-align:middle;white-space:normal;min-width:88px}
.schedule-stage-card.physical .schedule-detail-table thead th{background:#124d79}
.schedule-detail-table tbody td{font-size:10px;vertical-align:middle;text-align:right;white-space:nowrap}
.schedule-detail-table tbody td:first-child,.schedule-detail-table tbody td:nth-child(2),.schedule-detail-table tbody td:nth-child(7){text-align:left;white-space:normal;min-width:150px}
.schedule-detail-table tbody tr:nth-child(even){background:#f8fafc}
.schedule-row-note{display:block;margin-top:4px;color:#b40718;font-weight:800;font-size:9px}
.schedule-empty-card{text-align:center;padding:36px 20px;color:#64748b}
.schedule-empty-card i{font-size:32px;color:#94a3b8}.schedule-empty-card h3{color:#061b35;margin:10px 0 5px}.schedule-empty-card p{margin:0}
.schedule-map-heading{margin-top:5px}

/* Módulo de carga mensual */
.monthly-import-hero{padding:22px;display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(145deg,#fff,#f2f7fd);border:1px solid #dbe5ef}
.monthly-upload-card,.monthly-history-card{padding:20px}
.monthly-upload-form{display:grid;grid-template-columns:minmax(240px,.7fr) minmax(280px,1fr) minmax(280px,1fr);gap:14px;align-items:stretch}
.monthly-period-field{padding:16px;border:1px solid #dbe5ef;border-radius:16px;background:#f8fafc;margin:0!important}
.monthly-period-field input{margin-top:6px}
.monthly-period-field small{display:block;margin-top:8px;color:#64748b;line-height:1.4}
.monthly-file-drop{position:relative;border:1px dashed #9fb5ca;border-radius:16px;padding:17px;background:#fff;display:flex;align-items:center;gap:13px;cursor:pointer;transition:.17s ease}
.monthly-file-drop:hover{transform:translateY(-2px);border-color:#1d5688;box-shadow:0 12px 25px rgba(6,27,53,.08)}
.monthly-file-drop.physical-file:hover{border-color:#b40718}
.monthly-file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.monthly-file-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:#e7f1fb;color:#1d5688;font-size:20px;flex:0 0 auto}
.physical-file .monthly-file-icon{background:#feecef;color:#b40718}
.monthly-file-drop strong{display:block;color:#061b35;margin-bottom:4px}.monthly-file-drop small{display:block;color:#64748b;line-height:1.35}
.monthly-upload-note{grid-column:1/-1;padding:12px 14px;border-radius:14px;background:#eef6ff;border:1px solid #cfe2f5;display:flex;gap:10px;align-items:center;color:#36536d}
.monthly-upload-note i{color:#1d5688;font-size:18px}.monthly-upload-note strong,.monthly-upload-note span{display:block}.monthly-upload-note span{font-size:12px;margin-top:2px}
.monthly-upload-actions{grid-column:1/-1;justify-content:flex-end}
.monthly-history-table{min-width:1040px}
.monthly-history-table th{white-space:nowrap}

@media(max-width:1280px){
    .schedule-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-project-filter{grid-column:span 2}.schedule-filter-actions{grid-column:span 2;justify-content:flex-end}
    .monthly-upload-form{grid-template-columns:1fr 1fr}.monthly-period-field{grid-column:1/-1}
}
@media(max-width:900px){
    .schedule-summary-grid,.monthly-import-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
    .schedule-filter-heading,.monthly-import-hero,.schedule-project-hero,.schedule-stage-head{align-items:flex-start;flex-direction:column}
    .schedule-project-badges{justify-content:flex-start}
    .schedule-timeline-scroll{--month-width:58px}.schedule-timeline-row{grid-template-columns:235px calc(var(--month-count) * var(--month-width))}.schedule-timeline-canvas{min-width:calc(235px + (var(--month-count) * var(--month-width)))}.schedule-cutoff-line{left:calc(235px + (var(--cutoff-index) * var(--month-width)))}
    .schedule-timeline-label{padding-left:10px;padding-right:10px}
}
@media(max-width:640px){
    .schedule-filter-card,.monthly-upload-card,.monthly-history-card{padding:15px}
    .schedule-filter-form,.monthly-upload-form{grid-template-columns:1fr}.schedule-project-filter,.schedule-filter-actions,.monthly-period-field,.monthly-upload-note,.monthly-upload-actions{grid-column:auto}
    .schedule-filter-actions,.monthly-upload-actions{justify-content:stretch;flex-direction:column}.schedule-filter-actions .btn,.monthly-upload-actions .btn{width:100%;justify-content:center}
    .schedule-summary-grid,.monthly-import-stats{grid-template-columns:1fr 1fr;gap:9px}.schedule-summary-grid article,.monthly-import-stats article{padding:13px}.schedule-summary-grid strong,.monthly-import-stats strong{font-size:17px}
    .schedule-project-title{align-items:flex-start}.schedule-project-icon{width:46px;height:46px;border-radius:14px}
    .schedule-table-title{align-items:flex-start;flex-direction:column}
    .monthly-file-drop{min-height:105px}
}

/* v1.0.148 - Ajustes de cronograma, contraste y formato numérico */
.card.schedule-project-hero{
    background:linear-gradient(135deg,#071c36 0%,#0c3767 58%,#164e87 100%)!important;
    color:#fff!important;
    border-color:#164e87!important;
    box-shadow:0 18px 42px rgba(6,27,53,.20)!important;
}
.schedule-project-hero .schedule-project-icon{
    color:#fff!important;
    background:rgba(255,255,255,.14)!important;
    border-color:rgba(255,255,255,.24)!important;
}
.schedule-project-hero .schedule-project-title>div>span{
    color:#b8d7f5!important;
}
.schedule-project-hero .schedule-project-title h2{
    color:#fff!important;
    text-shadow:0 1px 2px rgba(0,0,0,.14);
}
.schedule-project-hero .schedule-project-title p,
.schedule-project-hero .schedule-project-title p strong{
    color:#e5f1fb!important;
}
.schedule-project-hero .schedule-project-badges span{
    color:#fff!important;
    background:rgba(255,255,255,.13)!important;
    border-color:rgba(255,255,255,.22)!important;
}
.schedule-detail-table thead th,
.schedule-detail-table tbody td,
.schedule-detail-table tbody td:first-child,
.schedule-detail-table tbody td:nth-child(2),
.schedule-detail-table tbody td:nth-child(7){
    text-align:center!important;
    vertical-align:middle!important;
}
.schedule-detail-table tbody td{
    white-space:normal;
    line-height:1.35;
}
.schedule-detail-table tbody td:first-child,
.schedule-detail-table tbody td:nth-child(2){
    min-width:150px;
}
.schedule-row-note{
    text-align:center;
}

/* v1.0.150 - Importación de porcentajes generales */
.general-progress-upload-form .progress-file{grid-column:span 2}
.general-progress-upload-card .monthly-file-icon{background:#e9f7ef;color:#16784a}
.general-progress-history-card .monthly-history-table td{text-align:center;vertical-align:middle}
@media(max-width:1280px){.general-progress-upload-form .progress-file{grid-column:1/-1}}
@media(max-width:640px){.general-progress-upload-form .progress-file{grid-column:auto}}

/* v1.0.151 - Migraciones controladas y paginación */
.migration-shell{display:grid;gap:18px}
.migration-overview-card .panel-title{align-items:flex-start}
.migration-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.migration-summary-grid article{padding:18px;border:1px solid #dce4ed;border-radius:14px;background:#f8fafc;display:grid;gap:6px}
.migration-summary-grid span{font-size:.78rem;color:#64748b;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.migration-summary-grid strong{font-size:1.8rem;color:#0f2742}
.migration-table td{vertical-align:middle}
.projects-list-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 0}
.projects-list-summary{color:#526173;font-size:.9rem}
.pagination-nav{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:18px}
.pagination-nav a,.pagination-nav span{min-width:38px;height:38px;padding:0 12px;border:1px solid #d6dee8;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:#19334f;background:#fff;font-weight:700}
.pagination-nav a:hover{border-color:#8ea3b8;background:#f2f6fa}
.pagination-nav .active{background:#0b4aa2;color:#fff;border-color:#0b4aa2}
.pagination-nav .disabled{opacity:.45;pointer-events:none}
.pagination-ellipsis{border-color:transparent!important;background:transparent!important;min-width:24px!important;padding:0!important}
@media(max-width:780px){.migration-summary-grid{grid-template-columns:1fr}.pagination-nav a,.pagination-nav span{min-width:34px;height:34px;padding:0 9px}}

/* =========================================================
   DIMGEP v1.0.153 · Fases 2 y 3
   Importador validado, historial de versiones y dashboard ejecutivo
   ========================================================= */
.import-assistant-shell,
.import-preview-shell,
.version-compare-shell,
.executive-dashboard-shell{display:grid;gap:18px}
.import-assistant-hero{align-items:center}
.import-version-stats article{min-height:122px}
.import-version-stats article small{display:block;margin-top:7px;color:#64748b;font-size:12px}
.import-wizard-card{overflow:visible}
.import-stepper{display:flex;align-items:center;gap:10px;margin:4px 0 22px;padding:14px 16px;border:1px solid #dbe5ef;border-radius:16px;background:#f8fbfe}
.import-stepper span{display:flex;align-items:center;gap:8px;color:#64748b;font-size:12px;font-weight:800;white-space:nowrap}
.import-stepper span b{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#e5edf5;color:#334155}
.import-stepper span.active{color:#0b3f70}.import-stepper span.active b{background:#0b3f70;color:#fff}
.import-stepper>i{height:2px;flex:1;min-width:20px;background:#d9e3ed}
.import-assistant-form{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(260px,1fr);gap:16px;align-items:end}
.import-assistant-form .import-single-file{grid-column:1/-1;min-height:118px}
.import-single-file em{display:block;margin-top:6px;color:#0b3f70;font-style:normal;font-weight:800;font-size:12px}
.import-assistant-form .monthly-upload-note,.import-assistant-form .monthly-upload-actions{grid-column:1/-1}
.period-update-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.period-update-status-grid article{display:flex;align-items:center;gap:12px;padding:16px;border-radius:16px;border:1px solid #dde7f0;background:#f9fbfd}
.period-update-status-grid article.ready{border-color:#b9dfcf;background:#f4fbf8}
.period-update-status-grid article.pending{border-color:#f0d5ad;background:#fffaf2}
.period-update-status-grid article .status-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#e8f1f8;color:#0b4a7c;font-size:17px;flex:0 0 auto}
.period-update-status-grid article div{display:grid;gap:3px;min-width:0;flex:1}.period-update-status-grid article strong{font-size:14px}.period-update-status-grid article small{color:#64748b;font-size:11px}
.inline-period-filter{display:flex;align-items:center;gap:10px}.inline-period-filter label{font-size:11px;font-weight:800;color:#64748b}.inline-period-filter input{min-height:38px;border:1px solid #cfdbe6;border-radius:10px;padding:0 10px}
.version-history-table td{vertical-align:middle}.version-history-table td small{display:block;margin-top:5px;color:#64748b;line-height:1.35}.active-version-row{background:#f4fbf8}.version-actions{display:flex;align-items:center;gap:6px}.version-actions form{margin:0}.schedule-type-pill.progress{background:#efe9ff;color:#5b35a8}

.import-preview-hero{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:24px}.import-preview-hero h2{margin:3px 0 7px}.import-preview-hero p{margin:0;color:#64748b}
.import-validation-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.validation-stat{padding:18px;min-height:118px;display:grid;align-content:center;gap:5px;border-top:4px solid #8ba4bb}
.validation-stat span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.validation-stat strong{font-size:28px;color:#102b45}.validation-stat small{font-size:11px;color:#64748b}
.validation-stat.good{border-top-color:#2b9a6e}.validation-stat.warning{border-top-color:#e0a22e}.validation-stat.danger{border-top-color:#c73d4a}
.column-map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.column-map-item{display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1.2fr);align-items:center;gap:8px;padding:12px 14px;border:1px solid #dce6ef;border-radius:12px;background:#fbfdff}.column-map-item span{font-size:11px;font-weight:800;color:#64748b}.column-map-item i{font-size:10px;color:#94a3b8;text-align:center}.column-map-item strong{font-size:12px;color:#183954;overflow-wrap:anywhere}.column-map-item.missing{background:#fffaf3;border-color:#ead6b2}.column-map-item.missing strong{color:#a56813}
.import-issues-card{display:grid;gap:16px}.issue-group{border:1px solid #e1e8ef;border-radius:14px;overflow:hidden}.issue-group h3{margin:0;padding:13px 16px;font-size:13px;display:flex;align-items:center;gap:8px}.issue-group.errors h3{background:#fff0f1;color:#a72634}.issue-group.warnings h3{background:#fff8e9;color:#9a6513}.issue-row{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:10px 16px;border-top:1px solid #edf1f5;font-size:12px}.issue-row strong{color:#334155}.issue-row span{color:#475569}
.import-preview-table{text-align:center}.import-preview-table th,.import-preview-table td{text-align:center;vertical-align:middle}.import-preview-table td:nth-child(4),.import-preview-table td:nth-child(5){text-align:left}
.import-confirm-card{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px;border:1px solid #bcdccd;background:linear-gradient(135deg,#f3fbf7,#fff)}.import-confirm-card.blocked{border-color:#ecc3c8;background:linear-gradient(135deg,#fff5f6,#fff)}.import-confirm-card h2{margin:3px 0 7px}.import-confirm-card p{margin:0;max-width:760px;color:#64748b}.import-confirm-button{min-height:48px;padding-inline:22px}
.compare-stats{grid-template-columns:repeat(3,minmax(0,1fr));max-width:760px}.compare-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.compare-list article{display:grid;gap:4px;padding:12px;border:1px solid #dde6ee;border-radius:12px;background:#fbfdff}.compare-list article strong{font-size:12px}.compare-list article span{font-size:11px;color:#64748b}.compare-changes{display:grid;gap:10px}.compare-changes details{border:1px solid #dce5ed;border-radius:12px;overflow:hidden}.compare-changes summary{display:flex;justify-content:space-between;gap:10px;padding:13px 15px;cursor:pointer;background:#f8fbfd}.compare-changes summary span{color:#64748b}.compare-json-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px}.compare-json-grid pre{margin:0;padding:12px;max-height:380px;overflow:auto;border-radius:10px;background:#0d2235;color:#e4edf5;font-size:11px;white-space:pre-wrap}

.executive-portfolio-hero{padding:22px;display:grid;gap:18px;background:linear-gradient(135deg,#f8fbfe,#fff)}
.executive-hero-copy{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.executive-hero-copy h2{margin:3px 0 7px;font-size:25px}.executive-hero-copy p{margin:0;color:#64748b}.executive-hero-meta{display:grid;gap:5px;text-align:right;min-width:210px}.executive-hero-meta span{font-size:11px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.executive-hero-meta strong{font-size:14px;color:#153a57}
.executive-update-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.executive-update-grid article{display:flex;align-items:center;gap:12px;padding:14px;border-radius:15px;border:1px solid #dce5ed;background:#fff}.executive-update-grid article.updated{border-color:#b6dfcd;background:#f3faf7}.executive-update-grid article.pending{border-color:#ebd2a7;background:#fffaf1}.executive-update-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#e8f1f8;color:#0c4b78;flex:0 0 auto}.executive-update-grid article>div{display:grid;gap:2px;flex:1}.executive-update-grid small{font-size:10px;font-weight:800;text-transform:uppercase;color:#64748b}.executive-update-grid strong{font-size:14px}.executive-update-grid em{font-size:10px;font-style:normal;color:#64748b}.executive-update-grid article>i{color:#2c9a6f}.executive-update-grid article.pending>i{color:#d69a2d}
.executive-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.executive-metric{padding:17px;display:flex;align-items:center;gap:14px;min-height:112px}.executive-metric .metric-icon{display:grid;place-items:center;width:47px;height:47px;border-radius:15px;background:#eaf2f8;color:#0b4b7a;font-size:18px;flex:0 0 auto}.executive-metric>div{display:grid;gap:3px;min-width:0}.executive-metric small{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#64748b}.executive-metric strong{font-size:24px;color:#102f49;line-height:1.1;overflow-wrap:anywhere}.executive-metric em{font-size:11px;color:#64748b;font-style:normal}.executive-metric.alert{border-color:#edc6ca;background:#fff8f8}.executive-metric.alert .metric-icon{background:#fdebec;color:#b62f3e}
.executive-analysis-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.executive-progress-card,.executive-alerts-card{padding:20px}.executive-progress-item{display:grid;gap:8px;padding:14px 0}.executive-progress-item+ .executive-progress-item{border-top:1px solid #e7edf2}.executive-progress-item>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:10px}.executive-progress-item>div:first-child span{font-size:12px;font-weight:800;color:#334155}.executive-progress-item>div:first-child strong{font-size:21px;color:#123c5b}.executive-progress-track{height:11px;border-radius:999px;background:#e7eef4;overflow:hidden}.executive-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#206aa0,#57a7d6)}.executive-progress-item.physical .executive-progress-track span{background:linear-gradient(90deg,#1b7d5b,#54b58d)}.executive-progress-item small{font-size:11px;color:#64748b}.executive-alert-list{display:grid;gap:9px}.executive-alert-list article{display:flex;align-items:flex-start;gap:11px;padding:11px 12px;border:1px solid #dde6ed;border-radius:12px;background:#fbfdff}.executive-alert-list article>i{margin-top:2px;color:#2d8b67}.executive-alert-list article.warning{border-color:#ead5ab;background:#fffaf1}.executive-alert-list article.warning>i{color:#d19626}.executive-alert-list article.danger{border-color:#efc5ca;background:#fff7f8}.executive-alert-list article.danger>i{color:#bd3442}.executive-alert-list article div{display:grid;gap:2px}.executive-alert-list strong{font-size:12px}.executive-alert-list span{font-size:10px;color:#64748b;line-height:1.35}
.executive-filter-form{grid-template-columns:repeat(4,minmax(170px,1fr))}.executive-filter-form .schedule-project-filter{grid-column:span 2}.executive-filter-form .schedule-filter-actions{grid-column:span 2;align-self:end}.separated-stage-summary{grid-template-columns:repeat(5,minmax(0,1fr))}.separated-stage-summary article strong{font-size:19px}

@media (max-width:1280px){.import-validation-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.executive-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.executive-filter-form{grid-template-columns:repeat(3,minmax(170px,1fr))}.executive-filter-form .schedule-project-filter{grid-column:span 2}.separated-stage-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:980px){.period-update-status-grid,.executive-update-grid{grid-template-columns:1fr}.column-map-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.executive-analysis-grid{grid-template-columns:1fr}.executive-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.executive-filter-form .schedule-project-filter,.executive-filter-form .schedule-filter-actions{grid-column:1/-1}.compare-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:720px){.import-assistant-form{grid-template-columns:1fr}.import-stepper{overflow-x:auto;justify-content:flex-start}.import-stepper>i{min-width:28px;flex:0 0 28px}.import-validation-grid,.executive-metric-grid,.executive-filter-form,.separated-stage-summary{grid-template-columns:1fr}.column-map-grid{grid-template-columns:1fr}.import-preview-hero,.import-confirm-card,.executive-hero-copy{align-items:flex-start;flex-direction:column}.executive-hero-meta{text-align:left;min-width:0}.executive-filter-form .schedule-project-filter,.executive-filter-form .schedule-filter-actions{grid-column:auto}.compare-list{grid-template-columns:1fr}.compare-json-grid{grid-template-columns:1fr}.issue-row{grid-template-columns:72px 1fr}.inline-period-filter{align-items:flex-start;flex-direction:column}}


/* Dashboard ejecutivo: actualización dinámica de filtros sin recargar toda la página */
[data-dashboard-shell] { position: relative; }
[data-dashboard-shell].dashboard-ajax-loading::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 9990;
    background: rgba(248,250,252,.58);
    backdrop-filter: blur(2px);
}
[data-dashboard-shell].dashboard-ajax-loading::after {
    content: "Actualizando indicadores y cronogramas…";
    position: fixed;
    left: 50%;
    top: 50%;
    z-index: 9991;
    transform: translate(-50%,-50%);
    padding: 16px 22px 16px 50px;
    border: 1px solid rgba(148,163,184,.35);
    border-radius: 16px;
    background: #fff;
    color: #0f172a;
    font-weight: 800;
    box-shadow: 0 20px 55px rgba(15,23,42,.18);
}
[data-dashboard-shell].dashboard-ajax-loading .executive-filter-form::after {
    content: "";
    position: fixed;
    left: calc(50% - 76px);
    top: calc(50% - 8px);
    z-index: 9992;
    width: 18px;
    height: 18px;
    border: 3px solid #cbd5e1;
    border-top-color: #b40718;
    border-radius: 50%;
    animation: dimgep-dashboard-spin .75s linear infinite;
}
@keyframes dimgep-dashboard-spin { to { transform: rotate(360deg); } }

/* ============================================================
   DIMGEP v1.0.155 · Proyecto 360, usabilidad, seguridad y móvil
   ============================================================ */
.topbar-global-search{position:relative;display:flex;align-items:center;gap:10px;width:min(430px,34vw);margin-left:auto;margin-right:18px;padding:0 14px;border:1px solid #d9e2ec;border-radius:12px;background:#fff;box-shadow:0 4px 18px rgba(15,23,42,.05)}
.topbar-global-search>i{color:#64748b}.topbar-global-search input{width:100%;height:42px;border:0!important;outline:0;background:transparent;font-size:13px;color:#0f172a}.topbar-global-search input::placeholder{color:#94a3b8}
.global-search-results{position:absolute;z-index:1200;top:calc(100% + 9px);left:0;right:0;max-height:430px;overflow:auto;padding:8px;border:1px solid #dbe4ee;border-radius:14px;background:#fff;box-shadow:0 22px 60px rgba(15,23,42,.2)}
.global-search-results a{display:grid;gap:3px;padding:11px 12px;border-radius:10px;color:#0f172a;text-decoration:none}.global-search-results a:hover,.global-search-results a.is-active{background:#eef5ff}.global-search-results a strong{font-size:13px}.global-search-results a span{font-size:11px;color:#52657a}.global-search-results a small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#8391a3}.global-search-empty,.global-search-loading{padding:18px;text-align:center;color:#64748b;font-size:12px}
.session-warning-toast{position:fixed;z-index:3000;right:24px;bottom:24px;display:flex;align-items:center;gap:12px;width:min(410px,calc(100vw - 32px));padding:15px 16px;border:1px solid #f4c56a;border-radius:15px;background:#fff8e7;box-shadow:0 22px 60px rgba(15,23,42,.2);color:#7a4a00}.session-warning-toast>i{font-size:21px}.session-warning-toast>div{display:grid;gap:2px;flex:1}.session-warning-toast strong{font-size:13px}.session-warning-toast span{font-size:11px}.session-warning-toast button{border:0;background:transparent;font-size:22px;color:#7a4a00;cursor:pointer}
.password-field{display:flex;align-items:center;border:1px solid #d9e2ec;border-radius:12px;background:#fff;overflow:hidden}.password-field:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.12)}.password-field input{flex:1;border:0!important;box-shadow:none!important}.password-field button{width:44px;height:44px;border:0;background:transparent;color:#64748b;cursor:pointer}.login-lock-counter{display:block;margin-top:5px;font-weight:600}

.project-360{display:grid;gap:18px}.project-360-tabs{position:sticky;z-index:90;top:72px;display:flex;gap:6px;overflow-x:auto;padding:7px;border:1px solid #dce5ef;border-radius:15px;background:rgba(255,255,255,.96);box-shadow:0 10px 30px rgba(15,23,42,.08);backdrop-filter:blur(14px);scrollbar-width:thin}.project-360-tabs button{display:flex;align-items:center;justify-content:center;gap:8px;min-width:max-content;padding:11px 15px;border:0;border-radius:10px;background:transparent;color:#5b6c80;font:700 12px/1 inherit;cursor:pointer;transition:.2s}.project-360-tabs button:hover{background:#f1f5f9;color:#0f172a}.project-360-tabs button.is-active,.project-360-tabs button[aria-selected=true]{background:#081f3c;color:#fff;box-shadow:0 8px 18px rgba(8,31,60,.22)}.project-360-tabs button b{display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:rgba(148,163,184,.18);font-size:10px}.project-360-tabs button.is-active b{background:rgba(255,255,255,.18)}
.project-360-panel{display:grid;gap:18px;animation:projectPanelIn .22s ease}.project-360-panel[hidden]{display:none!important}@keyframes projectPanelIn{from{opacity:.2;transform:translateY(5px)}to{opacity:1;transform:none}}
.project-360-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.project-360-alerts{padding:18px}.project-alert-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.project-alert-list button{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid #f7cf86;border-radius:13px;background:#fffaf0;text-align:left;color:#7c4a03;cursor:pointer}.project-alert-list button>i:first-child{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#fff0cc;font-size:17px}.project-alert-list button span{display:grid;gap:3px;flex:1}.project-alert-list button strong{font-size:12px}.project-alert-list button small{font-size:10px;color:#8b6230}.project-alert-list button>i:last-child{opacity:.55}.project-alert-list button:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(125,74,3,.1)}
.project-narrative-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px}.project-360-toolbar{align-items:end}.project-period-form label{display:grid;gap:6px;color:#64748b;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.project-period-form select{min-width:190px;height:40px;padding:0 12px;border:1px solid #d7e0ea;border-radius:10px;background:#fff;color:#0f172a;font-weight:700}
.project-schedule-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.project-schedule-summary article{display:grid;gap:5px;padding:14px;border:1px solid #dce5ef;border-radius:12px;background:#f8fafc}.project-schedule-summary article span{font-size:10px;color:#64748b;text-transform:uppercase;font-weight:800}.project-schedule-summary article strong{font-size:16px;color:#0f172a}.project-schedule-summary article.warning{border-color:#f3c76b;background:#fff9e9}.project-schedule-block{display:grid;gap:10px;margin-top:19px}.project-schedule-heading{display:flex;align-items:center;justify-content:space-between}.project-schedule-heading h3{margin:0;font-size:15px}.project-schedule-heading span{padding:5px 9px;border-radius:999px;background:#edf2f7;color:#536579;font-size:10px;font-weight:800}.project-schedule-table th,.project-schedule-table td{text-align:center;vertical-align:middle}.project-schedule-table td:first-child{text-align:left}.project-schedule-table tr.is-overdue td{background:#fff9ed}.row-warning{display:block;margin-top:4px;color:#a75c00;font-size:9px;font-weight:800}.inline-progress{position:relative;display:flex;align-items:center;min-width:115px;height:26px;overflow:hidden;border-radius:8px;background:#edf2f7}.inline-progress span{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#1768c4,#4da3ff)}.inline-progress.physical span{background:linear-gradient(90deg,#b4081a,#ef4756)}.inline-progress b{position:relative;z-index:1;width:100%;font-size:10px;color:#0f172a;text-shadow:0 1px 1px rgba(255,255,255,.8)}
.project-progress-history-cards{display:grid;gap:10px}.project-progress-history-cards article{display:grid;grid-template-columns:minmax(180px,1fr) repeat(2,minmax(170px,.65fr));gap:16px;align-items:center;padding:13px 15px;border:1px solid #e0e7ef;border-radius:12px;background:#fbfdff}.project-progress-history-cards article>div:first-child{display:grid;gap:3px}.project-progress-history-cards article>div:first-child span{font-weight:800}.project-progress-history-cards article>div:first-child small{color:#64748b}.history-progress{display:grid;grid-template-columns:1fr auto;gap:5px;align-items:center}.history-progress label{font-size:10px;color:#64748b;text-transform:uppercase;font-weight:800}.history-progress b{font-size:11px}.history-progress>span{grid-column:1/-1;height:7px;overflow:hidden;border-radius:999px;background:#e8eef5}.history-progress>span i{display:block;height:100%;background:#347fd0}.history-progress.physical>span i{background:#cc2637}
.map-lazy-placeholder{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:7px;background:linear-gradient(145deg,#eaf2fa,#dbe8f4);color:#294866;text-align:center}.map-lazy-placeholder i{font-size:30px}.map-lazy-placeholder strong{font-size:14px}.map-lazy-placeholder span{font-size:10px}.project-file-filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.project-file-filters button{padding:7px 11px;border:1px solid #d9e2ec;border-radius:999px;background:#fff;color:#52657a;font-size:10px;font-weight:800;cursor:pointer}.project-file-filters button.is-active{border-color:#102f54;background:#102f54;color:#fff}
.project-activity-timeline,.project-import-activity{display:grid;gap:0}.project-activity-timeline article{position:relative;display:flex;gap:12px;padding:0 0 20px}.project-activity-timeline article:not(:last-child):before{content:"";position:absolute;left:18px;top:36px;bottom:0;width:1px;background:#dbe4ed}.activity-dot{position:relative;z-index:1;display:grid;place-items:center;flex:0 0 37px;height:37px;border-radius:50%;background:#eaf2fb;color:#1d5f9e}.project-activity-timeline article>div{display:grid;gap:4px;padding-top:3px}.project-activity-timeline strong{font-size:12px}.project-activity-timeline small{color:#64748b;font-size:10px}.project-activity-timeline p{margin:2px 0 0;color:#52657a;font-size:10px}.project-import-activity article{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid #edf1f5}.project-import-activity article>i{display:grid;place-items:center;width:35px;height:35px;border-radius:9px;background:#e9f6ed;color:#208346}.project-import-activity article>div{display:grid;gap:2px}.project-import-activity strong{font-size:11px}.project-import-activity span,.project-import-activity small{font-size:10px;color:#64748b}

@media(max-width:1100px){.topbar-global-search{width:min(360px,38vw)}.project-360-tabs{top:64px}.project-progress-history-cards article{grid-template-columns:1fr 1fr}.project-progress-history-cards article>div:first-child{grid-column:1/-1}.project-narrative-grid{grid-template-columns:1fr}.project-alert-list{grid-template-columns:1fr}}
@media(max-width:920px){.topbar-global-search{order:3;width:100%;margin:8px 0 0;grid-column:1/-1}.topbar{flex-wrap:wrap}.project-360-tabs{top:69px}.project-schedule-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.project-360-kpis{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.project-360-tabs{top:61px;margin-inline:-4px;padding:5px}.project-360-tabs button{padding:10px 12px}.project-360-tabs button span{font-size:11px}.project-360-kpis,.project-schedule-summary{grid-template-columns:1fr 1fr}.project-progress-history-cards article{grid-template-columns:1fr}.project-progress-history-cards article>div:first-child{grid-column:auto}.project-360-toolbar{align-items:stretch}.project-360-toolbar,.project-schedule-heading{display:grid;gap:10px}.project-period-form select{width:100%}.table-responsive-cards thead{display:none}.table-responsive-cards,.table-responsive-cards tbody,.table-responsive-cards tr,.table-responsive-cards td{display:block;width:100%}.table-responsive-cards tr{margin:0 0 12px;padding:9px 12px;border:1px solid #dce5ef;border-radius:12px;background:#fff;box-shadow:0 5px 15px rgba(15,23,42,.04)}.table-responsive-cards td{display:grid;grid-template-columns:minmax(105px,.7fr) 1fr;gap:10px;align-items:center;padding:8px 0!important;border:0!important;border-bottom:1px dashed #e5ebf1!important;text-align:right!important}.table-responsive-cards td:last-child{border-bottom:0!important}.table-responsive-cards td:before{content:attr(data-label);text-align:left;color:#68798b;font-size:9px;font-weight:800;text-transform:uppercase}.table-responsive-cards td:first-child{text-align:right!important}.inline-progress{margin-left:auto}.project-map-shell{grid-template-columns:1fr}.project-map-legend{max-height:260px}.session-warning-toast{right:16px;bottom:16px}}
@media(max-width:480px){.project-360-kpis,.project-schedule-summary{grid-template-columns:1fr}.project-360-tabs button i{display:none}.project-hero-actions{width:100%}.project-hero-actions .btn{flex:1}.project-file-filters .btn{width:100%;justify-content:center}.topbar-global-search input{font-size:12px}}
.project-360 .project-narrative-card{display:block}.project-360 .project-narrative-card .section-heading{margin-bottom:12px}.security-dashboard{display:grid;gap:18px}.security-dashboard select{height:40px;padding:0 12px;border:1px solid #d7e0ea;border-radius:10px;background:#fff;color:#0f172a;font-weight:700}


/* v1.0.167 - Mapa territorial simplificado y Street View inmersivo */
.geovisor-workspace .map-card .filters,
.geovisor-workspace .filters{grid-template-columns:repeat(4,minmax(145px,1fr))!important}
.geovisor-workspace .google-earth-control.mapbox-3d-control{display:none!important}
body.street-view-fullscreen-open{
    overflow:hidden!important;
}
.street-view-panel.street-view-fullscreen[hidden]{
    display:none!important;
}
.street-view-panel.street-view-fullscreen:not([hidden]){
    position:fixed!important;
    inset:0!important;
    z-index:2147483647!important;
    width:100vw!important;
    height:100vh!important;
    height:100dvh!important;
    max-width:none!important;
    max-height:none!important;
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr) auto!important;
    overflow:hidden!important;
    border:0!important;
    border-radius:0!important;
    background:#07111d!important;
    box-shadow:none!important;
}
.street-view-fullscreen-head{
    min-height:68px!important;
    padding:10px 14px 10px 18px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:16px!important;
    color:#fff!important;
    background:linear-gradient(90deg,#071b31,#0d3555 62%,#0d4c55)!important;
    border-bottom:1px solid rgba(255,255,255,.13)!important;
}
.street-view-fullscreen-title{
    min-width:0!important;
    display:flex!important;
    align-items:center!important;
    gap:11px!important;
}
.street-view-fullscreen-icon{
    width:42px!important;
    height:42px!important;
    flex:0 0 42px!important;
    display:grid!important;
    place-items:center!important;
    border-radius:13px!important;
    color:#1b2a38!important;
    background:linear-gradient(145deg,#ffe274,#f4b400)!important;
    box-shadow:0 8px 20px rgba(0,0,0,.24)!important;
}
.street-view-fullscreen-title>span:last-child{
    min-width:0!important;
    display:grid!important;
    gap:3px!important;
}
.street-view-fullscreen-title strong{
    font-size:16px!important;
    font-weight:950!important;
    letter-spacing:.2px!important;
}
.street-view-fullscreen-title small{
    display:block!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    background:transparent!important;
    color:#c6d7e6!important;
    font-size:11px!important;
    font-weight:750!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
}
.street-view-fullscreen-actions{
    display:flex!important;
    align-items:center!important;
    gap:8px!important;
}
.street-view-fullscreen-actions a,
.street-view-fullscreen-actions button{
    min-height:42px!important;
    padding:0 13px!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    gap:7px!important;
    border:1px solid rgba(255,255,255,.18)!important;
    border-radius:11px!important;
    color:#fff!important;
    background:rgba(255,255,255,.09)!important;
    font-size:11px!important;
    font-weight:900!important;
    text-decoration:none!important;
    cursor:pointer!important;
}
.street-view-fullscreen-actions a:hover,
.street-view-fullscreen-actions button:hover{
    background:rgba(255,255,255,.17)!important;
}
.street-view-fullscreen-actions .street-view-close{
    width:42px!important;
    padding:0!important;
    border-radius:50%!important;
    font-size:18px!important;
}
.street-view-frame-wrap{
    position:relative!important;
    min-height:0!important;
    overflow:hidden!important;
    background:#0b1520!important;
}
.street-view-fullscreen iframe{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    display:block!important;
    border:0!important;
    background:#0b1520!important;
}

/* v1.0.168: el visor nativo de Google necesita un contenedor con dimensiones reales. */
.street-view-panorama{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    min-width:0!important;
    min-height:0!important;
    display:block!important;
    overflow:hidden!important;
    background:#0b1520!important;
}
.street-view-fullscreen .street-view-panorama>div,
.street-view-fullscreen .street-view-panorama>div>div{
    width:100%!important;
    height:100%!important;
    min-width:0!important;
    min-height:0!important;
}
.street-view-loading{
    position:absolute!important;
    inset:0!important;
    z-index:2!important;
    display:grid!important;
    place-content:center!important;
    gap:10px!important;
    color:#d8e6f2!important;
    text-align:center!important;
    background:radial-gradient(circle at center,#17324a,#08121d 72%)!important;
}
.street-view-loading[hidden]{display:none!important}
.street-view-loading i{font-size:25px!important;color:#ffd84d!important}
.street-view-loading strong{font-size:13px!important;letter-spacing:.2px!important}
.street-view-fullscreen-footer{
    min-height:44px!important;
    padding:9px 16px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
    color:#52687a!important;
    background:#f7fafc!important;
    border-top:1px solid #dce5ed!important;
    font-size:11px!important;
    font-weight:800!important;
}
.street-view-fullscreen-footer a{
    color:#0f766e!important;
    font-weight:900!important;
}
@media(max-width:920px){
    .geovisor-workspace .map-card .filters,
    .geovisor-workspace .filters{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
    .street-view-fullscreen-head{
        min-height:60px!important;
        padding:8px 9px 8px 12px!important;
    }
    .street-view-fullscreen-icon{
        width:36px!important;
        height:36px!important;
        flex-basis:36px!important;
    }
    .street-view-fullscreen-title strong{font-size:13px!important}
    .street-view-fullscreen-actions a span{display:none!important}
    .street-view-fullscreen-actions a,
    .street-view-fullscreen-actions button{
        width:38px!important;
        min-height:38px!important;
        padding:0!important;
    }
    .street-view-fullscreen-footer{
        align-items:flex-start!important;
        flex-direction:column!important;
        gap:4px!important;
        padding:8px 11px!important;
    }
}
@media(max-width:560px){
    .geovisor-workspace .map-card .filters,
    .geovisor-workspace .filters{
        grid-template-columns:1fr!important;
    }
}


/* v1.0.164: Vista calle por clic, sin marcador arrastrable */
.street-view-click-control{
    top:74px!important;
    right:16px!important;
    left:auto!important;
    display:grid!important;
    justify-items:end!important;
    gap:7px!important;
    pointer-events:none!important;
}
.street-view-click-control>*{pointer-events:auto!important}
.street-view-mode-toggle{
    min-height:44px!important;
    padding:0 15px!important;
    border:1px solid rgba(189,208,224,.96)!important;
    border-radius:13px!important;
    background:rgba(255,255,255,.97)!important;
    color:#17324d!important;
    box-shadow:0 12px 28px rgba(4,30,52,.24)!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    gap:9px!important;
    font-size:12px!important;
    font-weight:950!important;
    letter-spacing:.15px!important;
    cursor:pointer!important;
    backdrop-filter:blur(8px)!important;
    transition:transform .16s ease,box-shadow .16s ease,background .16s ease,color .16s ease!important;
}
.street-view-mode-toggle i{font-size:17px!important}
.street-view-mode-toggle:hover{transform:translateY(-1px)!important;box-shadow:0 16px 34px rgba(4,30,52,.28)!important}
.street-view-mode-toggle[aria-pressed="true"],.street-view-click-control.picking .street-view-mode-toggle{
    border-color:#087ac1!important;
    background:linear-gradient(135deg,#0b83d0,#075d9f)!important;
    color:#fff!important;
    box-shadow:0 15px 34px rgba(7,105,174,.34),0 0 0 4px rgba(56,189,248,.18)!important;
}
.street-view-mode-toggle:disabled{opacity:.72!important;cursor:progress!important;transform:none!important}
.street-view-click-mode .google-satellite-map,.street-view-click-mode .google-satellite-map *{cursor:crosshair!important}
.project-street-view-box.street-view-click-control{top:12px!important;right:12px!important}
.project-street-view-box .street-view-mode-toggle{min-height:40px!important;padding:0 12px!important;font-size:11px!important}
@media(max-width:900px){
    .street-view-click-control{top:104px!important;right:10px!important;left:auto!important}
    .street-view-mode-toggle{min-height:42px!important;padding:0 13px!important}
    .project-street-view-box.street-view-click-control{top:10px!important;right:10px!important}
}


/* v1.0.167: sistema visual unificado y accesible */
:root{
    --action-primary:#0b4f7a;
    --action-primary-hover:#083b5c;
    --action-danger:#b42318;
    --action-warning:#b45309;
    --action-secondary:#ffffff;
}
.btn.primary{background:var(--action-primary)!important;border-color:var(--action-primary)!important;color:#fff!important}
.btn.primary:hover{background:var(--action-primary-hover)!important;border-color:var(--action-primary-hover)!important}
.btn.secondary,.btn.ghost{background:#fff!important;color:#17324d!important;border-color:#cbd5e1!important}
.btn.secondary:hover,.btn.ghost:hover{background:#f8fafc!important}
.btn.danger{background:var(--action-danger)!important;color:#fff!important;border-color:var(--action-danger)!important}
.btn.warning{background:#fff7ed!important;color:#9a3412!important;border:1px solid #fdba74!important}
.btn.action-labeled,.version-actions .btn{white-space:nowrap}
.version-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.version-actions form{margin:0}
.technical-details{margin:14px 0;border:1px solid #d8e1ea;border-radius:12px;background:#f8fafc;overflow:hidden}
.technical-details summary{padding:12px 14px;cursor:pointer;font-weight:850;color:#334155;display:flex;align-items:center;gap:8px}
.technical-details>div{display:grid;gap:12px;padding:0 14px 14px}
.technical-details code{white-space:pre-wrap;word-break:break-word;padding:11px;border-radius:9px;background:#0f172a;color:#dbeafe;font-size:12px}
.admin-hub-shell{display:grid;gap:18px}
.admin-hub-hero{padding:24px;background:linear-gradient(135deg,#f8fbff,#edf5fb)}
.admin-hub-hero h2{margin:4px 0 7px;color:#0f2f49}
.admin-hub-hero p{margin:0;color:#52677a}
.admin-hub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.admin-hub-card{padding:17px;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:13px;transition:.16s ease}
.admin-hub-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(8,37,66,.13);border-color:#9fc2d9}
.admin-hub-card>span{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;background:#e8f2f8;color:#0b5f8e;font-size:20px}
.admin-hub-card div{display:grid;gap:4px}.admin-hub-card strong{color:#17324d}.admin-hub-card small{color:#64748b;line-height:1.35}.admin-hub-card>i{color:#94a3b8}
.import-stepper{grid-template-columns:auto 1fr auto 1fr auto!important}
.street-view-fullscreen[hidden]{display:none!important}

@media(max-width:1100px){.admin-hub-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
    .content{padding:16px 12px 26px!important}
    .admin-hub-grid{grid-template-columns:1fr}
    .table-wrap{overflow:visible!important}
    table.table.responsive-cards{display:block!important;min-width:0!important;width:100%!important;border-collapse:separate!important}
    table.table.responsive-cards thead{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
    table.table.responsive-cards tbody,table.table.responsive-cards tr,table.table.responsive-cards td{display:block!important;width:100%!important}
    table.table.responsive-cards tbody{display:grid!important;gap:12px!important}
    table.table.responsive-cards tr{padding:8px 13px!important;border:1px solid #dbe4ec!important;border-radius:14px!important;background:#fff!important;box-shadow:0 6px 18px rgba(15,23,42,.06)!important}
    table.table.responsive-cards td{display:grid!important;grid-template-columns:minmax(105px,42%) minmax(0,1fr)!important;gap:10px!important;align-items:start!important;padding:9px 0!important;border-bottom:1px solid #edf2f7!important;text-align:left!important;min-height:38px!important}
    table.table.responsive-cards td:last-child{border-bottom:0!important}
    table.table.responsive-cards td::before{content:attr(data-label);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.35px;color:#64748b}
    table.table.responsive-cards td[colspan]::before{display:none}
    table.table.responsive-cards .actions,table.table.responsive-cards .version-actions{justify-content:flex-start!important}
    .btn.action-labeled,.version-actions .btn{padding:8px 10px!important}
    .topbar-user-copy{display:none!important}
    .import-stepper span{font-size:10px!important}.import-stepper span b{width:25px!important;height:25px!important}
}
@media(max-width:480px){
    table.table.responsive-cards td{grid-template-columns:1fr!important;gap:4px!important}
    .monthly-upload-actions .btn{width:100%!important}
}


/* v1.0.171: aviso compacto para Vista calle */
.street-view-click-control{align-items:flex-end!important}
.street-view-placement-hint{display:inline-flex;align-items:center;gap:8px;max-width:min(320px,72vw);padding:8px 10px;border-radius:12px;background:rgba(15,23,42,.90);color:#fff;font-size:12px;line-height:1.3;font-weight:700;box-shadow:0 10px 24px rgba(2,6,23,.24);border:1px solid rgba(148,163,184,.28);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.street-view-placement-hint::before{content:"\f05a";font-family:"Font Awesome 6 Free";font-weight:900;flex:0 0 auto;font-size:12px;opacity:.95}
.street-view-placement-hint[data-tone="warning"]{background:rgba(127,29,29,.92);border-color:rgba(248,113,113,.42);color:#fff5f5}
.street-view-placement-hint[data-tone="warning"]::before{content:"\f06a"}
.street-view-placement-hint[data-tone="info"]{background:rgba(8,47,73,.94);border-color:rgba(56,189,248,.38);color:#ecfeff}
.street-view-placement-hint[data-tone="success"]{background:rgba(20,83,45,.92);border-color:rgba(74,222,128,.36);color:#ecfdf5}
@media(max-width:900px){.street-view-placement-hint{max-width:min(250px,74vw);font-size:11px;padding:7px 9px;border-radius:10px}}


/* v1.0.174: interfaz compacta y etiquetas legibles del mapa territorial */
.panel-title p:empty,.topbar-title p:empty,.media-lightbox-description[hidden]{display:none!important}
.geovisor-context-bar{margin-bottom:10px!important}
.workspace-heading h2{font-size:18px!important;margin:0!important}
.map-filter-head{align-items:center!important;margin-bottom:10px!important}
.map-filter-head p{display:none!important}
.map-section-kicker{font-size:11px!important;color:#185f78!important}
.map-stage-head{min-height:56px!important;background:#f7fafc!important}
.map-stage-title strong{font-size:14px!important;color:#12283d!important}
.map-stage-title small{font-size:11px!important;color:#52687d!important;font-weight:700!important}
.map-stage-pills .map-project-count{font-size:11px!important;padding:7px 11px!important}
.geovisor-workspace .map{background:#0b1624!important}
.map-provider-control button{font-weight:850!important}
.mapboxgl-map .mapboxgl-ctrl-attrib{font-size:9px!important}
.google-info-window{font-size:13px!important;line-height:1.4!important;color:#172b3d!important}
.detail-empty-state p{margin:5px 0 0!important;font-size:12px!important}
.monthly-import-hero p{max-width:680px!important}
.monthly-import-stats article{min-height:96px!important}
.monthly-import-stats article small{display:none!important}
@media(max-width:900px){
    .geovisor-context-bar{align-items:center!important}
    .workspace-heading h2{font-size:16px!important}
    .map-stage-title strong{font-size:13px!important}
    .map-stage-title small{max-width:48vw!important}
}


/* v1.0.176: tarjetas internas del mapa territorial más legibles */
.geovisor-workspace .detail-header{padding:22px 20px 16px!important;background:linear-gradient(180deg,#f8fbfd 0%,#f2f6fa 100%)!important}
.geovisor-workspace .detail-icon{width:48px!important;height:48px!important;flex:0 0 48px!important;border-radius:14px!important;font-size:19px!important}
.geovisor-workspace .detail-header h2{font-size:18px!important;line-height:1.22!important;font-weight:900!important;letter-spacing:.1px!important;color:#17324d!important}
.geovisor-workspace .detail-header .badge{margin-top:9px!important;padding:5px 10px!important;font-size:11px!important;font-weight:800!important;border-radius:999px!important}
.geovisor-workspace .detail-tabs{padding:0 12px!important;background:#ffffff!important;border-bottom:1px solid #e2e8f0!important}
.geovisor-workspace .detail-tabs button{padding:13px 8px 11px!important;font-size:12.5px!important;font-weight:800!important;line-height:1.25!important;color:#5f7183!important;font-family:inherit!important}
.geovisor-workspace .detail-tabs button i{font-size:13px!important;color:#7a8ea2!important}
.geovisor-workspace .detail-tabs button.active{color:#0f766e!important;border-bottom-width:3px!important;background:linear-gradient(180deg,#ffffff 0%,#ecfdf5 100%)!important}
.geovisor-workspace .detail-tabs button.active i{color:#0f766e!important}
.geovisor-workspace .detail-body{padding:18px!important;color:#4b5f73!important;font-family:inherit!important}
.geovisor-workspace .detail-section-title{display:flex!important;align-items:center!important;gap:8px!important;margin:0 0 14px!important;color:#17324d!important;font-size:12.5px!important;font-weight:900!important;letter-spacing:.35px!important;text-transform:uppercase!important}
.geovisor-workspace .detail-section-title i{color:#0f766e!important;font-size:13px!important}
.geovisor-workspace .detail-list{gap:0!important;border-top:1px solid #edf2f7!important}
.geovisor-workspace .detail-item{grid-template-columns:24px minmax(0,1fr) minmax(100px,auto)!important;gap:10px!important;padding:11px 0!important;color:#607286!important;font-size:13px!important;line-height:1.35!important;border-bottom:1px solid #edf2f7!important}
.geovisor-workspace .detail-item i{color:#94a3b8!important;font-size:13px!important}
.geovisor-workspace .detail-item span{color:#607286!important;font-weight:700!important}
.geovisor-workspace .detail-item strong{color:#17324d!important;font-size:13.5px!important;font-weight:900!important;line-height:1.35!important;text-align:right!important}
.geovisor-workspace .detail-layer-list{display:grid!important;gap:10px!important}
.geovisor-workspace .detail-layer-row{padding:11px 12px!important;border-radius:14px!important;background:#f8fafc!important;border:1px solid #dbe5ee!important}
.geovisor-workspace .detail-layer-row strong{color:#17324d!important;font-size:13px!important;font-weight:900!important;line-height:1.25!important}
.geovisor-workspace .detail-layer-row small{color:#7a8ca1!important;font-size:12px!important;line-height:1.35!important;margin-top:4px!important}
.geovisor-workspace .detail-note,.geovisor-workspace .detail-help{margin:12px 0 0!important;padding:10px 12px!important;border-radius:12px!important;background:#f8fafc!important;border:1px solid #e2e8f0!important;color:#64748b!important;font-size:12.5px!important;line-height:1.45!important}
.geovisor-workspace .investment-box{padding:18px!important;border-radius:16px!important;background:linear-gradient(135deg,#17324d 0%,#0f766e 100%)!important}
.geovisor-workspace .investment-box span{font-size:11px!important;letter-spacing:.45px!important;color:#d8f3ee!important}
.geovisor-workspace .investment-box strong{font-size:26px!important;line-height:1.2!important;color:#ffffff!important}
.geovisor-workspace .detail-gallery-item{border-radius:14px!important;border:1px solid #d6dee8!important;background:#0f172a!important}
.geovisor-workspace .detail-gallery-item span{font-size:12px!important;font-weight:800!important;line-height:1.3!important}
.geovisor-workspace .btn.primary[style*="width:100%"]{margin-top:16px!important;border-radius:12px!important;font-size:13px!important;font-weight:800!important}
@media(max-width:640px){.geovisor-workspace .detail-header{padding:18px 16px 14px!important}.geovisor-workspace .detail-header h2{font-size:17px!important}.geovisor-workspace .detail-tabs button{font-size:12px!important;padding:12px 6px 10px!important}.geovisor-workspace .detail-body{padding:16px!important}.geovisor-workspace .detail-item{grid-template-columns:22px minmax(0,1fr)!important;font-size:12.5px!important}.geovisor-workspace .detail-item strong{grid-column:2/-1!important;text-align:left!important;font-size:13px!important;margin-top:2px!important}.geovisor-workspace .detail-section-title{font-size:12px!important}.geovisor-workspace .detail-layer-row strong{font-size:12.5px!important}.geovisor-workspace .detail-layer-row small,.geovisor-workspace .detail-note,.geovisor-workspace .detail-help{font-size:11.5px!important}.geovisor-workspace .investment-box strong{font-size:22px!important}}


/* v1.0.177: detalle de paquete y multimedia por paquete */
.map-stage-head{display:none!important}
.geovisor-workspace .map-card{position:relative!important}
.geovisor-workspace .map-provider-control{z-index:18!important;max-width:calc(100% - 150px)!important}
.geovisor-workspace .street-view-click-control{z-index:19!important;top:76px!important;right:14px!important}
.geovisor-workspace .investment-box span{color:#ffffff!important;background:rgba(255,255,255,.14)!important;display:inline-flex!important;padding:5px 8px!important;border-radius:8px!important;text-shadow:0 1px 2px rgba(0,0,0,.28)!important}
.geovisor-workspace .detail-help{display:none!important}
.package-viewer[hidden]{display:none!important}
.package-viewer{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:24px;font-family:inherit}
.package-viewer-backdrop{position:absolute;inset:0;background:rgba(2,8,23,.68);backdrop-filter:blur(5px)}
.package-viewer-card{position:relative;z-index:1;width:min(620px,96vw);max-height:92vh;overflow:auto;border-radius:22px;background:#fff;border:1px solid rgba(255,255,255,.5);box-shadow:0 30px 85px rgba(2,8,23,.48)}
.package-viewer-close{position:absolute;top:14px;right:14px;z-index:5;width:38px;height:38px;border:0;border-radius:50%;display:grid;place-items:center;background:#17324d;color:#fff;font-size:18px;cursor:pointer;box-shadow:0 8px 18px rgba(15,23,42,.24)}
.package-viewer-head{padding:22px 70px 16px 22px;border-bottom:1px solid #e5ebf0;background:linear-gradient(135deg,#f8fbfd,#eef6f5)}
.package-viewer-head small{display:block;color:#64748b;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.35px;line-height:1.35}
.package-viewer-head h2{margin:5px 0 0;color:#17324d;font-size:21px;line-height:1.25;font-weight:900}
.package-viewer-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px 22px}
.package-viewer-kpis>div{padding:14px 16px;border:1px solid #dbe5ed;border-radius:15px;background:#f8fafc}
.package-viewer-kpis span{display:block;color:#64748b;font-size:12px;font-weight:800}
.package-viewer-kpis strong{display:block;margin-top:5px;color:#0f766e;font-size:25px;font-weight:900}
.package-viewer-media{position:relative;margin:0 22px;border-radius:18px;overflow:hidden;background:#071525;min-height:310px;display:grid;place-items:center}
.package-viewer-stage{width:100%;height:360px;display:grid;place-items:center;background:#071525}
.package-viewer-stage img,.package-viewer-stage video{display:block;width:100%;height:100%;object-fit:contain;background:#071525}
.package-viewer-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:44px;height:58px;border:0;border-radius:13px;background:rgba(15,23,42,.72);color:#fff;font-size:18px;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(5px)}
.package-viewer-nav:hover{background:rgba(15,118,110,.9)}
.package-viewer-nav.prev{left:12px}.package-viewer-nav.next{right:12px}
.package-viewer-nav[hidden]{display:none!important}
.package-viewer-empty{display:grid;place-items:center;align-content:center;gap:8px;text-align:center;color:#dce8f3;padding:30px}
.package-viewer-empty i{font-size:34px}.package-viewer-empty strong{font-size:16px}.package-viewer-empty span{font-size:12px;color:#9fb2c5}
.package-viewer-footer{min-height:52px;padding:13px 22px 17px;display:flex;justify-content:space-between;gap:14px;align-items:center;color:#536577;font-size:12px;font-weight:700}
.package-viewer-footer b{color:#17324d;white-space:nowrap}
.package-viewer-open{overflow:hidden}
.geovisor-workspace .dimgep-popup,.geovisor-workspace .google-info-window{display:none!important}
@media(max-width:900px){.geovisor-workspace .map-provider-control{max-width:calc(100% - 120px)!important}.geovisor-workspace .street-view-click-control{top:70px!important}.package-viewer{padding:10px}.package-viewer-card{width:100%;max-height:96vh;border-radius:17px}.package-viewer-head{padding:19px 60px 14px 16px}.package-viewer-head h2{font-size:18px}.package-viewer-kpis{padding:13px 16px;gap:9px}.package-viewer-kpis>div{padding:12px}.package-viewer-kpis strong{font-size:21px}.package-viewer-media{margin:0 16px;min-height:240px}.package-viewer-stage{height:300px}.package-viewer-footer{padding:12px 16px 15px}}
@media(max-width:520px){.package-viewer-kpis{grid-template-columns:1fr 1fr}.package-viewer-kpis span{font-size:11px}.package-viewer-kpis strong{font-size:19px}.package-viewer-stage{height:250px}.package-viewer-nav{width:38px;height:50px}.geovisor-workspace .map-provider-control{top:10px!important;left:10px!important;right:auto!important;max-width:calc(100% - 20px)!important}.geovisor-workspace .street-view-click-control{top:66px!important;right:10px!important}}


/* v1.0.178: multimedia completa y con metadatos visibles */
.media-grid .media-card{display:flex;flex-direction:column;border-radius:16px!important;overflow:hidden!important}
.media-grid .media-thumb{height:220px!important;padding:10px!important;background:linear-gradient(180deg,#f8fafc 0%,#eef2f7 100%)!important;border-bottom:1px solid #e2e8f0!important;display:grid!important;place-items:center!important}
.media-grid .media-thumb .js-media-preview{display:grid!important;place-items:center!important;width:100%!important;height:100%!important;background:#0f172a!important;border-radius:12px!important;overflow:hidden!important}
.media-grid .media-thumb img,.media-grid .media-thumb video{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;background:#0f172a!important;border-radius:10px!important}
.media-grid .media-card .p{display:grid!important;gap:6px!important;padding:14px!important}
.media-grid .media-card .p strong{display:block!important;color:#17324d!important;font-size:14px!important;line-height:1.35!important}
.media-grid .media-card .media-meta{display:grid!important;gap:4px!important;font-size:12.5px!important;color:#64748b!important;line-height:1.4!important}
.media-grid .media-card .media-description{margin:2px 0 0!important;padding:9px 10px!important;border-radius:10px!important;background:#f8fafc!important;border:1px solid #e2e8f0!important;color:#475569!important;font-size:12.5px!important;line-height:1.5!important;white-space:pre-wrap!important}
.package-viewer-footer{align-items:flex-start!important}
.package-viewer-caption{display:grid!important;gap:4px!important;min-width:0!important;flex:1 1 auto!important}
.package-viewer-caption strong{display:block!important;color:#17324d!important;font-size:14px!important;line-height:1.35!important;font-weight:900!important}
.package-viewer-caption span{display:block!important;color:#64748b!important;font-size:12.5px!important;line-height:1.5!important;white-space:pre-wrap!important}
.package-viewer-caption span:empty{display:none!important}
@media(max-width:720px){.media-grid .media-thumb{height:190px!important}.package-viewer-caption strong{font-size:13px!important}.package-viewer-caption span{font-size:12px!important}}


/* v1.0.179: Satélite HD clicable y visor multimedia completo */
.package-viewer{padding:16px!important}
.package-viewer-card{width:min(1040px,97vw)!important;max-height:96vh!important;display:grid!important;grid-template-rows:auto auto minmax(300px,1fr) auto!important;overflow:hidden!important}
.package-viewer-media{margin:0 22px!important;min-height:0!important;height:min(64vh,680px)!important;border:1px solid rgba(148,163,184,.22)!important}
.package-viewer-stage{width:100%!important;height:100%!important;min-height:300px!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;background:#071525!important}
.package-viewer-stage img,.package-viewer-stage video{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;object-position:center center!important;background:#071525!important}
.package-viewer-footer{padding:14px 22px 18px!important;background:#fff!important;border-top:1px solid #e5e7eb!important;align-items:flex-start!important}
.package-viewer-caption{display:grid!important;gap:10px!important;min-width:0!important;flex:1 1 auto!important}
.package-viewer-caption-title,.package-viewer-caption-description{display:grid!important;gap:3px!important;min-width:0!important}
.package-viewer-caption small{display:block!important;color:#94a3b8!important;font-size:10px!important;font-weight:900!important;letter-spacing:.45px!important;text-transform:uppercase!important}
.package-viewer-caption-title strong{display:block!important;color:#17324d!important;font-size:15px!important;line-height:1.35!important;font-weight:900!important;overflow-wrap:anywhere!important}
.package-viewer-caption-description p{display:block!important;margin:0!important;color:#475569!important;font-size:13px!important;line-height:1.55!important;white-space:pre-wrap!important;overflow-wrap:anywhere!important}
.package-viewer-caption-description p:empty,.package-viewer-caption-description:has(p:empty){display:none!important}
.package-viewer-footer>b{margin-top:15px!important;flex:0 0 auto!important;color:#17324d!important}
.media-grid .media-thumb img,.media-grid .media-thumb video{object-fit:contain!important;object-position:center!important}
@media(max-width:900px){.package-viewer{padding:8px!important}.package-viewer-card{width:100%!important;max-height:98vh!important;border-radius:15px!important;grid-template-rows:auto auto minmax(260px,1fr) auto!important}.package-viewer-media{margin:0 12px!important;height:min(57vh,540px)!important}.package-viewer-stage{min-height:260px!important}.package-viewer-footer{padding:12px 16px 15px!important}.package-viewer-caption-title strong{font-size:14px!important}.package-viewer-caption-description p{font-size:12.5px!important}}
@media(max-width:520px){.package-viewer-media{height:min(52vh,430px)!important}.package-viewer-stage{min-height:230px!important}.package-viewer-kpis{padding-bottom:10px!important}.package-viewer-footer{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important}.package-viewer-footer>b{margin-top:14px!important}}

/* v1.0.179b: el carrusel usa el alto disponible sin recortar la imagen */
.package-viewer-card{
    height:min(94vh,900px)!important;
    max-height:94vh!important;
    grid-template-rows:auto auto minmax(0,1fr) auto!important;
}
.package-viewer-media{
    height:auto!important;
    min-height:0!important;
}
.package-viewer-stage{
    min-height:0!important;
}
.package-viewer-footer{
    max-height:190px!important;
    overflow:auto!important;
}
@media(max-width:900px){
    .package-viewer-card{height:96vh!important;max-height:96vh!important}
    .package-viewer-media{height:auto!important;min-height:0!important}
    .package-viewer-stage{min-height:0!important}
    .package-viewer-footer{max-height:175px!important}
}


/* v1.0.180: resumen territorial sin textos superpuestos */
.geovisor-workspace .detail-body{overflow-x:hidden!important}
.geovisor-workspace .detail-list{width:100%!important;min-width:0!important}
.geovisor-workspace .detail-item{display:grid!important;grid-template-columns:24px 112px minmax(0,1fr)!important;column-gap:10px!important;row-gap:3px!important;align-items:start!important;width:100%!important;min-width:0!important;padding:12px 0!important}
.geovisor-workspace .detail-item i{grid-column:1!important;align-self:start!important;margin-top:2px!important}
.geovisor-workspace .detail-item span{grid-column:2!important;min-width:0!important;white-space:normal!important;overflow-wrap:break-word!important;line-height:1.35!important}
.geovisor-workspace .detail-item strong{grid-column:3!important;min-width:0!important;width:100%!important;max-width:100%!important;text-align:right!important;white-space:normal!important;overflow-wrap:anywhere!important;word-break:normal!important;line-height:1.35!important}
@media(max-width:460px){.geovisor-workspace .detail-item{grid-template-columns:22px minmax(0,1fr)!important;column-gap:9px!important}.geovisor-workspace .detail-item span{grid-column:2!important;font-size:12px!important}.geovisor-workspace .detail-item strong{grid-column:2!important;text-align:left!important;font-size:13px!important;margin-top:2px!important}.geovisor-workspace .detail-item i{grid-row:1 / span 2!important}}


/* v1.0.181: avances del mapa territorial con mejor contraste */
.geovisor-workspace .progress-row{margin-bottom:17px!important;color:#17324d!important}
.geovisor-workspace .progress-row:last-child{margin-bottom:0!important}
.geovisor-workspace .progress-row>div:first-child{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin-bottom:7px!important}
.geovisor-workspace .progress-row span{color:#64748b!important;font-size:14px!important;font-weight:800!important;line-height:1.35!important}
.geovisor-workspace .progress-row strong{color:#17324d!important;font-size:14px!important;font-weight:900!important;line-height:1.2!important;white-space:nowrap!important}
.geovisor-workspace .progress{height:8px!important;background:#dce5ee!important;border-radius:999px!important;overflow:hidden!important}
.geovisor-workspace .progress span{display:block!important;height:100%!important;background:linear-gradient(90deg,#168a7a,#31a497)!important;border-radius:999px!important}
.geovisor-workspace .progress.blue span{background:linear-gradient(90deg,#315e85,#4f87b5)!important}
.geovisor-workspace .detail-layer-list{gap:11px!important;margin-top:2px!important}
.geovisor-workspace .detail-layer-row{grid-template-columns:18px minmax(0,1fr)!important;gap:11px!important;align-items:flex-start!important;padding:13px 14px!important;border-radius:15px!important;background:#f8fafc!important;border:1px solid #dbe5ee!important;box-shadow:0 6px 16px rgba(15,23,42,.04)!important}
.geovisor-workspace .detail-layer-row .legend-layer-dot{width:13px!important;height:13px!important;margin-top:4px!important;box-shadow:0 0 0 4px rgba(255,255,255,.92),0 2px 8px rgba(15,23,42,.12)!important}
.geovisor-workspace .detail-layer-row strong{display:block!important;color:#17324d!important;font-size:13.5px!important;font-weight:900!important;line-height:1.25!important;margin-bottom:4px!important}
.geovisor-workspace .detail-layer-row small{display:block!important;color:#64748b!important;font-size:12.5px!important;font-weight:800!important;line-height:1.4!important}
@media(max-width:640px){.geovisor-workspace .progress-row span,.geovisor-workspace .progress-row strong{font-size:13px!important}.geovisor-workspace .detail-layer-row strong{font-size:13px!important}.geovisor-workspace .detail-layer-row small{font-size:12px!important}}


/* v1.0.182: color de texto más oscuro en avances */
.geovisor-workspace .progress-row span{color:#475569!important;font-size:14px!important;font-weight:900!important;opacity:1!important}
.geovisor-workspace .progress-row strong{color:#334155!important;font-size:14px!important;font-weight:900!important;opacity:1!important}
.geovisor-workspace .detail-layer-row small{color:#475569!important;font-size:12.5px!important;font-weight:900!important;opacity:1!important}
.geovisor-workspace .detail-layer-row strong{color:#0f172a!important;font-size:13.5px!important;font-weight:900!important;opacity:1!important}
.geovisor-workspace .detail-section-title{color:#0f172a!important}
.geovisor-workspace .detail-section-title i{color:#0f766e!important}
@media(max-width:640px){.geovisor-workspace .progress-row span,.geovisor-workspace .progress-row strong{font-size:13px!important}.geovisor-workspace .detail-layer-row small{font-size:12px!important}}


/* v1.0.183: valores de avances con color más fuerte */
.geovisor-workspace .progress-row-head{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin-bottom:7px!important}
.geovisor-workspace .progress-row-label{color:#334155!important;font-size:14px!important;font-weight:900!important;line-height:1.35!important;opacity:1!important;text-shadow:none!important}
.geovisor-workspace .progress-row-value{color:#0f172a!important;font-size:27px!important;font-weight:1000!important;line-height:1!important;letter-spacing:-.4px!important;opacity:1!important;text-shadow:none!important}
.geovisor-workspace .progress-row:nth-child(1) .progress-row-value{color:#0f766e!important}
.geovisor-workspace .progress-row:nth-child(2) .progress-row-value{color:#315e85!important}
.geovisor-workspace .progress-row:nth-child(3) .progress-row-value{color:#0f766e!important}
@media(max-width:640px){.geovisor-workspace .progress-row-label{font-size:13px!important}.geovisor-workspace .progress-row-value{font-size:22px!important}}


/* v1.0.185: colores coherentes por tipo de avance */
.geovisor-workspace .progress-row--design .progress-row-label{color:#0f766e!important}
.geovisor-workspace .progress-row--design .progress-row-value{color:#0f766e!important}
.geovisor-workspace .progress--design{background:#d9efe9!important}
.geovisor-workspace .progress--design span{background:linear-gradient(90deg,#0f766e,#19a28f)!important}
.geovisor-workspace .progress-row--physical .progress-row-label{color:#315e85!important}
.geovisor-workspace .progress-row--physical .progress-row-value{color:#315e85!important}
.geovisor-workspace .progress--physical{background:#dde8f2!important}
.geovisor-workspace .progress--physical span{background:linear-gradient(90deg,#315e85,#4c82b0)!important}
.geovisor-workspace .progress-row--financial .progress-row-label{color:#b45309!important}
.geovisor-workspace .progress-row--financial .progress-row-value{color:#b45309!important}
.geovisor-workspace .progress--financial{background:#f9e7c6!important}
.geovisor-workspace .progress--financial span{background:linear-gradient(90deg,#b45309,#d97706)!important}
.geovisor-workspace .progress-row-value{font-variant-numeric:tabular-nums!important}

/* v1.0.186: cobertura de proyectos en avance general */
.missing-projects-card{padding:20px!important}
.missing-projects-intro{margin:0 0 14px;color:#475569;font-size:13px;line-height:1.55}
.missing-projects-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.missing-projects-search{display:flex;align-items:center;gap:8px;min-width:min(360px,100%);flex:1;background:#fff;border:1px solid #cbd5e1;border-radius:11px;padding:0 11px;color:#64748b}
.missing-projects-search input{border:0!important;box-shadow:none!important;padding:10px 0!important;background:transparent!important}
.missing-projects-tools>[data-selected-project-count]{margin-left:auto;color:#0f766e;font-size:12px;font-weight:900}
.missing-projects-list{display:grid;gap:8px;max-height:520px;overflow:auto;padding:2px 4px 2px 0}
.missing-project-row{display:grid;grid-template-columns:34px minmax(220px,1.4fr) minmax(130px,.6fr) minmax(150px,.7fr);gap:12px;align-items:center;padding:11px 12px;border:1px solid #dce5ed;border-radius:13px;background:#f8fafc}
.missing-project-row:hover{border-color:#94a3b8;background:#fff}
.missing-project-check{display:grid;place-items:center;cursor:pointer}
.missing-project-check input{position:absolute;opacity:0;pointer-events:none}
.missing-project-check span{width:20px;height:20px;border:2px solid #94a3b8;border-radius:6px;background:#fff;display:grid;place-items:center}
.missing-project-check input:checked+span{background:#0f766e;border-color:#0f766e}
.missing-project-check input:checked+span:after{content:"✓";color:#fff;font-size:13px;font-weight:900}
.missing-project-identity{min-width:0}
.missing-project-identity strong{display:block;color:#0f172a;font-size:13px;line-height:1.35}
.missing-project-identity small{display:block;margin-top:3px;color:#64748b;font-size:11.5px;font-weight:700}
.missing-progress-input{display:grid;gap:5px}
.missing-progress-input span{color:#475569;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.25px}
.missing-progress-input input{padding:8px 9px!important;border-radius:9px!important;font-size:13px!important;font-weight:800!important;color:#0f172a!important}
.badge.orange{background:#ffedd5;color:#9a3412}
@media(max-width:900px){.missing-project-row{grid-template-columns:30px 1fr 1fr}.missing-project-identity{grid-column:2/-1}.missing-projects-tools>[data-selected-project-count]{margin-left:0}}
@media(max-width:560px){.missing-project-row{grid-template-columns:28px 1fr}.missing-progress-input{grid-column:2/-1}.missing-projects-search{min-width:100%}.missing-projects-tools .btn{width:auto!important}}

/* V1.0.171 - Resumen ejecutivo del proyecto: jerarquía y lectura inmediata */
.project-executive-card{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.72fr);gap:0;padding:0!important;overflow:hidden;border-radius:22px!important;background:#fff}
.project-executive-media{position:relative;min-height:420px;background:#e2e8f0;overflow:hidden}
.project-executive-media>button{width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer;display:block}
.project-executive-media img{width:100%;height:100%;object-fit:cover;display:block}
.project-executive-media .project-visual-placeholder{min-height:420px}
.project-executive-media:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 52%,rgba(6,27,53,.82));pointer-events:none}
.project-executive-media-caption{position:absolute;z-index:2;left:18px;right:18px;bottom:16px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;color:#fff}
.project-executive-media-caption span{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;background:rgba(6,27,53,.72);backdrop-filter:blur(8px);font-size:11px;font-weight:900}
.project-executive-media-caption strong{font-size:14px}
.project-executive-content{padding:22px;display:grid;align-content:start;gap:16px}
.project-executive-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:13px;border-bottom:1px solid #e2e8f0}
.project-executive-heading h2{margin:3px 0 0;color:#061b35;font-size:22px}
.executive-status{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:8px 11px;border-radius:999px;background:color-mix(in srgb,var(--executive-status,#64748b) 12%,#fff);border:1px solid color-mix(in srgb,var(--executive-status,#64748b) 26%,#fff);color:var(--executive-status,#64748b);font-size:12px;font-weight:950}
.executive-status i{font-size:8px}
.project-snapshot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.snapshot-item{min-width:0;padding:12px;border:1px solid #e2e8f0;border-radius:14px;background:linear-gradient(180deg,#f8fafc,#fff)}
.snapshot-item span{display:flex;align-items:center;gap:6px;margin-bottom:7px;color:#64748b;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}
.snapshot-item span i{color:#b40718}
.snapshot-item strong,.snapshot-item small{display:block;overflow:hidden;text-overflow:ellipsis}
.snapshot-item strong{color:#0f172a;font-size:13px;line-height:1.25}
.snapshot-item small{margin-top:4px;color:#64748b;font-size:11px;font-weight:750;line-height:1.3}
.project-executive-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.executive-kpi{--kpi-color:#2563eb;padding:13px;border-radius:15px;background:#fff;border:1px solid #e2e8f0;border-top:4px solid var(--kpi-color);min-width:0}
.executive-kpi.design{--kpi-color:#2563eb}.executive-kpi.physical{--kpi-color:#e11d48}.executive-kpi.finance{--kpi-color:#7c3aed}.executive-kpi.attention{--kpi-color:#d97706}
.executive-kpi span{display:block;color:#64748b;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.03em}
.executive-kpi strong{display:block;margin:6px 0;color:#061b35;font-size:24px;line-height:1}
.executive-kpi>div{height:7px;border-radius:999px;background:#e5e7eb;overflow:hidden}
.executive-kpi>div i{display:block;height:100%;border-radius:inherit;background:var(--kpi-color)}
.executive-kpi small{display:block;margin-top:7px;color:#64748b;font-size:10px;font-weight:800;white-space:normal}
.project-executive-finance{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:13px;border-radius:16px;background:#061b35;color:#fff}
.project-executive-finance>div{padding:0 12px;border-right:1px solid rgba(255,255,255,.14);min-width:0}
.project-executive-finance>div:first-child{padding-left:2px}.project-executive-finance>div:last-child{border-right:0;padding-right:2px}
.project-executive-finance span,.project-executive-finance small{display:block;color:#bfdbfe;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.035em}
.project-executive-finance strong{display:block;margin-top:5px;font-size:17px;line-height:1.2;overflow-wrap:anywhere}
.project-executive-finance small{margin-top:4px;text-transform:none;letter-spacing:0;color:#cbd5e1}
.project-executive-alerts{border-left:5px solid #d97706}
.project-organized-info{overflow:hidden}
.organized-info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.organized-info-group{border:1px solid #e2e8f0;border-radius:17px;background:#fff;overflow:hidden}
.organized-info-title{display:flex;align-items:center;gap:11px;padding:14px;background:linear-gradient(135deg,#f8fafc,#eef4fa);border-bottom:1px solid #e2e8f0}
.organized-info-title>i{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#061b35;color:#fff}
.organized-info-title strong,.organized-info-title small{display:block}.organized-info-title strong{color:#061b35}.organized-info-title small{margin-top:2px;color:#64748b;font-size:11px;font-weight:750}
.organized-info-group dl{margin:0;padding:4px 14px 10px}
.organized-info-group dl>div{display:grid;grid-template-columns:minmax(105px,.75fr) minmax(0,1.25fr);gap:10px;padding:10px 0;border-bottom:1px solid #edf1f5}
.organized-info-group dl>div:last-child{border-bottom:0}
.organized-info-group dt{color:#64748b;font-size:11px;font-weight:900}
.organized-info-group dd{margin:0;color:#0f172a;font-size:12px;font-weight:850;line-height:1.35;text-align:right;overflow-wrap:anywhere}
.project-scope-contract-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:14px}
.project-scope-card{display:grid;align-content:start}
.scope-primary,.scope-note{padding:15px;border-radius:16px;border:1px solid #e2e8f0}
.scope-primary{background:#fff}.scope-note{margin-top:11px;background:#f8fafc}
.scope-primary>strong,.scope-note>strong{display:flex;align-items:center;gap:8px;color:#061b35}
.scope-primary .rich-text-output,.scope-note p{margin-top:9px;color:#334155;line-height:1.55}
.scope-note p{margin-bottom:0}
.contract-summary-list{display:grid;gap:10px}
.contract-summary-list article{padding:13px;border:1px solid #e2e8f0;border-radius:15px;background:#f8fafc}
.contract-summary-list article.is-primary{border-color:#bfdbfe;background:linear-gradient(135deg,#eff6ff,#fff)}
.contract-summary-list article>div:first-child span,.contract-summary-list article>div:first-child strong{display:block}
.contract-summary-list article>div:first-child span{color:#64748b;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}
.contract-summary-list article>div:first-child strong{margin-top:3px;color:#061b35;font-size:14px}
.contract-summary-list dl{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:11px 0 0}
.contract-summary-list dl>div{padding:8px;border-radius:10px;background:#fff;border:1px solid #e2e8f0}
.contract-summary-list dt{color:#64748b;font-size:10px;font-weight:900}.contract-summary-list dd{margin:3px 0 0;color:#0f172a;font-size:12px;font-weight:900;overflow-wrap:anywhere}

@media(max-width:1250px){
  .project-executive-card{grid-template-columns:minmax(250px,.62fr) minmax(0,1.38fr)}
  .project-snapshot-grid,.project-executive-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1040px){
  .project-executive-card{grid-template-columns:1fr}
  .project-executive-media{min-height:250px;max-height:320px}
  .project-executive-media .project-visual-placeholder{min-height:250px}
  .organized-info-grid{grid-template-columns:1fr 1fr}
  .project-scope-contract-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .project-executive-content{padding:16px}
  .project-executive-heading{flex-direction:column}
  .project-snapshot-grid,.project-executive-kpis,.project-executive-finance,.organized-info-grid{grid-template-columns:1fr}
  .project-executive-finance>div{padding:9px 2px;border-right:0;border-bottom:1px solid rgba(255,255,255,.14)}
  .project-executive-finance>div:last-child{border-bottom:0}
  .organized-info-group dl>div{grid-template-columns:1fr}
  .organized-info-group dd{text-align:left}
  .contract-summary-list dl{grid-template-columns:1fr}
}

/* V1.0.187 - Catálogo CRUD de paquetes */
.package-catalog-shell{display:grid;gap:16px}.package-catalog-hero{display:flex;align-items:center;justify-content:space-between;gap:20px}.package-catalog-hero>div{max-width:920px}.package-catalog-hero p{margin-bottom:0;line-height:1.55}.package-catalog-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.package-catalog-filters{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(260px,1fr) minmax(150px,.45fr) auto;gap:10px;align-items:center}.package-catalog-filters select{min-width:0}.package-catalog-table td{vertical-align:middle}.table-subline{display:block;margin-top:4px;color:#64748b;font-size:11px;font-weight:750}.package-use-badges{display:flex;flex-wrap:wrap;gap:5px}.package-use-badges .badge{white-space:nowrap}.package-form .form-field small{display:block;margin-top:5px;color:#64748b;line-height:1.4}.package-catalog-table .actions{flex-wrap:nowrap}
@media(max-width:1050px){.package-catalog-filters{grid-template-columns:1fr 1fr}.package-catalog-filters .search-box{grid-column:1/-1}.package-catalog-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.package-catalog-hero{align-items:stretch;flex-direction:column}.package-catalog-hero .btn{justify-content:center}.package-catalog-filters,.package-catalog-summary{grid-template-columns:1fr}.package-catalog-filters .search-box{grid-column:auto}.package-catalog-filters .actions{display:grid;grid-template-columns:1fr 1fr}.package-catalog-table .actions{justify-content:flex-end}}

/* V1.0.188 - Importación controlada por catálogo, sin creación automática */
.package-import-warning-card{border:1px solid #fdba74!important;border-left:5px solid #f59e0b!important;background:linear-gradient(180deg,#fffaf0,#fff)!important}
.package-import-warning-card .section-heading{align-items:flex-start}
.package-import-warning-card .section-heading p{max-width:880px;margin:5px 0 0;color:#7c4a03;line-height:1.45}
.package-import-warning-actions{display:flex;justify-content:flex-end;gap:8px;margin:-4px 0 13px;flex-wrap:wrap}
.package-import-warning-table td{vertical-align:middle}
.package-action-note{display:block;max-width:220px;color:#9a3412;font-size:11px;font-weight:800;line-height:1.4}
.package-import-policy{display:flex!important;align-items:center!important;gap:10px!important;margin:14px 0 0!important}
.package-import-policy>i{font-size:19px}
.package-import-policy>div strong,.package-import-policy>div span{display:block}
.package-import-policy>div span{margin-top:2px;font-size:12px}
.import-confirm-card.warning-state{border-color:#fdba74!important;background:linear-gradient(135deg,#fff7ed,#fff)!important}
.import-confirm-choice-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.import-confirm-choice-actions form{margin:0}
@media(max-width:760px){.package-import-warning-actions,.import-confirm-choice-actions{display:grid;grid-template-columns:1fr;width:100%}.package-import-warning-actions .btn,.import-confirm-choice-actions .btn,.import-confirm-choice-actions form,.import-confirm-choice-actions form .btn{width:100%;justify-content:center}.package-import-warning-card .section-heading{display:grid;gap:10px}}


/* V1.0.189 - Catálogo de paquetes: filtros funcionales y eliminación rápida */
.package-catalog-resultbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 0 10px;padding:11px 13px;border:1px solid #dce5ed;border-radius:13px;background:#f8fafc}.package-catalog-resultbar>div strong,.package-catalog-resultbar>div span{display:block}.package-catalog-resultbar>div strong{color:#0f172a;font-size:13px}.package-catalog-resultbar>div span{margin-top:3px;color:#64748b;font-size:11px;font-weight:700}.package-bulk-form{display:flex;align-items:center;justify-content:flex-end;gap:10px}.package-bulk-form>[data-package-selected-count]{color:#475569;font-size:11px;font-weight:900;white-space:nowrap}.package-select-column,.package-select-cell{width:46px!important;min-width:46px!important;text-align:center!important}.package-select-all,.package-row-check{display:inline-grid;place-items:center;cursor:pointer}.package-select-all input,.package-row-check input{position:absolute;opacity:0;pointer-events:none}.package-select-all span,.package-row-check span{display:grid;place-items:center;width:20px;height:20px;border:2px solid #94a3b8;border-radius:6px;background:#fff;transition:.15s}.package-select-all input:checked+span,.package-row-check input:checked+span{border-color:#0f766e;background:#0f766e}.package-select-all input:checked+span:after,.package-row-check input:checked+span:after{content:"✓";color:#fff;font-size:13px;font-weight:950;line-height:1}.package-select-all input:indeterminate+span{border-color:#0f766e;background:#0f766e}.package-select-all input:indeterminate+span:after{content:"−";color:#fff;font-size:15px;font-weight:950;line-height:1}.package-catalog-table tbody tr.is-selected td{background:#ecfdf5}.package-catalog-table tbody tr.is-selected td:first-child{box-shadow:inset 4px 0 #0f766e}.package-bulk-form .btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
@media(max-width:720px){.package-catalog-resultbar{align-items:stretch;flex-direction:column}.package-bulk-form{display:grid;grid-template-columns:1fr auto}.package-select-column{display:table-cell!important}.package-select-cell{display:flex!important;justify-content:flex-end!important}.package-select-cell:before{margin-right:auto}.package-bulk-form .btn{justify-content:center}}

/* V1.0.191 - Gobierno de paquetes y retiro seguro de cargas mensuales */
.package-governance-card{border-left:5px solid #0f766e;background:linear-gradient(135deg,#f0fdfa,#fff)}
.package-governance-card .section-heading{align-items:flex-start}
.package-governance-card .section-heading p{max-width:850px;margin:5px 0 0;color:#475569;line-height:1.5}
.package-governance-card .actions{flex-wrap:wrap;justify-content:flex-end}
.package-governance-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px}
.package-governance-steps article{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid #ccfbf1;border-radius:14px;background:#fff}
.package-governance-steps article>b{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:10px;background:#0f766e;color:#fff;font-size:13px}
.package-governance-steps strong,.package-governance-steps small{display:block}.package-governance-steps strong{color:#0f172a;font-size:12px}.package-governance-steps small{margin-top:4px;color:#64748b;font-size:10.5px;font-weight:700;line-height:1.35}
.version-history-table tr.removed-version-row td{background:#fff7ed}.version-history-table tr.removed-version-row td:first-child{box-shadow:inset 4px 0 #ea580c}
.version-actions form{margin:0}.btn.ghost-danger{border-color:#fecaca;background:#fff;color:#b91c1c}.btn.ghost-danger:hover{border-color:#ef4444;background:#fef2f2;color:#991b1b}
@media(max-width:1050px){.package-governance-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.package-governance-card .section-heading{display:grid;gap:12px}.package-governance-card .actions{display:grid;grid-template-columns:1fr;width:100%}.package-governance-card .actions .btn{width:100%;justify-content:center}.package-governance-steps{grid-template-columns:1fr}}

/* V1.0.189 - Creación explícita de paquetes faltantes desde la validación */
.package-import-warning-actions form,.import-confirm-choice-actions form{display:flex;margin:0}
.package-import-warning-actions .btn.success,.import-confirm-choice-actions .btn.success{background:#047857;border-color:#047857;color:#fff;box-shadow:0 8px 18px rgba(4,120,87,.18)}
.package-import-warning-actions .btn.success:hover,.import-confirm-choice-actions .btn.success:hover{background:#065f46;border-color:#065f46}

/* V1.0.190 - Control de cobertura mensual y registros sin vínculo en dashboard */
.monthly-coverage-card,.unlinked-monthly-card{overflow:hidden}.monthly-coverage-heading{align-items:flex-start}.monthly-coverage-heading>div:first-child{max-width:760px}.monthly-coverage-filters{display:grid;grid-template-columns:repeat(8,minmax(115px,1fr));gap:8px;margin:4px 0 14px}.monthly-coverage-filters a{display:flex;flex-direction:column;gap:5px;min-width:0;padding:11px 12px;border:1px solid #dce5ef;border-radius:13px;background:#f8fafc;color:#475569;text-decoration:none;transition:.18s}.monthly-coverage-filters a:hover{border-color:#94a3b8;background:#fff;transform:translateY(-1px)}.monthly-coverage-filters a.is-active{border-color:#0f766e;background:#ecfdf5;color:#065f46;box-shadow:0 7px 18px rgba(15,118,110,.12)}.monthly-coverage-filters span{font-size:10px;font-weight:900;line-height:1.2;text-transform:uppercase;letter-spacing:.025em}.monthly-coverage-filters strong{font-size:22px;line-height:1;color:#0f172a}.monthly-coverage-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;padding:10px 12px;border-radius:12px;background:#f1f5f9;color:#475569;font-size:11.5px;font-weight:750}.monthly-coverage-summary span{display:flex;align-items:center;gap:8px}.monthly-coverage-summary i{color:#2563eb}.monthly-coverage-summary strong{white-space:nowrap;color:#0f172a}.monthly-coverage-table-wrap{max-height:660px}.monthly-coverage-table{min-width:1160px}.monthly-coverage-table th{position:sticky;top:0;z-index:3;background:#f8fafc}.monthly-coverage-table tr.is-pending td:first-child{border-left:3px solid #d97706}.monthly-coverage-table tr.is-complete td:first-child{border-left:3px solid #16a34a}.monthly-coverage-table td>small{display:block;margin-top:5px;color:#64748b;font-size:10.5px;font-weight:700;line-height:1.35}.coverage-catalog-count{display:flex;align-items:center;gap:6px;margin:3px 0;font-size:11px;font-weight:850}.coverage-catalog-count.design{color:#1d4ed8}.coverage-catalog-count.physical{color:#c2410c}.coverage-state{display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border-radius:999px;font-size:10.5px;font-weight:900;line-height:1.15;white-space:nowrap}.coverage-state.ready{background:#dcfce7;color:#166534}.coverage-state.missing{background:#fee2e2;color:#991b1b}.coverage-state.neutral{background:#f1f5f9;color:#64748b}.coverage-issues,.coverage-actions{display:flex;flex-wrap:wrap;gap:6px}.coverage-actions .btn{white-space:nowrap}.unlinked-total-badge{display:inline-flex;align-items:center;gap:5px;padding:9px 12px;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:11px;font-weight:850}.unlinked-total-badge strong{font-size:17px}.unlinked-monthly-table{min-width:980px}.unlinked-monthly-table td>small{display:block;margin-top:4px;color:#64748b;font-size:10.5px;line-height:1.4}.unlinked-empty{display:flex;align-items:center;justify-content:center;gap:12px;padding:26px;border:1px dashed #bbf7d0;border-radius:14px;background:#f0fdf4;color:#166534}.unlinked-empty>i{font-size:22px}.unlinked-empty strong,.unlinked-empty span{display:block}.unlinked-empty span{margin-top:3px;font-size:11px;color:#4b5563}
@media(max-width:1500px){.monthly-coverage-filters{grid-template-columns:repeat(4,minmax(135px,1fr))}}
@media(max-width:900px){.monthly-coverage-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.monthly-coverage-summary{align-items:flex-start;flex-direction:column}.monthly-coverage-table-wrap{max-height:none}.monthly-coverage-table,.unlinked-monthly-table{min-width:0}.monthly-coverage-table tr,.unlinked-monthly-table tr{border-left:0!important}.monthly-coverage-table td:first-child,.unlinked-monthly-table td:first-child{border-left:3px solid #d97706!important}.monthly-coverage-table tr.is-complete td:first-child{border-left-color:#16a34a!important}}
@media(max-width:520px){.monthly-coverage-filters{grid-template-columns:1fr 1fr}.monthly-coverage-heading .actions{width:100%}.monthly-coverage-heading .btn{flex:1}.coverage-actions{justify-content:flex-end}.coverage-actions .btn{font-size:10px;padding:7px 8px}}

/* V2.1 - Selector visible de periodo dentro del control de cobertura */
.monthly-coverage-controls{display:grid;justify-items:end;gap:10px;min-width:min(100%,360px)}
.monthly-coverage-period-picker{display:grid;gap:6px;width:min(100%,360px);padding:12px;border:1px solid #cbd5e1;border-radius:14px;background:linear-gradient(135deg,#f8fafc,#fff);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.monthly-coverage-period-picker>span{display:flex;align-items:center;gap:7px;color:#0f172a;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.03em}
.monthly-coverage-period-picker>span i{color:#2563eb}
.monthly-coverage-period-picker select{width:100%;min-height:42px;padding:9px 38px 9px 11px;border:1px solid #94a3b8;border-radius:10px;background:#fff;color:#0f172a;font-size:13px;font-weight:850;cursor:pointer}
.monthly-coverage-period-picker small{color:#64748b;font-size:10.5px;font-weight:700;line-height:1.35}
.monthly-coverage-controls .actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}
@media(max-width:900px){.monthly-coverage-heading{display:grid!important}.monthly-coverage-controls{justify-items:stretch;width:100%;min-width:0}.monthly-coverage-period-picker{width:100%;max-width:none}.monthly-coverage-controls .actions{justify-content:flex-start}}
@media(max-width:520px){.monthly-coverage-controls .actions{display:grid;grid-template-columns:1fr}.monthly-coverage-controls .actions .btn{width:100%;justify-content:center}}
