:root {
  --positive: #47745B;
  --negative: #AD5D56;
  --neutral: #827B74;
  --dkgreen: #49372D;
  --green: #49372D;
  --gold: #7a8796;
  --crimson: #AD5D56;
  --wine: #AD5D56;
  --ink: #302D2A;
  --paper: #FAF8F5;
  --card: #ffffff;
  --soft: #f4f5f4;
  --line: #e3e4e1;
  --line-soft: #eef0ee;
  --muted: #6c6f6a;
  --muted2: #646d67;
  --sans: 'Noto Sans', system-ui, -apple-system, sans-serif;
  --serif: 'Noto Sans', system-ui, -apple-system, sans-serif;
  --mono: 'Noto Sans', system-ui, -apple-system, sans-serif;
  --shadow: none;
  --radius: 4px;
  --maxw: 1260px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.55; -webkit-font-smoothing: antialiased; }
a { color: var(--green); }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 26px 26px 80px; }

.skip-link { position: absolute; left: -9999px; top: 0; background: var(--dkgreen); color: #fff; padding: 10px 16px; border-radius: 6px; z-index: 200; }
.skip-link:focus { left: 12px; top: 12px; }

/* ---------- Header (compacto) ---------- */
.site-header { border-bottom: 3px solid var(--dkgreen); padding-bottom: 14px; margin-bottom: 6px; position: relative; }
.site-header::after { content: ""; position: absolute; left: 50%; transform: translateX(-50%); bottom: -3px; width: 160px; height: 3px; background: var(--gold); }
.header-top { display: flex; flex-direction: column; align-items: center; gap: 14px; flex-wrap: wrap; text-align: center; }
.eyebrow { font-family: var(--mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--gold); font-weight: 500; margin-bottom: 6px; }
.site-header h1 { font-family: var(--serif); font-weight: 700; font-size: 32px; line-height: 1.12; letter-spacing: -.01em; color: var(--dkgreen); }
.header-side { display: flex; justify-content: center; gap: 18px; align-items: center; flex-wrap: wrap; }
.meta-pill { display: flex; flex-direction: column; gap: 1px; }
.meta-pill .k { font-family: var(--mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted2); }
.meta-pill .v { font-size: 14px; font-weight: 600; color: var(--ink); }
.btn { display: inline-flex; align-items: center; gap: 7px; padding: 7px 13px; border-radius: var(--radius); font-family: var(--sans); font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid var(--dkgreen); text-decoration: none; transition: background .15s, color .15s; white-space: nowrap; }
.btn-primary { background: var(--dkgreen); color: #fff; }
.btn-primary:hover { background: #013e37; }
.btn-ghost { background: #fff; color: var(--dkgreen); border-color: var(--line); }
.btn-ghost:hover { background: var(--soft); }

/* ---------- Nav ---------- */
.tabs { display: flex; flex-direction: column; gap: 6px; margin: 14px 0 22px; position: sticky; top: 0; background: var(--paper); padding: 8px 0; z-index: 50; border-bottom: 1px solid var(--line); }
.nav-row { display: flex; flex-wrap: wrap; gap: 4px; }
.tab { padding: 6px 12px; border-radius: var(--radius); border: 1px solid transparent; background: transparent; color: var(--muted); font-family: var(--sans); font-size: 13px; font-weight: 500; cursor: pointer; white-space: nowrap; }
.tab:hover { color: var(--dkgreen); background: var(--soft); }
.tab[aria-selected="true"] { background: transparent; color: var(--dkgreen); border-color: transparent; font-weight: 600; border-bottom: 2px solid var(--green); border-radius: 0; }
.tab:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }

/* ---------- Views ---------- */
.view { display: none; }
.view.active { display: block; }
.section-title { font-family: var(--serif); font-size: 23px; font-weight: 700; color: var(--dkgreen); margin-bottom: 3px; border-left: 3px solid var(--crimson); padding-left: 11px; }
.section-sub { font-size: 14px; color: var(--muted); margin-bottom: 18px; max-width: 900px; }

/* ---------- Alerta discreta ---------- */
.alert-discreet { display: flex; align-items: center; gap: 10px; background: var(--soft); border: 1px solid var(--line); color: #5c5f5a; border-radius: var(--radius); padding: 9px 14px; font-size: 13px; margin-bottom: 18px; }
.alert-discreet .ad-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gold); flex: none; }

/* ---------- Matriz de indicadores (panorama) ---------- */
.matrix { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 12px; margin-bottom: 22px; align-items: stretch; }
.matrix-card { background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--green); border-radius: var(--radius); padding: 14px 15px; box-shadow: var(--shadow); cursor: pointer; text-align: left; width: 100%; font-family: var(--sans); transition: background .12s, border-color .12s; display: flex; flex-direction: column; gap: 7px; min-height: 270px; position: relative; }
.matrix-card:hover { background: var(--soft); border-left-color: var(--crimson); }
.matrix-card:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.matrix-card.na { border-left-color: #c9c2b2; opacity: .92; }
.mc-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.mc-title { font-family: var(--serif); font-size: 26px; font-weight: 700; color: var(--dkgreen); line-height: 1.05; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1 1 auto; min-width: 0; }
.matrix-card .state-badge { position: absolute; top: 14px; right: 14px; }
.mc-name { font-size: 12.5px; font-weight: 500; color: #4c4f4a; line-height: 1.3; min-height: 2.6em; max-height: 2.6em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-clamp: 2; }
.mc-eyebrow { font-family: var(--mono); font-size: 10.5px; color: var(--muted2); text-transform: uppercase; letter-spacing: .06em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: -2px; }
.mc-value { font-family: var(--mono); font-size: 26px; font-weight: 600; color: var(--dkgreen); line-height: 1.05; margin-top: 2px; }
.mc-value.muted { font-size: 15px; color: var(--muted2); font-family: var(--sans); font-weight: 500; }
.mc-metric { font-size: 11px; font-weight: 500; color: var(--muted); line-height: 1.2; min-height: 1.2em; }
.mc-sub { font-size: 11.5px; color: var(--muted); margin-top: auto; }
.spark { width: 100%; height: 28px; display: block; margin-top: 2px; }
.spark.empty { height: 28px; }
.mc-deltas { display: flex; gap: 14px; flex-wrap: nowrap; border-top: 1px solid var(--line-soft); padding-top: 8px; margin-top: auto; min-height: 42px; }
.mc-delta { display: flex; flex-direction: column; flex: 1 1 0; min-width: 0; gap: 2px; }
.mc-delta .d-val { font-family: var(--mono); font-size: 13.5px; font-weight: 600; line-height: 1.1; }
.mc-delta .d-lbl { font-size: 9.5px; color: var(--muted2); line-height: 1.15; word-break: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-clamp: 2; max-height: 2.3em; }
.mc-delta.up .d-val { color: #47745B; } .mc-delta.down .d-val { color: var(--crimson); } .mc-delta.flat .d-val, .mc-delta.neutral .d-val { color: #4c4f4a; }

/* ---------- Estado badge ---------- */
.state-badge { font-family: var(--mono); font-size: 9.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; padding: 2px 7px; border-radius: 3px; white-space: nowrap; border: 1px solid transparent; }
.state-badge.ok { background: #e1efe8; color: #1e6b4f; }
.state-badge.pending { background: #eef0f2; color: #5c5f6a; }
.state-badge.lag { background: #fbf1da; color: #8a6d1f; }
.state-badge.error { background: #f7e0e5; color: #8f2038; }
.state-badge.na { background: #eeece5; color: #8a8d86; }

/* ---------- Panels ---------- */
.panel { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px 20px; margin-bottom: 14px; box-shadow: var(--shadow); }
.panel h3 { font-family: var(--serif); font-size: 18px; font-weight: 700; color: var(--dkgreen); margin-bottom: 4px; }
.panel .caption { font-size: 13px; color: var(--muted); margin-bottom: 12px; line-height: 1.5; }
.muted { color: var(--muted); font-size: 13px; }

.panorama-cols { display: grid; grid-template-columns: 1.3fr 1fr; gap: 16px; align-items: start; }

/* ---------- Movimientos ---------- */
.mov-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 8px; }
.mov-col { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; }
.mov-col.up { border-top: 3px solid #47745B; }
.mov-col.down { border-top: 3px solid var(--crimson); }
.mov-col.warn { border-top: 3px solid var(--gold); }
.mov-title { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: #4c4f4a; font-weight: 600; margin-bottom: 8px; display: flex; justify-content: space-between; }
.mov-count { background: var(--soft); border-radius: 3px; padding: 0 8px; }
.mov-col ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.mov-col li { font-size: 12.5px; line-height: 1.45; color: #2c302b; padding-left: 12px; position: relative; }
.mov-col li::before { content: ""; position: absolute; left: 0; top: 7px; width: 5px; height: 5px; border-radius: 50%; background: var(--muted2); }

/* ---------- Síntesis ---------- */
.summary-list { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.summary-list li { display: flex; gap: 12px; align-items: flex-start; font-size: 14.5px; line-height: 1.5; color: #2c302b; }
.summary-list .mark { flex: none; width: 8px; height: 8px; transform: rotate(45deg); margin-top: 6px; background: var(--green); }

/* ---------- Accesos secundarios (panorama) ---------- */
.accesos { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line); }
.acceso-link { font-size: 13px; font-weight: 600; color: var(--green); text-decoration: none; border-bottom: 1px solid transparent; padding-bottom: 1px; }
.acceso-link:hover { border-bottom-color: var(--green); }

/* ---------- Calendar ---------- */
.cal-item { display: flex; gap: 14px; align-items: baseline; padding: 10px 0; border-bottom: 1px solid var(--line-soft); }
.cal-item .date { font-family: var(--mono); font-weight: 600; color: var(--dkgreen); min-width: 150px; font-size: 13px; }
.cal-item span:last-child { font-size: 13.5px; color: #2c302b; }
.cal-filter { margin-bottom: 12px; font-size: 13px; color: var(--muted); }
.cal-filter select { font-family: var(--sans); font-size: 13px; padding: 6px 10px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.cal-status { font-family: var(--mono); font-size: 10px; text-transform: uppercase; padding: 2px 7px; border-radius: 3px; }
.cal-status.publicado { background: #e1efe8; color: #1e6b4f; }
.cal-status\.próximo, .cal-status.próximo { background: #fbf1da; color: #8a6d1f; }
.cal-status.pendiente { background: #eef0f2; color: #5c5f6a; }
.cal-item.clickable, tr.clickable { cursor: pointer; }
.cal-item.clickable:hover { background: var(--soft); }
tr.clickable:hover td { background: var(--soft); }

/* Calendario V3: controles, destacados y vistas */
.cal-controls { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; justify-content: space-between; margin: 12px 0; }
.cal-view-toggle { display: inline-flex; gap: 6px; }
.cal-highlights { display: grid; grid-template-columns: 1fr 1.4fr; gap: 16px; margin-bottom: 6px; }
.cal-hero { background: var(--dkgreen, #49372D); color: #fff; }
.cal-hero-lbl { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: rgba(255,255,255,.82); }
.cal-hero-date { font-family: var(--serif); font-size: 26px; font-weight: 600; margin: 4px 0; color: #fff; }
.cal-hero-ind { font-size: 15px; font-weight: 600; }
.cal-hero-src { font-size: 12px; color: rgba(255,255,255,.88); margin-top: 4px; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 12px; margin: 6px 0 14px; font-size: 12px; }
.cal-leg-item { display: inline-flex; align-items: center; gap: 6px; }
.cal-leg-dot { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.cal-months { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 16px; }
.cal-month-title { font-family: var(--serif); font-size: 16px; font-weight: 600; color: var(--dkgreen); text-transform: capitalize; margin-bottom: 8px; }
table.cal-grid { width: 100%; table-layout: fixed; border-collapse: collapse; }
table.cal-grid th { font-family: var(--mono); font-size: 10px; text-transform: uppercase; color: var(--muted); text-align: center; padding: 4px 0; }
td.cal-cell { border: 1px solid var(--line-soft); height: 58px; vertical-align: top; padding: 3px; }
td.cal-cell.empty { background: var(--soft); }
.cal-daynum { font-family: var(--mono); font-size: 10px; color: #6b6f68; }
.cal-chip { font-family: var(--mono); font-size: 9px; color: #fff; border-radius: 4px; padding: 1px 4px; margin-top: 2px; cursor: pointer; line-height: 1.3; }

/* ---------- Ficha de indicador ---------- */
.ind-toolbar-wrap { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.ind-nav { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: 13px; }
.ind-nav .nav-link { color: var(--dkgreen); text-decoration: none; font-weight: 600; white-space: nowrap; }
.ind-nav .nav-link:hover { text-decoration: underline; }
.product-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.product-bar .btn {
  font-size: 12px;
  padding: 6px 11px;
  transition: background .15s, color .15s, border-color .15s, box-shadow .15s;
  border-radius: var(--radius);
}

/* Botón activo: verde institucional oscuro sobre fondo claro, borde visible y cursor pointer. */
.product-bar .product-ok {
  background: #fff;
  color: var(--dkgreen);
  border: 1px solid var(--dkgreen);
  cursor: pointer;
  opacity: 1;
  box-shadow: none;
}
.product-bar .product-ok:hover {
  background: var(--dkgreen);
  color: #fff;
  border-color: var(--dkgreen);
  box-shadow: 0 2px 5px rgba(0, 0, 0, .12);
}
.product-bar .product-ok:focus-visible {
  outline: 2px solid var(--dkgreen);
  outline-offset: 2px;
}

/* Botón deshabilitado: gris, sin opacidad reducida, cursor not-allowed y contraste suficiente. */
.product-bar .product-disabled {
  background: #ebedf0;
  color: #6b737a;
  border: 1px solid #cdd0d5;
  cursor: not-allowed;
  opacity: 1;
  box-shadow: none;
}
.product-bar .product-disabled:hover {
  background: #ebedf0;
  color: #6b737a;
  border-color: #cdd0d5;
}

/* Ningún botón activo debe verse como deshabilitado, ni viceversa. */
.product-bar .product-ok[aria-disabled="true"],
.product-bar .product-ok:disabled {
  background: #ebedf0;
  color: #6b737a;
  border-color: #cdd0d5;
  cursor: not-allowed;
}

.ficha-head { display: grid; grid-template-columns: minmax(0, 1.95fr) minmax(0, 1fr); gap: 18px; align-items: start; border-bottom: 1px solid var(--line); padding-bottom: 12px; margin-bottom: 12px; }
.fh-sigla { font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--gold); font-weight: 600; line-height: 1.2; }
.fh-name { font-family: var(--serif); font-size: 23px; font-weight: 700; color: var(--dkgreen); margin: 2px 0 6px; line-height: 1.15; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-clamp: 2; }
.fh-desc { font-size: 13px; color: #5c5f5a; line-height: 1.45; margin-bottom: 6px; }
.fh-meta { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.fh-item { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 6px 10px; border-top: 1px solid var(--line-soft); font-size: 12.5px; min-height: 0; }
.fh-item:first-child { border-top: none; }
.fh-item .k { color: var(--muted2); font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
.fh-item .v { font-weight: 600; color: #2c302b; text-align: right; line-height: 1.25; }

.mini-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 12px; }
.mini { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; background: #fff; }
.mini.dark { background: var(--dkgreen); border-color: var(--dkgreen); }
.mini .lbl { font-family: var(--mono); font-size: 9.5px; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 6px; color: var(--muted2); }
.mini .num { font-family: var(--mono); font-size: 21px; font-weight: 600; line-height: 1.05; color: inherit; }
.mini .sub { font-size: 10.5px; margin-top: 4px; color: var(--muted); }
/* Tarjetas KPI oscuras: esquema invertido de alto contraste. La cifra queda
   siempre en blanco — nunca verde/vino semántico — y labels/secundarios usan
   blanco atenuado. El !important en .num blinda la regla contra estilos inline. */
.mini.dark .lbl { color: rgba(255,255,255,.82); } .mini.dark .num { color: #fff !important; } .mini.dark .sub { color: rgba(255,255,255,.88); }

.chart-caption { font-size: 12.5px; color: var(--muted); margin: 4px 0 6px; line-height: 1.45; }
.chart-box { width: 100%; height: 400px; }
.win-toggle { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.win-btn { font-family: var(--mono); font-size: 11px; padding: 5px 11px; border-radius: var(--radius); border: 1px solid var(--line); background: #fff; color: var(--muted); cursor: pointer; }
.win-btn[aria-pressed="true"] { background: var(--green); color: #fff; border-color: var(--green); }

.ficha-block { margin-top: 18px; }
.print-highlight { background: var(--soft); border: 1px solid var(--line); border-left: 3px solid var(--gold, #A67C52); border-radius: var(--radius); padding: 12px 16px; }
.block-sub { font-family: var(--serif); font-size: 17px; font-weight: 700; color: var(--dkgreen); margin-bottom: 8px; padding-bottom: 4px; border-bottom: 1px solid var(--line-soft); }
.prose { font-size: 14.5px; line-height: 1.6; color: #2c302b; text-align: justify; }
.reading-bullets { margin: 0 0 0 20px; padding: 0; font-size: 14.5px; line-height: 1.6; color: #2c302b; }
.reading-bullets li { margin-bottom: 8px; }

.breakdown { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.bd-item { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; background: var(--soft); }
.bd-lbl { font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.bd-val { font-family: var(--mono); font-size: 18px; font-weight: 600; color: var(--dkgreen); }

/* ---------- Table ---------- */
.table-wrap { overflow: auto; max-height: 460px; border: 1px solid var(--line); border-radius: var(--radius); }
table { border-collapse: separate; border-spacing: 0; width: 100%; }
th { position: sticky; top: 0; background: var(--soft); border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: 10.5px; letter-spacing: .05em; text-transform: uppercase; color: #5c5f5a; font-weight: 600; padding: 9px 13px; white-space: nowrap; text-align: right; }
th:first-child { text-align: left; }
td { padding: 8px 13px; font-size: 12.5px; font-family: var(--mono); border-bottom: 1px solid var(--line-soft); text-align: right; color: #2c302b; }
td:first-child { text-align: left; font-family: var(--sans); }
tr.max td { background: #e1efe8; } tr.min td { background: #f6e2e8; }
tbody tr:last-child td { font-weight: 400; }
.notes { margin-top: 12px; border-top: 1px solid var(--line-soft); padding-top: 12px; font-size: 12px; color: var(--muted); line-height: 1.6; }

/* ---------- PIB: historial ampliado y nivel tradicional (PIBT) ---------- */
.pib-history { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
.ph-item, .ph-filters { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; background: #fff; }
.ph-lbl { font-family: var(--mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted2); margin-bottom: 5px; }
.ph-val { font-family: var(--mono); font-size: 20px; font-weight: 600; color: var(--dkgreen); }
.ph-filters { grid-column: 1 / -1; }
.ph-filter-title { font-size: 12.5px; color: var(--muted); margin-bottom: 8px; }
.ph-filter { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-top: 1px solid var(--line-soft); font-size: 12.5px; }
.ph-filter:first-of-type { border-top: none; }
.phf-lbl { color: #5c5f5a; }
.phf-n { font-family: var(--mono); font-weight: 600; color: var(--dkgreen); }
.phf-r { font-family: var(--mono); font-size: 11px; color: var(--muted2); text-align: right; }

.pibt-block { background: var(--soft); border: 1px solid var(--line); border-radius: var(--radius); padding: 0; }
.pibt-head { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.pibt-main { padding: 14px 16px; background: var(--dkgreen); color: #fff; border-radius: var(--radius) 0 0 0; }
.pibt-lbl { font-family: var(--mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: #9db8b0; margin-bottom: 6px; }
.pibt-val { font-family: var(--mono); font-size: 24px; font-weight: 600; line-height: 1.05; }
.pibt-sub { font-size: 11px; color: #bcd0c9; margin-top: 5px; }
.pibt-meta { padding: 14px 16px; border-left: 1px solid var(--line); }
.pibt-meta-row { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--line-soft); font-size: 12px; }
.pibt-meta-row:last-child { border-bottom: none; }
.pibt-meta-row .k { color: var(--muted2); font-family: var(--mono); font-size: 10px; text-transform: uppercase; }
.pibt-meta-row .v { font-weight: 600; color: #2c302b; text-align: right; }
.pibt-chart { display: block; padding: 8px 12px 12px; }
.pibt-chart .chart-box { height: 300px; }

@media (max-width: 640px) {
  .pibt-head { grid-template-columns: 1fr; }
  .pibt-main { border-radius: var(--radius) var(--radius) 0 0; }
  .pibt-meta { border-left: none; border-top: 1px solid var(--line); }
}

/* ---------- News ---------- */
.news-item { border: 1px solid var(--line); border-radius: var(--radius); padding: 15px 17px; margin-bottom: 12px; background: #fff; }
.news-item .meta { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-family: var(--mono); font-size: 11px; color: var(--muted2); margin-bottom: 6px; }
.chip { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: .05em; padding: 2px 8px; border-radius: 3px; border: 1px solid var(--line); color: var(--muted); }
.notice { background: #fbf3df; border: 1px solid #e7d6a8; color: #6b551f; border-radius: var(--radius); padding: 13px 16px; font-size: 13.5px; margin-bottom: 16px; line-height: 1.5; }

/* ---------- Downloads ---------- */
.dl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.dl-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; background: #fff; }
.dl-card h4 { font-size: 15px; margin-bottom: 6px; }
.dl-card p { font-size: 12.5px; color: var(--muted); margin-bottom: 12px; }

/* ---------- Footer ---------- */
.site-footer { margin-top: 28px; border-top: 1px solid #d9d3c4; padding-top: 18px; font-size: 13px; color: #5c5f5a; line-height: 1.6; }
.site-footer .mono { font-family: var(--mono); font-size: 12px; color: var(--muted2); margin-top: 8px; }

#status { padding: 40px 0; text-align: center; color: var(--muted); font-family: var(--mono); font-size: 13px; }

/* ---------- Print helpers (pantalla: ocultos) ---------- */
.print-header, .print-footer { display: none; }
.print-only { display: none; }

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
  .ficha-head { grid-template-columns: 1fr; }
  .panorama-cols { grid-template-columns: 1fr; }
  .mov-grid { grid-template-columns: 1fr; }
  .site-header h1 { font-size: 23px; }
  .chart-box { height: 340px; }
}
@media (max-width: 600px) {
  .wrap { padding: 18px 14px 64px; }
  .header-top { flex-direction: column; align-items: flex-start; }
  .header-side { width: 100%; }
  .matrix { grid-template-columns: 1fr; }
  .chart-box { height: 300px; }
  .section-title { font-size: 20px; }
}

/* ---------- Impresión: SOLO la ficha activa (Imprimir ficha) ---------- */
@media print {
  @page { size: letter portrait; margin: 14mm 14mm 16mm; }
  html, body { background: #fff; font-family: 'Noto Sans', system-ui, sans-serif; font-size: 10pt; line-height: 1.0; color: #1a1a1a; }
  .wrap { max-width: none; padding: 0; }
  .tabs, .site-header .header-side, .ind-toolbar, .win-toggle, .no-print, .site-footer, .skip-link, .alert-discreet, .chart-caption { display: none !important; }
  /* En impresión, la ficha usa su propio encabezado institucional (.ficha-print-head) */
  .site-header { display: none !important; }
  .print-only { display: block !important; }
  /* Se ocultan los bloques de pantalla que duplican los de impresión */
  .ficha-head, .mini-kpis { display: none !important; }
  /* Solo la vista activa se imprime; el panorama nunca se imprime como ficha */
  .view { display: none !important; }
  .view.active { display: block !important; }
  body[data-view="panorama"] .view.active { display: block !important; }
  .print-header { display: block; border-bottom: 1.5pt solid var(--dkgreen); padding-bottom: 4pt; margin-bottom: 8pt; }
  .print-header .ph-org { font-family: var(--serif); font-size: 13pt; font-weight: 600; color: var(--dkgreen); }
  .print-header .ph-sub { font-size: 8.5pt; color: #444; }
  .print-footer { display: block; position: fixed; bottom: 0; left: 0; right: 0; font-size: 8pt; color: #555; background: #fff; border-top: .5pt solid #999; padding-top: 3pt; text-align: center; }
  #main { padding-bottom: 22pt; }
  .panel { border: none; box-shadow: none; padding: 0; margin: 0; }
  /* Igual que en pantalla (400px) para que el canvas de ECharts no se recorte */
  .chart-box { height: 400px; margin-bottom: 10pt; page-break-inside: avoid; }
  .ficha-block, .breakdown { page-break-inside: avoid; }
  /* Las tablas se imprimen completas (sin scroll interno) */
  .table-wrap { max-height: none !important; overflow: visible !important; border: none !important; }
  .block-sub { font-size: 11pt; color: var(--dkgreen); margin: 8pt 0 3pt; }
  .prose { font-size: 10pt; line-height: 1.15; text-align: left; margin: 0 0 5pt; }
  .reading-bullets { font-size: 10pt; line-height: 1.15; margin: 0 0 0 16pt; }
  .reading-bullets li { margin-bottom: 4pt; }
  .notes { font-size: 8pt; }
  table { font-size: 8.5pt; }
  th, td { padding: 3pt 6pt; }
  a { color: #000; text-decoration: none; }

  /* Recuadro marfil para "Principales resultados" */
  .print-highlight { background: #f4f1e7; border: .5pt solid #cbcbcb; border-left: 3pt solid var(--gold, #A67C52); padding: 5pt 8pt; margin-top: 6pt; }
  /* Espaciado vertical compacto para aprovechar la primera página */
  .ficha-block { margin-top: 6pt; }

  /* Encabezado institucional de la ficha (estilo Nota) */
  .ficha-print-head { margin-bottom: 6pt; }
  .ficha-print-head .fph-bar { background: var(--dkgreen); color: #f0ece1; padding: 6pt 9pt; border-left: 4pt solid var(--gold, #A67C52); }
  .ficha-print-head .fph-title { font-family: var(--serif); font-size: 14pt; font-weight: 600; line-height: 1.1; }
  .ficha-print-head .fph-sub { font-family: var(--mono); font-size: 9pt; opacity: .9; margin-top: 1pt; }
  .ficha-print-head .fph-meta { font-size: 8pt; color: #444; padding: 4pt 2pt 0; border-bottom: .5pt solid #bbb; }

  /* Bloques principales de variación (▲/▼) */
  .print-varblocks { display: flex; gap: 8pt; margin: 6pt 0; page-break-inside: avoid; }
  .print-varblocks .pvb { flex: 1; border: .75pt solid #cbcbcb; border-top: 2.5pt solid var(--dkgreen); padding: 5pt 7pt; }
  .print-varblocks .pvb-lbl { font-family: var(--mono); font-size: 7.5pt; text-transform: uppercase; letter-spacing: .04em; color: #555; }
  .print-varblocks .pvb-val { font-size: 17pt; font-weight: 700; line-height: 1.1; margin: 2pt 0; }
  .print-varblocks .pvb-note { font-size: 7.5pt; color: #555; }

  .print-compare table { width: 100%; }
  .print-compare th { background: #eef0ec; text-align: left; }

  /* Segunda página: análisis y desglose */
  .ficha-page2 { page-break-before: always; }
}

/* Layout ficha compacta: gráfica + tabla de rango */
.chart-main {
  display: grid;
  grid-template-columns: 1fr 220px;
  grid-template-rows: auto 1fr;
  grid-template-areas:
    "toggle toggle"
    "chart range";
  gap: 18px;
  align-items: start;
}
.chart-main .win-toggle { grid-area: toggle; }
.chart-main .chart-box { grid-area: chart; min-width: 0; }
.chart-main .range-wrap { grid-area: range; min-width: 0; }
.range-wrap { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; padding: 12px; }
.range-table { width: 100%; border-collapse: collapse; }
.range-table th, .range-table td { font-size: 11px; padding: 6px 4px; text-align: left; border-bottom: 1px solid var(--line-soft); }
.range-table th { font-family: var(--mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted2); font-size: 9.5px; }
.range-table td { font-weight: 600; }
.range-table .range-last { color: var(--dkgreen); }
.range-table .range-max { color: var(--green); }
.range-table .range-min { color: var(--crimson); }
.range-table .range-period { color: var(--muted); }

@media (max-width: 900px) {
  .chart-main { grid-template-columns: 1fr; grid-template-areas: "toggle" "chart" "range"; }
  .range-wrap { margin-top: 12px; }
}

@media print {
  .range-wrap, .chart-main, .pibt-chart { display: none !important; }
}

/* ---------- PIBT (PIBSEC) specific ---------- */
.pibsec-charts { display: block; grid-template-columns: 1fr; }
.pibsec-section { margin-bottom: 18px; }
.pibsec-section .block-sub { margin-bottom: 10px; }
.pibsec-levels, .pibsec-variation { height: 420px; }
.imai-levels { height: 630px; }
.emim-levels { height: 420px; }
.emim-variation { height: 420px; }
.bcmm-levels { height: 480px; }
.emoe-main { height: 400px; }
.emoe-sectors { height: 460px; }
.sic-main { height: 400px; }
.sic-comps { height: 680px; }
.bcmm-variation { height: 580px; }
.imfbcf-levels { height: 780px; }
.imfbcf-variation { height: 420px; }
.pibsec-sectors { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pibsec-sector-col { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; background: var(--soft); }
.pibsec-sector-title { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 8px; font-weight: 700; }
.pibsec-sector-item { display: flex; justify-content: space-between; gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--line-soft); font-size: 12px; }
.pibsec-sector-item:last-child { border-bottom: none; }
.pibsec-sector-name { color: #3d403b; }
.pibsec-sector-pct { font-family: var(--mono); font-weight: 600; font-size: 12px; }

@media (max-width: 720px) {
  .pibsec-sectors { grid-template-columns: 1fr; }
  .pibsec-levels { height: 360px; }
  .pibsec-variation { height: 340px; }
  .emim-levels { height: 360px; }
  .imai-levels { height: 520px; }
  .imfbcf-levels { height: 680px; }
  .imfbcf-variation { height: 360px; }
  .bcmm-levels { height: 400px; }
  .bcmm-variation { height: 480px; }
}

@media (max-width: 540px) {
  .pibsec-levels { height: 560px; }
  .emim-levels { height: 560px; }
  .imai-levels { height: 760px; }
  .imfbcf-levels { height: 980px; }
  .imfbcf-variation { height: 560px; }
  .bcmm-levels { height: 720px; }
  .bcmm-variation { height: 900px; }
}

/* ---------- Modal ---------- */
.modal-overlay { position: fixed; inset: 0; z-index: 1000; display: none; align-items: flex-start; justify-content: center; padding: 24px 16px; }
.modal-overlay.active { display: flex; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.modal-panel { position: relative; background: #fff; border-radius: var(--radius); box-shadow: 0 10px 40px rgba(0,0,0,.2); width: min(720px, 100%); max-height: calc(100vh - 48px); overflow: auto; }
.modal-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 14px 18px; border-bottom: 1px solid var(--line); background: var(--dkgreen); color: #fff; }
.modal-header h2 { font-family: var(--serif); font-size: 17px; font-weight: 600; margin: 0; }
.modal-close { background: transparent; border: none; color: #fff; font-size: 22px; line-height: 1; cursor: pointer; padding: 0 4px; }
.modal-close:hover { color: var(--gold); }
.modal-body { padding: 18px; }
.ind-cal .cal-hero { background: var(--soft); border: 1px solid var(--line); border-left: 3px solid var(--dkgreen); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 14px; }
.ind-cal .cal-hero-lbl { font-family: var(--mono); font-size: 11px; text-transform: uppercase; color: var(--muted2); }
.ind-cal .cal-hero-date { font-size: 24px; font-weight: 700; color: var(--dkgreen); margin: 4px 0; }
.ind-cal .cal-hero-src { font-size: 12px; color: var(--muted); }
.ind-cal .cal-hist { margin-bottom: 12px; }
.cal-list { list-style: none; padding: 0; margin: 0; }
.cal-list li { display: flex; align-items: baseline; gap: 6px; padding: 5px 0; border-bottom: 1px solid var(--line-soft); font-size: 13px; }
.cal-list li:last-child { border-bottom: none; }
.cal-list-date { font-family: var(--mono); font-weight: 600; color: var(--dkgreen); min-width: 110px; }

@media (max-width: 600px) {
  .modal-overlay { padding: 10px; }
  .modal-panel { max-height: calc(100vh - 20px); }
  .modal-body { padding: 12px; }
}

/* ---------- PIB Oportuno: historial y nivel tradicional ---------- */
.pib-history {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-top: 8px;
}
.pib-history .ph-item {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 12px 14px;
  background: var(--soft);
}
.pib-history .ph-lbl {
  font-size: 11px;
  color: var(--muted);
  margin-bottom: 4px;
}
.pib-history .ph-val {
  font-family: var(--mono);
  font-size: 18px;
  font-weight: 600;
  color: var(--dkgreen);
}
.pib-history .ph-filters {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: stretch;
}
.pib-history .ph-filter-title {
  width: 100%;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 4px;
}
.pib-history .ph-filter {
  flex: 1 1 140px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 10px 12px;
  background: #fff;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pib-history .phf-lbl {
  font-size: 10.5px;
  color: var(--muted);
}
.pib-history .phf-n {
  font-family: var(--mono);
  font-size: 20px;
  font-weight: 600;
  color: var(--dkgreen);
}
.pib-history .phf-r {
  font-size: 10px;
  color: var(--muted);
}

.pibt-block .pibt-head {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 16px;
  align-items: start;
}
.pibt-block .pibt-main {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 14px 16px;
  background: var(--soft);
}
.pibt-block .pibt-lbl {
  font-size: 11px;
  color: var(--muted);
  margin-bottom: 6px;
}
.pibt-block .pibt-val {
  font-family: var(--mono);
  font-size: 24px;
  font-weight: 600;
  color: var(--dkgreen);
}
.pibt-block .pibt-sub {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
}
.pibt-block .pibt-meta {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 12px 14px;
  background: #fff;
}
.pibt-block .pibt-meta-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 4px 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: 12px;
}
.pibt-block .pibt-meta-row:last-child {
  border-bottom: none;
}
.pibt-chart {
  margin-top: 14px;
}
.pibt-chart .chart-box {
  height: 320px;
}

@media (max-width: 720px) {
  .pibt-block .pibt-head {
    grid-template-columns: 1fr;
  }
  .pib-history {
    grid-template-columns: 1fr;
  }
  .pib-history .ph-filters {
    flex-direction: column;
  }
}

/* ---------- Calendario de publicaciones V4 ---------- */
.cal-filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.cal-filter-group { display: flex; flex-direction: column; gap: 3px; font-size: 12px; }
.cal-filter-group label { font-family: var(--mono); font-size: 10px; color: var(--muted2); text-transform: uppercase; }
.cal-filter-group select { font-size: 13px; padding: 5px 8px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; min-width: 140px; }

.cal-highlights { display: grid; grid-template-columns: 1fr; gap: 16px; margin-bottom: 6px; }
@media (min-width: 1024px) {
  .cal-highlights { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); }
}

.cal-upcoming, .cal-recent { padding: 14px 16px; }
.cal-highlights .cal-upcoming { background: #edf3ef; border-color: #dce7e1; }
.cal-upcoming h3, .cal-recent h3 {
  font-family: var(--mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted2);
  margin: 0 0 12px;
}

/* Hero compacto de la siguiente publicación */
.cal-hero-sm {
  background: var(--soft);
  border-left: 3px solid var(--dkgreen);
  border-radius: var(--radius);
  padding: 10px 12px;
  margin-bottom: 10px;
}
.cal-hero-sm-label {
  font-family: var(--mono);
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--muted);
  margin-bottom: 2px;
}
.cal-hero-sm-date {
  font-family: var(--serif);
  font-size: 20px;
  font-weight: 700;
  color: var(--dkgreen);
  line-height: 1.2;
  margin-bottom: 4px;
}
.cal-hero-sm-main {
  font-size: 13.5px;
  font-weight: 600;
  color: #2c302b;
  margin-bottom: 2px;
}
.cal-hero-sm-src {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 8px;
}

/* Filas del calendario: 3 columnas fijas */
.cal-list-row {
  display: grid;
  grid-template-columns: 80px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  min-height: 48px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line-soft);
}
.cal-list-row:last-child { border-bottom: none; }
.cal-list-row.clickable { cursor: pointer; }
.cal-list-row.clickable:hover { background: var(--soft); }

.cal-row-date {
  font-family: var(--mono);
  font-weight: 700;
  font-size: 12px;
  color: var(--dkgreen);
  text-align: left;
  line-height: 1.2;
}

.cal-row-main {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
}

.cal-row-title {
  font-size: 13.5px;
  font-weight: 600;
  color: #2c302b;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.cal-row-period {
  font-size: 12.5px;
  color: var(--muted);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.cal-row-source {
  font-family: var(--mono);
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(0,0,0,.05);
  color: var(--muted2);
  white-space: nowrap;
  justify-self: end;
}
.cal-upcoming .cal-row-source {
  background: #d4e3d9;
  color: #14473b;
  border: 1px solid rgba(30,91,79,.18);
}

/* Últimas publicaciones: zona de acciones */
.cal-recent-list .cal-list-row { grid-template-columns: 80px minmax(0, 1fr) minmax(220px, 300px); }
.cal-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
  align-items: center;
}

/* Botones de archivo */
.cal-dl-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 38px;
  min-width: 96px;
  padding: 0 14px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: transparent;
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
  transition: background .15s ease, filter .15s ease;
  white-space: nowrap;
}
.cal-dl-btn:hover { filter: brightness(0.96); }
.cal-dl-btn:focus { outline: 2px solid currentColor; outline-offset: 2px; }
.cal-dl-icon { display: inline-flex; line-height: 1; }
.cal-dl-icon svg { display: block; }
.cal-dl-kind { font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: .02em; }
.cal-dl-size { font-family: var(--mono); font-size: 9px; opacity: .7; margin-left: 2px; }

.cal-dl-pdf { color: #AD5D56; background: rgba(155,34,71,.07); border-color: rgba(155,34,71,.35); }
.cal-dl-pdf:hover { background: rgba(155,34,71,.14); }
.cal-dl-word { color: #0d47a1; background: rgba(13,71,161,.07); border-color: rgba(13,71,161,.35); }
.cal-dl-word:hover { background: rgba(13,71,161,.14); }
.cal-dl-excel { color: #47745B; background: rgba(30,91,79,.07); border-color: rgba(30,91,79,.35); }
.cal-dl-excel:hover { background: rgba(30,91,79,.14); }
.cal-dl-link { color: var(--dkgreen); background: rgba(0,47,42,.06); border-color: rgba(0,47,42,.25); }
.cal-dl-link:hover { background: rgba(0,47,42,.12); }

/* Responsive de filas de calendario */
@media (max-width: 640px) {
  .cal-list-row,
  .cal-upcoming-list .cal-list-row,
  .cal-recent-list .cal-list-row {
    grid-template-columns: 1fr;
    gap: 4px;
    align-items: start;
    min-height: auto;
    padding: 10px 0;
  }
  .cal-row-date { font-size: 11px; }
  .cal-row-source { justify-self: start; }
  .cal-row-actions { justify-content: flex-start; }
}

/* Modal y acciones generales */
.cal-event-modal h3 { font-size: 15px; color: var(--dkgreen); margin-bottom: 8px; }
.cal-event-meta { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 12px; font-size: 13px; }
.cal-event-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.cal-more { font-family: var(--mono); font-size: 9px; color: var(--muted); cursor: pointer; text-align: center; }
.cal-more:hover { color: var(--dkgreen); }

.cal-months { display: grid; grid-template-columns: 1fr; gap: 16px; }
.cal-months.three { grid-template-columns: 1fr; }
@media (min-width: 900px) {
  .cal-months.three { grid-template-columns: repeat(3, 1fr); }
}

.cal-cell .chips { display: flex; flex-direction: column; gap: 2px; }
.cal-chip { min-height: 18px; display: flex; align-items: center; font-family: var(--mono); font-size: 9px; color: #fff; border-radius: 4px; padding: 1px 4px; cursor: pointer; line-height: 1.3; }

.cal-status.publicado { background:#e1efe8; color:#1e6b4f; }
.cal-status.próximo, .cal-status.pendiente { background:#fbf1da; color:#8a6d1f; }
.cal-status.no_anunciada { background:#eef0f2; color:#5c5f6a; }
.cal-status.evento { background:#e3f2fd; color:#0d47a1; }
.cal-status.reprogramado { background:#ffebee; color:#b71c1c; }

.cal-src-dot { width:8px; height:8px; border-radius:50%; display:inline-block; margin-right:5px; }
.cal-src-dot.ok { background:#1e6b4f; }
.cal-src-dot.warn { background:var(--gold); }
.cal-src-dot.error { background:var(--crimson); }

/* Controles y listas adicionales del calendario */
.cal-view-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between; margin-top: 12px; }
.cal-mobile-list { display: flex; flex-direction: column; gap: 8px; }
.cal-mobile-day { border: 1px solid var(--line-soft); border-radius: var(--radius); padding: 8px; }
.cal-mobile-daynum { font-family: var(--mono); font-size: 12px; color: var(--dkgreen); margin-bottom: 4px; }
.cal-mobile-day .chips { display: flex; flex-direction: column; gap: 2px; }

th.sortable { cursor: pointer; user-select: none; }
th.sortable:hover { background: var(--line); }

/* Agenda institucional y exportación editable */
.calendar-agenda {font-family:var(--sans)}
.calendar-agenda .cal-controls {background:#f7f9f8;padding:18px;border:1px solid var(--line);border-radius:8px;margin-bottom:18px}
.calendar-agenda .cal-filters {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.calendar-agenda .cal-filter-group {min-width:0}
.calendar-agenda .cal-filter-group label {font-family:var(--sans);font-size:12px;letter-spacing:0;text-transform:none;font-weight:600;color:var(--dkgreen)}
.calendar-agenda select {width:100%;font-family:var(--sans);min-height:40px}
.calendar-agenda .win-btn {font-family:var(--sans);font-size:13px;min-height:38px}
.cal-export-row {display:flex;justify-content:space-between;gap:12px;margin-top:16px}
.cal-selection {font-size:12px;color:var(--muted);margin-top:12px}
.cal-export-status {font-size:12px;color:var(--green)}
#cal-next {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}
.cal-next-item {display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;text-align:left;padding:13px 16px;background:white;border:1px solid var(--line);border-top:3px solid var(--green);border-radius:6px;font:inherit;color:var(--dkgreen);cursor:pointer}
.cal-next-date {width:100%;font-size:12px;color:var(--muted)}
.cal-next-item span:not(.cal-next-date),.cal-next-item small {font-size:12px}
.calendar-agenda .cal-months.three {grid-template-columns:1fr}
.calendar-agenda .cal-month {padding:20px;border-radius:8px}
.calendar-agenda .cal-month-title {font-family:var(--sans);font-size:22px;text-transform:capitalize;margin-bottom:14px}
.calendar-agenda .cal-grid {table-layout:fixed;width:100%}
.calendar-agenda .cal-grid th {font-family:var(--sans);font-size:11px;background:#edf3f0;color:var(--green)}
.calendar-agenda .cal-cell {height:105px;vertical-align:top;padding:6px}
.calendar-agenda .cal-cell.empty {background:#f7f8f7}
.calendar-agenda .cal-today {background:#fff;box-shadow:none}
.calendar-agenda .cal-today .cal-daynum {display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:auto;border-radius:50%;background:var(--green);color:#fff}
.calendar-agenda .cal-daynum {font-family:var(--sans);font-size:12px;font-weight:600;margin-bottom:5px}
.calendar-agenda .cal-chip {width:100%;text-align:left;display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid #e1e8e3;border-left:3px solid var(--event-color);background:#f4f7f5;color:var(--dkgreen);padding:6px;font-family:var(--sans);font-size:11px;white-space:normal;line-height:1.35}
.calendar-agenda .cal-chip-period {font-size:10px;color:#545f59;font-weight:400}
.calendar-agenda .cal-chip:hover,.cal-agenda-event:hover,.cal-next-item:hover {background:#e9f1ec}
.calendar-agenda button:focus-visible {outline:2px solid var(--gold);outline-offset:2px}
.cal-agenda-day {margin-bottom:18px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.cal-agenda-day h3 {background:#edf3f0;padding:10px 16px;font-size:15px;color:var(--dkgreen)}
.cal-agenda-event {width:100%;display:grid;grid-template-columns:110px 1fr 190px;gap:6px 16px;align-items:center;text-align:left;background:white;border:0;border-top:1px solid var(--line);padding:14px 16px;font-family:var(--sans);color:var(--ink);cursor:pointer}
.cal-agenda-event strong {color:var(--green)}
.cal-agenda-event small {grid-column:2/-1;color:var(--muted)}
.cal-agenda-name {font-size:13px}
@media(max-width:800px){.calendar-agenda .cal-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-agenda-event{grid-template-columns:90px 1fr}.cal-agenda-event>span:last-of-type{grid-column:2}#cal-next{grid-template-columns:1fr}.cal-next-item:nth-child(n+2){display:none}}
@media(max-width:480px){.calendar-agenda .cal-filters{grid-template-columns:1fr}.cal-export-row{flex-wrap:wrap}.calendar-agenda .cal-month{padding:12px}.cal-export-row .btn-primary{width:100%;justify-content:center}}

.cal-next-heading {font-size:14px;color:var(--green);margin:16px 0 0;font-weight:600}

/* Jerarquía del panel: periodo, visualización y filtros */
.calendar-agenda .cal-controls {display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:0;overflow:hidden}
.cal-toolbar-head {display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 24px}
.cal-period-block {display:flex;align-items:center;gap:22px;min-width:0}
.cal-period-nav {display:flex;align-items:center;gap:6px;flex-shrink:0}
.cal-period-nav .win-btn {min-width:38px;padding:6px 10px;background:white}
.cal-period-title {font-size:24px;line-height:1.25;font-weight:700;color:var(--dkgreen);margin:0}
.cal-result-count {font-size:12px;color:var(--muted);margin-top:5px}
.cal-download-block {display:flex;flex-direction:column;align-items:flex-end;gap:6px;max-width:280px}
.cal-download-block .btn {padding:10px 18px;font-size:13px}
.cal-download-block small {font-size:10px;color:var(--muted);text-align:right;line-height:1.4}
.cal-toolbar-views {display:flex;align-items:center;gap:28px;padding:14px 24px;border-top:1px solid var(--line-soft)}
.cal-control-cluster {display:flex;align-items:center;gap:12px}
.cal-control-label {font-size:11px;font-weight:600;color:var(--muted)}
.calendar-agenda .cal-toolbar-views .cal-view-toggle {display:inline-flex;gap:0;border:1px solid #dce3de;border-radius:6px;overflow:hidden;padding:3px;background:#f4f7f5}
.calendar-agenda .cal-toolbar-views .win-btn {border:0;border-radius:4px;background:transparent;min-height:32px;padding:5px 13px;font-size:12px;margin:0;box-shadow:none}
.calendar-agenda .cal-toolbar-views .win-btn[aria-pressed="true"] {background:var(--green);color:#fff}
.calendar-agenda .cal-toolbar-views .win-btn:focus-visible {outline-offset:-2px}
.cal-toolbar-filters {padding:16px 24px 20px;border-top:1px solid var(--line-soft);background:#fafbfa}
.cal-filter-heading {display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;min-height:22px;font-size:12px;color:var(--dkgreen);font-weight:600}
.cal-reset {font:inherit;font-size:11px;font-weight:500;color:var(--green);border:0;background:none;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:2px 0}
.calendar-agenda .cal-filters {grid-template-columns:1.6fr 1fr .85fr 1fr;gap:14px;width:100%}
.calendar-agenda .cal-filter-group label {font-size:11px;color:var(--muted);font-weight:500}
.calendar-agenda .cal-filter-group select {font-size:12px;min-height:38px;background:#fff;border-color:#dce3de}
.cal-active-filters {display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.cal-active-filters[hidden],.cal-reset[hidden] {display:none}
.cal-filter-chip {display:inline-flex;align-items:center;gap:12px;border:1px solid #d5e3d9;border-radius:5px;background:#edf4ef;color:var(--green);padding:5px 9px;font-family:var(--sans);font-size:11px;cursor:pointer}
.cal-filter-chip:hover {background:#dfece3}
.cal-filter-chip span:last-child {font-size:15px;line-height:1}
.calendar-agenda .cal-export-status:empty {display:none}
.calendar-agenda .cal-export-status:not(:empty) {padding:10px 24px;border-top:1px solid var(--line-soft);font-size:12px}
.calendar-agenda .cal-category-legend {justify-content:flex-start;gap:8px 18px;padding:10px 4px;margin:0;font-size:11px;color:var(--muted)}
.calendar-agenda .cal-category-legend .cal-leg-item {font-size:11px}
.calendar-agenda .cal-category-legend .cal-leg-dot {width:7px;height:7px;border-radius:2px}
@media(max-width:850px){.cal-toolbar-head{align-items:flex-start;gap:16px;padding:18px}.cal-period-block{gap:14px}.cal-period-title{font-size:21px}.cal-download-block{max-width:220px}.calendar-agenda .cal-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-toolbar-views{padding:12px 18px;gap:20px}.cal-toolbar-filters{padding:14px 18px 18px}}
@media(max-width:600px){.cal-toolbar-head{flex-direction:column;align-items:stretch}.cal-period-block{flex-direction:row-reverse;justify-content:space-between}.cal-period-title{font-size:20px}.cal-download-block{align-items:stretch;max-width:none}.cal-download-block .btn{justify-content:center}.cal-download-block small{text-align:center}.cal-toolbar-views{flex-wrap:wrap;gap:10px 20px}.cal-control-cluster{gap:8px}.cal-control-label{min-width:40px}.calendar-agenda .cal-filters{grid-template-columns:1fr}.cal-period-nav .win-btn{min-width:32px;padding:5px 8px}.cal-toolbar-filters{padding-bottom:16px}}

.cal-period-nav .win-btn {color:var(--green);font-weight:600}

/* Fichas de indicadores: lectura ejecutiva, metadatos bajo demanda */
.ficha .ficha-head {display:block;border-bottom:0;margin:0 0 20px;padding:0}
.fh-top {display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
.fh-identity {min-width:0;max-width:780px}
.ficha .fh-sigla {font-family:var(--sans);font-size:11px;letter-spacing:.08em;color:var(--gold);margin-bottom:6px}
.ficha .fh-name {display:block;overflow:visible;font-family:var(--sans);font-size:27px;line-height:1.25;margin:0 0 12px;max-width:780px;letter-spacing:-.02em}
.fh-context {display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:12px;color:var(--muted)}
.fh-period {font-weight:600;color:var(--dkgreen)}
.fh-context .state-badge {font-family:var(--sans);font-size:10px;letter-spacing:0;text-transform:none}
.ficha .product-bar {justify-content:flex-end;flex-shrink:0;gap:6px;max-width:330px}
.ficha .product-bar .btn {font-family:var(--sans);font-size:11px;text-transform:none;letter-spacing:0;padding:8px 11px;min-height:35px;border-color:var(--line);border-radius:5px;white-space:nowrap}
.ficha .product-bar [data-product="nota"].product-ok {background:var(--green);color:#fff;border-color:var(--green)}
.ficha .product-bar [data-product="nota"].product-ok:hover {background:var(--dkgreen)}
.ficha .product-bar [aria-disabled="true"] {opacity:.5}
.fh-dates {display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;padding:12px 0;margin-top:14px;border-top:1px solid var(--line-soft);font-size:11px;color:var(--ink)}
.fh-dates>div {display:flex;flex-wrap:wrap;gap:5px 8px}
.fh-date-label {color:var(--muted)}
.fh-dates .btn {border:0;padding:0;background:none;min-height:24px;font-size:11px;font-weight:500;color:var(--green);text-decoration:underline;text-underline-offset:3px}
.fh-details {border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);padding:9px 0;font-size:12px}
.fh-details summary {cursor:pointer;color:var(--green);font-size:11px;font-weight:500;width:fit-content}
.fh-details[open] summary {margin-bottom:12px}
.fh-details .fh-desc {max-width:900px;font-size:12px;margin:0 0 12px}
.fh-technical {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 20px;margin-bottom:12px}
.fh-technical dt {color:var(--muted);font-size:10px;margin-bottom:3px}
.fh-technical dd {margin:0;font-size:12px}
.fh-details>a {font-size:11px}
.ficha-note-status {font-size:12px;padding:10px 12px;border-left:3px solid var(--gold);background:#faf7ee;margin-bottom:16px;color:#725b26}
.ficha .mini-kpis {grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:18px}
.ficha .mini {padding:17px 18px;border:1px solid var(--line);border-radius:7px;background:#fff;min-width:0;box-shadow:none}
.ficha .mini.dark {background:#f2f7f4;border-color:#d8e5dc;border-top:3px solid var(--green);padding-top:15px}
.ficha .mini .lbl,.ficha .mini.dark .lbl {font-family:var(--sans);font-size:11px;line-height:1.35;letter-spacing:0;text-transform:none;color:#56625b;margin-bottom:9px;font-weight:500}
.ficha .mini .num,.ficha .mini.dark .num {font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:29px;font-weight:650;line-height:1.2;letter-spacing:-.02em;color:var(--dkgreen);overflow-wrap:anywhere}
.ficha .mini .num.metric-long {font-size:21px}
.metric-value {display:inline}
.ficha .mini .metric-unit {display:block;margin-top:5px;font-size:11px;line-height:1.4;letter-spacing:0;font-weight:400;color:var(--muted)}
.ficha .mini .sub,.ficha .mini.dark .sub {font-family:var(--sans);font-size:11px;line-height:1.5;color:var(--muted);margin-top:8px}
.ind-toolbar-wrap {margin-bottom:14px}
.ind-nav {gap:16px}
.ind-nav .nav-link {font-size:12px;font-weight:500}
.ind-nav .nav-link:first-child {margin-right:auto}
@media(max-width:900px){.fh-top{flex-direction:column;gap:14px}.ficha .product-bar{max-width:none;justify-content:flex-start;flex-wrap:wrap}.ficha .fh-name{font-size:24px}.fh-technical{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.ficha .fh-name{font-size:22px}.ficha .mini-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ficha .mini{padding:13px}.ficha .mini .num{font-size:25px}.fh-technical{grid-template-columns:1fr}.fh-dates{gap:8px}.fh-dates>div{width:100%}.ind-nav{flex-wrap:wrap}}
@media print{.fh-top,.fh-dates,.fh-details,.ficha-note-status{display:none!important}}



/* Sistema editorial común: identidad, resultado y acción. */
@media screen {
  body {background:#f3f4f1;font-size:15px}
  .wrap {padding-top:24px}
  .site-header {background:var(--dkgreen);border:0;border-radius:10px;padding:26px 30px;margin:0}
  .site-header::after {display:none}
  .header-top {flex-direction:row;justify-content:space-between;align-items:center;text-align:left;gap:24px}
  .header-title {flex:1 1 460px}
  .site-header h1 {font-size:28px;line-height:1.25;color:#fff;max-width:680px}
  .header-side {justify-content:flex-start;gap:18px}
  .meta-pill .k {color:#ccdbd5;font-size:11px;text-transform:none;letter-spacing:0}
  .meta-pill .v {color:#fff;font-size:13px}
  .site-header .btn-primary {background:#fff;color:var(--dkgreen);border-color:#fff;min-height:40px}
  .site-header .btn-primary:hover {background:#e6eeea}
  .tabs {background:#f3f4f1;border-bottom:1px solid #d8dfd9;margin:10px 0 26px;padding:10px 0;gap:0}
  .nav-row {gap:5px}
  .tab {padding:10px 14px;color:#4b5750;font-size:13px;border-radius:6px}
  .tab[aria-selected="true"] {background:var(--green);color:#fff;border:1px solid var(--green);border-radius:6px}
  .section-title {border:0;padding:0;font-size:26px;margin:0 0 20px;line-height:1.25}
  .section-title:has(+.section-sub) {margin-bottom:8px}
  .section-sub {font-size:13px;color:#59655d;margin-bottom:22px}
  .panel {border:1px solid #e0e5df;border-radius:8px;padding:22px 24px}
  .panel h3,.block-sub {font-size:19px;line-height:1.35}
  .matrix {gap:14px;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));margin-bottom:24px}
  .matrix-card {border:1px solid #dce3dc;border-radius:8px;padding:20px;gap:9px;min-height:285px}
  .matrix-card:hover {background:#fff;border-color:var(--green);box-shadow:0 3px 14px #49372D0d}
  .mc-top {align-items:center;flex-wrap:wrap;gap:6px}
  .mc-title {font-size:22px;flex:1 1 125px;white-space:normal;overflow:visible;line-height:1.2}
  .matrix-card .state-badge {position:static;max-width:100%;font-size:10px;white-space:normal}
  .mc-name {font-size:12px;line-height:1.4;min-height:2.8em;max-height:none;-webkit-line-clamp:unset;display:block;overflow:visible}
  .mc-eyebrow {font-size:12px;font-weight:600;letter-spacing:0;text-transform:none;color:#536258;margin:0}
  .mc-value {font-size:31px;line-height:1.2;font-weight:700;letter-spacing:-.025em;font-variant-numeric:tabular-nums}
  .mc-value .metric-unit {display:block;font-size:12px;font-weight:400;letter-spacing:0;color:#536258;line-height:1.4;margin-top:5px}
  .mc-metric {font-size:12px;min-height:0;color:#536258;line-height:1.4}
  .mc-deltas {padding-top:12px;gap:12px;min-height:48px}
  .mc-delta .d-val {font-size:16px;font-variant-numeric:tabular-nums}
  .mc-delta .d-lbl {font-size:11px;line-height:1.4;max-height:none;display:block;overflow:visible}
  .mc-delta.up .d-val {color:#176b49}
  .state-badge {font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:11px}
  .panorama-cols {grid-template-columns:1fr 1fr}
  .movement-counts {display:flex;gap:24px;margin:20px 0 16px}
  .movement-count {display:flex;flex:1;flex-direction:column;gap:3px}
  .movement-count strong {font-size:30px;line-height:1.15;color:var(--green);font-variant-numeric:tabular-nums}
  .movement-count.down strong {color:var(--wine)}
  .movement-count.neutral strong {color:#526159}
  .movement-count span {font-size:12px;color:#526159}
  .attention-list {padding-left:18px;font-size:13px;margin:12px 0}
  .cal-item {align-items:flex-start}
  .cal-item .date {font-size:12px;min-width:110px}
  .cal-item span:last-child {font-size:13px}
  .acceso-link {display:inline-block;margin-top:10px;font-size:12px}
  .ficha {padding:26px;border-radius:10px}
  .ficha .mini-kpis {gap:12px}
  .ficha .mini.dark {background:var(--dkgreen);border-color:var(--dkgreen);border-top:1px solid var(--dkgreen);padding-top:17px}
  .ficha .mini.dark .num {color:#fff!important}
  .ficha .mini.dark .lbl,.ficha .mini.dark .sub,.ficha .mini.dark .metric-unit {color:#d8e5de}
  .ficha .mini .num {font-size:32px;font-weight:700}
  .ficha .mini .lbl {font-size:12px;font-weight:500}
  .ficha .mini .sub {font-size:12px}
  .ficha .product-bar {max-width:380px}
  .ficha .product-bar .btn {font-size:12px;min-height:38px}
  .fh-details summary,.fh-dates {font-size:12px}
  .ficha-block {margin-top:26px}
  .indicator-reading {padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .reading-bullets {font-size:14px;line-height:1.65;padding-left:20px}
  .reading-bullets li+li {margin-top:9px}
  .reading-bullets strong,.indicator-reading strong {font-weight:700;color:var(--dkgreen)}
  .prose {font-size:14px;line-height:1.65;text-align:left}
  .chart-caption {font-size:12px;line-height:1.6;color:#59655d;margin-bottom:16px}
  .range-card {border:0;background:none;padding:8px 0;margin-top:8px}
  .indicator-extra {border-top:1px solid var(--line);margin-top:24px;padding-top:16px}
  .historical-metrics .mini-kpis {margin-top:16px}
  .historical-metrics .num {color:var(--dkgreen)!important}
  .indicator-extra>summary {font-size:13px;font-weight:600;color:var(--green);cursor:pointer}
  .range-card summary {font-size:12px;color:var(--green);cursor:pointer;width:fit-content}
  .range-card[open] summary {margin-bottom:12px}
  .range-max,.range-min {color:var(--ink)!important}
  .history-toolbar {display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px}
  .history-data tbody tr:first-child td {font-weight:600;background:#eef3ef}
  .table-wrap {max-height:520px;background:#fff}
  th {font-family:var(--sans);font-size:11px;letter-spacing:0;text-transform:none;color:#46564c}
  td {font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:12px}
  .notes {font-size:11px}
  .site-footer {display:flex;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;font-size:11px;color:#59655d;border-color:#d8dfd9}
  .site-footer a {white-space:nowrap;font-weight:600;text-decoration:none}
  .cal-source-context {display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 24px;margin-bottom:18px}
  .cal-source-context .section-sub,.cal-source-context .cal-legend {margin:0;padding:0;font-size:12px}
  .calendar-agenda .cal-toolbar-head {background:var(--dkgreen)}
  .calendar-agenda .cal-period-title {color:#fff}
  .calendar-agenda .cal-result-count,.calendar-agenda .cal-download-block small {color:#d5e3dc}
  .calendar-agenda .cal-download-block .btn-primary {background:#fff;color:var(--dkgreen);border-color:#fff}
  .calendar-agenda .cal-period-nav .win-btn {background:transparent;color:#fff;border-color:#63847b}
  .calendar-agenda .cal-period-nav .win-btn:hover {background:var(--green)}
  .calendar-agenda .cal-period-nav .win-btn:disabled {opacity:.5}
  .calendar-agenda .cal-chip {background:#f3f5f4;background:color-mix(in srgb,var(--event-color) 9%,#fff);color:var(--ink);border:1px solid #e5e9e5;border-left:2px solid var(--event-color);border-radius:4px;box-shadow:none;padding:7px 8px;gap:3px}
  .calendar-agenda .cal-chip strong {font-size:12px;font-weight:700;color:var(--dkgreen);line-height:1.35}
  .calendar-agenda .cal-chip-period {font-size:11px;color:#4c5952;line-height:1.4}
  .calendar-agenda .cal-chip-period:last-child {font-size:10px;color:#58645e}
  .calendar-agenda .cal-chip:hover {background:#e9eeeb;background:color-mix(in srgb,var(--event-color) 15%,#fff)}
  .cal-agenda-day h3 {background:var(--green);color:#fff}
  .method-topics {display:grid;gap:0;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
  .method-topic {padding:18px 22px}
  .method-topic+.method-topic {border-top:1px solid var(--line)}
  .method-topic summary,.technical-downloads>summary {font-size:15px;font-weight:600;color:var(--dkgreen);cursor:pointer}
  .method-topic p {font-size:13px;max-width:900px;margin-top:12px;color:#4d5d52}
  .source-series {font-size:11px;color:#526159;margin-top:6px;overflow-wrap:anywhere}
  .source-series summary {cursor:pointer;font-size:10px}
  .download-feature {display:flex;align-items:center;justify-content:space-between;gap:24px;background:var(--dkgreen);padding:30px;border-radius:8px;color:#fff;margin-bottom:26px}
  .download-feature h3 {font-size:24px;color:#fff;margin:6px 0 8px}
  .download-feature p {font-size:13px;color:#d5e3dc;max-width:600px}
  .download-format {font-size:11px;color:#d5e3dc}
  .download-feature .btn {background:#fff;color:var(--dkgreen);border-color:#fff;padding:12px 18px}
  .technical-downloads {background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px 24px}
  .technical-downloads[open]>summary {margin-bottom:20px}
  .technical-downloads .dl-grid {gap:24px;grid-template-columns:repeat(3,minmax(0,1fr))}
  .technical-downloads .dl-card {border:0;border-radius:0;padding:0}
  .technical-downloads .dl-card p {margin-bottom:0}
  .csv-downloads {border-top:1px solid var(--line);margin-top:20px;padding-top:16px;font-size:13px}
  .csv-downloads summary {color:var(--green);cursor:pointer}
  .csv-downloads a {display:inline-block;margin:12px 18px 0 0;font-size:12px}
  @media(max-width:900px) {
    .site-header {padding:24px}.site-header h1 {font-size:26px}
    .panorama-cols {grid-template-columns:1fr}
    .technical-downloads .dl-grid {grid-template-columns:1fr}
  }
  @media(max-width:600px) {
    .wrap {padding:14px 12px 40px}.site-header {padding:22px 20px}
    .site-header h1 {font-size:24px}.header-side {gap:14px;justify-content:space-between}
    .header-side .btn {font-size:12px}.header-side .meta-pill .v {font-size:12px}
    .nav-row {flex-wrap:nowrap;overflow-x:auto;width:100%;padding:3px 2px 8px}.tab {font-size:12px;padding:9px 11px}
    .tabs {margin-bottom:22px}.section-title {font-size:23px}
    .matrix {grid-template-columns:1fr}.matrix-card {min-height:0;padding:20px}
    .mc-name {min-height:0}.mc-deltas {margin-top:6px}
    .ficha {padding:18px 14px}.ficha .mini .num {font-size:26px}
    .ficha .mini.dark {padding-top:13px}.panel {padding:18px}
    .download-feature {padding:24px;flex-direction:column;align-items:stretch}
    .download-feature .btn {justify-content:center}
    .movement-counts {gap:16px}.movement-count span {font-size:11px}
  }
}
[hidden] {display:none!important}
@media print {.history-toolbar {display:none}.range-card {display:none}.history-data tbody tr[hidden] {display:table-row!important}}

/* Local bulletin workspace, opened only on request inside the indicator. */
.bulletin-upload-panel{margin-top:20px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.bulletin-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;background:#f4f6f4;border-bottom:1px solid var(--line)}.bulletin-panel-heading h3{margin:0;font:600 15px var(--sans);color:var(--dkgreen)}.bulletin-panel-close{font:600 12px var(--sans);background:#fff;border:1px solid var(--line);padding:7px 12px}.bulletin-upload-frame{display:block;border:0;width:100%;height:380px;background:#fff}@media(max-width:600px){.bulletin-panel-heading{padding:12px 16px}.bulletin-upload-frame{height:440px}}@media print{.bulletin-upload-panel{display:none!important}}

.update-health {padding:12px 16px;margin:12px 0;background:#faf7ee;color:#725b26;border-radius:6px;font-size:13px;line-height:1.6}
.update-health[hidden] {display:none}
@media print {.update-health {display:none!important}}

.indicator-search{position:relative;margin:16px 0 24px;max-width:560px}
.indicator-search input{box-sizing:border-box;width:100%;padding:13px 17px;border:1px solid #dce4e0;border-radius:14px;background:#fafcfb;color:#161a1d;font:inherit;outline-offset:3px}
.search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:40;background:white;border:1px solid #dce4e0;border-radius:14px;box-shadow:0 10px 28px #49372D14;overflow:hidden}
.search-result{display:flex;flex-direction:column;gap:3px;width:100%;padding:12px 17px;text-align:left;background:white;border:0;border-bottom:1px solid #f0f3f1;font:inherit;cursor:pointer}
.search-result:hover,.search-result:focus-visible{background:#eff5f2}.search-result small{color:#68746d}.search-empty{padding:0 17px;color:#68746d}

@keyframes search-found{from{box-shadow:0 0 0 3px #A67C5255}to{box-shadow:0 0 0 0 transparent}}
.view.search-found{animation:search-found 1.5s ease-out;border-radius:12px}
@media(prefers-reduced-motion:reduce){.view.search-found{animation:none}}

.ied-state-ranking td:nth-child(2), .ied-state-ranking th:nth-child(2) { text-align: left; }

/* Ranking estatal: densidad y color solo para movimientos de posición. */
.ied-ranking-block { max-width: 1080px; }
.ied-ranking-block .block-sub { margin-bottom: 5px; }
.ied-ranking-period { margin: 0 0 12px; font-size: 13px; color: var(--muted); }
.ied-ranking-wrap { max-height: none; border-radius: 7px; }
.ied-state-ranking { table-layout: fixed; min-width: 640px; }
.ied-state-ranking th { padding: 8px 12px; font-family: var(--sans); font-size: 12px; letter-spacing: 0; text-transform: none; background: #f4f5f4; }
.ied-state-ranking td { padding: 6px 12px; font-family: var(--sans); font-size: 13px; line-height: 1.45; font-variant-numeric: tabular-nums; }
.ied-state-ranking td:first-child, .ied-state-ranking th:first-child { text-align: center; color: var(--muted); }
.ied-state-ranking tbody tr:hover td { background: #f7f9f8; }
.ied-state-ranking tr[hidden] { display: none; }
.ied-rank-change { font-weight: 600; }
.ied-rank-change.up { color: #23734d; }
.ied-rank-change.down { color: #b23943; }
.ied-rank-change.flat { color: #8a918d; font-weight: 400; }
.ied-ranking-toggle { display: inline-block; margin: 10px 0 6px; padding: 4px 0; border: 0; background: transparent; color: var(--green); font: 600 13px var(--sans); cursor: pointer; }
.ied-ranking-toggle:hover { text-decoration: underline; }
.ied-ranking-toggle:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; border-radius: 2px; }
.ied-ranking-source { margin: 0; font-size: 11px; color: var(--muted); line-height: 1.5; }
.ied-ranking-source a { color: inherit; text-underline-offset: 2px; }
@media(max-width:700px) { .ied-state-ranking td,.ied-state-ranking th { padding-left: 9px; padding-right: 9px; } }

/* MacroMéxico: provisional commercial identity. */
.site-header { border-bottom: 1px solid var(--line); padding-bottom: 22px; }
.site-header::after { display: none; }
.brand-description { margin-top: 8px; color: var(--muted); font-size: 15px; line-height: 1.5; }
.btn-primary:hover { background: #3B2C24; }
@media (max-width: 600px) { .site-header h1 { font-size: 29px; } .brand-description { font-size: 14px; } }

/* Signs describe increases/decreases, not an economic judgement. */
.mc-delta.up .d-val { color: var(--positive); }
.mc-delta.down .d-val { color: var(--negative); }
.mov-col.up { border-top-color: var(--positive); }
.mov-col.down { border-top-color: var(--negative); }

/* Warm commercial palette: white cards on ivory, espresso navigation. */
.site-header h1 { color: #FAF8F5; }
.site-header .brand-description { color: #E9DDD2; }
@media screen { body { background: var(--paper); } }
.section-title { border-left-color: #A67C52; }
.matrix-card:hover { border-left-color: #A67C52; }
