/* CSS/mobile-lists.css — Celulares: tablas de datos como LISTAS VERTICALES y sin scroll horizontal.
 *
 * Se carga al final para poder ajustar lo anterior. Solo actúa en pantallas de hasta 768 px.
 *   • <table class="m-stack">  → cada fila es una tarjeta; cada celda, una línea "ETIQUETA ........ valor"
 *     (las etiquetas las pone JS/mobile-tables.js a partir de las cabeceras).
 *   • Franjas horizontales (KPIs, logros, próximos 7 días, chips, pestañas) → cuadrícula o líneas que se acomodan.
 */
@media (max-width: 768px) {

    /* ------------------------------------------------------------------
       1. TABLAS → LISTAS VERTICALES
       ------------------------------------------------------------------ */
    .m-stack-wrap {
        overflow-x: visible !important;
        max-width: 100% !important;
        min-width: 0 !important;
        border: 0 !important;
        background: transparent !important;
        box-shadow: none !important;
    }

    table.m-stack {
        display: block !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        border: 0 !important;
        border-collapse: separate !important;
        background: transparent !important;
    }

    /* Las cabeceras siguen existiendo para lectores de pantalla, pero no se ven */
    table.m-stack thead {
        position: absolute !important;
        width: 1px; height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    table.m-stack tbody,
    table.m-stack tfoot { display: block !important; width: 100% !important; }

    table.m-stack tr {
        display: block !important;
        width: auto !important;
        margin: 0 0 12px !important;
        padding: 2px 14px !important;
        background: var(--card-bg) !important;
        border: 1px solid var(--card-border) !important;
        border-radius: 14px !important;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
        box-sizing: border-box;
    }

    table.m-stack td {
        display: flex !important;
        align-items: baseline;
        justify-content: space-between;
        gap: 14px;
        width: auto !important;
        min-width: 0 !important;
        max-width: 100% !important;
        padding: 9px 0 !important;
        border: 0 !important;
        border-bottom: 1px solid var(--card-border) !important;
        text-align: right !important;
        white-space: normal !important;
        overflow-wrap: anywhere;
        word-break: break-word;
        box-sizing: border-box;
    }
    table.m-stack td:last-child { border-bottom: 0 !important; }

    /* Etiqueta de cada dato */
    table.m-stack td[data-label]::before {
        content: attr(data-label);
        flex: 0 0 auto;
        max-width: 42%;
        font-size: 0.7rem;
        font-weight: 800;
        letter-spacing: 0.05em;
        text-transform: uppercase;
        color: var(--text-secondary);
        text-align: left;
    }

    /* Contenido que va dentro de la celda (etiquetas, badges, textos con salto) */
    table.m-stack td > * { max-width: 100%; min-width: 0; }

    /* Fila de "sin datos" o de un solo bloque */
    table.m-stack td[colspan] {
        display: block !important;
        text-align: center !important;
        border-bottom: 0 !important;
    }

    /* Opciones por columna (ver JS/mobile-tables.js) */
    table.m-stack td.m-hide { display: none !important; }

    table.m-stack td.m-title {
        display: block !important;
        text-align: left !important;
        padding: 12px 0 10px !important;
        font-size: 1.02rem;
        font-weight: 700;
        color: var(--text-primary);
    }
    table.m-stack td.m-title::before { display: none; }

    table.m-stack td.m-actions {
        justify-content: flex-end;
        flex-wrap: wrap;
        padding-top: 12px !important;
    }
    table.m-stack td.m-actions::before { display: none; }

    /* Casilla de selección (p. ej. nómina masiva): esquina superior derecha de la tarjeta */
    table.m-stack tr { position: relative !important; }
    table.m-stack td.m-check {
        position: absolute !important;
        top: 10px; right: 12px;
        display: block !important;
        width: auto !important;
        padding: 0 !important;
        border: 0 !important;
    }
    table.m-stack td.m-check::before { display: none; }
    table.m-stack td.m-check input[type="checkbox"] { width: 22px; height: 22px; }
    table.m-stack td.m-title { padding-right: 44px !important; }

    /* Botones y campos dentro de las tarjetas: cómodos para el dedo */
    table.m-stack td button,
    table.m-stack td .btn { min-height: 40px; }

    /* Pie de tabla (totales) */
    table.m-stack tfoot tr { background: var(--input-bg) !important; }

    /* Contenedores de scroll de tablas dentro de modales */
    .table-wrapper-modal.m-stack-wrap,
    .nm-table-wrap.m-stack-wrap,
    .table-wrapper.m-stack-wrap { max-height: none !important; }

    /* ------------------------------------------------------------------
       2. FRANJAS HORIZONTALES → CUADRÍCULAS / LÍNEAS QUE SE ACOMODAN
       ------------------------------------------------------------------ */

    /* KPIs de Balance */
    #balance-view .bal-kpis {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        overflow: visible !important;
        gap: 10px !important;
        scroll-snap-type: none !important;
    }
    /* Ya no es un carrusel: los puntos indicadores sobran */
    #balance-view .bal-dots { display: none !important; }
    #balance-view .bal-kpis > * { min-width: 0 !important; width: auto !important; max-width: none !important; flex: none !important; scroll-snap-align: none !important; }

    /* Próximos 7 días (Agenda) */
    .fin-upcoming-strip {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        overflow: visible !important;
        gap: 10px;
    }
    .fin-upcoming-chip { min-width: 0 !important; flex: none !important; }
    /* Los días sin vencimientos no aportan nada en el celular: solo se muestran los que tienen algo (y siempre hoy) */
    .fin-upcoming-chip.empty:not(.today) { display: none !important; }

    /* Logros de Ahorros */
    .sv-ach-strip {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        overflow: visible !important;
        gap: 10px;
        scroll-snap-type: none !important;
    }
    .sv-ach-strip .sv-ach { flex: none !important; min-width: 0 !important; width: auto !important; }

    /* Chips (filtros, sugerencias, atajos de fecha): se acomodan en varias líneas */
    .sv-chips, .sv-chips-scroll, .nc-chips {
        flex-wrap: wrap !important;
        overflow: visible !important;
        row-gap: 8px;
    }

    /* Pestañas de Nómina: se reparten en filas */
    .nm-tabs {
        display: flex !important;
        flex-wrap: wrap !important;
        overflow: visible !important;
        width: 100% !important;
    }
    .nm-tabs button { flex: 1 1 calc(50% - 8px) !important; min-width: 0 !important; justify-content: center; }
}

/* Elementos que solo existen en el celular (p. ej. el selector de orden que reemplaza a las cabeceras de la tabla) */
.m-only { display: none !important; }
@media (max-width: 768px) {
    .m-only { display: block !important; width: 100%; }
}

/* Resumen del historial de ahorros (Movimientos / Aportado / Retirado): no debe empujar el ancho en pantallas muy angostas */
@media (max-width: 420px) {
    .sv-history-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
    .sv-history-summary > div { min-width: 0; padding: 10px 4px; }
    .sv-history-summary span { font-size: 0.62rem; letter-spacing: 0.02em; }
    .sv-history-summary strong { font-size: 0.86rem; overflow-wrap: anywhere; }
}

/* Botón flotante de descarga en los modales de detalle: deja espacio para que no tape el último dato */
@media (max-width: 768px) {
    .table-wrapper-modal.m-stack-wrap,
    .balm-list { padding-bottom: 76px; }
}
