/* ============================================================
   MATIOS UI — matios-ui-modal.css
   MTS.Modal — Estilos
   Requiere: matios-ui-base.css
   Version:  1.0.0
   ============================================================ */


/* ============================================================
   1. SCROLL LOCK — body cuando modal está abierto
   ============================================================ */

body.mts-modal-open {
  overflow: hidden;
}


/* ============================================================
   2. BACKDROP
   ============================================================ */

.mts-modal-backdrop {
  position: fixed;
  inset: 0;
  background: var(--mts-bg-overlay);
  z-index: calc(var(--mts-z-modal) - 1);
  opacity: 0;
  transition: opacity var(--mts-transition-base);
  pointer-events: none;
}

.mts-modal-backdrop--visible {
  opacity: 1;
  pointer-events: auto;
}


/* ============================================================
   3. DIALOG — contenedor posicionado
   ============================================================ */

.mts-modal {
  position: fixed;
  inset: 0;
  z-index: var(--mts-z-modal);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: var(--mts-space-8) var(--mts-space-4);
  overflow-y: auto;
  pointer-events: none;
}

.mts-modal[hidden] {
  display: none;
}

/* ── position: 'top' (default) ── */
.mts-modal--top {
  align-items: flex-start;
}

/* ── position: 'center' ──
   Usa margin: auto en el content en lugar de align-items: center,
   para que funcione correctamente cuando el contenido supera el viewport. */
.mts-modal--center {
  align-items: flex-start;
}
.mts-modal--center .mts-modal__content {
  margin-top: auto;
  margin-bottom: auto;
}

/* ── position: 'bottom' — bottom sheet ── */
.mts-modal--bottom {
  align-items: flex-end;
  padding-bottom: 0;
}
.mts-modal--bottom .mts-modal__content {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  max-width: 100%;
  width: 100%;
}
.mts-modal--bottom.mts-modal--sm   .mts-modal__content { max-width: 480px; }
.mts-modal--bottom.mts-modal--md   .mts-modal__content { max-width: 640px; }
.mts-modal--bottom.mts-modal--lg   .mts-modal__content { max-width: 800px; }
.mts-modal--bottom.mts-modal--xl   .mts-modal__content { max-width: 1100px; }

/* Animación bottom: entra desde abajo */
.mts-modal--bottom .mts-modal__content {
  transform: translateY(32px) scale(1);
}
.mts-modal--bottom.mts-modal--visible .mts-modal__content {
  transform: translateY(0) scale(1);
}

/* Backward compat — centered: true */
.mts-modal--centered {
  align-items: flex-start;
}
.mts-modal--centered .mts-modal__content {
  margin-top: auto;
  margin-bottom: auto;
}

/* Scrollable — body hace scroll, no el viewport */
.mts-modal--scrollable .mts-modal__content {
  max-height: calc(100vh - var(--mts-space-8) * 2);
}

.mts-modal--scrollable .mts-modal__body {
  overflow-y: auto;
}


/* ============================================================
   4. CONTENT — la "caja" visible
   ============================================================ */

.mts-modal__content {
  position: relative;
  background: var(--mts-bg-surface);
  border: var(--mts-border-width) var(--mts-border-style) var(--mts-border-color);
  border-radius: 0;
  box-shadow: var(--mts-shadow-xl);
  width: 100%;
  display: flex;
  flex-direction: column;
  pointer-events: auto;
  overflow: hidden;

  /* Animación de entrada */
  opacity: 0;
  transform: translateY(-16px) scale(0.98);
  transition:
    opacity var(--mts-transition-base),
    transform var(--mts-transition-base);
}

.mts-modal--visible .mts-modal__content {
  opacity: 1;
  transform: translateY(0) scale(1);
}


/* ── Radius — modificadores opcionales ── */
.mts-modal--radius-sm .mts-modal__content { border-radius: var(--mts-radius-sm); }
.mts-modal--radius-md .mts-modal__content { border-radius: var(--mts-radius-md); }
.mts-modal--radius-lg .mts-modal__content { border-radius: var(--mts-radius-lg); }
.mts-modal--radius-xl .mts-modal__content { border-radius: var(--mts-radius-xl); }


/* ============================================================
   5. TAMAÑOS
   ============================================================ */

.mts-modal--sm  .mts-modal__content { max-width: 400px;  }
.mts-modal--md  .mts-modal__content { max-width: 560px;  }
.mts-modal--lg  .mts-modal__content { max-width: 800px;  }
.mts-modal--xl  .mts-modal__content { max-width: 1100px; }

.mts-modal--fullscreen {
  padding: 0;
  align-items: stretch;
  overflow: hidden;
}

.mts-modal--fullscreen .mts-modal__content {
  max-width: 100%;
  height: 100vh;
  max-height: 100vh;
  min-height: 100vh;
  border-radius: 0;
  border: none;
}


/* ============================================================
   6. HEADER
   ============================================================ */

.mts-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--mts-space-4) var(--mts-space-5);
  background: var(--mts-bg-surface);
  border-bottom: var(--mts-border-width) var(--mts-border-style) var(--mts-border-color);
  gap: var(--mts-space-3);
  flex-shrink: 0;
}

.mts-modal__title {
  font-size: var(--mts-font-size-lg);
  font-weight: var(--mts-font-weight-semibold);
  color: var(--mts-text-primary);
  line-height: var(--mts-line-height-tight);
  margin: 0;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Botón cerrar X */
.mts-modal__close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  font-size: 20px;
  line-height: 1;
  color: var(--mts-text-muted);
  background: none;
  border: none;
  border-radius: var(--mts-radius-md);
  cursor: pointer;
  flex-shrink: 0;
  transition: color var(--mts-transition-fast), background var(--mts-transition-fast);
  padding: 0;
}

.mts-modal__close:hover {
  color: var(--mts-text-primary);
  background: var(--mts-bg-surface-2);
}


/* ============================================================
   7. BODY
   ============================================================ */

.mts-modal__body {
  padding: var(--mts-space-5);
  color: var(--mts-text-secondary);
  font-size: var(--mts-font-size-md);
  line-height: var(--mts-line-height-base);
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  box-sizing: border-box;
}

/* Sin padding cuando el body tiene contenido full-bleed */
.mts-modal__body--flush {
  padding: 0;
}

.mts-modal--fullscreen .mts-modal__body {
  display: flex;
  flex-direction: column;
  overflow: auto;
}

.mts-modal--fullscreen .mts-modal__body--flush {
  overflow: hidden;
}


/* ============================================================
   8. FOOTER
   ============================================================ */

.mts-modal__footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--mts-space-2);
  padding: var(--mts-space-3) var(--mts-space-5);
  background: color-mix(in srgb, var(--mts-bg-surface-2) 78%, var(--mts-bg-surface));
  border-top: var(--mts-border-width) var(--mts-border-style) var(--mts-border-color);
  flex-shrink: 0;
  flex-wrap: wrap;
}

.mts-modal--fullscreen .mts-modal__header,
.mts-modal--fullscreen .mts-modal__footer {
  background: color-mix(in srgb, var(--mts-bg-surface-2) 88%, var(--mts-bg-surface));
}

/* Footer con botones a la izquierda */
.mts-modal__footer--start {
  justify-content: flex-start;
}

/* Footer con botones distribuidos */
.mts-modal__footer--between {
  justify-content: space-between;
}


/* ============================================================
   9. CONFIRM MESSAGE — Modal.confirm() / Modal.alert()
   ============================================================ */

.mts-modal-confirm__message {
  margin: 0;
  color: var(--mts-text-secondary);
  font-size: var(--mts-font-size-md);
  line-height: var(--mts-line-height-base);
}


/* ============================================================
   10. RESPONSIVE
   ============================================================ */

@media (max-width: 576px) {
  /* top y center → sheet desde abajo en mobile */
  .mts-modal--top,
  .mts-modal--center,
  .mts-modal--centered {
    padding: var(--mts-space-4) 0 0;
    align-items: flex-end;
  }

  .mts-modal--top    .mts-modal__content,
  .mts-modal--center .mts-modal__content,
  .mts-modal--centered .mts-modal__content {
    margin: 0;   /* anula el margin: auto del center en desktop */
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    max-width: 100%;
    transform: translateY(40px) scale(1) !important;
  }

  .mts-modal--top.mts-modal--visible    .mts-modal__content,
  .mts-modal--center.mts-modal--visible .mts-modal__content,
  .mts-modal--centered.mts-modal--visible .mts-modal__content {
    transform: translateY(0) scale(1) !important;
  }

  /* bottom siempre fue sheet — mantiene estilos base */
  .mts-modal--bottom {
    padding: 0;
  }

  .mts-modal--sm .mts-modal__content,
  .mts-modal--md .mts-modal__content {
    max-width: 100%;
  }
}
