/* ============================================================
   商品ページテンプレート（mydoo-product-page.php の [product_page]）
   ・テンプレートで表示する商品ページでだけ読み込む
   ・セクション・注文エリアなどの見た目は site-wp.css の既存クラスを流用し、
     ここではブロックエディタが出していた分（2列・PC/スマホ切替・列組み）と
     テンプレート独自の部分だけを指定する
   ============================================================ */

.pp {
  /* ページ内の本文の文字サイズ（商品説明と同じ「小」にそろえる） */
  --pp-fs: var(--wp--preset--font-size--small, 0.9rem);
  /* 本文の行の高さ（商品説明と同じ 1.8 にそろえる） */
  --pp-lh: 1.8;
  max-width: 960px;
  margin-inline: auto;
}

/* ------------------------------------------------------------
   本文の文字サイズ・行の高さをそろえる
   ・商品説明・各セクションの文章・仕様・表・一覧をすべて --pp-fs にする
   ・ブロックの「has-xxx-font-size」は !important 付きで出るため、こちらも !important
   ・見出し（h2〜h4・summary）、ボタン、納期・送料・お気に入りなどの補足表示は対象外
   ・行の高さは文章だけ。表のセルは詰まって見えるよう既定のまま
   ------------------------------------------------------------ */
.pp .prod-desc p,
.pp .pp-slider-list,
.pp .prod-section p:not(.price-split__title),
.pp .prod-section li,
.pp .prod-section td,
.pp .prod-section th,
.pp .prod-section figcaption,
.pp .prod-section .pp-rich,
.pp .prod-section .prod-spec-text,
.pp .prod-section .information-box {
  font-size: var(--pp-fs) !important;
}

.pp .prod-desc p,
.pp .prod-section p:not(.price-split__title),
.pp .prod-section li,
.pp .prod-section .pp-rich,
.pp .prod-section .prod-spec-text,
.pp .prod-section .information-box {
  line-height: var(--pp-lh);
}

/* スマホでだけ / PCでだけ出すもの（ブレークポイントは UAGB の非表示設定と同じ 767px） */
.pp .pp-only-sp {
  display: none;
}

/* ------------------------------------------------------------
   上部：PC は左にスライダー、右に商品名〜説明の2列
   ------------------------------------------------------------ */
.pp-top {
  display: flex;
  align-items: flex-start;
  gap: 2em;
}

.pp-top__media {
  flex: 0 0 calc(58% - 1em);
  min-width: 0;
}

.pp-top__info {
  flex: 1 1 calc(42% - 1em);
  min-width: 0;
}

.pp-title {
  margin: 0;
}

/* 注文エリアと商品説明の間（旧: 24px のスペーサー） */
.pp .order-panel+.prod-desc {
  margin-top: 24px;
}

/* ------------------------------------------------------------
   セクションナビ：メニューバーのように項目の間へ縦棒を入れ、
   押せるリンクだと分かるようにする
   （間隔は縦棒の左右の余白で取るので、site-wp.css の横の gap は 0 にする）
   ------------------------------------------------------------ */
.pp .prod-nav {
  gap: var(--s-1) 0;
}

.pp .prod-nav__item {
  position: relative;
  padding-inline: var(--s-3);
}

/* ------------------------------------------------------------
   セクションナビ：スクロールしても画面上部に固定し、
   表示中のセクションの項目を強調する（.is-active は site.js で付ける）
   ・ヘッダーは固定ではないので画面の最上部に貼り付ける
   ・背景は border-image の outset で画面幅いっぱいに伸ばす
     （outset ははみ出しても横スクロールを出さない）
   ------------------------------------------------------------ */
.pp {
  /* ナビの上端（ログイン中は WP 管理バーの下） */
  --pp-nav-top: 0px;
}

.admin-bar .pp {
  --pp-nav-top: 32px;
}

@media (max-width: 782px) {
  .admin-bar .pp {
    --pp-nav-top: 46px;
  }
}

/* 600px 以下は管理バーが固定されず一緒に流れる */
@media (max-width: 600px) {
  .admin-bar .pp {
    --pp-nav-top: 0px;
  }
}

.pp .prod-nav {
  position: sticky;
  top: var(--pp-nav-top);
  z-index: 50;
  padding-block: var(--s-1);
  border-image: linear-gradient(#fff 0 0) fill 0 / 0 / 0 100vmax;
}

/* 貼り付いている間だけ、下に 6px の薄い影を足して本文と区切る */
.pp .prod-nav.is-stuck {
  border-image: linear-gradient(#fff calc(100% - 6px), rgba(0, 0, 0, 0.08) calc(100% - 6px), rgba(0, 0, 0, 0)) fill 0 / 0 / 0 100vmax 6px;
}

.pp .prod-nav__item.is-active {
  border-bottom-color: var(--btn-primary-bg);
  color: var(--btn-primary-bg) !important;
  font-weight: 700;
}

/* ナビの項目で飛んだとき、見出しが固定したナビの下に隠れないようにする
   （site-wp.css の #sec-xxx の指定より優先させるため !important） */
.pp [id^="sec-"] {
  scroll-margin-top: calc(var(--pp-nav-top) + var(--pp-nav-h, 48px) + var(--s-2, 0.5rem)) !important;
}

.pp .prod-nav__item+.prod-nav__item::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 0;
  height: 1.1em;
  border-left: 1px solid var(--c-text-2);
  transform: translateY(-50%);
}

@media (max-width: 767px) {

  /* スマホは折り返さず横一列に収める（余白と文字を画面幅に合わせて縮める） */
  .pp .prod-nav {
    flex-wrap: nowrap;
    padding-inline: 0;
  }

  .pp .prod-nav__item {
    padding-inline: clamp(6px, 3vw, var(--s-2));
    font-size: clamp(0.75rem, 3.6vw, 0.85rem);
  }
}

/* スライダー画像の一覧（スライダーの下に点線枠・2列） */
.pp-slider-list {
  columns: 2;
  column-gap: 1.5em;
  margin: var(--s-2) 0 0;
  padding: 0.8em 1em;
  border: 1px dotted var(--c-text-2);
  border-radius: 8px;
  list-style: none;
  line-height: 2;
}

.pp-slider-list li {
  break-inside: avoid;
}

/* 本文の差し込み枠（product-xxx-extra）で足した内容 */
.pp-slot {
  margin-top: var(--s-3);
}

/* 差し込み枠の中のカード（dir002 の「小サイズ用」など）の見出しは、
   セクション見出しと同じ左のオレンジ線が付くので外す */
.pp-slot .wp-block-details.is-static>summary {
  border-left: 0;
}

/* ------------------------------------------------------------
   スマホ：1列にして
   商品名 → スライダー → 注文エリア → 説明 → 送料リンク の順に並べ替える
   ------------------------------------------------------------ */
@media (max-width: 767px) {

  /* 画面の端まで広がらないよう左右に余白を取る
     （ブロックで組んでいたときはテーマのグループの余白が効いていた分） */
  .pp {
    padding-inline: var(--s-2);
  }

  .pp .pp-only-pc {
    display: none;
  }

  .pp .pp-only-sp {
    display: block;
  }

  .pp-top {
    flex-direction: column;
    align-items: stretch;
    gap: var(--s-2);
  }

  /* 2列の枠をなくし、中身を .pp-top の直下にあるものとして並べる */
  .pp-top__media,
  .pp-top__info {
    display: contents;
  }

  .pp-top .product-title {
    order: 1;
    margin-bottom: 0;
  }

  .pp-top .pp-slider--sp,
  .pp-top .pp-slider-list {
    order: 2;
  }

  .pp-top .pp-slider-list {
    margin-top: 0;
  }

  .pp-top .order-panel {
    order: 3;
  }

  .pp-top .prod-desc {
    order: 4;
  }

  .pp .order-panel+.prod-desc {
    margin-top: var(--s-1);
  }

  /* ボタンは文章より一回り内側に収め、中央に置く
     （.w-100 が width:100% !important なので、こちらも !important）
     入稿テンプレートDL（.nt-zip）は文言を1行に収める指定があり、縮めると
     開閉の矢印が押し出されて見えなくなるので、元の幅のままにする */
  .pp .order-panel>.btn,
  .pp .order-inline .btn {
    width: calc(100% - 2 * var(--s-3)) !important;
    align-self: center;
  }

  /* 画面下の固定注文バー（.pp の外に出している）も同じ幅にそろえる
     バー自体に左右 var(--s-2) の余白があるので、ページ内のボタンと同じ式で端からの距離が一致する */
  .fixed-order-bar .pp-order {
    width: calc(100% - 2 * var(--s-3));
  }

  .pp-top .order-links {
    order: 5;
    align-items: center;
    margin-top: 0;
  }

  .pp-top .order-links__item p {
    justify-content: center;
  }
}

/* ------------------------------------------------------------
   注文ボタン：売り切れ・先行表示のときは押せない見た目にし、
   ボタンの中に説明を2行目として出す
   ------------------------------------------------------------ */
.btn.btn-primary.pp-order.is-disabled {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.1rem;
  background-color: #b9b4ad !important;
  border-color: #b9b4ad !important;
  color: #fff !important;
  box-shadow: none !important;
  cursor: not-allowed;
  pointer-events: none;
}

.pp-order__label {
  font-weight: 700;
}

.pp-order__note {
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.4;
}

/* 固定バーは中央寄せの1行ボタンなので、2行でも高さが暴れないよう詰める */
.fixed-order-bar__btn.is-disabled {
  padding-block: 0.45rem;
}

/* ------------------------------------------------------------
   入稿テンプレート：説明と表の2列
   （ブロックの列組み CSS はブロックを使ったページでしか読まれないため自前で持つ）
   ------------------------------------------------------------ */
.pp .draft-group {
  display: flex;
  gap: 2em;
}

.pp .draft-group>.wp-block-column {
  flex: 1 1 0;
  min-width: 0;
}

@media (max-width: 781px) {
  .pp .draft-group {
    flex-direction: column;
  }
}

/* ------------------------------------------------------------
   オプション：文章は左・画像は右の2列
   ・再利用ブロック（チャームなど）と ACF のオプション（フルプリントなど）で同じ見た目にする
   ・再利用ブロック側は画像の列が style="flex-basis:300px" 固定で小さいので、
     !important で広げる（インライン指定に勝つため）
   ------------------------------------------------------------ */
.pp .option-group {
  display: flex;
  align-items: flex-start;
  gap: 2em;
}

.pp .option-group>.wp-block-column {
  flex: 1 1 0;
  min-width: 0;
}

.pp .option-group>.wp-block-column:last-child:not(:first-child) {
  flex: 0 0 40% !important;
}

.pp .option-group img {
  display: block;
  width: 100%;
  height: auto;
}

.pp .option-group .wp-block-image {
  margin: 0;
}

@media (max-width: 781px) {
  .pp .option-group {
    flex-direction: column;
  }

  .pp .option-group>.wp-block-column:last-child:not(:first-child) {
    flex-basis: auto !important;
    width: 100%;
    max-width: 400px;
  }
}

.pp .wp-block-buttons {
  display: flex;
  margin: 0.8em 0;
}

/* ------------------------------------------------------------
   仕様（表にせずテキストで出す）
   ------------------------------------------------------------ */
/* 罫線の枠で囲み、枠ごと中央に置く（中の文章は左揃え）
   幅は中身に合わせつつ、短い商品でも細くなりすぎないよう下限を持たせる */
.prod-spec-text {
  display: flex;
  flex-direction: column;
  gap: 0.6em;
  width: fit-content;
  min-width: min(100%, 480px);
  max-width: 100%;
  margin: 1rem auto;
  padding: 1.2em 1.8em;
  border: 1px solid var(--c-border);
  border-radius: 8px;
  line-height: 1.8;
}

@media (max-width: 767px) {
  .prod-spec-text {
    padding: 1em 1.2em;
  }
}

/* 「素材：国産透明アクリル」のように1行で並べる */
.pp-spec-row {
  display: flex;
}

.pp-spec-row dt {
  flex: 0 0 auto;
  font-weight: 400;
  white-space: nowrap;
}

.pp-spec-row dd {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
}

/* ------------------------------------------------------------
   価格表：中央寄せ
   ・片面／両面に分けた表（site.js の .price-split）は、いちばん幅の広い表に
     合わせたまとまり全体を中央に置き、各表はその中で左端をそろえる
     （列数が違う表でも左端がずれないように。下の注記も site.js でこの中へ移す）
   ・分けていない表は表そのものを中央に置く
   ------------------------------------------------------------ */
.pp #sec-price .price-split {
  width: fit-content;
  max-width: 100%;
  margin-inline: auto;
}

.pp #sec-price .price-split__block {
  max-width: 100%;
}

.pp #sec-price .price-table {
  margin-inline: auto;
}

.pp #sec-price .price-split .price-table {
  margin-inline: 0;
}

/* 価格表の注記（個数制限など一時的なお知らせ。現行と同じ赤字） */
.pp #sec-price .pp-price-note {
  margin: var(--s-2, 0.5rem) 0 0;
  color: #df0029;
  font-weight: 600;
  text-align: center;
}

/* ------------------------------------------------------------
   データの作り方の画像・WYSIWYG で入れた本文
   ------------------------------------------------------------ */
.pp-howto__imgs {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}

.pp-howto__imgs img,
.pp-rich img {
  display: block;
  max-width: 100%;
  height: auto;
}

.pp-rich {
  line-height: 1.8;
}

.pp-rich> :first-child {
  margin-top: 0;
}

.pp-rich> :last-child {
  margin-bottom: 0;
}

/* 商品別のデータの作り方の要点（mdpp_howto_guide_html）
   詳細は /draft/how-to-make2/ の該当セクションへリンクする */
.pp-howto-guide {
  margin: 0 0 var(--s-3);
  padding: var(--s-2) var(--s-3);
  background: var(--c-surface);
  border-left: 4px solid var(--btn-primary-bg);
  border-radius: 10px;
}

.pp .prod-section .pp-howto-guide__title {
  margin: 0 0 var(--s-1);
  font-weight: 700;
}

.pp-howto-guide__list {
  margin: 0;
  padding-left: 1.2em;
}

.pp .prod-section .pp-howto-guide__more {
  margin: var(--s-1) 0 0;
  text-align: right;
}

.pp-howto-guide__more a {
  font-weight: 700;
  text-decoration: underline;
}

#sec-howto,
#sec-extra {
  scroll-margin-top: 90px;
}
