/* ============================================================================
   Modal base. Va con Components/Shared/Modal.razor.

   Los colores salen de las variables de abajo, no de valores repartidos por el archivo: el
   proyecto todavia no tenia su paleta cuando se escribio el kit, asi que estos eran los
   valores del kit y el dia que cambien se cambian SOLO aca.
   Ya apuntadas a los tokens del sistema de diseno (wwwroot/css/ds/).

   La ESTRUCTURA si conviene mantenerla: el card es flex en columna con el header y el footer
   en flex:none y el body en flex:1 con overflow-y:auto. Eso es lo que hace que un formulario
   largo scrollee ADENTRO del modal y los botones queden siempre visibles. Si el body no
   scrollea, en un celular los botones de Guardar y Cancelar quedan fuera de la pantalla y el
   usuario no puede terminar la operacion.
   ============================================================================ */

:root {
    --modal-overlay-bg: rgba(26, 36, 73, .62);
    --modal-card-bg: var(--surface-card);
    --modal-card-shadow: 0 12px 32px rgba(26, 36, 73, .14);
    --modal-borde: var(--border-subtle);
    --modal-titulo: var(--text-primary);
    --modal-texto: var(--text-secondary);
    --modal-danger-bg: var(--status-alert-soft);
    --modal-danger-texto: var(--status-alert);
    --modal-close-bg: var(--surface-subtle);
    --modal-close-texto: var(--text-secondary);
    --modal-close-bg-hover: var(--border-subtle);
}

.modal-overlay {
    position: fixed;
    inset: 0;
    background: var(--modal-overlay-bg);
    backdrop-filter: blur(2px);
    display: flex;
    align-items: center;
    justify-content: center;

    /* Por debajo del overlay de carga (20000), que tiene que poder taparlo:
       una operacion lenta disparada DESDE un modal se muestra sobre el modal. */
    z-index: 10000;
}

.modal-card {
    background: var(--modal-card-bg);
    border-radius: 16px;
    box-shadow: var(--modal-card-shadow);

    width: 460px;
    max-width: 92vw;    /* en movil ocupa casi todo el ancho, con aire a los lados */
    max-height: 86vh;   /* nunca mas alto que la pantalla: lo que sobra scrollea en el body */

    overflow: hidden;   /* respeta el border-radius al scrollear el body */
    display: flex;
    flex-direction: column;
}

.modal-card.modal-sm { width: 400px; }
.modal-card.modal-lg { width: 640px; }

.modal-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 22px;
    border-bottom: 1px solid var(--modal-borde);
    flex: none;         /* no se encoge cuando el body es largo */
}

.modal-header h3 {
    font-weight: 700;
    font-size: 16px;
    color: var(--modal-titulo);
    margin: 0;
}

/* Confirmaciones destructivas: eliminar, anular. */
.modal-header-danger { background: var(--modal-danger-bg); }
.modal-header-danger h3 { color: var(--modal-danger-texto); }

.modal-close {
    border: none;
    background: var(--modal-close-bg);
    color: var(--modal-close-texto);
    width: 30px;
    height: 30px;
    border-radius: 9px;
    cursor: pointer;
    font-size: 15px;
    line-height: 1;
    flex: none;
}

.modal-close:hover {
    background: var(--modal-close-bg-hover);
    color: var(--modal-titulo);
}

.modal-body {
    padding: 22px;
    font-size: 14px;
    color: var(--modal-texto);

    /* Las tres juntas son lo que hace scrollear el cuerpo y no el modal completo.
       min-height:0 no es opcional: sin eso un hijo flex se niega a encogerse por debajo de
       su contenido y el overflow nunca se activa. */
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

.modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 16px 22px;
    border-top: 1px solid var(--modal-borde);
    flex: none;         /* siempre visible, aunque el body scrollee */
}
