@charset "UTF-8";
/* ============================================================
   はりきゅう治療室 はじめの一歩゜ 共通スタイル
   基調 : ほんのり白緑 / 青竹色アクセント（養生・癒やしの緑）
   ============================================================ */

:root{
  --paper:   #F3F6EE;   /* 背景（ほんのり白緑） */
  --band:    #E9EFE0;   /* セクション帯（淡い緑） */
  --ink:     #3A3531;   /* 文字（墨色） */
  --muted:   #7E867A;   /* 補助文字 */
  --accent:  #7A9678;   /* 青竹色（アクセント） */
  --accent-d:#5A7458;   /* 青竹色（濃・リンク文字／ホバー用） */
  --line:    #DDE3D3;   /* 罫線 */
  --radius:  10px;      /* 角丸（カード等） */
  --serif: "Shippori Mincho","Yu Mincho","YuMincho","Hiragino Mincho ProN",serif;
  --sans:  "Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }

/* ---------------- 日本語の改行制御 ----------------
   本文の分節の切れ目に <wbr> を埋め込んであり（BudouXで生成）、
   keep-all との組み合わせで全ブラウザで分節単位の改行になる。
   <wbr> のない新規テキストは通常どおり折り返されるので追記も安全 */
body{ word-break:keep-all; overflow-wrap:anywhere; }
h1,h2,h3,h4{ text-wrap:balance; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:var(--paper);
  line-height:1.9;
  font-size:16px;
  letter-spacing:.03em;
  -webkit-text-size-adjust:100%;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:var(--accent-d); text-underline-offset:.22em; text-decoration-thickness:1px; transition:color .2s; }
a:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }
::selection{ background:var(--accent); color:#fff; }

.wrap{ max-width:1040px; margin:0 auto; padding:0 20px; }

/* ---------------- ヘッダー ---------------- */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(243,246,238,.88);
  border-bottom:1px solid var(--line);
}
/* すりガラス効果は疑似要素に分離
   （ヘッダー本体に backdrop-filter を置くと position:fixed のスマホメニューの
   基準がヘッダーになり、メニューが表示されなくなるため） */
.site-header::before{
  content:""; position:absolute; top:0; left:0; right:0; bottom:0; z-index:-1;
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
}
.header-inner{
  max-width:1040px; margin:0 auto; padding:10px 20px;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
}
.brand{ text-decoration:none; color:var(--ink); line-height:1.4; }
.brand-sub{
  display:block; font-size:11px; letter-spacing:.35em; color:var(--accent-d);
}
.brand-name{
  display:block; font-family:var(--serif); font-size:19px; font-weight:600;
  white-space:nowrap;
}

/* ナビ（PC） */
.site-nav{ margin-left:auto; }
.site-nav ul{ list-style:none; display:flex; gap:0; margin:0; padding:0; }
.site-nav a{
  display:block; padding:10px 9px; text-decoration:none;
  color:var(--ink); font-size:13.5px; white-space:nowrap;
}
.site-nav a:hover, .site-nav a[aria-current="page"]{ color:var(--accent); }
.site-nav a[aria-current="page"]{ border-bottom:2px solid var(--accent); }

/* 患者様専用ボタン（ヘッダー右上・PC） */
.btn-patient{
  display:inline-block; white-space:nowrap;
  font-size:12.5px; letter-spacing:.06em; text-decoration:none;
  color:var(--accent-d); border:1px solid var(--accent);
  border-radius:999px; padding:7px 16px;
  transition:background .2s, color .2s;
}
.btn-patient:hover{ background:var(--accent); color:#fff; }

/* 患者様専用バー（スマホ用：ヘッダー下の帯） */
.patient-bar{ display:none; }
@media (max-width: 940px){
  .btn-patient{ display:none; }
  .patient-bar{
    display:block; background:#fff; border-bottom:1px solid var(--line);
    text-align:center;
  }
  .patient-bar a{
    display:block; padding:9px 16px; text-decoration:none;
    font-size:13px; letter-spacing:.08em; color:var(--accent-d);
  }
}

/* ナビ（スマホ：三本線メニュー / JS不使用） */
.nav-toggle{ display:none; }
.nav-button{ display:none; }

@media (max-width: 940px){
  .brand-name{ font-size:17px; }
  .nav-button{
    display:block; width:44px; height:44px; cursor:pointer; position:relative;
  }
  .nav-button span,
  .nav-button span::before,
  .nav-button span::after{
    content:""; position:absolute; left:10px; width:24px; height:2px;
    background:var(--ink); transition:.25s;
  }
  .nav-button span{ top:21px; }
  .nav-button span::before{ top:-8px; left:0; }
  .nav-button span::after{ top:8px; left:0; }
  .site-nav{
    position:fixed; top:65px; right:0; bottom:0; left:0; background:var(--paper);
    transform:translateX(100%); transition:transform .25s; overflow:auto;
  }
  .nav-toggle:checked ~ .site-nav{ transform:none; }
  .nav-toggle:checked ~ .nav-button span{ background:transparent; }
  .nav-toggle:checked ~ .nav-button span::before{ transform:rotate(45deg) translate(5px,6px); }
  .nav-toggle:checked ~ .nav-button span::after{ transform:rotate(-45deg) translate(5px,-6px); }
  .site-nav ul{ flex-direction:column; gap:0; padding:20px; }
  .site-nav a{
    font-size:17px; padding:16px 8px; border-bottom:1px solid var(--line);
  }
  .site-nav a[aria-current="page"]{ border-bottom:1px solid var(--line); color:var(--accent); }
}

/* ---------------- ヒーロー（トップ） ---------------- */
.hero{
  background:
    radial-gradient(120% 90% at 85% 10%, #DCE8D2 0%, rgba(220,232,210,0) 55%),
    var(--band);
  padding:72px 0 64px;
  position:relative; overflow:hidden;
}
.hero-inner{ max-width:1040px; margin:0 auto; padding:0 20px; position:relative; }
.hero-eyebrow{
  font-size:13px; letter-spacing:.45em; color:var(--accent-d); margin:0 0 14px;
}
.hero h1{
  font-family:var(--serif); font-weight:600;
  font-size:clamp(26px, 4.6vw, 42px); line-height:1.7; margin:0 0 22px;
}
.hero p{ max-width:36em; margin:0; color:#5A6052; }

/* 署名要素：縦書きの一文（のれんのイメージ） */
.hero-tate{
  position:absolute; right:28px; top:6px;
  writing-mode:vertical-rl; font-family:var(--serif);
  font-size:15px; letter-spacing:.32em; color:var(--accent-d);
  border-right:1px solid var(--accent-d); padding-right:14px;
  height:auto; max-height:260px; margin:0;
}
@media (max-width: 940px){
  .hero{ padding:52px 0 46px; }
  .hero-tate{ display:none; }
}

/* ---------------- セクション共通 ---------------- */
.section{ padding:64px 0; }
.section--band{ background:var(--band); }
.sec-head{ text-align:center; margin-bottom:36px; }
.sec-head .en{
  display:block; font-size:12px; letter-spacing:.4em; color:var(--accent-d);
  text-transform:uppercase; margin-bottom:6px;
}
.sec-head h2{
  font-family:var(--serif); font-weight:600;
  font-size:clamp(22px, 3.4vw, 30px); margin:0;
}

h2,h3,h4{ font-family:var(--serif); font-weight:600; line-height:1.6; }
.section h3{ font-size:20px; border-left:4px solid var(--accent); padding-left:12px; margin:44px 0 14px; }
.section h3:first-of-type{ margin-top:0; }
.section h4{ font-size:17px; margin:28px 0 8px; }
.section p{ margin:0 0 1em; }

.note{ font-size:14px; color:var(--muted); }

/* ---------------- カード（トップの3枚） ---------------- */
.cards{
  display:grid; grid-template-columns:repeat(3,1fr); gap:24px;
  list-style:none; margin:0; padding:0;
}
@media (max-width: 940px){ .cards{ grid-template-columns:1fr; } }
.card{
  background:#fff; border:1px solid var(--line);
  border-radius:var(--radius); overflow:hidden;
  text-decoration:none; color:var(--ink); display:block;
  transition:box-shadow .25s, transform .25s;
}
.card:hover{ box-shadow:0 10px 28px rgba(58,53,49,.12); transform:translateY(-3px); }
.card .illust{ transition:transform .4s ease; }
.card:hover .illust{ transform:scale(1.04); }
.card:hover .card-more{ color:var(--accent); }
.card-body{ padding:18px 20px 22px; }
.card-body h3{
  font-family:var(--serif); font-size:18px; margin:0 0 6px;
  border:none; padding:0;
}
.card-body p{ font-size:14px; color:#5A6052; margin:0; }
.card-more{ font-size:13px; color:var(--accent-d); display:inline-block; margin-top:10px; }

/* ---------------- 写真プレースホルダー ----------------
   実際の写真が用意できたら、この div を <img> タグに
   差し替えてください（README.md 参照） */
.ph{
  aspect-ratio:3/2; width:100%;
  background:repeating-linear-gradient(-45deg, #F1EAE0 0 14px, #ECE4D8 14px 28px);
  border-bottom:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
  color:var(--muted); font-size:13px; letter-spacing:.1em;
}
.ph--free{ border:1px dashed var(--line); margin:18px 0; }

/* ---------------- お知らせ ---------------- */
.news{
  background:#fff; border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:0 var(--radius) var(--radius) 0;
  padding:18px 22px; max-width:760px; margin:0 auto;
}
.news h2{ font-size:17px; margin:0 0 8px; }
.news p{ margin:0; font-size:15px; }

/* ---------------- 診療時間テーブル ---------------- */
.hours{ max-width:680px; margin:0 auto; }
.hours table{
  width:100%; border-collapse:collapse; background:#fff; font-size:15px;
}
.hours th, .hours td{
  border:1px solid var(--line); padding:10px 6px; text-align:center;
}
.hours thead th{ background:var(--band); font-weight:600; }
.hours .closed{ color:var(--muted); }
.hours .open{ color:var(--accent-d); font-weight:600; }
.hours-note{ font-size:14px; color:var(--muted); margin-top:12px; text-align:center; }

/* ---------------- 電話CTA ---------------- */
.cta{
  background:var(--band); text-align:center; padding:56px 20px;
}
.cta p.lead{ margin:0 0 6px; font-size:15px; }
.cta .tel{
  font-family:var(--serif); font-size:clamp(30px,6vw,44px); font-weight:600;
  color:var(--ink); text-decoration:none; letter-spacing:.04em;
  display:inline-block; line-height:1.3;
}
.cta .tel:hover{ color:var(--accent); }
.cta .sub{ font-size:13px; color:var(--muted); margin:8px 0 0; }

/* ---------------- 料金表 ---------------- */
.price-table{ width:100%; border-collapse:collapse; background:#fff; max-width:680px; }
.price-table th, .price-table td{
  border:1px solid var(--line); padding:14px 16px; text-align:left; font-size:15px;
}
.price-table th{ background:var(--band); width:46%; font-weight:600; }
.price-table .price{ font-family:var(--serif); font-size:19px; white-space:nowrap; }
/* 院長プロフィール表：ラベル列を狭くして右の記述欄を広げる */
.profile-table th{ width:6em; white-space:nowrap; }

/* ---------------- 定義リスト・手順リスト ---------------- */
.steps{ counter-reset:step; list-style:none; margin:0; padding:0; max-width:760px; }
.steps li{
  counter-increment:step; position:relative;
  padding:0 0 22px 56px; margin:0;
}
.steps li::before{
  content:counter(step);
  position:absolute; left:0; top:0;
  width:38px; height:38px; border-radius:50%;
  background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:17px;
}
.steps li:not(:last-child)::after{
  content:""; position:absolute; left:19px; top:44px; bottom:2px;
  width:1px; background:var(--line);
}

/* ---------------- 適応疾患の枠 ---------------- */
.disease-grid{
  display:grid; grid-template-columns:repeat(2,1fr); gap:18px;
  margin:0; padding:0; list-style:none;
}
@media (max-width:720px){ .disease-grid{ grid-template-columns:1fr; } }
.disease-grid > li{
  background:#fff; border:1px solid var(--line); padding:18px 20px;
}
.disease-grid h3{
  border:none; padding:0; margin:0 0 8px; font-size:16px; color:var(--accent-d);
}
.disease-grid p{ margin:0; font-size:14.5px; }

/* ---------------- アクセス ---------------- */
.map-frame{ border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; }
.map-frame iframe{ display:block; width:100%; height:380px; border:0; }
.addr{ font-size:17px; font-family:var(--serif); margin:18px 0 4px; }

/* ---------------- フッター ---------------- */
.site-footer{
  background:#333A30; color:#E6EBDD; margin-top:0;
  padding:48px 0 28px; font-size:14px;
}
.footer-grid{
  max-width:1040px; margin:0 auto; padding:0 20px;
  display:grid; grid-template-columns:1.3fr 1fr; gap:32px;
}
@media (max-width:720px){ .footer-grid{ grid-template-columns:1fr; } }
.site-footer h2{
  font-family:var(--serif); font-size:18px; margin:0 0 10px; color:#fff;
}
.site-footer a{ color:#E6EBDD; transition:opacity .2s; }
.site-footer a:hover{ opacity:.75; }
.site-footer ul{ list-style:none; margin:0; padding:0; }
.site-footer li{ padding:4px 0; }
.copyright{
  text-align:center; margin-top:36px; font-size:12px; color:#9AA294;
}

/* ---------------- 下層ページタイトル帯 ---------------- */
.page-title{
  background:var(--band); padding:44px 0; text-align:center;
}
.page-title .en{
  display:block; font-size:12px; letter-spacing:.4em;
  color:var(--accent-d); text-transform:uppercase; margin-bottom:4px;
}
.page-title h1{
  font-family:var(--serif); font-weight:600;
  font-size:clamp(24px,4vw,32px); margin:0;
}

/* ---------------- イラスト画像 ---------------- */
.illust{ width:100%; height:auto; display:block; border-bottom:1px solid var(--line); }
.illust--free{ border:1px solid var(--line); margin:18px 0; max-width:560px; }

/* カード内画像は縦横比を統一（元サイト写真のサイズ差を吸収） */
.card .illust{ aspect-ratio:3/2; object-fit:cover; background:var(--band); }

/* ---------------- ブログ ---------------- */
.post{ border-bottom:1px solid var(--line); padding:0 0 36px; margin:0 0 36px; }
.post:last-child{ border-bottom:none; }
.post-date{
  font-family:var(--serif); font-size:13px; letter-spacing:.12em;
  color:var(--accent-d); margin:0 0 6px;
}
.post-title{
  font-family:var(--serif); font-size:21px; font-weight:600;
  margin:0 0 14px; line-height:1.6;
}
.post-body p{ margin:0 0 1em; }
.post-body p:last-child{ margin-bottom:0; }


/* ---------------- ヒーロー（写真背景版） ---------------- */
.hero--photo{
  position:relative; padding:0; background:none;
}
.hero--photo .hero-bg{
  width:100%; height:clamp(340px, 52vh, 520px); object-fit:cover; display:block;
}
.hero--photo .hero-inner{
  position:absolute; inset:0; display:flex; flex-direction:column; justify-content:center;
  background:linear-gradient(90deg, rgba(243,246,238,.93) 0%, rgba(243,246,238,.76) 42%, rgba(243,246,238,.15) 100%);
}
@media (max-width:880px){
  .hero--photo .hero-inner{
    background:linear-gradient(180deg, rgba(243,246,238,.62) 0%, rgba(243,246,238,.86) 60%, rgba(243,246,238,.95) 100%);
  }
}

.hero--photo .hero-inner-pad{ max-width:1040px; margin:0 auto; padding:0 20px; width:100%; }

/* ---------------- のれんバナー（ファーストビュー） ---------------- */
.noren-hero{ width:100%; background:#5A1322; }
.noren-hero img{
  display:block; width:100%; max-width:1400px; height:auto; margin:0 auto;
}

/* ---------------- ヒーロー文字のフェードイン ---------------- */
@media (prefers-reduced-motion: no-preference){
  .hero-inner-pad{ animation:heroFade .9s ease-out both; }
  @keyframes heroFade{
    from{ opacity:0; transform:translateY(14px); }
    to{ opacity:1; transform:none; }
  }
}

/* ---------------- 患者様専用ページ（パスワード入力） ---------------- */
.gate{
  max-width:440px; margin:0 auto;
  background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  padding:36px 28px 32px; text-align:center;
}
.gate p{ font-size:14.5px; margin:0 0 20px; }
.gate label{
  display:block; font-size:13px; color:var(--muted);
  letter-spacing:.1em; margin-bottom:8px;
}
.gate input[type="password"]{
  width:100%; max-width:240px; margin:0 auto 18px;
  display:block; text-align:center;
  font-size:22px; letter-spacing:.4em; font-family:var(--sans);
  padding:10px 12px; color:var(--ink);
  border:1px solid var(--line); border-radius:8px; background:var(--paper);
}
.gate input[type="password"]:focus{
  outline:2px solid var(--accent); outline-offset:1px; background:#fff;
}
.btn{
  display:inline-block; cursor:pointer;
  font-family:var(--sans); font-size:15px; letter-spacing:.14em;
  color:#fff; background:var(--accent);
  border:none; border-radius:999px; padding:12px 44px;
  transition:background .2s;
}
.btn:hover{ background:var(--accent-d); }
.gate-error{
  color:#A05A52; font-size:13.5px; margin-top:14px; min-height:1.5em;
}

/* 患者様専用ページ本体のお知らせ枠 */
.patient-note{
  background:#fff; border:1px dashed var(--accent);
  border-radius:var(--radius); padding:16px 20px;
  font-size:14px; color:var(--muted); max-width:760px; margin:0 auto 32px;
}
