/* Fix for offcanvas backdrop overlay issue */
.offcanvas-backdrop {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    z-index: 1040 !important;
    width: 100vw !important;
    height: 100vh !important;
    background-color: rgba(0, 0, 0, 0.5) !important;
    opacity: 0;
    transition: opacity 0.15s ease-in-out;
    pointer-events: none;
    display: none !important;
}

.offcanvas-backdrop.show {
    opacity: 1;
    pointer-events: auto;
    display: block !important;
}

/* Ensure offcanvas is above backdrop */
.offcanvas {
    z-index: 1045 !important;
}

/* Hide backdrop when offcanvas is hidden */
.offcanvas:not(.show)+.offcanvas-backdrop {
    display: none !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Additional fix for backdrop when offcanvas is closing */
.offcanvas.hiding+.offcanvas-backdrop {
    opacity: 0 !important;
    pointer-events: none !important;
    display: none !important;
}

/* Hide backdrop completely when offcanvas is not visible */
.offcanvas:not(.show):not(.hiding)+.offcanvas-backdrop {
    display: none !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Force hide backdrop in all cases when offcanvas is closed */
.offcanvas:not(.show)~.offcanvas-backdrop,
body:not(.offcanvas-open) .offcanvas-backdrop {
    display: none !important;
    opacity: 0 !important;
    pointer-events: none !important;
}