:root{--r:#c8102e;--bg:#f5f6f8;--ink:#182033;--mut:#667085;--line:#e5e7eb}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial;background:var(--bg);color:var(--ink)}.app{display:grid;grid-template-columns:260px 1fr;min-height:100vh}aside{background:#fff;border-right:1px solid var(--line);padding:24px 18px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{margin-bottom:28px}.brand img{display:block;width:150px;max-width:100%;height:auto;margin:0 0 12px}.brandTitle{color:var(--ink)}.brandSub,.brandTitle{font-size:14px;line-height:1.25;font-weight:800}.brandSub{color:var(--mut);margin-top:4px}.nav button{width:100%;border:0;background:transparent;padding:12px;text-align:left;border-radius:9px;margin:3px 0;color:#344054}.nav button.active,.nav button:hover{background:#fff0f2;color:var(--r);font-weight:700}main{padding:0 27px 35px}.top{height:72px;display:flex;align-items:center;justify-content:space-between}.hero{background:linear-gradient(125deg,#151a29,#491925 72%,#c8102e);color:white;border-radius:20px;padding:25px}.hero h1{margin:6px 0}.hero p{color:#d4d9e3}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px;margin-top:16px}.layout{display:grid;grid-template-columns:1.5fr .7fr;grid-gap:16px;gap:16px}.tools{display:flex;gap:8px;flex-wrap:wrap}.filterBox{display:grid;grid-gap:6px;gap:6px;min-width:220px}.filterBox label{font-size:11px;font-weight:700;color:#475467;text-transform:uppercase;letter-spacing:.04em}.multi{min-height:130px;padding:8px}.hint{font-size:10px;color:var(--mut)}.checkAll{display:flex;align-items:center;gap:7px;font-size:11px;color:#344054;font-weight:600}.checkAll input{width:15px;height:15px;accent-color:var(--r)}input,select{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff}.scroll{max-height:620px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th{position:-webkit-sticky;position:sticky;top:0;background:#f8fafc;text-align:left}td,th{padding:9px}td{border-bottom:1px solid #edf0f3}.row:hover{background:#fff1f3}.rank{font-weight:800;color:var(--r)}.metricgrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.metric{background:#f8fafc;padding:11px;border-radius:9px}.metric b{display:block;font-size:17px}.sub{font-size:11px;color:var(--mut)}.pieWrap{display:grid;grid-template-columns:180px 1fr;grid-gap:16px;gap:16px;align-items:center}.pie{width:170px;height:170px;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff80}.pieLegend{display:grid;grid-gap:7px;gap:7px;font-size:11px}.pieLegend div{display:flex;align-items:center;justify-content:space-between;gap:8px}.dot{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:7px}.pieLabel{display:flex;align-items:center}.nseSrc{font-size:10px;color:var(--mut);margin-top:10px}.page{display:none}.page.active{display:block}.level,.note{padding:12px;border-radius:9px;margin-top:10px}.level{border:1px solid var(--line);border-left:4px solid var(--r)}.note{background:#fff8e8;border:1px solid #f0d69a;font-size:11px}.cityDef{margin-top:16px}.cityDef td:last-child{min-width:360px;line-height:1.45}.statusPill{display:inline-block;padding:3px 7px;border-radius:999px;background:#fff0f2;color:var(--r);font-size:10px;font-weight:700}.links a{display:block;color:var(--r);padding:11px 0;border-bottom:1px solid var(--line)}.demoGrid{display:grid;grid-template-columns:1.15fr 1fr;grid-gap:14px;gap:14px;margin-top:14px}.demoCard{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}.demoCard h3{margin:0 0 10px}.agePyramid{display:grid;grid-gap:6px;gap:6px}.ageRow{display:grid;grid-template-columns:1fr 58px 1fr;align-items:center;grid-gap:7px;gap:7px;font-size:11px}.ageSide{height:16px;background:#f2f4f7;border-radius:4px;overflow:hidden;display:flex}.ageSide.left{justify-content:flex-end}.ageBarM{height:100%;background:#667085}.ageBarW{height:100%;background:#c8102e}.ageLab{text-align:center;font-weight:700;color:#475467}.placeholder{padding:14px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:9px;color:#667085;font-size:11px;line-height:1.45}.sourceTag{display:inline-block;margin-top:8px;padding:4px 7px;border-radius:6px;background:#fff0f2;color:var(--r);font-size:10px;font-weight:700}.barList{display:grid;grid-gap:9px;gap:9px}.barRow{display:grid;grid-template-columns:minmax(135px,1.25fr) 2.4fr 72px;grid-gap:8px;gap:8px;align-items:center;font-size:11px}.barTrack{height:18px;background:#f2f4f7;border-radius:5px;overflow:hidden}.barFill{height:100%;background:linear-gradient(90deg,#8f1528,#c8102e);border-radius:5px}.barValue{text-align:right;font-weight:700}.vizHead{display:flex;justify-content:space-between;align-items:start;gap:10px;margin-bottom:10px}.vizHead h3{margin:0}.vizNote{font-size:10px;color:var(--mut);margin-top:8px;line-height:1.35}.eduDetail{margin-top:10px}.eduDetail summary{cursor:pointer;color:var(--r);font-size:11px;font-weight:700}.demoGrid .demoCard:first-child{grid-row:span 2}@media(max-width:900px){.app,.demoGrid{grid-template-columns:1fr}aside{display:none}.layout{grid-template-columns:1fr}main{padding:12px}}main.transicion{padding:0}.authwrap{min-height:100vh;display:grid;place-items:center;padding:24px}.authcard{width:100%;max-width:400px;background:#fff;border-radius:18px;padding:30px;box-shadow:0 18px 50px rgba(35,40,50,.14);border-top:5px solid var(--r)}.authcard h1{font-size:21px;margin:0 0 4px}.authcard p.sub{color:var(--mut);margin:0 0 22px;font-size:14px}.logo-auth{width:152px;height:auto;display:block;margin:0 auto 22px}.btn-brand{display:block;padding:10px 14px;border-radius:8px;background:var(--r);color:#fff;font-weight:700}.error{padding:12px;border-radius:9px;margin:12px 0;background:#fff1f1;color:#8b2020;border:1px solid #efb4b4}.app>aside{display:flex;flex-direction:column;overflow-y:auto}.nav a{display:block;width:100%;padding:12px;text-align:left;border-radius:9px;margin:3px 0;color:#344054;text-decoration:none}.nav a.active,.nav a:hover{background:#fff0f2;color:var(--r);font-weight:700}.newTag{display:inline-block;background:var(--r);color:#fff;font-size:9px;font-weight:800;border-radius:4px;padding:2px 5px;margin-left:6px;vertical-align:middle;letter-spacing:.04em}.periodBox{margin-top:18px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbfc;display:grid;grid-gap:8px;gap:8px}.periodBox label{font-size:11px;font-weight:700;color:#475467;text-transform:uppercase;letter-spacing:.04em}.periodBox select{width:100%}.periodBox .hint{font-size:11px}select:disabled{opacity:.55;cursor:default}.asideFoot{margin-top:auto;padding-top:18px;border-top:1px solid var(--line)}.userName{font-weight:700;font-size:13px}.asideAcciones{display:grid;grid-gap:6px;gap:6px;margin-top:10px}.asideAcciones form{margin:0}.btnLado{display:block;width:100%;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#344054;font:inherit;font-size:12px;text-align:center;text-decoration:none;cursor:pointer}.btnLado:hover{background:#fff0f2;color:var(--r);border-color:var(--r)}.ctx{display:inline-block;margin-top:10px;background:#ffffff1f;border:1px solid #ffffff40;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700;color:#fff}tr.row{cursor:pointer}tr.row.sel{background:#fff1f3}.dim{color:#98a2b3}.sub.aviso{color:#8b5a00}.demoGrid.solo{grid-template-columns:1fr}.demoGrid.solo .demoCard:first-child{grid-row:auto}.pyrLeyenda{display:flex;gap:14px;font-size:11px;color:#475467;font-weight:600;margin-bottom:8px}.barRow small.aviso{color:#8b5a00;font-weight:400}.level ul{margin:6px 0 0;padding-left:18px;line-height:1.5}.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-top:16px;border-bottom:1px solid var(--line)}.tabs a{padding:10px 14px;border-radius:9px 9px 0 0;color:#344054;text-decoration:none;font-size:13px;border-bottom:3px solid transparent;margin-bottom:-1px}.tabs a:hover{background:#fff0f2;color:var(--r)}.tabs a.active{color:var(--r);font-weight:700;border-bottom-color:var(--r)}.btn{padding:9px 14px;border:1px solid var(--line);border-radius:8px;background:#fff;color:#344054;font:inherit;font-size:12px;cursor:pointer}.btn.pri{background:var(--r);border-color:var(--r);color:#fff;font-weight:700}.btn:disabled{opacity:.55;cursor:default}.formFila{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.okMsg{padding:10px 12px;border-radius:9px;margin:8px 0 0;background:#effaf3;color:#0f5c2e;border:1px solid #b7e4c7;font-size:12px}.detalleJson{margin:6px 0 0;padding:10px;background:#f8fafc;border:1px solid var(--line);border-radius:8px;font-size:11px;max-width:460px;overflow:auto;white-space:pre-wrap}.paginacion{display:flex;justify-content:space-between;gap:12px;margin-top:12px;font-size:12px}.paginacion a{color:var(--r);font-weight:700}.enlaceTabla{color:var(--ink);text-decoration:none}.enlaceTabla:hover{color:var(--r)}a.btn{display:inline-block;text-decoration:none}.dlist{display:grid;grid-gap:8px;gap:8px}.dlist details{border:1px solid var(--line);border-radius:9px;padding:8px 12px;background:#fff}.dlist summary{cursor:pointer;font-weight:700;font-size:13px}.accionesProvincia{display:flex;gap:8px;margin:8px 0}.casillas{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:4px 14px;gap:4px 14px}.casilla{display:flex;align-items:center;gap:7px;font-size:12px}.casilla input{width:15px;height:15px;accent-color:var(--r)}.tablaIpsos input{width:100%;min-width:64px;padding:6px 8px;font-size:12px;text-align:right}.tablaIpsos input.nse{min-width:52px}.tablaIpsos td{padding:4px 6px}.tablaIpsos td:first-child{white-space:nowrap;font-weight:600}.tablaIpsos .suma{text-align:right;font-weight:700;white-space:nowrap}.tablaIpsos .suma.fuera{color:#b42318}.tablaIpsos .suma.dentro{color:#0f5c2e}.pegarIpsos{width:100%;min-height:96px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:12px/1.4 Consolas,monospace}.listaErrores{margin:6px 0 0;padding-left:18px}.error.multilinea{white-space:pre-line}.tabs a .contador{display:inline-block;margin-left:6px;min-width:18px;padding:1px 6px;border-radius:999px;background:var(--r);color:#fff;font-size:10px;font-weight:700;text-align:center}.statusPill.en_revision{background:#fff8e8;color:#8b5a00}.statusPill.en_curso{background:#eef4ff;color:#1d4ed8}.statusPill.sin_cambios,.statusPill.valida{background:#effaf3;color:#0f5c2e}.statusPill.vigente{background:#0f5c2e;color:#fff}.motivoCarga{max-width:420px;line-height:1.4}.motivoCarga summary{cursor:pointer;color:var(--r);font-size:11px}.fuentes{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}.fuentes .metric{min-width:240px}.formRevision textarea{width:100%;max-width:520px;min-height:70px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:12px}.num{text-align:right;white-space:nowrap}