:root{
  --ink:#17323a;
  --muted:#687b7f;
  --paper:#f6f6f0;
  --card:#fff;
  --forest:#2f6b4f;
  --sea:#158799;
  --sea-dark:#0c6876;
  --sand:#d7ad69;
  --clay:#b76b46;
  --line:#dfe7e3;
  --soft:#eaf2ee;
  --shadow:0 8px 28px rgba(23,50,58,.06);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.45;overflow-x:hidden}
img{max-width:100%}

/* Cabecera compacta */
.topbar{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;padding:5px clamp(14px,2.4vw,34px)}
.brand-row{height:46px;max-width:1680px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand-gdr{max-height:31px;max-width:360px;width:auto}
.brand-leader{max-height:18px;max-width:145px;width:auto}
nav{max-width:1680px;margin:0 auto;display:flex;justify-content:center;gap:22px;padding:2px 0 3px}
nav a{text-decoration:none;color:var(--ink);font-size:11px;font-weight:700}

main{max-width:1680px;margin:auto;padding:0 clamp(16px,3.1vw,44px) 48px}
.title-strip{margin:14px 0 22px;background:linear-gradient(90deg,#0e675d,#10838b);color:#fff;border-radius:18px;padding:18px 24px}
.eyebrow,.section-kicker{text-transform:uppercase;letter-spacing:.12em;font-size:10px;font-weight:850}
.eyebrow{color:#d9ece7}
.title-strip h1{font-size:clamp(23px,2.15vw,36px);line-height:1.1;letter-spacing:-.03em;margin:7px 0 11px;max-width:none}
.updated{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid rgba(255,255,255,.25);border-radius:999px;font-size:10px;background:rgba(255,255,255,.08)}
.dot{width:7px;height:7px;border-radius:50%;background:var(--sand)}

/* Cabeceras de sección */
.section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,520px);align-items:end;gap:26px;margin:38px 0 16px}
.section-head h2{font-size:clamp(27px,2.6vw,39px);line-height:1.05;letter-spacing:-.03em;margin:5px 0 0}
.section-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.section-kicker{color:var(--sea-dark)}

/* KPI fluidos */
.kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.kpi{min-width:0;background:#fff;border:1px solid var(--line);border-radius:16px;padding:15px;min-height:98px;box-shadow:var(--shadow)}
.kpi-primary{background:var(--ink);color:#fff}
.kpi span{display:block;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);line-height:1.25}
.kpi-primary span{color:rgba(255,255,255,.68)}
.kpi strong{display:block;font-size:27px;margin-top:12px;letter-spacing:-.04em}

/* Dos paneles solo cuando caben de verdad */
.dual-grid{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);gap:14px;align-items:start}
.dual-grid>*{min-width:0}
.panel,.line-card{min-width:0;background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow);overflow:hidden}
.panel-title,.line-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:15px}
.panel h3,.line-card h3,.municipality-title h3{font-size:20px;line-height:1.15;margin:4px 0 0;letter-spacing:-.02em}
.allocation-box{text-align:right;white-space:nowrap;flex:0 0 auto}
.allocation-box span{display:block;color:var(--muted);font-size:9px}
.allocation-box strong{display:block;font-size:17px;margin-top:3px}

/* Tablas: el scroll nunca desborda el panel */
.table-wrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;border:1px solid var(--line);border-radius:13px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.table-wrap::-webkit-scrollbar{height:7px}.table-wrap::-webkit-scrollbar-thumb{background:#bdcac6;border-radius:999px}.table-wrap::-webkit-scrollbar-track{background:#eef2f0}
.procedure-table,.finance-table{width:100%;border-collapse:collapse}
.procedure-table{min-width:590px}
.finance-table{min-width:835px}
.procedure-table th,.procedure-table td,.finance-table th,.finance-table td{padding:9px 10px;border-bottom:1px solid #e7ece9;font-size:10.5px;text-align:right;vertical-align:top}
.procedure-table th,.finance-table th{background:#f2f6f4;color:var(--muted);font-size:8.5px;text-transform:uppercase;letter-spacing:.035em;font-weight:850;line-height:1.2}
.procedure-table th:first-child,.procedure-table td:first-child,.finance-table th:first-child,.finance-table td:first-child{text-align:left}
.procedure-table tbody tr:last-child td,.finance-table tbody tr:last-child td{border-bottom:0}
.finance-table td strong{display:block;font-size:11.5px;white-space:nowrap}
.finance-table td small{display:block;color:var(--muted);font-size:8.5px;line-height:1.25;margin-top:3px;max-width:210px;margin-left:auto}
.finance-table td:first-child small,.finance-table td:first-child strong{margin-left:0}
.ratio-cell{min-width:96px}
.ratio-cell strong{font-size:10.5px!important}
.ratio-track{height:5px;background:#edf1ef;border-radius:999px;overflow:hidden;margin-top:5px}
.ratio-track span{display:block;height:100%;background:linear-gradient(90deg,var(--forest),var(--sea));border-radius:999px}
.ratio-na{color:#a7b1ae}

.callout{margin-top:11px;background:#f3f7f5;border-left:4px solid var(--sand);border-radius:10px;padding:9px 11px}
.callout strong,.callout span{display:block}.callout strong{font-size:10.5px}.callout span{font-size:9.5px;color:var(--muted);margin-top:3px}
.archive-detail{margin-top:8px;display:grid;grid-template-columns:1fr auto;gap:2px 12px;background:#f7f9f8;border-radius:10px;padding:9px 11px}
.archive-detail span{font-size:9.5px;color:var(--muted)}.archive-detail strong{font-size:12px}.archive-detail small{grid-column:1/-1;color:var(--muted);font-size:8.5px}
.warning-note{margin-top:9px;padding:9px 11px;border-radius:10px;background:#fff3e8;color:#8a542f;font-size:9.5px}

/* Líneas */
.line-stack{display:grid;gap:16px}
.line-pill{display:inline-block;padding:5px 9px;border-radius:999px;background:var(--soft);color:var(--forest);font-size:10px;font-weight:850}
.inner-grid{margin-top:12px}
.inner-grid h4{margin:0 0 9px;font-size:12.5px}
.mini-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:11px 0 14px}
.mini-kpis .kpi{min-height:75px;padding:10px;box-shadow:none;background:#f7f9f8}
.mini-kpis .kpi-primary{background:#f7f9f8;color:var(--ink)}
.mini-kpis .kpi span,.mini-kpis .kpi-primary span{color:var(--muted);font-size:7.5px}
.mini-kpis .kpi strong{font-size:19px;margin-top:7px}

/* Territorio */
.municipality-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.municipality-card{min-width:0;appearance:none;border:1px solid var(--line);background:#fff;border-radius:15px;padding:13px;text-align:left;color:var(--ink);font:inherit;cursor:pointer;box-shadow:var(--shadow);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.municipality-card:hover{transform:translateY(-2px);border-color:#9fc5c1;box-shadow:0 10px 28px rgba(23,50,58,.09)}
.municipality-card.selected{border:2px solid var(--sea);padding:12px}
.municipality-card-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;min-height:36px}
.municipality-card-head strong{font-size:12.5px;line-height:1.2}
.municipality-card-head span{font-size:7.5px;color:var(--sea-dark);font-weight:800;text-transform:uppercase;white-space:nowrap}
.municipality-card-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:9px 0}
.municipality-card-kpis div{min-width:0;background:#f5f8f7;border-radius:9px;padding:7px}
.municipality-card-kpis b{display:block;font-size:14px}.municipality-card-kpis small{display:block;font-size:7.5px;color:var(--muted);margin-top:2px;line-height:1.15}
.municipality-card-money{border-top:1px solid var(--line);padding-top:8px;font-size:12px;font-weight:800}.municipality-card-money small{display:block;font-size:7.5px;color:var(--muted);font-weight:500}
.municipality-detail{margin-top:0}
/* título territorial arriba y KPIs debajo a todo el ancho */
.municipality-title{display:block;margin-bottom:15px}
.municipality-title>.mini-kpis{width:100%;margin-top:12px}

/* Pie */
.site-footer{max-width:1680px;margin:auto;background:#fff}
.footer-contact{text-align:center;padding:12px 14px 8px;display:grid;gap:2px}
.footer-contact strong{font-size:10.5px}.footer-contact span{font-size:8.5px;color:#53656a}.footer-contact a{color:var(--sea-dark);text-decoration:none}.footer-contact a:hover{text-decoration:underline}
.footer-strip{display:block;width:100%;height:auto;border:0}

/* Escritorio estándar: apila los paneles antes de que las tablas se compriman */
@media(max-width:1549px){
  main{max-width:1440px}
  .dual-grid{grid-template-columns:1fr}
  .inner-grid{grid-template-columns:1fr}
  .finance-table{min-width:760px}
  .procedure-table{min-width:560px}
  .municipality-cards{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* Tablet horizontal / ventana estrecha */
@media(max-width:1199px){
  .section-head{grid-template-columns:1fr;gap:8px;margin-top:34px}
  .section-head p{max-width:760px}
  .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .mini-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .municipality-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .brand-gdr{max-height:29px;max-width:330px}.brand-leader{max-height:17px;max-width:135px}
}

@media(max-width:899px){
  main{padding-left:14px;padding-right:14px}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mini-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .municipality-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .panel,.line-card{padding:17px}
  .title-strip{padding:16px 18px}
  .title-strip h1{font-size:clamp(22px,4.3vw,31px)}
}

/* Móvil: las tablas se convierten en fichas por fase */
@media(max-width:699px){
  .topbar{position:relative;padding:5px 10px}
  .brand-row{height:auto;display:grid;justify-items:center;gap:3px;padding:3px 0}
  .brand-gdr{max-height:29px;max-width:92%}.brand-leader{max-height:16px;max-width:42%}
  nav{gap:14px;overflow-x:auto;justify-content:flex-start;padding:4px 2px}
  nav a{white-space:nowrap}
  main{padding:0 10px 38px}
  .title-strip{margin-top:10px;padding:14px 15px;border-radius:15px}
  .title-strip h1{font-size:22px;line-height:1.12}
  .section-head{margin-top:28px}
  .section-head h2{font-size:28px}
  .kpis,.mini-kpis,.municipality-cards{grid-template-columns:1fr}
  .kpi{min-height:84px;padding:13px}.kpi strong{font-size:25px;margin-top:9px}
  .panel,.line-card{padding:14px;border-radius:16px}
  .panel-title,.line-header{display:block}
  .allocation-box{text-align:left;margin-top:9px}
  .municipality-card-head{min-height:0}
  .municipality-card-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}

  .table-wrap{overflow:visible;border:0;border-radius:0}
  .procedure-table,.finance-table{min-width:0;width:100%;display:block}
  .procedure-table thead,.finance-table thead{display:none}
  .procedure-table tbody,.finance-table tbody{display:grid;gap:9px}
  .procedure-table tr,.finance-table tr{display:block;border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
  .procedure-table td,.finance-table td{display:grid;grid-template-columns:minmax(118px,42%) minmax(0,58%);gap:10px;align-items:start;width:100%;padding:8px 10px;border-bottom:1px solid #edf1ef;text-align:right!important;font-size:10.5px}
  .procedure-table td:last-child,.finance-table td:last-child{border-bottom:0}
  .procedure-table td::before,.finance-table td::before{content:attr(data-label);text-align:left;font-size:8px;line-height:1.2;text-transform:uppercase;letter-spacing:.04em;font-weight:850;color:var(--muted)}
  .finance-table td strong,.finance-table td small{margin-left:auto;max-width:100%;white-space:normal}
  .finance-table td:first-child strong{margin-left:auto}
  .ratio-cell{min-width:0;width:100%}.ratio-track{max-width:130px;margin-left:auto}
  .footer-contact{padding-left:10px;padding-right:10px}
}

@media(max-width:420px){
  .municipality-card-kpis{grid-template-columns:1fr 1fr 1fr}
  .procedure-table td,.finance-table td{grid-template-columns:1fr;gap:4px;text-align:left!important}
  .finance-table td strong,.finance-table td small,.ratio-track{margin-left:0}
}

/* P17A · visualizaciones rigurosas: mayor legibilidad, tooltips, hitos discretos y acumulados escalonados */

/* KPI: los desistimientos dejan de quedar escondidos en una nota */
.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.mini-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi-ordinary{border-top:4px solid #006D77}
.kpi-withdrawal{border-top:4px solid #7C3AED;background:#faf8ff}
.kpi-context{background:#f7f9f8}
.kpi-context small{display:block;margin-top:7px;font-size:8.5px;line-height:1.35;color:var(--muted)}
.mini-kpis .kpi-context small{font-size:7.5px}
.mini-kpis .kpi-withdrawal{background:#faf8ff}
.mini-kpis .kpi-ordinary{background:#f4fbfb}

/* Selector de vista */
.view-switcher{display:inline-flex;gap:4px;padding:4px;margin:0 0 14px;background:#eef3f1;border:1px solid var(--line);border-radius:999px}
.view-toggle{appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:850;padding:8px 14px;border-radius:999px;cursor:pointer}
.view-toggle:hover{color:var(--ink);background:rgba(255,255,255,.55)}
.view-toggle.active{background:#fff;color:var(--sea-dark);box-shadow:0 1px 6px rgba(23,50,58,.12)}
.view-panel{display:none;min-width:0}
.view-panel.active{display:block}

/* Situación transversal */
.procedure-status-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:12px}
.procedure-status-summary>div{border:1px solid var(--line);border-radius:12px;background:#f8faf9;padding:11px 12px;min-width:0}
.procedure-status-summary span{display:block;font-size:10px;line-height:1.3;text-transform:uppercase;letter-spacing:.035em;color:var(--muted);font-weight:800}
.procedure-status-summary strong{display:block;margin-top:5px;font-size:22px;line-height:1;color:var(--ink)}
.procedure-status-summary .status-ordinary{border-left:5px solid #006D77;background:#f4fbfb}
.procedure-status-summary .status-withdrawal{border-left:5px solid #7C3AED;background:#faf8ff}

/* Tipografía de gráficos: nunca por debajo de ~11/12 px en desktop */
.view-panel h5,.evolution-block h5,.finance-chart h5,.donut-card h5,.stack-chart h5{
  margin:8px 0 12px;font-size:14px;line-height:1.25;text-transform:none;letter-spacing:0;color:var(--ink);font-weight:850
}
.chart-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(255px,.65fr);gap:16px;align-items:stretch}
.stack-chart,.donut-card,.finance-chart,.evolution-block{border:1px solid var(--line);background:#fbfcfb;border-radius:14px;padding:16px;min-width:0}
.stack-row+.stack-row{margin-top:19px}
.stack-label{display:flex;justify-content:space-between;gap:12px;font-size:13px;line-height:1.3;margin-bottom:8px}
.stack-label strong{font-weight:850}.stack-label span{font-weight:900;font-size:14px}
.stack-track{height:24px;border-radius:999px;background:#e8eeeb;overflow:hidden;display:flex;box-shadow:inset 0 0 0 1px rgba(23,50,58,.05)}
.stack-seg{display:block;height:100%;min-width:0;outline:none;cursor:help;transition:filter .12s ease,transform .12s ease}
.stack-seg:hover,.stack-seg:focus{filter:brightness(1.12);transform:scaleY(1.08)}
.stack-values{display:flex;flex-wrap:wrap;gap:7px 15px;margin-top:8px;font-size:11.5px;line-height:1.35;color:var(--muted)}
.stack-values b{font-size:12.5px;color:var(--ink)}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}

/* Donut SVG interactivo */
.donut-card{display:flex;flex-direction:column;align-items:center}
.donut-card h5{align-self:stretch}
.donut-wrap{width:172px;height:172px;margin:4px auto 12px}
.donut-svg{display:block;width:100%;height:100%;overflow:visible}
.donut-segment{cursor:help;outline:none;transition:stroke-width .12s ease,filter .12s ease}
.donut-segment:hover,.donut-segment:focus{stroke-width:27;filter:brightness(1.08)}
.donut-total{font-size:18px;font-weight:900;fill:var(--ink)}
.donut-caption{font-size:7.5px;font-weight:800;fill:var(--muted);text-transform:uppercase}
.donut-empty{width:150px;height:150px;margin:6px auto 14px;border-radius:50%;background:#edf2ef;display:grid;place-content:center;text-align:center}
.donut-empty strong{font-size:26px}.donut-empty span{font-size:10px;color:var(--muted)}
.donut-legend{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;width:100%;font-size:11.5px;color:var(--muted)}
.donut-legend span{padding:4px;border-radius:7px;outline:none;cursor:help}
.donut-legend span:hover,.donut-legend span:focus{background:#eef3f1;color:var(--ink)}
.donut-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}.donut-legend b{color:var(--ink)}

/* Solicitudes por mes */
.monthly-bars{height:235px;display:flex;align-items:flex-end;gap:8px;padding:14px 6px 0;overflow-x:auto;border-bottom:1px solid var(--line)}
.month-bar{flex:1 0 52px;max-width:82px;height:100%;display:grid;grid-template-rows:25px 1fr 34px;align-items:end;text-align:center;outline:none;cursor:help}
.month-bar:hover .bar-column span,.month-bar:focus .bar-column span{filter:brightness(1.08);box-shadow:0 0 0 2px rgba(0,109,119,.15)}
.bar-value{font-size:12px;font-weight:900;color:var(--ink)}
.bar-column{height:100%;display:flex;align-items:flex-end;justify-content:center}
.bar-column span{display:block;width:68%;min-height:3px;background:#0057B8;border-radius:6px 6px 0 0;transition:.12s ease}
.month-bar small{font-size:10.5px;line-height:1.15;color:var(--muted);align-self:center}

/* Actos discretos por fecha: barras apiladas, nunca líneas inclinadas */
.event-bars-scroll{overflow-x:auto;padding-bottom:3px}
.event-bars{height:245px;display:flex;align-items:flex-end;gap:10px;min-width:max-content;padding:12px 6px 0;border-bottom:1px solid var(--line)}
.event-day{width:66px;height:100%;display:grid;grid-template-rows:24px 1fr 38px;align-items:end;text-align:center}
.event-total{font-size:12px;font-weight:900;color:var(--ink)}
.event-stack-frame{height:100%;display:flex;align-items:flex-end;justify-content:center}
.event-stack{width:34px;min-height:2px;display:flex;flex-direction:column-reverse;border-radius:6px 6px 0 0;overflow:hidden}
.event-stack span{display:block;width:100%;outline:none;cursor:help;min-height:2px;transition:filter .12s ease}
.event-stack span:hover,.event-stack span:focus{filter:brightness(1.14)}
.event-day small{font-size:10px;color:var(--muted);align-self:center}
.event-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:10px;font-size:11px;color:var(--muted)}
.event-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px}

/* Acumulados escalonados: tramos horizontales + saltos verticales */
.svg-scroll{width:100%;overflow-x:auto;padding-bottom:2px}
.step-svg{display:block;width:100%;min-width:900px;height:auto;background:#fff;border:1px solid var(--line);border-radius:12px}
.grid-line{stroke:#e4ebe7;stroke-width:1}
.axis-base,.axis-tick{stroke:#9aaba4;stroke-width:1}
.axis-text{font-size:11.5px;font-weight:650;fill:#52635d}
.step-point{cursor:help;outline:none;transition:r .12s ease,filter .12s ease}
.step-point:hover,.step-point:focus{r:7;filter:brightness(1.05)}
.line-legend{display:flex;flex-wrap:wrap;gap:8px 15px;margin-top:10px;font-size:11.5px;color:var(--muted)}
.line-legend i{display:inline-block;width:18px;height:4px;margin-right:6px;vertical-align:middle;border-radius:3px}
.step-note{border-left:4px solid #006D77;background:#f4fbfb;padding:9px 11px;border-radius:8px;color:#40524b!important}

/* Cronología: la línea solo es eje temporal, no una magnitud */
.timeline{max-height:310px;overflow:auto;border-left:3px solid #cbdad5;margin-left:8px;padding-left:19px}
.timeline-item{position:relative;display:grid;grid-template-columns:145px 1fr;gap:12px;padding:0 0 14px}
.timeline-item:before{content:"";position:absolute;left:-26px;top:5px;width:11px;height:11px;border-radius:50%;background:#006D77;box-shadow:0 0 0 4px #e7f1ef}
.timeline-item time{font-size:11.5px;font-weight:850;color:var(--ink);line-height:1.35}
.timeline-item div{display:flex;flex-wrap:wrap;gap:6px}
.timeline-item span{font-size:11px;background:#eef3f1;border-radius:999px;padding:5px 8px;color:#40524b;outline:none;cursor:help}
.timeline-item span i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;background:var(--event-color,#006D77)}
.timeline-item span:hover,.timeline-item span:focus{background:#e5eeea;color:var(--ink)}

.empty-chart{padding:32px 16px;text-align:center;color:var(--muted);font-size:12px;border:1px dashed #cdd8d4;border-radius:10px}

/* Financiero */
.finance-bars{height:315px;display:grid;grid-template-columns:repeat(6,minmax(125px,1fr));gap:10px;overflow-x:auto;padding:6px 0 10px}
.finance-stage{min-width:125px;display:grid;grid-template-rows:48px 165px auto auto;gap:5px;text-align:center}
.finance-stage>strong{font-size:11.5px;line-height:1.2}
.bar-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-items:end;height:165px;padding:0 8px;border-bottom:1px solid var(--line)}
.bar-pair>div{height:100%;display:flex;align-items:flex-end}
.bar-pair span{display:block;width:100%;min-height:3px;border-radius:6px 6px 0 0;outline:none;cursor:help;transition:filter .12s ease}
.bar-pair span:hover,.bar-pair span:focus{filter:brightness(1.12)}
.bar-base{background:#1F2937}.bar-aid{background:#007C91}
.finance-stage small{font-size:10.5px;color:var(--muted);line-height:1.25}
.finance-stage small b{color:var(--ink);font-weight:800}
.bar-legend{display:flex;gap:18px;justify-content:center;font-size:11.5px;color:var(--muted);margin:5px 0 22px}
.bar-legend i{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:5px;vertical-align:-1px}.bar-legend .base{background:#1F2937}.bar-legend .aid{background:#007C91}
.funnel{display:grid;gap:8px}
.funnel-row{display:grid;grid-template-columns:170px 1fr;gap:10px;align-items:center;outline:none;cursor:help;border-radius:8px;padding:2px}
.funnel-row:hover,.funnel-row:focus{background:#f1f5f3}
.funnel-row>span{font-size:11.5px;font-weight:800;text-align:right}
.funnel-row>div{position:relative;height:34px;background:#e8eeeb;border-radius:6px;overflow:hidden}
.funnel-row i{position:absolute;inset:0 auto 0 0;background:#007C91;border-radius:6px}
.funnel-row b{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;color:var(--ink);text-shadow:0 1px 2px #fff,0 0 3px #fff}
.chart-note{font-size:11px;line-height:1.45;color:var(--muted);margin:10px 0 0}
.strong-note{margin-bottom:18px}

/* Desistimientos: información visible, no relegada a una nota marginal */
.withdrawal-callout{display:grid;grid-template-columns:minmax(250px,.75fr) minmax(300px,1.25fr);gap:18px;align-items:center;background:#faf8ff;border-left-color:#7C3AED;padding:12px 14px}
.withdrawal-callout>div>span{font-size:9.5px;font-weight:850;text-transform:uppercase;letter-spacing:.04em;color:#6D28D9}
.withdrawal-callout strong{font-size:13px;line-height:1.35;margin-top:2px}
.withdrawal-callout small{display:block;margin-top:4px;color:var(--muted);font-size:10.5px}
.withdrawal-callout p{margin:0;font-size:11px;line-height:1.45;color:#4b5563}
.archive-detail{font-size:11px}
.archive-detail span{font-size:10.5px}.archive-detail strong{font-size:15px}.archive-detail small{font-size:10px}

/* Tarjetas municipales */
.municipality-withdrawals{margin:8px 0 0;padding:5px 7px;border-radius:7px;background:#f3edff;color:#6D28D9;font-size:9px;font-weight:800;text-align:left}

/* Tooltip accesible y suficientemente grande */
.chart-tooltip{position:fixed;z-index:99999;pointer-events:none;opacity:0;transform:translateY(3px);max-width:310px;white-space:pre-line;background:#17211d;color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.45;font-weight:650;box-shadow:0 12px 30px rgba(0,0,0,.22);transition:opacity .08s ease,transform .08s ease}
.chart-tooltip.visible{opacity:1;transform:translateY(0)}

@media(max-width:1199px){
  .kpis,.mini-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .chart-grid{grid-template-columns:1fr}
  .donut-card{align-items:flex-start}
  .donut-wrap{margin-left:auto;margin-right:auto}
  .donut-legend{max-width:520px;margin:auto}
}

@media(max-width:899px){
  .kpis,.mini-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .procedure-status-summary{grid-template-columns:1fr}
  .withdrawal-callout{grid-template-columns:1fr}
  .funnel-row{grid-template-columns:135px 1fr}
  .step-svg{min-width:940px}
}

@media(max-width:699px){
  .kpis,.mini-kpis{grid-template-columns:1fr}
  .view-switcher{display:grid;grid-template-columns:repeat(3,1fr);width:100%;border-radius:12px}
  .view-toggle{padding:10px 5px;border-radius:9px;font-size:12px}
  .stack-values,.donut-legend{display:grid;grid-template-columns:1fr 1fr}
  .finance-bars{grid-template-columns:repeat(6,135px)}
  .funnel-row{grid-template-columns:1fr}.funnel-row>span{text-align:left}
  .timeline-item{grid-template-columns:1fr;gap:4px}
  .step-svg{min-width:900px}
  .chart-tooltip{max-width:min(290px,calc(100vw - 28px));font-size:12px}
}

/* P17B · simplificación para ciudadanía */
.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi{min-height:116px;padding:17px}
.kpi span{font-size:10px;line-height:1.3}
.kpi strong{font-size:31px;margin-top:10px}
.kpi small{display:block;margin-top:8px;font-size:9.5px;line-height:1.35;color:var(--muted)}
.kpi-primary small{color:rgba(255,255,255,.7)}
.kpi-ordinary{border-left:5px solid #007C91}
.kpi-withdrawal{border-left:5px solid #7C3AED;background:#fbf9ff}
.kpi-closed{border-left:5px solid #475569;background:#f7f8f9}

.view-switcher{margin-bottom:16px}
.view-panel h5,.citizen-chart-card h5{font-size:15px;line-height:1.25;margin:0 0 6px;color:var(--ink)}
.chart-intro,.public-evolution-intro{font-size:11.5px;line-height:1.5;color:var(--muted);margin:0 0 18px;max-width:920px}

.procedure-withdrawal-row{background:#fbf9ff}
.procedure-withdrawal-row td:first-child{border-left:4px solid #7C3AED}
.procedure-withdrawal-row td strong{font-size:10.5px}
.procedure-withdrawal-row td small{display:block;margin-top:3px;color:#6D28D9;font-size:8.5px}

.citizen-chart-card{border:1px solid var(--line);background:#fbfcfb;border-radius:14px;padding:18px}
.citizen-bars{display:grid;gap:14px}
.citizen-bar-row{outline:none;cursor:help;border-radius:9px;padding:4px 3px;transition:background .12s ease}
.citizen-bar-row:hover,.citizen-bar-row:focus{background:#f0f5f3}
.citizen-bar-label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end;margin-bottom:6px}
.citizen-bar-label span{font-size:12.5px;font-weight:760;line-height:1.3;color:var(--ink)}
.citizen-bar-label strong{font-size:16px;line-height:1;color:var(--ink)}
.citizen-bar-track{height:17px;background:#e8eeeb;border-radius:999px;overflow:hidden}
.citizen-bar-track i{display:block;height:100%;min-width:0;border-radius:999px;transition:filter .12s ease}
.citizen-bar-row:hover .citizen-bar-track i,.citizen-bar-row:focus .citizen-bar-track i{filter:brightness(1.08)}
.citizen-withdrawal-block{margin-top:22px;padding-top:17px;border-top:1px solid var(--line)}
.citizen-withdrawal-block h6{margin:0 0 10px;font-size:10px;text-transform:uppercase;letter-spacing:.055em;color:#6D28D9}
.citizen-bar-special{background:#fbf9ff;padding:9px}

.data-pending{display:block;color:var(--muted);text-align:right}
.data-pending b{display:block;font-size:13px;color:#9aa7a3}
.data-pending small{display:block;font-size:8.5px;line-height:1.25;margin-top:3px}
.finance-pending-row{background:#fafbfa;color:#788782}
.finance-pending-row td{opacity:.86}

.finance-horizontal-bars{display:grid;gap:15px}
.finance-horizontal-row{outline:none;cursor:help;border-radius:9px;padding:4px 3px;transition:background .12s ease}
.finance-horizontal-row:hover,.finance-horizontal-row:focus{background:#f0f5f3}
.finance-horizontal-label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end;margin-bottom:6px}
.finance-horizontal-label span{font-size:12.5px;font-weight:760;line-height:1.3}
.finance-horizontal-label strong{font-size:13px;line-height:1.15;text-align:right}
.finance-horizontal-track{height:17px;background:#e8eeeb;border-radius:999px;overflow:hidden}
.finance-horizontal-track i{display:block;height:100%;background:#007C91;border-radius:999px}
.finance-horizontal-row.pending{cursor:default;border:1px dashed #d8e0dd;background:#fafbfa;padding:10px 12px}
.finance-horizontal-row.pending .finance-horizontal-label{margin:0}
.finance-horizontal-row.pending strong{font-size:10.5px;color:var(--muted);font-weight:650}

.public-evolution-section{margin-top:28px;padding:22px}
.public-evolution-head{margin:0 0 18px}
.public-evolution-head h2{font-size:clamp(24px,2vw,34px)}
.evolution-public-switcher{display:inline-flex;gap:4px;padding:4px;margin-bottom:18px;background:#eef3f1;border:1px solid var(--line);border-radius:999px}
.evolution-public-toggle{appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:850;padding:9px 15px;border-radius:999px;cursor:pointer}
.evolution-public-toggle.active{background:#fff;color:var(--sea-dark);box-shadow:0 1px 6px rgba(23,50,58,.12)}
.evolution-public-panel{display:none}
.evolution-public-panel.active{display:block}
.evolution-public-panel h3{font-size:18px;line-height:1.25;margin:0 0 5px}

.requests-public-chart{height:300px;display:flex;align-items:flex-end;gap:12px;padding:15px 8px 0;overflow-x:auto;border-bottom:1px solid var(--line)}
.request-month{flex:1 0 64px;max-width:100px;height:100%;display:grid;grid-template-rows:30px 1fr 38px;align-items:end;text-align:center;outline:none;cursor:help}
.request-count{font-size:14px;font-weight:900;color:var(--ink)}
.request-column{height:100%;display:flex;align-items:flex-end;justify-content:center}
.request-column i{display:block;width:70%;min-height:0;background:#0057B8;border-radius:7px 7px 0 0;transition:filter .12s ease}
.request-month:hover .request-column i,.request-month:focus .request-column i{filter:brightness(1.12)}
.request-month small{font-size:11px;color:var(--muted);align-self:center;white-space:nowrap}

.citizen-timeline{border-left:3px solid #cbdad5;margin:8px 0 0 9px;padding-left:25px;display:grid;gap:18px}
.citizen-timeline-item{position:relative;display:grid;grid-template-columns:170px minmax(0,1fr);gap:16px;align-items:start}
.citizen-timeline-item:before{content:"";position:absolute;left:-33px;top:6px;width:12px;height:12px;border-radius:50%;background:#006D77;box-shadow:0 0 0 5px #e7f1ef}
.citizen-timeline-item time{font-size:12px;font-weight:850;line-height:1.35;color:var(--ink)}
.citizen-timeline-item>div{display:flex;flex-wrap:wrap;gap:9px}
.citizen-timeline-item span{display:grid;grid-template-columns:auto auto auto;align-items:center;gap:6px;background:#f3f7f5;border:1px solid var(--line);border-radius:10px;padding:8px 10px;outline:none;cursor:help}
.citizen-timeline-item span:hover,.citizen-timeline-item span:focus{background:#eaf2ee}
.citizen-timeline-item span i{width:9px;height:9px;border-radius:50%;background:var(--hito-color,#006D77)}
.citizen-timeline-item span b{font-size:11px}
.citizen-timeline-item span strong{font-size:14px}
.citizen-timeline-item span small{grid-column:2/4;font-size:9px;color:var(--muted)}
.timeline-explanation{margin:16px 0 0;padding:9px 11px;border-left:4px solid #006D77;background:#f4fbfb;border-radius:8px;font-size:10.5px;line-height:1.45;color:#40524b}

.chart-tooltip{font-size:13px;line-height:1.5;padding:11px 13px;max-width:340px}

@media(max-width:1199px){
  .kpis,.mini-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:899px){
  .citizen-timeline-item{grid-template-columns:1fr;gap:6px}
}
@media(max-width:699px){
  .kpis,.mini-kpis{grid-template-columns:1fr}
  .view-switcher{display:grid;grid-template-columns:repeat(2,1fr);width:100%;border-radius:12px}
  .evolution-public-switcher{display:grid;grid-template-columns:1fr; width:100%;border-radius:12px}
  .evolution-public-toggle{border-radius:9px}
  .citizen-bar-label,.finance-horizontal-label{grid-template-columns:1fr;gap:4px}
  .finance-horizontal-label strong{text-align:left}
  .requests-public-chart{height:260px}
  .citizen-timeline-item span{grid-template-columns:auto 1fr auto}
}

/* P17C · etiquetas de avance y cuantías: lectura rápida sin recargar */
.kpi-active{border-top:4px solid #334155;background:#f8fafc}
.kpi small{display:block;margin-top:7px;font-size:8.5px;line-height:1.35;color:var(--muted)}
.kpi-primary small{color:rgba(255,255,255,.72)}

.progress-labels{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;margin-top:2px;padding-top:4px}
.progress-label{min-width:180px;flex:1 1 210px;max-width:310px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-left:5px solid #64748b;border-radius:11px;background:#fff;padding:9px 11px;box-shadow:0 2px 8px rgba(23,50,58,.03)}
.progress-label span{font-size:9px;line-height:1.25;font-weight:800;color:#52635d;text-transform:none;letter-spacing:0}
.progress-label strong{flex:0 0 auto;font-size:18px;line-height:1;color:var(--ink);margin:0}
.progress-pp{border-left-color:#008F8C;background:#f5fbfa}
.progress-pd{border-left-color:#6D28D9;background:#faf8ff}
.progress-resolution{border-left-color:#198754;background:#f6fbf8}
.progress-cert{border-left-color:#C56A00;background:#fffaf4}
.progress-payment{border-left-color:#B42318;background:#fff8f7}
.progress-closed{border-left-color:#475569;background:#f8fafc}

.finance-labels{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.finance-label{min-width:170px;flex:1 1 185px;max-width:270px;border:1px solid #dbe7e3;border-left:5px solid var(--sea);border-radius:11px;background:#f7fbfa;padding:9px 11px}
.finance-label span{display:block;font-size:8.7px;line-height:1.25;font-weight:800;color:var(--muted)}
.finance-label strong{display:block;margin-top:4px;font-size:15px;line-height:1.15;color:var(--ink);white-space:nowrap}

.procedure-withdrawal-row small{display:block;margin-top:3px;color:#6D28D9;font-size:8.5px;line-height:1.3}

@media(max-width:899px){
  .progress-label{max-width:none;flex-basis:calc(50% - 4px)}
  .finance-label{max-width:none;flex-basis:calc(50% - 4px)}
}
@media(max-width:699px){
  .progress-label,.finance-label{flex-basis:100%;max-width:none}
  .progress-label span{font-size:10px}
  .finance-label span{font-size:9.5px}.finance-label strong{font-size:16px}
}
@media(max-width:699px){
  .view-switcher{grid-template-columns:repeat(2,1fr)}
}

/* P17D · Legibilidad y jerarquía visual
   Revisión puramente de presentación: no cambia datos, cálculos ni reglas de publicación. */

/* Escala general: prioriza lectura ciudadana frente a densidad de cuadro de mando */
main{max-width:1760px;padding-left:clamp(18px,2.1vw,34px);padding-right:clamp(18px,2.1vw,34px)}
nav a{font-size:13px}
.section-head{margin-top:42px;margin-bottom:20px}
.section-head p{font-size:15px;line-height:1.55;max-width:620px}
.section-kicker,.eyebrow{font-size:11.5px}
.panel,.line-card{padding:26px;border-radius:22px}
.panel-title,.line-header{margin-bottom:20px}
.panel h3,.line-card h3,.municipality-title h3{font-size:25px;line-height:1.18}
.allocation-box span{font-size:12px}
.allocation-box strong{font-size:22px}

/* KPI principales */
.kpis{gap:14px;margin-bottom:20px}
.kpi{min-height:138px;padding:20px 21px;border-radius:18px}
.kpi span{font-size:12.5px;line-height:1.35;letter-spacing:.045em}
.kpi strong{font-size:38px;line-height:1;margin-top:13px}
.kpi small,.kpi-context small{font-size:12.5px;line-height:1.45;margin-top:13px}

/* Los KPI secundarios dejan de ser "etiquetas" apretadas y pasan a ser tarjetas compactas */
.progress-kpi-section{grid-column:1/-1;margin-top:3px;padding-top:4px}
.compact-section-title{margin:0 0 11px!important;font-size:14px!important;line-height:1.25!important;font-weight:850!important;letter-spacing:.025em!important;text-transform:uppercase;color:var(--sea-dark)!important}
.progress-labels{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,360px));gap:12px;margin:0;padding:0}
.progress-label{min-width:0;max-width:none;min-height:96px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:16px 17px;border-radius:14px;box-shadow:0 4px 14px rgba(23,50,58,.045)}
.progress-label-copy{min-width:0}
.progress-label span{display:block;font-size:13px;line-height:1.3;font-weight:850;color:var(--ink)}
.progress-label small{display:block;margin-top:6px;font-size:12px;line-height:1.3;font-weight:650;color:var(--muted)}
.progress-label strong{font-size:30px;line-height:1;align-self:center}

/* Cuantías principales: misma jerarquía visual que el avance administrativo */
.finance-kpi-section{margin:0 0 18px}
.finance-labels{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,360px));gap:12px;margin:0}
.finance-label{min-width:0;max-width:none;min-height:96px;padding:16px 17px;border-radius:14px;display:flex;flex-direction:column;justify-content:center}
.finance-label span{font-size:12.5px;line-height:1.3;font-weight:850;color:#52635d}
.finance-label strong{margin-top:9px;font-size:22px;line-height:1.15;white-space:normal;letter-spacing:-.015em}

/* Controles de vista */
.view-switcher{margin-bottom:20px;padding:5px}
.view-toggle{font-size:14px;padding:10px 17px}

/* Tablas: tamaño mínimo de lectura confortable */
.procedure-table{min-width:700px}
.finance-table{min-width:1040px}
.procedure-table th,.procedure-table td,.finance-table th,.finance-table td{padding:13px 13px;font-size:13.5px;line-height:1.35}
.procedure-table th,.finance-table th{font-size:11px;line-height:1.25;letter-spacing:.025em}
.finance-table td strong{font-size:14.5px}
.finance-table td small{font-size:11.5px;line-height:1.35;margin-top:5px}
.ratio-cell{min-width:125px}
.ratio-cell strong{font-size:13.5px!important}
.ratio-track{height:7px;margin-top:8px}
.procedure-withdrawal-row td strong{font-size:13.5px}
.procedure-withdrawal-row td small{font-size:11.5px;line-height:1.35;margin-top:5px}
.data-pending b{font-size:15px}.data-pending small{font-size:11.5px;line-height:1.35}

/* Gráficos públicos */
.view-panel h5,.citizen-chart-card h5{font-size:18px;line-height:1.3}
.chart-intro,.public-evolution-intro{font-size:14px;line-height:1.55}
.citizen-bar-label span,.finance-horizontal-label span{font-size:15px}
.citizen-bar-label strong{font-size:20px}
.finance-horizontal-label strong{font-size:16px}
.citizen-bar-track,.finance-horizontal-track{height:22px}
.chart-tooltip{font-size:14px;line-height:1.5;padding:12px 14px;max-width:380px}

/* Líneas y territorio: evita volver a miniaturizar tipografías en niveles inferiores */
.line-pill{font-size:12px;padding:6px 10px}
.inner-grid h4{font-size:15px}
.mini-kpis{gap:10px}
.mini-kpis .kpi{min-height:108px;padding:15px}
.mini-kpis .kpi span,.mini-kpis .kpi-primary span{font-size:11px}
.mini-kpis .kpi strong{font-size:27px;margin-top:9px}
.mini-kpis .kpi small{font-size:11.5px}
.municipality-card{padding:16px;border-radius:17px}
.municipality-card.selected{padding:15px}
.municipality-card-head strong{font-size:15px}.municipality-card-head span{font-size:10px}
.municipality-card-kpis div{padding:10px}.municipality-card-kpis b{font-size:18px}.municipality-card-kpis small{font-size:10px;line-height:1.25}
.municipality-card-money{font-size:15px;padding-top:10px}.municipality-card-money small{font-size:10px}

/* En pantallas de escritorio medias, prioriza ancho legible de paneles antes que dos columnas forzadas */
@media(max-width:1540px){
  .dual-grid{grid-template-columns:1fr}
  .finance-table{min-width:980px}
}

@media(max-width:1199px){
  .kpi{min-height:128px}
  .progress-labels,.finance-labels{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:899px){
  .panel,.line-card{padding:20px}
  .procedure-table th,.procedure-table td,.finance-table th,.finance-table td{font-size:13px}
  .progress-labels,.finance-labels{grid-template-columns:1fr}
  .progress-label,.finance-label{min-height:88px}
}

@media(max-width:699px){
  .section-head p{font-size:14px}
  .kpi{min-height:118px;padding:17px}
  .kpi span{font-size:12px}.kpi strong{font-size:34px}.kpi small{font-size:12px}
  .panel,.line-card{padding:16px}
  .panel h3,.line-card h3,.municipality-title h3{font-size:22px}
  .view-toggle{font-size:14px}
  .procedure-table td,.finance-table td{padding:11px 12px;font-size:14px}
  .procedure-table td::before,.finance-table td::before{font-size:10.5px}
  .finance-table td strong{font-size:15px}.finance-table td small{font-size:12px}
  .progress-label{grid-template-columns:1fr auto;padding:14px}
  .progress-label span{font-size:13px}.progress-label small{font-size:12px}.progress-label strong{font-size:28px}
  .finance-label strong{font-size:21px}
}

/* P17E · Restauración de asignaciones y comparación presupuestaria
   No modifica datos ni cálculos: hace visible la referencia presupuestaria total y por línea. */
#allocationFramework{margin:6px 0 22px}
.allocation-framework{border:1px solid var(--line);background:#fff;border-radius:18px;padding:18px 20px;box-shadow:0 4px 18px rgba(23,50,58,.035)}
.allocation-framework-head{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;margin-bottom:15px}
.allocation-framework-head h3{margin:3px 0 0;font-size:21px;line-height:1.2;color:var(--ink)}
.allocation-total{text-align:right;flex:0 0 auto}
.allocation-total span{display:block;font-size:12px;font-weight:750;color:var(--muted)}
.allocation-total strong{display:block;margin-top:4px;font-size:25px;line-height:1;color:var(--ink)}
.allocation-distribution{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.allocation-explainer{margin:0 0 14px;padding:10px 12px;border-radius:10px;background:#f7faf9;color:#52635d;font-size:13px;line-height:1.45}
.allocation-line-card{border:1px solid #dbe7e3;border-left:5px solid var(--sea);border-radius:13px;background:#f8fbfa;padding:15px 16px}
.allocation-line-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px}
.allocation-line-name{font-size:14px;font-weight:850;color:var(--ink)}
.allocation-line-share{flex:0 0 auto;font-size:13px;font-weight:850;color:var(--forest);white-space:nowrap}
.allocation-line-card>strong{display:block;margin-top:9px;font-size:21px;line-height:1.1;color:var(--ink)}
.allocation-line-card>small{display:block;margin-top:6px;font-size:12.5px;line-height:1.35;color:var(--muted)}

.allocation-box small{display:block;margin-top:6px;max-width:230px;font-size:11.5px;line-height:1.35;color:var(--muted);text-align:right}
.finance-allocation-reference{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px;padding:12px 14px;border:1px solid #dbe7e3;border-radius:12px;background:#f7fbfa}
.finance-allocation-reference>span{font-size:12.5px;font-weight:800;color:#52635d}
.finance-allocation-reference>strong{margin-left:auto;font-size:19px;line-height:1.1;color:var(--ink);white-space:nowrap}
.finance-allocation-reference>small{font-size:11.5px;line-height:1.3;color:var(--muted);max-width:230px;text-align:right}
.finance-label small{display:block;margin-top:7px;font-size:11.5px;line-height:1.3;color:var(--muted);font-weight:650}
.no-allocation-note{margin-top:13px;padding:10px 12px;border-left:4px solid #64748b;border-radius:8px;background:#f8fafc;color:#52635d;font-size:12px;line-height:1.45}
.finance-table{min-width:1160px}
.finance-table th:nth-child(4){min-width:170px}

@media(max-width:1199px){
  .allocation-distribution{grid-template-columns:1fr}
  .allocation-framework-head{align-items:flex-start}
}
@media(max-width:699px){
  .allocation-framework{padding:15px}
  .allocation-framework-head{display:grid;grid-template-columns:1fr;gap:12px}
  .allocation-total{text-align:left}
  .allocation-total strong{font-size:23px}
  .finance-allocation-reference{display:grid;grid-template-columns:1fr;gap:5px}
  .finance-allocation-reference>strong{margin:0;font-size:18px}
  .finance-allocation-reference>small{text-align:left;max-width:none}
  .allocation-box small{text-align:left;max-width:none}
}


/* P17E1 · Porcentajes explícitos en tablas de fases */
.finance-table-line{min-width:1360px}
.finance-table th:nth-child(4),.finance-table th:nth-child(5){min-width:175px}
.finance-table-line th:nth-child(4),.finance-table-line th:nth-child(5){min-width:180px}
.finance-table .ratio-cell strong{font-size:14px}
.finance-table .ratio-track{min-width:105px}
@media(max-width:1180px){
  .finance-table-line{min-width:1280px}
}
@media(max-width:760px){
  .finance-table-line{min-width:0}
}

/* P17E2 · Tablas de fases legibles: todos los porcentajes quedan visibles sin scroll horizontal en escritorio */
.finance-table,
.finance-table-line,
.finance-table-overall,
.finance-table-municipality{
  width:100%;
  min-width:0!important;
  table-layout:fixed;
}
.finance-table-overall th:nth-child(1),.finance-table-overall td:nth-child(1),
.finance-table-line th:nth-child(1),.finance-table-line td:nth-child(1){width:16%}
.finance-table-overall th:nth-child(2),.finance-table-overall td:nth-child(2),
.finance-table-line th:nth-child(2),.finance-table-line td:nth-child(2){width:24%}
.finance-table-overall th:nth-child(3),.finance-table-overall td:nth-child(3),
.finance-table-line th:nth-child(3),.finance-table-line td:nth-child(3){width:18%}
.finance-table-overall th:nth-child(4),.finance-table-overall td:nth-child(4),
.finance-table-line th:nth-child(4),.finance-table-line td:nth-child(4){width:27%;min-width:0!important}
.finance-table-overall th:nth-child(5),.finance-table-overall td:nth-child(5),
.finance-table-line th:nth-child(5),.finance-table-line td:nth-child(5){width:15%;min-width:0!important}
.finance-table-municipality th:nth-child(1),.finance-table-municipality td:nth-child(1){width:20%}
.finance-table-municipality th:nth-child(2),.finance-table-municipality td:nth-child(2){width:31%}
.finance-table-municipality th:nth-child(3),.finance-table-municipality td:nth-child(3){width:27%}
.finance-table-municipality th:nth-child(4),.finance-table-municipality td:nth-child(4){width:22%}
.finance-table th,.finance-table td{overflow-wrap:anywhere}
.finance-table td strong{white-space:normal}
.budget-ratios{display:grid;gap:10px;text-align:left}
.budget-ratio-item{min-width:0}
.budget-ratio-item>span{display:block;margin-bottom:5px;font-size:11px;line-height:1.25;font-weight:800;color:#52635d}
.budget-ratio-item .ratio-cell{min-width:0}
.budget-ratio-item .ratio-track{min-width:0;width:100%;max-width:none}
.finance-table td:last-child .ratio-cell{min-width:0}
.finance-table td:last-child .ratio-track{min-width:0;width:100%;max-width:none}

/* El panel financiero necesita ancho real para que las columnas se lean. En la vista general y por línea
   se apila debajo de la situación administrativa en lugar de comprimir ambas tablas. */
.dual-grid{grid-template-columns:1fr!important}

@media(max-width:760px){
  .finance-table,.finance-table-line,.finance-table-overall,.finance-table-municipality{table-layout:auto}
  .budget-ratios{gap:7px}
  .budget-ratio-item>span{font-size:10.5px}
}

/* P17E4 — claridad del marco presupuestario: reparto inicial sin barras de ejecución */
.finance-allocation-reference{display:none!important}
.finance-allocation-row td{background:#eef7f4!important;border-top:2px solid #bdd8cf;border-bottom:2px solid #d5e6e1}
.finance-allocation-row td:first-child{border-left:5px solid var(--sea)}
.finance-allocation-row td strong{color:var(--ink)}
.finance-allocation-row td small{color:#52635d}
.finance-table-overall{table-layout:fixed!important;min-width:0!important;width:100%!important}
.finance-table-overall th:nth-child(1),.finance-table-overall td:nth-child(1){width:17%}
.finance-table-overall th:nth-child(2),.finance-table-overall td:nth-child(2){width:24%}
.finance-table-overall th:nth-child(3),.finance-table-overall td:nth-child(3){width:19%}
.finance-table-overall th:nth-child(4),.finance-table-overall td:nth-child(4){width:24%}
.finance-table-overall th:nth-child(5),.finance-table-overall td:nth-child(5){width:16%}
.finance-table-line{table-layout:fixed!important;min-width:0!important;width:100%!important}
.finance-table-line th:nth-child(1),.finance-table-line td:nth-child(1){width:15%}
.finance-table-line th:nth-child(2),.finance-table-line td:nth-child(2){width:21%}
.finance-table-line th:nth-child(3),.finance-table-line td:nth-child(3){width:17%}
.finance-table-line th:nth-child(4),.finance-table-line td:nth-child(4){width:16%}
.finance-table-line th:nth-child(5),.finance-table-line td:nth-child(5){width:17%}
.finance-table-line th:nth-child(6),.finance-table-line td:nth-child(6){width:14%}
.finance-table th{white-space:normal}
@media(max-width:860px){
  .finance-table-overall,.finance-table-line{table-layout:auto!important}
}


@media(max-width:560px){
  .allocation-line-card-head{align-items:flex-start;flex-direction:column;gap:5px}
  .allocation-line-share{white-space:normal}
}
