:root {
    --app-primary: #2563eb;
    --app-primary-dark: #1d4ed8;
    --app-primary-soft: #eff6ff;
    --app-grid-selection-bg: #2563eb;
    --app-grid-selection-text: #ffffff;
    --app-navy: #172033;
    --app-sidebar: #111827;
    --app-sidebar-hover: #1f2937;
    --app-bg: #f4f7fb;
    --app-surface: #ffffff;
    --app-surface-muted: #f8fafc;
    --app-border: #e2e8f0;
    --app-text: #1e293b;
    --app-muted: #64748b;
    --app-success: #059669;
    --app-warning: #d97706;
    --app-danger: #dc2626;
    --app-info: #0284c7;
    --app-radius-sm: 8px;
    --app-radius: 12px;
    --app-radius-lg: 16px;
    --app-shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);
    --app-shadow: 0 10px 30px rgba(15, 23, 42, .07);
    --app-header-height: 64px;
    --app-sidebar-width: 268px;
    --app-sidebar-compact-width: 76px;
    --app-transition: 180ms ease;
    --app-z-header: 1020;
    --app-z-sidebar-backdrop: 1025;
    --app-z-sidebar: 1030;
    --app-z-modal-backdrop: 1090;
    --app-z-modal: 1100;
    --app-z-sweetalert: 20000;
    --rz-grid-header-font-size: .68rem;
    --rz-grid-cell-font-size: .78rem;
    --rz-grid-header-cell-padding: .55rem .5rem;
    --rz-grid-cell-padding: .62rem .75rem;
}

html, body {
    background: var(--app-bg);
    color: var(--app-text);
    font-family: Inter, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 14px;
}

/* Reserva el espacio del scrollbar sin mostrarlo cuando la página no necesita desplazamiento. */
html { overflow-y: auto; scrollbar-gutter: stable; }

/* Los iframes de comprobación OIDC son invisibles; no deben crear overflow al final de la página. */
iframe[width="0"][height="0"] {
    border: 0;
    display: block;
    height: 0 !important;
    left: -1px !important;
    position: fixed !important;
    top: -1px !important;
    width: 0 !important;
}

body { min-width: 320px; }

.app-shell { min-height: 100vh; }

.app-header {
    align-items: center;
    background: rgba(255, 255, 255, .96);
    border-bottom: 1px solid var(--app-border);
    box-shadow: var(--app-shadow-sm);
    display: flex;
    gap: 14px;
    height: var(--app-header-height);
    left: var(--app-sidebar-width);
    padding: 0 24px;
    position: fixed;
    right: 0;
    top: 0;
    transition: left var(--app-transition);
    z-index: var(--app-z-header);
}

.app-sidebar.is-compact ~ .app-header { left: var(--app-sidebar-compact-width); }
.app-sidebar.is-hidden ~ .app-header { left: 0; }

.app-menu-toggle {
    align-items: center;
    background: var(--app-surface-muted);
    border: 1px solid var(--app-border);
    border-radius: 9px;
    color: var(--app-text);
    cursor: pointer;
    display: inline-flex;
    font-size: 16px;
    height: 38px;
    justify-content: center;
    margin: 0;
    padding: 0;
    transition: var(--app-transition);
    width: 38px;
}

.app-menu-toggle:hover { background: var(--app-primary-soft); color: var(--app-primary); }
.app-menu-toggle-mobile { display: none; }

.app-sidebar-control { position: relative; display: inline-flex; }
.app-sidebar-menu {
    background: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: 10px;
    box-shadow: var(--app-shadow);
    display: grid;
    gap: 3px;
    left: 0;
    min-width: 184px;
    padding: 6px;
    position: absolute;
    top: calc(100% + 8px);
    z-index: calc(var(--app-z-header) + 2);
}
.app-sidebar-option {
    align-items: center;
    background: transparent;
    border: 0;
    border-radius: 7px;
    color: var(--app-text);
    cursor: pointer;
    display: flex;
    font-size: 12px;
    gap: 9px;
    min-height: 34px;
    padding: 7px 10px;
    text-align: left;
    white-space: nowrap;
    width: 100%;
}
.app-sidebar-option i { color: var(--app-muted); width: 16px; }
.app-sidebar-option:hover,
.app-sidebar-option.is-selected { background: var(--app-primary-soft); color: var(--app-primary-dark); }
.app-sidebar-option.is-selected i { color: var(--app-primary); }

.app-header-context { min-width: 0; }
.app-header-home-link { text-decoration: none !important; }
.app-header-title { color: var(--app-navy); font-size: 14px; font-weight: 700; line-height: 1.2; }
.app-header-subtitle { color: var(--app-muted); font-size: 12px; margin-top: 2px; }
.app-header-spacer { flex: 1; }
.app-header-actions { align-items: center; display: flex; gap: 12px; }
.app-header-public { left: 0; }
.app-header-public ~ .app-content { margin-left: 0; }

.app-notification-button {
    align-items: center;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 10px;
    color: var(--app-muted);
    cursor: pointer;
    display: inline-flex;
    flex: 0 0 38px;
    font-size: 16px;
    height: 38px;
    justify-content: center;
    margin: 0;
    padding: 0;
    position: relative;
    transition: var(--app-transition);
    width: 38px;
}
.app-notification-button:hover { background: var(--app-primary-soft); color: var(--app-primary); }
.app-notification-button:focus-visible { box-shadow: 0 0 0 3px rgba(37,99,235,.18); outline: none; }
.app-notification-button.has-notifications { background: var(--app-primary-soft); color: var(--app-primary); }
.app-notification-badge {
    align-items: center;
    background: var(--app-danger);
    border: 2px solid var(--app-surface);
    border-radius: 999px;
    color: #fff;
    display: flex;
    font-size: 9px;
    font-weight: 750;
    height: 18px;
    justify-content: center;
    line-height: 1;
    min-width: 18px;
    padding: 0 4px;
    position: absolute;
    right: -3px;
    top: -3px;
}

.app-user-button {
    align-items: center;
    background: transparent;
    border: 0;
    color: var(--app-text);
    display: flex;
    gap: 9px;
    margin: 0;
    max-width: 300px;
    padding: 5px 8px;
}

.app-user-button:hover { background: var(--app-surface-muted); border-radius: 10px; }
.app-user-avatar { align-items: center; background: var(--app-primary-soft); border-radius: 50%; color: var(--app-primary); display: inline-flex; flex: 0 0 34px; height: 34px; justify-content: center; }
.app-user-name { font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.app-sidebar {
    background: linear-gradient(180deg, #111827 0%, #172033 100%);
    bottom: 0;
    color: #cbd5e1;
    left: 0;
    overflow-x: hidden;
    overflow-y: auto;
    position: fixed;
    top: 0;
    transform: translateX(0);
    transition: transform var(--app-transition), width var(--app-transition);
    width: var(--app-sidebar-width);
    z-index: var(--app-z-sidebar);
}

.app-sidebar.is-hidden { transform: translateX(calc(-1 * var(--app-sidebar-width))); }
.app-sidebar.is-compact { overflow: visible; width: var(--app-sidebar-compact-width); }
.app-brand { align-items: center; border-bottom: 1px solid rgba(255,255,255,.08); color: inherit; display: flex; gap: 12px; height: var(--app-header-height); padding: 0 20px; text-decoration: none !important; }
.app-brand img { height: 34px; width: 34px; }
.app-brand-copy { min-width: 0; }
.app-brand-name { color: #fff; font-size: 15px; font-weight: 700; letter-spacing: -.15px; }
.app-brand-caption { color: #94a3b8; font-size: 10px; letter-spacing: .7px; text-transform: uppercase; }
.app-nav { padding: 16px 12px 28px; }
.app-nav-label { color: #64748b; font-size: 10px; font-weight: 700; letter-spacing: .09em; padding: 10px 12px 7px; text-transform: uppercase; }
.app-nav ul { list-style: none; margin: 0; padding: 0; }
.app-nav-item { margin: 3px 0; position: relative; }
.app-nav-link {
    align-items: center;
    border-radius: 9px;
    color: #cbd5e1 !important;
    cursor: pointer;
    display: flex !important;
    font-size: 13px !important;
    font-weight: 500;
    gap: 11px;
    min-height: 40px;
    padding: 9px 12px !important;
    text-decoration: none !important;
    transition: var(--app-transition) !important;
}
button.app-nav-link { background: transparent; border: 0; font-family: inherit; text-align: left; width: 100%; }
.app-nav-link i { color: #94a3b8; font-size: 14px; text-align: center; width: 18px; }
.app-nav-link:hover, .app-nav-link.active { background: rgba(255,255,255,.08) !important; color: #fff !important; }
.app-nav-link:hover i, .app-nav-link.active i { color: #60a5fa; }
.app-nav-link.dropdown-toggle::after { margin-left: auto; position: static; transform: none; }
.app-nav-submenu { background: rgba(0,0,0,.12); border-radius: 9px; margin: 4px 0 7px !important; padding: 5px !important; }
.app-nav-submenu:not(.show) { display: none !important; }
.app-nav-submenu.show { display: block; }
.app-nav-submenu .app-nav-link { font-size: 12px !important; min-height: 34px; padding: 7px 10px 7px 38px !important; }

.app-sidebar.is-compact .app-brand { justify-content: center; padding: 0; }
.app-sidebar.is-compact .app-brand-copy, .app-sidebar.is-compact .app-nav-label { display: none; }
.app-sidebar.is-compact .app-nav { overflow: visible; padding-left: 10px; padding-right: 10px; }
.app-sidebar.is-compact .app-nav-link { font-size: 0 !important; gap: 0; justify-content: center; padding-left: 9px !important; padding-right: 9px !important; }
.app-sidebar.is-compact .app-nav-link i { font-size: 17px; width: 22px; }
.app-sidebar.is-compact .app-nav-link.dropdown-toggle::after { display: none; }
.app-sidebar.is-compact .app-nav-submenu:not(.show) { display: none !important; }
.app-sidebar.is-compact .app-nav-submenu.show {
    background: #172033;
    border: 1px solid rgba(148,163,184,.2);
    border-radius: 10px;
    box-shadow: 0 16px 38px rgba(15,23,42,.28);
    display: block !important;
    left: calc(100% + 9px);
    margin: 0 !important;
    min-width: 220px;
    padding: 7px !important;
    position: absolute;
    top: 0;
    z-index: calc(var(--app-z-sidebar) + 2);
}
.app-sidebar.is-compact .app-nav-submenu.show::before { color: #94a3b8; content: attr(data-menu-title); display: block; font-size: 9px; font-weight: 750; letter-spacing: .07em; padding: 5px 8px 7px; text-transform: uppercase; }
.app-sidebar.is-compact .app-nav-submenu .app-nav-link { font-size: 12px !important; justify-content: flex-start; min-height: 34px; padding: 7px 9px !important; }

.app-sidebar-backdrop { display: none; }
.app-content { margin-left: var(--app-sidebar-width); min-height: 100vh; padding-top: var(--app-header-height); transition: margin-left var(--app-transition); }
.app-sidebar.is-compact ~ .app-content { margin-left: var(--app-sidebar-compact-width); }
.app-sidebar.is-hidden ~ .app-content { margin-left: 0; }
.app-content-inner { margin: 0 auto; max-width: 1800px; padding: 28px 30px 40px; }

/* --- Autenticación ----------------------------------------------------- */
.portal-login-page {
    align-items: center;
    display: flex;
    justify-content: center;
    min-height: calc(100vh - var(--app-header-height) - 68px);
    padding: 20px 0 36px;
    width: 100%;
}

.portal-login-shell {
    background: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: 22px;
    box-shadow: var(--app-shadow);
    display: grid;
    grid-template-columns: minmax(250px, .85fr) minmax(340px, 1fr);
    max-width: 820px;
    overflow: hidden;
    width: 100%;
}

.portal-login-brand {
    align-items: flex-start;
    background: linear-gradient(145deg, #172033 0%, #1d4ed8 145%);
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 430px;
    padding: 42px 36px;
    position: relative;
}

.portal-login-brand::after {
    background: rgba(96, 165, 250, .22);
    border-radius: 50%;
    content: "";
    height: 180px;
    position: absolute;
    right: -70px;
    top: -70px;
    width: 180px;
}

.portal-login-logo {
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 16px;
    height: 68px;
    margin-bottom: 28px;
    padding: 13px;
    position: relative;
    width: 68px;
    z-index: 1;
}

.portal-login-logo img { height: 100%; width: 100%; }
.portal-login-brand h1 { font-size: 23px; font-weight: 750; letter-spacing: -.3px; margin: 0; position: relative; z-index: 1; }
.portal-login-brand p { color: rgba(255, 255, 255, .78); font-size: 13px; line-height: 1.6; margin: 10px 0 0; max-width: 245px; position: relative; z-index: 1; }
.portal-login-brand-caption { color: #bfdbfe; font-size: 10px; font-weight: 750; letter-spacing: .1em; margin-top: 28px; position: relative; text-transform: uppercase; z-index: 1; }

.portal-login-card { align-self: center; padding: 42px 44px; width: 100%; }
.portal-login-heading { margin-bottom: 28px; }
.portal-login-heading h2 { color: var(--app-navy); font-size: 25px; font-weight: 750; letter-spacing: -.4px; margin: 0; }
.portal-login-heading p { color: var(--app-muted); font-size: 13px; line-height: 1.5; margin: 8px 0 0; }
.portal-login-field { margin-bottom: 17px; }
.portal-login-field label { color: var(--app-text); display: block; font-size: 11px; font-weight: 700; margin-bottom: 7px; }
.portal-login-input { position: relative; }
.portal-login-input i { color: var(--app-muted); left: 15px; pointer-events: none; position: absolute; top: 50%; transform: translateY(-50%); z-index: 1; }
.portal-login-input input {
    background: var(--app-surface-muted);
    border: 1px solid var(--app-border);
    border-radius: 10px;
    box-sizing: border-box;
    color: var(--app-text);
    font-size: 13px;
    min-height: 46px;
    padding: 11px 14px 11px 43px;
    transition: border-color var(--app-transition), box-shadow var(--app-transition), background var(--app-transition);
    width: 100%;
}
.portal-login-input input::placeholder { color: var(--app-muted); opacity: 1; }
.portal-login-input input:focus { background: var(--app-surface); border-color: var(--app-primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, .14); outline: none; }
.portal-login-submit {
    align-items: center;
    background: var(--app-primary);
    border: 0;
    border-radius: 10px;
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    font-size: 13px;
    font-weight: 700;
    justify-content: center;
    min-height: 46px;
    margin-top: 8px;
    transition: background var(--app-transition), box-shadow var(--app-transition), transform var(--app-transition);
    width: 100%;
}
.portal-login-submit:hover { background: var(--app-primary-dark); box-shadow: 0 6px 14px rgba(37, 99, 235, .2); transform: translateY(-1px); }
.portal-login-submit:focus-visible { box-shadow: 0 0 0 3px rgba(37, 99, 235, .22); outline: none; }
.portal-login-forgot { color: var(--app-primary); display: block; font-size: 12px; margin-top: 21px; text-align: center; text-decoration: none; }
.portal-login-forgot:hover { color: var(--app-primary-dark); text-decoration: underline; }
.portal-login-icon { align-items: center; background: var(--app-primary-soft); border-radius: 12px; color: var(--app-primary); display: flex; font-size: 20px; height: 48px; justify-content: center; width: 48px; }
.portal-login-access-denied { text-align: center; }
.portal-login-access-denied .portal-login-icon { margin: 0 auto 18px; }
.portal-login-access-denied h2 { margin-bottom: 9px; }
.portal-login-access-denied p { color: var(--app-muted); font-size: 13px; margin-bottom: 22px; }
.portal-login-home { display: inline-flex; text-decoration: none; width: auto; padding: 0 24px; }

:root[data-theme="dark"] .portal-login-brand { background: linear-gradient(145deg, #0b1220 0%, #1e3a8a 145%); }
:root[data-theme="dark"] .portal-login-input input:focus { box-shadow: 0 0 0 3px rgba(96, 165, 250, .18); }

@media (max-width: 700px) {
    .portal-login-page { min-height: calc(100vh - var(--app-header-height) - 40px); padding: 8px 0 24px; }
    .portal-login-shell { display: block; max-width: 480px; }
    .portal-login-brand { min-height: auto; padding: 25px 28px; }
    .portal-login-brand::after { height: 130px; right: -55px; top: -60px; width: 130px; }
    .portal-login-logo { height: 52px; margin-bottom: 17px; padding: 10px; width: 52px; }
    .portal-login-brand h1 { font-size: 20px; }
    .portal-login-brand p { display: none; }
    .portal-login-brand-caption { margin-top: 8px; }
    .portal-login-card { padding: 30px 25px 34px; }
}

.page-header { align-items: flex-end; display: flex; gap: 20px; justify-content: space-between; margin-bottom: 20px; }
.page-header h1, .page-header h2, .page-header h3, .page-header h4 { color: var(--app-navy); font-size: 24px; font-weight: 700; letter-spacing: -.45px; margin: 0; }
.page-header p { color: var(--app-muted); margin: 5px 0 0; }
.page-header-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; }
.app-toolbar { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; padding: 14px 14px 8px; }
.app-toolbar > [class*="col-"] { flex: 0 0 auto; max-width: none; padding: 0; width: auto; }
.app-toolbar .btn { align-items: center; display: inline-flex; gap: 7px; margin: 0; }
.app-toolbar-inline { display: inline-flex; padding: 0; }
.app-export-link { color: var(--app-primary) !important; margin: 0 !important; padding: 4px 0 !important; }
.table-actions { align-items: center; display: inline-flex; flex-wrap: nowrap; gap: 6px; justify-content: center; }
.action-btn { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: 8px; color: #475569; cursor: pointer; display: inline-flex; font-size: 11px; font-weight: 650; gap: 6px; height: 30px; justify-content: center; line-height: 1; padding: 0 10px; transition: var(--app-transition); white-space: nowrap; }
.action-btn:hover { box-shadow: 0 3px 8px rgba(15,23,42,.1); text-decoration: none; transform: translateY(-1px); }
.action-btn:focus-visible { box-shadow: 0 0 0 3px rgba(37,99,235,.18); outline: none; }
.action-btn:disabled { cursor: not-allowed; opacity: .45; transform: none; }
.action-btn-edit { background: var(--app-primary-soft); border-color: #bfdbfe; color: var(--app-primary-dark); }
.action-btn-edit:hover { background: #dbeafe; border-color: #93c5fd; color: #1d4ed8; }
.action-btn-secondary { background: #f8fafc; border-color: #cbd5e1; color: #334155; }
.action-btn-secondary:hover { background: #eef2ff; border-color: #a5b4fc; color: #4338ca; }
.action-btn-danger { background: #fff5f5; border-color: #fecaca; color: var(--app-danger); }
.action-btn-danger:hover { background: #fee2e2; border-color: #fca5a5; color: #b91c1c; }
.action-btn-icon { padding: 0; width: 30px; }
.company-history-button { min-width: 62px; }
.app-grid-checkbox {
    accent-color: var(--app-primary);
    cursor: pointer;
    height: 17px;
    margin: 0;
    vertical-align: middle;
    width: 17px;
}
.app-grid-checkbox:focus-visible { outline: 3px solid rgba(37,99,235,.2); outline-offset: 2px; }

.app-readonly-field {
    display: flex;
    align-items: center;
    min-height: 42px;
    color: var(--app-text);
    background: var(--app-surface-muted);
}
.status-icon,
.document-icon {
    align-items: center;
    border: 1px solid transparent;
    border-radius: 8px;
    display: inline-flex;
    font-size: 12px;
    height: 28px;
    justify-content: center;
    line-height: 1;
    width: 28px;
}
.status-icon-success { background: #ecfdf5; border-color: #a7f3d0; color: var(--app-success); }
.status-icon-danger { background: #fff5f5; border-color: #fecaca; color: var(--app-danger); }
.document-icon { background: var(--app-primary-soft); border-color: #bfdbfe; color: var(--app-primary); transition: var(--app-transition); }
.document-icon:hover { background: #dbeafe; border-color: #93c5fd; color: var(--app-primary-dark); text-decoration: none; transform: translateY(-1px); }
.document-icon:focus-visible,
.document-link:focus-visible { box-shadow: 0 0 0 3px rgba(37,99,235,.18); outline: none; }
.document-icon-pdf { background: #fff5f5; border-color: #fecaca; color: var(--app-danger); }
.document-icon-pdf:hover { background: #fee2e2; border-color: #fca5a5; color: #b91c1c; }
.document-link { align-items: center; border-radius: 7px; color: var(--app-primary); display: inline-flex; font-size: 11px; font-weight: 650; gap: 5px; padding: 4px 7px; transition: var(--app-transition); }
.document-link:hover { background: var(--app-primary-soft); color: var(--app-primary-dark); text-decoration: none; }
.document-link-pdf { color: var(--app-danger); }
.document-link-pdf:hover { background: #fff5f5; color: #b91c1c; }
.icon-link { text-decoration: none !important; }
.icon-link-success { color: var(--app-success); }
.icon-link-danger { color: var(--app-danger); }

.report-list-card .app-table th { white-space: nowrap; }
.report-list-card .app-table td { vertical-align: middle; }
.report-date { color: var(--app-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.report-status { align-items: center; border: 1px solid transparent; border-radius: 999px; display: inline-flex; font-size: 11px; font-weight: 700; gap: 5px; padding: 5px 9px; white-space: nowrap; }
.report-status-ready { background: #ecfdf5; border-color: #a7f3d0; color: var(--app-success); }
.report-status-processing { background: #fffbeb; border-color: #fde68a; color: var(--app-warning); }
.report-file-pending { color: var(--app-muted); font-size: 11px; }
.report-empty-state { color: var(--app-muted); padding: 50px 20px !important; text-align: center; }
.report-empty-state i { display: block; font-size: 24px; margin-bottom: 10px; }
.report-empty-state span { display: block; }

.surface-card, .filter-card, .grid-card {
    background: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    box-shadow: var(--app-shadow-sm);
}
.filter-card { margin-bottom: 18px; padding: 18px 20px; }
.filter-card.row, .surface-card.row, .grid-card.row { margin-left: 0; margin-right: 0; }
.filter-card-split { align-items: center; display: grid; gap: 24px; grid-template-columns: minmax(320px, .85fr) minmax(0, 2fr); }
.filter-card-split > * { min-width: 0; }
.grid-card { overflow: hidden; overflow-anchor: none; padding: 0; }
.surface-card { padding: 20px; }
.upload-card { border: 1px solid var(--app-border); border-radius: var(--app-radius); box-shadow: var(--app-shadow-sm); margin: 0 auto 18px; max-width: 700px; overflow: hidden; width: 100%; }
.upload-card .card-header { background: #f8fafc; border-bottom: 1px solid var(--app-border); padding: 15px 20px; }
.upload-card .card-header h4 { color: var(--app-navy); font-size: 15px; font-weight: 700; margin: 0; }
.upload-card .card-body { padding: 20px; }
.section-title { color: var(--app-navy); font-size: 13px; font-weight: 700; margin-bottom: 12px; }
.filter-grid { align-items: end; display: grid; gap: 14px; grid-template-columns: repeat(6, minmax(130px, 1fr)); }
.cfdi-payment-filter { grid-template-columns: repeat(3, minmax(150px, 220px)) minmax(260px, 1fr); }
.form-field { min-width: 0; }
.form-field-wide { grid-column: span 2; }
.form-field label { display: block; margin: 0 0 6px; }
.form-field .form-control, .form-field .e-control-wrapper { margin: 0 !important; max-width: 100%; width: 100% !important; }
.form-field-split { display: grid; gap: 8px; grid-template-columns: 1fr 1fr; }
.form-field-stack { display: grid; gap: 8px; }
.form-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }
.form-actions .btn { margin: 0; }
.shared-filter-grid { align-items: end; display: flex; flex-wrap: wrap; gap: 12px; }
.shared-filter-grid .form-group { align-items: stretch; display: flex; flex-direction: column; margin: 0 !important; min-width: 90px; }
.shared-filter-grid .form-group label { margin: 0 0 6px !important; }
.shared-filter-grid .form-control, .shared-filter-grid .e-control-wrapper { margin: 0 !important; min-height: 38px !important; }
.shared-filter-grid > .btn, .shared-filter-grid > .dropdown .btn { height: 38px !important; margin: 0 !important; min-width: 100px; }
.shared-filter-grid > div:last-child { margin: 0 !important; }
.shared-filter-grid > .app-toolbar { align-self: flex-end; min-height: 38px; padding: 0; }
.shared-filter-grid > .app-toolbar .btn { height: 38px !important; }
.shared-filter-grid > .control-section { height: 0; margin: 0; padding: 0; position: absolute; width: 0; }
.provider-filter-layout { align-items: flex-end; display: flex; flex-wrap: wrap; gap: 12px; }
.provider-filter-layout > .shared-filter-grid { flex: 1 1 760px; }
.toolbox-ir { align-self: flex-end; min-height: 38px; }
.toolbox-ir .btn { height: 38px !important; }
.toast-host { height: 0; overflow: visible; position: absolute; width: 0; }
.e-toast-container {
    margin: 0 !important;
    max-width: calc(100vw - 28px) !important;
    right: 18px !important;
    top: calc(var(--app-header-height) + 14px) !important;
    z-index: 1500 !important;
}
.e-toast-container .e-toast {
    background: var(--app-surface) !important;
    border: 1px solid var(--app-border) !important;
    border-left: 4px solid var(--app-primary) !important;
    border-radius: var(--app-radius) !important;
    box-shadow: 0 16px 40px rgba(15, 23, 42, .16) !important;
    color: var(--app-text) !important;
    margin: 0 0 10px !important;
    min-height: 78px !important;
    overflow: hidden;
    padding: 15px 42px 15px 16px !important;
}
.e-toast-container .e-toast.e-toast-success { border-left-color: var(--app-success) !important; }
.e-toast-container .e-toast.e-toast-warning { border-left-color: var(--app-warning) !important; }
.e-toast-container .e-toast.e-toast-danger { border-left-color: var(--app-danger) !important; }
.e-toast-container .e-toast.e-toast-info { border-left-color: var(--app-info) !important; }
.e-toast-container .e-toast .e-toast-icon {
    align-items: center;
    background: var(--app-primary-soft);
    border-radius: 50%;
    color: var(--app-primary);
    display: inline-flex !important;
    flex: 0 0 34px;
    font-family: "Font Awesome 5 Free", "FontAwesome" !important;
    font-size: 16px !important;
    font-weight: 900 !important;
    height: 34px !important;
    justify-content: center;
    margin-right: 12px !important;
    position: static !important;
    width: 34px !important;
}
.e-toast-container .e-toast.e-toast-success .e-toast-icon { background: #ecfdf5; color: var(--app-success); }
.e-toast-container .e-toast.e-toast-warning .e-toast-icon { background: #fffbeb; color: var(--app-warning); }
.e-toast-container .e-toast.e-toast-danger .e-toast-icon { background: #fff5f5; color: var(--app-danger); }
.e-toast-container .e-toast.e-toast-info .e-toast-icon { background: #f0f9ff; color: var(--app-info); }
.e-toast-container .e-toast .e-toast-message { margin: 0 !important; padding: 0 !important; }
.e-toast-container .e-toast .e-toast-title {
    color: var(--app-navy) !important;
    font-size: 13px !important;
    font-weight: 750 !important;
    line-height: 1.3 !important;
    margin: 0 0 5px !important;
}
.e-toast-container .e-toast .e-toast-content {
    color: var(--app-muted) !important;
    font-size: 12px !important;
    line-height: 1.5 !important;
    margin: 0 !important;
    padding: 0 !important;
}
.e-toast-container .e-toast .e-toast-close-icon {
    color: #94a3b8 !important;
    font-size: 12px !important;
    right: 14px !important;
    top: 14px !important;
}
.e-toast-container .e-toast .e-toast-close-icon:hover { color: var(--app-text) !important; }
.e-toast-container .e-toast .e-toast-progress { height: 3px !important; opacity: .55; }
@media (max-width: 575.98px) {
    .e-toast-container { left: 14px !important; right: 14px !important; width: auto !important; }
    .e-toast-container .e-toast { width: 100% !important; }
}
.metric-grid { display: grid; gap: 14px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 18px; }
.metric-card { align-items: center; background: var(--app-surface); border: 1px solid var(--app-border); border-radius: var(--app-radius); display: flex; gap: 14px; min-height: 88px; padding: 16px 18px; }
.metric-icon { align-items: center; background: var(--app-primary-soft); border-radius: 11px; color: var(--app-primary); display: flex; flex: 0 0 44px; font-size: 18px; height: 44px; justify-content: center; }
.metric-label { color: var(--app-muted); font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.metric-value { color: var(--app-navy); font-size: 24px; font-weight: 750; letter-spacing: -.5px; line-height: 1.2; margin-top: 3px; }
.status-summary { display: grid; gap: 10px; grid-template-columns: repeat(3, minmax(130px, 1fr)); }
.status-summary-item { background: #f8fafc; border: 1px solid var(--app-border); border-radius: 10px; cursor: pointer; display: flex; flex-direction: column; min-height: 70px; padding: 11px 13px; text-align: left; transition: var(--app-transition); }
.status-summary-item:hover { background: #fff; border-color: #b9c8e3; box-shadow: var(--app-shadow-sm); transform: translateY(-1px); }
.status-summary-item::before { background: var(--status-color, var(--app-primary)); border-radius: 999px; content: ""; height: 4px; margin-bottom: 8px; width: 28px; }
.status-summary-item.is-success { --status-color: var(--app-success); }
.status-summary-item.is-warning { --status-color: var(--app-warning); }
.status-summary-item.is-danger { --status-color: var(--app-danger); }
.status-summary-item.is-primary { --status-color: var(--app-primary); }
.status-summary-value { color: var(--app-navy); font-size: 18px; font-weight: 750; line-height: 1; }
.status-summary-label { color: var(--app-muted); font-size: 11px; font-weight: 600; margin-top: 5px; }

@media (min-width: 1400px) {
    .compliance-overview {
        gap: 16px;
        grid-template-columns: minmax(340px, auto) minmax(0, 1fr);
        padding: 12px 16px;
    }
    .compliance-overview .shared-filter-grid { flex-wrap: nowrap; gap: 8px; }
    .compliance-overview .shared-filter-grid .form-group { min-width: 90px; }
    .compliance-overview .shared-filter-grid .form-group label,
    .compliance-overview .shared-filter-grid .form-control { margin-left: 0 !important; }
    .compliance-overview .status-summary { gap: 8px; grid-template-columns: repeat(6, minmax(92px, 1fr)); }
    .compliance-overview .status-summary-item { border-radius: 8px; min-height: 56px; padding: 7px 10px; }
    .compliance-overview .status-summary-item::before { height: 3px; margin-bottom: 5px; width: 22px; }
    .compliance-overview .status-summary-value { font-size: 16px; }
    .compliance-overview .status-summary-label { font-size: 10px; margin-top: 3px; white-space: nowrap; }
}

.container-wide { max-width: none; width: 100%; }
.content { padding-top: 0; }

.form-control, .e-input-group, .e-input-group.e-control-wrapper {
    border-color: var(--app-border) !important;
    border-radius: var(--app-radius-sm) !important;
    min-height: 38px;
}
.form-control { color: var(--app-text); font-size: 13px; max-width: 100%; }
.app-content .e-control-wrapper { max-width: 100%; }
.form-control:focus, .e-input-group.e-input-focus, .e-input-group.e-control-wrapper.e-input-focus {
    border-color: #93b4f8 !important;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .12) !important;
}
label { color: #475569; font-size: 12px; font-weight: 600; }

.btn { border-radius: 8px; font-size: 13px; font-weight: 600; min-height: 36px; transition: var(--app-transition); }
.btn-primary { background: var(--app-primary) !important; border-color: var(--app-primary) !important; box-shadow: 0 1px 2px rgba(37,99,235,.2); }
.btn-primary:hover { background: var(--app-primary-dark) !important; border-color: var(--app-primary-dark) !important; transform: translateY(-1px); }
.dropdown-menu { border: 1px solid var(--app-border); border-radius: 10px; box-shadow: var(--app-shadow); padding: 7px !important; }
.dropdown-menu a { border-radius: 7px; color: var(--app-text); padding: 8px 10px; }
.dropdown-menu a:hover { background: var(--app-primary-soft); color: var(--app-primary-dark); }
.app-report-menu {
    max-width: calc(100vw - 32px);
    min-width: 280px;
}
.app-report-menu .dropdown-item {
    line-height: 1.35;
    white-space: normal;
}

.e-grid { border: 0 !important; border-radius: var(--app-radius); font-family: inherit !important; }
.e-grid .e-gridheader { background: #f8fafc !important; border-color: var(--app-border) !important; }
.e-grid .e-headercell { background: #f8fafc !important; border-color: var(--app-border) !important; height: 44px !important; padding-left: 5px !important; padding-right: 5px !important; vertical-align: middle !important; }
.e-grid .e-headercelldiv {
    color: #475569 !important;
    font-size: 9px !important;
    font-weight: 700 !important;
    letter-spacing: .01em;
    line-height: 1.15 !important;
    overflow: hidden !important;
    text-overflow: clip !important;
    text-transform: uppercase;
    white-space: normal !important;
}
.e-grid .e-headercelldiv .e-headertext { overflow-wrap: anywhere; white-space: normal !important; }
.e-grid .e-rowcell { border-color: #edf2f7 !important; color: #334155 !important; font-family: inherit !important; font-size: 12px !important; height: 38px !important; padding: 7px 8px !important; }
.e-grid .e-altrow { background: #fbfdff !important; }
.e-grid .e-row:hover .e-rowcell:not(.e-selectionbackground) { background: var(--app-primary-soft) !important; }
.e-grid .e-rowcell.e-selectionbackground,
.e-grid .e-row:hover .e-rowcell.e-selectionbackground,
.e-grid tr[aria-selected="true"] .e-rowcell,
.e-grid tr[aria-selected="true"]:hover .e-rowcell {
    background: var(--app-primary) !important;
    color: #fff !important;
}
.e-grid .e-toolbar, .e-grid .e-gridpager { background: var(--app-surface) !important; border-color: var(--app-border) !important; }
.e-grid .e-content { scrollbar-gutter: stable; }
.e-grid .e-toolbar { min-height: 50px !important; padding: 6px 10px !important; }
.e-grid .e-toolbar .e-toolbar-items { background: var(--app-surface) !important; }
.e-grid .e-toolbar .e-toolbar-item { background: transparent !important; }
.e-grid .e-search { border-radius: 8px !important; }
.e-grid .e-currentitem, .e-grid .e-active { background: var(--app-primary) !important; color: #fff !important; }
.gridtemplate { font-size: 12px !important; }

.rz-data-grid { border: 0 !important; border-radius: var(--app-radius); overflow: hidden; }
.rz-grid-table thead th { background: #f8fafc !important; color: #475569 !important; font-weight: 700 !important; line-height: 1.15; vertical-align: middle; white-space: normal !important; }
.rz-grid-table thead th .rz-column-title-content { overflow-wrap: anywhere; white-space: normal !important; }
.rz-grid-table tbody tr:hover { background: var(--app-primary-soft) !important; }

.badge { border-radius: 999px !important; font-size: 11px; font-weight: 600; padding: 5px 9px; }
.modal { z-index: var(--app-z-modal) !important; }
.modal-content, .e-dialog { border: 0 !important; border-radius: var(--app-radius-lg) !important; box-shadow: 0 24px 60px rgba(15,23,42,.2) !important; }
.modal-header, .e-dlg-header-content { border-bottom: 1px solid var(--app-border) !important; }
.modal-backdrop { z-index: var(--app-z-modal-backdrop) !important; }
.swal2-container,
.swal2-container.swal2-backdrop-show { z-index: var(--app-z-sweetalert) !important; }

@media (max-width: 767.98px) {
    .app-header { left: 0; padding: 0 14px; }
    .app-header-context { display: none; }
    .app-user-name { display: none; }
    .app-menu-toggle-desktop { display: none; }
    .app-menu-toggle-mobile { display: inline-flex; }
    .app-sidebar, .app-sidebar.is-compact, .app-sidebar.is-hidden { box-shadow: 18px 0 45px rgba(15,23,42,.22); transform: translateX(-100%); width: var(--app-sidebar-width); }
    .app-sidebar.is-open, .app-sidebar.is-open.is-compact, .app-sidebar.is-open.is-hidden { transform: translateX(0); }
    .app-sidebar.is-compact .app-brand { justify-content: flex-start; padding: 0 20px; }
    .app-sidebar.is-compact .app-brand-copy { display: block; }
    .app-sidebar.is-compact .app-nav-label { display: block; }
    .app-sidebar.is-compact .app-nav { padding: 16px 12px 28px; }
    .app-sidebar.is-compact .app-nav-link { font-size: 13px !important; gap: 11px; justify-content: flex-start; padding: 9px 12px !important; }
    .app-sidebar.is-compact .app-nav-link i { font-size: 14px; width: 18px; }
    .app-sidebar.is-compact .app-nav-link.dropdown-toggle::after { display: inline-block; }
    .app-sidebar.is-compact .app-nav-submenu.show { box-shadow: none; display: block !important; margin: 4px 0 7px !important; min-width: 0; position: static; }
    .app-sidebar.is-compact .app-nav-submenu.show::before { display: none; }
    .app-sidebar.is-compact .app-nav-submenu .app-nav-link { font-size: 12px !important; min-height: 34px; padding: 7px 10px 7px 38px !important; }
    .app-sidebar-backdrop { background: rgba(15,23,42,.45); inset: 0; opacity: 0; pointer-events: none; position: fixed; transition: opacity var(--app-transition); z-index: var(--app-z-sidebar-backdrop); }
    .app-sidebar-backdrop.is-visible { display: block; opacity: 1; pointer-events: auto; }
    .app-content, .app-sidebar.is-compact ~ .app-content, .app-sidebar.is-hidden ~ .app-content { margin-left: 0; }
    .app-content-inner { padding: 20px 14px 30px; }
    .page-header { align-items: flex-start; flex-direction: column; gap: 12px; }
    .page-header h1, .page-header h2, .page-header h3, .page-header h4 { font-size: 21px; }
    .filter-card, .surface-card { padding: 15px; }
    .filter-card-split { grid-template-columns: 1fr; }
    .metric-grid { grid-template-columns: 1fr; }
    .status-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .filter-grid { grid-template-columns: 1fr; }
    .form-field-wide { grid-column: auto; }
    .form-actions { justify-content: stretch; }
    .form-actions .btn { flex: 1; }
    .shared-filter-grid { align-items: stretch; display: grid; grid-template-columns: 1fr; }
    .shared-filter-grid .form-group, .shared-filter-grid .form-control, .shared-filter-grid .e-control-wrapper { width: 100% !important; }
}

@media (min-width: 768px) and (max-width: 1199.98px) {
    .filter-grid { grid-template-columns: repeat(3, minmax(150px, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
.server-pager {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .5rem;
    min-height: 3rem;
    padding: .55rem .75rem;
    color: var(--app-text-muted, #64748b);
    font-size: .8rem;
    border-top: 1px solid var(--app-border, #e2e8f0);
}

.server-pager .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border-color: var(--app-border, #e2e8f0);
    border-radius: .5rem;
}

.server-pager-size.form-control {
    width: 4.5rem;
    height: 2rem;
    padding: .2rem 1.5rem .2rem .5rem;
    font-size: .8rem;
}

@media (max-width: 640px) {
    .server-pager {
        justify-content: center;
        flex-wrap: wrap;
    }
}

/* Empresa / certificados */
.certificate-panel { padding: 22px 4px 4px; }
.certificate-panel-header { align-items: center; display: flex; gap: 20px; justify-content: space-between; margin-bottom: 18px; }
.certificate-panel-header h4 { color: var(--app-navy); font-size: 17px; font-weight: 750; margin: 0 0 4px; }
.certificate-panel-header p { color: var(--app-muted); font-size: 12px; margin: 0; }
.certificate-add-btn { align-items: center; display: inline-flex; gap: 8px; white-space: nowrap; }
.certificate-table-wrap { border: 1px solid var(--app-border); border-radius: var(--app-radius); overflow: auto; }
.certificate-table { border-collapse: separate; border-spacing: 0; min-width: 920px; width: 100%; }
.certificate-table th { background: var(--app-surface-muted); border-bottom: 1px solid var(--app-border); color: #475569; font-size: 10px; font-weight: 750; letter-spacing: .035em; padding: 11px 13px; text-align: left; text-transform: uppercase; white-space: nowrap; }
.certificate-table td { border-bottom: 1px solid #edf2f7; color: #334155; font-size: 12px; padding: 11px 13px; vertical-align: middle; }
.certificate-table tbody tr { transition: background var(--app-transition); }
.certificate-table tbody tr:hover { background: var(--app-primary-soft); }
.certificate-table tbody tr:last-child td { border-bottom: 0; }
.certificate-serial { display: block; font-family: Consolas, "SFMono-Regular", monospace; max-width: 170px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.certificate-type-badge { background: var(--app-primary-soft); border: 1px solid #bfdbfe; border-radius: 999px; color: var(--app-primary-dark); display: inline-flex; font-size: 10px; font-weight: 750; padding: 4px 8px; text-transform: uppercase; }
.certificate-expiration { align-items: flex-start; display: flex; flex-direction: column; gap: 4px; }
.certificate-status { align-items: center; border-radius: 999px; display: inline-flex; font-size: 10px; font-weight: 700; gap: 4px; padding: 3px 7px; }
.certificate-status.is-valid { background: #ecfdf5; color: #047857; }
.certificate-status.is-expired { background: #fef2f2; color: #b91c1c; }
.certificate-default-btn { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: 999px; color: var(--app-muted); cursor: pointer; display: inline-flex; font-size: 11px; font-weight: 650; gap: 7px; min-height: 30px; padding: 4px 9px 4px 5px; transition: var(--app-transition); }
.certificate-default-btn:hover { border-color: #93b4f8; color: var(--app-primary); }
.certificate-default-btn.is-active { background: #ecfdf5; border-color: #a7f3d0; color: #047857; }
.certificate-default-indicator { align-items: center; background: #e2e8f0; border-radius: 50%; color: transparent; display: inline-flex; height: 20px; justify-content: center; width: 20px; }
.certificate-default-btn.is-active .certificate-default-indicator { background: var(--app-success); color: #fff; }
.certificate-empty-state { align-items: center; border: 1px dashed #cbd5e1; border-radius: var(--app-radius); color: var(--app-muted); display: flex; flex-direction: column; min-height: 210px; justify-content: center; padding: 32px; text-align: center; }
.certificate-empty-icon { align-items: center; background: var(--app-primary-soft); border-radius: 14px; color: var(--app-primary); display: flex; font-size: 22px; height: 48px; justify-content: center; margin-bottom: 12px; width: 48px; }
.certificate-empty-state h5 { color: var(--app-navy); font-size: 14px; margin: 0 0 5px; }
.certificate-empty-state p { font-size: 12px; margin: 0; }

/* Descarga y carga de XML */
.xml-workspace, .xml-upload-workspace { margin: 0 auto; max-width: 1080px; overflow: hidden; padding: 0; }
.xml-upload-workspace { max-width: 900px; }
.xml-workspace-header { align-items: center; background: linear-gradient(135deg, #fff 0%, #f8fbff 100%); border-bottom: 1px solid var(--app-border); display: flex; gap: 14px; padding: 19px 23px; }
.xml-workspace-icon { align-items: center; background: var(--app-primary-soft); border: 1px solid #dbeafe; border-radius: 12px; color: var(--app-primary); display: flex; flex: 0 0 44px; font-size: 18px; height: 44px; justify-content: center; }
.xml-workspace-header h4 { color: var(--app-navy); font-size: 16px; font-weight: 750; margin: 0 0 3px; }
.xml-workspace-header p { color: var(--app-muted); font-size: 12px; margin: 0; }
.modern-form-tabs.e-tab > .e-tab-header { background: #fff; border-bottom: 1px solid var(--app-border); padding: 0 20px; }
.xml-download-tabs.e-tab { padding-top: 10px; }
.modern-form-tabs.e-tab > .e-tab-header .e-toolbar-item .e-tab-wrap { color: var(--app-muted); font-size: 12px; font-weight: 650; min-height: 45px; padding: 0 14px; }
.modern-form-tabs.e-tab > .e-tab-header .e-toolbar-item.e-active .e-tab-wrap { color: var(--app-primary); }
.modern-form-tabs.e-tab > .e-tab-header .e-indicator { background: var(--app-primary); height: 2px; }
.xml-filter-form, .xml-upload-form { padding: 22px 24px 24px; }
.xml-form-grid { display: grid; gap: 18px 20px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.xml-field-full { grid-column: 1 / -1; }
.xml-form-grid .form-field { min-width: 0; }
.xml-form-grid .form-field > label, .xml-document-types legend { color: #475569; display: block; font-size: 11px; font-weight: 750; margin: 0 0 7px; }
.field-optional { color: #94a3b8; font-size: 10px; font-weight: 600; margin-left: 4px; }
.field-help { color: var(--app-muted); display: block; font-size: 10px; margin-top: 5px; }
.xml-document-types { border: 0; margin: 0; min-width: 0; padding: 0; }
.xml-type-options { display: grid; gap: 8px; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.xml-type-option { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: 9px; cursor: pointer; display: flex; font-size: 11px; gap: 8px; min-height: 38px; padding: 8px 10px; transition: var(--app-transition); }
.xml-type-option:hover { border-color: #93b4f8; }
.xml-type-option.is-selected { background: var(--app-primary-soft); border-color: #bfdbfe; color: var(--app-primary-dark); }
.xml-switch-row { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 10px; display: flex; gap: 16px; justify-content: space-between; padding: 12px 14px; }
.xml-switch-row strong { color: var(--app-text); display: block; font-size: 12px; }
.xml-switch-row > div > span { color: var(--app-muted); display: block; font-size: 10px; margin-top: 2px; }
.app-switch { cursor: pointer; flex: 0 0 auto; margin: 0; }
.app-switch input { height: 1px; opacity: 0; position: absolute; width: 1px; }
.app-switch-track { background: #cbd5e1; border-radius: 999px; display: block; height: 24px; padding: 3px; transition: var(--app-transition); width: 42px; }
.app-switch-track span { background: #fff; border-radius: 50%; box-shadow: 0 1px 3px rgba(15,23,42,.2); display: block; height: 18px; transition: transform var(--app-transition); width: 18px; }
.app-switch input:checked + .app-switch-track { background: var(--app-primary); }
.app-switch input:checked + .app-switch-track span { transform: translateX(18px); }
.app-switch input:focus-visible + .app-switch-track { box-shadow: 0 0 0 3px rgba(37,99,235,.18); }
.xml-form-actions { align-items: center; border-top: 1px solid var(--app-border); display: flex; gap: 16px; justify-content: space-between; margin-top: 22px; padding-top: 17px; }
.xml-form-actions > span { color: var(--app-muted); font-size: 10px; }
.xml-form-actions > span i { color: var(--app-primary); margin-right: 4px; }
.xml-form-actions .btn, .xml-upload-actions .btn, .xml-uuid-toolbar .btn { align-items: center; display: inline-flex; gap: 7px; justify-content: center; }
.xml-uuid-panel { padding: 20px 24px 24px; }
.app-callout { align-items: flex-start; border: 1px solid; border-radius: 10px; display: flex; gap: 10px; padding: 11px 13px; }
.app-callout-info { background: #f0f9ff; border-color: #bae6fd; color: #0369a1; }
.app-callout > i { margin-top: 2px; }
.app-callout strong, .app-callout span { display: block; }
.app-callout strong { font-size: 11px; }
.app-callout span { font-size: 10px; margin-top: 2px; }
.xml-uuid-toolbar { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; margin: 15px 0; }
.xml-uuid-count { color: var(--app-muted); font-size: 10px; margin-left: auto; }
.xml-uuid-grid { overflow: hidden; padding: 0; }
.modern-dropzone { align-items: center; background: #fbfdff; border: 1.5px dashed #b8c5d6; border-radius: 14px; cursor: pointer; display: flex; flex-direction: column; justify-content: center; min-height: 238px; padding: 30px; position: relative; text-align: center; transition: var(--app-transition); }
.modern-dropzone:hover { background: var(--app-primary-soft); border-color: #60a5fa; transform: translateY(-1px); }
.modern-dropzone.has-file { background: #f0fdf4; border-color: #86efac; }
.modern-dropzone-icon { align-items: center; background: var(--app-primary-soft); border-radius: 15px; color: var(--app-primary); display: flex; font-size: 24px; height: 58px; justify-content: center; margin-bottom: 14px; width: 58px; }
.modern-dropzone.has-file .modern-dropzone-icon { background: #dcfce7; color: var(--app-success); }
.modern-dropzone-title { color: var(--app-navy); font-size: 15px; font-weight: 750; }
.modern-dropzone-description { color: var(--app-muted); font-size: 11px; margin-top: 5px; max-width: 100%; }
.modern-dropzone-description strong { display: block; max-width: 500px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.modern-dropzone-button { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: 8px; color: var(--app-primary); display: inline-flex; font-size: 11px; font-weight: 700; gap: 7px; margin-top: 17px; padding: 8px 12px; }
.modern-file-input { height: 1px; opacity: 0; overflow: hidden; position: absolute; width: 1px; }
.upload-requirements { display: grid; gap: 10px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 14px; }
.upload-requirements > div { align-items: flex-start; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 9px; display: flex; gap: 9px; min-width: 0; padding: 10px; }
.upload-requirements i { color: var(--app-primary); font-size: 12px; margin-top: 2px; }
.upload-requirements span { color: var(--app-muted); font-size: 9px; line-height: 1.4; }
.upload-requirements strong { color: #475569; display: block; font-size: 10px; margin-bottom: 2px; }
.xml-upload-actions { align-items: center; border-top: 1px solid var(--app-border); display: flex; gap: 16px; justify-content: space-between; margin-top: 18px; padding-top: 17px; }
.upload-selection-status { align-items: center; color: var(--app-muted); display: inline-flex; font-size: 10px; gap: 6px; }
.upload-selection-status.is-ready { color: var(--app-success); }

@media (max-width: 767.98px) {
    .certificate-panel-header, .xml-form-actions, .xml-upload-actions { align-items: stretch; flex-direction: column; }
    .certificate-add-btn, .xml-form-actions .btn, .xml-upload-actions .btn { width: 100%; }
    .xml-form-grid { grid-template-columns: 1fr; }
    .xml-field-full { grid-column: auto; }
    .xml-type-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .upload-requirements { grid-template-columns: 1fr; }
    .xml-filter-form, .xml-upload-form, .xml-uuid-panel { padding: 17px 15px 19px; }
    .xml-workspace-header { padding: 16px; }
}

/* Listas SAT / consulta de contribuyentes */
.sat-history-context { align-items: center; background: #f8fbff; border: 1px solid #dbeafe; border-radius: var(--app-radius); display: flex; gap: 11px; margin-bottom: 16px; padding: 11px 14px; }
.sat-history-icon { align-items: center; background: var(--app-primary-soft); border-radius: 9px; color: var(--app-primary); display: flex; flex: 0 0 34px; height: 34px; justify-content: center; }
.sat-history-context strong, .sat-history-context span { display: block; }
.sat-history-context strong { color: var(--app-navy); font-size: 11px; }
.sat-history-context span { color: var(--app-muted); font-size: 10px; margin-top: 2px; }
.sat-history-context .btn { align-items: center; display: inline-flex; gap: 6px; margin-left: auto; }
.contributors-page { display: flex; flex-direction: column; gap: 14px; }
.contributors-search-card { align-items: center; display: flex; gap: 24px; justify-content: space-between; padding: 16px 18px; }
.contributors-search-copy { align-items: center; display: flex; gap: 11px; min-width: 240px; }
.contributors-search-copy strong, .contributors-search-copy span { display: block; }
.contributors-search-copy strong { color: var(--app-navy); font-size: 12px; }
.contributors-search-copy span { color: var(--app-muted); font-size: 10px; margin-top: 2px; }
.contributors-search-icon { align-items: center; background: var(--app-primary-soft); border-radius: 10px; color: var(--app-primary); display: flex; flex: 0 0 38px; height: 38px; justify-content: center; }
.contributors-search-control { display: flex; flex: 1; gap: 8px; justify-content: flex-end; max-width: 620px; }
.contributors-search-control .form-control { flex: 1; min-width: 220px; }
.contributors-search-control .btn { align-items: center; display: inline-flex; gap: 7px; justify-content: center; min-width: 104px; }
.contributors-summary { align-items: center; display: flex; gap: 9px; }
.contributors-summary > div:not(.contributors-updated) { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: 9px; display: grid; gap: 0 7px; grid-template-columns: auto auto; min-width: 145px; padding: 8px 11px; }
.contributors-summary > div:not(.contributors-updated) > strong { color: var(--app-navy); font-size: 16px; line-height: 1; }
.contributors-summary > div:not(.contributors-updated) > span:last-child { color: var(--app-muted); font-size: 9px; grid-column: 2; margin-top: 2px; }
.summary-dot { background: var(--app-primary); border-radius: 999px; grid-row: 1 / 3; height: 24px; width: 3px; }
.summary-dot.is-warning { background: var(--app-warning); }
.summary-dot.is-danger { background: var(--app-danger); }
.contributors-updated { align-items: center; color: var(--app-muted); display: flex; font-size: 9px; gap: 6px; margin-left: auto; }
.contributors-grid-stack { display: grid; gap: 14px; grid-template-columns: minmax(0, 1fr); }
.contributors-grid-card, .contributor-detail-card { overflow: hidden; padding: 0; }
.contributors-grid-header { align-items: center; border-bottom: 1px solid var(--app-border); display: flex; gap: 14px; justify-content: space-between; min-height: 50px; padding: 11px 15px; }
.contributors-grid-header > div { align-items: center; display: flex; gap: 9px; min-width: 0; }
.contributors-grid-header h3 { color: var(--app-navy); font-size: 13px; font-weight: 750; margin: 0; }
.section-accent { background: var(--app-primary); border-radius: 999px; display: inline-block; height: 22px; width: 3px; }
.section-accent.is-warning { background: var(--app-warning); }
.section-accent.is-danger { background: var(--app-danger); }
.section-accent.is-success { background: var(--app-success); }
.section-accent.is-primary { background: var(--app-primary); }
.result-count { background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 999px; color: var(--app-muted); font-size: 9px; font-weight: 650; padding: 4px 8px; white-space: nowrap; }
.contributors-grid-scroll { overflow-x: auto; }
.contributors-grid-scroll > .rz-data-grid { min-width: 720px; }
.contributors-grid-card .rz-data-grid, .contributor-detail-card .rz-data-grid { border-radius: 0 !important; }
.contributors-grid-card .rz-grid-table tbody tr { cursor: pointer; }
.contributor-detail-card { margin-top: 0; }
.detail-entity-name { color: var(--app-muted); font-size: 10px; max-width: 65%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.opinion-result-link { align-items: center; border-radius: 999px; display: inline-flex; font-size: 10px; font-weight: 700; gap: 5px; padding: 4px 8px; }
.opinion-result-link.is-positive { background: #ecfdf5; color: #047857; }
.opinion-result-link.is-negative { background: #fef2f2; color: #b91c1c; }
.sat-list-summary { display: grid; gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 15px; }
.sat-list-summary > div { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: var(--app-radius); display: flex; gap: 11px; min-height: 66px; padding: 11px 13px; }
.sat-list-summary > div > span:last-child { color: var(--app-muted); font-size: 9px; }
.sat-list-summary strong { color: var(--app-navy); display: block; font-size: 18px; line-height: 1.1; margin-bottom: 3px; }
.sat-summary-icon { align-items: center; background: var(--app-primary-soft); border-radius: 10px; color: var(--app-primary); display: flex; flex: 0 0 38px; height: 38px; justify-content: center; }
.sat-summary-icon.is-success { background: #ecfdf5; color: var(--app-success); }
.sat-summary-icon.is-danger { background: #fef2f2; color: var(--app-danger); }
.sat-list-card { overflow: hidden; padding: 0; }
.sat-list-toolbar { align-items: center; border-bottom: 1px solid var(--app-border); display: flex; gap: 20px; justify-content: space-between; min-height: 64px; padding: 13px 16px; }
.sat-list-toolbar h3 { color: var(--app-navy); font-size: 14px; font-weight: 750; margin: 0 0 3px; }
.sat-list-toolbar p { color: var(--app-muted); font-size: 10px; margin: 0; }
.sat-list-grid { overflow-x: auto; }
.sat-list-grid > .e-grid { min-width: 700px; }
.sat-file-link { align-items: center; color: var(--app-primary); display: inline-flex; font-size: 11px; font-weight: 650; gap: 6px; }
.sat-count-link { align-items: center; border-radius: 999px; display: inline-flex; font-size: 10px; font-weight: 750; justify-content: center; min-width: 32px; padding: 4px 8px; }
.sat-count-link.is-success { background: #ecfdf5; color: #047857; }
.sat-count-link.is-danger { background: #fef2f2; color: #b91c1c; }
.sat-count-zero { color: #94a3b8; font-size: 10px; }

@media (max-width: 767.98px) {
    .sat-history-context, .contributors-search-card, .sat-list-toolbar { align-items: stretch; flex-direction: column; }
    .sat-history-context .btn { margin-left: 0; width: 100%; }
    .contributors-search-control { max-width: none; width: 100%; }
    .contributors-summary { flex-wrap: wrap; }
    .contributors-summary > div:not(.contributors-updated) { flex: 1; min-width: 125px; }
    .contributors-updated { margin-left: 0; width: 100%; }
    .sat-list-summary { grid-template-columns: 1fr; }
}

@media (max-width: 479.98px) {
    .contributors-search-control { flex-direction: column; }
    .contributors-search-control .form-control, .contributors-search-control .btn { min-width: 0; width: 100%; }
}

/* Edición de empresa */
#cambiarRfcModal .modal-header { align-items: center; padding: 17px 22px; }
#cambiarRfcModal .modal-body { padding: 0 22px 22px; }
#cambiarRfcModal .nav-tabs { border-bottom: 1px solid var(--app-border); gap: 4px; padding-top: 8px; }
#cambiarRfcModal .nav-tabs .nav-link { border: 0; border-bottom: 2px solid transparent; border-radius: 0; color: var(--app-muted); font-size: 12px; font-weight: 650; margin: 0; padding: 12px 14px 10px; }
#cambiarRfcModal .nav-tabs .nav-link:hover { color: var(--app-primary); }
#cambiarRfcModal .nav-tabs .nav-link.active { background: transparent; border-bottom-color: var(--app-primary); color: var(--app-primary); }
.company-modal-title { align-items: center; display: flex; gap: 11px; min-width: 0; }
.company-modal-title > span { align-items: center; background: var(--app-primary-soft); border-radius: 10px; color: var(--app-primary); display: flex; flex: 0 0 38px; height: 38px; justify-content: center; }
.company-modal-title h3 { color: var(--app-navy); font-size: 17px; font-weight: 750; line-height: 1.2; margin: 0; }
.company-modal-title p { color: var(--app-muted); font-size: 10px; margin: 3px 0 0; max-width: 720px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.company-modal-close { align-items: center; background: var(--app-surface-muted) !important; border: 1px solid var(--app-border) !important; border-radius: 9px; display: flex; height: 34px; justify-content: center; margin: 0 !important; padding: 0 !important; width: 34px; }
.company-modal-close span { font-size: 22px; line-height: 1; }
.company-tab-panel { padding-top: 16px; }
.company-settings-form { display: flex; flex-direction: column; gap: 12px; }
.company-validation-summary { background: #fef2f2; border: 1px solid #fecaca; border-radius: 9px; color: #b91c1c; font-size: 10px; padding: 9px 12px; }
.company-validation-summary:empty { display: none; }
.company-validation-summary ul { margin: 0; padding-left: 18px; }
.company-form-section { background: #fff; border: 1px solid var(--app-border); border-radius: var(--app-radius); overflow: hidden; }
.company-form-section-header { align-items: center; background: linear-gradient(135deg, #fff 0%, #f8fbff 100%); border-bottom: 1px solid var(--app-border); display: flex; gap: 10px; padding: 11px 14px; }
.company-form-section-header > span { align-items: center; background: var(--app-primary-soft); border-radius: 8px; color: var(--app-primary); display: flex; flex: 0 0 31px; font-size: 11px; height: 31px; justify-content: center; }
.company-form-section-header h4 { color: var(--app-navy); font-size: 12px; font-weight: 750; margin: 0 0 2px; }
.company-form-section-header p { color: var(--app-muted); font-size: 9px; margin: 0; }
.company-form-grid { display: grid; gap: 13px 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 14px; }
.company-form-grid .form-field { min-width: 0; }
.company-form-grid .form-field > label { color: #475569; display: block; font-size: 10px; font-weight: 700; margin-bottom: 6px; }
.company-form-grid .form-control, .company-form-grid .e-control-wrapper { min-height: 38px; width: 100% !important; }
.company-field-wide { grid-column: 1 / -1; }
.company-number-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.company-number-control { align-items: stretch; display: flex; }
.company-number-control .form-control { border-bottom-right-radius: 0 !important; border-top-right-radius: 0 !important; min-width: 0; }
.company-number-control > span { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-left: 0; border-radius: 0 var(--app-radius-sm) var(--app-radius-sm) 0; color: var(--app-muted); display: flex; flex: 0 0 auto; font-size: 9px; padding: 0 9px; white-space: nowrap; }
.company-switch-grid { display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 14px; }
.company-switch-option { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 9px; display: flex; gap: 12px; justify-content: space-between; min-height: 58px; padding: 10px 12px; }
.company-switch-option strong, .company-switch-option > div > span { display: block; }
.company-switch-option strong { color: var(--app-text); font-size: 10px; }
.company-switch-option > div > span { color: var(--app-muted); font-size: 9px; line-height: 1.35; margin-top: 3px; }
.company-fiscal-grid { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) minmax(140px, .55fr); }
.company-form-actions { align-items: center; background: rgba(255,255,255,.97); border-top: 1px solid var(--app-border); bottom: -22px; display: flex; gap: 8px; justify-content: flex-end; margin: 2px -22px -22px; padding: 13px 22px; position: sticky; z-index: 2; }
.company-form-actions .btn { align-items: center; display: inline-flex; gap: 7px; justify-content: center; min-width: 120px; }

@media (max-width: 991.98px) {
    .company-number-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .company-fiscal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
    #cambiarRfcModal .modal-body { padding: 0 14px 14px; }
    #cambiarRfcModal .nav-tabs { flex-wrap: nowrap; overflow-x: auto; }
    #cambiarRfcModal .nav-tabs .nav-link { white-space: nowrap; }
    .company-form-grid, .company-number-grid, .company-fiscal-grid, .company-switch-grid { grid-template-columns: 1fr; }
    .company-field-wide { grid-column: auto; }
    .company-form-actions { bottom: -14px; margin: 2px -14px -14px; padding: 12px 14px; }
}

.password-mask { align-items: center; color: var(--app-muted); display: inline-flex; font-family: system-ui, sans-serif; font-size: 12px; gap: 7px; letter-spacing: .12em; user-select: none; }
.password-mask i { color: #94a3b8; font-size: 10px; letter-spacing: 0; }

/* Edición de representantes legales */
.representative-modal { max-width: 980px !important; }
.representative-modal .modal-header { align-items: center; padding: 17px 22px; }
.representative-modal .modal-header > .modal-title { margin: 0; min-width: 0; }
.representative-modal .modal-content { border: 0; border-radius: 16px; box-shadow: 0 24px 70px rgba(15,23,42,.24); overflow: hidden; }
.representative-modal .modal-header > .close { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 9px; display: flex; height: 34px; justify-content: center; margin: 0; opacity: .75; padding: 0; width: 34px; }
.representative-modal .modal-header > .close:hover { background: var(--app-primary-soft); color: var(--app-primary); opacity: 1; }
.representative-modal .modal-body { padding: 0 22px 20px; }
.representative-modal .modal-footer { align-items: center; border-top: 1px solid var(--app-border); gap: 8px; padding: 13px 22px; }
.representative-modal .modal-footer:empty { display: none; }
.representative-modal .modal-footer .btn { align-items: center; display: inline-flex; justify-content: center; margin: 0; min-width: 120px; }

/* Histórico de documentos de empresas */
.company-history-modal { max-width: 1180px !important; width: calc(100vw - 32px); }
.company-history-modal .modal-content { border: 0; border-radius: 16px; box-shadow: 0 24px 70px rgba(15,23,42,.24); max-height: calc(100vh - 80px); overflow: hidden; }
.company-history-modal .modal-header { align-items: center; padding: 17px 22px; }
.company-history-modal .modal-header > .modal-title { margin: 0; min-width: 0; }
.company-history-modal .modal-header > .close { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 9px; display: flex; height: 34px; justify-content: center; margin: 0; opacity: .75; padding: 0; width: 34px; }
.company-history-modal .modal-header > .close:hover { background: var(--app-primary-soft); color: var(--app-primary); opacity: 1; }
.company-history-modal .modal-body { overflow: auto; padding: 18px 22px; }
.company-history-modal .modal-footer { align-items: center; border-top: 1px solid var(--app-border); gap: 8px; padding: 13px 22px; }
.company-history-modal .modal-footer .btn { align-items: center; display: inline-flex; justify-content: center; margin: 0; min-width: 112px; }
.company-history-modal .opinion-history-container { margin: 0; }
.company-history-modal .opinion-history-container > div { flex: 1 1 auto; max-width: 100%; padding: 0; width: 100%; }
.company-history-modal .opinion-history-container h3 { display: none; }
.company-history-modal .e-grid { min-width: 760px; }
.representative-tabs { border-bottom: 1px solid var(--app-border); gap: 4px; padding-top: 8px; }
.representative-tabs .nav-link { align-items: center; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; color: var(--app-muted); display: inline-flex; font-size: 12px; font-weight: 650; gap: 7px; margin: 0; padding: 12px 14px 10px; }
.representative-tabs .nav-link:hover { color: var(--app-primary); }
.representative-tabs .nav-link.active { background: transparent !important; border-bottom-color: var(--app-primary) !important; color: var(--app-primary) !important; }
.representative-tab-content { padding-top: 16px; }
.representative-form-grid { align-items: start; }
.representative-active-option { margin: 0; }
.representative-active-option input { height: 18px; width: 18px; }
.representative-companies-panel { display: flex; flex-direction: column; gap: 12px; }
.representative-assignment-help { align-items: center; background: var(--app-primary-soft); border: 1px solid #bfdbfe; border-radius: 10px; display: flex; gap: 10px; padding: 10px 12px; }
.representative-assignment-help > span { align-items: center; background: #fff; border-radius: 8px; color: var(--app-primary); display: flex; flex: 0 0 30px; height: 30px; justify-content: center; }
.representative-assignment-help strong, .representative-assignment-help p { display: block; }
.representative-assignment-help strong { color: var(--app-navy); font-size: 10px; }
.representative-assignment-help p { color: var(--app-muted); font-size: 9px; margin: 2px 0 0; }
.representative-company-lists { display: grid; gap: 14px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.representative-company-list { background: #fff; border: 1px solid var(--app-border); border-radius: var(--app-radius); min-width: 0; overflow: hidden; }
.representative-list-heading { align-items: center; background: var(--app-surface-muted); border-bottom: 1px solid var(--app-border); display: flex; gap: 9px; padding: 10px 12px; }
.representative-list-heading > span { align-items: center; background: #fff; border: 1px solid var(--app-border); border-radius: 8px; color: var(--app-muted); display: flex; flex: 0 0 29px; height: 29px; justify-content: center; }
.representative-company-list.is-assigned .representative-list-heading > span { background: #ecfdf5; border-color: #a7f3d0; color: #059669; }
.representative-list-heading h4 { color: var(--app-navy); font-size: 11px; font-weight: 750; margin: 0; }
.representative-list-heading p { color: var(--app-muted); font-size: 9px; margin: 2px 0 0; }
.representative-company-list .e-listbox-wrapper { border: 0 !important; }
.representative-company-list .e-list-parent { padding: 5px !important; }
.representative-company-list .e-list-item { border-radius: 7px; color: var(--app-text); font-size: 10px; margin: 2px 0; min-height: 34px; padding: 8px 10px !important; }
.representative-company-list .e-list-item.e-selected { background: var(--app-primary-soft) !important; color: var(--app-primary) !important; }
.representative-company-list .e-filter-parent { border-bottom: 1px solid var(--app-border); padding: 9px !important; }
.representative-certificates { padding-top: 16px; }
.representative-section-intro { align-items: center; display: flex; justify-content: space-between; margin-bottom: 10px; }
.representative-section-intro h4 { color: var(--app-navy); font-size: 13px; font-weight: 750; margin: 0; }
.representative-section-intro p { color: var(--app-muted); font-size: 9px; margin: 3px 0 0; }

/* Catálogos para emisión de pagos */
.payment-modal { max-width: 760px !important; }
.payment-modal .modal-content { border: 0; border-radius: 16px; box-shadow: 0 24px 70px rgba(15,23,42,.24); overflow: hidden; }
.payment-modal .modal-header { align-items: center; padding: 17px 22px; }
.payment-modal .modal-header > .modal-title { margin: 0; min-width: 0; }
.payment-modal .modal-header > .close { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 9px; display: flex; height: 34px; justify-content: center; margin: 0; padding: 0; width: 34px; }
.payment-modal .modal-body { padding: 18px 22px; }
.payment-modal .modal-footer { border-top: 1px solid var(--app-border); gap: 8px; padding: 13px 22px; }
.payment-modal .modal-footer .btn { align-items: center; display: inline-flex; justify-content: center; margin: 0; min-width: 112px; }
.payment-modal .rc-modal-body .form-group:last-child { margin-bottom: 0; }

/* Administración secundaria */
.provider-edit-modal { max-width: 900px !important; }
.provider-edit-modal .modal-content { border: 0; border-radius: 16px; box-shadow: 0 24px 70px rgba(15,23,42,.24); overflow: hidden; }
.provider-edit-modal .modal-header { align-items: center; padding: 17px 22px; }
.provider-edit-modal .modal-body { padding: 18px 22px; }
.provider-edit-modal .modal-footer { border-top: 1px solid var(--app-border); gap: 8px; padding: 13px 22px; }
.provider-edit-grid { display: grid; gap: 0 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.provider-field-wide { grid-column: 1 / -1; }
.provider-opinion-link a { align-items: center; background: var(--app-primary-soft); border: 1px solid #bfdbfe; border-radius: 8px; color: var(--app-primary); display: inline-flex; font-size: 10px; font-weight: 650; gap: 7px; min-height: 34px; padding: 7px 10px; text-decoration: none; width: fit-content; }
.provider-opinion-link a:hover { background: #dbeafe; border-color: #93c5fd; color: #1d4ed8; }
.provider-opinion-external { font-size: 8px; opacity: .7; }
.provider-opinion-empty { align-items: center; background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 8px; color: var(--app-muted); display: inline-flex; font-size: 10px; font-weight: 600; gap: 7px; min-height: 34px; padding: 7px 10px; width: fit-content; }
.provider-log-section { border-top: 1px solid var(--app-border); margin-top: 4px; padding-top: 14px; }
.certificate-upload-grid { display: grid; gap: 14px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.certificate-upload-field { min-width: 0; position: relative; }
.certificate-upload-field > span, .certificate-password-field > label { color: #475569; display: block; font-size: 10px; font-weight: 700; margin-bottom: 6px; }
.certificate-upload-field input[type=file] { height: 1px; opacity: 0; overflow: hidden; position: absolute; width: 1px; }
.certificate-file-picker { align-items: center; background: var(--app-surface-muted); border: 1px dashed #94a3b8; border-radius: 10px; color: var(--app-text); cursor: pointer; display: flex; gap: 9px; margin: 0; min-height: 54px; padding: 10px 12px; }
.certificate-file-picker:hover { background: var(--app-primary-soft); border-color: var(--app-primary); color: var(--app-primary); }
.certificate-file-picker i { color: var(--app-primary); }
.certificate-file-picker span { font-size: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.certificate-password-field { grid-column: 1 / -1; margin: 0; }
.provider-import-card { margin: 0 auto; max-width: 920px; overflow: hidden; padding: 0; }
.provider-import-body { align-items: center; display: flex; flex-direction: column; padding: 34px; text-align: center; }
.provider-import-icon { align-items: center; background: #ecfdf5; border-radius: 14px; color: #059669; display: flex; font-size: 24px; height: 58px; justify-content: center; margin-bottom: 12px; width: 58px; }
.provider-import-body h3, .provider-import-results-header h3 { color: var(--app-navy); font-size: 15px; font-weight: 750; margin: 0; }
.provider-import-body p, .provider-import-results-header p { color: var(--app-muted); font-size: 10px; margin: 4px 0 16px; }
.provider-import-picker { margin-bottom: 14px; max-width: 520px; text-align: left; width: 100%; }
.provider-import-results-header { padding: 18px 20px 4px; }
.provider-import-actions { align-items: center; border-top: 1px solid var(--app-border); display: flex; justify-content: flex-end; padding: 13px 18px; }

/* Formularios y componentes heredados modernizados */
.certificate-upload-modal { max-width: 720px !important; }
.certificate-upload-modal .modal-content, .company-create-modal .modal-content, .user-edit-modal .modal-content { border: 0; border-radius: 16px; box-shadow: 0 24px 70px rgba(15,23,42,.24); overflow: hidden; }
.certificate-upload-modal .modal-header, .company-create-modal .modal-header, .user-edit-modal .modal-header { align-items: center; padding: 17px 22px; }
.certificate-upload-modal .modal-body, .company-create-modal .modal-body { padding: 18px 22px; }
.certificate-upload-modal .modal-footer, .company-create-modal .modal-footer, .user-edit-modal .modal-footer { border-top: 1px solid var(--app-border); gap: 8px; padding: 13px 22px; }
.certificate-upload-help { margin-bottom: 16px; }
.app-input-with-icon { position: relative; }
.app-input-with-icon > i { color: #94a3b8; left: 12px; position: absolute; top: 50%; transform: translateY(-50%); z-index: 1; }
.app-input-with-icon > .form-control { padding-left: 34px; }
.company-create-modal { max-width: 720px !important; }
.company-create-grid { display: grid; gap: 0 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.company-create-grid .form-group:nth-last-child(-n+2) { min-width: 0; }
.user-edit-modal { max-width: 920px !important; }
.user-edit-modal .modal-content { max-height: calc(100vh - 32px); }
.user-edit-modal .modal-body { overflow-y: auto; padding: 0 22px 18px; }
.user-edit-summary { align-items: start; display: grid; gap: 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); padding-top: 17px; }
.user-edit-field { display: flex; flex-direction: column; margin: 0 !important; min-width: 0; }
.user-edit-field > label { display: block; margin: 0 0 6px !important; }
.user-edit-field .rz-dropdown,
.user-edit-field .app-readonly-field {
    align-items: center;
    display: flex;
    height: 38px !important;
    margin: 0 !important;
    min-height: 38px !important;
    width: 100% !important;
}
.user-edit-tabs { margin-top: 1px; }
.user-edit-tab-content { padding-top: 14px; }
.user-assignment-grid { min-width: 0; width: 100%; }
.company-settings-modal.modal-dialog {
    margin: 16px auto;
    max-width: 1500px !important;
    width: calc(100vw - 32px);
}
.company-settings-modal .modal-content { border: 0; border-radius: 18px; box-shadow: 0 28px 80px rgba(15,23,42,.28); overflow: hidden; }
.company-settings-modal .modal-header { align-items: center; padding: 18px 24px; }
.company-settings-modal .modal-content { max-height: calc(100vh - 100px); }
.company-settings-modal .modal-body { overflow-y: auto; padding: 0 24px 24px; }
.company-settings-tabs { padding-top: 7px; }
.company-settings-content { min-height: 320px; }
.company-settings-empty { margin: 80px auto; max-width: 520px; }
.xml-file-selector { padding: 2px; }
.xml-uploader-control { margin-top: 12px; }
.xml-uploader-control .e-upload { border: 1px solid var(--app-border) !important; border-radius: 10px; overflow: hidden; }
.xml-uploader-control .e-file-select-wrap {
    display: flex !important;
    justify-content: flex-end;
    padding: 10px 12px !important;
    background: var(--app-surface-muted) !important;
    border-bottom: 1px solid var(--app-border) !important;
}
.xml-uploader-control .e-file-select-wrap .e-btn {
    min-height: 34px;
    padding: 7px 14px !important;
    border: 1px solid #bfd3ff !important;
    border-radius: 9px !important;
    background: #fff !important;
    color: var(--app-primary) !important;
    font-weight: 700 !important;
    box-shadow: none !important;
}
.uuid-import-panel { display: flex; flex-direction: column; gap: 14px; }
.uuid-import-toolbar { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; }
.uuid-import-toolbar .btn { align-items: center; display: inline-flex; justify-content: center; }
.uuid-import-count { color: var(--app-muted); font-size: 10px; margin-left: auto; }
.uuid-import-count strong { color: var(--app-navy); font-size: 12px; }
.uuid-import-grid { border: 1px solid var(--app-border); border-radius: 10px; overflow: hidden; }
.cfdi-detail-dialog.e-dialog { border: 0 !important; border-radius: 16px !important; box-shadow: 0 28px 80px rgba(15,23,42,.3) !important; overflow: hidden; }
.cfdi-detail-dialog .e-dlg-header-content { align-items: center; background: #fff; border-bottom: 1px solid var(--app-border); padding: 15px 18px !important; }
.cfdi-detail-dialog .e-dlg-content { background: #fff; padding: 0 18px 14px !important; }
.cfdi-detail-dialog .e-footer-content { background: #fff; border-top: 1px solid var(--app-border); padding: 12px 18px !important; }
.cfdi-detail-dialog .e-footer-content .e-btn { border-radius: 8px !important; font-family: inherit; font-size: 11px; font-weight: 700; min-height: 34px; padding: 7px 13px; }
.cfdi-dialog-title { align-items: center; display: flex; gap: 10px; min-width: 0; }
.cfdi-dialog-title > span { align-items: center; background: var(--app-primary-soft); border-radius: 9px; color: var(--app-primary); display: flex; flex: 0 0 36px; height: 36px; justify-content: center; }
.cfdi-dialog-title strong, .cfdi-dialog-title small { display: block; }
.cfdi-dialog-title strong { color: var(--app-navy); font-size: 14px; font-weight: 750; }
.cfdi-dialog-title small { color: var(--app-muted); font-size: 9px; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfdi-detail-tabs { margin-top: 0; }
.cfdi-summary-list { border-collapse: separate; border-spacing: 0; margin: 14px 0 0; table-layout: fixed; width: 100%; }
.cfdi-summary-list .detallescfdi { display: grid; grid-template-columns: minmax(120px, 28%) minmax(0, 1fr); margin: 0 !important; }
.cfdi-summary-list .detallescfdi > td { border-bottom: 1px solid #edf2f7; color: var(--app-text); font-size: 10px; max-width: none; overflow-wrap: anywhere; padding: 8px 10px !important; width: auto; }
.cfdi-summary-list .detallescfdi > td:first-child { background: var(--app-surface-muted); color: #475569; font-weight: 700; }
.cfdi-relations-stack { display: flex; flex-direction: column; gap: 13px; padding: 14px 2px 4px; }
.cfdi-relation-section { border: 1px solid var(--app-border); border-radius: 11px; overflow: hidden; }
.cfdi-relation-heading { align-items: center; background: var(--app-surface-muted); border-bottom: 1px solid var(--app-border); display: flex; gap: 12px; justify-content: space-between; padding: 10px 12px; }
.cfdi-relation-heading h5 { color: var(--app-navy); font-size: 11px; font-weight: 750; margin: 0; }
.cfdi-relation-heading p { color: var(--app-muted); font-size: 9px; margin: 2px 0 0; }
.cfdi-relation-heading > span { background: #fff; border: 1px solid var(--app-border); border-radius: 999px; color: var(--app-muted); flex: 0 0 auto; font-size: 9px; padding: 4px 8px; }
.cfdi-relation-section > .toolbox, .cfdi-relation-section > [class*="toolbox"] { margin: 6px 8px; }
.cfdi-relation-totals { display: grid; gap: 8px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cfdi-relation-totals > div { background: var(--app-surface-muted); border: 1px solid var(--app-border); border-radius: 9px; padding: 9px 11px; }
.cfdi-relation-totals span, .cfdi-relation-totals strong { display: block; }
.cfdi-relation-totals span { color: var(--app-muted); font-size: 9px; }
.cfdi-relation-totals strong { color: var(--app-navy); font-size: 13px; margin-top: 2px; }
.cfdi-relation-totals .is-balance { background: var(--app-primary-soft); border-color: #bfdbfe; }
.cfdi-relation-totals .is-balance strong { color: var(--app-primary); }
.relation-filter-card { margin-bottom: 16px; padding: 16px 18px; }
.relation-filter-grid { align-items: end; display: grid; gap: 12px; grid-template-columns: minmax(250px, 1.55fr) minmax(190px, 1fr) minmax(150px, .75fr) minmax(150px, .75fr) minmax(180px, 1fr) auto; }
.relation-filter-grid .form-field { min-width: 0; }
.relation-filter-grid .form-field > label { color: #475569; display: block; font-size: 10px; font-weight: 700; margin: 0 0 5px; }
.relation-operation-field, .relation-period-field > div, .relation-dates-field > div { display: flex; gap: 6px; }
.relation-operation-field > .form-control { flex: 0 0 92px; }
.relation-operation-field > .e-control-wrapper { min-width: 0; }
.relation-period-field input { min-width: 0; }
.relation-period-field input:first-child { flex: 1.35; }
.relation-period-field input:last-child { flex: .65; }
.relation-dates-field > div { flex-direction: column; }
.relation-filter-actions { align-items: center; display: flex; gap: 7px; min-height: 38px; }
.relation-filter-actions .btn { align-items: center; display: inline-flex; justify-content: center; white-space: nowrap; }
.grid-search-button.e-btn { background: transparent !important; border: 0 !important; border-radius: 7px !important; box-shadow: none !important; color: var(--app-primary) !important; min-height: 32px; min-width: 34px; }
.grid-search-button.e-btn:hover { background: var(--app-primary-soft) !important; }

@media (max-width: 767.98px) {
    .company-settings-modal.modal-dialog { margin: 8px auto; width: calc(100vw - 16px); }
    .provider-edit-grid, .certificate-upload-grid { grid-template-columns: 1fr; }
    .provider-field-wide, .certificate-password-field { grid-column: auto; }
    .provider-import-body { padding: 24px 16px; }
    .company-create-grid, .user-edit-summary { grid-template-columns: 1fr; }
    .uuid-import-toolbar { align-items: stretch; flex-direction: column; }
    .uuid-import-toolbar .btn { width: 100%; }
    .uuid-import-count { margin: 2px 0 0; text-align: center; }
    .cfdi-relation-totals { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .cfdi-summary-list .detallescfdi { grid-template-columns: 1fr; }
    .relation-filter-grid { grid-template-columns: 1fr; }
    .relation-filter-actions { align-items: stretch; flex-direction: column; }
    .relation-filter-actions .btn { width: 100%; }
}

@media (min-width: 768px) and (max-width: 1399.98px) {
    .relation-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .relation-company-field { grid-column: span 2; }
}

@media (max-width: 767.98px) {
    .representative-modal .modal-body { padding: 0 14px 14px; }
    .representative-tabs { flex-wrap: nowrap; overflow-x: auto; }
    .representative-tabs .nav-link { white-space: nowrap; }
    .representative-company-lists { grid-template-columns: 1fr; }
}

/* Feedback local para grids: mantiene el contexto de la pantalla mientras carga. */
.grid-feedback { min-height: 360px; overflow-anchor: none; padding: 28px; border: 1px solid var(--app-border, #dfe7f1); border-radius: 12px; background: #fff; }
.grid-feedback-loading {
    contain: layout paint;
    min-height: 360px;
    overflow: hidden;
}
/* Los grids se renderizan después del estado de carga; conserva una huella estable durante la transición. */
.grid-card:has(.grid-feedback-loading) { min-height: 360px; }
.grid-skeleton-toolbar { width: min(320px, 45%); height: 38px; margin: 0 0 18px auto; border-radius: 8px; }
.grid-skeleton-row { display: grid; grid-template-columns: 1fr 2.2fr 1.3fr .7fr; gap: 16px; padding: 14px 10px; border-top: 1px solid #edf1f6; }
.grid-skeleton-row span { height: 14px; border-radius: 6px; }
.skeleton-pulse { background: linear-gradient(90deg, #edf1f6 25%, #f7f9fc 50%, #edf1f6 75%); background-size: 200% 100%; animation: grid-skeleton-pulse 1.25s ease-in-out infinite; }
@keyframes grid-skeleton-pulse { from { background-position: 100% 0; } to { background-position: -100% 0; } }
.grid-feedback-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.grid-feedback-empty .grid-feedback-icon { display: grid; place-items: center; width: 52px; height: 52px; margin-bottom: 12px; border-radius: 14px; color: #2563eb; background: #eff6ff; font-size: 21px; }
.grid-feedback-empty h3 { margin: 0 0 6px; color: #172033; font-size: 1.05rem; }
.grid-feedback-empty p { max-width: 520px; margin: 0 0 18px; color: #64748b; }
.btn:disabled, .action-btn:disabled { cursor: not-allowed; opacity: .62; box-shadow: none; transform: none; }
@media (prefers-reduced-motion: reduce) { .skeleton-pulse { animation: none; } }

/* Paginadores unificados: Radzen, Syncfusion y consultas con paginación manual. */
.e-grid .e-gridpager .e-mfirst,
.e-grid .e-gridpager .e-mprev,
.e-grid .e-gridpager .e-mnext,
.e-grid .e-gridpager .e-mlast {
    display: none !important;
}
.e-grid .e-gridpager {
    align-items: center !important;
    background: var(--app-surface) !important;
    border: 0 !important;
    border-top: 1px solid var(--app-border) !important;
    display: flex !important;
    gap: 8px;
    justify-content: flex-end !important;
    min-height: 52px !important;
    padding: 8px 12px !important;
    text-align: initial !important;
}
.e-grid .e-gridpager .e-parentmsgbar {
    float: none !important;
    margin-right: auto !important;
    order: -1 !important;
    padding: 0 !important;
    color: var(--app-text-muted, #64748b) !important;
    font-size: 12px !important;
}
.e-grid .e-gridpager .e-pagercontainer {
    display: inline-flex !important;
    gap: 4px;
    margin: 0 !important;
}
.e-grid .e-gridpager .e-numericitem,
.e-grid .e-gridpager .e-firstpage,
.e-grid .e-gridpager .e-prevpage,
.e-grid .e-gridpager .e-nextpage,
.e-grid .e-gridpager .e-lastpage,
.e-grid .e-gridpager .e-firstpagedisabled,
.e-grid .e-gridpager .e-prevpagedisabled,
.e-grid .e-gridpager .e-nextpagedisabled,
.e-grid .e-gridpager .e-lastpagedisabled {
    align-items: center !important;
    background: #fff !important;
    border: 1px solid var(--app-border) !important;
    border-radius: 8px !important;
    display: inline-flex !important;
    height: 34px !important;
    justify-content: center !important;
    margin: 0 !important;
    min-width: 34px !important;
    padding: 0 !important;
}
.e-grid .e-gridpager .e-numericitem:hover,
.e-grid .e-gridpager .e-firstpage:hover,
.e-grid .e-gridpager .e-prevpage:hover,
.e-grid .e-gridpager .e-nextpage:hover,
.e-grid .e-gridpager .e-lastpage:hover {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary-dark) !important;
}
.e-grid .e-gridpager .e-numericitem.e-currentitem {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #fff !important;
    font-weight: 700 !important;
}
.e-grid .e-gridpager .e-pagerdropdown {
    height: 34px !important;
    margin: 0 0 0 4px !important;
    width: 64px !important;
}

.rz-pager {
    align-items: center !important;
    background: var(--app-surface) !important;
    border-top: 1px solid var(--app-border) !important;
    color: var(--app-text-muted, #64748b) !important;
    gap: 8px !important;
    justify-content: flex-end !important;
    min-height: 52px !important;
    padding: 8px 12px !important;
}
.rz-pager .rz-pager-pages {
    display: inline-flex !important;
    gap: 4px !important;
    margin: 0 !important;
}
.rz-pager .rz-pager-prev,
.rz-pager .rz-pager-next {
    margin-inline-end: 0 !important;
    margin-inline-start: 0 !important;
}
.rz-pager .rz-pager-element,
.rz-pager .rz-pager-page {
    align-items: center !important;
    background: #fff !important;
    border: 1px solid var(--app-border) !important;
    border-radius: 8px !important;
    display: inline-flex !important;
    height: 34px !important;
    justify-content: center !important;
    min-width: 34px !important;
    padding: 0 !important;
}
.rz-pager .rz-pager-element:hover,
.rz-pager .rz-pager-page:hover {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary-dark) !important;
}
.rz-pager .rz-pager-page.rz-state-active {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #fff !important;
    font-weight: 700 !important;
}
.rz-pager .rz-pager-summary {
    color: var(--app-text-muted, #64748b) !important;
    font-size: 12px !important;
}
.rz-pager .rz-dropdown {
    height: 34px !important;
    margin: 0 !important;
    width: 64px !important;
}
.rz-pager .rz-pagesize-text { font-size: 12px !important; }

.server-pager {
    align-items: center;
    background: var(--app-surface);
    border-top: 1px solid var(--app-border);
    gap: 8px;
    min-height: 52px;
    padding: 8px 12px;
}
.server-pager .btn {
    border: 1px solid var(--app-border);
    border-radius: 8px;
    height: 34px;
    min-width: 34px;
    width: 34px;
}
.server-pager-size.form-control { height: 34px; }

/* Selector de empresas con búsqueda: conserva la misma altura y lenguaje visual de los filtros. */
.company-filter-select.rz-dropdown {
    align-items: center;
    background: var(--app-surface, #fff) !important;
    border: 1px solid var(--app-border, #dbe4ef) !important;
    border-radius: 9px !important;
    display: flex;
    min-height: 38px;
    padding: 0 10px !important;
}
.company-filter-select.rz-dropdown:focus-within {
    border-color: var(--app-primary, #2563eb) !important;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .14) !important;
}
.company-filter-select .rz-dropdown-label {
    color: var(--app-text, #1e293b);
    font-size: 13px;
    line-height: 36px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.company-filter-select .rz-dropdown-trigger { color: var(--app-muted, #64748b); }
.rz-dropdown-panel { z-index: 2000 !important; }

/* El buscador del dropdown de Radzen hereda el color de su tema base. Lo
   alineamos con el azul de la aplicación y con el aspecto de nuestros grids. */
.rz-dropdown-panel .rz-dropdown-filter-container {
    background: var(--app-surface, #fff) !important;
    border-bottom: 1px solid var(--app-border, #dbe4ef) !important;
    padding: 8px !important;
}
.rz-dropdown-panel .rz-dropdown-filter-container .rzi-search,
.rz-dropdown-panel .rz-dropdown-filter-container .rz-button,
.rz-dropdown-panel .rz-dropdown-filter-container button {
    align-items: center;
    background: var(--app-primary, #2563eb) !important;
    border: 1px solid var(--app-primary, #2563eb) !important;
    border-radius: 7px !important;
    color: #fff !important;
    display: inline-flex;
    justify-content: center;
}
.rz-dropdown-panel .rz-dropdown-filter-container .rzi-search:hover,
.rz-dropdown-panel .rz-dropdown-filter-container .rz-button:hover,
.rz-dropdown-panel .rz-dropdown-filter-container button:hover {
    background: var(--app-primary-dark, #1d4ed8) !important;
    border-color: var(--app-primary-dark, #1d4ed8) !important;
}
.rz-dropdown-panel .rz-dropdown-filter-container .rzi-search:before { color: #fff !important; }
.rz-dropdown-panel .rz-lookup-search {
    align-items: center;
    background: var(--app-surface, #fff) !important;
    border-bottom: 1px solid var(--app-border, #dbe4ef) !important;
    display: flex;
    gap: 8px;
    padding: 8px !important;
}
.rz-dropdown-panel .rz-lookup-search-input {
    background: var(--app-surface, #fff) !important;
    border: 1px solid var(--app-border, #dbe4ef) !important;
    border-radius: 7px !important;
    color: var(--app-text, #1e293b) !important;
    height: 32px !important;
}
.rz-dropdown-panel .rz-lookup-search .rz-button {
    background: var(--app-primary, #2563eb) !important;
    border: 1px solid var(--app-primary, #2563eb) !important;
    border-radius: 7px !important;
    color: #fff !important;
    height: 32px !important;
    width: 32px !important;
}
.rz-dropdown-panel .rz-lookup-search .rz-button:hover {
    background: var(--app-primary-dark, #1d4ed8) !important;
    border-color: var(--app-primary-dark, #1d4ed8) !important;
}
.rz-dropdown-panel .rz-lookup-search .rzi-search:before { color: #fff !important; }
.rz-dropdown-panel .rz-data-grid {
    background: var(--app-surface, #fff) !important;
    border: 0 !important;
    border-radius: 0 0 9px 9px !important;
    color: var(--app-text, #1e293b) !important;
    overflow: hidden;
}
.rz-dropdown-panel .rz-grid-table thead th {
    background: #f8fafc !important;
    border-bottom: 1px solid var(--app-border, #dbe4ef) !important;
    color: var(--app-muted, #64748b) !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    letter-spacing: .02em;
    padding: 9px 10px !important;
    text-transform: uppercase;
}
.rz-dropdown-panel .rz-grid-table tbody td {
    border-bottom: 1px solid #edf2f7 !important;
    color: var(--app-text, #1e293b) !important;
    font-size: 12px !important;
    padding: 9px 10px !important;
}
.rz-dropdown-panel .rz-grid-table tbody tr:hover td {
    background: var(--app-primary-soft, #eff6ff) !important;
    color: var(--app-primary-dark, #1d4ed8) !important;
}
.rz-dropdown-panel .rz-grid-table tbody tr.rz-state-highlight td {
    background: var(--app-primary-soft, #eff6ff) !important;
    color: var(--app-primary-dark, #1d4ed8) !important;
}

/* Selectores de empresa: el RFC tiene longitud fija y no necesita la mitad
   del popup.  Reservamos más espacio para que la razón social sea legible. */
.rz-dropdown-panel .rz-grid-table {
    table-layout: fixed !important;
    width: 100% !important;
}
.rz-dropdown-panel .rz-grid-table th:first-child,
.rz-dropdown-panel .rz-grid-table td:first-child {
    max-width: 31% !important;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    width: 31% !important;
}
.rz-dropdown-panel .rz-grid-table th:nth-child(2),
.rz-dropdown-panel .rz-grid-table td:nth-child(2) {
    max-width: 69% !important;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    width: 69% !important;
}

@media (max-width: 640px) {
    .e-grid .e-gridpager,
    .rz-pager,
    .server-pager {
        justify-content: center !important;
        overflow-x: auto;
    }
    .e-grid .e-gridpager .e-parentmsgbar,
    .rz-pager .rz-pager-summary { margin: 0 !important; }
}

/* Syncfusion genera controles móviles alternos; mantenemos un solo juego de navegación. */
.e-grid .e-gridpager .e-mfirst,
.e-grid .e-gridpager .e-mprev,
.e-grid .e-gridpager .e-mnext,
.e-grid .e-gridpager .e-mlast { display: none !important; }

/* Radzen 4.x usa .rz-paginator (no .rz-pager). Estos selectores mantienen
   el mismo lenguaje visual y la misma alineación que los demás grids. */
.rz-paginator {
    align-items: center !important;
    background: var(--app-surface) !important;
    border-top: 1px solid var(--app-border) !important;
    color: var(--app-muted) !important;
    display: flex !important;
    gap: 8px !important;
    justify-content: flex-end !important;
    min-height: 52px !important;
    padding: 8px 12px !important;
}
.rz-paginator .rz-paginator-pages { display: inline-flex !important; gap: 4px !important; margin: 0 !important; }
.rz-paginator .rz-paginator-first,
.rz-paginator .rz-paginator-prev,
.rz-paginator .rz-paginator-next,
.rz-paginator .rz-paginator-last,
.rz-paginator .rz-paginator-page {
    align-items: center !important;
    background: #fff !important;
    border: 1px solid var(--app-border) !important;
    border-radius: 8px !important;
    display: inline-flex !important;
    height: 34px !important;
    justify-content: center !important;
    margin: 0 !important;
    min-width: 34px !important;
    padding: 0 !important;
}
.rz-paginator .rz-paginator-first:hover,
.rz-paginator .rz-paginator-prev:hover,
.rz-paginator .rz-paginator-next:hover,
.rz-paginator .rz-paginator-last:hover,
.rz-paginator .rz-paginator-page:hover {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary-dark) !important;
}
.rz-paginator .rz-paginator-page.rz-state-active {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #fff !important;
    font-weight: 700 !important;
}
.rz-paginator .rz-paginator-summary { color: var(--app-muted) !important; font-size: 12px !important; margin: 0 auto 0 0 !important; padding: 0 !important; }
.rz-paginator .rz-dropdown { height: 34px !important; margin: 0 !important; width: 64px !important; }
.rz-paginator .rz-pagesize-text { font-size: 12px !important; margin: 0 !important; }

@media (max-width: 640px) {
    .rz-paginator { justify-content: center !important; overflow-x: auto; }
    .rz-paginator .rz-paginator-summary { margin: 0 !important; }
}

/* Evita que un campo largo o una tabla interna genere overflow horizontal de
   toda la página al abrir modales y selectores. */
.modal { overflow-x: hidden !important; }
.modal-content, .modal-body, .modal-footer { min-width: 0; max-width: 100%; }
.rz-dropdown-panel { max-width: calc(100vw - 24px) !important; }
.rz-dropdown-panel .rz-data-grid { max-width: 100%; }
@media (max-width: 767.98px) {
    .modal-dialog { max-width: calc(100vw - 16px); margin-left: auto; margin-right: auto; }
}

/* Selector de tema */
.theme-selector { padding: 4px 0; }
.theme-selector-label { color: var(--app-muted); display: block; font-size: 10px; font-weight: 750; letter-spacing: .04em; padding: 4px 16px 5px; text-transform: uppercase; }
.theme-option { align-items: center; display: flex !important; font-size: 12px !important; gap: 2px; justify-content: flex-start; }
.theme-option.is-selected { color: var(--app-primary) !important; font-weight: 700; }
.theme-option.is-selected::after { content: "\f00c"; font-family: "Font Awesome 5 Free"; font-size: 10px; font-weight: 900; margin-left: auto; }

/* Tema oscuro. Mantiene la misma estructura y solo cambia tokens y superficies. */
:root[data-theme="dark"] {
    --app-primary: #60a5fa;
    --app-primary-dark: #93c5fd;
    --app-primary-soft: #1e3a8a;
    --app-grid-selection-bg: #1d4ed8;
    --app-navy: #f1f5f9;
    --app-sidebar: #0b1220;
    --app-sidebar-hover: #1e293b;
    --app-bg: #0f172a;
    --app-surface: #111827;
    --app-surface-muted: #1e293b;
    --app-border: #334155;
    --app-text: #e5e7eb;
    --app-muted: #94a3b8;
    --app-success: #34d399;
    --app-warning: #fbbf24;
    --app-danger: #f87171;
    --app-info: #38bdf8;
    --app-shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);
    --app-shadow: 0 10px 30px rgba(0, 0, 0, .28);
}

:root[data-theme="dark"] body,
:root[data-theme="dark"] .app-content { background: var(--app-bg) !important; color: var(--app-text); }
:root[data-theme="dark"] a { color: var(--app-primary); }
:root[data-theme="dark"] a:hover { color: var(--app-primary-dark); }
:root[data-theme="dark"] label { color: var(--app-muted) !important; }
:root[data-theme="dark"] .app-header { background: rgba(15, 23, 42, .96); border-color: var(--app-border); }
:root[data-theme="dark"] .app-header-title,
:root[data-theme="dark"] .company-modal-title h3,
:root[data-theme="dark"] .company-form-section-header h4 { color: var(--app-navy) !important; }
:root[data-theme="dark"] .app-sidebar { background: linear-gradient(180deg, #0b1220 0%, #111827 100%); }
:root[data-theme="dark"] .app-nav-submenu { background: rgba(0, 0, 0, .24); }
:root[data-theme="dark"] .dropdown-menu,
:root[data-theme="dark"] .modal-content,
:root[data-theme="dark"] .card,
:root[data-theme="dark"] .grid-card,
:root[data-theme="dark"] .filter-card,
:root[data-theme="dark"] .metric-card,
:root[data-theme="dark"] .status-summary,
:root[data-theme="dark"] .status-summary-item,
:root[data-theme="dark"] .company-form-section,
:root[data-theme="dark"] .representative-company-list { background: var(--app-surface) !important; border-color: var(--app-border) !important; color: var(--app-text); }
:root[data-theme="dark"] .status-summary-value { color: var(--app-text) !important; }
:root[data-theme="dark"] .status-summary-label { color: var(--app-muted) !important; }
:root[data-theme="dark"] .dropdown-item { color: var(--app-text); }
:root[data-theme="dark"] .dropdown-item:hover,
:root[data-theme="dark"] .dropdown-item:focus { background: var(--app-surface-muted); color: var(--app-primary); }
:root[data-theme="dark"] .form-control,
:root[data-theme="dark"] .custom-select,
:root[data-theme="dark"] select,
:root[data-theme="dark"] textarea,
:root[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]),
:root[data-theme="dark"] .e-control,
:root[data-theme="dark"] .e-input,
:root[data-theme="dark"] .e-input-group,
:root[data-theme="dark"] .e-float-input,
:root[data-theme="dark"] .e-float-input.e-control-wrapper { background: var(--app-surface-muted) !important; border-color: var(--app-border) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] ::placeholder { color: #94a3b8 !important; opacity: 1; }
:root[data-theme="dark"] .e-popup,
:root[data-theme="dark"] .e-dropdownbase,
:root[data-theme="dark"] .e-list-parent,
:root[data-theme="dark"] .e-calendar { background: var(--app-surface) !important; border-color: var(--app-border) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .e-list-item,
:root[data-theme="dark"] .e-calendar .e-content span { color: var(--app-text) !important; }
:root[data-theme="dark"] .e-list-item:hover,
:root[data-theme="dark"] .e-list-item.e-active,
:root[data-theme="dark"] .e-list-item.e-selected { background: var(--app-primary-soft) !important; color: var(--app-primary) !important; }
:root[data-theme="dark"] .e-grid,
:root[data-theme="dark"] .e-grid .e-gridheader,
:root[data-theme="dark"] .e-grid .e-headercell,
:root[data-theme="dark"] .e-grid .e-gridcontent,
:root[data-theme="dark"] .e-grid .e-content,
:root[data-theme="dark"] .e-grid .e-rowcell,
:root[data-theme="dark"] .e-grid .e-gridpager { background: var(--app-surface) !important; border-color: var(--app-border) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .e-grid .e-altrow { background: var(--app-surface-muted) !important; }
:root[data-theme="dark"] .e-grid .e-row:hover .e-rowcell:not(.e-selectionbackground) { background: var(--app-primary-soft) !important; }
:root[data-theme="dark"] .e-grid .e-headertext,
:root[data-theme="dark"] .e-grid .e-icons,
:root[data-theme="dark"] .e-grid .e-pagercontainer { color: var(--app-text) !important; }
:root[data-theme="dark"] .e-grid .e-toolbar,
:root[data-theme="dark"] .e-grid .e-toolbar .e-toolbar-items,
:root[data-theme="dark"] .e-grid .e-toolbar .e-toolbar-item,
:root[data-theme="dark"] .e-grid .e-toolbar .e-input-group,
:root[data-theme="dark"] .e-grid .e-toolbar .e-search,
:root[data-theme="dark"] .e-grid .e-toolbar .e-searchbox {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .e-grid .e-toolbar .e-searchbox input,
:root[data-theme="dark"] .e-grid .e-toolbar .e-input {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .e-grid .e-toolbar .e-searchbox input::placeholder,
:root[data-theme="dark"] .e-grid .e-toolbar .e-input::placeholder {
    color: var(--app-muted) !important;
}
:root[data-theme="dark"] .rz-grid-table thead th { background: var(--app-surface-muted) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .rz-grid-table tbody td,
:root[data-theme="dark"] .rz-grid-table tbody tr { background: var(--app-surface) !important; border-color: var(--app-border) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .rz-grid-table tbody tr:hover { background: var(--app-primary-soft) !important; }
:root[data-theme="dark"] .e-dialog,
:root[data-theme="dark"] .e-dialog .e-dlg-header-content,
:root[data-theme="dark"] .e-dialog .e-dlg-content,
:root[data-theme="dark"] .e-dialog .e-footer-content,
:root[data-theme="dark"] .modal-header,
:root[data-theme="dark"] .modal-footer,
:root[data-theme="dark"] .company-form-section-header,
:root[data-theme="dark"] .representative-list-heading { background: var(--app-surface-muted) !important; border-color: var(--app-border) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .table,
:root[data-theme="dark"] .table td,
:root[data-theme="dark"] .table th { color: var(--app-text); border-color: var(--app-border); }
:root[data-theme="dark"] .table thead th { background: var(--app-surface-muted); }
:root[data-theme="dark"] .btn-light,
:root[data-theme="dark"] .btn-secondary,
:root[data-theme="dark"] .action-btn,
:root[data-theme="dark"] .certificate-default-btn { background: var(--app-surface-muted) !important; border-color: var(--app-border) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .representative-assignment-help,
:root[data-theme="dark"] .app-callout-info { background: #172554 !important; border-color: #1e40af !important; color: #bfdbfe !important; }
:root[data-theme="dark"] .e-toast-container .e-toast,
:root[data-theme="dark"] .swal2-popup { background: var(--app-surface) !important; color: var(--app-text) !important; }
:root[data-theme="dark"] .swal2-title,
:root[data-theme="dark"] .swal2-html-container { color: var(--app-text) !important; }
:root[data-theme="dark"] .text-dark,
:root[data-theme="dark"] .text-body { color: var(--app-text) !important; }

/* Contadores del historico de Listas SAT. Los fondos pastel del tema claro
   pierden contraste sobre la cuadricula oscura. */
:root[data-theme="dark"] .sat-count-link.is-success {
    background: rgba(52, 211, 153, .16) !important;
    border: 1px solid rgba(52, 211, 153, .38);
    color: #6ee7b7 !important;
}
:root[data-theme="dark"] .sat-count-link.is-danger {
    background: rgba(248, 113, 113, .16) !important;
    border: 1px solid rgba(248, 113, 113, .38);
    color: #fca5a5 !important;
}
:root[data-theme="dark"] .sat-count-link.is-success:hover {
    background: rgba(52, 211, 153, .26) !important;
    color: #a7f3d0 !important;
}
:root[data-theme="dark"] .sat-count-link.is-danger:hover {
    background: rgba(248, 113, 113, .26) !important;
    color: #fecaca !important;
}
:root[data-theme="dark"] .sat-count-zero {
    color: #cbd5e1 !important;
}

/* Detalles expandidos de /Listas/Pagos: Bootstrap aplica una superficie
   blanca al table interno y deja ilegibles los valores en tema oscuro. */
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrowcell,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrowcollapse,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrowexpand,
:root[data-theme="dark"] #listas-pagos-grid .e-detailheadercell,
:root[data-theme="dark"] #listas-pagos-grid .e-detailindentcell,
:root[data-theme="dark"] #listas-pagos-grid .e-indentcell,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow > td,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow > th {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] #listas-pagos-grid .e-detailheadercell,
:root[data-theme="dark"] #listas-pagos-grid .e-detailindentcell,
:root[data-theme="dark"] #listas-pagos-grid .e-indentcell {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
}
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table thead,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table tbody,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table tr,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table td,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table th {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .table thead th {
    background: var(--app-surface-muted) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .liga,
:root[data-theme="dark"] #listas-pagos-grid .e-detailrow .document-link {
    color: var(--app-primary) !important;
}

/* Feedback de carga y paginadores: evita superficies blancas heredadas
   cuando el usuario usa el tema oscuro. */
:root[data-theme="dark"] .grid-feedback,
:root[data-theme="dark"] .grid-feedback-loading,
:root[data-theme="dark"] .grid-card:has(.grid-feedback-loading) {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .grid-feedback-empty h3 { color: var(--app-text) !important; }
:root[data-theme="dark"] .grid-feedback-empty p { color: var(--app-muted) !important; }
:root[data-theme="dark"] .grid-feedback-empty .grid-feedback-icon {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary) !important;
}
:root[data-theme="dark"] .grid-skeleton-row { border-color: var(--app-border) !important; }
:root[data-theme="dark"] .skeleton-pulse {
    background: linear-gradient(90deg, var(--app-surface-muted) 25%, #334155 50%, var(--app-surface-muted) 75%) !important;
    background-size: 200% 100% !important;
}
:root[data-theme="dark"] .grid-skeleton-row {
    border-top-color: var(--app-border) !important;
}
:root[data-theme="dark"] .skeleton-pulse {
    background: linear-gradient(90deg, #1e293b 25%, #334155 50%, #1e293b 75%) !important;
    background-size: 200% 100% !important;
}

:root[data-theme="dark"] .e-grid .e-gridpager,
:root[data-theme="dark"] .e-grid .e-gridpager .e-pagercontainer,
:root[data-theme="dark"] .e-grid .e-gridpager .e-parentmsgbar,
:root[data-theme="dark"] .e-grid .e-gridpager .e-pagerdropdown {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-muted) !important;
}
:root[data-theme="dark"] .e-grid .e-gridpager .e-numericitem,
:root[data-theme="dark"] .e-grid .e-gridpager .e-firstpage,
:root[data-theme="dark"] .e-grid .e-gridpager .e-prevpage,
:root[data-theme="dark"] .e-grid .e-gridpager .e-nextpage,
:root[data-theme="dark"] .e-grid .e-gridpager .e-lastpage,
:root[data-theme="dark"] .e-grid .e-gridpager .e-firstpagedisabled,
:root[data-theme="dark"] .e-grid .e-gridpager .e-prevpagedisabled,
:root[data-theme="dark"] .e-grid .e-gridpager .e-nextpagedisabled,
:root[data-theme="dark"] .e-grid .e-gridpager .e-lastpagedisabled {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .e-grid .e-gridpager .e-numericitem:hover,
:root[data-theme="dark"] .e-grid .e-gridpager .e-firstpage:hover,
:root[data-theme="dark"] .e-grid .e-gridpager .e-prevpage:hover,
:root[data-theme="dark"] .e-grid .e-gridpager .e-nextpage:hover,
:root[data-theme="dark"] .e-grid .e-gridpager .e-lastpage:hover {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary) !important;
}
:root[data-theme="dark"] .e-grid .e-gridpager .e-numericitem.e-currentitem {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #fff !important;
}
:root[data-theme="dark"] .e-grid .e-gridpager .e-icons {
    color: currentColor !important;
}

:root[data-theme="dark"] .rz-pager,
:root[data-theme="dark"] .rz-paginator,
:root[data-theme="dark"] .server-pager,
:root[data-theme="dark"] .rz-paginator .rz-paginator-summary,
:root[data-theme="dark"] .rz-paginator .rz-pagesize-text {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-muted) !important;
}
:root[data-theme="dark"] .rz-pager .rz-pager-element,
:root[data-theme="dark"] .rz-pager .rz-pager-page,
:root[data-theme="dark"] .rz-paginator .rz-paginator-first,
:root[data-theme="dark"] .rz-paginator .rz-paginator-prev,
:root[data-theme="dark"] .rz-paginator .rz-paginator-next,
:root[data-theme="dark"] .rz-paginator .rz-paginator-last,
:root[data-theme="dark"] .rz-paginator .rz-paginator-page,
:root[data-theme="dark"] .server-pager .btn,
:root[data-theme="dark"] .server-pager-size.form-control {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .rz-pager .rz-pager-element:hover,
:root[data-theme="dark"] .rz-pager .rz-pager-page:hover,
:root[data-theme="dark"] .rz-paginator .rz-paginator-first:hover,
:root[data-theme="dark"] .rz-paginator .rz-paginator-prev:hover,
:root[data-theme="dark"] .rz-paginator .rz-paginator-next:hover,
:root[data-theme="dark"] .rz-paginator .rz-paginator-last:hover,
:root[data-theme="dark"] .rz-paginator .rz-paginator-page:hover,
:root[data-theme="dark"] .server-pager .btn:hover {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary) !important;
}
:root[data-theme="dark"] .rz-pager .rz-pager-page.rz-state-active,
:root[data-theme="dark"] .rz-paginator .rz-paginator-page.rz-state-active {
    background: var(--app-primary) !important;
    border-color: var(--app-primary) !important;
    color: #fff !important;
}

/* Estado vacío de Syncfusion: evita la fila blanca cuando no hay registros. */
:root[data-theme="dark"] .e-grid .e-emptyrow,
:root[data-theme="dark"] .e-grid .e-emptyrow td,
:root[data-theme="dark"] .e-grid .e-emptyrecord,
:root[data-theme="dark"] .e-grid .e-content .e-emptyrow {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-muted) !important;
}

:root[data-theme="dark"] .e-grid .e-emptyrow td {
    color: var(--app-muted) !important;
}

:root[data-theme="dark"] .e-grid .e-emptyrow:hover,
:root[data-theme="dark"] .e-grid .e-emptyrow:hover td {
    background: var(--app-surface) !important;
    color: var(--app-muted) !important;
}

/* Barra de acciones fija del editor de empresas. */
:root[data-theme="dark"] .company-form-actions {
    background: color-mix(in srgb, var(--app-surface-muted) 96%, transparent) !important;
    border-top-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

/* Consulta de contribuyentes: resumen y filas vacías de Radzen. */
:root[data-theme="dark"] .contributors-summary > div:not(.contributors-updated),
:root[data-theme="dark"] .contributors-grid-card .rz-grid-table thead th,
:root[data-theme="dark"] .contributors-grid-card .rz-grid-table tbody td,
:root[data-theme="dark"] .contributors-grid-card .rz-grid-table tbody tr,
:root[data-theme="dark"] .rz-datatable-emptymessage,
:root[data-theme="dark"] .rz-datatable-emptymessage td,
:root[data-theme="dark"] .rz-data-grid-empty,
:root[data-theme="dark"] .rz-grid-empty,
:root[data-theme="dark"] .rz-no-data {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-muted) !important;
}

:root[data-theme="dark"] .contributors-grid-card .rz-grid-table thead th {
    background: var(--app-surface-muted) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .contributors-grid-card .rz-grid-table thead,
:root[data-theme="dark"] .contributors-grid-card .rz-grid-table thead tr,
:root[data-theme="dark"] .contributors-grid-card .rz-grid-table thead tr th {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

/* RadzenGrid legacy (rz-datatable-*): sus encabezados no siempre incluyen
   .rz-grid-table en todas las versiones del componente. */
:root[data-theme="dark"] .contributors-grid-card table thead,
:root[data-theme="dark"] .contributors-grid-card table thead tr,
:root[data-theme="dark"] .contributors-grid-card table thead th,
:root[data-theme="dark"] .contributors-grid-card .rz-datatable-thead,
:root[data-theme="dark"] .contributors-grid-card .rz-datatable-thead tr,
:root[data-theme="dark"] .contributors-grid-card .rz-datatable-thead th {
    background-color: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .sat-list-summary > div {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .sat-list-summary strong {
    color: var(--app-text) !important;
}

/* Filtro de empresa compartido por Recibos de pago. */
:root[data-theme="dark"] {
    --rc-blue-lt: var(--app-primary-soft);
    --rc-blue-mid: var(--app-border);
    --rc-surface: var(--app-surface);
    --rc-border: var(--app-border);
    --rc-border-mid: #475569;
    --rc-text: var(--app-text);
    --rc-muted: var(--app-muted);
}

:root[data-theme="dark"] .rc-filter-card {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .rc-filter-card label {
    color: var(--app-muted) !important;
}

:root[data-theme="dark"] .rc-filter-card .form-control {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

/* Los componentes heredados de recibos declaran fondos blancos dentro de
   estilos locales. La especificidad adicional mantiene formularios, pestañas
   y buscadores legibles en oscuro sin alterar su presentación clara. */
:root[data-theme="dark"] body .rc-modal-body .form-control,
:root[data-theme="dark"] body .rc-modal-body input,
:root[data-theme="dark"] body .rc-modal-body select,
:root[data-theme="dark"] body .rc-modal-body textarea,
:root[data-theme="dark"] body .rc-search-row .form-control-sm,
:root[data-theme="dark"] body .rc-results-search,
:root[data-theme="dark"] body .rc-tab-panel .btn-default,
:root[data-theme="dark"] body .modal-footer .btn-default {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] body .rc-results-search input {
    color: var(--app-text) !important;
}

:root[data-theme="dark"] body .rc-results-search input::placeholder,
:root[data-theme="dark"] body .rc-modal-body input::placeholder,
:root[data-theme="dark"] body .rc-modal-body textarea::placeholder {
    color: var(--app-muted) !important;
}

/* Barrido final de superficies claras heredadas en tema oscuro. */
:root[data-theme="dark"] .status-summary-item,
:root[data-theme="dark"] .upload-card,
:root[data-theme="dark"] .upload-card .card-header,
:root[data-theme="dark"] .xml-type-option,
:root[data-theme="dark"] .certificate-default-btn,
:root[data-theme="dark"] .representative-company-list,
:root[data-theme="dark"] .representative-assignment-help > span,
:root[data-theme="dark"] .company-form-section,
:root[data-theme="dark"] .cfdi-detail-dialog .e-dlg-header-content,
:root[data-theme="dark"] .cfdi-detail-dialog .e-dlg-content,
:root[data-theme="dark"] .cfdi-detail-dialog .e-footer-content {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .status-summary-item:hover,
:root[data-theme="dark"] .xml-type-option:hover {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary) !important;
}

:root[data-theme="dark"] .modern-form-tabs.e-tab > .e-tab-header,
:root[data-theme="dark"] .modern-form-tabs.e-tab > .e-tab-header .e-toolbar-items {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
}

:root[data-theme="dark"] .e-upload .e-file-select-wrap .e-btn,
:root[data-theme="dark"] .xml-uploader-control .e-file-select-wrap .e-btn {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-primary) !important;
}

:root[data-theme="dark"] .rz-dropdown-panel .rz-data-grid,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead tr,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead th,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody td {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead th {
    background: var(--app-surface-muted) !important;
}

/* Selectores y dropdowns usados en modales (incluido Cambiar usuario). */
:root[data-theme="dark"] .rz-dropdown,
:root[data-theme="dark"] .rz-dropdown-label,
:root[data-theme="dark"] .rz-dropdown-trigger,
:root[data-theme="dark"] .rz-multiselect,
:root[data-theme="dark"] .rz-multiselect-label,
:root[data-theme="dark"] .e-ddl,
:root[data-theme="dark"] .e-ddl .e-input,
:root[data-theme="dark"] .e-input-group:not(.e-float-icon-left) {
    background: var(--app-surface-muted) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .rz-dropdown-panel,
:root[data-theme="dark"] .rz-multiselect-panel,
:root[data-theme="dark"] .e-ddl.e-popup,
:root[data-theme="dark"] .e-popup.e-dropdownbase {
    background: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .rz-dropdown-item,
:root[data-theme="dark"] .rz-multiselect-item,
:root[data-theme="dark"] .e-list-item {
    background: var(--app-surface) !important;
    color: var(--app-text) !important;
}

:root[data-theme="dark"] .rz-dropdown-item:hover,
:root[data-theme="dark"] .rz-multiselect-item:hover,
:root[data-theme="dark"] .e-list-item:hover,
:root[data-theme="dark"] .e-list-item.e-active {
    background: var(--app-primary-soft) !important;
    color: var(--app-primary) !important;
}

:root[data-theme="dark"] .rz-dropdown-trigger-icon,
:root[data-theme="dark"] .rz-dropdown-clear,
:root[data-theme="dark"] .e-ddl .e-input-group-icon,
:root[data-theme="dark"] .e-input-group-icon {
    color: var(--app-muted) !important;
}
/* --- Syncfusion grid column geometry ------------------------------------
   Syncfusion renders the header and body as two tables.  Keep the same box
   model and table geometry on both tables so borders/padding do not create a
   cumulative horizontal drift between the header and its rows. */
.e-grid .e-gridheader .e-table,
.e-grid .e-content .e-table,
.e-grid .e-table {
    border-spacing: 0;
    box-sizing: border-box;
    table-layout: fixed;
}

.e-grid .e-gridheader .e-table th,
.e-grid .e-content .e-table td,
.e-grid .e-gridheader .e-table .e-headercell,
.e-grid .e-content .e-table .e-rowcell {
    box-sizing: border-box;
}

.e-grid .e-gridheader,
.e-grid .e-headercontent,
.e-grid .e-content {
    box-sizing: border-box;
}

/* Do not reserve a permanent scrollbar gutter.  When there is no vertical
   scrollbar it makes the body table narrower than the header table. */
.e-grid .e-content {
    scrollbar-gutter: auto !important;
}

/* The header must use the exact content-table width.  min-width preserves
   horizontal scrolling for grids whose columns are wider than the viewport. */
.e-grid .e-gridheader .e-table,
.e-grid .e-content .e-table {
    min-width: 100%;
}

.e-grid .e-gridheader .e-headercell,
.e-grid .e-content .e-rowcell {
    border-left-width: 0;
}

.e-grid .e-gridheader .e-headercell:first-child,
.e-grid .e-content .e-rowcell:first-child {
    border-left-width: 1px;
}

/* Radzen puede renderizar el popup fuera del componente y aplicar la
   superficie clara de su tema base.  Estas reglas cubren el wrapper completo
   del selector de empresas, no sólo la tabla interna. */
:root[data-theme="dark"] .rz-dropdown-panel,
:root[data-theme="dark"] .rz-dropdown-panel.rz-popup,
:root[data-theme="dark"] .rz-dropdown-panel .rz-popup,
:root[data-theme="dark"] .rz-dropdown-panel > div,
:root[data-theme="dark"] .rz-dropdown-panel .rz-dropdown-filter-container,
:root[data-theme="dark"] .rz-dropdown-panel .rz-lookup-search,
:root[data-theme="dark"] .rz-dropdown-panel .rz-data-grid,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table,
:root[data-theme="dark"] .rz-dropdown-panel .rz-paginator,
:root[data-theme="dark"] .rz-dropdown-panel .rz-pager {
    background-color: var(--app-surface) !important;
    border-color: var(--app-border) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead tr,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead th {
    background-color: var(--app-surface-muted) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody tr,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody td {
    background-color: var(--app-surface) !important;
    color: var(--app-text) !important;
}
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody tr:hover td,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody tr.rz-state-highlight td {
    background-color: var(--app-primary-soft) !important;
    color: var(--app-primary) !important;
}

/* Contraste final del contenido interno de los selectores Radzen en tema oscuro.
   Radzen puede aplicar el color a elementos hijos de las celdas, por lo que el
   color de la tabla por sí solo no alcanza a esos nodos. */
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table th,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table td,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table th *,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table td *,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table .rz-column-title,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table .rz-column-title-content,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table .rz-cell-data {
    opacity: 1 !important;
    -webkit-text-fill-color: #f8fafc !important;
    color: #f8fafc !important;
}

:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead th,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table thead th * {
    font-weight: 700 !important;
    -webkit-text-fill-color: #f8fafc !important;
    color: #f8fafc !important;
}

:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody td,
:root[data-theme="dark"] .rz-dropdown-panel .rz-grid-table tbody td * {
    font-weight: 500 !important;
    -webkit-text-fill-color: #e5e7eb !important;
    color: #e5e7eb !important;
}

:root[data-theme="dark"] .rz-dropdown-panel .rz-dropdown-filter-container input,
:root[data-theme="dark"] .rz-dropdown-panel .rz-lookup-search-input {
    opacity: 1 !important;
    -webkit-text-fill-color: #f8fafc !important;
    color: #f8fafc !important;
}

/* --- Portada / centro de actividades ---------------------------------- */
.home-page { width: 100%; }

.home-intro {
    align-items: center;
    display: flex;
    gap: 28px;
    justify-content: space-between;
    margin-bottom: 24px;
}

.home-eyebrow {
    color: var(--app-primary);
    display: block;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .08em;
    margin-bottom: 7px;
    text-transform: uppercase;
}

.home-intro h1 {
    color: var(--app-navy);
    font-size: clamp(25px, 2.2vw, 34px);
    font-weight: 750;
    letter-spacing: -.65px;
    margin: 0;
}

.home-intro p { color: var(--app-muted); font-size: 14px; margin: 7px 0 0; }

.home-status-icon {
    align-items: center;
    background: var(--app-primary-soft);
    border-radius: 10px;
    color: var(--app-primary);
    display: inline-flex;
    flex: 0 0 38px;
    height: 38px;
    justify-content: center;
}

.home-layout {
    align-items: start;
    display: grid;
    gap: 22px;
    grid-template-columns: minmax(0, 1fr) 350px;
}

.home-actions {
    display: grid;
    gap: 16px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.home-action-card {
    background: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-lg);
    box-shadow: var(--app-shadow-sm);
    color: var(--app-text) !important;
    display: flex;
    flex-direction: column;
    min-height: 184px;
    overflow: hidden;
    padding: 20px;
    position: relative;
    text-decoration: none !important;
    transition: border-color var(--app-transition), box-shadow var(--app-transition), transform var(--app-transition);
}

.home-action-card::before {
    background: var(--app-primary);
    content: "";
    height: 3px;
    left: 20px;
    opacity: 0;
    position: absolute;
    right: 20px;
    top: 0;
    transform: scaleX(.4);
    transition: opacity var(--app-transition), transform var(--app-transition);
}

.home-action-card:hover {
    border-color: rgba(37, 99, 235, .3);
    box-shadow: var(--app-shadow);
    transform: translateY(-3px);
}

.home-action-card:hover::before { opacity: 1; transform: scaleX(1); }
.home-action-card:hover .home-action-arrow { opacity: 1; transform: translateX(0); }

.home-action-icon {
    align-items: center;
    border-radius: 12px;
    display: inline-flex;
    flex: 0 0 46px;
    font-size: 18px;
    height: 46px;
    justify-content: center;
    margin-bottom: 18px;
    width: 46px;
}

.home-action-icon.is-blue { background: #dbeafe; color: #2563eb; }
.home-action-icon.is-indigo { background: #e0e7ff; color: #4f46e5; }
.home-action-icon.is-cyan { background: #cffafe; color: #0891b2; }
.home-action-icon.is-emerald { background: #d1fae5; color: #059669; }
.home-action-icon.is-violet { background: #ede9fe; color: #7c3aed; }
.home-action-icon.is-amber { background: #fef3c7; color: #d97706; }
.home-action-icon.is-green { background: #dcfce7; color: #16a34a; }
.home-action-icon.is-sky { background: #e0f2fe; color: #0284c7; }
.home-action-icon.is-orange { background: #ffedd5; color: #ea580c; }
.home-action-icon.is-slate { background: #e2e8f0; color: #475569; }

.home-action-copy { display: block; padding-right: 20px; }
.home-action-copy strong { color: var(--app-navy); display: block; font-size: 14px; line-height: 1.35; }
.home-action-copy small { color: var(--app-muted); display: block; font-size: 12px; line-height: 1.55; margin-top: 7px; }
.home-action-arrow {
    bottom: 19px;
    color: var(--app-primary);
    opacity: 0;
    position: absolute;
    right: 19px;
    transform: translateX(-6px);
    transition: opacity var(--app-transition), transform var(--app-transition);
}

.home-action-skeleton { gap: 12px; pointer-events: none; }
.home-action-skeleton .skeleton-pulse { border-radius: 8px; height: 13px; width: 80%; }
.home-action-skeleton .skeleton-pulse:first-child { height: 46px; margin-bottom: 9px; width: 46px; }
.home-action-skeleton .skeleton-pulse:last-child { width: 62%; }

.home-status-card {
    background: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius-lg);
    box-shadow: var(--app-shadow-sm);
    overflow: hidden;
    position: sticky;
    top: calc(var(--app-header-height) + 20px);
}

.home-status-header { align-items: center; border-bottom: 1px solid var(--app-border); display: flex; gap: 12px; padding: 18px; }
.home-status-header h2 { color: var(--app-navy); font-size: 15px; font-weight: 700; margin: 0; }
.home-status-header p { color: var(--app-muted); font-size: 10px; line-height: 1.4; margin: 3px 0 0; }
.home-status-section { padding: 17px 17px 4px; }
.home-status-section + .home-status-section { border-top: 1px solid var(--app-border); margin-top: 13px; }
.home-status-section-title { align-items: center; display: flex; justify-content: space-between; margin-bottom: 10px; }
.home-status-section-title h3 { color: var(--app-text); font-size: 12px; font-weight: 750; margin: 0; }
.home-status-section-title a { color: var(--app-primary); font-size: 10px; text-decoration: none; }
.home-status-section-title a i { font-size: 8px; margin-left: 3px; }
.home-status-list { display: grid; gap: 7px; }
.home-status-row {
    align-items: center;
    background: var(--app-surface-muted);
    border: 1px solid transparent;
    border-radius: 9px;
    color: var(--app-text) !important;
    display: grid;
    gap: 8px;
    grid-template-columns: 7px minmax(34px, auto) 1fr;
    min-height: 40px;
    padding: 8px 10px;
    text-decoration: none !important;
    transition: background var(--app-transition), border-color var(--app-transition);
}
.home-status-row:hover { background: var(--app-primary-soft); border-color: rgba(37, 99, 235, .18); }
.home-status-dot { background: currentColor; border-radius: 2px; height: 7px; width: 7px; }
.home-status-number { font-size: 13px; font-weight: 750; }
.home-status-label { color: var(--app-text); font-size: 11px; }
.home-status-row.is-success { color: var(--app-success) !important; }
.home-status-row.is-warning { color: var(--app-warning) !important; }
.home-status-row.is-danger { color: var(--app-danger) !important; }
.home-status-empty { align-items: center; color: var(--app-muted); display: flex; gap: 10px; padding: 22px 18px; }

@media (max-width: 1380px) {
    .home-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1050px) {
    .home-layout { grid-template-columns: 1fr; }
    .home-status-card { position: static; }
    .home-status-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .home-status-header { grid-column: 1 / -1; }
    .home-status-section + .home-status-section { border-left: 1px solid var(--app-border); border-top: 0; margin-top: 0; }
}

@media (max-width: 700px) {
    .home-intro { align-items: stretch; flex-direction: column; }
    .home-actions, .home-status-card { grid-template-columns: 1fr; }
    .home-action-card { min-height: 160px; }
    .home-status-header { grid-column: auto; }
    .home-status-section + .home-status-section { border-left: 0; border-top: 1px solid var(--app-border); }
}

:root[data-theme="dark"] .home-action-icon.is-slate { background: #334155; color: #cbd5e1; }

/* Mantiene legibles los enlaces de datos cuando Syncfusion selecciona una fila.
   Se limita al grid de empresas para no alterar botones e iconos de documentos. */
.grid-data-link {
    color: var(--app-primary);
    font-weight: 700;
}

.grid-data-link.is-danger {
    color: var(--app-danger);
}

#listas-empresas-grid-v2 .e-rowcell.e-selectionbackground,
#listas-empresas-grid-v2 .e-row:hover .e-rowcell.e-selectionbackground,
#listas-empresas-grid-v2 tr[aria-selected="true"] .e-rowcell,
#listas-empresas-grid-v2 tr[aria-selected="true"]:hover .e-rowcell {
    background: var(--app-grid-selection-bg) !important;
    color: var(--app-grid-selection-text) !important;
}

#listas-empresas-grid-v2 .e-rowcell.e-selectionbackground .grid-data-link,
#listas-empresas-grid-v2 .e-row:hover .e-rowcell.e-selectionbackground .grid-data-link,
#listas-empresas-grid-v2 tr[aria-selected="true"] .e-rowcell .grid-data-link,
#listas-empresas-grid-v2 tr[aria-selected="true"]:hover .e-rowcell .grid-data-link {
    color: var(--app-grid-selection-text) !important;
}

@media (max-width: 767.98px) {
    .company-history-modal { margin: 8px auto; width: calc(100vw - 16px); }
    .company-history-modal .modal-content { max-height: calc(100vh - 16px); }
    .company-history-modal .modal-header,
    .company-history-modal .modal-body,
    .company-history-modal .modal-footer { padding-left: 14px; padding-right: 14px; }
}
