/* Offcanvas のスライドイン/スライドアウト */
.offcanvas {
    transition: transform 0.4s ease-in-out, opacity 0.4s ease-in-out;
    opacity: 0;
    transform: translateX(100%);
    z-index: 1050;
}
#fullScreenMenu.offcanvas {
    top: 60px;
    height: calc(100% - 60px);
}
.offcanvas.show {
    opacity: 1;
    transform: translateX(0);
}
.offcanvas.hiding {
    opacity: 0;
    transform: translateX(100%);
    transition: transform 0.4s ease-in-out, opacity 0.4s ease-in-out;
}

/* Offcanvas ボディの調整 */
.offcanvas-body {
    padding: 1rem;
}

/* 検索モーダルのスライドイン/スライドアウト */
.modal.slide-in .modal-dialog {
    transform: translateX(100%);
    transition: transform 0.4s ease-in-out, opacity 0.4s ease-in-out;
    opacity: 0;
    z-index: 1060;
}
.modal.slide-in.show .modal-dialog {
    transform: translateX(0);
    opacity: 1;
}
.modal.slide-in.hiding .modal-dialog {
    transform: translateX(100%);
    opacity: 0;
    transition: transform 0.4s ease-in-out, opacity 0.4s ease-in-out;
}

/* Backdrop のアニメーションと z-index */
.offcanvas-backdrop, .modal-backdrop {
    transition: opacity 0.4s ease-in-out;
    opacity: 0;
    background-color: #000000;
}
.offcanvas-backdrop.show, .modal-backdrop.show {
    opacity: 0.5 !important;
}
.offcanvas-backdrop.hiding, .modal-backdrop.hiding {
    opacity: 0;
    pointer-events: none;
}
.offcanvas-backdrop {
    z-index: 1045;
}
.offcanvas-backdrop.hidden {
    opacity: 0;
    visibility: hidden;
}
.modal-backdrop {
    z-index: 1048;
}
.modal-backdrop.hidden {
    opacity: 0;
    visibility: hidden;
}

/* ナビゲーションバーの z-index */
.navbar {
    z-index: 1065;
}

/* モーダルの位置調整（#imageModal 以外） */
.modal:not(#imageModal) .modal-dialog {
    margin-top: 60px;
}
@media (min-width: 768px) {
    .modal:not(#imageModal) .modal-backdrop {
        top: 60px;
    }
    .modal:not(#imageModal) .modal-dialog {
        margin-top: 60px;
    }
}

/* 既存のスタイル */
.modal-content {
    background-color: rgba(255, 255, 255, 0.98);
}
.dark-mode .modal-content {
    background-color: rgba(33, 37, 41, 0.98);
}
.menu-section h3 {
    border-bottom: 2px solid #dee2e6;
    padding-bottom: 0.25rem;
}
.list-unstyled a:hover {
    text-decoration: underline;
}
.category-list .btn:hover {
    text-decoration: none;
}
.navbar, .container-fluid {
    overflow: visible;
}
.dropdown {
    position: relative;
}
.dropdown-menu {
    z-index: 1055;
    background-color: #fff;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
.dark-mode .dropdown-menu {
    background-color: #212529;
}

/* トグルボタンの基本スタイル */
.menu-toggle {
    position: relative;
    width: 48px;
    height: 48px;
}
.menu-toggle .icon-wrapper {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.menu-toggle i {
    position: absolute;
    top: 50%;
    left: 50%;
    font-size: 2rem;
    transition: opacity 0.2s ease, transform 0.3s ease;
}
.menu-toggle .bi-list {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1) rotate(0deg);
}
.menu-toggle .bi-x {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.7) rotate(-90deg);
}
.menu-toggle.icon-active .bi-list {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.7) rotate(90deg);
}
.menu-toggle.icon-active .bi-x {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1) rotate(0deg);
}

/* GPU アクセラレーション */
.offcanvas, .modal.slide-in .modal-dialog, .offcanvas-backdrop, .modal-backdrop, .menu-toggle i {
    will-change: transform, opacity;
}

.offcanvas-open .navbar.fixed-top {
    padding-right: 1rem !important;
}
/* 左端の1px隙間を解消するため、fullScreenMenuのborder-leftを無効化 */
#fullScreenMenu.offcanvas.offcanvas-end {
    border-left: none;
}

