/* =========================================================
   返回顶部按钮（Bootstrap5 + 夜间发光动画 + 平滑主题过渡版）
   ========================================================= */

/* ---- 基础结构 ---- */
#zobBackToTop {
    display: none;
    position: fixed;
    right: 1.25rem;
    bottom: 1.5rem;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    z-index: 1080;
    border: 1px solid rgba(0, 0, 0, 0.08);
    backdrop-filter: blur(6px);
    transition:
        background-color .4s ease,
        color .4s ease,
        box-shadow .5s ease,
        border-color .4s ease,
        opacity .25s ease,
        transform .25s ease,
        filter .5s ease;
    opacity: 0;
    transform: translateY(8px);
    cursor: pointer;
    will-change: background-color, box-shadow, transform;
}

/* ---- 显示状态 ---- */
#zobBackToTop.show {
    display: flex !important;
    align-items: center;
    justify-content: center;
    opacity: 1;
    transform: translateY(0);
}

/* ---- 浅色模式 ---- */
[data-bs-theme="light"] #zobBackToTop,
html:not([data-bs-theme]) #zobBackToTop {
    background: rgba(255, 255, 255, 0.65);
    color: #0d6efd;
    box-shadow: 0 4px 16px rgba(13, 110, 253, 0.15);
}
[data-bs-theme="light"] #zobBackToTop:hover,
html:not([data-bs-theme]) #zobBackToTop:hover {
    background: linear-gradient(145deg, #0d6efd, #66b3ff);
    color: #fff;
    border-color: transparent;
    box-shadow: 0 6px 20px rgba(13, 110, 253, 0.4);
    transform: translateY(-3px);
}

/* ---- 夜间模式 ---- */
[data-bs-theme="dark"] #zobBackToTop {
    background: rgba(35, 40, 45, 0.65);
    color: #80cfff;
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: 0 0 12px rgba(0, 132, 255, 0.25);
    animation: zobPulse 3s ease-in-out infinite;
}

/* 悬停时强化光效 */
[data-bs-theme="dark"] #zobBackToTop:hover {
    background: linear-gradient(145deg, #1a73e8, #0dcaf0);
    color: #fff;
    border-color: transparent;
    box-shadow:
        0 0 20px rgba(0, 153, 255, 0.6),
        0 0 40px rgba(0, 153, 255, 0.3);
    transform: translateY(-3px);
    animation: none; /* 悬停时停止呼吸动画，直接亮起 */
}

/* ---- 夜间发光脉冲动画 ---- */
@keyframes zobPulse {
    0%, 100% {
        box-shadow:
            0 0 8px rgba(0, 153, 255, 0.25),
            0 0 18px rgba(0, 153, 255, 0.15);
        filter: brightness(1);
    }
    50% {
        box-shadow:
            0 0 14px rgba(0, 153, 255, 0.45),
            0 0 32px rgba(0, 153, 255, 0.25);
        filter: brightness(1.2);
    }
}

/* ---- 系统深色模式（兼容无 data-bs-theme） ---- */
@media (prefers-color-scheme: dark) {
    html:not([data-bs-theme]) #zobBackToTop {
        background: rgba(35, 40, 45, 0.65);
        color: #80cfff;
        border: 1px solid rgba(255, 255, 255, 0.1);
        box-shadow: 0 0 12px rgba(0, 132, 255, 0.25);
        animation: zobPulse 3s ease-in-out infinite;
    }
    html:not([data-bs-theme]) #zobBackToTop:hover {
        background: linear-gradient(145deg, #1a73e8, #0dcaf0);
        color: #fff;
        border-color: transparent;
        box-shadow:
            0 0 20px rgba(0, 153, 255, 0.6),
            0 0 40px rgba(0, 153, 255, 0.3);
        transform: translateY(-3px);
        animation: none;
    }
}

/* ---- 小屏优化 ---- */
@media (max-width: 576px) {
    #zobBackToTop {
        right: .75rem;
        bottom: 1rem;
        width: 46px;
        height: 46px;
    }
}

/* ---- 点击波纹反馈 ---- */
#zobBackToTop:active {
    transform: scale(0.93);
    box-shadow: 0 0 10px rgba(0, 132, 255, 0.4);
}

/* ---- 无障碍焦点状态 ---- */
#zobBackToTop:focus-visible {
    outline: 2px solid #0dcaf0;
    outline-offset: 3px;
}

/* =========================================================
   🌗 平滑主题切换过渡动画（亮/暗自动渐变）
   ========================================================= */
:root,
[data-bs-theme="light"],
[data-bs-theme="dark"] {
    transition:
        background-color .5s ease,
        color .5s ease,
        border-color .5s ease,
        box-shadow .5s ease,
        filter .5s ease;
}