/* =========================================================
   ハードディスク破壊サービス サイト共通スタイルシート
   ---------------------------------------------------------
   デザイン方針：テイストB「洗練・モダン」をベースに、
   信頼感を補強するテイストD「上品・高級感」の紺・線細工
   モチーフを部分的に融合したハイブリッド。
   角丸は4/6/10/999px の4段（--radius-xs / --radius / --radius-lg / --radius-pill）、
   影は用途別に使い分け、余白は section 単位で強弱を付ける。
   ========================================================= */
:root{
  /* ベンチマーク: haku-t.com（Tailwind sky/slate パレット） */
  --navy:#0f172a;          /* slate-900: 見出し・ダーク帯 */
  --navy-2:#1e293b;        /* slate-800 */
  --navy-3:#0369a1;        /* sky-700: リンク・ホバー */
  --slate:#475569;         /* slate-600: 補足テキスト */
  --text:#334155;          /* slate-700: 本文 */
  --bg:#ffffff;
  --bg-alt:#f8fafc;        /* slate-50 */
  --bg-alt2:#f1f5f9;       /* slate-100 */
  --border:#e2e8f0;        /* slate-200 */
  --accent:#0284c7;        /* sky-600: プライマリアクション */
  --accent-dark:#0369a1;   /* sky-700 */
  --accent-darker:#075985; /* sky-800 */
  --accent-text:#0369a1;   /* 文字色専用（淡色背景上でも4.5:1を確保） */
  --accent-soft:#e0f2fe;   /* sky-100 */
  --green:#15803d;         /* green-700 */
  --green-soft:#f0fdf4;    /* green-50 */
  --gold:#38bdf8;          /* 旧金アクセント → sky-400 の細リングに置換 */

  /* 角丸スケール：テイストB(0〜4px)を基本に、テイストD(0〜8px)まで許容。
     丸ボタン(--radius-pill)だけは例外として維持し「メリハリ」を作る。 */
  --radius-xs:4px;
  --radius:6px;
  --radius-lg:10px;
  --radius-pill:999px;

  /* 影：用途ごとに濃淡を変える（同じ影を使い回さない） */
  --shadow-xs:0 1px 2px rgba(15,36,56,.07);
  --shadow-sm:0 6px 20px rgba(15,36,56,.10);
  --shadow-md:0 1px 0 rgba(15,36,56,.05),0 14px 32px rgba(15,36,56,.10);
  --shadow-lg:0 16px 40px rgba(15,36,56,.16);
  /* 後方互換（既存参照が残っていても破綻しないように） */
  --shadow:var(--shadow-xs);

  --maxw:1180px;
  /* ヘッダー実高（main.js が実測して更新。JS無効時は概算値で安全に劣化） */
  --header-h:72px;
  --font: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;
  /* ベンチマーク準拠：見出しもゴシック（太字）で統一 */
  --font-serif: var(--font);

  --ease:cubic-bezier(.22,.61,.36,1);

  /* タイポスケール（.94/.95/.96/.98rem 等の0.01rem差の乱立をここへ丸め込む） */
  --fs-xs:.78rem; --fs-sm:.86rem; --fs-base:1rem; --fs-md:1.06rem;
  --fs-lg:1.16rem; --fs-xl:1.3rem; --fs-2xl:1.5rem;
  /* 余白スケール（8pxグリッド） */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px;
  /* 行間 */
  --lh-body:1.9; --lh-heading:1.45; --lh-ui:1.3;
  /* 追加カラー：--gray-500 は UI 部品の枠線用（白背景で 4.76:1／WCAG 1.4.11 の 3:1 を満たす） */
  --danger:#b91c1c; --gray-500:#64748b; --gray-400:#94a3b8; --border-strong:#94a3b8;
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;
  /* WCAG 2.2 / 2.4.11 Focus Not Obscured：固定ヘッダーにアンカー先が隠れないようにする */
  scroll-padding-top:calc(var(--header-h, 72px) + 8px);}
/* !important はこの1箇所のみ残す。
   理由：利用者のOS設定（動き抑制）は個別コンポーネントの transition/animation 指定より
   常に優先されなければならず、後続のどの宣言にも上書きさせてはならないため（WCAG 2.3.3）。 */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}
}
body{
  margin:0;
  font-family:var(--font);
  color:var(--text);
  background:var(--bg);
  line-height:var(--lh-body);
  /* 画面幅に応じて16px→17pxへ滑らかに可変（レスポンシブタイポグラフィ） */
  font-size:clamp(16px,15.4px + .12vw,17px);
  letter-spacing:.03em;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--navy-3);text-decoration:none;}
a:hover{text-decoration:underline;}
ul,ol{padding-left:1.3em;}
h1,h2,h3,h4{
  color:var(--navy);line-height:var(--lh-heading);font-weight:700;margin:0 0 .6em;letter-spacing:.02em;
  /* 日本語見出しの改行品質：行長の均等化＋文節単位の折り返し（対応ブラウザのみ有効・安全に劣化）。
     overflow-wrap:anywhere は長い複合語（例：記憶装置物理破壊完了証明書）が
     極小幅ではみ出すのを防ぐ最終フォールバック */
  text-wrap:balance;word-break:auto-phrase;overflow-wrap:anywhere;
}
h1,h2{font-family:var(--font);font-weight:800;}
h1{font-size:clamp(1.8rem,1.55rem + 1.2vw,2.25rem);}
h2{font-size:clamp(1.42rem,1.3rem + .7vw,1.7rem);}
h3{font-size:clamp(1.12rem,1.06rem + .3vw,1.22rem);}
h4{font-size:var(--fs-md);}
p{margin:0 0 1.1em;text-wrap:pretty;}
li{text-wrap:pretty;}
strong{color:var(--navy);font-weight:700;}
small{letter-spacing:.01em;}
::selection{background:var(--navy);color:#fff;}

/* 汎用：引用・強調（コンテンツ側が素のタグを使っても破綻しないための下地） */
blockquote{margin:1.4em 0;padding:.2em 0 .2em 1.3em;border-left:3px solid var(--gold);color:var(--slate);font-style:italic;}
blockquote p:last-child{margin-bottom:0;}
mark{background:linear-gradient(transparent 62%, #7dd3fc 62%);color:var(--text);padding:0 .05em;}

.container{max-width:var(--maxw);margin:0 auto;padding:0 20px;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}

/* ---------- アクセシビリティ：スキップリンク／フォーカス表示 ---------- */
.skip-link{
  background:var(--navy);color:#fff;padding:10px 18px;border-radius:var(--radius);
  font-weight:700;text-decoration:none;letter-spacing:.03em;
}
.skip-link:focus{
  position:fixed;left:12px;top:12px;width:auto;height:auto;overflow:visible;clip:auto;
  white-space:normal;z-index:1000;box-shadow:var(--shadow-sm);
  outline:3px solid var(--accent);outline-offset:2px;text-decoration:none;
}
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,select:focus-visible,textarea:focus-visible,
[tabindex]:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;border-radius:2px;
}
/* マウス操作時に不要な既定フォーカスリングは出さない（:focus-visible対応ブラウザのみ） */
a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:none;}

/* ---------- WCAG 2.2 / 2.5.8 Target Size（最小24px）を満たすための下地 ---------- */
.header-cta .tel-number,.footer-tel .tel-number{display:inline-block;padding:2px 0;min-height:24px;}

/* ---------- Header ---------- */
.site-header{
  position:sticky;top:0;z-index:100;
  background:#fff;border-bottom:1px solid var(--border);
  box-shadow:var(--shadow-xs);
}
.header-inner{
  max-width:var(--maxw);margin:0 auto;padding:10px 20px;
  display:flex;align-items:center;gap:18px;justify-content:space-between;
}
.brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:700;color:var(--navy);font-size:var(--fs-base);flex-shrink:1;min-width:0;}
.brand > span{min-width:0;overflow:hidden;}
.brand:hover{text-decoration:none;}
.brand .brand-logo{
  height:40px;width:auto;flex-shrink:0;display:block;
}
.brand-text{
  min-width:0;overflow:hidden;
  line-height:1.25;letter-spacing:.01em;
}
.brand small{display:block;font-weight:500;font-size:.68rem;color:var(--slate);letter-spacing:.02em;line-height:1.35;margin-top:1px;}
/* 320〜360px 幅でヘッダーが横あふれしないよう段階的に縮める */
@media (max-width:399.98px){
  .brand{font-size:var(--fs-sm);gap:6px;}
  .brand .brand-logo{height:32px;}
  .brand small{display:none;}
}

.main-nav{display:none;}
/* flexは第1階層のみ（.dropdown への display 汚染を防ぐため必ず子セレクタで限定する） */
.main-nav > ul{list-style:none;margin:0;padding:0;display:flex;gap:2px;}
.main-nav > ul > li{position:relative;}
.main-nav > ul > li > a{
  display:block;padding:10px var(--sp-2);font-weight:600;font-size:var(--fs-sm);color:var(--navy);border-radius:var(--radius);
  letter-spacing:0;white-space:nowrap;transition:background-color .18s var(--ease),color .18s var(--ease);
}
/* ドロップダウンを持つ項目の視覚的アフォーダンス（装飾のため代替テキスト構文でSR読み上げを抑止。
   非対応ブラウザは後の宣言を無視し前の宣言で表示を維持） */
.main-nav > ul > li.has-dropdown > a::after{content:"▾";content:"▾" / "";margin-left:5px;font-size:.68em;color:var(--slate);}
.main-nav > ul > li > a:hover{background:var(--bg-alt);text-decoration:none;}
.main-nav > ul > li.is-active > a{color:var(--accent-text);}
.dropdown{
  display:none;position:absolute;left:0;top:100%;background:#fff;border:1px solid var(--border);
  border-radius:0 0 var(--radius-lg) var(--radius-lg);box-shadow:var(--shadow-sm);min-width:250px;padding:8px;z-index:50;
  border-top:2px solid var(--navy);list-style:none;margin:0;
}
/* 右端の項目はパネルを右揃えにして画面外へのはみ出しを防止 */
.main-nav > ul > li:nth-last-child(-n+2) .dropdown{left:auto;right:0;}
.main-nav > ul > li:hover .dropdown,
.main-nav > ul > li:focus-within .dropdown,
.main-nav > ul > li.is-open .dropdown{display:block;} /* is-open はタッチ端末用（main.jsが制御） */
.dropdown li a{display:block;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);border-radius:var(--radius);color:var(--text);letter-spacing:0;transition:background-color .15s var(--ease);}
.dropdown li a:hover{background:var(--bg-alt);text-decoration:none;color:var(--navy-3);}

.header-cta{display:flex;align-items:center;gap:10px;flex-shrink:0;}
/* モバイル幅でのヘッダーはみ出し防止：電話・見積りCTAはモバイルメニュー内に同等の導線があるため段階的に隠す */
@media (max-width:759.98px){.header-cta .tel-block{display:none;}}
@media (max-width:479.98px){.header-cta .btn-primary{display:none;}}
.tel-block{text-align:right;line-height:1.25;}
.tel-block .tel-label{font-size:.75rem;color:var(--slate);display:block;letter-spacing:.01em;}
.tel-number{font-size:1.25rem;font-weight:800;color:var(--navy);white-space:nowrap;letter-spacing:0;}
.tel-number::before{content:"\260E  ";content:"\260E  " / "";} /* 装飾記号：SRには読ませない */
.btn{
  display:inline-block;padding:var(--sp-3) var(--sp-5);border-radius:var(--radius-pill);font-weight:700;font-size:var(--fs-base);
  border:2px solid transparent;cursor:pointer;text-align:center;white-space:nowrap;letter-spacing:.02em;
  transition:background-color .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),
             transform .2s var(--ease),box-shadow .2s var(--ease);
}
/* ヘッダー内は高さを抑える（ナビ横幅の確保） */
.header-cta .btn{padding:var(--sp-3) 18px;font-size:.9rem;}
.btn:hover{transform:translateY(-1px);}
.btn:active{transform:translateY(0);}
/* コントラスト：白文字はAA(4.5:1)を満たす sky-700(#0369a1)=5.9:1 を基準色に採用 */
.btn-primary{background:var(--accent-dark);color:#fff;box-shadow:0 2px 8px rgba(3,105,161,.28);}
.btn-primary:hover{background:var(--accent-darker);text-decoration:none;color:#fff;box-shadow:0 4px 14px rgba(3,105,161,.34);}
.btn-outline{background:#fff;border-color:var(--navy);color:var(--navy);}
.btn-outline:hover{background:var(--navy);color:#fff;text-decoration:none;}
.btn-lg{padding:var(--sp-4) 36px;font-size:var(--fs-md);}
/* 極小幅ではボタン文言の折り返しを許可し、はみ出し・不自然な省略を防ぐ */
@media (max-width:399.98px){
  .btn{white-space:normal;text-wrap:balance;word-break:auto-phrase;}
  .btn-lg{padding:15px 24px;}
}
.btn-block{display:block;width:100%;}
/* コントラスト：白文字はAA(4.5:1)を満たす orange-700(#c2410c)=4.9:1 を基準色に採用 */
.btn-tel{background:#c2410c;color:#fff;box-shadow:0 2px 8px rgba(194,65,12,.28);}
.btn-tel:hover{background:#9a3412;color:#fff;text-decoration:none;box-shadow:0 4px 14px rgba(154,52,18,.34);}

.nav-toggle{
  display:inline-flex;flex-direction:column;justify-content:center;gap:4px;
  width:38px;height:38px;border-radius:var(--radius-lg);border:none;background:transparent;cursor:pointer;
}
.nav-toggle span{display:block;width:18px;height:2px;background:var(--navy);margin:0 auto;transition:transform .25s var(--ease),opacity .2s var(--ease);}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
/* 表示制御は hidden 属性で行う（main.js がトグル）。!important は使わない */
.mobile-nav{display:block;background:#fff;border-top:1px solid var(--border);}
.mobile-nav[hidden]{display:none;}
/* ---------- スマホ固定CTAバー ---------- */
.sp-cta-bar{display:none;}
@media (max-width:859.98px){
  body{padding-bottom:calc(88px + env(safe-area-inset-bottom));}
  .sp-cta-bar{
    position:fixed;left:0;right:0;bottom:0;z-index:90;display:flex;gap:1px;
    padding:0 0 env(safe-area-inset-bottom);
    background:#fff;box-shadow:0 -4px 16px rgba(15,23,42,.18);
  }
  .sp-cta-bar a{flex:1;min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:0;font-weight:700;padding:10px 6px;line-height:1.3;text-align:center;-webkit-tap-highlight-color:transparent;}
  .sp-cta-bar a:hover{text-decoration:none;}
  .sp-cta-bar a:active{filter:brightness(.9);}
  .sp-cta-tel{background:#c2410c;color:#fff;}
  .sp-cta-tel:hover{color:#fff;}
  .sp-cta-tel span{font-size:.72rem;font-weight:700;opacity:.95;}
  .sp-cta-tel strong{color:#fff;font-size:1.24rem;font-weight:800;letter-spacing:.03em;line-height:1.1;}
  .sp-cta-tel small{color:#fff;font-size:.68rem;font-weight:600;opacity:.9;letter-spacing:.02em;}
  .sp-cta-apply{background:var(--accent-dark);color:#fff;}
  .sp-cta-apply:hover{color:#fff;}
  .sp-cta-apply span{font-size:.72rem;font-weight:700;opacity:.95;}
  .sp-cta-apply strong{color:#fff;font-size:var(--fs-md);font-weight:800;letter-spacing:.02em;line-height:1.15;}
}
.mobile-nav .container{padding:var(--sp-3) 14px 22px;}
.mobile-nav details{border:none;}
.mobile-nav summary{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:var(--sp-3) var(--sp-3);font-weight:700;color:var(--navy);cursor:pointer;
  border-radius:var(--radius-lg);list-style:none;transition:background .15s var(--ease),color .15s var(--ease);
}
.mobile-nav summary::-webkit-details-marker{display:none;}
.mobile-nav summary::after{
  content:"";width:8px;height:8px;flex-shrink:0;margin:-2px 6px 0 0;
  border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);
  transform:rotate(45deg);transition:transform .2s var(--ease);
}
.mobile-nav summary:hover{background:var(--bg-alt);}
.mobile-nav details[open] summary{color:var(--accent-text);background:var(--accent-soft);}
.mobile-nav details[open] summary::after{transform:rotate(-135deg);margin-top:4px;}
.mobile-nav .sub-links{list-style:none;margin:4px 0 10px;padding:8px 8px 8px 14px;background:var(--bg-alt);border-radius:var(--radius-lg);}
.mobile-nav .sub-links li a{display:block;padding:var(--sp-2) 10px;color:var(--text);font-size:.92rem;border-radius:var(--radius);}
.mobile-nav .sub-links li a:hover{background:#fff;color:var(--accent-text);text-decoration:none;}
.mobile-nav > .container > a{display:block;padding:var(--sp-3) var(--sp-3);font-weight:700;color:var(--navy);border:none;border-radius:var(--radius-lg);transition:background .15s var(--ease);}
.mobile-nav > .container > a:hover{background:var(--bg-alt);text-decoration:none;}

/* デスクトップナビ表示境界：main.js の DESKTOP_BP(=1200) と必ず同期させること */
@media (min-width:1200px){
  .main-nav{display:block;}
  .nav-toggle{display:none;}
  .mobile-nav{display:none;}
}

/* ---------- Breadcrumb ---------- */
.breadcrumb{background:var(--bg-alt);border-bottom:1px solid var(--border);}
.breadcrumb ol{
  /* margin/padding の二重指定を解消し、1宣言にまとめる */
  max-width:var(--maxw);margin:0 auto;padding:6px 20px;
  list-style:none;display:flex;flex-wrap:wrap;align-items:center;
  gap:2px var(--sp-2);                     /* 折り返し時の行間 / 項目間 */
  font-size:var(--fs-xs);line-height:1.5;color:var(--slate);
}
.breadcrumb li{display:flex;align-items:center;gap:var(--sp-2);min-width:0;}
/* 区切りの「›」は装飾。SRには読ませない（content の代替テキストを空にする） */
.breadcrumb li+li::before{content:"›";content:"›" / "";color:var(--gray-500);flex-shrink:0;}
/* リンクと最終項目に同じ縦paddingを与え、高さとベースラインを揃える（WCAG 2.5.8: 実効28.8px） */
.breadcrumb a,
.breadcrumb li[aria-current]{padding:5px 0;}
.breadcrumb a{color:var(--slate);display:inline-block;}
.breadcrumb a:hover{color:var(--navy-3);}
.breadcrumb li[aria-current]{color:var(--navy);font-weight:600;}

/* ---------- Hero（フルスクリーン：画像を全面背景に敷きテキストを重ねる） ---------- */
.hero{
  color:var(--text);padding:clamp(44px,7vw,64px) 0 clamp(38px,6vw,52px);
  position:relative;border-bottom:1px solid var(--border);
  /* ヘッダー実高は main.js が --header-h に実測反映（決め打ち72pxはフォールバック） */
  min-height:calc(100vh - var(--header-h));min-height:calc(100svh - var(--header-h));
  display:flex;align-items:center;overflow:hidden;background:#f0f9ff;
}
.hero .container{position:relative;z-index:2;display:grid;grid-template-columns:1fr;gap:30px;align-items:center;width:100%;}
.hero-copy{max-width:680px;}
.hero-visual{position:absolute;inset:0;z-index:0;}
.hero-visual picture,.hero-visual picture img{width:100%;height:100%;}
.hero-visual picture img{display:block;object-fit:cover;object-position:78% 15%;}
/* 可読性確保のオーバーレイ（テキスト側のみ白、人物側は透明でクリアに見せる） */
.hero::after{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,rgba(255,255,255,.96) 0%,rgba(255,255,255,.9) 32%,rgba(255,255,255,.55) 50%,rgba(255,255,255,0) 68%);
}
@media (max-width:899.98px){
  .hero-visual picture img{object-position:72% 12%;}
  .hero::after{background:linear-gradient(180deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.85) 62%,rgba(255,255,255,.45) 100%);}
}
.hero-kicker{display:inline-block;background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent-darker);
  padding:var(--sp-2) 18px;border-radius:var(--radius-lg);font-size:var(--fs-sm);font-weight:700;letter-spacing:.06em;margin-bottom:20px;
  text-wrap:balance;word-break:auto-phrase;}
.hero h1{color:var(--navy);font-size:clamp(1.9rem,1.5rem + 2.2vw,2.9rem);margin-bottom:.5em;letter-spacing:.01em;font-weight:800;line-height:1.4;}
.hero p.lead{color:var(--slate);font-size:clamp(1.02rem,.98rem + .25vw,1.12rem);max-width:40em;letter-spacing:.03em;font-weight:500;line-height:2;word-break:auto-phrase;}
/* モバイルではPC用の手動改行を無効化し、文節ベースの自動折り返しに任せる */
@media (max-width:699.98px){.hero h1 br,.hero p.lead br{display:none;}}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:var(--sp-5);}
.hero-trust{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:32px;padding-top:24px;border-top:1px solid var(--border);}
.hero-trust .trust-item{display:flex;align-items:center;gap:9px;font-size:var(--fs-base);color:var(--navy);font-weight:700;letter-spacing:.02em;}
.hero-trust .trust-item::before{content:"✓";content:"✓" / "";display:inline-flex;width:22px;height:22px;border-radius:50%;background:var(--accent-dark);color:#fff;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0;}
/* スマホ：ヒーローは参考レイアウト（人物右配置＋バッジ3枚＋大CTA＋電話＋エンブレム）
   ※ .hero-actions 等の基本定義より後に置くこと（上書きのため） */
.hero-sp-badges,.hero-sp-emblem,.hero-sp-view{display:none;}
@media (max-width:859.98px){
  /* SP：写真（顔＋HDD中央）を上、テキストを下に配置 */
  .hero{min-height:0;padding:0 0 40px;flex-direction:column;align-items:stretch;background:#f0f9ff;}
  .hero .hero-actions{display:none;}
  .hero .hero-trust{display:none;}
  .hero-visual{position:relative;inset:auto;z-index:0;}
  .hero-visual picture{display:block;height:auto;}
  .hero-visual picture img{width:100%;height:auto;max-height:480px;object-fit:cover;object-position:center top;}
  /* 写真の下端を背景色にフェードさせて本文へつなぐ */
  .hero-visual::after{content:"";position:absolute;left:0;right:0;bottom:0;height:110px;
    background:linear-gradient(180deg,rgba(240,249,255,0) 0%,#f0f9ff 92%);pointer-events:none;}
  .hero::after{content:none;}
  .hero .container{margin-top:-34px;}
  .hero-kicker{background:transparent;border:none;padding:0;color:var(--accent-text);font-size:.76rem;letter-spacing:.14em;font-weight:700;display:flex;align-items:center;gap:8px;}
  .hero-kicker::before{content:"";display:inline-block;width:22px;height:2px;background:var(--accent-text);flex-shrink:0;}
  .hero h1{font-size:clamp(1.5rem,1.2rem + 2.4vw,1.9rem);}
  .hero p.lead{font-size:.92rem;}
  .hero-sp-view{display:block;position:absolute;top:14px;left:14px;z-index:1;}
  .hero-sp-emblem{display:block;width:153px;height:auto;filter:drop-shadow(0 2px 6px rgba(15,23,42,.25));}
  .hero-sp-badges{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px;}
  .hero-sp-badges div{background:rgba(255,255,255,.95);border:1.5px solid var(--accent);border-radius:var(--radius);padding:9px 3px;text-align:center;font-size:.62rem;color:var(--navy);font-weight:700;line-height:1.45;display:flex;flex-direction:column;gap:1px;}
  .hero-sp-badges strong{color:var(--accent-text);font-size:var(--fs-sm);letter-spacing:.01em;}
}

/* ---------- page header (non-top pages) ---------- */
/* ファーストビュー：セクション群と同じ中央軸に揃える */
.page-header{
  background:var(--bg-alt);text-align:center;
  color:var(--text);padding:clamp(42px,6vw,60px) 0;border-bottom:1px solid var(--border);
}
.page-header h1{color:var(--navy);font-size:clamp(1.65rem,1.4rem + 1.1vw,2.1rem);margin-bottom:.45em;letter-spacing:.01em;}
.page-header h1::before{
  content:"";display:block;width:40px;height:3px;border-radius:2px;
  background:var(--accent);margin:0 auto 18px;
}
.page-header p{color:var(--slate);margin:0 auto;max-width:46em;font-size:var(--fs-base);letter-spacing:.03em;line-height:1.85;text-wrap:balance;word-break:auto-phrase;}
/* ページ冒頭リード文（<p class="page-lead">）。.page-header 外で使われても同じ体裁になるよう定義 */
.page-lead{text-wrap:balance;word-break:auto-phrase;}
/* 最終更新日（<p class="page-meta"><time>） */
.page-header .page-meta,.page-meta{margin:10px auto 0;font-size:.8rem;color:var(--slate);letter-spacing:.02em;line-height:1.6;}

/* ---------- Sections（余白に強弱：均等配置にしない） ---------- */
.section{padding:clamp(48px,7vw,72px) 0;}
/* 長文の行長を最適化（全角45文字前後で折り返し、読み疲れを防ぐ） */
.section > .container > p,
.section > .container > ul:not(.steps),
.section > .container > ol:not(.steps){max-width:46em;}
/* 見出しが中央揃えのセクションでは、本文カラムも中央に置いて左右のバランスを保つ
   （.section-head.left のセクションと見出しなし導入文は左端揃えを維持） */
.section > .container > .section-head:not(.left) ~ p,
.section > .container > .section-head:not(.left) ~ ul:not(.steps),
.section > .container > .section-head:not(.left) ~ ol:not(.steps){margin-left:auto;margin-right:auto;}
/* 見出しを持たない導入セクション（ページ冒頭のリード文）も中央軸に揃える */
.section > .container > p:first-child,
.section > .container > p:first-child ~ p{margin-left:auto;margin-right:auto;}
.faq-list{max-width:52em;margin-left:auto;margin-right:auto;}
/* :first-of-type / :last-of-type は要素型で判定されるため、<article> ラップ後（B-6）も
   同じ余白になるよう article 直下も併記する */
main > .section:first-of-type,
main > article > .section:first-of-type{padding-top:clamp(34px,5vw,44px);}
main > .section:last-of-type,
main > article > .section:last-of-type{padding-bottom:clamp(58px,8vw,80px);}
.section-alt + .section,
.section + .section-alt{padding-top:clamp(52px,7vw,66px);}
.section-alt{background:var(--bg-alt);}
/* 補足のお知らせ文（voice.html ほか） */
.notice{max-width:46em;margin:0 auto 24px;background:var(--accent-soft);border-left:4px solid var(--accent);
  border-radius:0 var(--radius) var(--radius) 0;padding:14px 18px;color:var(--navy);font-size:var(--fs-base);}
.section-head{max-width:720px;margin:0 auto 40px;text-align:center;}
.section-head.left{text-align:left;margin:0 0 32px;}
.section-head h2{position:relative;display:inline-block;}
.section-head h2::after{
  content:"";display:block;width:40px;height:3px;background:var(--accent);
  margin:16px auto 0;border-radius:2px;
}
.section-head.left h2::after{margin:14px 0 0;}
/* h2 矢印サブ見出し（丸矢印スライド＋ワイプ表示） */
.h2-arrow{display:inline-flex;align-items:center;justify-content:center;width:1.55em;height:1.55em;border-radius:50%;background:var(--accent);color:#fff;font-size:.6em;vertical-align:.16em;margin:0 .5em 0 .6em;}
.h2-sub{display:inline-block;color:var(--accent-text);border-bottom:2px solid var(--accent);padding-bottom:2px;}
.h2-anim-init .h2-arrow{opacity:0;transform:translateX(-16px);}
.h2-anim-init .h2-sub{clip-path:inset(0 100% 0 0);}
.h2-anim .h2-arrow{animation:h2-arrow-in .5s .15s cubic-bezier(.22,1,.36,1) forwards;}
.h2-anim .h2-sub{animation:h2-sub-in .6s .4s cubic-bezier(.22,1,.36,1) forwards;}
@keyframes h2-arrow-in{to{opacity:1;transform:translateX(0);}}
@keyframes h2-sub-in{to{clip-path:inset(0 -4px 0 0);}}
@media (prefers-reduced-motion:reduce){
  .h2-anim-init .h2-arrow{opacity:1;transform:none;animation:none;}
  .h2-anim-init .h2-sub{clip-path:none;animation:none;}
}
.eyebrow{display:flex;align-items:center;gap:8px;color:var(--accent-text);font-weight:700;font-size:var(--fs-sm);letter-spacing:.12em;margin-bottom:10px;text-transform:uppercase;justify-content:center;}
.section-head.left .eyebrow{justify-content:flex-start;}
.eyebrow::before{content:"";display:inline-block;width:18px;height:2px;background:var(--accent-text);flex-shrink:0;border-radius:1px;}
.section-head p{color:var(--slate);font-size:var(--fs-md);}

/* ---------- Grid / Cards ---------- */
.grid{display:grid;gap:18px;grid-template-columns:1fr;}
@media (min-width:640px){.grid-2{grid-template-columns:1fr 1fr;}}
@media (min-width:900px){
  .grid-3{grid-template-columns:repeat(3,1fr);}
  .grid-4{grid-template-columns:repeat(4,1fr);}
}
.card{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:28px var(--sp-5);
  height:100%;transition:border-color .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease);
}
.card h3{font-size:1.12rem;margin-bottom:.55em;letter-spacing:.01em;}
.card p{color:var(--slate);font-size:var(--fs-base);margin-bottom:.6em;}
.card .card-more{font-weight:700;font-size:.9rem;color:var(--accent-text);}
a.card{display:block;color:inherit;}
.card-thumb{display:block;margin:-28px calc(var(--sp-5) * -1) 18px;border-radius:calc(var(--radius-lg) - 1px) calc(var(--radius-lg) - 1px) 0 0;overflow:hidden;background:#f1f5f9;}
.card-thumb img{display:block;width:100%;height:150px;object-fit:cover;}
a.card:hover,a.card:focus-visible{text-decoration:none;border-color:var(--navy-3);transform:translateY(-3px);box-shadow:var(--shadow-sm);}
a.card:hover .card-more,a.card:focus-visible .card-more{color:var(--accent-text);}
.icon-badge{
  width:50px;height:50px;border-radius:50%;background:#fff;color:var(--accent-darker);
  display:flex;align-items:center;justify-content:center;font-size:1.25rem;margin-bottom:16px;font-weight:800;
  font-family:var(--font-serif);border:2px solid var(--accent);position:relative;letter-spacing:0;
}
/* ---------- Numbered steps（アイコンバッジと同じ「細リング＋明朝数字」で統一） ---------- */
.steps{list-style:none;margin:0;padding:0;counter-reset:step;display:grid;gap:16px;}
@media (min-width:760px){.steps{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}}
.steps li{position:relative;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5) 20px 20px;counter-increment:step;transition:box-shadow .2s var(--ease),border-color .2s var(--ease);}
.steps li:hover{box-shadow:var(--shadow-sm);border-color:var(--navy-3);}
.steps li::before{
  content:counter(step);position:absolute;top:-18px;left:20px;background:var(--accent-dark);color:#fff;
  width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;
  font-family:var(--font-serif);font-size:1.1rem;border:2px solid #fff;
}
.steps li h3{margin-top:8px;font-size:1.1rem;letter-spacing:.01em;}
.steps li p{font-size:var(--fs-base);color:var(--slate);margin:0;}

/* ---------- Table ---------- */
.table-wrap{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--border);}
table.price-table{width:100%;border-collapse:collapse;background:#fff;font-size:var(--fs-base);min-width:560px;}
table.price-table th,table.price-table td{padding:16px 18px;border-bottom:1px solid var(--border);text-align:left;}
table.price-table thead th{background:var(--navy);color:#fff;font-weight:700;letter-spacing:.06em;font-size:.92rem;border-bottom:3px solid var(--accent);}
table.price-table tbody tr:nth-child(even){background:var(--bg-alt);}
table.price-table tbody tr{transition:background-color .15s var(--ease);}
table.price-table tbody tr:hover{background:var(--accent-soft);}
table.price-table td.price{font-weight:800;color:var(--accent-text);white-space:nowrap;letter-spacing:0;}
.price-note{font-size:.9rem;color:var(--slate);background:var(--bg-alt2);border-left:4px solid var(--accent);padding:14px 18px;border-radius:0 var(--radius-xs) var(--radius-xs) 0;margin-top:16px;}

/* ---------- CTA banner（ページ末尾＝ピーク・エンドの法則を意識した唯一の強めの装飾） ---------- */
.cta-banner{
  background:radial-gradient(760px 320px at 12% 0%, #0c4a6e 0%, var(--navy) 60%, #020617 100%);
  color:#fff;border-radius:var(--radius-lg);
  padding:36px 28px;display:grid;gap:20px;text-align:center;position:relative;overflow:hidden;
  box-shadow:var(--shadow-md);
}
.cta-banner::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,transparent,#38bdf8 30%,var(--accent) 70%,transparent);}
.cta-banner h2{color:#fff;margin-bottom:.3em;font-size:clamp(1.6rem,1.4rem + 1vw,2rem);}
.cta-banner p{color:#cbd5e1;margin-bottom:0;letter-spacing:.03em;font-size:var(--fs-md);}
.cta-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:6px;}
.cta-banner .tel-number{color:#fff;font-size:1.75rem;}
.cta-banner .tel-block .tel-label{color:#94a3b8;}
.cta-inline{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:center;}
@media (min-width:760px){.cta-banner{padding:var(--sp-7) 50px;}}

/* ---------- FAQ (details/summary) ---------- */
.faq-list{display:grid;gap:12px;}
.faq-item{background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .2s var(--ease);}
.faq-item[open]{border-color:var(--navy-3);}
.faq-item summary{
  list-style:none;cursor:pointer;padding:18px 48px 18px 22px;font-weight:700;font-size:var(--fs-base);color:var(--navy);position:relative;
  transition:background-color .15s var(--ease);word-break:auto-phrase;
}
.faq-item summary:hover{background:var(--bg-alt);}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::before{
  content:"Q";content:"Q" / "";display:inline-flex;width:26px;height:26px;border-radius:50%;background:var(--accent-dark);color:#fff;
  align-items:center;justify-content:center;font-size:var(--fs-sm);margin-right:12px;font-weight:900;font-family:var(--font-serif);
  vertical-align:middle;flex-shrink:0;
}
.faq-item summary::after{
  content:"+";content:"+" / "";position:absolute;right:18px;top:50%;transform:translateY(-50%) rotate(0deg);font-size:var(--fs-xl);color:var(--slate);font-weight:400;
  transition:transform .2s var(--ease);
}
.faq-item[open] summary::after{content:"+";content:"+" / "";transform:translateY(-50%) rotate(45deg);}
.faq-item .faq-a{padding:0 22px 20px 22px;color:var(--slate);font-size:var(--fs-base);}
.faq-item .faq-a::before{
  content:"A";content:"A" / "";display:inline-flex;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;
  align-items:center;justify-content:center;font-size:var(--fs-sm);margin-right:12px;font-weight:900;font-family:var(--font-serif);
  vertical-align:middle;
}

/* ---------- FAQ（dl 形式：<dl class="faq-list"><dt>質問</dt><dd>回答</dd>） ----------
   details 形式（.faq-item）と同じ見た目に揃える。Q/A の記号は CSS で出す（本文テキストには持たせない） */
dl.faq-list{display:block;}
dl.faq-list dt,dl.faq-list dd{display:flex;align-items:flex-start;gap:12px;background:#fff;border:1px solid var(--border);}
dl.faq-list dt{
  border-radius:var(--radius) var(--radius) 0 0;border-bottom:none;margin:0;
  padding:18px 22px;font-weight:700;font-size:var(--fs-base);color:var(--navy);word-break:auto-phrase;
}
dl.faq-list dd{
  border-radius:0 0 var(--radius) var(--radius);border-top:none;
  margin:0 0 12px;padding:0 22px 20px;color:var(--slate);font-size:var(--fs-base);
}
dl.faq-list dd:last-child{margin-bottom:0;}
dl.faq-list dt::before,dl.faq-list dd::before{
  display:inline-flex;width:26px;height:26px;border-radius:50%;color:#fff;flex-shrink:0;
  align-items:center;justify-content:center;font-size:var(--fs-sm);font-weight:900;font-family:var(--font-serif);
}
dl.faq-list dt::before{content:"Q";content:"Q" / "";background:var(--accent-dark);}
dl.faq-list dd::before{content:"A";content:"A" / "";background:var(--green);}

/* ---------- Form ---------- */
.form-box{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-md);}
.form-grid{display:grid;gap:18px;}
@media (min-width:700px){.form-grid.cols-2{grid-template-columns:1fr 1fr;}}
.field{display:flex;flex-direction:column;gap:6px;}
.field label{font-weight:700;font-size:var(--fs-base);color:var(--navy);letter-spacing:.02em;}
.field .req{color:var(--accent-text);font-size:.75rem;font-weight:800;margin-left:6px;letter-spacing:.04em;}
.field input[type=text],.field input[type=email],.field input[type=tel],.field select,.field textarea{
  border:1px solid var(--gray-500);border-radius:var(--radius);padding:13px 14px;font-size:var(--fs-base);font-family:inherit;color:var(--text);background:#fbfcfd;
  transition:border-color .15s var(--ease),box-shadow .15s var(--ease);letter-spacing:.02em;
  width:100%;min-width:0;
}
.field textarea{resize:vertical;min-height:110px;}
/* プレースホルダは既定色だと 4.5:1 を割るため明示指定（#5b6673 on #fbfcfd = 6.42:1） */
.field input::placeholder,.field textarea::placeholder{color:#5b6673;opacity:1;}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--navy-3);outline-offset:1px;border-color:var(--navy-3);}
.radio-row,.check-row{display:flex;flex-wrap:wrap;gap:2px 14px;}
/* タップ領域の確保（WCAG 2.5.8）：コントロール20px化＋ラベル行44px */
.radio-row label,.check-row label{display:flex;align-items:center;gap:8px;font-weight:500;font-size:.9rem;color:var(--text);padding:8px 4px;min-height:44px;cursor:pointer;}
.radio-row input[type=radio],.check-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0;margin:0;cursor:pointer;}
/* min-width:0 はブラウザ既定の min-content 固定を解除（狭い画面でのはみ出し防止） */
fieldset{border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;margin:0;min-width:0;}
fieldset legend{padding:0 8px;font-weight:700;color:var(--navy);font-size:.9rem;letter-spacing:.02em;}
fieldset .radio-row + .check-row{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);}
.form-note{font-size:.8rem;color:var(--slate);}
.form-submit{text-align:center;margin-top:8px;}
/* プライバシーポリシー同意行 */
.agree-label{display:flex;align-items:flex-start;gap:8px;font-weight:500;padding:8px 0;cursor:pointer;}
.agree-label input{margin-top:4px;width:20px;height:20px;accent-color:var(--accent);flex-shrink:0;cursor:pointer;}

/* ---------- フォーム検証・セキュリティ関連（main.jsが制御） ---------- */
/* エラーバナー（送信失敗など・role="alert"） */
.form-alert{
  background:#fdeaea;border:1px solid #f0b9b9;border-left:4px solid #b91c1c;color:#b91c1c;
  border-radius:0 var(--radius) var(--radius) 0;padding:14px 18px;font-weight:700;font-size:var(--fs-base);margin-bottom:18px;
}
/* フィールド直下のエラー文言（#b91c1c は白背景で5.9:1を確保） */
.field-error{color:#b91c1c;font-size:var(--fs-sm);font-weight:700;margin:0;line-height:1.6;}
/* エラー中の入力欄を視覚的に明示（色以外の手掛かり＝枠の強調も併用） */
.field [aria-invalid="true"],
fieldset [aria-invalid="true"]{border-color:#b91c1c;box-shadow:0 0 0 1px #b91c1c;}
/* ハニーポット（Bot対策）：視覚・タブ順・SRいずれからも除外して画面外へ */
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
/* 送信直前の安心テキスト */
.form-reassure{margin-bottom:14px;}
/* 送信中のボタン状態：opacity で薄めるとコントラストが崩れるため色を固定する（#075985 on #fff = 7.56:1） */
.form-submit .btn[disabled]{background:var(--accent-darker);border-color:var(--accent-darker);cursor:not-allowed;transform:none;}

/* ---------- Info blocks ---------- */
.info-split{display:grid;gap:22px;grid-template-columns:1fr;align-items:start;}
@media (min-width:860px){.info-split{grid-template-columns:1.1fr .9fr;}}
.callout{background:var(--green-soft);border:1px solid #bfe3cf;border-left:4px solid var(--green);border-radius:0 var(--radius) var(--radius) 0;padding:22px 24px;}
.callout h3{color:var(--green);font-size:1.1rem;letter-spacing:.01em;display:flex;align-items:center;gap:8px;}
.callout h3::before{content:"✓";content:"✓" / "";display:inline-flex;width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0;}
.callout.warn{background:var(--accent-soft);border-color:#bae6fd;border-left-color:var(--accent);}
.callout.warn h3{color:var(--accent-text);}
.callout.warn h3::before{content:"!";content:"!" / "";background:var(--accent);font-weight:900;}
.callout.know{background:#f0f9ff;border-color:#bae6fd;border-left-color:var(--accent);}
.callout.know h3{color:var(--accent-text);font-size:var(--fs-md);}
.callout.know h3::before{content:"?";content:"?" / "";background:var(--accent);font-weight:900;}
.callout-assure{display:flex;align-items:flex-start;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid #bae6fd;font-size:.92rem;font-weight:700;color:var(--green);}
.callout-assure::before{content:"✓";content:"✓" / "";display:inline-flex;width:20px;height:20px;border-radius:50%;background:var(--green);color:#fff;align-items:center;justify-content:center;font-size:.7rem;flex-shrink:0;margin-top:2px;}
.assure-badges{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;list-style:none;margin:22px 0 0;padding:0;}
@media (min-width:720px){.assure-badges{grid-template-columns:repeat(4,1fr);}}
.assure-badges li{display:flex;flex-direction:column;align-items:center;gap:8px;background:#f0f9ff;border:1px solid #e0f2fe;border-radius:var(--radius);padding:16px 10px;font-size:var(--fs-sm);font-weight:700;color:var(--accent-darker);text-align:center;line-height:1.4;}
.assure-badges svg{width:26px;height:26px;color:var(--accent-dark);flex-shrink:0;}
.compare-table td, .compare-table th{vertical-align:top;}
.check{color:var(--green);font-weight:900;}
.cross{color:#b23b3b;font-weight:900;}

/* ---------- Area chips ---------- */
.area-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
@media (min-width:640px){.area-grid{grid-template-columns:repeat(4,1fr);}}
.area-chip{display:block;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 10px;text-align:center;font-weight:700;color:var(--navy);font-size:var(--fs-base);transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),transform .18s var(--ease);}
.area-chip:hover{background:var(--accent-dark);color:#fff;text-decoration:none;border-color:var(--accent-dark);transform:translateY(-2px);} /* 白文字AA確保 */
.area-chip small{display:block;font-weight:500;color:var(--slate);font-size:.72rem;margin-top:2px;}
.area-chip:hover small{color:#e0f2fe;}
/* リンクではない情報表示用チップ（市区名の一覧など） */
span.area-chip{cursor:default;}
span.area-chip:hover{background:#fff;color:var(--navy);border-color:var(--border);transform:none;}
span.area-chip:hover small{color:var(--slate);}

/* ---------- Footer ---------- */
.site-footer{background:var(--navy);color:#cbd5e1;padding:56px 0 0;margin-top:72px;}
.footer-grid{
  display:grid;gap:var(--sp-5);grid-template-columns:1fr;
  padding-bottom:36px;border-bottom:1px solid rgba(255,255,255,.12);
}
/* ナビをスリム化したためフッターが主要な回遊経路。段階的に列を増やす */
@media (min-width:600px){
  .footer-grid{grid-template-columns:repeat(2,1fr);}
  .footer-brand{grid-column:1 / -1;}
}
@media (min-width:900px){
  .footer-grid{grid-template-columns:repeat(3,1fr);}
}
@media (min-width:1100px){
  /* ブランド列は屋号1行分（実測 200px 必要）を確保するため 1.5fr。列間は 20px に詰める */
  .footer-grid{gap:var(--sp-5) 20px;grid-template-columns:1.5fr repeat(5,1fr);}
  .footer-brand{grid-column:auto;}
}
.footer-brand .brand{color:#fff;font-size:var(--fs-sm);}
.footer-brand .brand .brand-logo{height:36px;}
/* 屋号は折り返さない（列幅 240px に対し 13.76px で 19px の余裕を確保済み） */
.footer-brand .brand .brand-text{white-space:nowrap;}
.footer-brand p{color:#94a3b8;font-size:var(--fs-sm);}
.footer-tel{margin-top:14px;}
.footer-tel .tel-number{color:#fff;}
.footer-tel .tel-label{color:#94a3b8;}
.footer-col h4,.footer-col-title{color:#fff;line-height:1.5;font-size:var(--fs-sm);margin:0 0 14px;letter-spacing:.06em;font-weight:700;text-transform:uppercase;}
.footer-col ul{list-style:none;padding:0;margin:0;display:grid;gap:var(--sp-2);}
.footer-col a{color:#cbd5e1;font-size:.9rem;transition:color .15s var(--ease);}
.footer-col a:hover{color:#fff;}
.footer-bottom{padding:18px 0 var(--sp-5);display:flex;flex-wrap:wrap;gap:10px 20px;justify-content:space-between;font-size:var(--fs-xs);color:#94a3b8;}
.footer-copyright{margin:0;}
.footer-links ul{list-style:none;display:flex;flex-wrap:wrap;margin:0;padding:0;}
/* 区切りの「・」はテキストではなく装飾なので CSS で出す（SRには読ませない） */
.footer-links li+li::before{content:"・";content:"・" / "";margin:0 .2em;color:var(--gray-400);}
.footer-links a,.footer-bottom a{display:inline-block;padding:5px 2px;}
.footer-bottom a{color:#94a3b8;}
.footer-bottom a:hover{color:#fff;}

/* ---------- Misc ---------- */
.col-label{width:220px;}
.card-narrow{max-width:420px;margin:0 auto;}
.icon-badge-center{margin:0 auto 14px;}
.tel-number-lg{font-size:1.8rem;}
.small{font-size:var(--fs-sm);color:var(--slate);}
.center{text-align:center;}
.mt-lg{margin-top:40px;}

/* ---------- レスポンシブ最終調整（装飾がモバイルで崩れないための保険） ---------- */
@media (max-width:479.98px){
  .section-head h2::after{width:28px;}
  .icon-badge{width:40px;height:40px;font-size:var(--fs-md);}
  .steps li::before{width:28px;height:28px;font-size:var(--fs-base);top:-14px;}
  .cta-banner{padding:30px 20px;}
  .eyebrow::before{width:10px;}
}

/* ==== 視認性コンポーネント (2026-07-22 EFO) ==== */
.checklist{list-style:none;margin:12px 0 4px;padding:0;}
.checklist li{position:relative;padding:6px 0 6px 30px;line-height:1.65;}
.checklist li::before{content:"\2705";position:absolute;left:0;top:6px;font-size:var(--fs-base);}
.kw{display:inline-block;background:#e0f2fe;color:#0369a1;font-weight:700;font-size:.8rem;border-radius:var(--radius);padding:1px var(--sp-2);margin-right:8px;vertical-align:middle;white-space:nowrap;}
.flow-steps{counter-reset:fs;list-style:none;margin:16px 0;padding:0;display:grid;gap:12px;}
@media(min-width:860px){.flow-steps.horizontal{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));}}
.flow-steps li{counter-increment:fs;background:#fff;border:1.5px solid var(--gray-500);border-radius:var(--radius-lg);padding:14px 16px 14px 56px;position:relative;line-height:1.55;}
.flow-steps li::before{content:counter(fs);position:absolute;left:14px;top:13px;width:30px;height:30px;border-radius:50%;background:var(--accent-dark);color:#fff;font-weight:800;font-size:var(--fs-base);display:flex;align-items:center;justify-content:center;}
.flow-steps li strong{display:block;margin-bottom:2px;}
.flow-steps li small{color:#64748b;}
.box-point,.box-merit{border-radius:var(--radius-lg);padding:16px 20px;margin:14px 0;border:1.5px solid;}
.box-point{background:#f0f9ff;border-color:#7dd3fc;}
.box-merit{background:#f0fdf4;border-color:#86efac;}
.box-point>h3,.box-merit>h3{margin:0 0 6px;font-size:var(--fs-base);}

/* ==== 監査対応 2026-07-22 ==== */
/* ブレークポイント方針: 主要4系統 480/760/860/1200px を正とする。
   640/700/720/899/900px は既存レイアウト維持のため残置（改修時に統合すること） */
/* h3(最大1.22rem)より小さいと階層が逆転するため 1.3rem に引き上げる */
.box-point>h2.box-h,.box-merit>h2.box-h{margin:0 0 6px;font-size:var(--fs-xl);}
.callout>h2.box-h{margin:0 0 8px;font-size:var(--fs-xl);}
.sim-panel h2.box-h{margin:0 0 4px;font-size:var(--fs-xl);}
.sim-qty button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.sim-radio label:focus-within{outline:2px solid var(--accent);outline-offset:2px;}
.sim-radio label.is-checked{border-color:#0284c7;background:#e0f2fe;font-weight:700;}
/* ==== 料金シミュレーター (旧 price-simulator.html 内) ==== */
.sim-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start;}
@media(max-width:859.98px){.sim-grid{grid-template-columns:1fr;}}
.sim-panel{background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-lg);padding:20px;}
.sim-panel h3{margin:0 0 4px;font-size:var(--fs-md);}
.sim-step{margin-bottom:22px;}
.sim-step .step-label{display:inline-block;background:var(--accent-dark);color:#fff;font-size:var(--fs-xs);font-weight:700;border-radius:var(--radius-pill);padding:2px 12px;margin-bottom:8px;}
.sim-radio{display:flex;flex-wrap:wrap;gap:8px;}
.sim-radio label{border:1.5px solid var(--gray-500);border-radius:var(--radius);padding:8px 12px;cursor:pointer;font-size:.92rem;background:#f8fafc;}
.sim-radio input{margin-right:6px;}
.sim-radio label:has(input:checked){border-color:#0284c7;background:#e0f2fe;font-weight:700;}
.sim-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:var(--sp-2) 0;border-bottom:1px dashed #e2e8f0;}
.sim-row .sim-name{font-size:.93rem;line-height:1.35;}
.sim-row .sim-name small{display:block;color:#64748b;font-size:var(--fs-xs);}
.sim-qty{display:flex;align-items:center;gap:6px;}
.sim-qty button{width:34px;height:34px;border:1.5px solid var(--gray-500);background:#fff;border-radius:var(--radius);font-size:1.1rem;cursor:pointer;line-height:1;}
.sim-qty input{width:64px;height:34px;text-align:center;border:1.5px solid var(--gray-500);border-radius:var(--radius);font-size:var(--fs-base);}
.sim-result{position:sticky;top:90px;}
.sim-detail{width:100%;border-collapse:collapse;font-size:.9rem;}
.sim-detail th,.sim-detail td{padding:var(--sp-2) 6px;border-bottom:1px solid #e2e8f0;text-align:left;}
.sim-detail td.num{text-align:right;white-space:nowrap;}
.sim-detail tr.minus td{color:#b91c1c;font-weight:700;}
.sim-totals{margin-top:12px;border-top:2px solid #0284c7;padding-top:10px;font-size:var(--fs-base);}
.sim-totals .line{display:flex;justify-content:space-between;padding:3px 0;}
.sim-totals .grand{font-size:var(--fs-2xl);font-weight:800;color:#0284c7;}
.sim-note{font-size:.8rem;color:#64748b;margin-top:10px;line-height:1.6;}
.sim-empty{color:#64748b;padding:18px 0;text-align:center;}
.sim-legal{background:#f0f9ff;border:1px solid #bae6fd;border-radius:var(--radius-lg);padding:18px 20px;margin-top:24px;}
.sim-legal h3{margin-top:0;}

/* ==== 料金表コンポーネント (旧 price/price-list 内) ==== */

.pt-matrix td.price{font-weight:700;white-space:nowrap;}
.pt-matrix th.bulk,.pt-matrix td.bulk{background:#f0f9ff;}
.pt-badge{display:inline-block;background:var(--accent-dark);color:#fff;font-size:.72rem;font-weight:700;border-radius:var(--radius-pill);padding:1px 10px;margin-left:6px;vertical-align:middle;}
.pay-flow{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;margin:14px 0;}
.pay-flow .pf-box{flex:1 1 160px;background:#fff;border:1.5px solid #cbd5e1;border-radius:var(--radius-lg);padding:12px 14px;text-align:center;}
.pay-flow .pf-box strong{display:block;font-size:var(--fs-base);margin-top:4px;}
.pay-flow .pf-op{display:flex;align-items:center;font-size:1.4rem;font-weight:800;color:#0284c7;}
.pay-flow .pf-total{border-color:#0284c7;background:#e0f2fe;}
.ex-card{background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-lg);padding:16px 18px;}
.ex-card h3{margin:0 0 8px;font-size:var(--fs-base);}
.ex-card ul{list-style:none;margin:0 0 10px;padding:0;font-size:var(--fs-sm);color:#475569;}
.ex-card li{display:flex;justify-content:space-between;gap:8px;padding:2px 0;}
.ex-card li.minus{color:#b91c1c;font-weight:700;}
.ex-card .ex-total{border-top:2px solid #0284c7;padding-top:8px;display:flex;justify-content:space-between;font-weight:800;font-size:1.15rem;color:#0284c7;}


/* 料金例カード：3枚の高さを揃え「お支払い額」行を下端に整列（2026-07-22） */
.ex-card{display:flex;flex-direction:column;height:100%;}
.ex-card ul{flex:1 1 auto;}
.ex-card .ex-total{margin-top:auto;}


/* =========================================================
   フォームEFO・送信基盤まわり（2026-07-29 追加 / main.jsが制御）
   - 既存ルールは変更せず追記のみ
   - 色は既存のデザイントークン（CSS変数）を使用
   ========================================================= */

/* ---------- 入力進捗バー（role="progressbar"） ---------- */
.form-progress{
  position:relative;height:8px;margin:0 0 8px;border-radius:var(--radius-pill);
  background:var(--bg-alt2);border:1px solid var(--border);overflow:hidden;
}
.form-progress-bar{
  display:block;width:0;height:100%;border-radius:var(--radius-pill);
  background:linear-gradient(90deg,var(--accent) 0%,var(--accent-dark) 100%);
  transition:width .35s var(--ease);
}
.form-progress.is-complete .form-progress-bar{
  background:linear-gradient(90deg,var(--green) 0%,#0f6b32 100%);
}
@media (prefers-reduced-motion:reduce){
  .form-progress-bar{transition:none;}
}

/* ---------- 残り項目表示（aria-live="polite"） ---------- */
.form-remaining{
  margin:0 0 12px;font-size:.9rem;font-weight:700;color:var(--accent-text);
  display:flex;align-items:center;justify-content:center;gap:6px;line-height:1.6;
}
.form-remaining:empty{display:none;}
.form-remaining::before{
  content:"";content:"" / "";display:inline-block;width:8px;height:8px;border-radius:50%;
  background:var(--accent);flex-shrink:0;
}
.form-remaining.is-complete{color:var(--green);}
.form-remaining.is-complete::before{
  content:"✓";content:"✓" / "";width:18px;height:18px;background:var(--green);color:#fff;
  font-size:.7rem;line-height:18px;text-align:center;font-weight:900;
}

/* ---------- Turnstile ---------- */
/* 420px 未満では Turnstile ウィジェット(300px)＋余白が画面幅を超えるため詰める */
@media (max-width:419.98px){
  .container{padding-left:var(--sp-3);padding-right:var(--sp-3);}
  .form-box{padding:var(--sp-4);}
}
.turnstile-wrap{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  margin:0 0 16px;min-height:70px;
}
.turnstile-wrap .cf-turnstile{width:100%;max-width:340px;}
.turnstile-note{
  margin:0;font-size:var(--fs-sm);font-weight:700;line-height:1.6;color:#b91c1c;
  background:#fdeaea;border:1px solid #f0b9b9;border-radius:var(--radius);padding:8px 12px;
}

/* ---------- メールアドレスの遅延組み立て（スクレイピング対策） ---------- */
.mail-cloak{word-break:break-all;}
.mail-cloak-link{color:var(--accent-text);font-weight:700;text-decoration:underline;text-underline-offset:2px;}
.mail-cloak-link:hover,.mail-cloak-link:focus{color:var(--accent-darker);}

/* ---------- メールドメインのタイポ修正提案 ---------- */
.email-suggest{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;
  background:var(--accent-soft);border:1px solid #bae6fd;border-left:4px solid var(--accent);
  border-radius:0 var(--radius) var(--radius) 0;padding:8px 12px;
  font-size:var(--fs-sm);line-height:1.6;color:var(--navy);
}
.email-suggest[hidden]{display:none;}
.email-suggest-text{font-weight:700;word-break:break-all;}
.email-suggest-btn{
  flex-shrink:0;border:1px solid var(--accent);background:#fff;color:var(--accent-text);
  font-family:inherit;font-size:.82rem;font-weight:700;line-height:1.2;
  border-radius:var(--radius-pill);padding:8px 14px;min-height:36px;cursor:pointer;
  transition:background-color .15s var(--ease),color .15s var(--ease);
}
.email-suggest-btn:hover{background:var(--accent);color:#fff;}
.email-suggest-btn:focus-visible{outline:2px solid var(--navy-3);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){
  .email-suggest-btn{transition:none;}
}

/* ---------------------------------------------------------------
   ご相談フォーム：任意項目のアコーディオン（EFO：初見の入力量を抑える）
   --------------------------------------------------------------- */
.form-optional{
  border:1px solid var(--border);border-radius:var(--radius);
  background:var(--bg-alt);margin:0 0 var(--sp-4);
}
.form-optional > summary{
  cursor:pointer;list-style:none;
  padding:var(--sp-3) var(--sp-4);padding-left:calc(var(--sp-4) + 20px);
  position:relative;min-height:44px;display:flex;align-items:center;
  font-size:var(--fs-sm);font-weight:700;color:var(--accent-text);
  line-height:var(--lh-ui);
}
.form-optional > summary::-webkit-details-marker{display:none;}
.form-optional > summary::before{
  content:"";position:absolute;left:var(--sp-4);top:50%;
  width:9px;height:9px;margin-top:-6px;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg);transition:transform var(--ease);
}
.form-optional[open] > summary::before{transform:rotate(-135deg);margin-top:-2px;}
.form-optional > summary:focus-visible{outline:3px solid var(--accent);outline-offset:2px;}
.form-optional > .form-note{margin:0 var(--sp-4) var(--sp-3);}
.form-optional > fieldset,
.form-optional > .form-grid{margin-left:var(--sp-4);margin-right:var(--sp-4);}
.form-optional > :last-child{margin-bottom:var(--sp-4);}
@media (prefers-reduced-motion:reduce){
  .form-optional > summary::before{transition:none;}
}

/* 相談窓口の使い分け案内 */
.form-route{
  border-left:4px solid var(--accent);background:var(--accent-soft);
  border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);
  margin:0 0 var(--sp-5);font-size:var(--fs-sm);line-height:var(--lh-body);
}
.form-route p{margin:0;}
.form-route p + p{margin-top:var(--sp-2);}
