/* ─────────────────────────────────────────────────
 * motion.css ─ scroll-driven primitives + grid
 * ───────────────────────────────────────────────── */

/* ── scroll grid (Jhey-inspired, layered subgrid) ── */
.scroll-grid {
  position: relative;
  background: var(--ink);
  /* 余分なスクロール余白を内部に持つ。スティッキーで中身を固定 */
  min-height: 240vh;
}

.scroll-grid__sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  display: grid;
  place-items: center;
  overflow: hidden;
}

.scroll-grid__container {
  width: 100%;
  height: 100%;
  position: relative;
}

.scroll-grid__grid {
  --container-width: 1600px;
  --gap: clamp(8px, 6.6vw, 72px);
  --offset: 0;

  width: var(--container-width);
  max-width: calc(100% - 2 * var(--gutter));
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  grid-template-rows: repeat(3, auto);
  gap: var(--gap);
  align-content: center;
}

@media (max-width: 720px) {
  .scroll-grid__grid {
    grid-template-columns: repeat(3, 1fr);
    --offset: -1;
    --gap: clamp(6px, 4vw, 28px);
  }
  .scroll-grid__layer[data-layer="1"] { display: none; }
}

.scroll-grid__layer {
  display: grid;
  grid-column: 1 / -1;
  grid-row: 1 / -1;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
  /* defaults: hidden until JS computes scroll progress */
  opacity: 0;
  transform: scale(0.4);
  will-change: opacity, transform;
}

/* layer 1: outer columns (left odd, right even) */
.scroll-grid__layer[data-layer="1"] .scroll-grid__cell:nth-of-type(odd) { grid-column: 1; }
.scroll-grid__layer[data-layer="1"] .scroll-grid__cell:nth-of-type(even) { grid-column: -2; }

/* layer 2: inner columns */
.scroll-grid__layer[data-layer="2"] .scroll-grid__cell:nth-of-type(odd) { grid-column: calc(2 + var(--offset)); }
.scroll-grid__layer[data-layer="2"] .scroll-grid__cell:nth-of-type(even) { grid-column: calc(-3 - var(--offset)); }

/* layer 3: center column top/bottom */
.scroll-grid__layer[data-layer="3"] .scroll-grid__cell:first-of-type {
  grid-column: calc(3 + var(--offset));
  grid-row: 1;
}
.scroll-grid__layer[data-layer="3"] .scroll-grid__cell:last-of-type {
  grid-column: calc(3 + var(--offset));
  grid-row: -1;
}

.scroll-grid__cell img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: var(--r-lg);
  filter: saturate(0.92) contrast(1.04);
}

.scroll-grid__scaler {
  position: relative;
  z-index: 2;
  grid-area: 2 / calc(3 + var(--offset));
  width: 100%;
  height: 100%;
}

.scroll-grid__scaler img,
.scroll-grid__scaler video {
  position: absolute;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  object-fit: cover;
  border-radius: var(--r-lg);
  width: 100%;
  height: 100%;
  will-change: width, height, border-radius;
}

.scroll-grid__tail {
  height: 100vh;
  display: grid;
  place-items: center;
  background: var(--ink);
}

.scroll-grid__tail-title {
  color: var(--paper);
  text-align: center;
}

@media (prefers-reduced-motion: reduce) {
  .scroll-grid { min-height: auto; }
  .scroll-grid__sticky { position: relative; height: auto; padding: var(--space-9) 0; }
  .scroll-grid__grid { position: relative; top: auto; left: auto; translate: none; }
  .scroll-grid__layer { opacity: 1; transform: none; }
  .scroll-grid__scaler img, .scroll-grid__scaler video { position: relative; top: auto; left: auto; translate: none; }
}

/* ── parallax helpers ── */
[data-parallax] { will-change: transform; }
