/*
 * Reviews (Phase 13). Loaded on TOP and /seizen-seiri/ only when a review section renders. CSS only, no script.
 * TOP builds on the existing 「お客様の声」 layout (home.css grid / SP scroller); Design v3.2 tokens are used as is.
 */

/* TOP 「お客様の声」: natural height (no reserved empty-state height), cards keep their own height. */
.nessie-home-reviews.nessie-voices { min-height: 0; }
.nessie-voices__lead { max-width: 720px; margin: -12px 0 32px; color: var(--nessie-muted); font-size: 15px; line-height: 1.8; }
.nessie-voices__list { align-items: start; }
.nessie-voices__list:focus-visible { outline: 2px solid var(--nessie-aqua); outline-offset: 6px; }

/* Card */
.nessie-voice { display: flex; flex-direction: column; min-width: 0; padding: 28px 28px 24px; border: 1px solid var(--nessie-line); background: var(--nessie-white); box-sizing: border-box; }
.nessie-voice__stars { margin: 0 0 16px; color: var(--nessie-gold); font-size: 20px; letter-spacing: .12em; line-height: 1; white-space: nowrap; }
.nessie-voice__stars-off { color: var(--nessie-line); }
.nessie-voice__text { margin: 0; color: var(--nessie-navy); font-size: var(--nessie-reviews-type-body-pc); line-height: 1.9; overflow-wrap: anywhere; }
.nessie-voice__text p { margin: 0; }
.nessie-voice__text p + p { margin-top: .8em; }
/* Author name under the text (slightly smaller than the text), then a hairline and the source line. */
.nessie-voice__name { margin: 16px 0 0; color: var(--nessie-navy); font-size: var(--nessie-reviews-type-author); font-weight: 600; line-height: 1.6; overflow-wrap: anywhere; }
.nessie-voice__meta { margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--nessie-line); }
.nessie-voice__name + .nessie-voice__meta { margin-top: 14px; }
.nessie-voice__source { display: flex; flex-wrap: wrap; align-items: center; gap: 0 12px; margin: 0; color: var(--nessie-muted); font-size: var(--nessie-reviews-type-source); line-height: 1.6; }
.nessie-voice__origin { color: var(--nessie-navy); font-weight: 600; letter-spacing: .02em; }
.nessie-voice__source a { display: inline-block; padding-block: 4px; color: var(--nessie-aqua); }
.nessie-voice a:focus-visible, .nessie-voices__google:focus-visible { outline: 2px solid var(--nessie-aqua); outline-offset: 3px; }

/* 「Google Mapsで口コミを見る」: an external link only (Google's reviews stay on Google Maps). */
.nessie-voices__more { display: flex; justify-content: flex-end; margin: 32px 0 0; }
.nessie-voices__google { display: inline-flex; align-items: center; justify-content: space-between; gap: 16px; min-width: 340px; min-height: 56px; padding: 10px 20px 10px 24px; border: 1px solid var(--nessie-navy); background: var(--nessie-white); color: var(--nessie-navy); font-size: 14px; font-weight: 600; text-decoration: none; box-sizing: border-box; }
.nessie-voices__google:hover { background: var(--nessie-navy); color: var(--nessie-white); }

/* /seizen-seiri/: compact entry (heading + link), no map. */
.nessie-reviews { padding-block: 80px; background: var(--nessie-white); border-top: 1px solid var(--nessie-line); }
.nessie-reviews__inner { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px 48px; }
.nessie-reviews__head { max-width: 640px; }
.nessie-reviews .nessie-eyebrow { margin: 0 0 12px; color: var(--nessie-gold); font-size: 12px; font-weight: 600; letter-spacing: .15em; }
.nessie-reviews h2 { margin: 0; font-size: 36px; font-weight: 600; line-height: 1.5; }
.nessie-reviews__lead { margin: 12px 0 0; color: var(--nessie-muted); font-size: 15px; line-height: 1.8; }
.nessie-reviews .nessie-voices__more { margin: 0; }

@media (width <= 767px) {
  .nessie-voices__lead { margin: -12px 0 24px; font-size: 14px; }
  .nessie-voices__list { align-items: flex-start; scroll-padding-inline-start: var(--nessie-layout-sp-gutter); }
  /* Gutter 20px + gap 20px + 40px of the next card visible, at every phone width (375 → 295px card). */
  .nessie-voices__list > .nessie-voice { flex: 0 0 min(calc(100vw - 80px), 360px); scroll-snap-align: start; padding: 22px 20px 20px; }
  .nessie-voices__list > .nessie-voice:only-child { flex-basis: calc(100vw - 40px); } /* A single review uses the full width (nothing to scroll to). */
  .nessie-voice__text { font-size: var(--nessie-reviews-type-body-sp); }
  .nessie-voice__name { font-size: 13px; }
  .nessie-voices__more { margin-top: 24px; }
  .nessie-voices__google { width: 100%; min-width: 0; }
  .nessie-reviews { padding-block: 56px; }
  .nessie-reviews h2 { font-size: 26px; }
  .nessie-reviews .nessie-eyebrow { font-size: 11px; }
  .nessie-reviews__inner > * { width: 100%; }
}
