/*
 * グラニットベルト発酵紀行(Hub・各章)
 * トークンは tokens.css。ヘッダー・メニュー・フッターは site.css が担当
 */

.gzj{
  color: var(--gz-ink);
  font-family: var(--gz-sans);
  font-weight: 300;
}
.gzj a{ color: inherit; text-decoration: none; transition: color .2s ease; }
.gzj a:hover{ color: var(--gz-terracotta); }
.gzj p, .gzj h1, .gzj ol{ margin: 0; }

/* 01 —— LABEL(トップページと同じ番号ラベル) */
.gzj-label{
  display: flex;
  align-items: baseline;
  gap: 16px;
  font-size: 12px;
  letter-spacing: 0.2em;
  line-height: 1.6;
  color: var(--gz-ink-soft);
}
.gzj-label__num{
  font-family: var(--gz-serif-en);
  font-size: 20px;
  letter-spacing: 0;
  color: var(--gz-terracotta);
}
.gzj-label__rule{
  align-self: center;
  flex-shrink: 0;
  width: 32px;
  height: 1px;
  background: var(--gz-line-strong);
}

/* 下線付きテキストリンク */
.gzj-textlink{
  align-self: flex-start;
  font-size: 14px;
  letter-spacing: 0.08em;
  line-height: 1.6;
  padding: 12px 0;
  border-bottom: 1px solid var(--gz-ink);
}
.gzj-textlink--sub{ color: var(--gz-ink-soft); border-bottom-color: var(--gz-line-strong); }

/* ---------- 章ページの外枠 ---------- */
.gzj-chapter{
  max-width: 1168px;
  margin: 0 auto;
  padding: 0 24px;
}
/* 写真のない章は本文幅に合わせて細く */
.gzj-chapter--text{ max-width: 776px; }

/* ---------- 見出しエリア ---------- */
.gzj-hero{
  padding: 112px 0 64px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.gzj-hero__series{
  align-self: flex-start;
  font-family: var(--gz-serif-ja);
  font-size: 13px;
  letter-spacing: 0.1em;
  color: var(--gz-ink-soft);
}
.gzj-hero__title{
  font-family: var(--gz-serif-ja);
  font-weight: 500;
  font-size: clamp(26px, 2.78vw, 40px);
  line-height: 1.6;
  letter-spacing: 0.03em;
}
.gzj-hero__byline{
  font-size: 12px;
  letter-spacing: 0.12em;
  color: var(--gz-ink-soft);
}
.gzj-hero--hub{
  max-width: none;
  padding: 128px var(--gz-gutter) 80px;
}
.gzj-hero__lead{
  max-width: 560px;
  font-size: 15px;
  line-height: 2.1;
  color: var(--gz-ink-soft);
}

/* ---------- 2カラム:左に写真、右に本文 ---------- */
.gzj-layout--photos{
  display: grid;
  grid-template-columns: minmax(0, 32fr) minmax(0, 68fr);
  gap: clamp(40px, 5.5vw, 80px);
  align-items: start;
}

.gzj-photos__list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 28px;
}
/* 写真が1枚だけの章は、本文を読み進めても写真が見えるよう追従させる */
.gzj-layout--single .gzj-photos{
  position: sticky;
  top: 32px;
}
.gzj-photo{
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 1 / 1;
  background: var(--gz-paper-deep);
  cursor: zoom-in;
}
.gzj-photo img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 35%; /* 縦長写真の上部(顔・看板など)を残すため、切り抜き位置をやや上に */
  transition: transform .6s ease, opacity .3s ease;
}
.gzj-photo:hover img{ transform: scale(1.03); }
.gzj-photo:focus-visible{ outline: 2px solid var(--gz-green); outline-offset: 3px; }

/* ---------- 章本文 ---------- */
.gzj-text{ min-width: 0; }
.gzj-layout--text .gzj-text{ max-width: 728px; margin: 0 auto; }
.gzj-body > p{
  font-size: 16px;
  line-height: 2.1;
  letter-spacing: 0.03em;
}
.gzj-body > p + p{ margin-top: 0.7em; }
/* 冒頭の一文は章のサブタイトルとして扱う */
.gzj-body > p:first-child{
  font-family: var(--gz-serif-ja);
  font-size: clamp(19px, 1.67vw, 24px);
  font-weight: 500;
  line-height: 1.8;
  padding-bottom: 40px;
  margin-bottom: 48px;
  border-bottom: 1px solid var(--gz-line);
}

.gzj-credit{
  margin: 64px 0 0 !important;
  padding-top: 24px;
  border-top: 1px solid var(--gz-line);
  font-size: 12px;
  letter-spacing: 0.08em;
  line-height: 1.8;
  color: var(--gz-ink-soft);
}

/* ---------- ライトボックス(js/journey.js) ---------- */
body.is-lightbox-open{ overflow: hidden; }
.gzj-lightbox{
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 72px 96px 56px;
  background: rgba(20, 22, 20, 0.94);
  color: var(--gz-on-dark);
  font-family: var(--gz-sans);
  font-weight: 300;
}
.gzj-lightbox[hidden]{ display: none; }
.gzj-lightbox__figure{
  margin: 0;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.gzj-lightbox__img{
  display: block;
  max-width: min(100%, 1200px);
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35);
}
.gzj-lightbox__counter{
  flex-shrink: 0;
  margin: 20px 0 0;
  font-family: var(--gz-serif-en);
  font-size: 14px;
  letter-spacing: 0.2em;
  color: rgba(244, 239, 228, 0.75);
}
.gzj-lightbox__btn{
  position: absolute;
  width: 48px;
  height: 48px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(244, 239, 228, 0.35);
  border-radius: 50%;
  background: rgba(20, 22, 20, 0.4);
  color: var(--gz-on-dark);
  cursor: pointer;
  transition: background-color .2s ease, border-color .2s ease;
}
.gzj-lightbox__btn:hover{ background: rgba(244, 239, 228, 0.12); border-color: var(--gz-on-dark); }
.gzj-lightbox__btn:focus-visible{ outline: 2px solid var(--gz-mint); outline-offset: 2px; }
.gzj-lightbox__btn[hidden]{ display: none; }
.gzj-lightbox__close{ top: 16px; right: 16px; }
.gzj-lightbox__prev{ left: 24px; top: 50%; transform: translateY(-50%); }
.gzj-lightbox__next{ right: 24px; top: 50%; transform: translateY(-50%); }
.admin-bar .gzj-lightbox{ top: 32px; }
@media (max-width: 782px){ .admin-bar .gzj-lightbox{ top: 46px; } }

/* ---------- 前後の章 ---------- */
.gzj-pager{
  max-width: 1168px;
  margin: 104px auto 0;
  padding: 0 24px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.gzj-pager__link{
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 36px 40px 36px 0;
  border-top: 1px solid var(--gz-ink);
  border-bottom: 1px solid var(--gz-line);
}
.gzj-pager__link--next{
  align-items: flex-end;
  text-align: right;
  padding: 36px 0 36px 40px;
  border-left: 1px solid var(--gz-line);
}
.gzj-pager__link--empty + .gzj-pager__link--next{ border-left: 0; }
.gzj-pager__dir{
  font-family: var(--gz-serif-en);
  font-size: 14px;
  letter-spacing: 0.16em;
  color: var(--gz-terracotta);
}
.gzj-pager__title{
  font-family: var(--gz-serif-ja);
  font-size: 18px;
  font-weight: 500;
  line-height: 1.7;
}

.gzj-back{
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px 40px;
  padding: 56px 24px 128px;
}

/* ---------- Hub: 全章一覧 ---------- */
.gzj-index{
  list-style: none;
  padding: 0 var(--gz-gutter);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 64px 40px;
}
.gzj-card{
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.gzj-card__media{
  position: relative;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--gz-paper-deep);
}
.gzj-card__media img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .6s ease;
}
.gzj-card:hover .gzj-card__media img{ transform: scale(1.03); }
.gzj-card__placeholder{
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--gz-green);
  color: var(--gz-on-dark);
  font-family: var(--gz-serif-en);
  font-size: 72px;
  line-height: 1;
}
.gzj-card__body{
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.gzj-card__num{
  font-family: var(--gz-serif-en);
  font-size: 14px;
  letter-spacing: 0.16em;
  color: var(--gz-terracotta);
}
.gzj-card__title{
  font-family: var(--gz-serif-ja);
  font-size: 18px;
  font-weight: 500;
  line-height: 1.7;
}
.gzj-index + .gzj-back{ padding-top: 96px; }

/* ---------- タブレット ---------- */
@media (max-width: 1023px){
  .gzj-index{ grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 24px; }
  .gzj-layout--photos{ grid-template-columns: minmax(0, 36fr) minmax(0, 64fr); gap: 40px; }
  .gzj-photos__list{ gap: 20px; }
}

/* ---------- スマートフォン(〜767px) ---------- */
@media (max-width: 767px){
  .gzj-label{ gap: 12px; font-size: 11px; }
  .gzj-label__num{ font-size: 18px; }
  .gzj-label__rule{ width: 24px; }

  .gzj-hero{ padding: 64px 0 48px; gap: 20px; }
  .gzj-hero--hub{ padding: 72px 24px 56px; }
  .gzj-hero__lead{ font-size: 14px; line-height: 2.05; }

  .gzj-body > p{ font-size: 15px; line-height: 2.05; }
  .gzj-body > p:first-child{ padding-bottom: 32px; margin-bottom: 40px; }
  /* 写真 → 本文の順に1カラム。写真は小さな正方形を横一列に並べる(4枚まで)
     5枚以上の章(第28章の6枚など)は小さくなりすぎないよう3列で折り返す */
  .gzj-layout--photos{ grid-template-columns: 1fr; gap: 40px; }
  .gzj-layout--single .gzj-photos{ position: static; }
  .gzj-photos__list{ flex-direction: row; flex-wrap: wrap; gap: 8px; }
  .gzj-photos__list li{ flex: 1 1 0; min-width: 0; max-width: 50%; }
  .gzj-photos__list:has(> li:nth-child(5)) li{ flex: 0 0 calc((100% - 16px) / 3); max-width: none; }

  .gzj-lightbox{ padding: 64px 12px 96px; }
  .gzj-lightbox__prev, .gzj-lightbox__next{ top: auto; bottom: 20px; transform: none; }
  .gzj-lightbox__prev{ left: calc(50% - 96px); }
  .gzj-lightbox__next{ right: calc(50% - 96px); }
  .gzj-lightbox__counter{ position: absolute; bottom: 34px; margin: 0; }

  .gzj-pager{ margin-top: 72px; grid-template-columns: 1fr; }
  .gzj-pager__link,
  .gzj-pager__link--next{
    align-items: flex-start;
    text-align: left;
    padding: 24px 0;
    border-left: 0;
  }
  .gzj-pager__link + .gzj-pager__link{ border-top: 0; }
  .gzj-pager__link--empty{ display: none; }
  .gzj-pager__link--empty + .gzj-pager__link{ border-top: 1px solid var(--gz-ink); }
  .gzj-pager__title{ font-size: 16px; }

  .gzj-back{ flex-direction: column; align-items: flex-start; gap: 8px; padding: 40px 24px 96px; }

  /* 一覧はトップページのスマートフォン版生産者リストと同じ横並びの行 */
  .gzj-index{
    grid-template-columns: 1fr;
    gap: 0;
    padding: 0;
    border-top: 1px solid var(--gz-line);
    margin: 0 24px !important;
  }
  .gzj-card{
    flex-direction: row;
    align-items: center;
    gap: 16px;
    padding: 16px 0;
    border-bottom: 1px solid var(--gz-line);
  }
  .gzj-card__media{ flex-shrink: 0; width: 112px; }
  .gzj-card__placeholder{ font-size: 36px; }
  .gzj-card__body{ gap: 2px; }
  .gzj-card__num{ font-size: 12px; }
  .gzj-card__title{ font-size: 15px; }
  .gzj-index + .gzj-back{ padding-top: 48px; }
}

/* 本文中のリンク(第27章のサイト・Instagramへのリンクなど) */
.gzj-body a{
  text-decoration: underline;
  text-decoration-color: var(--gz-line-strong);
  text-underline-offset: 4px;
  word-break: break-all;
}
.gzj-body a:hover{ text-decoration-color: currentColor; }

/* ---------- 走るソムリエKennyと行くツアー(inc/kenny-tour.php)。レイアウトは発酵紀行と共通 ---------- */
.gzk-date{ margin-left: 16px; font-family: var(--gz-serif-en); letter-spacing: 0.04em; }
.gzk-video{
  margin-top: 32px;
  padding: 14px 18px;
  background: var(--gz-paper);
  font-size: 13px;
  line-height: 1.8;
  color: var(--gz-ink-soft);
}
.gzk .gzj-credit a{ color: inherit; border-bottom: 1px solid currentColor; }
/* 走るソムリエKennyと行くツアーのアクセント色は、辻氏の Pinot Noir のワインレッド(発酵紀行のテラコッタと区別する) */
.gzk .gzj-label__num,
.gzk .gzj-pager__dir,
.gzk .gzj-card__num{ color: #671E47; }
.gzk a:hover{ color: #671E47; }
.gzk .gzj-card__placeholder{ background: #471531; }
