/* 全域暗黑與微網格背景 */
body {
  background-color: #08090C;
  overflow-x: hidden;
}
header {
  background-color: rgba(0, 0, 0, 0.7) !important;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
}
.grid-bg {
  background-size: 32px 32px;
  background-image: 
    linear-gradient(to right, rgba(255, 255, 255, 0.02) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
}

/* 毛玻璃質感卡片 */
.glass {
  background: rgba(255, 255, 255, 0.03);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.glass-hover:hover {
  border-color: rgba(0, 240, 255, 0.4);
  box-shadow: 0 0 25px rgba(0, 240, 255, 0.12);
}

/* 圖片載入流光骨架屏動畫 (Shimmer Skeleton) */
.skeleton {
  position: relative;
  background: #121318;
  overflow: hidden;
}

.skeleton::after {
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  transform: translateX(-100%);
  background-image: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0) 0,
    rgba(255, 255, 255, 0.05) 20%,
    rgba(255, 255, 255, 0.1) 60%,
    rgba(255, 255, 255, 0)
  );
  animation: shimmer 1.8s infinite;
  content: '';
}

@keyframes shimmer {
  100% {
    transform: translateX(100%);
  }
}

/* 7 字母開場進場動畫 */
@keyframes letterDrop {
  0% {
    opacity: 0;
    transform: translateY(20px) scale(0.9);
    filter: blur(8px);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
  }
}

.animate-letter {
  opacity: 0;
  animation: letterDrop 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes loadBar {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(0%); }
}

.animate-loading-bar {
  animation: loadBar 1.2s cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

/* 彈窗淡入動效 */
@keyframes fadeIn {
  from { opacity: 0; transform: scale(0.98); }
  to { opacity: 1; transform: scale(1); }
}

.animate-fade-in {
  animation: fadeIn 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* 自訂文字滾動條 (高級感細長捲軸) */
.custom-scrollbar::-webkit-scrollbar {
  width: 6px;
}
.custom-scrollbar::-webkit-scrollbar-track {
  background: rgba(255, 255, 255, 0.05);
  border-radius: 4px;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
  background: rgba(0, 240, 255, 0.3);
  border-radius: 4px;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 240, 255, 0.6);
}


/* ==========================================
   Vue 動畫過渡效果 (Transitions)
   ========================================== */

/* 1. 彈窗外層 (黑底遮罩淡入淡出) */
.modal-enter-active,
.modal-leave-active {
  transition: opacity 0.4s ease;
}
.modal-enter-from,
.modal-leave-to {
  opacity: 0;
}

/* 1-2. 彈窗內層 (帶有微微縮放與上浮的高級感) */
.modal-enter-active .glass,
.modal-leave-active .glass {
  transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); /* 絲滑的減速曲線 */
}
.modal-enter-from .glass,
.modal-leave-to .glass {
  transform: scale(0.96) translateY(15px);
  opacity: 0;
}

/* 2. 相簿圖片切換 (快速淡出淡入) */
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.25s ease;
}
.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

/* 3. 雙向滑動切換 (支援上一張/下一張) */

/* 共通的動畫時間與置中設定 */
.slide-next-enter-active, .slide-next-leave-active,
.slide-prev-enter-active, .slide-prev-leave-active {
  transition: opacity 0.6s ease-out, transform 0.8s cubic-bezier(0.25, 1, 0.2, 1) !important;
}
.slide-next-leave-active, .slide-prev-leave-active {
  position: absolute !important;
  top: 0; bottom: 0; left: 0; right: 0;
  margin: auto;
  pointer-events: none;
  z-index: 10;
}
.slide-next-enter-active, .slide-prev-enter-active {
  z-index: 20;
}

/* ------------------------------------- */
/* 【按右鍵 (下一張)】：新圖從右進，舊圖往左出 */
/* ------------------------------------- */
.slide-next-enter-from {
  opacity: 0 !important;
  transform: translateX(300px) scale(0.8) !important; 
}
.slide-next-leave-to {
  opacity: 0 !important;
  transform: translateX(-300px) scale(0.8) !important;
}

/* ------------------------------------- */
/* 【按左鍵 (上一張)】：新圖從左進，舊圖往右出 */
/* ------------------------------------- */
.slide-prev-enter-from {
  opacity: 0 !important;
  transform: translateX(-300px) scale(0.8) !important; 
}
.slide-prev-leave-to {
  opacity: 0 !important;
  transform: translateX(300px) scale(0.8) !important;
}