/* ============================
   Gallery (Marquee)
   ============================
   2段構成の無限マーキー。
   - Row 1: 左方向に流れる（ゆっくり）
   - Row 2: 右方向に流れる（やや速く、視覚的に対比）
   seamless loop を実現するため、HTML 側で画像を2セット並べている。
   トラックを translateX(-50%) まで動かすと、ちょうど 2セット目が 1セット目の位置に
   来るので、アニメーション終了 → 開始の瞬間に視覚的な飛びがない。
   ============================ */

.gallery {
  background: var(--c-bg);
  padding: var(--space-xl) 0;
  position: relative;
  overflow: hidden;
}

.gallery-head {
  max-width: var(--max-w);
  margin: 0 auto var(--space-l);
  padding-left: clamp(1rem, 4vw, 3rem);
  padding-right: clamp(1rem, 4vw, 3rem);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.5rem;
  align-items: baseline;
}

/* マーキー本体 */
.marquee {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  /* 両端をフェードアウトさせて「無限に流れている」感を強化 */
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0,
    #000 80px,
    #000 calc(100% - 80px),
    transparent 100%
  );
  mask-image: linear-gradient(
    to right,
    transparent 0,
    #000 80px,
    #000 calc(100% - 80px),
    transparent 100%
  );
}

.marquee-row {
  overflow: hidden;
}

.marquee-track {
  display: flex;
  gap: 1rem;
  width: max-content;
  will-change: transform;
}

/* Row 1: 左方向（translateX が負方向に進む） */
.marquee-row--left .marquee-track {
  animation: marquee-left 70s linear infinite;
}

/* Row 2: 右方向（translateX が負 → 0 へ戻る） */
.marquee-row--right .marquee-track {
  animation: marquee-right 85s linear infinite;
}

/* 画像本体 */
.marquee-track img {
  height: clamp(180px, 28vw, 300px);
  width: auto;
  display: block;
  object-fit: cover;
  flex-shrink: 0;
  filter: brightness(0.92) contrast(1.05) saturate(1.05);
  transition: filter 0.35s, transform 0.35s;
}

.marquee-track img:hover {
  filter: brightness(1.05) contrast(1.1) saturate(1.1);
  transform: scale(1.02);
}

/* ホバー時は流れを停止（じっくり見られる） */
.marquee-row:hover .marquee-track {
  animation-play-state: paused;
}

/* キーフレーム */
@keyframes marquee-left {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@keyframes marquee-right {
  from { transform: translateX(-50%); }
  to   { transform: translateX(0); }
}

/* モーション抑制環境ではアニメーションを止める（アクセシビリティ） */
@media (prefers-reduced-motion: reduce) {
  .marquee-track {
    animation: none;
    /* reduced-motion 時は 1セット目だけを表示するため left offset を 0 に固定 */
    transform: none;
  }
}
