@charset "UTF-8";

/* ==========================================================
   一般社団法人ほんによかね会 — 共通スタイル
   色・書体の設計根拠は 02_デザイン/デザイン方針.md を参照
   ========================================================== */

:root{
  --ink:#474A45;        /* 本文。純黒は使わない */
  --muted:#6F7469;      /* 補足文 */
  --line:#E4E8DE;       /* 罫線 */
  --green:#7CB25F;      /* 装飾・英字ラベル。文字色には使わない(白背景で2.5:1) */
  --deep:#3D6E43;       /* 文字に使える緑(白背景で6.0:1) */
  --band:#457F49;       /* 緑帯。白文字が読める(4.8:1) */
  --leaf:#9ECA69;       /* ロゴの明るい緑。濃い背景の上でのみ使用 */
  --tint:#F4F8F0;       /* 淡い緑の背景 */
  --tint2:#EBF2E4;      /* やや濃い淡緑 */
  --paper:#FCFDFB;      /* ほぼ白 */
  --white:#FFFFFF;
  --forest:#33512F;     /* フッター */
  --disp:"Zen Maru Gothic","Hiragino Maru Gothic ProN","Yu Gothic UI",sans-serif;
  --body:"Zen Kaku Gothic New","Hiragino Sans","Yu Gothic UI",sans-serif;
  --en:"Montserrat","Helvetica Neue",Arial,sans-serif;
  --wrap:1120px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--white);color:var(--ink);
  font-family:var(--body);font-size:17px;line-height:1.9;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;height:auto}
a{color:var(--deep)}
a:focus-visible,button:focus-visible{outline:2px solid var(--deep);outline-offset:3px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;z-index:99;background:#fff;padding:10px 16px;border:2px solid var(--deep);border-radius:6px}

/* ---------- ヘッダー ---------- */
.hd{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line)}
.hd-in{max-width:var(--wrap);margin:0 auto;padding:14px 24px;display:flex;align-items:center;gap:18px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}
.brand img{width:40px}
.brand b{font-family:var(--disp);font-weight:700;font-size:17px;line-height:1.35}
.brand b small{display:block;font-family:var(--body);font-weight:400;font-size:10.5px;color:var(--muted);letter-spacing:.06em}
.gnav{margin-left:auto;display:flex;align-items:center;gap:26px}
.gnav a{font-size:14.5px;text-decoration:none;color:var(--ink);padding:4px 0;border-bottom:1.5px solid transparent}
.gnav a:hover,.gnav a:focus-visible{color:var(--deep);border-bottom-color:var(--green)}
.gnav a[aria-current="page"]{color:var(--deep);border-bottom-color:var(--green)}
.hd-cta{font-size:14px;background:var(--deep);color:#fff;padding:9px 18px;border-radius:99px;text-decoration:none;white-space:nowrap}
.hd-cta:hover,.hd-cta:focus-visible{background:#325B37}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:8px;width:44px;height:44px;cursor:pointer;color:var(--ink);font-size:20px;line-height:1;align-items:center;justify-content:center}
@media (max-width:920px){
  .gnav{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0;padding:8px 24px 20px}
  .gnav.open{display:flex}
  .gnav a{padding:14px 0;border-bottom:1px solid var(--line)}
  .gnav a:last-child{border-bottom:0}
  .burger{display:flex}
  .hd-cta{display:none}
}

/* ---------- 共通レイアウト ---------- */
.sec{padding:88px 24px}
.sec.tight{padding:60px 24px}
.tinted{background:var(--tint)}
.inner{max-width:var(--wrap);margin:0 auto}
.narrow{max-width:720px;margin:0 auto}
.center-col{max-width:520px;margin:0 auto;text-align:center}
.shead{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin-bottom:46px}
.en{font-family:var(--en);font-weight:600;font-size:11.5px;letter-spacing:.22em;color:var(--green);margin:0;text-transform:uppercase}
.shead h2{font-family:var(--disp);font-weight:700;font-size:clamp(22px,3vw,30px);margin:0;letter-spacing:.03em;text-wrap:balance}

/* ---------- 写真 ---------- */
/* .ph = 実際の写真を入れる枠 / .photo = 画像が未定のプレースホルダ */
.ph{margin:0;border-radius:18px;overflow:hidden;background:var(--tint2)}
.ph img{width:100%;height:100%;object-fit:cover;object-position:center}
.ph iframe{width:100%;height:100%;border:0;display:block}
/* 切り取り位置の指定。人物が枠の端に写っている写真で、その側を残したいときに付ける */
.ph img.pos-left{object-position:left center}
.ph img.pos-right{object-position:right center}
.ph img.pos-top{object-position:center top}
.ph img.pos-bottom{object-position:center bottom}
.photo{background:var(--tint2);border:1px solid var(--line);border-radius:18px;display:grid;place-items:center;text-align:center;padding:24px;overflow:hidden}
.photo span{font-family:var(--en);font-weight:600;font-size:11px;letter-spacing:.18em;color:var(--green)}
.photo small{display:block;font-size:12.5px;color:var(--muted);margin-top:7px;max-width:34ch;line-height:1.75}
/* 縦横比。元写真の比率に近いものを選ぶと切り取られる範囲が少なくなる */
.ph-kv{aspect-ratio:16/9}
.ph-wide{aspect-ratio:16/9}
.ph-3x2{aspect-ratio:3/2}
.ph-4x3{aspect-ratio:4/3}
@media (max-width:700px){.ph-kv{aspect-ratio:4/3}}

/* ---------- トップページ ---------- */
.mv{background:var(--paper);padding:80px 24px 0}
.mv-in{max-width:660px;margin:0 auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px}
.mv-logo{width:104px}
.mv-name{font-family:var(--en);font-weight:500;font-size:11px;letter-spacing:.28em;color:var(--green);margin:0;text-transform:uppercase}
.mv h1{font-family:var(--disp);font-weight:700;font-size:clamp(26px,5vw,42px);line-height:1.6;margin:0;letter-spacing:.03em;text-wrap:balance}
.mv h1 em{font-style:normal;color:var(--deep)}
.mv-lead{margin:0;font-size:16px;color:var(--muted);max-width:32em}
.keyvisual{background:var(--paper);padding:52px 24px 0}
.keyvisual .inner{max-width:var(--wrap)}

/* ---------- 営業情報の帯 ---------- */
.hours{background:var(--band);color:#fff}
.hours.mt{margin-top:52px}
.hours-in{max-width:var(--wrap);margin:0 auto;padding:24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 40px}
.hours dl{margin:0;display:flex;align-items:baseline;gap:11px}
.hours dt{font-family:var(--disp);font-weight:700;font-size:12.5px;background:rgba(255,255,255,.18);padding:3px 11px;border-radius:99px;white-space:nowrap}
.hours dd{margin:0;font-size:15.5px}
.hours dd span,.hours dd time{font-family:var(--en);font-weight:600;font-variant-numeric:tabular-nums}
.hours .note{font-size:12.5px;color:#D7E8D1;margin:0}

/* ---------- 想い ---------- */
.creed{font-family:var(--disp);font-weight:500;font-size:clamp(17px,2.4vw,20px);line-height:2.25;margin:0 0 26px;letter-spacing:.03em}
.from{font-size:13px;color:var(--muted);margin:0}

.three{display:grid;grid-template-columns:repeat(3,1fr);gap:44px}
@media (max-width:840px){.three{grid-template-columns:1fr;gap:34px}}
.wish{display:flex;flex-direction:column;gap:12px}
.wish::before{content:"";width:30px;height:2px;background:var(--green)}
.wish h3{font-family:var(--disp);font-weight:700;font-size:18px;margin:0;line-height:1.65}
.wish p{margin:0;font-size:15px;color:var(--muted)}

/* ---------- 2カラム(写真+文章) ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}
@media (max-width:840px){.split{grid-template-columns:1fr;gap:28px}}
.split-t{display:flex;flex-direction:column;gap:16px}
.split-t h3{font-family:var(--disp);font-weight:700;font-size:clamp(20px,2.6vw,25px);margin:0;line-height:1.7;letter-spacing:.02em}
.split-t p{margin:0;font-size:16px;color:var(--muted)}

/* ---------- カード ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
@media (max-width:840px){.cards{grid-template-columns:1fr}}
.card{border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;text-decoration:none;color:var(--ink);background:var(--white)}
.card:hover,.card:focus-visible{border-color:var(--green)}
.card .photo{border:0;border-radius:0;border-bottom:1px solid var(--line);aspect-ratio:16/10}
.card .ph{border-radius:0;border-bottom:1px solid var(--line);aspect-ratio:16/9}
.card:hover .photo,.card:focus-visible .photo,
.card:hover .ph,.card:focus-visible .ph{border-bottom-color:var(--green)}
.card .card-b{padding:24px 24px 26px;display:flex;flex-direction:column;gap:10px;flex:1}
.card h3{font-family:var(--disp);font-weight:700;font-size:19px;margin:0}
.card p{margin:0;font-size:15px;color:var(--muted);flex:1}
.card .more{font-size:13.5px;color:var(--deep)}

/* ---------- 実績の数字 ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:36px 0}
@media (max-width:760px){.stats{grid-template-columns:repeat(2,1fr);gap:30px}}
.stat{text-align:center;display:flex;flex-direction:column;gap:2px}
.stat b{font-family:var(--en);font-weight:600;font-size:clamp(28px,4.2vw,38px);color:var(--deep);line-height:1.25;font-variant-numeric:tabular-nums}
.stat span{font-size:12.5px;color:var(--muted)}
.cap{text-align:center;font-size:12.5px;color:var(--muted);margin:18px 0 0}

/* ---------- お知らせ ---------- */
.news{border-top:1px solid var(--line)}
.news a{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 22px;padding:22px 4px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line)}
.news a:hover,.news a:focus-visible{color:var(--deep)}
.news time{font-family:var(--en);font-weight:500;font-size:13px;color:var(--green);font-variant-numeric:tabular-nums}
.news .tag{font-size:11.5px;border:1px solid var(--line);color:var(--muted);padding:1px 10px;border-radius:99px}
.news p{margin:0;font-size:15.5px;flex:1 1 16em}

/* ---------- ボタン ---------- */
.btn{display:inline-block;font-size:15px;text-decoration:none;color:var(--deep);border:1.5px solid var(--green);border-radius:99px;padding:12px 32px;background:transparent}
.btn:hover,.btn:focus-visible{background:var(--green);color:#fff}
.btn-fill{background:var(--deep);border-color:var(--deep);color:#fff}
.btn-fill:hover,.btn-fill:focus-visible{background:#325B37;border-color:#325B37;color:#fff}
.center{display:flex;justify-content:center;margin-top:36px}
.btn-row{display:flex;flex-wrap:wrap;gap:14px}

/* ---------- 大きな導線ブロック ---------- */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:22px}
@media (max-width:840px){.duo{grid-template-columns:1fr}}
.big{border-radius:18px;padding:42px 36px;text-decoration:none;display:flex;flex-direction:column;gap:10px;min-height:196px;justify-content:center}
.big-a{background:var(--band);color:#fff}
.big-b{background:var(--white);color:var(--ink);border:1px solid var(--line)}
.big .en{color:inherit;opacity:.7}
.big-b .en{color:var(--green);opacity:1}
.big h3{font-family:var(--disp);font-weight:700;font-size:23px;margin:0}
.big p{margin:0;font-size:15px;max-width:26em}
.big-a p{color:#DCEBD6}
.big-b p{color:var(--muted)}
.big-a:hover,.big-a:focus-visible{background:#3B7040}
.big-b:hover,.big-b:focus-visible{border-color:var(--green)}

/* ---------- 下層ページ ---------- */
.phead{background:var(--tint);padding:52px 24px 46px;border-bottom:1px solid var(--line)}
.phead .inner{display:flex;flex-direction:column;gap:8px}
.phead h1{font-family:var(--disp);font-weight:700;font-size:clamp(25px,3.6vw,34px);margin:0;letter-spacing:.03em}
.phead .lead{margin:6px 0 0;font-size:16.5px;color:var(--muted);max-width:44em}
.crumb{max-width:var(--wrap);margin:0 auto;padding:12px 24px;font-size:12.5px;color:var(--muted)}
.crumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}
.crumb li::after{content:"／";margin-left:8px;color:var(--line)}
.crumb li:last-child::after{content:""}
.crumb a{color:var(--muted)}

.prose{max-width:720px;margin:0 auto}
.prose h2{font-family:var(--disp);font-weight:700;font-size:clamp(20px,2.6vw,25px);margin:56px 0 18px;letter-spacing:.02em;line-height:1.65}
.prose h2:first-child{margin-top:0}
.prose h3{font-family:var(--disp);font-weight:700;font-size:18px;margin:34px 0 12px}
.prose p{margin:0 0 20px}
.prose ul,.prose ol{margin:0 0 22px;padding-left:1.4em}
.prose li{margin-bottom:8px}
.prose strong{font-weight:700;color:var(--deep)}

/* 情報ボックス(営業情報・サービス概要) */
.infobox{border:1.5px solid var(--green);border-radius:16px;padding:8px 26px 22px;margin:0 0 30px;background:var(--paper)}
.infobox h3{font-family:var(--disp);font-weight:700;font-size:17px;color:var(--deep);margin:20px 0 4px}
.infobox dl{margin:0;display:grid;grid-template-columns:7.5em 1fr;gap:2px 16px}
@media (max-width:560px){.infobox dl{grid-template-columns:1fr;gap:0 0}}
.infobox dt{font-family:var(--disp);font-weight:700;font-size:14.5px;color:var(--deep);padding:9px 0 0}
.infobox dd{margin:0;padding:9px 0 0;font-size:16px}
@media (max-width:560px){.infobox dt{padding-bottom:0}.infobox dd{padding-top:2px;padding-bottom:10px;border-bottom:1px solid var(--line)}.infobox dd:last-child{border-bottom:0}}
.infobox dd span{font-family:var(--en);font-weight:600;font-variant-numeric:tabular-nums}
.infobox .memo{font-size:13.5px;color:var(--muted);margin:16px 0 0}
.todo{color:#8A5A2B;font-size:14px}

/* 定義テーブル(団体概要) */
.deftable{width:100%;border-collapse:collapse;font-size:16px;margin:0 0 28px}
.deftable th,.deftable td{text-align:left;padding:15px 16px;border-bottom:1px solid var(--line);vertical-align:top}
.deftable th{font-family:var(--disp);font-weight:700;width:11em;color:var(--deep);background:var(--tint)}
@media (max-width:600px){
  .deftable th,.deftable td{display:block;width:auto;border-bottom:0}
  .deftable th{background:transparent;padding:14px 0 2px}
  .deftable td{padding:0 0 14px;border-bottom:1px solid var(--line)}
}
.scroll-x{overflow-x:auto}

/* 年表 */
.timeline{list-style:none;margin:0 0 28px;padding:0}
.timeline li{display:grid;grid-template-columns:8.5em 1fr;gap:4px 20px;padding:15px 0;border-bottom:1px solid var(--line)}
@media (max-width:600px){.timeline li{grid-template-columns:1fr;gap:2px}}
.timeline b{font-family:var(--en);font-weight:600;font-size:14.5px;color:var(--deep);font-variant-numeric:tabular-nums}
.timeline span{font-size:16px}

/* Q&A */
.qa{list-style:none;margin:0 0 28px;padding:0}
.qa li{border-bottom:1px solid var(--line);padding:20px 0}
.qa b{display:block;font-family:var(--disp);font-weight:700;font-size:16.5px;margin-bottom:6px}
.qa p{margin:0;font-size:15.5px;color:var(--muted)}

/* 電話の大きな表示 */
.telbox{border:1.5px solid var(--green);border-radius:16px;padding:30px 26px;text-align:center;background:var(--paper);margin:0 0 30px}
.telbox .label{font-family:var(--en);font-weight:600;font-size:11.5px;letter-spacing:.2em;color:var(--green);margin:0 0 6px}
.telbox a{font-family:var(--en);font-weight:600;font-size:clamp(28px,5.2vw,40px);color:var(--deep);text-decoration:none;letter-spacing:.02em;font-variant-numeric:tabular-nums;display:inline-block;line-height:1.3}
.telbox a:hover,.telbox a:focus-visible{text-decoration:underline}
.telbox p{margin:8px 0 0;font-size:14.5px;color:var(--muted)}
.telbox p span{font-family:var(--en);font-weight:600;font-variant-numeric:tabular-nums}

/* 3者協働 */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:0 0 26px}
@media (max-width:700px){.trio{grid-template-columns:1fr}}
.trio div{border:1px solid var(--line);border-radius:14px;padding:20px;background:var(--paper)}
.trio b{display:block;font-family:var(--disp);font-weight:700;font-size:16px;color:var(--deep);margin-bottom:4px}
.trio span{font-size:14px;color:var(--muted)}

/* ---------- フッター ---------- */
.ft{background:var(--forest);color:#DAE6D4;padding:64px 24px 26px}
.ft-in{max-width:var(--wrap);margin:0 auto;display:flex;flex-wrap:wrap;gap:44px}
.ft-brand{flex:1 1 300px;display:flex;flex-direction:column;gap:14px}
.ft-brand .row{display:flex;align-items:center;gap:12px}
.ft-brand img{width:44px}
.ft-brand b{font-family:var(--disp);font-weight:700;font-size:16.5px;color:#fff}
.ft-brand p{margin:0;font-size:14px;line-height:2}
.ft-brand a{color:#DAE6D4}
.ft-nav{display:flex;flex-wrap:wrap;gap:36px}
.ft-col{display:flex;flex-direction:column;gap:10px;min-width:132px}
.ft-col h2{font-family:var(--en);font-weight:600;font-size:10.5px;letter-spacing:.18em;color:var(--leaf);margin:0 0 2px;text-transform:uppercase}
.ft-col a{font-size:14px;color:#DAE6D4;text-decoration:none}
.ft-col a:hover,.ft-col a:focus-visible{color:#fff;text-decoration:underline}
.ft-btm{max-width:var(--wrap);margin:46px auto 0;padding-top:20px;border-top:1px solid rgba(255,255,255,.15);display:flex;flex-wrap:wrap;gap:8px 22px;font-size:12.5px;color:#A6B9A0}
.ft-btm a{color:#A6B9A0}

/* ---------- スクロール表示 ---------- */
.rev{opacity:0;transition:opacity .8s ease}
.rev.on{opacity:1}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rev{opacity:1;transition:none}
}
