/* 電気屋エルクリスト：デザイン叩き台（docs/design/boards）の見た目をレスポンシブにしたもの。
   PC は 1280px 幅のボード、スマホ（767px 以下）は 390px 幅のボードの値に合わせている。 */

:root {
  --bg: #F6F3EC;
  --white: #FFFFFF;
  --ink: #16201B;
  --muted: #5B655F;
  --body: #3D4A43;
  --green: #17593D;
  --green-dark: #0F3D2A;
  --green-pale: #E4EEE8;
  --green-soft: #BFD8C9;
  --red: #B8431F;
  --red-dark: #8F3216;
  --red-pale: #F7E6DE;
  --red-line: #E9C5B4;
  --border: #CFC9BB;
  --line: #DDD8CC;
  --header-line: #E4DFD3;
  --gutter: 64px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: 'Zen Kaku Gothic New', 'Hiragino Sans', 'Yu Gothic', sans-serif;
  background: var(--bg);
  color: var(--ink);
  line-height: 1.7;
}
a { color: inherit; text-decoration: none; }
a:hover { opacity: .85; }
img { max-width: 100%; }
[hidden] { display: none !important; }
h1, h2 { margin: 0; font-weight: 900; }
.inner { max-width: 1280px; margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.sp-only { display: none; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- ヘッダー ---------- */
.site-header { background: var(--bg); border-bottom: 1px solid var(--header-line); }
.site-header .inner { height: 88px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.brand { display: flex; align-items: center; gap: 12px; }
.brand svg { flex: none; display: block; width: 44px; height: 44px; }
.brand-text { display: flex; flex-direction: column; line-height: 1.1; }
.brand-small { font-size: 11px; font-weight: 900; letter-spacing: .35em; }
.brand-large { font-size: 22px; font-weight: 900; letter-spacing: .04em; }
.brand-en { font-size: 11px; font-weight: 700; font-family: Georgia, 'Times New Roman', serif; letter-spacing: .04em; opacity: .8; margin-top: 2px; }
.nav { display: flex; align-items: center; gap: 36px; font-size: 15px; font-weight: 700; }
.nav-contact { display: inline-flex; align-items: center; height: 48px; padding: 0 24px; border-radius: 999px; background: var(--green); color: var(--white); }
.header-tel { display: none; }

/* ---------- ボタン ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 60px; padding: 0 32px; border-radius: 999px; font-size: 18px; font-weight: 900; font-family: inherit; border: 0; cursor: pointer; text-align: center; }
.btn svg { flex: none; }
.btn-red { background: var(--red); color: var(--white); }
.btn-green { background: var(--green); color: var(--white); }
.btn-white { background: var(--white); color: var(--green); }
.btn-outline { border: 2px solid var(--green); color: var(--green); background: transparent; }
.btn-row { display: flex; gap: 16px; flex-wrap: wrap; }

/* ---------- 共通の部品 ---------- */
.section { padding-top: 80px; padding-bottom: 80px; }
.section--white { background: var(--white); }
.section--bg { background: var(--bg); }
.section--green { background: var(--green); color: var(--white); }
.section-head { display: flex; flex-direction: column; gap: 12px; margin-bottom: 40px; }
.eyebrow { font-size: 14px; font-weight: 900; letter-spacing: .08em; color: var(--green); }
.eyebrow--red { color: var(--red); }
.h2 { font-size: 44px; line-height: 1.3; letter-spacing: -.01em; }
.h2--sm { font-size: 38px; line-height: 1.35; }
.lead { font-size: 17px; color: var(--muted); }
.muted { color: var(--muted); }
.breadcrumb { font-size: 14px; color: var(--muted); }
.pill { align-self: flex-start; display: inline-block; font-size: 13px; font-weight: 900; padding: 4px 12px; border-radius: 999px; }
.pill--red { background: var(--red-pale); color: var(--red-dark); }
.pill--green { background: var(--green-pale); color: var(--green); }
.pill--yellow { background: #FBEFD9; color: #8F6A16; }
.note-box { display: flex; align-items: flex-start; gap: 16px; background: var(--green-pale); border-radius: 16px; padding: 20px 28px; font-size: 16px; font-weight: 700; color: var(--green-dark); }
.note-box svg { flex: none; margin-top: 3px; }
.link-arrow { display: inline-flex; align-items: center; gap: 8px; font-size: 16px; font-weight: 900; color: var(--green); }
.soon { font-size: 14px; color: var(--muted); }
.stack { display: flex; flex-direction: column; }

/* ---------- ヒーロー ---------- */
.hero .inner { display: flex; align-items: center; gap: 64px; padding-top: 72px; padding-bottom: 72px; }
.hero-body { flex: 1 1 0; display: flex; flex-direction: column; gap: 24px; }
.hero-title { font-size: 64px; line-height: 1.25; letter-spacing: -.02em; }
.hero-title span { display: block; }
.hero-title .accent-green { color: var(--green); }
.hero-title .accent-red { color: var(--red); }
.hero-text { font-size: 19px; line-height: 1.8; color: var(--muted); }
.hero-small { font-size: 14px; color: var(--muted); }
.hero-image { width: 430px; height: 537px; flex: none; border-radius: 28px; overflow: hidden; background: #F8EDE3; }
.hero-image img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* ---------- トップ：料金の例 ---------- */
.price-band { background: var(--green); color: var(--white); }
.price-band .inner { min-height: 200px; display: flex; align-items: center; gap: 32px; }
.price-band-head { width: 150px; flex: none; display: flex; flex-direction: column; gap: 2px; }
.price-band-head div:first-child { font-size: 14px; font-weight: 900; letter-spacing: .08em; color: var(--green-soft); }
.price-band-head div:last-child { font-size: 13px; color: var(--green-soft); }
.price-item { flex: 1 1 0; padding-left: 32px; border-left: 1px solid rgba(255,255,255,.25); display: flex; flex-direction: column; gap: 2px; }
.price-item-name { font-size: 16px; font-weight: 700; }
.price-item-value { font-size: 36px; font-weight: 900; line-height: 1.3; }
.price-item-value small { font-size: 18px; }
.price-item-note { font-size: 13px; color: var(--green-soft); }

/* ---------- カード ---------- */
.card-row { display: flex; gap: 24px; }
.card-row--tight { gap: 20px; }
.card-row + .card-row { margin-top: 20px; }
.card { flex: 1 1 0; background: var(--white); border-radius: 24px; padding: 28px; display: flex; flex-direction: column; gap: 8px; }
.card--bg { background: var(--bg); }
.card--pale { background: var(--green-pale); }
.card--urgent { padding: 40px; gap: 12px; }
.card-kicker { font-size: 13px; font-weight: 900; color: var(--green); }
.card-title { font-size: 20px; font-weight: 900; }
.card-title--lg { font-size: 22px; }
.card-price { font-size: 40px; font-weight: 900; color: var(--green); letter-spacing: -.01em; }
.card-price small { font-size: 20px; }
.card-small { font-size: 13px; color: var(--muted); }
.card-text { font-size: 15px; color: var(--body); }
.card-link { margin-top: 8px; font-size: 14px; font-weight: 900; color: var(--green); }
.card-soon { margin-top: 8px; font-size: 13px; color: var(--muted); }
.urgent-title { font-size: 32px; font-weight: 900; line-height: 1.3; }
.urgent-desc { font-size: 15px; color: var(--muted); }
.divider { height: 1px; background: var(--line); margin: 12px 0; }
.urgent-price { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.urgent-price .label { font-size: 15px; font-weight: 700; color: var(--muted); }
.urgent-price .value { font-size: 44px; font-weight: 900; color: var(--red); letter-spacing: -.01em; }
.urgent-price .tax { font-size: 13px; color: var(--muted); }

/* ---------- 流れ ---------- */
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
.steps--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.step { display: flex; flex-direction: column; gap: 12px; }
.step-no { width: 48px; height: 48px; border-radius: 50%; background: var(--green); color: var(--white); display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 900; }
.step-title { font-size: 20px; font-weight: 900; }
.step-text { font-size: 15px; color: var(--muted); }
.help-box { margin-top: 48px; display: flex; align-items: center; gap: 32px; padding: 28px 32px; border: 1px solid var(--border); border-radius: 20px; background: var(--bg); }
.help-box-body { flex: 1 1 0; display: flex; flex-direction: column; gap: 6px; }
.help-box-title { font-size: 18px; font-weight: 900; }
.help-box-text { font-size: 15px; color: var(--muted); }
.help-box .btn { height: 52px; padding: 0 24px; font-size: 17px; flex: none; }
/* お支払い方法の枠（partials/payment.html）。料金や電話ボタンより目立たせない */
.pay-box { margin-top: 32px; }
.pay-brands { font-size: 16px; color: var(--ink); }
.footer-pay { font-size: 14px; color: var(--green-soft); }

/* ---------- 担当者 ---------- */
.person .inner { display: flex; align-items: center; gap: 64px; }
.person-image { width: 320px; height: 320px; flex: none; border-radius: 28px; overflow: hidden; background: #F8EDE3; }
.person-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.person-body { flex: 1 1 0; display: flex; flex-direction: column; gap: 16px; }
.person-title { font-size: 40px; line-height: 1.3; letter-spacing: -.01em; }
.person-text { font-size: 17px; line-height: 1.9; color: var(--body); }
.person-name { font-size: 15px; font-weight: 700; color: var(--muted); }

/* ---------- 漏電 ---------- */
.symptoms { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 12px; }
.symptoms span { background: var(--white); border: 1px solid var(--line); border-radius: 999px; padding: 8px 18px; font-size: 15px; font-weight: 700; }
.hero-side { width: 420px; flex: none; display: flex; flex-direction: column; gap: 16px; }
.hero-side img { display: block; width: 100%; height: 314px; object-fit: cover; border-radius: 24px; }
.safety { background: var(--red-pale); border: 1px solid var(--red-line); border-radius: 24px; padding: 28px; display: flex; flex-direction: column; gap: 10px; }
.safety-kicker { font-size: 13px; font-weight: 900; letter-spacing: .08em; color: var(--red-dark); }
.safety-title { font-size: 20px; font-weight: 900; line-height: 1.5; }
.safety-text { font-size: 16px; line-height: 1.8; color: #3D2A22; }
.first-aid { border-top: 6px solid var(--red); padding-top: 64px; padding-bottom: 64px; }
.first-aid .section-head { margin-bottom: 28px; gap: 10px; }
.first-aid-intro { font-size: 16px; line-height: 1.8; color: var(--muted); }
.aid-steps { display: flex; flex-direction: column; gap: 16px; margin-bottom: 28px; }
.aid-step { display: flex; gap: 16px; align-items: flex-start; }
.aid-no { width: 32px; height: 32px; flex: none; border-radius: 50%; background: var(--red); color: var(--white); display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 900; }
.aid-text { font-size: 16px; line-height: 1.8; padding-top: 3px; }
.aid-photos { margin-left: 48px; display: flex; gap: 16px; }
.aid-photos figure { flex: 1 1 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.aid-photos img { display: block; width: 100%; height: 180px; object-fit: cover; border-radius: 16px; }
.aid-photos figcaption { font-size: 13px; color: var(--muted); }
.aid-result { background: var(--green-pale); border-radius: 20px; padding: 24px 28px; display: flex; align-items: flex-start; gap: 14px; font-size: 16px; line-height: 1.8; color: var(--green-dark); margin-bottom: 28px; }
.aid-result svg { flex: none; margin-top: 2px; }
.why-box { background: var(--red-pale); border: 1px solid var(--red-line); border-radius: 20px; padding: 28px; display: flex; gap: 24px; align-items: center; }
.why-box img { width: 200px; height: 150px; flex: none; object-fit: cover; border-radius: 14px; }
.why-box-body { display: flex; flex-direction: column; gap: 8px; }
.why-box-text { font-size: 16px; line-height: 1.8; color: #3D2A22; }
.fee-main { flex: 11 1 0; background: var(--green); border-radius: 28px; padding: 40px; color: var(--white); display: flex; flex-direction: column; gap: 12px; }
.fee-main .soft { font-size: 15px; color: var(--green-soft); }
.fee-main .soft.strong { font-weight: 700; }
.fee-value { font-size: 48px; font-weight: 900; letter-spacing: -.01em; line-height: 1.3; }
.fee-main .rule { height: 1px; background: rgba(255,255,255,.2); margin: 12px 0; }
.check-line { display: flex; align-items: center; gap: 12px; font-size: 17px; }
.check-line svg { flex: none; }
.fee-side { flex: 9 1 0; display: flex; flex-direction: column; gap: 20px; }
.fee-side .card { background: var(--bg); padding: 32px; }
.fee-side .card-text { font-size: 16px; line-height: 1.8; }
.risk-card { flex: 1 1 0; background: var(--bg); border-radius: 20px; padding: 24px; display: flex; flex-direction: column; gap: 12px; }
.risk-age { font-size: 13px; font-weight: 700; color: var(--muted); }
.risk-card img, .risk-placeholder { width: 100%; height: 160px; object-fit: cover; border-radius: 14px; display: block; }
.risk-placeholder { background: var(--green-pale); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #5B8C74; font-size: 12px; }
.risk-rows { display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.risk-rows div { display: flex; justify-content: space-between; gap: 8px; }
.risk-rows span:first-child { color: var(--muted); }
.risk-rows span:last-child { font-weight: 700; }
.risk-note { font-size: 12px; color: var(--muted); line-height: 1.6; }
.cta-strip { margin-top: 32px; display: flex; align-items: center; justify-content: space-between; gap: 24px; background: var(--green-pale); border-radius: 16px; padding: 20px 28px; }
.cta-strip-text { font-size: 15px; line-height: 1.8; color: var(--green-dark); }
.cta-strip .btn { height: 48px; padding: 0 24px; font-size: 15px; flex: none; }
.urgent-contact .inner { display: flex; align-items: center; gap: 64px; }
.urgent-contact-body { flex: 1 1 0; display: flex; flex-direction: column; gap: 20px; }
.urgent-contact-text { font-size: 18px; line-height: 1.8; color: var(--green-pale); }
.urgent-contact-actions { width: 560px; flex: none; background: var(--white); border-radius: 28px; padding: 40px; display: flex; flex-direction: column; gap: 16px; color: var(--ink); }
.urgent-contact-actions .btn { width: 100%; }
.urgent-contact-actions p { margin: 0; font-size: 15px; color: var(--muted); text-align: center; }

/* ---------- 換気扇 ---------- */
.big-price { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; }
.big-price .value { font-size: 72px; font-weight: 900; color: var(--green); letter-spacing: -.02em; line-height: 1.2; }
.big-price .note { font-size: 16px; color: var(--muted); }
.hero-side--kanki { width: 440px; }
.hero-side--kanki img { height: 329px; border-radius: 28px; }
.target-card { background: var(--white); border-radius: 24px; padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.target-card-title { font-size: 24px; font-weight: 900; line-height: 1.4; }
/* 見出しの中で、途中で折り返したくないひとかたまり */
.keep { display: inline-block; }
.target-card-text { font-size: 16px; line-height: 1.8; color: var(--body); }
.scope { flex: 1 1 0; border-radius: 24px; padding: 36px; display: flex; flex-direction: column; gap: 16px; }
.scope--in { background: var(--green-pale); }
.scope--out { background: var(--bg); }
.scope-title { font-size: 22px; font-weight: 900; }
.scope--in .scope-title { color: var(--green-dark); }
.scope-line { display: flex; align-items: flex-start; gap: 12px; font-size: 17px; line-height: 1.7; }
.scope-line svg { flex: none; margin-top: 4px; }
.shot { flex: 1 1 0; background: var(--white); border-radius: 24px; overflow: hidden; display: flex; flex-direction: column; }
.shot img { display: block; width: 100%; height: 300px; object-fit: cover; }
.shot-body { padding: 24px 32px 32px; display: flex; flex-direction: column; gap: 8px; }
.shot-title { font-size: 20px; font-weight: 900; }
.shot-text { font-size: 15px; color: var(--muted); }
/* 上部の画像を比率のまま全体表示（照明・スイッチ・エアコンのページ） */
.hero-side--whole img { height: auto; aspect-ratio: auto; object-fit: contain; border-radius: 28px; }
/* 文章だけの欄（ラベル＋見出し＋本文）。前の欄と同じ白背景のときは線で区切る */
.section--divided { border-top: 1px solid var(--line); }
.section-text { font-size: 17px; line-height: 1.9; color: var(--body); max-width: 880px; }
.section-text p { margin: 0 0 12px; }
.section-text p:last-child { margin-bottom: 0; }
.section-text a { color: var(--green); text-decoration: underline; font-weight: 700; }
.section-text ol, .section-text ul { margin: 0 0 12px; padding-left: 1.4em; }
.section-text li { margin-bottom: 8px; }
.section-text li ul { margin-top: 8px; }
.scope-line ul { margin: 6px 0 0; padding-left: 1.2em; }
.scope-line a { color: var(--green); text-decoration: underline; font-weight: 700; }
.jump-links { display: flex; gap: 12px; flex-wrap: wrap; }
.jump-links .btn { height: 52px; font-size: 16px; padding: 0 24px; }
.example-box { background: var(--green-pale); border-radius: 20px; padding: 24px 28px; font-size: 17px; line-height: 1.9; color: var(--green-dark); }
.example-box p { margin: 0; }
/* 施工例（v51）：PCは3列、スマホは2列。拡大表示はなし */
.works { display: flex; flex-direction: column; gap: 16px; margin-bottom: 32px; }
.works-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; align-items: start; margin-top: 24px; }
.works .works-grid { margin-top: 8px; }
.work { margin: 0; display: flex; flex-direction: column; gap: 8px; }
.work img { display: block; width: 100%; height: auto; border-radius: 12px; background: var(--bg); }
.work figcaption { font-size: 14px; line-height: 1.6; color: var(--muted); }
/* 分電盤の交換（v53）：写真3枚（スマホは縦に並べる）、料金の目安の表、見方の写真と文 */
.panel-table { max-width: 640px; background: var(--white); border-radius: 16px; }
.panel-notes { margin-top: 20px; }
.panel-mikata { display: grid; grid-template-columns: minmax(0, 320px) minmax(0, 1fr); gap: 32px; align-items: start; }
.works-btn { align-self: flex-start; margin-top: 24px; }
.works .works-btn { margin-top: 8px; }
.works-jirei { display: flex; width: fit-content; margin-top: 20px; }
.works .works-jirei { margin-top: 0; }
/* 施工事例（v55・/jirei/）：1件ずつ見出し・写真・文・見積もりボタン */
.jirei { display: flex; flex-direction: column; gap: 16px; }
.jirei .h2 { font-size: 36px; }
.jirei-meta { margin: 0; font-size: 15px; color: var(--muted); }
.jirei .works-grid { margin-top: 8px; }
.jirei-text h3 { margin: 28px 0 8px; font-size: 22px; font-weight: 900; color: var(--ink); }
.jirei-text h3:first-child { margin-top: 8px; }
.jirei-text ul { margin: 0 0 12px; padding-left: 1.4em; }
.jirei .works-btn { margin-top: 16px; }
.menu-jirei { display: inline-block; margin-top: 24px; }
.cta-band { text-align: center; }
.cta-band .inner { display: flex; flex-direction: column; align-items: center; gap: 20px; padding-top: 64px; padding-bottom: 64px; }
.cta-band-note { font-size: 15px; color: var(--green-pale); }

/* ---------- 事業者情報・特商法・プライバシー ---------- */
.doc { padding-top: 80px; padding-bottom: 80px; }
.doc-title { font-size: 40px; line-height: 1.3; letter-spacing: -.01em; }
.doc-intro { font-size: 16px; line-height: 1.9; color: #3A443E; max-width: 880px; }
.doc-table { display: flex; flex-direction: column; margin: 0; }
.doc-row { display: flex; gap: 24px; padding: 20px 0; border-bottom: 1px solid var(--line); }
.doc-row dt { width: 240px; flex: none; font-size: 15px; font-weight: 700; color: var(--muted); }
.doc-row dd { margin: 0; flex: 1 1 0; font-size: 16px; line-height: 1.8; }
.doc-table--simple .doc-row dt { width: 200px; }
.doc-table--simple .doc-row dd { font-weight: 700; }

/* ---------- 見積もり依頼フォーム ---------- */
.form-hero .inner { display: flex; flex-direction: column; justify-content: center; gap: 16px; padding-top: 64px; padding-bottom: 64px; min-height: 360px; }
.form-hero h1 { font-size: 56px; line-height: 1.25; letter-spacing: -.02em; }
.form-hero-text { font-size: 18px; color: var(--muted); }
.form-wrap { display: flex; justify-content: center; padding-bottom: 80px; }
.form-card { width: 800px; max-width: 100%; background: var(--white); border-radius: 28px; padding: 56px; display: flex; flex-direction: column; gap: 32px; }
.q { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.q-label, .q > legend { padding: 0; font-size: 17px; font-weight: 900; }
.q-label { display: flex; flex-direction: column; gap: 8px; }
.q--sub .q-label, .q--sub > legend { font-size: 16px; }
.q-help { font-size: 14px; font-weight: 400; color: var(--muted); }
.q-help-top { font-weight: 400; font-size: 14px; color: var(--muted); }
.choices { display: flex; gap: 12px; }
.choices--grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.choices--stack { flex-direction: column; }
.choice { flex: 1 1 0; display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 10px 18px; border: 1px solid var(--border); border-radius: 14px; font-size: 16px; line-height: 1.5; cursor: pointer; background: var(--white); }
.choice:has(input:checked) { border-color: var(--green); background: #F3F8F5; box-shadow: inset 0 0 0 1px var(--green); }
.choice input { width: 20px; height: 20px; flex: none; margin: 0; accent-color: var(--green); }
.text-input, .select-input, .textarea-input {
  width: 100%; height: 52px; border: 1px solid var(--border); border-radius: 12px; padding: 0 16px;
  font-size: 16px; font-weight: 400; font-family: inherit; color: var(--ink); background: var(--white);
}
.textarea-input { height: auto; padding: 12px 16px; line-height: 1.7; }
.select-input { width: 180px; }
.number-input { width: 120px; }
.file-input { font-size: 15px; font-weight: 400; font-family: inherit; max-width: 100%; }
.file-input + .file-input, .text-input + .file-input { margin-top: 8px; }
.photo-status { font-size: 14px; font-weight: 700; color: var(--green); }
.photo-status:empty { display: none; }
.q-block { display: flex; flex-direction: column; gap: 20px; padding: 24px; border: 1px solid var(--border); border-radius: 16px; }
.q-block-title { font-size: 17px; font-weight: 900; }
.action-note { font-size: 14px; color: var(--muted); margin: -4px 0 4px; }
.agree { display: flex; align-items: flex-start; gap: 12px; padding: 16px 18px; border: 1px solid var(--border); border-radius: 14px; font-size: 16px; line-height: 1.7; cursor: pointer; }
.agree input { width: 20px; height: 20px; flex: none; margin: 3px 0 0; accent-color: var(--green); }
.agree a { color: var(--green); text-decoration: underline; font-weight: 700; }
.submit-area { display: flex; flex-direction: column; gap: 12px; }
.submit-btn { height: 60px; border: 0; border-radius: 999px; background: var(--green); color: var(--white); font-size: 18px; font-weight: 900; font-family: inherit; cursor: pointer; }
.submit-btn[disabled] { opacity: .6; cursor: wait; }
.submit-note { font-size: 14px; color: var(--muted); text-align: center; }
.hp-field { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }

/* 条件で出し分ける質問：JavaScript が動くときは、判定が済むまで隠す */
.js [data-show-when]:not(.is-shown) { display: none !important; }

/* エラー */
.error-summary { border: 2px solid var(--red); background: #FDF3EF; border-radius: 16px; padding: 20px 24px; color: var(--ink); }
.error-summary h2 { font-size: 18px; color: var(--red-dark); margin-bottom: 8px; }
.error-summary p { margin: 0 0 8px; font-size: 15px; }
.error-summary ul { margin: 0; padding-left: 1.2em; font-size: 15px; }
.error-summary a { color: var(--red-dark); text-decoration: underline; }
.field-error { margin: 0; font-size: 15px; font-weight: 700; color: var(--red); }
.field-error:empty { display: none; }
.has-error .text-input, .has-error .textarea-input, .has-error .select-input { border: 2px solid var(--red); }
.has-error .choice { border-color: #E3A58F; }
.has-error > legend, .has-error > .q-label { color: var(--red-dark); }

/* 受付時間（電話ボタン・電話番号のすぐ下／フッター／フォームの上）。文言は pages/hours.py */
.tel-block { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.phone-hours { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; font-size: 14px; line-height: 1.6; font-weight: 400; color: inherit; opacity: .9; }
.phone-hours a { color: inherit; text-decoration: underline; font-weight: 700; }
.footer-hours { display: flex; flex-direction: column; gap: 2px; font-size: 13px; line-height: 1.7; color: var(--green-soft); }
.form-hours { margin: 0; font-size: 15px; line-height: 1.8; color: var(--body); background: var(--green-pale); border-radius: 12px; padding: 12px 16px; }

/* 完了・エラー画面 */
.message-card { width: 800px; max-width: 100%; margin: 0 auto; background: var(--white); border-radius: 28px; padding: 56px; display: flex; flex-direction: column; gap: 20px; }
.message-card h1 { font-size: 36px; line-height: 1.35; }
.reception-box { background: var(--green-pale); border-radius: 16px; padding: 20px 24px; display: flex; flex-direction: column; gap: 4px; }
.reception-box .label { font-size: 14px; font-weight: 700; color: var(--green); }
.reception-box .number { font-size: 34px; font-weight: 900; letter-spacing: .04em; color: var(--green-dark); }
.message-text { font-size: 17px; line-height: 1.9; color: var(--body); margin: 0; }
.message-actions { display: flex; gap: 16px; flex-wrap: wrap; }

/* ---------- フッター ---------- */
.site-footer { background: var(--green-dark); color: #E4EEE8; }
.site-footer .inner { display: flex; justify-content: space-between; gap: 48px; padding-top: 64px; padding-bottom: 64px; min-height: 320px; }
.footer-brand { width: 420px; display: flex; flex-direction: column; gap: 16px; }
.footer-brand .brand-text { color: var(--white); }
.footer-brand svg { width: 48px; height: 48px; }
.footer-catch { font-size: 15px; line-height: 1.8; color: var(--green-soft); }
.footer-copy { font-size: 13px; color: var(--green-soft); }
.footer-col { display: flex; flex-direction: column; gap: 12px; font-size: 15px; }
.footer-col-title { font-weight: 900; color: var(--white); }

/* ================= スマホ（767px 以下） ================= */
@media (max-width: 1100px) {
  :root { --gutter: 40px; }
  .hero .inner, .person .inner, .urgent-contact .inner { gap: 40px; }
  .hero-image { width: 360px; height: 450px; }
  .hero-side, .hero-side--kanki { width: 360px; }
  .urgent-contact-actions { width: 440px; }
}

@media (max-width: 767px) {
  :root { --gutter: 16px; }
  body { line-height: 1.7; }
  .sp-only { display: inline; }

  .site-header .inner { height: 64px; }
  .brand { gap: 8px; }
  .brand svg { width: 36px; height: 36px; }
  .brand-large { font-size: 17px; }
  .nav a:not(.nav-contact):not(.header-tel) { display: none; }
  .nav { gap: 10px; }
  .nav-contact { height: 40px; padding: 0 16px; font-size: 14px; }
  .header-tel { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--red); flex: none; }

  .btn { height: 56px; padding: 0 24px; font-size: 16px; width: 100%; }
  .btn-row { flex-direction: column; gap: 12px; }
  .section { padding-top: 36px; padding-bottom: 36px; }
  .section-head { gap: 8px; margin-bottom: 24px; }
  .eyebrow { font-size: 13px; letter-spacing: .06em; }
  .h2, .h2--sm { font-size: 24px; line-height: 1.35; }
  .lead { font-size: 14px; }
  .breadcrumb { font-size: 13px; }
  .pill { font-size: 12px; padding: 4px 10px; }
  .note-box { padding: 16px 18px; font-size: 14px; gap: 12px; line-height: 1.6; }
  .note-box svg { width: 20px; height: 20px; margin-top: 2px; }

  .hero .inner { flex-direction: column; align-items: stretch; gap: 16px; padding-top: 28px; padding-bottom: 28px; }
  .hero-body { gap: 16px; display: contents; }
  .hero-title { font-size: 34px; line-height: 1.3; letter-spacing: -.01em; }
  .hero-text { font-size: 15px; }
  .hero-small { font-size: 13px; }
  /* 高さを固定すると、画面が広いほど画像の上の方しか写らない。iPhone 幅と同じ比率で固定する */
  .hero-image { width: 100%; height: auto; aspect-ratio: 358 / 200; border-radius: 20px; order: 3; }
  .hero-image img { object-position: top center; }
  .hero-body > .btn-row { order: 4; }
  .hero-body > .hero-small { order: 5; }

  .price-band .inner { flex-direction: column; align-items: stretch; gap: 14px; padding-top: 24px; padding-bottom: 24px; min-height: 0; }
  .price-band-head { width: auto; flex-direction: row; gap: 4px; }
  .price-band-head div:first-child { font-size: 13px; letter-spacing: .06em; }
  .price-band-head div:last-child { font-size: 13px; font-weight: 900; }
  .price-item { padding-left: 0; border-left: 0; border-top: 1px solid rgba(255,255,255,.25); padding-top: 12px; display: grid; grid-template-columns: 1fr auto; align-items: baseline; }
  .price-item-name { font-size: 15px; }
  .price-item-value { font-size: 24px; }
  .price-item-value small { font-size: 14px; }
  .price-item-note { font-size: 12px; grid-column: 1 / -1; }

  .card-row, .card-row--tight { flex-direction: column; gap: 16px; }
  /* 縦に並べるときは、横並び用の「幅を等分する」指定（flex: 1 1 0）を外す。
     外さないと高さが0になり、写真例のカード（overflow: hidden）が見えなくなる */
  .card-row > * { flex: 0 0 auto; }
  .card-row + .card-row { margin-top: 16px; }
  .card { border-radius: 20px; padding: 22px; gap: 6px; }
  .card--urgent { padding: 24px; gap: 10px; }
  .card-kicker, .card-small { font-size: 12px; }
  .card-title, .card-title--lg { font-size: 18px; }
  .card-price { font-size: 32px; }
  .card-price small { font-size: 32px; }
  .card-text { font-size: 12px; color: var(--muted); }
  .card-link, .card-soon { margin-top: 6px; font-size: 13px; }
  .urgent-title { font-size: 20px; line-height: 1.35; }
  .urgent-desc { font-size: 14px; }
  .divider { margin: 8px 0; }
  .urgent-price .label { font-size: 13px; }
  .urgent-price .value { font-size: 28px; }
  .urgent-price .tax { display: none; }
  .link-arrow { font-size: 15px; }
  .soon { font-size: 13px; }

  .steps, .steps--4 { grid-template-columns: 1fr; gap: 20px; }
  .step { gap: 10px; }
  .step-no { width: 40px; height: 40px; font-size: 17px; }
  .step-title { font-size: 18px; }
  .step-text { font-size: 14px; }
  .help-box { margin-top: 24px; flex-direction: column; align-items: stretch; gap: 10px; padding: 20px; border-radius: 16px; }
  .help-box-title { font-size: 16px; }
  .help-box-text { font-size: 14px; }
  .help-box .btn { width: 100%; }
  .pay-box { margin-top: 24px; }
  .pay-brands { font-size: 15px; }
  .footer-pay { font-size: 13px; }

  .person .inner { flex-direction: column; align-items: stretch; gap: 20px; }
  .person-image { width: 100%; height: auto; aspect-ratio: 358 / 220; border-radius: 20px; }
  .person-image img { object-position: top center; }
  .person-body { gap: 12px; }
  .person-title { font-size: 22px; line-height: 1.35; }
  .person-text { font-size: 15px; line-height: 1.8; }
  .person-name { font-size: 14px; }

  .symptoms span { font-size: 14px; padding: 6px 14px; }
  .hero-side, .hero-side--kanki { width: 100%; order: 3; }
  .hero-side img, .hero-side--kanki img { height: auto; aspect-ratio: 4 / 3; border-radius: 20px; }
  .safety { padding: 20px; border-radius: 20px; }
  .safety-title { font-size: 18px; }
  .safety-text { font-size: 15px; }
  .first-aid { padding-top: 36px; padding-bottom: 36px; }
  .first-aid-intro { font-size: 15px; }
  .aid-text { font-size: 15px; }
  .aid-photos { margin-left: 0; flex-direction: column; }
  .aid-photos img { height: 200px; }
  .aid-result { padding: 18px 20px; font-size: 15px; border-radius: 16px; }
  .why-box { flex-direction: column; align-items: stretch; padding: 20px; gap: 16px; }
  .why-box img { width: 100%; height: 200px; }
  .why-box-text { font-size: 15px; }
  .fee-main { padding: 24px; border-radius: 20px; }
  .fee-value { font-size: 30px; }
  .check-line { font-size: 16px; }
  .fee-side .card { padding: 22px; }
  .fee-side .card-text { font-size: 15px; color: var(--body); }
  .risk-card { border-radius: 16px; }
  .cta-strip { flex-direction: column; align-items: stretch; padding: 20px; }
  .cta-strip .btn { height: 52px; }
  .urgent-contact .inner { flex-direction: column; align-items: stretch; gap: 24px; }
  .urgent-contact-text { font-size: 15px; }
  .urgent-contact-actions { width: 100%; padding: 24px; border-radius: 20px; }

  .big-price .value { font-size: 44px; }
  .big-price .note { font-size: 14px; }
  .target-card { padding: 22px; border-radius: 20px; }
  .target-card-title { font-size: 20px; }
  .target-card-text { font-size: 15px; }
  .scope { padding: 22px; border-radius: 20px; }
  .scope-title { font-size: 18px; }
  .scope-line { font-size: 15px; }
  .shot { border-radius: 20px; }
  .shot img { height: 220px; }
  .shot-body { padding: 18px 22px 22px; }
  .shot-title { font-size: 18px; }
  .shot-text { font-size: 14px; }
  .cta-band .inner { padding-top: 40px; padding-bottom: 40px; }
  .hero-side--whole img { aspect-ratio: auto; object-fit: contain; border-radius: 20px; }
  .section-text { font-size: 15px; line-height: 1.8; }
  .jump-links { flex-direction: column; }
  .example-box { padding: 18px 20px; font-size: 15px; border-radius: 16px; }
  .works-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .works-grid--stack { grid-template-columns: minmax(0, 1fr); }
  .panel-mikata { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .panel-mikata .work { max-width: 280px; }
  .work figcaption { font-size: 13px; }
  .works-btn { align-self: stretch; width: 100%; }
  .jirei .h2 { font-size: 24px; }
  .jirei-meta { font-size: 13px; }
  .jirei-text h3 { margin-top: 20px; font-size: 18px; }
  .cta-band-note { font-size: 14px; }

  .doc { padding-top: 36px; padding-bottom: 36px; }
  .doc-title { font-size: 26px; }
  .doc-intro { font-size: 15px; }
  .doc-row, .doc-table--simple .doc-row { flex-direction: column; gap: 4px; padding: 16px 0; }
  .doc-row dt, .doc-table--simple .doc-row dt { width: auto; font-size: 14px; }
  .doc-row dd { font-size: 15px; }

  .form-hero .inner { padding-top: 28px; padding-bottom: 28px; min-height: 0; gap: 12px; }
  .form-hero h1 { font-size: 28px; line-height: 1.35; letter-spacing: -.01em; }
  .form-hero-text { font-size: 15px; line-height: 1.7; }
  .form-wrap { padding-bottom: 40px; }
  .form-card { border-radius: 20px; padding: 20px; gap: 28px; }
  .q { gap: 10px; }
  .choices, .choices--grid { display: flex; flex-direction: column; gap: 10px; }
  .choice { flex: none; }
  .q-block { padding: 16px; }
  .select-input { width: 100%; }
  .message-card { padding: 28px 20px; border-radius: 20px; }
  .message-card h1 { font-size: 26px; }
  .reception-box .number { font-size: 28px; }
  .message-text { font-size: 16px; }
  .message-actions { flex-direction: column; }
  .tel-block { align-items: stretch; }
  .phone-hours { font-size: 13px; }

  .site-footer .inner { flex-direction: column; gap: 28px; padding-top: 40px; padding-bottom: 40px; min-height: 0; }
  .footer-brand { width: auto; gap: 12px; }
  .footer-brand svg { width: 40px; height: 40px; }
  .footer-brand .brand-large { font-size: 18px; }
  .footer-catch { font-size: 14px; }
  .footer-copy { font-size: 12px; }
  .footer-col { gap: 10px; font-size: 14px; }
}

/* ---- v42 地域：H1 の上の小さなラベル・対応地域 ---- */
.hero-title .hero-area { font-size: 15px; font-weight: 700; line-height: 1.5; letter-spacing: .06em; color: var(--green); margin-bottom: 8px; }
@media (max-width: 767px) {
  .hero-title .hero-area { font-size: 13px; margin-bottom: 4px; }
}
.area { padding-bottom: 0; }
.area-body { max-width: 880px; display: flex; flex-direction: column; gap: 14px; font-size: 16px; line-height: 1.9; color: var(--body); }
.area-body p { margin: 0; }
.area-lead { font-size: 18px; font-weight: 700; color: var(--ink); }
.area-cities { font-size: 14px; line-height: 1.9; color: var(--muted); overflow-wrap: anywhere; }
.area-note { margin: 0; font-size: 14px; line-height: 1.8; color: var(--green-pale); }
.area-note a { color: var(--white); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.footer-area { font-size: 13px; line-height: 1.7; color: var(--green-soft); }
@media (max-width: 767px) {
  .area-body { gap: 10px; font-size: 14px; }
  .area-lead { font-size: 16px; }
  .area-cities { font-size: 13px; }
  .area-note { font-size: 13px; }
  .footer-area { font-size: 12px; }
}

/* ---- 見積もりの金額の内訳（表）：申し込みページ・申し込み済み画面 ---- */
.lines-table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.6; }
.lines-table th, .lines-table td { padding: 8px 6px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.lines-table thead th { font-size: 13px; font-weight: 700; color: var(--muted); }
.lines-table .num { text-align: right; white-space: nowrap; }
.lines-table .lines-label { overflow-wrap: anywhere; }
.lines-table .lines-calc { display: none; }
.lines-table tfoot th { text-align: right; font-weight: 700; border-bottom: 0; }
.lines-table tfoot td { border-bottom: 0; }
.lines-table .lines-total { font-size: 22px; font-weight: 900; color: var(--green); }
@media (max-width: 767px) {
  /* スマホ：1行を「項目｜数量×単価と金額」の2つに。表の列は使わない */
  .lines-table, .lines-table tbody, .lines-table tfoot { display: block; }
  .lines-table thead, .lines-table .lines-wide { display: none; }
  .lines-table tr { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; border-bottom: 1px solid var(--line); }
  .lines-table th, .lines-table td { border-bottom: 0; padding: 8px 0; }
  .lines-table .lines-calc { display: block; font-size: 13px; font-weight: 400; color: var(--muted); }
  .lines-table .lines-amount { font-weight: 700; }
  .lines-table tfoot tr { border-bottom: 0; align-items: baseline; justify-content: flex-end; }
  .lines-table .lines-total { font-size: 20px; }
}

/* ---------- 交通費のご案内（v44） ---------- */
.text-link { color: var(--green); text-decoration: underline; font-weight: 700; }
.fee-block { max-width: 880px; }
.fee-block + .fee-block { margin-top: 48px; }
.fee-pref { margin: 0 0 12px; font-size: 22px; font-weight: 900; }
.fee-table { width: 100%; border-collapse: collapse; font-size: 16px; line-height: 1.6; }
.fee-table th, .fee-table td { padding: 12px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.fee-table thead th { font-size: 13px; font-weight: 700; color: var(--muted); border-bottom: 2px solid var(--line); }
.fee-table td { overflow-wrap: anywhere; }
.fee-table .fee-city { width: 9rem; font-weight: 700; }
.fee-table .fee-num { width: 8rem; text-align: right; white-space: nowrap; }
.fee-table td.fee-num { font-weight: 700; }
.fee-tax { display: inline-block; }
.fee-note { margin: 12px 0 0; font-size: 14px; color: var(--muted); }

@media (max-width: 767px) {
  .fee-block + .fee-block { margin-top: 32px; }
  .fee-pref { font-size: 18px; }
  .fee-table { font-size: 14px; table-layout: fixed; }
  .fee-table th, .fee-table td { padding: 10px 6px; }
  .fee-table thead th.fee-num { white-space: normal; }
  .fee-table thead th { font-size: 12px; }
  .fee-table .fee-city { width: 5.5rem; overflow-wrap: anywhere; }
  .fee-table .fee-num { width: 5rem; }
  .fee-note { font-size: 13px; }
}

/* ---- v46：LINE での受付・リピーター用フォーム ---- */
.repeat-link { margin: 12px 0 0; font-size: 16px; font-weight: 700; }
.repeat-link a { color: var(--green); text-decoration: underline; text-underline-offset: 3px; }
.line-note { margin-top: 12px; background: var(--green-pale); border-radius: 12px; padding: 14px 18px; font-size: 15px; line-height: 1.7; color: var(--green-dark); }
.reception-box .number { user-select: all; -webkit-user-select: all; }
.line-steps { border: 2px solid #06C755; border-radius: 16px; padding: 24px; display: flex; flex-direction: column; gap: 16px; }
.line-steps h2 { font-size: 22px; margin: 0; }
.line-steps ol { margin: 0; padding-left: 1.4em; font-size: 17px; line-height: 1.9; color: var(--body); }
.line-steps .line-no { font-size: 22px; font-weight: 900; letter-spacing: .04em; color: var(--green-dark); user-select: all; -webkit-user-select: all; }
.line-add-btn { background: #06C755; color: #fff; }
.line-add-btn:hover { background: #05B34C; }
.line-qr { display: flex; align-items: center; gap: 20px; }
.line-qr img { width: 160px; height: 160px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.line-qr p { margin: 0; font-size: 15px; line-height: 1.8; color: var(--muted); }
.line-note-sm { font-size: 14px; color: var(--muted); margin: 0; }
@media (max-width: 767px) {
  .line-steps { padding: 18px 16px; }
  .line-steps h2 { font-size: 19px; }
  .line-steps ol { font-size: 16px; }
  .line-add-btn { width: 100%; }
  .line-qr { display: none; }
}

/* ---------- 料金の目安の計算（エアコンのページなど。templates/partials/price_sim.html） ---------- */
.sim-form { display: flex; flex-direction: column; gap: 28px; max-width: 760px; }
html:not(.js) .sim-form { display: none; }  /* JavaScript が動かないときは出さない（ほかの部分はそのまま） */
.sim-noscript { font-size: 15px; color: var(--muted); }
.sim-number { display: flex; align-items: center; gap: 10px; font-size: 16px; font-weight: 700; }
.js .sim-number:not(.is-shown) { display: none; }
.sim-area { display: flex; gap: 12px; flex-wrap: wrap; }
.sim-area .select-input { width: auto; min-width: 180px; max-width: 100%; }
/* 計算欄の帯（v50）：周りの白・生成りの項と区切って、スクロール中に見つけやすくする。エアコン・コンセントで共通 */
.sim { background: var(--green-pale); border-top: 6px solid var(--green); border-bottom: 1px solid var(--green-soft); padding-top: 88px; padding-bottom: 88px; }
.sim .section-head { margin-bottom: 32px; }
.sim-title { border-left: 8px solid var(--green); padding-left: 18px; color: var(--green-dark); }
.sim-lead { margin: 0; font-size: 18px; font-weight: 700; color: var(--green-dark); }
.sim .submit-btn { width: 100%; height: 64px; font-size: 19px; }
.sim-result { display: flex; flex-direction: column; gap: 14px; padding: 24px 28px; border-radius: 20px; background: var(--white); border: 2px solid var(--green-soft); color: var(--green-dark); }
.sim-result[hidden], .sim-result [hidden] { display: none; }
.sim-lines { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 16px; }
.sim-lines li { display: flex; justify-content: space-between; gap: 16px; border-bottom: 1px dashed rgba(15, 61, 42, .25); padding-bottom: 6px; }
.sim-amount { flex: none; font-weight: 700; }
.sim-total { margin: 4px 0 0; font-size: 18px; font-weight: 700; }
.sim-total strong { font-size: 32px; font-weight: 900; }
.sim-travel, .sim-formal { margin: 0; font-size: 15px; }
.sim-notes, .sim-errors { margin: 0; padding-left: 1.2em; font-size: 14px; line-height: 1.7; }
.sim-errors { color: var(--red-dark); font-size: 15px; font-weight: 700; }
.sim-result .btn { align-self: flex-start; }
.sim-form [hidden] { display: none; }
.sim-body { padding: 12px 16px; border-radius: 12px; background: var(--green-pale); }  /* 本体の目安（合計に足さない） */
.sim-body p { margin: 0; }
.sim-body-price { font-size: 16px; font-weight: 700; }
.sim-body-note { font-size: 14px; }
.sim-stop { display: flex; flex-direction: column; gap: 14px; padding: 20px 24px; border-radius: 16px; background: var(--white); border: 2px solid var(--green-soft); color: var(--green-dark); font-size: 16px; font-weight: 700; }
.sim-stop[hidden] { display: none; }
.sim-warn { margin: 0; padding: 12px 16px; border-radius: 12px; background: var(--white); border-left: 6px solid var(--red-dark); font-size: 15px; font-weight: 700; color: var(--red-dark); line-height: 1.7; }
.sim-warn[hidden] { display: none; }
.sim-stop p { margin: 0; }
.sim-stop .btn { align-self: flex-start; }
@media (max-width: 767px) {
  .sim { padding-top: 48px; padding-bottom: 48px; }
  .sim-title { border-left-width: 6px; padding-left: 12px; }
  .sim-lead { font-size: 16px; }
  .sim-result { padding: 18px 16px; border-radius: 16px; }
  .sim-total strong { font-size: 26px; }
  .sim-area .select-input { width: 100%; }
  .sim-result .btn { align-self: stretch; }
  .sim-stop { padding: 18px 16px; }
  .sim-stop .btn { align-self: stretch; }
}
