/*
Theme Name: NINOICHI Store
Theme URI: https://ninoichi.com/onlinestore/
Author: 弐の壱 - NINOICHI -
Description: 精肉卸弍の壱 オンラインストア用テーマ。コーポレートサイト（Snow Monkey）とトーン＆マナーを揃えるため、クラス名・データ属性・CSS カスタムプロパティを Snow Monkey 互換の命名で実装している。
Version: 0.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Requires at least: 6.8
Tested up to: 7.1
Requires PHP: 7.4
Text Domain: ninoichi-store
Tags: e-commerce, custom-menu, custom-logo, featured-images
*/

@charset "UTF-8";

/* ============================
* フォント
*
* コーポレートサイトと同一オリジンのため、同じフォントファイルを参照して
* ブラウザキャッシュを共有する。コーポレートサイトが Snow Monkey を
* やめた場合はこのパスが失われるため、その際は assets/fonts/ に配置し直す。
* ========================= */
@font-face {
  font-family: "Noto Serif JP";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/wp-content/themes/snow-monkey/assets/fonts/NotoSerifJP-Regular.woff2") format("woff2");
}

@font-face {
  font-family: "Noto Serif JP";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/wp-content/themes/snow-monkey/assets/fonts/NotoSerifJP-Bold.woff2") format("woff2");
}

/* ============================
* デザイントークン
*
* 変数名は Snow Monkey に合わせている。将来 Snow Monkey へ移行する場合、
* この :root ブロックを削除すればテーマ側の定義がそのまま使われる。
* ========================= */
:root {
  --_color-black: #111;
  --_color-white: #fff;
  --_color-text: #333;
  --_light-color-text: #666;
  --_lighter-color-text: #888;
  --_lightest-color-text: #919191;
  --_color-gray: #999;
  --_light-color-gray: #ccc;
  --_lighter-color-gray: #eee;
  --_lightest-color-gray: #f7f7f7;
  --_dark-color-gray: #666;
  --_darker-color-gray: #444;
  --_darkest-color-gray: #3b3b3b;

  --accent-color: #a4901f;
  --dark-accent-color: #4e450f;
  --light-accent-color: #ddc74c;
  --lighter-accent-color: #e8d986;
  --lightest-accent-color: #ebde95;
  --sub-accent-color: #5b0018;
  --dark-sub-accent-color: #000000;
  --light-sub-accent-color: #c10033;
  --lighter-sub-accent-color: #ff0748;
  --lightest-sub-accent-color: #ff1955;

  /* 明るい面に置くテキストリンクの色。コーポレートサイトはリンクの既定色を
     アクセントの金にしているが、金のままでは #eeeeee の上でコントラスト比が
     2.75:1 しかなく WCAG AA の 4.5:1 に届かない。金の明度を 70% に落として
     5.02:1 を確保している。金の印象を強めたいときはこの値だけを上げる。
     エディターのパレットには出さないため theme.json との同期対象ではない。 */
  --_link-color-on-light: #736516;

  /* 暗い面に置く控えめな小さい文字の色。背景 #333 の上で 4.5:1 を満たす
     最も薄い灰色。既存の --_color-gray (#999) は 4.43:1 でわずかに足りない。
     レンダリングの丸めで基準を割らないよう 4.60:1 にしている。
     エディターのパレットには出さないため theme.json との同期対象ではない。 */
  --_color-text-muted-on-dark: #9c9c9c;

  /* 明るい面でもダークな面でも使える細い罫と控えめな文字の色。currentColor
     から作るため、背景がどちらでも文字色に追従する。カスタムプロパティは
     使う場所で解決されるので、:root に置いても各要素の色で計算される。
     エディターのパレットには出さないため theme.json との同期対象ではない。 */
  --_hairline-color: color-mix(in srgb, currentColor 25%, transparent);
  --_muted-color: color-mix(in srgb, currentColor 70%, transparent);

  /* 投稿（記事詳細・記事一覧・カテゴリーアーカイブ）の本文カラム幅。
     832px で 1 行あたり約 49 文字。u-slim-width（46rem・約 43 文字）より
     広げて写真を大きく見せるが、日本語の読みやすさの目安（50 文字前後）は
     超えないようにしている。記事とタイトル帯と一覧の左右をこの値で揃える。
     エディターのパレットには出さないため theme.json との同期対象ではない。 */
  --_entry--content-width: 52rem;

  --wp--preset--color--sm-accent: var(--accent-color);
  --wp--preset--color--sm-sub-accent: var(--sub-accent-color);
  --wp--preset--color--sm-text: var(--_color-text);
  --wp--preset--color--sm-text-alt: var(--_color-white);
  --wp--preset--color--sm-lightest-gray: var(--_lightest-color-gray);
  --wp--preset--color--sm-lighter-gray: var(--_lighter-color-gray);
  --wp--preset--color--sm-light-gray: var(--_light-color-gray);
  --wp--preset--color--sm-gray: var(--_color-gray);
  --wp--preset--color--sm-dark-gray: var(--_dark-color-gray);
  --wp--preset--color--sm-darker-gray: var(--_darker-color-gray);
  --wp--preset--color--sm-darkest-gray: var(--_darkest-color-gray);

  --wp--preset--font-size--sm-xs: 0.8rem;
  --wp--preset--font-size--sm-s: 0.88rem;
  --wp--preset--font-size--sm-m: 1rem;
  --wp--preset--font-size--sm-l: 1.14rem;
  --wp--preset--font-size--sm-xl: 1.33rem;
  --wp--preset--font-size--sm-2-xl: 1.6rem;
  --wp--preset--font-size--sm-3-xl: 2rem;
  --wp--preset--font-size--sm-4-xl: 2.66rem;
  --wp--preset--font-size--sm-5-xl: 4rem;

  --font-family: "Noto Serif JP", serif;
  --_space: 1.8rem;
  --_half-leading: 0.4;
  --_global--font-size-px: 16px;
  --_global--line-height: calc(1 + var(--_half-leading) * 2);
  --_global--container-max-width: 1280px;
  --_global--container-margin: var(--_s-1);

  /* ----------------------------
  * 余白と文字サイズの算出体系（Snow Monkey と同一）
  *
  * 余白は調和数列。--_space-unitless を起点に --_ms* → --_s* を導き、
  * --_margin* と --_padding* がそれを参照する。--_s2 以降は 360px〜1280px の
  * 間で流動する clamp になる。
  *
  * 文字サイズは 8 / (8 - レベル) rem。レベル -2〜6 が sm-xs〜sm-5-xl と一致する。
  * 行間は文字が大きくなるほど縮む（傾き -0.16666）。算出は下の * ルール。
  *
  * コンポーネント側では生の値を書かず、--_padding* / --_margin* /
  * --_font-size-level を使う。これでコーポレートサイトと数値が一致する。
  * ------------------------- */
  --_space-unitless: 1.8;
  --_margin-scale: 1;
  --_harmonic-sequence-base: 8;
  --_min-harmonic-sequence-base: 9;
  --_max-harmonic-sequence-base: var(--_harmonic-sequence-base);
  --_line-height-slope: -0.16666;
  --_font-size-level: 0;

  --_ms-2: calc(var(--_space-unitless) / 3 * 1);
  --_ms-1: calc(var(--_space-unitless) / 3 * 2);
  --_ms0: 0rem;
  --_ms1: calc(var(--_space-unitless) / 3 * 3);
  --_ms2: calc(var(--_space-unitless) / 3 * 5);
  --_ms3: calc(var(--_space-unitless) / 3 * 8);
  --_ms4: calc(var(--_space-unitless) / 3 * 13);
  --_ms5: calc(var(--_space-unitless) / 3 * 21);
  --_ms6: calc(var(--_space-unitless) / 3 * 34);
  --_ms7: calc(var(--_space-unitless) / 3 * 55);

  --_s-2: calc(var(--_ms-2) * 1rem);
  --_s-1: calc(var(--_ms-1) * 1rem);
  --_s0: 0rem;
  --_s1: calc(var(--_ms1) * 1rem);
  --_s2: clamp(calc(var(--_ms1) + var(--_ms2) * 0.28125) * 1rem, calc(calc(-22.5 * calc((var(--_ms2) - calc(var(--_ms1) + var(--_ms2) * 0.28125)) / (57.5)) + calc(var(--_ms1) + var(--_ms2) * 0.28125)) * 1rem + calc((var(--_ms2) - calc(var(--_ms1) + var(--_ms2) * 0.28125)) / (57.5)) * 100vw), var(--_ms2) * 1rem);
  --_s3: clamp(calc(var(--_ms1) + var(--_ms3) * 0.28125) * 1rem, calc(calc(-22.5 * calc((var(--_ms3) - calc(var(--_ms1) + var(--_ms3) * 0.28125)) / (57.5)) + calc(var(--_ms1) + var(--_ms3) * 0.28125)) * 1rem + calc((var(--_ms3) - calc(var(--_ms1) + var(--_ms3) * 0.28125)) / (57.5)) * 100vw), var(--_ms3) * 1rem);
  --_s4: clamp(calc(var(--_ms1) + var(--_ms4) * 0.28125) * 1rem, calc(calc(-22.5 * calc((var(--_ms4) - calc(var(--_ms1) + var(--_ms4) * 0.28125)) / (57.5)) + calc(var(--_ms1) + var(--_ms4) * 0.28125)) * 1rem + calc((var(--_ms4) - calc(var(--_ms1) + var(--_ms4) * 0.28125)) / (57.5)) * 100vw), var(--_ms4) * 1rem);
  --_s5: clamp(calc(var(--_ms1) + var(--_ms5) * 0.28125) * 1rem, calc(calc(-22.5 * calc((var(--_ms5) - calc(var(--_ms1) + var(--_ms5) * 0.28125)) / (57.5)) + calc(var(--_ms1) + var(--_ms5) * 0.28125)) * 1rem + calc((var(--_ms5) - calc(var(--_ms1) + var(--_ms5) * 0.28125)) / (57.5)) * 100vw), var(--_ms5) * 1rem);
  --_s6: clamp(calc(var(--_ms1) + var(--_ms6) * 0.28125) * 1rem, calc(calc(-22.5 * calc((var(--_ms6) - calc(var(--_ms1) + var(--_ms6) * 0.28125)) / (57.5)) + calc(var(--_ms1) + var(--_ms6) * 0.28125)) * 1rem + calc((var(--_ms6) - calc(var(--_ms1) + var(--_ms6) * 0.28125)) / (57.5)) * 100vw), var(--_ms6) * 1rem);
  --_s7: clamp(calc(var(--_ms1) + var(--_ms7) * 0.28125) * 1rem, calc(calc(-22.5 * calc((var(--_ms7) - calc(var(--_ms1) + var(--_ms7) * 0.28125)) / (57.5)) + calc(var(--_ms1) + var(--_ms7) * 0.28125)) * 1rem + calc((var(--_ms7) - calc(var(--_ms1) + var(--_ms7) * 0.28125)) / (57.5)) * 100vw), var(--_ms7) * 1rem);

  --_margin-2: calc(var(--_s-2) * var(--_margin-scale));
  --_margin-1: calc(var(--_s-1) * var(--_margin-scale));
  --_margin0: 0rem;
  --_margin1: calc(var(--_s1) * var(--_margin-scale));
  --_margin2: calc(var(--_s2) * var(--_margin-scale));
  --_margin3: calc(var(--_s3) * var(--_margin-scale));
  --_margin4: calc(var(--_s4) * var(--_margin-scale));
  --_margin5: calc(var(--_s5) * var(--_margin-scale));
  --_margin6: calc(var(--_s6) * var(--_margin-scale));
  --_margin7: calc(var(--_s7) * var(--_margin-scale));

  --_padding-2: var(--_s-2);
  --_padding-1: var(--_s-1);
  --_padding0: 0rem;
  --_padding1: var(--_s1);
  --_padding2: var(--_s2);
  --_padding3: var(--_s3);
  --_padding4: var(--_s4);
  --_padding5: var(--_s5);
  --_padding6: var(--_s6);
  --_padding7: var(--_s7);

  --_global--border-radius: 3px;
  --_global--transition-duration: 0.2s;
  --_global--transition-function-timing: ease-out;
  --_global--transition-delay: 0s;

  --_header-background-color: rgba(0, 0, 0, 0.85);
  --_footer-background-color: #24201f;

  /* 投稿の表のセルの背景。本文の地色（--_footer-background-color / #24201f）
     を挟んで、見出しセルを沈めて本文セルを浮かせる。白文字とのコントラストは
     見出しセルが 20.4:1、本文セルが 13.1:1 でどちらも AAA を満たす。

     目次（.c-toc）も同じ2色を参照している。表と目次の色を揃えるのが
     意図なので、値を変えると両方が動く。切り離したくなったら目次用の
     トークンを別に足す。

     エディターのパレットには出さないため theme.json との同期対象ではない。 */
  --_entry--table-th-background-color: #050505;
  --_entry--table-td-background-color: #33302f;
}

@media (min-width: 1024px) {
  :root {
    --_global--container-margin: var(--_s1);
  }
}

/* ============================
* リセットとベース
* ========================= */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* 文字サイズと行間の算出。--_font-size-level を指定した要素で参照する。
   カスタムプロパティは継承するため、Snow Monkey と同じく * に置く。 */
* {
  --_font-size: calc(calc(var(--_harmonic-sequence-base) / (var(--_harmonic-sequence-base) - var(--_font-size-level))) * 1rem);
  --_line-height: clamp(1.1, var(--_line-height-slope) * calc(var(--_harmonic-sequence-base) / (var(--_harmonic-sequence-base) - var(--_font-size-level))) + 1 + 2 * var(--_half-leading) + -1 * var(--_line-height-slope), 2 * var(--_half-leading) + 1);
  --_fluid-font-size: clamp(1rem * calc(var(--_min-harmonic-sequence-base) / (var(--_min-harmonic-sequence-base) - var(--_font-size-level))), calc(calc(-22.5 * calc((calc(var(--_max-harmonic-sequence-base) / (var(--_max-harmonic-sequence-base) - var(--_font-size-level))) - calc(var(--_min-harmonic-sequence-base) / (var(--_min-harmonic-sequence-base) - var(--_font-size-level)))) / (57.5)) + calc(var(--_min-harmonic-sequence-base) / (var(--_min-harmonic-sequence-base) - var(--_font-size-level)))) * 1rem + calc((calc(var(--_max-harmonic-sequence-base) / (var(--_max-harmonic-sequence-base) - var(--_font-size-level))) - calc(var(--_min-harmonic-sequence-base) / (var(--_min-harmonic-sequence-base) - var(--_font-size-level)))) / (57.5)) * 100vw), 1rem * calc(var(--_max-harmonic-sequence-base) / (var(--_max-harmonic-sequence-base) - var(--_font-size-level))));
}

html {
  font-size: var(--_global--font-size-px);
  letter-spacing: 0.05rem;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

html[data-drawer-opened="true"],
html[data-drawer-opened="true"] body {
  overflow: hidden;
}

body {
  margin: 0;
  background-color: #fefefe;
  color: var(--_color-text);
  font-family: var(--font-family);
  font-size: 1rem;
  line-height: var(--_global--line-height);
}

img,
svg,
video {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}

/* ボタンは文字色を変えず明度だけを変える。除外しないと、金色のボタンで
   文字が背景に溶けて読めなくなる（CTA の電話ボタンで発生していた）。
   wp-element-button はコアのボタンブロックと WooCommerce のブロック版
   ボタンの両方に付くため、これ1つで両方を除外できる。 */
a:not(.wp-element-button):hover {
  color: var(--accent-color);
}

h1, h2, h3, h4, h5, h6 {
  font-weight: 400;
  line-height: 1.4;
}

ul, ol {
  padding-left: 1.5em;
}

input[type="email"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="text"],
input[type="url"],
textarea,
select {
  max-width: 100%;
  padding: 0.5em 0.7em;
  border: 1px solid var(--_light-color-gray);
  border-radius: var(--_global--border-radius);
  background-color: var(--_color-white);
  color: var(--_color-text);
  font-family: inherit;
  font-size: 16px;
}

:focus-visible {
  outline: 2px solid var(--accent-color);
  outline-offset: 2px;
}

/* ============================
* ユーティリティ
* ========================= */
.c-container {
  width: 100%;
  max-width: var(--_global--container-max-width);
  margin-inline: auto;
  padding-inline: var(--_global--container-margin);
}

.u-slim-width {
  max-width: 46rem;
  margin-inline: auto;
}

/* 暗い画像や写真の上に文字を置くときの可読性確保。ブロックの
   「追加 CSS クラス」に u-text-shadow と入力して使う。text-shadow は
   継承するため、カバーブロック側に付ければ中の文字すべてに効く。
   CTA のように文字の背後に色面がある場所には付けない（濁って見える）。
   Snow Monkey に同名のユーティリティはないため命名の衝突はない。 */
.u-text-shadow {
  text-shadow: 0px 0px 10px rgba(0, 0, 0, 1);
}

/* 列の多い表を横スクロールで読ませる。ブロックの「追加 CSS クラス」に
   u-scrollable と入力して使う。付けたブロックだけに効く。

   コアの .wp-block-table は overflow-x: auto を持っているのでスクロールの
   受け皿はある。効かないのは .wp-block-table table の width: 100% が表を
   枠の幅に押し込めるためで、狭い画面では1列あたりの文字が詰まって折り返す。
   表の幅を内容なりに広げてはみ出させることで、コアのスクロールが実際に
   働くようになる。

   セレクターに .wp-block-table を重ねているのは、コアの
   .wp-block-table table と詳細度が並ぶのを避けるため。コアのブロック CSS が
   テーマの style.css より後に出力されても勝てるようにしている。

   キーボードでもスクロールできるよう、functions.php の
   ninoichi_store_scrollable_block() が tabindex と role を付与する。 */
.wp-block-table.u-scrollable > table {
  width: auto;
  min-width: 100%;
}

.wp-block-table.u-scrollable > table :is(th, td) {
  white-space: nowrap;
}

/* スクロールできることが分かるよう、細いスクロールバーを常に見せる。
   currentColor から作るので明るい面でもダークな面でも成立する。
   iOS Safari はスクロールバーを自動で隠すため、そこでは見えない。 */
.u-scrollable {
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, currentColor 40%, transparent) transparent;
}

.screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  border: 0;
  white-space: nowrap;
}

.c-skip-link {
  position: absolute;
  top: -100px;
  left: 0;
  z-index: 100;
  padding: 0.5em 1em;
  background-color: var(--_color-white);
  color: var(--_color-text);
}

.c-skip-link:focus-visible {
  top: 0;
}

/* ============================
* レイアウト
* ========================= */
.l-body {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

.l-contents {
  flex: 1 0 auto;
  overflow-x: clip;
}

.l-contents__inner {
  max-width: var(--_global--container-max-width);
  margin-inline: auto;
  padding-block: calc(var(--_space) * 2);
  padding-inline: var(--_global--container-margin);
}

/* ============================
* header
* ========================= */
.l-header {
  position: sticky;
  top: 0;
  z-index: 20;
  background-color: var(--_header-background-color);
  color: var(--_color-white);
  backdrop-filter: blur(2px);
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}

/* ガターは c-row--margin-s（1.2rem）→ c-row--lg-margin（1.8rem）と同じ。 */
.l-1row-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--_margin-1);
  padding-block: var(--_padding-2);
}

@media (min-width: 1024px) {
  .l-1row-header__inner {
    gap: var(--_margin1);
  }

  /* 1024px 以上の追加余白はロゴ側だけに付く。コーポレートサイトは
     .l-1row-header__branding にしか指定がなく、ナビの高さには影響しない。
     コンテナ側に付けるとヘッダー全体が 1 段高くなるため分けている。 */
  .c-site-branding {
    padding-block: var(--_padding-2);
  }
}

.c-site-branding__title {
  margin: 0;
  font-size: 1rem;
  line-height: 1;
}

.c-site-branding__title a {
  display: inline-block;
  text-decoration: none;
}

.c-site-branding__title .custom-logo {
  width: 81px;
}

@media (min-width: 64em) {
  .c-site-branding__title .custom-logo {
    width: 101px;
  }
}

/* ============================
* グローバルナビ
* ========================= */
.p-global-nav {
  display: none;
}

@media (min-width: 1024px) {
  .p-global-nav {
    display: block;
  }
}

.c-navbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: nowrap;
  margin: 0;
  padding: 0;
  list-style: none;
}

.c-navbar__item {
  position: relative;
  display: flex;
  flex: 0 1 auto;
}

/* 項目の間隔はガターではなくリンクの余白で作る。コーポレートサイトの
   .p-global-nav .c-navbar__item > a { padding: var(--_padding-1) } と同じ。 */
.c-navbar__item > a {
  --_font-size-level: -1;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 auto;
  padding: var(--_padding-1);
  font-size: var(--_font-size);
  font-weight: 700;
  line-height: var(--_line-height);
  text-align: center;
  text-decoration: none;
  transition: color var(--_global--transition-duration) var(--_global--transition-function-timing);
}

.c-navbar__item > a:hover,
.c-navbar__item.current-menu-item > a {
  color: var(--accent-color);
}

.c-navbar .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1;
  min-width: 14rem;
  margin: 0;
  padding: 0.5rem 0;
  list-style: none;
  background-color: var(--_header-background-color);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--_global--transition-duration) var(--_global--transition-function-timing),
              visibility var(--_global--transition-duration) var(--_global--transition-function-timing);
}

.c-navbar__item:hover > .sub-menu,
.c-navbar__item:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
}

.c-navbar .sub-menu a {
  display: block;
  padding: 0.4em 1.2em;
  text-decoration: none;
}

/* ============================
* ハンバーガーボタン
* ========================= */
.c-hamburger-btn {
  display: inline-block;
  padding: 0;
  border: none;
  background-color: transparent;
  color: inherit;
  cursor: pointer;
  line-height: 1;
  text-align: center;
  vertical-align: middle;
}

@media (min-width: 1024px) {
  .c-hamburger-btn {
    display: none;
  }
}

.c-hamburger-btn__bars {
  position: relative;
  display: inline-block;
  width: 22px;
  height: 16px;
  margin: 3px auto;
}

.c-hamburger-btn__bar {
  position: absolute;
  left: 0;
  right: 0;
  display: block;
  height: 2px;
  background-color: currentColor;
  transition: transform var(--_global--transition-duration) var(--_global--transition-function-timing) var(--_global--transition-delay),
              top var(--_global--transition-duration) var(--_global--transition-function-timing) var(--_global--transition-delay);
}

.c-hamburger-btn__bar:first-of-type {
  top: 0;
}

.c-hamburger-btn__bar:nth-of-type(2) {
  top: 7px;
}

.c-hamburger-btn__bar:nth-of-type(3) {
  top: 14px;
}

.c-hamburger-btn[aria-expanded="true"] .c-hamburger-btn__bar:first-of-type,
.c-hamburger-btn[aria-expanded="true"] .c-hamburger-btn__bar:nth-of-type(3) {
  top: 7px;
}

.c-hamburger-btn[aria-expanded="true"] .c-hamburger-btn__bar:first-of-type {
  transform: rotate(45deg);
}

.c-hamburger-btn[aria-expanded="true"] .c-hamburger-btn__bar:nth-of-type(2) {
  background-color: transparent;
}

.c-hamburger-btn[aria-expanded="true"] .c-hamburger-btn__bar:nth-of-type(3) {
  transform: rotate(-45deg);
}

.c-hamburger-btn__label {
  display: block;
  font-family: "Arial Narrow", Verdana, sans-serif;
  font-size: 8px;
  line-height: 1;
}

/* ============================
* ドロワー
* ========================= */
/* コーポレートサイトのドロワーはアクセントカラーが背景。文字は白でレベル -1。 */
.c-drawer {
  --_font-size-level: -1;
  position: fixed;
  top: 0;
  bottom: 0;
  left: -100%;
  z-index: 30;
  width: min(20rem, 80%);
  background-color: var(--wp--preset--color--sm-accent);
  color: var(--_color-white);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
  visibility: hidden;
  backface-visibility: hidden;
  transition: left var(--_global--transition-duration) ease-in,
              visibility var(--_global--transition-duration) ease-in;
}

.c-drawer[aria-hidden="false"] {
  left: 0;
  visibility: visible;
  transition-timing-function: ease-out;
}

.c-drawer__inner {
  height: 100%;
  padding: var(--_space) var(--_padding-1);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.c-drawer__focus-point {
  width: 0 !important;
  height: 0 !important;
  opacity: 0 !important;
}

.c-drawer__menu,
.c-drawer .sub-menu {
  margin: 0;
  padding: 0;
  list-style: none;
}

.c-drawer__menu > :not(:first-child) {
  margin-top: var(--_margin-1);
}

.c-drawer__item > a {
  display: block;
  text-decoration: none;
}

.c-drawer .sub-menu {
  margin-top: var(--_margin-1);
  margin-left: var(--_margin-1);
}

.c-drawer .sub-menu > * + * {
  margin-top: var(--_margin-1);
}

.c-drawer__menu + .c-drawer__menu {
  margin-top: var(--_space);
  padding-top: var(--_space);
  border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.c-drawer-close-zone {
  position: fixed;
  inset: 0;
  z-index: 29;
  background-color: rgba(0, 0, 0, 0.6);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--_global--transition-duration) var(--_global--transition-function-timing),
              visibility var(--_global--transition-duration) var(--_global--transition-function-timing);
}

.c-drawer-close-zone[aria-hidden="false"] {
  opacity: 1;
  visibility: visible;
}

/* ============================
* 検索フォーム
* ========================= */
.p-search-form .c-input-group {
  display: flex;
}

.p-search-form .c-input-group__field {
  flex: 1 1 auto;
}

.p-search-form .c-input-group__field input {
  width: 100%;
  border-radius: var(--_global--border-radius) 0 0 var(--_global--border-radius);
}

.p-search-form .c-input-group__btn {
  flex: 0 0 auto;
  padding-inline: 0.9em;
  border: none;
  border-radius: 0 var(--_global--border-radius) var(--_global--border-radius) 0;
  background-color: var(--accent-color);
  color: var(--_color-white);
  cursor: pointer;
  font-family: inherit;
}

/* ドロワーの背景がアクセントカラーになったため、検索ボタンが埋没する。
   コーポレートサイトはドロワー内の検索を隠しているので参考にできない。
   同系の暗いアクセントに置き換えてコントラストを確保する。 */
.c-drawer .c-input-group__btn {
  background-color: var(--dark-accent-color);
}

/* ============================
* カートバッジ
* ========================= */
.c-cart-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.6em;
  height: 1.6em;
  margin-left: 0.4em;
  padding-inline: 0.4em;
  border-radius: 999px;
  background-color: var(--accent-color);
  color: var(--_color-white);
  font-size: 0.7em;
  font-weight: 700;
  line-height: 1;
  vertical-align: middle;
}

.c-cart-count[data-has-items="false"] {
  display: none;
}

/* ドロワーは背景がアクセントカラーなので、同じ色のバッジは丸が消えて
   数字だけが浮く。暗い側へ反転させる。ヘッダー（暗い背景に金の丸）と
   ドロワー（金の背景に暗い丸）で、地と図の関係が揃う。

   検索ボタンと同じ --dark-accent-color も候補だったが、背景との比が
   3.02:1 しかない。バッジは 0.7em の小さい丸なので、5.06:1 を確保できる
   --_footer-background-color を使う。検索ボタンは面が大きく、
   3.02:1 でも判別できるためそのままにしている。
   白文字とのコントラストは 16.14:1。 */
.c-drawer .c-cart-count {
  background-color: var(--_footer-background-color);
}

.c-icon {
  width: 1.15em;
  height: 1.15em;
  margin-right: 0.35em;
  vertical-align: -0.2em;
}

/* ============================
* ページヘッダー
* ========================= */
.c-page-header {
  padding-block: var(--_padding2);
  background-color: var(--_footer-background-color);
  color: var(--_color-white);
  text-align: center;
}

.c-page-header__title {
  margin: 0;
  color: var(--_color-white);
  font-size: var(--wp--preset--font-size--sm-2-xl);
}

/* ============================
* パンくず
*
* クラス名と実装値はコーポレートサイト（Snow Monkey）と同じ。
* 区切りの矢印は文字ではなく border を45度回転させて描いている。
* ========================= */
.p-breadcrumbs-wrapper {
  padding-block: var(--_padding-2);
}

.c-breadcrumbs {
  --_font-size-level: -2;
  margin: 0;
  padding-left: 0;
  list-style: none;
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

.c-breadcrumbs__item {
  display: inline;
}

.c-breadcrumbs__item:nth-child(n + 2)::before {
  content: "";
  display: inline-block;
  width: 0.4em;
  height: 0.4em;
  margin: 0.45em 0.45em 0.15em 0.15em;
  border-color: currentcolor;
  border-style: solid;
  border-width: 1px 1px 0 0;
  transform: rotate(45deg);
}

.c-breadcrumbs a {
  text-decoration: none;
}

.c-breadcrumbs a:hover {
  text-decoration: underline;
}

/* ============================
* 投稿
* ========================= */
.c-entry + .c-entry {
  margin-top: calc(var(--_space) * 1.5);
  padding-top: calc(var(--_space) * 1.5);
  border-top: 1px solid var(--_lighter-color-gray);
}

.c-entry__title {
  margin: 0 0 0.6rem;
  font-size: var(--wp--preset--font-size--sm-l);
}

.c-entry__title a {
  text-decoration: none;
}

.c-entry__content > * + * {
  margin-top: var(--_space);
}

/* 先頭・末尾が全幅のブロックのときは、本文領域の上下余白がヘッダーや
   CTA との隙間として見えてしまうため取り除く。
   ブロック側の余白はエディターでインラインスタイルとして出力され、
   負のマージンでは打ち消せない（実際に末尾のグループは margin-bottom: 0 が
   インラインで付いている）。そのため :has() で親の余白そのものを外す。

   対象は alignfull のみ。alignwide は左右に余白が残るので、上下の余白を
   外すと単にヘッダーへ詰まって見えるだけになる。実際にカートと購入手続きの
   ブロックが alignwide を持つため、両ページで見出しと内容が接していた。 */
.l-contents__inner:has(.c-entry__content > .alignfull:first-child) {
  padding-top: 0;
}

.l-contents__inner:has(.c-entry__content > .alignfull:last-child) {
  padding-bottom: 0;
}

/* ただし投稿は本文の後にページ送りが続くため、下余白を戻す。上の指定は
   トップページのように本文が最後まで続く画面を想定したもので、投稿へ
   そのまま効くとページ送りが CTA セクションへ密着する。

   末尾を区切りブロックで締める記事はこの状態になりやすい。空の段落を
   置いて last-child を外す回避もできるが、意味を持たないブロックに
   体裁を依存させないため CSS 側で解いている。 */
.single-post .l-contents__inner:has(.c-entry__content > .alignfull:last-child) {
  padding-bottom: calc(var(--_space) * 2);
}

/* トップページを固定ページで組むため、幅広・全幅ブロックを効かせる */
.c-entry__content > .alignwide {
  max-width: none;
  margin-inline: calc(var(--_global--container-margin) * -1);
}

.c-entry__content > .alignfull {
  max-width: none;
  margin-inline: calc(50% - 50vw);
}

/* 幅は theme.json の contentSize / wideSize に任せ、左右の余白だけ確保する */
.c-entry__content > .alignfull > .wp-block-group__inner-container,
.c-entry__content > .alignfull > .wp-block-cover__inner-container,
.l-footer-cta .wp-block-cover__inner-container {
  padding-inline: var(--_global--container-margin);
}

/* 全幅のグループを背景色付きの帯として使うと、WordPress の
   .is-layout-constrained が中身を contentSize（736px）に絞るため、
   本文の他のブロックと左右が揃わない。
   帯の左右余白をグループ側に持たせ、中身の最大幅を l-contents__inner の
   内側と同じ寸法にすることで、商品コレクションと左右が一致する。 */
.c-entry__content > .wp-block-group.alignfull {
  padding-inline: var(--_global--container-margin);
}

.c-entry__content > .wp-block-group.alignfull > :not(.alignfull):not(.alignwide) {
  max-width: calc(var(--_global--container-max-width) - var(--_global--container-margin) * 2);
}

/* この装飾は WooCommerce の商品名（h2.wp-block-post-title）にも乗るため、
   assets/css/woocommerce.css で打ち消している。値を変えるときは両方見る。 */
.c-entry__content h2 {
  padding: calc(var(--_space) * 0.25) calc(var(--_space) * 0.25) calc(var(--_space) * 0.25) calc(var(--_space) * 0.5);
  /* border-left: 1px solid var(--accent-color); */
  background-color: var(--_lightest-color-gray);
  font-size: var(--wp--preset--font-size--sm-xl);
}

.c-entry__content h3 {
  padding: 0 0 calc(var(--_space) * 0.25);
  border-bottom: 1px solid var(--_lighter-color-gray);
  font-size: var(--wp--preset--font-size--sm-l);
}

/* Google マップの埋め込み。カスタム HTML ブロックに、Google マップの
   「共有 > 地図を埋め込む」でコピーしたコードを貼って使う。

   コードは width="600" height="450" の固定値で、スマホでは本文の幅から
   はみ出す。幅を本文に合わせ、高さは縦横比で決める。height: auto だけでは
   iframe は既定の 150px になるため、aspect-ratio が要る。
   スマホは地図を操作しやすいよう縦に余裕のある 4:3、640px 以上は 16:9。

   判定は src で行う。www.google.com/maps/embed（現行の埋め込みコード）と
   maps.google.com/maps（旧形式）のどちらも "google.com/maps" を含む。 */
.c-entry__content iframe[src*="google.com/maps"] {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  border: 0;
}

@media (min-width: 640px) {
  .c-entry__content iframe[src*="google.com/maps"] {
    aspect-ratio: 16 / 9;
  }
}

/* ============================
* ボタンブロック
*
* コーポレートサイトは Snow Monkey Blocks の .smb-btn を使っているが、
* こちらはコアのボタンブロックで同じ見た目になるよう寄せている。
* エディターで色を指定した場合はそちらが優先される。
* ========================= */
.wp-block-button__link {
  padding: calc(var(--_space) * 0.4) calc(var(--_space) * 0.8);
  border-radius: var(--_global--border-radius);
  background-color: var(--accent-color);
  color: var(--_color-white);
  font-family: inherit;
  text-decoration: none;
  transition: filter var(--_global--transition-duration) var(--_global--transition-function-timing);
}

.wp-block-button__link:hover,
.wp-block-button__link:focus-visible {
  filter: brightness(90%);
}

/* ============================
* フッター上部の CTA エリア
*
* 中身はウィジェットエリアにブロックで組む。カバーブロックの全幅指定を
* 殺さないよう、幅の制約と左右の余白はここでは付けない。
*
* 以下はコーポレートサイトの CTA（Snow Monkey Blocks の
* section-with-bgimage + items + btn-box）の見た目へ寄せるための調整。
* ========================= */
.l-footer-cta > .c-widget + .c-widget {
  margin-top: 0;
}

/* コーポレートサイトは暗いボックス自体が u-slim-width（46rem）に収まる。
   グループブロックは is-layout-constrained なので中身だけが絞られ、
   ボックスは全幅に広がってしまうため、ボックスそのものに幅を与える。 */
.l-footer-cta .wp-block-cover__inner-container > .wp-block-group {
  max-width: 46rem;
  margin-inline: auto;
}

/* コーポレートサイトの items ブロックは data-lg-columns="2" のため
   1024px 未満は 1 カラム。コアのカラムブロックは 782px で切り替わるので
   折り返し幅を揃える。コア側が !important を使っているため上書きにも必要。 */
@media (max-width: 1023px) {
  .l-footer-cta .wp-block-columns {
    flex-wrap: wrap !important;
  }

  .l-footer-cta .wp-block-column {
    flex-basis: 100% !important;
  }
}

/* ボタンはカラムいっぱいに広がる。左右の逃げはコーポレートサイトの
   btn-box が持つコンテナ余白と同じ値にしている。 */
.l-footer-cta .wp-block-buttons {
  padding-inline: var(--_global--container-margin);
}

.l-footer-cta .wp-block-button {
  flex: 1 1 100%;
}

.l-footer-cta .wp-block-button__link {
  display: block;
  width: 100%;
}

/* 電話番号のボタンに受話器アイコンを付ける。コーポレートサイトと同じ画像を
   ストアのメディアライブラリから参照している（白・透過の 256px PNG）。
   コアのボタンブロックはラベル用の要素を持たないため、コーポレートサイトの
   「ラベルの左 32px に絶対配置」は再現できない。アイコンと番号を1組として
   中央に置く方式にしてあり、番号の位置が 16px ほど右になる。
   inc/icons.php ではなくここで定義しているのは、ブロックの中身に
   PHP からアイコンを差し込めないため。 */
.l-footer-cta .wp-block-button__link[href^="tel:"]::before {
  content: "";
  display: inline-block;
  width: 20px;
  height: 20px;
  margin-right: 12px;
  background-image: url("/onlinestore/wp-content/uploads/2026/08/tel-icon.png");
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  vertical-align: -0.3em;
}

/* ============================
* フッター
* ========================= */
.l-footer {
  border-top: 1px solid var(--wp--preset--color--sm-lighter-gray);
  overflow: hidden;
  background-color: var(--_footer-background-color);
  color: var(--_color-white);
}

.l-footer-widget-area {
  padding-block: var(--_padding2);
}

/* コーポレートサイトはウィジェットエリアを絞っているため本文が一段小さい。
   Snow Monkey の [data-is-slim-widget-area="true"] .c-widget と同じ扱い。 */
.l-footer-widget-area .c-widget {
  --_font-size-level: -1;
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

.l-footer-widget-area a {
  color: var(--_color-white);
  text-decoration: none;
  transition: all 0.3s ease 0s;
}

.l-footer-widget-area a:hover {
  color: var(--accent-color);
  opacity: 0.6;
}

/* コーポレートサイトはウィジェットエリアを 46rem（u-slim-width）に絞り、
   その中をカラムブロックで2分割している。同じ幅・同じ間隔・同じ折り返し幅に揃える。
   gap の 2rem と 782px はコアのカラムブロックの既定値。 */
.l-footer-widget-area__inner {
  display: grid;
  gap: 2rem;
  max-width: 46rem;
  margin-inline: auto;
}

@media (min-width: 782px) {
  .l-footer-widget-area__inner {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ナビゲーションメニューウィジェット・ページリストブロックのリスト */
.l-footer-widget-area .menu,
.l-footer-widget-area .wp-block-page-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.l-footer-widget-area .menu li + li,
.l-footer-widget-area .wp-block-page-list li + li {
  margin-top: 0.6em;
}

.l-footer-widget-area .wp-social-link:hover {
  color: var(--accent-color);
}

/* コーポレートサイトのフッター見出し（MENU）は、金色・左寄せ・罫線なしの
   段落で組まれている。ウィジェットタイトルでも同じ見た目になるよう揃える。
   Snow Monkey の「両側に罫線が入る中央寄せ」の変種は使われていない。 */
.c-widget__title {
  --_font-size-level: 0;
  margin: 0 0 var(--_margin-1);
  color: var(--accent-color);
  font-size: var(--_font-size);
  font-weight: 400;
  line-height: var(--_line-height);
}

/* 背景はフッターより明るい #333。Snow Monkey の c-copyright--inverse 相当。 */
.c-copyright {
  --_font-size-level: -1;
  padding-block: var(--_padding-1);
  background-color: var(--wp--preset--color--sm-text);
  color: var(--wp--preset--color--sm-text-alt);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
  text-align: center;
}

/* 帯の中身を段落2つにしたため、ブラウザ既定の上下 1em を打ち消して
   間隔を指定する。

   補助事業の表示は、視認性を担保できる下限のサイズと色で出す指示になっている。
   レベル -2（0.8rem / 12.8px）はテーマのプリセット sm-xs の最小値で、
   日本語はこれより小さくすると漢字の画が潰れる。レベル -3（11.6px）は
   theme.json のプリセットに無く、生の値になるため採らない。
   色は 12.8px なので WCAG AA の大きな文字の基準 3:1 ではなく 4.5:1 が要件。
   これを満たす最も薄い灰色をトークンにしている。 */
.c-copyright__note {
  --_font-size-level: -2;
  margin: 0 0 var(--_margin-2);
  color: var(--_color-text-muted-on-dark);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

.c-copyright__text {
  margin: 0;
}

/* ============================
* ページトップボタン
* ========================= */
.c-page-top {
  position: fixed;
  right: 0;
  bottom: env(safe-area-inset-bottom);
  z-index: 10;
  width: 40px;
  height: 40px;
  background-color: var(--accent-color);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--_global--transition-duration) var(--_global--transition-function-timing),
              visibility var(--_global--transition-duration) var(--_global--transition-function-timing),
              filter var(--_global--transition-duration) var(--_global--transition-function-timing);
}

@media (min-width: 640px) {
  .c-page-top {
    width: 50px;
    height: 50px;
  }
}

html[data-scrolled="true"] .c-page-top {
  opacity: 1;
  visibility: visible;
}

.c-page-top:hover {
  filter: brightness(90%);
}

.c-page-top a {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--_color-white);
}

/* 金色の面の上にあるため、ホバーで文字色を変えると矢印が背景に溶ける。
   矢印は currentColor で描いているので白のまま保つ。
   全体の a:not(.wp-element-button):hover と詳細度が同じなので、
   この指定を基本のリンク指定より前に移動させないこと。 */
.c-page-top a:hover {
  color: var(--_color-white);
}

.c-page-top svg {
  width: 20px;
  height: 20px;
  margin: 0;
}

/* ============================
* トップページのダーク背景
*
* コーポレートサイトは本文背景が #24201f。ストアは商品画像・購入手続き
* フォーム・注文内容テーブルの可読性を優先して #fefefe を既定にしているが、
* トップページだけコーポレートサイトのトーンに合わせる。
* ショップ・商品詳細・カート・購入手続き・マイアカウントは明るいまま。
* 上書きなので、他のコンポーネントより後ろに置いている。
* ========================= */
.home .l-contents {
  background-color: var(--_footer-background-color);
  color: var(--_color-white);
}

/* セクション見出しはコーポレートサイトの smb-section__title と同じトーンに揃える。
   中央寄せ・レベル4の流動サイズ（360px で 1.8rem → 1280px 以上で 2rem）・
   下に金色 1px × 60px の線。テーマ既定の帯（#f7f7f7）と金の左罫は外す。
   商品カードの商品名（.wp-block-post-title）は見出しではないため除外する。 */
.home .c-entry__content h2:not(.wp-block-post-title) {
  --_font-size-level: 4;
  padding: 0;
  border-left: none;
  background-color: transparent;
  font-size: var(--_fluid-font-size);
  line-height: var(--_line-height);
  text-align: center;
}

.home .c-entry__content h2:not(.wp-block-post-title)::after {
  content: "";
  display: block;
  width: 60px;
  height: 1px;
  margin: var(--_margin-1) auto 0;
  background-color: var(--wp--preset--color--sm-accent);
}

/* エディターで背景色を付けたセクション（ご利用ガイドなど）は明るいままなので、
   その内側だけ本文色へ戻す。ボタンを巻き込まないようグループに限定する。 */
.home .c-entry__content .wp-block-group.has-background {
  color: var(--_color-text);
}

/* 同じセクション内のテキストリンクは金で示す。コーポレートサイトが
   a:where(:not(.wp-element-button)) にアクセント色を当てているのと同じ扱い。
   下線はブラウザ既定のまま残し、色に頼らない手がかりを保つ。
   ボタンは面の色を持つため除外する。 */
.home .c-entry__content .wp-block-group.has-background a:not(.wp-element-button) {
  color: var(--_link-color-on-light);
  transition: filter var(--_global--transition-duration) var(--_global--transition-function-timing);
}

/* この規則（クラス5個）はテーマ全体の a:not(.wp-element-button):hover
   （クラス2個）に詳細度で勝つため、ホバーでも色は変わらない。
   反応はボタンと同じ明度の変化で出す。詳細度を下げると金に戻り、
   明るい面で読めなくなるのでセレクターを短くしないこと。 */
.home .c-entry__content .wp-block-group.has-background a:not(.wp-element-button):hover {
  filter: brightness(80%);
}

/* ============================
* ショップ系ページのダーク背景
*
* トップページと同じ扱い。商品一覧・商品カテゴリー・商品詳細はコーポレート
* サイトのトーンに合わせる。カート・購入手続き・マイページは、フォームと
* 注文内容テーブルの可読性を優先して明るい背景のままにする。
* ========================= */
.woocommerce-shop .l-contents,
.tax-product_cat .l-contents,
.tax-product_tag .l-contents,
.single-product .l-contents {
  background-color: var(--_footer-background-color);
  color: var(--_color-white);
}

/* 本文がダークなページでは帯の背景色は不要。コーポレートサイトの
   .c-page-header も背景色を持たず、上下の余白だけでタイトルを区切っている
   （背景画像を設定したページだけ画像とオーバーレイが入る）。 */
.woocommerce-shop .c-page-header,
.tax-product_cat .c-page-header,
.tax-product_tag .c-page-header {
  background-color: transparent;
}

/* ============================
* 読み物の本文
*
* 規約・法規の4ページ・会社概要・投稿の本文で共通の体裁。functions.php が body へ
* is-prose を付ける。縦のリズムと見出しの大きさをコーポレートサイト
* （Snow Monkey）の実測値へ合わせるところまでをここで担う。
*
* 帯・罫・背景といった装飾は共通にできない。白背景の法定ページは薄グレーの
* 帯、ダーク背景の投稿は上下の細罫を使うため、それぞれ下の節で個別に持つ。
* ========================= */

/* 縦のリズム。Snow Monkey の :where(.p-entry-content) と同じ体系を移植した。
   基準は --_margin1（1.8rem）で、係数をカスタムプロパティで切り替える。
   見出しの前を広く取り、見出しと直後の本文は詰める組み方になる。

   結果は h2 上 3.6rem / 下 1.8rem・h3 上 2.7rem / 下 1.8rem・段落間 1.8rem。
   係数はコーポレートサイトの --_h2-margin-top などと同じ値。

   隣接セレクターと要素セレクターは詳細度が並ぶため、記述順が効く。
   h2 → h2 + * → h3 → h3 + * の順は Snow Monkey と同じにしてある。
   この順だと h2 の直後の h3 は 0 ではなく h3 自身の 2.7rem になる。
   逆順にすると h2 と h3 が詰まって階層が読めなくなるので崩さないこと。 */
.is-prose .c-entry__content {
  --_margin-top: 1;
  --_margin-bottom: 0;
  --_h2-margin-top: 2;
  --_h2-margin-bottom: 1;
  --_h3-margin-top: 1.5;
  --_h3-margin-bottom: 1;
  --_h4-margin-top: 1.25;
  --_h4-margin-bottom: 1;
  --_h5-margin-top: 1;
  --_h5-margin-bottom: 0.5;
}

.is-prose .c-entry__content > * {
  margin-top: 0;
  margin-bottom: 0;
}

.is-prose .c-entry__content > :not(:first-child) {
  margin-top: calc(var(--_margin1) * var(--_margin-top));
}

.is-prose .c-entry__content > :not(:last-child) {
  margin-bottom: calc(var(--_margin1) * var(--_margin-bottom));
}

/* 見出しの大きさをコーポレートサイトと同じレベルに合わせる。
   h2 はレベル3（360px で 1.5rem → 1280px 以上で 1.6rem）。
   テーマ既定の h1〜h6 は line-height: 1.4 なので算出値で上書きする。 */
.is-prose .c-entry__content > h2 {
  --_font-size-level: 3;
  --_margin-top: var(--_h2-margin-top);
  --_margin-bottom: var(--_h2-margin-bottom);
  font-size: var(--_fluid-font-size);
  line-height: var(--_line-height);
}

.is-prose .c-entry__content > h2 + * {
  --_margin-top: 0;
}

/* h3 はレベル2（360px で 1.286rem → 1280px 以上で 1.333rem）。 */
.is-prose .c-entry__content > h3 {
  --_font-size-level: 2;
  --_margin-top: var(--_h3-margin-top);
  --_margin-bottom: var(--_h3-margin-bottom);
  font-size: var(--_fluid-font-size);
  line-height: var(--_line-height);
}

.is-prose .c-entry__content > h3 + * {
  --_margin-top: 0;
}

.is-prose .c-entry__content > h4 {
  --_font-size-level: 1;
  --_margin-top: var(--_h4-margin-top);
  --_margin-bottom: var(--_h4-margin-bottom);
  font-size: var(--_fluid-font-size);
  line-height: var(--_line-height);
}

.is-prose .c-entry__content > h4 + * {
  --_margin-top: 0;
}

/* h5・h6 は Snow Monkey ではどちらもレベル0で、本文と同じ大きさになる。
   太さだけで差を出す扱い。テーマ既定では素の h5・h6 が本文より小さく
   見えてしまうため、ここで揃える。 */
.is-prose .c-entry__content > :is(h5, h6) {
  --_font-size-level: 0;
  --_margin-top: var(--_h5-margin-top);
  --_margin-bottom: var(--_h5-margin-bottom);
  font-size: var(--_fluid-font-size);
  font-weight: 700;
  line-height: var(--_line-height);
}

.is-prose .c-entry__content > :is(h5, h6) + * {
  --_margin-top: 0;
}

/* 箇条書きの行間もコーポレートサイトに合わせる。

   .wp-block-list に限定しているのは、ブロックが内部で出力する <li> を
   巻き込まないため。限定しないと商品コレクションの商品カード（<li>）にも
   当たり、グリッドで並ぶ2枚目以降に 0.6rem の上マージンが付いて
   1枚目だけが上へずれる。Snow Monkey も :where(.wp-block-list) に絞っている。 */
.is-prose .c-entry__content .wp-block-list li + li {
  margin-top: var(--_margin-2);
}

/* ============================
* 規約・法規ページ固有
*
* プライバシーポリシー・利用規約・返金および返品ポリシー・特定商取引法に
* 基づく表記の4ページ。共通の体裁は上の is-prose が持ち、ここでは白背景を
* 前提にした装飾と幅だけを足す。本文の背景は条文の可読性を優先して
* #fefefe のまま。コーポレートサイトのダーク背景は踏襲しない。
*
* 会社概要（is-company-page）も白背景の定義表なので、見出しと表の指定を
* :is() で共有する。:is() の詳細度は引数のうち最も高いもの（クラス1つ）に
* なるため、共有前と詳細度は変わらない。幅の指定だけは法定ページに限る。
* ========================= */

/* コーポレートサイトの本文は smb-section の中でコンテナ幅いっぱいに広がる。
   singular.php がテンプレート側で付ける u-slim-width（46rem）を打ち消して
   同じ幅にする。左右の余白はテーマの --_global--container-margin に任せる
   ため、実効幅はコーポレートサイトより 40〜60px ほど狭い。 */
.is-legal-page .c-entry__content.u-slim-width {
  max-width: none;
}

/* 白背景での Snow Monkey 既定のあしらい。帯（#f7f7f7）と padding は
   .c-entry__content h2 が持っているため、ここでは金の左罫だけ足す。
   値はコーポレートサイトの --entry-content-h2-border-left と同じ。
   h3 の下罫も .c-entry__content h3 の既定がそのまま使える。 */
:is(.is-legal-page, .is-company-page) .c-entry__content > h2 {
  border-left: 1px solid var(--wp--preset--color--sm-accent);
}

/* 定義表。コーポレートサイトの特定商取引法に基づく表記は Snow Monkey
   Blocks の smb-information（ラベル 1/4・内容 3/4・罫 2px・ラベル列 #eee）で
   組まれている。ストアにそのブロックは無いため、コアのテーブルブロックで
   同じ見た目に寄せる。追加クラスは不要で、法定ページ4枚と会社概要の
   テーブルすべてに効く。 */
:is(.is-legal-page, .is-company-page) .c-entry__content table {
  width: 100%;
  border: 2px solid var(--_light-color-gray);
  border-collapse: collapse;
}

:is(.is-legal-page, .is-company-page) .c-entry__content th,
:is(.is-legal-page, .is-company-page) .c-entry__content td {
  padding: var(--_padding-1);
  border: 2px solid var(--_light-color-gray);
  vertical-align: top;
  text-align: left;
}

:is(.is-legal-page, .is-company-page) .c-entry__content td {
  background-color: var(--_color-white);
}

/* ラベル列。ブロックエディターのテーブルは見出し行を除いてすべて <td> で
   出力され、セル単位で <th> にする UI が無い。そのため th だけを見ていると
   ラベル列に色が付かない。「2セルしかない行の1列目」を
   :first-child:nth-last-child(2) で拾い、td のまま組んでも同じ見た目に
   なるようにしている。3列以上の表には当たらないため、後から通常の表を
   置いても壊れない。

   td の背景指定より詳細度が高い（クラス2＋擬似クラス2＋要素1）ので、
   記述順に関わらずラベル列が優先される。 */
:is(.is-legal-page, .is-company-page) .c-entry__content th,
:is(.is-legal-page, .is-company-page) .c-entry__content tr > :first-child:nth-last-child(2) {
  width: 25%;
  background-color: var(--_lighter-color-gray);
  color: var(--_color-text);
  font-weight: 400;
}

/* smb-information は 640px 未満でラベルと内容が縦に積まれる。
   セルをブロックにすると border-collapse が効かなくなり罫が二重になるため、
   下罫だけを残して同じ見え方にする。 */
@media (max-width: 639px) {
  :is(.is-legal-page, .is-company-page) .c-entry__content table,
  :is(.is-legal-page, .is-company-page) .c-entry__content tbody,
  :is(.is-legal-page, .is-company-page) .c-entry__content tr,
  :is(.is-legal-page, .is-company-page) .c-entry__content th,
  :is(.is-legal-page, .is-company-page) .c-entry__content td {
    display: block;
  }

  :is(.is-legal-page, .is-company-page) .c-entry__content th,
  :is(.is-legal-page, .is-company-page) .c-entry__content td,
  :is(.is-legal-page, .is-company-page) .c-entry__content tr > :first-child:nth-last-child(2) {
    width: auto;
    border-width: 0 0 2px;
  }

  :is(.is-legal-page, .is-company-page) .c-entry__content tr:last-child td {
    border-bottom-width: 0;
  }
}

/* ============================
* 投稿（記事詳細・記事一覧・カテゴリー）
*
* トンマナはコーポレートサイトのダーク背景に合わせる。デザインの語彙は
* /products/ と /specialty-products/ から取っている。
*
*   h2  … /products/ の商品名と同じ上下 1px の細罫。記事なので中央寄せに
*         せず左揃えのまま
*   h3  … /specialty-products/ にならい装飾なし
*   一覧 … /products/ の media-text と同じ「画像左・テキスト右」の組み
*
* 本文の縦のリズムと見出しの大きさは上の is-prose が持つ。ここは背景と
* 装飾だけを足す。
*
* 対象の body クラスは投稿系だけに絞ってある。WooCommerce の商品一覧は
* archive / tax-product_cat / post-type-archive で、ここには含まれない。
* ========================= */
.single-post .l-contents,
.blog .l-contents,
.category .l-contents,
.tag .l-contents,
.date .l-contents {
  background-color: var(--_footer-background-color);
  color: var(--_color-white);
}

/* 本文がダークなページでは帯の背景色は不要。ショップ系と同じ扱いで、
   上下の余白だけでタイトルを区切る。 */
.single-post .c-page-header,
.blog .c-page-header,
.category .c-page-header,
.tag .c-page-header,
.date .c-page-header {
  background-color: transparent;
}

/* ----------------------------
* パンくず
*
* マークアップは template-parts/breadcrumbs.php が出力する。CSS 本体は
* 上の「パンくず」の節にあり、ここでは投稿まわりの位置と色だけを足す。
*
* 置き場所はタイトル帯の下。WooCommerce の画面（woocommerce.php）と
* コーポレートサイトも同じ並びで、サイト全体で上下が揃う。記事詳細では
* 写真の帯が上端を占めるため、その下に来るほうが現在位置として読みやすい。
*
* 日付アーカイブにはパンくずを出していないので対象から外している。
* 出すようにするときは breadcrumbs.php に分岐を足したうえでここにも追加する。
* ------------------------- */
.single-post .p-breadcrumbs-wrapper,
.blog .p-breadcrumbs-wrapper,
.category .p-breadcrumbs-wrapper,
.tag .p-breadcrumbs-wrapper {
  padding-top: var(--_padding-1);
}

.single-post .c-breadcrumbs,
.blog .c-breadcrumbs,
.category .c-breadcrumbs,
.tag .c-breadcrumbs {
  max-width: var(--_entry--content-width);
  margin-inline: auto;
  color: var(--_muted-color);
}

/* ----------------------------
* 記事詳細のタイトル帯
*
* 読み物なので左揃えにし、本文と同じ幅に収めて左端を揃える。
* 縦の並びはタイトル → カテゴリーとタグ → 公開日で、singular.php が
* それぞれを title / terms / meta として渡す。
* 一覧・カテゴリーアーカイブの帯は中央寄せのまま。
* ------------------------- */
.single-post .c-page-header {
  padding-block: var(--_padding-1) 0;
  text-align: left;
}

/* 公開日を帯の下端へ寄せるため、中身を縦方向の flex にする。
   タイトルと分類は __body にまとまっており、公開日はその外側にある。 */
.single-post .c-page-header__content {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: var(--_entry--content-width);
  margin-inline: auto;
}

/* レベル4（2rem）からレベル3（1.6rem）へ。ちょうど2割小さくなる。
   アーカイブの帯（sm-2-xl = 1.6rem）と大きさが揃う。

   word-break: break-all で単語の途中でも折り返す。英単語が混ざったときに
   行末が大きく空くのを防ぎ、帯の幅（52rem）に対して行が揃う。
   本文には効かせない。長い英単語で溢れるのを防ぐだけなら
   overflow-wrap: anywhere のほうが自然に折れる。 */
.single-post .c-page-header__title {
  --_font-size-level: 3;
  font-size: var(--_fluid-font-size);
  line-height: var(--_line-height);
  word-break: break-all;
}

/* カテゴリーとタグを 1 行に並べる。多いと折り返す。 */
.single-post .c-page-header__terms {
  --_font-size-level: -1;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.3em 1.4em;
  margin-top: var(--_margin-2);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

/* カテゴリーは金。記事の分類という位置づけを色の強さで示す。 */
.single-post .c-page-header__categories {
  color: var(--wp--preset--color--sm-accent);
}

.single-post .c-page-header__categories a,
.single-post .c-page-header__tags a {
  text-decoration: none;
}

.single-post .c-page-header__categories a:hover,
.single-post .c-page-header__tags a:hover {
  text-decoration: underline;
}

/* タグは控えめな色にしてカテゴリーと役割を分ける。区切りは gap に任せる。
   get_the_tag_list() の区切り文字を空にしているのは、折り返したときに
   区切り記号が行頭へ落ちるのを避けるため。 */
.single-post .c-page-header__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3em 0.9em;
  color: var(--_muted-color);
}

.single-post .c-page-header__tags a::before {
  content: "#";
  margin-right: 0.15em;
}

/* 公開日は帯の下部に右寄せ。写真がある場合は下端へ、無い場合は分類の下に
   続けて置く。 */
.single-post .c-page-header__meta {
  --_font-size-level: -1;
  margin-top: var(--_margin-2);
  padding-bottom: var(--_padding-1);
  border-bottom: 1px solid var(--_hairline-color);
  color: var(--_muted-color);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
  text-align: right;
}

/* アイキャッチがある記事は、タイトル帯を画面幅いっぱいの写真にする。
   コーポレートサイトの c-page-header[data-has-image="true"] と同じ考え方。

   .c-page-header はもともと幅の制約を持たないため、はみ出しの小細工は不要。
   中身は .c-page-header__content が 52rem に収めるので、写真だけが広がる。

   高さは固定せず min-height にしている。コーポレートサイトは height: 30vh
   だが、記事タイトルは2〜3行になることがあり、固定だと溢れるため。

   下の余白は上より小さくしている。公開日を帯の下端に寄せる構成なので、
   上下同じだと下端から浮いて見えるため。詰めすぎると写真の縁に貼り付いて
   窮屈になるので --_padding-1（1.2rem）で止めている。

   写真そのものはパンくずの下（.p-entry-eyecatch）で見せるため、この帯は
   タイトルの下地として高さを抑えている。

   1行タイトルのときの中身の高さは余白を含めて 140px 前後。min-height を
   それ以下にしても帯は縮まないので、下限は 120px で止めている。 */
.single-post .c-page-header[data-has-image="true"] {
  position: relative;
  display: flex;
  align-items: stretch;
  min-height: clamp(120px, 16vh, 200px);
  padding-block: var(--_padding-2) var(--_padding-1);
  overflow: hidden;
}

/* __content を帯の高さいっぱいに伸ばして、公開日を下端へ落とす。 */
.single-post .c-page-header[data-has-image="true"] > .c-container {
  position: relative;
  z-index: 1;
  display: flex;
  width: 100%;
}

/* 余白を上下へ均等に配ってタイトルのかたまりを中央に置く。auto マージンが
   空きを吸うので、直後の公開日が下端に残る。 */
.single-post .c-page-header[data-has-image="true"] .c-page-header__body {
  margin-block: auto;
}

/* 写真の上では区切りの罫が汚れて見えるので外す。写真の下端が区切りになる。 */
.single-post .c-page-header[data-has-image="true"] .c-page-header__meta {
  padding-bottom: 0;
  border-bottom: none;
  color: var(--_color-white);
}

/* フィルターだけでは足りない明るい写真への保険。text-shadow は継承するので
   タイトル・分類・公開日のすべてに効く。 */
.single-post .c-page-header[data-has-image="true"] .c-page-header__content {
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.6);
}

.c-page-header__bgimage {
  position: absolute;
  inset: 0;
}

/* テーマ既定の img { height: auto } を打ち消して帯いっぱいに敷く。 */
.c-page-header__bgimage img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 写真の明るさに左右されず白文字が読めるようにするフィルター。
   全面を同じ濃さで覆う。色は黒ではなく --_footer-background-color と同じ
   #24201f にして、本文のダーク背景と地色を揃えている。
   コーポレートサイトの .c-page-header__bgimage::after は黒 40% だが、
   ここは写真を下地として沈めるため 80% まで濃くしている。 */
.c-page-header__bgimage::after {
  content: "";
  position: absolute;
  inset: 0;
  background-color: rgba(36, 32, 31, 0.8);
}

/* タイトルの上に置く種別のラベル。カテゴリー・タグアーカイブだけが使う
   （記事詳細は分類を title の下に置くため eyebrow を渡さない）。 */
.c-page-header__eyebrow {
  --_font-size-level: -1;
  margin-bottom: var(--_margin-2);
  color: var(--_muted-color);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

/* ----------------------------
* パンくず下のアイキャッチ
*
* タイトル帯の背景は暗いフィルターで沈めた下地なので、写真そのものは
* ここで見せる。singular.php が l-contents の直下に出力しており、
* 1024px 未満では画面幅いっぱいに広がる（l-contents に左右の余白が
* 無いため、はみ出しの小細工は不要）。
*
* 縦横比は 4:3 に固定し、はみ出しは切り落とす。写真の実寸に関係なく
* 一覧のカード（同じく 4:3）と印象が揃う。
* ------------------------- */
.p-entry-eyecatch {
  margin-top: var(--_margin-1);
}

.p-entry-eyecatch img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

/* デスクトップは本文と同じ幅に収める。左右がパンくず・本文と揃う。 */
@media (min-width: 1024px) {
  .p-entry-eyecatch {
    max-width: var(--_entry--content-width);
    margin-inline: auto;
  }
}

/* ----------------------------
* 記事詳細の本文
* ------------------------- */

/* 記事は読み物なので u-slim-width（46rem）より少し広げる。写真が主役の
   実食レポートや生産者インタビューで画像が小さくなりすぎるのを避けるため。
   幅広ブロック・全幅ブロックの張り出しは足していないので、画像は本文の
   カラム内に収まる。 */
.single-post .c-entry__content.u-slim-width {
  max-width: var(--_entry--content-width);
}

/* ダーク背景では #f7f7f7 の帯が使えないため、/products/ の商品名と同じ
   上下 1px の細罫へ置き換える。padding は Snow Monkey の
   is-style-snow-monkey-143809 と同じ --_padding-2（0.6rem）。

   子孫セレクターにしているのは、グループや商品コレクションなどブロックの
   内側に置かれた見出しにも効かせるため。直下だけを見ていると、
   .c-entry__content h2 の帯（#f7f7f7）が残って白文字が消える。

   商品名は h2.wp-block-post-title で出力されるが見出しではないので外す。
   帯の打ち消しは assets/css/woocommerce.css が受け持っている。 */
.single-post .c-entry__content h2:not(.wp-block-post-title) {
  padding: var(--_padding-2) 0;
  border-top: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  border-left: none;
  background-color: transparent;
}

/* h3 は装飾なし。テーマ既定の下罫と padding を外す。 */
.single-post .c-entry__content h3:not(.wp-block-post-title) {
  padding: 0;
  border-bottom: none;
}

/* 記事だけ h3 の下を一段詰める。is-prose の係数 1（1.8rem）を 0.75
   （1.35rem）へ落とし、h3 と直後の本文の結びつきを強くする。上の余白
   （係数 1.5・2.7rem）は変えないので、見出しの前後で広い / 狭いの差が
   はっきりする。

   is-prose は係数をカスタムプロパティで切り替える設計なので、その口を
   使っている。宣言する場所が .is-prose .c-entry__content と同じ詳細度
   （クラス2）のため、記述順が後のこちらが勝つ。

   .single-post に閉じているのは、同じ is-prose を使う法定ページ4枚の
   リズムを動かさないため（terms・privacy-policy・refund_returns に
   h3 が計12個ある）。コーポレートサイト（Snow Monkey）の係数は 1 で、
   記事だけが意図的にずれる。 */
.single-post .c-entry__content {
  --_h3-margin-bottom: 0.75;
}

/* 引用。コーポレートサイトは blockquote/top.svg と bottom.svg で左上と右下に
   70px の鉤括弧を描き、そこへ 24px の引用符アイコンを重ねている。
   同じ語彙を CSS で描き直した。SVG を参照しないのは、あれが Snow Monkey の
   テーマフォルダにある資産で、コーポレートサイトがテーマを変えたら失われる
   ため（フォントは同じ理由を承知のうえで参照しているが、装飾は自前で持てる）。

   鉤括弧と引用符は ::before ひとつで描いている。70px の箱に border で角を
   引き、その中に content で引用符を置く方式。要素を増やさずに済む。

   margin-inline: 0 はブラウザ既定の blockquote { margin: 1em 40px } を
   打ち消すため。テーマに blockquote のマージンリセットが無く、左右に 40px
   ずつ付いたうえで padding が乗るため、本文の幅がかなり削られていた。
   縦のマージンは is-prose のリズムが上書きするので横だけで足りる。

   左右の padding はコーポレートサイトの blockquote（左 3rem）より詰めて
   1.2rem にしている。鉤括弧は角の飾りで枠ではないため、文字を線から
   離す必要がない。上だけ 3rem 取っているのは引用符のグリフを避けるため。 */
.single-post .c-entry__content .wp-block-quote {
  position: relative;
  margin-inline: 0;
  padding: var(--_padding1) var(--_padding-1) var(--_padding1);
}

.single-post .c-entry__content .wp-block-quote::before {
  content: "“";
  position: absolute;
  top: 0;
  left: 0;
  width: 70px;
  height: 70px;
  padding: 0.15em 0 0 0.3em;
  border-width: 2px 0 0 2px;
  border-style: solid;
  border-color: var(--_hairline-color);
  color: var(--wp--preset--color--sm-accent);
  font-size: 2rem;
  line-height: 1;
}

.single-post .c-entry__content .wp-block-quote::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 0;
  width: 70px;
  height: 70px;
  border-width: 0 2px 2px 0;
  border-style: solid;
  border-color: var(--_hairline-color);
}

/* 引用の中は本文のリズムから外れるため、段落の間隔をここで持たせる。
   テーマに p のマージンリセットが無いのでブラウザ既定の 1em を打ち消す。 */
.single-post .c-entry__content .wp-block-quote > p {
  margin: 0;
}

.single-post .c-entry__content .wp-block-quote > p + p {
  margin-top: var(--_margin1);
}

/* 出典。和文の serif に italic を当てると偽斜体になって崩れるので当てない。
   コーポレートサイトの cite は italic だが、あちらは欧文前提の指定。 */
.single-post .c-entry__content .wp-block-quote > cite {
  --_font-size-level: -1;
  display: block;
  margin-top: var(--_margin-1);
  color: var(--_muted-color);
  font-size: var(--_font-size);
  font-style: normal;
  line-height: var(--_line-height);
}

/* 表のセルの背景。見出しセルと本文セルで濃さを分ける。

   ブロックエディターのテーブルは「ヘッダーセクション」を有効にした行だけが
   <th> で出力され、セル単位で <th> にする UI が無い。そのため
   --_entry--table-th-background-color が出るのはヘッダー行のみで、
   残りのセルはすべて td として本文セルの色になる。

   コアの :where(td, th) の 1px の罫は currentColor のまま残している。
   セレクターの詳細度はクラス2＋要素1で、コアの :where(0) より強い。 */
.single-post .c-entry__content th {
  background-color: var(--_entry--table-th-background-color);
}

.single-post .c-entry__content td {
  background-color: var(--_entry--table-td-background-color);
}

/* コアのストライプ表は縞に #f0f0f0 を敷き、下端にも同じ色の罫を引くだけで
   文字色は触らない。ダーク背景では縞の行の白文字が読めなくなる。
   縞を「わずかに明るい暗色」に置き換えて、白文字のまま成立させる。
   currentColor から作っているので、明るい面に置いても縞として機能する。

   縞は行（tr）に敷くが、上に載る td が不透明だと隠れて全行が同じ色に見える。
   ストライプ表に限り td の背景を透過させて行の色を出す。ヘッダー行の th は
   #050505 のまま残し、見出しとして区別できるようにする。 */
.single-post .c-entry__content .wp-block-table.is-style-stripes td {
  background-color: transparent;
}

.single-post .c-entry__content .wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
  background-color: color-mix(in srgb, currentColor 8%, transparent);
}

.single-post .c-entry__content .wp-block-table.is-style-stripes tbody tr:nth-child(even) {
  background-color: color-mix(in srgb, currentColor 20%, transparent);
}

/* 20% の行は #504d4c 相当まで明るくなる。ここでは金の強調とリンク（#a4901f）が
   2.63:1 まで落ちて読めないため、ストライプ表の中だけ明るい金へ寄せる。
   #e8d986 なら 20% の行で 5.86:1、8% の行で 8.87:1 となり本文の 4.5:1 を満たす。
   白の本文は 20% の行でも 8.38:1 あるので触らない。 */
.single-post .c-entry__content .wp-block-table.is-style-stripes :is(strong, a:not(.wp-element-button)) {
  color: var(--lighter-accent-color);
}

.single-post .c-entry__content .wp-block-table.is-style-stripes {
  border-bottom-color: var(--_hairline-color);
}

/* コーポレートサイトはリンクの既定色がアクセントの金。ダーク背景の
   #24201f 上では金のコントラストが 5.03:1 で AA を満たすため、
   明るい面向けの --_link-color-on-light ではなく金をそのまま使う。
   下線はブラウザ既定のまま残し、色に頼らない手がかりを保つ。 */
.single-post .c-entry__content a:not(.wp-element-button) {
  color: var(--wp--preset--color--sm-accent);
}

/* 強調はリンクと同じ金にする。ダーク背景 #24201f 上で 5.03:1 で AA を満たす。
   リンクと同色になるが、リンクは下線・強調は太字で区別が付くため色は共通で
   問題ない。

   .single-post .c-entry__content の配下に閉じているため、固定ページ・法定
   ページ・記事一覧・カテゴリー・タグ・WooCommerce の各画面には効かない。
   b タグはエディターが出力しないので対象にしていない。 */
.single-post .c-entry__content strong {
  color: var(--wp--preset--color--sm-accent);
}

/* ----------------------------
* アコーディオン
*
* コーポレートサイトの「よくある質問･お問い合わせ」（/faq-contact/）に合わせる。
* あちらは Snow Monkey Blocks の smb-accordion で、実装値は以下。プラグインの
* blocks/accordion/style-index.css と、項目に直接書かれたインライン変数
* （--smb-accordion-item--background-color:var(--_dark-color-gray)）から実測した。
*
*   項目の間隔     --_margin-1（1.2rem）
*   見出しの背景   --_dark-color-gray（#666）
*   見出しの文字色 inherit。記事はダーク背景に白文字なので #666 上で 5.74:1
*   見出しの余白   calc(--_padding-1 * .5) --_padding-1（0.6rem 1.2rem）
*   見出しの文字   本文と同じ 1rem。SMB のラベルは文字サイズを持たない
*   本文の余白     --_padding1（1.8rem）
*   アイコン       右端で下向き。開くと 180 度回る
*
* ストア側はコアのアコーディオンブロックでクラス名が違う。役割の対応は
*   smb-accordion__item__title → .wp-block-accordion-heading__toggle
*   smb-accordion__item__body  → .wp-block-accordion-panel
*
* 開閉の判定はアイテムの .is-open ではなくボタンの aria-expanded を見ている。
* .is-open は Interactivity API が付けるクラスで、状態はサーバー側の出力にも
* aria-expanded として入っているため、こちらのほうが取りこぼしがない。
* ---------------------------- */
.single-post .c-entry__content .wp-block-accordion > * + * {
  margin-top: var(--_margin-1);
}

/* 見出しは帯そのもの。h3 の既定の文字サイズを本文サイズへ戻す。 */
.single-post .c-entry__content .wp-block-accordion-heading {
  --_font-size-level: 0;
  margin: 0;
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

/* ボタンの既定の見た目を落として帯にする。 */
.single-post .c-entry__content .wp-block-accordion-heading__toggle {
  display: flex;
  align-items: center;
  width: 100%;
  padding: calc(var(--_padding-1) * 0.5) var(--_padding-1);
  border: none;
  border-radius: 0;
  background-color: var(--_dark-color-gray);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

/* SMB は不可視のチェックボックスに outline を出している。こちらはボタンが
   実体なのでボタンへ直接付ける。太さと形は向こうに合わせる。 */
.single-post .c-entry__content .wp-block-accordion-heading__toggle:focus-visible {
  outline: 1px solid currentColor;
}

.single-post .c-entry__content .wp-block-accordion-heading__toggle-title {
  flex: 1 1 auto;
}

/* アイコン。ブロックが出力する「+」の文字は font-size: 0 で消す。

   コアはこのスパンへ display: flex と width/height: 1.2em を与えている。
   font-size を 0 にすると em も 0 になり、中身が flex アイテムとして
   潰れてしまう。実寸の rem で指定し直し、display も block へ戻す。 */
.single-post .c-entry__content .wp-block-accordion-heading__toggle-icon {
  display: block;
  flex: 0 0 auto;
  width: 0.75rem;
  height: 0.75rem;
  margin-left: var(--_margin-1);
  font-size: 0;
  transition: transform var(--_global--transition-duration)
    var(--_global--transition-function-timing) var(--_global--transition-delay);
}

/* 設定でアイコンを変えると svg が出るので隠す。 */
.single-post .c-entry__content .wp-block-accordion-heading__toggle-icon svg {
  display: none;
}

/* 下向きの山形。border を45度回す描き方はコアの flex 指定と噛み合わないため、
   SVG をマスクにして currentColor で塗る。コーポレートサイト側の
   Snow Monkey Blocks も同じ手法でアイコンを差し替えている。
   viewBox は 16×16 で、山形は y=3〜13 に置いて上下の中心を合わせてある。 */
.single-post .c-entry__content .wp-block-accordion-heading__toggle-icon::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background-color: currentColor;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 13 0 5l2-2 6 6 6-6 2 2z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 13 0 5l2-2 6 6 6-6 2 2z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.single-post
  .c-entry__content
  .wp-block-accordion-heading__toggle[aria-expanded="true"]
  .wp-block-accordion-heading__toggle-icon {
  transform: rotate(180deg);
}

/* 本文。is-prose の縦のリズムは .c-entry__content の直下にしか効かないため、
   パネルの中の間隔はここで作る。先頭要素に上余白を付けないことで、
   padding の 1.8rem がそのまま上下の余白になる。 */
.single-post .c-entry__content .wp-block-accordion-panel {
  min-height: 0;
  overflow: hidden;
  padding: var(--_padding1);
}

/* 閉じているパネルは hidden="until-found" になる。これは content-visibility:
   hidden 相当で、中身は描画されないが箱そのものは残る。padding を残すと
   上下 1.8rem ずつ、計 3.6rem の見えない余白が項目の間に居座る。
   コアは margin-block-start だけを 0 にしていて padding は面倒を見ない。
   左右は高さに関わらないので、詰めるのは padding-block だけでよい。 */
.single-post .c-entry__content .wp-block-accordion-panel[hidden] {
  padding-block: 0;
  opacity: 0;
}

/* 開閉のアニメーション。

   コアは .wp-block-accordion-item に transition: grid-template-rows .3s
   ease-out を宣言しているが、行を定義している CSS がどこにも無いため
   効いていない。ここでグリッドを与えて、その宣言を生かす。行は
   「見出し = auto」「パネル = 0fr / 1fr」の2本で、パネル側の
   overflow: hidden と min-height: 0 が高さの伸縮を成立させる。

   コアの宣言は @media (prefers-reduced-motion: no-preference) の中にあるため、
   動きを減らす設定の環境では自動的に止まる。こちらの transition も同じ条件に
   入れて挙動を揃える。

   padding-block を一緒に遷移させているのは、閉じ切る前に上下の余白だけが
   残って最後にカクつくのを防ぐため。

   content-visibility と display を allow-discrete で遷移させると、閉じる間も
   中身が描画され続け、アニメーションの終わりで隠れる。hidden の値が
   until-found になるか通常の hidden になるかはブラウザーによって変わるので
   両方を対象にしている。allow-discrete に未対応のブラウザーでは中身が先に
   消えるだけで、開閉そのものは破綻しない。 */
@media (prefers-reduced-motion: no-preference) {
  /* 開くとき。遷移に使われるのは「行き先の状態」に書いた指定なので、
     hidden が外れる側はこちらが効く。文字は箱が広がり始めてから追いかける
     ように 0.1s 遅らせる。同時に出すと文字が潰れた状態から伸びて見える。 */
  .single-post .c-entry__content .wp-block-accordion-panel {
    transition:
      padding-block 0.3s ease-out,
      opacity 0.25s ease-out 0.1s,
      content-visibility 0.3s allow-discrete,
      display 0.3s allow-discrete;
  }

  /* 閉じるとき。文字を先に消して、あとは箱が縮むだけにする。遅延は入れない。
     詳細度が上の [hidden] なので、閉じる側ではこちらが上の指定に勝つ。 */
  .single-post .c-entry__content .wp-block-accordion-panel[hidden] {
    transition:
      padding-block 0.3s ease-out,
      opacity 0.15s ease-out,
      content-visibility 0.3s allow-discrete,
      display 0.3s allow-discrete;
  }
}

.single-post .c-entry__content .wp-block-accordion-item {
  display: grid;
  grid-template-rows: auto 0fr;
}

.single-post .c-entry__content .wp-block-accordion-item.is-open {
  grid-template-rows: auto 1fr;
}

.single-post .c-entry__content .wp-block-accordion-panel > * {
  margin-top: 0;
  margin-bottom: 0;
}

.single-post .c-entry__content .wp-block-accordion-panel > * + * {
  margin-top: var(--_margin1);
}

/* ----------------------------
* 目次
*
* h2 が3つ以上ある投稿へ、functions.php の
* ninoichi_store_prepend_table_of_contents() が最初の h2 の直前に差し込む。
* ページ内の移動は html { scroll-behavior: smooth } が受け持つので
* JavaScript は使わない。
*
* is-prose の縦のリズムは .c-entry__content の直下にだけ効くため、外枠の
* nav は段落と同じ 1.8rem で並ぶ。内側の p と ol にはブラウザ既定の余白が
* 出るので、ここで打ち消す。
*
* クラス名は Snow Monkey に対応する部品が無いため、c- の接頭辞だけを合わせた
* 独自の名前にしている。Snow Monkey Blocks の目次ブロックへ将来置き換える
* 場合は、この節と functions.php の関数がまとめて不要になる。
* ------------------------- */
/* 色は表と共用する。囲みの地は td、見出し（INDEX）の帯は th と同じ。

   罫を残しているのは、地色 #33302f と本文の地色 #24201f の差が 1.5:1 しか
   なく、罫が無いと囲みの輪郭がほぼ見えないため。

   padding を外枠に置かず帯と一覧へ振り分けているのは、帯を囲みの端まで
   伸ばすため。 */
.c-toc {
  background-color: var(--_entry--table-td-background-color);
  border-radius: 10px;
}

.c-toc__title {
  margin: 0;
  padding: var(--_padding-1) var(--_padding1);
  border-radius: 10px 10px 0 0;
  background-color: var(--_entry--table-th-background-color);
  font-size: var(--wp--preset--font-size--sm-l);
  font-weight: 700;
  text-align: center;
}

/* 左だけ連番の桁を足す。ブラウザ既定の padding-left: 40px を打ち消しつつ
   連番が囲みの内側へ収まる。 */
.c-toc__list {
  margin: 0;
  padding: var(--_padding1);
  padding-left: calc(var(--_padding1) + 1.4em);
}

.c-toc__item + .c-toc__item {
  margin-top: var(--_margin-2);
}

/* 下線は付けない。囲みと連番でリンクの並びだと分かるため。
   本文のリンク（金・下線あり）と見分けが付く状態にもなる。 */
.c-toc__link {
  color: inherit;
  text-decoration: none;
}

/* hover と focus は --light-accent-color（#ddc74c）にする。本文と同じ
   金（#a4901f）は地色が #24201f なら 5.03:1 で足りるが、目次の地色
   #33302f 上では 4.11:1 で AA に届かない。明るい金なら 7.70:1。 */
.c-toc__link:hover,
.c-toc__link:focus-visible {
  color: var(--light-accent-color);
  text-decoration: underline;
}

/* 目次から飛んだ見出しが sticky ヘッダーの下へ潜らないようにする。
   ヘッダーの高さはロゴ（507×209 を幅 81px / 101px で描画）と余白の合計で、
   SP が約 60px、1024px 以上が約 80px。余裕を見て一段大きい値にしている。
   管理バーはログイン中だけ 46px / 32px 乗るため別に足す。 */
.single-post .c-entry__content h2 {
  --_toc-scroll-margin: 5rem;
  scroll-margin-top: var(--_toc-scroll-margin);
}

@media (min-width: 1024px) {
  .single-post .c-entry__content h2 {
    --_toc-scroll-margin: 6.5rem;
  }
}

.admin-bar.single-post .c-entry__content h2 {
  scroll-margin-top: calc(var(--_toc-scroll-margin) + 46px);
}

@media (min-width: 783px) {
  .admin-bar.single-post .c-entry__content h2 {
    scroll-margin-top: calc(var(--_toc-scroll-margin) + 32px);
  }
}

/* ----------------------------
* 前後の記事ナビ
*
* 片方しか無いときも正しい側に寄るよう、grid ではなく flex で組む。
* 次の記事だけのときは margin-left: auto で右へ送られる。
* ------------------------- */
.c-prev-next-nav {
  max-width: var(--_entry--content-width);
  margin-top: var(--_margin2);
  margin-inline: auto;
  padding-top: var(--_padding1);
  border-top: 1px solid var(--_hairline-color);
}

.c-prev-next-nav .nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--_s-1);
}

.c-prev-next-nav .nav-next {
  margin-left: auto;
  text-align: right;
}

/* 768px 以上は2列に並べる。折り返していたのは記事タイトルが長く、flex 項目の
   既定（min-width: auto）が内容の幅より縮まないため。min-width: 0 で縮む
   ようにして、flex: 1 1 0 で幅を半分ずつに割る。タイトルは列の中で折り返す。

   片方しか無いときの寄せ方は変わらない。1項目だけなら幅いっぱいに伸びて、
   前の記事は左（既定）、次の記事は text-align: right で右へ寄る。 */
@media (min-width: 768px) {
  .c-prev-next-nav .nav-links {
    flex-wrap: nowrap;
    gap: var(--_s1);
  }

  .c-prev-next-nav .nav-previous,
  .c-prev-next-nav .nav-next {
    flex: 1 1 0;
    min-width: 0;
  }
}

.c-prev-next-nav a {
  display: block;
  text-decoration: none;
}

.c-prev-next-nav__label {
  display: block;
  --_font-size-level: -1;
  color: var(--wp--preset--color--sm-accent);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

.c-prev-next-nav__title {
  display: block;
  margin-top: 0.2em;
}

/* ----------------------------
* 記事一覧・カテゴリーアーカイブ
*
* クラス名は Snow Monkey の c-entries--simple / c-entry-summary に合わせる。
* index.php は検索結果でも同じマークアップを使うため、この節の色は
* currentColor から作って明るい背景でも成立するようにしてある。
* ------------------------- */

/* カテゴリーの絞り込み。記事一覧とカテゴリーアーカイブの先頭に置く。
   記事本文と同じ幅に合わせて左端を揃える。 */
.c-taxonomy-nav {
  max-width: var(--_entry--content-width);
  margin-inline: auto;
  margin-bottom: var(--_margin1);
  padding-bottom: var(--_padding-1);
  border-bottom: 1px solid var(--_hairline-color);
}

/* テーマ既定の ul は padding-left: 1.5em を持つため打ち消す。 */
.c-taxonomy-nav__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6em 1.4em;
  margin: 0;
  padding: 0;
  list-style: none;
}

.c-taxonomy-nav__link {
  --_font-size-level: -1;
  display: inline-block;
  padding-bottom: 0.2em;
  border-bottom: 1px solid transparent;
  color: var(--_muted-color);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
  text-decoration: none;
}

.c-taxonomy-nav__link:hover {
  color: var(--wp--preset--color--sm-accent);
}

/* 表示中のカテゴリーは金の下線で示す。色だけに頼らないよう線も引く。 */
.c-taxonomy-nav__link[aria-current="page"] {
  border-bottom-color: var(--wp--preset--color--sm-accent);
  color: var(--wp--preset--color--sm-accent);
}

/* 一覧も記事本文と同じ幅に揃える。832px のうち画像が 34% でおよそ 283px、
   本文が 520px 前後になる。 */
.c-entries {
  max-width: var(--_entry--content-width);
  margin-inline: auto;
}

.c-entries__item + .c-entries__item {
  margin-top: var(--_margin1);
  padding-top: var(--_margin1);
  border-top: 1px solid var(--_hairline-color);
}

.c-entry-summary {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--_s-1);
}

@media (min-width: 768px) {
  .c-entry-summary {
    flex-direction: row;
    gap: var(--_s1);
  }

  .c-entry-summary__figure {
    flex: 0 0 34%;
  }
}

.c-entry-summary__figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: filter var(--_global--transition-duration) var(--_global--transition-function-timing);
}

.c-entry-summary:hover .c-entry-summary__figure img {
  filter: brightness(85%);
}

.c-entry-summary__body {
  flex: 1 1 auto;
  min-width: 0;
}

.c-entry-summary__meta {
  --_font-size-level: -1;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.3em 0.9em;
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

/* カテゴリーはカード全体のリンク（タイトルの擬似要素）より手前に重ね、
   独立したリンクとして機能させる。z-index を外すと擬似要素に覆われて
   カード側のリンクだけが効くようになる。 */
.c-entry-summary__term {
  position: relative;
  z-index: 1;
  color: var(--wp--preset--color--sm-accent);
  text-decoration: none;
}

.c-entry-summary__term:hover {
  text-decoration: underline;
}

.c-entry-summary__date {
  color: var(--_muted-color);
}

.c-entry-summary__title {
  --_font-size-level: 1;
  margin: var(--_margin-2) 0 0;
  padding-bottom: var(--_padding-2);
  border-bottom: 1px solid var(--_hairline-color);
  font-size: var(--_fluid-font-size);
  line-height: var(--_line-height);
}

.c-entry-summary__title a {
  text-decoration: none;
}

/* カード全体をクリックできるようにする。リンクの実体はタイトルだけなので、
   支援技術には記事タイトルを読み上げる1つのリンクとして伝わる。
   カテゴリーをリンクにしていないのは、この擬似要素と入れ子になるため。 */
.c-entry-summary__title a::after {
  content: "";
  position: absolute;
  inset: 0;
}

.c-entry-summary__content {
  --_font-size-level: -1;
  margin-top: var(--_margin-1);
  color: var(--_muted-color);
  font-size: var(--_font-size);
  line-height: var(--_line-height);
}

/* the_excerpt() は <p> で出力する。テーマに p のマージンリセットが無いため
   ブラウザ既定の 1em が付く。 */
.c-entry-summary__content p {
  margin: 0;
}

/* ----------------------------
* ページ送り
*
* the_posts_pagination() が出す .navigation.pagination が対象。
* ------------------------- */
.pagination {
  margin-top: var(--_margin2);
}

.pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--_s-2);
}

.pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.4em;
  padding: 0.4em 0.7em;
  border: 1px solid var(--_hairline-color);
  text-decoration: none;
}

.pagination .page-numbers.current {
  border-color: var(--wp--preset--color--sm-accent);
  background-color: var(--wp--preset--color--sm-accent);
  color: var(--_color-white);
}

.pagination .page-numbers.dots {
  border-color: transparent;
}

/* ============================
* 画像グリッド
*
* 本文中に並べた画像を、スマートフォンでは縦、タブレット以上では横に並べる。
* 商品説明は classic editor（WooCommerce の商品データ）で書くためカラム
* ブロックが使えない。テキストタブで .c-media-grid の div を書き、段組みは
* ここで与える。投稿本文でも同じクラスで使える。
*
* 境目を 768px にしているのは iPad の縦置き（768px）を横並びに含めるため。
* ========================= */
.c-media-grid {
  display: grid;
  gap: var(--_margin-1);
  margin-block: var(--_margin1);
}

@media (min-width: 768px) {
  .c-media-grid {
    grid-template-columns: repeat(2, 1fr);
    align-items: start;
  }
}

/* classic editor はキャプション付き画像の figure に style="width: 600px" を
   書き戻す。インラインの指定には詳細度で勝てないため !important で外す。
   このクラスの中だけの指定なので影響範囲は閉じている。 */
.c-media-grid > * {
  width: auto !important;
  max-width: 100%;
  margin: 0;
}

.c-media-grid img {
  display: block;
  width: 100%;
  height: auto;
}

/* キャプション。本文より一段小さくし、暗い背景で沈む色に寄せる。 */
.c-media-grid .wp-caption-text {
  margin-block: 0.6em 0;
  color: var(--_color-text-muted-on-dark);
  font-size: var(--wp--preset--font-size--sm-s);
  line-height: 1.6;
}

/* ============================
* 管理バーとの調整
*
* 管理バーは 601px 以上で position: fixed になるため、追従するヘッダーが
* その裏に隠れる。バーの高さ（783px 以上は 32px、それ未満は 46px）だけ下げる。
* ドロワーは常に position: fixed なので、内側に余白を足して中身を逃がす。
* いずれもログイン中のみ影響する。
* ========================= */
@media (min-width: 601px) {
  .admin-bar .l-header {
    top: 46px;
  }
}

@media (min-width: 783px) {
  .admin-bar .l-header {
    top: 32px;
  }
}

.admin-bar .c-drawer__inner {
  padding-top: calc(var(--_space) + 46px);
}

@media (min-width: 783px) {
  .admin-bar .c-drawer__inner {
    padding-top: calc(var(--_space) + 32px);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
  }
}
