/* ============================================================
   Pacioli — Tema global (drop-in para Bootstrap 5.3)
   Reemplaza el contenido de wwwroot/css/site.css
   Recolorea TODA la app vía overrides de tokens de Bootstrap.
   Dirección: azul marino refinado + títulos serif + cifras mono.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Spectral:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

/* ---- 1. Paleta / tokens de marca ---------------------------------- */
:root {
    /* Marca */
    --pac-navy:        #1e2a4a;   /* primario: navbar, headers, totales */
    --pac-navy-700:    #172038;
    --pac-indigo:      #3b5bb5;   /* acento: enlaces, foco, códigos     */
    --pac-indigo-50:   #eaeff8;   /* tinte suave: bandas, hovers        */
    --pac-tint:        #f5f7fb;   /* zebra / superficies suaves         */

    /* Superficies */
    --pac-bg:          #f4f6f9;
    --pac-surface:     #ffffff;
    --pac-border:      #dfe3ea;
    --pac-hair:        #e6e8ec;

    /* Texto */
    --pac-ink:         #1c2330;
    --pac-ink-2:       #5b6373;
    --pac-muted:       #7a8294;

    /* Semánticos refinados */
    --pac-success:     #1f8a5b;
    --pac-danger:      #b23a3a;
    --pac-warning:     #c98a1a;
    --pac-info:        #2b6cb0;

    /* Tokens del design system (handoff DTE) */
    --pac-font-mono:   'IBM Plex Mono', ui-monospace, "SFMono-Regular", Menlo, monospace;
    --pac-radius-sm:   .4rem;
    --pac-radius:      .55rem;
    --pac-radius-lg:   .8rem;
    --pac-radius-xl:   14px;
    --pac-indigo-100:  #eaf0fd;
    --pac-shadow-modal: 0 24px 64px -20px rgba(28,35,48,.5);

    /* --- Overrides de Bootstrap --- */
    --bs-primary:            #1e2a4a;
    --bs-primary-rgb:        30, 42, 74;
    --bs-link-color:         #3b5bb5;
    --bs-link-color-rgb:     59, 91, 181;
    --bs-link-hover-color:   #2b4488;
    --bs-body-color:         #1c2330;
    --bs-body-bg:            #f4f6f9;
    --bs-border-color:       #dfe3ea;
    --bs-body-font-family:   'Segoe UI', system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;
    --bs-border-radius:      .55rem;
    --bs-border-radius-sm:   .4rem;
    --bs-border-radius-lg:   .8rem;
}

/* ---- 2. Base ------------------------------------------------------- */
body {
    font-family: var(--bs-body-font-family);
    background-color: var(--pac-bg);
    color: var(--pac-ink);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, .h1, .h2, .h3, .h4, .h5,
.card-title, .navbar-brand, .offcanvas-title {
    font-family: 'Spectral', Georgia, 'Times New Roman', serif;
    letter-spacing: .01em;
    color: var(--pac-ink);
}
h2 { font-weight: 600; }

/* Cifras monoespaciadas y tabulares */
.currency, td.text-end, .amount-debit, .amount-credit,
.font-mono, .table tfoot td, .stat-value {
    font-family: 'IBM Plex Mono', ui-monospace, "SFMono-Regular", Menlo, monospace;
    font-variant-numeric: tabular-nums;
}

/* ---- 3. Navbar ---------------------------------------------------- */
.navbar.bg-primary {
    background-color: var(--pac-navy) !important;
    border-bottom: 1px solid var(--pac-navy-700) !important;
    box-shadow: 0 1px 0 rgba(0,0,0,.04);
}
.navbar-brand {
    font-weight: 600;
    font-size: 1.35rem;
    color: #fff;
}
.navbar .form-control,
.navbar .input-group-text {
    border-color: transparent;
}

/* ---- 4. Cards ----------------------------------------------------- */
.card {
    border: 1px solid var(--pac-hair);
    border-radius: var(--bs-border-radius-lg);
    box-shadow: 0 1px 2px rgba(28,35,48,.04), 0 8px 24px -18px rgba(28,35,48,.25);
    background: var(--pac-surface);
}
.card-header {
    background: var(--pac-surface);
    border-bottom: 1px solid var(--pac-hair);
    font-family: 'Spectral', Georgia, serif;
    font-weight: 600;
}
.card.bg-light {
    background: var(--pac-surface) !important;
    border: 1px solid var(--pac-hair);
}
/* Tarjetas-estadística: número mono, etiqueta tenue */
.card.bg-light .card-title {
    font-family: 'IBM Plex Mono', monospace;
    font-size: .72rem;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--pac-muted);
    font-weight: 500;
}
.card.bg-light h4 {
    font-family: 'IBM Plex Mono', monospace;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

/* ---- 5. Botones --------------------------------------------------- */
.btn { border-radius: .5rem; font-weight: 500; }
.btn-primary {
    --bs-btn-bg: var(--pac-navy);
    --bs-btn-border-color: var(--pac-navy);
    --bs-btn-hover-bg: var(--pac-navy-700);
    --bs-btn-hover-border-color: var(--pac-navy-700);
    --bs-btn-active-bg: var(--pac-navy-700);
    --bs-btn-active-border-color: var(--pac-navy-700);
    --bs-btn-disabled-bg: var(--pac-navy);
    --bs-btn-disabled-border-color: var(--pac-navy);
}
.btn-outline-primary {
    --bs-btn-color: var(--pac-indigo);
    --bs-btn-border-color: #c3cfe8;
    --bs-btn-hover-bg: var(--pac-indigo);
    --bs-btn-hover-border-color: var(--pac-indigo);
    --bs-btn-active-bg: var(--pac-indigo);
    --bs-btn-active-border-color: var(--pac-indigo);
}
.btn-success { --bs-btn-bg: var(--pac-success); --bs-btn-border-color: var(--pac-success); --bs-btn-hover-bg:#1a774e; --bs-btn-hover-border-color:#1a774e; }
.btn-danger  { --bs-btn-bg: var(--pac-danger);  --bs-btn-border-color: var(--pac-danger);  --bs-btn-hover-bg:#98302f; --bs-btn-hover-border-color:#98302f; }
.btn-info    { --bs-btn-bg: var(--pac-info);    --bs-btn-border-color: var(--pac-info); --bs-btn-color:#fff; --bs-btn-hover-bg:#245c96; --bs-btn-hover-border-color:#245c96; --bs-btn-hover-color:#fff; }
.btn-outline-info    { --bs-btn-color: var(--pac-info);    --bs-btn-border-color:#b9d0e6; --bs-btn-hover-bg: var(--pac-info); --bs-btn-hover-border-color: var(--pac-info); }
.btn-outline-success { --bs-btn-color: var(--pac-success); --bs-btn-border-color:#b6ddc9; --bs-btn-hover-bg: var(--pac-success); --bs-btn-hover-border-color: var(--pac-success); }
.btn-outline-warning { --bs-btn-color: var(--pac-warning); --bs-btn-border-color:#e7d3a6; --bs-btn-hover-bg: var(--pac-warning); --bs-btn-hover-border-color: var(--pac-warning); }
.btn-outline-danger  { --bs-btn-color: var(--pac-danger);  --bs-btn-border-color:#e3bcbc; --bs-btn-hover-bg: var(--pac-danger); --bs-btn-hover-border-color: var(--pac-danger); }
.btn-outline-secondary { --bs-btn-color: var(--pac-ink-2); --bs-btn-border-color: var(--pac-border); --bs-btn-hover-bg:#eef1f5; --bs-btn-hover-color: var(--pac-ink); --bs-btn-hover-border-color:#cfd5df; }

/* ---- 6. Tablas ---------------------------------------------------- */
.table {
    --bs-table-color: var(--pac-ink);
    margin-bottom: 0;
}
.table > thead {
    --bs-table-bg: var(--pac-navy);
}
.table > thead th {
    background: var(--pac-navy);
    color: rgba(255,255,255,.82);
    font-family: 'IBM Plex Mono', monospace;
    font-size: .72rem;
    font-weight: 500;
    letter-spacing: .06em;
    text-transform: uppercase;
    border-bottom: none;
    padding: .7rem .75rem;
    vertical-align: middle;
}
.table > thead th:first-child { border-top-left-radius: .5rem; }
.table > thead th:last-child  { border-top-right-radius: .5rem; }
.table > tbody td { padding: .6rem .75rem; vertical-align: middle; border-color: var(--pac-hair); }
.table > tbody tr:nth-of-type(even) { background: var(--pac-tint); }

/* Hover: borde suave (mantiene el patrón original, con acento navy) */
.table-hover tbody tr {
    transition: background .12s ease, box-shadow .12s ease;
}
.table-hover tbody tr:hover {
    background-color: var(--pac-indigo-50) !important;
    box-shadow: inset 3px 0 0 var(--pac-indigo);
}

/* ---- 6b. wb-table: chrome canónico de tablas (emitido por <wb-table>) ----
   Los arreglos de tablas van AQUÍ (y en WbTableTagHelper), nunca vista por vista.
   El wrapper decide las esquinas superiores: tabla al tope de su propia card →
   redondeadas (regla global de arriba); dentro de una card existente (card="false",
   p. ej. bajo un card-header) → rectas, automáticamente. */
.wb-table:not(.card) .table > thead th:first-child { border-top-left-radius: 0; }
.wb-table:not(.card) .table > thead th:last-child  { border-top-right-radius: 0; }

/* Montos: color según naturaleza */
.amount-debit  { color: var(--pac-success); font-weight: 600; }
.amount-credit { color: var(--pac-danger);  font-weight: 600; }

/* ---- 7. Badges ---------------------------------------------------- */
.badge {
    font-weight: 600;
    letter-spacing: .01em;
    padding: .38em .6em;
    border-radius: .4rem;
}
.badge.bg-primary   { background-color: var(--pac-indigo) !important; }
.badge.bg-success   { background-color: #e5f3ec !important; color: #1a6b45 !important; }
.badge.bg-danger    { background-color: #f7e7e7 !important; color: #9c2f2f !important; }
.badge.bg-warning   { background-color: #f9efd6 !important; color: #8a6410 !important; }
.badge.bg-info      { background-color: #e3eef8 !important; color: #235c96 !important; }
.badge.bg-secondary { background-color: #eceef2 !important; color: #4b5362 !important; }
.badge.bg-light     { background-color: #eef1f5 !important; color: #4b5362 !important; }
.badge.bg-dark      { background-color: #2b3346 !important; }

/* ---- 8. Formularios ---------------------------------------------- */
.form-label { font-weight: 500; color: var(--pac-ink-2); font-size: .875rem; }
.form-control, .form-select {
    border-color: var(--pac-border);
    border-radius: .5rem;
    color: var(--pac-ink);
}
.form-control:focus, .form-select:focus {
    border-color: var(--pac-indigo);
    box-shadow: 0 0 0 .2rem rgba(59, 91, 181, .15);
}

/* ---- 9. Alerts --------------------------------------------------- */
.alert { border: 1px solid transparent; border-radius: .6rem; }
.alert-success { background: #e9f5ef; border-color: #c7e6d5; color: #1a6b45; }
.alert-danger  { background: #f8e9e9; border-color: #e7c6c6; color: #9c2f2f; }
.alert-warning { background: #fbf2da; border-color: #ecdcae; color: #8a6410; }
.alert-info    { background: #e7f0f9; border-color: #c8ddf0; color: #235c96; }

/* ---- 10. Empty state / iconos display --------------------------- */
.text-center .display-1.text-muted { color: #c4cad6 !important; }

/* ---- 11. Footer -------------------------------------------------- */
.footer {
    margin-top: auto;
    background-color: var(--pac-surface);
    padding: 1rem 0;
    border-top: 1px solid var(--pac-border);
    color: var(--pac-muted);
}
.footer a { color: var(--pac-indigo); text-decoration: none; }

/* ---- 12. Búsqueda global (conserva comportamiento original) ------ */
#globalSearchForm .input-group .form-control:focus { box-shadow: none; }
#globalSearchForm .input-group:focus-within .input-group-text,
#globalSearchForm .input-group:focus-within .form-control { border-color: var(--pac-indigo); }
#searchResults { top: 100%; left: 0; z-index: 1050; border: 1px solid var(--pac-border); border-radius: .6rem; }
#searchResults .search-section-header {
    font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em;
    color: var(--pac-muted); padding: .5rem 1rem .25rem; background: var(--pac-tint);
    border-bottom: 1px solid var(--pac-hair);
}
#searchResults .search-item { padding: .5rem 1rem; text-decoration: none; color: inherit; display: block; border-bottom: 1px solid #f0f0f0; cursor: pointer; }
#searchResults .search-item:hover, #searchResults .search-item:focus { background-color: var(--pac-indigo-50); }
#searchResults .search-item .search-item-title { font-weight: 500; font-size: .875rem; }
#searchResults .search-item .search-item-subtitle { font-size: .75rem; color: var(--pac-muted); }

/* ---- 13. Utilidades de color de texto --------------------------- */
.text-primary { color: var(--pac-indigo) !important; }
.text-success { color: var(--pac-success) !important; }
.text-warning { color: var(--pac-warning) !important; }
.text-info    { color: var(--pac-info) !important; }

/* Acentos contables heredados */
.balance-positive { color: var(--pac-success); }
.balance-negative { color: var(--pac-danger); }
.account-hierarchy { padding-left: 20px; }
.journal-entry-balanced   { border-left: 4px solid var(--pac-success); }
.journal-entry-unbalanced { border-left: 4px solid var(--pac-danger); }

/* ---- 14. Responsive --------------------------------------------- */
@media (max-width: 768px) {
    .navbar-brand { font-size: 1.15rem; }
    .card { margin-bottom: 1rem; }
}

/* ---- 15. Impresión de reportes ---------------------------------- */
@media print {
    .navbar, .footer, .btn, .no-print, .offcanvas { display: none !important; }
    .container-fluid { margin: 0; padding: 0; }
    .card { box-shadow: none; border: 0; }
    .table > thead { display: table-header-group; }
    .table > thead th { background: var(--pac-navy) !important; color: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    tr, .card { break-inside: avoid; page-break-inside: avoid; }
    @page { size: A4 portrait; margin: 16mm 14mm; }
}

/* ============================================================
   Workbench (Propuesta B) — shell, lista por día, slide-over,
   kebab, chat rail. Origen: prototipo handoff-workbench.
   ============================================================ */

/* ---- 16. Shell ---------------------------------------------------- */
/* The topbar sits above .wb and spans the full width, so everything below it measures against the
   viewport minus its height. Kept as a variable because five rules depend on it. */
:root { --wb-top-h: 56px; }

.wb { display: flex; min-height: calc(100vh - var(--wb-top-h)); }
.wb > .offcanvas-lg { flex-shrink: 0; }

/* The menu flows with the page: no clipping to 100vh and no scroll container of its own. Pinning it
   would need an internal scrollbar on short windows — an extra, permanently visible scrollbar next
   to the page's own. The link home lives in the sticky topbar instead, so nothing here has to stay
   on screen. The white column and its border sit on the offcanvas wrapper (below), which stretches
   to the full shell height; .wb-side alone would stop where the menu ends. */
.wb-side {
    width: 224px; flex-shrink: 0; border-right: 1px solid var(--pac-hair);
    padding: 20px 0; display: flex; flex-direction: column; gap: 2px;
    min-height: calc(100vh - var(--wb-top-h));
}

@media (min-width: 992px) {
    .wb > .offcanvas-lg { background: #fff; }
}
.wb-brand { display: flex; align-items: center; gap: 10px; padding: 0 20px 18px; }
/* In the topbar the brand is just the link home — no block padding, and it must not shrink when the
   search box competes for width. */
.wb-top .wb-brand { padding: 0; flex-shrink: 0; }
.brand-tile {
    width: 32px; height: 32px; border-radius: 8px; background: var(--pac-navy); color: #fff;
    font-family: 'Spectral', Georgia, serif; font-weight: 700; font-size: 20px; line-height: 1;
    display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.wb-brand span.name { font-family:'Spectral',serif; font-weight:600; font-size:1.2rem; color:var(--pac-ink); }
.wb-label {
    font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.12em; text-transform:uppercase;
    color:#9aa1b0; padding: 14px 20px 6px;
}
.wb-item { display:flex; align-items:center; gap:10px; padding: 8px 20px; font-size:.9rem; color:var(--pac-ink-2); text-decoration:none; border-left:3px solid transparent; background:transparent; border-top:0; border-right:0; border-bottom:0; width:100%; text-align:left; }
.wb-item i { width:16px; color:#9aa1b0; }
.wb-item:hover { background:var(--pac-tint); color:var(--pac-ink); }
.wb-item.active { background:#eaf0fd; color:#1f3f96; font-weight:600; border-left-color:var(--pac-indigo); }
.wb-item.active i { color:var(--pac-indigo); }
/* Nested under its controller's primary action inside "Más". The extra indent is on the padding,
   not a margin, so the hover band still spans the full column width. */
.wb-item-sub { padding-left: 40px; font-size:.85rem; color:#6b7280; }
.wb-item-text { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* A menu row: the link plus its personalization tools. The label blocks are grouped so an emptied
   section can hide its heading along with its rows. */
.wb-group { display:flex; flex-direction:column; gap:2px; }
.wb-row { position:relative; display:flex; align-items:center; }
.wb-row .wb-item { min-width:0; }
/* The tools ride on top of the row's right edge instead of taking layout space — otherwise every
   title would be truncated by 44px whether or not the cursor is anywhere near. */
.wb-row-tools {
    position:absolute; right:8px; display:none; align-items:center; gap:2px;
    background:var(--pac-tint); border-radius:6px;
}
.wb-row:hover .wb-row-tools, .wb-row:focus-within .wb-row-tools { display:flex; }
.wb-tool {
    border:0; background:transparent; color:#9aa1b0; line-height:1;
    padding:4px 5px; border-radius:5px; font-size:.72rem;
}
.wb-tool:hover { background:#fff; color:var(--pac-indigo); }
.wb-tool:disabled { opacity:.4; }

.wb-main { flex:1; min-width:0; display:flex; flex-direction:column; }
.wb-side-foot { padding: 12px 20px; border-top:1px solid #eef0f3; font-size:.78rem; color:#9aa1b0; }
.wb-foot { margin-top:auto; padding: 12px 32px 16px; color: var(--pac-muted); }
.wb-foot a { color: var(--pac-indigo); text-decoration: none; }
.wb-content        { max-width: 940px; width:100%; margin: 0 auto; padding: 28px 32px 48px; }
.wb-content-narrow { max-width: 720px; width:100%; margin: 0 auto; padding: 28px 32px 48px; }
.wb-content-wide   { max-width: none;  width:100%; margin: 0;      padding: 28px 32px 48px; }

/* topbar */
.wb-top { height: var(--wb-top-h); background:#fff; border-bottom:1px solid var(--pac-hair); display:flex; align-items:center; gap:16px; padding: 0 24px; position: sticky; top:0; z-index: 5; }
.wb-avatar { width:32px; height:32px; border-radius:50%; background:var(--pac-indigo); color:#fff; font-size:.78rem; font-weight:600; display:flex; align-items:center; justify-content:center; border:none; padding:0; }

/* ---- 17. Lista agrupada por día ----------------------------------- */
.day-head {
    display:flex; justify-content:space-between; align-items:baseline;
    padding: 18px 4px 8px; border-bottom: 2px solid var(--pac-navy); margin-bottom: 2px;
}
.day-head h6 { font-family:'Spectral',serif; font-weight:600; color:var(--pac-navy); margin:0; font-size:1rem; }
.day-head .sub { font-family:'IBM Plex Mono',monospace; font-size:.72rem; color:var(--pac-muted); }
.entry-row {
    display:grid; grid-template-columns: 118px 1fr 110px 120px 40px; gap: 12px; align-items:center;
    background:#fff; border:1px solid var(--pac-hair); border-top:none; padding: 10px 14px; cursor:pointer;
}
.entry-row:first-of-type { border-top:1px solid var(--pac-hair); }
.entry-row:hover, .entry-row:focus-visible { background:#eaf0fd; }
.entry-num { font-family:'IBM Plex Mono',monospace; font-size:.8rem; font-weight:600; color:var(--pac-indigo); }
.entry-desc { min-width:0; }
.entry-desc .t { font-size:.9rem; color:var(--pac-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.entry-desc .s { font-size:.75rem; color:#9aa1b0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.entry-amt { font-family:'IBM Plex Mono',monospace; font-variant-numeric:tabular-nums; font-weight:600; text-align:right; color:var(--pac-ink); }

/* ---- 18. Kebab + dropdown refinado -------------------------------- */
.btn-kebab {
    width: 32px; height: 32px; border-radius: 8px; border: none; background: transparent;
    color: var(--pac-muted); display: inline-flex; align-items: center; justify-content: center;
}
.btn-kebab:hover, .btn-kebab:focus, .btn-kebab[aria-expanded="true"] { background: #dde6f7; color: var(--pac-navy); }

.dropdown-menu {
    border: 1px solid var(--pac-border); border-radius: 10px;
    box-shadow: 0 10px 32px -8px rgba(28,35,48,.22);
    padding: 6px; min-width: 200px; font-size: .9rem;
}
.dropdown-item { border-radius: 6px; padding: .45rem .7rem; display: flex; align-items: center; gap: .6rem; color: #3a4152; }
.dropdown-item i { color: var(--pac-muted); width: 16px; }
.dropdown-item:hover { background: var(--pac-indigo-50); color: var(--pac-ink); }
.dropdown-item.text-danger, .dropdown-item.text-danger i { color: var(--pac-danger) !important; }

/* ---- 19. Slide-over detalle --------------------------------------- */
.slideover-backdrop { position:fixed; inset:0; background:rgba(19,26,44,.35); z-index:1040; }
.slideover {
    position:fixed; top:0; right:0; bottom:0; width:520px; max-width:92vw; background:#fff; z-index:1050;
    box-shadow:-24px 0 60px -24px rgba(28,35,48,.5); display:flex; flex-direction:column;
    animation: slideIn .22s ease;
}
@keyframes slideIn { from { transform: translateX(40px); opacity:.4; } to { transform:none; opacity:1; } }
.slideover-head { padding: 20px 24px 14px; border-bottom:1px solid var(--pac-hair); }
.slideover-body { flex:1; overflow-y:auto; padding: 20px 24px; }

.dl-grid { display: grid; grid-template-columns: 150px 1fr; row-gap: .5rem; column-gap: 1rem; margin: 0; }
.dl-grid dt { font-weight: 500; color: var(--pac-muted); font-size: .82rem; }
.dl-grid dd { margin: 0; color: var(--pac-ink); font-size:.9rem; }
/* En la página completa (720px) los labels respiran más que en el slide-over */
.wb-content-narrow .dl-grid { grid-template-columns: 176px 1fr; row-gap: .55rem; }

/* Detalle de asiento: glosa a ancho completo + pie de adjuntos */
.entry-desc { font-size: .95rem; line-height: 1.6; }
.attach-foot { border-top: 1px dashed var(--pac-border); background: transparent; }

/* ---- 20. Utilidades workbench -------------------------------------- */
.quiet-stats { font-size: .875rem; color: var(--pac-muted); display: flex; gap: .5rem; align-items: baseline; flex-wrap: wrap; }
.quiet-stats .sep { color: #c4cad6; }
.quiet-stats .num { font-family: 'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums; color: #3a4152; font-weight: 600; }

.section-label {
    font-family: 'IBM Plex Mono', monospace; font-size: .7rem; font-weight: 500;
    letter-spacing: .09em; text-transform: uppercase; color: var(--pac-muted);
    margin: 1.4rem 0 .5rem;
}
td.num, th.num { text-align: right; font-family: 'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums; }
.cell-dash { color: #c4cad6; }

.day-band td {
    background: var(--pac-indigo-50) !important; font-family: 'Spectral', Georgia, serif;
    font-weight: 600; color: var(--pac-navy); font-size: .95rem;
}
tr.row-link { cursor: pointer; }

/* Padrón de socios (workbench) */
.member-head { display: grid; grid-template-columns: 44px 1fr 140px 120px 130px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.member-row { display: grid; grid-template-columns: 44px 1fr 140px 120px 130px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 10px 14px; cursor: pointer; }
.member-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.member-row:last-of-type { border-radius: 0 0 10px 10px; }
.member-row:hover { background: #eaf0fd; }
.member-row.inactive .m-name, .member-row.inactive .m-rut { color: #9aa1b0; }
.avatar-ini { width: 34px; height: 34px; border-radius: 50%; background: #eaf0fd; color: #1f3f96;
    font-size: .75rem; font-weight: 600; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.avatar-ini.avatar-lg { width: 52px; height: 52px; font-size: 1rem; }
.avatar-ini.avatar-muted { background: #eef0f3; color: #9aa1b0; }
.m-name { font-size: .9rem; color: #1c2330; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-mail { font-size: .75rem; color: #9aa1b0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-rut { font-family: 'IBM Plex Mono', monospace; font-size: .78rem; color: #5b6373; }
@media (max-width: 767.98px) {
    .member-head { display: none; }
    .member-row { grid-template-columns: 44px 1fr 40px; }
    .member-row > :nth-child(3), .member-row > :nth-child(4), .member-row > :nth-child(5) { display: none; }
}

/* Cuotas y Pagos (workbench) */
.cuo-head { display: grid; grid-template-columns: 1fr 95px 115px 110px 110px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.cuo-row { display: grid; grid-template-columns: 1fr 95px 115px 110px 110px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 9px 14px; cursor: pointer; }
.cuo-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.cuo-row:last-of-type { border-radius: 0 0 10px 10px; }
.cuo-row:hover { background: #eaf0fd; }
.cuo-row .meta { font-size: .82rem; color: #5b6373; }
.cuo-row.cancelled .m-name, .cuo-row.cancelled .entry-amt { color: #9aa1b0; }
@media (max-width: 767.98px) {
    .cuo-head, .cuo-row { grid-template-columns: 1fr 100px 100px 40px; }
    .cuo-head > :nth-child(2), .cuo-head > :nth-child(3),
    .cuo-row > :nth-child(2), .cuo-row > :nth-child(3) { display: none; }
}

/* Cobro de cuotas (workbench) */
.sel-head { display: grid; grid-template-columns: 36px 1fr 130px 110px; gap: 12px; align-items: center;
    background: #f8f9fb; border: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; padding: 9px 14px;
    font-family: 'IBM Plex Mono', monospace; font-size: .66rem; letter-spacing: .1em;
    text-transform: uppercase; color: #7a8294; }
.sel-row { display: grid; grid-template-columns: 36px 1fr 130px 110px; gap: 12px; align-items: center;
    background: #fff; border: 1px solid #e6e8ec; border-top: none; padding: 9px 14px; cursor: pointer; }
.sel-row:last-of-type { border-radius: 0 0 10px 10px; }
.sel-row:hover { background: #eaf0fd; }
.sel-row.done { cursor: default; }
.sel-row.done:hover { background: #fff; }
.sel-row.done .m-name, .sel-row.done .entry-amt { color: #9aa1b0; }
.sel-head input[type="checkbox"], .sel-row input[type="checkbox"] { width: 17px; height: 17px; accent-color: #3b5bb5; }
.cobro-bar { position: sticky; bottom: 12px; z-index: 4; margin-top: 16px; background: #fff;
    border: 1px solid #dfe3ea; border-radius: 12px; padding: 12px 16px; display: flex;
    align-items: center; gap: 14px; box-shadow: 0 12px 32px -12px rgba(28,35,48,.28); }
@media (max-width: 575.98px) {
    .sel-head, .sel-row { grid-template-columns: 36px 1fr 96px; }
    .sel-head > :nth-child(3), .sel-row > :nth-child(3) { display: none; }
}

/* Pedidos (workbench) */
.ped-head { display: grid; grid-template-columns: 130px 1fr 105px 210px 110px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.ped-row { display: grid; grid-template-columns: 130px 1fr 105px 210px 110px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 9px 14px; cursor: pointer; }
.ped-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.ped-row:last-of-type { border-radius: 0 0 10px 10px; }
.ped-row:hover { background: #eaf0fd; }
.ped-row .meta { font-size: .82rem; color: #5b6373; }
.ped-row.cancelled .m-name, .ped-row.cancelled .entry-num, .ped-row.cancelled .entry-amt { color: #9aa1b0; }
.seg { display: inline-flex; border: 1px solid #dfe3ea; border-radius: 9px; background: #fff;
    padding: 3px; gap: 2px; height: 36px; }
.seg button, .seg a { display: inline-flex; align-items: center; border: none; background: transparent;
    border-radius: 6px; padding: 0 12px; font-size: .82rem; color: #5b6373; cursor: pointer;
    text-decoration: none; white-space: nowrap; }
.seg button.on, .seg a.on { background: #eaf0fd; color: #1f3f96; font-weight: 600; }
@media (max-width: 767.98px) {
    .ped-head { display: none; }
    .ped-row { grid-template-columns: 1fr 130px 90px 40px; }
    .ped-row > :nth-child(1), .ped-row > :nth-child(3) { display: none; }
}

/* Órdenes de compra (workbench) */
.po-head { display: grid; grid-template-columns: 130px 1fr 105px 120px 110px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.po-row { display: grid; grid-template-columns: 130px 1fr 105px 120px 110px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 9px 14px; cursor: pointer; }
.po-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.po-row:last-of-type { border-radius: 0 0 10px 10px; }
.po-row:hover { background: #eaf0fd; }
.po-row .meta { font-size: .82rem; color: #5b6373; }
.po-row.cancelled .m-name, .po-row.cancelled .entry-num, .po-row.cancelled .entry-amt { color: #9aa1b0; }
@media (max-width: 767.98px) {
    .po-head { display: none; }
    .po-row { grid-template-columns: 1fr 120px 90px 40px; }
    .po-row > :nth-child(1), .po-row > :nth-child(3) { display: none; }
}

/* Evento: participantes (workbench) */
.evt-head { display: grid; grid-template-columns: 1fr 90px 110px 110px 120px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.evt-row { display: grid; grid-template-columns: 1fr 90px 110px 110px 120px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 9px 14px; cursor: pointer; }
.evt-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.evt-row:last-of-type { border-radius: 0 0 10px 10px; }
.evt-row:hover { background: #eaf0fd; }
@media (max-width: 767.98px) {
    .evt-head { display: none; }
    .evt-row { grid-template-columns: 1fr 120px 40px; }
    .evt-row > :nth-child(2), .evt-row > :nth-child(3), .evt-row > :nth-child(4) { display: none; }
}

/* Eventos: lista (workbench) */
.evl-head { display: grid; grid-template-columns: 1fr 150px 110px 120px 100px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.evl-row { display: grid; grid-template-columns: 1fr 150px 110px 120px 100px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 9px 14px; cursor: pointer; }
.evl-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.evl-row:last-of-type { border-radius: 0 0 10px 10px; }
.evl-row:hover { background: #eaf0fd; }
.evl-row.inactive .m-name { color: #9aa1b0; }
@media (max-width: 767.98px) {
    .evl-head { display: none; }
    .evl-row { grid-template-columns: 1fr 100px 40px; }
    .evl-row > :nth-child(2), .evl-row > :nth-child(3), .evl-row > :nth-child(4) { display: none; }
}

/* Documentos tributarios: lista (workbench) */
.fac-head { display: grid; grid-template-columns: 80px 44px 1fr 105px 150px 120px 40px; gap: 12px;
    align-items: center; padding: 6px 14px; font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
    letter-spacing: .1em; text-transform: uppercase; color: #9aa1b0; }
.fac-row { display: grid; grid-template-columns: 80px 44px 1fr 105px 150px 120px 40px; gap: 12px;
    align-items: center; background: #fff; border: 1px solid #e6e8ec; border-top: none;
    padding: 9px 14px; cursor: pointer; }
.fac-row:first-of-type { border-top: 1px solid #e6e8ec; border-radius: 10px 10px 0 0; }
.fac-row:last-of-type { border-radius: 0 0 10px 10px; }
.fac-row:hover { background: #eaf0fd; }
.fac-row .meta { font-size: .82rem; color: #5b6373; }
.fac-tipo { font-family: 'IBM Plex Mono', monospace; font-size: .8rem; color: #5b6373; }
@media (max-width: 767.98px) {
    .fac-head { display: none; }
    .fac-row { grid-template-columns: 1fr 120px 90px 40px; }
    .fac-row > :nth-child(1), .fac-row > :nth-child(2), .fac-row > :nth-child(4) { display: none; }
}

/* Modal de confirmación (tema workbench sobre el modal Bootstrap) */
.wb-modal .modal-dialog { max-width: 480px; }
.wb-modal .modal-content { border: none; border-radius: 14px; box-shadow: 0 24px 64px -20px rgba(28,35,48,.5); }
.wb-modal .modal-header { border-bottom: none; padding: 20px 24px 0; align-items: flex-start; }
.wb-modal .modal-body { padding: 14px 24px 0; }
.wb-modal .modal-footer { border-top: none; padding: 18px 24px 20px; }

/* Documento DTE tipo factura — detalle S3 (borrador) / S9 (emitida) */
.doc-card { overflow: hidden; }
.doc-card .table > thead > tr:first-child > th:first-child,
.doc-card .table > thead > tr:first-child > th:last-child { border-radius: 0; }
.doc-head {
    background: var(--pac-navy); color: #fff; padding: 22px 28px;
    display: flex; justify-content: space-between; align-items: flex-start; gap: 24px;
    border-radius: var(--pac-radius-lg) var(--pac-radius-lg) 0 0;
}
.doc-head .doc-emitter-name { font-family: 'Spectral', Georgia, serif; font-weight: 600; font-size: 1.25rem; }
.doc-head .doc-emitter-sub { font-size: .82rem; color: rgba(255,255,255,.75); margin-top: 4px; line-height: 1.5; }
.doc-head .doc-acteco { font-family: var(--pac-font-mono); font-size: .72rem; color: rgba(255,255,255,.6); margin-top: 6px; }
.doc-sii-box {
    border: 2px solid rgba(255,255,255,.85); border-radius: var(--pac-radius);
    padding: 12px 18px; text-align: center; flex-shrink: 0;
}
.doc-sii-box .rut { font-family: var(--pac-font-mono); font-size: .75rem; letter-spacing: .06em; }
.doc-sii-box .doc-type { font-family: 'Spectral', Georgia, serif; font-weight: 600; font-size: .95rem; margin: 4px 0; }
.doc-sii-box .folio { font-family: var(--pac-font-mono); font-size: .75rem; }
.doc-sii-box .folio.assigned { font-size: .85rem; font-weight: 600; }
.doc-sii-box .office {
    font-family: var(--pac-font-mono); font-size: .62rem; margin-top: 6px; padding-top: 6px;
    border-top: 1px solid rgba(255,255,255,.4); color: rgba(255,255,255,.8);
}
.doc-recv {
    padding: 18px 28px; border-bottom: 1px solid var(--pac-hair);
    display: grid; grid-template-columns: 1fr 1fr; gap: 6px 32px; font-size: .88rem;
}
.doc-recv .lbl { color: var(--pac-muted); }
.doc-totals { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; padding: 14px 28px 20px; flex-wrap: wrap; }
.doc-totals .sums { width: 280px; margin-left: auto; }
@media (max-width: 575.98px) {
    .doc-head { flex-direction: column; }
    .doc-recv { grid-template-columns: 1fr; }
}

/* Líneas de suma (Neto / IVA / Total) */
.sum-line { display: flex; justify-content: space-between; align-items: baseline; padding: 3px 0; font-size: .88rem; }
.sum-line .lbl { color: var(--pac-indigo); }
.sum-line .val { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; }
.sum-line.grand { border-top: 1px solid var(--pac-hair); margin-top: 6px; padding-top: 10px; }
.sum-line.grand .lbl { font-family: 'Spectral', Georgia, serif; font-weight: 600; font-size: 1rem; color: var(--pac-ink); }
.sum-line.grand .val { font-weight: 600; font-size: 1.02rem; }

/* Subtarjeta dentro de formularios y modales */
.form-subcard { background: var(--pac-tint); border: 1px solid var(--pac-hair); border-radius: var(--pac-radius); padding: 12px 14px; }

/* Timeline (historial del documento) */
ul.tl { list-style: none; margin: 0; padding: 0; }
.tl li { position: relative; padding: 0 0 16px 26px; }
.tl li:last-child { padding-bottom: 0; }
.tl li:not(:last-child)::before { content: ""; position: absolute; left: 6px; top: 18px; bottom: 4px; width: 1px; background: var(--pac-hair); }
.tld { position: absolute; left: 0; top: 3px; width: 13px; height: 13px; border-radius: 50%; border: 2px solid var(--pac-muted); background: var(--pac-surface); }
.tld.ok { border-color: var(--pac-success); }
.tld.bad { border-color: var(--pac-danger); }
.tl .when { display: block; font-family: var(--pac-font-mono); font-size: .7rem; color: var(--pac-muted); margin-top: 3px; }

/* Documento de reporte: la página hace el scroll (sin scroll interno). El thead se
   fija justo bajo la barra superior fija (.wb-top mide 56px) al hacer scroll.
   Nota: .wb-doc-scroll no debe establecer un contenedor de scroll (overflow), o el
   sticky se anclaría a él en vez de al viewport. Eso incluye combinarlo con
   .table-responsive (overflow-x: auto): el header se desplazaría 56px dentro del
   div y quedaría superpuesto sobre las primeras filas. La regla de abajo neutraliza
   esa combinación por si se reintroduce en alguna vista. */
.wb-doc-scroll thead th { position: sticky; top: var(--wb-top-h); z-index: 3; }
.wb-doc-scroll.table-responsive { overflow: visible; }
.wb-total-row th {
    background: var(--pac-navy); color: #fff;
    font-family: 'Spectral', Georgia, serif;
}
.wb-total-row th.num { font-family: 'IBM Plex Mono', monospace; }

/* Reportes financieros: tarjetas de resumen, estado y bandas de grupo */
.rpt-tiles { display: flex; gap: 14px; padding: 20px 22px; border-bottom: 1px solid var(--pac-hair); flex-wrap: wrap; }
.rpt-tile { flex: 1; min-width: 150px; border: 1px solid var(--pac-hair); border-radius: 12px; padding: 14px 18px; }
.rpt-tile .lbl { font-family: 'IBM Plex Mono', monospace; font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; color: var(--pac-muted); margin-bottom: 6px; }
.rpt-tile .val { font-family: 'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums; font-size: 1.35rem; font-weight: 600; color: var(--pac-ink); }
.rpt-tile.is-loss { border-color: #f0d9d9; background: #fbf3f3; }
.rpt-tile.is-loss .lbl { color: #a86a6a; }
.rpt-tile.is-loss .val { color: var(--pac-danger); }
.rpt-tile.is-profit .val { color: var(--pac-success); }
.rpt-eq { align-self: center; font-family: 'Spectral', Georgia, serif; font-size: 1.6rem; font-weight: 500; color: #c4cad6; }

.acct-code { font-family: 'IBM Plex Mono', monospace; font-size: .82rem; color: var(--pac-indigo); margin-right: .5rem; }
td.pct, th.pct { text-align: right; font-family: 'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums; color: var(--pac-muted); font-size: .8rem; }
.amt-neg { color: var(--pac-danger); }
.row-indent > td:first-child { padding-left: 2rem; }
.grand-pill { display: inline-block; font-family: 'IBM Plex Mono', monospace; font-size: .6rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 3px 9px; border-radius: 20px; color: #fff; margin-left: .6rem; }
.grand-pill.loss { background: rgba(178,58,58,.85); }
.grand-pill.profit { background: rgba(31,138,91,.85); }

/* Banda de grupo con meta a la derecha (balanza) */
.band-flex { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.band-count { font-family: 'IBM Plex Mono', monospace; font-size: .72rem; font-weight: 500; color: #7186ab; }
.band-meta { font-family: 'IBM Plex Mono', monospace; font-size: .68rem; font-weight: 500; letter-spacing: .04em; color: var(--pac-muted); }

/* Empty validation-summary placeholder (asp-validation-summary="All" renders it even
   without errors so client-side validation can fill it) — hide until it has content */
.validation-summary-valid { display: none; }

/* ---- 24. Product picker (combobox asíncrono, product-picker.js) ------ */
.product-picker { position: relative; }
.product-picker .pp-menu { width: 100%; max-height: 280px; overflow-y: auto; margin-top: 2px; }
.product-picker .pp-item { white-space: normal; padding-top: .35rem; padding-bottom: .35rem; }

/* Movimientos dentro del panel de cuenta */
.mov-row { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border-bottom: 1px solid #f2f4f7; text-decoration: none; }
.mov-row:last-child { border-bottom: none; }
.mov-row:hover { background: #f7f9fc; }
.mov-date { font-family: 'IBM Plex Mono', monospace; font-size: .72rem; color: var(--pac-muted); width: 46px; flex: 0 0 auto; }
.mov-body { flex: 1; min-width: 0; }
.mov-glosa { font-size: .82rem; color: var(--pac-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mov-ref { font-family: 'IBM Plex Mono', monospace; font-size: .68rem; color: var(--pac-indigo); margin-top: 2px; }
.mov-amt { font-family: 'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums; font-size: .82rem; font-weight: 500; color: var(--pac-ink); flex: 0 0 auto; text-align: right; }
.mov-tag { font-family: 'IBM Plex Mono', monospace; font-size: .6rem; letter-spacing: .04em; text-transform: uppercase; color: var(--pac-muted); display: block; }

/* ---- 21. Chat rail (asistente IA) ---------------------------------- */
.chat-rail { width:336px; flex-shrink:0; border-left:1px solid var(--pac-hair); background:#fff; position:sticky; top:var(--wb-top-h); height:calc(100vh - var(--wb-top-h)); align-self:flex-start; display:none; flex-direction:column; }
body.wb-rail-open .chat-rail { display:flex; }
.chat-head { padding:12px 16px; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--pac-hair); }
.chat-ctx { display:inline-block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-family:'IBM Plex Mono',monospace; font-size:.66rem; color:var(--pac-indigo); background:#eaf0fd; border-radius:999px; padding:2px 8px; margin-top:2px; }
.chat-body { flex:1; overflow-y:auto; padding:16px; display:flex; flex-direction:column; gap:10px; }
.chat-msg { max-width:84%; padding:9px 12px; border-radius:12px; font-size:.875rem; line-height:1.45; }
.chat-msg.user { align-self:flex-end; background:var(--pac-indigo); color:#fff; border-bottom-right-radius:4px; white-space:pre-wrap; }
.chat-msg.ai { align-self:flex-start; background:#f1f3f7; color:var(--pac-ink); border-bottom-left-radius:4px; }
.chat-msg.ai > :last-child { margin-bottom: 0; }
.chat-chip { border:1px solid var(--pac-border); background:#fff; border-radius:999px; padding:7px 12px; font-size:.8rem; color:var(--pac-indigo); cursor:pointer; text-align:left; }
.chat-chip:hover { background:#eaf0fd; }
.chat-foot { border-top:1px solid var(--pac-hair); padding:10px; display:flex; gap:8px; }
.chat-send { width:40px; height:38px; flex-shrink:0; border:none; border-radius:9px; background:var(--pac-navy); color:#fff; }
.chat-send:hover { background:var(--pac-navy-700); }

/* Markdown dentro de burbujas del chat (compartido página + rail) */
.chat-md > *:first-child { margin-top: 0; }
.chat-md > *:last-child { margin-bottom: 0; }
.chat-md ul, .chat-md ol { padding-left: 1.25rem; margin-bottom: .5rem; }
.chat-md pre { background: #f6f8fa; padding: .5rem .75rem; border-radius: .375rem; overflow-x: auto; margin-bottom: .5rem; }
.chat-md code { background: rgba(175,184,193,.2); padding: .1rem .3rem; border-radius: .25rem; font-size: .875em; }
.chat-md pre code { background: none; padding: 0; }
.chat-md table { border-collapse: collapse; margin-bottom: .5rem; font-size: .9em; }
.chat-md th, .chat-md td { border: 1px solid #dee2e6; padding: .25rem .5rem; }
.chat-md p { margin-bottom: .5rem; }

/* Enlace a una pantalla del sistema propuesto por el asistente. La clase la pone
   AssistantLinkGuard al renderizar, solo sobre rutas que existen en el catálogo del usuario,
   así que se puede presentar como botón sin riesgo de ofrecer un camino muerto.
   Vive solo aquí (no en el <style> de Assistant/Index): site.css es global y sirve
   igual a la página del chat y al rail. */
.chat-md a.assistant-action {
    display: inline-flex; align-items: center; gap: .35rem;
    padding: .15rem .55rem; border-radius: 999px;
    background: var(--pac-tint); border: 1px solid var(--pac-hair);
    color: var(--pac-navy); text-decoration: none; font-weight: 500; white-space: nowrap;
}
.chat-md a.assistant-action::before { content: "\F138"; font-family: "bootstrap-icons"; font-size: .8em; }
.chat-md a.assistant-action:hover { background: #fff; border-color: var(--pac-navy); }

/* ---- 22. Responsive workbench -------------------------------------- */
@media (max-width: 991.98px) {
    /* Dentro del drawer offcanvas el sidebar ocupa todo el panel */
    .wb-side { position: static; width: 100%; height: 100%; border-right: none; }
    .wb-content, .wb-content-narrow, .wb-content-wide { padding: 16px; }
    .wb-top { padding: 0 12px; gap: 10px; }
}
@media (max-width: 1199.98px) {
    /* El rail se superpone en pantallas medianas en vez de acoplarse */
    body.wb-rail-open .chat-rail {
        position: fixed; top: 0; right: 0; height: 100vh; z-index: 1045;
        box-shadow: -24px 0 60px -24px rgba(28,35,48,.5);
    }
}

/* ---- 23. Impresión (workbench) ------------------------------------- */
@media print {
    .wb-side, .wb-top, .chat-rail, .offcanvas-lg, .btn-kebab, .manual-top, .manual-toc { display: none !important; }
    .wb-content, .wb-content-narrow, .wb-content-wide { max-width: none; padding: 0; margin: 0; }
    .wb-doc-scroll { max-height: none; overflow: visible; }
    .wb-doc-scroll thead th { position: static; }
}

/* ============================================================
   24. Carpeta de Importación — Detalle (rediseño hifi)
   Handoff: estilo/design_handoff_carpeta_importacion.
   Pipeline + tarjetas de ciclo + hero navy + actividad por día.
   ============================================================ */
:root {
    --pac-navy-900:  #131a2c;
    --pac-indigo-600:#2b4488;
    --pac-faint:     #9aa1b0;
    --pac-ghost:     #c4cad6;
    /* Badges tintados suaves (bg/fg) */
    --pac-success-bg:#e5f3ec; --pac-success-fg:#1a6b45;
    --pac-danger-bg: #f7e7e7; --pac-danger-fg: #9c2f2f;
    --pac-warning-bg:#f9efd6; --pac-warning-fg:#8a6410;
    --pac-info-bg:   #e3eef8; --pac-info-fg:   #235c96;
    --pac-neutral-bg:#eceef2; --pac-neutral-fg:#4b5362;
    --pac-font-serif:'Spectral', Georgia, 'Times New Roman', serif;
    --pac-shadow-card: 0 1px 2px rgba(28,35,48,.04), 0 8px 24px -18px rgba(28,35,48,.25);
}

/* Badges tintados reutilizables */
.badge-soft { display: inline-flex; align-items: center; gap: 5px; font-size: .66rem; font-weight: 600; padding: 2px 8px; border-radius: 20px; line-height: 1.5; }
.badge-soft-success { background: var(--pac-success-bg); color: var(--pac-success-fg); }
.badge-soft-danger  { background: var(--pac-danger-bg);  color: var(--pac-danger-fg); }
.badge-soft-warning { background: var(--pac-warning-bg); color: var(--pac-warning-fg); }
.badge-soft-info    { background: var(--pac-info-bg);    color: var(--pac-info-fg); }
.badge-soft-neutral { background: var(--pac-neutral-bg); color: var(--pac-neutral-fg); }

/* ---- Encabezado ---- */
.imp-crumb { font-size: .8rem; color: var(--pac-muted); margin-bottom: 8px; }
.imp-crumb a { color: var(--pac-muted); }
.imp-crumb .sep { color: var(--pac-ghost); }
.imp-title { margin: 0; }  /* size/weight/family from the app's base h2 rule → matches every page title */
.imp-subtitle { margin-top: 6px; font-size: .875rem; color: var(--pac-ink-2); }
.imp-subtitle .muted { color: var(--pac-muted); }
.imp-status { display: inline-flex; align-items: center; gap: 6px; font-size: .72rem; font-weight: 600; padding: 4px 11px; border-radius: 20px; }
.imp-status-open { background: var(--pac-info-bg); color: var(--pac-info-fg); }
.imp-status-open .dot { width: 6px; height: 6px; border-radius: 50%; background: #2b6cb0; }
.imp-status-closed { background: var(--pac-neutral-bg); color: var(--pac-neutral-fg); }
.imp-readonly { font-size: .72rem; color: var(--pac-faint); display: inline-flex; align-items: center; gap: 5px; }

/* ---- Pipeline "Progreso de la operación" ---- */
.imp-pipeline { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); padding: 18px 20px 16px; margin: 20px 0 22px; }
.imp-overline { font-family: var(--pac-font-mono); font-size: .66rem; letter-spacing: .09em; text-transform: uppercase; color: var(--pac-faint); }
.imp-steps { display: flex; align-items: flex-start; margin-top: 14px; }
.imp-step { flex: 1; position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; }
.imp-step .bar { position: absolute; top: 14px; left: -50%; width: 100%; height: 2px; z-index: 0; }
.imp-step .bar.bar-done { background: var(--pac-success); }
.imp-step .bar.bar-grad { background: linear-gradient(90deg, #1f8a5b, #e6b23a); }
.imp-step .bar.bar-pending { background: var(--pac-hair); }
.imp-step .dot { width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: 1; background: var(--pac-surface); border: 2px solid var(--pac-hair); color: var(--pac-faint); font-size: .8rem; }
.imp-step.is-done .dot { background: var(--pac-success); border-color: var(--pac-success); color: #fff; }
.imp-step.is-current .dot { background: var(--pac-warning-bg); border-color: var(--pac-warning); color: var(--pac-warning-fg); }
.imp-step.is-pending.is-cierre .dot { background: var(--pac-surface); border: 2px dashed var(--pac-indigo); color: var(--pac-indigo); }
.imp-step-label { font-size: .72rem; font-weight: 600; color: var(--pac-ink); margin-top: 8px; }
.imp-step.is-current .imp-step-label { color: var(--pac-warning-fg); }
.imp-step.is-pending.is-cierre .imp-step-label { color: var(--pac-indigo); }
.imp-step.is-pending:not(.is-cierre) .imp-step-label { color: var(--pac-faint); }

/* ---- Cuerpo en 2 columnas ---- */
.imp-body { display: grid; grid-template-columns: 1fr 264px; gap: 20px; align-items: start; }

/* Columna izquierda — línea de tiempo del ciclo */
.imp-cycle { position: relative; padding-left: 34px; }
.imp-cycle::before { content: ""; position: absolute; left: 14px; top: 8px; bottom: 8px; width: 2px; background: var(--pac-hair); }
.imp-node { position: relative; margin-bottom: 14px; }
.imp-node:last-child { margin-bottom: 0; }
.imp-node-dot { position: absolute; left: -34px; top: 2px; width: 29px; height: 29px; border-radius: 50%; background: var(--pac-surface); border: 2px solid var(--pac-success); display: flex; align-items: center; justify-content: center; color: var(--pac-success); font-size: .8rem; }
.imp-card { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 11px; box-shadow: var(--pac-shadow-card); padding: 13px 16px; }
.imp-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 9px; }
.imp-card-title { font-family: var(--pac-font-serif); font-weight: 600; font-size: 1rem; color: var(--pac-ink); }
.imp-card-note { font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-muted); }
.imp-card-total { font-family: var(--pac-font-mono); font-size: .85rem; font-weight: 600; color: var(--pac-navy); }
.imp-ghost { border: 1px solid var(--pac-border); background: var(--pac-surface); color: var(--pac-indigo); font-size: .8rem; font-weight: 600; padding: 4px 10px; border-radius: 7px; line-height: 1.3; display: inline-flex; align-items: center; gap: 5px; text-decoration: none; }
.imp-ghost:hover { color: var(--pac-indigo-600); border-color: var(--pac-indigo); }
.imp-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: .875rem; padding: 4px 0; }
.imp-row + .imp-row { border-top: 1px solid var(--pac-tint); }
.imp-row .left { display: flex; align-items: center; gap: 9px; min-width: 0; }
.imp-row .left .sub { color: var(--pac-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.imp-row .right { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.imp-code { font-family: var(--pac-font-mono); font-size: .82rem; }
.imp-cost-type { color: var(--pac-ink); white-space: nowrap; }
.imp-amt { font-family: var(--pac-font-mono); font-size: .85rem; color: var(--pac-ink); }
.imp-node.imp-node-pay .imp-card { background: #fffdf6; border-color: #ecd9a8; }
.imp-node.imp-node-pay .imp-node-dot { background: var(--pac-warning-bg); border-color: var(--pac-warning); color: var(--pac-warning-fg); }
.imp-pay-figures { display: flex; align-items: center; gap: 18px; font-size: .82rem; flex-wrap: wrap; }
.imp-pay-figures .k { color: var(--pac-muted); }
.imp-pay-figures .v { font-family: var(--pac-font-mono); color: var(--pac-ink); }
.imp-pay-figures .saldo { margin-left: auto; }
.imp-pay-figures .saldo .k, .imp-pay-figures .saldo .v { color: var(--pac-warning-fg); font-weight: 600; }
.imp-linkable { margin-top: -6px; margin-bottom: 14px; }
.imp-empty { color: var(--pac-muted); font-size: .875rem; }

/* Columna derecha — resumen navy + cierre (sticky) */
.imp-aside { display: flex; flex-direction: column; gap: 14px; position: sticky; top: 16px; }
.imp-summary { border-radius: 12px; box-shadow: var(--pac-shadow-card); overflow: hidden; }
.imp-hero { background: var(--pac-navy); color: #fff; padding: 15px 18px 12px; }
.imp-hero .ovl { font-family: var(--pac-font-mono); font-size: .66rem; letter-spacing: .09em; text-transform: uppercase; color: #9fb0d6; }
.imp-hero .fig { font-family: var(--pac-font-mono); font-size: 1.6rem; font-weight: 600; margin-top: 4px; line-height: 1.1; }
.imp-hero .sub { font-family: var(--pac-font-mono); font-size: .72rem; color: #9fb0d6; margin-top: 3px; }
.imp-hero-body { background: var(--pac-surface); color: var(--pac-ink); padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.imp-sline { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.imp-sline .k { font-size: .82rem; color: var(--pac-ink-2); }
.imp-sline .v { font-family: var(--pac-font-mono); font-size: .85rem; color: var(--pac-ink); text-align: right; }
.imp-sline.rule { padding-top: 7px; border-top: 1px solid #eef0f3; }
.imp-sline.grand .k { font-family: var(--pac-font-serif); font-size: .95rem; font-weight: 600; color: var(--pac-ink); }
.imp-sline.grand .v { font-size: 1rem; font-weight: 600; color: var(--pac-navy); }
.imp-sline .v.warn { color: var(--pac-warning-fg); font-weight: 600; }
.imp-sline .v.muted { color: var(--pac-ink-2); }
.imp-sline .foot { font-size: .72rem; color: var(--pac-muted); font-family: var(--pac-font-body); }

/* Cierre */
.imp-close { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); padding: 14px 16px; }
.imp-close .banner { display: flex; gap: 9px; align-items: flex-start; border-radius: 9px; padding: 10px 12px; margin-bottom: 12px; font-size: .82rem; line-height: 1.45; }
.imp-close .banner.ok { background: var(--pac-success-bg); color: var(--pac-success-fg); }
.imp-close .banner.neutral { background: var(--pac-bg); border: 1px solid var(--pac-hair); color: var(--pac-ink); }
.imp-close .banner.warn { background: var(--pac-warning-bg); color: var(--pac-warning-fg); flex-direction: column; }
.imp-close .banner .meta { font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-muted); margin-top: 2px; }
.imp-btn-navy { width: 100%; border: none; background: var(--pac-navy); color: #fff; font-size: .875rem; font-weight: 600; padding: 11px; border-radius: 9px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.imp-btn-navy:hover { background: var(--pac-navy-700); }
.imp-btn-ghost { width: 100%; border: 1px solid var(--pac-border); background: var(--pac-surface); color: var(--pac-indigo); font-size: .875rem; font-weight: 600; padding: 10px; border-radius: 9px; cursor: pointer; }
.imp-btn-ghost:hover { border-color: var(--pac-indigo); color: var(--pac-indigo-600); }

/* ---- Actividad de la carpeta (bitácora por día) ---- */
.imp-activity { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); overflow: hidden; margin-top: 16px; }
.imp-activity-head { display: flex; align-items: center; gap: 9px; padding: 13px 18px; border-bottom: 1px solid #eef0f3; }
.imp-activity-head .ttl { font-family: var(--pac-font-serif); font-weight: 600; font-size: 1rem; color: var(--pac-ink); }
.imp-activity-head .count { font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-muted); background: var(--pac-neutral-bg); padding: 1px 7px; border-radius: 10px; }
.imp-activity-head .far { margin-left: auto; font-size: .8rem; color: var(--pac-faint); }
.imp-activity-body { padding: 4px 18px 14px; }
.imp-day { margin-top: 10px; }
.imp-day-head { display: flex; align-items: center; gap: 10px; margin-bottom: 2px; }
.imp-day-head .date { font-family: var(--pac-font-mono); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--pac-ink-2); font-weight: 600; }
.imp-day-head .rule { flex: 1; height: 1px; background: #eef0f3; }
.imp-day-head .n { font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-faint); }
.imp-events { position: relative; padding-left: 2px; }
.imp-events::before { content: ""; position: absolute; left: 9px; top: 14px; bottom: 14px; width: 2px; background: #e2e6ee; }
.imp-event { position: relative; padding: 8px 0 8px 30px; }
.imp-event::before { content: ""; position: absolute; left: 4px; top: 11px; width: 12px; height: 12px; border-radius: 50%; background: var(--pac-surface); border: 2px solid var(--pac-success); box-sizing: border-box; }
.imp-event.expected::before { border-color: var(--pac-faint); }
.imp-event .line { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
.imp-event .ttl { font-size: .875rem; color: var(--pac-ink); line-height: 1.4; }
.imp-event .ttl .det { color: var(--pac-muted); }
.imp-event .actor { display: block; font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-faint); margin-top: 2px; }
.imp-event .when { flex: 0 0 auto; font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-faint); }

/* ---- Proceso de venta (design_handoff_proceso_venta) — reuses the imp-* process components;
   only the ventas-specific variants live here so both processes read identical ---- */
.imp-status-paid { background: var(--pac-success-bg); color: var(--pac-success-fg); }
.imp-status-due { background: var(--pac-warning-bg); color: var(--pac-warning-fg); }
.imp-status-due .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--pac-warning); }
.imp-event.err::before { border-color: var(--pac-danger); }
.imp-event.muted::before { border-color: var(--pac-ghost); }
.imp-panel { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); padding: 14px 16px; }
.imp-dl { display: grid; grid-template-columns: 88px 1fr; row-gap: .6rem; column-gap: .75rem; margin: 0; }
.imp-dl dt { font-size: .78rem; font-weight: 400; color: var(--pac-ink-2); }
.imp-dl dd { margin: 0; font-size: .82rem; color: var(--pac-ink); overflow-wrap: anywhere; }
.imp-dl dd.big { font-family: var(--pac-font-serif); font-weight: 600; font-size: .9rem; line-height: 1.3; }

@media (max-width: 767.98px) {
    .imp-body { grid-template-columns: 1fr; }
    .imp-aside { position: static; }
    .imp-steps { overflow-x: auto; }
    .imp-step { min-width: 78px; }
}

/* ── Manual de usuario (visor in-app) ─────────────────────────────────────────
   El ancla de una cita del asistente aterriza con scroll-margin-top: sin esto
   la sección queda tapada por la barra superior fija (.wb-top mide 56px). */
.manual-section, h2#inicio { scroll-margin-top: 72px; }
.manual-section:target > h3,
.manual-section:target > h4 { color: var(--pac-accent); }

/* "Volver arriba" en cada sección de primer nivel. Discreto: aparece al pasar el mouse por el
   encabezado, pero TAMBIÉN al enfocarlo con el teclado — un control que solo existe con hover deja
   fuera a quien navega con Tab. */
.manual-heading { display: flex; align-items: baseline; gap: .5rem; }
.manual-top {
    margin-left: auto; flex-shrink: 0; line-height: 1;
    font-size: 1.25rem; color: var(--pac-ink-2); text-decoration: none;
    opacity: 0; transition: opacity .15s ease-in-out;
}
.manual-heading:hover .manual-top,
.manual-top:focus-visible { opacity: 1; }
.manual-top:hover { color: var(--pac-accent); }

@media (hover: none) {
    /* Sin mouse no hay hover que revele nada: en táctil se muestra siempre, atenuado. */
    .manual-top { opacity: .45; }
}

.manual-body { font-size: .93rem; line-height: 1.65; }
.manual-body h3 { font-family: var(--pac-font-serif); }
.manual-body p, .manual-body ul, .manual-body ol { margin-bottom: .85rem; }
.manual-body li { margin-bottom: .25rem; }
.manual-body code { background: var(--pac-ghost); padding: .1rem .3rem; border-radius: 4px; font-size: .86em; }

/* Markdig emite <table> pelado: le damos el aspecto de .table .table-sm. */
.manual-body table { width: 100%; margin: 0 0 1rem; border-collapse: collapse; font-size: .86rem; }
.manual-body th, .manual-body td { padding: .4rem .6rem; border-bottom: 1px solid var(--pac-hair); text-align: left; vertical-align: top; }
.manual-body thead th { border-bottom: 2px solid var(--pac-border); font-weight: 600; white-space: nowrap; }
.manual-body tbody tr:last-child td { border-bottom: 0; }

/* Flows with the page: pinning it would need its own scrollbar on a long chapter, and the shell
   deliberately has none. */
.manual-toc .list-group-item { background: transparent; }
.manual-toc .list-group-item:hover { color: var(--pac-accent); }

/* ============================================================
   25. Panel de Tesorería (rediseño hifi)
   Handoff: estilo/design_handoff_tesoreria — posición (cuentas),
   compromisos con bancos (banda navy + gráfico + cuotas
   aplanadas) y pagos críticos (CxP).
   ============================================================ */
.tes { max-width: 1120px; margin: 0 auto; }
.tes h1 { font-size: 1.7rem; font-weight: 700; margin: 0; }
.tes .mono { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; }
.tes .sub { font-size: .72rem; color: var(--pac-muted); }
.tes .hstat { font-size: .85rem; color: var(--pac-ink-2); }
.tes .hstat b { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--pac-ink); }
.tes .hstat .sep { color: var(--pac-ghost); margin: 0 6px; }
.tes-grid { display: grid; grid-template-columns: 1fr 1.06fr; gap: 20px; align-items: start; margin-top: 22px; }
@media (max-width: 1100px) { .tes-grid { grid-template-columns: 1fr; } }

/* Tarjeta del panel */
.tcard { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); overflow: hidden; }
.tcard-head { display: flex; align-items: baseline; gap: 10px; padding: 13px 18px; border-bottom: 1px solid var(--pac-hair); }
.tcard-title { font-family: var(--pac-font-serif); font-weight: 600; font-size: .98rem; color: var(--pac-ink); display: inline-flex; align-items: center; gap: 8px; }
.tcard-title i { color: var(--pac-faint); font-size: .9rem; }
.tcard-link { margin-left: auto; font-size: .78rem; white-space: nowrap; }
.tcard-foot { padding: 9px 18px; border-top: 1px solid var(--pac-hair); background: var(--pac-tint); font-size: .74rem; color: var(--pac-muted); display: flex; justify-content: space-between; gap: 10px; }
.tcard-empty { padding: 28px 18px; text-align: center; color: var(--pac-muted); font-size: .84rem; }

/* Tabla del panel: thead navy, filas con divisores finos */
table.ptable { width: 100%; margin: 0; border-collapse: collapse; }
.ptable thead th { background: var(--pac-navy); color: #fff; font-family: var(--pac-font-mono); font-size: .62rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; padding: 8px 18px; white-space: nowrap; }
.ptable tbody td { padding: 11px 18px; font-size: .84rem; border-top: 1px solid var(--pac-hair); vertical-align: middle; }
.ptable tbody tr:first-child td { border-top: none; }
.ptable tbody tr:hover { background: var(--pac-indigo-50); }
.ptable .num { text-align: right; font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; }
.acct-link { font-weight: 600; color: var(--pac-indigo); text-decoration: none; }
.acct-link:hover { color: var(--pac-indigo-600); text-decoration: underline; }

/* Banda navy: deuda bancaria total */
.sum-navy { background: var(--pac-navy); color: #fff; padding: 16px 18px; }
.sum-navy .overline { font-family: var(--pac-font-mono); font-size: .62rem; letter-spacing: .09em; text-transform: uppercase; color: #8fa0c8; }
.sum-navy a { color: #c3d0ec; font-size: .76rem; }
.sum-navy a:hover { color: #fff; }
.sum-navy .big { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-size: 1.85rem; font-weight: 600; line-height: 1.1; margin-top: 6px; }
.sum-navy .foot { font-size: .72rem; color: #9fb0d6; margin-top: 6px; }

/* Tarjeta Proyección de caja: línea del quiebre (extracto del forecast 13 semanas) */
.tes .proj-alert { display: flex; align-items: center; gap: 8px; margin: 10px 16px 0; padding: 8px 12px; border-radius: 8px; background: var(--pac-warning-bg); color: var(--pac-warning-fg); font-size: .8rem; }
.tes .proj-alert i { font-size: .9rem; }

/* Lista de cuotas aplanada entre créditos */
.cuota { display: grid; grid-template-columns: 46px 1fr auto auto; gap: 14px; align-items: center; padding: 11px 18px; border-top: 1px solid var(--pac-hair); }
.cuota:first-of-type { border-top: none; }
.cuota:hover { background: var(--pac-indigo-50); }
.cuota .date { text-align: center; line-height: 1.1; }
.cuota .date .d { font-family: var(--pac-font-mono); font-size: 1.05rem; font-weight: 600; color: var(--pac-ink); display: block; }
.cuota .date .m { font-family: var(--pac-font-mono); font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; color: var(--pac-muted); }
.cuota.late .date .d, .cuota.late .date .m { color: var(--pac-danger); }
.cuota .who { min-width: 0; }
.cuota .who .cr { font-size: .84rem; color: var(--pac-ink); }
.cuota .who .cr a { font-family: var(--pac-font-mono); font-size: .78rem; font-weight: 600; color: var(--pac-indigo); text-decoration: none; }
.cuota .who .cr a:hover { text-decoration: underline; }
.cuota .amt { text-align: right; }
.cuota .amt .v { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-size: .9rem; font-weight: 600; color: var(--pac-ink); display: block; }
.btn-pagar { font-size: .74rem; padding: 3px 12px; }

/* ============================================================
   26. Reportes de Tesorería — shell compartido (rediseño hifi)
   Handoff: estilo/design_handoff_tesoreria. `.trep` es el shell
   común (CxP `.cxp` y Proyección de Flujo `.flx`): encabezado,
   tarjeta de reporte con membrete y tabla `.rtab`. El thead
   sticky lo aporta el wrapper .wb-doc-scroll (sección 23).
   ============================================================ */
.trep { max-width: 1120px; margin: 0 auto; }
.trep h1 { font-size: 1.7rem; font-weight: 700; margin: 0; }
.trep .crumb { font-size: .75rem; color: var(--pac-muted); margin-bottom: 4px; }
.trep .crumb a { color: var(--pac-muted); }
.trep .mono { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; }
.trep .sub { font-size: .72rem; color: var(--pac-muted); }
.trep .hstat { font-size: .85rem; color: var(--pac-ink-2); }
.trep .hstat b { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--pac-ink); }
.trep .hstat .sep { color: var(--pac-ghost); margin: 0 6px; }
.trep .neg { color: var(--pac-danger); }
.trep .in-amt { color: var(--pac-success-fg); font-weight: 600; }
.trep .dash { color: var(--pac-ghost); }

/* Franja de antigüedad: 5 tiles + nota verde cuando no hay vencidos */
.cxp .aging { display: flex; align-items: stretch; background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); margin-top: 18px; overflow: hidden; }
.cxp .bucket { flex: 1; padding: 12px 18px; border-left: 1px solid var(--pac-hair); }
.cxp .bucket:first-child { border-left: none; }
.cxp .bucket .lb { font-family: var(--pac-font-mono); font-size: .62rem; letter-spacing: .09em; text-transform: uppercase; color: var(--pac-faint); }
.cxp .bucket .v { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-size: 1.02rem; font-weight: 600; color: var(--pac-ink); margin-top: 3px; }
.cxp .bucket .n { font-size: .7rem; color: var(--pac-muted); }
.cxp .bucket.zero .v { color: var(--pac-ghost); font-weight: 400; }
.cxp .bucket.overdue .lb { color: #c9a0a0; }
.cxp .bucket.ok-note { flex: 1.3; display: flex; align-items: center; gap: 8px; background: var(--pac-success-bg); color: var(--pac-success-fg); font-size: .78rem; }

/* Tarjeta de reporte: membrete centrado + tabla agrupada.
   overflow: clip (no hidden) — hidden crearía un scroll container y el thead
   sticky de .wb-doc-scroll se anclaría a la card en vez de a la página. */
.trep .rep { background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); margin-top: 18px; overflow: clip; }
.trep .letterhead { text-align: center; padding: 22px 20px 16px; }
.trep .letterhead .co { font-family: var(--pac-font-serif); font-weight: 600; font-size: 1.25rem; color: var(--pac-ink); }
.trep .letterhead .rp { font-family: var(--pac-font-serif); font-size: .9rem; color: var(--pac-indigo); margin-top: 2px; }

/* border-collapse:separate — con collapse los bordes no acompañan al thead sticky */
table.rtab { width: 100%; border-collapse: separate; border-spacing: 0; margin: 0; }
.rtab thead th { background: var(--pac-navy); color: #fff; font-family: var(--pac-font-mono); font-size: .62rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; padding: 9px 16px; white-space: nowrap; }
.rtab td { padding: 9px 16px; font-size: .84rem; border-top: 1px solid var(--pac-hair); vertical-align: middle; }
.rtab tbody tr.doc:hover td { background: var(--pac-indigo-50); }
.rtab .sub { font-size: .72rem; color: var(--pac-muted); }
.rtab .dash { color: var(--pac-ghost); }
.rtab td.duedate { font-size: .8rem; }
.rtab td.duedate.late { color: var(--pac-danger); font-weight: 600; }
.rtab .due-soon { font-size: .7rem; color: var(--pac-warning); font-weight: 400; display: block; }
.rtab .past-due { font-size: .7rem; color: var(--pac-danger); font-weight: 400; display: block; }
.rtab td.saldo { font-weight: 600; }
.rtab tr.grp td { background: var(--pac-tint); border-top: 1px solid var(--pac-border); padding: 8px 16px; }
.rtab tr.grp .name { font-family: var(--pac-font-serif); font-weight: 600; font-size: .92rem; color: var(--pac-ink); }
.rtab tr.grp .cnt { font-size: .72rem; color: var(--pac-muted); margin-left: 8px; }
.rtab tr.grp .num { font-weight: 600; color: var(--pac-ink); font-size: .8rem; }
.rtab .badge-soft { white-space: nowrap; }
.rtab tr.totales td { border-top: 2px solid var(--pac-navy); background: var(--pac-surface); padding: 11px 16px; font-weight: 600; }
.rtab tr.totales .lbl { font-family: var(--pac-font-serif); color: var(--pac-navy); text-align: right; }
@media (max-width: 1100px) {
    .rtab thead th, .rtab td { padding-left: 10px; padding-right: 10px; font-size: .78rem; }
}

/* ============================================================
   27. Proyección de Flujo de Efectivo (rediseño hifi)
   Handoff: estilo/design_handoff_tesoreria (flujo.html) — banda
   cascada, alerta accionable con el día del quiebre y libro
   cronológico con saldo proyectado corrido.
   ============================================================ */
/* Banda cascada: saldo + ingresos − pagos = saldo final */
.flx .flow { display: flex; align-items: stretch; background: var(--pac-surface); border: 1px solid var(--pac-border); border-radius: 12px; box-shadow: var(--pac-shadow-card); margin-top: 18px; overflow: hidden; }
.flx .step { flex: 1; padding: 12px 18px; border-left: 1px solid var(--pac-hair); }
.flx .step:first-child { border-left: none; }
.flx .step .lb { font-family: var(--pac-font-mono); font-size: .62rem; letter-spacing: .09em; text-transform: uppercase; color: var(--pac-faint); }
.flx .step .v { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-size: 1.02rem; font-weight: 600; color: var(--pac-ink); margin-top: 3px; }
.flx .step .n { font-size: .7rem; color: var(--pac-muted); }
.flx .step.in .v { color: var(--pac-success-fg); }
.flx .step.out .v { color: var(--pac-danger); }
.flx .step.final { background: var(--pac-navy); }
.flx .step.final .lb { color: #8fa0c8; }
.flx .step.final .v { color: #fff; }
.flx .step.final .v.neg { color: #f3b7b7; }
.flx .step.final .n { color: #9fb0d6; }
.flx .op { align-self: center; padding: 0 2px; color: var(--pac-ghost); font-size: .95rem; flex: 0 0 auto; }

/* Alerta accionable: nombra el día del quiebre y el movimiento que lo causa */
.flx .alerta { display: flex; align-items: center; gap: 10px; margin-top: 14px; padding: 10px 16px; border-radius: 10px; background: var(--pac-warning-bg); color: var(--pac-warning-fg); font-size: .82rem; }
.flx .alerta i { font-size: .95rem; }

/* Tarjetas de contexto: filas clave-valor */
.flx .duo { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.flx .kv { display: flex; justify-content: space-between; gap: 12px; padding: 10px 18px; border-top: 1px solid var(--pac-hair); font-size: .84rem; align-items: baseline; }
.flx .kv:first-of-type { border-top: none; }
.flx .kv .num { font-family: var(--pac-font-mono); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--pac-ink); text-align: right; }
.flx .kv .num.neg { color: var(--pac-danger); }

/* Libro cronológico: fila de saldo inicial y fila del quiebre */
.rtab tr.cierre td { background: var(--pac-tint); border-top: 1px solid var(--pac-hair); padding: 10px 16px; font-size: .8rem; color: var(--pac-ink-2); }
.rtab tr.cierre .num { font-weight: 600; font-size: .8rem; }
.rtab tbody tr.quiebre td, .rtab tbody tr.quiebre:hover td { background: #fdf6f6; }

/* Matriz 13 semanas: categorías × semanas; la columna de la semana del quiebre va teñida */
.flx .rtab.mtx th.cat, .flx .rtab.mtx td.cat { min-width: 170px; }
.flx .rtab.mtx th.wk { min-width: 96px; }
.flx .rtab.mtx th.wk .sub { display: block; font-weight: 400; text-transform: none; letter-spacing: 0; }
.flx .rtab.mtx .tot { border-left: 1px solid var(--pac-hair); }
.flx .rtab.mtx th.brk, .flx .rtab.mtx tbody td.brk, .flx .rtab.mtx tbody tr:hover td.brk { background: #fdf6f6; }
/* El thead navy usa texto blanco: sobre el teñido claro del quiebre debe ir en rojo */
.flx .rtab.mtx th.brk, .flx .rtab.mtx th.brk .sub { color: var(--pac-danger); }

@media (max-width: 1100px) {
    .flx .duo { grid-template-columns: 1fr; }
    .flx .flow { flex-wrap: wrap; }
    .flx .step { min-width: 45%; border-top: 1px solid var(--pac-hair); }
    .flx .op { display: none; }
    .flx .rtab thead th { font-size: .58rem; white-space: normal; letter-spacing: .05em; }
    .flx .rtab td { font-size: .76rem; }
    .flx .rtab .sub { font-size: .68rem; }
    .flx .badge-soft { font-size: .6rem; padding: 2px 6px; }
}

/* ============================================================
   28. Ficha de Cuenta Bancaria (rediseño hifi)
   Handoff: estilo/design_handoff_tesoreria (cuenta.html) — saldo
   hero + cartola protagonista con saldo corrido. `.cta` es una
   variante sobre el shell `.trep .flx` (banda .flow, duo, rtab).
   ============================================================ */
.cta h1 { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.cta h1 .acct { font-family: var(--pac-font-mono); font-weight: 500; font-size: 1.15rem; color: var(--pac-muted); }
.cta .step { padding: 14px 20px; }
.cta .step .v { font-size: 1.15rem; }
.cta .step.hero { background: var(--pac-navy); flex: 1.3; }
.cta .step.hero .lb { color: #8fa0c8; }
.cta .step.hero .v { color: #fff; font-size: 1.45rem; }
.cta .step.hero .n { color: #9fb0d6; }
.cta .duo { grid-template-columns: 1.5fr 1fr; }
.cta .tcard + .tcard { margin-top: 18px; }
.cta .kv .k { color: var(--pac-muted); flex: 0 0 42%; }
.cta .kv .w { color: var(--pac-ink); text-align: right; }
/* Historial: filas compactas evento + actor, timestamp mono a la derecha */
.cta .hrow { display: flex; justify-content: space-between; gap: 12px; padding: 10px 18px; border-top: 1px solid var(--pac-hair); font-size: .8rem; align-items: baseline; }
.cta .hrow:first-of-type { border-top: none; }
.cta .hrow .who { color: var(--pac-muted); font-size: .72rem; }
.cta .hrow .ts { font-family: var(--pac-font-mono); font-size: .72rem; color: var(--pac-faint); white-space: nowrap; }
@media (max-width: 1100px) {
    .cta .duo { grid-template-columns: 1fr; }
}
