/* product-review/block.css
 * Block-scoped styles for mign/product-review
 * CSS extracted from products-review.css — compare section only
 */

/* ========== design tokens (scoped to block) ========== */
.mign-block-product-review {
  --color-warm-100: #e5e3df;
  --color-warm-300: #5b575c;
  --color-warm-950: #1a171c;
  --color-white-0: #ffffff;
  --color-alpha-white-30: rgba(255, 255, 255, 0.3);
  --color-surface-card: var(--color-warm-100);
  --color-surface-overlay: var(--color-alpha-white-30);
  --color-text-primary: var(--color-warm-950);
  --color-text-secondary: var(--color-warm-300);
  --color-text-on-inverse: var(--color-white-0);
  --color-border-default: var(--color-warm-300);
  --font-family-sans-en: "din-2014", "Inter", sans-serif;
  --font-family-sans-jp: "ryo-gothic-plusn", "Noto Sans JP", sans-serif;
  --font-size-xs: 12px;
  --font-size-sm: 14px;
  --font-size-base: 16px;
  --radius-lg: 36px;
}

/* ========== Compare section ========== */
/* sticky 内訳:
     enter hold = 0.5 viewport
     transition = 1   viewport (bar sweeps bottom→top)
     exit  hold = 1   viewport (table → caption reveal)
   合計 2.5 + sticky 1 = 3.5 → height: 350vh
   JS の HOLD_ENTER / TRANSITION / HOLD_EXIT と必ず一致 */
.mign-block-product-review .compare {
  position: relative;
  height: 350vh;
}

.mign-block-product-review .compare__sticky {
  position: sticky;
  top: 0;
  height: calc(100vh + clamp(90px, 9vw, 120px));
  display: grid;
  place-items: center;
  padding: clamp(90px, 9vw, 120px) clamp(60px, 6vw, 80px);
  background: var(--color-surface-card);
  border-radius: var(--radius-lg);
}

.mign-block-product-review .compare__stage {
  --progress: 100%;
  --reveal-table: 0;
  --reveal-caption: 0;
  position: relative;
  width: 100%;
  max-width: 1100px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: clamp(16px, 2.5vh, 32px);
}

/* ----- media (before/after PNG) ----- */
.mign-block-product-review .compare__media {
  position: relative;
  align-self: center;
  width: 100%;
  max-width: calc(50vh * (863 / 610));
  aspect-ratio: 863 / 610;
}

.mign-block-product-review.is-editor .compare__media {
  max-width: 100%;
}

.mign-block-product-review .compare__frame {
  position: absolute;
  inset: 0;
  background: var(--color-white-0);
  overflow: hidden;
}

.mign-block-product-review .compare__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  user-select: none;
  pointer-events: none;
}

/* clip sweep driven by --progress (JS → CSS custom property) */
.mign-block-product-review .compare__after {
  position: absolute;
  inset: 0;
  clip-path: inset(var(--progress) 0 0 0);
  will-change: clip-path;
}

.mign-block-product-review .compare__bar {
  position: absolute;
  left: 0;
  right: 0;
  top: var(--progress);
  height: 0;
  border-top: 2px solid var(--color-surface-card);
  transform: translateY(-1px);
  will-change: top;
}

.mign-block-product-review .compare__label {
  position: absolute;
  left: 100%;
  margin: 0 0 0 clamp(16px, 3vw, 32px);
  padding: 0;
  top: max(var(--progress), 2em);
  transform: translateY(-50%);
  white-space: nowrap;
  pointer-events: none;
  z-index: 2;
  will-change: top;
  color: var(--color-text-primary, #1a171c);
  font-family: var(--font-family-sans-jp, "Ryo Gothic PlusN");
  font-size: var(--font-size-2xl, 24px);
  font-style: normal;
  font-weight: var(--font-weight-light, 300);
  line-height: 200%;
  /* 48px */
  letter-spacing: var(--letter-spacing-normal, 0);
}

.mign-block-product-review.is-editor .compare__label {
  top: -100px;
  white-space: nowrap;
  width: 100%;
  transform: unset;
  left: 0;
  pointer-events: auto;
  user-select: text;
  cursor: text;
}

/* ----- table reveal ----- */
.mign-block-product-review.is-editor .compare__table {
  margin-top: 40px;
}

.mign-block-product-review .compare__table {
  --reveal: var(--reveal-table);
  background: var(--color-surface-overlay);
  display: flex;
  gap: 8px;
  padding: 0;
  opacity: var(--reveal);
  transform: translateY(calc((1 - var(--reveal)) * 24px));
  will-change: opacity, transform;
  margin-top: 4px;
}

.mign-block-product-review .compare__col {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.mign-block-product-review .compare__col--check {
  flex: 0 1 30%;
}

.mign-block-product-review .compare__col--basis {
  flex: 1 1 auto;
}

.mign-block-product-review .compare__col--judge {
  flex: 0 0 auto;
  min-width: 96px;
}

.mign-block-product-review .compare__col-headwrap {
  padding: 4px 10px;
}

.mign-block-product-review .compare__col-head {
  display: inline-block;
  background: var(--color-warm-300);
  padding: 8px 4px;
  margin: 0;
  color: var(--color-text-on-inverse, #fff);
  font-family: var(--font-family-sans-en, "DIN 2014");
  font-size: var(--font-size-base, 16px);
  font-style: normal;
  font-weight: var(--font-weight-regular, 400);
  line-height: 130%;
  /* 20.8px */
  letter-spacing: var(--letter-spacing-normal, 0);
}

.mign-block-product-review .compare__col-body {
  font-family: var(--font-family-sans-en);
  font-weight: 300;
  font-size: var(--font-size-sm);
  line-height: 1.4;
  color: var(--color-warm-950);
  padding: 8px 10px;
  margin: 0;
}

/* ----- caption reveal ----- */
.mign-block-product-review .compare__caption {
  --reveal: var(--reveal-caption);
  margin: 0;
  opacity: var(--reveal);
  transform: translateY(calc((1 - var(--reveal)) * 24px));
  will-change: opacity, transform;
  color: var(--color-text-primary, #1a171c);
  font-family: var(--font-family-sans-jp, "Ryo Gothic PlusN");
  font-size: var(--font-size-3xl, 32px);
  font-style: normal;
  font-weight: var(--font-weight-light, 300);
  line-height: 200%;
  text-align: center;
  /* 64px */
  letter-spacing: var(--letter-spacing-normal, 0);
}

/* ========== reduced motion ========== */
@media (prefers-reduced-motion: reduce) {
  .mign-block-product-review .compare {
    height: auto;
  }

  .mign-block-product-review .compare__sticky {
    position: static;
    height: auto;
  }

  .mign-block-product-review .compare__stage {
    --progress: 50%;
    --reveal-table: 1;
    --reveal-caption: 1;
  }

  .mign-block-product-review .compare__after,
  .mign-block-product-review .compare__bar {
    transition: none;
  }
}

.mign-block-product-review .compare__table-row {
  position: relative;
  display: flex;
  gap: 8px;
  padding: 8px 0;
  align-items: flex-start;
}

.mign-block-product-review .compare__col {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.mign-block-product-review.is-editor .compare__col--check {
  flex: 0 1 30%;
}

.mign-block-product-review .compare__col--check {
  flex: 1 1 auto;
  width: 30%;
}

.mign-block-product-review .compare__col--basis {
  flex: 1 1 auto;
  width: 60%;
}

.mign-block-product-review.is-editor .compare__col--basis {
  flex: 1 1 50%;
}

.mign-block-product-review .compare__col--judge {
  flex: 0 0 96px;
}

.mign-block-product-review .compare__col-label {
  font-family: var(--font-family-sans-en);
  font-size: var(--font-size-xs);
  color: var(--color-text-secondary);
  font-weight: 400;
  padding: 0 10px;
  margin-bottom: 2px;
}

.mign-block-product-review .table-row__remove-btn {
  flex-shrink: 0;
  align-self: flex-start;
  margin-top: 4px;
}

.mign-block-product-review .table__add-btn {
  margin-top: 12px;
}

/* ----- editor: image upload buttons layout ----- */
.mign-block-product-review .compare__media {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.mign-block-product-review .compare__upload-btn {
  min-width: 180px;
  text-align: center;
  justify-content: center;
}

/* ========== mobile ========== */
@media (max-width: 767px) {
  .mign-block-product-review .compare {
    height: 350vh;
  }

  .mign-block-product-review .compare__sticky {
    padding: 60px 30px 30px 30px;
  }

  .mign-block-product-review .compare__media {
    max-width: 100%;
  }

  .mign-block-product-review .compare__label {
    display: none;
  }

  .mign-block-product-review .compare__table {
    flex-direction: column;
    gap: 0;
  }

  .mign-block-product-review .compare__col--check,
  .mign-block-product-review .compare__col--basis,
  .mign-block-product-review .compare__col--judge {
    flex: 1 1 auto;
    max-width: none;
    min-width: 0;
  }

  .mign-block-product-review .compare__table-row {
    flex-direction: column;
  }

  .mign-block-product-review .compare__col {
    width: 100%;
  }
  .mign-block-product-review .compare__caption {
    font-size: 20px;
  }
}
