/*
 * proyectos.cl — sistema visual «Escala»
 *
 * La identidad sale de cómo compra el Estado, no de una plantilla: cada
 * licitación pública tiene un tramo de monto (L1, LE, LP, LR) y cada tramo su
 * color, que se repite en la fila, la ficha, los accesos de la portada y la
 * franja bajo la cabecera. La tinta es casi negra y el amarillo de señalética
 * marca solo lo que vence. Superficies planas: la profundidad la dan los
 * bordes, nunca sombras difusas ni degradados.
 *
 * Tipografía autoalojada (ninguna llamada a Google Fonts):
 *   Archivo (Omnibus-Type, Buenos Aires) en ancho condensado para títulos: la
 *     voz de la señalética y los avisos oficiales.
 *   Libre Franklin (Impallari, Argentina) para leer: la gótica de los diarios.
 *   IBM Plex Mono para códigos y montos, que se leen columna abajo.
 * Todo componente consume estos tokens; no se editan salidas en dist/.
 */

@font-face { font-family: "Archivo"; src: url("/fonts/archivo.woff2") format("woff2"); font-weight: 600 800; font-stretch: 62% 100%; font-style: normal; font-display: swap; }
@font-face { font-family: "Libre Franklin"; src: url("/fonts/libre-franklin.woff2") format("woff2"); font-weight: 400 700; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/fonts/ibm-plex-mono-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }

:root {
  color-scheme: light;
  font-size: 106.25%;
  --color-bg: #f4f6fb;
  --color-surface: #ffffff;
  --color-surface-2: #edf1f8;
  --color-surface-3: #dfe5ef;
  --color-text: #0e1726;
  --color-text-2: #2b3a52;
  --color-muted: #566379;
  --color-line: #dce2ec;
  --color-line-strong: #b0bacb;
  --color-brand: #0e1726;
  --color-brand-hover: #1f2c42;
  --color-brand-step: #000000;
  --color-brand-soft: #e6ebf4;
  --color-on-brand: #ffffff;
  --color-link: #2448c8;
  --color-signal: #ffb800;
  --color-signal-strong: #e5a500;
  --color-on-signal: #1a1300;
  --color-signal-soft: #fff3d1;
  --color-danger: #a8261f;
  --color-danger-soft: #fbe9e7;
  --color-band: #15263f;
  --color-on-band: #ffffff;
  --color-on-band-2: #c5d0e0;
  --color-pie: #0e1a2c;
  --color-focus: #0e1726;
  --estado-abierta: #1d6b4f;
  --estado-abierta-bg: #e1f1e9;
  --estado-cerrada: #566174;
  --estado-cerrada-bg: #e6e9ee;
  --l1: #0b7a3e; --le: #0a6e84; --lp: #2b50d0; --lr: #6833d6; --otro: #556274;
  --l1-s: #e4f4ea; --le-s: #e1f2f6; --lp-s: #e7ecfc; --lr-s: #efe8fc; --otro-s: #eceff3;
  --l1-v: #12a150; --le-v: #0b9bb5; --lp-v: #2f5bea; --lr-v: #7a3ff2;
  --t: var(--otro); --t-s: var(--otro-s); --t-v: transparent; --t-on: #ffffff;
  --estrella: #f5b400; --estrella-borde: #a87800; --plazo-on: var(--color-text); --plazo-pronto: #e0a100;
  --font-sans: "Libre Franklin", "Franklin Gothic Book", "Helvetica Neue", Arial, sans-serif;
  --font-display: "Archivo", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
  --t-pagina: clamp(2.35rem, 5.4vw, 4.4rem);
  --t-titulo: clamp(2rem, 4.2vw, 3rem);
  --t-seccion: clamp(1.6rem, 3vw, 2.25rem);
  --t-panel: 1.3rem;
  --t-fila: 1rem;
  --text-12: .75rem;
  --text-14: .875rem;
  --text-16: 1rem;
  --text-18: 1.125rem;
  --text-20: 1.25rem;
  --text-24: 1.5rem;
  --space-1: .25rem;
  --space-2: .5rem;
  --space-3: .75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --radius-1: 3px;
  --radius-2: 4px;
  --radius-3: 6px;
  --wrap: 75rem;
  --motion-fast: 120ms;
}

:root[data-text-size="large"] { font-size: 118.75%; }
:root[data-text-size="xlarge"] { font-size: 131.25%; }

:root[data-theme="dark"] {
  color-scheme: dark;
  --color-bg: #0a101c;
  --color-surface: #111a2a;
  --color-surface-2: #172338;
  --color-surface-3: #22314a;
  --color-text: #e8eef7;
  --color-text-2: #c2ccdb;
  --color-muted: #94a0b5;
  --color-line: #223049;
  --color-line-strong: #3a4a66;
  --color-brand: #e8eef7;
  --color-brand-hover: #ffffff;
  --color-brand-step: #8f9bb0;
  --color-brand-soft: #1c2840;
  --color-on-brand: #0a101c;
  --color-link: #93b0ff;
  --color-signal: #ffb800;
  --color-signal-strong: #e5a500;
  --color-on-signal: #1a1300;
  --color-signal-soft: #2e2608;
  --color-danger: #f0a39b;
  --color-danger-soft: #3a1e1b;
  --color-band: #17243a;
  --color-on-band: #eef2f8;
  --color-on-band-2: #b5c1d3;
  --color-pie: #090d14;
  --color-focus: #ffb800;
  --estado-abierta: #82d3b0;
  --estado-abierta-bg: #173127;
  --estado-cerrada: #a8b1c0;
  --estado-cerrada-bg: #232b37;
  --l1: #5cd08d; --le: #4cc3da; --lp: #93a9ff; --lr: #bc9bff; --otro: #a3afc2;
  --l1-s: #12291d; --le-s: #0f2830; --lp-s: #18213f; --lr-s: #231a3d; --otro-s: #1c2433;
  --t: var(--otro); --t-s: var(--otro-s); --t-on: #0a101c; --plazo-on: var(--color-text-2);
}

/* Sin JS, theme.js no marca data-theme: se respeta la preferencia del sistema. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    color-scheme: dark;
    --color-bg: #0a101c; --color-surface: #111a2a; --color-surface-2: #172338; --color-surface-3: #22314a;
    --color-text: #e8eef7; --color-text-2: #c2ccdb; --color-muted: #94a0b5; --color-line: #223049; --color-line-strong: #3a4a66;
    --color-brand: #e8eef7; --color-brand-hover: #ffffff; --color-brand-step: #8f9bb0; --color-brand-soft: #1c2840; --color-on-brand: #0a101c;
    --color-link: #93b0ff; --color-signal-strong: #e5a500; --color-signal-soft: #2e2608;
    --color-danger: #f0a39b; --color-danger-soft: #3a1e1b; --color-band: #17243a; --color-on-band: #eef2f8; --color-on-band-2: #b5c1d3;
    --color-pie: #090d14; --color-focus: #ffb800;
    --estado-abierta: #82d3b0; --estado-abierta-bg: #173127; --estado-cerrada: #a8b1c0; --estado-cerrada-bg: #232b37;
    --l1: #5cd08d; --le: #4cc3da; --lp: #93a9ff; --lr: #bc9bff; --otro: #a3afc2;
    --l1-s: #12291d; --le-s: #0f2830; --lp-s: #18213f; --lr-s: #231a3d; --otro-s: #1c2433;
    --t: var(--otro); --t-s: var(--otro-s); --t-on: #0a101c; --plazo-on: var(--color-text-2);
  }
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: clip; }
[id] { scroll-margin-top: 5rem; }
body { margin: 0; background: var(--color-bg); color: var(--color-text); font: 400 var(--text-16)/1.6 var(--font-sans); overflow-wrap: anywhere; -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; color: inherit; }
button, select { cursor: pointer; }
a { color: var(--color-link); text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { color: var(--color-text); text-decoration-thickness: 2px; }
img, svg { max-width: 100%; }
h1, h2, h3 { margin-top: 0; color: var(--color-text); font-family: var(--font-display); font-stretch: 78%; font-weight: 700; line-height: 1.08; letter-spacing: -.005em; text-wrap: balance; }
h1, h2 { font-stretch: 100%; letter-spacing: -.012em; }
h1 { font-size: var(--t-titulo); font-weight: 800; }
h2 { font-size: var(--t-seccion); }
h3 { font-size: var(--t-panel); }
p { margin-top: 0; }
abbr[title] { text-decoration: none; cursor: help; }
[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.i { width: 1.15em; height: 1.15em; flex: none; vertical-align: -.2em; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 100; top: var(--space-3); left: var(--space-3); transform: translateY(-200%); padding: var(--space-3) var(--space-4); border-radius: var(--radius-2); background: var(--color-signal); color: var(--color-on-signal); font-weight: 700; }
.skip-link:focus { transform: translateY(0); }

/* ---------- Cabecera ---------- */
.top { position: sticky; z-index: 20; top: 0; background: var(--color-surface); border-bottom: 1px solid transparent; }
/* Franja de la marca: los cuatro tramos, de menor a mayor monto. */
.top::after { position: absolute; left: 0; right: 0; bottom: -1px; height: 4px; background: linear-gradient(90deg, var(--l1-v) 0 25%, var(--le-v) 0 50%, var(--lp-v) 0 75%, var(--lr-v) 0); content: ""; }
/* La cabecera mide en px: A+ agranda la lectura, no los controles, y así
 * cabe entera a 320 px incluso con el texto en XL. */
.top-in { width: min(100%, var(--wrap)); min-height: 68px; margin: 0 auto; padding: 8px 24px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 32px; }
.marca { display: inline-flex; align-items: center; gap: .6rem; color: var(--color-text); text-decoration: none; white-space: nowrap; }
.marca:hover { color: var(--color-text); }
.marca-mark { width: 34px; height: 34px; flex: none; }
.marca-mark--claro, :root[data-theme="dark"] .marca-mark, .pie .marca-mark { display: none; }
:root[data-theme="dark"] .marca-mark--claro, .pie .marca-mark--claro { display: block; }
.marca-word { font-family: var(--font-display); font-size: 24px; font-stretch: 70%; font-weight: 800; letter-spacing: -.005em; line-height: 1; color: var(--color-text); }
.marca-word span { color: var(--color-muted); font-weight: 700; }
.top nav { display: flex; justify-content: flex-end; gap: 20px; }
.top nav a { min-height: 44px; flex: none; display: inline-flex; align-items: center; border-bottom: 2px solid transparent; color: var(--color-text-2); font-size: 16px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.top nav a:hover { border-bottom-color: var(--color-signal); color: var(--color-text); }
.access-tools { display: flex; align-items: center; gap: var(--space-1); }
.text-size-controls { display: flex; }
.access-tools { gap: 4px; }
.text-size-controls button, .theme-toggle { width: 44px; height: 44px; flex: none; display: grid; place-items: center; padding: 0; border: 1px solid var(--color-line); background: var(--color-surface); color: var(--color-text-2); font-size: 15px; font-weight: 700; transition: background-color var(--motion-fast), color var(--motion-fast); }
.text-size-controls button:first-child { border-radius: var(--radius-2) 0 0 var(--radius-2); }
.text-size-controls button:last-child { margin-left: -1px; border-radius: 0 var(--radius-2) var(--radius-2) 0; }
.theme-toggle { margin-left: 4px; border-radius: var(--radius-2); }
.text-size-controls button:hover:not(:disabled), .theme-toggle:hover { background: var(--color-surface-2); color: var(--color-text); }
.text-size-controls button:disabled { cursor: not-allowed; color: var(--color-muted); opacity: .5; }
.theme-icon { width: 19px; height: 19px; }
:root[data-theme="light"] .theme-icon--sun, :root[data-theme="dark"] .theme-icon--moon { display: none; }

main { width: min(100%, var(--wrap)); margin: 0 auto; padding: 0 var(--space-6) var(--space-12); }

/* ---------- Títulos de página ---------- */
.hero { padding: var(--space-10) 0 var(--space-6); }
.hero--silo { max-width: 52rem; }
.hero h1 { max-width: 22ch; margin-bottom: var(--space-4); }
.hero > p:not(.eyebrow):not(.hero-actions) { max-width: 44rem; margin-bottom: 0; color: var(--color-text-2); font-size: var(--text-18); }
.hero-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin: var(--space-5) 0 0; }
.hero-highlight { font-style: normal; background: linear-gradient(transparent 60%, var(--color-signal) 60%, var(--color-signal) 88%, transparent 88%); color: inherit; padding-inline: .05em; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.eyebrow { margin-bottom: var(--space-2); color: var(--color-link); font-size: var(--text-14); font-weight: 600; line-height: 1.35; }

/* ---------- Portada: titular con las cifras del día; buscador y tramos a la vista ---------- */
/* A 1208×570 el buscador entero queda sobre el pliegue. La tira de regiones
 * baja al final, a todo el ancho. */
.market-tool { display: grid; gap: var(--space-5); }
.market-tool--portada { grid-template-columns: minmax(0, 1fr) minmax(18rem, 21rem); grid-template-areas: "texto texto" "form tramos" "aviso aviso" "radar radar" "lista lista" "tira tira"; column-gap: var(--space-8); row-gap: var(--space-4); padding-top: var(--space-4); }
.market-tool--portada .portada-texto { grid-area: texto; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "fuente fuente" "h1 h1" "bajada pulso" "primera pulso" "desde desde"; column-gap: var(--space-8); align-items: start; }
.market-tool--portada .filter-panel { grid-area: form; align-self: start; padding: var(--space-4); }
.market-tool--portada .tramos { grid-area: tramos; min-width: 0; }
.market-tool--portada .aviso-cierre { grid-area: aviso; }
.market-tool--portada .radar { grid-area: radar; min-width: 0; }
.market-tool--portada .results-section { grid-area: lista; }
.market-tool--portada .tira-regiones { grid-area: tira; margin-top: var(--space-6); padding: var(--space-5) 0 0; border-left: 0; border-top: 1px solid var(--color-line); }
.market-tool--portada .tira-lista { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--space-8); }
.market-tool--portada .search-label { font-size: .82rem; }
.market-tool--portada .filter-grid { gap: var(--space-2) var(--space-3); margin-top: var(--space-3); }
.market-tool--portada .filter-field { gap: .15rem; font-size: .78rem; }
.market-tool--portada .filter-field select { min-height: 2.5rem; }
.market-tool--portada .filter-footer { margin-top: var(--space-2); padding-top: var(--space-2); }
.portada-fuente { grid-area: fuente; display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-1); color: var(--color-muted); font-size: .8rem; }
.punto-vivo { width: .5rem; height: .5rem; flex: none; border-radius: 50%; background: var(--estado-abierta); }
.portada-texto h1 { grid-area: h1; max-width: none; margin-bottom: var(--space-1); font-size: clamp(1.6rem, 2.7vw, 2.1rem); font-stretch: 92%; line-height: 1.04; }
.portada-texto h1 em { font-style: normal; box-shadow: inset 0 -.16em 0 var(--color-signal); }
.portada-bajada { grid-area: bajada; max-width: 44rem; margin-bottom: 0; color: var(--color-text-2); font-size: .92rem; line-height: 1.5; }
.portada-bajada strong { color: var(--color-text); font-variant-numeric: tabular-nums; }

/* Cifras del día: se leen de un vistazo, sin moverse. */
.pulso { grid-area: pulso; align-self: start; display: grid; grid-template-columns: repeat(4, auto); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.pulso-dato { min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: .2rem; padding: .55rem .9rem; }
.pulso-dato + .pulso-dato { border-left: 1px solid var(--color-line); }
.pulso-dato b { color: var(--color-text); font-family: var(--font-display); font-size: 1.6rem; font-stretch: 84%; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; white-space: nowrap; }
.pulso-dato span { color: var(--color-muted); font-size: .74rem; font-weight: 600; line-height: 1.2; }
.pulso-dato--hoy b { align-self: flex-start; box-shadow: inset 0 -.14em 0 var(--color-signal); }
.desde-visita { grid-area: desde; display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .6rem; margin: var(--space-3) 0 0; padding: .45rem .75rem; border-radius: var(--radius-2); background: var(--color-surface-2); color: var(--color-text-2); font-size: .88rem; }
.desde-visita b { color: var(--color-text); font-variant-numeric: tabular-nums; }
.desde-visita .button-link { min-height: 2rem; font-weight: 700; }

/* Accesos por tramo: color propio, cuántas hay abiertas y cuántas llegaron
 * en 24 horas. La barra inferior compara los cuatro a la misma escala. */
.tramos h2 { margin-bottom: 0; font-size: 1.15rem; }
.tramos-bajada { margin: 0 0 var(--space-2); color: var(--color-muted); font-size: .76rem; }
.tramos-lista { display: grid; gap: 6px; }
.tramo { position: relative; overflow: hidden; width: 100%; min-height: 3.6rem; display: grid; grid-template-columns: 2.6rem minmax(0, 1fr) auto; align-items: center; gap: .7rem; padding: .45rem .7rem .55rem .5rem; border: 1px solid transparent; border-radius: var(--radius-3); background: var(--t-s); color: var(--color-text); text-align: left; }
.tramo:hover { border-color: var(--t); }
.tramo-sigla { height: 2.3rem; display: grid; place-items: center; border-radius: var(--radius-2); background: var(--t); color: var(--t-on); font-family: var(--font-display); font-size: 1.05rem; font-stretch: 85%; font-weight: 800; }
.tramo-rango { min-width: 0; display: grid; font-size: .84rem; font-weight: 700; line-height: 1.25; }
.tramo-rango small { color: var(--color-muted); font-size: .74rem; font-weight: 500; }
.tramo-n { display: grid; justify-items: end; line-height: 1.1; }
.tramo-n b { color: var(--t); font-family: var(--font-display); font-size: 1.35rem; font-stretch: 80%; font-weight: 800; font-variant-numeric: tabular-nums; }
.tramo-n small { color: var(--color-muted); font-size: .7rem; font-weight: 600; white-space: nowrap; }
.tramo-barra { position: absolute; left: 0; bottom: 0; width: var(--tramo-ancho, 0%); height: 3px; background: var(--t-v); }
.tramo[aria-pressed="true"] { border-color: var(--t); background: var(--t); color: var(--t-on); }
.tramo[aria-pressed="true"] .tramo-sigla { background: var(--t-on); color: var(--t); }
.tramo[aria-pressed="true"] small, .tramo[aria-pressed="true"] .tramo-n b { color: inherit; }


.tira-regiones { min-width: 0; padding-left: var(--space-8); border-left: 1px solid var(--color-line); }
.tira-regiones h2 { margin-bottom: var(--space-1); font-size: var(--t-panel); }
.tira-bajada { margin-bottom: var(--space-4); color: var(--color-muted); font-size: var(--text-14); }
.tira-lista { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }
.tira-lista a { min-height: 1.6rem; display: grid; grid-template-columns: 8.6rem minmax(0, 1fr) 3rem; align-items: center; gap: var(--space-3); color: var(--color-text-2); font-size: var(--text-14); line-height: 1.2; text-decoration: none; }
.tira-lista a:hover { color: var(--color-text); }
.tira-pista { height: .6rem; background: var(--color-surface-2); }
.tira-barra { display: block; height: 100%; min-width: 1px; background: var(--color-text-2); transition: width 200ms ease; }
.tira-lista a:hover .tira-barra, .tira-lista .is-selected .tira-barra { background: var(--color-signal-strong); }
.tira-lista .is-selected a { color: var(--color-text); font-weight: 700; }
.tira-lista .is-zero a { color: var(--color-muted); }
.tira-n { color: var(--color-text); font-family: var(--font-mono); font-size: .82rem; font-variant-numeric: tabular-nums; text-align: right; }

/* ---------- Buscador ---------- */
.filter-panel { min-width: 0; padding: var(--space-5); border: 1px solid var(--color-line-strong); border-radius: var(--radius-3); background: var(--color-surface); }
.search-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-2) var(--space-3); align-items: end; }
.search-label { grid-column: 1 / -1; color: var(--color-text); font-size: var(--text-14); font-weight: 700; }
.search-field { min-width: 0; min-height: 3.25rem; display: flex; align-items: center; gap: var(--space-3); padding: 0 var(--space-4); border: 1px solid var(--color-line-strong); border-radius: var(--radius-2); background: var(--color-surface); color: var(--color-muted); transition: border-color var(--motion-fast), box-shadow var(--motion-fast); }
.search-field:focus-within { border-color: var(--color-text); box-shadow: 0 0 0 3px var(--color-signal); }
.search-field .i { width: 1.3rem; height: 1.3rem; }
.search-field input { min-width: 0; width: 100%; height: 3.1rem; border: 0; outline: 0; background: transparent; color: var(--color-text); font-size: 1.05rem; }
.search-field input::placeholder { color: var(--color-muted); opacity: 1; }
.search-row .button { min-height: 3.25rem; }
.filter-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr)); gap: var(--space-3); margin-top: var(--space-4); }
/* Cinco filtros: tres arriba (qué, dónde, cuánto) y dos abajo (plazo, orden). */
@media (min-width: 48.0625rem) {
  .filter-grid:has(> :nth-child(5)) { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .filter-grid:has(> :nth-child(5)) > :nth-child(-n + 3) { grid-column: span 2; }
  .filter-grid:has(> :nth-child(5)) > :nth-child(n + 4) { grid-column: span 3; }
  /* Seis filtros (portada y listados): dos filas de tres. */
  .filter-grid:has(> :nth-child(6)) > :nth-child(n) { grid-column: span 2; }
  /* Si una comuna no aplica (Compra Ágil), el campo oculto no deja hueco. */
  .filter-grid:has(> [hidden]):has(> :nth-child(6)) > :nth-child(n + 5) { grid-column: span 3; }
}
.filter-field { min-width: 0; display: grid; gap: .3rem; color: var(--color-text-2); font-size: var(--text-14); font-weight: 600; }
.filter-field select { min-width: 0; width: 100%; min-height: 2.75rem; padding: 0 2rem 0 var(--space-3); border: 1px solid var(--color-line-strong); border-radius: var(--radius-2); background: var(--color-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2356645f' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right .8rem center; color: var(--color-text); font-size: .94rem; font-weight: 500; appearance: none; }
.filter-field select:hover { border-color: var(--color-text-2); }
.filter-field select:focus { outline: none; border-color: var(--color-text); box-shadow: 0 0 0 3px var(--color-signal); }
.filter-footer { min-height: 2.25rem; display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--color-line); }
.filter-footer p { margin: 0; color: var(--color-text-2); font-size: var(--text-14); font-weight: 600; font-variant-numeric: tabular-nums; }
.button-link { min-height: 2.25rem; padding: 0 var(--space-1); border: 0; background: transparent; color: var(--color-link); font-size: var(--text-14); font-weight: 600; text-decoration: underline; text-underline-offset: .2em; }
.button-link:hover { color: var(--color-text); text-decoration-thickness: 2px; }

/* ---------- Cifras de la búsqueda: una línea con reglas, no mosaicos ---------- */
.market-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-block: 1px solid var(--color-line); }
.market-stat { min-width: 0; display: flex; align-items: baseline; flex-wrap: wrap; gap: .2rem .6rem; padding: var(--space-4) var(--space-5) var(--space-4) 0; }
.market-stat + .market-stat { padding-left: var(--space-5); border-left: 1px solid var(--color-line); }
.market-stat span { color: var(--color-text); font-family: var(--font-display); font-size: 1.85rem; font-stretch: 72%; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.market-stat small { color: var(--color-muted); font-size: var(--text-14); }

.aviso-cierre { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-3) var(--space-5); padding: var(--space-3) var(--space-4); border-radius: var(--radius-3); background: var(--color-signal-soft); color: var(--color-text-2); }
.aviso-cierre p { margin: 0; max-width: 60rem; font-size: .95rem; }
.aviso-cierre strong { color: var(--color-text); }
.aviso-cierre [data-urgent-count] { font-variant-numeric: tabular-nums; }
.aviso-cierre.is-empty { display: none; }

/* ---------- Encabezados de sección ---------- */
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); }
.section-heading > div { min-width: 0; }
.section-heading h2, .section-heading p { margin-bottom: 0; }
.section-description { max-width: 46rem; margin-top: var(--space-2) !important; color: var(--color-muted); font-size: .95rem; line-height: 1.55; }
.section-heading--compact { margin-bottom: var(--space-3); }
.section-heading--compact h2 { font-size: var(--t-panel); }
.section-count { flex: none; color: var(--color-muted); font-family: var(--font-mono); font-size: var(--text-14); font-variant-numeric: tabular-nums; }
.enlace-ver { flex: none; font-weight: 600; white-space: nowrap; }
.enlace-ver::after { content: " →"; }

/* ---------- Libro de oportunidades: una fila por proceso ---------- */
.filas, .results-grid--related { min-width: 0; overflow: hidden; border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.filas-cabecera, .card { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr) 10.5rem 9rem 8.25rem; gap: var(--space-4); align-items: center; }
.filas-cabecera { padding: .6rem var(--space-4); border-bottom: 1px solid var(--color-line); background: var(--color-surface-2); color: var(--color-muted); font-size: .8rem; font-weight: 600; }
.filas-cabecera > :nth-child(4), .filas-cabecera > :nth-child(5) { text-align: right; justify-self: end; }
/* Encabezados que ordenan: parecen encabezado, pero se sienten pinchables. */
.orden-col { display: inline-flex; align-items: center; gap: .3rem; min-height: 2rem; margin: -.3rem -.4rem; padding: .3rem .4rem; border: 0; border-radius: var(--radius-1); background: transparent; color: inherit; font: inherit; font-weight: 600; cursor: pointer; }
.orden-col:hover { background: var(--color-surface); color: var(--color-text); text-decoration: underline; text-underline-offset: .2em; }
.orden-col[aria-pressed="true"] { color: var(--color-text); font-weight: 700; }
.orden-flecha { width: 1ch; font-family: var(--font-sans); font-size: .9em; line-height: 1; opacity: .45; }
.orden-flecha::before { content: "↕"; }
.orden-col[aria-pressed="true"] .orden-flecha { opacity: 1; }
.orden-col[aria-pressed="true"] .orden-flecha::before { content: "↓"; }
.orden-col[aria-pressed="true"][data-sentido="asc"][data-ordenar="monto"] .orden-flecha::before { content: "↑"; }
.results-grid[aria-busy="true"] { opacity: .55; }
.card { position: relative; padding: .9rem var(--space-4); border-bottom: 1px solid var(--color-line); color: inherit; text-decoration: none; transition: background-color var(--motion-fast); }
.results-grid > .fila-celda:last-child > .card { border-bottom: 0; }
.card:hover { background: var(--color-surface-2); color: inherit; }
.card:hover h3 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
.card:focus-visible { outline-offset: -3px; }
.fila-id { min-width: 0; display: flex; align-items: center; flex-wrap: wrap; gap: .35rem; }
.codigo { color: var(--color-text-2); font-family: var(--font-mono); font-size: .8rem; font-variant-numeric: tabular-nums; letter-spacing: 0; overflow-wrap: anywhere; }
.tipo-proceso { padding: .05rem .3rem; border: 1px solid var(--color-line-strong); border-radius: var(--radius-1); color: var(--color-text-2); font-size: .7rem; font-weight: 700; line-height: 1.3; }
.fila-texto { min-width: 0; }
.card h3 { display: -webkit-box; margin: 0; overflow: hidden; color: var(--color-text); font-family: var(--font-sans); font-size: var(--t-fila); font-stretch: normal; font-weight: 600; letter-spacing: 0; line-height: 1.38; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.card .org { margin: .15rem 0 0; color: var(--color-muted); font-size: .88rem; line-height: 1.4; }
.fila-lugar { margin: 0; color: var(--color-text-2); font-size: .88rem; line-height: 1.4; }
.card .monto { margin: 0; color: var(--color-text); font-family: var(--font-mono); font-size: .88rem; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.card .monto--ni { color: var(--color-muted); font-family: var(--font-sans); font-size: .82rem; white-space: normal; }
.card--cerrada h3, .card--cerrada .monto { color: var(--color-text-2); }
.fila-cierre { min-width: 0; display: grid; justify-items: end; gap: .2rem; }
.fila-cierre time { color: var(--color-muted); font-family: var(--font-mono); font-size: .74rem; white-space: nowrap; }
.filter-acciones { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); }
.chip-estado { justify-self: end; display: inline-flex; align-items: center; max-width: 100%; min-height: 1.75rem; padding: .2rem .5rem; border-radius: var(--radius-1); font-size: .8rem; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.2; text-align: right; white-space: nowrap; }
.chip-estado.abierta { padding-inline: 0; color: var(--estado-abierta); font-weight: 600; }
.chip-estado.pronto { background: var(--color-signal); color: var(--color-on-signal); }
.chip-estado.cerrada { background: var(--estado-cerrada-bg); color: var(--estado-cerrada); }
.results-grid--related { display: block; }
.results-grid--related > .fila-celda:last-child > .card { border-bottom: 0; }
/* En la columna de la ficha no caben cinco columnas: la fila va siempre en su
 * forma compacta (la misma del celular). */
.results-grid--related .card { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "id estado" "texto texto" "lugar monto"; gap: .35rem var(--space-3); padding-block: var(--space-4); }
.results-grid--related .card .fila-id { grid-area: id; align-self: start; }
.results-grid--related .card .fila-texto { grid-area: texto; }
.results-grid--related .card .fila-lugar { grid-area: lugar; }
.results-grid--related .card .monto { grid-area: monto; align-self: end; }
.results-grid--related .card .fila-cierre { grid-area: estado; align-self: start; }
.results-grid--related .guardar { top: .55rem; margin-top: 0; }

/* ---------- Tramos de monto: el color de cada uno ---------- */
[data-tramo="l1"] { --t: var(--l1); --t-s: var(--l1-s); --t-v: var(--l1-v); }
[data-tramo="le"] { --t: var(--le); --t-s: var(--le-s); --t-v: var(--le-v); }
[data-tramo="lp"] { --t: var(--lp); --t-s: var(--lp-s); --t-v: var(--lp-v); }
[data-tramo="lr"] { --t: var(--lr); --t-s: var(--lr-s); --t-v: var(--lr-v); }
[data-tramo="otro"] { --t: var(--otro); --t-s: var(--otro-s); --t-v: transparent; }
.card[data-tramo] { box-shadow: inset 4px 0 0 var(--t-v); }
.card .tipo-proceso { border-color: var(--t); background: var(--t); color: var(--t-on); }

/* ---------- Fila con estrella, barra de plazo y «Nueva» ---------- */
.fila-celda { position: relative; }
.fila-celda > .card { padding-right: 3.4rem; }
.guardar { position: absolute; z-index: 1; top: 50%; right: .45rem; width: 2.6rem; height: 2.6rem; display: grid; place-items: center; margin-top: -1.3rem; padding: 0; border: 0; border-radius: var(--radius-2); background: transparent; color: var(--color-muted); }
.guardar .estrella { width: 1.35rem; height: 1.35rem; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linejoin: round; }
.guardar:hover { background: var(--color-surface-2); color: var(--color-text); }
.guardar[aria-pressed="true"] .estrella { fill: var(--estrella); stroke: var(--estrella-borde); }
.guardar--ficha { position: static; width: auto; height: auto; min-height: 3rem; display: inline-flex; align-items: center; gap: .5rem; margin: 0; padding: .65rem var(--space-5); border: 1px solid var(--color-line-strong); background: var(--color-surface); color: var(--color-text); font-weight: 700; }
.guardar--ficha:hover { border-color: var(--color-text); background: var(--color-surface); }
.guardar--ficha[aria-pressed="true"] { border-color: var(--estrella-borde); background: color-mix(in srgb, var(--estrella) 14%, var(--color-surface)); }
/* Sin JS (theme.js no marcó el tema) la estrella no haría nada: no se muestra. */
:root:not([data-theme]) .guardar { display: none; }
:root:not([data-theme]) .fila-celda > .card { padding-right: var(--space-4); }
.plazo-seg { display: flex; gap: 2px; justify-self: end; }
.plazo-seg:empty { display: none; }
.plazo-seg i { width: .45rem; height: .3rem; background: var(--color-surface-3); }
.plazo-seg i.on { background: var(--plazo-on); }
.plazo-seg.is-pronto i.on { background: var(--plazo-pronto); }
.nueva { padding: .08rem .35rem; border-radius: var(--radius-1); background: var(--color-text); color: var(--color-surface); font-size: .64rem; font-weight: 800; letter-spacing: .04em; line-height: 1.3; text-transform: uppercase; }

/* ---------- Tu radar ---------- */
.radar { scroll-margin-top: 6rem; }
.radar .estrella { width: 1.1rem; height: 1.1rem; flex: none; fill: var(--estrella); stroke: var(--estrella-borde); stroke-width: 1.4; stroke-linejoin: round; }
.radar-vacio { display: flex; align-items: center; gap: .6rem; margin: 0; padding: .55rem .8rem; border: 1px dashed var(--color-line-strong); border-radius: var(--radius-3); color: var(--color-text-2); font-size: .88rem; }
.radar-vacio .estrella { fill: none; stroke: var(--color-muted); }
.radar-cabecera { display: flex; align-items: baseline; flex-wrap: wrap; gap: .2rem .9rem; margin-bottom: var(--space-2); }
.radar-cabecera h2 { display: flex; align-items: center; gap: .4rem; margin: 0; font-size: 1.2rem; }
.radar-cabecera p { margin: 0; color: var(--color-muted); font-size: .88rem; }
.radar-cabecera strong { color: var(--color-text); }
.radar-lista { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.radar-lista a { height: 100%; display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "tipo plazo" "nombre nombre"; align-items: center; gap: .35rem .5rem; padding: .6rem .7rem; border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); color: var(--color-text); text-decoration: none; box-shadow: inset 3px 0 0 var(--t-v); }
.radar-lista a:hover { border-color: var(--color-text-2); color: var(--color-text); }
.radar-tipo { grid-area: tipo; padding: .05rem .3rem; border-radius: var(--radius-1); background: var(--t); color: var(--t-on); font-size: .7rem; font-weight: 700; }
.radar-plazo { grid-area: plazo; justify-self: end; color: var(--color-text-2); font-size: .76rem; font-weight: 700; }
.radar-plazo.is-pronto { padding: .05rem .35rem; border-radius: var(--radius-1); background: var(--color-signal); color: var(--color-on-signal); }
.radar-nombre { grid-area: nombre; display: -webkit-box; overflow: hidden; font-size: .86rem; font-weight: 600; line-height: 1.3; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.radar-todas { margin-top: var(--space-2); }

/* Acceso al radar en la cabecera (en px, como el resto de la cabecera). */
.radar-pildora { position: relative; min-height: 44px; flex: none; display: inline-flex; align-items: center; gap: .3rem; padding: 0 .6rem; border: 1px solid var(--color-line); border-radius: var(--radius-2); color: var(--color-text-2); font-size: 15px; font-weight: 700; text-decoration: none; }
.radar-pildora .estrella { width: 18px; height: 18px; fill: var(--estrella); stroke: var(--estrella-borde); stroke-width: 1.4; stroke-linejoin: round; }
.radar-pildora.is-vacia .estrella { fill: none; stroke: currentColor; }
.radar-pildora b { font-variant-numeric: tabular-nums; }
.radar-pildora.is-vacia b { color: var(--color-muted); font-weight: 600; }
.radar-pildora.is-pronto::after { position: absolute; top: 6px; right: 5px; width: 7px; height: 7px; border-radius: 50%; background: var(--plazo-pronto); content: ""; }
.radar-pildora:hover { border-color: var(--color-text-2); color: var(--color-text); }
.radar-pildora--barra { margin-right: 6px; }
.radar-pildora--barra .radar-pildora-txt { display: none; }
.top nav .radar-pildora--nav { display: none; }
.search-row .filtros-boton { display: none; }

.load-more-wrap { display: flex; justify-content: center; margin-top: var(--space-6); }
.empty-state { padding: var(--space-10) var(--space-6); border: 1px dashed var(--color-line-strong); border-radius: var(--radius-3); background: var(--color-surface); text-align: center; }
.empty-state h3 { margin-bottom: var(--space-2); }
.empty-state p { max-width: 34rem; margin: 0 auto var(--space-4); color: var(--color-text-2); }
.empty-inline, .empty-copy { margin: 0; color: var(--color-text-2); }

/* ---------- Botones ---------- */
.button { min-height: 3rem; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: .65rem var(--space-5); border: 1px solid transparent; border-radius: var(--radius-2); font-weight: 700; line-height: 1.25; text-align: center; text-decoration: none; transition: background-color var(--motion-fast), border-color var(--motion-fast), color var(--motion-fast); }
.button:hover { text-decoration: none; }
.button:active { transform: translateY(1px); }
.button--primary { background: var(--color-brand); color: var(--color-on-brand); }
.button--primary:hover { background: var(--color-brand-hover); color: var(--color-on-brand); }
.button--secondary { border-color: var(--color-line-strong); background: var(--color-surface); color: var(--color-text); }
.button--secondary:hover { border-color: var(--color-text); background: var(--color-surface); color: var(--color-text); }
.button--compact { min-height: 2.5rem; padding: .45rem var(--space-3); font-size: var(--text-14); }
.button--claro { background: var(--color-on-band); box-shadow: 0 2px 0 rgb(0 0 0 / .35); color: #15263f; }
.button--claro:hover { background: var(--color-signal); color: var(--color-on-signal); }
.button:disabled { cursor: not-allowed; opacity: .55; }

/* ---------- Enlaces por territorio y paginación ---------- */
.nav-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.nav-chip { min-height: 2.6rem; display: inline-flex; align-items: center; gap: var(--space-2); padding: .4rem var(--space-3); border: 1px solid var(--color-line-strong); border-radius: var(--radius-2); background: var(--color-surface); color: var(--color-text); font-size: var(--text-14); font-weight: 600; text-decoration: none; }
.nav-chip:hover { border-color: var(--color-text); color: var(--color-text); }
.nav-chip span { color: var(--color-muted); font-family: var(--font-mono); font-size: .8rem; }
.paginador { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: var(--space-3) var(--space-5); margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--color-line); }
.paginador-estado { margin: 0; color: var(--color-text); font-weight: 700; }
.paginador-pasos { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--space-2); }
.paginador-numeros { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px; }
.paginador-numeros a, .paginador-actual { min-width: 2.4rem; min-height: 2.4rem; display: inline-grid; place-items: center; padding: 0 .4rem; border-radius: var(--radius-2); font-family: var(--font-mono); font-size: .84rem; font-variant-numeric: tabular-nums; text-decoration: none; }
.paginador-numeros a { color: var(--color-text-2); }
.paginador-numeros a:hover { background: var(--color-surface); box-shadow: inset 0 0 0 1px var(--color-line-strong); color: var(--color-text); }
.paginador-actual { background: var(--color-brand); color: var(--color-on-brand); }
.paginador-salto { min-width: 1.4rem; display: inline-grid; place-items: center; color: var(--color-muted); }
.silos, .silo-links { margin-top: var(--space-12); padding-top: var(--space-6); border-top: 1px solid var(--color-line); }
.silo-links h2 { margin-bottom: var(--space-4); font-size: var(--t-panel); }

/* ---------- Rubros ---------- */
.rubros { margin-top: var(--space-16); }
.rubros-lista { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--space-6); margin: 0; padding: 0; border-top: 1px solid var(--color-line); list-style: none; }
.rubros-lista a { min-height: 3.5rem; display: grid; grid-template-columns: 1.6rem minmax(0, 1fr) auto; align-items: center; gap: var(--space-3); padding: .6rem 0; border-bottom: 1px solid var(--color-line); color: var(--color-text); text-decoration: none; }
.rubros-lista a:hover .rubro-nombre { text-decoration: underline; text-underline-offset: .2em; }
.i-rubro { width: 1.5rem; height: 1.5rem; color: var(--color-link); }
.rubro-nombre { font-size: .95rem; font-weight: 600; line-height: 1.3; }
.rubro-n { color: var(--color-muted); font-family: var(--font-mono); font-size: .82rem; font-variant-numeric: tabular-nums; }

/* ---------- Banda Compra Ágil (a todo el ancho sin desbordar) ---------- */
.banda-agil { position: relative; isolation: isolate; margin-top: var(--space-16); color: var(--color-on-band); }
.banda-agil::before { position: absolute; z-index: -1; top: 0; bottom: 0; left: 50%; width: 100vw; transform: translateX(-50%); background: var(--color-band); content: ""; }
.banda-agil-in { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--space-12); padding-block: var(--space-12); }
.banda-agil h2 { margin-bottom: var(--space-4); color: var(--color-on-band); font-size: var(--t-seccion); }
.banda-agil p { max-width: 48ch; color: var(--color-on-band-2); }
.banda-agil-acciones { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-6); margin: var(--space-6) 0 0; }
.enlace-claro { color: var(--color-on-band); font-weight: 600; }
.enlace-claro:hover { color: var(--color-signal); }
.umbral { align-self: start; padding: var(--space-5) var(--space-6); border: 1px solid color-mix(in srgb, var(--color-on-band) 28%, transparent); border-radius: var(--radius-3); }
.umbral-linea { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: var(--space-2) var(--space-4); padding-block: var(--space-3); border-bottom: 1px solid color-mix(in srgb, var(--color-on-band) 18%, transparent); color: var(--color-on-band-2); font-size: .95rem; }
.umbral-linea strong { color: var(--color-on-band); font-family: var(--font-display); font-size: 2.1rem; font-stretch: 72%; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.umbral-pasos { display: grid; gap: var(--space-2); margin: var(--space-4) 0 0; padding-left: 1.2rem; color: var(--color-on-band); font-size: .95rem; }
.umbral-pasos li::marker { color: var(--color-signal); font-weight: 700; }

/* ---------- Antes de postular ---------- */
.preparar { margin-top: var(--space-16); }
.preparar-lista { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-8); }
.preparar-lista article { padding-top: var(--space-3); border-top: 3px solid var(--color-text); }
.preparar-tipo { margin-bottom: var(--space-1); color: var(--color-muted); font-size: var(--text-14); font-weight: 600; }
.preparar-lista h3 { margin-bottom: var(--space-2); font-size: 1.45rem; }
.preparar-lista h3 a { color: var(--color-text); text-decoration: none; }
.preparar-lista h3 a:hover { text-decoration: underline; text-decoration-thickness: 2px; }
.preparar-lista p:last-child { margin: 0; color: var(--color-text-2); font-size: .95rem; }

.portada-primera { grid-area: primera; display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .5rem; margin: var(--space-1) 0 0; font-size: .85rem; }
.portada-primera span { color: var(--color-text-2); }
.portada-primera a { font-weight: 700; }
.portada-primera a::after { content: " →"; }
.pasos-corto { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-6); margin: 0 0 var(--space-10); padding: 0; list-style: none; counter-reset: paso; }
.pasos-corto li { counter-increment: paso; display: grid; align-content: start; gap: var(--space-2); padding-top: var(--space-3); border-top: 3px solid var(--color-text); }
.pasos-corto li::before { content: counter(paso); width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 50%; background: var(--color-signal); color: var(--color-on-signal); font-family: var(--font-display); font-size: 1.05rem; font-weight: 800; }
.pasos-corto strong { font-family: var(--font-display); font-size: 1.35rem; font-stretch: 78%; font-weight: 700; line-height: 1.15; }
.pasos-corto span { color: var(--color-text-2); font-size: .95rem; }
.preparar-lista article { border-top-width: 1px; border-top-color: var(--color-line-strong); }
.preparar-lista--guias { margin-top: var(--space-4); grid-template-columns: repeat(2, minmax(0, 1fr)); }
.preparar-lista--guias article { border-top: 3px solid var(--color-text); }
.preparar-lista--guias h2 { margin-bottom: var(--space-2); font-size: 1.6rem; }
.preparar-lista--guias h2 a { color: var(--color-text); text-decoration: none; }
.preparar-lista--guias h2 a:hover { text-decoration: underline; text-decoration-thickness: 2px; }
.guia-antes { margin: var(--space-6) 0; padding: var(--space-5); border-radius: var(--radius-3); background: var(--color-signal-soft); }
.guia-antes h2 { margin: 0 0 var(--space-3) !important; font-size: var(--t-panel) !important; }
.guia-lista-check { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2) var(--space-6); margin: 0; padding: 0 !important; list-style: none; }
.guia-lista-check li { position: relative; padding-left: 1.6rem; color: var(--color-text) !important; }
.guia-lista-check li::before { position: absolute; left: 0; top: .1rem; content: "✓"; color: var(--estado-abierta); font-weight: 700; }
.guia-indice { margin-bottom: var(--space-8); padding: var(--space-4) var(--space-5); border: 1px solid var(--color-line); border-radius: var(--radius-3); }
.guia-indice ol { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-1) var(--space-6); margin: 0; padding-left: 1.3rem; }
.guia-indice a { font-weight: 600; }
.guia-pasos-lista { display: grid; gap: var(--space-8); margin: 0 0 var(--space-10); padding: 0 !important; list-style: none; }
.guia-pasos-lista > li { display: grid; grid-template-columns: 2.6rem minmax(0, 1fr); gap: var(--space-4); scroll-margin-top: 5.5rem; }
.guia-pasos-lista > li > div { min-width: 0; }
.guia-pasos-lista h2 { margin: .2rem 0 var(--space-3) !important; font-size: var(--t-panel) !important; }
.guia-num { width: 2.6rem; height: 2.6rem; display: grid; place-items: center; border-radius: 50%; background: var(--color-brand); color: var(--color-on-brand); font-family: var(--font-display); font-size: 1.25rem; font-weight: 800; }
.sigla { font-family: var(--font-mono); font-weight: 500; }
.mesa-ayuda { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-4) var(--space-8); margin-top: var(--space-16); padding: var(--space-5) var(--space-6); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.mesa-ayuda > div:first-child { flex: 1 1 26rem; }
.mesa-ayuda h2 { margin-bottom: var(--space-1); font-size: var(--t-panel); }
.mesa-ayuda p { margin: 0; color: var(--color-text-2); }
.mesa-acciones { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-3) var(--space-6); }
.mesa-fono { color: var(--color-text); font-family: var(--font-mono); font-size: 1.35rem; text-decoration: none; white-space: nowrap; }
.mesa-fono:hover { color: var(--color-text); text-decoration: underline; }

/* ---------- Miga de pan ---------- */
.breadcrumb { margin-top: var(--space-6); color: var(--color-muted); font-size: var(--text-14); }
.breadcrumb ol { display: flex; align-items: center; flex-wrap: wrap; gap: .1rem; margin: 0; padding: 0; list-style: none; }
.breadcrumb li { min-width: 0; display: inline-flex; align-items: center; line-height: 1.3; }
.breadcrumb li:not(:last-child)::after { margin-inline: .45rem; content: "/"; color: var(--color-line-strong); }
.breadcrumb a { min-height: 2rem; display: inline-flex; align-items: center; color: var(--color-text-2); }
.breadcrumb a:hover { color: var(--color-text); }
.breadcrumb [aria-current="page"] { max-width: min(28rem, 60vw); overflow: hidden; color: var(--color-muted); font-family: var(--font-mono); font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- Ficha de una licitación ---------- */
.detail-page { display: grid; gap: var(--space-8); margin-top: var(--space-4); }
.detail-hero { padding: var(--space-6); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); box-shadow: inset 0 5px 0 var(--t-v); }
.detail-status { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin-bottom: var(--space-3); }
.detail-status .codigo { font-size: .9rem; }
.detail-status .chip-estado { margin-left: auto; }
.ficha-tramo { padding: .2rem .5rem; border-radius: var(--radius-1); background: var(--t); color: var(--t-on); font-size: .8rem; font-weight: 700; }
.detail-hero h1 { max-width: 30ch; margin-bottom: var(--space-3); font-size: clamp(1.6rem, 3vw, 2.2rem); font-stretch: 90%; line-height: 1.05; }
.detail-description { max-width: 60rem; color: var(--color-text-2); font-size: 1.05rem; }
.detail-highlights { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: var(--space-6) 0; border-block: 1px solid var(--color-line); }
.detail-highlights > div { min-width: 0; padding: var(--space-4) var(--space-4) var(--space-4) 0; }
.detail-highlights > div + div { padding-left: var(--space-4); border-left: 1px solid var(--color-line); }
.detail-highlights span { display: block; margin-bottom: .2rem; color: var(--color-muted); font-size: var(--text-14); font-weight: 600; }
.detail-highlights strong { display: block; color: var(--color-text); font-size: 1.02rem; line-height: 1.4; }
.detail-highlights > div:first-child strong { font-family: var(--font-mono); font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.official-action { display: flex; align-items: center; gap: var(--space-5); }
.official-buttons { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.official-action p { max-width: 34rem; margin: 0; color: var(--color-muted); font-size: var(--text-14); }
.detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(16rem, 21rem); align-items: start; gap: var(--space-6); }
.detail-main { min-width: 0; display: grid; gap: var(--space-6); }
.detail-section, .metadata-card { min-width: 0; padding: var(--space-6); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.detail-section > h2 { margin-bottom: var(--space-4); font-size: var(--t-panel); }
.detail-section h2 { font-size: var(--t-panel); }
.section-intro { max-width: 48rem; margin: var(--space-2) 0 0; color: var(--color-text-2); font-size: var(--text-14); }
.process-explainer { background: var(--color-surface-2); border-color: var(--color-surface-2); }
.process-explainer h2 { max-width: 34ch; }
.process-explainer > p:not(.eyebrow) { color: var(--color-text-2); }
.type-code { display: inline-flex; align-items: center; min-height: 1.9rem; margin-right: var(--space-2); padding: .1rem .45rem; border: 1px solid var(--color-text); border-radius: var(--radius-1); color: var(--color-text); font-family: var(--font-mono); font-size: 1rem; font-stretch: normal; vertical-align: middle; }
.source-note, .local-note { margin: var(--space-4) 0 0; color: var(--color-muted); font-size: .8rem; }
.timeline { position: relative; display: grid; margin: var(--space-6) 0 0; padding: 0; list-style: none; }
.timeline::before { position: absolute; top: .9rem; bottom: .9rem; left: .45rem; width: 2px; background: var(--color-line); content: ""; }
.timeline li { position: relative; display: grid; grid-template-columns: 1rem minmax(0, 1fr); gap: var(--space-4); padding-bottom: var(--space-5); }
.timeline li:last-child { padding-bottom: 0; }
.timeline-dot { position: relative; z-index: 1; width: 1rem; height: 1rem; margin-top: .3rem; border: 2px solid var(--color-line-strong); border-radius: 50%; background: var(--color-surface); }
.timeline .is-complete .timeline-dot { border-color: var(--estado-abierta); background: var(--estado-abierta); }
.timeline .is-current .timeline-dot { border-color: var(--color-on-signal); background: var(--color-signal); }
.timeline .is-current strong::after { margin-left: .5rem; padding: .05rem .35rem; border-radius: var(--radius-1); background: var(--color-signal); color: var(--color-on-signal); content: "Próximo"; font-size: .72rem; font-weight: 700; vertical-align: .1em; }
.timeline strong, .timeline time, .timeline li div > span { display: block; }
.timeline time { margin-top: .1rem; color: var(--color-text); font-family: var(--font-mono); font-size: .88rem; font-variant-numeric: tabular-nums; }
.timeline li div > span { max-width: 52rem; margin-top: .25rem; color: var(--color-muted); font-size: .84rem; }
.checklist-progress { color: var(--color-muted); font-family: var(--font-mono); font-size: .85rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.checklist-card.is-complete .checklist-progress { color: var(--estado-abierta); }
.progress-track { height: .45rem; margin: var(--space-5) 0; overflow: hidden; border-radius: var(--radius-1); background: var(--color-surface-3); }
.progress-track span { display: block; width: 0; height: 100%; background: var(--color-link); transition: width var(--motion-fast); }
.checklist { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.checklist li { border: 1px solid var(--color-line); border-radius: var(--radius-2); background: var(--color-surface); }
.checklist label { min-height: 4rem; display: grid; grid-template-columns: 1.4rem minmax(0, 1fr); align-items: start; gap: var(--space-3); padding: var(--space-3); cursor: pointer; }
.checklist input { width: 1.25rem; height: 1.25rem; margin: .15rem 0 0; accent-color: var(--color-brand); }
.checklist strong, .checklist small { display: block; }
.checklist strong { color: var(--color-text); line-height: 1.45; }
.checklist small { margin-top: .2rem; color: var(--color-muted); font-size: .84rem; line-height: 1.5; }
.checklist li:has(input:checked) { border-color: var(--color-brand-soft); background: var(--color-brand-soft); }
.checklist li:has(input:checked) strong { text-decoration: line-through; text-decoration-thickness: 1px; }
.checklist-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); margin-top: var(--space-5); }
.table-wrap { min-width: 0; max-width: 100%; overflow-x: auto; border: 1px solid var(--color-line); border-radius: var(--radius-2); }
.items-table, .threshold-table, .legal-table { width: 100%; border-collapse: collapse; }
.items-table { min-width: 48rem; }
.items-table th, .items-table td, .threshold-table th, .threshold-table td, .legal-table th, .legal-table td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--color-line); color: var(--color-text-2); text-align: left; vertical-align: top; }
.items-table th, .threshold-table th, .legal-table th { background: var(--color-surface-2); color: var(--color-text); font-size: .82rem; font-weight: 700; }
.items-table td, .legal-table td { font-size: var(--text-14); }
.items-table td:first-child { color: var(--color-text); font-weight: 600; }
.item-unit { display: block; margin-top: .25rem; color: var(--color-muted); font-size: .8rem; font-weight: 400; }
.items-table tr:last-child td, .threshold-table tr:last-child td, .legal-table tr:last-child td { border-bottom: 0; }
.items-table .numeric { font-family: var(--font-mono); font-size: .84rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.metadata-card { position: sticky; top: 5.5rem; }
.metadata-card h2 { margin-bottom: var(--space-3); font-size: var(--t-panel); }
.metadata-card dl { margin: 0; }
.meta-row { display: grid; gap: .15rem; padding: var(--space-3) 0; border-bottom: 1px solid var(--color-line); }
.meta-row:last-child { border-bottom: 0; }
.meta-row dt { color: var(--color-muted); font-size: .8rem; font-weight: 600; }
.meta-row dd { margin: 0; color: var(--color-text); font-size: var(--text-14); font-variant-numeric: tabular-nums; font-weight: 500; }
.metadata-note { margin: var(--space-4) 0 0; color: var(--color-muted); font-size: .8rem; }
.related h2 { margin-bottom: var(--space-4); }
.utm-context-card { background: var(--color-surface-2); border-color: var(--color-surface-2); }
.utm-context-card h2 { max-width: 38ch; }
.utm-context-card p { color: var(--color-text-2); }

/* ---------- Compra Ágil ---------- */
.agile-hero { padding-bottom: var(--space-4); }
.data-status { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2) var(--space-5); margin: 0 0 var(--space-6); padding: var(--space-4) var(--space-5); border-radius: var(--radius-3); background: var(--color-surface-2); color: var(--color-text-2); font-size: var(--text-14); }
.data-status strong { color: var(--color-text); }
.process-badge { display: inline-flex; align-items: center; min-height: 1.8rem; padding: .15rem .55rem; border: 1px solid var(--color-line-strong); border-radius: var(--radius-1); color: var(--color-text-2); font-size: .8rem; font-weight: 700; }
.data-pending { padding: var(--space-3) var(--space-4); border-radius: var(--radius-2); background: var(--color-signal-soft); color: var(--color-text-2); }
.document-list { display: grid; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.document-list li { display: grid; gap: .2rem; padding: var(--space-3) var(--space-4); border: 1px solid var(--color-line); border-radius: var(--radius-2); background: var(--color-surface); }
.document-list span { overflow-wrap: anywhere; color: var(--color-text); font-weight: 600; }
.document-list small { color: var(--color-muted); font-size: .8rem; }
.document-warning { margin-top: var(--space-5); padding: var(--space-4); border-radius: var(--radius-2); background: var(--color-signal-soft); }
.document-warning p { margin: var(--space-2) 0; color: var(--color-text-2); font-size: var(--text-14); }
.document-warning a { font-weight: 700; }
.guide-page .legal-header h1 { max-width: 28ch; }
.guide-cta { margin: var(--space-5) 0 var(--space-8); }
[data-listing][data-catalog-state="loading"] [data-results] { opacity: .72; }

/* ---------- Herramientas ---------- */
.tools-page, .calculator-page, .decision-page { min-width: 0; display: grid; gap: var(--space-8); }
.calculator-page > *, .calculator-layout > *, .threshold-overview, .guide-faq { min-width: 0; }
.tools-hero, .calculator-hero, .decision-hero { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(15rem, .6fr); align-items: end; gap: var(--space-10); margin-top: var(--space-4); padding: var(--space-8) 0 var(--space-8); border-bottom: 1px solid var(--color-line); }
.tools-hero h1, .calculator-hero h1, .decision-hero h1 { max-width: 20ch; margin-bottom: var(--space-4); }
.tools-hero > div > p:last-of-type, .calculator-hero > div > p, .decision-hero > div:first-child > p:last-child { max-width: 48rem; margin-bottom: 0; color: var(--color-text-2); font-size: var(--text-18); }
.tools-promise, .decision-proof { display: grid; border-top: 1px solid var(--color-line); }
.tools-promise span, .decision-proof span { display: flex; align-items: baseline; gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--color-line); color: var(--color-text-2); font-size: var(--text-14); }
.tools-promise strong, .decision-proof strong { min-width: 3.5rem; color: var(--color-text); font-family: var(--font-display); font-size: 1.6rem; font-stretch: 72%; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.tools-path { display: grid; gap: var(--space-5); }
.tools-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
.tool-card { min-height: 18rem; display: flex; align-items: flex-start; flex-direction: column; padding: var(--space-6); border: 1px solid var(--color-line); border-top: 3px solid var(--color-text); border-radius: var(--radius-2); background: var(--color-surface); color: var(--color-text); text-decoration: none; transition: border-color var(--motion-fast); }
.tool-card:hover { border-color: var(--color-text); color: var(--color-text); text-decoration: none; }
.tool-card:hover h3 { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .15em; }
.tool-step { margin-bottom: var(--space-4); color: var(--color-muted); font-size: var(--text-14); font-weight: 600; }
.tool-icon { width: 2.75rem; height: 2.75rem; display: grid; place-items: center; margin-bottom: var(--space-4); border-radius: var(--radius-2); background: var(--color-brand-soft); color: var(--color-link); }
.tool-icon svg { width: 1.5rem; height: 1.5rem; }
.tool-card h3 { margin-bottom: var(--space-3); font-size: 1.6rem; }
.tool-card p { margin-bottom: var(--space-6); color: var(--color-text-2); }
.tool-card-link, .card-link { margin-top: auto; color: var(--color-link); font-weight: 700; }
.tools-method { display: grid; grid-template-columns: minmax(14rem, .7fr) minmax(0, 1.3fr); gap: var(--space-8); padding: var(--space-8); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.tools-method h2 { max-width: 18ch; }
.tools-method-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.tools-method-grid article { padding-top: var(--space-3); border-top: 2px solid var(--color-line-strong); }
.tools-method-grid strong { color: var(--color-text); }
.tools-method-grid p { margin: var(--space-2) 0 0; color: var(--color-text-2); font-size: var(--text-14); }

/* Calculadora de precio y margen */
.calculator-trust { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-5); }
.calculator-trust span { padding: .3rem .6rem; border: 1px solid var(--color-line-strong); border-radius: var(--radius-1); color: var(--color-text-2); font-size: .8rem; font-weight: 600; }
.calculator-hero-note { padding: var(--space-5); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.calculator-hero-note .tool-icon { margin-bottom: var(--space-3); }
.calculator-hero-note > strong { display: block; margin-bottom: var(--space-2); font-size: var(--text-18); }
.calculator-hero-note p { margin: 0; color: var(--color-text-2); font-size: var(--text-14); }
.calculator-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(20rem, 25rem); align-items: start; gap: var(--space-6); }
.calculator-form { min-width: 0; display: grid; gap: var(--space-4); }
.calculator-section { padding: var(--space-6); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.calculator-section-head { display: flex; align-items: flex-start; gap: var(--space-3); margin-bottom: var(--space-5); }
.calculator-section-head > span { width: 2.2rem; height: 2.2rem; flex: 0 0 auto; display: grid; place-items: center; border: 1px solid var(--color-text); border-radius: var(--radius-2); color: var(--color-text); font-family: var(--font-mono); font-size: .85rem; }
.calculator-section-head h2 { margin: 0 0 var(--space-1); font-size: var(--t-panel); }
.calculator-section-head p { margin: 0; color: var(--color-muted); font-size: var(--text-14); }
.calculator-fields { display: grid; gap: var(--space-4); }
.calculator-fields--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.calculator-fields--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.calculator-field { min-width: 0; display: grid; align-content: start; gap: var(--space-2); color: var(--color-text); font-size: var(--text-14); font-weight: 600; }
.calculator-field small { min-height: 2.6em; color: var(--color-muted); font-size: .8rem; font-weight: 400; line-height: 1.35; }
.input-shell { min-width: 0; min-height: 3rem; display: flex; align-items: center; overflow: hidden; border: 1px solid var(--color-line-strong); border-radius: var(--radius-2); background: var(--color-surface); transition: border-color var(--motion-fast), box-shadow var(--motion-fast); }
.input-shell:focus-within { border-color: var(--color-text); box-shadow: 0 0 0 3px var(--color-signal); }
.input-shell b { flex: 0 0 auto; padding-inline: var(--space-3); color: var(--color-muted); font-size: var(--text-14); }
.input-shell input, .input-shell select { width: 100%; min-width: 0; min-height: 2.9rem; padding: .6rem var(--space-3); border: 0; outline: 0; background: transparent; color: var(--color-text); font: inherit; font-variant-numeric: tabular-nums; }
.input-shell b:not([hidden]) + input { padding-left: 0; }
.input-shell input[type="number"] { appearance: textfield; }
.input-shell input[type="number"]::-webkit-inner-spin-button, .input-shell input[type="number"]::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.calculator-actions, .calculator-result-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }
.calculator-error { padding: var(--space-4); border-radius: var(--radius-2); background: var(--color-danger-soft); color: var(--color-text); font-size: var(--text-14); font-weight: 600; }
.calculator-results, .decision-result { position: sticky; top: 5.5rem; padding: var(--space-6); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.calculator-results h2, .decision-result h2 { margin-bottom: var(--space-2); font-size: var(--t-panel); }
.calculator-result-intro { margin-bottom: var(--space-5); color: var(--color-text-2); font-size: var(--text-14); }
.result-primary { padding: var(--space-5); border-radius: var(--radius-2); background: var(--color-band); color: var(--color-on-band); }
.result-primary > span, .result-primary small { display: block; color: var(--color-on-band-2); font-size: .82rem; font-weight: 600; }
.result-primary output { display: block; margin-block: var(--space-1); color: var(--color-on-band); font-family: var(--font-display); font-size: clamp(2rem, 4vw, 2.6rem); font-stretch: 75%; font-weight: 800; line-height: 1.05; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.result-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); margin-top: var(--space-3); }
.result-pair > div { padding: var(--space-3); border: 1px solid var(--color-line); border-radius: var(--radius-2); }
.result-pair span { display: block; color: var(--color-muted); font-size: .8rem; }
.result-pair output { display: block; margin-top: var(--space-1); color: var(--color-text); font-family: var(--font-mono); font-size: 1.02rem; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.result-breakdown { margin: var(--space-5) 0; }
.result-breakdown > div { display: flex; justify-content: space-between; gap: var(--space-3); padding-block: .55rem; border-bottom: 1px solid var(--color-line); }
.result-breakdown dt { color: var(--color-muted); font-size: .84rem; }
.result-breakdown dd { margin: 0; color: var(--color-text); font-family: var(--font-mono); font-size: .86rem; text-align: right; font-variant-numeric: tabular-nums; }
.calculator-results .local-note { margin: var(--space-5) 0 0; padding-top: var(--space-4); border-top: 1px solid var(--color-line); }
.calculator-page[data-calculator-state="error"] .calculator-results { border-color: var(--color-danger); }
.calculator-content { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(18rem, .65fr); gap: var(--space-6); margin-top: var(--space-4); }
.calculator-content-main, .calculator-sources { padding: var(--space-8); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.calculator-content h2 { margin-bottom: var(--space-4); }
.calculator-content h3 { margin: var(--space-6) 0 var(--space-2); font-size: var(--t-panel); }
.calculator-content p, .calculator-content li { color: var(--color-text-2); }
.calculator-content ul { display: grid; gap: var(--space-2); padding-left: 1.25rem; }
.calculator-formula { margin-top: var(--space-6); padding: var(--space-5); border-radius: var(--radius-2); background: var(--color-surface-2); }
.calculator-formula strong, .calculator-formula code { display: block; }
.calculator-formula code { margin-block: var(--space-2); overflow-wrap: anywhere; color: var(--color-text); font-family: var(--font-mono); font-size: .92rem; }
.calculator-formula p { margin: 0; font-size: var(--text-14); }
.calculator-sources { align-self: start; }
.calculator-sources h2 { font-size: var(--t-panel); }
.calculator-sources ul { margin-block: var(--space-4); }
.calculator-sources .button { width: 100%; margin-top: var(--space-3); }

/* Calculadora de tramos UTM */
.utm-current output { display: block; margin-bottom: var(--space-2); color: var(--color-text); font-family: var(--font-display); font-size: clamp(1.9rem, 3vw, 2.5rem); font-stretch: 75%; font-weight: 800; font-variant-numeric: tabular-nums; }
.threshold-shortcuts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin-top: var(--space-5); padding-top: var(--space-4); border-top: 1px solid var(--color-line); }
.threshold-shortcuts > span { margin-right: var(--space-1); color: var(--color-muted); font-size: .84rem; font-weight: 600; }
.threshold-shortcuts button { min-height: 2.4rem; padding: .35rem .7rem; border: 1px solid var(--color-line-strong); border-radius: var(--radius-2); background: var(--color-surface); color: var(--color-text); font-family: var(--font-mono); font-size: .82rem; }
.threshold-shortcuts button:hover { border-color: var(--color-text); }
.utm-results h2 { font-size: var(--text-18); line-height: 1.35; }
.utm-results [data-utm-result="code"] { display: inline-grid; min-width: 2.5rem; min-height: 2rem; place-items: center; padding-inline: .5rem; border: 1px solid var(--color-text); border-radius: var(--radius-1); color: var(--color-text); font-family: var(--font-mono); font-size: var(--text-16); }
.utm-guarantee { margin-top: var(--space-3); padding: var(--space-4); border-radius: var(--radius-2); background: var(--color-surface-2); }
.utm-guarantee + .utm-guarantee { background: var(--color-signal-soft); }
.utm-guarantee strong { display: block; margin-bottom: var(--space-1); color: var(--color-text); font-size: var(--text-14); }
.utm-guarantee p { margin: 0; color: var(--color-text-2); font-size: .84rem; line-height: 1.55; }
.utm-deep-link { width: 100%; margin-block: var(--space-4) var(--space-3); text-align: center; }
.threshold-overview, .guide-faq { padding: var(--space-8); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.threshold-overview .table-wrap { margin-top: var(--space-5); }
.threshold-table { min-width: 42rem; }
.threshold-table td:first-child strong { display: inline-grid; min-width: 2.5rem; min-height: 2rem; place-items: center; border: 1px solid var(--color-text); border-radius: var(--radius-1); color: var(--color-text); font-family: var(--font-mono); font-weight: 500; }
.guide-faq h2 { margin-bottom: var(--space-5); }
.guide-faq details { border-top: 1px solid var(--color-line); }
.guide-faq details:last-child { border-bottom: 1px solid var(--color-line); }
.guide-faq summary { padding-block: var(--space-4); cursor: pointer; color: var(--color-text); font-weight: 700; }
.guide-faq details p { max-width: 52rem; margin: 0 0 var(--space-4); color: var(--color-text-2); }

/* Matriz: ¿me conviene postular? */
.decision-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, 24rem); align-items: start; gap: var(--space-6); }
.decision-form { display: grid; gap: var(--space-4); }
.decision-form fieldset { min-width: 0; margin: 0; padding: var(--space-5); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.decision-form fieldset[data-hard="true"] { border-color: var(--color-line-strong); }
.decision-form fieldset[data-hard="true"] legend::after { margin-left: .5rem; padding: .05rem .35rem; border: 1px solid var(--color-danger); border-radius: var(--radius-1); color: var(--color-danger); content: "Excluyente"; font-size: .72rem; font-weight: 700; vertical-align: .15em; }
.decision-form legend { width: 100%; max-width: none; float: left; margin: 0 0 var(--space-2); padding: 0; color: var(--color-text); font-size: 1.05rem; font-weight: 700; line-height: 1.45; }
.decision-form fieldset > p { clear: both; margin: 0 0 var(--space-4); color: var(--color-muted); font-size: var(--text-14); }
.decision-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
.decision-options label { min-height: 3rem; position: relative; display: grid; place-items: center; cursor: pointer; }
.decision-options input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.decision-options span { width: 100%; min-height: 3rem; display: grid; place-items: center; padding: .5rem; border: 1px solid var(--color-line-strong); border-radius: var(--radius-2); background: var(--color-surface); color: var(--color-text-2); font-size: var(--text-14); font-weight: 600; text-align: center; transition: border-color var(--motion-fast), background-color var(--motion-fast); }
.decision-options label:hover span { border-color: var(--color-text); }
.decision-options input:focus-visible + span { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.decision-options label:nth-child(1) input:checked + span { border-color: var(--estado-abierta); background: var(--estado-abierta-bg); color: var(--color-text); }
.decision-options label:nth-child(2) input:checked + span { border-color: var(--color-signal-strong); background: var(--color-signal-soft); color: var(--color-text); }
.decision-options label:nth-child(3) input:checked + span { border-color: var(--color-danger); background: var(--color-danger-soft); color: var(--color-text); }
.decision-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.decision-result > p:not(.eyebrow, .local-note) { color: var(--color-text-2); }
.decision-meter { height: .5rem; margin: var(--space-5) 0 var(--space-2); overflow: hidden; border-radius: var(--radius-1); background: var(--color-surface-3); }
.decision-meter span { display: block; width: 0; height: 100%; background: var(--color-link); transition: width var(--motion-fast); }
.decision-score { display: block; color: var(--color-text); font-family: var(--font-display); font-size: 2.2rem; font-stretch: 72%; font-weight: 800; font-variant-numeric: tabular-nums; }
.decision-result [data-decision-next] { margin-top: var(--space-5); padding-top: var(--space-5); border-top: 1px solid var(--color-line); }
.decision-result [data-decision-next] h3 { margin-bottom: var(--space-2); font-size: var(--text-18); }
.decision-result [data-decision-next] p, .decision-result [data-decision-next] li { color: var(--color-text-2); font-size: var(--text-14); }
.decision-result [data-decision-next] ul { display: grid; gap: var(--space-2); margin: 0; padding-left: 1.25rem; }
.decision-page[data-decision-state="bloqueada"] .decision-result, .decision-page[data-decision-state="debil"] .decision-result { border-color: var(--color-danger); }
.decision-page[data-decision-state="bloqueada"] .decision-meter span, .decision-page[data-decision-state="debil"] .decision-meter span { background: var(--color-danger); }
.decision-page[data-decision-state="fuerte"] .decision-result { border-color: var(--estado-abierta); }
.decision-page[data-decision-state="fuerte"] .decision-meter span { background: var(--estado-abierta); }

/* ---------- Pie ---------- */
.pie { margin-top: var(--space-16); background: var(--color-pie); color: #b8c3d3; }
.pie-in { width: min(100%, var(--wrap)); margin: 0 auto; padding: var(--space-12) var(--space-6) var(--space-8); font-size: var(--text-14); }
.footer-grid { display: grid; grid-template-columns: minmax(0, 2fr) repeat(2, minmax(10rem, 1fr)); gap: var(--space-8); }
.footer-about { max-width: 36rem; }
.marca--footer { margin-bottom: var(--space-4); }
.pie .marca-word { color: #f1f4f8; }
.pie .marca-word span { color: #8f9db2; }
.pie-in p { margin-bottom: var(--space-3); }
.pie-in .mini { margin-bottom: 0; color: #93a0b3; }
.pie-in .mini strong { color: #e1e6ee; }
.pie-in nav { display: flex; align-items: flex-start; flex-direction: column; gap: .15rem; }
.pie-in nav strong { margin-bottom: var(--space-2); color: #f1f4f8; font-family: var(--font-display); font-size: 1.05rem; font-stretch: 78%; }
.pie-in nav a { min-height: 2.2rem; display: inline-flex; align-items: center; color: #b8c3d3; text-decoration: none; }
.pie-in nav a:hover { color: var(--color-signal); text-decoration: underline; }
.footer-bottom { margin: var(--space-8) 0 0; padding-top: var(--space-4); border-top: 1px solid #25303f; color: #8a97aa; font-size: .8rem; }

/* ---------- Páginas institucionales y guías ---------- */
.legal-page { max-width: 52rem; margin: var(--space-4) auto 0; }
.legal-header { margin-bottom: var(--space-6); padding: var(--space-8) 0 var(--space-6); border-bottom: 1px solid var(--color-line); }
.legal-header h1 { max-width: 24ch; margin-bottom: var(--space-3); }
.legal-header > p:last-child { margin: 0; color: var(--color-muted); font-size: var(--text-14); }
.editorial-meta { display: flex; flex-wrap: wrap; gap: .45rem 1rem; color: var(--color-muted); font-size: var(--text-14); }
.editorial-meta span { display: inline-flex; align-items: center; gap: .35rem; }
.editorial-meta span + span::before { margin-right: .8rem; color: var(--color-line-strong); content: "·"; }
.editorial-meta a { font-weight: 600; }
.legal-content { padding: var(--space-8); border: 1px solid var(--color-line); border-radius: var(--radius-3); background: var(--color-surface); }
.legal-content h2 { margin: var(--space-8) 0 var(--space-3); font-size: var(--text-24); }
.legal-content h2:first-child { margin-top: 0; }
.legal-content p, .legal-content li { color: var(--color-text-2); }
.legal-content p { margin-bottom: var(--space-4); }
.legal-content ul { display: grid; gap: var(--space-2); padding-left: 1.35rem; }
.legal-content a { font-weight: 600; }
.legal-lead { color: var(--color-text) !important; font-size: 1.12rem; line-height: 1.7; }
.legal-table-wrap { max-width: 100%; overflow-x: auto; border: 1px solid var(--color-line); border-radius: var(--radius-2); }
.legal-table { min-width: 42rem; }
.legal-table code { color: var(--color-text); font-family: var(--font-mono); font-size: .85em; }
.faq-section { margin-top: var(--space-10); padding-top: var(--space-8); border-top: 1px solid var(--color-line); }
.faq-section h2 { margin-top: 0; }
.faq-list { display: grid; gap: 0; border-top: 1px solid var(--color-line); }
.faq-list details { border-bottom: 1px solid var(--color-line); }
.faq-list summary { position: relative; padding: var(--space-4) 3rem var(--space-4) 0; color: var(--color-text); font-weight: 700; cursor: pointer; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { position: absolute; top: 50%; right: var(--space-2); transform: translateY(-50%); color: var(--color-text-2); content: "+"; font-size: 1.4rem; line-height: 1; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { margin: 0; padding: 0 0 var(--space-4); }
.contact-card { margin-bottom: var(--space-8); padding: var(--space-6); border-radius: var(--radius-3); background: var(--color-surface-2); }
.contact-card h2 { margin-top: 0; }
.error-page { max-width: 42rem; margin: var(--space-16) auto; }
.error-page h1 { margin-bottom: var(--space-3); }
.error-page > p:not(.eyebrow) { margin-bottom: var(--space-6); color: var(--color-text-2); }

.skeleton { min-height: 8rem; border-radius: var(--radius-2); background: var(--color-surface-2); animation: pulso 1.2s ease-in-out infinite alternate; }
@keyframes pulso { to { background: var(--color-surface-3); } }

/* ---------- Responsivo ---------- */
@media (max-width: 70rem) {
  .market-tool--portada .portada-texto { grid-template-columns: minmax(0, 1fr); grid-template-areas: "fuente" "h1" "bajada" "pulso" "primera" "desde"; }
  .pulso { margin-top: var(--space-3); grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .top-in { gap: 20px; }
  .top nav { gap: 16px; }
  .filas-cabecera, .card { grid-template-columns: 8.5rem minmax(0, 1fr) 9rem 8rem 7.75rem; gap: var(--space-3); }
}

@media (max-width: 64rem) {
  .top-in { grid-template-columns: minmax(0, 1fr) auto; gap: 0 12px; }
  .top nav { min-width: 0; grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; gap: 20px; overflow-x: auto; scrollbar-width: none; }
  .top nav::-webkit-scrollbar { display: none; }
  .access-tools { grid-column: 2; grid-row: 1; }
  .market-tool--portada { grid-template-columns: minmax(0, 1fr); grid-template-areas: "texto" "form" "tramos" "aviso" "radar" "lista" "tira"; }
  .tramos-lista, .market-tool--portada .tira-lista, .radar-lista { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .radar-pildora--barra { display: none; }
  .top nav .radar-pildora--nav { min-height: 34px; display: inline-flex; align-self: center; padding: 0 .55rem; border: 1px solid var(--color-line); }
  .guardar { top: .55rem; margin-top: 0; }
  .tira-regiones { margin-top: var(--space-8); padding: var(--space-6) 0 0; border-left: 0; border-top: 1px solid var(--color-line); }
  .tira-lista { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--space-8); }
  .filas-cabecera { display: none; }
  .card { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "id estado" "texto texto" "lugar monto"; gap: .35rem var(--space-3); padding: var(--space-4); }
  .card .fila-id { grid-area: id; }
  .card .fila-texto { grid-area: texto; }
  .card .fila-lugar { grid-area: lugar; }
  .card .monto { grid-area: monto; align-self: end; }
  .card .fila-cierre { grid-area: estado; align-self: start; }
  .card .fila-id { align-self: start; }
  .card .codigo { white-space: nowrap; }
  .rubros-lista { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .banda-agil-in { grid-template-columns: minmax(0, 1fr); gap: var(--space-8); }
  .detail-layout { grid-template-columns: minmax(0, 1fr) 18rem; }
  .tools-hero, .calculator-hero, .decision-hero { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
  .calculator-fields--three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tools-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 48rem) {
  .top-in { padding-inline: 16px; }
  main { padding-inline: var(--space-4); }
  .hero { padding-block: var(--space-8) var(--space-5); }
  .market-tool--portada { padding-top: var(--space-3); row-gap: var(--space-3); }
  .portada-bajada { display: none; }
  .pulso { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pulso-dato { padding: .5rem .7rem; }
  .pulso-dato b { font-size: 1.4rem; }
  .pulso-dato--monto { grid-column: 1 / -1; flex-direction: row; align-items: baseline; flex-wrap: wrap; gap: .1rem .5rem; border-top: 1px solid var(--color-line); }
  .pulso .pulso-dato--monto { border-left: 0; }
  .filter-panel:has([data-filtros-boton]) .search-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .filter-panel:has([data-filtros-boton]) .search-field { grid-column: 1 / -1; }
  .filter-panel:has([data-filtros-boton]) .search-row .button { width: 100%; padding-inline: var(--space-3); white-space: nowrap; }
  .filter-panel:has([data-filtros-boton]) .search-row .button--primary { order: 2; }
  .filter-panel .search-row .filtros-boton { display: inline-flex; order: 1; }
  .filter-panel[data-filtros="plegados"] .filter-grid { display: none; }
  .official-buttons .guardar--ficha { width: 100%; justify-content: center; }
  .filter-panel { padding: var(--space-4); }
  .search-row { grid-template-columns: minmax(0, 1fr); }
  .search-row .button { width: 100%; }
  .filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filter-grid > :last-child:nth-child(odd) { grid-column: 1 / -1; }
  .market-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .market-stat { flex-direction: column; gap: .25rem; padding-right: var(--space-3); }
  .market-stat + .market-stat { padding-left: var(--space-3); }
  .market-stat span { font-size: 1.5rem; }
  .market-stat small { font-size: .8rem; line-height: 1.3; }
  .detail-hero { padding: var(--space-5); }
  .detail-highlights { grid-template-columns: minmax(0, 1fr); }
  .detail-highlights > div, .detail-highlights > div + div { padding: var(--space-3) 0; border-left: 0; }
  .detail-highlights > div + div { border-top: 1px solid var(--color-line); }
  .official-action { align-items: stretch; flex-direction: column; }
  .official-buttons { flex-direction: column; }
  .official-buttons .button { width: 100%; }
  .detail-layout, .decision-layout, .calculator-layout, .calculator-content, .tools-method { grid-template-columns: minmax(0, 1fr); }
  .metadata-card, .calculator-results { position: static; }
  .decision-result { position: static; grid-row: 1; }
  .tools-grid { grid-template-columns: minmax(0, 1fr); }
  .tools-method-grid { grid-template-columns: minmax(0, 1fr); }
  .preparar-lista, .preparar-lista--guias { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
  .pasos-corto { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guia-lista-check, .guia-indice ol { grid-template-columns: minmax(0, 1fr); }
  .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer-about { grid-column: 1 / -1; }
  .pie-in { padding-inline: var(--space-4); }
}

@media (max-width: 36rem) {
  .tramos-lista, .market-tool--portada .tira-lista, .radar-lista { grid-template-columns: minmax(0, 1fr); }
  .tramo { min-height: 3.2rem; }
  .pulso-dato b { font-size: 1.3rem; }
  .fila-celda > .card { padding-right: 3rem; }
  .guardar { right: .2rem; }
  .filter-grid { grid-template-columns: minmax(0, 1fr); }
  .filter-footer { align-items: flex-start; flex-direction: column; gap: 0; }
  .market-stats { grid-template-columns: minmax(0, 1fr); }
  .market-stat, .market-stat + .market-stat { flex-direction: row; align-items: baseline; padding: var(--space-3) 0; border-left: 0; }
  .market-stat + .market-stat { border-top: 1px solid var(--color-line); }
  .aviso-cierre .button { width: 100%; }
  .tira-lista { grid-template-columns: minmax(0, 1fr); }
  .pasos-corto { grid-template-columns: minmax(0, 1fr); }
  .guia-pasos-lista > li { grid-template-columns: minmax(0, 1fr); }
  .rubros-lista { grid-template-columns: minmax(0, 1fr); }
  .section-heading { align-items: flex-start; flex-direction: column; gap: var(--space-2); }
  .detail-section, .metadata-card, .calculator-section, .calculator-content-main, .calculator-sources, .threshold-overview, .guide-faq, .legal-content, .tools-method, .tool-card { padding: var(--space-4); }
  .card { grid-template-areas: "id estado" "texto texto" "lugar lugar" "monto monto"; }
  .card .monto { text-align: left; }
  .button--primary { width: 100%; }
  .decision-options, .result-pair, .calculator-fields--two, .calculator-fields--three { grid-template-columns: minmax(0, 1fr); }
  .calculator-actions, .calculator-result-actions { align-items: stretch; flex-direction: column; }
  .calculator-actions .button, .calculator-actions .button-link, .calculator-result-actions .button { width: 100%; }
  .threshold-shortcuts > span { width: 100%; }
  .data-status { flex-direction: column; gap: var(--space-1); }
  .hero-actions .button, .guide-cta .button, .banda-agil-acciones .button { width: 100%; }
  .mesa-ayuda { padding: var(--space-4); }
  .footer-grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
  .footer-about { grid-column: auto; }
  .editorial-meta { display: grid; gap: var(--space-1); }
  .editorial-meta span + span::before { display: none; }
  .breadcrumb [aria-current="page"] { max-width: 11rem; }
}

@media (max-width: 22rem) {
  .pulso-dato { padding-inline: .6rem; }
  main, .pie-in { padding-inline: var(--space-3); }
  .top-in { padding-inline: 12px; }
  .marca { gap: 6px; }
  .marca-word { font-size: 21px; }
  .marca-mark { width: 30px; height: 30px; }
  .text-size-controls button, .theme-toggle { width: 40px; height: 40px; }
  .top nav { gap: 16px; }
  .tira-lista a { grid-template-columns: 7.6rem minmax(0, 1fr) 2.6rem; gap: var(--space-2); }
  .card { padding: var(--space-3); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

.solo-impresion { display: none; }

/* ---------- Papel y PDF: solo lo que sirve, en una hoja limpia ---------- */
@media print {
  @page { margin: 14mm 12mm; }
  :root, :root[data-text-size] { font-size: 10.5pt; }
  * { box-shadow: none !important; }
  body, main, .detail-hero, .detail-section, .metadata-card, .filas, .legal-content, .calculator-section, .calculator-results, .decision-result, .decision-form fieldset { background: #fff !important; color: #111 !important; }
  h1, h2, h3, strong, .codigo, .monto, dd { color: #000 !important; }
  a { color: #000 !important; text-decoration: none; }
  main { width: 100%; padding: 0; }
  .solo-impresion { display: block; }
  .cabecera-impresion { margin: 0 0 6mm; padding-bottom: 2mm; border-bottom: 1px solid #999; color: #444; font-size: 8.5pt; }
  .top, .pie, .skip-link, .breadcrumb, .button, .button-link, .banda-agil, .mesa-ayuda, .aviso-cierre, .related, .official-buttons, #official-note, .portada-primera, .tira-regiones, .filter-panel, .load-more-wrap, .preparar, .rubros, .empty-state, .silo-links, .paginador, .guide-cta, .hero-actions, .theme-toggle, .data-status, .utm-context-card, .checklist-actions, .local-note { display: none !important; }
  .detail-page { display: block; margin: 0; }
  .detail-hero, .detail-section, .metadata-card { margin: 0 0 5mm; padding: 0; border: 0; border-radius: 0; }
  .detail-hero h1 { max-width: none; font-size: 18pt; }
  .impresion-oficial { margin: 0 0 2mm; color: #444; font-size: 8.5pt; }
  .detail-highlights { margin: 3mm 0; border-color: #999; }
  .detail-highlights > div + div { border-color: #999; }
  /* Resumen antes que detalle: los datos clave van justo bajo el título. */
  .detail-layout { display: flex; flex-direction: column; }
  .detail-main { display: block; }
  .metadata-card { order: -1; }
  .detail-section { break-inside: auto; }
  .detail-section > h2, .timeline li, .items-table tr, .meta-row { break-inside: avoid; break-after: avoid-page; }
  .timeline li { break-after: auto; }
  .process-explainer p:has(a) { display: none; }
  .items-table th { white-space: nowrap; }
  .detail-section > h2, .metadata-card h2, .detail-section h2 { margin: 0 0 2mm; font-size: 12.5pt; }
  .process-explainer { padding: 0; }
  .metadata-card { position: static; }
  .metadata-card dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 8mm; }
  .meta-row { padding: 1.5mm 0; border-color: #ccc; }
  .metadata-note { display: none; }
  .timeline { margin-top: 2mm; }
  .timeline li { padding-bottom: 2mm; }
  .timeline li div > span { display: none; }
  .timeline .is-current strong::after { border: 1px solid #000; background: none; }
  .table-wrap, .legal-table-wrap { overflow: visible; border-color: #999; }
  .items-table { min-width: 0; }
  .items-table th, .items-table td { padding: 1.5mm 2mm; border-color: #ccc; }
  .chip-estado, .chip-estado.pronto, .chip-estado.cerrada { border: 1px solid #000; background: none !important; color: #000 !important; }
  .checklist-card { display: none; }
  .checklist li { break-inside: avoid; }

  /* Imprimir el checklist: título de la licitación + checklist, nada más. */
  :root[data-imprimir="checklist"] .checklist-card { display: block; }
  :root[data-imprimir="checklist"] .detail-main > :not(.checklist-card), :root[data-imprimir="checklist"] .metadata-card, :root[data-imprimir="checklist"] .detail-highlights, :root[data-imprimir="checklist"] .detail-description { display: none !important; }
  :root[data-imprimir="checklist"] .progress-track { display: none; }

  /* Listados: título y tabla de resultados visibles. */
  .market-tool, .market-tool--portada { display: block; padding: 0; }
  .market-stats { margin: 0 0 4mm; border-color: #999; }
  .market-stat span { font-size: 14pt; }
  .filas { border: 1px solid #999; border-radius: 0; }
  .filas-cabecera, .card { grid-template-columns: 27mm minmax(0, 1fr) 30mm 24mm 24mm; grid-template-areas: none; gap: 3mm; }
  .card { padding: 2mm 3mm; border-color: #ccc; break-inside: avoid; }
  .card > * { grid-area: auto !important; }
  .card .monto { align-self: center; text-align: right; }
  .card .fila-cierre { grid-auto-flow: row; justify-items: end; }
  :root .filas-cabecera { display: grid !important; padding: 1.5mm 3mm; background: none; border-color: #999; color: #333; font-size: 8pt; }
  .card h3 { -webkit-line-clamp: unset; font-size: 10pt; }
  .hero { padding: 0 0 3mm; }
  .portada-texto h1, .hero h1 { font-size: 20pt; }

  /* Herramientas */
  .decision-layout, .calculator-layout, .calculator-form { display: block; }
  .decision-result, .calculator-results { position: static; margin-bottom: 5mm; border: 1px solid #999; }
  .decision-form fieldset, .calculator-section { break-inside: avoid; margin-bottom: 4mm; }
  .calculator-hero-note, .calculator-content, .calculator-actions, .calculator-result-actions, .calculator-sources .button, .utm-deep-link { display: none !important; }
  .result-primary { border: 1px solid #000; background: none !important; color: #000 !important; }

  /* Lo que depende de cada persona o de la pantalla no va al papel. */
  .guardar, .plazo-seg, .nueva, .radar, .tramos, .pulso, .desde-visita, .filtros-boton { display: none !important; }
  .fila-celda > .card { padding-right: 3mm; }
  .card .tipo-proceso, .ficha-tramo { border: 1px solid #000; background: none !important; color: #000 !important; }
  .result-primary output, .result-primary > span, .result-primary small { color: #000 !important; }
}
