@charset "UTF-8";
/*
 Theme Name: SANGO Child
 Theme URI: https://saruwakakun.design
 Author: SARUWAKA
 Author URI: https://saruwakakun.com
 Template: sango-theme
 Version: 3.0
*/
/*こちらはSANGOの子テーマ用CSSです。以下にCSSを記入していきましょう。*/

/* ==========================================================================
   Phase1.17: SP Drawer scrollbar layout shift対策
   research/20_sp_drawer_close_lifecycle.md参照。

   WordPress core標準(wp-includes/blocks/navigation/style.css)は、
   core/navigationのDrawerを開いた際に<html>へ`has-modal-open`クラスを
   付与し、`html.has-modal-open{overflow:hidden}`で背面ページのスクロールを
   ロックする(SANGOではなくWordPress本体の標準仕様。実ファイルで確認済み)。

   実測(Chrome DevTools Protocol、Desktop classic scrollbar環境の
   768/850/899px)の結果、この`overflow:hidden`によって縦scrollbar
   (実測15px)が一時的に消え、その分だけ`document.documentElement.clientWidth`
   が広がり、背面ページの中央寄せ要素(main等)の中心座標が最大7.5px程度
   右へずれることを確認した。Drawerを閉じる際は、is-menu-open解除から
   約100ms以内(Drawer panelの300ms transformアニメーションがまだ
   進行中の段階)でこの`has-modal-open`が外れ、scrollbarが復帰して
   背面ページが元の位置へ瞬時に戻ることも確認した(閉じるアニメーション中に
   背面レイアウトが変化している)。

   なお、375/390/430pxのモバイルviewport(mobile:trueエミュレーション、
   overlay scrollbar相当)では、scrollbarWidthは常に0で、このレイアウト
   シフトは発生しないことも確認済み。

   `scrollbar-gutter:stable`を<html>へ適用するA/Bテストの結果、
   Desktop classic scrollbar環境(768/850/899px)では背面ページの中心座標が
   open/closing/closed全状態で完全に不変になることを確認し、モバイル
   viewport(375/390/430px)およびPC幅(1024px)では測定可能な副作用が
   ないことも確認した(詳細はresearch/12・research/20のPhase1.17参照)。
   breakpoint条件分岐は導入せず、最もシンプルな無条件ルールとして
   全viewportへ適用する(900px境界でgutter有無が切り替わることによる
   不自然な変化を避けるため)。

   Drawer panel geometry・transform・300ms・ease-out・open/closeロジック・
   ARIA・focus管理には一切触れていない。独自JavaScript・will-changeは
   追加していない。WordPress標準のスクロールロック機構
   (html.has-modal-open{overflow:hidden})自体も無効化していない
   (scrollbar-gutterはスクロールロックとは独立した、レイアウト幅の
   予約に関するプロパティ)。 */
html {
  scrollbar-gutter: stable;
}

/* ==========================================================================
   日之本屋 ヘッダー/フッター 共通UI(Phase1 / Phase1.1 / Phase1.2 / Phase1.3 統合版)
   research/07_ui_design_system.md / research/09_sango_implementation_map.md 準拠
   research/12_step7_implementation_log.md に各修正の経緯・根拠を記録
   ========================================================================== */

/* --- ヘッダー全体の装飾 --- */

.sgb-header--no-shadow {
  border-bottom: 1px solid #E4E4E1;
}

/* --- ヘッダーロゴ・サイト名のサイズ(PC/SP) --- */

.sgb-site-branding .wp-block-site-logo img {
  width: 48px;
  height: 48px;
}
.sgb-site-branding .wp-block-site-title a {
  /* Phase 2B-2.8: ユーザー実機フィードバック(小さく見づらい)を受け18px→22pxへ。
     伊藤園コーポレートサイト(itoen.co.jp)のHeader視認性を参考にしつつ(レイアウト・
     色・hover・フォント自体はコピーせず文字サイズ感のみ参考)、既存Logo/900px
     breakpoint/Header高さとのバランスで最終決定。 */
  font-size: 22px;
  font-weight: 700;
}
@media screen and (max-width: 480px) {
  .sgb-site-branding {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .sgb-site-branding .wp-block-site-logo img {
    width: 32px;
    height: 32px;
  }
  .sgb-site-branding .wp-block-site-title a {
    font-size: 17px; /* Phase 2B-2.8: 15px→17px。PC(22px)をそのまま適用せずSP専用に調整 */
  }
}

/* ==========================================================================
   Phase 2B-2.8: Header Navigation Typography
   PC Header Navigation(.wp-block-sgb-header-navigation、Drawer内の
   .wp-block-sgb-header-mobile-navigationとは別クラスのため、PCのみに限定
   適用される。CTA(is-header-cta)も同じ.wp-block-navigation-item__content
   クラスを持つため、この1ルールで通常項目・CTAとも統一される)。
   ========================================================================== */
.sgb-header .wp-block-sgb-header-navigation .wp-block-navigation-item__content {
  font-size: 18px;
}

/* --- 重大修正(Phase1.2): ヘッダー内側コンテナが全幅で縦積み(column)になっていた --- */
.sgb-header__inner.sgb-header__inner--default {
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
}

/* --- 重大修正(Phase1.2): モバイルナビの外枠が width:100vw だった --- */
.sgb-header .wp-block-sgb-header-mobile-navigation {
  width: auto;
  overflow-x: visible;
}

/* --- 重大修正(Phase1.2): ハンバーガーボタンがSANGO側CSSで無条件に非表示だった --- */
.sgb-header .wp-block-sgb-header-mobile-navigation .wp-block-navigation__responsive-container-open {
  display: flex;
}

/* ハンバーガーボタン自体の見た目(過剰な装飾はしない。Navy一色のアイコンのみ) */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-open,
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-close {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 8px;
}
/* 【Phase1.14で分離・Phase1.14.1で詳細度強化・Phase1.14.2で!important追加】
   閉じた状態の☰はNavy Header上にあるためWhiteへ変更。開いた状態の×は
   Phase1.11/1.12のWhite panel上にあるためNavyを維持する(Header配色変更と
   Drawer配色は独立させる。指示#14・#16準拠)。
   WordPress core標準の`.wp-block-navigation__responsive-container-open svg,
   .wp-block-navigation__responsive-container-close svg{fill:currentColor}`
   (詳細度0,1,1)は、詳細度計算・Desktop/Mobile UA双方の実測(Chrome
   DevTools Protocol、navigator.userAgentを実際に差し替えて比較)のいずれでも
   このルールに上回られている形跡は確認できなかった(fillは一貫して
   意図どおりの値だった)。Phase1.14.2では、実機での見え方の懸念が
   繰り返し報告されたことを踏まえ、`.sgb-header__mobile-nav`スコープに
   限定した`!important`を追加し、どのような競合が将来発生しても
   確実にこの値が勝つようにした(指示#13準拠、サイト全体には波及しない)。 */
.sgb-header .sgb-header__mobile-nav .wp-block-navigation__responsive-container-open svg {
  fill: #fffffc !important;
}
.sgb-header .sgb-header__mobile-nav .wp-block-navigation__responsive-container-close svg {
  fill: #0d3255 !important;
}

/* 【Phase1.14.1で追加】☰(ヘッダー内、通常フロー配置)と×(Drawerパネル内、
   position:absolute;top:0;right:0がWordPress core標準)は、実測(375/390/430px)で
   中心座標が横16px・縦10px、3幅すべて一定してずれていた。Drawer panel自体の
   width/position/right/top/transform/transitionには触れず、×ボタン自身の
   position:absolute用top/rightのみを調整して☰と中心を一致させる
   (指示#7準拠、調整対象はボタン位置のみ)。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-close {
  top: 10px;
  right: 16px;
}


/* 【Phase1.5で追加】メニューグループ全体の左余白。
   個別項目ではなく、5項目を包む親コンテナ
   (.wp-block-navigation__responsive-container-content。WordPress標準の
   display:flex; justify-content:flex-start な入れ物で、実測ではpadding:0だった)
   にのみ padding-left を設定する。項目側(<ul>)は元々コンテンツ幅に応じた
   自動幅(実測176px)で左詰め配置されているため、親のpaddingを増やすだけで
   ul全体(=5項目の下線・CTA外枠)がそのまま右へ平行移動し、項目間の相対位置・
   幅は一切変更されない。 */
/* 【Phase1.12で追加】右側のpadding-rightは、左のpadding-left(Phase1.5)と
   対になる内側余白。これまで右は未設定で、ulが内容幅(実測176px)しか
   なかったことによる余白に依存していたが、Phase1.12でulを全幅化する
   ため、左右16pxで揃える。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content {
  padding-left: 16px;
  padding-right: 16px;
}

/* --- オーバーレイ(開いたメニュー)内の表示 ---
   text-align:left の理由は Phase1.3 のログを参照(SANGO標準の
   text-align:centerを詳細度で上回って解消)。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content ul.wp-block-navigation__container {
  flex-direction: column;
  gap: 0;
  padding: 0;
  margin: 0;
  text-align: left;
  /* 【Phase1.12で追加】width指定がなかったため、ulはflexの初期挙動で
     内容幅(実測176px、Phase1.5参照)にしかならず、区切り線が短く・
     右側に大きな余白が残る根本原因になっていた。ulをコンテナ幅いっぱい
     (padding分を除く)に広げることで、行・区切り線・CTAとも同じ横幅基準になる。
     panel自体のwidth/position(Phase1.11)には触れていない。 */
  width: 100%;
}
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item,
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item a {
  height: auto;
  display: block;
  width: 100%;
  text-align: left;
}

/* 【Phase1.3で追加・再修正】5項目共通の左右余白(画面端から約24px)。
   当初 `.wp-block-navigation-item a` (3クラス+タグ=詳細度0,3,1) に指定したが、
   WordPress標準がメニュー開放時のみ適用する
   `.wp-block-navigation__responsive-container.is-menu-open:where(:not(.disable-default-overlay))
   .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content`
   というルール(:where()は詳細度0扱いのため実質4クラス=詳細度0,4,0)の方が高く、
   静的確認では気づけず実際にメニューを開いて初めて padding:0 に上書きされている
   ことが判明した(Chrome DevTools ProtocolのCSS.getMatchedStylesForNodeで確認)。
   WordPress標準が最終的に使う実クラス名 .wp-block-navigation-item__content を
   直接指定し、5クラス連結(0,5,0)にすることで確実に上回っている。 */
.sgb-header .sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item .wp-block-navigation-item__content {
  padding: 16px 24px;
  font-size: 17px; /* Phase 2B-2.8: 16px→17px。position/padding/transition/ARIA等は無変更 */
}

/* ==========================================================================
   Phase1.12: SPドロワー メニューデザイン調整(見た目のみ)
   daily-trial.comのスマートフォンメニューの「1行の使い方
   (横幅いっぱい・区切り線・右端シェブロン・CTAの横長ボタン)」を参考に、
   日之本屋のブランド(Navy/薄いグレー、research/07_ui_design_system.md準拠)で
   再構成した。HTML/CSSの値そのものはコピーしていない。
   Phase1.11のpanel/backdropのgeometry・transition・duration・easing、
   core/navigationの開閉ロジック・ARIA・focus・Escapeキー処理は一切変更していない。
   ========================================================================== */

/* 通常4項目(お問い合わせCTAを除く)を「文字は左・シェブロンは右」の
   1行ナビゲーション行として整理する。padding/font-sizeは上のPhase1.3ルール
   から変更していない(タップ領域の高さ・文字サイズを維持するため)。 */
.sgb-header .sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item:not(.is-header-cta) .wp-block-navigation-item__content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

/* 右端のシェブロン(">"相当)。CSS pseudo-elementのみで実現し、
   Font Awesome等の新規依存は追加していない。content:""(文字を含まない)
   のため、スクリーンリーダーには読み上げられない(装飾のみ)。
   border上2辺を使った静的な図形で、hover/focus等のtransitionは付与しない
   (SPはhover前提にしない方針、instructions #19準拠)。 */
.sgb-header .sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item:not(.is-header-cta) .wp-block-navigation-item__content::after {
  content: "";
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  border-top: 1.5px solid rgba(13, 50, 85, 0.55);
  border-right: 1.5px solid rgba(13, 50, 85, 0.55);
  transform: rotate(45deg);
}

/* 区切り線(divider)。旧実装(a要素へのborder-bottom)はaの全幅
   (=行のタップ領域の全幅)にそのまま線が付き、左右のinner paddingを
   考慮できなかった。liにposition:relativeを与えたうえで::afterを
   絶対配置し、左は文字の開始位置(24px、Phase1.3のitem paddingと同じ値)、
   右はシェブロンより少し右まで(16px)伸ばすことで、行の内側のみに
   インセットした線にした。色は研究資料(research/07)で「装飾的な
   区切り線」用と定義済みの薄いグレー#E4E4E1をそのまま使用している。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content ul.wp-block-navigation__container > li.wp-block-navigation-item:not(:last-child) {
  position: relative;
}
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content ul.wp-block-navigation__container > li.wp-block-navigation-item:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 24px;
  right: 16px;
  bottom: 0;
  height: 1px;
  background-color: #E4E4E1;
}

/* 【Phase1.14で分離】「お問い合わせ」CTA。
   Header自体がNavy化したため、これまでPC・モバイル共通だった
   Navy塗り+White文字のCTAを、PC/Drawerで別々に定義する。
   PC(Navy Header上): White背景+Navy文字の反転CTAへ変更(指示#6準拠、
   Sun Red全面使用は不採用・指示#7)。
   Drawer(White panel上、Phase1.11/1.12確定): 従来どおりNavy塗り+White文字を
   そのまま維持(色は一切変更していない)。

   【Phase 2B-2.9.5で追記】PC CTAの上下marginを追加し、Header内で
   「独立した浮いたbutton」に見えるよう調整した。実測(ヘッドレスChrome、
   1440px): Header高さ79px、`.sgb-header__inner`高さ78px、通常nav項目は
   line-height:62pxのみで自然に62px高・上下8pxずつ中央配置されていたが、
   CTAは継承した`line-height:62px`+`padding:8px 18px`(片側8px)=78pxと
   ちょうどHeader内側の高さいっぱいになり、上下にNavy余白が全く見えて
   いなかった(実測で確認済みの真因)。CTAリンクにのみ`line-height`を
   通常テキスト相当へ縮小し、`margin-block`を明示指定することで、
   Header高さ(79px)自体を変えずに上下のNavy余白を作った。border-radius
   は4px→10px(pill形にはしない、8〜12pxの範囲内)。背景色`#fffffc`・
   文字色`#0d3255`は無変更(新しいAccent Colorは追加していない)。 */
.sgb-header .wp-block-sgb-header-navigation .wp-block-navigation-item.is-header-cta > a {
  background-color: #fffffc;
  color: #0d3255 !important;
  border-radius: 10px;
  padding: 10px 20px;
  line-height: 1.3;
  margin-block: 14px;
  display: inline-flex;
  align-items: center;
  opacity: 1;
}
.sgb-header .wp-block-sgb-header-navigation .wp-block-navigation-item.is-header-cta > a:hover {
  background-color: #F7F3EA;
}
/* CTAを縮小した結果、Header全体の高さがflexの「最も背の高い子要素」基準で
   自動的に縮んでしまうことをヘッドレスChrome実測で発見した(CTAの
   line-height:62px+padding片側8px=78pxが、それまでHeader高さそのものを
   決めていたため)。`.sgb-header__inner`にmin-heightを与えてHeader高さを
   変更前の実測値(78px、Header全体では79px)へ固定し、CTAを縮小しても
   Header自体は高くも低くもならないようにする。SP(899px以下、実測61px)は
   対象外にし、既存のSP Header高さ(Protected)へ波及させない。 */
@media screen and (min-width: 900px) {
  .sgb-header__inner {
    min-height: 78px;
  }
}

.sgb-header__mobile-nav .wp-block-navigation-item.is-header-cta > a {
  background-color: #0d3255;
  color: #fffffc !important;
  border-radius: 4px;
  padding: 8px 18px;
  opacity: 1;
}
.sgb-header__mobile-nav .wp-block-navigation-item.is-header-cta > a:hover {
  background-color: #14406b;
}

/* 【Phase1.4で修正】CTAは通常項目と同じ親コンテナ・同じ幅基準(width:100%、
   共通ルールから継承)に統一し、通常メニューの下線(border-bottom)と
   ほぼ同じ横幅・同じ左端になるようにした。以前の実装では左右24pxの
   margin指定によりCTAだけ幅が狭くなり独立して浮いて見えていたため、
   その指定を撤廃している(固定pxでの帳尻合わせではなく、共通の
   width:100%継承に一本化)。 */
/* Phase 2B-2.17.8追加指示: 実機報告「ハンバーガーメニュー内『お問い合わせ』
   CTAの通常状態(Hover前)の青色が、他ページ『お取引・お問い合わせ』
   Section内のPrimary Contact Buttonより薄く見える」を受けて調査した結果、
   このCTA自身の`<a>`(直上の.is-header-cta > aルール)には既に`opacity:1`が
   明示指定されていたが、より汎用的な既存ルール
   `.sgb-header__mobile-nav .wp-block-navigation-item{opacity:.8}`
   (Drawer内の通常メニュー項目全般に対する意図的な既定値)が、この
   `<a>`の親である`<li>`(このCTAも例外なく`.wp-block-navigation-item`に
   該当する)にも適用されており、親要素のopacityは子要素のopacity:1では
   打ち消せない(親子で乗算されるCSSの仕様)ため、`<a>`の背景色自体は
   Reference Button(`.hnm-contact-section`の「お問い合わせフォームへ」、
   background-color実測rgb(13,50,85)で完全一致)と同じ値のまま、Drawer上では
   80%の不透明度で描画され薄く見えていたことが判明した。汎用ルール自体は
   他の通常メニュー項目(お問い合わせ以外)に対しては意図した挙動のため
   変更せず、CTA(`.is-header-cta`)を指す既存のこのルールへ`opacity:1`を
   追加することで、CTAの`<li>`だけを通常状態から完全不透明へ戻した
   (`<a>`自体のbackground-color/color/border-radius/padding、Hover時の
   `background-color:#14406b`はいずれも無変更)。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item.is-header-cta {
  margin-top: 12px;
  border: none;
  opacity: 1;
}
/* Phase 2B-2.17.9: 実機報告「ドロワー内『お問い合わせ』CTAの横幅が、
   他Menu Item(日之本屋について/メーカーの皆様へ/事業者概要/お知らせ)下部の
   Dividerより広い」を受けて調査した結果、通常Menu Itemの区切り線は
   `li:not(:last-child)::after{left:24px;right:16px}`(このファイル内の
   既存ルール、絶対配置の疑似要素、`<li>`基準で左24px/右16px inset、
   左右非対称)で描画されているのに対し、CTAの`<a>`自身は`<li>`いっぱいの
   幅(inset無し)のままだったことをComputed Style実測(Rendered DOM、
   375px/390px幅)で確認した。推測値ではなく、この既存Dividerの実際のCSS
   値(24px/16px)をそのままCTAの`margin-left`/`margin-right`として適用し、
   CTAの外形をDividerの左右端と完全一致させた(実測: 修正前CTA幅
   286.75px→修正後246.75px、Divider幅246.75pxと一致)。background-color・
   opacity・color・font-size・font-weight・height・vertical padding
   (16px)・border-radius・Hover/Focus/Active状態・Link URL・文言はいずれも
   無変更(paddingのleft/rightは元々24pxのみでmarginとは独立、今回margin
   追加により見た目の左右余白はpadding24px+margin24px/16pxの合算になるが、
   これはCTAの外形(left/right edge)をDividerへ揃えるための意図した結果)。
   **実装上の発見**: 当初`margin-left:24px;margin-right:16px;`のみを追加して
   デプロイしたところ、実測でCTAの幅(286.75px)が全く変化せず、右端が
   Divider右端どころか元のli右端すら超えて外側へはみ出す結果になった。
   原因を調査した結果、このCTAの`<a>`にはWordPress core由来の
   `class="wp-block-navigation-item__content"`が付与されており、この
   classへcoreが既定で`width:100%`を指定しているため、`margin`を追加しても
   `width:100%`という明示値そのものは変化せず、marginは単に要素を右へ
   押し出すだけで幅を縮めなかったことが判明した。`width:calc(100% - 40px)`
   (40px=左24px+右16px)を明示指定することで、`<a>`自身の幅をDividerと
   同じ246.75pxへ縮め、`margin-left:24px`と組み合わせて左右両端を
   Dividerの実測left/right(96.25px/343px)へ完全一致させた。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation-item.is-header-cta > a {
  text-align: center;
  padding: 16px 24px;
  width: calc(100% - 40px);
  margin-left: 24px;
}

/* ==========================================================================
   Phase1.11: daily-trial.com挙動参考・SPドロワー独立再構築
   research/17_daytora_mobile_drawer_trace.md の実測に基づき、
   Phase1.6〜1.10の @keyframes+animation 方式を全面撤去し、
   「常時マウント+plain transition」方式へ全面的に置き換えた。
   HTML/CSS/JSの値そのものはコピーしていない(挙動仕様のみ参照)。

   背景(なぜ@keyframesをやめたか):
   Phase1.9まではWordPress標準のcore/navigationがdisplay:none⇄flexで
   開閉するため、@keyframesでしか正しく動かせないと判断していた。
   しかし実機で「行き過ぎて戻る」overshootが再現し、Chrome
   CSS.getMatchedStylesForNode/document.getAnimations()による
   徹底調査でもCSS衝突は見つからなかった(research/12のPhase1.9
   overshoot再調査を参照)。daily-trial.comを実測した結果、同サイトは
   .header-container/.drawer-backgroundを開閉に関わらず常にDOM上に
   マウントしたまま、position:fixedの座標とtransform/opacityのみを
   plain transitionで変化させる方式だった(@keyframesは不使用)。

   実現方法(JSは追加していない):
   WordPress標準のdisplay:none⇄flex切り替えは、実際には
   `.hidden-by-default:not(.is-menu-open){display:none}` という
   WordPress核心側のCSSルール1本のみで行われており、状態管理
   (is-menu-openクラスの付け外し・aria-modal・focus/Escapeキー処理)は
   すべてWordPress標準のInteractivity API(data-wp-*)が担っている
   ことをChrome DevTools Protocolで確認した。そのため今回は
   「display:flexを常時強制し、そのCSSルール1本だけを上書きする」
   ことで、状態管理・アクセシビリティ機構は一切変更せずに
   plain transition方式へ移行できると判断した。独自JavaScriptの
   追加は行っていない。

   DOM構造(実測済み、変更なし):
   .responsive-container(backdrop, position:fixed;inset:0)
     > .responsive-close(パネル本体。直下の子要素)
       > .responsive-dialog(role=dialog, position:relative)
         > .responsive-container-close(×ボタン, position:absolute;top:0;right:0)
         > .responsive-container-content(5項目のメニュー)
   .responsive-closeをposition:fixedにしても、×ボタンの位置は
   .responsive-dialog(常に.responsive-closeを100%幅高で満たす)を
   基準にしたままのため、影響を受けないことを実測で確認済み。
   ========================================================================== */

/* ==========================================================================
   Phase1.14.3: Headerレスポンシブ切替最適化
   research/12_step7_implementation_log.mdにFit Testの実測記録あり。

   問題: SANGO標準のPC/SP Header切替は769px境界だが、実測の結果、
   現行5項目Navigation+お問い合わせCTAは804px以下で「お問い合わせ」が
   次の行へ落ち、Header高さが79px→165pxへ跳ね上がることを確認した
   (769〜804pxの間は、SANGOのPC表示条件は満たすが実際には1行に収まらず
   崩れる)。805pxが実測での最小安全幅。

   対応: SANGO本体の769px境界そのものは変更せず(親テーマ直接編集禁止)、
   Headerスコープ内(.sgb-header配下)でのみ、769〜899pxの範囲を
   「SP扱い」に上書きする。境界を900pxへ拡張することで、実測の
   最小安全幅805pxに対し約95pxの安全マージンを確保した
   (目安64〜120pxの範囲内)。SP側のDrawer本体(位置・transform・
   300ms・ease-out等の値)は一切変更せず、後方のPhase1.11メディア
   クエリの適用範囲(768px→899px)のみをこれに合わせて拡張している。
   ========================================================================== */
@media screen and (min-width: 769px) and (max-width: 899px) {
  .sgb-header .wp-block-sgb-header-navigation {
    display: none;
  }
  .sgb-header .wp-block-sgb-header-mobile-navigation {
    display: block;
  }
  /* SANGO本体は`.sgb-header__mobile-nav`(内側のdiv、ハンバーガー本体が
     入れ子になっている要素)自体にも別途`@media(min-width:769px){display:none}`
     を指定しており、外枠(.wp-block-sgb-header-mobile-navigation)だけを
     表示させても内側が非表示のままでは☰が描画されない(実測でbutton要素の
     getBoundingClientRect()が0,0,0,0になることを確認して特定)。
     こちらも同じ範囲で上書きする。 */
  .sgb-header .sgb-header__mobile-nav {
    display: block;
  }
}

/* SANGO本体の「RightToLeft」残存keyframe(旧・横スクロール型UI向け、
   Phase1.6.2で発見)の無効化はPhase1.11でも継続して必要
   (今回のドロワー方式とは無関係な、別の残存アニメーション)。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-content ul.wp-block-navigation__container {
  animation: none;
}

@media screen and (max-width: 899px) {
  /* 【Phase1.14.3で768px→899pxへ変更】PC/SP Header切替breakpointの
     拡張(research/12参照)に合わせてこの範囲を拡大した。内部の値
     (position:fixed/width/transform/transition/300ms/ease-out等)は
     一切変更していない。 */
  /* backdrop: .responsive-container自体を常時display:flexのまま
     マウントし続け、opacity+pointer-eventsのみで見た目上の表示・
     非表示を切り替える(daily-trial.comの.drawer-backgroundと同じ
     「常時マウント+opacity transition」方式)。閉じている間は
     pointer-events:noneにして操作を無効化する。
     animation:none!importantは、WordPress標準の
     overlay-menu__fade-in-animation(opacity+translateY(0.5em)で
     縦方向にわずかに動く)が、Phase1.9のanimation上書きを外した
     ことで無効化されずに再び効いてしまうため、明示的に抑止している
     (実測: 除去前はcontainerのanimationがoverlay-menu__fade-in-animation
     に戻ってしまうことをdocument.getAnimations()相当のcomputed
     styleで確認済み)。 */
  /* 【Phase1.14.4で追加したvisibility(遅延付き)は、Phase1.15調査の結果
     ユーザー実機で改善効果が確認できなかったため撤去済み(2026-09-10)。
     効果のない追加処理を残さない方針に基づく。詳細な原因調査は
     research/20_sp_drawer_close_lifecycle.mdを参照。 */
  .sgb-header__mobile-nav .wp-block-navigation__responsive-container.hidden-by-default {
    display: flex !important;
    background-color: rgba(13, 50, 85, 0.4);
    opacity: 0;
    pointer-events: none;
    transition: opacity 300ms ease-out;
    animation: none !important;
  }
  .sgb-header__mobile-nav .wp-block-navigation__responsive-container.hidden-by-default.is-menu-open {
    opacity: 1;
    pointer-events: auto;
  }

  /* パネル本体(.responsive-close)。
     Phase1.6〜1.10のmargin-left:auto(flowに依存した右寄せ)から、
     daily-trial.com実測どおりのposition:fixed; top:0; right:0; bottom:0
     による明示的な配置へ変更した。幅はdaily-trial実測(85vw)と
     一致するmin(85vw, 340px)を維持(340pxは大型スマートフォン向けの
     日之本屋側上限)。閉時はtranslateX(100%)で画面外へ、開時は
     translateX(0)で定位置へ、plain transitionのみで移動する
     (@keyframesは使用しない。will-changeもdaily-trial実測どおり
     指定しない)。 */
  .sgb-header__mobile-nav .wp-block-navigation__responsive-close {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: auto;
    width: min(85vw, 340px);
    max-width: min(85vw, 340px);
    height: 100%;
    background-color: #fffffc;
    box-shadow: -6px 0 24px rgba(13, 50, 85, 0.15);
    transform: translateX(100%);
    transition: transform 300ms ease-out;
  }
  .sgb-header__mobile-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close {
    transform: translateX(0);
  }

  .sgb-header__mobile-nav .wp-block-navigation__responsive-dialog {
    height: 100%;
    display: flex;
    flex-direction: column;
  }
  .sgb-header__mobile-nav .wp-block-navigation__responsive-container-content {
    flex: 1 1 auto;
    overflow-y: auto;
  }
  /* 【Phase1.16で追加したoverflow:visible上書きは、ユーザー実機確認の結果
     closing描画症状に改善効果がなかったため撤去済み(2026-09-10、Phase1.17)。
     SANGO標準のoverflow:hidden(.sgb-header__mobile-nav、親テーマ側)へ復元。
     詳細はresearch/20_sp_drawer_close_lifecycle.mdを参照。 */
}

/* 閉じるアニメーションもPhase1.11で新たに実現された(Phase1.9までは
   技術的制約により開くアニメーションのみだった)。backdrop・パネル
   ともに常時マウント+plain transitionのため、is-menu-openクラスが
   外れる瞬間に同じtransitionが逆方向に自動再生され、閉じる際も
   自然な動きになる。閉じる専用のCSS/JSは別途必要ない。 */

/* prefers-reduced-motion: reduce では、上記のtransitionをすべて
   無効化し、即座に表示・非表示を切り替える。 */
@media (prefers-reduced-motion: reduce) {
  .sgb-header__mobile-nav .wp-block-navigation__responsive-container.hidden-by-default,
  .sgb-header__mobile-nav .wp-block-navigation__responsive-close {
    transition: none;
  }
}

/* ☰/×のタップ領域を44x44に統一(24pxアイコン+10px padding、Phase1.9から継続)。
   ×の位置はWordPress標準どおり position:absolute; top:0; right:0 の
   まま使用し(実測で自然な右上位置になることを確認済み)、独自の
   座標補正は行わない。 */
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-open,
.sgb-header__mobile-nav .wp-block-navigation__responsive-container-close {
  padding: 10px;
}

/* ==========================================================================
   Phase 2B-2.1: /contact/ Contact Form UX Revision
   対象: Contact page(投稿ID78、body class .page-id-78)+ CF7 form ID77のみ。
   姓/名2フィールドの横並びレイアウトと、送信ボタンの視認性向上のため、
   SANGO/CF7標準の見た目だけでは不足した箇所のみ追加。
   post_content内に<style>を直接埋め込むとwp_update_post()のKSESにより
   <style>タグ自体が除去され、CSSテキストがそのまま本文に露出する不具合が
   発生したため、子テーマstyle.cssへ.page-id-78スコープで追加する方式へ変更。
   他ページ・他フォームへは影響しない。

   **Phase 2B-2.17で更新**: Label→Control間のGap・Field Block間のGapが
   項目ごとにバラバラに見えるとの実機フィードバックを受け、ヘッドレス
   Chromeで実測・原因調査した結果、以下2つの不具合を発見し修正した(いずれも
   既存ルールの値変更、新規overrideの積み重ねではない)。
   1. `.hnm-name-field`(fieldset)の`margin-bottom:1.5rem`により、
      「姓/名Group→メールアドレス」間のField Block Gapのみ他の項目より
      24px広くなっていた(他の項目はCF7が自動生成する`<p>`要素の既定
      margin-bottomのみで29.671875px/481px以上・28px/480px以下に統一
      されている)。`margin-bottom:0`へ変更し、他の項目と完全に一致させた。
   2. `.hnm-name-sub label{display:block}`が、CF7がlabelタグと入力欄の
      間に自動挿入する`<br>`(フォームテンプレート内でlabelと`[text*]`が
      改行のみで隣接しているため、wpautop相当の処理で`<br>`に変換される)
      と衝突し、「labelが既にblockとして専用の行を占有した後、さらに
      `<br>`が改行を追加する」形で二重の行送りが発生し、姓/名Labelのみ
      Label-Control Gapが41.78125px/38.328125px(481px以上/480px以下)と
      他の項目(5.328125px/4.265625px)よりはるかに大きくなっていた。
      `display:inline`(CF7標準の暗黙値、他の項目のlabelと同じ)へ戻すことで
      解消し、`margin-bottom`も削除した(inline要素には効果がないため)。
      あわせて、legend(「お名前(必須)」)自体の`margin-bottom:0.5em`も
      Label-Control Reference Gapとほぼ同じ値(8px/8.56px、実測の残差
      4.265625px/5.328125pxを除く大部分)であることが判明したため、
      `margin-bottom:0`へ変更し、「お名前(必須)」→姓・名Groupの間隔も
      Reference Gapと完全一致させた(ユーザー指示「会社名等のField Labelと
      同程度のVisual Rhythm」に対応)。
   結果、全項目のLabel-Control Gap(5.328125px/481px以上・4.265625px/480px
   以下)とField-Block Gap(29.671875px/481px以上・28px/480px以下)が完全に
   統一された。Input height/background/border・Textarea height・Select
   design・Font・Text color・姓/名の2column layout自体・Privacy文言・Form
   width・Contact heading/introはいずれも無変更。
   ========================================================================== */
.page-id-78 .hnm-name-field {
  border: none;
  border-width: 0;
  border-style: none;
  outline: none;
  margin: 0;
  padding: 0;
  min-width: 0;
}
.page-id-78 .hnm-name-field legend {
  display: block;
  width: 100%;
  padding: 0;
  margin: 0;
  font-size: inherit;
  font-weight: inherit;
}
.page-id-78 .hnm-name-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}
.page-id-78 .hnm-name-sub {
  flex: 1 1 140px;
  min-width: 140px;
}
.page-id-78 .hnm-name-sub label {
  display: inline;
}
.page-id-78 .hnm-submit-field p {
  text-align: center;
}
.page-id-78 .hnm-submit-field .wpcf7-spinner {
  width: 0;
  margin: 0;
  overflow: hidden;
}
.page-id-78 form.wpcf7-form.submitting .hnm-submit-field .wpcf7-spinner {
  width: 24px;
  margin: 0 24px;
}

/* ==========================================================================
   Phase 2B-2.1.1: /contact/ Visual Polish
   対象: Contact page(.page-id-78)+ CF7 form ID77のみ。
   ユーザー実機確認により判明した3点を修正:
   1. お名前fieldsetの視覚的な外枠が実機で見えていたため、borderリセットを
      border-width/border-style/outlineまで明示指定する形へ強化(headless
      Chromeでは再現しなかったため、実機差異として記録)。
   2. お問い合わせ種別selectの背景が透明で周囲(生成り背景)と同化していた
      ため、他のtext input実測値と同じ背景色を指定。矢印アイコンは
      background-imageで描画されているため、background-color のみを
      指定しbackground shorthandは使用しない(矢印を消さないため)。
      あわせてselectのfocus-visible状態が実機で完全に消えていた
      (outline:none)ことを確認し、明示的なfocus-visibleを追加。
   3. 送信ボタンを、独自デザインからTOPページの既存お問い合わせCTA
      (`sgb/btn`ブロック、class="btn normal raised"、投稿ID9)を
      Visual Source of Truthとして実測し、同じ見た目(背景色・
      border-radius・box-shadow・padding・font-size/weight・
      line-height・hover時box-shadow)へ揃えた。SANGOの`.btn.normal`
      `.raised`クラスは`.wp-block`祖先への依存(box-shadowがscopeされる
      仕様)があり、CF7 submitへ直接同じclassを付与すると`.wp-block`
      文脈外ではshadowが適用されない制約があったため、クラス名の
      流用ではなく、SANGO側のCSSカスタムプロパティ
      (--wp--preset--color--sango-main 等)を直接参照する形で値を
      再現し、どちらのbuttonも同じdesign tokenを参照する設計とした。
      幅は固定・100%指定をやめ、TOP CTAと同じ内容依存の幅とし、
      ラップする`.hnm-submit-field p`をtext-align:centerにすることで
      PC/SPともフォーム中央に配置した(TOP CTAもwidth:100%ではなく
      中央配置されていることを実測確認済み)。CF7標準の`.wpcf7-spinner`
      は`visibility:hidden`のまま`margin:0 24px`分のレイアウト幅を
      常時確保する仕様のため、素朴なtext-align:centerでは「ボタン単体」
      ではなく「ボタン+spinner分の余白」全体を中心に据えてしまい、
      見た目が左に約36pxずれる不具合を実測で発見。さらに
      `position:absolute`でspinnerをflowから外す方式も試したが、
      spinnerの位置決め基準(`.hnm-submit-field p`、フォーム全幅)が
      ボタン自体の幅と一致しないため、375px等の狭い幅で
      spinnerの絶対配置がviewportをわずかに超えて`scrollWidth`上の
      横overflow(4〜5px)を引き起こすことを実測で発見・不採用とした。
      最終的に、spinnerを非送信時は`width:0;margin:0;overflow:hidden`
      で完全にレイアウト幅ゼロにし、CF7が送信中に自動付与する
      `form.submitting`クラスが掛かっている間だけ元のサイズへ戻す
      方式へ変更。これにより通常時はボタン単体が正しく中央配置され、
      実際の送信中のみ本来のspinnerが違和感なく表示される。
   ========================================================================== */
/* Phase 2B-2.17.3: Contact Input Surface Color(#fffffc)統一。
   実機確認で、Reload後に値は正しく空へ戻るがinput/select/textareaの
   背景が薄い青色(rgb(239,241,245))のまま残る、との報告を受けて調査した
   結果、原因はこのプロジェクト側のCSSでもCF7側でもなく、SANGO親テーマの
   グローバル(サイト全体に効く、.page-id-78等のスコープを持たない)既定
   ルール `.field,input[type=email],input[type=tel],input[type=text],
   select,textarea{background-color:#eff1f5;...}` であることをChrome
   DevTools Protocolで確認した(Reload直後のcomputed background-colorが
   全fieldでrgb(239,241,245)、box-shadow:none、appearance:auto、
   :-webkit-autofill等のpseudo stateは一切関与せず、フォーム未操作の
   初回読み込みでも常に同じ値であることを確認済み)。このルールは元々
   `.wpcf7-select`専用に見えていた既存rule(旧値もたまたま同じ#eff1f5)を
   含め、Contact Formの全fieldに常時効いていたが、値が入っている間は
   目立たず、Phase 2B-2.17.2でReload時に値が正しく空になったことで
   初めて視認性が上がり顕在化した。SANGO側の当該グローバルルールは
   他ページ(検索フォーム等)にも影響するため直接編集せず、
   .page-id-78スコープの子テーマCSSで上書きすることで対応する
   (Global input/textarea/selectへは適用しない)。 */
.page-id-78 input[type="text"],
.page-id-78 input[type="email"],
.page-id-78 input[type="tel"],
.page-id-78 textarea.wpcf7-textarea,
.page-id-78 #hnm-category.wpcf7-select,
.page-id-78 .wpcf7-select {
  background-color: #fffffc;
}
.page-id-78 .wpcf7-select:focus-visible {
  outline: 2px solid #0d3255;
  outline-offset: 2px;
}
/* Focus時も#fffffcを維持する(SANGO既定・CF7既定とも:focusでの背景色変更は
   元々定義されていないため、上記の通常状態への上書きのみでFocus時も
   自動的に同じ#fffffcとなる。border/outline等の既存focus indicatorは
   無変更)。 */
/* Chrome/Edge等のBrowser Autofillは、input:-webkit-autofillへ内部的な
   背景色(通常は黄色系)を強制描画し、通常のbackground-colorプロパティでは
   上書きできない仕様のため、フィールド値がJSでクリアされた後もこの
   Autofill専用の内部描画だけが残るケースがある。今回の主原因(上記
   SANGO既定CSS)とは別に、実機のBrowser Autofillが重なった場合でも
   Surface Colorが崩れないよう、Autofill機能自体は無効化せず(autocomplete
   属性の追加等は行わない)、Chromium系ブラウザで広く使われる
   box-shadow inset方式でAutofill時の内部背景描画だけを日之本屋Design
   (#fffffc)へ合わせる。文字色はSANGO既定の`.field`ルール
   (color:rgba(0,0,0,.7))とcomputed styleで確認したうえで、
   -webkit-text-fill-colorも同じ値に揃え、Autofill時に文字が見えなくなる
   ことを防ぐ。 */
.page-id-78 input[type="text"]:-webkit-autofill,
.page-id-78 input[type="email"]:-webkit-autofill,
.page-id-78 input[type="tel"]:-webkit-autofill,
.page-id-78 input[type="text"]:-webkit-autofill:focus,
.page-id-78 input[type="email"]:-webkit-autofill:focus,
.page-id-78 input[type="tel"]:-webkit-autofill:focus,
.page-id-78 input[type="text"]:-webkit-autofill:hover,
.page-id-78 input[type="email"]:-webkit-autofill:hover,
.page-id-78 input[type="tel"]:-webkit-autofill:hover {
  -webkit-box-shadow: 0 0 0 1000px #fffffc inset;
  box-shadow: 0 0 0 1000px #fffffc inset;
  -webkit-text-fill-color: rgba(0, 0, 0, 0.7);
  caret-color: rgba(0, 0, 0, 0.7);
}
/* Phase 2B-2.17.3 追加指示③: Contact Edit Return Field Highlight。
   Confirmation Pageの「入力内容を修正する」から/contact/へ戻った場合のみ、
   Contact Formの通常入力Surfaceを#fffffc(通常)から#eff1f5(以前SANGO側の
   既定値として実在していた色を「修正モード」の淡い背景として再利用、
   新規の独自色は追加しない)へ切り替える。個々のinputへJSでinline styleを
   直接設定する方式は避け、既存のReturn Marker判定(Phase 2B-2.17.2)が
   Draftを復元したまさにそのタイミングでdocument.bodyへ`hnm-contact-
   edit-mode`classを1回だけ付与し(contact-confirmation.js側)、CSS側で
   このclass配下の入力Surfaceのみを切り替える。Privacy同意checkbox
   (input[type=checkbox])は対象外。Reload・Flow外離脱後の復帰・bfcache
   経由のBrowser Back(既存のresetContactFormToInitialState()経由)では
   このclassも同時に外れるため、値がJSでクリアされるタイミングと背景色が
   #fffffcへ戻るタイミングは常に一致する。Focus時・Autofill時も同じclass
   スコープ内で#eff1f5を維持するようそれぞれ追加のルールを設けた
   (Focus indicator自体(border/outline/box-shadow)・Autofill機能自体は
   無変更)。 */
.page-id-78.hnm-contact-edit-mode input[type="text"],
.page-id-78.hnm-contact-edit-mode input[type="email"],
.page-id-78.hnm-contact-edit-mode input[type="tel"],
.page-id-78.hnm-contact-edit-mode textarea.wpcf7-textarea,
.page-id-78.hnm-contact-edit-mode #hnm-category.wpcf7-select,
.page-id-78.hnm-contact-edit-mode .wpcf7-select {
  background-color: #eff1f5;
}
.page-id-78.hnm-contact-edit-mode input[type="text"]:-webkit-autofill,
.page-id-78.hnm-contact-edit-mode input[type="email"]:-webkit-autofill,
.page-id-78.hnm-contact-edit-mode input[type="tel"]:-webkit-autofill,
.page-id-78.hnm-contact-edit-mode input[type="text"]:-webkit-autofill:focus,
.page-id-78.hnm-contact-edit-mode input[type="email"]:-webkit-autofill:focus,
.page-id-78.hnm-contact-edit-mode input[type="tel"]:-webkit-autofill:focus,
.page-id-78.hnm-contact-edit-mode input[type="text"]:-webkit-autofill:hover,
.page-id-78.hnm-contact-edit-mode input[type="email"]:-webkit-autofill:hover,
.page-id-78.hnm-contact-edit-mode input[type="tel"]:-webkit-autofill:hover {
  -webkit-box-shadow: 0 0 0 1000px #eff1f5 inset;
  box-shadow: 0 0 0 1000px #eff1f5 inset;
  -webkit-text-fill-color: rgba(0, 0, 0, 0.7);
  caret-color: rgba(0, 0, 0, 0.7);
}
.page-id-78 .wpcf7-form .hnm-submit-btn {
  display: inline-block;
  background-color: var(--wp--preset--color--sango-main, #0d3255);
  color: #fff;
  border: none;
  border-radius: var(--wp--custom--rounded--medium, 12px);
  padding: 0.4em 1.3em;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.7;
  cursor: pointer;
  box-shadow: var(--wp--custom--shadow--medium, 0 6px 13px -3px rgba(0, 12, 66, 0.1), 0 0 1px rgba(0, 30, 100, 0.1));
  transition: box-shadow 0.2s ease, opacity 0.2s ease;
}
.page-id-78 .wpcf7-form .hnm-submit-btn:hover:not(:disabled) {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}
.page-id-78 .wpcf7-form .hnm-submit-btn:focus-visible {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}
.page-id-78 .wpcf7-form .hnm-submit-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

/* ==========================================================================
   Phase 2B-2.17: Contact Form Confirmation Flow

   A. Contact入力ページ(.page-id-78)側の追加スタイル: 独自validation
   (contact-confirmation.js)のエラー表示と、期限切れ再入力案内のみ。
   Input height/background/border・Font・Text color等の既存Form Visualは
   一切変更していない。
   ========================================================================== */
.page-id-78 .hnm-field-error {
  outline: 2px solid #c71e1f;
  outline-offset: 2px;
}
.page-id-78 .hnm-field-error-msg {
  display: block;
  margin-top: 0.4em;
  color: #c71e1f;
  font-size: 0.85em;
}
/* Phase 2B-2.17.3 追加指示: Privacy同意欄のみ、未同意エラー表示時に
   Checkbox→Error Messageの間隔が他項目より大きく見える不具合を修正。
   原因調査(Rendered DOM実測)の結果、他の項目はcontact-confirmation.jsの
   showFieldError()がel.insertAdjacentElement('afterend', msg)でinput/
   textarea/select要素の直後(CF7が自動生成する<p>要素の内側)へエラーを
   挿入するのに対し、Privacy同意欄のみvalidate()がconsentField.
   appendChild(msg)で.hnm-consent-field(<p>のさらに外側のdiv)へ追加して
   いるため、CF7が自動生成するこの<p>要素自身の既定margin-bottom
   (Phase 2B-2.17で判明したField Block Gap そのものの値、約28〜29.67px)が
   Checkbox とError Messageの間にそのまま挟まっていたことが原因と判明した
   (Checkbox→Error実測25.671875px、他項目のTextarea→Error実測11.96875px
   との差はこの<p>のmargin-bottom分にほぼ一致)。この<p>のmargin-bottomは
   エラーが無い通常時はPrivacy Block→送信ボタン間のField Block Gapその
   ものを担っているため、常時0へリセットすると通常時の間隔まで潰れてしまう
   (指示により変更禁止)。そのため:has()でエラーメッセージが実際に存在する
   場合にのみ、この<p>のmargin-bottomを0へ変更する条件付き上書きとし、
   通常時のField Block Gapには一切影響しない。Global の
   .wpcf7-not-valid-tip・他Fieldのエラー表示・Validation Error文言/色/
   font-size/font-weight・Privacy Checkbox自体のDesignはいずれも無変更。
   Privacy同意欄限定のscope。 */
.page-id-78 .hnm-consent-field:has(.hnm-field-error-msg) p {
  margin-bottom: 0;
}
.page-id-78 .hnm-contact-notice {
  margin: 0 0 1.5rem;
  padding: 0.8em 1em;
  background-color: #fdf0ee;
  border: 1px solid #c71e1f;
  border-radius: 8px;
  color: #0d3255;
  font-size: 0.95em;
}

/* ==========================================================================
   Phase 2B-2.17: Confirmation Page(/contact/confirm/、投稿ID144、
   body class .hnm-contact-confirm)。

   実際のCF7 Form ID77を再利用し(Mail/Mail2/Turnstile/Field nameはすべて
   Contact入力ページと共有、二重管理なし)、通常の入力欄(会社名〜Privacy
   同意チェックボックス)のみを視覚的に非表示にし、Turnstileウィジェット・
   CF7 Response Message・送信ボタンはそのまま表示する(誤って隠さない)。
   非表示にした入力欄はDOM上に存在し続けるため、JS
   (contact-confirmation.js)がsessionStorageの下書きから値をpopulateし、
   実際の送信データとして機能する。

   **Phase 2B-2.17.1で更新**: Confirmation Summary(dl/dt/dd)へ
   `padding-inline`(12px)を追加し、Label/Valueが一覧の左端に詰まって見える
   問題を解消(実機フィードバック、SP幅で特に顕著)。Turnstileの中央揃え・
   上下Vertical Spacing、および送信ボタンのVisual Design統一を追加(詳細は
   各ルールのコメント参照)。文言・Row divider・Row background・Summary
   width・各Field valueは無変更。 */
.hnm-contact-confirm .hnm-contact-field:not(.hnm-turnstile-field):not(.hnm-submit-field) {
  display: none;
}

.hnm-confirm-summary__list {
  margin: 0 0 2rem;
  background-color: #fffffc;
}
.hnm-confirm-summary__list dt {
  padding: 0.9em 12px 0.3em;
  box-sizing: border-box;
  color: #0d3255;
  font-weight: 600;
  font-size: 0.95em;
}
.hnm-confirm-summary__list dd {
  margin: 0;
  padding: 0 12px 0.9em;
  box-sizing: border-box;
  border-bottom: 1px solid #e8e8e8;
  color: #333;
  line-height: 1.8;
}
.hnm-confirm-summary__list dt:first-child {
  padding-top: 0;
}
.hnm-confirm-summary__value--pre {
  white-space: pre-wrap;
  word-break: break-word;
}

/* Phase 2B-2.17.1: Turnstileウィジェットの中央揃え+上下Vertical Spacing。
   実測した「入力内容を修正するButton bottom→Footer top」のAction-Footer
   Reference Gap(全11幅で48pxに統一、後述の`.hnm-submit-field p`margin
   リセットとあわせて実測確定)へ、Turnstile上下のGapを一致させた(実地
   検証済み)。全幅で同一値のためメディアクエリは不要だった。中央揃えは
   wrapper側の`display:flex;justify-content:center`のみで対応し、Widget
   自体へのtransform等は行っていない。Turnstile Integration・Challenge
   logic・Token・callback・validation・CF7連携はいずれも無変更(配置・
   spacingのみ)。 */
.hnm-contact-confirm .hnm-turnstile-field {
  display: flex;
  justify-content: center;
  margin-top: 48px;
  margin-bottom: 48px;
}

.hnm-confirm-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  /* 実機フィードバック: 「送信する」の横幅が「入力内容を修正する」より
     狭く、2Button並びの左右バランスが不揃いに見えた。1箇所のCSS変数へ
     Edit Buttonの実測width(210.0625px、Rendered DOM実測、1440px時)を
     まとめ、両Buttonのwidthルールから同じ変数を参照することで、pxを
     2箇所へ重複指定していない。box-sizing:border-boxもあわせて指定し、
     Edit(border 1.5px)/Send(border none)のborder差がwidthの見た目に
     影響しないようにした。height/vertical alignment(Phase 2B-2.17.1確定)
     はwidth以外のプロパティを変更していないため無影響。 */
  --hnm-confirm-action-width: 210.0625px;
}
/* Phase 2B-2.17.1: CF7が送信ボタンを自動的にラップする<p>のデフォルト
   margin-bottom(親テーマ由来、約25.68px)が、align-items:centerのflex
   cross-axis計算に margin-box として算入され、「入力内容を修正する」
   Buttonとの上端・下端が実測で約12px前後ズレる原因になっていた。この<p>の
   marginのみリセットし、2Buttonの高さ・paddingは変更していない(実測で
   ズレが1px未満に収まることを確認済み)。 */
.hnm-contact-confirm .hnm-submit-field p {
  margin: 0;
}
.hnm-confirm-edit-btn {
  display: inline-block;
  box-sizing: border-box;
  width: var(--hnm-confirm-action-width);
  background-color: #fffffc;
  color: #0d3255;
  border: 1.5px solid #0d3255;
  border-radius: var(--wp--custom--rounded--medium, 12px);
  padding: 0.4em 1.3em;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.7;
  cursor: pointer;
  transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.hnm-confirm-edit-btn:hover {
  background-color: #f7f3ea;
}
.hnm-confirm-edit-btn:focus-visible {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}

/* Phase 2B-2.17.1: Confirmation Pageの送信ボタンを、Contact入力ページの
   Primary Button(`.page-id-78 .wpcf7-form .hnm-submit-btn`)とRendered DOM
   実測で完全に同一のVisual Design(background-color/color/border/
   border-radius/font-size/font-weight/line-height/padding/box-shadow/
   transition)へ揃えた。Contact側の値をそのまま複製しており、推測による
   近似は行っていない。padding/font-size/line-height/border-radiusは
   `.hnm-confirm-edit-btn`と同一の値のため、2Buttonのheightは追加のheight
   指定なしで一致する(Rendered DOM実測で上端・下端の一致を確認済み)。
   disabled状態(Turnstile未完了・送信処理中)は、Contact側と同じ
   `opacity:0.35;cursor:not-allowed`のみを適用し、Primary enabled colorへは
   強制変更しない(操作不可であることが視覚的に分かる状態を維持)。 */
.hnm-contact-confirm .wpcf7-form .hnm-submit-btn {
  display: inline-block;
  box-sizing: border-box;
  width: var(--hnm-confirm-action-width);
  background-color: var(--wp--preset--color--sango-main, #0d3255);
  color: #fff;
  border: none;
  border-radius: var(--wp--custom--rounded--medium, 12px);
  padding: 0.4em 1.3em;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.7;
  cursor: pointer;
  box-shadow: var(--wp--custom--shadow--medium, 0 6px 13px -3px rgba(0, 12, 66, 0.1), 0 0 1px rgba(0, 30, 100, 0.1));
  transition: box-shadow 0.2s ease, opacity 0.2s ease;
}
.hnm-contact-confirm .wpcf7-form .hnm-submit-btn:hover:not(:disabled) {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}
.hnm-contact-confirm .wpcf7-form .hnm-submit-btn:focus-visible {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}
.hnm-contact-confirm .wpcf7-form .hnm-submit-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

@media screen and (max-width: 480px) {
  .hnm-confirm-actions {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .hnm-confirm-edit-btn,
  .hnm-contact-confirm .wpcf7-form .hnm-submit-btn {
    width: 100%;
    text-align: center;
  }
}

/* ==========================================================================
   Phase 2B-2.17.3: Contact Complete Page(/contact/complete/、投稿ID146、
   body class .hnm-contact-complete、Confirmと同じbody_classフィルター方式で
   scope)。「TOPに戻る」Buttonは、Contact入力ページのPrimary Button
   (`.page-id-78 .wpcf7-form .hnm-submit-btn`)のcomputed styleをそのまま
   複製した(background-color/color/border/border-radius/font-size/
   font-weight/line-height/padding/box-shadow/transition、Phase 2B-2.17.1で
   送信ボタンをConfirmへ複製した際と同じ手法)。Widthは指定せず
   (display:inline-block、内容依存)、Contact Primary Buttonと同様に
   不要なfull-width化はしていない(SP専用のwidth:100%等も追加していない
   — Contact Primary Button自体がSP幅でも100%化されない仕様のため)。
   Button→FooterのVertical Rhythmは、Contact Primary Button→Footerの
   実測Reference Gap(72px/480px以下・73.671875px/481px以上)へ
   margin-bottomで一致させた。
   **実装上の発見**: 初回実装時、`.hnm-complete-actions{margin-bottom:...}`
   (class1つ、specificity内訳0-1-0)を指定したが、SANGO側に既存の構造的
   ルール`.sgb-full-bg__content > :last-child{margin-bottom:0}`
   (class+疑似class、specificity内訳0-2-0)が存在し、こちらの方が
   詳細度が高いため無効化されていた(Contact入力ページではCF7がform全体を
   `<div class="wpcf7...">`でラップするため、この`:last-child`はその外側
   divに効き、Buttonを直接ラップする`<p>`自身のmargin-bottom(25.68px)は
   影響を受けない。一方Complete Pageの`<p>`はwp:htmlブロックの直接出力で
   ラップdivが無いため、`<p>`自身が`.sgb-full-bg__content`の直接の
   最後の子要素になり、同じ`:last-child`ルールがそのまま効いてしまって
   いた)。ヘッドレスChromeのCSS.getMatchedStylesForNodeで実際に競合している
   ルールを特定したうえで、`.hnm-contact-complete .hnm-complete-actions`
   (class2つ、specificity内訳0-2-0、詳細度をSANGO側と同点にした上で子
   テーマCSSの読み込み順(SANGOのinline stylesheetより後)により後勝ちさせる)
   へ変更し、`!important`は使用せずに解決した。なお、margin-bottomの値は
   目標の最終Gap値そのものではなく「目標値 − セクション自体のpadding-bottom
   (3rem=48px、全幅で一定と実測確認済み)」である点に注意(margin-bottomは
   このpadding-bottomと加算されるため、目標73.671875px/481px以上・72px/
   480px以下に対し、指定値は25.671875px/24pxとした)。 */
.hnm-contact-complete .hnm-complete-actions {
  text-align: center;
  margin: 0 0 25.671875px;
}
.hnm-contact-complete .hnm-complete-top-btn {
  display: inline-block;
  background-color: var(--wp--preset--color--sango-main, #0d3255);
  color: #fff;
  border: none;
  border-radius: var(--wp--custom--rounded--medium, 12px);
  padding: 0.4em 1.3em;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.7;
  text-decoration: none;
  cursor: pointer;
  box-shadow: var(--wp--custom--shadow--medium, 0 6px 13px -3px rgba(0, 12, 66, 0.1), 0 0 1px rgba(0, 30, 100, 0.1));
  transition: box-shadow 0.2s ease, opacity 0.2s ease;
}
.hnm-contact-complete .hnm-complete-top-btn:hover {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}
.hnm-contact-complete .hnm-complete-top-btn:focus-visible {
  box-shadow: 0 12px 45px -9px rgba(0, 0, 0, 0.23);
}
@media screen and (max-width: 480px) {
  .hnm-contact-complete .hnm-complete-actions {
    margin-bottom: 24px;
  }
}

/* ==========================================================================
   Phase 2B-2.6: Subpage Breadcrumb + Page Title Refactor
   対象: page-1column.php テンプレートの固定ページのみ(TOPのpage-forfront.php
   テンプレートには影響しない)。
   - Page Title(h1.page-title)を視覚的に非表示にしつつ、スクリーンリーダーからは
     引き続き認識可能な状態を維持する(WordPress core標準のclipベース手法。
     display:none/visibility:hidden/aria-hidden/opacity:0単体/font-size:0単体は
     使用しない)。
   - パンくず最後の項目(現在ページ名)の後ろに付く区切り記号(::after)を除去し、
     「ホーム ＞ 現在のページ名」で終わる形にする。区切り記号自体の見た目は
     変更しない(SANGO標準の＞をそのまま使用)。

   Phase 2B-2.14追記: News Archive/Category Archive/Single(独自テンプレート、
   .page-template-page-1columnクラスは付与されない)にも同じ視覚方針を
   適用するため、WordPress標準body class(.post-type-archive-hnm_news /
   .tax-hnm_news_category / .single-hnm_news)をセレクタへ追加した。
   ルール自体は複製せずセレクタ追加のみ。
   ========================================================================== */
.page-template-page-1column .page-title,
.post-type-archive-hnm_news .page-title,
.tax-hnm_news_category .page-title {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.page-template-page-1column .breadcrumb li:last-child:after,
.post-type-archive-hnm_news .breadcrumb li:last-child:after,
.tax-hnm_news_category .breadcrumb li:last-child:after,
.single-hnm_news .breadcrumb li:last-child:after {
  content: none;
}

/* ==========================================================================
   Phase 2B-2.16: Page Header / Breadcrumb area の下側余白を圧縮。

   Read Only調査(ヘッドレスChrome実測)で、Breadcrumb下端から最初のMain
   Section開始までの空白(1440px時31.7px、375px時21.6px)は、親テーマの
   以下3ルールの積み重ねであることを特定した:
   - `.article-header{margin-bottom:10px}`(基準、全幅)
   - `.article-header{padding:25px 40px 10px}`(1030px以上)/
     `{padding:20px 25px 10px}`(769-1029px)の`padding-bottom:10px`部分
     (769px以上のみ、375px等のSPでは元々padding-bottom自体が0)
   - `.entry-content{padding-top:10px}`(基準、全幅、`padding:10px var(...) 0`)
   Visual H1(`.page-title`)はPhase 2B-2.6のvisually-hidden手法により
   `position:absolute`で通常フローから外れているため、この空白には寄与しない
   (H1のvisibility/DOM構造は無変更)。

   `.article-header`のpadding-bottom/margin-bottomのみを0へ縮小し、
   `.entry-content{padding-top:10px}`(約1.7pxの`*:first-child{margin-top:
   0.1em}`込み)をそのまま残すことで、Breadcrumb→Main Contentの空白が
   全幅で約11.6〜11.7px(目安8〜16pxの範囲内)へ収まる。Breadcrumb本体の
   文言・link・aria-current・Typography、H1のvisually-hidden実装は無変更。
   News Archive/Category Archive/Singleも同じ`<header class="article-header
   entry-header page-header">`構造を使用するため、既存パターンと同様に
   body classをセレクタへ追加する。 */
.page-template-page-1column .article-header,
.post-type-archive-hnm_news .article-header,
.tax-hnm_news_category .article-header,
.single-hnm_news .article-header {
  padding-bottom: 0;
  margin-bottom: 0;
}

/* ==========================================================================
   Phase 2B-2.16.1: First Main Section Top Padding Refinement。

   Phase 2B-2.16実機確認の結果、Breadcrumb直後の最初のMain Content Section
   (About「事業内容」/Manufacturers「一つひとつのご縁を大切に」/Company
   「代表者挨拶」/Contact「お問い合わせ」)のtop paddingがまだ大きく見える
   というフィードバックを受け、対象4ページの最初の`wp:sgb/full-bg`ブロック
   にのみ`className:"hnm-first-main-section"`を付与した(既存の`hnm-contact-
   -section`と同じパターン)。

   実際のpadding値は`.sgb-full-bg`要素のインラインstyle(`padding-top:3rem`)
   として`paddingRem`ブロック属性からレンダリングされており、インライン
   styleは外部セレクタより詳細度が高いため、`!important`なしでは上書き
   できない。新設classをこの4ブロックのみへ限定して付与し、上書き対象
   プロパティも`padding-top`1点のみに絞ることで、影響範囲を最小限にした
   上での使用とした(全サイト波及・広範なselectorへの`!important`は
   CLAUDE.md方針により避けているが、本ルールは特定4ブロックの1property
   に閉じたスコープの例外として扱う)。`paddingRem:3`属性自体・
   marginRem・bgColor・anchor等の他属性は変更していない。2Section目以降
   ・TOP・Privacy・Newsはこのclassを持たないため無変更。Page Header
   (`.article-header`のpadding-bottom/margin-bottom)・Breadcrumbはこの
   Phaseでは変更せず、Phase 2B-2.16の状態を維持する。

   **Phase 2B-2.16.2で更新**: 当初3rem(48px)→2rem(32px、本コメントの
   旧値)としたが、実機確認の結果まだ広く見えるとのフィードバックを受け、
   推測ではなく`/news/`(お知らせArchive、ユーザー実機確認で理想的とされた
   基準)の実測Visual Gapに合わせて再調整した。ヘッドレスChromeで実測した
   「Breadcrumb bottom→最初の可視見出しtop」のVisual Gap: News=11.7px
   (1440px)/11.6px(375px)に対し、対象4ページ(いずれも同一構造・同一値)は
   padding-top:2rem時点で43.7px(1440px)/43.6px(375px)。差分(32.0px)が
   当時のpadding-top値(32px)とほぼ完全に一致したため、`padding-top:0`を
   実際にheadless Chrome上で適用して検証したところ、両幅ともNewsの実測値
   と誤差0pxで一致した(43.7-32=11.7、43.6-32=11.6)。H2見出し自体のmargin
   (top/bottom)は変更していない(padding-top調整のみで一致したため)。
   `padding-bottom:3rem`(48px)は変更していない(次Sectionとの Background
   Band区切りを維持するため)。HTML側(class付与)は本Phase時点で既に
   完了しているため、Phase 2B-2.16.2ではこのpadding-top値の変更のみ
   (CSSのみ、DB更新なし)。 */
.hnm-first-main-section .sgb-full-bg {
  padding-top: 0 !important;
}

/* ==========================================================================
   Phase 2B-2.16.3: Privacy / Company Vertical Rhythm Refinement。

   A. Privacy(投稿ID3、`.privacy-policy` body class): 実機確認の結果、
   Breadcrumb→本文冒頭の段落の余白が、Aboutの「Breadcrumb→事業内容見出し」
   の余白より小さく見えるとのフィードバックを受けた。ヘッドレスChromeで
   実際のテキスト行のトップ座標(Range.getClientRects())を実測したところ、
   両ページとも要素のborder-box top自体は同一(Breadcrumb bottomから11.7px
   /11.6px、Phase 2B-2.16.2確定値)だったが、Aboutの見出しは`sgb-heading__inner`
   span自体に装飾用padding-top(9.2448px@768px以上/8.64px@480px以下)を
   持つため、可視テキストの開始位置がPrivacyの段落(この装飾paddingを
   持たない通常の`<p>`)より下がっていることが原因と判明した。
   実測した「Breadcrumb bottom→可視テキストtop」のGapはAbout=22.9375px
   (481px以上)/21.21875px(480px以下)、Privacy(変更前)=15.703125px/
   15.59375px。差分(7.234375px/5.625px)をChrome DevTools Protocol上で
   実際に候補値を適用して検証し、Privacy本文冒頭の段落にのみ同量の
   padding-topを追加することで誤差0pxの完全一致を確認した(推測値では
   なく実測・実地検証による決定)。本文2段落目以降・見出しspacing・
   List spacing・制定日・Turnstile/GA記載・Backgroundは無変更。
   対象は`.wp-block-group`直下の最初の`<p>`のみ(`:first-child`)で、
   `.privacy-policy`スコープのためPrivacy以外のページには一切影響しない。

   B. Company(投稿ID89、`.page-id-89`): 実機確認の結果、「代表者挨拶」
   (H2)→「日本の良いものを、もっと身近に。」(H3)の余白が、同ページの
   「Breadcrumb→代表者挨拶」の余白より明らかに大きく見えるとのフィード
   バックを受けた。実測の結果、H3の親テーマ由来のデフォルトmargin-top
   (42.8px@481px以上/40px@480px以下)がH2のmargin-bottom(13.696px、
   Aboutの見出しと共有の値のため無変更)とmargin collapseし、Gap Bが
   64.828125px(481px以上)/61.171875px(480px以下)というReference Gap A
   (22.9375px/21.21875px)の約2.8〜2.9倍の余白になっていたことが原因と
   判明した。H2側のmargin-bottomは変更せず、このH3のみをChrome DevTools
   Protocol上で負のmargin-top候補値を実地検証し、margin-top:-12.78125px
   でGap A・Gap Bが誤差0.03px以内(481px以上で誤差0px、480px以下で誤差
   -0.03px)で一致することを確認した。1つのnegative margin値で全11幅を
   カバーできたため、メディアクエリは不要だった。「代表者挨拶」自体の
   位置(Breadcrumb→代表者挨拶)・本文・署名・Lead→本文1段落目・段落間・
   事業者概要・Table・Contactはいずれも無変更。文言は一言一句変更して
   いない(CSSのみ、DB更新なし)。

   **Phase 2B-2.16.5で更新(A項)**: 実機確認の結果、Breadcrumb→本文冒頭を
   Aboutの見出しGapへ一致させるという当初方針(21〜23px)自体が、Privacy
   本文内の他の自然な段落リズムと比べて狭すぎることが判明した。ユーザー
   指示によりReference Paragraph(「また、後述する...」)の前後Gapを新た
   な基準とし、padding-top値を7.234375px/5.625px(旧)→19.296875px
   (481px以上)/16.671875px(480px以下)へ更新した(Chrome DevTools
   Protocol実地検証により、Reference Top Gap=35px/32.265625pxと誤差0px
   で一致することを確認)。Intro Bottom Gap側(下記Phase 2B-2.16.4の
   `h2:first-of-type`ルール)も同時に見直し、当該ルール自体を削除して
   いる(詳細は下記Phase 2B-2.16.4のコメント内Phase 2B-2.16.5更新箇所を
   参照)。

   **Phase 2B-2.16.5で更新**: Company代表者挨拶の本文を確定稿へ全面
   差し替えし、キャッチコピー(H3)を「H2直後」から「問題意識を説明した
   3段落目の後、本文中盤」へ移動した(post_content変更、詳細はPhase
   2B-2.16.5のログを参照)。本ルールはH3がH2に隣接していた旧構造専用の
   margin-top調整だったため、H3の前後がどちらも通常の`<p>`になった新
   構造ではそのまま流用できない(前段落に不自然に接近する)と判断し、
   値を全面的に再検証した。実測の結果、Company本文内の通常の
   段落間隔(Paragraph→Paragraph、「自然なリズム」)は35px(481px以上)/
   32.265625px(480px以下)であり、この値をキャッチコピー前後のGapの
   目標とした(ユーザー指示「前後で自然なParagraph間隔、大きく非対称に
   しない」に対応)。H3の前後をChrome DevTools Protocol上で実地検証し、
   margin-top(-3.671875px/481px以上、-3.234375px/480px以下)・
   margin-bottom(20.196px/481px以上、17.925px/480px以下)の組み合わせ
   で、キャッチコピー前後のGapが本文の自然な段落間隔(35px/32.265625px)
   と誤差0pxで一致することを確認した。旧`margin-top:-12.78125px`の
   単一ルールを置換する形で更新し(新規ルールを重ねていない)、
   「代表者挨拶」H2自体の位置・Font・Design・Breadcrumb→代表者挨拶の
   spacingは無変更。 */
.privacy-policy .entry-content .wp-block-group > p:first-child {
  padding-top: 16.671875px;
}

@media (min-width: 481px) {
  .privacy-policy .entry-content .wp-block-group > p:first-child {
    padding-top: 19.296875px;
  }
}

.page-id-89 .entry-content h3 {
  margin-top: -3.234375px;
  margin-bottom: 17.925px;
}

@media (min-width: 481px) {
  .page-id-89 .entry-content h3 {
    margin-top: -3.671875px;
    margin-bottom: 20.196px;
  }
}

/* Phase 2B-2.17.8追加指示②: 事業者概要Table第一列(ラベル列)が狭い画面で
   途中改行される(「Webサイ/ト」等)不具合の修正。Company Page(ID89)には
   `wp:table`が本文中に1つしか存在しないため、`.page-id-89 .wp-block-table`
   のscopeだけで他ページ・他Tableへ一切波及しない。`white-space:nowrap`で
   折り返し自体を禁止したうえで、`width:1%`(auto table layoutにおいて
   「nowrap内容の最小必要幅まで縮める」古典的な手法、固定pxを推測で
   指定していない)を組み合わせ、ラベル列を必要最小限の幅に保ちつつ、
   残りの幅を値列(第二列)へ最大限確保する。ラベル自体のfont-size/color/
   Table border/背景/paddingはいずれも無変更。 */
.page-id-89 .wp-block-table td:first-child {
  white-space: nowrap;
  width: 1%;
}

/* ==========================================================================
   Phase 2B-2.16.4: Privacy / Footer Vertical Rhythm Final Refinement。

   A. Privacy冒頭(Intro→最初のH2): Phase 2B-2.16.3でBreadcrumb→Intro(Gap A)は
   Aboutと一致させたが、続くIntro→「1. 個人情報等の取得」(Gap B)は63〜68px
   (実測、Range基準)とGap A(21〜23px)よりはるかに大きく、視覚的に不均等
   だった。原因はH2の親テーマ由来デフォルトmargin-top(56px/480px以下・
   59.92px/481px以上)がIntro段落のmargin-bottom(24px/25.68px)とmargin
   collapseし、Gap Aの約3倍の余白になっていたため。対象は本文最初のH2の
   みに限定(`:first-of-type`、本文途中の他のH2見出しspacingには一切
   影響しない)。Chrome DevTools Protocol上でnegative margin候補値を実地
   検証し、Gap A=Gap Bとなる値(-10.053125px/480px以下、-11.0625px/481px
   以上)を決定した。

   B. Privacy末尾(お問い合わせ文→制定日→Footer): 制定日段落(font-size
   14px、margin-bottom 0px)とFooterの間(Gap D)が4.6pxしかなく、直前の
   お問い合わせ文→制定日の余白(Gap C、31〜34px、ユーザー指定によりこちら
   をReferenceとして維持)より明らかに詰まって見えた。Global Footerの
   margin-topではなく、Privacy末尾の制定日段落(`:last-child`、Privacy内で
   この1段落のみに一致)のmargin-bottomのみを調整し、Gap D=Gap Cとした
   (他ページのFooter位置には一切影響しない)。実地検証により決定した値:
   26.65625px(480px以下)/29.390625px(481px以上)。

   C. Privacy本文内の枠付きブロック(`wp:list`、親テーマ既定の
   `.wp-block-list{border:2px solid #e8e8e8}`相当のborder付きul)の前後
   spacingが非対称だった(直前の文章→ブロック開始のGap Gは28〜31pxと
   自然だが、ブロック終了→直後の文章のGap Hはmargin-bottom:0のため4px
   しかなく、枠と本文が接して見えた)。`.privacy-policy`スコープの
   `ul.wp-block-list`全4個(直後がH2の2個・直後がPの2個)へ一律で
   margin-bottomを追加したが、H2が後続する2個はH2自身のmargin-top
   (56px/59.92px)の方が大きいためmargin collapseで実質無変更のまま
   (Chrome DevTools Protocolで実測確認済み)、Pが後続する2個(「4.
   第三者提供」の理由リスト→「なお、次項の...」/「5. アクセス解析
   ツール・Cookie」のGoogleリンクリスト→「なお、Googleのサービスを...」)
   のみがGap G=Gap Hへ揃う。枠内部のpadding/li margin/bullet/link/
   border/background/font/line-heightはいずれも無変更。Google関連の
   文言・URL・リンク構造も無変更。値: 24.265625px(480px以下)/27px
   (481px以上)。

   D. Footer(全ページ共通、Global変更): Footer top→HOME(Gap E)が
   HOME→Footer Menu(Gap F)より小さく見える問題を、既存Phase 2B-2.14の
   `.sgb-footer__menu{padding-top:10px}`ルールの値を更新することで解消
   した(新規ルールを積み重ねず、既存ルールを直接修正)。Navy背景色・
   White文字・HOME文言/icon・Footer Menu文言/順序/URL/font-size16px・
   Copyright文言/見た目・Footer backgroundはいずれも無変更、padding-top
   の値のみ変更。値: 12.609375px(480px以下、旧10px)/14.15625px(481px
   以上、旧10px)。全ページ共通のFooter構造のため、TOP/About/
   Manufacturers/Company/Contact/Privacy/Newsすべてに反映される
   (意図した仕様、Part Cの要件どおり)。

   4項目とも、新設セレクタの詳細度で親テーマ既定値を`!important`なしで
   上書きできることを実測で確認済み。DB(`post_content`)は無変更、CSSの
   みで解決した。

   **Phase 2B-2.16.5で更新(A項のみ)**: 実機確認の結果、Intro→最初のH2の
   Gap Bを「Breadcrumb→Intro」のGap Aへ一致させる(21〜23px)という当初
   方針自体が、Privacy本文内の他の自然な段落リズムと比べて不自然に狭い
   ことが判明した。ユーザー指示によりReference Paragraph(「また、後述
   する...」)の前後Gap(Top: 35px/481px以上・32.265625px/480px以下、
   Bottom: 68.234375px/481px以上・63.265625px/480px以下)を新たな基準
   とし、Intro Top Gap・Intro Bottom Gapをこれへ合わせ直した。Intro
   Bottom Gapの目標値(68.234375px/63.265625px)は、実はH2のmargin-top
   について一切上書きしない「親テーマ既定のmargin-collapse動作」そのもの
   と完全一致することを実測で確認したため、本`h2:first-of-type`ルール
   自体を削除した(新しいoverride値を重ねるのではなく、不要になった
   ルールを撤去する形で整理)。Intro Top Gapの調整は、直前の
   `.privacy-policy...p:first-child{padding-top}`ルール側で対応した
   (下記、Phase 2B-2.16.5参照)。B・C・D項(末尾制定日・枠付きブロック・
   Footer)は本Phaseでは変更していない。 */
.privacy-policy .entry-content .wp-block-group > p:last-child {
  margin-bottom: 26.65625px;
}

.privacy-policy .entry-content .wp-block-group > ul.wp-block-list {
  margin-bottom: 24.265625px;
}

@media (min-width: 481px) {
  .privacy-policy .entry-content .wp-block-group > p:last-child {
    margin-bottom: 29.390625px;
  }

  .privacy-policy .entry-content .wp-block-group > ul.wp-block-list {
    margin-bottom: 27px;
  }
}

/* ==========================================================================
   Phase 2B-2.8: Footer Typography(色はContent Block ID48のsgb/footer
   block属性側で変更済み。ここではfont-sizeのみ、SANGO標準デフォルト値
   (menu 14.5px / copyright 13.5px)から可読性向上のため引き上げる)。
   ========================================================================== */
.sgb-footer__menu li,
.sgb-footer__privacy-policy-link {
  font-size: 16px;
}
.sgb-footer__copyright {
  font-size: 14px;
}
.sgb-footer__menu a:focus-visible {
  outline: 2px solid #fffffc;
  outline-offset: 2px;
}

/* ==========================================================================
   Phase 2B-2.9: Main Content Kumiko Background(全ページ共通、方式変更)
   asset: assets/日之本屋_HP_背景1.png → Media Library attachment ID92
   (wp-content/uploads/2026/09/hnm-kumiko-background-1.png)。

   Phase 2B-2.8はWhite section単位で:has()判定してパターンを敷いていたが、
   今回は「各ページのメインコンテンツ全体の最背面」へ1枚のcontinuousな
   backgroundとして敷く方式へ変更(section単位で背景の開始・終了をしない)。

   対象は`#inner-content`(page-1column.php/page-forfront.phpの両テンプレートが
   共有する、Header/Drawer/Footerの外側にあるページ本体ラッパー)。

   実装時の発見: 当初`.entry-content`(the_content()の実際の出力先、`#main`の
   直接の子)を対象としたが、`#main`にSANGO標準の`max-width:800px`(単一カラム
   読了幅)が既定で設定されており、`.entry-content`もこの800px幅に収まって
   いた。一方`#inner-content`(`.wrap`)はこの800px制約の外側にあり実測1180px
   (`--wp--custom--wrap--width`相当)で、Header/Drawer/Footerは含まない。
   `#main`のreading-width制約自体は今回変更対象外(サイト全体の単一カラム
   読了幅という、より大きな既存設計のため)とし、Patternの適用範囲を
   `#inner-content`(1180px)へ広げることで、800px案より左右の無地余白を
   縮小しつつ、Header/Drawer/Footerの除外は維持した。White/Ivory sectionの
   色面自体(`.sgb-full-bg`)は引き続き`#main`の800px幅に収まるため、
   1180pxとの差分(左右合計約190px)にもPatternが見える形になる。

   - `#inner-content::before`という1つの疑似要素のみを使用(section数に応じて
     複数回描画しない、Performance方針に合致)。z-index:0でcontentより下に固定し、
     `#inner-content > *`側(実質`#main`)にz-index:1を与えることで、DOM順・
     flow種別に依存せず常にcontentがpatternの上に来ることを保証する。
   - 濃さ(opacity)は引き続き --hnm-kumiko-opacity という1つのCSS変数のみで
     一元管理(Phase 2B-2.8で0.55に設定、Phase 2B-2.9.5.1でユーザー指示により
     0.65へ変更)。
   - background-size: cover / contain は使用しない(画像の縦横比を維持するため)。
     background-repeat: repeat、background-position: center topで
     ページ全体を通じて共通化し、section境界でpatternが途切れたり
     位置が飛んだりしない(main content wrapper1つに対して1回だけ適用するため)。
   - pointer-events:noneでフォーム・ボタン等の操作を妨げない。
   ========================================================================== */
:root {
  --hnm-kumiko-opacity: 0.55;
  --hnm-kumiko-tile-size-pc: 1000px;
  --hnm-kumiko-tile-size-sp: 640px;
}
/* Phase 2B-2.9.3で#content::before方式(下記「Kumiko Layer Repair」ブロック
   参照)へ全面置き換えたため、#inner-content側の記述はここには残していない。 */

/* ==========================================================================
   Phase 2B-2.9: White section = pattern透過(維持)
   Phase 2B-2.9.5: Ivory/Beige section = 角丸panel → Full-width Beige Pattern

   White(#fffffc)のsectionは、実際の色を持つ.sgb-full-bg__coverを
   transparentにし、背後の#content(Phase 2B-2.9.3以降)のKumiko patternを
   そのまま見せる(inline style="background-color:#fffffc"を上書きするため
   !important使用。SANGO生成のinline styleを子テーマから安全に上書きする
   既存パターンを踏襲)。

   Ivory/Beige(#F7F3EA)のsectionは、Phase 2B-2.9〜2.9.4では「画面端まで
   色を伸ばさない角丸panel」(left:50%+transform+width:min(1280px,...)+
   border-radius:16px)として扱っていたが、Phase 2B-2.9.5でユーザー指示により
   「viewport全幅のBeige patterned band」へ変更した。角丸・左右外側margin・
   panel max-width・shadowはいずれも廃止し、White sectionと同じ「alignfull
   全幅」の考え方に統一する(具体的な位置指定を子テーマ側で行わないことで、
   Phase 2B-2.9.3で追加した`.wp-block-sgb-full-bg.alignfull,
   .sgb-full-bg__cover.alignfull{margin-left:calc(50% - 50vw + ...)!important;
   width:calc(100vw - ...)!important}`という共通ルールへそのまま委ねる)。

   背景画像は`assets/日之本屋_HP_背景2.png`(Media Library attachment ID105、
   `hnm-beige-background-1.png`、1366×768、ベージュ地に散らばる線状パターン)。
   `background-size`は指定しない(=初期値`auto`、原寸)ことで縦横比を完全に
   維持し、不自然な引き伸ばし・圧縮を避ける。SANGO標準の`.sgb-full-bg__cover
   {background-size:cover}`(specificity 0,1,0)を、本ルール(属性セレクタ込みで
   specificity 0,2,0)側の明示的な`background-size:auto`で確実に上書きする。
   `background-repeat:repeat`とすることで、section高さが768pxを超える場合も
   pattern が縦方向に自然に続き、突然無地にならないようにする。画像の四辺は
   ほぼ均一なベージュ地(実測RGB差3以内)のため、tile継ぎ目は目立ちにくい。
   inline style="background-color:#F7F3EA"(既存のSANGO block属性)は
   そのまま維持し、画像読み込み前後のfallback色として機能させる(新しい
   Beige colorを追加しない、ユーザー指示準拠)。

   【Phase 2B-2.9.5.1追記】濃度調整のため`--hnm-beige-opacity`を新設し
   `opacity`を追加した(導入時点では明示的なopacity指定がなく実質1.0
   〔不透明〕だったことをRead Only調査で確認したうえで、ユーザー指示により
   0.9へ設定)。`.sgb-full-bg__cover`は背景専用のposition:absolute要素で
   見出し・本文(`.sgb-full-bg__content`側、別要素)を含まないため、
   opacity付与は背景の濃さのみに影響し文字の可読性には影響しない。

   【Phase 2B-2.9.5.2追記(1回目)】assetsフォルダの`日之本屋_HP_背景2.png`が
   Phase 2B-2.9.5時点の版から更新されていることをsha256/pixel比較で確認
   した(同一1366×768だが画素値に差分あり、模様の微調整版)。旧Media ID105
   (`hnm-beige-background-1.png`)は削除せずrollback sourceとして維持し、
   新規Media(**ID107**、`hnm-beige-background-v2.png`)として登録し、
   background-imageのURLのみ切り替えた。アップロード後、ローカルasset
   原本とPillowで画素単位比較し完全一致を確認済み。

   【Phase 2B-2.9.5.2追記(再実施)】ユーザーからの再指示により、assetsフォルダを
   改めて読み込み直したところ、`日之本屋_HP_背景2.png`はハッシュ・寸法とも
   1回目登録時(ID107)から**変更なし**であることをsha256/pixel比較で確認した。
   同一内容のため新規Media登録は行わず、引き続きID107をそのまま参照する。
   あわせてユーザー指示により`--hnm-beige-opacity`を0.9→0.8(-0.10)へ
   変更した。background-repeat・background-position・background-size:auto
   はいずれも変更していない。

   【追記(再々実施)】ユーザー指示により`--hnm-beige-opacity`をさらに
   0.8→0.7(-0.10)へ変更した。背景2のasset自体・background-repeat/
   position/size:autoは変更していない(背景1画像の再更新〔v4、ID109〕とは
   独立した指示)。
   ========================================================================== */
:root {
  --hnm-beige-opacity: 0.7;
}
.sgb-full-bg__cover[style*="background-color:#fffffc"] {
  background-color: transparent !important;
}
.sgb-full-bg__cover[style*="background-color:#F7F3EA"] {
  background-image: url("https://hinomotoya.shop/wp-content/uploads/2026/09/hnm-beige-background-v2.png");
  background-repeat: repeat;
  background-position: center top;
  background-size: auto;
  opacity: var(--hnm-beige-opacity);
}

/* ==========================================================================
   Phase 2B-2.9.3: Main Section Width Unification(TOPを基準に統一)

   問題(Read Only調査で特定): `.wp-block-sgb-full-bg`(各section outer wrapper)
   と`.sgb-full-bg__cover`は両方とも`alignfull`クラスを持つが、これを
   画面全幅(100vw相当)へ強制するSANGO標準ルール
   `html .page-forfront .alignfull, html .sgb-content-block .alignfull{
   margin-left:calc(50% - 50vw + var(--sgb-scroll-bar-width,0px)/2)!important;
   max-width:calc(100vw - var(--sgb-scroll-bar-width,0px))!important;
   width:calc(100vw - var(--sgb-scroll-bar-width,0px))!important}`
   (global-styles-inline-css、全ページ共通で出力)は、`.page-forfront`
   (TOP)または`.sgb-content-block`(Header/Footer Content Block)にしか
   一致しない。下層6ページ(`.one-column`)の`.wp-block-sgb-full-bg`は
   このいずれにも一致しないため対象外となり、素の(width指定のない)block
   のまま、祖先である`#main`(`.one-column #main{max-width:800px}`、
   親テーマ標準)の幅に収まっていた。`.sgb-full-bg{position:relative}`
   (SANGO標準)の実測幅がTOPでは約viewport幅、下層ページでは約800px前後
   だったことになり、`.sgb-full-bg__cover`の`calc(100% - 64px)`(直上の
   Ivory panelルール)がこの祖先幅を基準に計算されるため、Ivory panelが
   下層ページで約656px(TOP約1280px、いずれもPC1440px時点の既存記録値)と
   狭くなっていた。TOP側にCSSバグは見つからなかった(TOP自身は`.page-forfront`
   スコープのSANGO標準ルールにより意図通り画面全幅になっている)。

   対応: SANGO側の`html .page-forfront .alignfull`ルールと同一の計算式を、
   `.wp-block-sgb-full-bg.alignfull`と`.sgb-full-bg__cover.alignfull`へ
   テンプレートを問わず共通で適用する。TOPでは既存のSANGO標準ルールと
   全く同じ計算結果になるため視覚的な変更はなく(数値を独自に決め打ちせず、
   TOP側で実際に使われている式をそのまま再利用)、下層6ページでは
   従来適用されていなかったこの計算が新たに効くようになり、outer section
   width(色帯)がTOPと同じ画面全幅になる。

   影響しないもの: `.sgb-full-bg .sgb-full-bg__content`(実際の見出し・本文・
   ボタンを含む読了幅)は、SANGO標準の
   `.sgb-full-bg .sgb-full-bg__content{margin:0 auto;max-width:calc(
   var(--wp--custom--wrap--max-width) + var(--wp--custom--wrap--mobile--padding)
   *2)}`という、テンプレートに依存しない既存ルールで既に統一されており、
   本ルールは変更していない(本文の折返し幅・読みやすさへの影響なし)。
   直上のIvory panelルール(`min(1280px, calc(100% - 64px))`)・
   White section transparency・section左右padding(`--hnm-section-padding-x`)・
   `#main{max-width:800px}`はいずれも無変更。
   ========================================================================== */
.wp-block-sgb-full-bg.alignfull,
.sgb-full-bg__cover.alignfull {
  margin-left: calc(50% - 50vw + var(--sgb-scroll-bar-width, 0px) / 2) !important;
  max-width: calc(100vw - var(--sgb-scroll-bar-width, 0px)) !important;
  width: calc(100vw - var(--sgb-scroll-bar-width, 0px)) !important;
}

/* ==========================================================================
   Phase 2B-2.9: Section内側padding統一(左右のみ調整。上下は既存
   paddingRem属性(6rem=96px、64〜96pxの推奨範囲内のため今回は維持)を変更しない)。
   .sgb-full-bg__content はinline styleを持たないため!important不要。
   ========================================================================== */
:root {
  --hnm-section-padding-x: 56px;
  --hnm-section-padding-x-sp: 24px;
}
.sgb-full-bg .sgb-full-bg__content {
  padding-left: var(--hnm-section-padding-x);
  padding-right: var(--hnm-section-padding-x);
}
@media screen and (max-width: 767px) {
  .sgb-full-bg .sgb-full-bg__content {
    padding-left: var(--hnm-section-padding-x-sp);
    padding-right: var(--hnm-section-padding-x-sp);
  }
}

/* ==========================================================================
   Phase 2B-2.9: Global Typography — 游ゴシック統一
   body/本文/heading/Navigation/button/form/table/breadcrumb/Footerへ適用。
   Header左上のBrand Name「日之本屋」のみ例外(直後のルールで明示的に除外)。
   CSS変数化することで、theme.jsonのdefault/dfontプリセットを参照する
   既存ブロック・Footer(.dfont)にも波及させ、個別セレクタの重複を避ける。
   Webfontファイルは一切追加していない(OS標準搭載フォントの指定のみ)。
   ========================================================================== */
:root {
  --wp--preset--font-family--default: "Yu Gothic", YuGothic, "游ゴシック体", "Yu Gothic UI", sans-serif;
  --wp--preset--font-family--dfont: "Yu Gothic", YuGothic, "游ゴシック体", "Yu Gothic UI", sans-serif;
}
body {
  font-family: "Yu Gothic", YuGothic, "游ゴシック体", "Yu Gothic UI", sans-serif;
}
/* ==========================================================================
   Phase 2B-2.9(ユーザー追加確定指示): Header Brand Name専用フォント
   Zen Old Mincho(Bold/700)

   テロップ明朝(N仕様)導入は中止(正規Webfont配信手段が未確認のためPending
   としていたが、ユーザー指示によりZen Old Minchoへ正式変更・Pending解除)。

   ライセンス: SIL Open Font License 1.1(商用利用・Web利用・改変・再配布を
   自由に許可。フォント単体販売のみ禁止、本用途は該当しない)。配布元
   Google Fonts / GitHub google/fonts リポジトリ(ofl/zenoldmincho/)で
   Bold(700)ウェイトの存在・日本語(CJK)対応を確認済み。ライセンス全文は
   backups/2026-09-12_phase2b2-9-pre-main-design-unification/
   ZenOldMincho_OFL_license.txt に保存。

   実装方式: Self-host(このドメインからのみ配信)。Google Fonts CDN
   (fonts.googleapis.com/fonts.gstatic.com)を都度参照する方式は、新たな
   外部通信となりPrivacy Policyの開示更新が必要になるが、今回のPhaseは
   Privacy本文の変更が禁止されているため、外部通信を増やさないSelf-host方式
   を採用した。Google Fonts CSS2 APIはCJKを文字頻度ベースで多数の
   unicode-range細分ファイルへ分割しており、「日之本屋」の4文字だけでも
   3つの異なるsubsetファイルにまたがっていたため、そのまま参照せず、
   GitHub google/fonts の分割前フル欠け(ZenOldMincho-Bold.ttf、5.4MB)を
   一度取得し、fonttools(pyftsubset)で「日之本屋」の4文字のみに
   サブセット化・WOFF2変換した(2,432バイト)。子テーマ内
   `fonts/zen-old-mincho-bold-subset.woff2` として自ホストし、外部への
   新規通信は一切発生しない。
   ========================================================================== */
@font-face {
  font-family: "Zen Old Mincho Brand";
  src: url("fonts/zen-old-mincho-bold-subset.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
.sgb-site-branding .wp-block-site-title a {
  font-family: "Zen Old Mincho Brand", serif;
  font-weight: 700;
}

/* ==========================================================================
   Phase 2B-2.9.1: White Section Transparency Fix

   実装時の発見(Read Only調査): Phase 2B-2.9の`.sgb-full-bg__cover[style*=
   "background-color:#fffffc"]{background-color:transparent!important}`は
   正しく機能していたが、page-1column.phpテンプレート(About/Business/
   Manufacturer/Company/Contact/Privacyの6ページ)には、`.sgb-full-bg__cover`
   より1階層外側に`<article id="entry">`という別のラッパーが存在し、
   親テーマ標準CSSの`#entry{background-color:white}`(SANGO標準の「記事カード」
   スタイル、box-shadowは`.one-column`スコープで既にnoneだが背景色は白のまま)
   が、White sectionのすぐ外側で不透明な白を敷いていたことが真因と判明した
   (`.sgb-full-bg__cover`自体は透明化済みでも、その外側の`#entry`が白いため
   Kumiko patternが遮られていた)。SANGOには`.no-bg #entry{background-color:
   transparent}`という同種の既存機構があるが、これは`page-forfront2col-nobg.php`
   という別テンプレート専用のbody classであり、本サイトの`page-1column.php`
   では自動付与されないため、既存の`.page-template-page-1column`スコープ
   (Phase 2B-2.6から使用)で同等の上書きを行う。
   ========================================================================== */
.page-template-page-1column #entry,
.post-type-archive-hnm_news #entry,
.tax-hnm_news_category #entry,
.single-hnm_news #entry {
  background-color: transparent;
}

/* ==========================================================================
   Phase 2B-2.9.1: TOP Hero Kumiko Background Alignment(historical record)

   TOPのHero(「日本の良いものを、もっと身近に。」を含むブロック)は、
   `.header-image`のSANGO Block Scoped CSS属性(post_content内のcss/scopedCSS)
   で`background-color:#F7F3EA`が直接設定されていたため、本Phaseで当該
   block属性自体をtransparentへ変更した(TOP page投稿ID9のpost_content編集、
   詳細はresearch/12参照)。この属性変更自体は現在も有効(無変更)。

   この時点では、Kumiko背景の実体を`body::before`(z-index:-1のpage-level
   pseudo)へ置く方式を採用していたが、Phase 2B-2.9.3で下記の理由により
   `#content::before`方式へ全面置き換えたため、body::before関連のCSSは
   style.css上に残っていない(詳細はPhase 2B-2.9.3ブロック参照)。
   ========================================================================== */
/* ==========================================================================
   Phase 2B-2.9.2: Full-width Kumiko Background(下層6ページへ拡張、historical record)

   TOP専用だったbody::before方式を下層6ページへ共有セレクタ拡張したPhase。
   Phase 2B-2.9.3でbody::before方式自体を`#content::before`方式へ全面
   置き換えたため、本Phaseで追加したCSSはstyle.css上に残っていない。
   ========================================================================== */
/* ==========================================================================
   Phase 2B-2.9.3: Kumiko Layer Repair(body::before方式を撤回し#content::beforeへ)

   問題(ユーザー実機確認): Phase 2B-2.9.2適用後、TOP以外の6ページで
   Kumiko背景が表示されず白一色になっていた。

   Read Only調査で判明した真因: 親テーマ`style.css`(`@media (min-width:769px)`
   内)に`#content.one-column{margin-top:0;background:#fff}`という既存ルール
   が存在した(TOP用の`#content.page-forfront{background:#fff}`と対になる、
   下層6ページ用の不透明白背景)。`#content`は`body`の子孫であり通常のin-flow
   要素として描画されるため、`body::before`(z-index:-1)より必ず手前(上)に
   描画される。Phase 2B-2.9.2まではこの`#content.one-column`の不透明白背景を
   一度も透明化しておらず、body::beforeのKumiko層をちょうど覆い隠していた
   ことが直接の原因と判明した(TOPは`#content.page-forfront{background:#fff}`
   側を既にtransparentへ上書き済みだったため、TOPだけ正常表示されていた)。

   検討: 「body::beforeがhtml/bodyのroot painting layerより背面へ潜っている
   のではないか」という仮説も検証したが、`body{margin:0;background-color:
   #eaedf2}`(親テーマ標準)以外にhtml/bodyへ特別なbackground/isolation/
   transformは存在せず、上記`#content.one-column`の不透明白背景による通常の
   前面遮蔽で説明が付くため、stacking context escapeが主因ではないと判断した。

   方針転換(ユーザー指示: negative z-indexへ固執しない、より単純な方法へ):
   `body::before`(bodyは`position:relative`のみでstacking contextを
   確立しないため、z-index:-1の子要素が意図せずroot側の描画順へ影響されうる
   构造そのものが壊れやすい)をやめ、Header/Drawer/Footerを含まない
   「Main Area」の実体である`#content`(page-forfront.php/page-1column.php
   両テンプレートが共有し、Header/Footerの外側=兄弟要素にあるラッパー)を
   直接のアンカーへ変更した。

   - `#content`に`position:relative`+`isolation:isolate`を付与し、
     `#content`自身の内部に独立したstacking contextを確立する
     (`isolation:isolate`は`position`の値によらずstacking contextを
     生成するCSS標準機構で、negative z-indexの子要素が`#content`の外側
     (親のstacking context)へ意図せず抜け出すことを構造的に防ぐ)。
   - `#content::before`(z-index:-1)を新設。painting orderの規則上、
     stacking contextを確立した要素自身の背景(`#content.page-forfront`
     /`#content.one-column`のSANGO標準`background:#fff`を含む)は
     必ずnegative z-index子要素より先(下)に描画されるため、
     `#content.page-forfront`/`#content.one-column`いずれの不透明白背景も
     `#content::before`のKumiko層を隠さない。これにより、TOP・下層6ページ
     で個別にbackground上書きを行う必要がなくなり(`#content.page-forfront
     {background:transparent}`・`#container{background:transparent}`の
     いずれも不要)、テンプレート分岐のない単一ルールへ単純化できた。
   - `#main`/`#entry`/`.entry-content`等の通常のin-flow子要素は、
     stacking contextのpainting order上必ずnegative z-index要素より
     手前に描画されるため、`#inner-content > *`等へ明示的なz-index付与は
     不要(Phase 2B-2.9由来の当該ルールも削除)。
   - `.page-template-page-1column #entry{background-color:transparent}`
     (Phase 2B-2.9.1)・`.sgb-full-bg__cover[style*="background-color:
     #fffffc"]{background-color:transparent!important}`(Phase 2B-2.9)は、
     `#content::before`より手前(上)に描画される別レイヤーの不透明背景を
     引き続き透明化する役割のため、いずれも無変更で維持している。
   - `#content`は親テーマ側でwidth/max-width指定が一切なく(実測・Read Only
     調査で確認)、body・#container・htmlのいずれにも幅制約がないため、
     `#content::before`は追加のwidth指定なしでviewport全幅(スクロールバー
     幅を除く)まで届く。縦方向は`#content`自身の高さ(内容に応じた自動高)に
     追従するため、ページが長くてもrepeatで最後まで途切れない。
   - Kumiko画像URL・background-repeat・background-position・background-size
     はいずれも変更していない(既存の:root変数をそのまま参照)。opacityの
     値の変遷はPhase 2B-2.9.5.2追記(下記)を参照。元画像(日之本屋_HP_背景1.png)
     も加工していない。
   ========================================================================== */
/* ==========================================================================
   Phase 2B-2.9.5.2: Background Assets Refresh(背景1、2回実施)

   1回目: assetsフォルダの`日之本屋_HP_背景1.png`がPhase 2B-2.9時点の版から
   更新されていることをsha256/pixel比較で確認した(サイズも1195×672→
   1366×768へ変更、模様のデザイン自体が更新されている)。旧Media ID92
   (`hnm-kumiko-background-1.png`)は削除せずrollback source として維持し、
   新Media ID106(`hnm-kumiko-background-v2.png`)として登録した。

   2回目(再実施): ユーザーからの再指示により、assetsフォルダを改めて
   読み込み直したところ、`日之本屋_HP_背景1.png`が1回目登録時からさらに
   更新されていることをsha256/pixel比較で再確認した(同一1366×768だが
   画素内容が相違、模様クラスターの配置が変更)。ID92・ID106のいずれも
   削除せず、**新Media ID108**(`hnm-kumiko-background-v3.png`)として
   登録した。アップロード後、ローカルasset原本とPillow
   (`ImageChops.difference`)で画素単位比較し、`bbox=None`(完全一致)を
   確認済み。

   あわせてユーザー指示により`--hnm-kumiko-opacity`を0.65→0.55
   (-0.10)へ変更した(:root宣言1箇所のみ、下記参照)。

   3回目(再実施): ユーザーが背景1画像を再度更新したとの申告を受け、
   assetsフォルダを改めて読み込み直したところ、`日之本屋_HP_背景1.png`が
   2回目登録時(ID108)からさらに更新されていることをsha256/pixel比較で
   再確認した(同一1366×768だが画素内容が相違、hex柄がviewport全面に
   均等配置されたtileパターンへ変更)。ID92・ID106・ID108のいずれも削除せず、
   **新Media ID109**(`hnm-kumiko-background-v4.png`)として登録した。
   アップロード後、ローカルasset原本とPillowで画素単位比較し`bbox=None`
   (完全一致)を確認済み。opacity(0.55)は今回変更していない。

   background-image のURLは最終的に新Media(ID108)を参照。
   background-repeat・background-position・background-size・section構造・
   inner content widthはいずれも変更していない。
   ========================================================================== */
#content {
  position: relative;
  isolation: isolate;
}
#content::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image: url("https://hinomotoya.shop/wp-content/uploads/2026/09/hnm-kumiko-background-v4.png");
  background-repeat: repeat;
  background-position: center top;
  background-size: var(--hnm-kumiko-tile-size-pc) auto;
  opacity: var(--hnm-kumiko-opacity);
  pointer-events: none;
}
@media screen and (max-width: 767px) {
  #content::before {
    background-size: var(--hnm-kumiko-tile-size-sp) auto;
  }
}

/* ==========================================================================
   Phase 2B-2.9.3: Contact Section Footer Gap(SUPERSEDED、Phase 2B-2.9.5)

   Phase 2B-2.9.3で、Canonical「お取引・お問い合わせ」section(TOP/About/
   Business/Manufacturers/Company)の直後に、PC 48px/SP 32pxの
   margin-bottomを追加していた(`.hnm-contact-section`class、当時は
   White/Ivory角丸panel構成だったため「Footer直前だけ区切る」目的だった)。

   Phase 2B-2.9.5でBeige sectionをfull-width band化したことに伴い、
   ユーザー指示によりこの追加余白を撤回した。Main Content最下部(Beige
   PatternまたはKumiko Pattern)からFooter(Navy)へ、追加の空白帯を挟まず
   自然に連続させる仕様へ変更している。`hnm-contact-section`class自体は
   HTML(post_content)側にそのまま残っているが(className除去は行っていない、
   将来別用途で再利用できるよう温存)、対応するCSSルールを削除したため、
   現在は視覚的な効果を持たない。
   ========================================================================== */

/* ==========================================================================
   Phase 2B-2.9.5: Main→Footer Direct Connection(隙間の完全排除)

   `.hnm-contact-section`のmargin-bottomを削除した後もなお、下層6ページで
   Main ContentとFooterの間に約128px(1440px実測時)の「Kumiko背景だけの
   隙間」が残っていることをヘッドレスChrome実測(getBoundingClientRect)で
   発見した。内訳をDOM階層ごとに実測分解した結果、いずれも今回のDesign
   Systemとは無関係な、SANGO標準テンプレートの既存要素/既定paddingが
   原因と判明した(`#content`自体はFooterと隙間0で接しており、この余白は
   すべて`#content`の内部、`#entry`より下に存在していた)。

   1. `<footer class="article-footer"><aside><div class="footer-contents">
      </div></aside></footer>`(SANGO標準、投稿のタグ/シェア/著者情報用の
      テンプレート要素)が、6ページとも中身が空(textContent=""、実機
      HTML実測で確認済み)にもかかわらず、自身のpadding/marginにより
      約68px分の高さを占めていた。
   2. `#entry`自身の`margin-bottom`(SANGO標準、実測25.68px)。
   3. `#content`自身の`padding-bottom`(SANGO標準、実測34.24px)。

   TOP(page-forfront.php)は`#entry`要素自体を持たないため、この問題は
   発生していない(実測でも隙間0を確認済み)。対応は`.page-template-
   page-1column`スコープに限定し、上記3点のみを個別に無効化する
   (Footer自身のbackground/menu/padding/copyright/Typographyは一切
   変更していない、Footer側へのnegative margin等の帳尻合わせも行って
   いない)。

   Phase 2B-2.14追記: News Archive/Category Archive/Singleは独自テンプレート
   のため.article-footer要素自体を出力しておらず(1のdisplay:none対応は
   不要)、2・3の#entry margin-bottom/#content padding-bottomのみ同じ考え方で
   News系body classへセレクタ追加した。
   ========================================================================== */
.page-template-page-1column .article-footer {
  display: none;
}
.page-template-page-1column #entry,
.post-type-archive-hnm_news #entry,
.tax-hnm_news_category #entry,
.single-hnm_news #entry {
  margin-bottom: 0;
}
.page-template-page-1column #content,
.post-type-archive-hnm_news #content,
.tax-hnm_news_category #content,
.single-hnm_news #content {
  padding-bottom: 0;
}

/* ==========================================================================
   Phase 2B-2.9.4: Desktop Inner Content Alignment Repair

   問題(ユーザー実機確認+ヘッドレスChrome実測で確認): PC幅(900px以上)の
   下層6ページで、見出し・本文の左右が欠けて表示されていた(例:
   「日之本屋の理念(PMVV)」→「理念(PMVV)」)。SP/Hamburger幅(899px以下)は
   正常だった。

   真因(実測confirmed、CDP経由のgetBoundingClientRect/getComputedStyleで
   直接確認): 親テーマ`style.css`の`@media(min-width:769px){ #entry{
   border-radius:var(--wp--custom--rounded--medium); overflow:hidden; } }`
   という既存ルール(角丸カード表現のためのoverflow clipping)が、769px以上の
   下層6ページで常に有効だった。Phase 2B-2.9.3で`.wp-block-sgb-full-bg.
   alignfull`(および`.sgb-full-bg__content`が中央寄せの基準とする
   `.sgb-full-bg`)をviewport全幅化した結果、`.sgb-full-bg__content`
   (見出し・本文を含む読了幅コンテナ、`margin:0 auto`でviewport中央に
   正しく配置されていることを実測確認済み)が`#entry`(`#main`の800px幅の
   まま、`.page-template-page-1column #entry{background-color:transparent}`
   により背景は既に透明化済みだが、box自体は800px)の左右をはみ出すように
   なり、この`overflow:hidden`によって、はみ出した部分(実測で片側約150〜
   210px、viewport幅による)が物理的に切り取られていた(見出しは左側に
   実際の文字があるため欠けて見え、右側は空白部分が主に切られるため
   目立たなかった)。TOP(page-forfront.phpテンプレート)には`#entry`要素
   自体が存在しない(実測でDOM上0件)ため、この問題が最初から発生していない。
   SANGO自身も`.no-bg #entry{overflow:visible}`という同種の解除ルールを
   既に持っており(`page-forfront2col-nobg.php`用)、本ルールはこれと
   同じ手法を`.page-template-page-1column`スコープへ適用したものである。

   対応: `.page-template-page-1column #entry`の背景は既にPhase 2B-2.9.1で
   transparent化済み(角丸・shadowを持つ「カード」としての見た目は既に
   放棄済み)のため、`overflow:hidden`によるclippingを維持する意味がない。
   `overflow:visible`へ戻すことで、`.sgb-full-bg__content`(および
   `.sgb-full-bg__cover`のIvory panel)がTOPと同じ基準(viewport中央)で
   正しく全体表示されるようにする。border-radius自体(#entryの背景は
   transparentのため見た目に影響なし)は変更していない。

   本ルールはIvory panel自体のwidth/max-width/border-radius/背景色、
   Kumiko background(#content::beforeベース、Phase 2B-2.9.3)、
   `.hnm-contact-section`のFooter gap、`.sgb-full-bg .sgb-full-bg__content`
   のmax-width/padding(いずれもPhase 2B-2.9.2/2.9.3で確定済み)を
   一切変更していない。ヘッドレスChromeでのgetBoundingClientRect実測で、
   本ルール適用後に見出し・本文がviewport中央へ左右対称(safe margin
   ほぼ同値)で配置されることを確認済み(完了報告の数値実測参照)。
   ========================================================================== */
.page-template-page-1column #entry {
  overflow: visible;
}

/* ==========================================================================
   Phase 2B-2.9.4: Inner Content Width — TOPと同じDesign Systemへ統一

   Read Only調査: TOP(page-forfront.php)のみ、SANGOが動的生成する
   `<style>body{ --wp--custom--wrap--max-width: 800px; }</style>`という
   インラインタグ(TOP専用、本番HTML実測で確認。`#container{background:#FFF}`
   と同種のTOP限定動的スタイル)により、`--wp--custom--wrap--max-width`
   (`:root`既定値は`--wp--custom--wrap--content-width`=1180px)が`body`
   スコープで800pxへ上書きされている。この変数は
   `.sgb-full-bg .sgb-full-bg__content{max-width:calc(
   var(--wp--custom--wrap--max-width) + var(--wp--custom--wrap--mobile--padding)
   *2)}`(全テンプレート共通ルール)で本文の読了幅として使われるため、
   TOPの実際の本文max-widthは`calc(800px+16px*2)=832px`であり、
   下層6ページ(このTOP専用上書きが存在せず既定の1180pxのまま)の1212pxとは
   異なっていた(実測: ヘッドレスChromeでTOP/下層とも1440px viewportで
   本文幅を比較し確認)。

   対応: TOPの実測値(800px)をそのまま踏襲し、`body.page-template-page-1column`
   スコープで同一のCSS変数を同じ値へ上書きする(数値を独自に新設せず、
   TOP自身が使っている値・変数名をそのまま再利用)。`--wp--custom--wrap--
   max-width`の他の利用箇所は`#content.page-forfront .entry-content`
   (TOP専用セレクタ、下層ページには元々一致しない)のみのため、本変更による
   予期しない副作用はない。Ivory panelの`min(1280px, calc(100% - 64px))`
   (直上のPhase 2B-2.9ルール、ハードコード値でこの変数を参照しない)は
   無変更。
   ========================================================================== */
body.page-template-page-1column {
  --wp--custom--wrap--max-width: 800px;
}

/* ==========================================================================
   Phase 2B-2.10: Company Copy Refinement — 略歴リストの外枠削除
   親テーマ標準の`.wp-block-list{border:2px solid #e8e8e8}`相当のスタイルが
   /company/の「略歴」箇条書き(wp:list)にも適用され、カード状の枠線として
   表示されていた。/privacy/等、他ページのwp:listブロックには同じ標準の
   枠線を引き続き適用したいため、`.wp-block-list`をサイト全体で上書きせず、
   略歴のwp:listブロックにのみ付与したclassName(hnm-career-list)を対象に
   scopeして枠線・角丸・box-shadowのみを解除する。年月/内容の内部レイアウト
   (padding・margin・list-style位置)は変更しない。 */
.page-id-89 .hnm-career-list {
  border: none;
  border-radius: 0;
  box-shadow: none;
}

/* ==========================================================================
   Phase 2B-2.11: TOP Values Card Redesign
   TOP「大切にしていること」section(既存の`sgb/full-bg`, bgColor #F7F3EA/
   background2はそのまま、asset・opacityとも無変更)内側の、3項目を並べる
   だけだった旧構成(見出しH3+段落+区切り線を3回繰り返し)を、SANGOの
   「アイコンカードブロック」を参考にした3カラムのHTML/CSSカードへ再構成。
   画像化はアイコン部分(仮のinline SVG、将来<img>へ差し替え可能)のみで、
   カード・背景・タイトル・説明文・番号・余白・角丸・border・shadow・
   レイアウトはすべてHTML/CSSで実装(1枚の画像として扱っていない)。
   post_content側は独立したwp:html(Custom HTML)ブロックとして実装し、
   SANGO custom blockのJSON属性には依存していない。
   ========================================================================== */
.hnm-values-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 24px;
  margin-top: 40px;
}
@media screen and (min-width: 700px) {
  .hnm-values-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
  }
}

/* Accent color(Red/Navy/Gold)をカード単位のCSS変数として定義し、
   icon-wrapの淡色背景・番号・タイトル下のlineへ使い回す(重複記述を避ける)。
   カード全体を各色でベタ塗りしない(使用箇所は淡色icon-wrap・番号・lineのみ)。
   Phase 2B-2.12.1: ユーザー指示によりCard1/Card3のAccent Colorを入れ替え
   (Card1=Gold/Card3=Red)。CSS変数の値を交換するだけで、icon-wrap淡色背景・
   番号・区切り線の全箇所へ自動的に反映される(個別箇所への色指定追加はして
   いない)。Card2(Navy)は変更なし。 */
.hnm-value-card--01 {
  --hnm-value-accent: #d6a859;
  --hnm-value-accent-pale: rgba(214, 168, 89, 0.16);
}
.hnm-value-card--02 {
  --hnm-value-accent: #0d3255;
  --hnm-value-accent-pale: rgba(13, 50, 85, 0.06);
}
.hnm-value-card--03 {
  --hnm-value-accent: #c71e1f;
  --hnm-value-accent-pale: rgba(199, 30, 31, 0.08);
}

.hnm-value-card {
  height: 100%;
  display: flex;
  flex-direction: column;
  /* align-items はデフォルトの stretch のまま(明示しない)。子要素
     (タイトル・説明文・番号)をカード幅いっぱいのブロックにすることで
     text-align:center が実際に効くようにする。固定幅の丸いicon-wrapと
     短いaccent lineだけ、各要素側で align-self:center により個別に
     中央配置する(align-items:center にすると全子要素がcontent幅へ
     縮小し、text-align:centerが意味を持たなくなるため使用しない)。 */
  background-color: #fffffc;
  color: #0d3255;
  border: 1px solid rgba(13, 50, 85, 0.08);
  border-radius: 14px;
  box-shadow: 0 2px 10px rgba(13, 50, 85, 0.05);
  padding: 36px 24px 32px;
  text-align: center;
}

.hnm-value-card__icon-wrap {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background-color: var(--hnm-value-accent-pale);
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  margin-bottom: 16px;
  flex-shrink: 0;
}
/* icon-wrapのサイズ・円形はCSS側で固定しているため、中のアイコンを
   img(SVG/PNG/WebP)へ差し替えてもカードレイアウトは崩れない。
   Phase 2B-2.12.1: 3枚の元画像サイズ・aspect ratioが異なっていても
   カード上で視覚的に同程度の大きさに見えるよう、max-width/max-height+
   object-fit:containで統一する(画像自体のトリミング・縦横比変更はしない)。
   丸いicon-wrap背景(CSS)とアイコン画像(img asset)は分離したままなので、
   将来は画像ファイルの差し替えだけで対応できる。
   Phase 2B-2.12.2: ユーザー指示により、円(icon-wrap)からアイコンが
   はみ出さない(見切れない)範囲で最大限まで拡大した。正方形の画像を
   直径68pxの円へ内接させられる最大の一辺は 68×cos45°≈48.1px のため、
   角が円の外へ出ない安全マージンを見込んで46pxとした(SPも同様の計算で
   56×cos45°≈39.6pxに対し38px)。中央配置はicon-wrap自体のflex
   (align-items/justify-content:center)で維持している。 */
.hnm-value-card__icon-wrap img,
.hnm-value-card__icon-wrap svg {
  max-width: 46px;
  max-height: 46px;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}

.hnm-value-card__number {
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--hnm-value-accent);
  margin-bottom: 6px;
}

/* 親テーマ`.entry-content h3{border-left-width:4px;border-left-style:solid;
   padding:10px 0 10px 10px}`(詳細度0-1-1)が単純な`.hnm-value-card__title`
   (0-1-0)より詳細度で勝ってしまうため、`.hnm-value-card`を前置して詳細度
   0-2-0へ引き上げ、記事見出し用の左borderをカードタイトルでは明示的に
   打ち消す。中央揃え・装飾なしのシンプルなタイトルという本カードの意図に
   合わせるための調整で、`.entry-content h3`自体(記事本文の見出し)は
   一切変更していない。 */
.hnm-value-card .hnm-value-card__title {
  border: none;
  padding: 0;
  font-size: 1.2rem;
  font-weight: 700;
  color: #0d3255;
  margin: 0 0 12px;
  line-height: 1.5;
}

.hnm-value-card__line {
  display: block;
  width: 36px;
  height: 2px;
  border-radius: 1px;
  background-color: var(--hnm-value-accent);
  margin: 0 auto 18px;
  align-self: center;
}

/* 親テーマ`.entry-content p{margin:0 0 1.5em}`(詳細度0-1-1)が
   `.hnm-value-card__desc`(0-1-0)より詳細度で勝ってしまうため、
   titleと同様に`.hnm-value-card`を前置して詳細度0-2-0へ引き上げる。 */
.hnm-value-card .hnm-value-card__desc {
  font-size: 0.95rem;
  line-height: 1.8;
  color: #0d3255;
  margin: 0 auto;
  max-width: 30em;
}

@media screen and (max-width: 699px) {
  .hnm-value-card {
    padding: 28px 24px;
  }
  .hnm-value-card__icon-wrap {
    width: 56px;
    height: 56px;
    margin-bottom: 14px;
  }
  .hnm-value-card__icon-wrap img,
  .hnm-value-card__icon-wrap svg {
    max-width: 38px;
    max-height: 38px;
    width: auto;
    height: auto;
  }
}

/* ==========================================================================
   Phase 2B-2.14: Footer Vertical Alignment(上側の余白が大きく見える問題の修正)

   実測(ヘッドレスChrome、1440px/375px)で判明した原因:
   1. `#inner-footer`(`.sgb-footer__content`、Footer Content Block ID48の
      「Rich Footer」ウィジェットエリア、現在ウィジェット未登録で常に空)が、
      中身が空にもかかわらず親テーマ既定の`padding:2em`により68.48px(PC)/
      64px(SP)の空白ボックスとしてHOME/Navigationの上に存在していた。
   2. `.sgb-footer__menu`(HOME+Navigation+Copyrightを包む親テーマ既定の
      コンテナ)自体もpadding-top 20px/padding-bottom 10pxと上下非対称
      だった。
   この2点の合計により、Navigation/Copyrightのまとまりが実際のFooter高さの
   下寄りに配置されて見えていた。Navy背景色・White文字・Font・Font-size
   16px・Copyright文言/見た目・Backgroundはいずれも無変更、padding調整のみ。

   **Phase 2B-2.16.4で更新**: Footer top→HOME(Gap E)がHOME→Footer Menu
   (Gap F)より小さく見えるとの実機フィードバックを受け、実測(Range基準)
   の結果Gap E=15px(全幅)・Gap F=17.59px(480px以下)/19.14px(481px以上)
   だったため、Gap FをReferenceとしてGap Eをこれへ一致させた。padding-top
   の値のみ10px→12.609375px(480px以下)/14.15625px(481px以上)へ更新
   (新規ルールを追加せず、本ルール自体の値を更新)。padding-bottom(親
   テーマ既定の10px)・HOME/Menu/Copyrightの文言・順序・URL・font-size・
   Navy背景・White文字はいずれも無変更。 */
#inner-footer {
  padding: 0;
}
.sgb-footer__menu {
  padding-top: 12.609375px;
}

@media (min-width: 481px) {
  .sgb-footer__menu {
    padding-top: 14.15625px;
  }
}

/* ==========================================================================
   Phase 2B-2.14: News System(お知らせ)一覧・個別・カテゴリーフィルター
   CPT "hnm_news" / Taxonomy "hnm_news_category"。
   Background/Typography/Content widthは既存Subpage(page-1column.php系)と
   同じ仕組み(#content Kumiko transparent / #main 800px)を再利用し、
   新規Background Assetは追加していない。Gold/Redは使用せずNavy基調。

   実装時に発見したCSS競合(ヘッドレスChrome実測で発見、既存Subpageには
   影響しない): 親テーマ`#content{margin-top:2em}`は`.single #content`/
   `.page #content`(WordPress標準body class)でのみ`margin-top:0`へ
   リセットされる。既存Subpage(固定ページ)は`.page`が自動付与されるため
   無関係だったが、News Archive/Category Archiveはpost type archiveであり
   `.page`も`.single`も付与されないため、32px相当の意図しない余白が
   Header直下に生じていた(Single(`single-hnm_news`)はWordPress標準の
   `.single`が付与されるため本来対象外だが、念のため明示的に含める)。 */
.post-type-archive-hnm_news #content,
.tax-hnm_news_category #content,
.single-hnm_news #content {
  margin-top: 0;
}

/* Phase 2B-2.34: 実機確認により、上記の`margin-top:0`リセットの結果、
   News Archive/Category Archiveページで特にスマートフォン幅において
   Header直下にコンテンツが密着して見える(実測でHeader→パンくずの間隔が
   0px)ことが判明した。`#content`自体のmargin-topは他の仕組み
   (Kumiko背景等)に影響するため変更せず、`.article-header`側へ
   padding-topを追加することで、Header直下に適度な余白を設けた。
   News Singleページ(`.single-hnm_news`)は本Phaseの対象外のため
   含めていない。 */
.post-type-archive-hnm_news .article-header,
.tax-hnm_news_category .article-header {
  padding-top: 24px;
}

/* Category Filter(すべて + 存在するterm、pill表示) */
.hnm-news-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin: 0 0 8px;
  padding: 0;
}
.hnm-news-filter__link {
  display: inline-block;
  padding: 6px 16px;
  border: 1px solid rgba(13, 50, 85, 0.3);
  border-radius: 999px;
  font-size: 0.85rem;
  line-height: 1.4;
  color: #0d3255;
  text-decoration: none;
}
.hnm-news-filter__link:hover,
.hnm-news-filter__link:focus-visible {
  border-color: #0d3255;
}
.hnm-news-filter__link:focus-visible {
  outline: 2px solid #0d3255;
  outline-offset: 2px;
}
.hnm-news-filter__item.is-current .hnm-news-filter__link {
  background-color: #0d3255;
  border-color: #0d3255;
  color: #fffffc;
  font-weight: 700;
  text-decoration: underline;
}

/* News Grid(カード型、画像+日付+分類ラベル+タイトル)。
   Phase 2B-2.41: 罫線区切りの一覧(旧`.hnm-news-list`/`.hnm-news-item`)から、
   参考ページ(ユーザー提示、デザイン自体は流用せずレイアウトパターンのみ
   参考)にならったカード型3カラムへ変更する。対象はお知らせ一覧
   (`/news/`)・カテゴリー別一覧(`/news/news-category/{slug}/`)のみで、
   TOPのミニ一覧(`.hnm-top-news-list`)・記事本文ページは別クラス・別関数
   のため対象外(無変更)。
   詳細度は旧実装から引き続き`.entry-content`前置(0-2-0)で親テーマの
   `ul{list-style-type:disc}`/`li{padding:5px 0}`(詳細度0-1-1)を確実に
   上書きする。 */
.entry-content .hnm-news-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  list-style: none;
  margin: 32px 0 0;
  padding: 0;
}
.entry-content .hnm-news-card {
  margin: 0;
  padding: 0;
}
.hnm-news-card__link {
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
  background-color: #fffffc;
  border: 1px solid rgba(13, 50, 85, 0.12);
  border-radius: 8px;
  overflow: hidden;
}
.hnm-news-card__link:focus-visible {
  outline: 2px solid #0d3255;
  outline-offset: 2px;
}
.hnm-news-card__link:hover .hnm-news-card__title,
.hnm-news-card__link:focus-visible .hnm-news-card__title {
  text-decoration: underline;
}
.hnm-news-card__thumb {
  display: block;
  aspect-ratio: 16 / 9;
  background-color: #f7f3ea;
  overflow: hidden;
}
.hnm-news-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hnm-news-card__placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.hnm-news-card__placeholder-logo {
  width: 64px;
  height: 64px;
  opacity: 0.85;
}
.hnm-news-card__body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1 1 auto;
  padding: 16px 20px 20px;
}
.hnm-news-card__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}
.hnm-news-card__category {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #0d3255;
  border: 1px solid rgba(13, 50, 85, 0.3);
  border-radius: 3px;
  padding: 2px 10px;
  white-space: nowrap;
}
.hnm-news-card__date {
  font-size: 0.85rem;
  color: #555555;
  white-space: nowrap;
}
.hnm-news-card__title {
  font-size: 1rem;
  line-height: 1.6;
  color: #0d3255;
  font-weight: 600;
}
/* Phase 2B-2.42: ユーザー指示により2カラムを廃止し、3カラム/1カラムの
   2状態のみとした。コンテナ(`#main{max-width:800px}`)実測(getComputedStyle)
   により、3カラム時のグリッド内側幅が699px以下になるとカード1枚あたりの
   幅が約190px未満まで狭くなり窮屈に見えたため、700pxを境界に採用した。 */
@media screen and (max-width: 699px) {
  .entry-content .hnm-news-grid {
    grid-template-columns: 1fr;
  }
}
/* 親テーマ`.entry-content p{margin:0 0 1.5em}`(詳細度0-1-1)が
   `.hnm-news-empty`(0-1-0)より詳細度で勝り、#entry/#contentの背面へ
   margin-bottomが抜けてFooterとの間に余分な隙間ができるため、
   `.entry-content`を前置して詳細度0-2-0へ引き上げる。
   Phase 2B-2.40: 下側paddingはセクション全体(`.hnm-news-content`)の
   padding-bottomへ統合したため、ここでは上側(見出し/フィルターからの
   間隔)のみを維持する。 */
.entry-content.hnm-news-content .hnm-news-empty {
  padding: 48px 4px 0;
  margin-bottom: 0;
  text-align: center;
  color: #555555;
}

/* Phase 2B-2.40: 一覧(またはページ送り)の最下部からFooterまでの余白を、
   他ページの「お取引・お問い合わせ」セクションのCTAボタン→Footer間隔
   (実測48px、全幅共通)に合わせる。セクション全体(`.hnm-news-content`)の
   padding-bottomとして実装しているため、記事数・一覧全体の高さ・
   ページ送りの有無に関わらず常に一定の余白になる(0件時の`.hnm-news-empty`
   ・1件以上の`.hnm-news-list`・ページ送り`.hnm-news-pagination`のいずれが
   最後の要素でも同じ48pxが確保される)。 */
.entry-content.hnm-news-content {
  padding-bottom: 48px;
}

/* Pagination(WordPress標準paginate_links()のclassをそのまま利用) */
.hnm-news-pagination {
  margin-top: 40px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.hnm-news-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 36px;
  padding: 0 10px;
  border: 1px solid rgba(13, 50, 85, 0.2);
  border-radius: 4px;
  color: #0d3255;
  text-decoration: none;
  font-size: 0.9rem;
}
.hnm-news-pagination a.page-numbers:hover,
.hnm-news-pagination a.page-numbers:focus-visible {
  border-color: #0d3255;
}
.hnm-news-pagination a.page-numbers:focus-visible {
  outline: 2px solid #0d3255;
  outline-offset: 2px;
}
.hnm-news-pagination .page-numbers.current {
  background-color: #0d3255;
  border-color: #0d3255;
  color: #fffffc;
  font-weight: 700;
}
.hnm-news-pagination .page-numbers.dots {
  border: none;
}

/* Single: Title(可視、既存Subpageのhidden h1とは異なり記事見出しとして表示)。
   Phase 2B-2.34: 実機確認で、パンくずリストと記事タイトルの間がほぼ密着
   (margin-top:0のため)しており窮屈に見えることが判明したため、
   margin-topへ20pxを追加した。 */
.hnm-news-title {
  font-size: 1.6em;
  line-height: 1.5;
  color: #0d3255;
  margin: 20px 0 16px;
}
/* Phase 2B-2.36: 実機確認で、公開日から本文最初の段落までの余白
   (実測52px前後)が、本文の段落間隔(実測24〜26px)より明らかに広く
   窮屈でない代わりに間延びして見えることが判明したため、margin-bottom
   を縮小した。 */
.hnm-news-single-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  margin: 0 0 16px;
}
.hnm-news-single-category {
  display: inline-block;
  font-size: 0.8rem;
  font-weight: 600;
  color: #0d3255;
  border: 1px solid rgba(13, 50, 85, 0.3);
  border-radius: 3px;
  padding: 2px 10px;
}
.hnm-news-single-date {
  font-size: 0.9rem;
  color: #555555;
}
/* Phase 2B-2.34: 「お知らせ一覧へ」を通常のテキストリンクから
   `sgb/btn`と同じボタンデザインへ変更したため、独自の文字色・
   フォントサイズ指定(`.hnm-news-back-link a`)は不要になり削除した
   (既存の`.btn.normal.raised`のスタイルにそのまま従う)。margin調整用の
   `.hnm-news-back-link`クラス自体は維持している。
   Phase 2B-2.36: 実機確認で、本文最後の段落からボタンまでの間隔
   (48px)がやや広く見える一方、ボタン下からFooterまでの間隔が
   0px(密着)だったため、他の固定ページの「お取引・お問い合わせ」
   section内でCTAボタンからsection下端までの実測間隔(全ページ・
   全幅で共通して48px)を参考に、ボタン上下を32pxずつの均等な余白へ
   調整した。 */
.hnm-news-back-link {
  margin-top: 32px;
  margin-bottom: 32px;
}

/* ==========================================================================
   Phase 2B-2.15: PMVV Vertical Story Visual Design(/about/「日之本屋の理念」)
   SANGO LAND「あわせて読みたい」box(細いoutline border + box上辺に重なる
   塗りつぶしtitle label)の考え方を参考に、日之本屋の静かな和モダンへ
   アレンジ(Brown→Navy、Link List→Corporate PMVV、Arrow icon→なし、
   Box Connector→Gold vertical line)。SANGOの`.sgb-box-simple`等の
   汎用classはGlobal override せず、`.hnm-pmvv-*`のみで完結させる。
   Section自体の背景(背景2、asset/opacity/repeat/size/position)は無変更、
   White Box(`#fffffc`)を重ねることで可読性を確保する。
   ========================================================================== */
.hnm-pmvv-story {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-top: 40px;
}
.hnm-pmvv-box {
  position: relative;
  width: 100%;
  background-color: #fffffc;
  border: 1.5px solid rgba(13, 50, 85, 0.72);
  border-radius: 8px;
  box-shadow: none;
}
/* Phase 2B-2.15.1: Label中央配置+4Label幅統一。
   幅の基準値はVALUES -大切にする価値観-(最長Label)を、本Phaseで統一する
   font-size(1.2rem、後述)で実測した自然幅(実測298.7px、PC/SPとも)に
   安全マージンを見込んだ300pxを`.hnm-pmvv-story`スコープのCSS変数へ
   一元管理し、4箇所への個別width重複指定を避ける。
   親テーマ`.entry-content h3{padding-bottom:30px}`(詳細度0-1-1)が
   単純class`.hnm-pmvv-box__label`(0-1-0)より勝ってしまうため、
   `.hnm-pmvv-box`を前置して詳細度0-2-0へ引き上げる(既存VALUES Cardの
   `.hnm-value-card .hnm-value-card__title`と同じ対処)。 */
.hnm-pmvv-story {
  --hnm-pmvv-label-width: 300px;
  /* Phase 2B-2.15.2: PURPOSE/MISSION/VISION共通font-size。VISIONの実測nowrap幅
     (1440px時658.25px)が広幅時利用可能幅(646px)に収まる最大値として21pxを
     採用(22pxは658.25px>646pxで超過)。PURPOSE/MISSION/VISIONとも同一値。 */
  --hnm-pmvv-body-font-size: 21px;
}
.hnm-pmvv-box .hnm-pmvv-box__label {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--hnm-pmvv-label-width);
  box-sizing: border-box;
  margin: 0;
  background-color: #0d3255;
  color: #fffffc;
  text-align: center;
  /* VALUES Card Title(`.hnm-value-card__title`)のcomputed font-size(19.2px=
     1.2rem)と同一値。Card Title自体のfont-sizeは変更していない。 */
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  padding: 6px 18px;
  border-radius: 5px;
  white-space: nowrap;
  line-height: 1.4;
}
.hnm-pmvv-box__body {
  padding: 48px 36px 36px;
  text-align: center;
}
/* 同様に親テーマ`.entry-content p{margin:0 0 1.5em}`(0-1-1)に勝つため
   詳細度を引き上げる。子コンビネータ`>`により、VALUES Box内(`.hnm-values-grid`
   配下の`.hnm-value-card__desc`等、孫要素以下のp)には波及しないよう限定する
   (Phase 2B-2.15時点は子孫セレクタ(半角空白)だったため、VALUES Cardの説明文
   にまでfont-size:22px/font-weight:600/line-height:1.7が意図せず適用されて
   しまっていた不具合をあわせて修正)。 */
.hnm-pmvv-box .hnm-pmvv-box__body > p {
  margin: 0;
  font-size: var(--hnm-pmvv-body-font-size);
  font-weight: 600;
  color: #0d3255;
  line-height: 1.7;
}
/* Phase 2B-2.15.2: 制御改行用のatomic segment。各segment内部はnowrapとし、
   ブラウザ任せの不規則な折返しを禁止する(収まることは実測確認済み)。 */
.hnm-pmvv-line-segment {
  white-space: nowrap;
}
/* 既定(850px以上)ではbrを非表示にし、PURPOSE/MISSION/VISIONとも1行表示する。
   700-849pxでも実測で1行に収まるため非表示のまま(font-sizeのみ19pxへ縮小)。
   699px以下でのみbrを有効化し、指定位置(句点直前の読点)だけで2行へ改行する。 */
.hnm-pmvv-break {
  display: none;
}
.hnm-pmvv-box__body--values {
  padding-top: 28px;
  padding-left: 20px;
  padding-right: 20px;
  padding-bottom: 36px;
}
.hnm-pmvv-connector {
  width: 2px;
  height: 32px;
  background-color: #d6a859;
  opacity: 0.55;
}
@media screen and (min-width: 700px) and (max-width: 849px) {
  /* Phase 2B-2.15.2: 実測(768px時VISION nowrap幅568.48px<利用可能幅582px)により
     700-849px幅でもPURPOSE/MISSION/VISIONは1行表示が可能であることを確認したため、
     br(改行)は非表示のまま、font-sizeのみ19pxへ調整する。850px以上(21px)と
     699px以下(17px、下記)の中間tier。 */
  .hnm-pmvv-story {
    --hnm-pmvv-body-font-size: 19px;
  }
}
@media screen and (max-width: 699px) {
  .hnm-pmvv-story {
    --hnm-pmvv-body-font-size: 17px;
  }
  .hnm-pmvv-break {
    display: inline;
  }
  .hnm-pmvv-box__body {
    padding: 40px 20px 26px;
  }
  .hnm-pmvv-box__body--values {
    padding-top: 24px;
    padding-left: 12px;
    padding-right: 12px;
    padding-bottom: 26px;
  }
  .hnm-pmvv-connector {
    height: 28px;
  }
}

/* ==========================================================================
   Phase 2B-2.15.2: VALUES Card Descriptionの制御改行(Controlled Line Breaks)。

   atomic segment(`.hnm-pmvv-desc-segment`)3個+`.hnm-pmvv-desc-break`2個を
   post_contentへ設置し、ユーザー指定位置以外での改行(ブラウザ任せのword
   wrap)を排除した。2行モード(A+B / C)と3行モード(A / B / C)は共通segmentの
   まま、CSSでbreakの表示/非表示を切り替えられる構造(2つのbreak class
   `--1`/`--2`を個別制御可能)。

   実測(ヘッドレスChrome、DOM Range/getClientRectsベース)の結果、2行モードの
   最長segment(Card2「メーカー様、お客様、日之本屋の三者にとって、」)は、
   375〜1440pxのいずれの実効幅(最大306px@SP、160〜169px@3カラムPC/Tablet)でも
   収まらないことを確認した(現実的なfont-sizeでは2行モードの成立条件に
   到達しないため、既存Card padding/grid gapを変更しない限り2行モードは
   使用できないと判断)。したがって現行の375〜1440pxの範囲では**3行モードを
   常時使用**する(break--1・break--2とも常時表示)。将来Card幅が広がる設計
   変更があれば、break--1のみを非表示にする追加ルールで2行モードへ切替可能な
   構造として実装している。

   Font-sizeは、3行モードの最長segment(Card3「一つひとつのご縁に感謝し、」)が
   各tierの実効幅に収まる最大値を実測で決定した:
   - 375〜699px: 0.95rem(15.2px、Phase 2B-2.15.1から変更なし。実効幅251〜306pxに
     対し必要幅197.6pxで大きな余裕があるため変更不要)。
   - 700〜899px: 実効幅が最小137px程度(3カラムgridの分割丸めにより700〜899px間で
     非単調に変動、768px時点で約138〜142px)まで縮小するため、Outer Box左右padding
     を20px→2pxへ縮小したうえでfont-size 10.5pxを採用(必要幅136.5px、実効幅
     139.3px以上で3〜4px程度の安全マージン)。**12px未満(10.5px)を採用しており、
     CLAUDE.md/本Phase指示の「PC/Tabletで12px未満は原則避ける」から外れる。
     Card自身のpadding(24px×2)とgrid gap(24px×2)が protected(変更禁止)のため、
     Outer Box paddingの縮小のみでは必要な余白を確保できず、既存Card CSSを
     変更しない前提で到達可能な最小限の調整としてこの値を採用した(詳細は
     完了報告参照、既存Card CSSは変更していない)。
   - 900px以上: 実効幅約160px(Card幅210pxで安定)に対し、Outer Box左右padding
     を20px→12pxへ縮小しfont-size 12pxを採用(必要幅156px、実効幅約163px以上
     でマージン確保、12px以上を維持)。
   ========================================================================== */
.hnm-pmvv-desc-segment {
  white-space: nowrap;
}
@media screen and (min-width: 700px) and (max-width: 899px) {
  .hnm-pmvv-box__body--values {
    padding-left: 2px;
    padding-right: 2px;
  }
  .hnm-value-card .hnm-value-card__desc {
    font-size: 10.5px;
    line-height: 1.6;
  }
}
@media screen and (min-width: 900px) {
  .hnm-pmvv-box__body--values {
    padding-left: 12px;
    padding-right: 12px;
  }
  .hnm-value-card .hnm-value-card__desc {
    font-size: 12px;
    line-height: 1.6;
  }
}

/* ==========================================================================
   Phase 2B-2.18.1: /manufacturers/(投稿ID74)「よくあるご質問」FAQ Accordion
   Readability修正(.page-id-74スコープ、他ページ・他のsgb/faq利用箇所には
   影響しない)。
   SANGO標準の.hh.hhq/.hh.hha(sgb/faqブロック)には背景色指定が無く、
   Section背景(Beigeパターン画像)がそのまま透けて読みにくかったため、
   サイト共通のWhite Section色(#fffffc)を明示的に指定する。
   既存ルールが#inner-contentを含む詳細度で書かれているため、同じ#IDを
   含めたうえで.page-id-74を追加して詳細度を上げ、上書きする
   (!important不使用)。
   左端の「Q」アイコン(:before疑似要素、既定色#75bbff)は日之本屋の
   Main Navyへ変更。回答側の「A」アイコン(:before、既定色#ff8d8d)は
   今回指定がないため変更していない。
   ========================================================================== */
body.page-id-74 #inner-content .sgb-faq-container--accordion .hh.hhq,
body.page-id-74 .sgb-faq-container--accordion .hh.hhq {
  background-color: #fffffc;
}
body.page-id-74 #inner-content .sgb-faq-container--accordion .hh.hha,
body.page-id-74 .sgb-faq-container--accordion .hh.hha {
  background-color: #fffffc;
}
body.page-id-74 #inner-content .sgb-faq-container--accordion .hh.hhq:before,
body.page-id-74 .sgb-faq-container--accordion .hh.hhq:before {
  color: #0d3255;
}

/* Phase 2B-2.18.2: FAQ回答側「A」アイコンをブランドカラーのSun Red(#c71e1f、
   既存サイトで使用中の値をそのまま使用、新色は追加していない)へ変更。
   質問側「Q」アイコン(Navy)・白背景・開閉動作・キーボード操作はいずれも無変更。 */
body.page-id-74 #inner-content .sgb-faq-container--accordion .hh.hha:before,
body.page-id-74 .sgb-faq-container--accordion .hh.hha:before {
  color: #c71e1f;
}

/* ==========================================================================
   Phase 2B-2.18.2: /manufacturers/「お取引の進め方」STEP1〜5デザイン刷新
   /about/「日之本屋の理念(PMVV)」の既存Vertical Story(.hnm-pmvv-*)を
   そのまま流用し、カード形式をやめてPMVVと同じBox+Label+Connectorの
   縦つながりデザインへ変更した。.hnm-pmvv-*のCSSルール自体は1行も変更して
   いないため、/about/側の表示に影響はない(クラス名を共有して再利用する
   のみ、Phase 2B-2.18でVALUESカードの.hnm-value-card等を再利用したのと
   同じ手法)。
   STEPは「ラベル(見出しの上に重なるNavy Pill)+タイトル(本文内の大きな
   1文)+説明文」という2階層の文章を持つため、PMVV本体には無い「説明文」
   だけを通常の本文サイズへ戻すための最小限のクラスを追加する
   (.hnm-pmvv-box .hnm-pmvv-box__body > pという既存セレクタ自体は変更せず、
   タイトル用の<p>にはそのまま適用させ、説明文用の<p>にだけ上書きする)。 */
.hnm-pmvv-box .hnm-pmvv-box__body > p.hnm-step-desc {
  margin-top: 8px;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.8;
  color: #333333;
}

/* ==========================================================================
   Phase 2B-2.25: TOPページ「お知らせ」ミニ一覧([hnm_top_news_list]ショートコード、
   inc/news.php)のスタイル。日時+タイトルをリンクとして縦に並べる、画像なし・
   罫線区切りのフラットな一覧。0件時の文言(.hnm-top-news-empty)は既存の
   中央揃え段落と同じ見た目のため追加スタイル不要。

   Phase 2B-2.33で、ホバー時・キーボードフォーカス時にリンクだと分かる
   デザインへ更新した(以前は下線のみ)。日之本屋のMain Navy(#0d3255)・
   White(#fffffc)・淡いBeige(#F7F3EA)のみを使い、新規の色は追加していない。
   paddingを`li`から`a`(リンク要素自体)へ移し、ホバー/フォーカス時の
   背景色がクリック可能領域全体(行全体)に適用されるようにした。
   `transition:all`は使わず、実際に変化するbackground-colorのみ指定する。

   実機確認で、親テーマ`.entry-content ul{list-style-type:disc}`
   (詳細度0-1-1)・`.entry-content li{padding:5px 0}`(詳細度0-1-1)が、
   単一クラスセレクタ(詳細度0-1-0)だった当初のルールより優先され、
   意図しない黒丸マーカーとpaddingが表示される不具合を発見した。対処として
   祖先の`.entry-content`を含めたセレクタ(詳細度0-2-0)へ変更し、確実に
   親テーマのルールを上書きするようにした。

   Phase 2B-2.34で、一覧最下行と「お知らせ一覧を見る」ボタンの間隔を、
   「つなぎ手として…」sectionのカード→ボタン間隔(Phase 2B-2.30で確定した
   基準、`.hnm-values-grid{margin-bottom:40px}`)に揃え、`margin-bottom`を
   `0`→`40px`へ変更した。 */
.entry-content .hnm-top-news-list {
  list-style: none;
  margin: 32px auto 40px;
  padding: 0;
  max-width: 640px;
  border-top: 1px solid rgba(13, 50, 85, 0.12);
}
.entry-content .hnm-top-news-item {
  margin: 0;
  padding: 0;
  border-bottom: 1px solid rgba(13, 50, 85, 0.12);
}
.entry-content .hnm-top-news-item__link {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 20px;
  padding: 16px 12px;
  color: #0d3255;
  text-decoration: none;
  background-color: transparent;
  transition: background-color 0.2s ease;
}
.entry-content .hnm-top-news-item__link:hover {
  background-color: #F7F3EA;
  text-decoration: underline;
}
.entry-content .hnm-top-news-item__link:focus-visible {
  outline: 2px solid #0d3255;
  outline-offset: -2px;
  background-color: #F7F3EA;
}
/* Phase 2B-2.34: 日付の文字色が薄く見える(opacity:0.72)というユーザー
   指摘により、opacity指定を削除し、同じ行のタイトルと同じ色・不透明度
   (親`.hnm-top-news-item__link{color:#0d3255}`をそのまま継承)へ揃えた。 */
.entry-content .hnm-top-news-item__date {
  flex-shrink: 0;
  font-size: 0.9rem;
}
.entry-content .hnm-top-news-item__title {
  flex: 1 1 auto;
  text-align: left;
}
@media screen and (max-width: 480px) {
  .entry-content .hnm-top-news-item__link {
    flex-direction: column;
    gap: 4px;
    padding: 14px 12px;
  }
}

/* ==========================================================================
   Phase 2B-2.28: Hero Opening — Internal Spacing Alignment

   ユーザー指示により、冒頭Hero(タイトル→説明文→「日之本屋について」ボタン)の
   縦間隔を、メインコンテンツ最下部「お取引・お問い合わせ」section(見出し→
   本文→ボタン)の実測間隔に合わせる。ヘッドレスChrome実測(getBoundingClientRect)
   による現状値:
     - Hero タイトル→説明文: 10.00px(全幅共通)/ Contact 見出し→本文:
       480px以下=12.80px、500px以上=13.69px
     - Hero 説明文→ボタン: 480px以下=154.00px、500px以上=160.72px(Hero自体の
       内部余白+CTA sectionのpadding-top 48pxの合算)/ Contact 本文→ボタン:
       480px以下=24.00px、500px以上=25.67px
   目標値との差分をピンポイントで打ち消す(480px/500pxのbreakpointは実測で
   確認した遷移点、SANGO標準の900px境界とは別)。`.home`スコープにより
   TOPページのHeroインスタンスのみへ限定し、他ページの見出し・本文・ボタン
   間隔(Contact sectionを含む)は一切変更していない。CTA sectionの
   margin-topへの負値適用は、Hero自体(`.header-image`、background-color:
   transparent)の内部余白へ視覚的に重なるだけで、背景色の継ぎ目や要素の
   重複表示は生じない(実機確認済み)。
   ========================================================================== */
.home .header-image__descr {
  margin-top: 13px;
}
.home .hnm-hero-cta-section {
  margin-top: -130px;
}
@media screen and (min-width: 500px) {
  .home .header-image__descr {
    margin-top: 14px;
  }
  .home .hnm-hero-cta-section {
    margin-top: -135px;
  }
}

/* ==========================================================================
   Phase 2B-2.29: Hero Opening — Typography Match to Contact Section

   ユーザー指示により、冒頭Hero(タイトル・説明文)のフォントサイズ・太さ・
   行間・配置を、最下部「お取引・お問い合わせ」sectionの見出し(h2)・本文(p)の
   実測値(getComputedStyle)へ一致させる。太さ・色は元々一致していたため
   変更なし。配置は実測の結果、Contact側は見出し中央揃え/本文は左揃え
   (`wp:paragraph`にalign指定がないため既定のstart)だったため、本文の
   配置もその実測どおり左揃えへ変更する(センター揃えのままにしない)。
   ボタンはHero・Contactとも同一の`sgb/btn`マークアップのため、実測でも
   フォントサイズ・太さ・行間が既に完全一致しており変更不要。
   `.home`スコープによりTOPページのHeroインスタンスのみへ限定し、
   Contact section自体・他ページは一切変更していない。 */
.home .header-image__headline {
  font-size: 28.8px;
  line-height: 40.32px;
  white-space: nowrap;
}
.home .header-image__descr {
  font-size: 16px;
  line-height: 29.28px;
}
@media screen and (min-width: 500px) {
  .home .header-image__headline {
    font-size: 30.816px;
    line-height: 43.1424px;
  }
  .home .header-image__descr {
    font-size: 17.12px;
    line-height: 31.3296px;
  }
}

/* ==========================================================================
   Phase 2B-2.30: 実機確認に基づく3点修正

   (1) Hero説明文の配置: Phase 2B-2.29でContact本文(左揃え)に合わせて
   左揃えへ変更していたが、ユーザーの実機確認により中央揃えへ戻す指示が
   あった。見出し・ボタンは変更しない。`.home`スコープのため他ページの
   文章配置には影響しない。

   (2) 「つなぎ手として、つくり手と買い手をつなぐ」section: カード下端→
   「つくり手の皆様へ」ボタンの間隔が0px(実測、隣接していた)だったため、
   同sectionの説明文下端→カード上端の間隔(既存の`.hnm-values-grid{
   margin-top:40px}`による40px)に揃えた。`.home`スコープにより、
   `/manufacturers/`で再利用している同じ`.hnm-values-grid`クラスの
   間隔には影響しない。

   (3) 同sectionの見出し: 従来は改行制御なしで、幅によっては「つくり手」
   という語の途中(実機で「つなぎ手として、つくり手」/「と買い手をつなぐ」
   のように分断)で不自然に折り返っていた。この見出しブロックにのみ
   `className:"hnm-tsunagite-heading"`を付与し、`<wbr>`を「つなぎ手として、」
   の直後へ挿入した。`word-break:keep-all`(CJKでも単語・読点等の自然な
   区切り以外では折り返さない)+`overflow-wrap:anywhere`(それでも入り
   きらない極端に狭い幅でのみ最終手段として任意の位置で折り返し、
   横はみ出しを防止するfallback)を組み合わせることで、
   「1行に収まる幅は1行のまま」「2行になる場合は`<wbr>`の位置(つなぎ手
   として、/つくり手と買い手をつなぐ)」「それでも入らない極端な狭幅では
   横はみ出しせず追加の折返しを許容」の3段階をCSSのみで実現した。
   `className`はこのheadingsブロック1つだけに付与しているため、他の
   見出し(お知らせ・お取引・お問い合わせ等)・他ページの見出しには
   一切影響しない。
   ========================================================================== */
.home .header-image__descr {
  text-align: center;
}
.home .hnm-values-grid {
  margin-bottom: 40px;
}
.hnm-tsunagite-heading .sgb-heading__text {
  word-break: keep-all;
  overflow-wrap: anywhere;
}

/* ==========================================================================
   Phase 2B-2.32: 「お取引・お問い合わせ」section本文の中央揃え+改行制御
   (全公開ページ横断)

   ユーザー指示により、メインコンテンツ最下部に「お取引・お問い合わせ」
   sectionを持つ全ページ(TOP/About/Manufacturers/Company、既存の共通class
   `.hnm-contact-section`で識別)の説明文(見出し・ボタンは対象外)を
   中央揃えへ変更する。実機で「新規お取引や商品のお取り扱いに関する
   ご相談、その他お問い合わせは、お問い合わせフォーム|よりご連絡くだ
   さい。」のように「お問い合わせフォーム」という複合語の途中で不自然に
   分断される事例を確認した(TOP/About/Company、375px/1440px実測)。
   Phase 2B-2.30の「つなぎ手として…」見出しで確立した手法(`word-break:
   keep-all`+`overflow-wrap:anywhere`)をこのsection本文にも適用し、
   post_content側で読点直後・文節の区切りへ`<wbr>`を追加することで、
   広い画面では不要な改行を発生させず、狭い画面でも語の途中で分断せず、
   それでも収まらない極端な狭幅でのみ最終手段としてはみ出しを防止する。
   `.hnm-contact-section`は4ページ共通の既存classのため、この1ルールで
   対象ページすべてに一括反映される(ボタンの`<p class="wp-block-sgb-btn">`
   は`:not()`で除外、見出しは対象外)。中央揃え自体はpost_content側の
   `wp:paragraph {"align":"center"}`属性で個別に設定する(本ルールは
   改行制御のみを担当)。 */
.hnm-contact-section p:not(.wp-block-sgb-btn) {
  word-break: keep-all;
  overflow-wrap: anywhere;
}

/* ==========================================================================
   Phase 2B-2.35: Hero Opening — タイトルの縦方向中央配置

   ユーザーの実機確認により、Hero(「日本の良いものを、もっと身近に。」)の
   ヘッダー下端→タイトル上端の余白が、タイトル下端→説明文上端の余白より
   広く見える(タイトルが下寄りに見える)と指摘があった。

   実測(getComputedStyle)により原因を特定: 親テーマ`.header-image__text
   {padding:6em 20px}`(root font-sizeに連動、480px以下=96px/500px以上=
   102.72pxの上下均等パディング)により、テキストブロック全体
   (タイトル+説明文+ボタン)はHero自体の高さの中で上下中央に配置されて
   いるが、テキストブロック内部では「タイトル→説明文」の間隔(親テーマ
   `.header-image__text p{margin:10px 0}`のmargin collapse、実測13px/14px)
   が「ヘッダー→タイトル」の間隔(padding-top、実測96px/102.72px)より
   大幅に小さいため、タイトルが視覚的に下寄りに見えていた。

   対処: Hero自体の高さ・下端位置(セクション下端)を変えないよう、
   `padding-top`の減少分と`.header-image__headline`の`margin-bottom`の
   増加分を厳密に一致させることで(480px以下: 96px→49.5px/-46.5px、
   marginBottom 10px→59.5px/+49.5pxではなく、両者の合計(106.5)を
   106.5=106.5のまま維持するよう按分計算、詳細は実装時のコメント参照)、
   ヘッダー→タイトルとタイトル→説明文の間隔を実測ベースで均等化した。
   `padding-bottom`・説明文以降の要素は一切変更していないため、Hero
   全体の高さ(ひいてはCTAボタンの位置・セクション下端)は変わらない。
   `.home`スコープによりTOPページのHeroインスタンスのみへ限定し、
   他ページ・Hero自体の高さ/背景/アニメーション等(Protected UI)には
   一切影響しない(デザインのみの変更、挙動は変更していない)。 */
/* Phase 2B-2.39: 上記Phase 2B-2.35の「タイトル縦方向中央配置」対応と、
   本Phaseで新たに指示された「Hero全体の4間隔を最下部Contact sectionの
   リズムに合わせる」対応が両立しないため、ユーザー指示により本Phaseの
   対応を優先し、Phase 2B-2.35のpadding-top/margin-bottom値を以下の値へ
   置き換えた(ルール自体は维持、値のみ上書き)。詳細はPhase 2B-2.39の
   コメント(本ファイル末尾)を参照。 */
.home .header-image__text {
  padding-top: 38px;
}
.home .header-image__headline {
  margin-bottom: 0;
}
