/* ==========================================================
   BA.UI Modal Component
   Version: 1.0

   Modern modal with rounded corners and smooth animations.
   Works with Bootstrap modal JS or standalone.
   ========================================================== */

/* ==========================================
   BA Modal Overlay
   ========================================== */
.ba-modal {
    position: fixed;
    top: 0;
    left: 0;
    z-index: var(--ba-z-modal, 1050);
    display: none;
    width: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    outline: 0;
}

.ba-modal.show,
.ba-modal.fade.show {
    display: block;
}

/* Backdrop */
.ba-modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    z-index: var(--ba-z-modal-backdrop, 1040);
    width: 100%;
    height: 100%;
    background: var(--ba-bg-overlay, rgba(0, 0, 0, 0.5));
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.ba-modal-backdrop.fade {
    opacity: 0;
    transition: opacity var(--ba-transition-normal, 0.2s ease);
}

.ba-modal-backdrop.show {
    opacity: 1;
}

/* ==========================================
   Modal Dialog Container
   ========================================== */
.ba-modal__dialog {
    position: relative;
    width: auto;
    margin: 1.75rem auto;
    pointer-events: none;
    max-width: 500px;
}

.ba-modal.fade .ba-modal__dialog {
    transform: translateY(-30px) scale(0.95);
    opacity: 0;
    transition: transform var(--ba-transition-slow, 0.3s ease),
                opacity var(--ba-transition-slow, 0.3s ease);
}

.ba-modal.show .ba-modal__dialog {
    transform: translateY(0) scale(1);
    opacity: 1;
}

/* Size Variants */
.ba-modal__dialog--sm {
    max-width: 400px;
}

.ba-modal__dialog--lg {
    max-width: 800px;
}

.ba-modal__dialog--xl {
    max-width: 1140px;
}

.ba-modal__dialog--fullscreen {
    max-width: 100%;
    margin: 0;
    min-height: 100vh;
}

/* ==========================================
   Modal Content Box
   ========================================== */
.ba-modal__content {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    pointer-events: auto;
    background: var(--ba-bg-primary, #FFFFFF);
    border: 1px solid var(--ba-border-light, #E4E8EF);
    border-radius: var(--ba-control-radius-lg, 20px);
    box-shadow: var(--ba-shadow-xl, 0 20px 40px rgba(15, 23, 42, 0.1));
    outline: 0;
    overflow: hidden;
}

.ba-modal__dialog--fullscreen .ba-modal__content {
    border-radius: 0;
    min-height: 100vh;
}

/* ==========================================
   Modal Header
   ========================================== */
.ba-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ba-space-5, 20px) var(--ba-space-6, 24px);
    border-bottom: 1px solid var(--ba-border-divider, #EDF1F5);
    background: var(--ba-bg-primary, #FFFFFF);
}

.ba-modal__title {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    color: var(--ba-text-primary, #2F3542);
    line-height: 1.3;
}

.ba-modal__close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--ba-text-muted, #98A2B3);
    font-size: 20px;
    cursor: pointer;
    transition: background var(--ba-transition-fast, 0.15s ease),
                color var(--ba-transition-fast, 0.15s ease);
}

.ba-modal__close:hover {
    background: var(--ba-gray-100, #F5F5F5);
    color: var(--ba-text-primary, #2F3542);
}

.ba-modal__close:focus {
    outline: none;
    box-shadow: var(--ba-shadow-focus, 0 0 0 3px rgba(48, 79, 254, 0.12));
}

/* ==========================================
   Modal Body
   ========================================== */
.ba-modal__body {
    flex: 1;
    padding: var(--ba-space-6, 24px);
    color: var(--ba-text-secondary, #667085);
    font-size: 15px;
    line-height: 1.6;
}

.ba-modal__body--scrollable {
    max-height: 60vh;
    overflow-y: auto;
}

/* ==========================================
   Modal Footer
   ========================================== */
.ba-modal__footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--ba-space-3, 12px);
    padding: var(--ba-space-4, 16px) var(--ba-space-6, 24px);
    border-top: 1px solid var(--ba-border-divider, #EDF1F5);
    background: var(--ba-bg-secondary, #F8FAFC);
}

.ba-modal__footer--center {
    justify-content: center;
}

.ba-modal__footer--spread {
    justify-content: space-between;
}

.ba-modal__footer--stacked {
    flex-direction: column;
    gap: var(--ba-space-2, 8px);
}

.ba-modal__footer--stacked .ba-btn {
    width: 100%;
}

/* ==========================================
   Legacy Support: ba-custom-modal
   ========================================== */
.ba-custom-modal .modal-content {
    border-radius: var(--ba-control-radius-lg, 20px);
    border: 1px solid var(--ba-border-light, #E4E8EF);
    box-shadow: var(--ba-shadow-xl, 0 20px 40px rgba(15, 23, 42, 0.1));
    overflow: hidden;
}

.ba-custom-modal .modal-header {
    padding: var(--ba-space-5, 20px) var(--ba-space-6, 24px);
    border-bottom: 1px solid var(--ba-border-divider, #EDF1F5);
    background: var(--ba-bg-primary, #FFFFFF);
}

.ba-custom-modal .modal-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--ba-text-primary, #2F3542);
}

.ba-custom-modal .modal-header .close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    margin: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--ba-text-muted, #98A2B3);
    font-size: 18px;
    opacity: 1;
    transition: background var(--ba-transition-fast, 0.15s ease),
                color var(--ba-transition-fast, 0.15s ease);
}

.ba-custom-modal .modal-header .close:hover {
    background: var(--ba-gray-100, #F5F5F5);
    color: var(--ba-text-primary, #2F3542);
}

.ba-custom-modal .modal-body {
    padding: var(--ba-space-6, 24px);
    color: var(--ba-text-secondary, #667085);
    font-size: 15px;
    line-height: 1.6;
}

.ba-custom-modal .modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--ba-space-3, 12px);
    padding: var(--ba-space-4, 16px) var(--ba-space-6, 24px);
    border-top: 1px solid var(--ba-border-divider, #EDF1F5);
    background: var(--ba-bg-secondary, #F8FAFC);
    border-radius: 0 0 var(--ba-control-radius-lg, 20px) var(--ba-control-radius-lg, 20px);
}

/* Action Buttons in Modal Body */
.ba-custom-modal .modal-body .action-btn {
    width: 100%;
    margin-top: var(--ba-space-3, 12px);
}

/* ==========================================
   Confirmation Modal Variant
   ========================================== */
.ba-modal--confirm .ba-modal__dialog {
    max-width: 400px;
}

.ba-modal--confirm .ba-modal__body {
    text-align: center;
    padding: var(--ba-space-8, 32px);
}

.ba-modal--confirm .ba-modal__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin: 0 auto var(--ba-space-4, 16px);
    border-radius: 50%;
    font-size: 32px;
}

.ba-modal--confirm .ba-modal__icon--danger {
    background: var(--ba-danger-light, rgba(229, 57, 53, 0.08));
    color: var(--ba-danger, #E53935);
}

.ba-modal--confirm .ba-modal__icon--success {
    background: var(--ba-success-light, rgba(46, 125, 50, 0.08));
    color: var(--ba-success, #2E7D32);
}

.ba-modal--confirm .ba-modal__icon--warning {
    background: var(--ba-warning-light, rgba(245, 124, 0, 0.08));
    color: var(--ba-warning, #F57C00);
}

.ba-modal--confirm .ba-modal__icon--info {
    background: var(--ba-info-light, rgba(2, 136, 209, 0.08));
    color: var(--ba-info, #0288D1);
}

.ba-modal--confirm .ba-modal__footer {
    justify-content: center;
}

/* ==========================================
   Responsive
   ========================================== */
@media (max-width: 576px) {
    .ba-modal__dialog {
        margin: var(--ba-space-4, 16px);
        max-width: calc(100% - 32px);
    }

    .ba-modal__dialog--sm,
    .ba-modal__dialog--lg,
    .ba-modal__dialog--xl {
        max-width: calc(100% - 32px);
    }

    .ba-modal__header {
        padding: var(--ba-space-4, 16px);
    }

    .ba-modal__body {
        padding: var(--ba-space-4, 16px);
    }

    .ba-modal__footer {
        padding: var(--ba-space-4, 16px);
        flex-direction: column;
        gap: var(--ba-space-2, 8px);
    }

    .ba-modal__footer .ba-btn {
        width: 100%;
    }

    .ba-custom-modal .modal-content {
        border-radius: var(--ba-control-radius-md, 16px);
    }
}

/* ==========================================
   Fancybox Integration
   Modern rounded corners for fancybox popups
   ========================================== */
.fancybox-container.ba-fancybox-rounded .fancybox-content {
    border-radius: var(--ba-control-radius-lg, 20px) !important;
    overflow: hidden !important;
    background: var(--ba-bg-primary, #FFFFFF) !important;
    box-shadow: var(--ba-shadow-xl, 0 20px 40px rgba(15, 23, 42, 0.15)) !important;
    max-height: 85vh !important;
}

.fancybox-container.ba-fancybox-rounded .fancybox-slide--html .fancybox-content {
    padding: 0 !important;
    border-radius: var(--ba-control-radius-lg, 20px) !important;
    overflow: hidden !important;
}

/* Hide fancybox's own scrollbar - let content scroll internally */
.fancybox-container.ba-fancybox-rounded .fancybox-slide--html {
    overflow: hidden !important;
}

.fancybox-bg {
    background: rgba(15, 23, 42, 0.6) !important;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.fancybox-container.ba-fancybox-rounded .fancybox-button--close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 36px;
    height: 36px;
    border-radius: 50% !important;
    background: var(--ba-bg-primary, #FFFFFF) !important;
    box-shadow: var(--ba-shadow-sm, 0 2px 8px rgba(0, 0, 0, 0.1)) !important;
    color: var(--ba-text-muted, #98A2B3) !important;
    transition: all 0.2s ease !important;
    z-index: 10;
}

.fancybox-container.ba-fancybox-rounded .fancybox-button--close:hover {
    background: var(--ba-gray-100, #F5F5F5) !important;
    color: var(--ba-text-primary, #2F3542) !important;
}

.fancybox-container.ba-fancybox-rounded .fancybox-button--close svg {
    width: 18px;
    height: 18px;
}

/* ==========================================================
   BA PDF Viewer Component
   Clean PDF display with custom action buttons
   ========================================================== */

.ba-pdf-viewer {
    display: flex;
    flex-direction: column;
}

.ba-pdf-viewer__frame {
    min-height: 500px;
    background: #FFFFFF;
    border: 1px solid var(--ba-border-light, #E4E8EF);
    border-radius: var(--ba-radius-md, 8px);
    overflow: hidden;
}

.ba-pdf-viewer__frame object {
    display: block;
    width: 100%;
    height: 500px;
    border: none !important;
}

.ba-pdf-viewer__fallback {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 300px;
    padding: var(--ba-space-6, 24px);
    text-align: center;
    color: var(--ba-text-muted, #98A2B3);
    background: var(--ba-gray-50, #F9FAFB);
}

.ba-pdf-viewer__fallback i {
    font-size: 48px;
    margin-bottom: var(--ba-space-4, 16px);
    color: var(--ba-gray-400, #9CA3AF);
}

.ba-pdf-viewer__fallback p {
    margin-bottom: var(--ba-space-4, 16px);
    font-size: 14px;
}

.ba-pdf-viewer__actions {
    display: flex;
    gap: var(--ba-space-3, 12px);
    padding-top: 0;
    justify-content: center;
    flex-wrap: wrap;
}

.ba-pdf-viewer__actions .ba-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--ba-space-2, 8px);
}

.ba-pdf-viewer__actions .ba-btn i {
    font-size: 16px;
}

/* Responsive */
@media (max-width: 576px) {
    .ba-pdf-viewer__frame object {
        height: 350px;
    }

    .ba-pdf-viewer__actions {
        justify-content: center;
    }

    .ba-pdf-viewer__actions .ba-btn {
        flex: 1;
        justify-content: center;
        min-width: 100px;
    }
}
