@charset "UTF-8";
/* ============================================================
   結デンタルクリニック（架空）｜安城さくらい歯科 構成モデルの模写
   ============================================================ */

/* ---- デザイントークン ---- */
:root{
  --brown:#655A4F; --brown-d:#463E37; --brown-dd:#3A332D;
  --gold:#B0A080; --gold-d:#97865F;
  --cream:#F7F4F0; --gray:#F1EEE9; --line:#E3DCD3;
  --ink:#3a352f; --ink-soft:#6b645c; --white:#fff;
  /* フルードrem：1300px幅で 1rem≒10px、1600pxで頭打ち */
  --fz: clamp(10px, calc(100vw / 1300 * 10), calc(1600 / 1300 * 10px));
}
@media (max-width:767px){ :root{ --fz: calc(100 / 375 * 10vw); } }

*,*::before,*::after{ box-sizing:border-box; }
html{ font-size:var(--fz); scroll-behavior:smooth; }
body{
  margin:0; color:var(--ink); background:var(--cream);
  font-family:"Noto Sans JP",-apple-system,sans-serif;
  font-size:1.55rem; font-weight:400; line-height:1.9;
  letter-spacing:.04em; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; margin:0; padding:0; }
h2,h3,p{ margin:0; }

/* ---- 共通タイポ ---- */
.en-script{
  font-family:"Great Vibes",cursive; color:var(--gold);
  font-size:4.6rem; line-height:1; letter-spacing:.02em; font-weight:400;
}
.en-script.light{ color:var(--gold); }
.ja-h{
  font-family:"Noto Serif JP",serif; font-weight:500; color:var(--brown);
  font-size:3.2rem; line-height:1.55; letter-spacing:.08em; margin-top:1.2rem;
}
.ja-h.light{ color:var(--white); }
.lead-txt{ color:var(--ink-soft); margin-top:2rem; font-size:1.5rem; line-height:2.1; }

/* ---- ボタン ---- */
.btn{
  display:inline-block; padding:1.6rem 4.4rem; border-radius:999px;
  font-size:1.5rem; letter-spacing:.14em; transition:.25s;
}
.btn--gold{ background:var(--gold); color:var(--white); }
.btn--gold:hover{ background:var(--gold-d); }
.btn--brown{ background:var(--brown); color:var(--white); }
.btn--brown:hover{ background:var(--brown-d); }
.round-btn{
  display:inline-flex; align-items:center; gap:1.4rem; margin-top:2.6rem;
  font-size:1.4rem; letter-spacing:.14em; color:var(--brown); transition:.25s;
}
.round-btn i{
  width:4.6rem; height:4.6rem; border:1px solid var(--gold); border-radius:50%;
  position:relative; transition:.25s;
}
.round-btn i::after{
  content:""; position:absolute; top:50%; left:50%; width:1rem; height:1rem;
  border-top:1px solid var(--gold); border-right:1px solid var(--gold);
  transform:translate(-70%,-50%) rotate(45deg); transition:.25s;
}
.round-btn:hover i{ background:var(--gold); }
.round-btn:hover i::after{ border-color:#fff; }

/* ============ 固定ヘッダー ============ */
.hdr{
  position:fixed; top:0; left:0; width:100%; z-index:60;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.8rem 2.4rem; pointer-events:none;
}
.hdr__logo{ display:flex; align-items:center; gap:1rem; pointer-events:auto; color:var(--white); }
.logo-mark{ width:3.6rem; height:3.6rem; color:var(--gold); flex:none; }
.hdr__name{ display:flex; flex-direction:column; line-height:1.25; text-shadow:0 1px 6px rgba(0,0,0,.35); }
.hdr__name b{ font-family:"Noto Serif JP",serif; font-size:1.7rem; font-weight:600; letter-spacing:.1em; }
.hdr__name em{ font-style:normal; font-size:.95rem; letter-spacing:.28em; opacity:.85; }
.hdr__menu{
  pointer-events:auto; display:flex; flex-direction:column; align-items:center; gap:.5rem;
  background:var(--brown); color:#fff; border:none; cursor:pointer;
  width:6.6rem; height:6.6rem; justify-content:center; border-radius:.4rem; transition:.25s;
}
.hdr__menu:hover{ background:var(--brown-d); }
.hdr__bars{ width:2.4rem; height:1.5rem; position:relative; }
.hdr__bars i{ position:absolute; left:0; width:100%; height:1.5px; background:#fff; transition:.3s; }
.hdr__bars i:nth-child(1){ top:0; }
.hdr__bars i:nth-child(2){ top:50%; transform:translateY(-50%); }
.hdr__bars i:nth-child(3){ bottom:0; }
.hdr__menu-txt{ font-size:1rem; letter-spacing:.2em; }
body.nav-open .hdr__menu{ background:var(--gold); }
body.nav-open .hdr__bars i:nth-child(1){ top:50%; transform:translateY(-50%) rotate(45deg); }
body.nav-open .hdr__bars i:nth-child(2){ opacity:0; }
body.nav-open .hdr__bars i:nth-child(3){ bottom:auto; top:50%; transform:translateY(-50%) rotate(-45deg); }

/* WEB予約 縦タブ */
.side-reserve{
  position:fixed; top:50%; right:0; transform:translateY(-50%); z-index:55;
  writing-mode:vertical-rl; background:var(--gold); color:#fff;
  padding:2.4rem 1.2rem; font-size:1.4rem; letter-spacing:.28em;
  border-radius:.5rem 0 0 .5rem; transition:.25s;
}
.side-reserve:hover{ background:var(--gold-d); padding-right:1.6rem; }

/* ページトップ */
.pagetop{
  position:fixed; right:2rem; bottom:2rem; z-index:55;
  width:5.2rem; height:5.2rem; border-radius:50%; border:none; cursor:pointer;
  background:var(--brown); color:#fff; opacity:0; visibility:hidden; transform:translateY(1rem);
  transition:.35s; display:grid; place-items:center;
}
.pagetop svg{ width:2.2rem; height:2.2rem; }
.pagetop.is-show{ opacity:1; visibility:visible; transform:none; }
.pagetop:hover{ background:var(--gold); }

/* ============ ドロワー ============ */
body.nav-open{ position:fixed; width:100%; left:0; overflow:hidden; }  /* 背面スクロールロック */
.drawer{
  position:fixed; inset:0; z-index:58; background:rgba(58,51,45,.97);
  color:#fff; opacity:0; visibility:hidden; transition:.45s;
  display:flex; align-items:center; justify-content:center;
  backdrop-filter:blur(4px);
}
.drawer.is-open{ opacity:1; visibility:visible; }
.drawer__inner{ width:min(112rem,88%); transform:translateY(2rem); transition:.5s .1s; }
.drawer.is-open .drawer__inner{ transform:none; }
.drawer__en{ font-family:"Great Vibes",cursive; color:var(--gold); font-size:5.4rem; line-height:1; margin-bottom:3rem; }
.drawer__cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:3rem 4rem; }
.drawer__col h3{ font-family:"Noto Serif JP",serif; font-size:1.7rem; color:var(--gold); letter-spacing:.14em; padding-bottom:1.2rem; margin-bottom:1.2rem; border-bottom:1px solid rgba(176,160,128,.4); }
.drawer__col li a{ display:block; padding:.9rem 0; font-size:1.5rem; letter-spacing:.08em; transition:.2s; }
.drawer__col li a:hover{ color:var(--gold); padding-left:.6rem; }
.drawer__cta{ display:flex; align-items:center; gap:3rem; margin-top:3.6rem; padding-top:3rem; border-top:1px solid rgba(255,255,255,.15); flex-wrap:wrap; }
.drawer__tel{ display:flex; flex-direction:column; }
.drawer__tel .en{ font-size:1.1rem; letter-spacing:.3em; color:var(--gold); }
.drawer__tel .num{ font-family:"Noto Serif JP",serif; font-size:2.8rem; letter-spacing:.06em; }
.drawer__tel .time{ font-size:1.2rem; opacity:.8; }

/* ============ ① ヒーロー ============ */
.hero{ position:relative; }
/* Splide初期化前(読込直後の一瞬)のちらつき防止：1枚目だけ全画面表示にしておく */
.hero__splide:not(.is-initialized) .splide__list{ display:block; }
.hero__splide:not(.is-initialized) .hero__slide{ width:100%; }
.hero__splide:not(.is-initialized) .hero__slide:not(:first-child){ display:none; }
.hero__splide,.hero__splide .splide__track,.hero__splide .splide__list{ height:100vh; }
.hero__slide{ position:relative; height:100vh; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.hero__bg{ position:absolute; inset:0; background-size:cover; background-position:center; transform:scale(1.06); }
/* ★アクティブな「スライド」だけをズーム（#hero本体の is-active には反応させない）→ 各スライド登場時に個別ズーム */
.hero__slide.is-active .hero__bg{ animation:heroZoom 7s linear forwards; }
@keyframes heroZoom{ from{ transform:scale(1.06);} to{ transform:scale(1.14);} }
.hero__slide::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(58,51,45,.28),rgba(58,51,45,.12) 40%,rgba(58,51,45,.42)); }
.hero__catch{
  position:relative; z-index:2; color:#fff; text-align:center;
  font-family:"Noto Serif JP",serif; font-weight:500; font-size:5rem; line-height:1.7;
  letter-spacing:.12em; text-shadow:0 2px 20px rgba(0,0,0,.3);
}
.hero__catch .mark{ box-decoration-break:clone; -webkit-box-decoration-break:clone; background:linear-gradient(transparent 58%,rgba(176,160,128,.55) 58%); padding:0 .2em; }
.hero__foot{ position:absolute; left:0; bottom:3.4rem; width:100%; text-align:center; z-index:3; }
.hero__lead{ color:#fff; font-size:1.4rem; letter-spacing:.3em; text-shadow:0 1px 10px rgba(0,0,0,.4); }

/* ============ ② 補助ナビ ============ */
.subnav{ background:var(--white); border-bottom:1px solid var(--line); }
.subnav ul{ display:flex; justify-content:center; flex-wrap:wrap; gap:3.6rem; padding:2.2rem 2rem; }
.subnav a{ font-size:1.35rem; letter-spacing:.14em; color:var(--brown); position:relative; transition:.2s; }
.subnav a:hover{ color:var(--gold-d); }

/* ============ セクション共通枠 ============ */
section{ position:relative; }
.en-script{ display:block; }

/* ============ ③ Point ============ */
.point{ display:grid; grid-template-columns:1fr 1fr; align-items:stretch; background:var(--cream); }
.point__panel{ background:var(--brown); color:#fff; padding:9rem 7rem; }
.point__panel .en-script{ color:var(--gold); }
.point__panel .ja-h{ color:#fff; }
.point__list{ margin-top:4rem; }
.point__list li{ display:flex; align-items:center; gap:2rem; padding:2rem 0; border-bottom:1px solid rgba(255,255,255,.18); font-family:"Noto Serif JP",serif; font-size:1.9rem; letter-spacing:.06em; }
.point__list li span{ font-family:"Great Vibes",cursive; color:var(--gold); font-size:3.4rem; line-height:1; flex:none; min-width:3.6rem; }
.point__photo{ position:relative; overflow:hidden; clip-path:polygon(8% 0,100% 0,100% 100%,0 100%); }
.point__photo img{ width:100%; height:100%; object-fit:cover; }
.gold-lines{ position:absolute; right:0; bottom:0; width:16rem; height:16rem; background:repeating-linear-gradient(-45deg,transparent 0 1.2rem,rgba(176,160,128,.9) 1.2rem 1.35rem); mask:linear-gradient(-45deg,transparent 40%,#000); }

/* ============ ④ Staff ============ */
.staff{ display:grid; grid-template-columns:1fr 1fr; align-items:center; background:var(--white); }
.staff__photo{ overflow:hidden; clip-path:polygon(0 0,100% 0,92% 100%,0 100%); align-self:stretch; }
.staff__photo img{ width:100%; height:100%; object-fit:cover; }
.staff__body{ padding:9rem 7rem; }

/* ============ ⑤⑥ Passion / Room（交互行） ============ */
.feature-row{ display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:0; }
.passion{ background:var(--cream); }
.room{ background:var(--gray); }
.feature-row__photo{ overflow:hidden; align-self:stretch; min-height:44rem; }
.feature-row__photo img{ width:100%; height:100%; object-fit:cover; }
.feature-row__body{ padding:8rem 7rem; }
.feature-row.reverse .feature-row__photo{ order:2; }
.feature-row .leaf{
  position:absolute; right:2%; top:8%; width:22rem; height:22rem; opacity:.5; pointer-events:none;
  background:no-repeat center/contain url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path d="M50 6C34 20 20 34 20 56c0 20 14 34 30 38 16-4 30-18 30-38C80 34 66 20 50 6Z" fill="none" stroke="%23B0A080" stroke-width="1.2"/><path d="M50 12v78M50 34c-8 4-16 10-20 18M50 34c8 4 16 10 20 18M50 56c-7 3-13 8-16 14M50 56c7 3 13 8 16 14" fill="none" stroke="%23B0A080" stroke-width="1"/></svg>');
}

/* ============ ⑦ Promise ============ */
.promise{ background:var(--cream); padding:9rem 7rem; display:grid; grid-template-columns:.8fr 1.2fr; gap:5rem; align-items:center; }
.promise__head .ja-vert{ font-family:"Noto Serif JP",serif; font-weight:500; color:var(--brown); font-size:3.6rem; line-height:1.9; letter-spacing:.14em; margin-top:1.6rem; }
.promise__list li{ display:flex; align-items:center; gap:2.6rem; background:#fff; padding:2rem; border:1px solid var(--line); margin-bottom:1.8rem; transition:.25s; }
.promise__list li:hover{ box-shadow:0 1rem 3rem rgba(101,90,79,.1); transform:translateY(-.3rem); }
.promise__list img{ width:16rem; height:11rem; object-fit:cover; flex:none; }
.promise__list b{ font-family:"Noto Serif JP",serif; font-size:2.1rem; color:var(--brown); }
.promise__list .no{ font-family:"Great Vibes",cursive; color:var(--gold); font-size:2.4rem; display:block; }
.promise__list p{ font-size:1.35rem; color:var(--ink-soft); margin-top:.4rem; }
.promise__list .arw{ margin-left:auto; width:4rem; height:4rem; border:1px solid var(--gold); border-radius:50%; position:relative; flex:none; }
.promise__list .arw::after{ content:""; position:absolute; top:50%; left:46%; width:.9rem; height:.9rem; border-top:1px solid var(--gold); border-right:1px solid var(--gold); transform:translateY(-50%) rotate(45deg); }

/* ============ ⑧ Message ============ */
.message{ background:var(--brown-d); color:#fff; display:grid; grid-template-columns:.9fr 1.1fr; align-items:center; gap:0; overflow:hidden; }
.message__photo{ position:relative; align-self:stretch; min-height:52rem; }
.message__photo img{ width:100%; height:100%; object-fit:cover; object-position:top center; }
.message__watermark{ position:absolute; right:-4rem; bottom:-4rem; width:24rem; height:24rem; color:rgba(176,160,128,.28); }
.message__body{ padding:8rem 7rem; }
.message__body .en-script{ color:var(--gold); }
.message__body .ja-h{ color:#fff; }
.message__txt{ margin-top:2.6rem; line-height:2.3; font-size:1.5rem; color:rgba(255,255,255,.86); }
.message__sign{ margin-top:2.6rem; font-family:"Noto Serif JP",serif; letter-spacing:.1em; }
.message__sign b{ font-size:2.2rem; margin-left:.6rem; }

/* ============ ⑨ フォトティッカー ============ */
.ticker{ background:var(--cream); padding:0; }
.ticker .splide__slide{ margin:0; }
.ticker img{ width:22rem; height:15rem; object-fit:cover; }

/* ============ ⑩ Menu ============ */
.menu{ background:var(--brown); padding:9rem 6rem; }
.menu__head{ text-align:center; margin-bottom:5rem; }
.menu__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:2rem; max-width:132rem; margin:0 auto; }
.menu__card{ position:relative; overflow:hidden; border:1px solid rgba(255,255,255,.14); background:var(--brown-d); }
.menu__card img{ width:100%; height:20rem; object-fit:cover; transition:.6s; opacity:.9; }
.menu__card:hover img{ transform:scale(1.07); opacity:1; }
.menu__card div{ padding:1.8rem 2rem 2.2rem; color:#fff; }
.menu__card .no{ font-family:"Great Vibes",cursive; color:var(--gold); font-size:2.4rem; line-height:1; }
.menu__card b{ display:block; font-family:"Noto Serif JP",serif; font-size:1.8rem; letter-spacing:.06em; margin-top:.4rem; }
.menu__card em{ font-style:normal; font-size:1.1rem; letter-spacing:.24em; color:var(--gold); }

/* ============ ⑪ Feature 01-04 ============ */
.feature{ background:var(--brown-dd); padding:9rem 6rem; }
.feature__head{ text-align:center; margin-bottom:5rem; }
.feature__list{ max-width:118rem; margin:0 auto; }
.feature__list li{ display:grid; grid-template-columns:9rem 1fr 1fr; align-items:center; gap:4rem; padding:4.5rem 0; border-bottom:1px solid rgba(255,255,255,.12); }
.feature__no{ font-family:"Noto Serif JP",serif; font-size:6.4rem; color:transparent; -webkit-text-stroke:1px var(--gold); line-height:1; }
.feature__photo{ overflow:hidden; }
.feature__photo img{ width:100%; height:24rem; object-fit:cover; }
.feature__txt .en-script{ font-size:3rem; }
.feature__txt .tag{ display:inline-block; margin:1rem 0; padding:.5rem 1.6rem; border:1px solid var(--gold); border-radius:999px; color:var(--gold); font-size:1.2rem; letter-spacing:.2em; }
.feature__txt h3{ font-family:"Noto Serif JP",serif; font-size:2.4rem; color:#fff; letter-spacing:.06em; }
.feature__txt p{ color:rgba(255,255,255,.78); margin-top:1.2rem; font-size:1.45rem; line-height:2.1; }

/* ============ ⑫ 初めての方へ ============ */
.first{ background:var(--cream); text-align:center; padding:9rem 2rem; }
.first .en-script{ font-size:3.6rem; }
.first__txt{ max-width:66rem; margin:2.4rem auto 3.4rem; color:var(--ink-soft); line-height:2.2; }

/* ============ ⑬ News ============ */
.news{ background:var(--white); text-align:center; padding:8rem 2rem; }
.news__head{ margin-bottom:3.4rem; }
.news__list{ max-width:82rem; margin:0 auto; text-align:left; }
.news__list li{ display:flex; align-items:center; gap:2rem; padding:2.2rem .6rem; border-bottom:1px solid var(--line); font-size:1.45rem; }
.news__list time{ color:var(--gold-d); letter-spacing:.08em; flex:none; }
.news__list .cat{ font-size:1.1rem; letter-spacing:.14em; color:var(--brown); border:1px solid var(--line); padding:.3rem 1.2rem; border-radius:999px; flex:none; }
.news__list a{ transition:.2s; }
.news__list a:hover{ color:var(--gold-d); }

/* ============ ⑭ Calendar ============ */
.calendar{ background:var(--gray); padding:8rem 6rem; }
.calendar__head{ text-align:center; margin-bottom:4rem; }
.calendar__cols{ display:grid; grid-template-columns:1.15fr .85fr; gap:5rem; max-width:120rem; margin:0 auto; align-items:start; }
.calendar__time table{ width:100%; border-collapse:collapse; background:#fff; font-size:1.4rem; }
.calendar__time th,.calendar__time td{ border:1px solid var(--line); padding:1.4rem .5rem; text-align:center; }
.calendar__time thead th{ background:var(--brown); color:#fff; font-weight:500; letter-spacing:.06em; }
.calendar__time thead th.sat{ color:#cfe0e8; } .calendar__time thead th.sun{ color:#f0c9c9; }
.calendar__time tbody th{ background:var(--cream); font-weight:500; white-space:nowrap; }
.calendar__time td{ font-size:1.6rem; color:var(--brown); }
.calendar__time td.sat{ color:#5b7f93; } .calendar__time td.sun{ color:#b06a6a; } .calendar__time td.thu{ color:#b0a6a0; }
.calendar__note{ margin-top:1.4rem; font-size:1.25rem; color:var(--ink-soft); }
.calendar__info{ margin-top:2.6rem; }
.calendar__info>div{ display:flex; gap:1.6rem; padding:1.2rem 0; border-bottom:1px dashed var(--line); font-size:1.4rem; }
.calendar__info dt{ flex:none; width:8rem; color:var(--gold-d); font-weight:500; letter-spacing:.1em; margin:0; }
.calendar__info dd{ margin:0; }
.calendar__month{ background:#fff; padding:3rem; border:1px solid var(--line); }
.calendar__month-ttl{ font-family:"Noto Serif JP",serif; font-size:2rem; color:var(--brown); text-align:center; margin-bottom:1.8rem; letter-spacing:.1em; }
.cal-grid{ width:100%; border-collapse:collapse; }
.cal-grid th,.cal-grid td{ text-align:center; padding:1rem .2rem; font-size:1.35rem; }
.cal-grid thead th{ color:var(--ink-soft); font-weight:500; border-bottom:1px solid var(--line); }
.cal-grid thead th.sun{ color:#b06a6a; } .cal-grid thead th.sat{ color:#5b7f93; }
.cal-grid td.rest{ color:#c99; position:relative; }
.cal-grid td.rest::after{ content:"休"; position:absolute; right:.4rem; bottom:.1rem; font-size:.9rem; color:#c99; }
.cal-grid td.today{ background:var(--gold); color:#fff; border-radius:50%; }
.calendar__legend{ margin-top:1.6rem; font-size:1.2rem; color:var(--ink-soft); display:flex; align-items:center; gap:.8rem; }
.calendar__legend .dot{ width:1.2rem; height:1.2rem; border-radius:50%; background:#e8cfcf; display:inline-block; }

/* ============ ⑮⑯ Group / Partnership ============ */
.group{ background:var(--brown); padding:9rem 6rem; }
.partner{ background:var(--brown-d); padding:9rem 6rem 11rem; }
.group__head{ text-align:center; margin-bottom:5rem; }
.group__slider{ max-width:128rem; margin:0 auto; }         /* レイアウトはSplideが担当 */
.partner__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:2.4rem; max-width:88rem; margin:0 auto; }
.group__card{ background:var(--cream); overflow:hidden; }
.group__card img{ width:100%; height:20rem; object-fit:cover; transition:.6s; }
.group__card:hover img{ transform:scale(1.06); }
.group__card div{ padding:2rem 2.2rem; }
.group__card b{ font-family:"Noto Serif JP",serif; font-size:1.6rem; color:var(--brown); letter-spacing:.04em; display:block; }
.group__card span{ font-size:1.25rem; color:var(--ink-soft); margin-top:.6rem; display:block; }

/* ============ フッター ============ */
.footer{ background:var(--brown-dd); color:rgba(255,255,255,.82); padding:7rem 6rem 4rem; }
.footer__top{ display:flex; justify-content:space-between; gap:4rem; flex-wrap:wrap; max-width:120rem; margin:0 auto; }
.footer__brand .hdr__logo{ color:#fff; }
.footer__addr{ margin-top:2rem; font-size:1.3rem; line-height:2; }
.footer__sns{ display:flex; gap:1.4rem; margin-top:2rem; }
.footer__sns a{ width:4.4rem; height:4.4rem; border:1px solid rgba(255,255,255,.3); border-radius:50%; display:grid; place-items:center; transition:.25s; }
.footer__sns a:hover{ background:var(--gold); border-color:var(--gold); }
.footer__sns svg{ width:2rem; height:2rem; color:#fff; }
.footer__nav{ display:flex; gap:5rem; }
.footer__nav a{ display:block; padding:.8rem 0; font-size:1.35rem; transition:.2s; }
.footer__nav a:hover{ color:var(--gold); }
.footer__note{ max-width:120rem; margin:5rem auto 0; padding-top:3rem; border-top:1px solid rgba(255,255,255,.12); font-size:1.2rem; color:rgba(255,255,255,.6); text-align:center; }
.footer__note strong{ color:var(--gold); }
.footer__copy{ text-align:center; margin-top:2rem; font-size:1.1rem; letter-spacing:.2em; color:rgba(255,255,255,.5); }

/* ============================================================
   上品な微フェードアップ（テロップ演出・控えめ・1回だけ）
   - JSが .js-reveal を付けた時だけ有効（JS無効でも文字は必ず表示）
   - prefers-reduced-motion では動かさず即表示（医療サイト配慮）
   ============================================================ */
.js-reveal .reveal{
  opacity:0; transform:translateY(2rem);
  transition:opacity .9s ease, transform 1.05s cubic-bezier(.2,.65,.3,1);
  will-change:opacity, transform;
}
.js-reveal .reveal.is-in{ opacity:1; transform:none; }

/* サービスカード等：少し大きめに"フワッと浮く"（グリッド内で行ごとに軽くstagger） */
.js-reveal .reveal-card{
  opacity:0; transform:translateY(2.6rem);
  transition:opacity .8s ease, transform .9s cubic-bezier(.2,.65,.3,1);
  will-change:opacity, transform;
}
.js-reveal .reveal-card.is-in{ opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce){
  .js-reveal .reveal,
  .js-reveal .reveal-card{ opacity:1 !important; transform:none !important; transition:none !important; }
}

/* ============================================================
   レスポンシブ（767px以下）
   ============================================================ */
@media (max-width:767px){
  body{ font-size:1.5rem; }
  .en-script{ font-size:3.8rem; }
  .ja-h{ font-size:2.5rem; }
  .hdr{ padding:1.4rem 1.4rem; }
  .hdr__name b{ font-size:1.5rem; } .hdr__name em{ font-size:.85rem; }
  .hdr__menu{ width:5.6rem; height:5.6rem; }
  .side-reserve{ padding:1.8rem .9rem; font-size:1.2rem; }

  .drawer__inner{ width:86%; max-height:86vh; overflow:auto; }
  .drawer__en{ font-size:4.2rem; margin-bottom:2rem; }
  .drawer__cols{ grid-template-columns:1fr; gap:2rem; }
  .drawer__cta{ gap:1.6rem; }

  .hero__catch{ font-size:3.2rem; line-height:1.8; }
  .hero__lead{ font-size:1.2rem; }

  .subnav ul{ gap:1.4rem 2.4rem; padding:1.8rem 1.4rem; }

  /* 2カラム → 1カラム縦積み */
  .point,.staff,.feature-row,.message,.promise,.calendar__cols{ grid-template-columns:1fr; }
  .point__panel,.staff__body,.feature-row__body,.message__body,.promise{ padding:5.5rem 2.4rem; }
  .point__photo,.staff__photo{ clip-path:none; min-height:26rem; }
  .feature-row.reverse .feature-row__photo{ order:0; }
  .feature-row__photo{ min-height:26rem; }
  .staff__photo{ order:-1; }
  .promise{ gap:3rem; }
  .promise__head .ja-vert{ font-size:2.8rem; }
  .promise__list img{ width:11rem; height:8rem; }
  .promise__list b{ font-size:1.8rem; }
  .message__photo{ min-height:36rem; }

  .menu,.feature,.group,.partner,.calendar{ padding:6rem 2rem; }
  .menu__grid{ grid-template-columns:repeat(2,1fr); gap:1.2rem; }
  .menu__card img{ height:15rem; }
  .menu__card b{ font-size:1.5rem; }

  .feature__list li{ grid-template-columns:1fr; gap:1.6rem; padding:3.4rem 0; }
  .feature__no{ font-size:4.8rem; }
  .feature__photo img{ height:20rem; }

  .news__list li{ flex-wrap:wrap; gap:1rem; }
  .calendar__cols{ gap:3rem; }
  .calendar__month{ padding:2rem; }

  /* 提携：スマホは縦積み（グループはSplideカルーセルのまま） */
  .partner__grid{ display:block; }
  .partner__grid .group__card{ margin-bottom:2rem; }

  .footer{ padding:5rem 2rem 3rem; }
  .footer__top{ flex-direction:column; gap:3rem; }
  .footer__nav{ gap:3rem; }
}
