/* ==========================================================================
   動效層 · 可整檔刪除，刪掉後頁面依然完整（只是沒有動畫）
   載入順序要放在 styles.css 之後
   ========================================================================== */

/* ---------- 1. 滾動淡入 ----------
   .reveal 由 main.js 加上：JS 失效時元素不會被隱藏，內容永遠可讀 */
.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1);
  transition-delay: var(--reveal-delay, 0ms);
}
.reveal.is-in { opacity: 1; transform: none; }

/* ---------- 2. 圖片 hover 緩慢放大 ---------- */
.product-card img,
.pillar img,
.class-card img,
.trainer-card img,
.store-card img {
  transition: transform .9s cubic-bezier(.22,.61,.36,1), filter .5s ease;
}
.pillar, .trainer-card, .store-card { overflow: hidden; border-radius: var(--radius-card); }
.product-card:hover img,
.pillar:hover img,
.class-card:hover img,
.trainer-card:hover img,
.store-card:hover img { transform: scale(1.06); }
.pillar:hover img { filter: brightness(1.06); }

/* ---------- 3. 首屏緩慢縮放（Ken Burns） ---------- */
@keyframes kenburns {
  from { transform: scale(1); }
  to   { transform: scale(1.08); }
}
.hero-bg, .hero-img { animation: kenburns 26s ease-in-out infinite alternate; }

/* ---------- 4. 按鈕流光 ---------- */
.btn-gold, .btn-outline-gold, .nav-cta, .topbar-cta { position: relative; overflow: hidden; }
.btn-gold::after, .nav-cta::after {
  content: ""; position: absolute; top: 0; left: -130%;
  width: 55%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.5), transparent);
  transform: skewX(-18deg);
}
.btn-gold:hover::after, .nav-cta:hover::after { animation: shine .85s ease; }
@keyframes shine { to { left: 150%; } }

/* ---------- 5. 箭頭 / 圖標位移 ---------- */
.link-gold i, .pillar-more i, .btn i { transition: transform .25s ease; display: inline-block; }
.link-gold:hover i, .pillar:hover .pillar-more i { transform: translateX(5px); }

/* ---------- 6. 跑馬燈 ---------- */
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.marquee-band { background: var(--brand-ink); color: rgba(255,255,255,.7); padding: 18px 0; overflow: hidden; }
.marquee { overflow: hidden; }
.marquee-track {
  display: flex; width: max-content;
  animation: marquee 30s linear infinite;
}
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-item {
  display: flex; align-items: center; gap: 12px;
  padding: 0 28px; font-size: 14px; letter-spacing: .08em; white-space: nowrap;
}
.marquee-item::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--brand-gold); }

/* ---------- 7. 標題下劃線展開 ---------- */
.section-head h2 { position: relative; }
.section-head h2::after {
  content: ""; position: absolute; left: 0; bottom: -14px;
  width: 0; height: 2px; background: var(--brand-gold);
  transition: width .9s cubic-bezier(.22,.61,.36,1) .15s;
}
.section-head.is-in h2::after { width: 72px; }

/* ---------- 8. 數字滾動 ---------- */
.stat-num { font-variant-numeric: tabular-nums; }

/* ---------- 9. 卡片浮起（比原本更明顯一點） ---------- */
.product-card, .class-card, .plan-card, .service-card, .info-card, .store-info, .review-card {
  transition: transform .28s ease, box-shadow .28s ease;
}
.product-card:hover, .class-card:hover, .plan-card:hover { transform: translateY(-6px); }
.store-info:hover, .review-card:hover, .deal-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card);
}

/* ---------- 10. 尊重系統「減少動態效果」設定 ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  .reveal { opacity: 1 !important; transform: none !important; }
  .marquee-track { animation: none !important; }
}
