/* ============================================================
   swal-core.css — Núcleo de estilos SweetAlert2 de CeibeFACTU
   Tema unificado (heredado de CeibeRRHH y recoloreado a la marca
   verde/turquesa). Se carga junto con assets/js/swal-core.js, que
   aplica el tema a TODAS las alertas vía Swal.mixin — no hay que
   configurar customClass/animaciones en cada llamada.
   ============================================================ */

/* ---- Dev Mode Toast ---- */
.dev-mode-toast {
    border: 2px solid #FF6B00 !important;
    box-shadow: 0 4px 12px rgba(255, 107, 0, 0.3) !important;
}
.dev-mode-title {
    font-weight: 700 !important;
    color: #FF6B00 !important;
    font-size: 0.95rem !important;
}
.dev-mode-toast .swal2-html-container {
    margin-top: 0.25rem !important;
    font-size: 0.85rem !important;
}

/* ---- Toast horizontal compacto ---- */
body.swal2-toast-shown .swal2-container:has(.ceibe-toast-vertical) {
    width: auto !important;
    max-width: 720px !important;
}
.swal2-popup.swal2-toast.ceibe-toast-vertical {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;          /* icono y texto centrados verticalmente */
    justify-content: flex-start !important;
    gap: 0.9rem !important;
    padding: 0.95rem 1.5rem !important;      /* más alto */
    min-width: 320px !important;
    max-width: 700px !important;
    width: max-content !important;
    position: relative !important;
    border-radius: 16px !important;          /* bordes redondeados (card) */
    border: 1px solid rgba(226, 232, 240, 0.9) !important;
    /* Degradado sutil = volumen (efecto 3D) */
    background: linear-gradient(165deg, #ffffff 0%, #eef2f6 100%) !important;
    /* Sombra en capas + brillo superior interno = card con relieve */
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.95),
        0 14px 30px -8px rgba(15, 23, 42, 0.28),
        0 6px 14px -6px rgba(15, 23, 42, 0.18),
        0 0 0 1px rgba(15, 23, 42, 0.03) !important;
    overflow: hidden !important;
}
/* El icono nativo de SweetAlert2 es 2em con líneas internas en `em`:
   se redimensiona SOLO por font-size (todo escala proporcional, sin
   deformarse). NUNCA fijar width/height/transform: descoloca las líneas. */
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon {
    order: 1 !important;
    margin: 0 !important;
    align-self: center !important;
    flex-shrink: 0 !important;
    font-size: 15px !important;              /* → icono de 2em = 30px, centrado */
}
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-title {
    order: 2 !important;
    margin: 0 !important;
    padding: 0 !important;
    justify-content: flex-start !important;
    flex-shrink: 0 !important;
}
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-success { border-color: #10b981 !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-success [class^='swal2-success-line'] { background-color: #10b981 !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-success .swal2-success-ring { border-color: rgba(16, 185, 129, 0.3) !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-error { border-color: #ef4444 !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-error .swal2-x-mark-line-left,
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-error .swal2-x-mark-line-right { background-color: #ef4444 !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-warning { border-color: #f59e0b !important; color: #f59e0b !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-icon.swal2-info { border-color: #14b8a6 !important; color: #14b8a6 !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-title.ceibe-toast-title,
.ceibe-toast-title {
    color: #1e293b !important;
    font-weight: 700 !important;
    font-size: 0.875rem !important;
    text-align: left !important;
    line-height: 1.3 !important;
    text-shadow: none !important;
    margin: 0 !important;
    padding: 0 !important;
    white-space: nowrap !important;
}
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-timer-progress-bar-container {
    position: absolute !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    height: 3px !important;
    border-radius: 0 0 16px 16px !important;
    overflow: hidden !important;
}
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-timer-progress-bar { height: 3px !important; background: linear-gradient(90deg, #34d399, #14b8a6) !important; }
.swal2-popup.swal2-toast.ceibe-toast-vertical .swal2-html-container {
    order: 3 !important;
    color: #334155 !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    flex: 1 !important;
    min-width: 0 !important;
}

/* ---- Animaciones flip de toasts ---- */
@keyframes toastFlipIn {
    0% { transform: perspective(400px) rotateX(90deg); opacity: 0; }
    40% { transform: perspective(400px) rotateX(-10deg); }
    70% { transform: perspective(400px) rotateX(10deg); }
    100% { transform: perspective(400px) rotateX(0deg); opacity: 1; }
}
@keyframes toastFlipOut {
    0% { transform: perspective(400px) rotateX(0deg); opacity: 1; }
    30% { transform: perspective(400px) rotateX(-10deg); opacity: 1; }
    100% { transform: perspective(400px) rotateX(90deg); opacity: 0; }
}
.toast-flip-in { animation: toastFlipIn 0.5s ease-out forwards; }
.toast-flip-out { animation: toastFlipOut 0.4s ease-in forwards; }

/* ---- Animaciones de alertas normales ---- */
@keyframes alertFlipIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes alertFlipOut { from { opacity: 1; } to { opacity: 0; } }
.alert-flip-in { animation: alertFlipIn 0.5s ease-out forwards !important; }
.alert-flip-out { animation: alertFlipOut 0.2s ease-in forwards !important; }

.swal2-backdrop-show { animation-duration: 0.5s !important; }
.swal2-backdrop-hide { animation-duration: 0.2s !important; }

/* SweetAlert por encima de modales propios */
.swal-over-modal { z-index: 99999 !important; }

/* ---- Alerta estándar (borde con degradado de marca verde→turquesa) ---- */
.swal2-popup.ceibe-alert {
    border-radius: 16px !important;
    border: 2px solid transparent !important;
    background-image: linear-gradient(white, white), linear-gradient(135deg, #10b981, #14b8a6) !important;
    background-origin: padding-box, border-box !important;
    background-clip: padding-box, border-box !important;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 10px 15px -3px rgba(0, 0, 0, 0.15), 0 20px 25px -5px rgba(0, 0, 0, 0.1) !important;
}
.swal2-popup.ceibe-alert.swal2-show { animation: none !important; }
.swal2-popup.ceibe-alert.swal2-hide { animation: none !important; }

/* ---- Loader modal ---- */
.swal2-popup.ceibe-loader {
    border: 2px solid #10b981 !important;
    border-radius: 16px !important;
    padding: 2rem 1.5rem !important;
    box-shadow: 0 4px 20px rgba(16, 185, 129, 0.2) !important;
    background: white !important;
}
.swal2-popup.ceibe-loader .swal2-title { color: #1f2937 !important; font-size: 1.1rem !important; font-weight: 600 !important; margin-bottom: 1rem !important; }
.swal2-popup.ceibe-loader .swal2-icon { display: none !important; }
.swal2-popup.ceibe-loader.swal2-show { animation: loaderFadeIn 0.2s ease-out !important; }
.swal2-popup.ceibe-loader.swal2-hide { animation: loaderFadeOut 0.15s ease-in !important; }
@keyframes loaderFadeIn { 0% { opacity: 0; transform: scale(0.95); } 100% { opacity: 1; transform: scale(1); } }
@keyframes loaderFadeOut { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0.95); } }

/* La barra del confirmButton/cancelButton hereda el redondeo del tema */
.swal2-popup.ceibe-alert .swal2-actions .swal2-styled { border-radius: 0.5rem !important; }
