/* ============================================================
   SEMCO Theme - Animations CSS
   ============================================================ */

/* ─── Keyframes ─────────────────────────────────────────────── */
@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-10px); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes slideUp {
  from {
    transform: translateY(20px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes slideInLeft {
  from {
    transform: translateX(-30px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

/* ─── Animation Classes ─────────────────────────────────────── */
.animate-float     { animation: float    3s ease-in-out infinite; }
.animate-fade-in   { animation: fadeIn   0.5s ease-in; }
.animate-slide-up  { animation: slideUp  0.5s ease-out; }

/* ─── Scroll Animation (Intersection Observer と組み合わせ) ─── */
/*
  HTML側で .animate-on-scroll クラスを付与する。
  JS (scroll-animations.js) が .is-visible を追加する。
*/
.animate-on-scroll {
  opacity:    0;
  transform:  translateY(20px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.animate-on-scroll.is-visible {
  opacity:   1;
  transform: translateY(0);
}

/* stagger 用 delay クラス（JS でインデックスに応じて付与） */
.animate-delay-100 { transition-delay: 100ms; }
.animate-delay-200 { transition-delay: 200ms; }
.animate-delay-300 { transition-delay: 300ms; }
.animate-delay-400 { transition-delay: 400ms; }
.animate-delay-500 { transition-delay: 500ms; }

/* ─── Hero Intro Animation (FV 初回表示) ──────────────────── */
/* 背景（動画 + Create and grow.）フェードイン */
.hero-bg {
  opacity: 0;
  animation: heroFadeIn 1.2s ease-out 0.3s forwards;
}

/* 「ないものをつくる。共に広がる。」下からふわっと出現（時間差） */
.hero-content__first-inner {
  opacity: 0;
  transform: translateY(30px);
  animation: heroSlideUp 1s ease-out 1.2s forwards;
}

@keyframes heroFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes heroSlideUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ─── Hover Effects ─────────────────────────────────────────── */
.hover-scale {
  transition: transform var(--transition-base);
}
.hover-scale:hover {
  transform: scale(1.05);
}

.hover-scale-img img {
  transition: transform var(--transition-slow);
  overflow:   hidden;
}
.hover-scale-img:hover img {
  transform: scale(1.15);
}

/* ─── Mobile Menu Slide ─────────────────────────────────────── */
.mobile-menu {
  transform:  translateY(-100%);
  transition: transform var(--transition-slow) ease-in-out;
}

.mobile-menu.is-open {
  transform: translateY(0);
}

/* メニューアイテムのフェードイン（staggered） */
.mobile-menu__item {
  opacity:   0;
  transform: translateY(16px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

.mobile-menu.is-open .mobile-menu__item {
  opacity:   1;
  transform: translateY(0);
}

/* stagger delays for 8 nav items */
.mobile-menu.is-open .mobile-menu__item:nth-child(1) { transition-delay: 100ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(2) { transition-delay: 150ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(3) { transition-delay: 200ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(4) { transition-delay: 250ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(5) { transition-delay: 300ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(6) { transition-delay: 350ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(7) { transition-delay: 400ms; }
.mobile-menu.is-open .mobile-menu__item:nth-child(8) { transition-delay: 450ms; }
