.admin-tabs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem;
    row-gap: 0.4rem;
    margin: 0 auto 1.5rem auto;
    max-width: 1200px;
    padding: 0.5rem;
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    width: fit-content;
}

.admin-tabs__item {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 0.9rem;
    font-weight: 500;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
.admin-tabs__item:hover {
    color: var(--text-primary);
    background: var(--surface-hover);
}
.admin-tabs__item.active {
    background: rgba(0, 158, 142, 0.18);
    color: var(--brand-cyan);
}

.admin-page {
    max-width: 1200px;
    margin: 0 auto;
}
.admin-page--full {
    max-width: 1100px;
}

.client-form {
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    box-shadow: var(--shadow-card);
    padding: 1.75rem;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
.client-form__section {
    border-bottom: 1px solid var(--border-subtle);
    padding-bottom: 1.5rem;
}
.client-form__section:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}
.client-form__section-title {
    margin: 0 0 1rem 0;
    font-size: 0.95rem;
    color: var(--brand-teal-light);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
}
.client-form__hint-inline {
    color: var(--text-muted);
    font-weight: 400;
    font-size: 0.8rem;
    text-transform: none;
    letter-spacing: 0;
    margin-left: 0.5rem;
}
.client-form__hint {
    color: var(--text-secondary);
    font-size: 0.8rem;
    line-height: 1.4;
}
.client-form__inline-note {
    margin-top: 0.5rem;
    padding: 0.5rem 0.75rem;
    background: var(--input-bg-soft);
    border: 1px solid var(--input-border);
    border-radius: 4px;
    font-size: 0.8rem;
    color: var(--text-secondary);
}
.client-form__inline-note summary {
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.client-form__prompt-fragment {
    margin: 0.6rem 0 0;
    padding: 0.6rem 0.75rem;
    background: var(--option-bg, rgba(255,255,255,0.04));
    border-radius: 3px;
    color: var(--text-primary);
    font-family: ui-monospace, "Cascadia Code", Consolas, monospace;
    font-size: 0.78rem;
    line-height: 1.45;
    white-space: pre-wrap;
}
.client-form__warning {
    margin-top: 0.5rem;
    padding: 0.6rem 0.75rem;
    background: rgba(255, 184, 0, 0.08);
    border: 1px solid rgba(255, 184, 0, 0.35);
    border-radius: 4px;
    color: var(--text-primary);
    font-size: 0.8rem;
    line-height: 1.45;
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
}
.client-form__warning .bi {
    color: rgb(255, 184, 0);
    flex-shrink: 0;
    margin-top: 0.1rem;
}
.client-form__grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem 1.25rem;
}
.client-form__col-span-2 {
    grid-column: 1 / -1;
}
.client-form__subsection-title {
    margin: 1.25rem 0 0.6rem;
    font-size: 0.78rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 600;
    padding-bottom: 0.3rem;
    border-bottom: 1px dashed var(--border-subtle);
}
.client-form__test-connection {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px dashed var(--border-subtle);
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    align-items: flex-start;
}
.client-form__test-ok,
.client-form__test-fail {
    display: flex;
    gap: 0.55rem;
    padding: 0.65rem 0.85rem;
    border-radius: 8px;
    font-size: 0.88rem;
    line-height: 1.4;
    width: 100%;
}
.client-form__test-ok {
    background: rgba(34, 197, 94, 0.10);
    border: 1px solid rgba(34, 197, 94, 0.35);
    color: var(--banner-text-ok);
}
.client-form__test-ok i { color: var(--banner-icon-ok); }
.client-form__test-fail {
    background: rgba(220, 38, 38, 0.10);
    border: 1px solid rgba(220, 38, 38, 0.35);
    color: var(--banner-text-err);
}
.client-form__test-fail i { color: var(--banner-icon-err); }
.client-form__test-detail {
    margin-top: 0.3rem;
    font-size: 0.8rem;
    color: var(--text-secondary);
    word-break: break-word;
}
.client-form__checks {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    justify-content: center;
}
.client-form__actions {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
    align-items: center;
    padding-top: 0.5rem;
    border-top: 1px solid var(--border-subtle);
    margin-top: 0.5rem;
    padding-top: 1.25rem;
}

@media (max-width: 720px) {
    .client-form__grid {
        grid-template-columns: 1fr;
    }
    .client-form__col-span-2 {
        grid-column: auto;
    }
}

.admin-page__header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}

.admin-page__title {
    margin: 0.25rem 0 0 0;
    font-size: 1.75rem;
}

.admin-page__loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    color: var(--text-secondary);
    padding: 4rem 0;
}

.admin-page__empty {
    text-align: center;
    padding: 3.5rem 1.5rem;
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
}
.admin-page__empty i {
    font-size: 2.5rem;
    color: var(--brand-teal);
    display: block;
    margin-bottom: 1rem;
}
.admin-page__empty h2 {
    margin: 0 0 0.5rem 0;
    font-size: 1.2rem;
}
.admin-page__empty p {
    margin: 0;
    color: var(--text-secondary);
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    overflow: hidden;
    font-size: 0.92rem;
}
.admin-table thead {
    background: var(--surface-soft);
}
.admin-table th {
    padding: 0.75rem 1rem;
    text-align: left;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-secondary);
    font-weight: 600;
    border-bottom: 1px solid var(--border-subtle);
}
.admin-table td {
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--border-subtle);
    color: var(--text-primary);
    vertical-align: middle;
}
.admin-table tbody tr:last-child td {
    border-bottom: none;
}
.admin-table tbody tr:hover {
    background: var(--surface-hover);
}
.admin-table code {
    font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
    font-size: 0.82rem;
    color: var(--brand-cyan);
}
.admin-table__apikey {
    color: var(--text-secondary) !important;
    cursor: help;
}
.admin-table__keytag {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.1rem 0.45rem;
    background: rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.35);
    color: var(--banner-text-warn);
    border-radius: 999px;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    vertical-align: middle;
    cursor: help;
}
.admin-table__note-icon {
    margin-left: 0.4rem;
    color: var(--text-muted);
    cursor: help;
}
.admin-icon-btn:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}
.admin-icon-btn--has-validators {
    color: var(--brand-cyan);
    background: rgba(0, 229, 255, 0.12);
    border-color: rgba(0, 229, 255, 0.45);
    box-shadow: 0 0 0 1px rgba(0, 229, 255, 0.15), 0 0 8px rgba(0, 229, 255, 0.20);
}
.admin-icon-btn--has-validators:hover {
    color: var(--brand-cyan);
    background: rgba(0, 229, 255, 0.20);
    border-color: var(--brand-cyan);
    box-shadow: 0 0 0 1px rgba(0, 229, 255, 0.35), 0 0 12px rgba(0, 229, 255, 0.35);
}
.admin-table__muted {
    color: var(--text-muted);
    font-style: italic;
    font-size: 0.85rem;
    margin-left: 0.4rem;
}

.admin-table__num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.admin-table__sortable {
    cursor: pointer;
    user-select: none;
}
.admin-table__sortable:hover {
    color: var(--brand-cyan);
}
.admin-table__sort-icon {
    margin-left: 0.25rem;
    font-size: 0.75rem;
    color: var(--brand-teal-light);
}

.admin-table--clickable .admin-table__row-link {
    cursor: pointer;
}
.admin-table--clickable .admin-table__row-link:hover {
    background: rgba(0, 158, 142, 0.06);
}

.admin-invoices__filename {
    margin-left: 0.4rem;
    word-break: break-all;
}

.admin-link {
    color: var(--brand-cyan);
    text-decoration: none;
}
.admin-link:hover {
    text-decoration: underline;
}

.admin-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1rem;
    align-items: flex-end;
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 1rem 1.25rem;
    margin-bottom: 1.5rem;
}
.admin-filters__field {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 180px;
}
.admin-filters__field label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-secondary);
}
.admin-filters__field input,
.admin-filters__field select {
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.45rem 0.65rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.88rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.admin-filters__field input:focus,
.admin-filters__field select:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}
.admin-filters__clear {
    padding: 0.45rem 0.85rem;
    font-size: 0.85rem;
}

.admin-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}
.admin-stats__card {
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.admin-stats__label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-secondary);
}
.admin-stats__value {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--brand-cyan);
    font-variant-numeric: tabular-nums;
}
.admin-table__actions {
    text-align: right;
    white-space: nowrap;
}

.admin-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
    margin-left: 0.25rem;
}
.admin-icon-btn:hover {
    background: rgba(0, 158, 142, 0.10);
    color: var(--brand-cyan);
    border-color: var(--border);
}
.admin-icon-btn--danger:hover {
    background: rgba(220, 38, 38, 0.12);
    color: var(--banner-icon-err);
    border-color: rgba(220, 38, 38, 0.4);
}

.badge-state {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
}
.badge-state--ok {
    background: rgba(34, 197, 94, 0.12);
    border: 1px solid rgba(34, 197, 94, 0.35);
    color: var(--banner-text-ok);
}
.badge-state--off {
    background: rgba(148, 163, 184, 0.10);
    border: 1px solid rgba(148, 163, 184, 0.25);
    color: var(--text-muted);
}
.badge-state--admin {
    background: rgba(168, 85, 247, 0.14);
    border: 1px solid rgba(168, 85, 247, 0.40);
    color: var(--badge-admin-text, #d8b4fe);
}
.badge-state--user {
    background: rgba(56, 189, 248, 0.10);
    border: 1px solid rgba(56, 189, 248, 0.30);
    color: var(--banner-text-info);
}
.badge-state--err {
    background: rgba(220, 38, 38, 0.12);
    border: 1px solid rgba(220, 38, 38, 0.40);
    color: var(--banner-text-err);
}
.badge-state--warn {
    background: rgba(255, 184, 0, 0.10);
    border: 1px solid rgba(255, 184, 0, 0.35);
    color: rgb(255, 184, 0);
}

/* ── Tabla de logs de envío al cliente ────────────────────── */

.outbound-logs-table tr {
    cursor: pointer;
}
.outbound-logs-table tr:hover {
    background: var(--surface-hover);
}
.outbound-logs-table__row--expanded {
    background: rgba(0, 158, 142, 0.06);
}
.outbound-logs-table__chevron {
    color: var(--text-muted);
    font-size: 0.75rem;
}
.outbound-logs-table__detail-cell {
    max-width: 280px;
}
.outbound-logs-table__receipt code {
    background: rgba(34, 197, 94, 0.12);
    color: var(--banner-text-ok);
    padding: 0.05rem 0.35rem;
    border-radius: 4px;
}
.outbound-logs-table__error {
    color: var(--banner-text-err);
    font-size: 0.82rem;
    word-break: break-word;
}
.outbound-logs-table__detail-row {
    background: var(--dark-card);
}
.outbound-logs-table__detail-row:hover {
    background: var(--dark-card);  /* no cambiar al hover */
}
.outbound-logs-table__detail {
    padding: 1rem 1.25rem;
}
.outbound-logs-table__detail-grid {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}
.outbound-logs-table__detail-grid strong {
    display: block;
    font-size: 0.75rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.3rem;
}
.outbound-logs-table__url {
    word-break: break-all;
    font-size: 0.85rem;
    color: var(--text-primary);
    background: var(--code-bg);
    padding: 0.3rem 0.55rem;
    border-radius: 4px;
    display: inline-block;
}
.outbound-logs-table__pre {
    margin: 0;
    padding: 0.7rem 0.85rem;
    background: var(--code-bg-strong);
    border: 1px solid var(--border-subtle);
    border-radius: 6px;
    font-size: 0.82rem;
    color: var(--text-primary);
    max-height: 400px;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
}

/* Hint informativo dentro de admin-modal (ej. notas explicando un campo oculto).
   Estructura esperada: <i class="bi-..."></i> + texto inline o <div>contenido con <a>links</a></div>.
   Si el texto incluye elementos inline (links, code), envolvelos en un <div> para que sean
   un solo flex item — sino cada elemento se vuelve un item separado y se rompe el layout. */
.admin-modal__hint {
    margin: 0.5rem 0 1rem;
    padding: 0.6rem 0.8rem;
    background: rgba(56, 189, 248, 0.08);
    border: 1px solid rgba(56, 189, 248, 0.25);
    border-radius: 8px;
    color: var(--banner-text-info);
    font-size: 0.85rem;
    display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    line-height: 1.5;
}
.admin-modal__hint > i {
    color: var(--banner-icon-info);
    margin-top: 0.15rem;
    flex-shrink: 0;
}
.admin-modal__hint > div {
    flex: 1;
    min-width: 0;
}
.admin-modal__hint a {
    color: var(--brand-teal-light);
    text-decoration: underline;
}

.admin-modal__warning {
    margin: 0.75rem 0 0.25rem;
    padding: 0.65rem 0.85rem;
    background: rgba(234, 179, 8, 0.10);
    border: 1px solid rgba(234, 179, 8, 0.35);
    border-radius: 8px;
    color: var(--banner-text-warn);
    font-size: 0.85rem;
    display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    line-height: 1.5;
}
.admin-modal__warning > i {
    color: var(--banner-icon-warn);
    margin-top: 0.15rem;
    flex-shrink: 0;
}
.admin-modal__warning > div { flex: 1; min-width: 0; }
.admin-modal__warning a { color: var(--banner-text-warn); text-decoration: underline; }
.admin-modal__warning code {
    background: rgba(234, 179, 8, 0.15);
    padding: 0.05rem 0.35rem;
    border-radius: 4px;
}
.admin-modal__warning--inline { margin-top: 0.5rem; }
.admin-modal__warning-list {
    margin: 0.4rem 0 0;
    padding-left: 1.2rem;
}

/* Badge para el IssuerId — CUIT del emisor o "ARCA" cuando lo procesó el parser. */
.badge-issuer {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.18rem 0.55rem;
    background: rgba(148, 163, 184, 0.12);
    border: 1px solid rgba(148, 163, 184, 0.25);
    color: var(--text-secondary);
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}
.badge-issuer i { font-size: 0.8em; opacity: 0.7; }

.admin-invoices__issuer {
    background: rgba(148, 163, 184, 0.10);
    padding: 2px 6px;
    border-radius: 3px;
    font-size: 0.78rem;
    color: var(--text-primary);
    font-variant-numeric: tabular-nums;
}

/* --- Cuotas: dot del listado + barra del form de edición --- */

.quota-cell {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}
.quota-cell__text {
    color: var(--text-primary);
}
.quota-cell__sep {
    color: var(--text-muted);
    margin: 0 0.25rem;
}

.quota-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex: 0 0 auto;
    box-shadow: 0 0 0 2px var(--surface-soft-strong);
}
.quota-dot.is-ok       { background: #22c55e; }   /* verde */
.quota-dot.is-warn     { background: #f59e0b; }   /* amarillo */
.quota-dot.is-danger   { background: #ef4444; }   /* rojo */
.quota-dot.is-exceeded { background: #b91c1c; box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.25); }

.quota-bar {
    display: block;
    width: 100%;
    height: 8px;
    background: var(--surface-raised);
    border-radius: 999px;
    overflow: hidden;
    position: relative;
}
.quota-bar__fill {
    display: block;
    height: 100%;
    border-radius: inherit;
    transition: width 200ms ease;
}
.quota-bar.is-ok       .quota-bar__fill { background: #22c55e; }
.quota-bar.is-warn     .quota-bar__fill { background: #f59e0b; }
.quota-bar.is-danger   .quota-bar__fill { background: #ef4444; }
.quota-bar.is-exceeded .quota-bar__fill { background: #b91c1c; }

.quota-section {
    display: grid;
    gap: 0.85rem;
}
.quota-section__row {
    display: grid;
    gap: 0.35rem;
}
.quota-section__row-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.5rem;
    font-size: 0.85rem;
}
.quota-section__row-label {
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: 0.72rem;
}
.quota-section__row-value {
    color: var(--text-primary);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.quota-section__row-value-pct {
    color: var(--text-muted);
    margin-left: 0.4rem;
}
.quota-section__empty {
    color: var(--text-muted);
    font-style: italic;
    font-size: 0.85rem;
}

.admin-modal {
    position: fixed;
    inset: 0;
    z-index: 200;
    background: var(--backdrop);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.admin-modal__card {
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    padding: 1.75rem;
    width: 100%;
    max-width: 520px;
    max-height: 90vh;
    box-shadow: var(--shadow-card);
    display: flex;
    flex-direction: column;
    gap: 1rem;
    overflow-y: auto;
}
.admin-modal__card--wide {
    max-width: 800px;
}

/* ── Modal "lupa" de valores de lookup (LookupBrowserModal) ──────────────── */
.lookup-browse__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}
.lookup-browse__subtitle {
    margin: 0.25rem 0 0 0;
    font-size: 0.82rem;
    color: var(--text-secondary);
}
.lookup-browse__toolbar {
    display: flex;
    gap: 0.5rem;
}
.lookup-browse__body {
    min-height: 200px;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
.lookup-browse__table {
    font-size: 0.85rem;
}
/* La columna del ResultColumn (el código que se asigna) resaltada para que se note. */
.lookup-browse__result-col {
    color: var(--brand-cyan);
    font-weight: 700;
}
.lookup-browse__result-icon {
    margin-left: 0.3rem;
    font-size: 0.8em;
    color: var(--brand-teal-light);
}
.admin-modal__card--xlarge {
    max-width: min(1200px, 90vw);
    height: 90vh;
    max-height: 90vh;
}
.admin-modal__card--xlarge .model-tree {
    flex: 1;
    overflow-y: auto;
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.5rem;
    background: var(--surface-soft);
}
.model-tree__toolbar {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}
/* Aplica a `<input>` y `<select>` para que matchean el estilo dark del resto del admin
   (los browsers default tienen fondo blanco/sistema). */
.model-tree__search,
input.model-tree__search,
select.model-tree__search {
    flex: 1;
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.55rem 0.75rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.92rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.model-tree__search:focus,
input.model-tree__search:focus,
select.model-tree__search:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}
.model-tree__counter {
    white-space: nowrap;
    font-size: 0.85rem;
}
.model-tree__object {
    border-bottom: 1px solid var(--border-subtle);
    padding: 0.15rem 0;
}
.model-tree__object:last-child {
    border-bottom: none;
}
.model-tree__object-head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.5rem;
    width: 100%;
    background: transparent;
    border: none;
    color: inherit;
    text-align: left;
    cursor: pointer;
    border-radius: 6px;
    font-size: 0.95rem;
}
.model-tree__object-head:hover {
    background: var(--surface-hover);
}
.model-tree__fields {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.25rem 0.5rem 0.5rem 1.75rem;
}
.model-tree__field {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.3rem 0.5rem;
    cursor: pointer;
    border-radius: 6px;
    font-size: 0.9rem;
}
.model-tree__field:hover {
    background: var(--surface-hover);
}
.model-tree__field input[type="checkbox"] {
    margin: 0;
}
.model-tree__field-caption {
    flex: 1;
}
.model-tree__help {
    color: var(--accent-muted, #9ca3af);
    font-size: 0.85rem;
    cursor: help;
}

/* Editor del valor calculado: dos secciones (Scope + Lookup) apiladas con divider. */
.computed-editor {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    flex: 1;
    overflow-y: auto;
    padding-right: 0.25rem;
}
.computed-editor__section {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    padding: 1rem;
    background: var(--surface-soft);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
}
.computed-editor__section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}
.computed-editor__section-head h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
}
.computed-editor__hint {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.7rem 0.9rem;
    background: rgba(96, 165, 250, 0.08);
    border: 1px solid rgba(96, 165, 250, 0.25);
    border-radius: 8px;
    font-size: 0.88rem;
    color: var(--banner-text-info);
}

/* Cuando el editor tiene las dos secciones, el model-tree pasa de scrollear el modal a
   scrollear sólo dentro del scope. Le ponemos un alto fijo razonable. */
.computed-editor .model-tree {
    max-height: 40vh;
    overflow-y: auto;
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.5rem;
    background: var(--surface-soft);
}

/* Preview SQL del lookup — bloque mono no editable mostrando cómo queda armada la query. */
.lookup-sql-preview {
    margin: 0;
    padding: 0.75rem 0.9rem;
    background: var(--code-bg-strong);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    color: var(--sql-preview-text);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.82rem;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 240px;
    overflow-y: auto;
}

/* Selector de tipo de valor calculado: 4 botones grandes en grid 2×2. */
.computed-kind-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
}
.computed-kind-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 1.1rem 0.75rem;
    background: var(--surface-soft-strong);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    color: inherit;
    cursor: pointer;
    text-align: center;
    transition: background 0.15s, border-color 0.15s;
}
.computed-kind-btn:not(:disabled):hover {
    background: var(--surface-raised);
    border-color: var(--accent-subtle, #6b7280);
}
.computed-kind-btn--active {
    border-color: var(--brand-teal);
    background: rgba(0, 158, 142, 0.15);
    color: var(--brand-cyan);
}
.computed-kind-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.computed-kind-btn i {
    font-size: 1.6rem;
}
.computed-kind-btn strong {
    font-size: 1rem;
}
.admin-modal__title {
    margin: 0;
    font-size: 1.25rem;
}
.admin-modal__field {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
/* Cuando dos fields conviven en un grid y uno tiene <small> hint y el otro no, sus inputs
   quedan a alturas distintas. Empujamos input/select al fondo del flex para que alineen. */
.admin-modal__field > input,
.admin-modal__field > select {
    margin-top: auto;
}
.admin-modal__field label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.admin-modal__field input,
.admin-modal__field select {
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.55rem 0.75rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.92rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.admin-modal__field input:focus,
.admin-modal__field select:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}
.admin-modal__field input:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.admin-modal__row {
    display: flex;
    gap: 0.5rem;
    align-items: stretch;
}
.admin-modal__row input {
    flex: 1;
}
.admin-modal__btn-sm {
    padding: 0.4rem 0.85rem;
    font-size: 0.82rem;
    border-radius: 999px;
    white-space: nowrap;
}

.admin-modal__check {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    color: var(--text-primary);
    font-size: 0.92rem;
}
.admin-modal__check input {
    accent-color: var(--brand-teal);
    width: 16px;
    height: 16px;
    cursor: pointer;
}
.admin-modal__check--disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.admin-modal__check--disabled input { cursor: not-allowed; }

/* Header de sección con título + dropdown "Copiar de…" inline a la derecha. */
.client-form__section-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}
.client-form__copy-from {
    background: var(--input-bg-soft);
    border: 1px solid var(--input-border);
    border-radius: 4px;
    color: var(--text-secondary);
    padding: 0.3rem 0.6rem;
    font-family: inherit;
    font-size: 0.8rem;
    cursor: pointer;
}
.client-form__copy-from:hover {
    border-color: var(--brand-cyan);
    color: var(--text-primary);
}
.client-form__copy-from option {
    background-color: var(--option-bg);
    color: var(--text-primary);
}

/* Bloque "Importar desde modelo 4ds" — fila bajo el head de la sección Schema con
   etiqueta + dropdowns (cliente fuente + tabla) + status inline. Reutiliza
   `client-form__copy-from` para los selects para que matcheen con "Copiar de…". */
.client-form__fds-import {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 0.5rem;
    padding: 0.5rem 0.75rem;
    background: var(--input-bg-soft);
    border: 1px dashed var(--input-border);
    border-radius: 4px;
}
.client-form__fds-import-label {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text-secondary);
}
.client-form__fds-import-label i {
    color: var(--brand-cyan);
}
.client-form__fds-import-status {
    font-size: 0.78rem;
    color: var(--text-muted);
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}
.client-form__fds-import-status--error {
    color: var(--danger, #d33);
}

/* --- Editor estructurado de schemas --- */

.schema-editor-tabs {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin: 0.5rem 0 0.75rem 0;
    border-bottom: 1px solid var(--border-subtle);
    padding-bottom: 0.5rem;
    flex-wrap: wrap;
}
.schema-editor-tabs__btn {
    background: transparent;
    border: 1px solid var(--input-border);
    color: var(--text-secondary);
    padding: 0.4rem 0.85rem;
    border-radius: 4px 4px 0 0;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.85rem;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    transition: all 0.15s ease;
}
.schema-editor-tabs__btn:hover {
    color: var(--text-primary);
    border-color: rgba(0, 229, 255, 0.4);
}
.schema-editor-tabs__btn.is-active {
    background: rgba(0, 229, 255, 0.08);
    border-color: var(--brand-cyan);
    color: var(--brand-cyan);
}
.schema-editor-tabs__error {
    color: var(--banner-text-err);
    font-size: 0.82rem;
    font-style: italic;
}

.schema-editor {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.schema-editor__empty {
    color: var(--text-muted);
    font-style: italic;
    padding: 1rem;
    text-align: center;
    border: 1px dashed var(--input-border);
    border-radius: 6px;
    margin: 0;
}
.schema-editor__section {
    background: var(--surface-soft);
    border: 1px solid var(--border-subtle);
    border-radius: 6px;
    padding: 0.85rem;
}
.schema-editor__section-head {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.6rem;
}
.schema-editor__section-name {
    flex: 1;
    background: var(--input-bg-soft);
    border: 1px solid var(--input-border);
    border-radius: 4px;
    color: var(--text-primary);
    padding: 0.4rem 0.6rem;
    font-family: inherit;
    font-size: 0.95rem;
    font-weight: 600;
}
.schema-editor__section-kind {
    background: var(--input-bg-soft);
    border: 1px solid var(--input-border);
    border-radius: 4px;
    color: var(--text-primary);
    padding: 0.4rem 0.6rem;
    font-family: inherit;
    font-size: 0.85rem;
}
.schema-editor__section-kind option {
    background-color: var(--option-bg);
    color: var(--text-primary);
}
.schema-editor__fields {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 0.5rem;
}
.schema-editor__fields th {
    text-align: left;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted);
    padding: 0.3rem 0.4rem;
    font-weight: 500;
}
.schema-editor__fields td {
    padding: 0.25rem 0.4rem;
    vertical-align: middle;
}
.schema-editor__fields input[type="text"],
.schema-editor__fields select {
    width: 100%;
    background: var(--input-bg-soft);
    border: 1px solid var(--input-border);
    border-radius: 3px;
    color: var(--text-primary);
    padding: 0.3rem 0.5rem;
    font-family: inherit;
    font-size: 0.85rem;
}
.schema-editor__fields select option {
    background-color: var(--option-bg);
    color: var(--text-primary);
}
.schema-editor__fields input[type="text"]:focus,
.schema-editor__fields select:focus {
    outline: none;
    border-color: var(--brand-cyan);
}
.schema-editor__fields input[type="checkbox"] {
    accent-color: var(--brand-teal);
    cursor: pointer;
}
.schema-editor__compute-order {
    width: 4.5rem;
    background: var(--input-bg-soft);
    border: 1px solid var(--input-border);
    border-radius: 3px;
    color: var(--text-primary);
    padding: 0.3rem 0.4rem;
    font-family: inherit;
    font-size: 0.85rem;
    text-align: center;
}
.schema-editor__compute-order:focus {
    outline: none;
    border-color: var(--brand-cyan);
}

.translation-mappings .translation-mappings__arrow {
    width: 1.5rem;
    text-align: center;
    color: var(--text-muted);
}

/* Celda de descripción con input + botón "expandir" inline. */
.schema-editor__desc-cell {
    display: flex;
    gap: 0.25rem;
    align-items: stretch;
}
.schema-editor__desc-cell input {
    flex: 1 1 auto;
    min-width: 0;
}
.schema-editor__expand-btn {
    background: transparent;
    border: 1px solid var(--input-border);
    color: var(--text-muted);
    padding: 0 0.5rem;
    border-radius: 3px;
    cursor: pointer;
    flex: 0 0 auto;
    font-size: 0.85rem;
    line-height: 1;
    transition: all 0.15s ease;
}
.schema-editor__expand-btn:hover {
    border-color: var(--brand-cyan);
    color: var(--brand-cyan);
}

.admin-modal__warning {
    margin: 0;
    color: var(--banner-text-warn);
    font-size: 0.85rem;
}
.admin-modal__error {
    margin: 0;
    padding: 0.6rem 0.85rem;
    background: rgba(220, 38, 38, 0.10);
    border: 1px solid rgba(220, 38, 38, 0.30);
    border-radius: 8px;
    color: var(--banner-text-err);
    font-size: 0.88rem;
}

.admin-modal__actions {
    display: flex;
    gap: 0.5rem;
    justify-content: flex-end;
    margin-top: 0.5rem;
}

.admin-modal__btn-danger {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(220, 38, 38, 0.20);
    color: var(--banner-text-err);
    border: 1px solid rgba(220, 38, 38, 0.45);
    padding: 12px 24px;
    border-radius: 50px;
    font-weight: 600;
    font-size: 0.9rem;
    cursor: pointer;
    transition: background 0.15s;
}
.admin-modal__btn-danger:hover {
    background: rgba(220, 38, 38, 0.30);
}

.admin-modal__section {
    margin: 0.25rem -0.4rem 0;
    padding: 0.5rem 0.4rem;
    border-top: 1px solid var(--border-subtle);
}
.admin-modal__section > summary {
    cursor: pointer;
    list-style: none;
    font-weight: 600;
    color: var(--text-primary);
    padding: 0.25rem 0;
    user-select: none;
    font-size: 0.95rem;
}
.admin-modal__section > summary::-webkit-details-marker { display: none; }
.admin-modal__section > summary::before {
    content: "▸ ";
    color: var(--brand-teal-light);
    margin-right: 0.25rem;
    transition: transform 0.15s ease;
    display: inline-block;
}
.admin-modal__section[open] > summary::before {
    transform: rotate(90deg);
}
.admin-modal__section > * + * {
    margin-top: 0.75rem;
}
.admin-modal__section-hint {
    font-weight: 400;
    color: var(--text-muted);
    font-size: 0.8rem;
    margin-left: 0.25rem;
}

.admin-modal__textarea {
    width: 100%;
    box-sizing: border-box;
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.55rem 0.75rem;
    color: var(--text-primary);
    font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
    font-size: 0.82rem;
    resize: vertical;
}
.admin-modal__textarea:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}

.admin-page__subtitle {
    margin: 0.25rem 0 0 0;
    color: var(--text-secondary);
    font-size: 0.95rem;
    max-width: 720px;
}

.llm-form {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 1.75rem;
}

.llm-form__field {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.llm-form__field > label {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--brand-teal-light);
}
.llm-form__hint {
    color: var(--text-secondary);
    font-size: 0.85rem;
    line-height: 1.45;
    margin-bottom: 0.25rem;
}

.llm-form__textarea {
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.75rem 0.9rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.9rem;
    line-height: 1.55;
    resize: vertical;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.llm-form__textarea:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}
.llm-form__textarea--code {
    font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
    font-size: 0.82rem;
    tab-size: 2;
}

.llm-form__actions {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
    align-items: center;
}

.llm-form__saved {
    margin: 0;
    padding: 0.6rem 0.85rem;
    background: rgba(34, 197, 94, 0.12);
    border: 1px solid rgba(34, 197, 94, 0.35);
    border-radius: 8px;
    color: var(--banner-text-ok);
    font-size: 0.88rem;
}

.llm-form__updated {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.78rem;
    text-align: right;
}

/* ── Editor de Cálculo ───────────────────────────────────────────────────────────────────── */

/* Tarjeta de una regla */
.calc-rule {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.9rem 1rem;
    background: var(--surface-soft);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
}
.calc-rule--error {
    border-color: rgba(239, 68, 68, 0.4);
    background: rgba(239, 68, 68, 0.04);
}
.calc-rule__header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.calc-rule__index {
    font-weight: 600;
    font-size: 0.88rem;
}
.calc-rule__actions {
    margin-left: auto;
    display: flex;
    gap: 0.25rem;
}

/* Condiciones dentro de una regla */
.calc-rule__conditions {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    background: var(--code-bg-strong);
    border-radius: 7px;
}
.calc-condition {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}
.calc-condition__left,
.calc-condition__right {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}
.calc-condition__op {
    width: auto;
    min-width: 90px;
}
.calc-condition-connector {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.83rem;
    color: var(--text-muted);
}

/* Offset de fecha */
.calc-date-offset {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: wrap;
    font-size: 0.85rem;
}
.calc-date-offset input[type=number] {
    width: 68px;
}

/* Outcome / resultado */
.calc-rule__outcome {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.6rem 0.75rem;
    border-top: 1px solid var(--border-subtle);
}
.calc-rule__outcome label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.calc-outcome-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.calc-arithmetic {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    flex: 1;
}

/* Inputs y selects en TODO el editor de cálculo (reglas + sección default value) */
.calc-rule input:not([type="checkbox"]),
.calc-rule select,
.computed-editor__section > input,
.computed-editor__section > input[type="text"] {
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.45rem 0.65rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.88rem;
    transition: border-color 0.15s, box-shadow 0.15s;
    min-width: 0;
}
.calc-rule input:not([type="checkbox"]):focus,
.calc-rule select:focus,
.computed-editor__section > input:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}
.calc-rule input:disabled,
.calc-rule select:disabled,
.computed-editor__section > input:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
/* flex: 1 en inputs de texto libres para ocupar el espacio disponible */
.calc-outcome-row > input[type="text"],
.calc-condition__left > input[type="text"],
.calc-condition__right > input[type="text"] {
    flex: 1;
}
/* El input de default value ocupa el ancho completo de la sección */
.computed-editor__section > input[type="text"] {
    width: 100%;
}

/* Badge de estado */
.calc-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
}
.calc-badge--unconditional {
    background: rgba(96, 165, 250, 0.15);
    color: var(--banner-text-info);
    border: 1px solid rgba(96, 165, 250, 0.3);
}

/* ── Editor de Query SQLite ──────────────────────────────────────────────────────────────── */

.query-editor__sql {
    width: 100%;
    font-family: 'Consolas', 'Fira Code', 'Cascadia Code', monospace;
    font-size: 0.87rem;
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.65rem 0.75rem;
    color: var(--text-primary);
    resize: vertical;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.query-editor__sql:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}

.query-editor__params {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 0.4rem;
}
.query-editor__param-row {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}
.query-editor__param-name {
    font-family: 'Consolas', 'Fira Code', monospace;
    font-size: 0.85rem;
    color: var(--brand-cyan);
    background: rgba(0, 158, 142, 0.10);
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    white-space: nowrap;
}
.query-editor__param-arrow {
    color: var(--text-muted);
    font-size: 0.9rem;
}
.query-editor__param-field {
    flex: 1;
    min-width: 180px;
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.45rem 0.65rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.88rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.query-editor__param-field:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}

/* Referencia rápida del editor Javascript */
.query-editor__js-hint {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.65rem 0.85rem;
    background: rgba(0, 158, 142, 0.06);
    border: 1px solid rgba(0, 158, 142, 0.18);
    border-radius: 8px;
    font-size: 0.84rem;
}
.query-editor__js-hint-row {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
}
.query-editor__js-hint-row > code:first-child {
    font-family: 'Consolas', 'Fira Code', monospace;
    color: var(--brand-cyan);
    background: rgba(0, 158, 142, 0.12);
    padding: 0.1rem 0.4rem;
    border-radius: 4px;
    white-space: nowrap;
    min-width: 56px;
}
.query-editor__js-hint-row > span {
    color: var(--text-secondary);
}

/* Subtítulo para separar bloques de stats dentro de una misma página admin
   (p.ej. "Facturas (LLM)" vs "Pedidos por voz/texto" en /admin/consumos). */
.admin-page__section-title {
    margin: 1.5rem 0 0.5rem;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-primary);
}
.admin-page__section-title:first-of-type {
    margin-top: 0;
}

/* Card variant que ancla un botón de acción al final del row de stats (ej. "Forzar tick"
   al lado de las cards de "En cola" / "Fallidas" en /admin/worker). */
.admin-stats__card--action {
    align-items: stretch;
    justify-content: center;
    background: transparent;
    border-style: dashed;
    padding: 0.75rem;
}
.admin-stats__card--action button {
    width: 100%;
}

/* ── Paginación (componente <Pager>, compartido por todos los listados) ───── */
.pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    margin-top: 1rem;
    padding: 0.6rem 0.9rem;
    background: var(--dark-card);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    font-size: 0.85rem;
}
.pager__size {
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.pager__size label {
    color: var(--text-secondary);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin: 0;
}
.pager__size-select {
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: 0.3rem 0.55rem;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.85rem;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.pager__size-select:focus {
    outline: none;
    border-color: var(--brand-teal);
    box-shadow: 0 0 0 3px rgba(0, 158, 142, 0.20);
}
.pager__info {
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
}
.pager__nav {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: auto;
}
.pager__btn {
    min-width: 32px;
    height: 32px;
    padding: 0 0.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--dark-card-2);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.85rem;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.pager__btn:hover:not(:disabled):not(.pager__btn--active) {
    border-color: var(--brand-teal);
    color: var(--brand-teal-light);
}
.pager__btn--active {
    background: var(--brand-teal);
    border-color: var(--brand-teal);
    color: #fff;
    font-weight: 700;
    cursor: default;
}
.pager__btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.pager__ellipsis {
    padding: 0 0.25rem;
    color: var(--text-muted);
}
