/* 電子報管理系統 — 自訂樣式 */

/* 側邊欄捲軸美化 */
.sidebar-scroll::-webkit-scrollbar {
    width: 4px;
}
.sidebar-scroll::-webkit-scrollbar-track {
    background: transparent;
}
.sidebar-scroll::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.15);
    border-radius: 2px;
}

/* 頁面切換動畫 */
.page-enter {
    animation: fadeSlideIn 0.25s ease-out;
}
@keyframes fadeSlideIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* 側邊面板滑入 */
.slide-panel-enter {
    animation: slideIn 0.3s ease-out;
}
.slide-panel-leave {
    animation: slideOut 0.2s ease-in forwards;
}
@keyframes slideIn {
    from { transform: translateX(100%); }
    to   { transform: translateX(0); }
}
@keyframes slideOut {
    from { transform: translateX(0); }
    to   { transform: translateX(100%); }
}

/* 品牌色條 */
.brand-border {
    border-left-width: 4px;
}

/* 載入動畫 */
.spinner {
    border: 3px solid rgba(0,0,0,0.1);
    border-left-color: #3b82f6;
    border-radius: 50%;
    width: 24px;
    height: 24px;
    animation: spin 0.6s linear infinite;
}
@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Toast 通知 */
.toast {
    animation: toastIn 0.3s ease-out, toastOut 0.3s ease-in 2.7s forwards;
}
@keyframes toastIn {
    from { opacity: 0; transform: translateY(-12px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes toastOut {
    from { opacity: 1; }
    to   { opacity: 0; }
}
