*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:#eef5f4;color:#102f31}button,select,input{font:inherit}.hidden{display:none!important}.login{min-height:100vh;display:grid;grid-template-columns:1.2fr .8fr;background:linear-gradient(135deg,#00695c,#0a8f79 55%,#f2f7f6 55%)}.loginHero{padding:8vw;color:#fff;display:flex;flex-direction:column;justify-content:center}.loginHero img{width:92px;filter:brightness(0) invert(1)}.loginHero h1{font-size:56px;margin:22px 0 6px}.loginHero p{font-size:23px}.heroBadges{display:flex;gap:10px}.heroBadges span{padding:9px 14px;background:#ffffff1f;border:1px solid #ffffff55;border-radius:20px}.loginBox{margin:auto;width:min(420px,82%);background:#fff;padding:38px;border-radius:22px;box-shadow:0 25px 70px #003d3538}.loginBox label{display:block;margin:18px 0 8px;font-weight:700}.loginBox input{width:100%;padding:13px;border:1px solid #ccd9d7;border-radius:9px;margin-top:6px}.primary{width:100%;padding:14px;background:#087966;color:#fff;border:0;border-radius:9px;font-weight:800;margin-top:15px}.app{display:grid;grid-template-columns:170px 1fr;min-height:100vh}aside{background:linear-gradient(#075f54,#006457);color:white;position:fixed;width:170px;height:100vh;z-index:3}.brand{display:flex;gap:10px;align-items:center;padding:16px}.brand img{width:34px;filter:brightness(0) invert(1)}.brand b,.brand small{display:block}.brand b{font-size:19px}nav button{width:100%;border:0;background:none;color:#eafffb;text-align:left;padding:15px 17px;font-weight:700;cursor:pointer}nav button.active,nav button:hover{background:#ffffff18;border-left:4px solid #42d7bb}.sideFoot{position:absolute;bottom:20px;padding:12px}.sideFoot img{width:70px;filter:brightness(0) invert(1);opacity:.8}.sideFoot small{display:block;margin-top:10px}.shell{grid-column:2}.shell header{height:62px;background:white;border-bottom:1px solid #dbe6e4;display:flex;justify-content:space-between;align-items:center;padding:0 24px;position:sticky;top:0;z-index:2}.shell header small{display:block;color:#6d8582}.shell header div:last-child{display:flex;gap:10px;align-items:center}#rolePill{background:#e4f4f0;padding:7px 12px;border-radius:20px;font-size:12px;font-weight:700}.shell header button{border:0;background:#eef3f2;padding:8px 12px;border-radius:8px}.page{display:none;padding:24px 30px 50px;max-width:1600px;margin:auto}.page.active{display:block}.pageTitle{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.pageTitle em{font-size:11px;letter-spacing:2px;color:#087966;font-style:normal;font-weight:900}.pageTitle h1{font-size:30px;margin:5px 0}.pageTitle p{margin:0;color:#66817d}.filters{display:flex;gap:8px}.filters select,.filterbar select{padding:10px 13px;border:1px solid #d4e0de;border-radius:9px;background:#fff}.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:16px 0}.kpis.compact{grid-template-columns:repeat(3,1fr);margin:0}.kpi{background:white;border-radius:14px;padding:16px;display:flex;gap:12px;align-items:center;border:1px solid #dbe7e5;box-shadow:0 4px 18px #0b554b0b}.kpi i{width:45px;height:45px;border-radius:50%;display:grid;place-items:center;color:white;font-style:normal;font-size:20px}.kpi span{font-size:12px}.kpi b{display:block;font-size:21px;margin-top:4px}.kpi small{display:block;margin-top:4px}.green i{background:#17a77f}.blue i{background:#1976d2}.gold i{background:#d99b14}.purple i{background:#7e57c2}.red i{background:#d6455d}.cyan i{background:#1ba4b8}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card{background:#fff;border:1px solid #dbe7e5;border-radius:15px;padding:16px;box-shadow:0 5px 22px #0c564b0b;min-width:0}.span2{grid-column:span 2}.span3{grid-column:span 3}.card h3{margin:0 0 15px;font-size:16px}.cardHead{display:flex;justify-content:space-between;align-items:center}.cardHead span{font-size:11px;color:#78918d}.chart{height:240px}.svgchart{width:100%;height:100%}.bars{display:flex;flex-direction:column;gap:10px}.barRow{display:grid;grid-template-columns:150px 1fr 80px;gap:9px;align-items:center;font-size:12px}.barTrack{height:11px;background:#e7efed;border-radius:9px;overflow:hidden}.barFill{height:100%;background:linear-gradient(90deg,#16a884,#087260);border-radius:9px}.barFill.warn{background:#d7a72d}.barFill.bad{background:#d64c5d}.signal{display:flex;gap:10px;padding:10px;border-bottom:1px solid #edf2f1;font-size:17px}.signal span{font-size:13px}.signal b,.signal small{display:block}.signal.good{color:#158464}.signal.warn{color:#b27c00}.signal.bad{color:#c83c51}.insights p{padding:10px;background:#f5faf9;border-radius:9px}.ooadHero{display:grid;grid-template-columns:300px 1fr;gap:15px}.stateMap{background:white;border:1px solid #dbe7e5;border-radius:16px;padding:15px;text-align:center}.stateMap img{width:100%;height:160px}.stateMap b{font-size:35px}.stateMap span,.stateMap small{display:block}.bigDonut{width:190px;height:190px;margin:auto;border-radius:50%;border:26px solid #1ba580;display:grid;place-items:center;padding:20px;text-align:center}.miniList p{display:flex;justify-content:space-between;border-bottom:1px solid #edf2f1;padding:9px 0;margin:0}.filterbar{background:white;border:1px solid #dbe7e5;border-radius:14px;padding:12px;display:flex;gap:12px;align-items:end;margin-bottom:14px}.filterbar label{font-size:11px;font-weight:700}.filterbar label select{display:block;min-width:210px;margin-top:5px}.filterbar button,.cardHead button,.userForm button{margin-left:auto;background:#dff4ef;color:#006d5b;border:0;padding:10px 14px;border-radius:8px;font-weight:800}.munGrid{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;margin-bottom:14px}.mapVisual{height:390px;position:relative;display:grid;place-items:center;background:linear-gradient(#f7fbfa,#edf5f3);overflow:hidden;border-radius:12px}.mapVisual>img{width:86%;height:86%}.pin{position:absolute;border:0;background:none;color:#087966;font-size:28px;cursor:pointer;text-shadow:0 2px 2px white}.pin small{display:block;font-size:10px;color:#173e3b;background:#ffffffd9;padding:2px 5px;border-radius:5px}.note{font-size:11px;color:#6f8783}.city{display:flex;gap:12px;align-items:center;border-bottom:1px solid #e7efed;padding-bottom:12px}.city i{background:#0b9a7e;color:white;width:48px;height:48px;border-radius:12px;display:grid;place-items:center}.city h2{margin:2px 0}.city small,.city em{font-size:11px;color:#6f8783}.metricGrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.metricGrid>div{background:#f4f8f7;padding:13px;border-radius:10px;display:flex;gap:9px}.metricGrid span{font-size:10px}.metricGrid b{display:block;font-size:19px;margin-top:5px}.variation{margin-top:10px;padding:10px;background:#e2f5ef;color:#08745f;font-weight:800;border-radius:9px}.variation.neg{background:#fdecef;color:#b32d42}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:15px}.tabs button{border:1px solid #cfe0dd;background:#fff;padding:9px 13px;border-radius:9px;font-weight:700;color:#496b67}.tabs button.active{background:#087966;color:white}.ibeTab{display:none}.ibeTab.active{display:block}.scoreRow{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}.score,.ranking{height:150px;background:#fff;border:1px solid #dbe7e5;border-radius:50%;display:grid;place-items:center;align-content:center;text-align:center;max-width:150px;margin:auto;width:150px;box-shadow:inset 0 0 0 15px #e9f3f1}.score.main{box-shadow:inset 0 0 0 15px #0a7d68;color:#075f50}.score b,.ranking b{font-size:34px}.score span,.ranking span{font-size:11px}.moduleTiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.moduleTiles div{background:#f1f8f6;border-left:5px solid #0b9278;padding:15px;border-radius:8px;font-weight:800}.moduleTiles small{display:block;font-weight:400;margin-top:5px;color:#647f7b}.download{display:inline-block;background:#e2f4ef;color:#08705e;padding:10px;border-radius:8px;text-decoration:none}.uploadGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:15px}.uploadCard{background:#fff;border:1px solid #dbe7e5;border-radius:14px;padding:15px}.uploadCard h3{margin:0}.uploadCard p{font-size:12px;color:#66817d;min-height:34px}.uploadCard input{width:100%;font-size:11px}.uploadCard button{margin-top:8px;width:100%;border:0;background:#087966;color:white;padding:9px;border-radius:8px;font-weight:800}.uploadCard a{font-size:11px;color:#087966}.status{font-size:11px;margin-top:7px;min-height:16px}.userForm{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;background:#f3f8f7;padding:10px;border-radius:9px;margin-bottom:10px}.userForm input,.userForm select{padding:8px;border:1px solid #cfdddb;border-radius:7px}table{width:100%;border-collapse:collapse;font-size:12px}th,td{text-align:left;padding:10px;border-bottom:1px solid #e6eeed}th{color:#53716d}.tag{padding:5px 8px;border-radius:10px;font-size:10px}.goodBg{background:#dcf4eb;color:#08745e}.badBg{background:#fde5e9;color:#b02b40}.up{color:#087c63}.down{color:#c43e52}.perm{padding:8px;border-bottom:1px solid #e7efed}.perm.lock{color:#9aa8a6}.log{max-height:160px;overflow:auto;font-size:10px;color:#607975}.log div{padding:6px;border-bottom:1px solid #edf2f1}@media(max-width:1050px){.app{grid-template-columns:75px 1fr}aside{width:75px}.brand div,nav span,.sideFoot small{display:none}.brand{justify-content:center}.sideFoot img{width:48px}.kpis{grid-template-columns:repeat(2,1fr)}.grid,.munGrid,.ooadHero{grid-template-columns:1fr}.span2,.span3{grid-column:auto}.uploadGrid{grid-template-columns:1fr 1fr}.page{padding:18px}.login{grid-template-columns:1fr}.loginHero{display:none}}/* Ficha municipal v2 */
.loginHint{margin:4px 0 12px;padding:10px 12px;background:#edf8f5;border:1px solid #cde9e1;border-radius:10px;color:#075f51;font-size:12px}.municipalToolbar{display:flex;gap:10px;align-items:end;background:#fff;padding:14px 16px;border:1px solid #dce8e5;border-radius:14px;box-shadow:0 5px 18px #0b5d4d0d;margin-bottom:8px}.municipalToolbar label{min-width:220px;font-size:11px;font-weight:700;color:#365b55}.municipalToolbar .grow{flex:1}.municipalToolbar select{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid #cddeda;border-radius:9px;background:white}.squareBtn,.primaryAction{height:41px;border:0;border-radius:9px;font-weight:800;cursor:pointer}.squareBtn{width:44px;background:#edf5f4;color:#075f51;font-size:20px}.primaryAction{padding:0 18px;background:#0b8d78;color:#fff}.breadcrumb{font-size:12px;color:#5d7772;text-align:right;margin:8px 3px 12px}.breadcrumb b{margin:0 7px}.munDashboard{display:grid;grid-template-columns:1.05fr 1.45fr;gap:12px}.realMapCard{min-height:420px}.realMap{height:335px;position:relative;overflow:hidden;border-radius:12px;background:linear-gradient(#eef8f6,#e7f2ef);display:flex;align-items:center;justify-content:center}.realMap img{width:96%;height:96%;object-fit:contain;filter:saturate(.9) contrast(1.02)}.mapShade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 75%,rgba(255,255,255,.25))}.hotspot{position:absolute;border:0;border-radius:16px;background:#0b554c;color:white;padding:5px 8px;font-size:10px;font-weight:800;box-shadow:0 2px 8px #0003;cursor:pointer;transform:translate(-50%,-50%)}.hotspot:hover{background:#9e1745;transform:translate(-50%,-50%) scale(1.08)}.hs-zam{left:30%;top:28%}.hs-zac{left:38%;top:31%}.hs-uru{left:40%;top:54%}.hs-mor{left:57%;top:43%}.hs-zit{left:74%;top:42%}.hs-laz{left:26%;top:78%}.mapZoom{position:absolute;left:12px;bottom:12px;background:#fff;border:1px solid #d7e4e1;border-radius:7px;padding:5px 9px;font-weight:900;line-height:20px;box-shadow:0 3px 12px #0002}.mapZoom hr{border:0;border-top:1px solid #ddd;margin:1px}.mapHelp{display:block;margin-top:8px;color:#69827d}.municipalIdentity{padding:16px}.identityTop{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid #e5eeec}.identityTop .shield{width:52px;height:52px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,#7d1739,#b52c58);color:#fff;font-size:28px}.identityTop h2{margin:1px 0;font-size:25px}.identityTop small,.identityTop em{color:#6b807c;font-style:normal}.inegiPill{margin-left:auto;background:#98133f;color:#fff;border-radius:20px;padding:8px 15px;font-size:11px;font-weight:800}.metricGrid.rich{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}.metricGrid.rich>div{min-height:83px;background:#f4f8f7;border:1px solid #edf2f1;border-radius:12px;display:flex;gap:10px;align-items:center;padding:12px}.metricGrid.rich i{font-style:normal;font-size:25px}.metricGrid.rich span{font-size:11px;color:#5d7772}.metricGrid.rich b{display:block;font-size:21px;color:#0c3f39;margin-top:4px}.metricGrid.rich small{display:block;font-size:9px;color:#8a9c98}.municipalCharts{grid-template-columns:2fr 1fr 1.35fr;margin-top:12px}.municipalBottom{grid-template-columns:1.25fr .8fr 2fr}.columnChart,.miniColumns{height:190px;display:flex;align-items:end;gap:10px;padding:15px 8px 20px;border-bottom:1px solid #dfe8e6}.colItem{flex:1;text-align:center;font-size:9px;color:#59726d}.colItem i{display:block;margin:auto;background:linear-gradient(#18ad8c,#087866);border-radius:5px 5px 0 0;min-height:5px}.colItem b{display:block;font-size:10px;color:#0b4940;margin-bottom:4px}.coverageRing{width:135px;height:135px;border-radius:50%;margin:20px auto 8px;display:grid;place-items:center;align-content:center;background:conic-gradient(#12a889 var(--pct,25%),#e7efed 0);box-shadow:inset 0 0 0 24px white}.coverageRing b{font-size:28px;color:#0a6255}.coverageRing span{font-size:10px;color:#6c817d}.legend{text-align:center;font-size:10px;color:#5d7772}.diag>div{display:flex;gap:12px;align-items:center;padding:12px;border-bottom:1px solid #e8efed}.diag i{font-style:normal;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e6f6f2}.diag span{font-size:10px;color:#647d78}.diag b{display:block;font-size:17px;color:#0c453d}.patronTable{font-size:10px}.patronTable td,.patronTable th{padding:6px 8px}.mapCard{overflow:hidden}@media(max-width:1100px){.munDashboard,.municipalCharts,.municipalBottom{grid-template-columns:1fr}.municipalToolbar{flex-wrap:wrap}.municipalToolbar label{min-width:180px}.metricGrid.rich{grid-template-columns:1fr 1fr}}

.ibeGallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px}
.ibeGallery a{display:block;text-decoration:none;color:#173e3b;background:#f5faf9;border:1px solid #dce8e6;border-radius:12px;overflow:hidden;transition:.15s}
.ibeGallery a:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0b554b20}
.ibeGallery img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}.ibeGallery span{display:block;padding:8px;font-size:11px;font-weight:700}
.loginHero{background-image:linear-gradient(135deg,#00695cdd,#0a8f79cc),url('../img/ChatGPT Image 15 sept 2026 19_59_23.png');background-size:cover;background-position:center}
@media(max-width:900px){.ibeGallery{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.ibeGallery{grid-template-columns:1fr}}

.execHero{display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:18px}.execHero h1{font-size:32px;margin:5px 0}.execHero p{margin:0;color:#57716e}.eyebrow{font-size:11px;font-weight:900;letter-spacing:2px;color:#087b69}.periodBox{display:flex;gap:8px;align-items:center}.periodBox label{font-size:11px;font-weight:800}.periodBox select{padding:10px 12px;border:1px solid #cededb;border-radius:9px;background:#fff}
.homeNav{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}.homeNav button{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid #d7e5e2;background:#fff;padding:13px;border-radius:13px;cursor:pointer;box-shadow:0 4px 14px #0c5d5010}.homeNav button:hover{border-color:#0d8b77;transform:translateY(-1px)}.homeNav b{font-size:23px}.homeNav span{font-weight:900;color:#123f3a}.homeNav small{display:block;font-weight:500;color:#6a7d7a;margin-top:3px}
.execKpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}.execKpis article{background:#fff;border:1px solid #d6e4e1;border-radius:14px;padding:14px;display:flex;gap:10px;align-items:center}.execKpis i{font-style:normal;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#0ea184;color:#fff;font-weight:900}.execKpis article:nth-child(2) i{background:#1681d4}.execKpis article:nth-child(3) i{background:#db9600}.execKpis article:nth-child(4) i{background:#7951ca}.execKpis article:nth-child(5) i{background:#d83e58}.execKpis article:nth-child(6) i{background:#0e9db2}.execKpis small,.execKpis em{display:block}.execKpis strong{font-size:19px}.execKpis em{font-size:10px;color:#087b69;font-style:normal}.execKpis em.warn{color:#b47a00}.execKpis em.bad{color:#c92f49}
.execGrid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:12px}.execGrid .trendCard{grid-column:span 2}.execGrid .span2{grid-column:span 2}.trendSvg{width:100%;height:205px}.trendFoot{display:flex;justify-content:space-between;color:#71827f;font-size:11px}.trendFoot b{color:#087b69;font-size:18px}.traffic p{padding:10px;border-bottom:1px solid #e4ecea;margin:0}.traffic b,.traffic small{display:block}.traffic small{padding-left:16px;color:#6c7e7b}.traffic .ok b{color:#087b69}.traffic .warn b{color:#c48a00}.traffic .bad b{color:#cf3d54}
.bars p{display:grid;grid-template-columns:95px 1fr 65px;gap:8px;align-items:center;margin:12px 0;font-size:11px}.bars i{height:9px;background:#e5eeec;border-radius:20px;position:relative}.bars i:after{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--w);background:#159c82;border-radius:20px}.bars b{text-align:right}.autoRead{display:grid;grid-template-columns:1fr 1fr;gap:10px}.autoRead p{background:#f2f8f6;padding:12px;border-radius:9px;margin:0}
.statePanel{margin-top:16px;background:linear-gradient(135deg,#f9fcfb,#eef7f4);border:1px solid #cfe1dd;border-radius:18px;padding:20px}.stateTitle h2{margin:4px 0}.stateTitle p{margin:0 0 14px;color:#607673}.stateKpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.stateKpis>div{background:#fff;border:1px solid #dce9e6;border-radius:12px;padding:13px;display:flex;gap:10px;align-items:center}.stateKpis b{font-size:24px}.stateKpis span{font-size:11px}.stateKpis strong{display:block;font-size:18px;margin-top:3px}.stateBottom{display:grid;grid-template-columns:1fr 1.3fr 1.2fr;gap:12px;margin-top:12px}.stateBottom>div{background:#fff;border:1px solid #dce9e6;border-radius:12px;padding:14px}.mapBadge{text-align:center}.mapBadge strong{font-size:36px;color:#0a7d69}.mapBadge span,.mapBadge small{display:block}.sexSplit div{padding:6px 0}.sexSplit strong{color:#0b8b76}.economic p{display:flex;justify-content:space-between;border-bottom:1px solid #edf2f1;padding:6px 0;margin:0}
@media(max-width:1100px){.homeNav,.execKpis{grid-template-columns:repeat(3,1fr)}.stateKpis{grid-template-columns:repeat(2,1fr)}.execGrid{grid-template-columns:1fr 1fr}.execGrid .trendCard,.execGrid .span2{grid-column:span 2}}
@media(max-width:700px){.execHero{display:block}.periodBox{margin-top:12px}.homeNav,.execKpis,.stateKpis,.stateBottom,.execGrid{grid-template-columns:1fr}.execGrid .trendCard,.execGrid .span2{grid-column:auto}.autoRead{grid-template-columns:1fr}}

.portalHome{min-height:100vh;background:radial-gradient(circle at 80% 10%,#d8eee8 0,transparent 28%),linear-gradient(145deg,#f7fbfa,#eaf4f1);padding:28px 5vw 36px;color:#103c37}
.portalTop{display:flex;justify-content:space-between;align-items:center;max-width:1500px;margin:auto}.portalBrand{display:flex;gap:16px;align-items:center}.portalBrand img{width:58px;height:58px}.portalBrand small{font-weight:900;letter-spacing:1.2px;color:#087b69}.portalBrand h1{margin:2px 0;font-size:27px}.portalBrand p{margin:0;color:#607773}.portalUser{display:flex;gap:10px;align-items:center}.portalUser span{background:#dff0ec;padding:9px 13px;border-radius:20px;font-size:12px;font-weight:800}.portalUser button,.backPortal{border:1px solid #c9dbd7;background:#fff;border-radius:9px;padding:9px 13px;cursor:pointer}
.portalHero{max-width:1500px;margin:28px auto 18px;display:grid;grid-template-columns:1.5fr .7fr;gap:18px;background:linear-gradient(120deg,#064f46,#087b69);border-radius:24px;padding:34px;color:#fff;box-shadow:0 18px 50px #064f4625;overflow:hidden}.portalHero .eyebrow{color:#b9eee1}.portalHero h2{font-size:38px;margin:7px 0}.portalHero p{font-size:15px;max-width:780px;color:#d8efea}.portalQuick{display:flex;flex-wrap:wrap;gap:9px;margin-top:24px}.portalQuick span{background:#ffffff16;border:1px solid #ffffff2c;border-radius:12px;padding:10px 14px}.portalQuick b{font-size:18px;margin-right:4px}.portalMap{display:flex;flex-direction:column;justify-content:center;align-items:center;background:#ffffff12;border:1px solid #ffffff24;border-radius:20px}.portalMap img{width:210px;max-height:170px;filter:brightness(0) invert(1);opacity:.92}.portalMap strong{font-size:20px}.portalMap small{margin-top:4px;color:#d9efea;text-align:center}
.portalModules{max-width:1500px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.moduleCard{min-height:190px;border:1px solid #d2e3df;background:#fff;border-radius:18px;padding:22px;text-align:left;display:flex;gap:16px;cursor:pointer;box-shadow:0 7px 22px #0a5d5010;transition:.18s}.moduleCard:hover{transform:translateY(-3px);border-color:#159c82;box-shadow:0 14px 30px #0a5d501b}.moduleIcon{flex:0 0 48px;height:48px;border-radius:14px;display:grid;place-items:center;background:#e1f2ee;color:#087b69;font-size:25px;font-weight:900}.moduleCard small{font-size:10px;font-weight:900;letter-spacing:1.2px;color:#748985}.moduleCard h3{font-size:21px;margin:5px 0;color:#123e39}.moduleCard p{font-size:13px;line-height:1.5;color:#607572;margin:0 0 14px}.moduleCard span{font-size:12px;font-weight:900;color:#087b69}.primaryModule{background:linear-gradient(145deg,#fff,#eff9f6);border-color:#9fd4c8}.primaryModule .moduleIcon{background:#087b69;color:#fff}
.portalBottom{max-width:1500px;margin:16px auto 0;display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}.portalBottom>div{background:#ffffffaa;border:1px solid #d7e5e2;border-radius:12px;padding:12px 15px}.portalBottom b,.portalBottom span{display:block}.portalBottom b{font-size:11px}.portalBottom span{font-size:12px;color:#657b77;margin-top:3px}.headerActions{display:flex;align-items:center;gap:9px}.backPortal{font-weight:800;color:#087b69}
@media(max-width:1000px){.portalModules{grid-template-columns:repeat(2,1fr)}.portalHero{grid-template-columns:1fr}.portalMap{display:none}}
@media(max-width:650px){.portalHome{padding:18px}.portalTop,.portalBrand{align-items:flex-start}.portalBrand p,.portalUser span{display:none}.portalHero{padding:24px}.portalHero h2{font-size:29px}.portalModules,.portalBottom{grid-template-columns:1fr}}
.municipalExtra{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.municipalExtra>div{background:#fff;border:1px solid #dfeae7;border-radius:10px;padding:9px 10px}.municipalExtra span,.municipalExtra small{display:block;font-size:9px;color:#718985}.municipalExtra b{display:block;font-size:16px;margin:3px 0;color:#0b5147}.activityDetail{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:14px}.activityDetail>div{display:flex;justify-content:space-between;gap:8px;background:#f4f8f7;border-radius:8px;padding:8px;font-size:10px}.activityDetail b{font-size:12px;color:#0a6858}@media(max-width:1100px){.municipalExtra{grid-template-columns:1fr 1fr}}
/* OOAD panorama ejecutivo V8 */
.ooadPeriod{text-align:right;background:#fff;border:1px solid #dbe7e5;border-radius:12px;padding:9px 14px}.ooadPeriod span,.ooadPeriod b{display:block}.ooadPeriod span{font-size:10px;color:#6c817d}.ooadPeriod b{font-size:12px;color:#087966;margin-top:3px}.ooadTop{display:grid;grid-template-columns:285px 1fr;gap:14px}.stateMapPro{display:flex;align-items:center;justify-content:center;gap:10px;min-height:220px;background:linear-gradient(145deg,#fff,#f3faf8)}.stateMapPro img{width:150px;height:150px}.stateMapPro div{text-align:center}.stateMapPro div b{display:block;font-size:42px;color:#075f54}.stateMapPro div span,.stateMapPro div small{display:block}.stateKpiPro{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.sk{background:#fff;border:1px solid #dbe7e5;border-radius:15px;padding:17px;display:flex;gap:12px;align-items:center;box-shadow:0 5px 20px #0b554b0b}.sk i{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:#fff;font-style:normal;font-size:20px;flex:0 0 48px}.sk span{font-size:11px;color:#536f6b}.sk strong{display:block;font-size:23px;color:#0b3632;margin:4px 0}.sk small{font-size:9px;color:#8a9d99}.sk.green i{background:#17a77f}.sk.blue i{background:#1976d2}.sk.purple i{background:#7e57c2}.sk.gold i{background:#d99b14}.sk.red i{background:#d6455d}.sk.cyan i{background:#1ba4b8}.ooadBand{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.ooadBand div{background:linear-gradient(135deg,#0b7565,#0a8f79);color:#fff;border-radius:12px;padding:12px 16px;display:flex;justify-content:space-between;align-items:center}.ooadBand span{font-size:10px;opacity:.85}.ooadBand b{font-size:16px}.ooadGrid{grid-template-columns:1.6fr 1fr 1fr}.proTable tbody tr:hover{background:#f2faf8}.sexPro{text-align:center}.sexRing{width:170px;height:170px;border-radius:50%;margin:8px auto;display:grid;place-items:center;align-content:center;background:conic-gradient(#18a982 0 52.15%,#6a5acd 52.15% 100%);box-shadow:inset 0 0 0 28px #fff}.sexRing b,.sexRing strong{font-size:18px}.sexRing span,.sexRing small{font-size:10px}.sexPro p{display:flex;justify-content:center;gap:15px;font-size:11px}.ooadInsights{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ooadInsights p{margin:0;background:#f3f9f7;border-left:4px solid #0a8b75;border-radius:8px;padding:12px;font-size:12px}@media(max-width:1100px){.ooadTop,.stateKpiPro,.ooadGrid{grid-template-columns:1fr}.stateKpiPro{grid-template-columns:repeat(2,1fr)}.ooadBand{grid-template-columns:repeat(2,1fr)}.ooadInsights{grid-template-columns:1fr}}
/* V9 MOBILE RESPONSIVE */
.mobileMenuBtn{display:none;border:0;background:#e3f2ef;color:#07695a;border-radius:9px;padding:9px 12px;font-size:22px;font-weight:900}
@media(max-width:700px){
 body{overflow-x:hidden}.app{display:block}.shell{grid-column:auto;width:100%}
 aside{width:240px;left:0;top:0;transform:translateX(-105%);transition:transform .22s ease;box-shadow:12px 0 35px #002d2833;z-index:30}
 aside.mobileOpen{transform:translateX(0)} aside .brand div,aside nav span,aside .sideFoot small{display:block} aside .brand{justify-content:flex-start} aside .sideFoot img{width:55px}
 .mobileMenuBtn{display:inline-block}.shell header{height:auto;min-height:58px;padding:8px 10px;gap:8px;position:sticky}.shell header>div:first-child{min-width:0;flex:1}.shell header>div:first-child b{font-size:13px;line-height:1.15;display:block}.shell header>div:first-child small{font-size:10px}.headerActions{gap:5px}.headerActions .backPortal{font-size:0;padding:9px}.headerActions .backPortal:after{content:'⌂';font-size:20px}.headerActions #logout{padding:9px;font-size:12px}#rolePill{display:none}
 .page{padding:14px 12px 35px;width:100%;max-width:none}.pageTitle{display:block;margin-bottom:12px}.pageTitle h1{font-size:27px;line-height:1.05;margin:5px 0 7px}.pageTitle p{font-size:13px;line-height:1.35}.pageTitle .filters{margin-top:10px;display:grid;grid-template-columns:1fr 1fr}.filters select{width:100%;min-width:0}
 .municipalToolbar,.filterbar{display:grid!important;grid-template-columns:1fr!important;gap:9px!important;align-items:stretch!important;padding:12px!important}.municipalToolbar label,.filterbar label{width:100%}.municipalToolbar select,.filterbar select,.filterbar label select{width:100%!important;min-width:0!important}.municipalToolbar button,.filterbar button{width:100%;margin:0!important}
 .munGrid{display:block}.munGrid>.card{margin-bottom:12px}.mapVisual{height:285px}.mapVisual>img{width:100%;height:auto;max-height:270px}.pin{font-size:20px}.pin small{font-size:8px}
 .city{align-items:flex-start}.city h2{font-size:24px}.metricGrid{grid-template-columns:1fr 1fr}.metricGrid>div{padding:10px}.metricGrid b{font-size:16px}.municipalExtra,.activityDetail{grid-template-columns:1fr 1fr!important}.municipalExtra>div{padding:10px}.activityDetail>div{font-size:9px}
 .kpis,.kpis.compact,.stateKpiPro,.ooadBand,.ooadInsights,.uploadGrid,.moduleTiles,.scoreRow{grid-template-columns:1fr 1fr!important}.grid,.ooadGrid,.execGrid,.stateBottom,.stateKpis{grid-template-columns:1fr!important}.span2,.span3,.execGrid .span2,.execGrid .trendCard{grid-column:auto!important}.ooadTop{display:block}.stateMapPro{min-height:180px;margin-bottom:10px}.stateKpiPro{margin-top:10px}.sk{padding:12px}.sk strong{font-size:19px}.ooadBand{grid-template-columns:1fr 1fr!important}.ooadGrid .card{overflow-x:auto}.proTable{min-width:620px}
 .score,.ranking{width:120px;height:120px}.score b,.ranking b{font-size:27px}.tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.tabs button{white-space:nowrap}.barRow{grid-template-columns:90px 1fr 55px}.userForm{grid-template-columns:1fr}.card{padding:13px}.chart{height:210px}
}
@media(max-width:430px){.kpis,.kpis.compact,.stateKpiPro,.ooadBand,.ooadInsights,.uploadGrid,.moduleTiles,.scoreRow{grid-template-columns:1fr!important}.metricGrid,.municipalExtra,.activityDetail{grid-template-columns:1fr 1fr!important}.pageTitle h1{font-size:25px}.mapVisual{height:250px}}
/* V10 - Indicadores de Vigencia */
.vigKpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}.vigCard{background:#fff;border:1px solid #dbe7e5;border-radius:16px;padding:18px;position:relative;min-height:180px;box-shadow:0 6px 18px #0b554b0a}.vigType{font-size:10px;font-weight:900;letter-spacing:.08em;color:#087966}.vigCard>b{display:block;font-size:32px;margin:12px 0;color:#123c37}.rankCircle{position:absolute;right:16px;bottom:16px;width:72px;height:72px;border-radius:50%;border:8px solid #16a085;display:grid;place-items:center;align-content:center;font-size:22px;font-weight:900;color:#08705e;background:#f6fbfa}.rankCircle small{font-size:9px;font-weight:700}.rankCircle.warnRank{border-color:#d6a126;color:#8d6800}.rankCircle.badRank{border-color:#d94c61;color:#ad263a}.vigCard p{font-size:11px;color:#6d8581;max-width:120px;margin-top:22px}.vigRead{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.vigRead>div{background:#f2f8f6;border-radius:12px;padding:16px;border-left:5px solid #0b9278}.vigRead strong{font-size:22px;display:block}.vigRead span,.vigRead i{font-size:10px;display:block;margin-top:4px}.vigRead i{font-style:normal;color:#087966;font-weight:800}@media(max-width:900px){.vigKpis{grid-template-columns:1fr 1fr}.vigRead{grid-template-columns:1fr 1fr}}@media(max-width:560px){.vigKpis,.vigRead{grid-template-columns:1fr}.vigCard{min-height:145px}.rankCircle{width:62px;height:62px}.portalModules{grid-template-columns:1fr!important}}

/* V11 - móvil real: navegación fuera del lienzo y contenido a ancho completo */
@media (max-width:900px){
 html,body{width:100%;max-width:100%;overflow-x:hidden!important}
 .app{display:block!important;width:100%!important;min-width:0!important}
 .shell{display:block!important;width:100%!important;margin:0!important;grid-column:auto!important;min-width:0!important}
 aside{position:fixed!important;top:0!important;left:0!important;width:min(82vw,290px)!important;height:100dvh!important;transform:translateX(-110%)!important;z-index:9999!important;box-shadow:12px 0 35px #002d2844!important}
 aside.mobileOpen{transform:translateX(0)!important}
 .mobileMenuBtn{display:inline-grid!important;place-items:center;flex:0 0 42px;width:42px;height:42px;padding:0!important}
 .shell header{width:100%!important;min-height:58px!important;height:auto!important;padding:7px 10px!important;display:flex!important;align-items:center!important;gap:8px!important;overflow:hidden}
 .shell header>div:first-of-type{min-width:0!important;flex:1 1 auto!important}.shell header>div:first-of-type b{white-space:normal;font-size:12px!important}.shell header>div:first-of-type small{font-size:9px!important}
 .headerActions{flex:0 0 auto!important;gap:4px!important}.headerActions .backPortal{font-size:0!important;width:40px!important;height:40px!important;padding:0!important}.headerActions .backPortal:after{content:'⌂';font-size:20px}.headerActions #logout{font-size:11px!important;padding:9px 8px!important}#rolePill{display:none!important}
 .page{width:100%!important;max-width:100%!important;margin:0!important;padding:14px 12px 32px!important;overflow:hidden}
 .pageTitle{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;align-items:start!important}.pageTitle>div{min-width:0}.pageTitle h1{font-size:clamp(25px,8vw,34px)!important;line-height:1.03!important;overflow-wrap:normal!important;word-break:normal!important}.pageTitle p{max-width:none!important}
 .pageTitle .filters{width:100%!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;margin:0!important}.pageTitle .filters select{width:100%!important}
 .municipalToolbar{width:100%!important;grid-template-columns:1fr!important}.municipalToolbar .grow{min-width:0!important}.municipalToolbar select{max-width:100%!important}
 .munDashboard,.municipalCharts,.municipalBottom,.grid,.ooadGrid,.execGrid{width:100%!important;min-width:0!important;grid-template-columns:1fr!important}.card{min-width:0!important;max-width:100%!important}
 .realMap{height:280px!important;overflow:hidden!important}.realMap img{width:100%!important;height:100%!important;object-fit:contain!important}.hotspot{font-size:8px!important;padding:4px 6px!important}
 .identityTop{display:grid!important;grid-template-columns:auto 1fr!important}.inegiPill{grid-column:1/-1!important;margin:4px 0 0!important;width:max-content!important;max-width:100%}
 .metricGrid.rich{grid-template-columns:1fr 1fr!important}.metricGrid.rich>div{min-width:0!important}.metricGrid.rich b{font-size:17px!important;overflow-wrap:anywhere}
 .municipalExtra,.activityDetail{grid-template-columns:1fr 1fr!important}
 .proTable{min-width:560px!important}.ooadGrid .card:has(.proTable),.card:has(table){overflow-x:auto!important}
}
@media (max-width:390px){
 .shell header>div:first-of-type small{display:none!important}.page{padding-left:9px!important;padding-right:9px!important}.metricGrid.rich{grid-template-columns:1fr!important}.municipalExtra,.activityDetail{grid-template-columns:1fr 1fr!important}.realMap{height:245px!important}
}

/* V12 · Comparativa Vigencia */
.vigCompareWrap{background:#fff;border:1px solid #d8e6e3;border-radius:16px;padding:16px;margin:14px 0;box-shadow:0 5px 18px #0b5d5010}.vigCompareGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.vigCompareGrid article{background:linear-gradient(145deg,#f8fbfa,#eef7f4);border:1px solid #dbe9e6;border-radius:13px;padding:14px}.vigCompareGrid article>span{font-size:11px;font-weight:900;color:#526d68;text-transform:uppercase}.vigCompareGrid article>div{display:flex;align-items:center;gap:8px;margin:9px 0}.vigCompareGrid small{font-size:15px;color:#728580}.vigCompareGrid strong{font-size:22px;color:#123f39}.vigCompareGrid b{color:#9aacaa}.vigCompareGrid em{font-style:normal;font-weight:900;font-size:12px;border-radius:20px;padding:5px 8px;display:inline-block}.vigCompareGrid em.up{background:#dff4ec;color:#087b69}.vigCompareGrid em.down{background:#fde7e9;color:#bd3349}.vigCompareGrid em.flat{background:#eef1f0;color:#667875}
@media(max-width:900px){.vigCompareGrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.vigCompareWrap{padding:12px}.vigCompareGrid{grid-template-columns:1fr 1fr;gap:8px}.vigCompareGrid article{padding:11px}.vigCompareGrid article>span{font-size:9px}.vigCompareGrid small{font-size:13px}.vigCompareGrid strong{font-size:18px}.vigCompareGrid em{font-size:10px}.vigCompareWrap .cardHead{align-items:flex-start;gap:6px}.vigCompareWrap .cardHead>span{font-size:9px;text-align:right}}

.vigCard .rankCircle{display:flex!important;flex-direction:column;align-items:center;justify-content:center;width:88px;height:88px;margin:12px auto 8px;border:7px solid #128a74;border-radius:50%;background:#fff}
.vigCard .rankCircle>span{display:block!important;font-size:28px!important;line-height:1!important;font-weight:900!important;color:#0b5148!important}
.vigCard .rankCircle small{display:block!important;font-size:11px!important;color:#617a76!important;margin-top:4px!important}
.vigCard .rankText{display:block!important;margin:7px 0 0!important;padding:7px 10px!important;border-radius:9px!important;background:#edf7f4!important;color:#345d57!important;text-align:center!important;font-size:11px!important;font-weight:800!important}
.vigCard .rankText strong{font-size:14px!important;color:#087b69!important}
#vigencia .vigRead i{display:block!important;font-style:normal!important;font-weight:900!important;color:#087b69!important}
@media(max-width:768px){#vigencia .vigGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}#vigencia .vigCard{padding:14px 10px!important;min-width:0!important}.vigCard .rankCircle{width:76px!important;height:76px!important;border-width:6px!important}.vigCard .rankCircle>span{font-size:24px!important}.vigCard .rankText{font-size:10px!important;padding:6px 4px!important}}

/* V14 comparativa de ranking histórico */
.vigCompareGrid article{position:relative}
.cmpVals{display:flex;align-items:center;justify-content:center;gap:9px;margin:8px 0}
.rankCompare{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:7px;margin-top:12px;padding:10px;background:#f3f8f7;border:1px solid #dce9e6;border-radius:10px}
.rankCompare small,.rankCompare strong{display:block;font-size:10px;color:#647a76}
.rankCompare small b,.rankCompare strong b{display:block;font-size:19px;color:#164e47;margin-top:2px}
.rankCompare strong{text-align:right}.rankCompare i{font-style:normal;color:#8ba09c;font-weight:900}
.rankMove{margin:7px 0 0!important;padding:6px 8px;border-radius:8px;font-size:10px!important;font-weight:900!important;text-align:center}
.rankMove.upRank{background:#e7f7f1;color:#087b69}.rankMove.downRank{background:#fff0f1;color:#c53c51}.rankMove.flatRank{background:#f2f4f4;color:#5f706d}.rankMove.noData{background:#fff8e8;color:#9a7116}
@media(max-width:768px){.vigCompareGrid{grid-template-columns:1fr!important}.rankCompare{padding:9px}.rankCompare small b,.rankCompare strong b{font-size:18px}}

/* V15 · histórico acumulativo */
.historyPanel{margin:14px 0;background:#fff;border:1px solid #d8e7e3;border-radius:16px;padding:16px}
.historyToolbar{display:flex;gap:9px;flex-wrap:wrap;margin:12px 0}.historyToolbar select,.historyToolbar button{border:1px solid #cfdfdb;background:#fff;border-radius:9px;padding:9px 11px}.historyToolbar button{margin-left:auto;color:#a43b4c;cursor:pointer}
.historyKpis{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.historyKpis article{background:#f3f8f7;border:1px solid #deebe8;border-radius:12px;padding:12px}.historyKpis small,.historyKpis span{display:block;color:#6b807c;font-size:10px}.historyKpis b{display:block;font-size:21px;color:#0a6558;margin:3px 0}
.historyCharts{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:11px}.historyCharts .card{padding:13px}.historyCharts h4,.historyTableCard h4{margin:0 0 8px}.histChart{height:210px;min-height:210px;background:linear-gradient(#fff,#f7fbfa);border:1px solid #e2ece9;border-radius:10px;overflow:hidden}.histChart svg{width:100%;height:100%;display:block}.chartNote{display:block;margin-top:5px;color:#70827f}.historyTableCard{margin-top:11px}.tableScroll{overflow:auto}.historyTableCard table{min-width:720px}.histEmpty{height:100%;display:grid;place-items:center;color:#7a8d89;font-size:12px}
.histDotLabel{font-size:9px;fill:#607773}.histAxis{stroke:#dbe7e4;stroke-width:1}.histLine{fill:none;stroke:#087b69;stroke-width:3}.histDot{fill:#fff;stroke:#087b69;stroke-width:3}.histRankLine{fill:none;stroke:#8a62c7;stroke-width:3}.histRankDot{fill:#fff;stroke:#8a62c7;stroke-width:3}
@media(max-width:800px){.historyKpis{grid-template-columns:repeat(2,1fr)}.historyCharts{grid-template-columns:1fr}.historyToolbar{display:grid;grid-template-columns:1fr 1fr}.historyToolbar button{margin:0;grid-column:1/-1}.histChart{height:190px}}

/* V16 */
.clinicPopV16{margin-top:12px}.clinicKpisV16{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:10px 0}.clinicKpisV16 article{padding:11px;border:1px solid #dce9e6;background:#f4f9f8;border-radius:11px}.clinicKpisV16 small{display:block;color:#667d79}.clinicKpisV16 b{font-size:21px;color:#087b69}
.motivosCompareV16{background:#fff;border:1px solid #d8e7e3;border-radius:16px;padding:16px;margin:14px 0}.badgeV16{background:#e7f7f1;color:#087b69;border-radius:999px;padding:6px 10px;font-weight:900}.motivosGridV16{display:grid;grid-template-columns:1fr 1fr .8fr;gap:10px}.motivosGridV16>article{background:#f5f9f8;border:1px solid #dfeae8;border-radius:12px;padding:13px}.bigV16{font-size:22px;font-weight:900;color:#123f39;margin:8px 0}.bigV16 i,.rankV16>i{font-style:normal;color:#8ca09c}.rankV16{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.rankV16 span{font-size:10px;color:#667d79}.rankV16 span:last-child{text-align:right}.rankV16 b{display:block;font-size:24px;color:#087b69}.gainV16{display:block;margin-top:8px;color:#087b69}.motivosOpsV16>div{display:flex;justify-content:space-between;align-items:end;border-top:1px solid #e1ebe9;padding:8px 0}.motivosOpsV16 b{font-size:20px;color:#123f39}.motivosOpsV16 span{font-size:10px;color:#6b807c}
@media(max-width:800px){.clinicKpisV16{grid-template-columns:1fr}.motivosGridV16{grid-template-columns:1fr}.bigV16{font-size:19px}}
/* V17 */
.uploadPeriodV17{margin:10px 0;padding:10px;border:1px solid #d7e4e1;border-radius:10px;background:#f4faf8}.uploadPeriodV17 label{display:block;font-weight:800;margin-bottom:6px}.uploadPeriodV17>div{display:flex;gap:7px}.uploadPeriodV17 select{flex:1;padding:8px;border:1px solid #c8d9d5;border-radius:8px;background:#fff}.uploadPeriodV17 small{display:block;margin-top:6px;color:#607b76}

.vig3Grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}.vig3{min-height:260px}.vig3Head{display:flex;gap:12px;align-items:center;border-bottom:1px solid #dbe8e5;padding-bottom:12px;margin-bottom:16px}.vig3Head>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#087b69;color:white;font-weight:800}.vig3Head small{color:#087b69;font-weight:800;letter-spacing:.08em}.vig3Head h3{margin:2px 0}.v18Big{font-size:32px;font-weight:900;color:#123b36;margin:8px 0}.v18Compare,.v18Rank{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 0;border-top:1px solid #edf3f1}.v18Compare strong,.up{color:#087b69}.down{color:#b4233f}.v18Rank>span,.v18Mini{font-size:12px;color:#617772}.v18Mini{margin-top:12px;padding:10px;background:#f2f8f6;border-radius:9px}.v18Split{display:grid;grid-template-columns:1fr 1fr;gap:10px}.v18Split>div{background:#f2f8f6;padding:14px;border-radius:10px}.v18Split small,.v18Split span{display:block}.v18Split b{display:block;font-size:25px;margin:6px 0}.v18Table{width:100%;border-collapse:collapse}.v18Table th,.v18Table td{padding:10px;border-bottom:1px solid #e4ecea;text-align:left}.v18Table tr.sel{background:#eaf7f3}.tableWrap{overflow:auto}@media(max-width:800px){.vig3Grid{grid-template-columns:1fr}.vig3{min-height:auto}.pageTitle .filters{width:100%;display:grid;grid-template-columns:1fr 1fr}.pageTitle .filters #vigSub{grid-column:1/-1}.v18Table{min-width:760px}}
/* V20 */
.emptyV20{width:100%;padding:36px 18px;text-align:center;color:#667b78;background:#f5f9f8;border:1px dashed #bfd0cd;border-radius:12px}.uploadCard button{cursor:pointer}

/* V27 · Biblioteca de Presentaciones */
.pptHero{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:20px;margin-bottom:16px;border-radius:16px;background:linear-gradient(135deg,#087461,#0d927b);color:#fff}.pptHero>div{display:flex;align-items:center;gap:14px}.pptHero>div>span{width:54px;height:54px;display:grid;place-items:center;border-radius:14px;background:#ffffff20;font-size:28px}.pptHero h2,.pptHero p{margin:2px 0}.pptHero small{font-weight:900;letter-spacing:.12em}.pptHero>b{white-space:nowrap;background:#fff;color:#087461;padding:8px 12px;border-radius:999px}.pptSearch{min-width:260px;padding:10px 12px;border:1px solid #ccdeda;border-radius:9px}.pptGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.pptCard{background:#fff;border:1px solid #d7e5e2;border-radius:15px;overflow:hidden;box-shadow:0 5px 18px #0b5d5010}.pptCover{height:145px;display:grid;place-items:center;background:linear-gradient(145deg,#edf7f4,#dceee9);font-size:52px;color:#087461}.pptBody{padding:14px}.pptBody h3{margin:0 0 5px;overflow-wrap:anywhere}.pptMeta{font-size:11px;color:#6a807c;margin-bottom:12px}.pptActions{display:flex;gap:7px;flex-wrap:wrap}.pptActions button,.pptActions a{border:0;border-radius:8px;padding:8px 10px;font-weight:800;cursor:pointer;text-decoration:none;background:#eaf5f2;color:#087461}.pptActions .pptDownload{background:#087b69;color:#fff}.pptEmpty{grid-column:1/-1;padding:50px 20px;text-align:center;border:1px dashed #bcd1cc;border-radius:14px;color:#6b807c;background:#f7fbfa}.pptAdmin{grid-column:1/-1}.pptDrop{border:2px dashed #b9cfca;border-radius:12px;padding:16px;background:#f6faf9}.pptDrop input{width:100%;margin:8px 0}.pptDrop button{width:100%;background:#087b69;color:#fff;border:0;border-radius:9px;padding:10px;font-weight:900}.pptStatus{font-size:11px;color:#607b76;margin-top:7px}
@media(max-width:900px){.pptGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.pptGrid{grid-template-columns:1fr}.pptHero{align-items:flex-start;flex-direction:column}.pptSearch{min-width:0;width:100%}.pptCover{height:115px}}
/* V28 · visor visible de presentaciones */
.pptWorkspace{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(340px,.85fr);gap:16px;align-items:start}.pptViewer{background:#fff;border:1px solid #d5e5e1;border-radius:16px;overflow:hidden;box-shadow:0 8px 28px #0b5d5012;position:sticky;top:12px}.pptViewerHead{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #e0ebe8}.pptViewerHead small{font-weight:900;color:#087b69;letter-spacing:.1em}.pptViewerHead h3{margin:3px 0 0}.pptViewerStage{aspect-ratio:16/9;min-height:360px;background:linear-gradient(145deg,#15211f,#243c37);display:grid;place-items:center;padding:24px}.pptViewerEmpty{text-align:center;color:#d8e8e4}.pptViewerEmpty span{display:block;font-size:74px;color:#6fb4a7;margin-bottom:8px}.pptViewerEmpty b{display:block;font-size:20px;color:#fff}.pptViewerEmpty p{margin:7px 0 0}.pptPreviewSheet{width:min(92%,760px);aspect-ratio:16/9;background:#fff;border-radius:7px;box-shadow:0 18px 55px #0008;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:34px;color:#174a42}.pptPreviewSheet .pptIcon{font-size:70px;color:#087b69}.pptPreviewSheet h2{font-size:25px;margin:12px 0 5px;overflow-wrap:anywhere}.pptPreviewSheet p{color:#607b76;max-width:540px}.pptPreviewSheet .pptHint{margin-top:16px;padding:8px 12px;border-radius:999px;background:#edf7f4;font-size:11px;font-weight:800}.pptViewerHead a,.pptViewerHead button{border:0;border-radius:8px;padding:8px 11px;background:#087b69;color:#fff;text-decoration:none;font-weight:800;cursor:pointer}.pptSectionTitle{display:flex;justify-content:space-between;gap:8px;align-items:end;margin:0 0 9px}.pptSectionTitle h3{margin:0}.pptSectionTitle span{font-size:10px;color:#6b807c}.pptWorkspace .pptGrid{grid-template-columns:1fr}.pptWorkspace .pptCover{height:82px;font-size:34px}.pptWorkspace .pptCard{display:grid;grid-template-columns:100px 1fr}.pptWorkspace .pptBody{padding:11px}.pptCard.pptSelected{outline:3px solid #0d927b;outline-offset:1px}
@media(max-width:1000px){.pptWorkspace{grid-template-columns:1fr}.pptViewer{position:relative;top:0}.pptWorkspace .pptGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.pptWorkspace .pptCard{display:block}.pptWorkspace .pptCover{height:90px}}
@media(max-width:600px){.pptViewerStage{min-height:220px;padding:12px}.pptPreviewSheet{width:100%;padding:18px}.pptPreviewSheet .pptIcon{font-size:48px}.pptPreviewSheet h2{font-size:18px}.pptWorkspace .pptGrid{grid-template-columns:1fr}.pptViewerHead{align-items:flex-start;flex-direction:column}.pptSectionTitle{align-items:flex-start;flex-direction:column}}

/* V29 · Biblioteca visual de presentaciones */
.pptWorkspaceV29{margin-top:16px}.pptGridV29{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.pptCardV29{background:#fff;border:1px solid #d6e5e1;border-radius:18px;overflow:hidden;box-shadow:0 8px 24px #0b5d5012;transition:.18s transform,.18s box-shadow}.pptCardV29:hover{transform:translateY(-2px);box-shadow:0 12px 30px #0b5d5020}.pptThumbV29{aspect-ratio:16/9;background:linear-gradient(135deg,#0a5e52,#11927c);position:relative;overflow:hidden;display:grid;place-items:center}.pptThumbV29 img{width:100%;height:100%;object-fit:cover;display:block}.pptThumbFallbackV29{color:#fff;text-align:center;padding:18px}.pptThumbFallbackV29 b{display:block;font-size:42px}.pptThumbFallbackV29 span{font-size:12px;opacity:.9}.pptBadgeV29{position:absolute;top:10px;left:10px;background:#ffffffeb;color:#087461;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:900}.pptCardBodyV29{padding:15px}.pptCardBodyV29 h3{margin:0 0 7px;font-size:16px;line-height:1.2;overflow-wrap:anywhere}.pptReviewV29{font-size:12px;line-height:1.45;color:#5e7772;min-height:52px;margin-bottom:10px}.pptInfoV29{font-size:10px;color:#82938f;margin-bottom:12px}.pptButtonsV29{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pptButtonsV29 button,.pptButtonsV29 a{border:0;border-radius:9px;padding:9px 10px;text-align:center;text-decoration:none;font-weight:900;cursor:pointer;background:#e9f4f1;color:#087461}.pptButtonsV29 .primary{background:#087b69;color:#fff}.pptDeleteV29{grid-column:1/-1!important;background:#fff1f2!important;color:#a31d35!important}.pptViewerV29{margin-top:18px;background:#fff;border:1px solid #d6e5e1;border-radius:18px;overflow:hidden}.pptViewerV29Head{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e1ece9}.pptViewerV29Head h3{margin:0}.pptViewerV29Stage{aspect-ratio:16/9;max-height:70vh;background:#14211f;display:grid;place-items:center;overflow:hidden}.pptViewerV29Stage img{width:100%;height:100%;object-fit:contain}.pptViewerV29Stage .empty{text-align:center;color:#dce9e6;padding:30px}.pptViewerV29Stage .empty b{display:block;color:#fff;font-size:22px;margin-bottom:7px}@media(max-width:1000px){.pptGridV29{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.pptGridV29{grid-template-columns:1fr}.pptHero{margin-left:0;margin-right:0}.pptViewerV29Head{align-items:flex-start;flex-direction:column}.pptButtonsV29{grid-template-columns:1fr 1fr}}
/* V30 · biblioteca ejecutiva visible */
.pptLibraryHeadV30{display:flex;justify-content:space-between;align-items:end;margin:18px 0 10px}.pptLibraryHeadV30 h3{margin:0;font-size:18px}.pptLibraryHeadV30 span{font-size:11px;color:#6b807c}.pptGridV29{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.pptCardV29{border-radius:12px}.pptCardBodyV29{padding:11px}.pptCardBodyV29 h3{font-size:13px}.pptReviewV29{font-size:11px;min-height:48px}.pptButtonsV29 button,.pptButtonsV29 a{padding:8px 6px;font-size:11px}.pptViewerV29{margin-top:20px}.pptViewerV29Stage{min-height:520px}@media(max-width:1250px){.pptGridV29{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1000px){.pptGridV29{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.pptGridV29{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.pptViewerV29Stage{min-height:300px}}@media(max-width:480px){.pptGridV29{grid-template-columns:1fr}.pptReviewV29{min-height:0}.pptViewerV29Stage{min-height:220px}}

/* V31 FIX */
#pptLibrary.pptGridV29{display:grid!important;visibility:visible!important;opacity:1!important;min-height:220px!important}#pptLibrary .pptCardV29{display:block!important;visibility:visible!important;opacity:1!important;min-width:0}.pptViewerV29Head small{font-weight:900;color:#087b69;letter-spacing:.1em}.pptViewerV29Head p{margin:4px 0 0;font-size:12px;color:#607b76}
/* V32 · biblioteca: nunca ocultar tarjetas */
#pptLibrary{display:grid!important;grid-template-columns:repeat(5,minmax(190px,1fr))!important;gap:14px!important;min-height:0!important;margin-bottom:18px!important}
#pptLibrary .pptCardV29{display:block!important;background:#fff!important;min-height:330px!important}
#pptLibrary .pptThumbFallbackV29{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.pptThumbFallbackV29 small{display:block;margin-top:8px;max-width:90%;font-size:11px;overflow-wrap:anywhere}
@media(max-width:1250px){#pptLibrary{grid-template-columns:repeat(4,minmax(180px,1fr))!important}}@media(max-width:950px){#pptLibrary{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media(max-width:520px){#pptLibrary{grid-template-columns:1fr!important}}
/* V35 - visor real PPTX mediante Office Web Viewer */
.pptOfficeStage{width:100%;aspect-ratio:16/9;background:#102623;border-radius:0 0 14px 14px;overflow:hidden;position:relative;min-height:420px}
.pptOfficeStage iframe{width:100%;height:100%;border:0;background:#fff;display:block}
.pptViewerPlaceholder{height:100%;min-height:420px;display:flex;align-items:center;justify-content:center;gap:28px;padding:28px;color:#fff;text-align:left}
.pptViewerPlaceholder img{width:min(46%,620px);max-height:360px;object-fit:contain;border-radius:10px;box-shadow:0 12px 35px #0006}
.pptViewerPlaceholder div{max-width:360px;display:flex;flex-direction:column;gap:10px}.pptViewerPlaceholder b{font-size:24px}.pptViewerPlaceholder span{opacity:.82;line-height:1.45}
.pptViewBtn{background:#087f6d!important;color:white!important;border:0!important;border-radius:9px!important;padding:11px 16px!important;font-weight:800!important;cursor:pointer}
.pptViewerNote{padding:9px 14px;font-size:12px;color:#58716d;background:#f6faf9;border-top:1px solid #dbe8e5}
@media(max-width:700px){.pptOfficeStage{min-height:260px}.pptViewerPlaceholder{min-height:260px;flex-direction:column;text-align:center;padding:15px}.pptViewerPlaceholder img{width:90%;max-height:190px}.pptViewerPlaceholder div{max-width:100%}.pptViewerPlaceholder b{font-size:18px}}
