    :root {
      --navy: #2C3E6B;
      --navy-dark: #1e2d50;
      --gold: #C9A84C;
      --gold-dark: #b08d35;
      --gray-light: #F5F5F5;
      --gray-mid: #e0e0e0;
      --gray-text: #666;
      --white: #FFFFFF;
      --green: #27ae60;
      --orange: #e67e22;
      --red: #e74c3c;
      --sidebar-w: 240px;
      --header-h: 64px;
    }

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    html, body { height: 100%; font-family: 'Inter', sans-serif; background: var(--gray-light); color: #333; font-size: 14px; }
    .hidden { display: none !important; }
    .visible { display: block; }
    .inline { display: inline; }
    .inline-block { display: inline-block; }
    .flex { display: flex; }
    .fade-out { opacity: 0; }
    .fade-in { opacity: 1; }
    .fade-half { opacity: 0.5; }
    .absolute { position: absolute; }
    .relative { position: relative; }
    .z-top { z-index: 9999; }
    .z-modal { z-index: 1000; }
    .z-10 { z-index: 10; }
    .no-pointer { pointer-events: none; }
    .pointer { pointer-events: auto; }
    .no-wrap { white-space: nowrap; }
    .wrap-normal { white-space: normal; }
    .pointer-cursor { cursor: pointer; }
    .overflow-visible { overflow: visible; }
    .bg-white { background: var(--white); }
    .shadow-sm { box-shadow: 0 2px 8px rgba(0,0,0,.15); }
    .rounded-sm { border-radius: 4px; }
    .px-2 { padding-left: 6px; padding-right: 6px; }
    .py-1 { padding-top: 2px; padding-bottom: 2px; }
    .max-w-250 { max-width: 250px; }
    .confianza-alta { background: #c8e6c9; color: #2e7d32; }
    .confianza-media { background: #fff9c4; color: #f57f17; }
    .confianza-baja { background: #ffcdd2; color: #c62828; }
    .cell-expanded {
      white-space: normal;
      overflow: visible;
      position: relative;
      z-index: 10;
      background: var(--white);
      box-shadow: 0 2px 8px rgba(0,0,0,.15);
      border-radius: 4px;
      padding: 2px 6px;
      max-width: 250px;
    }
    .pill-active { outline: 2px solid currentColor; }

    /* LOGO */
    .logo { font-family: 'Montserrat', sans-serif; line-height: 1.1; user-select: none; }
    .logo-k { color: var(--navy); font-size: 2em; font-weight: 700; letter-spacing: -2px; }
    .logo-atedralia { color: var(--gold); font-weight: 700; letter-spacing: 2px; }
    .logo-sub { display: block; color: #aaa; font-size: 0.55em; letter-spacing: 4px; font-weight: 500; margin-top: 1px; }

    /* LOGIN */
    #screen-login {
      min-height: 100vh;
      display: flex; align-items: center; justify-content: center;
      background: linear-gradient(135deg, #eef1f8 0%, #e4e9f2 100%);
    }
    .login-card {
      background: var(--white); border-radius: 14px;
      box-shadow: 0 10px 40px rgba(44,62,107,0.13);
      padding: 48px 40px; width: 100%; max-width: 400px;
      text-align: center;
    }
    .login-card .logo { margin-bottom: 36px; }
    .login-card .logo-k { font-size: 2.8em; }
    .fgroup { margin-bottom: 16px; text-align: left; }
    .fgroup label { display: block; font-size: 0.75em; font-weight: 700; color: var(--gray-text); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
    .fgroup input {
      width: 100%; padding: 12px 14px; border: 1.5px solid var(--gray-mid);
      border-radius: 8px; font-size: 0.95em; font-family: 'Inter', sans-serif;
      outline: none; transition: border-color 0.2s;
    }
    .fgroup input:focus { border-color: var(--navy); }
    .btn-primary {
      width: 100%; padding: 13px; background: var(--navy); color: var(--white);
      border: none; border-radius: 8px; font-family: 'Montserrat', sans-serif;
      font-size: 0.95em; font-weight: 600; cursor: pointer; letter-spacing: 0.5px;
      transition: background 0.2s; margin-top: 8px;
    }
    .btn-primary:hover { background: var(--navy-dark); }
    #login-error { color: var(--red); font-size: 0.84em; margin-top: 12px; min-height: 1em; }
    .forgot-link {
      display: block; margin-top: 14px; font-size: 0.82em;
      color: var(--navy); cursor: pointer; text-decoration: underline;
      background: none; border: none; font-family: 'Inter', sans-serif;
      width: 100%;
    }
    .forgot-link:hover { color: var(--navy-dark); }
    .auth-panel { display: none; }
    .auth-panel.active { display: block; }
    .auth-msg { font-size: 0.84em; margin-top: 12px; min-height: 1em; }
    .auth-msg.ok { color: var(--green, #2e7d32); }
    .auth-msg.err { color: var(--red); }
    .back-link {
      display: inline-block; margin-top: 14px; font-size: 0.82em;
      color: var(--gray-text); cursor: pointer; text-decoration: underline;
      background: none; border: none; font-family: 'Inter', sans-serif;
    }

    /* APP LAYOUT */
    #screen-app { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }

    header {
      height: var(--header-h); background: var(--white);
      border-bottom: 1px solid var(--gray-mid);
      display: flex; align-items: center; justify-content: space-between;
      padding: 0 24px; flex-shrink: 0;
      box-shadow: 0 1px 4px rgba(0,0,0,0.05);
      z-index: 100;
    }
    header .logo-k { font-size: 1.9em; }
    .header-right { display: flex; align-items: center; gap: 12px; }
    #header-username { font-size: 0.88em; font-weight: 600; color: var(--navy); }
    .user-menu { position: relative; }
    .user-menu-trigger { cursor: pointer; user-select: none; padding: 4px 8px; border-radius: 6px; transition: background 0.15s; }
    .user-menu-trigger:hover { background: var(--gray-light); }
    .user-menu-dropdown {
      position: absolute; right: 0; top: 100%; margin-top: 4px; z-index: 300;
      background: var(--white); border: 1.5px solid var(--gray-mid); border-radius: 8px;
      box-shadow: 0 4px 18px rgba(0,0,0,.13); min-width: 190px; overflow: hidden;
    }
    .user-menu-item {
      padding: 10px 14px; cursor: pointer; font-size: 0.84em; color: #333;
      border-bottom: 1px solid var(--gray-light); transition: background 0.12s;
    }
    .user-menu-item:last-child { border-bottom: none; }
    .user-menu-item:hover { background: #f8f9ff; }
    .totp-qr-img { width: 200px; height: 200px; border: 1px solid var(--gray-light); border-radius: 8px; }
    .totp-secret-text { letter-spacing: 1px; word-break: break-all; }
    .btn-logout {
      padding: 7px 14px; border: 1.5px solid var(--gray-mid); border-radius: 6px;
      background: none; cursor: pointer; font-size: 0.82em; color: var(--gray-text);
      transition: all 0.2s;
    }
    .btn-logout:hover { border-color: var(--red); color: var(--red); }

    .layout { display: flex; flex: 1; overflow: hidden; }
    .layout.conc-fullwidth #sidebar { display: none; }

    /* SIDEBAR */
    #sidebar {
      width: var(--sidebar-w); background: var(--white);
      border-right: 1px solid var(--gray-mid);
      overflow-y: auto; flex-shrink: 0; padding: 12px 0;
    }
    .sb-label {
      font-size: 0.68em; font-weight: 700; color: #bbb;
      text-transform: uppercase; letter-spacing: 1.5px;
      padding: 14px 18px 4px;
    }
    .sb-item {
      display: flex; align-items: center; gap: 8px;
      padding: 9px 18px; font-size: 0.88em; cursor: pointer;
      color: #555; border-left: 3px solid transparent;
      transition: all 0.15s;
    }
    .sb-item:hover { background: var(--gray-light); color: var(--navy); }
    .sb-item.active { background: var(--navy); color: var(--white); border-left-color: var(--gold); font-weight: 600; }
    .sb-divider { height: 1px; background: var(--gray-mid); margin: 6px 0; }

    /* CALENDAR */
    .cal-header {
      display: flex; align-items: center; justify-content: space-between;
      padding: 14px 14px 8px;
    }
    .cal-year {
      font-family: 'Montserrat', sans-serif; font-size: 1em;
      font-weight: 700; color: var(--navy);
    }
    .cal-arrow {
      background: none; border: none; cursor: pointer; color: var(--navy);
      font-size: 1.2em; padding: 2px 7px; border-radius: 4px;
      transition: background 0.15s; line-height: 1;
    }
    .cal-arrow:hover { background: var(--gray-light); }
    .cal-grid {
      display: grid; grid-template-columns: repeat(3, 1fr);
      gap: 3px; padding: 0 10px 12px;
    }
    .cal-cell {
      padding: 7px 2px; text-align: center; border-radius: 6px;
      font-size: 0.76em; font-weight: 500; cursor: pointer;
      color: #555; transition: all 0.15s;
    }
    .cal-cell:hover { background: var(--gray-light); color: var(--navy); }
    .cal-cell.active { background: var(--navy); color: var(--white); font-weight: 700; }
    .cal-cell.today { color: var(--navy); font-weight: 700; box-shadow: inset 0 0 0 1.5px var(--gold); }
    .cal-cell.no-docs { color: #ccc; }
    .cal-cell.no-docs:hover { color: var(--navy); }
    .cal-badge { display: block; font-size: 0.75em; font-weight: 600; color: var(--gold); line-height: 1.3; }
    .cal-cell.active .cal-badge { color: rgba(255,255,255,0.75); }

    /* NEGOCIOS SIDEBAR */
    .sb-section-hdr {
      display: flex; align-items: center; padding: 14px 18px 4px;
    }
    .sb-section-hdr .sb-label { padding: 0; flex: 1; }
    .btn-sb-add {
      background: none; border: 1.5px solid var(--gray-mid); border-radius: 4px;
      color: var(--navy); font-size: 0.74em; cursor: pointer; padding: 2px 8px;
      transition: all 0.15s; line-height: 1.5; white-space: nowrap;
    }
    .btn-sb-add:hover { background: var(--navy); color: var(--white); border-color: var(--navy); }
    .neg-dot {
      display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
    }
    .b-ia-alta  { background: #27ae60; color: var(--white); }
    .b-ia-media { background: #f39c12; color: var(--white); }
    .b-ia-baja  { background: var(--red); color: var(--white); }

    /* MAIN */
    #main-content {
      flex: 1; overflow-y: auto; display: flex; flex-direction: column;
      padding: 22px 24px; gap: 18px;
    }

    .topbar { display: flex; align-items: center; gap: 10px; }
    .topbar h1 { font-family: 'Montserrat', sans-serif; font-size: 1.25em; font-weight: 700; color: var(--navy); flex: 1; }
    .btn-navy {
      padding: 9px 18px; background: var(--navy); color: var(--white);
      border: none; border-radius: 7px; font-family: 'Montserrat', sans-serif;
      font-size: 0.84em; font-weight: 600; cursor: pointer; letter-spacing: 0.3px;
      transition: background 0.2s; white-space: nowrap;
    }
    .btn-navy:hover { background: var(--navy-dark); }
    .btn-gold {
      padding: 9px 18px; background: var(--gold); color: var(--white);
      border: none; border-radius: 7px; font-family: 'Montserrat', sans-serif;
      font-size: 0.84em; font-weight: 600; cursor: pointer; letter-spacing: 0.3px;
      transition: background 0.2s; white-space: nowrap;
    }
    .btn-gold:hover { background: var(--gold-dark); }

    /* STATS CARDS */
    .stats-grid { display: flex; flex-wrap: wrap; gap: 10px; }
    .stat-card {
      background: var(--white); border-radius: 10px; padding: 9px 12px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.06); border-top: 3px solid var(--gray-mid);
      flex: 1 1 140px; min-width: 0;
    }
    .stat-card.rc { border-top-color: var(--navy); }
    .stat-card.nf { border-top-color: var(--green); }
    .stat-card.otros { border-top-color: var(--orange); }
    .stat-card.iva-favor  { border-top-color: var(--green); }
    .stat-card.iva-contra { border-top-color: var(--red); }
    .stat-card.iva-favor  .stat-value { color: var(--green); }
    .stat-card.iva-contra .stat-value { color: var(--red); }
    .stat-card.iva-resultado.positivo { border-top-color: var(--green); }
    .stat-card.iva-resultado.negativo { border-top-color: var(--red); }
    .stat-card.iva-resultado.positivo .stat-value { color: var(--green); }
    .stat-card.iva-resultado.negativo .stat-value { color: var(--red); }
    .stat-label { font-size: 0.65em; font-weight: 700; color: #aaa; text-transform: uppercase; letter-spacing: 1px; }
    .stat-count { font-size: 0.65em; color: var(--gray-text); margin-top: 2px; }
    .stat-value { font-family: 'Montserrat', sans-serif; font-size: 1.3rem; font-weight: 700; color: var(--navy); margin-top: 4px; }

    /* TABLE */
    .table-wrapper {
      background: var(--white); border-radius: 10px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.06); overflow-x: auto; overflow-y: visible;
    }
    table { min-width: 100%; border-collapse: collapse; font-size: 0.84em; }
    thead { position: sticky; top: 0; z-index: 2; }
    thead th {
      background: var(--navy); color: var(--white);
      padding: 11px 10px; text-align: left;
      font-family: 'Montserrat', sans-serif; font-size: 0.78em; font-weight: 600;
      letter-spacing: 0.3px; white-space: nowrap;
      position: relative;
    }
    thead th:first-child { border-radius: 10px 0 0 0; }
    thead th:last-child { border-radius: 0 10px 0 0; text-align: center; }
    .table-wrapper table { table-layout: fixed; }
    .table-wrapper thead th { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
    tbody tr { border-bottom: 1px solid var(--gray-light); transition: background 0.1s; }
    tbody tr:hover { background: #f7f8fc; }
    tbody td { padding: 9px 10px; vertical-align: middle; white-space: nowrap; }
    .table-wrapper tbody td { overflow: hidden; text-overflow: ellipsis; max-width: 0; }
    .table-wrapper td.concepto-col, .table-wrapper td.obra-col { white-space: normal; max-width: none; }
    td.td-actions { overflow: visible !important; max-width: none !important; min-width: 100px; width: 100px; white-space: nowrap; text-align: center; }
    th.th-actions { min-width: 100px; width: 100px; text-align: center; }
    td.concepto-col { line-height: 1.4; }
    tfoot td {
      padding: 10px 10px; font-weight: 700;
      font-family: 'Montserrat', sans-serif; font-size: 0.84em;
      background: var(--gray-light); border-top: 2px solid var(--navy);
    }
    .num { text-align: right; font-variant-numeric: tabular-nums; }
    .empty-row td { text-align: center; padding: 48px 16px; color: #bbb; font-size: 0.9em; }

    /* BADGES */
    .badge {
      display: inline-block; padding: 3px 9px; border-radius: 11px;
      font-size: 0.74em; font-weight: 700; font-family: 'Montserrat', sans-serif;
      letter-spacing: 0.5px;
    }
    .b-rc { background: var(--navy); color: var(--white); }
    .b-nf { background: var(--green); color: var(--white); }
    .b-otros { background: var(--orange); color: var(--white); }
    .b-miva { background: #f39c12; color: var(--white); font-size: 0.65em; padding: 2px 5px; margin-left: 4px; vertical-align: middle; }
    .tr-subrow { background: #f9f9f9; }
    .tr-subrow td { border-top: none !important; padding-top: 3px !important; padding-bottom: 3px !important; }
    .tr-subrow .subrow-cd { color: #888; font-weight: 400; padding-left: 12px; }

    /* ACTION BUTTONS */
    .btn-icon {
      background: none; border: none; cursor: pointer; padding: 5px 6px;
      border-radius: 5px; transition: background 0.15s; font-size: 1em; line-height: 1;
    }
    .btn-icon:hover { background: var(--gray-light); }

    /* PAGINATION */
    .bulk-bar {
      display: flex; align-items: center; gap: 10px;
      background: var(--navy); color: #fff;
      padding: 9px 16px; border-radius: 8px; margin-bottom: 10px; font-size: 0.88em;
    }
    .bulk-count { flex: 1; font-weight: 600; }
    .btn-bulk-clear {
      background: none; border: 1px solid rgba(255,255,255,0.45); color: #fff;
      padding: 4px 12px; border-radius: 5px; cursor: pointer; font-size: 0.85em;
    }
    .btn-bulk-clear:hover { background: rgba(255,255,255,0.12); }
    .btn-bulk-delete {
      background: var(--red); border: none; color: #fff;
      padding: 4px 14px; border-radius: 5px; cursor: pointer; font-weight: 700; font-size: 0.85em;
    }
    .btn-bulk-delete:hover { background: #a93226; }
    th.th-check, td.td-check { overflow: visible !important; max-width: none !important; width: 34px; min-width: 34px; text-align: center; padding: 0 6px; }
    td.td-check input, th.th-check input { cursor: pointer; accent-color: var(--navy); }

    .pagination { display: flex; align-items: center; justify-content: center; gap: 10px; padding-bottom: 4px; }
    .page-btn {
      padding: 6px 14px; border: 1.5px solid var(--gray-mid); border-radius: 6px;
      background: var(--white); cursor: pointer; font-size: 0.84em; color: var(--navy);
      transition: all 0.15s;
    }
    .page-btn:hover:not(:disabled) { border-color: var(--navy); }
    .page-btn:disabled { opacity: 0.4; cursor: not-allowed; }
    .page-info { font-size: 0.84em; color: var(--gray-text); }

    /* MODAL */
    .modal-overlay {
      position: fixed; inset: 0; background: rgba(0,0,0,0.48);
      display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 20px;
    }
    .modal-card {
      background: var(--white); border-radius: 14px; width: 100%; max-width: 640px;
      max-height: 90vh; overflow-y: auto; padding: 32px;
      box-shadow: 0 20px 60px rgba(0,0,0,0.2);
    }
    .modal-title { font-family: 'Montserrat', sans-serif; font-size: 1.18em; font-weight: 700; color: var(--navy); margin-bottom: 22px; }

    /* Drop zone */
    .drop-zone {
      position: relative;
      border: 2px dashed var(--gray-mid); border-radius: 10px;
      padding: 48px 24px; text-align: center; cursor: pointer; transition: all 0.2s;
    }
    .drop-zone input[type="file"] {
      opacity: 0; position: absolute; width: 100%; height: 100%;
      top: 0; left: 0; cursor: pointer; z-index: 10;
    }
    .drop-zone:hover, .drop-zone.dragover { border-color: var(--navy); background: #f0f3fa; }
    .drop-icon { font-size: 2.6em; margin-bottom: 12px; }
    .drop-text { font-size: 0.92em; color: var(--gray-text); }
    .drop-text strong { color: var(--navy); }
    .drop-sub { font-size: 0.76em; color: #bbb; margin-top: 6px; }

    .file-preview {
      margin-top: 14px; padding: 11px 15px; background: var(--gray-light);
      border-radius: 8px; display: flex; align-items: center; gap: 11px; font-size: 0.88em;
    }
    .preview-icon { font-size: 1.5em; }
    .preview-name { flex: 1; font-weight: 600; color: var(--navy); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

    .multi-file-list { margin-top: 14px; display: flex; flex-direction: column; gap: 7px; max-height: 260px; overflow-y: auto; }
    .multi-file-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; background: var(--gray-light); border-radius: 7px; font-size: 0.88em; }
    .mf-icon { font-size: 1.3em; }
    .mf-name { flex: 1; font-weight: 600; color: var(--navy); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .mf-status { font-size: 0.82em; color: var(--gray-text); white-space: nowrap; }
    .mf-status.ok { color: #2a7a2a; font-weight: 600; }
    .mf-status.err { color: #c0392b; font-weight: 600; }
    .mf-status.dup { color: var(--orange); font-weight: 600; }
    .mf-status.processing { color: var(--navy); font-style: italic; }
    .multi-progress { margin-top: 10px; font-size: 0.83em; color: var(--gray-text); text-align: center; min-height: 18px; }
    .multi-dups-section { margin-top: 16px; padding: 14px; background: #fff8e6; border: 1px solid var(--orange); border-radius: 8px; }
    .multi-dups-title { font-weight: 700; color: #b8860b; margin-bottom: 10px; font-size: 0.92em; }
    .multi-dups-list { display: flex; flex-direction: column; gap: 8px; max-height: 180px; overflow-y: auto; }
    .multi-dup-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; background: #fff; border-radius: 6px; border: 1px solid #e8d9a0; font-size: 0.85em; }
    .multi-dup-info { flex: 1; }
    .multi-dup-file { font-weight: 600; color: var(--navy); }
    .multi-dup-existing { color: var(--gray-text); font-size: 0.9em; }
    .btn-force-dup { padding: 5px 12px; font-size: 0.8em; background: var(--orange); color: #fff; border: none; border-radius: 5px; cursor: pointer; font-weight: 600; }
    .btn-force-dup:hover { background: #d4a017; }
    .btn-force-dup:disabled { background: #ccc; cursor: not-allowed; }

    .obra-options-list { display: flex; flex-direction: column; gap: 8px; max-height: 260px; overflow-y: auto; }
    .obra-option-btn {
      display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
      padding: 10px 14px; border: 1.5px solid var(--gray-mid); border-radius: 7px;
      background: var(--white); cursor: pointer; font-size: 0.9em; font-family: 'Inter', sans-serif;
      transition: all 0.15s;
    }
    .obra-option-btn:hover { border-color: var(--navy); background: var(--gray-light); }
    .obra-option-btn.obra-default { border-color: var(--navy); font-weight: 600; }

    .spinner {
      display: inline-block; width: 16px; height: 16px;
      border: 2px solid rgba(255,255,255,0.4); border-top-color: var(--white);
      border-radius: 50%; animation: spin 0.7s linear infinite; vertical-align: middle; margin-right: 6px;
    }
    @keyframes spin { to { transform: rotate(360deg); } }

    /* Form grid */
    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }
    .form-grid .full { grid-column: 1 / -1; }
    .fg { display: flex; flex-direction: column; gap: 4px; }
    .fg label { font-size: 0.72em; font-weight: 700; color: var(--gray-text); text-transform: uppercase; letter-spacing: 0.5px; }
    .fg input, .fg select, .fg textarea {
      padding: 9px 11px; border: 1.5px solid var(--gray-mid); border-radius: 7px;
      font-size: 0.9em; font-family: 'Inter', sans-serif; outline: none; transition: border-color 0.2s;
    }
    .fg input:focus, .fg select:focus, .fg textarea:focus { border-color: var(--navy); }
    .fg input[readonly] { background: var(--gray-light); color: var(--gray-text); }
    .fg textarea { resize: vertical; min-height: 58px; }

    .modal-actions { display: flex; gap: 10px; margin-top: 22px; justify-content: flex-end; }
    .btn-cancel {
      padding: 9px 18px; border: 1.5px solid var(--gray-mid); border-radius: 7px;
      background: none; cursor: pointer; font-size: 0.9em; color: var(--gray-text); transition: all 0.2s;
    }
    .btn-cancel:hover { border-color: #999; color: #333; }

    /* ── FILTROS COLUMNA ── */
    .f-btn {
      background: none; border: none; cursor: pointer;
      color: rgba(255,255,255,0.65); font-size: 0.6em;
      padding: 0 3px; vertical-align: middle; transition: color 0.15s;
      line-height: 1;
    }
    .f-btn:hover { color: var(--white); }
    thead th.col-filtered { background: var(--gold) !important; }
    thead th.col-filtered .f-btn { color: rgba(255,255,255,0.9); }

    #fdd {
      position: fixed; z-index: 600; display: none;
      background: var(--white); border: 1px solid var(--gray-mid);
      border-radius: 8px; box-shadow: 0 6px 24px rgba(0,0,0,0.16);
      padding: 14px; min-width: 190px; max-width: 250px;
    }
    .fdd-title {
      font-family: 'Montserrat', sans-serif; font-size: 0.76em;
      font-weight: 700; color: var(--navy); margin-bottom: 10px;
      text-transform: uppercase; letter-spacing: 0.5px;
    }
    .fdd-text {
      width: 100%; padding: 7px 10px; border: 1.5px solid var(--gray-mid);
      border-radius: 6px; font-size: 0.88em; font-family: 'Inter', sans-serif;
      outline: none; transition: border-color 0.2s;
    }
    .fdd-text:focus { border-color: var(--navy); }
    .fdd-check {
      display: flex; align-items: center; gap: 7px;
      padding: 5px 2px; font-size: 0.86em; cursor: pointer;
    }
    .fdd-check input { cursor: pointer; }
    .fdd-row { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
    .fdd-row label { font-size: 0.78em; color: var(--gray-text); width: 38px; flex-shrink: 0; }
    .fdd-row input {
      flex: 1; padding: 6px 8px; border: 1.5px solid var(--gray-mid);
      border-radius: 6px; font-size: 0.86em; outline: none;
      font-family: 'Inter', sans-serif; transition: border-color 0.2s;
    }
    .fdd-row input:focus { border-color: var(--navy); }
    .fdd-btns { display: flex; gap: 6px; margin-top: 12px; }
    .fdd-clear {
      flex: 1; padding: 7px; border: 1.5px solid var(--gray-mid);
      border-radius: 6px; background: none; cursor: pointer;
      font-size: 0.82em; color: var(--gray-text); transition: all 0.15s;
    }
    .fdd-clear:hover { border-color: var(--red); color: var(--red); }
    .fdd-apply {
      flex: 1; padding: 7px; border: none; border-radius: 6px;
      background: var(--navy); color: var(--white); cursor: pointer;
      font-size: 0.82em; font-weight: 600; transition: background 0.15s;
    }
    .fdd-apply:hover { background: var(--navy-dark); }
    .btn-outline-warn {
      padding: 8px 14px; border: 1.5px solid var(--orange); border-radius: 7px;
      background: none; cursor: pointer; font-size: 0.8em; color: var(--orange);
      transition: all 0.2s; white-space: nowrap;
    }
    .btn-outline-warn:hover { background: var(--orange); color: var(--white); }

    /* SEARCH BAR */
    .search-bar {
      display: flex; align-items: center; gap: 7px;
      background: var(--gray-light); border: 1.5px solid var(--gray-mid);
      border-radius: 8px; padding: 0 10px;
      flex: 1; max-width: 360px; transition: border-color 0.2s, background 0.2s;
    }
    .search-bar:focus-within { border-color: var(--navy); background: var(--white); }
    .search-icon { color: #aaa; font-size: 0.88em; flex-shrink: 0; }
    .search-bar input {
      flex: 1; border: none; background: none; outline: none;
      font-size: 0.88em; font-family: 'Inter', sans-serif;
      padding: 9px 0; color: #333; min-width: 0;
    }
    .search-bar input::placeholder { color: #bbb; }
    .search-clear {
      background: none; border: none; cursor: pointer;
      color: #bbb; font-size: 0.85em; padding: 2px 3px;
      line-height: 1; transition: color 0.15s; flex-shrink: 0;
    }
    .search-clear:hover { color: var(--navy); }
    mark { background: #FFE066; padding: 0 1px; border-radius: 2px; }

    /* TOAST */
    .toast {
      position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%);
      background: var(--navy); color: var(--white);
      padding: 11px 22px; border-radius: 8px; font-size: 0.88em;
      z-index: 2000; pointer-events: none;
      box-shadow: 0 4px 16px rgba(0,0,0,0.18); transition: opacity 0.3s;
    }

    /* ══════════════════════════════════════
       CONCILIACIÓN
    ══════════════════════════════════════ */
    #conc-selector, #conc-bancaria-section, #auditoria-section, #asientos-section {
      flex: 1; overflow-y: auto; display: flex; flex-direction: column;
      padding: 22px 24px; gap: 18px;
    }

    .conc-topbar { display: flex; align-items: center; gap: 12px; margin-bottom: 2px; }
    .conc-topbar h1 { font-family: 'Montserrat', sans-serif; font-size: 1.25em; font-weight: 700; color: var(--navy); flex: 1; }
    .btn-back {
      padding: 7px 14px; border: 1.5px solid var(--gray-mid); border-radius: 6px;
      background: none; cursor: pointer; font-size: 0.86em; color: var(--gray-text);
      transition: all 0.2s; white-space: nowrap;
    }
    .btn-back:hover { border-color: var(--navy); color: var(--navy); }

    /* Tabs */
    .conc-tabs {
      display: flex; gap: 0; border-bottom: 2px solid var(--gray-mid);
      margin-bottom: 0;
    }
    .conc-tab-btn {
      padding: 10px 22px; border: none; background: none; cursor: pointer;
      font-family: 'Montserrat', sans-serif; font-size: 0.86em; font-weight: 600;
      color: var(--gray-text); border-bottom: 3px solid transparent;
      margin-bottom: -2px; transition: color 0.15s, border-color 0.15s;
      letter-spacing: 0.3px;
    }
    .conc-tab-btn:hover { color: var(--navy); }
    .conc-tab-btn.active { color: var(--navy); border-bottom-color: var(--navy); }

    .conc-tab-content { display: none; padding-top: 20px; }
    .conc-tab-content.active { display: block; }

    /* Import tab */
    /* Sin max-width: la tarjeta aloja la tabla de revisión del extracto, que
       necesita todo el ancho para que Concepto y Beneficiario sean legibles.
       El formulario de subida sí se mantiene estrecho (.import-card .form-grid). */
    .import-card {
      background: var(--white); border-radius: 10px; padding: 24px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.06); width: 100%;
    }
    .import-card .form-grid { max-width: 580px; }
    .import-card h3 {
      font-family: 'Montserrat', sans-serif; font-size: 1em; font-weight: 700;
      color: var(--navy); margin-bottom: 18px;
    }
    .import-result-grid {
      display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px;
    }
    .import-result-card {
      background: var(--white); border-radius: 8px; padding: 12px 16px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.07); border-top: 3px solid var(--gray-mid);
      flex: 1 1 100px; min-width: 100px; text-align: center;
    }
    .import-result-card.importados  { border-top-color: var(--navy); }
    .import-result-card.duplicados  { border-top-color: var(--orange); }
    .import-result-card.auto-conc   { border-top-color: var(--green); }
    .import-result-card.pendientes  { border-top-color: var(--red); }
    .import-result-card .irc-val {
      font-family: 'Montserrat', sans-serif; font-size: 1.6em; font-weight: 700;
      color: var(--navy); margin-bottom: 3px;
    }
    .import-result-card.importados  .irc-val { color: var(--navy); }
    .import-result-card.duplicados  .irc-val { color: var(--orange); }
    .import-result-card.auto-conc   .irc-val { color: var(--green); }
    .import-result-card.pendientes  .irc-val { color: var(--red); }
    .import-result-card .irc-label {
      font-size: 0.7em; font-weight: 700; color: #aaa;
      text-transform: uppercase; letter-spacing: 0.8px;
    }

    /* Filter bar */
    .conc-filters {
      display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
      background: var(--white); padding: 14px 18px; border-radius: 10px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.06);
    }
    .conc-filters select, .conc-filters input[type=date] {
      padding: 8px 10px; border: 1.5px solid var(--gray-mid); border-radius: 7px;
      font-size: 0.88em; font-family: 'Inter', sans-serif; outline: none;
      transition: border-color 0.2s; background: var(--white);
    }
    .conc-filters select:focus, .conc-filters input:focus { border-color: var(--navy); }

    /* Movimientos table */
    .mov-table-wrapper {
      background: var(--white); border-radius: 10px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.06); overflow-x: auto;
    }

    /* Badge estado */
    .badge-estado {
      display: inline-block; padding: 3px 9px; border-radius: 11px;
      font-size: 0.74em; font-weight: 700; font-family: 'Montserrat', sans-serif;
      letter-spacing: 0.4px; white-space: nowrap;
    }
    .be-pendiente  { background: #e9ecef; color: #555; }
    .be-conciliado { background: #d4edda; color: #155724; }
    .be-parcial    { background: #fff3cd; color: #856404; }
    .be-ignorado   { background: #dee2e6; color: #777; }
    /* Asientos contables: mismos colores que be-conciliado/be-pendiente, clonados */
    .be-confirmado    { background: #d4edda; color: #155724; }
    .be-no-confirmado { background: #e9ecef; color: #555; }
    .badge-alerta {
      display: inline-block; padding: 2px 7px; border-radius: 9px;
      font-size: 0.70em; font-weight: 700; margin-left: 5px; white-space: nowrap;
    }
    .ba-sinmatch  { background: #f8d7da; color: #721c24; }
    .ba-posible   { background: #fff3cd; color: #856404; }

    /* Assigned row */
    .assigned-items { padding: 6px 10px 8px 32px; }
    .assigned-item {
      display: inline-flex; align-items: center; gap: 6px;
      background: #f0f3ff; border-radius: 6px; padding: 3px 8px 3px 10px;
      font-size: 0.8em; color: var(--navy); margin: 2px 4px 2px 0;
    }
    .assigned-item .btn-del-match {
      background: none; border: none; cursor: pointer; color: #aaa;
      font-size: 0.9em; padding: 0 2px; line-height: 1; transition: color 0.15s;
    }
    .assigned-item .btn-del-match:hover { color: var(--red); }

    /* Conciliation stat cards */
    .conc-stats-grid { display: flex; gap: 14px; flex-wrap: wrap; }
    .conc-stat-card {
      background: var(--white); border-radius: 10px; padding: 16px 20px;
      box-shadow: 0 1px 4px rgba(0,0,0,0.06); border-left: 4px solid var(--gray-mid);
      flex: 1 1 180px; min-width: 150px;
    }
    .conc-stat-card.cobrar  { border-left-color: var(--green); }
    .conc-stat-card.pagar   { border-left-color: var(--red); }
    .conc-stat-card.vencidas { border-left-color: var(--orange); }
    .conc-stat-card .csc-label {
      font-size: 0.67em; font-weight: 700; color: #aaa;
      text-transform: uppercase; letter-spacing: 1px; margin-bottom: 6px;
    }
    .conc-stat-card .csc-value {
      font-family: 'Montserrat', sans-serif; font-size: 1.35em; font-weight: 700;
    }
    .conc-stat-card.cobrar  .csc-value { color: var(--green); }
    .conc-stat-card.pagar   .csc-value { color: var(--red); }
    .conc-stat-card.vencidas .csc-value { color: var(--orange); }

    /* Status dot in CD column */
    .estado-dot {
      display: inline-block; width: 8px; height: 8px; border-radius: 50%;
      margin-right: 4px; flex-shrink: 0; vertical-align: middle;
    }

    /* Conciliation modal */
    #conc-modal .modal-card { max-width: 680px; }
    .conc-match-info {
      background: var(--gray-light); border-radius: 8px; padding: 12px 16px;
      margin-bottom: 18px; font-size: 0.88em; line-height: 1.6;
    }
    .conc-match-info strong { color: var(--navy); }
    .docs-match-list { max-height: 280px; overflow-y: auto; margin-bottom: 14px; }
    .doc-match-item {
      display: flex; align-items: center; gap: 10px;
      padding: 9px 12px; border: 1.5px solid var(--gray-mid);
      border-radius: 8px; margin-bottom: 6px; cursor: pointer;
      transition: border-color 0.15s, background 0.15s;
    }
    .doc-match-item:hover { border-color: var(--navy); background: #f7f8fc; }
    .doc-match-item.selected { border-color: var(--navy); background: #eef2ff; }
    .doc-match-item input[type=radio] { accent-color: var(--navy); }
    .doc-match-item .dmi-info { flex: 1; min-width: 0; }
    .doc-match-item .dmi-cd { font-weight: 700; color: var(--navy); font-size: 0.88em; }
    .doc-match-item .dmi-detail { font-size: 0.8em; color: var(--gray-text); }
    .doc-match-item .dmi-amount { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 0.9em; white-space: nowrap; }

    .conc-btn-sm {
      padding: 5px 11px; border-radius: 6px; font-size: 0.8em; font-weight: 600;
      cursor: pointer; border: none; transition: background 0.15s; white-space: nowrap;
    }
    .conc-btn-sm.navy { background: var(--navy); color: var(--white); }
    .conc-btn-sm.navy:hover { background: var(--navy-dark); }
    .conc-btn-sm.red { background: none; border: 1.5px solid var(--red); color: var(--red); }
    .conc-btn-sm.red:hover { background: var(--red); color: var(--white); }
    .conc-btn-sm.gray { background: none; border: 1.5px solid var(--gray-mid); color: var(--gray-text); }
    .conc-btn-sm.gray:hover { border-color: #999; color: #333; }

    /* Resumen tables */
    .conc-section-title {
      font-family: 'Montserrat', sans-serif; font-size: 0.9em; font-weight: 700;
      color: var(--navy); margin: 18px 0 10px; text-transform: uppercase;
      letter-spacing: 0.5px;
    }
    .dias-retraso { color: var(--red); font-weight: 700; }
    .dias-restantes { color: var(--green); font-weight: 600; }

    /* ── SORT ── */
    .sort-hdr {
      cursor: pointer; display: inline-flex; align-items: center; gap: 4px;
      user-select: none;
    }
    .sort-hdr:hover { opacity: 0.82; }
    .sort-ind { font-size: 0.85em; opacity: 0.55; }
    thead th.sort-active .sort-ind { opacity: 1; }

    /* ── COL RESIZE ── */
    .col-resize-handle {
      position: absolute; right: 0; top: 0;
      width: 5px; height: 100%;
      cursor: col-resize; background: transparent; z-index: 3;
    }
    .col-resize-handle:hover { background: rgba(255,255,255,0.22); }
    .col-resize-handle.dragging { background: rgba(255,255,255,0.45); }

    /* ── HAMBURGER BUTTON (oculto en desktop) ── */
    #btn-hamburger {
      display: none;
      background: none; border: none; cursor: pointer;
      color: var(--navy); font-size: 1.35em; line-height: 1;
      padding: 5px 8px; border-radius: 6px;
      transition: background 0.15s; flex-shrink: 0;
    }
    #btn-hamburger:hover { background: var(--gray-light); }

    /* ── SIDEBAR BACKDROP ── */
    #sidebar-backdrop {
      display: none;
      position: fixed; top: 0; left: 0; right: 0; bottom: 0;
      background: rgba(0,0,0,0.42);
      z-index: 149;
    }
    #sidebar-backdrop.show { display: block; }

    /* ── TARJETAS MÓVIL ── */
    #cards-docs { display: none; }

    .doc-card {
      background: var(--white);
      border-radius: 10px;
      padding: 12px 13px;
      box-shadow: 0 1px 5px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.04);
      border-left: 4px solid var(--gray-mid);
      cursor: pointer;
      transition: box-shadow 0.15s;
    }
    .doc-card:active { box-shadow: 0 1px 3px rgba(0,0,0,0.06); }
    .doc-card.sf-rc    { border-left-color: var(--navy); }
    .doc-card.sf-nf    { border-left-color: var(--green); }
    .doc-card.sf-otros { border-left-color: var(--gold); }

    .dc-row1 { display: flex; align-items: center; gap: 7px; margin-bottom: 5px; }
    .dc-meta { flex: 1; font-size: 0.76em; color: var(--gray-text); min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .dc-meta .dc-cd { font-weight: 600; color: #999; margin-right: 4px; }
    .dc-total { font-family: 'Montserrat', sans-serif; font-size: 0.97em; font-weight: 700; flex-shrink: 0; }
    .dc-total.pos { color: var(--navy); }
    .dc-total.neg { color: var(--red); }

    .dc-razon-social {
      font-size: 0.87em; font-weight: 600; color: var(--navy);
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
      margin-bottom: 3px;
    }
    .dc-concepto {
      font-size: 0.77em; color: var(--gray-text); line-height: 1.45;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }

    /* ── RESPONSIVE ── */
    @media (max-width: 768px) {
      /* Header */
      header { padding: 0 12px; gap: 8px; }
      .logo-sub { display: none; }
      #header-username { display: none; }
      .header-right { gap: 6px; }
      .btn-logout { padding: 6px 10px; font-size: 0.78em; }
      #btn-hamburger { display: flex; align-items: center; }

      /* Sidebar como overlay */
      #sidebar {
        position: fixed;
        top: 0; left: 0; bottom: 0;
        z-index: 150;
        width: var(--sidebar-w);
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        box-shadow: 4px 0 24px rgba(0,0,0,0.22);
      }
      #sidebar.sb-open { transform: translateX(0); }

      /* Tabla oculta, tarjetas visibles */
      .table-wrapper { display: none; }
      #cards-docs { display: flex; flex-direction: column; gap: 10px; padding: 8px 0; }
    }

/* ══════════════════════════════════════
   CONCILIACIÓN SELECTOR
   ══════════════════════════════════════ */
.conc-selector-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:24px;padding:40px 20px}
.conc-selector-title{font-family:'Montserrat',sans-serif;font-size:1.4em;font-weight:700;color:var(--navy);margin-bottom:10px}
.conc-selector-cards{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}
.conc-selector-card{background:var(--white);border-radius:14px;padding:32px 40px;box-shadow:0 4px 20px rgba(0,0,0,.08);cursor:pointer;transition:all .2s;text-align:center;min-width:240px;border:2px solid transparent}
.conc-selector-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px rgba(0,0,0,.12);border-color:var(--navy)}
.conc-selector-card.featured{border-color:var(--gold);background:linear-gradient(135deg,#fffef5 0%,#fff 100%)}
.conc-selector-card .icon{font-size:2.5em;margin-bottom:12px}
.conc-selector-card .title{font-family:'Montserrat',sans-serif;font-size:1.1em;font-weight:700;color:var(--navy);margin-bottom:6px}
.conc-selector-card .desc{font-size:.85em;color:var(--gray-text)}

/* ══════════════════════════════════════
   CONCILIACIÓN MOVIMIENTOS
   ══════════════════════════════════════ */
.conc-row{display:flex;align-items:stretch;background:var(--white);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.05);margin-bottom:6px;overflow:hidden;min-height:64px}
.conc-cell-left,.conc-cell-right{flex:1;padding:12px 16px;min-width:0}
.conc-cell-left{border-right:1px solid var(--gray-light);position:relative}
.sf-picker-trigger{border:1.5px dashed #93c5fd;border-radius:7px;padding:8px 12px;cursor:pointer;color:#2471a3;font-size:.83em;transition:border-color .15s,background .15s;user-select:none}
.sf-picker-trigger:hover{border-color:#3b82f6;background:#eff6ff}
.sf-picker-dropdown{position:absolute;left:0;top:100%;z-index:300;background:var(--white);border:1.5px solid var(--gray-mid);border-radius:8px;box-shadow:0 4px 18px rgba(0,0,0,.13);min-width:260px;max-width:420px;max-height:260px;overflow-y:auto;margin-top:2px}
.sf-picker-opt{padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--gray-light);transition:background .12s}
.sf-picker-opt:hover{background:#f8f9ff}
.sf-picker-opt:last-child{border-bottom:none}
.sf-picker-opt.sf-match{border-left:3px solid #27ae60;background:#f0fff4}
.sf-picker-opt.sf-match:hover{background:#e6fdf2}
.csb-item[data-filter]{cursor:pointer;transition:opacity .15s,outline .15s}
.csb-item[data-filter]:hover{opacity:.85}
.conc-cell-right{border-left:1px solid var(--gray-light)}
.conc-cell-center{width:140px;flex-shrink:0;padding:10px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center}
.conc-cell-entity{font-weight:600;font-size:.87em;color:var(--navy);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.conc-cell-sub{font-size:.73em;color:var(--gray-text);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.conc-cell-amount{font-family:'Montserrat',sans-serif;font-weight:700;font-size:.95em}
.conc-cell-empty{color:#bbb;font-size:.81em;font-style:italic;padding:4px 0}
.conc-sep{display:flex;align-items:center;gap:8px;padding:7px 14px;margin:14px 0 5px;border-radius:7px;font-size:.77em;font-weight:700;font-family:'Montserrat',sans-serif;letter-spacing:.4px;color:#fff}
.conc-sep-count{background:rgba(255,255,255,.28);border-radius:10px;padding:1px 7px;font-size:.9em}
.conc-stats-bar{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px;padding:9px 13px;background:var(--white);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);font-size:.81em}
.csb-item{display:flex;align-items:center;gap:5px;padding:3px 10px;border-radius:12px;font-weight:600;font-family:'Montserrat',sans-serif}
.mov-score-badge{font-family:'Montserrat',sans-serif;font-size:.71em;font-weight:700;padding:2px 7px;border-radius:8px;white-space:nowrap}
/* ── Xero-style expandable rows ─────────────────────────────────────── */
.mov-row{background:var(--white);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.05);margin-bottom:6px;overflow:hidden}
.mov-main{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:11px 16px;cursor:pointer;transition:background .12s;user-select:none}
.mov-main:hover{background:#f8f9fc}
.mov-main.is-open{background:#f0f4ff}
.mov-col-entidad{min-width:0}
.mov-entidad{font-weight:600;font-size:.88em;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mov-concepto{font-size:11px;color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mov-col-importe{font-family:'Montserrat',sans-serif;font-weight:700;font-size:.95em;white-space:nowrap;text-align:right}
.mov-col-estado{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:120px}
.mov-panel{display:none;border-top:1px solid var(--gray-light);padding:14px 16px;background:#fafbff}
.mov-panel.open{display:block}
.mov-sugerencia{border:1.5px solid #93c5fd;border-radius:8px;padding:10px 14px;background:#eff6ff;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px}
.mov-buscador-input{width:100%;padding:7px 11px;border:1.5px solid var(--gray-mid);border-radius:7px;font-size:.85em;outline:none;box-sizing:border-box;margin-top:4px}
.mov-buscador-input:focus{border-color:var(--navy)}
.mov-result-list{margin-top:8px;max-height:220px;overflow-y:auto}
.mov-result-item{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:7px;border:1.5px solid var(--gray-light);margin-bottom:5px}
.mov-result-item.exact-match{border-color:#27ae60;background:#f0fff4}
.conc-link-ignorar{font-size:10px;color:#ccc;cursor:pointer;text-decoration:underline;margin-top:1px}
.conc-link-ignorar:hover{color:var(--red)}
.mov-conciliado-bar{display:flex;align-items:center;gap:8px;padding:6px 14px;background:#e9f7ef;border-top:1px solid #c3e6cb}
.conc-table-row{display:flex;align-items:center;background:var(--white);border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.04);margin-bottom:3px;padding:7px 12px;gap:8px;font-size:.82em;min-width:900px}
.conc-table-row:hover{background:#f5fdf5}
.conc-tc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.conc-tc-obs{font-size:.78em;color:#888}
.conc-tc-green{color:#15803d;font-weight:600}
.conc-rh{position:absolute;right:0;top:0;bottom:0;width:5px;cursor:col-resize;z-index:5;background:transparent}
.conc-rh:hover,.conc-rh.dragging{background:rgba(21,128,61,.28)}
.conc-tc-exp{cursor:pointer}
.conc-tc-exp:hover{opacity:.82}
.conc-col-hdr-row{display:flex;align-items:center;gap:12px;padding:4px 16px;background:#f4f5f7;border-bottom:1px solid #e6e8ec;margin-bottom:4px}
.conc-col-hdr{font-size:10px;font-weight:700;text-transform:uppercase;color:#999;letter-spacing:.5px;cursor:pointer;user-select:none;white-space:nowrap;transition:color .12s}
.conc-col-hdr:hover{color:#444}
.conc-col-hdr.sort-active{color:#2c3e6b}
.conc-sort-arrow{margin-left:2px;font-size:9px;color:#ccc}
.conc-col-hdr.sort-active .conc-sort-arrow{color:#2c3e6b}

/* ══════════════════════════════════════
   AUDITORÍA
   ══════════════════════════════════════ */
.aud-topbar { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
.aud-topbar h1 { font-family: 'Montserrat', sans-serif; font-size: 1.25em; font-weight: 700; color: var(--navy); flex: 1; }
.aud-stats { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.aud-stat-card { background: var(--white); border-radius: 10px; padding: 16px 20px; min-width: 120px; box-shadow: 0 2px 8px rgba(0,0,0,.06); border-left: 4px solid var(--gray-mid); cursor: pointer; transition: transform 0.15s, box-shadow 0.15s, background 0.15s; }
.aud-stat-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.12); }
.aud-stat-card.ok { border-left-color: var(--green); }
.aud-stat-card.disc { border-left-color: var(--orange); }
.aud-stat-card.err { border-left-color: var(--red); }
.aud-stat-card.pend { border-left-color: var(--gray-text); }
.aud-stat-card.mant { border-left-color: var(--navy); }
.aud-stat-card.audit-card-active { background: var(--navy); }
.aud-stat-card.audit-card-active .aud-stat-val { color: var(--white); }
.aud-stat-card.audit-card-active .aud-stat-label { color: rgba(255,255,255,0.85); }
.aud-stat-val { font-size: 1.8em; font-weight: 700; color: var(--navy); }
.aud-stat-label { font-size: 0.8em; color: var(--gray-text); text-transform: uppercase; letter-spacing: 0.5px; }
.aud-progress { background: var(--white); border-radius: 10px; padding: 16px 20px; margin-bottom: 16px; box-shadow: 0 2px 8px rgba(0,0,0,.06); }
.aud-progress-bar { height: 8px; background: var(--gray-light); border-radius: 4px; overflow: hidden; margin-top: 8px; }
.aud-progress-fill { height: 100%; width: 0; background: var(--navy); transition: width 0.3s; }
.aud-filters { display: flex; gap: 10px; align-items: center; margin-bottom: 16px; flex-wrap: wrap; }
.aud-filters select, .aud-filters input { padding: 8px 12px; border: 1.5px solid var(--gray-mid); border-radius: 7px; font-size: 0.88em; font-family: 'Inter', sans-serif; }
.aud-table-wrap { background: var(--white); border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,.06); overflow-x: auto; }
.aud-table { width: 100%; border-collapse: collapse; font-size: 0.88em; }
.aud-table th { background: var(--navy); color: var(--white); padding: 12px 14px; text-align: left; font-weight: 600; }
.aud-table td { padding: 10px 14px; border-bottom: 1px solid var(--gray-light); }
.aud-table tr:hover { background: #f8f9fa; }
.aud-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.aud-dot.ok { background: var(--green); }
.aud-dot.disc { background: var(--orange); }
.aud-dot.err { background: var(--red); }
.aud-dot.pend { background: var(--gray-text); }
.aud-dot.mant { background: var(--navy); }
.aud-disc-list { font-size: 0.85em; color: var(--orange); }
.aud-btn-detail { padding: 4px 10px; font-size: 0.8em; background: var(--gray-light); border: none; border-radius: 5px; cursor: pointer; }
.aud-btn-detail:hover { background: var(--gray-mid); }
.aud-modal-table { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 0.9em; }
.aud-modal-table th, .aud-modal-table td { padding: 10px 12px; border: 1px solid var(--gray-light); text-align: left; }
.aud-modal-table th { background: var(--gray-light); color: #000; font-weight: 700; }
.aud-modal-table tr.ok { background: #e8f5e9; }
.aud-modal-table tr.ok td { color: #1b5e20; }
.aud-modal-table tr.disc { background: #fff3e0; }
.aud-modal-table tr.disc td { color: #8a4b00; }

/* ══════════════════════════════════════
   MODELO 303
   ══════════════════════════════════════ */
#m303-section{flex:1;overflow-y:auto;display:flex;flex-direction:column;padding:22px 24px;gap:18px}
.m303-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;background:var(--white);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.m303-trim-btns{display:flex;gap:6px}
.m303-trim-btn{padding:7px 18px;border:1.5px solid var(--gray-mid);border-radius:6px;background:none;cursor:pointer;font-family:'Montserrat',sans-serif;font-size:.85em;font-weight:600;color:var(--gray-text);transition:all .15s}
.m303-trim-btn.active{background:var(--navy);color:var(--white);border-color:var(--navy)}
.m303-trim-btn:hover:not(.active){border-color:var(--navy);color:var(--navy)}
.m303-anio-inp{padding:7px 10px;border:1.5px solid var(--gray-mid);border-radius:6px;font-size:.88em;width:80px;outline:none;font-family:'Inter',sans-serif}
.m303-anio-inp:focus{border-color:var(--navy)}
.m303-mode-btns{display:flex;gap:0;border:1.5px solid var(--gray-mid);border-radius:6px;overflow:hidden}
.m303-mode-btn{padding:7px 16px;border:none;background:none;cursor:pointer;font-family:'Montserrat',sans-serif;font-size:.82em;font-weight:600;color:var(--gray-text);transition:all .15s}
.m303-mode-btn.active{background:var(--navy);color:var(--white)}
.m303-mode-btn:hover:not(.active){background:#f0f2f5}
.m303-mes-select{padding:7px 10px;border:1.5px solid var(--gray-mid);border-radius:6px;font-size:.88em;outline:none;font-family:'Inter',sans-serif;background:var(--white);color:var(--gray-text);cursor:pointer}
.m303-mes-select:focus{border-color:var(--navy)}
.m303-adv{background:#fff3cd;border:1px solid #ffc107;border-radius:8px;padding:12px 16px;font-size:.84em;color:#856404}
.m303-adv-title{font-weight:700;margin-bottom:6px}
.m303-adv ul{padding-left:18px}
.m303-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:900px){.m303-grid{grid-template-columns:1fr}}
.m303-bloque{background:var(--white);border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}
.m303-bloque-hdr{padding:12px 18px;font-family:'Montserrat',sans-serif;font-size:.88em;font-weight:700;color:var(--white);letter-spacing:.3px}
.m303-bloque-hdr.rep{background:var(--navy)}
.m303-bloque-hdr.ded{background:#27ae60}
.m303-bloque table{width:100%;border-collapse:collapse;font-size:.84em}
.m303-bloque th{background:#f4f5f7;padding:8px 14px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;color:#999;letter-spacing:.5px}
.m303-bloque td{padding:8px 14px;border-bottom:1px solid var(--gray-light)}
.m303-bloque tr.total-row td{font-weight:700;background:#f8f9fc;border-top:2px solid var(--gray-mid);border-bottom:none}
.m303-bloque td.num,.m303-bloque th.num{text-align:right}
.m303-resultado-wrap{display:flex;justify-content:center}
.m303-resultado{background:var(--white);border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,.08);padding:28px 48px;text-align:center;min-width:320px}
.m303-res-label{font-size:.78em;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;color:var(--gray-text)}
.m303-res-texto{font-family:'Montserrat',sans-serif;font-size:1.1em;font-weight:700;margin-bottom:8px}
.m303-res-importe{font-family:'Montserrat',sans-serif;font-size:2.2em;font-weight:700}
.m303-res-texto.ingresar,.m303-res-importe.ingresar{color:#c0392b}
.m303-res-texto.compensar,.m303-res-importe.compensar{color:#27ae60}
.m303-periodo{font-size:.78em;color:var(--gray-text);margin-top:8px}


/* ═══════════════════════════════════════ */
/* INVOICE DETAIL MODAL WITH CHAT          */
/* ═══════════════════════════════════════ */
.modal-invoice-detail-card{max-width:95vw;width:1400px;height:85vh;padding:0;display:flex;flex-direction:column}
.modal-invoice-detail-card .modal-title{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid var(--gray-light);margin-bottom:0}
.btn-close-modal{background:none;border:none;font-size:1.8em;color:var(--gray-text);cursor:pointer;padding:0 8px;line-height:1}
.btn-close-modal:hover{color:var(--navy)}
.invoice-detail-split{display:flex;flex:1;overflow:hidden;--split-left:45%}
.invoice-detail-left{flex:0 0 var(--split-left);min-width:0;display:flex;flex-direction:column;overflow:hidden}
.invoice-detail-right{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.split-divider{flex:0 0 6px;cursor:col-resize;background:var(--gray-light);touch-action:none}
.split-divider:hover,.split-divider.dragging{background:var(--navy)}
.invoice-detail-split.resizing{user-select:none}
.invoice-detail-split.resizing iframe,.invoice-detail-split.resizing embed,.invoice-detail-split.resizing object{pointer-events:none}
.invoice-detail-scroll{flex:1 1 auto;min-height:0;overflow-y:auto}
.invoice-info-section{padding:18px 20px;border-bottom:1px solid var(--gray-light)}
.invoice-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;font-size:.88em}
.invoice-info-grid .info-row{display:flex;gap:6px}
.invoice-info-grid .info-label{font-weight:600;color:var(--gray-text);min-width:80px}
.invoice-info-grid .info-value{color:var(--navy)}
.invoice-chat-section{flex:0 0 auto;flex-shrink:0;min-height:220px;display:flex;flex-direction:column;overflow:hidden}
#modal-aud-detail .invoice-chat-section{height:280px;min-height:100px}
#modal-aud-detail .invoice-detail-scroll{min-height:100px}
.chat-resize-handle{flex:0 0 7px;cursor:row-resize;background:var(--gray-light);touch-action:none}
.chat-resize-handle:hover,.chat-resize-handle.dragging{background:var(--navy)}
.invoice-detail-left.resizing{user-select:none}
.chat-header{padding:12px 20px;font-weight:700;font-size:.9em;color:var(--navy);background:#f8f9fc;border-bottom:1px solid var(--gray-light)}
.chat-messages{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:12px;min-height:0}
.chat-msg{max-width:85%;padding:10px 14px;border-radius:12px;font-size:.88em;line-height:1.5}
.chat-msg.user{align-self:flex-end;background:var(--navy);color:var(--white);border-bottom-right-radius:4px}
.chat-msg.assistant{align-self:flex-start;background:#f0f2f5;color:#333;border-bottom-left-radius:4px}
.chat-input-area{display:flex;gap:10px;padding:14px 20px;border-top:1px solid var(--gray-light);background:#fafbfc}
.chat-input-area textarea{flex:1;padding:10px 14px;border:1.5px solid var(--gray-mid);border-radius:8px;font-family:'Inter',sans-serif;font-size:.9em;resize:none;outline:none}
.chat-input-area textarea:focus{border-color:var(--navy)}
.chat-input-area button{padding:10px 20px;white-space:nowrap}
#aud-mantener-nota{padding:10px 14px;border:1.5px solid var(--gray-mid);border-radius:8px;font-family:'Inter',sans-serif;font-size:.9em;resize:none;outline:none}
#aud-mantener-nota:focus{border-color:var(--navy)}
.pdf-viewer-header{padding:12px 20px;font-weight:700;font-size:.9em;color:var(--navy);background:#f8f9fc;border-bottom:1px solid var(--gray-light)}
.pdf-viewer-container{flex:1;overflow:hidden;background:#e5e5e5}
.pdf-viewer-container iframe,.pdf-viewer-container embed,.pdf-viewer-container object{width:100%;height:100%;border:none}
.pdf-placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--gray-text);font-size:.9em}
@media(max-width:1000px){.invoice-detail-split{flex-direction:column-reverse}.invoice-detail-left,.invoice-detail-right{width:100%;height:50%;flex:0 0 50%}.invoice-detail-left{border-right:none;border-top:1px solid var(--gray-light)}.split-divider{display:none}}
#aud-correccion-section{max-height:240px;overflow-y:auto;resize:vertical}
#aud-correccion-section.expanded{max-height:none}
#th-nif{min-width:90px;white-space:nowrap}
td.nif-col{white-space:nowrap}
.aud-correccion-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.aud-correccion-header-right{display:flex;align-items:center;gap:8px}
.btn-correccion-toggle{background:#fff;border:1px solid var(--gray-mid);border-radius:6px;padding:2px 8px;font-size:.85em;line-height:1.4;cursor:pointer;color:var(--gray-text)}

/* ══════════════════════════════════════
   UTILIDADES — Fase 1 migración CSP (style-src sin unsafe-inline)
   Sustituyen style="..." estáticos. No usar para valores que cambian en runtime.
   ══════════════════════════════════════ */
.m-0{margin:0}
.mt-4{margin-top:4px}
.mt-8{margin-top:8px}
.mt-10{margin-top:10px}
.mt-12{margin-top:12px}
.mt-14{margin-top:14px}
.mt-16{margin-top:16px}
.mt-18{margin-top:18px}
.mt-20{margin-top:20px}
.mb-0{margin-bottom:0}
.mb-6{margin-bottom:6px}
.mb-10{margin-bottom:10px}
.mb-12{margin-bottom:12px}
.mb-22{margin-bottom:22px}
.pt-16{padding-top:16px}
.p-4-6{padding:4px 6px}
.p-6-14{padding:6px 14px}
.p-7-14{padding:7px 14px}
.p-8-10{padding:8px 10px}
.p-8-11{padding:8px 11px}
.p-8-16{padding:8px 16px}
.p-9-11{padding:9px 11px}
.p-12{padding:12px}
.p-14-20{padding:14px 20px}
.p-16{padding:16px}
.p-24{padding:24px}
.fs-072{font-size:0.72em}
.fs-078{font-size:0.78em}
.fs-082{font-size:0.82em}
.fs-084{font-size:0.84em}
.fs-085{font-size:0.85em}
.fs-088{font-size:0.88em}
.fs-09{font-size:0.9em}
.fs-14px{font-size:14px}
.fs-20px{font-size:20px}
.lh-15{line-height:1.5}
.lh-165{line-height:1.65}
.ls-05{letter-spacing:0.5px}
.ls-004em{letter-spacing:.04em}
.ls-6{letter-spacing:6px}
.tt-upper{text-transform:uppercase}
.fw-600{font-weight:600}
.fw-700{font-weight:700}
.text-center{text-align:center}
.text-right{text-align:right}
.w-40{width:40px}
.w-50{width:50px}
.w-60{width:60px}
.w-full{width:100%}
.minw-40{min-width:40px}
.minw-50{min-width:50px}
.minw-80{min-width:80px}
.minw-100{min-width:100px}
.minw-180{min-width:180px}
.minw-220{min-width:220px}
.maxw-460{max-width:460px}
.maxw-680{max-width:680px}
.mh-none{max-height:none}
.d-flex{display:flex}
.d-block{display:block}
.items-center{align-items:center}
.flex-wrap{flex-wrap:wrap}
.flex-none-auto{flex:0 0 auto}
.gap-4{gap:4px}
.gap-10{gap:10px}
.gap-12{gap:12px}
.grid-1col{grid-template-columns:1fr}
.grid-2col{grid-template-columns:1fr 1fr}
.cursor-default{cursor:default}
.cursor-pointer{cursor:pointer}
.box-border{box-sizing:border-box}
.outline-none{outline:none}
.nowrap{white-space:nowrap}
.opacity-85{opacity:.85}
.ff-inter{font-family:'Inter',sans-serif}
.border-input{border:1.5px solid var(--gray-mid)}
.border-ccc{border:1px solid #ccc}
.border-light{border:1px solid var(--gray-light)}
.border-top-light{border-top:1px solid var(--gray-light)}
.border-bottom-light{border-bottom:1px solid var(--gray-light)}
.border-top-danger-light{border-top:1px solid #f5c6cb}
.radius-4{border-radius:4px}
.radius-7{border-radius:7px}
.radius-8{border-radius:8px}
.bg-white{background:var(--white)}
.bg-warn-light{background:#fff3e0}
.bg-slate{background:#6b7280}
.bg-fafbfc{background:#fafbfc}
.color-muted{color:var(--gray-text)}
.color-danger{color:#b91c1c}
.color-text-soft{color:#444}
.color-gray-999{color:#999}
.color-gray-bbb{color:#bbb}
.auth-2fa-hint{margin:0 0 16px}
.otp-input{letter-spacing:6px;font-size:20px;text-align:center}
.maxw-200{max-width:200px}
.overflow-hidden{overflow:hidden}
.ws-normal{white-space:normal}
.msg-box{text-align:center;padding:24px;color:#bbb;font-size:.88em}
.msg-box-error{text-align:center;padding:24px;color:var(--red);font-size:.88em}
.msg-box-compact{color:#bbb;font-size:.82em;padding:8px 0}
.aud-empty-row{text-align:center;color:#999;padding:30px}

/* ══════════════════════════════════════
   UTILIDADES — Fase 2 migración CSP (casos dinámicos → clases de estado)
   Los colores/anchos calculados en runtime que NO caben en un enum finito
   se asignan vía element.style.* en JS (CSP-safe), nunca en el string HTML.
   ══════════════════════════════════════ */
.mb-8{margin-bottom:8px}
.text-left{text-align:left}
.clr-red{color:var(--red)}
.clr-orange{color:var(--orange)}
.clr-green{color:var(--green)}
.clr-navy{color:var(--navy)}
.clr-aaa{color:#aaa}
.clr-bbb{color:#bbb}
.clr-ccc{color:#ccc}
.clr-555{color:#555}
.clr-666{color:#666}
.clr-777{color:#777}
.clr-888{color:#888}
.clr-999{color:#999}
.clr-2e7d32{color:#2e7d32}
.clr-15803d{color:#15803d}
.fw-500{font-weight:500}
.dot-8{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:3px;vertical-align:middle}
.bg-red{background:var(--red)}
.bg-orange{background:var(--orange)}
.bg-green{background:var(--green)}
.venc-vencida{color:#e53935;font-weight:700}
.venc-proxima{color:#f57c00;font-weight:700}
.pdf-icon-active{cursor:pointer}
.pdf-icon-disabled{opacity:0.3;cursor:default}
.badge-miva-inline{margin-left:4px;font-size:.7em}
.score-high{background:#27ae6022;color:#27ae60}
.score-mid{background:#d6891022;color:#d68910}
.score-low{background:#c0392b22;color:#c0392b}
.sep-red{background:#c0392b}
.sep-orange{background:#d68910}
.sep-blue{background:#2471a3}
.sep-green{background:#27ae60}
.csb-red{background:#fde8e8;color:#c0392b}
.csb-orange{background:#fef3e2;color:#d68910}
.csb-blue{background:#e8f4fb;color:#2471a3}
.csb-green{background:#e9f7ef;color:#27ae60}
.csb-gray{background:#f4f6f7;color:#555;margin-left:auto}
.badge-posible-match{background:#dbeafe;color:#1d4ed8}
.correccion-row-totales{background:#e8f5e9}
.correccion-row-tramo{background:#e3f2fd}
.correccion-nested-cell{padding-left:20px;font-size:0.9em}
.correccion-value{color:#2e7d32;font-weight:500}
.correccion-value-strong{color:#2e7d32;font-weight:600}
.legend-cell{font-size:11px;color:#aaa;font-weight:400;padding-top:5px;padding-bottom:7px;border-top:none}
.flex-1-minw0{flex:1;min-width:0}
.flex-col-gap4-shrink0{display:flex;flex-direction:column;gap:4px;flex-shrink:0}
.obs-chip{font-size:.76em;color:#666;background:#f5f5f5;border-radius:5px;padding:4px 9px;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mov-note-sm{font-size:.83em;color:#555}
.result-item-static{cursor:default}
.doc-title-line{font-weight:600;font-size:.85em;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-sub-line{font-size:.72em;color:#777;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-obs-line{font-size:.71em;color:#999;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-name-line{font-weight:600;font-size:.87em;color:var(--navy)}
.match-sub-line{font-size:.75em;color:#888;margin-top:1px}
.amt-strong{font-family:'Montserrat';font-weight:700;font-size:.92em}
.amt-strong-sm{font-family:'Montserrat';font-weight:700;font-size:.95em}
.amt-pos{color:var(--green)}
.amt-neg{color:var(--red)}
.asignar-btn{white-space:nowrap;flex-shrink:0;margin-left:8px}
.no-datos-cell{color:#bbb;text-align:center;font-style:italic;padding:16px}
.tramo-box{margin-top:12px;padding:12px;background:#e8f4fb;border-radius:8px;border-left:3px solid #2471a3}
.tramo-title{color:#2471a3}
.tramo-table{width:100%;margin-top:8px;font-size:.85em;border-collapse:collapse}
.tramo-thead-row{background:#dbeafe}
.tramo-th{padding:6px}
.obs-ia-box{margin-top:12px;padding:12px;background:var(--gray-light);border-radius:8px}
.obs-ia-summary{cursor:pointer;font-weight:600}
.obs-ia-content{margin-top:8px;color:var(--gray-text)}
.conc-tc-static{flex-shrink:0}
.ox-auto{overflow-x:auto}
.conc-col-hdr-row-860{min-width:860px}
.mov-sep-flex{display:flex;flex-direction:column;gap:4px;flex-shrink:0}
.mov-buscador-box{margin-top:10px}
.mov-inline-cursor-default{cursor:default}
.confianza-badge-base{padding:4px 10px;border-radius:12px;font-size:0.8em;font-weight:600}
.bg-gray-mid{background:var(--gray-mid)}
.sb-item-between{justify-content:space-between}
.sb-item-label{display:flex;align-items:center;gap:7px;overflow:hidden;min-width:0}
.sb-item-name{overflow:hidden;text-overflow:ellipsis}
.fs-078{font-size:0.78em}
.flex-shrink0{flex-shrink:0}
.p-2-5{padding:2px 5px}
.fdd-check-empty{font-size:.82em;color:#aaa}
.neg-cell-inline{display:inline-flex;align-items:center;gap:5px}
.mov-main-base{display:flex;gap:8px;align-items:center;padding:11px 12px}
.mov-main-static{cursor:default;opacity:.6}
.clr-888{color:#888}
.fs-08{font-size:.8em}
.flex-col-end-gap3{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.pos-relative{position:relative}
.conc-col-hdr-row-tight{gap:8px;padding:4px 12px}
.fs-07{font-size:.7em}
.p-3-6{padding:3px 6px}
.tcol-warn{color:#d97706}
.fs-079{font-size:.79em}
.ml-4{margin-left:4px}
.conc-subrow-indent{margin-left:20px;background:#f0fdf4;border-left:3px solid #86efac}
.clr-2a7a2a{color:#2a7a2a}
.btn-correccion-toggle:hover{color:var(--navy);border-color:var(--navy)}

/* ── Revisión manual de extractos multi-formato ───────────────────────── */
.rev-cuadre{padding:10px 14px;border-radius:7px;font-size:.86em;margin-bottom:10px;border:1px solid var(--gray-mid);background:var(--gray-light)}
.rev-cuadre.ok{background:#f0fdf4;border-color:#86efac;color:#166534}
.rev-cuadre.ko{background:#fef2f2;border-color:#fca5a5;color:#991b1b}
.rev-aviso{padding:8px 12px;border-radius:6px;font-size:.83em;margin-bottom:8px;background:#fffbeb;border:1px solid #fcd34d;color:#92400e}
.rev-tabla-wrap{max-height:58vh;overflow-y:auto;overflow-x:auto;border:1px solid var(--gray-mid);border-radius:7px}
/* table-layout:fixed + anchos explícitos: con layout automático los inputs no
   tienen ancho intrínseco y el navegador aplasta Concepto a unos pocos
   caracteres, que es justo el campo que hay que poder leer al revisar. */
.rev-tabla{width:100%;min-width:920px;table-layout:fixed;border-collapse:collapse;font-size:.84em}
.rev-tabla th:nth-child(1),.rev-tabla td:nth-child(1){width:38px;text-align:center}
.rev-tabla th:nth-child(2),.rev-tabla td:nth-child(2){width:82px}
.rev-tabla th:nth-child(3),.rev-tabla td:nth-child(3){width:116px}
.rev-tabla th:nth-child(4),.rev-tabla td:nth-child(4){width:auto}
.rev-tabla th:nth-child(5),.rev-tabla td:nth-child(5){width:118px}
.rev-tabla th:nth-child(6),.rev-tabla td:nth-child(6){width:24%}
.rev-tabla th:nth-child(7),.rev-tabla td:nth-child(7){width:13%}
.rev-tabla th{position:sticky;top:0;background:var(--navy);color:#fff;text-align:left;padding:8px 10px;font-weight:600;z-index:1}
.rev-tabla td{padding:5px 8px;border-bottom:1px solid #f0f0f0;vertical-align:middle}
.rev-tabla tr.cal-baja{background:#fffbeb}
.rev-tabla tr.cal-media{background:#fefce8}
.rev-tabla tr.es-duplicado{background:#f3f4f6;color:var(--gray-text)}
.rev-tabla input[type=text],.rev-tabla input[type=number]{width:100%;border:1px solid transparent;background:transparent;padding:4px 6px;border-radius:4px;font-family:'Inter',sans-serif;font-size:1em}
.rev-tabla input[type=text]:focus,.rev-tabla input[type=number]:focus{border-color:var(--navy);background:#fff;outline:none}
.rev-tabla td:nth-child(5) input{text-align:right;font-variant-numeric:tabular-nums}
.rev-tabla input.imp-neg{color:var(--red)}
.rev-tabla input.imp-pos{color:var(--green)}
.rev-badge{display:inline-block;padding:1px 7px;border-radius:10px;font-size:.82em;font-weight:600}
.rev-badge.ALTA{background:#dcfce7;color:#166534}
.rev-badge.MEDIA{background:#fef9c3;color:#854d0e}
.rev-badge.BAJA{background:#fee2e2;color:#991b1b}
.rev-dup-nota{display:block;font-size:.9em;color:var(--gray-text);font-style:italic}
