/* ═══════════════════════════════════════════════════════════════════════
   MÓDULO CONTABILIDAD
   Usa variables globales:
     --primario   #284A70  (azul corporativo)
     --secundario #fe7800  (naranja acento)
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Hero del listado de reportes ───────────────────────────────────── */
.rep-list-hero {
    display: flex;
    gap: 16px;
    align-items: center;
    margin: 8px 0 14px;
    padding: 14px 18px;
    border-radius: 10px;
    background: linear-gradient(135deg, var(--primario, #284A70), #1e3a5f);
    color: #fff;
    box-shadow: 0 4px 12px -6px rgba(40, 74, 112, 0.45);
}
.rep-list-hero__icon {
    width: 48px; height: 48px;
    border-radius: 10px;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(254,120,0,.45);
    display: flex; align-items: center; justify-content: center;
    font-size: 20px; color: var(--secundario, #fe7800);
    flex-shrink: 0;
}
.rep-list-hero__body { flex: 1; min-width: 0; }
.rep-list-hero__body h3 { margin: 0 0 2px; color: #fff; font-weight: 700; font-size: 1.1rem; }
.rep-list-hero__body p { margin: 0; font-size: 0.8rem; opacity: 0.85; max-width: 720px; }
.rep-list-hero__actions { flex-shrink: 0; }

/* ── Grid de tarjetas + scroll ──────────────────────────────────────── */
.rep-list-content {
    padding: 0 1%;
    max-height: calc(100vh - 280px);
    overflow-y: auto;
}
.rep-list-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
    padding: 6px 0 20px;
}
.rep-list-empty {
    margin: 30px auto; max-width: 460px; text-align: center;
    padding: 40px 20px; background: #fff;
    border: 2px dashed #e0e4ec; border-radius: 10px;
}
.rep-list-empty i { font-size: 42px; color: #cbd5e1; margin-bottom: 12px; }
.rep-list-empty h4 { color: var(--primario, #284A70); margin: 0 0 6px; }
.rep-list-empty p { color: #64748b; margin: 0; font-size: 0.85rem; }

.rep-card {
    background: #fff;
    border: 1px solid #e0e4ec;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15,23,42,.04);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
    display: flex; flex-direction: column;
    position: relative;
}
.rep-card::before {
    content: ''; position: absolute; top: 0; left: 0;
    width: 3px; height: 100%;
    background: var(--primario, #284A70);
}
.rep-card--inactive::before { background: #cbd5e1; }
.rep-card--inactive { opacity: .78; }
.rep-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 18px -8px rgba(40,74,112,.28);
    border-color: var(--primario, #284A70);
}
.rep-card__head { padding: 12px 14px 6px 18px; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.rep-card__icon {
    width: 36px; height: 36px; border-radius: 8px;
    background: linear-gradient(135deg, #eef2ff, #dbeafe);
    color: var(--primario, #284A70);
    display: flex; align-items: center; justify-content: center; font-size: 15px;
}
.rep-card__head-meta { display: flex; gap: 5px; flex-wrap: wrap; justify-content: flex-end; }
.rep-card__badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 8px; border-radius: 999px;
    font-size: 0.62rem; font-weight: 700; letter-spacing: .3px;
    text-transform: uppercase; line-height: 1;
}
.rep-card__badge i { font-size: 6px; }
.rep-card__badge--ok { background: #d1fae5; color: #2e7d32; }
.rep-card__badge--off { background: #fee2e2; color: #c62828; }
.rep-card__badge--ple {
    background: rgba(254,120,0,.15); color: #b15600;
    border: 1px solid rgba(254,120,0,.35);
}
.rep-card__badge--ple i { font-size: 9px; }
.rep-card__body { padding: 4px 18px 12px; flex: 1; }
.rep-card__title {
    color: var(--primario, #284A70); font-weight: 600; margin: 0 0 10px;
    font-size: 0.92rem; line-height: 1.3;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; min-height: 2.4em;
}
.rep-card__stats { display: flex; gap: 8px; flex-wrap: wrap; }
.rep-card__stat {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 7px; background: #f5f7fb; border: 1px solid #e0e4ec;
    border-radius: 5px; font-size: 0.7rem; color: #475569;
}
.rep-card__stat i { color: var(--primario, #284A70); font-size: 0.72rem; }
.rep-card__actions { display: flex; border-top: 1px solid #e0e4ec; background: #fafbfc; }
.rep-card__btn {
    flex: 1; border: none; background: transparent;
    padding: 9px 6px; font-size: 0.76rem; font-weight: 600;
    color: #475569; transition: all .15s ease; cursor: pointer;
    border-right: 1px solid #e0e4ec;
    display: inline-flex; align-items: center; justify-content: center; gap: 5px;
}
.rep-card__btn:last-child { border-right: none; }
.rep-card__btn--design { flex: 2.2; color: var(--primario, #284A70); }
.rep-card__btn--design:hover { background: var(--primario, #284A70); color: #fff; }
.rep-card__btn--edit:hover { background: #e0e7ff; color: var(--primario, #284A70); }
.rep-card__btn--danger:hover { background: #c62828; color: #fff; }
.rep-card__btn--ok:hover { background: #2e7d32; color: #fff; }

/* ── Header del editor (ReportDesignComponent) ──────────────────────── */
.rep-design-header {
    background: #fff;
    border-bottom: 1px solid #e0e4ec;
    padding: 10px 18px 12px;
    position: sticky; top: 0; z-index: 5;
}
.rep-design-header__crumb { color: var(--primario, #284A70); cursor: pointer; font-weight: 600; }
.rep-design-header__crumb:hover { text-decoration: underline; }
.rep-design-header__hero {
    display: flex; align-items: center; justify-content: space-between;
    gap: 14px; padding: 9px 12px;
    background: linear-gradient(135deg, #f1f5f9, #e0e7ff);
    border: 1px solid #e0e4ec;
    border-left: 4px solid var(--secundario, #fe7800);
    border-radius: 8px;
}
.rep-design-header__title { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1; }
.rep-design-header__icon {
    width: 40px; height: 40px; border-radius: 8px;
    background: var(--primario, #284A70); color: var(--secundario, #fe7800);
    display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0;
}
.rep-design-header__title-text h3 { margin: 0; color: var(--primario, #284A70); font-size: 1rem; font-weight: 700; }
.rep-design-header__title-text small { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 3px; }
.rep-design-header__chip {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 7px; border-radius: 999px;
    font-size: 0.62rem; font-weight: 700; letter-spacing: .4px; text-transform: uppercase;
}
.rep-design-header__chip--ple {
    background: rgba(254,120,0,.15); color: #b15600;
    border: 1px solid rgba(254,120,0,.35);
}
.rep-design-header__hint { color: #64748b; font-size: 0.72rem; font-weight: 500; }
.rep-design-header__hint i { color: var(--primario, #284A70); margin-right: 3px; }
.rep-design-header__actions { display: flex; gap: 5px; flex-shrink: 0; }
.rep-design-header__btn {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    padding: 6px 12px; border-radius: 7px; font-size: 0.8rem; font-weight: 600;
    cursor: pointer; transition: all .15s ease;
    display: inline-flex; align-items: center; gap: 5px; white-space: nowrap;
}
.rep-design-header__btn:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }
.rep-design-header__btn--primary {
    background: var(--primario, #284A70); color: #fff; border-color: var(--primario, #284A70);
}
.rep-design-header__btn--primary:hover { background: #1e3a5f; border-color: #1e3a5f; color: #fff; }
.rep-design-header__btn--saving { background: #2e7d32; color: #fff; border-color: #2e7d32; cursor: progress; }
.rep-design-section {
    padding: 12px 18px 24px;
    max-height: calc(100vh - 230px);
    overflow: auto;
}

/* ── Visor (ReportesPersonalizadosPage) ─────────────────────────────── */
.rep-viewer-toolbar {
    background: #fff; border: 1px solid #e0e4ec; border-radius: 8px;
    padding: 10px 12px; margin: 6px 0 14px;
    display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end;
    box-shadow: 0 1px 2px rgba(15,23,42,.04);
}
.rep-viewer-toolbar__reportbox,
.rep-viewer-toolbar__filterbox { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-end; }
.rep-viewer-toolbar__reportbox { flex-direction: column; align-items: stretch; min-width: 260px; flex: 0 0 auto; }
.rep-viewer-toolbar__filterbox {
    flex: 1; padding: 6px 10px;
    background: #f5f7fb; border: 1px dashed #e0e4ec; border-radius: 6px;
}
.rep-viewer-toolbar__field { display: flex; flex-direction: column; gap: 3px; }
.rep-viewer-toolbar__label {
    font-size: 0.68rem; font-weight: 700; color: var(--primario, #284A70);
    text-transform: uppercase; letter-spacing: .4px; margin: 0;
    display: inline-flex; align-items: center; gap: 5px;
}
.rep-viewer-toolbar__label i { color: var(--secundario, #fe7800); font-size: 0.72rem; }
.rep-viewer-toolbar__select,
.rep-viewer-toolbar__input {
    border: 1px solid #e0e4ec; border-radius: 5px;
    padding: 5px 9px; font-size: 0.82rem;
    background: #fff; color: var(--primario, #284A70); min-width: 170px;
}
.rep-viewer-toolbar__select:focus,
.rep-viewer-toolbar__input:focus {
    outline: none; border-color: var(--primario, #284A70);
    box-shadow: 0 0 0 3px rgba(40,74,112,.12);
}
.rep-viewer-toolbar__select--sm { min-width: 130px; }
.rep-viewer-toolbar__select--xs { min-width: 56px; }
.rep-viewer-toolbar__input { min-width: 80px; width: 90px; }
.rep-viewer-toolbar__chipbtn {
    background: #fff; border: 1px solid var(--secundario, #fe7800);
    color: var(--primario, #284A70); padding: 5px 9px; border-radius: 5px;
    font-size: 0.78rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px; max-width: 360px;
}
.rep-viewer-toolbar__chipbtn:hover { background: rgba(254,120,0,.08); }
.rep-viewer-toolbar__chipbtn i { color: var(--secundario, #fe7800); }
.rep-viewer-toolbar__chipbtn span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rep-viewer-toolbar__actions { display: flex; gap: 5px; flex-shrink: 0; margin-left: auto; }
.rep-viewer-toolbar__btn {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    padding: 7px 13px; border-radius: 7px; font-size: 0.8rem; font-weight: 600;
    cursor: pointer; display: inline-flex; align-items: center; gap: 5px;
    transition: all .15s ease; white-space: nowrap;
}
.rep-viewer-toolbar__btn:disabled { opacity: .55; cursor: not-allowed; }
.rep-viewer-toolbar__btn:not(:disabled):hover { transform: translateY(-1px); box-shadow: 0 3px 8px -3px rgba(40,74,112,.25); }
.rep-viewer-toolbar__btn--primary { background: var(--primario, #284A70); color: #fff; border-color: var(--primario, #284A70); }
.rep-viewer-toolbar__btn--primary:not(:disabled):hover { background: #1e3a5f; border-color: #1e3a5f; }
.rep-viewer-toolbar__btn--excel { background: #1f7a4d; color: #fff; border-color: #1f7a4d; }
.rep-viewer-toolbar__btn--excel:not(:disabled):hover { background: #145a37; border-color: #145a37; }
.rep-viewer-toolbar__btn--ple { background: var(--secundario, #fe7800); color: #fff; border-color: var(--secundario, #fe7800); }
.rep-viewer-toolbar__btn--ple:not(:disabled):hover { background: #d96900; border-color: #d96900; }

/* [2026-08-28] El contenido del visor es una COLUMNA FLEX que ocupa el alto restante:
   asi el paper (o la tabla) se queda con lo que sobra despues del toolbar, los KPIs y
   el grafico, sin depender de ningun calc(100vh - N). `min-height: 0` es lo que permite
   que un hijo flex con overflow pueda encogerse por debajo de su contenido. */
.rep-viewer-content {
    padding: 0 1%;
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
    gap: 0;
}

/* Envoltorio de pagina: reclama el alto que .content-wrapper (overflow:hidden) le da. */
.rep-page {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    min-height: 0;
    overflow: hidden;
}

.rep-page > .content-header { flex: 0 0 auto; }
.rep-viewer-placeholder {
    margin: 30px auto; max-width: 520px; text-align: center;
    padding: 50px 25px; background: #fff;
    border: 2px dashed #e0e4ec; border-radius: 10px;
}
.rep-viewer-placeholder i { font-size: 48px; color: var(--secundario, #fe7800); margin-bottom: 14px; opacity: .7; }
.rep-viewer-placeholder h4 { color: var(--primario, #284A70); margin: 0 0 6px; font-weight: 700; }
.rep-viewer-placeholder p { color: #64748b; margin: 0; font-size: 0.85rem; }
.rep-viewer-paper {
    background: #fff; border: 1px solid #e0e4ec; border-radius: 8px;
    padding: 14px; box-shadow: 0 2px 8px -4px rgba(15,23,42,.08);
    overflow: auto;
    /* [2026-08-28] flex en vez de max-height: calc(100vh - 240px). Ese numero magico
       asumia un alto fijo arriba, y al sumarse el panel de indicadores el paper se
       extendia mas alla del viewport. Como .content-wrapper es overflow:hidden ("el
       scroll va en el table-responsive"), lo que sobra NO scrollea: se OCULTA — la
       ultima fila del reporte quedaba cortada. Con flex toma el espacio realmente
       disponible, este el panel o no. */
    flex: 1 1 0;
    min-height: 140px;   /* siempre se ven unas filas, aunque el panel de KPIs sea alto */
}

/* ═══════════════════════════════════════════════════════════════════════
   ANTICIPOS — banner de detección al facturar  (prefijo .ant-)
   Vive aca y no en un css propio porque el feature es contable (asientos y
   cuentas de gestion) aunque se pinte dentro de Ventas y Compras.
   ═══════════════════════════════════════════════════════════════════════ */
.ant-banner {
    margin: 8px 0 10px;
    padding: 10px 14px;
    background: linear-gradient(135deg, #f0f7ff, #e8f1fb);
    border: 1px solid #cfe0f5;
    border-left: 4px solid var(--secundario, #fe7800);
    border-radius: 8px;
}
.ant-banner__head { display: flex; align-items: flex-start; gap: 10px; }
.ant-banner__head > i {
    font-size: 18px; color: var(--secundario, #fe7800);
    margin-top: 2px; flex-shrink: 0;
}
.ant-banner__title { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.ant-banner__title b { color: var(--primario, #284A70); font-size: 0.9rem; }
.ant-banner__title small { color: #64748b; font-size: 0.74rem; }

.ant-banner__chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }

.ant-chip {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 5px 8px 5px 11px;
    background: #fff; border: 1px solid #cfe0f5; border-radius: 999px;
    font-size: 0.78rem; color: #334155;
}
.ant-chip.is-tomado { border-color: #86c79a; background: #f2fbf5; }
.ant-chip__tag { color: var(--primario, #284A70); }
.ant-chip__monto { font-weight: 600; color: #1e293b; white-space: nowrap; }
.ant-chip__ok { color: #2e7d32; font-size: 0.72rem; white-space: nowrap; }
.ant-chip__warn {
    color: #b15600; font-size: 0.7rem; white-space: nowrap;
    background: rgba(254,120,0,.12); border-radius: 999px; padding: 1px 7px;
}
.ant-chip__btn {
    border: none; background: #eef2f7; color: #475569;
    border-radius: 999px; padding: 3px 10px;
    font-size: 0.74rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 4px;
}
.ant-chip__btn:hover { background: #dde5ee; }
.ant-chip__btn--add { background: var(--primario, #284A70); color: #fff; }
.ant-chip__btn--add:hover { background: #1e3a5f; }
/* Vinculación directa (§F6): dos acciones por chip, siempre en el mismo orden (aplicar con asiento, vincular directo). */
.ant-chip__acciones { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.ant-chip__btn--alt { background: #fff; color: var(--primario, #284A70); border: 1px solid var(--primario, #284A70); }
.ant-chip__btn--alt:hover { background: #eef2f7; }
.ant-chip__btn.is-apagado { opacity: .45; }
.ant-chip__btn.is-apagado:hover { opacity: .75; }
.ant-chip__btn:disabled { opacity: .5; cursor: default; }

.ant-banner__otros { margin-top: 8px; border-top: 1px dashed #cfe0f5; padding-top: 7px; }
.ant-banner__link {
    border: none; background: transparent; padding: 0;
    color: var(--primario, #284A70); font-size: 0.78rem; font-weight: 600;
    cursor: pointer; display: inline-flex; align-items: center; gap: 6px;
}
.ant-banner__link:hover { text-decoration: underline; }

/* Aviso en línea junto a "Pagado" cuando la factura emitida tiene anticipos de Tesorería sin aplicar */
.ant-inline {
    display: inline-flex; align-items: center; gap: 5px;
    margin-left: 10px; padding: 2px 9px;
    background: rgba(254,120,0,.12); color: #b15600;
    border-radius: 999px; font-size: 0.74rem; font-weight: 600; white-space: nowrap;
}
.ant-inline i { color: var(--secundario, #fe7800); }

/* ═══════════════════════════════════════════════════════════════════════
   APLICACIONES DE UN VOUCHER — chip y modal de las grillas de bancos  (prefijo .capp-)
   El Centro de Aplicaciones se retiró el 2026-10-18: se aplica desde el reporte de
   cuentas por cobrar y pagar (.apl- en tesoreria.css). Quedan el chip "¿sigue vivo?"
   de conciliación y movimientos y su modal "Dónde se aplicó este movimiento".
   ═══════════════════════════════════════════════════════════════════════ */
.capp-btn {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    padding: 6px 12px; border-radius: 8px; font-size: 0.8rem; font-weight: 600;
    cursor: pointer; display: inline-flex; align-items: center; gap: 6px;
}
.capp-btn:hover:not(:disabled) { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }
.capp-btn:disabled { opacity: .5; cursor: not-allowed; }
.capp-btn--primary { background: var(--primario, #284A70); border-color: var(--primario, #284A70); color: #fff; padding: 8px 22px; }
.capp-btn--primary:hover:not(:disabled) { background: #1e3a5f; color: #fff; }

/* Estado de aplicación: gris intacto, ámbar a medias, verde usado. */
.capp-estado {
    display: inline-flex; align-items: center; border-radius: 999px;
    padding: 1px 8px; font-size: 0.68rem; font-weight: 700;
}
.capp-estado.is-pendiente { background: #eef2f7; color: #475569; }
.capp-estado.is-parcial { background: #fff4e0; color: #b15600; }
.capp-estado.is-aplicado { background: #e3f5e7; color: #2e7d32; }

/* Chip de aplicación en las grillas de bancos (conciliación, movimientos) */
.capp-vchip {
    display: flex; align-items: center; gap: 5px;
    margin-top: 3px; max-width: 340px;
    border: none; border-radius: 999px; padding: 2px 9px;
    font-size: 0.7rem; font-weight: 600; cursor: pointer; text-align: left;
}
.capp-vchip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.capp-vchip i { flex-shrink: 0; font-size: 0.72rem; }
.capp-vchip.is-pendiente { background: #eef2f7; color: #475569; }
.capp-vchip.is-parcial { background: #fff4e0; color: #b15600; }
.capp-vchip.is-aplicado { background: #e3f5e7; color: #2e7d32; }
.capp-vchip:hover { filter: none; box-shadow: 0 0 0 1px currentColor inset; }

/* Modal "Dónde se aplicó este movimiento".
   z-index 1035/1036: por DEBAJO del modal Bootstrap de asiento (fondo 1040, diálogo 1050), para que
   el asiento se abra encima y, al cerrarlo, esta lista siga ahí. */
.capp-modal__fondo {
    position: fixed; inset: 0; z-index: 1035;
    background: rgba(15, 23, 42, .45);
}
.capp-modal {
    position: fixed; z-index: 1036;
    top: 6vh; left: 50%; margin-left: -410px; width: 820px; max-width: calc(100vw - 32px);
    max-height: 88vh; display: flex; flex-direction: column;
    background: #fff; border-radius: 12px; overflow: hidden;
    box-shadow: 0 18px 50px -12px rgba(15, 23, 42, .45);
}
.capp-modal__head {
    flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
    padding: 14px 18px 12px; border-bottom: 3px solid var(--secundario, #fe7800);
    background: var(--primario, #284A70); color: #fff;
}
.capp-modal__head h5 { margin: 0; font-size: 1rem; font-weight: 700; color: #fff; }
.capp-modal__head span { font-size: 0.78rem; opacity: .85; }
.capp-modal__x {
    border: none; background: rgba(255,255,255,.12); color: #fff;
    width: 30px; height: 30px; border-radius: 8px; cursor: pointer;
}
.capp-modal__x:hover { background: rgba(255,255,255,.25); }
.capp-modal__body { flex: 1 1 auto; overflow-y: auto; padding: 14px 18px; position: relative; min-height: 120px; }

.capp-modal__resumen { display: flex; gap: 10px; margin-bottom: 14px; }
.capp-modal__resumen > div {
    flex: 1; padding: 9px 12px; border-radius: 8px; background: #f5f7fb; border: 1px solid #e0e4ec;
    display: flex; flex-direction: column;
}
.capp-modal__resumen span { font-size: 0.68rem; text-transform: uppercase; letter-spacing: .4px; color: #94a3b8; font-weight: 700; }
.capp-modal__resumen b { font-size: 1.05rem; color: #1e293b; }
.capp-modal__resumen b.is-ok { color: #2e7d32; }
.capp-modal__resumen b.is-pend { color: #b15600; }

.capp-modal__concepto { border: 1px solid #e8ecf3; border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }
.capp-modal__ctop { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.capp-modal__cnom { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.capp-modal__cnom b { font-size: 0.85rem; color: var(--primario, #284A70); }
.capp-modal__cnom small { font-size: 0.72rem; color: #64748b; }
.capp-modal__cmonto { font-size: 0.78rem; font-weight: 600; color: #475569; white-space: nowrap; }
.capp-modal__sin { margin: 4px 0 0; font-size: 0.78rem; color: #94a3b8; }
.capp-modal__tabla { margin: 0; font-size: 0.8rem; }
.capp-modal__tabla th { font-size: 0.7rem; text-transform: uppercase; letter-spacing: .3px; color: #64748b; border-top: none; }

.capp-modal__pie {
    flex: 0 0 auto; display: flex; justify-content: flex-end; gap: 10px;
    padding: 10px 18px; border-top: 1px solid #e0e4ec; background: #fafbfc;
}

@media (max-width: 860px) {
    .capp-modal { left: 16px; margin-left: 0; width: auto; right: 16px; }
    .capp-modal__resumen { flex-direction: column; }
}

.capp-vacio { text-align: center; padding: 34px 18px; color: #94a3b8; }
.capp-vacio i { font-size: 30px; margin-bottom: 8px; opacity: .7; display: block; }
.capp-vacio p { margin: 0; font-size: 0.82rem; }

/* "Aplicar lo que queda" de cada concepto: lleva al formulario del reporte de cuentas por cobrar y pagar. */
.capp-modal__aplicar { padding: 4px 12px; font-size: 0.76rem; }

/* ── Responsive ─────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .rep-list-hero, .rep-viewer-toolbar, .rep-design-header__hero {
        flex-direction: column;
        align-items: stretch;
    }
    .ant-banner__head { flex-direction: column; }
    .rep-viewer-toolbar__reportbox,
    .rep-viewer-toolbar__filterbox { min-width: 0; width: 100%; }
    .rep-viewer-toolbar__actions { margin-left: 0; justify-content: center; }
}


/* ═══════════════════════════════════════════════════════════════════════
   PLAN DE CUENTAS — CtaContableListPage  (prefijo .pcta-)
   Grilla a la izquierda + panel de edicion rapida a la derecha.
   NADA de sangria: codigos y nombres arrancan cada uno en su propia linea
   vertical, siempre la misma. La jerarquia se lee por el riel de color a la
   izquierda de la celda, el marcador operativa/agrupadora, y el peso y color
   del texto — todos indicios que NO mueven el texto de sitio.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Layout: grilla + panel ─────────────────────────────────────────── */
.pcta-workspace {
    flex: 1 1 auto;
    display: flex;
    gap: 12px;
    min-height: 0;
    margin-bottom: 6px;
    overflow: hidden;
}

.pcta-grid {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    margin-bottom: 0;
}
.pcta-grid > .table-responsive {
    flex: 1 1 auto;
    overflow: auto;
    min-height: 0;
}
.pcta-grid > .card-footer {
    flex: 0 0 auto;
    position: relative;
    bottom: auto;
    width: auto;
    padding: 6px 12px;
}

/* ── Tabla ──────────────────────────────────────────────────────────── */
.pcta-tabla { margin-bottom: 0 !important; }
.pcta-tabla tbody td {
    padding: 4px 8px;
    vertical-align: middle;
    border-top: 1px solid #eef1f6;
}
.pcta-row { cursor: pointer; }

/* Codigo de cuenta: monoespaciado + sangria por nivel + rail de color */
.pcta-td-cod { position: relative; }
.pcta-cod {
    display: inline-flex;
    align-items: center;
    font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 0.78rem;
    letter-spacing: 0.3px;
    white-space: nowrap;
    color: #334155;
}
.pcta-dot {
    display: inline-block;
    width: 7px; height: 7px;
    border-radius: 50%;
    border: 1.5px solid #b6c2d2;
    background: transparent;
    margin-right: 7px;
    flex-shrink: 0;
}
.pcta-dot.is-oper {
    background: var(--primario, #284A70);
    border-color: var(--primario, #284A70);
}

/* Nombre: SIEMPRE al mismo x, sin sangria — la profundidad la da el peso */
.pcta-td-nom { padding-left: 10px !important; }
.pcta-nom { display: block; }

.pcta-tipo {
    display: inline-block;
    max-width: 100%;
    padding: 1px 8px;
    border-radius: 999px;
    background: #eef2f8;
    color: #4a5b70;
    font-size: 0.68rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
}

/* Los 4 "Ver ..." condensados en chips V C I E */
.pcta-td-vis { text-align: center; }
.pcta-vis { display: inline-flex; gap: 3px; }
.pcta-vch {
    width: 19px; height: 19px;
    border-radius: 5px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.62rem; font-weight: 700;
    background: #f1f3f7; color: #b4bdca;
    border: 1px solid #e6e9ef;
}
.pcta-vch.is-on {
    background: rgba(40, 74, 112, .10);
    color: var(--primario, #284A70);
    border-color: rgba(40, 74, 112, .28);
}

/* Tipografia: NADA de negrita. Solo se distingue la cuenta de ULTIMO NIVEL
   (la que recibe movimientos) con el texto en oscuro; las agrupadoras van
   apagadas y en peso normal, que es lo unico que se pide de ellas: ubicar. */
.pcta-tabla tbody tr.pcta-row .pcta-nom,
.pcta-tabla tbody tr.pcta-row .pcta-cod { font-weight: 400; text-transform: none; letter-spacing: normal; }
.pcta-tabla tbody tr.pcta-row .pcta-nom { color: #7c8899; }
.pcta-tabla tbody tr.pcta-row .pcta-cod { color: #8994a3; letter-spacing: .3px; }

.pcta-tabla tbody tr.pcta-row.is-oper .pcta-nom { color: #1e293b; }
.pcta-tabla tbody tr.pcta-row.is-oper .pcta-cod { color: var(--primario, #284A70); }

/* Fondo por nivel: separa visualmente los bloques sin tocar el texto */
.pcta-n0 > td { background: #f4f7fb; }
.pcta-n1 > td { background: #fafbfd; }
/* Raiz = encabezado de bloque. No se deduce del nivel: hay planes cuyo primer
   nivel tiene 1 digito ("1") y otros 2 ("63"). */
.pcta-tabla tbody tr.pcta-row.is-raiz > td { background: #f4f7fb; }

.pcta-n0 .pcta-td-cod { border-left: 3px solid var(--primario, #284A70); }
.pcta-row.is-raiz .pcta-td-cod { border-left: 3px solid var(--primario, #284A70); }
.pcta-n1 .pcta-td-cod { border-left: 3px solid #7ba7d9; }
.pcta-n2 .pcta-td-cod { border-left: 3px solid #a9c6e8; }
.pcta-n3 .pcta-td-cod { border-left: 3px solid #cfdff1; }
.pcta-n4 .pcta-td-cod { border-left: 3px solid #e8eef6; }

/* Hover / seleccion — despues de los niveles para ganar en especificidad */
.pcta-tabla tbody tr.pcta-row:hover > td { background: #eef4fc; }
.pcta-tabla tbody tr.pcta-row.is-sel > td { background: #e2ecfa; }
.pcta-tabla tbody tr.pcta-row.is-sel .pcta-td-cod::after {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    background: var(--secundario, #fe7800);
}
.pcta-tabla tbody tr.pcta-row.is-sel .pcta-nom { color: var(--primario, #284A70); }

/* Cuentas anuladas — va al final y con la especificidad mas alta: es un estado,
   tiene que ganarle al color de operativa/agrupadora y al de seleccion. */
.pcta-tabla tbody tr.pcta-row.is-off .pcta-nom,
.pcta-tabla tbody tr.pcta-row.is-off .pcta-cod { text-decoration: line-through; color: #c62828; }

.pcta-vacio > td { text-align: center; padding: 42px 10px !important; color: #94a3b8; font-size: 0.82rem; }
.pcta-vacio i { display: block; font-size: 30px; margin-bottom: 10px; color: #cbd5e1; }

/* ── Footer: leyenda + paginacion + tamano de pagina ────────────────── */
.pcta-foot { display: flex; align-items: center; gap: 14px; }
.pcta-leyenda { display: flex; gap: 12px; flex-shrink: 0; font-size: 0.7rem; color: #7c8899; white-space: nowrap; }
.pcta-leyenda span { display: inline-flex; align-items: center; }
.pcta-foot__pager { flex: 1 1 auto; min-width: 0; }
.pcta-foot__pager nav .row { margin-bottom: 0 !important; }
.pcta-conteo { display: block; text-align: center; font-size: 0.78rem; font-weight: 700; color: var(--secundario, #fe7800); }
.pcta-foot__size { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.pcta-foot__size label { margin: 0; font-size: 0.68rem; font-weight: 700; color: #7c8899; text-transform: uppercase; letter-spacing: .4px; }
.pcta-pagesel {
    border: 1px solid #e0e4ec; border-radius: 5px;
    padding: 2px 6px; font-size: 0.78rem;
    color: var(--primario, #284A70); background: #fff;
}

/* ── Panel lateral ──────────────────────────────────────────────────── */
.pcta-panel {
    flex: 0 0 330px;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid #e0e4ec;
    border-radius: 10px;
    box-shadow: 0 2px 10px -6px rgba(15, 23, 42, .18);
}
.pcta-panel__scroll { flex: 1 1 auto; overflow-y: auto; min-height: 0; padding: 14px 14px 12px; }

.pcta-panel__empty {
    flex: 1 1 auto;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    text-align: center; padding: 30px 22px; color: #94a3b8;
}
.pcta-panel__empty i { font-size: 34px; color: #cbd5e1; margin-bottom: 12px; }
.pcta-panel__empty h5 { font-size: 0.9rem; color: var(--primario, #284A70); font-weight: 700; margin: 0 0 6px; }
.pcta-panel__empty p { font-size: 0.78rem; margin: 0; }

.pcta-panel__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pcta-panel__code {
    font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 1.05rem; font-weight: 700; letter-spacing: .5px;
    color: var(--primario, #284A70);
}
.pcta-badge {
    padding: 2px 9px; border-radius: 999px;
    font-size: 0.62rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .4px;
}
.pcta-badge.is-on { background: #d1fae5; color: #2e7d32; }
.pcta-badge.is-off { background: #fee2e2; color: #c62828; }
.pcta-panel__name { margin-top: 3px; font-size: 0.86rem; font-weight: 600; color: #1e293b; line-height: 1.3; }
.pcta-panel__path { margin-top: 5px; font-size: 0.72rem; color: #7c8899; display: flex; gap: 5px; align-items: baseline; }
.pcta-panel__path i { color: var(--secundario, #fe7800); }

.pcta-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin: 12px 0 2px; }
.pcta-stat { background: #f5f7fb; border: 1px solid #e8ecf3; border-radius: 7px; padding: 6px 4px 5px; text-align: center; }
.pcta-stat span { display: block; font-size: 0.56rem; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: #8c98a8; }
.pcta-stat b { font-size: 0.86rem; color: var(--primario, #284A70); }

.pcta-sec { margin-top: 14px; padding-top: 10px; border-top: 1px solid #eef1f6; }
.pcta-sec__t,
.pcta-acts__t {
    font-size: 0.62rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .5px;
    color: #8c98a8; margin-bottom: 8px;
    display: flex; align-items: center; gap: 7px;
}
.pcta-dirty {
    background: rgba(254, 120, 0, .14); color: #b15600;
    border: 1px solid rgba(254, 120, 0, .35);
    border-radius: 999px; padding: 1px 7px;
    text-transform: none; letter-spacing: 0; font-size: 0.6rem;
}

.pcta-f { display: block; margin-bottom: 8px; }
.pcta-f > span { display: block; font-size: 0.68rem; font-weight: 600; color: #64748b; margin-bottom: 3px; }
.pcta-inp {
    width: 100%; border: 1px solid #e0e4ec; border-radius: 6px;
    padding: 5px 9px; font-size: 0.82rem; color: #1e293b; background: #fff;
}
.pcta-inp:focus { outline: none; border-color: var(--primario, #284A70); box-shadow: 0 0 0 3px rgba(40, 74, 112, .12); }
.pcta-inp--mono { font-family: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace; letter-spacing: .5px; }

.pcta-sw { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 0; }
.pcta-sw > span { font-size: 0.78rem; color: #475569; display: flex; flex-direction: column; }
.pcta-sw > span small { font-size: 0.63rem; color: #94a3b8; }
.pcta-toggle {
    flex-shrink: 0; position: relative;
    width: 38px; height: 20px; padding: 0;
    border: 1px solid #d8dee8; border-radius: 999px;
    background: #e9edf3; cursor: pointer;
    transition: background .15s ease, border-color .15s ease;
}
.pcta-toggle > i {
    position: absolute; top: 2px; left: 2px;
    width: 14px; height: 14px; border-radius: 50%;
    background: #fff; box-shadow: 0 1px 2px rgba(15, 23, 42, .25);
    transition: left .15s ease;
}
.pcta-toggle.is-on { background: #2e7d32; border-color: #2e7d32; }
.pcta-toggle.is-on > i { left: 20px; }

.pcta-kv { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; font-size: 0.75rem; }
.pcta-kv span { color: #8c98a8; flex-shrink: 0; }
.pcta-kv b { color: #334155; font-weight: 600; text-align: right; }

.pcta-acts { margin-top: 14px; padding-top: 10px; border-top: 1px solid #eef1f6; display: flex; flex-direction: column; gap: 5px; }
.pcta-act {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 7px; padding: 7px 11px;
    font-size: 0.8rem; font-weight: 600; cursor: pointer; text-align: left;
    display: flex; align-items: center; gap: 8px;
    transition: background .15s ease, border-color .15s ease, color .15s ease;
}
.pcta-act i { width: 15px; text-align: center; color: var(--primario, #284A70); }
.pcta-act:hover { border-color: var(--primario, #284A70); background: #f5f8fd; color: var(--primario, #284A70); }
.pcta-act--main { background: var(--primario, #284A70); border-color: var(--primario, #284A70); color: #fff; }
.pcta-act--main i { color: var(--secundario, #fe7800); }
.pcta-act--main:hover { background: #1e3a5f; border-color: #1e3a5f; color: #fff; }

.pcta-panel__save {
    flex: 0 0 auto; display: flex; gap: 6px;
    padding: 9px 12px;
    border-top: 1px solid #e0e4ec; background: #fafbfc;
}
.pcta-save {
    flex: 1 1 auto; border: none; border-radius: 7px;
    padding: 8px 10px; font-size: 0.82rem; font-weight: 700;
    background: #2ca444; color: #fff; cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center; gap: 7px;
}
.pcta-save:disabled { background: #e6e9ee; color: #a4adba; cursor: default; }
.pcta-save:not(:disabled):hover { background: #098521; }
.pcta-discard {
    flex: 0 0 auto; width: 38px;
    border: 1px solid #e0e4ec; background: #fff; color: #64748b;
    border-radius: 7px; cursor: pointer;
}
.pcta-discard:disabled { opacity: .45; cursor: default; }
.pcta-discard:not(:disabled):hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }

/* ── Responsive: bajo 1200px el panel pasa abajo ────────────────────── */
@media (max-width: 1200px) {
    .pcta-workspace { flex-direction: column; }
    .pcta-panel { flex: 0 0 auto; max-height: 46%; }
    .pcta-leyenda { display: none; }
}

/* ══════════════════════════════════════════════════════════════════════
   Movimientos de una cuenta (MovimientosPlanCtasComponent) — prefijo .mpc-
   Filtro por fechas OPCIONAL: sin fechas se listan todos los movimientos.
   ══════════════════════════════════════════════════════════════════════ */
.mpc-filtro {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
    padding: 6px 10px; margin: 0 0 0 4px;
    background: #f5f7fb; border: 1px solid #e0e4ec; border-radius: 8px;
}
.mpc-filtro__lbl { font-size: 0.74rem; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: .3px; }
.mpc-filtro__dp { width: 138px; }
.mpc-filtro__atajos { display: flex; gap: 5px; }
.mpc-chip {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 999px; padding: 3px 11px; font-size: 0.73rem; cursor: pointer;
}
.mpc-chip:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); background: #f0f5fc; }
.mpc-filtro__estado { font-size: 0.74rem; color: #94a3b8; font-style: italic; margin-left: 2px; }
.mpc-filtro__estado.is-on { color: #1e3a5f; font-style: normal; font-weight: 600; }

@media (max-width: 900px) {
    .mpc-filtro__atajos { width: 100%; }
}

/* ══════════════════════════════════════════════════════════════════════
   Cuentas analiticas (ListCtasAnaliticasComponent) — prefijo .cana-
   Una pestaña por dimension: la dimension activa define columnas y alta.
   ══════════════════════════════════════════════════════════════════════ */
.cana-tabs {
    display: flex; align-items: flex-end; flex-wrap: wrap; gap: 2px;
    padding: 0 14px; margin-bottom: 6px;
    border-bottom: 1px solid #e0e4ec;
}
.cana-tab {
    border: 1px solid transparent; border-bottom: 3px solid transparent; background: transparent;
    padding: 7px 14px; font-size: 0.82rem; font-weight: 600; color: #64748b;
    cursor: pointer; border-radius: 7px 7px 0 0;
    display: inline-flex; align-items: center; gap: 7px; white-space: nowrap;
}
.cana-tab:hover { background: #f5f7fb; color: var(--primario, #284A70); }
.cana-tab.is-on {
    background: #fff; color: #1e3a5f;
    border-color: #e0e4ec; border-bottom-color: var(--secundario, #fe7800);
}
.cana-tab__dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: #cbd5e1; flex-shrink: 0;
}
.cana-tab.is-on .cana-tab__dot { background: var(--primario, #284A70); }
.cana-tab__cont {
    background: #eef2f8; color: #475569; border-radius: 999px;
    padding: 1px 8px; font-size: 0.7rem; font-weight: 700;
}
.cana-tabs__vacio { padding: 8px 4px; font-size: 0.8rem; color: #c77700; }
.cana-tabs__vacio i { margin-right: 5px; }

.cana-cta { font-family: Consolas, "Courier New", monospace; color: #1e3a5f; }
.cana-sincta { color: #c77700; font-size: 0.74rem; font-style: italic; white-space: nowrap; }
.cana-sincta i { margin-right: 4px; }

/* ── Analiticas: accion masiva, hints del modal y modal de centros de costo ── */
.cana-masiva {
    display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
    padding: 8px 12px; margin-bottom: 8px;
    background: #eef4fd; border: 1px solid #cfe0f7; border-radius: 8px;
}
.cana-masiva__cont { font-size: 0.8rem; font-weight: 700; color: #1e3a5f; }
.cana-masiva__nota { font-size: 0.73rem; color: #64748b; font-style: italic; }
.cana-nocheck { color: #cbd5e1; }

.mcan-hint {
    margin-top: 5px; padding: 6px 9px;
    background: #f5f7fb; border-left: 3px solid var(--secundario, #fe7800);
    border-radius: 4px; font-size: 0.74rem; color: #475569; line-height: 1.45;
}

.mact-sub { font-size: 0.82rem; color: #64748b; margin-bottom: 12px; }
.mact-dim {
    display: flex; align-items: center; gap: 8px;
    margin: 14px 0 5px; padding-bottom: 4px; border-bottom: 2px solid #e0e4ec;
}
.mact-dim__nom { font-size: 0.82rem; font-weight: 700; color: #1e3a5f; text-transform: uppercase; letter-spacing: .3px; }
.mact-dim__cont { background: #eef2f8; color: #475569; border-radius: 999px; padding: 1px 8px; font-size: 0.7rem; font-weight: 700; }
.mact-vacio { padding: 22px; text-align: center; color: #c77700; font-size: 0.84rem; }
.mact-vacio i { display: block; font-size: 1.6rem; margin-bottom: 8px; opacity: .7; }

/* ══════════════════════════════════════════════════════════════════════
   Registro de cuenta contable (CtaCtaContableComponent) — prefijo .ccta-
   Rediseño 2026-08-17: 3 secciones de trabajo + rail de previsualización.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Barra superior ── */
.ccta-topbar {
    display: flex; align-items: center; justify-content: space-between; gap: 14px;
    padding: 9px 16px; background: #fff; border-bottom: 1px solid #e0e4ec;
    flex-wrap: wrap;
}
.ccta-topbar__izq { display: flex; align-items: center; gap: 11px; min-width: 0; }
.ccta-topbar__der { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.ccta-back {
    width: 30px; height: 30px; flex-shrink: 0;
    border: 1px solid #e0e4ec; background: #fff; color: #64748b;
    border-radius: 8px; cursor: pointer;
}
.ccta-back:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }
.ccta-crumb { font-size: 0.74rem; color: #94a3b8; display: flex; gap: 6px; }
.ccta-crumb a { color: var(--primario, #284A70); cursor: pointer; }
.ccta-crumb .is-actual { color: #64748b; }
.ccta-titulo { display: flex; align-items: center; gap: 9px; font-size: 1.05rem; font-weight: 700; color: #1e3a5f; }
.ccta-id { font-size: 0.7rem; font-weight: 600; color: #94a3b8; }

.ccta-badge {
    font-size: 0.66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .4px;
    padding: 2px 8px; border-radius: 999px;
}
.ccta-badge.is-draft { background: #fff4e5; color: #c77700; }
.ccta-badge.is-on { background: #e7f6e9; color: #2e7d32; }
.ccta-badge.is-off { background: #fdecec; color: #c62828; }

.ccta-prog { display: flex; align-items: center; gap: 7px; margin-right: 6px; }
.ccta-prog__lbl { font-size: 0.64rem; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; }
.ccta-prog__barra { width: 86px; height: 5px; background: #eef2f8; border-radius: 999px; overflow: hidden; }
.ccta-prog__barra > i { display: block; height: 100%; background: var(--secundario, #fe7800); transition: width .25s ease; }
.ccta-prog__cont { font-size: 0.72rem; font-weight: 700; color: #64748b; }

.ccta-btn {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 8px; padding: 7px 14px; font-size: 0.82rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 7px;
}
.ccta-btn:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }
.ccta-btn--main { background: var(--secundario, #fe7800); border-color: var(--secundario, #fe7800); color: #fff; }
.ccta-btn--main:hover { background: #e56b00; border-color: #e56b00; color: #fff; }
.ccta-btn--danger { border-color: #f3c6c6; color: #c62828; }
.ccta-btn--danger:hover { background: #fdecec; border-color: #c62828; color: #c62828; }

/* ── Layout ── */
.ccta-wrap {
    display: flex; gap: 14px; align-items: flex-start;
    padding: 14px; max-width: 1560px; margin: 0 auto;
}
.ccta-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.ccta-rail { flex: 0 0 288px; display: flex; flex-direction: column; gap: 10px; position: sticky; top: 8px; }

/* ── Secciones ── */
.ccta-sec { background: #fff; border: 1px solid #e0e4ec; border-radius: 12px; }
.ccta-sec__head {
    display: flex; align-items: center; gap: 11px;
    padding: 12px 16px; border-bottom: 1px solid #eef1f6;
}
.ccta-sec__n {
    width: 24px; height: 24px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: #eef4fd; color: var(--primario, #284A70);
    border-radius: 7px; font-size: 0.76rem; font-weight: 700;
}
.ccta-sec__head h6 { margin: 0; font-size: 0.9rem; font-weight: 700; color: #1e3a5f; }
.ccta-sec__head p { margin: 1px 0 0; font-size: 0.74rem; color: #94a3b8; }
.ccta-sec__extra { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.ccta-est-on { font-size: 0.78rem; font-weight: 700; color: #2e7d32; }
.ccta-est-off { font-size: 0.78rem; font-weight: 700; color: #c62828; }
.ccta-sec__body { padding: 14px 16px; display: flex; flex-direction: column; gap: 14px; }

.ccta-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ccta-grid-num { display: grid; grid-template-columns: 190px 1fr; gap: 16px; }
.ccta-grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }

.ccta-lbl {
    display: block; margin-bottom: 5px;
    font-size: 0.68rem; font-weight: 700; color: #64748b;
    text-transform: uppercase; letter-spacing: .4px;
}
.ccta-lbl.is-anulado { color: #c62828; text-decoration: line-through; }
.ccta-req { color: var(--secundario, #fe7800); font-style: normal; }

.ccta-inp {
    width: 100%; border: 1px solid #e0e4ec; border-radius: 8px;
    padding: 7px 10px; font-size: 0.84rem; color: #334155; background: #fff;
}
.ccta-inp:focus { outline: none; border-color: var(--primario, #284A70); box-shadow: 0 0 0 3px rgba(40,74,112,.08); }
.ccta-inp--mono { font-family: Consolas, monospace; font-weight: 600; letter-spacing: .5px; }

.ccta-hint { font-size: 0.7rem; color: #94a3b8; display: inline-flex; align-items: center; gap: 5px; margin-top: 4px; }
.ccta-hint.is-ok { color: #2e7d32; }
.ccta-hint.is-error { color: #c62828; }
.ccta-hint-fila { display: flex; justify-content: space-between; }

/* ── Pills (tipo de cuenta / moneda) ── */
.ccta-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.ccta-pill {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 8px; padding: 6px 11px; font-size: 0.78rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}
.ccta-pill:hover { border-color: #cbd5e1; background: #f8fafc; }
.ccta-pill.is-on { background: #1e3a5f; border-color: #1e3a5f; color: #fff; }
.ccta-pill__dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }

/* ── Opciones grandes (naturaleza) ── */
.ccta-opciones { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ccta-opcion {
    text-align: left; border: 1px solid #e0e4ec; background: #fff;
    border-radius: 9px; padding: 9px 12px; cursor: pointer;
}
.ccta-opcion b { display: block; font-size: 0.82rem; color: #1e3a5f; }
.ccta-opcion span { font-size: 0.7rem; color: #94a3b8; }
.ccta-opcion:hover { border-color: #cbd5e1; background: #f8fafc; }
.ccta-opcion.is-on { background: #1e3a5f; border-color: #1e3a5f; }
.ccta-opcion.is-on b, .ccta-opcion.is-on span { color: #fff; }
.ccta-opcion.is-on span { opacity: .8; }

/* ── Ruta en el plan ── */
.ccta-ruta {
    display: flex; align-items: center; gap: 14px;
    background: #f8fafc; border: 1px solid #eef1f6; border-radius: 9px; padding: 9px 12px;
}
.ccta-ruta__txt { flex: 1 1 auto; min-width: 0; }
.ccta-ruta__t { font-size: 0.66rem; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .4px; }
.ccta-ruta__path { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-top: 4px; font-size: 0.76rem; color: #475569; }
.ccta-ruta__path.is-raiz { color: #94a3b8; font-style: italic; }
.ccta-ruta__nodo b { font-family: Consolas, monospace; color: #1e3a5f; }
.ccta-ruta__nodo + .ccta-ruta__nodo::before { content: ">"; margin-right: 7px; color: #cbd5e1; }
.ccta-ruta__nivel { flex: 0 0 auto; text-align: center; padding-left: 14px; border-left: 1px solid #e0e4ec; }
.ccta-ruta__nivel span { display: block; font-size: 0.62rem; font-weight: 700; color: #94a3b8; text-transform: uppercase; }
.ccta-ruta__nivel b { font-size: 1.15rem; color: #1e3a5f; }

/* ── Switches y tarjetas de flags ── */
.ccta-sw {
    flex: 0 0 auto; position: relative; width: 38px; height: 21px;
    border-radius: 999px; background: #dfe4ec; transition: background .18s ease;
}
.ccta-sw > i {
    position: absolute; top: 3px; left: 3px; width: 15px; height: 15px;
    border-radius: 50%; background: #fff; transition: left .18s ease;
}
.ccta-sw.is-on { background: #2e7d32; }
.ccta-sw.is-on > i { left: 20px; }

.ccta-tarjeta-sw {
    display: flex; align-items: center; gap: 12px; width: 100%; text-align: left;
    border: 1px solid #e0e4ec; background: #fff; border-radius: 10px; padding: 11px 14px; cursor: pointer;
}
.ccta-tarjeta-sw.is-on { background: #f2fbf3; border-color: #c8e6ca; }
.ccta-tarjeta-sw > i { color: #94a3b8; }
.ccta-tarjeta-sw.is-on > i { color: #2e7d32; }
.ccta-tarjeta-sw > div { flex: 1 1 auto; min-width: 0; }
.ccta-tarjeta-sw b { display: block; font-size: 0.84rem; color: #1e3a5f; }
.ccta-tarjeta-sw span { font-size: 0.73rem; color: #94a3b8; }

.ccta-grupo { display: flex; align-items: center; gap: 8px; margin-top: 2px; }
.ccta-grupo__t {
    font-size: 0.68rem; font-weight: 700; color: #64748b;
    text-transform: uppercase; letter-spacing: .4px;
    display: inline-flex; align-items: center; gap: 7px;
}
.ccta-grupo__t small { text-transform: none; letter-spacing: 0; font-weight: 500; color: #b6c0cd; }
.ccta-grupo__dot { width: 7px; height: 7px; border-radius: 50%; }
.ccta-grupo__dot.is-op { background: #1976d2; }
.ccta-grupo__dot.is-ex { background: var(--secundario, #fe7800); }
.ccta-grupo__dot.is-ot { background: #7b1fa2; }
.ccta-grupo__all {
    margin-left: auto; border: 1px solid #e0e4ec; background: #fff; color: #64748b;
    border-radius: 7px; padding: 3px 10px; font-size: 0.72rem; cursor: pointer;
}
.ccta-grupo__all:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }

.ccta-flags { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.ccta-flag {
    display: flex; align-items: center; gap: 9px; text-align: left;
    border: 1px solid #e0e4ec; background: #fff; border-radius: 9px; padding: 9px 11px; cursor: pointer;
}
.ccta-flag:hover { border-color: #cbd5e1; background: #f8fafc; }
.ccta-flag.is-on { border-color: #bcd9f5; background: #f4f9fe; }
.ccta-flag > div { flex: 1 1 auto; min-width: 0; }
.ccta-flag b { display: block; font-size: 0.78rem; color: #1e3a5f; }
.ccta-flag span { font-size: 0.69rem; color: #94a3b8; line-height: 1.25; display: block; }
.ccta-chip-cont { background: #e7f6e9; color: #2e7d32; border-radius: 999px; padding: 2px 9px; font-size: 0.7rem; font-weight: 700; }

/* ── Rail ── */
.ccta-rail__card { background: #fff; border: 1px solid #e0e4ec; border-radius: 12px; padding: 12px 14px; }
.ccta-rail__t {
    display: flex; align-items: center; gap: 8px; margin-bottom: 9px;
    font-size: 0.66rem; font-weight: 700; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .5px;
}
.ccta-rail__cont { margin-left: auto; color: #64748b; }
.ccta-prev__num { display: flex; align-items: center; gap: 8px; }
.ccta-prev__num > span:first-child {
    font-family: Consolas, monospace; font-size: 1.08rem; font-weight: 700; color: #1e3a5f;
}
.ccta-prev__nom { font-size: 0.82rem; color: #334155; margin-top: 3px; }
.ccta-prev__nom.is-vacio { color: #cbd5e1; font-style: italic; }
.ccta-prev__chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.ccta-chip {
    background: #f1f5f9; color: #475569; border-radius: 6px;
    padding: 2px 8px; font-size: 0.69rem; font-weight: 600;
}
.ccta-chip.is-oper { background: #e8f1fb; color: #1976d2; }

.ccta-prev__fila {
    display: flex; align-items: center; gap: 8px;
    border: 1px solid #eef1f6; border-radius: 7px; padding: 7px 9px; background: #fcfdff;
}
.ccta-prev__fcod { font-family: Consolas, monospace; font-size: 0.76rem; color: #1e3a5f; }
.ccta-prev__fnom { font-size: 0.76rem; color: #475569; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.ccta-check {
    display: flex; align-items: flex-start; gap: 8px; padding: 4px 0;
    font-size: 0.77rem; color: #94a3b8;
}
.ccta-check i { color: #cbd5e1; margin-top: 2px; }
.ccta-check.is-ok { color: #334155; }
.ccta-check.is-ok i { color: #2e7d32; }
.ccta-pend {
    margin-top: 9px; padding: 7px 9px; border-radius: 7px;
    background: #fff4e5; color: #c77700; font-size: 0.73rem; line-height: 1.35;
}
.ccta-rail__nota {
    background: #f4f9fe; border: 1px solid #dfeafb; border-radius: 10px;
    padding: 10px 12px; font-size: 0.72rem; color: #52657d; line-height: 1.45;
}
.ccta-rail__nota i { color: #1976d2; margin-right: 5px; }

/* ── Responsive ── */
@media (max-width: 1400px) {
    .ccta-flags { grid-template-columns: repeat(2, 1fr); }
    .ccta-grid4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 1180px) {
    .ccta-wrap { flex-direction: column; align-items: stretch; }
    .ccta-rail { flex: 1 1 auto; width: 100%; position: static; }
    .ccta-grid2, .ccta-grid-num { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════════════════════════════════
   Cambio masivo de atributos (.cmas-) + control de pendientes (.pcta-pend)
   ══════════════════════════════════════════════════════════════════════ */
.cmas-head { display: flex; align-items: flex-start; gap: 12px; border-bottom: 1px solid #eef1f6; }
.cmas-head__ico {
    width: 34px; height: 34px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: #fff4e5; color: var(--secundario, #fe7800); border-radius: 9px;
}
.cmas-head .modal-title { font-size: 1rem; font-weight: 700; color: #1e3a5f; margin: 0; }
.cmas-head p { margin: 2px 0 0; font-size: 0.75rem; color: #94a3b8; }

.cmas-body { padding: 0 18px 14px; max-height: 68vh; overflow-y: auto; }

.cmas-sel {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    margin: 14px 0; padding: 9px 11px;
    background: #f8fafc; border: 1px solid #eef1f6; border-radius: 9px;
}
.cmas-sel__n {
    width: 24px; height: 24px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    background: #eef4fd; color: var(--primario, #284A70);
    border-radius: 7px; font-size: 0.74rem; font-weight: 700;
}
.cmas-sel__txt { font-size: 0.78rem; color: #475569; }
.cmas-sel__all {
    margin-left: auto; border: 1px solid #cfe0f7; background: #fff; color: var(--primario, #284A70);
    border-radius: 7px; padding: 4px 11px; font-size: 0.74rem; font-weight: 600; cursor: pointer;
}
.cmas-sel__all:hover { background: #eef4fd; }

.cmas-fila { padding: 11px 0; border-top: 1px solid #eef1f6; }
.cmas-fila__top { display: flex; align-items: flex-start; gap: 10px; }
.cmas-chk { display: flex; align-items: flex-start; gap: 9px; margin: 0; cursor: pointer; flex: 1 1 auto; }
.cmas-chk input { margin-top: 3px; width: 16px; height: 16px; accent-color: #fe7800; cursor: pointer; }
.cmas-chk b { display: block; font-size: 0.82rem; color: #1e3a5f; }
.cmas-chk small { font-size: 0.71rem; color: #94a3b8; }
.cmas-val { flex: 0 0 auto; font-size: 0.74rem; color: #cbd5e1; font-weight: 600; }
.cmas-val.is-on { color: var(--secundario, #fe7800); }
.cmas-pills { display: flex; flex-wrap: wrap; gap: 6px; margin: 9px 0 0 25px; }
.cmas-aviso {
    margin: 8px 0 0 25px; padding: 6px 9px; border-radius: 6px;
    background: #fff4e5; color: #c77700; font-size: 0.72rem;
}

.cmas-resumen {
    margin-top: 14px; padding: 11px 13px;
    background: #f4f9fe; border: 1px solid #dfeafb; border-radius: 10px;
}
.cmas-resumen.is-vacio { background: #f8fafc; border-color: #eef1f6; }
.cmas-resumen__t {
    font-size: 0.66rem; font-weight: 700; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .5px; margin-bottom: 5px;
}
.cmas-resumen__txt { font-size: 0.8rem; color: #334155; }
.cmas-resumen__vacio { font-size: 0.78rem; color: #94a3b8; font-style: italic; }
.cmas-resumen__chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.cmas-rchip {
    background: #fff; border: 1px solid #cfe0f7; color: var(--primario, #284A70);
    border-radius: 6px; padding: 2px 8px; font-size: 0.71rem; font-weight: 600;
}

.cmas-afect__t {
    margin: 14px 0 5px;
    font-size: 0.66rem; font-weight: 700; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .5px;
}
.cmas-afect { max-height: 148px; overflow-y: auto; border: 1px solid #eef1f6; border-radius: 8px; }
.cmas-afect__fila {
    display: flex; align-items: center; gap: 8px;
    padding: 6px 10px; border-bottom: 1px solid #f5f7fb; font-size: 0.76rem;
}
.cmas-afect__fila:last-child { border-bottom: 0; }
.cmas-afect__cod { font-family: Consolas, monospace; color: #1e3a5f; }
.cmas-afect__nom { color: #475569; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmas-afect__tag {
    margin-left: auto; flex-shrink: 0;
    font-size: 0.63rem; font-weight: 700; color: #c77700;
    text-transform: uppercase; letter-spacing: .3px;
}
.cmas-error { margin-top: 12px; padding: 8px 10px; border-radius: 7px; background: #fdecec; color: #c62828; font-size: 0.78rem; }

.cmas-foot { display: flex; align-items: center; gap: 9px; border-top: 1px solid #eef1f6; }
.cmas-foot__nota { margin-right: auto; font-size: 0.71rem; color: #94a3b8; }
.cmas-aplicar {
    border: 0; background: #2ca444; color: #fff;
    border-radius: 8px; padding: 8px 16px; font-size: 0.83rem; font-weight: 700; cursor: pointer;
    display: inline-flex; align-items: center; gap: 7px;
}
.cmas-aplicar:hover { background: #098521; }
.cmas-aplicar:disabled { background: #e6e9ee; color: #a4adba; cursor: default; }

/* ── Barra de selección y chips de pendientes en el plan ── */
.pcta-masiva {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 8px 12px; margin: 0; background: #eef4fd; border-bottom: 1px solid #cfe0f7;
}
.pcta-masiva__cont { font-size: 0.8rem; font-weight: 700; color: #1e3a5f; }

.pcta-pend {
    display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
    padding: 7px 12px; margin: 0 4px 2px;
    background: #fffaf2; border: 1px solid #ffe2bd; border-radius: 9px;
}
.pcta-pend__t {
    font-size: 0.72rem; font-weight: 700; color: #c77700;
    display: inline-flex; align-items: center; gap: 6px;
}
.pcta-pend__t small { font-weight: 500; color: #b99a6b; }
.pcta-pend__chip {
    border: 1px solid #ffd9a8; background: #fff; color: #8a6320;
    border-radius: 999px; padding: 3px 11px; font-size: 0.73rem; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px;
}
.pcta-pend__chip b { color: #c62828; }
.pcta-pend__chip:hover { background: #fff4e5; }
.pcta-pend__chip.is-on { background: #c77700; border-color: #c77700; color: #fff; }
.pcta-pend__chip.is-on b { color: #fff; }
.pcta-pend__quitar {
    margin-left: auto; border: 1px solid #e0e4ec; background: #fff; color: #64748b;
    border-radius: 7px; padding: 3px 10px; font-size: 0.72rem; cursor: pointer;
}

/* ══════════════════════════════════════════════════════════════════════
   Análisis de cuentas analíticas (RepAnalisisAnaliticasPage) — .raa-
   ══════════════════════════════════════════════════════════════════════ */
.raa-topbar {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
    padding: 11px 16px 9px; background: #fff; border-bottom: 1px solid #e0e4ec; flex-wrap: wrap;
}
.raa-crumb { font-size: 0.73rem; color: #94a3b8; display: flex; gap: 6px; }
.raa-crumb a { color: var(--primario, #284A70); }
.raa-crumb .is-actual { color: #64748b; }
.raa-titulo { margin: 3px 0 0; font-size: 1.15rem; font-weight: 700; color: #1e3a5f; }
.raa-sub { margin: 2px 0 0; font-size: 0.76rem; color: #94a3b8; max-width: 640px; }
.raa-topbar__der { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }

.raa-dims { display: flex; gap: 3px; background: #f1f5f9; border-radius: 9px; padding: 3px; }
.raa-dim {
    border: 0; background: transparent; color: #64748b;
    border-radius: 7px; padding: 6px 13px; font-size: 0.79rem; font-weight: 600; cursor: pointer;
    white-space: nowrap;
}
.raa-dim:hover { color: var(--primario, #284A70); }
.raa-dim.is-on { background: #fff; color: #1e3a5f; box-shadow: 0 1px 3px rgba(30,58,95,.12); }

.raa-btn {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 8px; padding: 7px 13px; font-size: 0.8rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 7px;
}
.raa-btn:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }

.raa-wrap { display: flex; gap: 12px; align-items: flex-start; padding: 12px; }
.raa-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.raa-rail { flex: 0 0 272px; display: flex; flex-direction: column; gap: 10px; }

/* ── KPIs ── */
.raa-kpis { display: grid; grid-template-columns: 1.5fr 1fr 1fr; gap: 10px; }
.raa-kpi { background: #fff; border: 1px solid #e0e4ec; border-radius: 12px; padding: 12px 14px; }
.raa-kpi__t {
    font-size: 0.64rem; font-weight: 700; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .5px;
}
.raa-kpi__top { display: flex; align-items: center; justify-content: space-between; }
.raa-kpi__per { font-size: 0.7rem; color: #94a3b8; }
.raa-kpi__num { margin-top: 5px; font-size: 1.45rem; font-weight: 700; color: #1e3a5f; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.raa-kpi__pie { display: flex; justify-content: space-between; gap: 10px; margin-top: 8px; font-size: 0.71rem; color: #94a3b8; flex-wrap: wrap; }
.raa-kpi__nom { margin-top: 5px; font-size: 0.86rem; font-weight: 600; color: #334155; }
.raa-kpi__nom.is-vacio { color: #cbd5e1; font-style: italic; font-weight: 500; }
.raa-kpi__val { margin-top: 3px; font-size: 1.05rem; font-weight: 700; color: #1e3a5f; }
.raa-kpi__val small { margin-left: 6px; font-size: 0.7rem; font-weight: 500; color: #94a3b8; }
.raa-kpi__val small.is-alerta { color: #c77700; }

.raa-kpi--main { background: #1e3a5f; border-color: #1e3a5f; }
.raa-kpi--main .raa-kpi__t { color: #9db8d6; }
.raa-kpi--main .raa-kpi__per { color: #9db8d6; }
.raa-kpi--main .raa-kpi__num { color: #fff; }
.raa-kpi--main .raa-kpi__pie { color: #a9c2dd; }

.raa-var {
    font-size: 0.7rem; font-weight: 700; border-radius: 999px; padding: 2px 8px;
    background: #f1f5f9; color: #64748b; white-space: nowrap;
}
.raa-var.is-up { background: #fdecec; color: #c62828; }
.raa-var.is-down { background: #e7f6e9; color: #2e7d32; }
.raa-var.is-nuevo { background: #eef4fd; color: #1976d2; }
.raa-var.is-load { background: transparent; color: #cbd5e1; }
.raa-kpi--main .raa-var.is-up { background: rgba(255,255,255,.14); color: #ffd7d7; }
.raa-kpi--main .raa-var.is-down { background: rgba(255,255,255,.14); color: #c8f0cd; }

/* ── Tabla ── */
.raa-card { background: #fff; border: 1px solid #e0e4ec; border-radius: 12px; }
.raa-card__head {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    padding: 11px 14px; border-bottom: 1px solid #eef1f6;
}
.raa-card__t { font-size: 0.86rem; font-weight: 700; color: #1e3a5f; display: inline-flex; align-items: center; gap: 8px; }
.raa-card__cont { background: #eef2f8; color: #475569; border-radius: 999px; padding: 1px 8px; font-size: 0.68rem; font-weight: 700; }
.raa-card__nota { font-size: 0.71rem; color: #94a3b8; margin-left: auto; }
.raa-orden { display: flex; gap: 3px; background: #f1f5f9; border-radius: 8px; padding: 3px; }
.raa-orden__b {
    border: 0; background: transparent; color: #64748b;
    border-radius: 6px; padding: 4px 10px; font-size: 0.74rem; font-weight: 600; cursor: pointer;
}
.raa-orden__b.is-on { background: #fff; color: #1e3a5f; box-shadow: 0 1px 2px rgba(30,58,95,.12); }

.raa-tabla thead th {
    font-size: 0.65rem; text-transform: uppercase; letter-spacing: .4px; color: #94a3b8; font-weight: 700;
}
.raa-row { cursor: pointer; }
.raa-row:hover { background: #f8fafc; }
.raa-row.is-grupo { background: #fcfdff; }
.raa-row.is-grupo .raa-cta__cod, .raa-row.is-grupo .raa-cta__nom { color: #94a3b8; }
.raa-row.is-grupo .raa-monto { color: #64748b; }

.raa-cta { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.raa-cta__cod { font-family: Consolas, monospace; font-size: 0.76rem; color: #1e3a5f; }
.raa-cta__nom { font-size: 0.82rem; color: #334155; }
.raa-tag {
    background: #eef4fd; color: #1976d2; border-radius: 6px;
    padding: 1px 7px; font-size: 0.67rem; font-weight: 600;
}
.raa-monto { font-family: Consolas, monospace; font-size: 0.82rem; color: #1e3a5f; font-weight: 600; }

.raa-peso { display: flex; align-items: center; gap: 9px; }
.raa-peso__barra { flex: 1 1 auto; height: 7px; background: #eef2f8; border-radius: 999px; overflow: hidden; }
.raa-peso__barra > i { display: block; height: 100%; border-radius: 999px; }
.raa-peso__pct { flex: 0 0 34px; text-align: right; font-size: 0.73rem; font-weight: 600; color: #64748b; }

.raa-vacio { text-align: center; padding: 26px; color: #94a3b8; font-size: 0.84rem; }
.raa-vacio i { display: block; font-size: 1.5rem; margin-bottom: 8px; opacity: .5; }
.raa-tabla tfoot th { background: #f8fafc; color: #1e3a5f; font-size: 0.8rem; }

/* ── Rail ── */
.raa-rail__card { background: #fff; border: 1px solid #e0e4ec; border-radius: 12px; padding: 12px 14px; }
.raa-rail__t {
    display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
    font-size: 0.64rem; font-weight: 700; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .5px;
}
.raa-rail__cont { margin-left: auto; color: #64748b; text-transform: none; letter-spacing: 0; font-weight: 600; }
.raa-rail__txt { font-size: 0.77rem; color: #475569; line-height: 1.45; margin: 0; }
.raa-rail__txt.is-vacio { color: #cbd5e1; font-style: italic; }

.raa-conc { display: flex; height: 9px; border-radius: 999px; overflow: hidden; margin: 10px 0 9px; background: #eef2f8; }
.raa-conc > i { display: block; height: 100%; }
.raa-leyenda { display: flex; flex-direction: column; gap: 5px; }
.raa-leyenda__f { display: flex; align-items: center; gap: 7px; font-size: 0.74rem; color: #475569; }
.raa-leyenda__f > i { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.raa-leyenda__f > span { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.raa-leyenda__f > b { color: #1e3a5f; }

.raa-evo { display: flex; align-items: flex-end; gap: 6px; height: 96px; }
.raa-evo__col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 5px; height: 100%; }
.raa-evo__barra { flex: 1 1 auto; width: 100%; display: flex; align-items: flex-end; }
.raa-evo__barra > i {
    display: block; width: 100%; min-height: 3px;
    background: #a9c2dd; border-radius: 5px 5px 0 0;
}
.raa-evo__barra > i.is-actual { background: var(--secundario, #fe7800); }
.raa-evo__col > span { font-size: 0.63rem; font-weight: 700; color: #94a3b8; }
.raa-evo__col > span.is-actual { color: var(--secundario, #fe7800); }

.raa-rail__nota {
    background: #f4f9fe; border: 1px solid #dfeafb; border-radius: 10px;
    padding: 10px 12px; font-size: 0.71rem; color: #52657d; line-height: 1.45;
}
.raa-rail__nota i { color: #1976d2; margin-right: 5px; }

@media (max-width: 1400px) {
    .raa-kpis { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 1180px) {
    .raa-wrap { flex-direction: column; align-items: stretch; }
    .raa-rail { flex: 1 1 auto; width: 100%; }
    .raa-kpis { grid-template-columns: 1fr; }
}

/* La tabla ocupa el ancho de la tarjeta: la 1a columna absorbe el resto. */
.raa-tabla { width: 100%; }

/* Columna de seleccion del plan y de las analiticas: 34px alcanzan para el check.
   El ancho lo imponia la palabra "Todos" del encabezado, que se oculta — el checkbox
   ya lleva su title "Seleccionar Todo". */
.pcta-tabla thead th:first-child,
.pcta-tabla tbody td:first-child {
    width: 34px; min-width: 34px; max-width: 34px;
    padding-left: 0; padding-right: 0; text-align: center;
}
.pcta-tabla thead th:first-child { font-size: 0; }
.pcta-tabla thead th:first-child input { font-size: .95rem; margin-left: 0 !important; }

/* Alcance de "Cambiar de cuenta": pagina vs toda la consulta. */
.mpc-alcance {
    display: inline-flex; align-items: center; gap: 4px;
    margin-left: 10px; padding: 3px 4px 3px 9px;
    background: #f1f5f9; border-radius: 8px;
}
.mpc-alcance__lbl { font-size: 0.68rem; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: .4px; margin-right: 3px; }
.mpc-alcance__b {
    border: 0; background: transparent; color: #64748b;
    border-radius: 6px; padding: 4px 10px; font-size: 0.74rem; font-weight: 600; cursor: pointer;
    white-space: nowrap;
}
.mpc-alcance__b:hover { color: var(--primario, #284A70); }
.mpc-alcance__b.is-on { background: #fff; color: #1e3a5f; box-shadow: 0 1px 2px rgba(30,58,95,.14); }

/* ── Encabezado y filtros DIRECTOS del plan de cuentas ── */
.pcta-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 6px 14px 0; flex-wrap: wrap;
}
.pcta-head .breadcrumb { margin: 0; }
.pcta-head__acc { display: flex; align-items: center; gap: 8px; }
.pcta-btn {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 8px; padding: 7px 14px; font-size: 0.82rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 7px;
}
.pcta-btn:hover { border-color: var(--primario, #284A70); color: var(--primario, #284A70); }
.pcta-btn--main { background: var(--primario, #284A70); border-color: var(--primario, #284A70); color: #fff; }
.pcta-btn--main:hover { background: #1e3a5f; border-color: #1e3a5f; color: #fff; }
.pcta-btn--excel { background: #2ca444; border-color: #2ca444; color: #fff; }
.pcta-btn--excel:hover { background: #098521; border-color: #098521; color: #fff; }

.pcta-filtros {
    display: flex; flex-direction: column; gap: 8px;
    padding: 8px 14px 10px; margin: 0 4px;
    background: #fff; border: 1px solid #e0e4ec; border-radius: 10px;
}
.pcta-filtros__fila { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pcta-filtros__lbl {
    font-size: 0.66rem; font-weight: 700; color: #94a3b8;
    text-transform: uppercase; letter-spacing: .5px; flex-shrink: 0;
}
.pcta-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.pcta-pill {
    border: 1px solid #e0e4ec; background: #fff; color: #475569;
    border-radius: 999px; padding: 5px 12px; font-size: 0.78rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 7px; white-space: nowrap;
}
.pcta-pill:hover { border-color: #cbd5e1; background: #f8fafc; }
.pcta-pill.is-on { background: #1e3a5f; border-color: #1e3a5f; color: #fff; }
.pcta-pill__dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

.pcta-seg { display: flex; gap: 3px; background: #f1f5f9; border-radius: 8px; padding: 3px; }
.pcta-seg__b {
    border: 0; background: transparent; color: #64748b;
    border-radius: 6px; padding: 4px 11px; font-size: 0.76rem; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}
.pcta-seg__b:hover { color: var(--primario, #284A70); }
.pcta-seg__b.is-on { background: #fff; color: #1e3a5f; box-shadow: 0 1px 2px rgba(30,58,95,.14); }

/* ══════════════════════════════════════════════════════════════════
   Vista mensual del Libro Mayor (MayorMensualComponent) — prefijo .mmen-
   Matriz cuenta x mes: la primera columna y la denominacion quedan
   pegadas al hacer scroll horizontal, que es como se lee un reporte
   de 12 columnas sin perder de vista de que cuenta se trata.
   ══════════════════════════════════════════════════════════════════ */

.mmen-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    margin-bottom: 12px;
}

.mmen-kpi {
    display: flex;
    flex-direction: column;
    gap: 2px;
    background: #fff;
    border: 1px solid #e0e4ec;
    border-left: 4px solid var(--primario, #284A70);
    border-radius: 8px;
    padding: 10px 14px;
    box-shadow: 0 2px 6px -4px rgba(15, 23, 42, .12);
}

.mmen-kpi--pico { border-left-color: var(--secundario, #fe7800); }
.mmen-kpi--alerta { border-left-color: #c62828; }

.mmen-kpi__lbl {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #8a94a3;
}

.mmen-kpi__val {
    font-size: 19px;
    font-weight: 800;
    color: #1e3a5f;
    line-height: 1.15;
}

.mmen-kpi--alerta .mmen-kpi__val { color: #c62828; }
.mmen-kpi__sub { font-size: 11px; color: #7c8797; }

.mmen-chart {
    background: #fff;
    border: 1px solid #e0e4ec;
    border-radius: 8px;
    padding: 8px 12px;
    margin-bottom: 12px;
}

.mmen-tablewrap {
    background: #fff;
    border: 1px solid #e0e4ec;
    border-radius: 8px;
    overflow: auto;
    /* [2026-08-28] Igual que .rep-viewer-paper: flex en vez de calc(100vh - 430px).
       El grafico y los KPIs tienen alto variable (y el grafico se puede colapsar),
       asi que cualquier numero fijo dejaba la tabla fuera del viewport — y como
       .content-wrapper es overflow:hidden, fuera del viewport = INVISIBLE. */
    flex: 1 1 0;
    min-height: 180px;
}

.mmen-kpis, .mmen-chart { flex: 0 0 auto; }

/* El SVG del chart escala con el ancho (viewBox + height:auto en el kit): en un
   contenedor de 1800px un viewBox de 800x240 se vuelve 540px de alto y empuja la
   tabla fuera de la pantalla. Se acota aca, sin tocar el CSS del kit —que los
   dashboards usan en columnas angostas y ahi se ve bien. */
.mmen-chart svg { max-height: 260px; }

.mmen-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 12.5px;
}

.mmen-th {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--primario, #1e3a5f);
    color: #fff;
    font-weight: 700;
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: .03em;
    padding: 8px 10px;
    white-space: nowrap;
    border-bottom: 2px solid var(--dorado, #d4af37);
}

.mmen-th--num { text-align: right; }
.mmen-th--total { background: #2c5282; }

.mmen-row td { padding: 5px 10px; border-bottom: 1px solid #eef1f6; }
.mmen-row:hover td { background: #f4f8fd; }

.mmen-cod { font-family: Consolas, monospace; color: var(--primario, #284A70); font-weight: 600; }

.mmen-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.mmen-num--total { font-weight: 700; color: #1e3a5f; background: #f7f9fc; }
.mmen-num--alerta { background: #fdecd9; color: #8a4b00; font-weight: 700; }
.mmen-pct { color: #7c8797; font-size: 11.5px; }

.mmen-subtotal td {
    background: #eef2f7;
    font-weight: 700;
    color: #33475b;
    padding: 6px 10px;
    border-top: 1px solid #d7dee8;
    border-bottom: 1px solid #d7dee8;
}

.mmen-total td {
    position: sticky;
    bottom: 0;
    background: var(--primario, #1e3a5f);
    color: #fff;
    font-weight: 800;
    padding: 8px 10px;
    border-top: 2px solid var(--dorado, #d4af37);
}

/* columnas pegadas: el z-index de las del cuerpo debe ser menor que el del thead */
.mmen-sticky-cod { position: sticky; left: 0; z-index: 2; background: #fff; min-width: 92px; }
.mmen-sticky-den { position: sticky; left: 92px; z-index: 2; background: #fff; min-width: 250px; }

.mmen-th.mmen-sticky-cod, .mmen-th.mmen-sticky-den { z-index: 4; background: var(--primario, #1e3a5f); }
.mmen-subtotal .mmen-sticky-cod, .mmen-subtotal .mmen-sticky-den { background: #eef2f7; }
.mmen-total .mmen-sticky-cod, .mmen-total .mmen-sticky-den { background: var(--primario, #1e3a5f); z-index: 3; }
.mmen-row:hover .mmen-sticky-cod, .mmen-row:hover .mmen-sticky-den { background: #f4f8fd; }

.mmen-leyenda {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 10px;
    font-size: 11.5px;
    color: #64748b;
}

.mmen-chip-alerta {
    display: inline-block;
    width: 26px;
    height: 13px;
    border-radius: 3px;
    background: #fdecd9;
    border: 1px solid #e8c9a3;
    flex: 0 0 auto;
}

/* ══════════════════════════════════════════════════════════════════
   Indicadores financieros del visor de reportes (.rep-kpi-*)
   Salen de los subtotales que el contador marco con un RolIndicador.
   El semaforo usa umbrales de referencia general, NO sectoriales: por
   eso "neutro" es un estado de primera clase y no un gris de descarte.
   ══════════════════════════════════════════════════════════════════ */

/* ── Pestanas Reporte / Indicadores ──────────────────────────────
   [2026-08-28] El panel de ratios vivia arriba del reporte y le comia el alto (con 7
   indicadores, 2 filas de tarjetas). Ahora comparten el espacio por pestanas: cada una
   usa TODO el alto disponible. El panel del reporte se oculta con .rep-tabpane--off y
   NO se desmonta, porque los indicadores leen sus cifras de la hoja ya calculada. */
.rep-tabs {
    display: flex;
    align-items: flex-end;
    gap: 4px;
    flex: 0 0 auto;
    border-bottom: 1px solid #dfe4ec;
    margin: 2px 0 10px;
}

.rep-tab {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    border: 1px solid transparent;
    border-bottom: none;
    background: transparent;
    color: #7c8797;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .02em;
    padding: 8px 15px;
    border-radius: 8px 8px 0 0;
    margin-bottom: -1px;
    cursor: pointer;
    transition: color .15s ease, background .15s ease;
}

.rep-tab:hover { color: var(--primario, #1e3a5f); background: #f2f5fa; }

.rep-tab--on {
    background: #fff;
    color: var(--primario, #1e3a5f);
    border-color: #dfe4ec;
    box-shadow: inset 0 3px 0 0 var(--secundario, #fe7800);
}

.rep-tab i { font-size: 12px; opacity: .85; }

.rep-tab__badge {
    display: inline-block;
    min-width: 18px;
    padding: 1px 5px;
    border-radius: 9px;
    background: #e8edf5;
    color: #56637a;
    font-size: 10.5px;
    font-weight: 800;
    text-align: center;
}

.rep-tab--on .rep-tab__badge { background: var(--primario, #1e3a5f); color: #fff; }
.rep-tab__badge--warn { background: #fbe9d2; color: #8a4b00; }
.rep-tab--on .rep-tab__badge--warn { background: #c77700; color: #fff; }

.rep-tabpane {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    min-height: 0;
}

.rep-tabpane--off { display: none !important; }

/* ── Panel premium de indicadores ────────────────────────────────
   Cada tarjeta responde tres preguntas de una sola lectura: cuanto vale, como viene
   evolucionando (sparkline + variacion contra el periodo anterior) y de donde sale
   (la formula, visible siempre). Esa ultima linea es la que hace auditable el ratio:
   sin ella el numero es un acto de fe. */
.rep-kpi2-pane { overflow: auto; padding-bottom: 8px; }

.rep-kpi2-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    flex: 0 0 auto;
    margin-bottom: 12px;
}

.rep-kpi2-head__t {
    font-size: 15px;
    font-weight: 800;
    color: var(--primario, #1e3a5f);
    letter-spacing: .01em;
}

.rep-kpi2-head__s { font-size: 11.5px; color: #7c8797; margin-top: 2px; }
.rep-kpi2-head__s b { color: var(--primario, #1e3a5f); }

.rep-kpi2-head__periodo {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11.5px;
    color: #7c8797;
}

.rep-kpi2-head__periodo label { margin: 0; font-weight: 600; }

.rep-kpi2-head__periodo select {
    height: 30px;
    border: 1px solid #cfd6e0;
    border-radius: 6px;
    background: #fff;
    font-size: 12px;
    color: #33475b;
    padding: 0 8px;
}

.rep-kpi2-grupo {
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: #98a2b3;
    margin: 6px 0 7px;
    display: flex;
    align-items: center;
    gap: 9px;
}

.rep-kpi2-grupo::after {
    content: "";
    flex: 1;
    height: 1px;
    background: #e6eaf1;
}

.rep-kpi2-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(232px, 1fr));
    gap: 11px;
    margin-bottom: 14px;
}

.rep-kpi2 {
    position: relative;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #e6eaf1;
    border-radius: 10px;
    padding: 12px 14px 10px;
    box-shadow: 0 2px 10px -7px rgba(15, 23, 42, .35);
    overflow: hidden;
}

/* franja de semaforo: color como dato, no como decoracion */
.rep-kpi2::before {
    content: "";
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: #9aa5b3;
}

.rep-kpi2--ok::before { background: #2e7d32; }
.rep-kpi2--alerta::before { background: #c77700; }
.rep-kpi2--critico::before { background: #c62828; }
.rep-kpi2--neutro::before { background: var(--primario, #284A70); }

.rep-kpi2__top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.rep-kpi2__lbl {
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: #8a94a3;
    line-height: 1.3;
}

.rep-kpi2__delta {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    flex: 0 0 auto;
    font-size: 10.5px;
    font-weight: 800;
    padding: 2px 7px;
    border-radius: 10px;
    font-variant-numeric: tabular-nums;
}

/* Sube / baja se pinta en AZUL y GRIS, no en verde y rojo: que un ratio suba no siempre
   es bueno (el endeudamiento, por ejemplo). El juicio de valor lo da el semaforo. */
.rep-kpi2__delta--up { background: #e8f0fa; color: #1b5b9e; }
.rep-kpi2__delta--down { background: #f1f3f6; color: #64708a; }

.rep-kpi2__val {
    font-size: 25px;
    font-weight: 800;
    color: #16232f;
    line-height: 1.1;
    margin: 5px 0 2px;
    font-variant-numeric: tabular-nums;
}

.rep-kpi2--ok .rep-kpi2__val { color: #22682a; }
.rep-kpi2--alerta .rep-kpi2__val { color: #a86400; }
.rep-kpi2--critico .rep-kpi2__val { color: #bb2424; }

.rep-kpi2__spark {
    width: 100%;
    height: 26px;
    margin: 4px 0 6px;
    display: block;
}

.rep-kpi2__spark polyline {
    fill: none;
    stroke: #b7c2d2;
    stroke-width: 1.6;
    stroke-linejoin: round;
    stroke-linecap: round;
    vector-effect: non-scaling-stroke;   /* el viewBox se estira: la linea no debe engordar */
}

.rep-kpi2--ok .rep-kpi2__spark polyline { stroke: #6aab6f; }
.rep-kpi2--alerta .rep-kpi2__spark polyline { stroke: #d8a24a; }
.rep-kpi2--critico .rep-kpi2__spark polyline { stroke: #d97b7b; }

.rep-kpi2__int {
    font-size: 11.5px;
    color: #55606e;
    line-height: 1.35;
    flex: 1 1 auto;
}

.rep-kpi2__frm {
    font-size: 10px;
    color: #a3adba;
    font-family: Consolas, monospace;
    margin-top: 7px;
    padding-top: 6px;
    border-top: 1px dashed #eef1f6;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rep-kpi2-vacio {
    margin: 24px auto;
    max-width: 520px;
    text-align: center;
    padding: 38px 25px;
    background: #fff;
    border: 2px dashed #e0e4ec;
    border-radius: 10px;
}

.rep-kpi2-vacio i { font-size: 40px; color: var(--secundario, #fe7800); opacity: .7; margin-bottom: 12px; }
.rep-kpi2-vacio h4 { color: var(--primario, #284A70); margin: 0 0 6px; font-weight: 700; font-size: 1rem; }
.rep-kpi2-vacio p { color: #64748b; margin: 0; font-size: .82rem; line-height: 1.5; }

.rep-kpi-falta {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 10px;
    padding: 8px 11px;
    background: #f0f6fc;
    border: 1px solid #d4e3f2;
    border-radius: 7px;
    font-size: 11.5px;
    color: #33475b;
    line-height: 1.4;
}

.rep-kpi-falta i { color: var(--primario, #284A70); margin-top: 2px; }

/* sugerencia (no faltante): los ratios que cruzan los dos estados */
.rep-kpi-falta--sugerencia { background: #fdf8ea; border-color: #ecdcae; }
.rep-kpi-falta--sugerencia i { color: #b08a1e; }

/* aviso del modal de celda cuando el reporte no es un estado financiero */
.mrd-hint {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    padding: 7px 10px;
    background: #f0f6fc;
    border: 1px solid #d4e3f2;
    border-radius: 6px;
    font-size: 11.5px;
    color: #33475b;
    line-height: 1.4;
}

.mrd-hint i { color: var(--primario, #284A70); margin-top: 2px; }
.mrd-hint-sm { display: block; margin-top: 4px; font-size: 11px; color: #7c8797; line-height: 1.35; }

/* Barra del toggle del grafico (vista mensual del mayor) */
.mmen-chartbar { flex: 0 0 auto; margin-bottom: 6px; }

.mmen-chart-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: 1px solid #e0e4ec;
    background: #fff;
    border-radius: 7px;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--primario, #284A70);
    cursor: pointer;
}

.mmen-chart-toggle:hover { background: #f2f7fc; border-color: #cfdcec; }
.mmen-chart-toggle i:last-of-type { color: var(--secundario, #fe7800); }

/* ── Exclusion de grupos de cuentas (vista mensual del mayor) ───────── */

.mmen-excl {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    flex: 0 0 auto;
    margin-bottom: 8px;
    padding: 7px 12px;
    background: #fff8ee;
    border: 1px solid #f0dcc0;
    border-radius: 7px;
    font-size: 11.5px;
    color: #8a5a00;
}

.mmen-excl > i { color: #b06a00; }
.mmen-excl__lbl { font-weight: 700; }

.mmen-excl__chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid #e0c79c;
    background: #fff;
    border-radius: 999px;
    padding: 2px 9px;
    font-size: 11.5px;
    font-weight: 700;
    font-family: Consolas, monospace;
    color: #8a5a00;
    cursor: pointer;
}

.mmen-excl__chip:hover { background: #fdeeC9; border-color: #c9a054; }
.mmen-excl__chip i { font-size: 9px; opacity: .7; }

.mmen-excl__clear {
    margin-left: auto;
    border: none;
    background: transparent;
    color: var(--primario, #284A70);
    font-size: 11.5px;
    font-weight: 700;
    text-decoration: underline;
    cursor: pointer;
}

/* boton de ocultar en la fila de subtotal: discreto hasta el hover */
.mmen-ocultar {
    border: none;
    background: transparent;
    color: #b9c2cd;
    cursor: pointer;
    padding: 0 4px;
    font-size: 11px;
    line-height: 1;
}

.mmen-subtotal:hover .mmen-ocultar { color: #b06a00; }
.mmen-ocultar:hover { color: #8a4b00 !important; }

.mmen-kpi__excl { color: #b06a00; }

/* Barra del toggle informe / hoja de calculo en el visor */
.rep-modobar {
    display: flex;
    justify-content: flex-end;
    flex: 0 0 auto;
    margin-bottom: 6px;
}

/* En modo informe el "papel" no necesita marco propio: el informe ya trae el suyo */
.rep-viewer-paper--informe {
    padding: 0;
    border: none;
    background: transparent;
    box-shadow: none;
}

/* ── Lista de Periodos: el Código (AAAA-MM) es la clave; el Nombre, solo descripción ── */
.cper-nota {
    flex: 0 0 auto; /* la card es flex en columna: la nota no se encoge y la tabla conserva su scroll */
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 8px 12px 6px;
    padding: 8px 12px;
    border-left: 3px solid var(--primario, #284A70);
    background: #f5f7fb;
    border-radius: 4px;
    font-size: 12.5px;
    color: #3b4656;
    line-height: 1.45;
}

.cper-nota > i {
    color: var(--primario, #284A70);
    margin-top: 2px;
}

.cper-codigo {
    display: inline-block;
    padding: 1px 7px;
    border: 1px solid #c9d3e3;
    border-radius: 4px;
    background: #eef3fa;
    color: var(--primario, #284A70);
    font-family: Consolas, "SFMono-Regular", Menlo, monospace;
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .3px;
    white-space: nowrap;
}

.cper-sub {
    display: block;
    font-size: 10.5px;
    font-weight: 400;
    color: #7a8496;
    text-transform: none;
    line-height: 1.1;
}

/* Modal del periodo: el código se muestra, no se edita */
.cper-campo-codigo {
    padding-top: 6px;
}

.cper-ayuda {
    display: block;
    margin-top: 3px;
    font-size: 11px;
    color: #7a8496;
}
