/* Visualización financiera · Ejercicio 2025 (ADR-035; tarea M46): la página /analisis/visualizacion-financiera/2025/. Usa los
   tokens de shell.css y los selectores, segmentos, tablas y botones de resultados.css; todo lo propio vive bajo .kvf (y su
   subnavegación, .kvf-subnav), sin reglas globales. Los colores de los gráficos representan conceptos financieros fijos
   (pagado, saldo, diferencia…), no posiciones en una lista, y cambian con el tema sin redibujar: el SVG usa estas variables. */

.kvf {
    --kvf-fondo: var(--surface-solid);
    --kvf-texto: #0f172a;
    --kvf-suave: #475569;
    --kvf-claro: #ffffff;
    --kvf-aviso: #9a3412;
    --kvf-guia: rgba(100, 116, 139, .28);
    --kvf-eje: #94a3b8;
    --kvf-cero: #334155;
    --kvf-referencia: #c2410c;
    --kvf-conector: #64748b;
    --kvf-llave: #64748b;
    --kvf-total: #0f172a;
    --kvf-borde: var(--surface-solid);
    --kvf-patron: rgba(15, 23, 42, .5);
    --kvf-banda: .38;
    --kvf-presupuesto: #2563eb;
    --kvf-inicial: #7c9fe0;
    --kvf-aumento: #0284c7;
    --kvf-reduccion: #dc2626;
    --kvf-obligado: #f97316;
    --kvf-pagado: #047857;
    --kvf-pendiente: #f59e0b;
    --kvf-saldo: #94a3b8;
    --kvf-diferencia: #d6dbe3;
    --kvf-nd: #e2e8f0;
    --kvf-vigente_fondo: #dbe7fb;
    --kvf-ingreso_gestion: #0d9488;
    --kvf-egreso_gestion: #ea580c;
    --kvf-resultado_pos: #15803d;
    --kvf-resultado_neg: #dc2626;
    --kvf-activo: #2563eb;
    --kvf-pasivo: #b45309;
    --kvf-patrimonio: #059669;
    --kvf-propio: #0d9488;
    --kvf-transferencia: #7c3aed;
    --kvf-otro_ingreso: #94a3b8;
    --kvf-recaudado: #0f766e;
    --kvf-liquidez: #2563eb;
    --kvf-ing100: #0d9488;
    --kvf-ing200: #0891b2;
    --kvf-ing300: #6366f1;
    --kvf-gas100: #8b5cf6;
    --kvf-gas200: #0ea5e9;
    --kvf-gas300: #14b8a6;
    --kvf-gas400: #65a30d;
    --kvf-gas500: #f59e0b;
    --kvf-gas600: #a16207;
    --kvf-gas700: #e11d48;
    --kvf-gas800: #6366f1;
    --kvf-gas900: #64748b;
    --kvf-ej0: #e0ecff;
    --kvf-ej1: #b3cdf7;
    --kvf-ej2: #79a6ee;
    --kvf-ej3: #3b6fd4;
    --kvf-ej4: #1e3a8a;
    --kvf-ej5: #c2410c;
    --kvf-ejnd: #e5e7eb;
    position: relative;
    z-index: 1;
    display: grid;
    gap: 1.25rem;
    width: min(100%, 76rem);
    min-width: 0;
    margin: 0 auto;
    padding: 2rem 1rem 3rem;
}

html[data-theme="dark"] .kvf {
    --kvf-texto: #f1f5f9;
    --kvf-suave: #a8b5c8;
    --kvf-aviso: #fdba74;
    --kvf-guia: rgba(148, 163, 184, .22);
    --kvf-eje: #64748b;
    --kvf-cero: #cbd5e1;
    --kvf-referencia: #fb923c;
    --kvf-conector: #94a3b8;
    --kvf-llave: #94a3b8;
    --kvf-total: #f8fafc;
    --kvf-patron: rgba(248, 250, 252, .55);
    --kvf-banda: .45;
    --kvf-presupuesto: #3b82f6;
    --kvf-inicial: #6f8fcc;
    --kvf-aumento: #0ea5e9;
    --kvf-reduccion: #ef4444;
    --kvf-pagado: #10b981;
    --kvf-saldo: #64748b;
    --kvf-diferencia: #475569;
    --kvf-nd: #334155;
    --kvf-vigente_fondo: #1e2f52;
    --kvf-resultado_pos: #22c55e;
    --kvf-resultado_neg: #ef4444;
    --kvf-activo: #3b82f6;
    --kvf-pasivo: #d97706;
    --kvf-patrimonio: #10b981;
    --kvf-transferencia: #8b5cf6;
    --kvf-otro_ingreso: #64748b;
    --kvf-recaudado: #14b8a6;
    --kvf-liquidez: #3b82f6;
    --kvf-gas900: #94a3b8;
    --kvf-ej0: #dbe7fb;
    --kvf-ej1: #a9c4f2;
    --kvf-ej2: #6f9ae6;
    --kvf-ej3: #3b6fd4;
    --kvf-ej4: #1e3a8a;
    --kvf-ejnd: #334155;
}

.kvf > * {
    min-width: 0;
}

/* Subnavegación de Análisis (la misma que muestra Financiero). */
.kvf-subnav {
    position: relative;
    z-index: 1;
    border-bottom: 1px solid var(--border);
    background: var(--surface);
}

.kvf-subnav__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25rem .375rem;
    width: min(100%, 76rem);
    margin: 0 auto;
    padding: .5rem 1rem;
}

.kvf-subnav a,
.kvf-subnav__seccion {
    display: inline-flex;
    align-items: center;
    min-height: 2.25rem;
    padding: .375rem .75rem;
    border: 1px solid transparent;
    border-radius: 9999px;
    color: var(--text-soft);
    font-size: .8125rem;
    font-weight: 700;
}

.kvf-subnav__seccion {
    color: var(--text);
    font-weight: 800;
}

.kvf-subnav__seccion::after {
    content: "›";
    margin-left: .5rem;
    color: var(--text-muted);
}

.kvf-subnav a:hover {
    color: var(--orange-600);
    background: var(--surface-soft);
}

.kvf-subnav a[aria-current="page"] {
    color: var(--orange-700);
    border-color: rgba(249, 115, 22, .35);
    background: rgba(249, 115, 22, .10);
}

html[data-theme="dark"] .kvf-subnav a[aria-current="page"] {
    color: var(--orange-400);
}

.kvf-subnav a:focus-visible {
    outline: 3px solid var(--orange-500);
    outline-offset: 2px;
}

/* Cabecera */
.kvf__eyebrow {
    margin: 0 0 .5rem;
    color: var(--orange-700);
    font-size: .8125rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

html[data-theme="dark"] .kvf__eyebrow {
    color: var(--orange-400);
}

.kvf__cabecera h1 {
    margin: 0;
    color: var(--text);
    font-size: clamp(1.75rem, 3.6vw, 2.5rem);
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.15;
}

.kvf__corte {
    margin: .625rem 0 0;
    color: var(--text);
    font-size: .9375rem;
    font-weight: 600;
    line-height: 1.5;
}

.kvf__intro {
    max-width: 52rem;
    margin: .75rem 0 0;
    color: var(--text-soft);
    line-height: 1.6;
}

/* Tarjetas */
.kvf__controles,
.kvf__inicio,
.kvf__galeria,
.kvf__ficha,
.kvf__vista,
.kvf__metodo {
    display: grid;
    gap: .875rem;
    min-width: 0;
    padding: 1.25rem;
    border: 1px solid var(--border);
    border-radius: 1.25rem;
    background: var(--surface);
    color: var(--text);
}

.kvf__controles > *,
.kvf__ficha > *,
.kvf__vista > *,
.kvf__metodo > * {
    min-width: 0;
    max-width: 100%;
}

.kvf__inicio h2,
.kvf__ficha h2,
.kvf__vista h2,
.kvf__metodo h2 {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 800;
    letter-spacing: -.01em;
}

.kvf__inicio p {
    margin: 0;
    color: var(--text-soft);
    line-height: 1.6;
}

.kvf h3 {
    margin: .25rem 0 0;
    font-size: 1rem;
    font-weight: 800;
}

/* Controles compactos */
.kvf__controles {
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    align-items: end;
    gap: .75rem 1rem;
}

.kvf__controles .campo-select {
    flex-direction: column;
    align-items: stretch;
    gap: .375rem;
}

.kvf__controles .campo-select select {
    width: 100%;
}

.kvf__tipo {
    grid-column: span 2;
}

.kvf__rotulo {
    color: var(--text-muted);
    font-size: .8125rem;
    font-weight: 600;
}

.kvf__buscador {
    position: relative;
    display: grid;
    gap: .375rem;
}

.kvf__buscador input {
    width: 100%;
    min-width: 0;
    padding: .5rem .75rem;
    border: 1px solid var(--border-strong);
    border-radius: .75rem;
    background: var(--input-bg);
    color: var(--input-text);
    font: inherit;
}

.kvf__buscador input:focus-visible,
.kvf__controles select:focus-visible {
    outline: 3px solid var(--orange-500);
    outline-offset: 1px;
}

.kvf__opciones {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 18rem;
    margin: .25rem 0 0;
    padding: .25rem;
    overflow-y: auto;
    list-style: none;
    border: 1px solid var(--border-strong);
    border-radius: .75rem;
    background: var(--surface-solid);
    box-shadow: var(--card-shadow);
}

.kvf__opcion {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .125rem .75rem;
    padding: .5rem .625rem;
    border-radius: .5rem;
    cursor: pointer;
    font-size: .875rem;
}

.kvf__opcion:hover,
.kvf__opcion.es-activa {
    background: rgba(249, 115, 22, .12);
}

.kvf__opcion[aria-selected="true"] .kvf__opcion-nombre {
    font-weight: 800;
}

.kvf__opcion-dep {
    color: var(--text-muted);
    font-size: .8125rem;
}

.kvf__opcion--sin-informe .kvf__opcion-dep {
    color: var(--text-muted);
    font-style: italic;
}

.kvf__opcion--vacia {
    cursor: default;
    color: var(--text-muted);
}

.kvf__navegar {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
}

.kvf__posicion {
    color: var(--text-muted);
    font-size: .8125rem;
    font-weight: 600;
}

.kvf .boton-secundario {
    min-height: 2.5rem;
}

.kvf .boton-secundario:disabled {
    cursor: not-allowed;
    opacity: .5;
}

.kvf .boton-secundario:not(:disabled):hover {
    border-color: var(--orange-500);
    color: var(--text);
}

.kvf a.boton-secundario {
    display: inline-flex;
    align-items: center;
}

.kvf__mensaje {
    margin: 0;
    padding: .75rem 1rem;
    border: 1px solid rgba(217, 119, 6, .4);
    border-radius: 1rem;
    background: rgba(217, 119, 6, .08);
    color: var(--text);
    font-weight: 600;
}

/* Ficha */
.kvf__ficha-cabecera {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
}

.kvf__meta,
.kvf__sub {
    margin: .375rem 0 0;
    color: var(--text-muted);
    font-size: .875rem;
    line-height: 1.5;
}

.kvf__sub {
    color: var(--text);
    font-weight: 600;
}

.kvf__insignia {
    display: inline-flex;
    align-items: center;
    padding: .375rem .75rem;
    border-radius: 9999px;
    font-size: .8125rem;
    font-weight: 800;
}

.kvf__insignia--informante {
    border: 1px solid rgba(5, 150, 105, .35);
    color: var(--emerald-600);
    background: rgba(5, 150, 105, .08);
}

/* Sin informe: estado gris con texto documental. */
.kvf__insignia--sin-informe {
    border: 1px solid #9ca3af;
    color: #4b5563;
    background: #e5e7eb;
}

html[data-theme="dark"] .kvf__insignia--sin-informe {
    border-color: #6b7280;
    color: #e5e7eb;
    background: #4b5563;
}

.kvf__sin-informe {
    margin: 0;
    padding: .875rem 1rem;
    border-left: 4px solid #9ca3af;
    border-radius: .5rem;
    background: var(--surface-soft);
    font-weight: 600;
}

.kvf__prioritarios {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: .75rem;
    margin: 0;
}

.kvf__prioritario {
    display: grid;
    align-content: start;
    gap: .25rem;
    padding: .875rem 1rem;
    border: 1px solid var(--border);
    border-radius: 1rem;
    background: var(--surface-soft);
}

.kvf__prioritario dt {
    color: var(--text-muted);
    font-size: .8125rem;
    font-weight: 700;
}

.kvf__valor {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.kvf__alcance {
    margin: 0;
    color: var(--text-muted);
    font-size: .75rem;
    line-height: 1.45;
}

/* Un dato ausente se marca N/D, en rojo y negrita (como en Financiero, ADR-033): nunca como cero. */
.kvf .es-falta {
    color: var(--red-600);
    font-weight: 800;
}

html[data-theme="dark"] .kvf .es-falta {
    color: #f87171;
}

.kvf__observaciones {
    display: grid;
    gap: .375rem;
    margin: .375rem 0 0;
    padding-left: 1.25rem;
    color: var(--text-soft);
    font-size: .875rem;
    line-height: 1.5;
}

.kvf__acciones {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
}

.kvf__progreso {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
    color: var(--text-soft);
    font-size: .875rem;
}

.kvf__progreso progress {
    width: min(16rem, 100%);
    accent-color: var(--orange-500);
}

/* Vista */
.kvf__vista-cabecera {
    display: grid;
    gap: .125rem;
}

.kvf__vista-cabecera .kvf__eyebrow {
    margin: 0;
}

.kvf__cambio,
.kvf__estado {
    margin: 0;
    padding: .75rem 1rem;
    border-radius: .875rem;
    font-size: .875rem;
    font-weight: 600;
    line-height: 1.5;
}

.kvf__cambio {
    border: 1px solid rgba(217, 119, 6, .45);
    background: rgba(217, 119, 6, .09);
    color: var(--text);
}

.kvf__estado {
    border: 1px solid var(--border-strong);
    background: var(--surface-soft);
    color: var(--text-soft);
}

.kvf__estado--parcial {
    border-color: rgba(217, 119, 6, .45);
}

.kvf__estado--error {
    border-color: rgba(220, 38, 38, .45);
    color: var(--red-600);
}

.kvf__estado--sin-informe,
.kvf__estado--sin_datos {
    border-left: 4px solid #9ca3af;
}

.kvf__error {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem;
}

.kvf__controles-vista {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .75rem 1.25rem;
}

.kvf__controles-vista:empty {
    display: none;
}

.kvf__campo {
    display: grid;
    gap: .375rem;
}

.kvf__migas ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .25rem;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: .875rem;
}

.kvf__migas li + li::before {
    content: "›";
    margin: 0 .375rem 0 .125rem;
    color: var(--text-muted);
}

.kvf__migas [aria-current] {
    font-weight: 800;
}

.kvf__miga {
    cursor: pointer;
    padding: .25rem .5rem;
    border: 1px solid var(--border-strong);
    border-radius: .5rem;
    background: transparent;
    color: var(--text-soft);
    font-weight: 600;
}

.kvf__miga:focus-visible {
    outline: 3px solid var(--orange-500);
    outline-offset: 2px;
}

.kvf__grafico-marco {
    position: relative;
}

.kvf__grafico {
    min-height: 4rem;
    overflow-x: auto;
    overflow-y: hidden;
    border-radius: .875rem;
    background: var(--kvf-fondo);
    scrollbar-width: thin;
}

.kvf__grafico--desplazable {
    box-shadow: inset -12px 0 12px -12px rgba(15, 23, 42, .35);
}

.kvf-svg {
    display: block;
    width: 100%;
    height: auto;
    max-width: none;
}

.kvf__grafico--desplazable .kvf-svg {
    width: auto;
}

.kvf__ir {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin: 0;
    padding: 1rem;
}

/* Elementos del gráfico: el color sale del rol. */
.kvf-forma {
    fill: var(--kvf-nd);
}

.kvf-banda {
    fill-opacity: var(--kvf-banda);
    transition: fill-opacity .15s ease;
}

.kvf-foco:hover .kvf-banda,
g:hover > .kvf-banda {
    fill-opacity: .62;
}

.kvf-celda {
    stroke: var(--kvf-borde);
    stroke-width: 1.5;
}

.kvf-separado {
    stroke: var(--kvf-texto);
    stroke-width: 1;
    stroke-dasharray: 3 2;
}

.kvf-sobre {
    pointer-events: none;
}

.kvf-patron-fondo {
    fill: none;
}

.kvf-patron-linea {
    stroke: var(--kvf-patron);
    stroke-width: 1.6;
}

.kvf-patron-nd {
    stroke-width: 1;
}

.kvf-foco {
    cursor: default;
    outline: none;
}

.kvf-foco--abre {
    cursor: pointer;
}

.kvf-foco:focus-visible > .kvf-forma,
.kvf-foco:hover > .kvf-forma {
    stroke: var(--orange-500);
    stroke-width: 2.5;
}

.kvf-texto {
    fill: var(--kvf-texto);
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    pointer-events: none;
}

.kvf-texto-suave { fill: var(--kvf-suave); }
.kvf-texto-claro { fill: var(--kvf-claro); }
.kvf-texto-aviso { fill: var(--kvf-aviso); }

.kvf-linea { stroke: var(--kvf-guia); stroke-width: 1; }
.kvf-linea-guia { stroke: var(--kvf-guia); }
.kvf-linea-eje { stroke: var(--kvf-eje); }
.kvf-linea-cero { stroke: var(--kvf-cero); stroke-width: 1.4; }
.kvf-linea-referencia { stroke: var(--kvf-referencia); stroke-width: 1.4; }
.kvf-linea-conector { stroke: var(--kvf-conector); }
.kvf-linea-llave { stroke: var(--kvf-llave); stroke-width: 1.2; }
.kvf-linea-total { stroke: var(--kvf-total); stroke-width: 2; }
.kvf-punteada { stroke-dasharray: 4 3; }

.kvf-rol-presupuesto { fill: var(--kvf-presupuesto); }
.kvf-rol-inicial { fill: var(--kvf-inicial); }
.kvf-rol-aumento { fill: var(--kvf-aumento); }
.kvf-rol-reduccion { fill: var(--kvf-reduccion); }
.kvf-rol-obligado { fill: var(--kvf-obligado); }
.kvf-rol-pagado { fill: var(--kvf-pagado); }
.kvf-rol-pendiente { fill: var(--kvf-pendiente); }
.kvf-rol-saldo { fill: var(--kvf-saldo); }
.kvf-rol-diferencia { fill: var(--kvf-diferencia); }
.kvf-rol-nd { fill: var(--kvf-nd); }
.kvf-rol-vigente_fondo { fill: var(--kvf-vigente_fondo); }
.kvf-rol-ingreso_gestion { fill: var(--kvf-ingreso_gestion); }
.kvf-rol-egreso_gestion { fill: var(--kvf-egreso_gestion); }
.kvf-rol-resultado_pos { fill: var(--kvf-resultado_pos); }
.kvf-rol-resultado_neg { fill: var(--kvf-resultado_neg); }
.kvf-rol-activo { fill: var(--kvf-activo); }
.kvf-rol-pasivo { fill: var(--kvf-pasivo); }
.kvf-rol-patrimonio { fill: var(--kvf-patrimonio); }
.kvf-rol-propio { fill: var(--kvf-propio); }
.kvf-rol-transferencia { fill: var(--kvf-transferencia); }
.kvf-rol-otro_ingreso { fill: var(--kvf-otro_ingreso); }
.kvf-rol-recaudado { fill: var(--kvf-recaudado); }
.kvf-rol-liquidez { fill: var(--kvf-liquidez); }
.kvf-rol-ing100 { fill: var(--kvf-ing100); }
.kvf-rol-ing200 { fill: var(--kvf-ing200); }
.kvf-rol-ing300 { fill: var(--kvf-ing300); }
.kvf-rol-gas100 { fill: var(--kvf-gas100); }
.kvf-rol-gas200 { fill: var(--kvf-gas200); }
.kvf-rol-gas300 { fill: var(--kvf-gas300); }
.kvf-rol-gas400 { fill: var(--kvf-gas400); }
.kvf-rol-gas500 { fill: var(--kvf-gas500); }
.kvf-rol-gas600 { fill: var(--kvf-gas600); }
.kvf-rol-gas700 { fill: var(--kvf-gas700); }
.kvf-rol-gas800 { fill: var(--kvf-gas800); }
.kvf-rol-gas900 { fill: var(--kvf-gas900); }
.kvf-rol-ej0 { fill: var(--kvf-ej0); }
.kvf-rol-ej1 { fill: var(--kvf-ej1); }
.kvf-rol-ej2 { fill: var(--kvf-ej2); }
.kvf-rol-ej3 { fill: var(--kvf-ej3); }
.kvf-rol-ej4 { fill: var(--kvf-ej4); }
.kvf-rol-ej5 { fill: var(--kvf-ej5); }
.kvf-rol-ejnd { fill: var(--kvf-ejnd); }
/* El recuadro detrás de un rótulo: del color del fondo, para que el cero y las guías no lo tachen. */
.kvf-rol-fondo { fill: var(--kvf-fondo); }

/* Globo: también al enfocar o tocar una parte del gráfico. */
.kvf__globo {
    position: absolute;
    z-index: 5;
    display: grid;
    gap: .125rem;
    max-width: min(22rem, 80vw);
    padding: .5rem .75rem;
    transform: translate(-50%, calc(-100% - .5rem));
    border: 1px solid var(--border-strong);
    border-radius: .75rem;
    background: var(--surface-solid);
    box-shadow: var(--card-shadow);
    color: var(--text);
    font-size: .8125rem;
    line-height: 1.4;
    pointer-events: none;
}

.kvf__globo--abajo {
    transform: translate(-50%, .5rem);
}

.kvf__globo span {
    color: var(--text-soft);
    font-variant-numeric: tabular-nums;
}

/* Leyenda */
.kvf__leyenda {
    display: flex;
    flex-wrap: wrap;
    gap: .375rem 1rem;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--text-soft);
    font-size: .8125rem;
}

.kvf__leyenda:empty {
    display: none;
}

.kvf__leyenda li {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
}

.kvf__muestra {
    display: inline-block;
    width: .875rem;
    height: .875rem;
    border-radius: .1875rem;
    background: var(--kvf-nd);
}

.kvf__muestra--marcador {
    width: .25rem;
}

.kvf__muestra--patron-rayado,
.kvf__muestra--patron-nd,
.kvf__muestra--patron-pendiente {
    background-image: repeating-linear-gradient(45deg, var(--kvf-patron) 0 1.5px, transparent 1.5px 5px);
}

.kvf__muestra--patron-negativo {
    background-image: repeating-linear-gradient(-45deg, var(--kvf-patron) 0 1.5px, transparent 1.5px 5px);
}

.kvf__muestra--presupuesto { background-color: var(--kvf-presupuesto); }
.kvf__muestra--inicial { background-color: var(--kvf-inicial); }
.kvf__muestra--aumento { background-color: var(--kvf-aumento); }
.kvf__muestra--reduccion { background-color: var(--kvf-reduccion); }
.kvf__muestra--obligado { background-color: var(--kvf-obligado); }
.kvf__muestra--pagado { background-color: var(--kvf-pagado); }
.kvf__muestra--pendiente { background-color: var(--kvf-pendiente); }
.kvf__muestra--saldo { background-color: var(--kvf-saldo); }
.kvf__muestra--diferencia { background-color: var(--kvf-diferencia); }
.kvf__muestra--nd { background-color: var(--kvf-nd); }
.kvf__muestra--vigente_fondo { background-color: var(--kvf-vigente_fondo); }
.kvf__muestra--ingreso_gestion { background-color: var(--kvf-ingreso_gestion); }
.kvf__muestra--egreso_gestion { background-color: var(--kvf-egreso_gestion); }
.kvf__muestra--resultado_pos { background-color: var(--kvf-resultado_pos); }
.kvf__muestra--resultado_neg { background-color: var(--kvf-resultado_neg); }
.kvf__muestra--activo { background-color: var(--kvf-activo); }
.kvf__muestra--pasivo { background-color: var(--kvf-pasivo); }
.kvf__muestra--patrimonio { background-color: var(--kvf-patrimonio); }
.kvf__muestra--propio { background-color: var(--kvf-propio); }
.kvf__muestra--transferencia { background-color: var(--kvf-transferencia); }
.kvf__muestra--otro_ingreso { background-color: var(--kvf-otro_ingreso); }
.kvf__muestra--recaudado { background-color: var(--kvf-recaudado); }
.kvf__muestra--liquidez { background-color: var(--kvf-liquidez); }
.kvf__muestra--ej0 { background-color: var(--kvf-ej0); }
.kvf__muestra--ej1 { background-color: var(--kvf-ej1); }
.kvf__muestra--ej2 { background-color: var(--kvf-ej2); }
.kvf__muestra--ej3 { background-color: var(--kvf-ej3); }
.kvf__muestra--ej4 { background-color: var(--kvf-ej4); }
.kvf__muestra--ej5 { background-color: var(--kvf-ej5); }
.kvf__muestra--ejnd { background-color: var(--kvf-ejnd); }

/* Lectura y tabla */
.kvf__lectura {
    display: grid;
    gap: .75rem;
    margin: 0;
}

.kvf__lectura dt {
    color: var(--text-muted);
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.kvf__lectura dd {
    margin: .125rem 0 0;
    color: var(--text-soft);
    line-height: 1.55;
}

.kvf__avisos {
    display: grid;
    gap: .25rem;
    margin: 0;
    padding-left: 1.25rem;
    color: var(--text-muted);
    font-size: .8125rem;
    line-height: 1.5;
}

.kvf__avisos:empty {
    display: none;
}

.kvf__tabla-titulo {
    margin: .25rem 0 0;
}

.kvf__tabla-scroll {
    max-height: 28rem;
}

.kvf__tabla-scroll:focus-visible {
    outline: 3px solid var(--orange-500);
    outline-offset: 2px;
}

.kvf .tabla td.es-negativa {
    color: var(--red-600);
}

html[data-theme="dark"] .kvf .tabla td.es-negativa {
    color: #fca5a5;
}

/* Miniaturas */
.kvf__miniaturas {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: .75rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.kvf__miniatura {
    display: grid;
    gap: .375rem;
    width: 100%;
    height: 100%;
    padding: .5rem;
    border: 1px solid var(--border);
    border-radius: .875rem;
    background: var(--surface-soft);
    color: var(--text);
    cursor: pointer;
    text-align: left;
}

.kvf__miniatura.es-actual {
    border-color: var(--orange-500);
    box-shadow: 0 0 0 2px rgba(249, 115, 22, .25);
}

.kvf__miniatura:focus-visible {
    outline: 3px solid var(--orange-500);
    outline-offset: 2px;
}

.kvf__miniatura-marco {
    display: grid;
    place-items: center;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border-radius: .5rem;
    background: var(--kvf-fondo);
}

.kvf__miniatura-marco .kvf-svg {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.kvf__miniatura-marco .kvf-texto {
    display: none;
}

.kvf__miniatura-vacia {
    color: var(--text-muted);
    font-size: .8125rem;
    font-weight: 700;
}

.kvf__miniatura-titulo {
    font-size: .8125rem;
    font-weight: 700;
    line-height: 1.3;
}

/* Pantalla ampliada (sin la API del navegador, o como respaldo). */
.kvf__vista:fullscreen,
.kvf__vista--ampliada {
    overflow: auto;
    border-radius: 0;
    background: var(--page-bg);
}

.kvf__vista--ampliada {
    position: fixed;
    inset: 0;
    z-index: 100;
}

.kvf__metodo p {
    margin: 0;
    color: var(--text-soft);
    line-height: 1.6;
}

.kvf__fuente-oficial a {
    color: var(--orange-700);
    font-weight: 700;
    text-decoration: underline;
}

html[data-theme="dark"] .kvf__fuente-oficial a {
    color: var(--orange-400);
}

.kvf__cobertura {
    min-width: 34rem;
}

@media (max-width: 720px) {
    .kvf__tipo {
        grid-column: 1 / -1;
    }

    .kvf__controles,
    .kvf__ficha,
    .kvf__vista,
    .kvf__metodo,
    .kvf__inicio,
    .kvf__galeria {
        padding: 1rem;
    }
}

@media (pointer: coarse) {
    .kvf .boton-secundario,
    .kvf__opcion,
    .kvf__miga {
        min-height: 2.75rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .kvf-banda {
        transition: none;
    }
}

.kvf .tabla td.kvf__na {
    color: var(--text-muted);
}

.kvf .tabla td.kvf__codigo {
    max-width: none;
    white-space: nowrap;
    text-overflow: clip;
}

.kvf .segmentos {
    border-radius: 1.25rem;
}

.kvf__desplazar {
    margin: 0;
}

/* Al enfocar el buscador (o un control de la vista), el navegador lo desplaza por debajo del encabezado fijo, no detrás. */
.kvf__buscador input,
.kvf__controles select,
.kvf__controles-vista button,
.kvf__vista-cabecera {
    scroll-margin-top: 6.5rem;
}
