/* ===========================================================================
   Modales reutilizables de Rols One — confirm / prompt / alert
   ===========================================================================
   Reemplaza los modales nativos del navegador (confirm/prompt/alert) por una
   experiencia coherente con la paleta de la app. Se carga junto con
   ui-modales.js, que expone:
     - mostrarConfirmacion({titulo, mensaje, conMotivo, textoConfirmar, tipo})
     - mostrarPrompt({titulo, mensaje, placeholder, textoConfirmar, valorDefecto, validador})
     - mostrarAlerta({titulo, mensaje, tipo}) — solo informativo, 1 boton OK
   Todas devuelven una Promise. */

.uim-backdrop {
  position: fixed; inset: 0;
  background: rgba(35, 30, 25, 0.45);
  display: none; align-items: center; justify-content: center;
  z-index: 200;
}
.uim-backdrop.open { display: flex; }
.uim-modal {
  background: #fff; border-radius: 14px;
  padding: 1.6rem 1.8rem;
  min-width: 380px; max-width: 92vw;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.2);
  font-family: inherit;
}
.uim-modal h3 { font-size: 1.05rem; font-weight: 600; color: #2a2a2a; margin: 0 0 0.3rem; }
.uim-modal .uim-sub { font-size: 0.85rem; color: #5a5a5a; line-height: 1.4; margin: 0 0 1rem; }
.uim-modal .uim-row { margin-bottom: 0.9rem; }
.uim-modal label {
  display: block;
  font-size: 0.74rem; font-weight: 600; color: #4d4d4d;
  margin-bottom: 0.25rem;
}
.uim-modal input[type="text"],
.uim-modal input[type="number"],
.uim-modal textarea {
  width: 100%;
  border: 1px solid var(--border, #E5DCD2); border-radius: 8px;
  padding: 0.55rem 0.75rem;
  font-size: 0.92rem; font-family: inherit;
  background: #FAF8F6; outline: none;
  transition: border-color 0.12s, background 0.12s;
}
.uim-modal input:focus, .uim-modal textarea:focus {
  border-color: var(--accent, #C8A771); background: #fff;
}
.uim-modal textarea { resize: vertical; min-height: 60px; }
.uim-modal .uim-error {
  background: #fde2e2; color: #9b1c1c; border: 1px solid #f4baba;
  padding: 0.5rem 0.7rem; border-radius: 6px;
  font-size: 0.82rem; margin: 0 0 0.8rem; display: none;
}
.uim-modal .uim-error.show { display: block; }
.uim-modal .uim-actions {
  display: flex; gap: 0.6rem; justify-content: flex-end; margin-top: 0.4rem;
}
.uim-btn {
  padding: 0.55rem 1.1rem; border-radius: 999px;
  font-size: 0.88rem; font-weight: 500;
  cursor: pointer; font-family: inherit;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
  border: 1px solid transparent;
}
.uim-btn-primary {
  background: var(--accent, #C8A771); color: #fff; border-color: var(--accent, #C8A771);
}
.uim-btn-primary:hover:not(:disabled) { background: var(--accent-hover, #B89368); }
.uim-btn-ghost {
  background: transparent; color: #5a5a5a; border-color: var(--border, #E5DCD2);
}
.uim-btn-ghost:hover { color: #2a2a2a; border-color: var(--accent, #C8A771); }
.uim-btn-danger {
  background: #9b1c1c; color: #fff; border-color: #9b1c1c;
}
.uim-btn-danger:hover:not(:disabled) { background: #7a1414; border-color: #7a1414; }
.uim-btn:disabled { opacity: 0.55; cursor: wait; }
