/* ======================================================================================

   header.css
   共通ヘッダー（PCヘッダー・グローバルナビ・PCメガメニューの見た目・SPハンバーガー／meanMenu）
   common_first.css からの分離（分離元コメントはそのまま維持）

====================================================================================== */

/* ######################################################################################

　Header（common）

###################################################################################### */

.header{
    position:sticky;
    top:0;
    left:0;
    z-index:500;
    width:100%;
    background:rgba(0,28,76,0.2);
    transition:background-color 0.3s;
}
/* 高さ・padding・ロゴ・開閉ボタンのサイズ／位置はこのクラスが付いても一切変更しない
   （そのためのプロパティをここに追加しないこと）。
   不具合修正：以前はこの変数（青 #005bac）をSPトップページのスクロール後にだけ
   残し、PCのスクロール後だけファイル末尾の「白ヘッダー状態」ブロックで#ffffffへ
   個別に上書きしていた。指示により「スクロール後は白背景、青背景にはしない」を
   PC/SP問わず統一したため、ファイル末尾のブロックがPC/SPとも同じ.isScrolledを
   常に#ffffffへ上書きし、このルールが実際に見える状態は無くなっている。
   変数(--header-scrolled-bg、common_first.css定義)とこのルール自体は、他に
   参照箇所が無いことを確認済みだが、今後の巻き戻しに備えてあえて削除せず残す */
.header.isScrolled{
    background-color:var(--header-scrolled-bg);
}
/* SPドロワー展開中は、同じ.header要素の背景だけをFigma image7どおりの白へ切り替える。
   通常ヘッダーを消して別要素を被せるのではなく、同一要素の背景色を
   既存のtransition:background-color 0.3sでフェードさせることで「その場で置き換わる」
   見た目を作る（ヘッダーの位置・高さ・ロゴ位置・ボタン位置は一切動かさない） */
body.isDrawerOpen .header{
    background-color:#ffffff;
}
/* 不具合修正：html.isDrawerOpen{overflow:hidden}（スクロールロック方式の変更で追加）が
   position:stickyの祖先に付くと、position:stickyの計算基準が崩れてスクロール済みの
   位置のまま画面外へ隠れてしまう既知の副作用がある（overflow:hiddenを持つ祖先が
   スクロールポート扱いになり、実際にスクロールしているルート<html>との間で
   ズレが生じるため）。ドロワー表示中だけ.headerをposition:fixed（ビューポート基準の
   top:0）へ切り替えることで、この副作用を受けず常に画面上端に留まるようにする */
body.isDrawerOpen .header{
    position:fixed;
    top:0;
    left:0;
    width:100%;
}


/* ----- 現行サイトの既存構造（.header .contents > .logo / .gnav / .contact）をそのまま使い、
   新規のラッパー要素・class は追加せず、既存の要素・classだけを対象にCSSでリニューアル後の
   配置に合わせる。.contents は3要素（logo/gnav/contact）を並べる唯一のフレックス行。
   不具合修正：下層ページのみ旧common/css/common.cssが読み込まれ（Header2026.html参照）、
   同ファイルの無scope`.contents{margin:0 auto;width:100%;max-width:1380px;...}`
   （下層ページ本文カラム用のラッパー、詳細度0,1,0）が同名class経由でこの
   `.header .contents`（詳細度0,2,0）にも当たっていた。`.header .contents`側は従来
   display/align-itemsしか指定しておらずmax-width/marginを競合していなかったため、
   max-width・margin:0 autoだけが上書きされずに残り、ロゴ〜ナビ〜見積依頼フォームボタンが
   画面中央の1380px幅に閉じ込められていた（トップページはcommon.css自体を読み込まないため
   影響なし）。ここで明示的にwidth:100%・max-width:none・margin:0を指定し、画面幅いっぱい
   を使う本来の配置に戻す（左右の余白は下のpadding-left/rightのまま維持） */
.header .contents{
    display:flex;
    align-items:center;
    width:100%;
    max-width:none;
    margin:0;
}

/* ロゴ：<picture>のsrcsetはこのリニューアル用に白ロゴ(logo_white.svg)を指すよう値のみ変更済み。
   SPドロワー展開時だけ、白背景でも視認できる濃色ロゴへその場でクロスフェードさせる必要があるが、
   現行の<picture>構造にはPC/SP切替用のimgしか無く展開状態での切替の仕組みが無いため、
   「不足している要素の最低限の追加」として濃色ロゴ用のimgを1枚だけ<a>の直下（<picture>の外）に
   追加している。新しいclassは付与せず、「.header .logo a > img」という直下要素セレクタ
   （<picture>の子ではなく<a>の直下にあるimgだけを指す）で区別する。 */
.header .logo a{
    position:relative;
    display:block;
}
.header .logo img{
    width:auto;
    display:block;
}
.header .logo a > img{
    position:absolute;
    top:0;
    left:0;
    opacity:0;
    pointer-events:none;
    transition:opacity 0.3s ease;
}
body.isDrawerOpen .header .logo picture img{
    opacity:0;
}
body.isDrawerOpen .header .logo a > img{
    opacity:1;
    pointer-events:auto;
}

@media print, screen and (min-width:768px){
    /* Figma実寸ではlogo左端200px／お問い合わせボタン右余白60pxと左右非対称だが、
       今回はユーザー指定により「ロゴの左余白＝見積依頼フォームボタンの右余白」の左右対称配置を
       Figmaより優先する。両端とも同じ--header-side-space（ボタン側の実測値である60pxを採用）を
       参照し、別々の数値を重複定義しない。
      .contentsは幅100%（中身はlogo/gnav/contactの3要素）で、この左右paddingがそのまま
       「画面（またはヘッダー全幅）端からの余白」になる。
       PCはhtml側のmin-width:1200px（common_first.css冒頭のPC最小幅ルール）により、
       1200px以上では画面実幅、1200px未満では1200pxに固定されたヘッダー幅を基準に
       ロゴ・ボタンの余白が決まる（ビューポート追従でコンテンツとズレることはない）。 */
    .header .contents{
        --header-side-space:6rem;
        height:var(--header-height-pc);
        padding-left:var(--header-side-space);
        padding-right:var(--header-side-space);
    }
    .header .logo a{
        height:4.8rem;
        aspect-ratio:312/48;
    }
    .header .logo img{
        height:4.8rem;
        aspect-ratio:312/48;
    }
    /* Figma実寸(node 6067:458)：ロゴは上22px／下30pxと上下非対称。
      .contentsのalign-items:centerのままだと26px/26pxの均等中央に寄ってしまうため、
       ロゴだけalign-selfで上詰めにしたうえでmargin-topを付与し、実測の上余白を再現する */
    .header .logo{
        align-self:flex-start;
        margin-top:2.2rem;
    }
}
@media screen and (max-width:767px){
    .header .contents{
        height:var(--header-height-sp);
        padding-right:5.1282vw;
        padding-left:5.1282vw;
    }
    /* Figma実測(node 6123:17、logo_white 1)：幅188×高さ29px(=height 7.4359vw)。
       以前はフッターロゴ(logo_sp.png、266×38)の比率を誤って流用していたため、
       実際のヘッダーロゴ素材(logo_white.svg、実寸312×48＝aspect-ratio 312/48、
       PC版と同一素材・同一比率)に合わせる */
    .header .logo a{
        height:7.4359vw;
        aspect-ratio:312/48;
    }
    .header .logo img{
        height:7.4359vw;
        aspect-ratio:312/48;
    }
    /* 高さ・paddingはisScrolledでも上の.contents指定と同じ変数のまま変化させない
       （スクロールで高さ・余白・ロゴ位置が詰まって見える不具合の再発防止用の明示ガード） */
    .header.isScrolled .contents{
        height:var(--header-height-sp);
        padding-right:5.1282vw;
        padding-left:5.1282vw;
    }
    /* PC用のグローバルナビ・見積依頼フォームCTAは、SPでは既存のハンバーガー/ドロワーに
       表示を委譲するため非表示にする（要素は削除しない） */
    .header .gnav,
    .header .contact{
        display:none;
    }
}

/* ----- グローバルナビ -----
   現行サイトの<h1 class="copy">・<dl class="tel area">（上部の電話番号帯）は、
   要素を削除せずCSSで非表示にする（リニューアル後のPCヘッダーには表示しない）。
   Figma index2026_4のheader(node 6079:21)はナビ＋見積依頼フォームCTAが右寄せの1グループだが、
   新規ラッパーを追加せず、.gnavにはmargin-left:autoで残り余白を吸収させ、.contactとの間だけ
   margin-leftで実測49px相当のgapを固定することで、.contents側のjustify-content指定なしに
   「logoは左端、gnav+contactは右寄せグループ」を再現する。 */
.header .gnav > .copy,
.header .gnav > dl.tel.area{
    display:none;
}

.header .gnav > ul{
    display:flex;
    align-items:center;
}
.header .gnav > ul > li > a{
    display:block;
    font-weight:bold;
    color:#fff;
    white-space:nowrap;
}

@media print, screen and (min-width:768px){
    .header .gnav{
        display:flex;
        align-items:center;
        margin-left:auto;
    }
    .header .contact{
        margin-left:4.9rem;
    }
    .header .gnav > ul{
        /* Figma実寸(header内ナビ項目)：項目間gapは50px（2.6042vw）で統一されている */
        gap:5rem;
        font-size:1.6rem;
    }
}

/* 不具合修正：ナビ項目(white-space:nowrapで折り返し不可)＋見積依頼フォームボタンの
   実測合計幅が、サイト最小幅1200px時点の.header .contents内側幅（左右padding差引後）を
   わずかに超えており、画面幅1200px付近でヘッダーだけがページ全体の横スクロールの原因に
   なっていた（メインイメージ／SERVICE／CATALOG／RECRUIT側の中央基準はみ出し修正とは
   無関係の、ヘッダー自体の別要因）。ナビ項目の文言・矢印・ボタンの大きさは変更せず、
   最小幅1200px付近でのみ左右の余白（--header-side-space）を切り詰めて収める
   （1500px以上の見え方は変更しない） */
@media print, screen and (min-width:768px) and (max-width:1230px){
    .header .contents{
        --header-side-space:2rem;
    }
}

/* 不具合修正：common2026/css/gnav_megamenu.css側に存在する無scopeの.button{background:#ccc;color:#111;position:relative;}
   および.button:not(.disabled):active{top:1px;box-shadow:...}が、このリンクは.button--primary等の
   色modifierクラスを持たない（Figma上は背景なし・枠線白のみの意匠のため）ことで、background/color/position/
   box-shadowだけ後発ファイルの無scopeルールに競り負けて透けて見えていた（ヘッダーの青背景ではなく実際は
   このグレー系背景が乗っていた）。hover/focus/active/visited全状態で確実にFigma通り（背景透過・白文字・
   位置ズレなし）になるよう、このセレクタ側で明示的に指定し直す */
.header .contact .button,
.header .contact .button:link,
.header .contact .button:visited{
    position:static;
    background:transparent;
    color:#fff;
    letter-spacing:0.05em;
}
.header .contact .button:hover,
.header .contact .button:focus,
.header .contact .button:active{
    background:transparent;
    color:#fff;
    box-shadow:none;
}
.header .contact .button:hover{
    opacity:0.85;
}

@media print, screen and (min-width:768px){
    /* Figma実寸(node 6076:500 Group 96)：幅200px・高さ48px・枠線白1px・背景なし。
       アイコン(15×13.75px)とテキストの間隔は7px。左右は中身(アイコン+gap+テキスト)を
       中央揃えにした結果として25pxずつになるため、padding指定ではなくwidth固定+centeringで再現する。
       ※get_design_context実測ではこの矩形(6076:495)にrounded-[2px]が付いているが、
       　依頼内容「角丸なしの四角い形状にする」を優先し角丸0で実装。完了報告で要確認として明記する */
    .header .contact .button{
        display:inline-flex;
        align-items:center;
        justify-content:center;
        width:20rem;
        height:4.8rem;
        padding:0;
        gap:0.7rem;
        border-radius:0;
    }
    /* 不具合修正：このアイコンは<img src="ico-mail.svg">として読み込んでおり、SVGファイル
       自体のpath要素にfill="white"が固定で書き込まれているため、白背景（.pageIndexの
       スクロール後／下層ページ）でcolor:#005bacへ文字色を切り替えても、<img>はCSSの
       color/currentColorを一切継承できず（<img>はCSSでは中身を持たない置換要素のため）、
       アイコンだけ白のまま背景と同化して消えていた。<img>自体は非表示にし、同じ位置に
       background-color:currentColor + mask-image（他ボタンのSERVICE/CATALOG矢印と同じ手法、
       pageIndex_body.css参照）の疑似要素を重ねることで、テキストと同じcurrentColorに
       状態ごと自動的に追従させる（画像の差し替え・SVGファイル自体の編集は行わない） */
    .header .contact .button img{
        display:none;
    }
    .header .contact .button::before{
        content:"";
        display:block;
        width:1.5rem;
        aspect-ratio:15/13.75;
        flex-shrink:0;
        background-color:currentColor;
        mask:url("/common2026/img/icon/ico-mail.svg") center / contain no-repeat;
        -webkit-mask:url("/common2026/img/icon/ico-mail.svg") center / contain no-repeat;
    }
}

/* ----- グローバルナビ：メガメニュー開閉トリガーの下向き矢印（閉じた状態のヘッダー側の意匠） -----
   展開後のパネル自体（.gnav-mega-wrapp以下）は、現行サイト(https://actfactory.net/)の
   /common/css/common.css・/common/css/widget.css をそのまま複製した
   common2026/css/gnav_megamenu.css 側で管理する（HTML構造・class・data属性・開閉JSは
   現行サイトのものを一切変更せず流用するため、Figmaベースの独自デザインは廃止した）。
   ここに残すのはトリガーリンク（「各種工法」「採用情報」等）の右側の▼矢印のみで、
   これは閉じた状態のヘッダーの見た目の一部であるため引き続きこのファイルで管理する。 */

.header .gnav > ul > li.has-megadrop > a::after{
    content:"";
    display:inline-block;
    margin-left:0.5em;
    width:0;
    height:0;
    border-right:0.3em solid transparent;
    border-left:0.3em solid transparent;
    border-top:0.35em solid currentColor;
    vertical-align:middle;
    transition:transform 0.2s;
}
.header .gnav > ul > li.has-megadrop.over > a::after{
    transform:rotate(180deg);
}

/* .gnav-mega-wrapp 以下の展開パネル自体のスタイルは gnav_megamenu.css に集約したため、
   ここでは定義しない（二重定義によるカスケード競合を避けるため）。
   不具合修正：メガメニュー内の行間・項目間隔が現行サイトより狭く見える不具合を調査した結果、
   gnav_megamenu.css自体のline-height:1.25／margin-bottom:1em／margin-top:0.75em・0.5em等は
   現行サイトの値と完全に同一（複製そのものは正しい）だったが、これらはすべて「その要素自身の
   font-size」を基準にしたem単位のため、実際のpx換算値は継承されるfont-sizeに依存する。
   現行サイトはbody{font-size:14px}（html{font-size:10px}の上に別途14pxを指定）のため
  .gnav-mega-wrapp配下もこの14pxを継承するが、common2026側はbodyにfont-size指定が無く
   html基準の10pxのまま継承されており、同じem値でも実際のpx換算が10/14倍（約71%）に
   縮小されて見えていた。サイト全体のbody font-sizeを変更する代わりに、メガメニュー
   パネル内だけ現行サイトと同じ14pxの基準を復元する（gnav_megamenu.css側のem値は
   一切変更しない）。 */
.gnav-mega-wrapp{
    font-size:1.4rem;
}
/* 不具合修正：採用情報メガメニューの説明文（無クラスの<p>「アクトファクトリーの採用に
   ついてご紹介します」）は、現行サイトでは共通ルールの汎用p{font-size:1.5rem;line-height:1.85}
   （/common/css/widget.css）を継承しているが、gnav_megamenu.cssはメガメニュー専用セレクタのみを
   複製した範囲のため、この汎用pルールは対象外だった（common2026側に汎用pルール自体が
   存在しないため）。サイト全体のpタグへ汎用ルールを追加するとメガメニュー外へも影響するため、
   この説明文の位置だけに絞って同じ値を再現する */
.gnav-mega-wrapp.recruit .gnav-mega .inner > ul > li > .top > p{
    font-size:1.5rem;
    line-height:1.85;
}

/* ----- メガメニュー背景オーバーレイ -----
   現行サイトの .overray / .mmOpen .overray（本文を暗く沈める処理）と同じ役割を、
   ブランドカラー（#001c4c）を帯びた半透明の暗転として実装。ヘッダー自体は暗くならず、
   本文コンテンツのみを覆う。 */
.megaOverlay{
    position:fixed;
    top:0;
    left:0;
    z-index:100;
    width:100%;
    height:100vh;
    background:rgba(0,28,76,0);
    opacity:0;
    transition:opacity 0.3s ease;
    pointer-events:none;
}
.megaOverlay.isVisible{
    background:rgba(0,28,76,0.7);
    opacity:1;
    pointer-events:auto;
}

/* ----- グローバルナビ：SPハンバーガーメニュー（jquery.meanmenu） -----
   現行サイト(https://actfactory.net/)と同じjquery.meanmenuプラグイン
   （common2026/lib/jquery/meanMenu/jquery.meanmenu.js、common.jsから呼び出し）を
   そのまま使用する。プラグインが自動生成する.mean-container/.mean-bar/.mean-nav/
  .mean-expand等のclassはプラグイン仕様のため変更せず、ここでは見た目（Figmaデザイン）の
   みを再スキンする。開閉・階層アコーディオンの処理はプラグイン内蔵のJSがそのまま担当する。 */

/* 初期状態は必ず非表示にする（プラグインの初期化前・PC幅での表示崩れを防ぐ） */
.mean-nav{
    display:none;
}

/* 不具合修正：#SpNav（meanMenuの複製元・本来hidden属性のみで非表示）が実機のSP幅で
   表示されてしまう問題の対処。#SpNav自身はマークアップ上ただの複製元であり、
  .sp（PC/SP表示切替の共通ユーティリティ、SP幅で!important付きのdisplay:blockを持つ）を
   誤って付与すると、jQuery側の.hide()（インラインstyle、!importantなし）より
  .sp{display:block!important}の方が詳細度で勝ってしまい、中身の生ナビが画面に
   表示され続けてしまっていた。#SpNav/#SpNavExtraはページの見た目に一切関与しない
   複製専用の要素のため、他のどのクラス・状態が付いても常に非表示のまま固定する
   （z-indexで背面へ回すのではなく、display:noneでレイアウトからも完全に除外し、
   フォーカス移動・ページ幅/高さへの影響・読み込み直後のFOUCも同時に防ぐ） */
#SpNav,
#SpNavExtra{
    display:none !important;
}

/* ----- ハンバーガー／閉じるボタン（.meanmenu-reveal） -----
   旧実装の.hbgと同じ理由（.headerがposition:stickyでスタッキングコンテキストを生成し、
   内側に置いたままだとドロワーの背面に沈んでしまう）で、.mean-bar自体をheaderの外側で
   fixed配置し、見た目だけヘッダー右上に固定する。
   Figma実測(node 6123:17、menu-icon)：タップ領域36×36px、中の「menu」アイコンは
   20×20pxのSVG(3本線、線幅2px、線の左右端は3.334px・16.666pxで幅13.332px、
   3本の中心間隔5.834px＝線と線の間隔3.834px、上下均等余白3.166px)。
   このアイコンの余白込みの配置は、36px角のボタンに対し疑似要素なしで3本のspanを
   flexで中央揃え＋gap指定するだけで実測どおりに再現できる（36pxからの余白(36-13.668)/2＝
   11.166pxは、アイコン自体の余白3.166px＋タップ領域の余白8pxの合計と一致する）。 */
.mean-bar{
    position:fixed;
    top:0;
    left:0;
    z-index:1100;
    width:100%;
    /* 不具合修正：meanMenuプラグイン本体(meanmenu.min.css)の.mean-container .mean-barに
       既定の背景色(rgb(12,25,35)相当の濃紺～黒)が指定されており、このルールで一切
       上書きしていなかったため、.mean-bar自身が不透明な黒帯としてheaderの上に重なって
       見えていた。.mean-barはボタンの位置決め用の透明なレイヤーとし、背景は常に
       透過させて実際の.header（先頭時は半透明紺、スクロール後は#005bac、ドロワー展開中は
       白）をそのまま透けて見せる（.mean-bar自体に個別の背景色を持たせない） */
    background:transparent;
    /* 不具合修正：.mean-barはボタンの位置決めのためwidth:100%・position:fixedで
       ヘッダー全幅を覆っているが、pointer-eventsを個別指定していなかったため、
       この透明な全幅レイヤー自体がクリックを受け取ってしまい、その下にある
       ヘッダーロゴ（.header .logo a、トップページへのリンク）がタップに反応しない
       不具合の原因になっていた。.mean-bar自体はクリックを透過させ、実際に
       クリックを受け取るべき.meanmenu-reveal（直後のルールでpointer-events:auto
       を明示）だけがタップに反応するようにする（.mean-nav側は既に開閉状態に応じて
       pointer-events:auto/noneを個別指定済みのため、ここでの変更の影響を受けない） */
    pointer-events:none;
}
a.meanmenu-reveal{
    position:absolute;
    top:50%;
    right:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    /* 不具合修正：円形・四角形などの背景を一切持たない（Figma実測どおり透明の当たり判定のみ）。
       タップ領域(36px角)自体は確保するが可視化しない */
    background:transparent;
    text-indent:0;
    line-height:normal;
    /* 上の.mean-bar{pointer-events:none}を打ち消し、ボタン自身はクリックを受け取る */
    pointer-events:auto;
    /* 不具合対策：実機でタップしても反応しない場合がある件への対策。
       開く「≡」・閉じる「×」とも同じ<a>要素（.meanmenu-reveal、.meanclose classの
       付け外しのみで見た目を切り替えている）にtouch-action:noneが無く既定値のauto
       のままだったため、指の僅かな移動をブラウザがスクロール／ズームジェスチャーの
       開始と判定し、その場合はclickイベント自体を発生させないことがある。
       疑似要素(::before/::after)ではなく実際にクリックを受け取るこの<a>要素へ直接
       指定し、タップ＝即click確定とする（pan-x/pan-y等の部分許可ではなく、ページの
       縦スクロール領域の外（position:fixedの.mean-bar内）にあるため
       manipulationで問題ない）。position/z-index/pointer-events/サイズは変更しない */
    touch-action:manipulation;
}
a.meanmenu-reveal span{
    display:block;
    /* Figma実測(node 6123:157、menuアイコンSVGのstroke="white")：閉じている間の3本線は白 */
    background:#ffffff;
    border-radius:999px;
    transition:transform 0.25s, opacity 0.25s, background-color 0.25s;
}
/* 閉じるボタン（meanMenuCloseに<span/><span/>を指定）はハンバーガーのバーと同じ意匠
   （塗りの棒・同じ太さ・同じ長さ）のまま2本を回転させてXを作る（テキスト文字は使わない）。
   Figma実測(node 8021:48、開いた状態のアイコンを単体で書き出して確認)：展開時はヘッダー背景が
   白に切り替わる(body.isDrawerOpen)ため、線の色も白から#3a3a3aの濃いグレーへ切り替える */
a.meanmenu-reveal.meanclose span{
    position:absolute;
    top:50%;
    left:50%;
    background:#3a3a3a;
}
a.meanmenu-reveal.meanclose span:nth-of-type(1){
    transform:translate(-50%,-50%) rotate(45deg);
}
a.meanmenu-reveal.meanclose span:nth-of-type(2){
    transform:translate(-50%,-50%) rotate(-45deg);
}

@media screen and (max-width:767px){
    .mean-bar{
        height:var(--header-height-sp);
    }
    a.meanmenu-reveal{
        /* タップ領域はFigma実測(36px)のまま。見た目より小さくしないための最小当たり判定として
           そのまま採用する（36pxはモバイルの推奨タップサイズにほぼ準拠） */
        width:9.2308vw;
        height:9.2308vw;
        /* 不具合修正：プラグイン本体がmeanRevealPositionDistance(既定"0")を
           style="...right:0;..."としてこの要素に直接インラインで書き込むため、
           !important無しのCSSでは詳細度に関係なく常にinlineのright:0が勝ってしまう。
           新デザインの位置(right:3%)を常時・開閉双方の状態で維持するため、ここだけ
           !importantでinline styleを上書きする（プラグインのJS・オプション自体は
           変更しない）。基準となる.mean-bar{width:100%}側をscrollbar-gutter:stable
           （common_first.cssのhtml{scrollbar-gutter:stable}、上部参照）で常時安定させて
           いるため、right:3%のまま開閉前後で位置が変わらない */
        right:3% !important;
        transform:translateY(-50%);
        gap:0.9831vw;
    }
    a.meanmenu-reveal span{
        width:3.4185vw;
        height:0.5128vw;
    }
    .mean-container .mean-nav{
        display:block;
    }
    /* ----- ドロワー開閉アニメーション -----
       不具合修正：プラグイン本体は最上位<ul>をjQueryの.slideDown()/.slideUp()（既定の
       swingイージング・非CSSアニメーション）で開閉しており、これがジャンプ／一瞬消える
       ように見える不自然な動きの原因だった。プラグイン自身のJS（.mean-nav ul:first）は
       変更しない方針のため、対象の高さ関連プロパティを!importantで常に開いた状態のまま
       固定し、jQueryが行うheight/overflow/displayの操作を実質無効化する。
       その代わり、開閉の見た目自体は.mean-nav（プラグインが常時display:blockのまま
       扱う外側コンテナ）のopacity/visibilityフェードへ一本化する。切り替えは
       common.js側の既存クリックハンドラが付け外す.isMenuOpen（bodyクラス）のみで行い、
       新規の開閉ロジックは追加しない */
    .mean-nav > ul:first-child{
        display:block !important;
        height:auto !important;
        overflow:visible !important;
    }
    /* 不具合修正：「≡」を短時間に連打すると、common.js側の状態管理
       （.meanclose／aria-expanded／body.isMenuOpen）は正しく最終状態（開/閉）に
       収束するにも関わらず、.mean-nav自体の見た目（opacity/visibility）だけが
       前の状態のまま取り残されることを確認した。opacity・visibilityいずれも
       transitionの対象にしていたため、前の遷移が完了しないうちに反対方向へ
       再トリガーされる状況（連続クリック）が起こると、ブラウザの遷移処理が
       競合し、最終的な計算値が実際のclass状態と食い違って固定されてしまうことが
       あった（実機の連打・自動テストでの高速クリックいずれでも再現し、transitionを
       外すと再現しなくなることを確認済み）。「10回以上連続で開閉できる」ことを
       確実にするため、開閉の見た目はフェードさせずclass切り替えと同時に
       即時反映する（新しい開閉ロジックの追加ではなく、既存のopacity/visibility
       切り替え自体は維持し、フェード用のtransitionだけを外す） */
    .mean-nav{
        opacity:0;
        visibility:hidden;
        pointer-events:none;
    }
    .mean-container.isMenuOpen .mean-nav{
        opacity:1;
        visibility:visible;
        pointer-events:auto;
    }
}

/* ----- 見積・相談バブル（SPヘッダー、ハンバーガーの左隣） -----
   Figma実測(node 6123:17、6123:25)：ピル型(角丸999px)・背景#02205a・アイコン+テキストの
   2要素をgap6pxで横並び。.mean-barと同じ理由（.headerのスタッキングコンテキストの都合）で
  .header の外にfixed配置し、見た目だけヘッダー右上（ハンバーガーの左）に固定する。 */
/* 不具合修正：common_first.cssのa:not(...){color:inherit}（下層ページ本文用の
   リンク色リセット。:not()の除外リストに[id="main"] .contentsを含むためクラス2つ
   +要素1つ相当の詳細度を持つ）の方が詳細度で上回り、文字色が白から本文既定色
   (#111111)へ変わって紺の背景にほぼ同化し読めなくなっていた。!importantは使わず、
   実際にHTML側で常時付与されている.sp（class="headerContactBubble sp"）も
   セレクタに含めてクラス2つ+要素1つへ詳細度を引き上げ、確実に上書きする */
a.headerContactBubble.sp{
    display:flex;
    align-items:center;
    border-radius:999px;
    background:#02205a;
    color:#ffffff;
    font-weight:bold;
    white-space:nowrap;
}

@media screen and (max-width:767px){
    .headerContactBubble{
        /* headerは position:sticky;top:0 で常にビューポート上端0〜var(--header-height-sp)
           (64px)を占め続けるため、その中央(32px＝8.2051vw)を基準にtranslateYで自身の高さぶん
           引き上げる（.meanmenu-revealのような正方形の当たり判定ではなく、ピル自体の実高さの
           まま中央揃えにするため）。right位置はFigma実測：menu-icon右端からの距離55px */
        position:fixed;
        top:8.2051vw;
        right:14.1026vw;
        z-index:1100;
        transform:translateY(-50%);
        gap:1.5385vw;
        padding:2.0513vw 3.0769vw;
        font-size:2.8205vw;
    }
    .headerContactBubble img{
        width:3.0769vw;
        height:auto;
        aspect-ratio:12/11;
    }
    /* .sp を兼ねるため、他のSP専用要素と同じ理由で詳細度を上げたうえで!importantを重ね、
       flexを取り戻す */
    .headerContactBubble.sp{
        display:flex !important;
    }
}

/* ----- SPドロワー本体（.mean-nav） -----
   margin-topでヘッダー高さぶん下げ、メニュー本体が実ヘッダー直下から始まるようにする。
   項目数が多く画面に収まりきらないため、.mean-nav自体を独立スクロールコンテナにする */
@media screen and (max-width:767px){
    .mean-nav{
        margin:16.4103vw 0 0;
        max-height:calc(100dvh - 16.4103vw);
        overflow-y:auto;
        overflow-x:hidden;
        overscroll-behavior-y:contain;
        -webkit-overflow-scrolling:touch;
        background:#ffffff;
    }
    .mean-nav ul{
        width:100%;
        padding:0;
        margin:0;
        list-style:none;
    }
    .mean-nav ul li{
        position:relative;
        float:none;
        width:100%;
    }
    /* 不具合修正：Figmaの配色案ではなく、現行サイト(https://actfactory.net/)実機の
       common/css/widget.css（.mean-container .mean-nav ...）を実測の根拠として
       採用し直す。現行サイトはhtml{font-size:10px}基準で、親メニューは
       background:#f1f2f6（グレー）・font-size:1.5rem(15px)・
       padding:1.5em 3.5em 1.5em 15px、罫線はborder-top:1px solid #DBE2E6のみ
       （縦罫線は無い）。以前はグレー背景を子メニュー側に付けてしまっており、
       親グレー・子白という現行サイトの配色と逆転していた。 */
    .mean-nav ul li a{
        display:block;
        width:100%;
        /* 15px 52.5px 15px 15px（現行サイト実測：1.5em×15px=22.5px、3.5em=52.5px） */
        padding:5.7692vw 13.4615vw 5.7692vw 3.8462vw;
        background:#f1f2f6;
        border-top:1px solid #dbe2e6;
        font-weight:bold;
        font-size:3.8462vw;
        line-height:1.4;
        color:#111111;
        text-decoration:none;
        text-transform:none;
    }
    /* 不具合修正：画面幅393pxで実測すると最上位（ホーム〜採用情報）の行の高さが
       約72.77pxになっており、現行サイトの61pxより約12px高かった。原因は
       common_first.cssのbody{line-height:1.75}を継承したままになっており、現行サイトの
       .mean-container .mean-nav{line-height:1}が未反映だったこと。
       padding+line-height×font-sizeの積み上げ計算はフォントの内部メトリクスの
       誤差を受けるため、最上位の行だけheight:61px(box-sizing:border-boxで
       padding/border込み)を直接指定し、display:flex+align-itemsで文字を上下中央に
       揃える方式にした（フォントに関わらず必ず61pxになる）。第2階層以降は
       長いラベルで折り返す項目があるため、この固定高さは適用せず
       従来どおりpadding駆動の可変高さのままにする */
    .mean-nav > ul > li > a{
        display:flex;
        align-items:center;
        /* 61px。scrollbar-gutter:stable適用下ではvwの基準幅が縮む（393px幅で
           実測1vw≒3.78px）ため、61/393ではなく61/378で算出した値を使う */
        height:16.1376vw;
        padding-top:0;
        padding-bottom:0;
    }
    /* 不具合修正：実際に生成される先頭項目<li>には現行サイト側もclass="home"を
       持たない（実機のnav.meanMenuソースを確認）ため、.home用の青背景ルールは
       そもそも適用されていなかった。ホームも他の項目と同じグレー背景に統一する */
    .mean-nav > ul > li:first-child > a{
        background:#f1f2f6;
        color:#111111;
        border-top:1px solid #dbe2e6;
    }
    .mean-nav > ul > li:first-child > a:visited,
    .mean-nav > ul > li:first-child > a:hover,
    .mean-nav > ul > li:first-child > a:focus,
    .mean-nav > ul > li:first-child > a:active{
        background:#f1f2f6;
        color:#111111;
    }
    /* 現行サイト実測：「見積依頼フォーム」以降（li.comNav）は青背景・白文字の
       別ブロックになる。当サイトの構造では「見積依頼フォーム」がメイン<ul>の
       最終項目のため、:last-childで同じ配色（背景/文字色/罫線/paddingとも
       li.comNav a の実測値）を再現する。上部グレー領域の罫線・paddingは
       このブロックには適用しない */
    .mean-nav > ul > li:last-child > a{
        padding:3.5897vw 6.4103vw;
        background:#005bac;
        border-top:none;
        border-bottom:1px solid rgba(255,255,255,0.3);
        color:#ffffff;
        font-weight:normal;
    }
    .mean-nav > ul > li:last-child > a:visited{
        color:#ffffff;
    }
    /* 現行サイト実測：第2階層は白背景・青太字だが文字サイズ(1.5rem)・左paddingは
       第1階層と同じ（字下げしない）。第3階層以降だけ文字サイズを落とし黒文字にする */
    .mean-nav ul ul{
        background:#ffffff;
    }
    /* 不具合修正：.mean-nav ul li a{background:#f1f2f6}が「ul li a」という
       子孫セレクタのため第2階層以降のリンクにもグレー背景が及んでしまっていた。
       ここで明示的に白へ戻し、親メニュー(グレー)/子メニュー(白)を確実に分離する */
    .mean-nav ul ul a{
        background:#ffffff;
        font-weight:bold;
        color:#005bac;
    }
    .mean-nav ul ul ul a{
        /* 1.2em×13px=15.6px、右padding=3.5em×13px=45.5px、左padding=15px+13px=28px
           （現行サイトはここからfont-size:1.3rem(13px)・黒文字に切り替わる） */
        padding-top:4vw;
        padding-right:11.6667vw;
        padding-bottom:4vw;
        padding-left:7.1795vw;
        font-size:3.3333vw;
        font-weight:bold;
        color:#111111;
    }
    .mean-nav ul ul ul ul a{
        padding-left:10.5128vw; /* 15px+26px */
    }
    .mean-nav ul ul ul ul ul a{
        padding-left:13.8462vw; /* 15px+39px */
    }
    /* 開閉トリガー（プラグインが子持ちの<ul>ごとに自動挿入する"+"/"-"リンク） -----
       不具合修正：タップ領域が行の一部しかカバーしておらず反応領域が狭かった。
       行の実高さを61px(padding22.5px×2+border1px+line-height1×15px)に修正した
       のに合わせ、開閉ボタンの高さも同じ61pxにして行の上端から下端までを
       反応領域にする（幅は現行サイト実測の4em＝56pxのまま、右端に固定）。
       scrollbar-gutter:stable適用下ではvwの基準幅が縮む（393px幅で実測1vw≒3.78px）
       ため、56px/61pxとも393ではなく378を基準に算出した値を使う。
       領域はborder/背景を持たない（縦罫線を含む一切の罫線・背景は無し）。
       線は太さ2px・長さ1.25em(≒17.5px)、色#18639F。「−」は横線(::before)＋
       縦線(::after)をtop/left:50%+translate(-50%,-50%)で中心に固定し、
      .mean-clickedで::afterのみ非表示にして「＋」⇄「−」を切替える。
       文字の"+"/"−"は使用しない（プラグインが書き換える実テキストはfont-size:0で
       不可視化）。height:100%は.mean-expandの配置基準である<li>自身の高さに対する
       割合のため、開閉で子<ul>を含む<li>全体の高さが変わるとアイコンの中心位置も
       一緒に動いてしまう。固定値(61px)を明示することで、開閉に関わらず
       アイコン領域の幅・高さ・中心位置が変わらないようにする */
    .mean-nav a.mean-expand{
        position:absolute;
        top:0;
        right:0;
        z-index:2;
        display:block;
        width:14.8148vw; /* 56px */
        height:16.1376vw; /* 61px */
        /* 不具合修正：.mean-nav ul li a側のpadding(左右合計約65px)がpaddingを
           指定していないこのルールにも及び、box-sizing:border-box下でpaddingが
           指定幅(56px)を上回りタップ領域が意図せず広がっていた。paddingを
           明示的に0へ戻す */
        padding:0;
        border:none;
        background:none;
        font-size:0;
        color:transparent;
    }
    /* 現行サイト実測：第3階層以降にぶら下がる開閉ボタンは高さのみ3em(42px)に縮む */
    .mean-nav ul > li > ul > li > ul > li a.mean-expand{
        height:10.7692vw;
    }
    .mean-nav a.mean-expand::before,
    .mean-nav a.mean-expand::after{
        content:"";
        position:absolute;
        top:50%;
        left:50%;
        background:#18639f;
        transform:translate(-50%, -50%);
    }
    .mean-nav a.mean-expand::before{
        width:4.4872vw;
        height:2px;
    }
    .mean-nav a.mean-expand::after{
        width:2px;
        height:4.4872vw;
    }
    .mean-nav a.mean-expand.mean-clicked::after{
        display:none;
    }
}

/* ----- li.info（会社情報・電話バッジ） -----
   現行サイト(https://actfactory.net/)実機のwidget.css実測（.mean-nav ul li.info ...
   および全体共通コンポーネントの.contactArea/.area/.tel .num a）を根拠に、
   class名（.logo/.companyInfo/dl.company/dt.name/dd.add/dd.tel/.contactArea/
   dl.tel/dt.area/dd.num）はそのまま、数値・配色を実測値へ合わせ直す。
  .mean-nav ul li a の既定スタイル（padding・border-top・黒太字）は
   nav項目用のため、li.info内のインラインリンク（TEL番号・電話バッジ）には
   個別に上書きして無効化する。 */
@media screen and (max-width:767px){
    /* 不具合修正：companyInfo/contactAreaにFigma由来のmax-width(268px/294px)を
       付けていたため、実際のドロワー幅(390px前後)よりかなり狭い枠に住所が
       収まってしまい、現行サイトとは異なる位置で改行されていた。
       現行サイトのドロワー内幅いっぱい（li.infoの左右padding分だけを引いた幅）まで
       広げ、左右paddingは行メニューの左paddingと揃える（15px＝3.8462vw） */
    .mean-nav li.info{
        padding:10.2564vw 3.8462vw;
        border-top:1px solid #dbe2e6;
    }
    .mean-nav li.info .logo{
        width:100%;
        margin-bottom:3.5897vw;
    }
    /* 不具合修正：ロゴが左寄せになっていた。imgは img{display:block}のため
       親のtext-align:centerでは中央寄せにならず、img自身にmargin:auto（左右）が必要。
       ロゴ画像自体の幅（aspect-ratio 266/38基準のheight指定）は変更しない */
    .mean-nav li.info .logo img{
        width:auto;
        height:9.7436vw;
        margin-right:auto;
        margin-left:auto;
    }
    /* 不具合修正：ページ下部フッターの会社情報ブロックと同じclass名(.companyInfo)を
       共有しているため、footer.cssの共通ルール.companyInfo{text-align:center}を
       意図せず継承し、京都本社/東京支店の見出し・住所が中央揃えになっていた。
       現行サイトのドロワー内は左揃えが正のため、このスコープだけ明示的に戻す。
       幅もmax-widthで狭めず、li.infoの内側幅いっぱいまで広げる */
    .mean-nav li.info .companyInfo{
        display:block;
        width:100%;
        margin-top:4.4872vw;
        text-align:left;
    }
    /* 不具合修正：COMPANYセクション(<section class="company">)と同じclass名(.company)を
       dl要素が共有しているため、.pageIndex .company{text-align:center}（pageIndex_body.css、
       トップページのCOMPANYセクション用。トップページ限定のためscopeは.pageIndexのまま）が
       <dl class="company">にも直接適用され、.companyInfo側で戻したtext-align:leftより
       優先して中央揃えに戻ってしまっていた。dlの方を明示的に上書きする */
    /* 不具合修正：line-height:1.85はbody{line-height:1.75}（サイト全体の既定値）より
       さらに広く、住所・TEL/FAX行の間に必要以上の余白ができていた。dd.add/dd.tel1行ずつの
       行間として詰まった見た目になるよう1.4へ縮小する */
    .mean-nav .companyInfo dl.company{
        text-align:left;
        font-size:3.3333vw; /* 1.3rem=13px（住所・TEL/FAX） */
        line-height:1.4;
    }
    .mean-nav .companyInfo dl.company + dl.company{
        margin-top:4.4872vw; /* 1.75em×14px（周辺文脈の基準14px） */
    }
    .mean-nav .companyInfo dt.name{
        margin-bottom:1.7949vw; /* 0.5em×14px */
        font-size:3.5897vw; /* 1.4rem=14px */
        /* 不具合修正：明示指定が無くbody{line-height:1.75}を継承し、見出し1行だけの
           要素にしては行の実高さが必要以上に高くなっていた */
        line-height:1.3;
        font-weight:bold;
    }
    .mean-nav .companyInfo dd.tel a{
        display:inline;
        padding:0;
        border-top:0;
        font-weight:bold;
        font-size:inherit;
        color:#005bac;
    }
    .mean-nav .companyInfo dd.tel a:visited{
        color:#005bac;
    }
    /* 不具合修正：.contactAreaにdisplay:flexを指定していたため、2つのdl.tel（西日本/東日本）が
       横並びになってしまっていた。横並びにすべきはdl.tel「内」のdt(バッジ)+dd(電話番号)のほうで、
       2つのdl.tel自体は縦に積む。現行サイトは.area/.numとも可視の帯・枠は持たない */
    /* 不具合修正：width:100%で左右いっぱいに広げていたため、内容（バッジ＋電話番号の
       自然幅）に対してブロック自体が常に左寄せの帯に見えていた。text-align/内部の
       左揃えはdl.tel側（badge→numberの横並び）を維持したまま、ブロック自体は
       fit-content＋左右margin:autoで中央配置する。align-items:flex-startにより、
       西日本/東日本の2行の幅が異なっても左端の基準は揃う */
    .mean-nav .contactArea{
        display:flex;
        flex-direction:column;
        align-items:flex-start;
        width:fit-content;
        margin-top:5.1282vw;
        margin-right:auto;
        margin-left:auto;
    }
    .mean-nav .contactArea dl.tel{
        display:flex;
        align-items:center;
        margin-bottom:1.5385vw;
    }
    /* 指示により角丸のピル型バッジ（border-radius/background）を維持する。
       上下paddingが広すぎた点のみ調整：現行サイトの共通.contactArea .area{
       padding:0.5em 1em;border-radius:2em}を基準に、上下0.5em(6px)・左右1em(12px)
       （1.2rem=12px基準）へ縮小する（以前のli.info専用上書き0.75em/1.25emより
       上下を約3px引き締める） */
    /* 不具合修正：明示指定が無くbody{line-height:1.75}を継承していたため、
       上下padding(6px)に加えて行の実高さ分の余白も乗ってしまい、ピルバッジが
       意図した6px+6pxより大きく見えていた。line-height:1でpadding分のみの高さにする */
    .mean-nav .contactArea dt.area{
        margin-right:2.3077vw;
        padding:1.5873vw 3.1746vw; /* 6px 12px */
        border-radius:6.1538vw;
        color:#ffffff;
        font-size:3.0769vw; /* 1.2rem=12px */
        line-height:1;
        font-weight:bold;
        white-space:nowrap;
    }
    .mean-nav .contactArea dl.tel.west dt.area{
        background:#1381d6;
    }
    .mean-nav .contactArea dl.tel.east dt.area{
        background:#005bac;
    }
    /* 不具合修正：明示指定が無くbody{line-height:1.75}を継承していたため、
       26px相当の電話番号テキストの上下に想定以上の余白が生まれ、バッジとの
       垂直位置も間延びして見えていた。数字表示として詰まった1.2に固定する */
    .mean-nav .contactArea dd.num a{
        display:block;
        padding:0;
        background:none;
        border-top:0;
        border-radius:0;
        font-family:"Oswald", sans-serif;
        font-weight:500;
        font-size:6.6667vw; /* 2.6rem=26px */
        line-height:1.2;
        text-decoration:none;
    }
    .mean-nav .contactArea dd.num a:hover,
    .mean-nav .contactArea dd.num a:focus,
    .mean-nav .contactArea dd.num a:active{
        background:none;
    }
    .mean-nav .contactArea dl.tel.west dd.num a,
    .mean-nav .contactArea dl.tel.west dd.num a:visited{
        color:#1381d6;
    }
    .mean-nav .contactArea dl.tel.east dd.num a,
    .mean-nav .contactArea dl.tel.east dd.num a:visited{
        color:#005bac;
    }
}

/* ----- 追加コンテンツ（フッターリンク・コピーライト） -----
   現行サイトのmeanMenu構造には存在しない、Figma固有の追加コンテンツのため、
   プラグイン本体にはナビ以外のコンテンツを差し込む仕組みが無いことを踏まえ、
   common.jsが.mean-nav生成後に#SpNavExtraの内容をappendする。開閉状態は
   プラグインが自身のクリック処理内でトグルする既存の目印
   （.meanmenu-reveal.meanclose）と:has()で連動させる。 */
.js-meanExtra{
    display:none;
}
@media screen and (max-width:767px){
    .mean-container:has(a.meanmenu-reveal.meanclose) .js-meanExtra{
        display:block;
    }
    .drawerNav__foot,
    .drawerNav__copyright{
        background:#005bac;
    }
    /* 不具合修正：詳細度が.mean-nav ul li a（クラス1つ+要素3つ）に負け、
       白文字指定があるにも関わらず黒文字(#111111)で表示されていた。.mean-navを
       明示してクラス2つ+要素1つへ詳細度を引き上げ、確実に上書きする */
    .mean-nav .drawerNav__foot a{
        display:block;
        /* 現行サイト実測(li.comNav a)：padding:1em 0(li側の左右25pxで字下げ)、
           太字ではなく通常ウェイト、上罫線は持たない（下罫線のみ） */
        padding:3.5897vw 6.4103vw;
        background:#005bac;
        border-top:none;
        border-bottom:1px solid rgba(255,255,255,0.3);
        color:#ffffff;
        font-weight:normal;
        font-size:3.5897vw;
        transition:opacity 0.2s;
    }
    .mean-nav .drawerNav__foot a:visited{
        color:#ffffff;
    }
    .mean-nav .drawerNav__foot a:hover,
    .mean-nav .drawerNav__foot a:focus-visible,
    .mean-nav .drawerNav__foot a:active{
        opacity:0.8;
    }
    .drawerNav__copyright{
        padding:4.359vw 5.1282vw 6.1538vw;
        color:#ffffff;
        font-size:2.8205vw;
        text-align:center;
    }
}

/* ----- 背面ページのスクロールロック -----
   不具合修正：以前はposition:fixed＋body.style.top=-scrollYpxでスクロール位置を
   偽装する方式だったが、position:fixedへ切り替わった瞬間に.mean-bar（同じく
   position:fixed）を含む固定要素のヒットテスト座標がスクロール量ぶんズレて計算される
   ことがあり、スクロール後に開閉ボタンが反応しなくなる不具合の原因になっていた
   （ページ先頭＝スクロール0の時だけズレが0になるため症状が出ない、という再現条件と一致）。
   ページの位置を動かさず<html>/<body>のoverflow:hiddenだけでスクロールを止める方式に
   変更し、この種の座標ズレが起きないようにする。touch-action:noneはタッチ端末で
   overflow:hiddenのみでは背面スクロールを防ぎきれない場合の保険。位置を動かさないため
   スクロール位置の保存・復元（window.scrollTo）も不要になった */
html.isDrawerOpen,
body.isDrawerOpen{
    overflow:hidden;
    touch-action:none;
}



/* ######################################################################################

　白ヘッダー状態（下層ページ常時 ／ トップページのスクロール後）
　注意：後方の各基本ルール（.gnav > ul > li > a の色、.contact .button の色等）と
　同じ詳細度になる箇所があるため、確実に優先させるためファイル末尾に配置する

###################################################################################### */

/* ----- PC：白ヘッダー状態（トップページのスクロール後 ＝ 下層ページは常時） -----
   下層ページには.heroが無いため透過のままだと本文の背景がそのまま透けてしまう。
   「下層ページはタイトル帯が青いため、ヘッダーはスクロール位置に関係なく常時白背景・
   黒文字」という指示により、トップページのスクロール後（.isScrolled）とまったく同じ
   白背景・黒文字の見た目を、下層ページでは常時適用する（スクロール前後で変化させない）。
   不具合修正：以前は対象の下層ページをBodyClass由来のページ種別class（.pageContents等）
   の列挙で判定していたため、新しいページ種別を追加するたびに列挙へ追記が必要だった。
   .pageIndexは実際のトップページ（SiteIndex.html）にのみ付与され、Header2026を使う
   下層ページ側には一切付与されないこと（page_class等の個別付与も含め）を確認済みのため、
   「.pageIndex以外」で下層ページ全体を判定する（新しいページ種別追加時のCSS追記が
   不要になる）。.isScrolled側は元々.heroが無いページでは付与され得ない
   （common.js参照）ため.pageIndex修飾は無くても動作上は同じだが、「トップページの
   スクロール後」と「下層ページの初期状態」の2条件を明確に分けて書くため
   .pageIndexを明示する。URLでの判定は行わない。トップページのページ先頭
   （透過、.isScrolledが付く前）の見た目はここでは変更しない */
@media print, screen and (min-width:768px){
    .pageIndex .header.isScrolled,
    body:not(.pageIndex) .header{
        background-color:#ffffff;
        /* 白背景がページ本文と同化するための最小限の下方向シャドウ。
           透過状態（トップページ先頭）には出さないため、白背景と同じ条件のここに限定して付与する */
        box-shadow:0 2px 8px rgba(0, 0, 0, 0.08);
    }
    /* ナビ文字・矢印：矢印(::after)はcolor:currentColorを見ているため、リンク自体の
       文字色を変えるだけで自動的に追従する（矢印だけの個別指定は不要） */
    .pageIndex .header.isScrolled .gnav > ul > li > a,
    body:not(.pageIndex) .header .gnav > ul > li > a{
        color:#111111;
    }
    /* ロゴ：SPドロワーと同じ「濃色ロゴへのクロスフェード」方式を採用する。PC専用に
       追加した2枚目の直下img（:nth-of-type(2)、header/logo.png）をこの状態でのみ表示する
       （1枚目=SPドロワー用のfooter/logo_sp.pngとは別要素、CSS filterは使用しない） */
    .pageIndex .header.isScrolled .logo picture img,
    body:not(.pageIndex) .header .logo picture img{
        opacity:0;
    }
    .pageIndex .header.isScrolled .logo a > img:nth-of-type(2),
    body:not(.pageIndex) .header .logo a > img:nth-of-type(2){
        opacity:1;
        pointer-events:auto;
    }
    /* 見積依頼フォームボタン：白背景用にブランドブルー(#005bac)へ切り替える。
       hover/focus/activeは元の透過状態でも個別の色変化を持たないため、この1色のみで揃う */
    .pageIndex .header.isScrolled .contact .button,
    .pageIndex .header.isScrolled .contact .button:link,
    .pageIndex .header.isScrolled .contact .button:visited,
    .pageIndex .header.isScrolled .contact .button:hover,
    .pageIndex .header.isScrolled .contact .button:focus,
    .pageIndex .header.isScrolled .contact .button:active,
    body:not(.pageIndex) .header .contact .button,
    body:not(.pageIndex) .header .contact .button:link,
    body:not(.pageIndex) .header .contact .button:visited,
    body:not(.pageIndex) .header .contact .button:hover,
    body:not(.pageIndex) .header .contact .button:focus,
    body:not(.pageIndex) .header .contact .button:active{
        color:#005bac;
        border-color:#005bac;
    }
}

/* ----- SP：白ヘッダー状態（トップページのスクロール後 ＝ 下層ページは常時） -----
   不具合修正：以前はSPトップページのスクロール後だけ「既存仕様のため変更しない」として
   .isScrolledをこのブロックの対象外にしており、.header.isScrolled{background-color:
   var(--header-scrolled-bg)}（青、ファイル冒頭）がそのまま適用されていた。指示により
   PC同様「スクロール後は白背景・黒文字、青背景にはしない」へ統一する。
   .header.isScrolledはPC側と同じ.header自身のクラスのためそのまま追加できるが、
   ハンバーガーの3本線（a.meanmenu-reveal span）は.mean-barごと.headerの外側に
   fixed配置されている別要素（スタッキングコンテキストの都合、上部コメント参照）のため、
   「.header.isScrolledの兄弟要素」を辿る手段が無い。:has()で一旦bodyまで上がってから
   辿り直すことで、新しい状態classを増やさずに対応する。
   不具合修正：ここを`body:has(.pageIndex .header.isScrolled)`と書くと、:has()の引数
   （子孫結合子を含むセレクタ）は暗黙に`:scope`（＝body自身）を起点とした子孫探索として
   評価されるため、「bodyの子孫の中に.pageIndexを持つ要素があるか」まで要求してしまう。
   実際には.pageIndex自体がbody自身に付くclassのため、bodyの子孫の中には存在せず、
   常にfalseになって不具合の温床になっていた（header.matches()単体では真になるため
   見落としやすい）。「.pageIndexかどうか」はbody自身への直接判定（`.pageIndex:has(...)`の
   ように:has()の外側の複合セレクタとして書く）に切り離し、:has()の中はbodyの実際の子孫を
   辿る`.header.isScrolled`だけにする。
   下層ページの判定はPC側（上部ブロック）と同じ理由により、ページ種別classの列挙ではなく
   body:not(.pageIndex)を用いる（詳細はPC側ブロックのコメント参照） */
@media screen and (max-width:767px){
    .pageIndex .header.isScrolled,
    body:not(.pageIndex) .header{
        background-color:#ffffff;
        /* 白背景がページ本文と同化するための最小限の下方向シャドウ（PC側と同じ値） */
        box-shadow:0 2px 8px rgba(0, 0, 0, 0.08);
    }
    /* 白背景上でも視認できるよう、ロゴ・ハンバーガーの3本線をSPドロワー展開時と同じ濃色へ
       常時切り替える（「×」は元から#3a3a3aで対応済みのため変更不要）。SP側は既存の
       1枚目の直下img（:nth-of-type(1)、footer/logo_sp.png）をそのまま使う */
    .pageIndex .header.isScrolled .logo picture img,
    body:not(.pageIndex) .header .logo picture img{
        opacity:0;
    }
    .pageIndex .header.isScrolled .logo a > img:nth-of-type(1),
    body:not(.pageIndex) .header .logo a > img:nth-of-type(1){
        opacity:1;
        pointer-events:auto;
    }
    .pageIndex:has(.header.isScrolled) a.meanmenu-reveal span,
    body:not(.pageIndex) a.meanmenu-reveal span{
        background:#3a3a3a;
    }
}
