﻿/* シンプルローディングインジケーター */
.loader-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.7);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}

.loader {
    width: 40px;
    height: 40px;
    border: 2px solid #f3f3f3;
    border-top: 2px solid #999;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

.local-loader-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.7);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 100;
    min-height: 80px;
}

.has-loader {
    position: relative;
    min-height: 80px;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}

.fade-in {
    animation: fadeIn 0.2s forwards;
    display: flex !important;
}

.fade-out {
    animation: fadeOut 0.2s forwards;
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes fadeOut {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

/* ボタンローダー */
.button-loader {
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-top: 2px solid #fff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    display: inline-block;
    margin-left: 8px;
    vertical-align: middle;
}

/* ローディング中のボタンスタイル */
.btn.is-loading {
    opacity: 0.7;
    cursor: not-allowed;
}

/*=========================================*/
/*　　　　　　　画面遷移　　　　　　　　　*/
/*=========================================*/
/* ページ遷移ローディングインジケーター */
.page-transition-container {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 220px; /* メニュー幅に合わせて調整 */
    background-color: rgba(255, 255, 255, 0.8);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 9990;
    flex-direction: column;
    backdrop-filter: blur(2px);
}

    .page-transition-container.active {
        display: flex;
    }

.page-loader-text {
    margin-top: 15px;
    font-size: 14px;
    color: #333;
}

/* ログインページ用のスタイル調整 */
.login-container .page-transition-container {
    left: 0; /* ログインページにはメニューがないため */
    background-color: rgba(255, 255, 255, 0.9);
}