/* ============================================================================
   MCPP Web · lenguaje visual del frente Exportadores MEF
   ----------------------------------------------------------------------------
   Vivía dentro de un <style> de McppGenerarTxt.razor, así que /mcpp/traza-generacion
   usaba las mismas clases SIN que existieran: los paneles salían sin borde y las
   tarjetas sin franja. Extraído aquí (M21) para que las dos pantallas compartan
   UNA fuente de estilo y no dos copias que se separan con el tiempo.

   M24 · se amplía el vocabulario acercando la DISPOSICIÓN a la maqueta aprobada
   (tarjetas con cabecera, banda de título, banners de modo, micro-rótulos, cifras
   tabulares, barra de acciones). La maqueta es referencia de layout, NO de color:
   los tonos siguen siendo los institucionales de la MPU.

   Colores institucionales MPU: azul #0A1B3D / #122D5E · dorado #D4A01E · verde #1DA87A
   ============================================================================ */

/* ============================================================================
   M24-b · 🔴 ESTA APLICACIÓN NO CARGA BOOTSTRAP
   ----------------------------------------------------------------------------
   Medido, no supuesto: el tema activo es `DxThemes.FluentLight` (nativo de
   DevExpress, no `.bs5`), la línea de `blazing-berry.bs5.min.css` está comentada
   en App.razor y no hay bootstrap.css en `wwwroot`. Comprobado clase por clase
   sobre las hojas que sí se cargan:

     EXISTEN  : .alert .alert-warning/danger/info/success · .badge · .bg-* ·
                .text-danger · .w-100   (definidas a mano en site.css y temas)
     NO EXISTEN: .row · .col-N · .g-N · .d-flex · .gap-N · .justify-content-X ·
                .align-items-X · .flex-wrap · .mt-N .mb-N .ms-N .py-N .px-N ·
                .text-muted · .text-end · .fw-bold · .fw-semibold

   ⚠️ Nota para quien edite este comentario: NO escribir aquí dentro un asterisco
   seguido de barra. Esta lista se escribió una vez con esa secuencia entre los
   nombres de las utilidades, y CERRÓ el comentario a media frase: el navegador leyó
   el resto como si fuera un selector y, al recuperarse del error, se comió entera la
   regla .mcpp-kpis que viene justo debajo. Las tarjetas siguieron apiladas por culpa
   de la propia explicación de por qué se apilaban. Por eso arriba se escribe .col-N
   y no la forma con comodín.

   Por eso las cuatro tarjetas de la traza salían APILADAS a pantalla completa:
   `col-6 col-md-3` no significaba nada. Es la misma lección de M21 §0 —clases
   bien escritas que nadie define— un piso más arriba: allí faltaba nuestro CSS,
   aquí falta el marco que se daba por sentado.

   Se resuelve con clases propias (abajo) y con una capa mínima de utilidades
   ACOTADA A `.mcpp`: así ninguna otra pantalla del sistema cambia de aspecto por
   esto. No se añade Bootstrap: meterlo ahora repintaría la aplicación entera.
   ============================================================================ */

/* Rejilla de tarjetas KPI: se reparten solas y no se apilan en pantalla ancha. */
.mcpp-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
    margin-bottom: 12px;
}

/* Dos columnas de la maqueta: la selección manda y la acción va a su lado. */
.mcpp-dos {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 12px;
    margin-top: 12px;
    align-items: start;
}

@media (max-width: 1200px) {
    .mcpp-dos { grid-template-columns: minmax(0, 1fr); }
}

/* Fila con algo a la izquierda y algo a la derecha. */
.mcpp-fila {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 10px;
}

.mcpp-fila.centrada { align-items: center; }
.mcpp-derecha { display: flex; align-items: center; gap: 12px; flex: none; }

/* Línea de datos sueltos (archivo, registros, importes) sin rejilla de 12. */
.mcpp-datos { display: flex; flex-wrap: wrap; gap: 6px 22px; }

/* ---- utilidades mínimas, SÓLO dentro de .mcpp ---- */
.mcpp .mt-0 { margin-top: 0; }
.mcpp .mt-1 { margin-top: .25rem; }
.mcpp .mt-2 { margin-top: .5rem; }
.mcpp .mt-3 { margin-top: 1rem; }
.mcpp .mb-0 { margin-bottom: 0; }
.mcpp .mb-1 { margin-bottom: .25rem; }
.mcpp .mb-2 { margin-bottom: .5rem; }
.mcpp .mb-3 { margin-bottom: 1rem; }
.mcpp .ms-1 { margin-left: .25rem; }
.mcpp .ms-2 { margin-left: .5rem; }
.mcpp .py-0 { padding-top: 0; padding-bottom: 0; }
.mcpp .py-1 { padding-top: .25rem; padding-bottom: .25rem; }
.mcpp .py-2 { padding-top: .5rem; padding-bottom: .5rem; }
.mcpp .px-1 { padding-left: .25rem; padding-right: .25rem; }
.mcpp .px-2 { padding-left: .5rem; padding-right: .5rem; }
.mcpp .px-3 { padding-left: 1rem; padding-right: 1rem; }
.mcpp .text-muted { color: #6b7280; }
.mcpp .text-end { text-align: right; }
.mcpp .fw-bold { font-weight: 700; }
.mcpp .fw-semibold { font-weight: 600; }
.mcpp .fw-normal { font-weight: 400; }
.mcpp .d-flex { display: flex; }
.mcpp .align-items-center { align-items: center; }
.mcpp .align-items-start { align-items: flex-start; }
.mcpp .justify-content-between { justify-content: space-between; }
.mcpp .flex-wrap { flex-wrap: wrap; }
.mcpp .gap-2 { gap: .5rem; }
.mcpp .gap-3 { gap: 1rem; }

.mcpp-header {
    background: linear-gradient(135deg, #0A1B3D 0%, #122D5E 100%);
    color: #fff;
    border-radius: 6px;
    padding: 12px 18px;
    margin-bottom: 12px;
}

.mcpp-header h5 { font-size: 1rem; font-weight: 600; margin: 0; }
.mcpp-header small { font-size: .75rem; opacity: .85; }

/* Cinta de datos de serie dentro de la cabecera (M21) */
.mcpp-header .serie {
    font-size: .74rem;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 14px;
    padding: 4px 12px;
    display: inline-block;
    margin-top: 6px;
    font-variant-numeric: tabular-nums;
}

.mcpp-header .serie strong { color: #F3D27A; }

/* Contexto de la derecha de la cabecera: UE y periodo, en pequeño (M24). */
.mcpp-header .contexto {
    font-size: .74rem;
    opacity: .85;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.mcpp-panel {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    padding: 12px 16px;
    margin-bottom: 12px;
}

/* ---------------------------------------------------------------------------
   M24 · TARJETA con cabecera propia
   La maqueta separa «de qué va esta caja» de «qué hay dentro» con un filete.
   .mcpp-card es .mcpp-panel sin relleno: el relleno lo ponen .head y .cuerpo.
   --------------------------------------------------------------------------- */

.mcpp-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    margin-bottom: 12px;
    overflow: hidden;
}

.mcpp-card > .head {
    padding: 10px 16px 9px 16px;
    border-bottom: 1px solid #eef0f3;
}

.mcpp-card > .head .titulo { font-size: 1.02rem; font-weight: 700; color: #0A1B3D; }
.mcpp-card > .head .sub { font-size: .76rem; color: #6b7280; margin-top: 3px; }

.mcpp-card > .cuerpo { padding: 11px 16px; }

/* Banda de título azul institucional: rotula la caja y, a la derecha, lleva el
   contexto (cuántos hay, de qué serie). El dato de contexto va DONDE se mira la
   tabla, no en un párrafo aparte que nadie lee. */
.mcpp-banda {
    background: linear-gradient(135deg, #0A1B3D 0%, #122D5E 100%);
    color: #fff;
    padding: 7px 14px;
    font-size: .8rem;
    font-weight: 600;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.mcpp-banda .contexto {
    font-size: .72rem;
    font-weight: 400;
    color: #C6D8E9;
    font-variant-numeric: tabular-nums;
}

/* Micro-rótulo en versalitas sobre un campo o una cifra. */
.mcpp-rotulo {
    font-size: .68rem;
    font-weight: 600;
    color: #5B6472;
    text-transform: uppercase;
    letter-spacing: .4px;
}

/* Campo de SÓLO LECTURA: se ve que es un dato derivado, no un hueco que el
   operador se dejó sin rellenar. La marca de la derecha dice de dónde sale. */
.mcpp-ro {
    border: 1px solid #dde1e7;
    background: #f5f6f8;
    border-radius: 4px;
    padding: 5px 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    font-size: .84rem;
    color: #374151;
    min-height: 34px;
}

.mcpp-ro .dato { font-weight: 600; color: #0A1B3D; font-variant-numeric: tabular-nums; }

.mcpp-ro .marca {
    font-size: .62rem;
    color: #8a929e;
    text-transform: uppercase;
    letter-spacing: .4px;
    white-space: nowrap;
}

/* ---------------------------------------------------------------------------
   M24 · BANNER DE MODO, a ancho completo
   Era un `alert` pequeño dentro de la tarjeta de parámetros. El modo decide si
   se consume un número de una serie que el MEF no devuelve: tiene que verse
   antes de mirar nada más.
   --------------------------------------------------------------------------- */

.mcpp-aviso {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-radius: 6px;
    padding: 10px 16px;
    margin-bottom: 12px;
}

.mcpp-aviso .disco {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    font-size: .95rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}

.mcpp-aviso .titulo { font-size: .88rem; font-weight: 700; letter-spacing: .3px; }
.mcpp-aviso .texto { font-size: .78rem; margin-top: 3px; line-height: 1.45; }
.mcpp-aviso .texto strong { font-weight: 700; }

/* Calibración: dorado institucional. Es un ensayo, no un peligro. */
.mcpp-aviso.calibracion {
    background: #FFF8E9;
    border: 1px solid #E8C77A;
    border-left: 6px solid #D4A01E;
    color: #7A5A22;
}

.mcpp-aviso.calibracion .disco { background: #D4A01E; color: #fff; }
.mcpp-aviso.calibracion .titulo { color: #8A4B08; }

/* Real: rojo sólido. Se consume serie; no puede parecerse a un aviso más. */
.mcpp-aviso.real {
    background: #7F1D1D;
    border: 1px solid #7F1D1D;
    border-left: 6px solid #450A0A;
    color: #F3C9C9;
}

.mcpp-aviso.real .disco { background: #fff; color: #7F1D1D; }
.mcpp-aviso.real .titulo { color: #fff; }
.mcpp-aviso.real .texto strong { color: #fff; }
.mcpp-aviso.real a { color: #FFD9D9; }

/* Nota dentro de un panel: mismo filete, sin disco. Para lo que matiza, no
   para lo que manda. */
.mcpp-nota {
    border-radius: 4px;
    padding: 9px 13px;
    font-size: .8rem;
    margin-top: 10px;
}

.mcpp-nota.roja { background: #FEE2E2; border: 1px solid #F5A9A9; border-left: 5px solid #B91C1C; color: #7F1D1D; }
.mcpp-nota.ambar { background: #FFF8E9; border: 1px solid #E8C77A; border-left: 5px solid #D4A01E; color: #7A5A22; }
.mcpp-nota.azul { background: #EAF1F8; border: 1px solid #B9CFE4; border-left: 5px solid #122D5E; color: #16395A; }
.mcpp-nota.gris { background: #F5F6F8; border: 1px solid #dde1e7; border-left: 5px solid #9AA1AB; color: #4B5563; }

/* ---------------------------------------------------------------------------
   M24 · Par segmentado del modo
   Dos botones en vez de un alternador: se ve en cuál se está sin leer el rótulo
   del botón. El activo va DESHABILITADO —no hay a dónde ir desde donde ya se
   está— y el CSS lo pinta como activo, no como apagado.
   --------------------------------------------------------------------------- */

.mcpp-modo { display: flex; gap: 8px; }
.mcpp-modo .dxbl-btn { flex: 1; font-size: .78rem; }

/* El activo va deshabilitado (no hay a dónde ir desde donde ya se está) pero NO puede
   verse apagado: se le devuelve la opacidad y se le marca el contorno. Si se viera
   atenuado, el modo REAL parecería inactivo justo cuando está armado. */
.mcpp-modo .activo,
.mcpp-modo .activo:disabled,
.mcpp-modo .activo.dxbl-disabled {
    opacity: 1;
    filter: none;
    font-weight: 700;
    box-shadow: 0 0 0 2px rgba(10, 27, 61, .18);
}

.mcpp-modo .inactivo { font-weight: 500; }

/* ---------------------------------------------------------------------------
   M24 · Cifras rotuladas (panel de selección)
   Los totales de M19 eran un párrafo corrido: para leer el neto había que
   recorrer la frase entera.
   --------------------------------------------------------------------------- */

.mcpp-cifras {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(105px, 1fr));
    gap: 12px;
}

.mcpp-cifra .rotulo {
    font-size: .67rem;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: .4px;
    white-space: nowrap;
}

.mcpp-cifra .valor {
    font-size: 1.12rem;
    font-weight: 700;
    color: #16283C;
    font-variant-numeric: tabular-nums;
    margin-top: 2px;
    line-height: 1.15;
}

.mcpp-cifra.dinero .valor { font-size: .98rem; font-weight: 600; }
.mcpp-cifra.destacada .valor { color: #122D5E; font-weight: 700; }

.mcpp-kpi {
    border-left: 4px solid #D4A01E;
    padding: 8px 12px;
    background: #fafafa;
    border-radius: 4px;
    height: 100%;
}

.mcpp-kpi .valor { font-size: 1.35rem; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.mcpp-kpi .rotulo { font-size: .72rem; color: #6b7280; text-transform: uppercase; letter-spacing: .4px; }
/* Pista bajo el valor (M24): qué es exactamente lo que se está contando. */
.mcpp-kpi .pista { font-size: .68rem; color: #9ca3af; margin-top: 2px; }
.mcpp-kpi.ok { border-left-color: #1DA87A; }
.mcpp-kpi.error { border-left-color: #dc2626; }
.mcpp-kpi.aviso { border-left-color: #D4A01E; }
.mcpp-kpi.neutro { border-left-color: #9ca3af; }

.mcpp-txt {
    font-family: Consolas, "Courier New", monospace;
    font-size: .74rem;
    white-space: pre;
    overflow-x: auto;
    background: #0A1B3D;
    color: #e5e7eb;
    padding: 10px;
    border-radius: 4px;
    max-height: 320px;
}

/* ---------------------------------------------------------------------------
   M24 · Barra de acciones al pie de una tarjeta
   La advertencia a la izquierda y los botones a la derecha: se lee lo que va a
   pasar en el mismo golpe de vista en que se pulsa.
   --------------------------------------------------------------------------- */

.mcpp-barra {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding: 10px 14px;
    margin: 12px -16px -11px -16px;
    border-top: 1px solid #eef0f3;
    background: #FAFBFC;
}

.mcpp-barra .aviso { font-size: .78rem; color: #6b7280; }
.mcpp-barra .botones { display: flex; gap: 10px; flex: none; }

/* Fila de archivo descargable: nombre arriba, datos en gris debajo, botón a la
   derecha. El hash viaja con el archivo, no en un párrafo aparte. */
.mcpp-archivo {
    background: #fff;
    border: 1px solid #D7E4DA;
    border-radius: 4px;
    padding: 7px 11px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
}

.mcpp-archivo .nombre {
    font-family: Consolas, "Courier New", monospace;
    font-size: .8rem;
    font-weight: 600;
    color: #16283C;
}

.mcpp-archivo .meta { font-size: .72rem; color: #6b7280; font-variant-numeric: tabular-nums; }
.mcpp-archivo .meta .huella { font-family: Consolas, "Courier New", monospace; }

/* Cifras alineadas en las grillas: sin tabular-nums las columnas de importe
   bailan y dos totales del mismo orden no se comparan de un vistazo. */
.mcpp-grid td, .mcpp-grid th { font-variant-numeric: tabular-nums; }

/* Conteos de defecto en la grilla de expedientes: cero es gris (no hay nada que
   mirar), y lo distinto de cero se ve. Rojo el que impide, ámbar el que avisa. */
.mcpp-cero { color: #9AA1AB; }
.mcpp-falla { color: #B91C1C; font-weight: 700; }
.mcpp-ojo { color: #B45309; font-weight: 700; }

/* ---- M21 · traza de generación ---- */

/* El hash acortado: monoespaciado para que 8+8 se lea como una huella y no como texto. */
.mcpp-hash {
    font-family: Consolas, "Courier New", monospace;
    font-size: .72rem;
    color: #4b5563;
    background: #f3f4f6;
    border-radius: 3px;
    padding: 1px 5px;
}

/* Correlativo: es la clave por la que se busca una generación. Se destaca. */
.mcpp-correlativo { font-weight: 700; color: #122D5E; font-variant-numeric: tabular-nums; }

/* Correlativo del resumen previo: PROPUESTO, todavía no consumido. Rojo, porque
   pulsar «Confirmar» lo convierte en definitivo. */
.mcpp-propuesto {
    background: #FEE2E2;
    color: #B91C1C;
    border: 1px solid #F5A9A9;
    border-radius: 3px;
    padding: 2px 8px;
    font-size: .72rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* Ticket sin registrar: «Sin ticket» en cursiva gris dice lo que un guion mudo
   no dice — que falta la respuesta del portal, no que el dato no exista. */
.mcpp-sin-ticket { color: #9AA1AB; font-style: italic; font-size: .76rem; }

/* Estado del MCPP. El gris de «pendiente» es deliberadamente sobrio: no es un
   defecto, es que el portal todavía no ha respondido. */
.mcpp-estado {
    font-size: .72rem;
    font-weight: 600;
    border-radius: 10px;
    padding: 2px 9px;
    display: inline-block;
    white-space: nowrap;
}

.mcpp-estado.validado  { background: #d1fae5; color: #065f46; border: 1px solid #6ee7b7; }
.mcpp-estado.rechazado { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }
.mcpp-estado.proceso   { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }
.mcpp-estado.pendiente { background: #f3f4f6; color: #6b7280; border: 1px solid #d1d5db; }

/* M24 · Badge de la columna «Generado» (M20). Misma familia tintada que los
   estados, en vez de los colores planos de Bootstrap. */
.mcpp-gen {
    font-size: .72rem;
    font-weight: 600;
    border-radius: 3px;
    padding: 2px 8px;
    display: inline-block;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.mcpp-gen.nunca     { background: #f3f4f6; color: #9AA1AB; border: 1px solid #e5e7eb; }
.mcpp-gen.generado  { background: #EAF1F8; color: #122D5E; border: 1px solid #B9CFE4; }
.mcpp-gen.validado  { background: #d1fae5; color: #065f46; border: 1px solid #6ee7b7; }
.mcpp-gen.regenerado { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }
.mcpp-gen.bloqueado { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }

/* ---- M31 · columna «MEF»: a qué casilla del Cuadro 1 va la fila ---- */

/* Misma familia tintada que `.mcpp-gen` y que los descartes de M24: el chip se lee
   como un estado, no como texto suelto. Cuatro colores y cuatro significados, sin
   solaparse con los de la columna «Generado», que va al lado.
   Monoespaciado y con cifras tabulares porque lo que lleva dentro son códigos
   —«02/07», «01/03»— y en una columna se comparan en vertical. */
.mcpp-mef {
    font-size: .72rem;
    font-weight: 600;
    border-radius: 3px;
    padding: 2px 7px;
    display: inline-block;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-family: Consolas, "Cascadia Mono", monospace;
}

/* Un tipo PARTIDO enseña dos chips seguidos: se separan sin recurrir a `gap`,
   que aquí no aplica porque no hay contenedor flex en la celda. */
.mcpp-mef + .mcpp-mef { margin-left: 4px; }

/* Azul institucional: viaja al MCPP con esta pareja tipo/clase. */
.mcpp-mef.destino     { background: #EAF1F8; color: #122D5E; border: 1px solid #B9CFE4; }

/* Ámbar: es una liquidación (canal 06/17). No es un defecto del dato — es un canal
   que todavía no está construido (M30), así que avisa, no alarma. */
.mcpp-mef.liquidacion { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }

/* Gris: declarado FUERA del MCPP por decisión firmada (D-MEF-17 · C+A). No es un
   error: es una decisión, y por eso no se pinta en rojo. */
.mcpp-mef.no-viaja    { background: #f3f4f6; color: #6b7280; border: 1px solid #d1d5db; }

/* Rojo: no hay decisión firmada, o el puente apunta a una pareja que el catálogo no
   reconoce. Esto SÍ es un defecto y hay que verlo. */
.mcpp-mef.sin-destino { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }

/* El rótulo que no es el operativo va detrás y en segundo plano: se lee, pero no
   compite con el que de verdad decide. */
.mcpp-mef.secundario  { opacity: .72; font-weight: 500; }

/* ---- M31-ENM1 · el destino MEF dicho en palabras ---- */

/* «Tipo MEF» y «Clase MEF»: texto normal, NO chip. Son palabras que se leen y se
   teclean en el filtro, no códigos que se cotejan carácter a carácter — así que
   nada de monoespaciado ni de caja de color. El dato oficial (código + texto
   literal del catálogo) vive en el tooltip. */
.mcpp-mef-texto {
    font-size: .78rem;
    color: #0A1B3D;
    border-bottom: 1px dotted #B9CFE4;   /* pista de que hay tooltip */
    cursor: help;
}

/* «Estado»: aquí SÍ es un chip, porque son cuatro valores cerrados y el color
   comunica más rápido que la palabra. Misma familia tintada que `.mcpp-gen`. */
.mcpp-estado-mef {
    font-size: .72rem;
    font-weight: 600;
    border-radius: 3px;
    padding: 2px 7px;
    display: inline-block;
    white-space: nowrap;
}

/* Neutro: viaja. No se celebra con verde — que una planilla tenga canal es lo
   normal, no un logro. */
.mcpp-estado-mef.viaja       { background: #EAF1F8; color: #122D5E; border: 1px solid #B9CFE4; }

/* Gris: decisión firmada (D-MEF-17 · C+A). No es un error, y por eso no va en rojo. */
.mcpp-estado-mef.no-viaja    { background: #f3f4f6; color: #6b7280; border: 1px solid #d1d5db; }

/* Ámbar: el canal existe pero no está construido (M30). Avisa, no alarma. */
.mcpp-estado-mef.bloqueada   { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }

/* Rojo: no hay decisión firmada, o el puente apunta fuera del catálogo. Esto sí
   es un defecto y hay que verlo. */
.mcpp-estado-mef.sin-destino { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }

/* El enlace «desglose» de los tipos partidos: cabe en la celda sin empujar la fila. */
.mcpp-mef-desglose {
    font-size: .68rem !important;
    padding: 0 0 0 6px !important;
    vertical-align: baseline;
}

/* Fila cuyo DESTINO la bloquea (liquidación 06/17, NO VIAJA, sin decisión firmada).
   Ámbar muy tenue: se distingue de las que sí pueden generar, pero no se confunde
   con el rojo del centinela sin expediente, que es un defecto y no una decisión. */
.mcpp-fila-bloqueada > td { background-color: #FEFAF0 !important; }

/* Estado vacío: ocupa sitio y explica, en vez de dejar un hueco mudo. */
.mcpp-vacio {
    text-align: center;
    padding: 28px 16px;
    color: #6b7280;
    background: #fafafa;
    border: 1px dashed #d1d5db;
    border-radius: 6px;
}

.mcpp-vacio .icono { font-size: 2rem; opacity: .55; display: block; margin-bottom: 6px; }
.mcpp-vacio .titulo { font-weight: 600; color: #374151; font-size: .92rem; }

/* Disco del estado vacío (M24): el hueco se ve como una pieza de la pantalla y
   no como un fallo de carga. */
.mcpp-vacio .disco {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #EEF1F5;
    color: #8A929E;
    font-size: 1.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 14px auto;
}
