/* v187 · Etiquetas de estado claramente diferenciadas y coherentes con las apariencias. */
:root {
    /* Apariencias claras: fondo suave + texto/borde semántico. */
    --status-success-bg: #dcfce7;
    --status-success-border: #86efac;
    --status-success-text: #166534;

    --status-danger-bg: #fee2e2;
    --status-danger-border: #fca5a5;
    --status-danger-text: #991b1b;

    --status-warning-bg: #fef3c7;
    --status-warning-border: #fcd34d;
    --status-warning-text: #92400e;

    --status-info-bg: #dbeafe;
    --status-info-border: #93c5fd;
    --status-info-text: #1e40af;

    --status-special-bg: #ede9fe;
    --status-special-border: #c4b5fd;
    --status-special-text: #5b21b6;

    --status-neutral-bg: #f1f5f9;
    --status-neutral-border: #cbd5e1;
    --status-neutral-text: #475569;
}

/* En modo oscuro se conservan las mismas familias cromáticas, con contraste adecuado. */
html[data-theme="dark"] {
    --status-success-bg: #153b2c;
    --status-success-border: #2f6b4f;
    --status-success-text: #86efac;

    --status-danger-bg: #4a2025;
    --status-danger-border: #7f3038;
    --status-danger-text: #fca5a5;

    --status-warning-bg: #473514;
    --status-warning-border: #76551d;
    --status-warning-text: #fcd34d;

    --status-info-bg: #172d4b;
    --status-info-border: #28558a;
    --status-info-text: #93c5fd;

    --status-special-bg: #332454;
    --status-special-border: #5b438b;
    --status-special-text: #c4b5fd;

    --status-neutral-bg: #293443;
    --status-neutral-border: #455468;
    --status-neutral-text: #cbd5e1;
}

/* Base visual sobria. Un badge no clasificado queda neutro, nunca azul por defecto. */
.app-content table .badge,
.app-content table .gre-status,
.app-content table .sire-status,
.app-content table .cancellation-status,
.app-content table .status-badge,
.app-content table .status-label-v187,
.app-content table .status-label-v186 {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 25px;
    padding: 4px 9px;
    border: 1px solid var(--status-neutral-border) !important;
    border-radius: 999px;
    background: var(--status-neutral-bg) !important;
    color: var(--status-neutral-text) !important;
    font-family: "Poppins", sans-serif !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    line-height: 1.15;
    letter-spacing: .005em;
    white-space: nowrap;
    box-shadow: none;
}

/* VERDE · resultado correcto / vigente / completado. */
.app-content table .status-tone--success,
.app-content table .badge.success,
.app-content table .status-aceptada,
.app-content table .status-aceptado,
.app-content table .status-pagada,
.app-content table .status-pagado,
.app-content table .status-confirmada,
.app-content table .status-confirmado,
.app-content table .status-aplicada,
.app-content table .status-aplicado,
.app-content table .status-completada,
.app-content table .status-completado,
.app-content table .status-entregada,
.app-content table .status-entregado,
.app-content table .status-terminada,
.app-content table .status-terminado,
.app-content table .status-activa,
.app-content table .status-activo,
.app-content table .status-active,
.app-content table .status-disponible,
.app-content table .status-normal,
.app-content table .status-descargada,
.app-content table .status-descargado,
.app-content table .electronic-aceptado,
.app-content table .note-aceptado,
.app-content table .return-aplicado,
.app-content table .service-terminado,
.app-content table .service-entregado,
.app-content table .warranty-activa,
.app-content table .cancellation-status-aceptado,
.app-content table .gre-status-accepted,
.app-content table .sire-status.is-success {
    background: var(--status-success-bg) !important;
    border-color: var(--status-success-border) !important;
    color: var(--status-success-text) !important;
}

/* ROJO · error / rechazo / anulación / vencimiento / riesgo. */
.app-content table .status-tone--danger,
.app-content table .badge.danger,
.app-content table .status-rechazada,
.app-content table .status-rechazado,
.app-content table .status-error,
.app-content table .status-anulada,
.app-content table .status-anulado,
.app-content table .status-cancelada,
.app-content table .status-cancelado,
.app-content table .status-vencida,
.app-content table .status-vencido,
.app-content table .status-fallida,
.app-content table .status-fallido,
.app-content table .status-bloqueada,
.app-content table .status-bloqueado,
.app-content table .status-locked,
.app-content table .status-stock_bajo,
.app-content table .status-baja_aceptada,
.app-content table .electronic-rechazado,
.app-content table .electronic-error,
.app-content table .electronic-baja_aceptada,
.app-content table .note-rechazado,
.app-content table .note-error,
.app-content table .note-baja_aceptada,
.app-content table .return-anulada,
.app-content table .service-cancelado,
.app-content table .warranty-anulada,
.app-content table .warranty-vencida,
.app-content table .cancellation-status-rechazado,
.app-content table .cancellation-status-error,
.app-content table .cancellation-final-badge,
.app-content table .gre-status-rejected,
.app-content table .gre-status-error,
.app-content table .sire-status.is-danger {
    background: var(--status-danger-bg) !important;
    border-color: var(--status-danger-border) !important;
    color: var(--status-danger-text) !important;
}

/* ÁMBAR · requiere atención, aún no concluye. */
.app-content table .status-tone--warning,
.app-content table .status-parcial,
.app-content table .status-pendiente,
.app-content table .status-observada,
.app-content table .status-observado,
.app-content table .status-pendiente_envio,
.app-content table .status-pendiente_cdr,
.app-content table .status-baja_pendiente,
.app-content table .status-envio_incierto,
.app-content table .status-por_cobrar,
.app-content table .status-por_pagar,
.app-content table .status-warning,
.app-content table .electronic-pendiente,
.app-content table .electronic-pendiente_envio,
.app-content table .electronic-pendiente_cdr,
.app-content table .electronic-envio_incierto,
.app-content table .electronic-aceptado_observaciones,
.app-content table .electronic-baja_pendiente,
.app-content table .note-pendiente,
.app-content table .note-pendiente_envio,
.app-content table .note-pendiente_cdr,
.app-content table .note-envio_incierto,
.app-content table .note-aceptado_observaciones,
.app-content table .note-baja_pendiente,
.app-content table .return-pendiente,
.app-content table .return-parcial,
.app-content table .service-espera_repuesto,
.app-content table .cancellation-status-pendiente,
.app-content table .cancellation-pending-badge,
.app-content table .gre-status-pending,
.app-content table .sire-status.is-warning {
    background: var(--status-warning-bg) !important;
    border-color: var(--status-warning-border) !important;
    color: var(--status-warning-text) !important;
}

/* AZUL · avance normal del flujo / documento convertido o emitido. */
.app-content table .status-tone--info,
.app-content table .status-emitida,
.app-content table .status-emitido,
.app-content table .status-convertida,
.app-content table .status-convertido,
.app-content table .status-enviada,
.app-content table .status-enviado,
.app-content table .status-procesando,
.app-content table .status-generada,
.app-content table .status-generado,
.app-content table .status-recibida,
.app-content table .status-recibido,
.app-content table .status-abierta,
.app-content table .status-abierto,
.app-content table .status-en_proceso,
.app-content table .status-solicitada,
.app-content table .status-solicitado,
.app-content table .status-programada,
.app-content table .status-programado,
.app-content table .electronic-generado,
.app-content table .electronic-enviado,
.app-content table .electronic-procesando,
.app-content table .note-generado,
.app-content table .note-enviado,
.app-content table .note-procesando,
.app-content table .service-recibido,
.app-content table .cancellation-status-enviado,
.app-content table .cancellation-status-procesando,
.app-content table .sire-status.is-info {
    background: var(--status-info-bg) !important;
    border-color: var(--status-info-border) !important;
    color: var(--status-info-text) !important;
}

/* MORADO · estado especial que conviene distinguir del flujo documental. */
.app-content table .status-tone--special,
.app-content table .status-reservada,
.app-content table .status-reservado,
.app-content table .service-en_reparacion,
.app-content table .security-super {
    background: var(--status-special-bg) !important;
    border-color: var(--status-special-border) !important;
    color: var(--status-special-text) !important;
}

/* GRIS · cerrado / inactivo / borrador / no aplicable. */
.app-content table .status-tone--neutral,
.app-content table .status-cerrada,
.app-content table .status-cerrado,
.app-content table .status-inactiva,
.app-content table .status-inactivo,
.app-content table .status-inactive,
.app-content table .status-no_aplica,
.app-content table .status-borrador,
.app-content table .status-vendida,
.app-content table .status-vendido,
.app-content table .status-consumida,
.app-content table .status-consumido,
.app-content table .status-no_disponible,
.app-content table .electronic-no_aplica,
.app-content table .warranty-cerrada,
.app-content table .gre-status-cancelled,
.app-content table .gre-status-draft,
.app-content table .sire-status.is-neutral {
    background: var(--status-neutral-bg) !important;
    border-color: var(--status-neutral-border) !important;
    color: var(--status-neutral-text) !important;
}

/* El punto de SIRE toma el color del texto de la propia etiqueta. */
.app-content table .sire-status > span {
    background: currentColor !important;
    opacity: .95;
}

/* Una fila inactiva puede atenuarse, pero su etiqueta debe conservar legibilidad. */
.app-content table tr.is-inactive-row .badge {
    opacity: 1;
}

/* Reportes y Resumen Diario. */
.app-content table .report-sale-status.is-reversed,
.app-content table .summary-error,
.app-content table .summary-envio_incierto,
.app-content table .summary-rechazado {
    background: var(--status-danger-bg) !important;
    border-color: var(--status-danger-border) !important;
    color: var(--status-danger-text) !important;
}

.app-content table .report-sale-status.is-adjusted,
.app-content table .summary-procesando,
.app-content table .summary-aceptado_observaciones,
.app-content table .summary-pendiente_envio,
.app-content table .summary-pendiente_cdr,
.app-content table .summary-baja_pendiente {
    background: var(--status-warning-bg) !important;
    border-color: var(--status-warning-border) !important;
    color: var(--status-warning-text) !important;
}

.app-content table .summary-generado,
.app-content table .summary-enviado {
    background: var(--status-info-bg) !important;
    border-color: var(--status-info-border) !important;
    color: var(--status-info-text) !important;
}

.app-content table .summary-aceptado {
    background: var(--status-success-bg) !important;
    border-color: var(--status-success-border) !important;
    color: var(--status-success-text) !important;
}

.app-content table .summary-borrador {
    background: var(--status-neutral-bg) !important;
    border-color: var(--status-neutral-border) !important;
    color: var(--status-neutral-text) !important;
}

.app-content table .report-sale-status {
    min-height: 24px;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 10.5px !important;
    font-weight: 700 !important;
}
