/* 株式会社グラトラーレ コーポレートサイト 共通スタイル
   ─ 色や文字の大きさを変えたいときは、まず下の :root の値を触ってください */

:root{
  --ground:#FCFBFD; --surface:#F5F2F7; --ink:#1F1A24; --muted:#544B5D; --line:#E6E0EA;
  --gold:#9C7410; --gold-line:#C9A227;
  --deep:#2A1638; --deep-2:#3A2050; --on-deep:#F7F3F9; --on-deep-muted:#C0AECD; --gold-on-deep:#D9B45A;
  --logo-white:url("logo-white.png");
  --logo-mark:url("logo-mark.png");
  --serif:"Shippori Mincho B1","Hiragino Mincho ProN","Yu Mincho",serif;
  --sans:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",system-ui,sans-serif;
  --latin:"Cormorant Garamond","Times New Roman",serif;
  /* 本文1行の上限。おおよそ43文字。
     px ではなく em で持っているため、文字の大きさが違う箇所でも「文字数」がそろう */
  --measure:40em;
  /* 文字の大きさの4段階。土台(html)が18pxなので 1rem=18px。
     老人ホームを探すご家族・ご本人が読む前提で、14px を下限にしている */
  --fs-read:1rem;     /* 18px 読む文 */
  --fs-note:.89rem;   /* 16px 注記・開示・ボタン */
  --fs-small:.84rem;  /* 15px 許可番号・ナビ・フッター */
  --fs-tag:.78rem;    /* 14px いちばん小さい飾りのタグ */
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ground:#131019; --surface:#1D1725; --ink:#EFE9F3; --muted:#B1A7BC; --line:#302838;
    --gold:#DEBB58; --gold-line:#8C6C24;
    --deep:#1B1224; --deep-2:#241831; --on-deep:#EFE9F3; --on-deep-muted:#A79CB2; --gold-on-deep:#D9B45A;
  }
}
:root[data-theme="dark"]{
  --ground:#131019; --surface:#1D1725; --ink:#EFE9F3; --muted:#B1A7BC; --line:#302838;
  --gold:#DEBB58; --gold-line:#8C6C24;
  --deep:#1B1224; --deep-2:#241831; --on-deep:#EFE9F3; --on-deep-muted:#A79CB2; --gold-on-deep:#D9B45A;
}

*{box-sizing:border-box}
/* 土台の文字を18pxにする。px ではなく % で持つので、
   ブラウザの設定で文字を大きくしている人には、その設定がそのまま効く */
html{font-size:112.5%}
html{scroll-behavior:smooth}
body{
  margin:0; background:var(--ground); color:var(--ink);
  font-family:var(--sans); font-size:1rem; line-height:1.9;
  font-feature-settings:"palt" 1; -webkit-font-smoothing:antialiased;
}
a{color:inherit}
/* 見出しを言葉(文節)の切れ目で折り返す。「支／援センター」のような切れ方を防ぐ。
   作り直す.py が見出しの言葉の切れ目に <wbr> を入れ、keep-all でそこ以外では折り返させない。
   iPhone の Safari も含めて効く。
   overflow-wrap:anywhere ─ 1つの言葉が画面の幅より長いときだけ、はみ出さないよう途中で折り返す保険
   (BudouX が入っていない PC で作り直した場合も、これでふつうの折り返しになり崩れない) */
h1,h2,h3{font-family:var(--serif); font-weight:700; line-height:1.65; letter-spacing:.06em; text-wrap:balance; word-break:keep-all; overflow-wrap:anywhere; margin:0}
/* 言葉の途中で折り返さないまとまり。折り返すなら span と span の間で折り返す(どのブラウザでも効く)。
   トップの大見出しに使っている */
.phrase{display:inline-block}
p{margin:0}
ul{margin:0; padding:0; list-style:none}
:focus-visible{outline:2px solid var(--gold-line); outline-offset:4px; border-radius:2px}
.wrap{max-width:960px; margin-inline:auto; padding-inline:26px}
.wrap-narrow{max-width:820px; margin-inline:auto; padding-inline:26px}

/* 本文の1行が長くなりすぎないようにする。
   1行が長いと、行末から次の行頭へ目を戻すときにどの行へ戻るか分からなくなる。
   複数列に並ぶカードの中の文はもともと狭いため、この指定は効かない。
   見出し帯(.page-head)は <main> の外にあるので別に並べている */
main p, main li, main dd, main blockquote,
.page-head p{ max-width:var(--measure) }
/* ヘッダーが2段で固定表示されるため、ページ内リンクで飛んだときにその分だけ見出しを下げて止める。
   rem で持つ ─ ヘッダーの高さは文字の大きさに比例して伸びるため、px だと文字を大きくした方で見出しが隠れる。
   8rem = 144px(本文18pxのとき。ヘッダーは119px)。ブラウザの文字を150%にしている方ではメニューが2段になり
   ヘッダーが205pxまで伸びるので、そのときも 216px で見出しが隠れない */
[id]{scroll-margin-top:8rem}
/* 狭い画面ではヘッダーは1段(63px)。ただし文字を大きくしている方ではロゴと電話番号が2行になり
   伸びるため、その場合でも見出しが隠れないよう 5.6rem(本文18pxのとき約100px)にしている */
@media (max-width:45em){ [id]{scroll-margin-top:5.6rem} }
.label-en{font-family:var(--latin); font-size:.9rem; letter-spacing:.34em; text-transform:uppercase; color:var(--gold); font-weight:600; margin-bottom:16px}
.rule{width:44px; height:1px; background:var(--gold-line); margin-bottom:26px}
.tnum{font-variant-numeric:tabular-nums; letter-spacing:.04em}

/* --- 確認用ドラフト告知(公開時は サイト設定.json の「確認用ドラフト表示」を false に) --- */
.draft{background:var(--surface); border-bottom:1px solid var(--line); font-size:var(--fs-small); line-height:1.9; color:var(--muted); padding-block:9px}
.draft b{color:var(--gold); font-weight:500; letter-spacing:.1em; margin-right:.7em}

/* --- ヘッダー --- */
.site-head{position:sticky; top:0; z-index:20; background:var(--ground); border-bottom:1px solid var(--line)}
/* ヘッダーは2段。上段=ロゴと電話番号、下段=メニュー。
   1段に詰めるとメニューの文字が折り返すため、あえて分けている。
   折り返しは white-space:nowrap で物理的に禁じる(ここを緩めると再発する) */
/* flex-wrap ─ 狭い画面で文字を大きく設定している方の場合、社名と電話が1行に収まらない。
   そのときだけ電話を下の行へ送る(通常は1行のまま) */
.head-top{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px; min-height:62px}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none}
.brand-mark{width:33px; height:32px; background:var(--logo-mark) center/contain no-repeat; flex:none}
.brand-name{font-family:var(--serif); font-size:.98rem; letter-spacing:.1em; line-height:1.35; white-space:nowrap}
.brand-en{display:block; font-family:var(--latin); font-size:.72rem; letter-spacing:.32em; color:var(--muted); line-height:1.5; white-space:nowrap}
.nav{border-top:1px solid var(--line)}
/* 間隔は em で持つ(文字と一緒に伸び縮みさせるため)。
   6項目の文字幅 約539px + 間隔 1.3em×5 + 左右の余白52px ≒ 689px。これが下の 45em(720px)に収まること。
   flex-wrap ─ 収まらないときは、項目を隠さずに2段目へ送る。以前はスクロールバーを隠した横スクロールにしていたため、
   ブラウザの文字を150%にしている方では右端の「会社概要」が黙って見えなくなっていた(第28版で発見)。
   項目の中の文字は .nav a の nowrap で折り返さない */
.nav-in{display:flex; flex-wrap:wrap; align-items:center; column-gap:1.3em; row-gap:0; min-height:46px; font-size:var(--fs-small)}
/* ナビのリンク。上下に padding を入れてクリックしやすくしている(文字の高さだけだと押しにくい)。
   カーソルを合わせると金の細い下線が左から伸びる。いま見ているページは常時、太い金の下線。
   ※ カーソルを合わせたときに文字サイズを変えないこと。変えると右隣の項目が動いて押しにくくなる */
.nav a{position:relative; padding-block:13px; text-decoration:none; color:var(--muted); transition:color .2s; white-space:nowrap}
.nav a::after{content:""; position:absolute; left:0; right:0; bottom:7px; height:1px; background:var(--gold-line);
  transform:scaleX(0); transform-origin:left; transition:transform .24s ease}
.nav a:hover{color:var(--ink)}
.nav a:hover::after{transform:scaleX(1)}
.nav a[aria-current="page"]{color:var(--ink)}
.nav a[aria-current="page"]::after{transform:scaleX(1); height:2px; background:var(--gold)}
.nav-tel{font-family:var(--serif); font-size:.95rem; color:var(--ink); letter-spacing:.06em; font-variant-numeric:tabular-nums; text-decoration:none; white-space:nowrap; flex:none}
/* メニューを隠す幅。em なので、ブラウザの設定で文字を大きくしている人ほど早めに隠れる
   (メニューの文字が大きくなって収まらなくなるのと同じ割合で)。下の scroll-margin と同じ値にそろえる */
@media (max-width:45em){ .nav{display:none} }
/* 360px幅の電話でも、ロゴと電話番号を1行に収める(本文18px化で5px足りなくなったため、
   社名の字間と間隔だけを詰めた。電話番号の大きさは変えない) */
@media (max-width:480px){
  .head-top{gap:8px}
  .brand-mark{width:28px; height:27px}
  .brand-name{font-size:.82rem; letter-spacing:.01em}
  .brand-en{font-size:.62rem; letter-spacing:.24em}
  .nav-tel{font-size:.85rem; letter-spacing:.04em}
}

/* --- ヒーロー(深紫の面) --- */
/* 深紫の地に、右上と左下から金の光をにじませる。画像は使っていないので表示は遅くならない */
.hero{
  background:
    radial-gradient(116% 78% at 82% 16%, rgba(217,180,90,.17), transparent 58%),
    radial-gradient(88% 66% at 6% 94%, rgba(217,180,90,.09), transparent 62%),
    linear-gradient(158deg, var(--deep-2), var(--deep) 58%);
  color:var(--on-deep); position:relative; padding-block:clamp(56px,8vw,104px) clamp(48px,7vw,88px);
}
.hero::before{content:""; position:absolute; inset:14px; border:1px solid rgba(217,180,90,.28); pointer-events:none}
.hero-grid{display:grid; gap:clamp(34px,5vw,52px); align-items:center; position:relative}
@media (min-width:900px){ .hero-grid{grid-template-columns:1.22fr .78fr} }
.hero .label-en{color:var(--gold-on-deep)}
.hero .rule{background:var(--gold-on-deep)}
.hero h1{font-size:clamp(1.6rem,3.9vw,2.45rem); line-height:1.75}
.hero-lead{margin-top:28px; max-width:var(--measure); color:var(--on-deep-muted); font-size:var(--fs-read); line-height:2}
.hero-disc{margin-top:26px; max-width:var(--measure); color:var(--on-deep); font-size:var(--fs-read); line-height:1.9}  /* 開示。hero-lead と同じ字の大きさ、色はより濃く。小さく薄くしない(正本10-6/4-4) */
.hero-logo{width:100%; max-width:290px; aspect-ratio:640/398; background:var(--logo-white) center/contain no-repeat; margin-inline:auto}
.entries{display:grid; gap:14px; margin-top:38px; grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
.entry{display:block; border:1px solid rgba(217,180,90,.42); padding:20px 22px; text-decoration:none; transition:background .22s, border-color .22s}
.entry:hover{background:rgba(217,180,90,.09); border-color:var(--gold-on-deep)}
.entry-k{display:block; font-family:var(--latin); font-size:var(--fs-tag); letter-spacing:.28em; color:var(--gold-on-deep); margin-bottom:6px}
.entry-t{font-family:var(--serif); font-size:1.11rem; letter-spacing:.08em}
.entry-s{display:block; font-size:var(--fs-note); color:var(--on-deep-muted); margin-top:4px; line-height:1.8}

/* --- 下層ページの見出し帯 --- */
/* 光の向きをページごとに変えて、いま別のページにいることが感じ取れるようにする */
.page-head{
  background:
    radial-gradient(108% 150% at 86% -20%, rgba(217,180,90,.16), transparent 58%),
    linear-gradient(152deg, var(--deep-2), var(--deep) 56%);
  color:var(--on-deep); padding-block:clamp(44px,6vw,76px);
}
.page-residence .page-head{
  background:
    radial-gradient(108% 150% at 14% -20%, rgba(217,180,90,.16), transparent 58%),
    linear-gradient(208deg, var(--deep-2), var(--deep) 56%);
}
.page-employers .page-head{
  background:
    radial-gradient(120% 165% at 50% -30%, rgba(217,180,90,.14), transparent 60%),
    linear-gradient(180deg, var(--deep-2), var(--deep) 62%);
}
.page-head .label-en{color:var(--gold-on-deep)}
.page-head .rule{background:var(--gold-on-deep)}
.page-head h1{font-size:clamp(1.4rem,3.4vw,2.1rem)}
.page-head p{margin-top:22px; color:var(--on-deep-muted); font-size:var(--fs-read); max-width:var(--measure)}

/* --- 白地セクション --- */
.sec{padding-block:clamp(64px,9vw,120px)}
.sec + .sec{border-top:1px solid var(--line)}
.sec-tight{padding-block:clamp(48px,6vw,88px)}
.sec-head{margin-bottom:clamp(34px,5vw,54px)}
.sec-head h2{font-size:clamp(1.4rem,3.2vw,2rem)}
.sec-lead{margin-top:22px; color:var(--muted); font-size:var(--fs-read); max-width:var(--measure)}

/* --- 3点セット --- */
.points{display:grid; gap:clamp(26px,3.5vw,38px); grid-template-columns:repeat(auto-fit,minmax(235px,1fr)); margin-top:clamp(34px,4vw,46px)}
/* トップで1枚だけ置くとき。横幅いっぱいに伸びて間延びしないよう抑える */
@media (min-width:760px){ .points-1{max-width:64%} }
.point{border-top:1px solid var(--gold-line); padding-top:22px}
.point h3{font-size:1.17rem; margin-bottom:12px}
.point p{color:var(--muted); font-size:var(--fs-read)}
.notice{margin-top:34px; border-left:1px solid var(--gold-line); padding:2px 0 2px 20px; color:var(--muted); font-size:var(--fs-note); max-width:var(--measure)}
.lic{margin-top:26px; font-size:var(--fs-small); color:var(--muted); letter-spacing:.03em}

/* --- ボタン --- */
.cta-row{display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; align-items:center}
.btn{display:inline-flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:4px 10px; padding:15px 28px; border-radius:2px; font-size:var(--fs-note); letter-spacing:.06em; text-decoration:none; transition:background .22s, border-color .22s, color .22s}
/* 番号と「に電話する」をひとかたまりに保つ。受付時間だけが下の行へ回る */
.btn-main{white-space:nowrap}
.btn-deep{background:var(--deep); color:var(--on-deep); border:1px solid var(--deep)}
.btn-deep:hover{border-color:var(--gold-line); background:var(--deep-2)}
.btn-line{border:1px solid var(--line); color:var(--ink)}
.btn-line:hover{border-color:var(--gold-line)}
.btn[aria-disabled="true"]{opacity:.62; pointer-events:none; border-style:dashed}
.btn-num{font-family:var(--serif); font-variant-numeric:tabular-nums; letter-spacing:.08em}
.btn-sub{font-size:var(--fs-small); letter-spacing:.04em}
.ico{width:17px; height:17px; flex:none}

/* --- 画面の端についてくる相談ボタン --- */
/* 見出しを通り過ぎると現れ、最後のお問い合わせ欄が見えると消えます。
   同じ用の口が二重に並ぶのを避けるためです。
   LINEのロゴは使えないため(ブランドガイドライン)、文字だけのボタンにしています。
   JavaScript が動かない環境では最後まで現れません。本文の邪魔をしない側に倒しています。 */
.float-cta{position:fixed; z-index:30; display:flex; gap:10px;
  opacity:0; visibility:hidden; transform:translateY(12px);
  transition:opacity .3s ease, transform .3s ease, visibility .3s}
.float-cta.is-on{opacity:1; visibility:visible; transform:none}
.float-cta a{display:flex; align-items:center; justify-content:center; gap:8px;
  text-decoration:none; font-size:var(--fs-note); letter-spacing:.06em; line-height:1.45;
  border-radius:2px; padding:13px 18px; transition:background .22s, border-color .22s}
.fc-tel{background:var(--ground); color:var(--ink); border:1px solid var(--line)}
.fc-tel:hover{border-color:var(--gold-line)}
.fc-line{background:var(--deep); color:var(--on-deep); border:1px solid var(--deep)}
.fc-line:hover{background:var(--deep-2); border-color:var(--gold-line)}
.fc-num{font-family:var(--serif); font-variant-numeric:tabular-nums; letter-spacing:.08em}
/* 電話は2段。下の段に受付時間を出す ─ 時間外にかけて誰も出ない、を減らすため */
.fc-tel{flex-direction:column; gap:2px}
.fc-top{white-space:nowrap}
.fc-sub{font-size:var(--fs-tag); color:var(--muted); letter-spacing:.03em; white-space:nowrap; line-height:1.3}

/* 狭い画面 ─ 下に帯で横に並べる */
@media (max-width:759px){
  .float-cta{left:0; right:0; bottom:0;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));
    background:var(--ground); border-top:1px solid var(--line)}
  /* 狭いので文字を1段落とし、折り返さない(2行になると帯が厚くなりすぎる) */
  .float-cta a{flex:1; padding:14px 6px; font-size:var(--fs-small); white-space:nowrap}
  /* 帯がフッターの最後の行を隠さないように、下へ余白を足す。
     JavaScript がボタンを置いたときだけ足す(置かないなら余白も要らない) */
  body.has-float-cta{padding-bottom:106px}
}

/* 広い画面 ─ 右下に縦に積む */
@media (min-width:760px){
  .float-cta{right:clamp(16px,2.4vw,32px); bottom:clamp(16px,2.4vw,32px);
    flex-direction:column; align-items:stretch;
    filter:drop-shadow(0 6px 22px rgba(31,26,36,.16))}
}

/* 動きを減らす設定にしている方には、動かさずに出し入れする */
@media (prefers-reduced-motion:reduce){
  .float-cta{transition:opacity .01s, visibility .01s}
  .float-cta, .float-cta.is-on{transform:none}
}
/* 線画アイコン。画像ファイルではなく作り直す.py が SVG を直接書き出しているので、
   読み込みは増えず、色は currentColor で明暗どちらの画面にも自動で合う */
.ico-line{display:block; width:26px; height:26px; color:var(--gold); margin-bottom:14px; flex:none}
.step-n .ico-line{width:24px; height:24px; margin:10px 0 0}
.more{display:inline-flex; align-items:center; gap:9px; margin-top:26px; font-size:var(--fs-note); letter-spacing:.06em; text-decoration:none; color:var(--gold); border-bottom:1px solid var(--gold-line); padding-bottom:5px; transition:opacity .2s}
.more:hover{opacity:.7}

/* --- ご利用の流れ(順番に意味があるため番号を振る) --- */
.steps{margin-top:clamp(30px,4vw,44px); display:grid}
.step{display:grid; grid-template-columns:1fr; gap:6px; border-top:1px solid var(--line); padding-block:26px}
@media (min-width:640px){ .step{grid-template-columns:86px 1fr; gap:28px} }
.step-n{font-family:var(--latin); font-size:1.25rem; letter-spacing:.12em; color:var(--gold); font-weight:600; line-height:1.6}
/* 番号どうしを金の細い縦線でつなぎ、順番があることを見て分かるようにする */
@media (min-width:640px){
  .step{position:relative}
  .step-n{position:relative}
  .step-n::after{
    /* top は「番号とアイコンの下」。アイコンを足した分(24px+10px)だけ下げてある */
    content:""; position:absolute; left:2px; top:3.65em; bottom:-92px; width:1px;
    background:var(--gold-line); opacity:.5;
  }
  .step:last-child .step-n::after{content:none}
}
.step h3{font-size:1.17rem; margin-bottom:10px}
.step p{color:var(--muted); font-size:var(--fs-read)}
.switch{display:flex; flex-wrap:wrap; gap:12px; margin-top:30px}
.switch a{border:1px solid var(--line); padding:12px 22px; font-size:var(--fs-note); letter-spacing:.06em; text-decoration:none; border-radius:2px; transition:border-color .2s}
.switch a:hover{border-color:var(--gold-line)}

/* --- 料金 --- */
.fees{display:grid; gap:clamp(24px,3.5vw,34px); grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.fee{border:1px solid var(--line); padding:clamp(24px,3vw,32px); display:flex; flex-direction:column; gap:14px}
.fee-free{border-color:var(--gold-line)}
/* 区分名は見出し(h2)にしてある。見出しの既定(明朝・太字・行間1.65)を打ち消し、
   本文と同じ見え方に戻す ─ 構造だけを正し、見た目は変えないため */
.fee-for{font-family:var(--sans); font-weight:400; line-height:1.9;
         font-size:var(--fs-small); letter-spacing:.1em; color:var(--muted)}
.fee-amount{font-family:var(--serif); font-size:clamp(1.5rem,3.6vw,2rem); letter-spacing:.1em; line-height:1.4}
.fee-free .fee-amount{color:var(--gold)}
.fee-ask .fee-amount{font-size:clamp(1.02rem,2.1vw,1.22rem); letter-spacing:.08em; line-height:1.7}
.fee p{color:var(--muted); font-size:var(--fs-read)}
.law{margin-top:clamp(34px,4vw,48px); background:var(--surface); padding:clamp(22px,3vw,30px); font-size:var(--fs-note); color:var(--muted); line-height:1.85}
.law strong{color:var(--ink); font-weight:500}

/* --- よくあるご質問 --- */
.qa{margin-top:clamp(26px,3.5vw,38px); display:grid}
.qa-item{border-top:1px solid var(--line); padding-block:24px}
/* 問いは h3。AIや検索が「ここが質問」と読めるようにするため(2026-10-19)。
   font-weight を 400 で打ち消す ─ 指定しないと h1,h2,h3 の 700 が効いて太字になる */
.qa-q{display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:baseline; font-family:var(--serif); font-weight:400; font-size:1.06rem; letter-spacing:.05em; line-height:1.8; word-break:keep-all; overflow-wrap:anywhere}
.qa-q::before{content:"Q"; font-family:var(--latin); font-size:.95rem; letter-spacing:.1em; color:var(--gold); font-weight:600}
.qa-a{display:grid; grid-template-columns:auto 1fr; gap:14px; margin-top:12px; color:var(--muted); font-size:var(--fs-read)}
.qa-a::before{content:"A"; font-family:var(--latin); font-size:.95rem; letter-spacing:.1em; color:var(--muted); font-weight:600}

/* --- 私たちの考え方(深紫の面) --- */
.stance{background:var(--deep); color:var(--on-deep); padding-block:clamp(64px,9vw,110px)}
.stance .label-en{color:var(--gold-on-deep)}
.stance .rule{background:var(--gold-on-deep)}
.creed{margin:0; font-family:var(--serif); font-size:clamp(1.12rem,2.4vw,1.58rem); line-height:2.1; letter-spacing:.08em}
.creed-src{display:block; margin-top:18px; font-family:var(--sans); font-size:var(--fs-small); letter-spacing:.14em; color:var(--on-deep-muted)}
.pillars{display:grid; gap:clamp(26px,3.5vw,40px); grid-template-columns:repeat(auto-fit,minmax(215px,1fr)); margin-top:clamp(44px,5vw,64px)}
.pillar{border-top:1px solid rgba(217,180,90,.4); padding-top:22px}
.pillar h3{font-size:1.11rem; margin-bottom:12px}
.pillar p{color:var(--on-deep-muted); font-size:var(--fs-read)}

/* --- 事業者向け --- */
.biz{display:grid; gap:clamp(28px,4vw,44px); grid-template-columns:repeat(auto-fit,minmax(255px,1fr))}
.biz-col{border-top:1px solid var(--line); padding-top:22px}
.biz-col h3{font-size:1.17rem; margin-bottom:12px}
.biz-col p{color:var(--muted); font-size:var(--fs-read)}
.biz-col ul{margin-top:18px}
.biz-col li{border-top:1px solid var(--line); padding-block:10px; font-size:var(--fs-note); line-height:1.8}

/* --- 会社概要 --- */
.profile{margin:0; display:grid}
.row{display:grid; grid-template-columns:1fr; gap:2px; border-top:1px solid var(--line); padding-block:18px}
@media (min-width:640px){ .row{grid-template-columns:180px 1fr; gap:26px; align-items:baseline} }
.row dt{color:var(--muted); font-size:var(--fs-small); letter-spacing:.1em; margin:0}
.row dd{margin:0; font-size:var(--fs-read); line-height:1.95}
.row dd .sub{display:block; color:var(--muted); font-size:var(--fs-small); margin-top:5px; line-height:1.8}

/* --- 図(グループの構成・費用の流れ) ---
   画像ではなく文字で組んでいる。検索に載り、読み上げソフトが読み、
   ダークモードでも色が反転し、拡大しても滲まないため */
/* --- 本文中の写真(『素材』フォルダに置いたときだけ出る) --- */
.photo{margin:clamp(28px,4vw,44px) 0}
.photo img{display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover}
.photo figcaption{margin-top:12px; color:var(--muted); font-size:var(--fs-note); line-height:1.9; max-width:var(--measure)}
/* 写真がまだ無いときの枠。確認用ドラフト表示のあいだだけ出る(公開時は何も出ない) */
.photo-slot{border:1px dashed var(--gold-line); background:var(--surface);
  display:grid; place-items:center; min-height:clamp(190px,24vw,290px); padding:26px; text-align:center}
.photo-slot-in b{display:block; font-family:var(--serif); font-size:.98rem; letter-spacing:.04em; margin-bottom:10px}
.photo-slot-in span{display:block; color:var(--muted); font-size:var(--fs-note); line-height:1.9; max-width:34em; margin-inline:auto}
.photo-slot-in code{font-family:var(--latin); letter-spacing:.04em; color:var(--gold)}

.diagram{margin:clamp(28px,4vw,44px) 0; padding:clamp(22px,3vw,32px); border:1px solid var(--line); background:var(--surface)}
.diagram-first{margin-top:0}
.diagram-title{font-family:var(--serif); font-size:.9rem; letter-spacing:.14em; color:var(--muted); margin-bottom:clamp(20px,2.6vw,28px); text-align:center}
/* 図そのものが中央組みなので、幅を絞った注記だけが左に寄らないようにする */
.diagram-note{margin:24px auto 0; color:var(--muted); font-size:var(--fs-note); line-height:1.95}

/* グループの構成 ─ 枠の中に並べること自体が「同じグループ」を表す */
.orgs{display:grid; gap:clamp(14px,2vw,22px); grid-template-columns:repeat(auto-fit,minmax(248px,1fr))}
.org{border:1px solid var(--gold-line); background:var(--ground); padding:clamp(18px,2.4vw,24px)}
.org-name{font-family:var(--serif); font-size:1.11rem; letter-spacing:.06em; line-height:1.8}
.org-tag{display:inline-block; margin-left:10px; font-family:var(--sans); font-size:var(--fs-tag); letter-spacing:.12em;
  color:var(--gold); border:1px solid var(--gold-line); padding:1px 8px; white-space:nowrap}
.org ul{margin-top:14px}
.org li{border-top:1px solid var(--line); padding-block:9px; font-size:var(--fs-note); color:var(--muted); line-height:1.8}

/* 費用の流れ ─ 上から下へ「誰が払うか」だけを示す */
/* 箱は中央に寄せるが、幅は親いっぱいから max-width で絞る。
   justify-items:center にすると箱が文字幅まで縮んでしまうため使わない */
.flowmap{display:grid; text-align:center}
.fm-box{border:1px solid var(--line); background:var(--ground); padding:18px 22px; max-width:34em; width:100%; margin-inline:auto}
.fm-box-free{border-color:var(--gold-line)}
.fm-who{font-size:var(--fs-note); color:var(--muted); line-height:1.95}
.fm-center{border:1px solid var(--gold); background:var(--deep); color:var(--on-deep);
  padding:16px 26px; font-family:var(--serif); font-size:1rem; letter-spacing:.12em;
  max-width:26em; width:100%; margin-inline:auto}
.fm-arrow{display:grid; justify-items:center; gap:7px; padding-block:14px}
.fm-line{width:1px; height:24px; background:var(--gold-line)}
.fm-line-none{width:0; height:24px; background:none; border-left:1px dashed var(--line)}
.fm-mark{color:var(--gold-line); font-size:var(--fs-tag); line-height:1}
.fm-amt{font-family:var(--serif); font-size:var(--fs-note); letter-spacing:.1em; color:var(--gold)}
.fm-amt-none{color:var(--muted)}

/* --- 代表メッセージ --- */
/* 格子(grid)ではなく横並び(flex)にしている。
   写真の枠を hidden にすると格子からは取り除かれ、本文が写真の列へ繰り上がって
   290px の細い列に押し込まれてしまうため。横並びなら写真がないとき本文が全幅を取る */
.message-grid{display:flex; flex-wrap:wrap; gap:clamp(28px,4vw,48px); align-items:flex-start}
/* min-width:0 ─ これがないと、img の width 属性(580)が最小幅として効いてしまい、
   写真の枠が290pxに収まらず本文が下の段へ落ちる */
.message-photo{flex:0 0 290px; max-width:100%; min-width:0}
.message-body{flex:1 1 420px}
.message-photo img{display:block; width:100%; aspect-ratio:1/1; object-fit:cover; border:1px solid var(--gold-line)}
.message-body p{margin-top:20px; color:var(--muted); font-size:var(--fs-read); line-height:2}
.message-body p:first-of-type{margin-top:0}
.sign{margin-top:32px; font-family:var(--serif); color:var(--ink); font-size:.94rem; letter-spacing:.08em; line-height:1.85}

/* --- お問い合わせ --- */
.contact-box{border:1px solid var(--gold-line); padding:clamp(26px,5vw,50px)}
.tel-big{display:inline-block; font-family:var(--serif); font-size:clamp(1.55rem,4.2vw,2.25rem); letter-spacing:.09em; text-decoration:none; font-variant-numeric:tabular-nums; transition:color .2s}
.tel-big:hover{color:var(--gold)}
.c-list{margin:0; display:grid}
.c-row{display:grid; grid-template-columns:1fr; gap:6px; border-top:1px solid var(--line); padding-block:22px}
.c-row:first-child{border-top:0; padding-top:0}
@media (min-width:640px){ .c-row{grid-template-columns:120px 1fr; gap:26px; align-items:baseline} }
.c-row dt{font-size:var(--fs-small); letter-spacing:.14em; color:var(--muted); margin:0}
.c-row dd{margin:0; font-size:var(--fs-read)}
.c-note{display:block; font-size:var(--fs-small); color:var(--muted); margin-top:10px; line-height:1.85; max-width:var(--measure)}
.pending{display:inline-block; border:1px dashed var(--line); color:var(--muted); font-size:var(--fs-small); padding:5px 12px; border-radius:2px}
.sns{display:flex; flex-wrap:wrap; gap:12px}
.sns-item{display:inline-flex; align-items:center; gap:9px; border:1px solid var(--line); padding:11px 18px; font-size:var(--fs-note); text-decoration:none; letter-spacing:.04em; border-radius:2px; transition:border-color .22s}
.sns-item:hover{border-color:var(--gold-line)}
.sns-item[aria-disabled="true"]{border-style:dashed; color:var(--muted); pointer-events:none}

/* --- お問い合わせフォーム --- */
.form{border:1px solid var(--gold-line); padding:clamp(24px,5vw,44px); margin-block:clamp(26px,4vw,40px)}
.f-row{border-top:1px solid var(--line); padding-block:22px}
.f-row:first-of-type{border-top:0; padding-top:0}
.f-label{display:block; font-size:var(--fs-small); letter-spacing:.1em; color:var(--muted); margin-bottom:10px}
.f-req{display:inline-block; font-size:var(--fs-tag); letter-spacing:.1em; color:var(--gold); border:1px solid var(--gold-line); border-radius:2px; padding:1px 7px; margin-left:8px; vertical-align:1px}
.f-input{width:100%; box-sizing:border-box; font-family:inherit; font-size:var(--fs-read); line-height:1.8; color:var(--ink); background:var(--ground); border:1px solid var(--line); border-radius:2px; padding:12px 14px; transition:border-color .22s}
.f-input:focus{border-color:var(--gold-line)}
select.f-input{appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%); background-position:calc(100% - 19px) calc(50% + 1px),calc(100% - 14px) calc(50% + 1px); background-size:5px 5px,5px 5px; background-repeat:no-repeat; padding-right:40px}
textarea.f-input{resize:vertical}
.f-note{display:block; font-size:var(--fs-small); color:var(--muted); line-height:1.85; margin-bottom:10px; max-width:var(--measure)}
.f-warn{color:var(--gold); border-left:2px solid var(--gold-line); padding-left:12px}
.f-hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.f-agree{font-size:var(--fs-read)}
.f-agree label{display:flex; align-items:flex-start; gap:10px; line-height:1.9; cursor:pointer}
.f-agree input{margin-top:.45em; accent-color:var(--gold)}
.form .cta-row{margin-top:26px}
.form button[disabled]{opacity:.45; pointer-events:none}

/* --- 個人情報の取り扱いページ --- */
.art{margin-top:clamp(30px,4vw,46px)}
.art section{border-top:1px solid var(--line); padding-block:30px}
.art h2{font-size:1.2rem; margin-bottom:16px}
.art p{font-size:var(--fs-read); color:var(--muted)}
.art p + p{margin-top:14px}
.art ul{margin-top:14px}
.art li{font-size:var(--fs-read); color:var(--muted); padding-left:1.1em; position:relative; line-height:1.95}
.art li::before{content:"─"; position:absolute; left:0; color:var(--gold-line)}
.updated{margin-top:34px; font-size:var(--fs-small); color:var(--muted); letter-spacing:.04em}

/* --- フッター(深紫の面) --- */
.site-foot{background:var(--deep); color:var(--on-deep-muted); padding-block:clamp(40px,5vw,60px); font-size:var(--fs-small); line-height:1.95}
.foot-in{display:flex; flex-wrap:wrap; gap:24px 40px; justify-content:space-between}
.foot-brand{font-family:var(--serif); font-size:.96rem; color:var(--on-deep); letter-spacing:.1em; margin-bottom:8px}
.foot-nav{display:flex; flex-wrap:wrap; gap:8px 22px; align-items:flex-start; max-width:24em}
.foot-nav a{text-decoration:none; transition:color .2s}
.foot-nav a:hover{color:var(--gold-on-deep)}
.foot-disc{margin-top:16px; max-width:var(--measure); font-size:var(--fs-small); line-height:1.9}
.foot-copy{font-family:var(--latin); letter-spacing:.2em; font-size:var(--fs-small); margin-top:18px}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *{transition:none !important}
}
