@charset "UTF-8";
/*
 * ======================================
 * 追加クラス一覧（共通SCSS取り込み検討用）
 * ======================================
 *
 * -- ヘッダー / フッター --------------------------------------------------
 * .tao-header                 - 静止型（fixedでない）2段ヘッダー本体
 * .tao-header__accent         - ヘッダー最上部 5px のグラデーション帯
 * .tao-header__top            - ロゴ＋電話＋SNS＋CTAの1段目
 * .tao-header__logo           - 画像ロゴ＋キャッチの横並びロゴ
 * .tao-header__tagline        - ロゴ横の小さなキャッチ
 * .tao-header__telbox         - TELラベル＋番号の縦積み
 * .tao-header__tel-label      - 「TEL」の英字ラベル
 * .tao-header__tel            - ヘッダー電話番号（アイコンなし・Josefin）
 * .tao-header__sns            - ヘッダーSNS丸ボタン群
 * .tao-header__cta            - pill型のヘッダーCTA
 * .tao-header__navrow         - グローバルナビ行（上境界線付き）
 * .tao-header__nav            - ナビ中央寄せ・gap指定
 * .tao-header__nav-item       - JA上／EN下のナビ項目。currentでグラデ下線
 * .nav-toggle--tao            - 角丸白ベースのハンバーガーボタン（MENUラベル付き）
 * .nav-toggle__label          - ハンバーガーボタン下の「MENU」ラベル
 * .sp-nav--tao                - 白背景のSPナビ（ロゴ中央＋EN上／JA下の縦積みメニュー）
 * .sp-nav__logo               - SPナビ最上部の中央ロゴ
 * .sp-nav__ja                 - SPナビ項目の日本語ラベル
 * .sp-nav__note               - SPナビ下部の営業時間注記
 * .tao-sns-circle             - 円形SNSアイコンボタン（--lg で42px）
 * .tao-sns-pill               - 「Googleマップ」等のpill型リンク
 * .tao-cta                    - グラデーション背景（流れるアニメ）のCTA帯
 * .tao-cta__en / __title / __desc / __tel / __mail - CTA内の各要素
 * .tao-footer                 - 淡い水色背景のフッター
 * .tao-footer__inner          - 左情報／右マップの2カラム（52:44）
 * .tao-footer__dl             - フッター内の定義リスト
 * .tao-footer__bottom         - サイトマップ＋コピーライト行
 *
 * -- 汎用パーツ -----------------------------------------------------------
 * .tao-band                   - 淡い青（#EEF8FF）のセクション帯
 * .tao-section-top            - 波線直後セクションの上余白調整
 * .tao-wave                   - 波線ディバイダー（--up/--onmv/--from-section/--to-section）
 * .tao-dl                     - ラベル左／内容右の情報リスト（--sm / --line）
 * .tao-more                   - 「詳しく見る →」テキストリンク（矢印スライド）
 * .tao-pagehero               - 下層ページのグラデーションヒーロー
 * .tao-pagehero--split        - 右にビジュアルを置く分割ヒーロー
 * .tao-breadcrumb             - ヒーロー内パンくず
 * .tao-lead                   - 大きめリード文
 * .tao-subhead                - 見出し下のサブ見出し（青・太字）
 * .tao-note                   - 注記テキスト
 * .tao-panel                  - 白パネル（--border / --plain / --accent）
 * .tao-check                  - チェックボックス付きリスト
 * .tao-dot-list               - 小さな丸ドット付きリスト（--2col / --lemon）
 * .tao-cta-box                - グラデーション背景の問い合わせ誘導ボックス
 * .tao-table                  - th左・角丸枠のデータテーブル（--outline）
 *
 * -- TOPページ ------------------------------------------------------------
 * .tao-mv ほか                - メインビジュアル一式
 * .tao-feature                - 円形の特徴カード（9項目）
 * .tao-start                  - 要支援限定コースの枠付きパネル
 * .tao-voice                  - 吹き出し風のお客様の声リスト
 * .tao-tl                     - 縦線＋ドットのタイムスケジュール
 * .tao-service                - 3事業カード
 * .tao-news                   - お知らせリストの見た目調整
 * .tao-access                 - 情報リスト＋地図の2カラム
 *
 * -- 下層ページ -----------------------------------------------------------
 * .tao-machine                - マシン紹介（写真左・テキスト右）
 * .tao-media                  - 写真＋テキストの左右交互ブロック（--reverse）
 * .tao-flowcard               - 番号バッジが飛び出すフローカード
 * .tao-flowrow                - 番号＋写真＋テキストの縦フロー
 * .tao-steps                  - 縦線＋ドットのステップリスト
 * .tao-reason                 - 選ばれる理由カード（テキスト左・イラスト右）
 * .tao-svc-card               - アイコン付きサービスカード
 * .tao-online-flow            - オンライン相談の5ステップ
 * .tao-recommend              - おすすめ2列＋中央イラスト
 * .tao-form                   - お問い合わせフォーム
 * .tao-tel-cta                - 電話番号の大きな枠ボタン
 * .tao-sns-cta                - LINE / Instagram の横並びCTA
 * .tao-blog                   - お知らせ一覧（抜粋付き）
 * .tao-side                   - サイドバーのウィジェット
 * .tao-entry                  - 記事本文
 * .tao-entry-nav              - 前後記事＋一覧へ
 *
 * ======================================
 * 共通SCSSに不足していたもの
 * ======================================
 *
 * ◆ 構造不足
 *   - 2段組ヘッダー（1段目に情報、2段目にナビ）の骨組み。header__inner は
 *     1段固定のため、ナビ行を別要素として site.css 側で組んだ。
 *   - 「時刻／縦線＋ドット／内容」の3カラム型タイムスケジュール。
 *     timeline は flex 1列＋点線のため、縦線とドットが表現できない。
 *   - 番号バッジがカード上端から飛び出すフローカード（card-flow は
 *     カード内に番号を置く構造）。
 *   - ラベル列＋内容列の dl（table-basic--th-side はテーブル専用）。
 *
 * ◆ 装飾パターン不足
 *   - 上向き（セクション上端）の波線。wave-divider は下向き前提。
 *   - グラデーション（#24B3FD→#24B3FD→#0E9BE0）を背景に流すアニメーション帯。
 *   - 円形に切り抜いた写真＋グラデーション見出し帯の複合カード。
 *
 * ◆ 値の粒度不足
 *   - font-size: 13px / 15px / 17px / 19px / 21px / 26px / 34px の刻み。
 *   - gap / padding の 24px・26px・28px・32px・34px・44px・56px の刻み。
 *
 * ◆ 状態不足
 *   - hover 時に矢印だけを右へスライドさせる指定（.tao-more で対応）。
 *
 * ◆ 指定方向不足
 *   - grid のカラム比率指定（1.05fr / .95fr 等）。grid-2/3/4 は等幅のみ。
 *
 */

/* ==========================================================================
   695918：ブランドグラデーションの色をラフ（color.png）の指定に合わせる
   #fafdda → #c4f8ef → #24b3fd の淡い配色。
   角度は箇所ごとに異なるため、色の並びだけを変数化して各所で使い回す。
   淡色のためグラデーション上の文字・アイコンは白ではなく濃紺を使う。
   ========================================================================== */
:root {
  /* ラフに合わせ、青（#24B3FD）の占める割合を大きめにする
     （クリーム→水色を左寄せで早めに切り替え、右側の青を広く取る） */
  --tao-grad-stops: #FAFDDA 0%, #C4F8EF 20%, #24B3FD 72%;
  --tao-grad-stops-rev: #24B3FD 0%, #C4F8EF 80%, #FAFDDA 100%;
  --tao-on-grad: #14323F;
}

/* ==========================================================================
   0. サイト共通のベース調整
   ========================================================================== */
body {
  text-wrap: pretty;
}

.font-en {
  font-family: "Josefin Sans", sans-serif;
}

/* container の左右余白（デザイン基準：コンテンツ1200px ＋ 左右24px） */
.container {
  max-width: 1248px;
}
.container,
.container-wide,
.container-narrow {
  padding-left: 24px;
  padding-right: 24px;
}
@media (max-width: 639px) {
  .container,
  .container-wide,
  .container-narrow {
    padding-left: 18px;
    padding-right: 18px;
  }
}

/* セクション幅バリエーション */
/* SP（639px以下）でのみ改行させる <br class="br-sp"> */
.br-sp { display: none; }
@media (max-width: 639px) {
  .br-sp { display: inline; }
}
/* 691097：PC（640px以上）でのみ改行させる <br class="br-pc">
   本文リードの固定改行はPC幅を基準に置いているため、SPではそのまま流し込んで
   画面幅に合わせて自然に折り返させる（依頼「3．改行の修正 全体的に区切りが悪い」） */
.br-pc { display: inline; }
@media (max-width: 639px) {
  .br-pc { display: none; }
}

/* 691097：日本語の折返しを文節単位にする（依頼「3．改行の修正 全体的に区切りが悪い」）
   自動折返しが単語の途中で切れて区切りが不自然になるため、見出し・リード・本文に
   文節優先の改行を適用する。auto-phrase 未対応ブラウザは従来どおりの折返しになる */
h1, h2, h3, h4, p, li, dt, dd, th, td, figcaption,
.heading__ja, .tao-lead, .tao-lead-text, .tao-subhead, .sentence {
  word-break: auto-phrase;
  line-break: strict;
}

.tao-w1000 { max-width: 1048px; }
.tao-w1080 { max-width: 1128px; }
.tao-w1120 { max-width: 1168px; }
.tao-w1180 { max-width: 1228px; }

/* 波線直後のセクションは上余白を詰める */
.tao-section-top {
  padding-top: 20px;
}

/* 淡い水色のセクション帯 */
.tao-band {
  background: #EEF8FF;
}

/* ---- 波線ディバイダー ---- */
.tao-wave {
  margin-bottom: -1px;
}
.tao-wave svg {
  height: 70px;
}
.tao-wave--up {
  margin-bottom: 0;
}
.tao-wave--up svg {
  height: 60px;
}
.tao-wave--onmv {
  position: absolute;
  right: 0;
  bottom: -1px;
  left: 0;
  z-index: 3;
  margin-bottom: 0;
}
.tao-wave--from-section {
  background: #EEF8FF;
}
.tao-wave--to-section {
  background: #FEFEFE;
}
@media (max-width: 639px) {
  .tao-wave svg,
  .tao-wave--up svg {
    height: 40px;
  }
}

/* ---- セクション見出し（heading コンポーネントの微調整） ---- */
.heading--left .heading__en {
  display: block;
  margin-bottom: 10px;
  line-height: 1;
}
.heading--left .heading__ja {
  margin-top: 0;
  letter-spacing: 0.02em;
}

/* ---- 「詳しく見る →」 ---- */
.tao-more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #01739F;
  font-size: 1.5rem;
  font-weight: 700;
  text-decoration: none;
}
.tao-more::after {
  content: "→";
  transition: transform 0.3s ease;
}
a:hover .tao-more::after,
.tao-more:hover::after {
  transform: translateX(5px);
}
.tao-more:hover {
  opacity: 1;
}

/* ---- 情報リスト（dl） ---- */
.tao-dl {
  display: grid;
  grid-template-columns: 120px 1fr;
  row-gap: 18px;
  column-gap: 20px;
  margin: 0;
  font-size: 1.6rem;
  line-height: 1.9;
}
.tao-dl dt {
  font-weight: 700;
  color: #01739F;
}
.tao-dl dd {
  margin: 0;
}
.tao-dl__note {
  display: inline-block;
  color: #5B7C88;
  font-size: 1.5rem;
}
.tao-dl--sm {
  grid-template-columns: auto 1fr;
  row-gap: 8px;
  column-gap: 14px;
  font-size: 1.4rem;
  line-height: 1.8;
}
.tao-dl--line {
  grid-template-columns: 180px 1fr;
  row-gap: 0;
  column-gap: 0;
}
.tao-dl--line dt,
.tao-dl--line dd {
  padding: 18px 0;
  border-top: 1px solid #E4F1F6;
}
.tao-dl--line dt:last-of-type,
.tao-dl--line dd:last-of-type {
  border-bottom: 1px solid #E4F1F6;
}
@media (max-width: 639px) {
  .tao-dl,
  .tao-dl--line {
    grid-template-columns: 1fr;
    row-gap: 4px;
    font-size: 1.4rem;
  }
  .tao-dl--line dt {
    padding: 14px 0 0;
  }
  .tao-dl--line dd {
    padding: 0 0 14px;
    border-top: none;
  }
  .tao-dl--line dt:last-of-type {
    border-bottom: none;
  }
}

/* ---- 円形SNSボタン ---- */
.tao-sns-circle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 1px solid #C7E9F5;
  border-radius: 50%;
  background: #FEFEFE;
  color: #01739F;
  font-size: 1.7rem;
  text-decoration: none;
  transition: background 0.3s ease;
}
.tao-sns-circle:hover {
  background: #EAF8FD;
  opacity: 1;
}
.tao-sns-circle--lg {
  width: 42px;
  height: 42px;
  font-size: 1.9rem;
}
.tao-sns-pill {
  display: flex;
  align-items: center;
  height: 42px;
  padding: 0 16px;
  border: 1px solid #C7E9F5;
  border-radius: 21px;
  background: #FEFEFE;
  color: #01739F;
  font-size: 1.4rem;
  font-weight: 700;
  text-decoration: none;
  transition: background 0.3s ease;
}
.tao-sns-pill:hover {
  background: #EAF8FD;
  opacity: 1;
}

/* ==========================================================================
   1. ヘッダー
   ========================================================================== */
.tao-header {
  position: relative;
  background: #FEFEFE;
  border-bottom: 1px solid #E4F1F6;
}
.tao-header__accent {
  height: 5px;
  background: linear-gradient(100deg, var(--tao-grad-stops));
}
.tao-header__top {
  max-width: 1248px;
  height: auto;
  padding: 14px 24px;
  gap: 24px;
}
.tao-header__logo {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
}
.tao-header__logo img {
  width: 200px;
  height: auto;
}
.tao-header__tagline {
  color: #4A6C78;
  font-size: 1.2rem;
  line-height: 1.6;
  letter-spacing: 0.04em;
}
.tao-header__right {
  gap: 22px;
  height: auto;
}
.tao-header__telbox {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.tao-header__tel-label {
  color: #01739F;
  font-size: 1.1rem;
  letter-spacing: 0.18em;
  line-height: 1;
}
.tao-header__tel {
  color: #14323F;
  font-size: 2.6rem;
  line-height: 1;
}
.tao-header__tel::before {
  content: none;
}
.tao-header__sns {
  display: flex;
  align-items: center;
  gap: 10px;
}
.tao-header__cta {
  flex-direction: row;
  gap: 8px;
  height: 52px;
  padding: 0 26px;
  border-radius: 26px;
  background: #01739F;
  color: #fff;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  white-space: nowrap;
  box-shadow: 0 6px 18px rgba(11, 133, 184, 0.24);
}
.tao-header__cta:hover {
  background: #015E80;
}

.tao-header__navrow {
  border-top: 1px solid #EEF7FA;
  background: #FEFEFE;
}
/* スクロール追従（common.js が .is-fixed を付与。1101px以上のみ動作） */
.tao-header__navrow.is-fixed {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 120;
  border-top-color: transparent;
  border-bottom: 1px solid #E4F1F6;
  box-shadow: 0 4px 16px rgba(11, 106, 144, 0.1);
  animation: taoNavDown 0.3s ease both;
}
@keyframes taoNavDown {
  from { transform: translateY(-100%); }
  to   { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .tao-header__navrow.is-fixed { animation: none; }
}
/* 追従ナビがアンカー先に被らないように（ナビが出るPC幅のみ） */
@media (min-width: 1101px) {
  section[id],
  [id].section {
    scroll-margin-top: 72px;
  }
}
.tao-header__nav {
  justify-content: center;
  max-width: 1248px;
  margin: 0 auto;
  padding: 0 24px;
  /* 画面幅に応じて間隔を可変に。ナビが出る1101px以上でも折り返さない範囲で最大まで広げる */
  gap: clamp(30px, 3.2vw, 60px);
}
.tao-header__nav-item {
  position: relative;
}
.tao-header__nav-item a {
  gap: 3px;
  padding: 16px 6px;
  white-space: nowrap;
}
.tao-header__nav-item a::after {
  display: none;
}
.tao-header__nav-item .header__nav-ja {
  margin-top: 0;
  color: #14323F;
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.4;
  transition: color 0.3s ease;
}
.tao-header__nav-item .header__nav-en {
  color: #8FAFBA;
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: 0.16em;
}
.tao-header__nav-item a:hover .header__nav-ja {
  color: #01739F;
}
.tao-header__nav-item.is-current::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: 0;
  left: 14px;
  height: 4px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--tao-grad-stops));
}

@media (max-width: 1100px) {
  .tao-header__top {
    padding: 12px 16px;
  }
  .tao-header__logo img {
    width: 150px;
  }
  .tao-header__tagline {
    display: none;
  }
  .tao-header__navrow {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   ハンバーガーボタン（--tao：3本線＋MENUラベル）
   -------------------------------------------------------------------------- */
.nav-toggle--tao {
  top: 10px;
  right: 10px;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: rgba(254, 254, 254, 0.86);
  box-shadow: 0 8px 24px rgba(11, 106, 144, 0.08);
}
.nav-toggle--tao .nav-toggle__line {
  width: 24px;
  height: 2px;
  border-radius: 2px;
  background: #0B6A90;
}
.nav-toggle--tao .nav-toggle__line:nth-child(1) {
  top: 15px;
}
.nav-toggle--tao .nav-toggle__line:nth-child(2) {
  top: 22px;
}
.nav-toggle--tao .nav-toggle__line:nth-child(3) {
  top: 29px;
}
.nav-toggle--tao.is-active .nav-toggle__line:nth-child(1),
.nav-toggle--tao.is-active .nav-toggle__line:nth-child(3) {
  top: 20px;
  width: 26px;
}
.nav-toggle--tao.is-active .nav-toggle__line:nth-child(1) {
  transform: translateX(-50%) rotate(45deg);
}
.nav-toggle--tao.is-active .nav-toggle__line:nth-child(3) {
  transform: translateX(-50%) rotate(-45deg);
}
.nav-toggle__label {
  position: absolute;
  right: 0;
  bottom: 8px;
  left: 0;
  color: #0B6A90;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.14em;
  text-align: center;
}
.nav-toggle--tao.is-active {
  background: transparent;
  box-shadow: none;
}

/* --------------------------------------------------------------------------
   SPナビ（--tao：白背景・ロゴ中央・EN上／JA下の縦積みメニュー）
   -------------------------------------------------------------------------- */
.sp-nav--tao {
  justify-content: flex-start;
  padding: 84px 24px 40px;
  background: linear-gradient(180deg, #FEFEFE 0%, #EEF8FF 100%);
}
.sp-nav__logo {
  width: 100%;
  margin-bottom: 30px;
  text-align: center;
  opacity: 0;
  transform: translateY(14px);
  transition: 0.4s ease;
}
.sp-nav__logo img {
  width: 168px;
  height: auto;
}
.sp-nav--tao.is-open .sp-nav__logo {
  opacity: 1;
  transform: translateY(0);
  transition-delay: 0.08s;
}
.sp-nav--tao .sp-nav__list {
  max-width: 340px;
}
.sp-nav--tao .sp-nav__item,
.sp-nav--tao .sp-nav__item:first-child {
  border: none;
}
.sp-nav--tao .sp-nav__link {
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 13px 10px;
  color: #14323F;
}
.sp-nav--tao .sp-nav__link::after {
  display: none;
}
.sp-nav--tao .sp-nav__link:hover {
  background: transparent;
}
.sp-nav--tao .sp-nav__en {
  margin: 0;
  padding: 0;
  color: #4FC4E8;
  font-size: 1.4rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.18em;
  opacity: 1;
}
.sp-nav--tao .sp-nav__ja {
  color: #14323F;
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.5;
  transition: color 0.3s ease;
}
.sp-nav--tao .sp-nav__link:hover .sp-nav__ja,
.sp-nav--tao .sp-nav__item.is-current .sp-nav__ja {
  color: #01739F;
}

/* SPナビ下部 */
.sp-nav--tao .sp-nav__bottom {
  max-width: 340px;
  margin-top: auto;
  padding-top: 26px;
  border-top: 1px solid #E4F1F6;
}
.sp-nav__bottom .btn-cta-tel {
  font-size: 2.6rem;
}
.sp-nav__note {
  color: #5B7C88;
}

@media (max-width: 639px) {
  .sp-nav--tao {
    padding: 76px 20px 32px;
  }
  .sp-nav__logo {
    margin-bottom: 22px;
  }
  .sp-nav__logo img {
    width: 140px;
  }
  .sp-nav--tao .sp-nav__link {
    padding: 11px 10px;
  }
}

/* ==========================================================================
   2. お問い合わせCTA帯
   ========================================================================== */
.tao-cta {
  padding: 56px 24px;
  overflow: hidden;
}
.tao-cta::before {
  background: linear-gradient(100deg, var(--tao-grad-stops));
  background-size: 260% 100%;
  animation: taoFooterFlow 18s ease-in-out infinite;
}
@keyframes taoFooterFlow {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@media (prefers-reduced-motion: reduce) {
  .tao-cta::before { animation: none; }
}
.tao-cta .footer-cta__inner {
  grid-template-columns: 1fr auto;
  max-width: 1000px;
  gap: 32px;
}
.tao-cta .tao-cta__en {
  margin-bottom: 8px;
  color: #0B6A90;
  font-size: 1.3rem;
  font-weight: 400;
  letter-spacing: 0.2em;
  text-align: left;
}
.tao-cta__title {
  color: #14323F;
  font-size: 2.6rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.02em;
}
.tao-cta .tao-cta__desc {
  margin-top: 12px;
  color: #134D66;
  font-size: 1.4rem;
}
.tao-cta .footer-cta__right {
  gap: 12px;
}
.tao-cta__tel {
  justify-content: center;
  height: 64px;
  padding: 0 34px;
  border-radius: 32px;
  background: #FEFEFE;
  color: #14323F;
  font-size: 2.8rem;
  white-space: nowrap;
}
.tao-cta__tel::before {
  color: #01739F;
  font-size: 0.62em;
}
.tao-cta__mail {
  max-width: none;
  width: auto;
  height: 56px;
  padding: 0 34px;
  border-radius: 28px;
  background: #01739F;
  color: #fff;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.tao-cta__mail::before {
  display: none;
}
.tao-cta__mail:hover {
  background: #015E80;
  color: #fff;
}
@media (max-width: 639px) {
  .tao-cta {
    padding: 40px 20px;
  }
  /* PC用の 1fr auto を打ち消して1カラムに。
     site.css が main.css より後に読み込まれるため、
     共通CSS側の1カラム指定（同詳細度）が効かない */
  .tao-cta .footer-cta__inner {
    grid-template-columns: 1fr;
    gap: 26px;
    padding: 0;
    text-align: center;
  }
  .tao-cta .tao-cta__en {
    text-align: center;
  }
  .tao-cta__title {
    font-size: 2rem;
  }
  .tao-cta .tao-cta__desc {
    font-size: 1.3rem;
  }
  .tao-cta .footer-cta__right {
    align-items: stretch;
    width: 100%;
    max-width: 340px;
    margin: 0 auto;
    gap: 10px;
  }
  /* ボタンは横幅いっぱい・改行させない */
  .tao-cta__tel,
  .tao-cta__mail {
    width: 100%;
    padding: 0 12px;
  }
  .tao-cta__tel {
    height: 58px;
    font-size: 2.3rem;
  }
  .tao-cta__mail {
    height: 52px;
    font-size: 1.5rem;
  }
}
@media (max-width: 374px) {
  .tao-cta__tel {
    font-size: 2rem;
  }
}

/* ==========================================================================
   3. フッター
   ========================================================================== */
.tao-footer {
  background: #EEF8FF;
}
.tao-footer__body {
  padding: 64px 0 48px;
}
.tao-footer__inner {
  gap: 56px;
  max-width: 1248px;
  padding: 0 24px;
  align-items: flex-start;
}
.tao-footer__left {
  width: 52%;
}
.tao-footer__right {
  width: 44%;
}
.tao-footer__logo {
  margin-bottom: 24px;
}
.tao-footer__logo img {
  width: 230px;
  height: auto;
}
.tao-footer__dl {
  display: grid;
  grid-template-columns: 92px 1fr;
  row-gap: 14px;
  column-gap: 16px;
  margin: 0;
  font-size: 1.5rem;
  line-height: 1.8;
}
.tao-footer__dl dt {
  color: #01739F;
  font-weight: 700;
}
.tao-footer__dl dd {
  margin: 0;
}
.tao-footer__note {
  color: #5B7C88;
  font-size: 1.4rem;
}
.tao-footer__sns {
  gap: 10px;
  margin-top: 26px;
}
.tao-footer__map {
  border: 1px solid #DCEEF5;
  border-radius: 24px;
}
.tao-footer__map iframe {
  height: 380px;
}
.tao-footer__bottom {
  padding: 0;
  border-top: 1px solid #E1EFF4;
  text-align: left;
}
.tao-footer__bottom-inner {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  padding: 20px 24px;
}
.tao-footer__nav {
  gap: 10px 20px;
}
.tao-footer__nav a {
  color: #5B7C88;
  font-size: 1.3rem;
}
.tao-footer__bottom .footer-bottom__copyright {
  color: #5B7C88;
  font-size: 1.3rem;
  letter-spacing: 0.04em;
}
@media (max-width: 896px) {
  .tao-footer__left,
  .tao-footer__right {
    width: 100%;
  }
  .tao-footer__map iframe {
    height: 260px;
  }
}
@media (max-width: 639px) {
  .tao-footer__dl {
    grid-template-columns: 1fr;
    row-gap: 4px;
    font-size: 1.4rem;
  }
  /* SPではフッターナビを非表示（ハンバーガーメニューで代替） */
  .tao-footer__nav {
    display: none;
  }
  .tao-footer__bottom-inner {
    justify-content: center;
    text-align: center;
  }
}

/* ==========================================================================
   4. TOP：メインビジュアル
   ========================================================================== */
.tao-mv {
  position: relative;
  height: 88vh;
  min-height: 640px;
  overflow: hidden;
  background: #0B2A36;
}
/* MVスライダーCMS（#slideshow / #cms-slider-1-1-area）差し替え対応
   CMSは #cms-slider-1-1-area 内に下記構造を挿入し、Swiper を初期化する：
     .slider_wrapper > .main_slider__outer > .main_slider
       > .swiper-wrapper > .swiper-slide > .main_slider__inner > img
   ・.swiper-slide / .main_slider__inner に position を当てると Swiper の
     レイアウト計算が壊れるため、こちらからは「高さ100%の追従」だけを指定する
   ・CMS側が .main_slider__outer に z-index:1 を付けるため、__media 自身に
     z-index を与えて重なり文脈を閉じ、veil / fade / コピーが
     スライダー画像の下に潜らないようにする */
.tao-mv__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  height: 100%;
  overflow: hidden;
  /* CMSスライダーの初期化前・読み込み失敗時のフォールバック（初期化後は上に重なる） */
  background: url("https://ros-cdn.s3.ap-northeast-1.amazonaws.com/hp/img/ros_keiyaku/28463/mv1.jpg") center center / cover no-repeat;
}
.tao-mv__media #cms-slider-1-1-area,
.tao-mv__media .slider_wrapper,
.tao-mv__media .main_slider__outer,
.tao-mv__media .main_slider,
.tao-mv__media .swiper-wrapper,
.tao-mv__media .swiper-slide,
.tao-mv__media .main_slider__inner {
  height: 100%;
}
.tao-mv__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* 691097：TOPページ写真のグラデーションを外す（依頼「1．TOPページ写真 グラデーションなし」）
   要素自体は残し、色かぶりのみ無くす */
.tao-mv__veil {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: none;
}
/* 691097：MV写真にかかっていた白いもや（左からの白グラデーション）を削除。
   要素自体は残し、覆いのみ無くす */
.tao-mv__fade {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: none;
}
/* 695918：MVのキャッチコピー削除に伴い、アイコンボタンを右下に配置する
   （下端は波型ディバイダに重ならないよう padding-bottom で逃がす） */
.tao-mv__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 28px;
  height: 100%;
  /* 695918：アイコンボタンを画面右端まで寄せるため、
     max-width の制限を外して画面幅いっぱいで右寄せする */
  max-width: none;
  margin: 0 auto;
  padding: 0 50px 110px;
}
/* 691097：写真に重なって読みにくいため、文字影ではなくキャッチコピー
   （.tao-mv__copy-line）と同じ白帯を敷いて視認性を確保する */
.tao-mv__en {
  display: flex;
  align-items: flex-start;
  margin: 0;
}
.tao-mv__en-line {
  display: inline-block;
  padding: 6px 14px;
  background: #FEFEFE;
  color: #0B6A90;
  font-size: 1.4rem;
  font-weight: 600;
  line-height: 1.4;
}
.tao-mv__copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
}
.tao-mv__copy-line {
  display: inline-block;
  padding: 10px 22px;
  background: #FEFEFE;
  color: #14323F;
  font-size: 4.6rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: 0.01em;
}
/* 691097：同上。1行ずつ白帯を敷くため .tao-mv__copy と同じ縦並びフレックスにする */
.tao-mv__sub {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  max-width: 620px;
  margin: 0;
}
.tao-mv__sub-line {
  display: inline-block;
  padding: 6px 16px;
  background: #FEFEFE;
  color: #14323F;
  font-size: 1.7rem;
  font-weight: 500;
  line-height: 1.7;
}
.tao-mv__badges {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}
.tao-mv__badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  /* 695918：表示サイズを少し大きく（152→180px） */
  width: 180px;
  height: 180px;
  border-radius: 50%;
  background: linear-gradient(150deg, var(--tao-grad-stops));
  box-shadow: 0 10px 26px rgba(11, 106, 144, 0.22);
  color: var(--tao-on-grad);
  font-size: 1.6rem;
  font-weight: 700;
  line-height: 1.6;
  text-align: center;
  text-decoration: none;
  transition: filter 0.3s ease;
}
.tao-mv__badge:hover {
  filter: brightness(1.06);
  opacity: 1;
}
.tao-mv__badge img {
  width: 60px;
  height: 60px;
  object-fit: contain;
  /* 695918：背景が淡い配色に戻ったため、アイコンは白ではなく濃紺相当にする。
     brightness(0) で黒に統一（透過部分はそのまま） */
  filter: brightness(0) opacity(0.85);
}
/* 695918：SCROLL表示を右下から左下へ移動（右下はアイコンボタンを配置するため） */
.tao-mv__scroll {
  position: absolute;
  left: 46px;
  bottom: 84px;
  z-index: 4;
  padding-bottom: 62px;
  color: #0B6A90;
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  writing-mode: vertical-rl;
  text-decoration: none;
}
.tao-mv__scroll::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 1px;
  height: 54px;
  background: #0B6A90;
  animation: taoScroll 2.2s ease-in-out infinite;
  transform-origin: top center;
}
@keyframes taoScroll {
  0%   { transform: scaleY(0); opacity: 0; }
  40%  { transform: scaleY(1); opacity: 1; }
  100% { transform: scaleY(1); opacity: 0; }
}
@media (max-width: 1100px) {
  .tao-mv {
    height: 72vh;
    min-height: 520px;
  }
  .tao-mv__inner {
    padding: 0 24px 90px;
    gap: 22px;
  }
  .tao-mv__copy-line {
    padding: 6px 14px;
    font-size: 3rem;
  }
  .tao-mv__sub-line {
    padding: 5px 12px;
    font-size: 1.5rem;
  }
  .tao-mv__badges {
    gap: 10px;
  }
  .tao-mv__badge {
    width: 146px;
    height: 146px;
    font-size: 1.4rem;
  }
  .tao-mv__badge img {
    width: 46px;
    height: 46px;
  }
  .tao-mv__scroll {
    display: none;
  }
}
@media (max-width: 639px) {
  .tao-mv {
    height: 78vh;
    min-height: 480px;
  }
  /* キャッチコピーは1行のため、SPでも折り返さないサイズに抑える */
  .tao-mv__copy-line {
    padding: 5px 10px;
    font-size: 2rem;
  }
  .tao-mv__en-line {
    padding: 5px 10px;
    font-size: 1.2rem;
  }
  .tao-mv__sub {
    gap: 4px;
  }
  .tao-mv__sub-line {
    padding: 4px 10px;
    font-size: 1.3rem;
    line-height: 1.6;
  }
  /* 695918：SPは3つ横並びの幅に余裕がないため、右寄せ・拡大は行わず
     従来サイズ・従来の横位置のまま（下寄せのみ適用）とする */
  .tao-mv__inner {
    align-items: flex-start;
    padding: 0 16px 70px;
  }
  .tao-mv__badge {
    width: 104px;
    height: 104px;
    font-size: 1.1rem;
  }
  .tao-mv__badge img {
    width: 32px;
    height: 32px;
  }
}

/* ==========================================================================
   5. TOP：TAOの特徴（円形カード）
   ========================================================================== */
.tao-features {
  gap: 24px;
}
.tao-feature {
  display: flex;
  flex-direction: column;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border: 1px solid #DCEEF5;
  border-radius: 50%;
  background: #FEFEFE;
  box-shadow: 0 14px 36px rgba(11, 106, 144, 0.14);
  opacity: 0;
  transform: translateY(28px) scale(0.94);
  transition: opacity 0.9s cubic-bezier(0.22, 0.7, 0.3, 1), transform 0.9s cubic-bezier(0.22, 0.7, 0.3, 1);
}
.tao-feature.is-inview {
  opacity: 1;
  transform: none;
}
.tao-feature:nth-child(3n+2) { transition-delay: 0.12s; }
.tao-feature:nth-child(3n+3) { transition-delay: 0.24s; }
@media (prefers-reduced-motion: reduce) {
  .tao-feature { opacity: 1; transform: none; transition: none; }
}
.tao-feature__head {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 44%;
  background: linear-gradient(120deg, var(--tao-grad-stops));
}
.tao-feature__no {
  position: absolute;
  bottom: 12%;
  left: 14%;
  color: var(--tao-on-grad);
  font-size: 4rem;
  font-weight: 700;
  line-height: 1;
}
.tao-feature__head img {
  width: 144px;
  height: 144px;
  margin-left: 20%;
  object-fit: contain;
}
.tao-feature__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 20px 15% 0;
  text-align: center;
}
.tao-feature__title {
  color: #0F8C86;
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.55;
}
.tao-feature__text {
  color: #4A6C78;
  font-size: 1.4rem;
  line-height: 1.8;
}
@media (max-width: 1100px) {
  .tao-feature {
    max-width: 340px;
    margin: 0 auto;
  }
  .tao-feature__head img {
    width: 108px;
    height: 108px;
  }
  .tao-feature__no {
    font-size: 3rem;
  }
}

/* ==========================================================================
   6. TOP：要支援限定コース
   ========================================================================== */
.tao-start {
  overflow: hidden;
  border: 2px solid #0E9BE0;
  border-radius: 32px;
  background: #FEFEFE;
  box-shadow: 0 18px 50px rgba(11, 106, 144, 0.08);
}
.tao-start__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  padding: 32px 40px;
  background: linear-gradient(100deg, var(--tao-grad-stops));
}
.tao-start__lead {
  margin-bottom: 8px;
  color: #0B5877;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.tao-start__title {
  font-size: 4.2rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.02em;
}
.tao-start__badge {
  padding: 14px 26px;
  border-radius: 24px;
  background: #FEFEFE;
  color: #0B6A90;
  font-size: 2rem;
  font-weight: 700;
}
.tao-start__body {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 44px;
  padding: 40px 40px 0;
}
.tao-start__note {
  color: #37596B;
  font-size: 1.6rem;
  line-height: 2;
}
.tao-start__side {
  display: grid;
  align-content: start;
  gap: 16px;
}
.tao-start__slot {
  padding: 22px 24px;
  border: 1px solid #DCEEF5;
  border-radius: 18px;
}
.tao-start__slot-label {
  margin-bottom: 6px;
  color: #01739F;
  font-size: 1.4rem;
  font-weight: 700;
}
.tao-start__slot-time {
  font-size: 3.2rem;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.02em;
}
.tao-start .btn {
  max-width: 420px;
}
.tao-start .text-center {
  padding: 0 40px 40px;
}
.tao-voice {
  display: grid;
  gap: 12px;
}
.tao-voice__item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  border-radius: 16px;
  background: #EEF8FF;
  color: #0B5877;
  font-size: 1.7rem;
  font-weight: 700;
}
.tao-voice__dot {
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #0E9BE0;
}
@media (max-width: 1100px) {
  .tao-start__head {
    padding: 26px 22px;
  }
  .tao-start__title {
    font-size: 2.4rem;
  }
  .tao-start__badge {
    font-size: 1.6rem;
  }
  .tao-start__body {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 26px 22px 0;
  }
  .tao-start .text-center {
    padding: 0 22px 26px;
  }
  .tao-voice__item {
    font-size: 1.5rem;
  }
  .tao-start__slot-time {
    font-size: 2.4rem;
  }
}

/* ==========================================================================
   7. TOP：タイムスケジュール
   ========================================================================== */
.tao-tl-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  max-width: 1000px;
  margin: 0 auto;
}
.tao-tl__head {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-bottom: 28px;
}
.tao-tl__head-title {
  font-size: 2.4rem;
  font-weight: 700;
  letter-spacing: 0.1em;
}
.tao-tl__head-bar {
  width: 44px;
  height: 3px;
  border-radius: 2px;
  background: #0E9BE0;
}
.tao-tl--pm .tao-tl__head-bar {
  background: #24B3FD;
}
/* 695918：提供時間を目立たせるため、時間表記を枠線付きのバッジにする
   （枠線の色は各コースの見出しバー＝午前/午後の色に合わせる） */
.tao-tl__head-sub {
  padding: 8px 24px;
  border: 2px solid #0E9BE0;
  border-radius: 999px;
  background: #FEFEFE;
  color: #1B4FC0;
  font-size: clamp(1.8rem, 1.5rem + 0.6vw, 2.2rem);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.tao-tl--pm .tao-tl__head-sub {
  border-color: #24B3FD;
  color: #0163C7;
}
/* 695918：提供時間のまとめ表記（午前の部○○／午後の部○○）を太字にする。
   text-light / tao-panel__sub は他でも使うため、専用クラスで該当箇所のみ当てる */
.tao-time-summary {
  color: #14323F;
  font-weight: 700;
}
.tao-tl__row {
  display: grid;
  grid-template-columns: 68px 30px 1fr;
  align-items: start;
}
.tao-tl__time {
  padding-top: 1px;
  padding-right: 14px;
  color: #0B6A90;
  font-size: 1.6rem;
  font-weight: 700;
  text-align: right;
}
.tao-tl__mark {
  position: relative;
  display: flex;
  align-self: stretch;
  justify-content: center;
}
.tao-tl__line {
  position: absolute;
  top: 8px;
  bottom: -8px;
  width: 2px;
  background: #DCEEF5;
}
.tao-tl__row:last-child .tao-tl__line {
  display: none;
}
.tao-tl__dot {
  position: relative;
  width: 14px;
  height: 14px;
  margin-top: 3px;
  border-radius: 50%;
  background: #0E9BE0;
}
.tao-tl--pm .tao-tl__dot {
  background: #24B3FD;
}
.tao-tl__body {
  padding: 0 0 34px 16px;
  font-size: 1.7rem;
  font-weight: 500;
  line-height: 1.6;
}
@media (max-width: 1100px) {
  .tao-tl-wrap {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .tao-tl__row {
    grid-template-columns: 58px 26px 1fr;
  }
  .tao-tl__body {
    padding-bottom: 28px;
    font-size: 1.6rem;
  }
}

/* ==========================================================================
   8. TOP：3つの事業
   ========================================================================== */
.tao-services {
  gap: 24px;
}
.tao-service {
  display: flex;
  flex-direction: column;
  border: 1px solid #E4F1F6;
  border-radius: 26px;
  box-shadow: 0 10px 30px rgba(11, 106, 144, 0.06);
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s ease, transform 0.7s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}
.tao-service.is-inview {
  opacity: 1;
  transform: none;
}
.tao-service:nth-child(2) { transition-delay: 0.1s; }
.tao-service:nth-child(3) { transition-delay: 0.2s; }
.tao-service:hover {
  border-color: #0E9BE0;
  box-shadow: 0 16px 38px rgba(11, 106, 144, 0.12);
  transform: translateY(-4px);
}
/* 3つの事業の画像は 640×480（4:3）のイラスト。
   共通の card-photo__img--lg（height:200px＋object-fit:cover）では
   上下が切れてしまうため、4:3の枠に contain で全体を表示する。
   ホバー時の拡大も見切れの原因になるため無効化。 */
.tao-service .card-photo__img {
  height: auto;
  aspect-ratio: 4 / 3;
  background: #FEFEFE;
}
.tao-service .card-photo__img img {
  object-fit: contain;
}
.tao-service:hover .card-photo__img img {
  transform: none;
  filter: none;
}
.tao-service__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 12px;
  padding: 28px 26px 32px;
}
.tao-service__en {
  margin-bottom: 0;
  padding: 0;
  color: #01739F;
  font-size: 1.1rem;
  font-weight: 400;
}
.tao-service__title {
  margin-bottom: 0;
  font-size: 2.2rem;
  line-height: 1.5;
}
.tao-service__text {
  color: #5B7C88;
  font-size: 1.4rem;
  line-height: 1.9;
}
.tao-service .tao-more {
  margin-top: auto;
  padding-top: 6px;
  font-size: 1.4rem;
}
@media (prefers-reduced-motion: reduce) {
  .tao-service { opacity: 1; transform: none; transition: none; }
}

/* ==========================================================================
   9. TOP：お知らせ / アクセス
   ========================================================================== */
.tao-news-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
}
.tao-news {
  border-top-color: #E4F1F6;
}
.tao-news .news-list__item {
  border-bottom-color: #E4F1F6;
}
.tao-news .news-list__link {
  gap: 8px 24px;
  padding: 22px 8px;
}
.tao-news .news-list__date {
  width: 110px;
  color: #5B7C88;
  letter-spacing: 0.06em;
}
.tao-news .news-list__cat {
  min-width: 0;
  padding: 6px 14px;
  font-weight: 700;
}
.tao-news .news-list__link:hover {
  background: #F8FCFE;
}

.tao-access {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: start;
}
.tao-access__photo {
  border-radius: 26px;
}
.tao-access__map {
  border: 1px solid #DCEEF5;
  border-radius: 24px;
}
.tao-access__map iframe {
  height: 420px;
}
@media (max-width: 1100px) {
  .tao-access {
    grid-template-columns: 1fr;
  }
  .tao-access__map iframe {
    height: 300px;
  }
}
@media (max-width: 639px) {
  .tao-news-head {
    align-items: flex-start;
    flex-direction: column;
    gap: 12px;
  }
  .tao-news .news-list__date {
    width: auto;
  }
}

/* ==========================================================================
   10. 下層ページ共通：ヒーロー / テキストパーツ / パネル / テーブル
   ========================================================================== */
.tao-pagehero {
  position: relative;
  overflow: hidden;
}
.tao-pagehero__bg {
  position: absolute;
  inset: 0;
  background: linear-gradient(115deg, var(--tao-grad-stops));
  opacity: 0.2;
}
.tao-pagehero--mint .tao-pagehero__bg {
  background: linear-gradient(115deg, var(--tao-grad-stops));
  opacity: 0.18;
}
.tao-pagehero--sky .tao-pagehero__bg {
  background: linear-gradient(115deg, var(--tao-grad-stops));
  opacity: 0.18;
}
.tao-pagehero__inner {
  position: relative;
  padding-top: 64px;
  padding-bottom: 76px;
}
.tao-pagehero--sm .tao-pagehero__inner {
  padding-top: 56px;
  padding-bottom: 64px;
}
.tao-pagehero__inner--split {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 48px;
  align-items: center;
}
.tao-pagehero__inner--illust {
  grid-template-columns: 1fr 480px;
  gap: 40px;
}
.tao-pagehero__en {
  margin-bottom: 16px;
  color: #0B6A90;
  font-size: 1.3rem;
  font-weight: 600;
  line-height: 1;
}
.tao-pagehero__title {
  margin-bottom: 18px;
  font-size: 4.8rem;
  font-weight: 700;
  line-height: 1.4;
}
.tao-pagehero__title--sm {
  margin-bottom: 26px;
  font-size: 4.2rem;
  line-height: 1.5;
}
.tao-pagehero__title-sub {
  font-size: 2.8rem;
}
.tao-pagehero__catch {
  margin-bottom: 26px;
  color: #134D66;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.9;
}
.tao-pagehero__lead {
  color: #37596B;
  font-size: 1.7rem;
  line-height: 2.05;
}
.tao-pagehero__photo {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  object-fit: cover;
  box-shadow: 0 18px 44px rgba(11, 106, 144, 0.16);
}
.tao-pagehero__illust {
  display: block;
  width: 100%;
  max-width: 480px;
  margin-left: auto;
}
.tao-wave--hero {
  position: relative;
  margin-bottom: -1px;
}
.tao-wave--hero svg {
  height: 60px;
}

.tao-breadcrumb {
  padding: 0 0 14px;
  font-size: 1.3rem;
}
.tao-breadcrumb .breadcrumb__link,
.tao-breadcrumb .breadcrumb__current {
  color: #0B6A90;
}
.tao-breadcrumb .breadcrumb__item:not(:last-child)::after {
  content: "／";
  margin: 0 0.2em;
  color: #0B6A90;
}
.tao-breadcrumb--plain {
  padding-bottom: 24px;
}
.tao-breadcrumb--plain .breadcrumb__link,
.tao-breadcrumb--plain .breadcrumb__current,
.tao-breadcrumb--plain .breadcrumb__item:not(:last-child)::after {
  color: #5B7C88;
}

.tao-h2--sm {
  font-size: 3.4rem;
}
.tao-lead {
  color: #14323F;
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.8;
}
.tao-lead-text {
  color: #2E4F5C;
  font-size: 1.7rem;
  line-height: 2.1;
}
.tao-subhead {
  margin-bottom: 28px;
  color: #0B6A90;
  font-size: 1.9rem;
  font-weight: 700;
}
.tao-note {
  color: #5B7C88;
  font-size: 1.4rem;
  line-height: 1.9;
}

/* ---- 白パネル ---- */
.tao-panel {
  padding: 32px 34px;
  border-radius: 24px;
  background: #FEFEFE;
}
.tao-panel--border {
  border: 1px solid #E4F1F6;
}
.tao-panel--accent {
  padding: 32px 32px 40px;
  border: 2px solid #0E9BE0;
  border-radius: 26px;
}
.tao-panel--border.tao-panel--nopad-b {
  padding-bottom: 40px;
}
.tao-panel--mint {
  padding: 28px 30px;
  border: 2px solid #24B3FD;
  border-radius: 20px;
}
.tao-panel__title {
  margin-bottom: 6px;
  font-size: 2.2rem;
  font-weight: 700;
}
.tao-panel__title--sm {
  margin-bottom: 10px;
  font-size: 1.9rem;
}
.tao-panel__sub {
  margin-bottom: 24px;
  color: #5B7C88;
  font-size: 1.5rem;
}
.tao-panel__label {
  margin-bottom: 20px;
  font-size: 1.7rem;
  font-weight: 700;
}
.tao-panel__text {
  color: #3D5F6C;
  font-size: 1.6rem;
  line-height: 1.95;
}
@media (max-width: 1100px) {
  .tao-panel,
  .tao-panel--accent,
  .tao-panel--mint {
    padding: 26px 22px;
  }
}

/* ---- テーブル ---- */
.tao-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1.6rem;
}
.tao-table thead th {
  padding: 14px 18px;
  background: #EAF8FD;
  font-weight: 700;
  text-align: left;
}
.tao-table thead th:first-child {
  width: 280px;
  border-radius: 12px 0 0 12px;
}
.tao-table thead th:last-child {
  border-radius: 0 12px 12px 0;
}
.tao-table tbody th {
  width: 220px;
  padding: 22px 24px;
  border-bottom: 1px solid #E4F1F6;
  background: #EAF8FD;
  font-weight: 700;
  text-align: left;
  vertical-align: top;
}
.tao-table tbody td {
  padding: 16px 18px;
  border-bottom: 1px solid #E4F1F6;
  line-height: 1.9;
}
.tao-table tbody tr:last-child th,
.tao-table tbody tr:last-child td {
  border-bottom: none;
}
.tao-table__key {
  font-family: "Josefin Sans", sans-serif;
  font-size: 1.8rem;
  font-weight: 600;
  white-space: nowrap;
}

/* SPで2カラムの表を「項目＝見出し／内容＝本文」のカード積みに変換する。
   .table-scroll の横スクロール（min-width:600px）をやめて画面幅に収める。
   使い方：<div class="table-scroll tao-table-stack"><table class="tao-table tao-table--stack"> */
@media (max-width: 639px) {
  .tao-table-stack {
    overflow-x: visible;
  }
  .tao-table-stack > .tao-table--stack {
    min-width: 0;
  }
  .tao-table.tao-table--stack thead {
    display: none;
  }
  .tao-table.tao-table--stack,
  .tao-table.tao-table--stack tbody,
  .tao-table.tao-table--stack tr,
  .tao-table.tao-table--stack th,
  .tao-table.tao-table--stack td {
    display: block;
    width: auto;
  }
  /* 表全体の枠・背景は解除し、1行ごとにカード化する */
  .tao-table.tao-table--stack {
    overflow: visible;
    /* 695918：カード積み時は1行ごとに枠が付くため、表全体の外枠は解除する */
    border: none;
    border-radius: 0;
    background: transparent;
  }
  /* 695918：カード積み時は行ごとに枠が付くため、外側フレームの枠・背景も解除する */
  .tao-table-frame--stack {
    border: none;
    border-radius: 0;
    background: transparent;
  }
  /* 695918：カード積み時は縦の区切り線が不要 */
  .tao-table.tao-table--stack tbody th {
    border-right: none;
  }
  .tao-table.tao-table--stack tr {
    margin-bottom: 12px;
    border: 1px solid #E4F1F6;
    border-radius: 14px;
    overflow: hidden;
    background: #FEFEFE;
  }
  .tao-table.tao-table--stack tr:last-child {
    margin-bottom: 0;
  }
  /* 1セル目（項目）＝カードの見出し */
  .tao-table.tao-table--stack tbody th,
  .tao-table.tao-table--stack tbody td:first-child {
    width: auto;
    padding: 10px 16px;
    border-bottom: 1px solid #E4F1F6;
    background: #EAF8FD;
    font-size: 1.5rem;
    white-space: normal;
  }
  /* 2セル目（内容）＝カードの本文 */
  .tao-table.tao-table--stack tbody td {
    padding: 14px 16px;
    border-bottom: none;
    font-size: 1.5rem;
    line-height: 1.85;
  }
  .tao-table.tao-table--stack tbody tr:last-child th,
  .tao-table.tao-table--stack tbody tr:last-child td:first-child {
    border-bottom: 1px solid #E4F1F6;
  }
}
.tao-table__amount {
  color: #0B6A90;
  font-weight: 700;
}
.tao-table--outline tbody td {
  padding: 22px 24px;
}
/* 695918：料金表・キャンセル料の表が背景（水色の帯）と同化して見にくいため、
   白背景＋外枠＋行・列の区切り線を付ける */
.tao-table--card {
  overflow: hidden;
  border-radius: 20px;
  background: #FEFEFE;
  font-size: 1.7rem;
}
/* 695918：見出し行（キャンセルのタイミング／キャンセル料）の境目が分かるよう
   列の区切り線と見出し行下の線を淡色で追加する */
.tao-table--card thead th {
  border-right: 1px solid #E4F1F6;
  border-bottom: 1px solid #E4F1F6;
}
.tao-table--card thead th:last-child {
  border-right: none;
}
/* 内側の罫線は dayservice「ご利用料金」と同じ淡い色のまま（青は外枠だけ） */
.tao-table--card tbody th {
  width: 240px;
  border-right: 1px solid #E4F1F6;
  border-bottom: 1px solid #E4F1F6;
}
.tao-table--card tbody td {
  padding: 22px 24px;
  border-bottom: 1px solid #E4F1F6;
  line-height: 1.8;
}
.tao-table--card tbody tr:last-child th,
.tao-table--card tbody tr:last-child td {
  border-bottom: none;
}
.tao-table-frame {
  overflow: hidden;
  border: 2px solid #0E9BE0;
  border-radius: 26px;
  background: #FEFEFE;
}

/* ---- チェックリスト ---- */
.tao-check {
  display: grid;
  gap: 14px;
}
.tao-check__item {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 22px 26px;
  border-radius: 18px;
  background: #EEF8FF;
  font-size: 1.8rem;
  font-weight: 500;
}
.tao-check__box {
  display: flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 1px solid #24B3FD;
  border-radius: 10px;
  background: #FEFEFE;
  color: #01739F;
  font-size: 1.4rem;
}
.tao-check--sm .tao-check__item {
  gap: 14px;
  padding: 18px 22px;
  border-radius: 16px;
  font-size: 1.6rem;
}
.tao-check__icon {
  flex: none;
  color: #01739F;
  font-size: 1.5rem;
}

/* ---- ドット付きリスト ---- */
.tao-dot-list {
  display: grid;
  gap: 12px;
}
.tao-dot-list li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 1.6rem;
  line-height: 1.85;
}
.tao-dot-list__dot {
  flex: none;
  width: 7px;
  height: 7px;
  margin-top: 9px;
  border-radius: 50%;
  background: #0E9BE0;
}
.tao-dot-list--2col {
  grid-template-columns: 1fr 1fr;
  gap: 12px 32px;
}
.tao-dot-list--lemon .tao-dot-list__dot {
  background: #24B3FD;
  box-shadow: 0 0 0 2px #E9E48A;
}
@media (max-width: 639px) {
  .tao-dot-list--2col {
    grid-template-columns: 1fr;
  }
}

/* ---- グラデーションCTAボックス ---- */
.tao-cta-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
  padding: 44px;
  border-radius: 28px;
  background: linear-gradient(100deg, var(--tao-grad-stops));
}
.tao-cta-box--center {
  display: block;
  padding: 48px 44px;
  text-align: center;
}
.tao-cta-box__title {
  margin-bottom: 12px;
  font-size: 2.6rem;
  font-weight: 700;
  line-height: 1.6;
}
.tao-cta-box__title--lg {
  margin-bottom: 16px;
  font-size: 3rem;
}
.tao-cta-box__text {
  color: #134D66;
  font-size: 1.6rem;
  line-height: 1.9;
}
.tao-cta-box__text--center {
  max-width: 760px;
  margin: 0 auto 32px;
  line-height: 2;
}
.tao-cta-box__btn {
  display: inline-flex;
  flex: none;
  align-items: center;
  height: 60px;
  padding: 0 34px;
  border-radius: 30px;
  background: #01739F;
  color: #fff;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
  transition: background 0.3s ease;
}
.tao-cta-box__btn:hover {
  background: #015E80;
  color: #fff;
  opacity: 1;
}
.tao-cta-box__btn--lg {
  height: 62px;
  padding: 0 40px;
  border-radius: 31px;
  font-size: 1.7rem;
}
@media (max-width: 639px) {
  .tao-cta-box,
  .tao-cta-box--center {
    padding: 28px 22px;
  }
  .tao-cta-box__title {
    font-size: 2rem;
  }
  .tao-cta-box__title--lg {
    font-size: 2.2rem;
  }
}

/* ==========================================================================
   11. デイサービスTAOについて
   ========================================================================== */
.tao-about__lead {
  margin-bottom: 30px;
}
.tao-about {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 44px;
  align-items: start;
}
.tao-about__text {
  color: #2E4F5C;
  font-size: 1.7rem;
  line-height: 2.1;
}
.tao-about__photo {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  object-fit: cover;
  box-shadow: 0 18px 44px rgba(11, 106, 144, 0.16);
}

.tao-machines {
  display: grid;
  gap: 20px;
}
.tao-machine {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 32px;
  align-items: center;
  padding: 24px;
  border: 1px solid #E4F1F6;
  border-radius: 24px;
  background: #FEFEFE;
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.tao-machine.is-inview {
  opacity: 1;
  transform: none;
}
.tao-machine__img {
  display: block;
  width: 100%;
  height: 190px;
  border-radius: 18px;
  object-fit: cover;
}
.tao-machine__body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-right: 16px;
}
.tao-machine__title {
  font-size: 2.2rem;
  font-weight: 700;
  line-height: 1.5;
}
.tao-machine__text {
  color: #3D5F6C;
  font-size: 1.6rem;
  line-height: 2;
}
.tao-machine__tag {
  color: #01739F;
  font-size: 1.3rem;
  font-weight: 700;
}

.tao-medias {
  display: grid;
  gap: 72px;
}
.tao-media {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 48px;
  align-items: center;
}
.tao-media__img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  /* カフェ・個浴とも同じ角丸の形に統一 */
  border-radius: 120px 32px 120px 32px;
  object-fit: cover;
}
.tao-media--reverse {
  grid-template-columns: 1.1fr 0.9fr;
}
.tao-media--reverse .tao-media__img {
  order: 2;
}
.tao-media--reverse .tao-media__body {
  order: 1;
}
.tao-media__title {
  font-size: 3.2rem;
}
.tao-media__text {
  color: #3D5F6C;
  font-size: 1.6rem;
  line-height: 2.1;
}
.tao-media__text p + p {
  margin-top: 18px;
}

.tao-tl-wrap--narrow {
  gap: 48px;
  max-width: none;
}

.tao-flowcards {
  gap: 24px;
  row-gap: 52px;
  margin-top: 36px;
}
.tao-flowcard {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-top: 36px;
  padding: 52px 26px 32px;
  border: 1px solid #E4F1F6;
  border-radius: 22px;
  background: #FEFEFE;
  box-shadow: 0 8px 24px rgba(11, 106, 144, 0.06);
  text-align: center;
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.tao-flowcard.is-inview {
  opacity: 1;
  transform: none;
}
.tao-flowcard__no {
  position: absolute;
  top: -36px;
  left: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: linear-gradient(150deg, var(--tao-grad-stops));
  color: var(--tao-on-grad);
  font-size: 3rem;
  font-weight: 700;
  transform: translateX(-50%);
}
.tao-flowcard img {
  display: block;
  width: 100%;
  max-width: 200px;
  margin: 0 auto 6px;
}
.tao-flowcard__title {
  font-size: 2.1rem;
  font-weight: 700;
}
.tao-flowcard__text {
  color: #5B7C88;
  font-size: 1.5rem;
  line-height: 1.95;
}

@media (max-width: 1100px) {
  .tao-about,
  .tao-media,
  .tao-media--reverse,
  .tao-machine {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .tao-about__photo,
  .tao-pagehero__photo {
    max-width: 340px;
    margin: 0 auto;
  }
  /* リード文 → 画像 → 本文 の順に並べる */
  .tao-about__photo {
    order: -1;
    margin-bottom: 8px;
  }
  .tao-media--reverse .tao-media__img,
  .tao-media--reverse .tao-media__body {
    order: 0;
  }
  .tao-media__img {
    border-radius: 24px;
  }
  .tao-medias {
    gap: 48px;
  }
  .tao-machine__body {
    padding-right: 0;
  }
  .tao-media__title {
    font-size: 2.4rem;
  }
}

/* ==========================================================================
   12. 病院同行サービス
   ========================================================================== */
.tao-trouble {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 44px;
  align-items: center;
}
.tao-trouble__img {
  display: block;
  width: 100%;
  max-width: 540px;
  margin: 0 auto;
}

.tao-reasons {
  gap: 20px;
}
.tao-reason {
  display: grid;
  grid-template-columns: 1fr 210px;
  column-gap: 20px;
  align-items: center;
  padding: 32px 30px;
  border: 1px solid #E4F1F6;
  border-radius: 24px;
  background: #FEFEFE;
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.tao-reason.is-inview {
  opacity: 1;
  transform: none;
}
.tao-reason__body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.tao-reason__no {
  color: #0E9BE0;
  font-size: 3.4rem;
  font-weight: 700;
  line-height: 1;
}
.tao-reason__title {
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.6;
}
.tao-reason__text {
  color: #3D5F6C;
  font-size: 1.6rem;
  line-height: 2;
}
.tao-reason__img {
  display: block;
  width: 100%;
  max-width: 210px;
}

.tao-svc-cards {
  gap: 20px;
}
.tao-svc-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  padding: 28px 24px;
  border: 1px solid #E4F1F6;
  border-radius: 22px;
  background: #FEFEFE;
}
.tao-svc-card__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--tao-grad-stops));
  color: var(--tao-on-grad);
  font-size: 2.2rem;
}
.tao-svc-card__title {
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.6;
  text-align: center;
}
.tao-svc-card__text {
  align-self: stretch;
  color: #5B7C88;
  font-size: 1.5rem;
  line-height: 1.95;
}

/* ---- 番号＋写真＋テキストの縦フロー ---- */
.tao-flowrows {
  display: grid;
}
.tao-flowrow {
  display: grid;
  grid-template-columns: 56px 300px 1fr;
  column-gap: 28px;
  align-items: start;
  padding-bottom: 44px;
}
.tao-flowrow__mark {
  position: relative;
  display: flex;
  align-self: stretch;
  justify-content: center;
}
.tao-flowrow__line {
  position: absolute;
  top: 26px;
  bottom: -44px;
  width: 4px;
  background: #BFE9F6;
}
.tao-flowrow:last-child .tao-flowrow__line {
  display: none;
}
.tao-flowrow__no {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #01739F;
  color: #FEFEFE;
  font-size: 2rem;
  font-weight: 700;
}
.tao-flowrow__img {
  display: block;
  width: 100%;
  max-width: 300px;
  aspect-ratio: 4 / 3;
  border: 6px solid #FEFEFE;
  background: #FEFEFE;
  box-shadow: 0 6px 20px rgba(11, 106, 144, 0.12);
  object-fit: cover;
}
.tao-flowrow__body {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding-top: 6px;
}
.tao-flowrow__title {
  padding-bottom: 14px;
  border-bottom: 1px solid #DCEEF5;
  font-size: 2.2rem;
  font-weight: 700;
}
.tao-flowrow__text {
  color: #3D5F6C;
  font-size: 1.6rem;
  line-height: 2;
}

/* ---- 縦線ステップ ---- */
.tao-steps {
  display: grid;
}
.tao-steps__item {
  position: relative;
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: 24px;
  align-items: start;
  margin-left: 26px;
  padding: 0 0 28px 34px;
  border-left: 2px solid #D9F0F8;
}
.tao-steps__item:last-child {
  border-left-color: transparent;
}
.tao-steps__dot {
  position: absolute;
  top: 0;
  left: -15px;
  width: 28px;
  height: 28px;
  border: 4px solid #FEFEFE;
  border-radius: 50%;
  background: #0E9BE0;
}
.tao-steps__no {
  padding-top: 2px;
  color: #01739F;
  font-size: 1.6rem;
  font-weight: 700;
}
.tao-steps__body {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.tao-steps__title {
  font-size: 1.9rem;
  font-weight: 700;
}
.tao-steps__text {
  color: #3D5F6C;
  font-size: 1.6rem;
  line-height: 1.95;
}

@media (max-width: 1100px) {
  .tao-trouble,
  .tao-reason {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .tao-reason__img {
    max-width: 180px;
    margin: 0 auto;
  }
  .tao-check__item {
    padding: 18px 20px;
    font-size: 1.6rem;
  }
  .tao-flowrow {
    grid-template-columns: 48px 1fr;
    row-gap: 16px;
  }
  .tao-flowrow__mark {
    grid-row: span 2;
  }
  .tao-flowrow__img {
    max-width: 100%;
  }
  .tao-flowrow__no {
    width: 48px;
    height: 48px;
    font-size: 1.7rem;
  }
}

/* ==========================================================================
   13. デイサービスコンサル
   ========================================================================== */
.tao-opening {
  display: grid;
  grid-template-columns: 1fr 1fr 280px;
  gap: 32px;
  align-items: center;
}
/* 695918：ul と「など…」を包むラッパーに変更。従来の縦中央揃えを保つため
   grid コンテナのままにする */
.tao-opening__second {
  display: grid;
  align-content: center;
}
/* 695918：「など…」はリスト項目ではないため、点なしのテキストとして
   リストの文字位置（点7px＋余白12px）に揃えて表示する */
.tao-opening__etc {
  margin-top: 12px;
  padding-left: 19px;
  font-size: 1.6rem;
  line-height: 1.85;
}
.tao-opening__photo {
  display: block;
  width: 100%;
  max-width: 280px;
  margin: 0 auto;
  aspect-ratio: 1 / 1;
  border-radius: 20px;
  object-fit: cover;
}
.tao-inline-head {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 22px;
  padding-bottom: 12px;
  border-bottom: 3px solid #0E9BE0;
  font-size: 2rem;
  font-weight: 700;
}
.tao-inline-head i {
  color: #01739F;
  font-size: 2.2rem;
}
.tao-online-flow {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 14px;
}
.tao-online-flow__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 24px 20px;
  border-radius: 18px;
  background: #FEFEFE;
}
.tao-online-flow__step {
  color: #01739F;
  font-size: 1.3rem;
  font-weight: 700;
  letter-spacing: 0.12em;
}
.tao-online-flow__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--tao-grad-stops));
  color: var(--tao-on-grad);
  font-size: 2.3rem;
}
.tao-online-flow__text {
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.85;
  text-align: center;
}
.tao-recommend {
  display: grid;
  grid-template-columns: 1fr 340px 1fr;
  gap: 32px;
  align-items: center;
}
.tao-recommend__img {
  display: block;
  width: 100%;
  max-width: 340px;
  margin: 0 auto;
}
@media (max-width: 1100px) {
  .tao-opening,
  .tao-recommend {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .tao-online-flow {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 639px) {
  .tao-online-flow {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   14. お問い合わせ
   ========================================================================== */
.tao-tel-cta {
  position: relative;
  max-width: 540px;
  margin: 0 auto 40px;
  padding-top: 24px;
}
.tao-tel-cta__label {
  position: absolute;
  top: 0;
  left: 50%;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  height: 44px;
  padding: 0 28px;
  border-radius: 22px;
  background: linear-gradient(100deg, var(--tao-grad-stops-rev));
  color: var(--tao-on-grad);
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  white-space: nowrap;
  text-shadow: 0 1px 2px rgba(11, 90, 120, 0.22);
  transform: translateX(-50%);
}
.tao-tel-cta__link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  min-height: 88px;
  padding: 28px 28px 20px;
  border: 2px solid #0E9BE0;
  border-radius: 44px;
  background: #FEFEFE;
  color: #01739F;
  text-decoration: none;
  transition: background 0.3s ease;
}
.tao-tel-cta__link:hover {
  background: #EAF8FD;
  opacity: 1;
}
.tao-tel-cta__link i {
  font-size: 3.2rem;
}
.tao-tel-cta__link .font-en {
  font-size: 4rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.tao-tel-cta__note {
  margin-top: 18px;
  color: #5B7C88;
  font-size: 1.5rem;
  text-align: center;
}
.tao-sns-cta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  max-width: 900px;
  margin: 0 auto;
}
.tao-sns-cta__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-height: 78px;
  border-radius: 12px;
  color: #FEFEFE;
  font-size: 2rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: filter 0.3s ease;
}
.tao-sns-cta__btn i {
  font-size: 3.2rem;
}
.tao-sns-cta__btn:hover {
  filter: brightness(1.08);
  color: #FEFEFE;
  opacity: 1;
}
.tao-sns-cta__btn--line {
  background: #06C755;
}
.tao-sns-cta__btn--insta {
  background: linear-gradient(100deg, #F09433, #E6683C 30%, #DC2743 60%, #BC1888);
}

.tao-form {
  display: grid;
  gap: 28px;
}
.tao-form__row {
  display: grid;
  gap: 10px;
}
.tao-form__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.tao-form__label {
  font-size: 1.5rem;
  font-weight: 700;
}
.tao-form__req {
  margin-left: 10px;
  color: #B4472F;
  font-size: 1.2rem;
}
.tao-form__control {
  height: 56px;
  padding: 0 16px;
  border: 1px solid #CFE6EF;
  border-radius: 12px;
  background-color: #FEFEFE;
  font-size: 1.6rem;
}
select.tao-form__control {
  padding-right: 40px;
}
.tao-form__control:focus {
  border-color: #01739F;
}
.tao-form__textarea {
  height: auto;
  padding: 16px;
  line-height: 1.9;
  resize: vertical;
}
.tao-form__submit {
  height: 64px;
  padding: 0 56px;
  border-radius: 32px;
  background: #01739F;
  font-size: 1.7rem;
  letter-spacing: 0.06em;
  box-shadow: 0 10px 24px rgba(11, 133, 184, 0.24);
}
.tao-form__submit:hover {
  background: #015E80;
  opacity: 1;
}
@media (max-width: 639px) {
  .tao-sns-cta,
  .tao-form__cols {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .tao-tel-cta__link .font-en {
    font-size: 2.8rem;
  }
  .tao-sns-cta__btn {
    font-size: 1.6rem;
  }
}

/* ==========================================================================
   15. お知らせ（一覧 / 詳細）
   ========================================================================== */
.tao-main-side {
  gap: 56px;
}
.tao-main-side .main-side__main {
  width: calc(100% - 356px);
}
.tao-main-side .main-side__side {
  width: 300px;
}
@media (max-width: 1100px) {
  .tao-main-side .main-side__main,
  .tao-main-side .main-side__side {
    width: 100%;
  }
}

.tao-catfilter {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.tao-catfilter__item {
  padding: 10px 22px;
  border: 1px solid #CFE6EF;
  border-radius: 20px;
  background: #FEFEFE;
  color: #0B6A90;
  font-size: 1.4rem;
  font-weight: 700;
  text-decoration: none;
  transition: background 0.3s ease, border-color 0.3s ease;
}
.tao-catfilter__item:hover,
.tao-catfilter__item.is-current {
  border-color: #0E9BE0;
  background: #EAF8FD;
  opacity: 1;
}

.tao-blog {
  border-top: 1px solid #E4F1F6;
}
.tao-blog__item {
  border-bottom: 1px solid #E4F1F6;
}
.tao-blog__link {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 26px 8px;
  color: #14323F;
  text-decoration: none;
  transition: background 0.3s ease;
}
.tao-blog__link:hover {
  background: #F8FCFE;
  opacity: 1;
}
.tao-blog__meta {
  display: flex;
  align-items: center;
  gap: 16px;
}
.tao-blog__date {
  color: #5B7C88;
  font-size: 1.5rem;
  letter-spacing: 0.06em;
}
.tao-blog__cat {
  padding: 6px 14px;
  border-radius: 12px;
  background: #EAF8FD;
  color: #0B6A90;
  font-size: 1.2rem;
  font-weight: 700;
}
.tao-blog__title {
  font-size: 1.9rem;
  font-weight: 700;
  line-height: 1.6;
}
.tao-blog__excerpt {
  color: #5B7C88;
  font-size: 1.5rem;
  line-height: 1.9;
}

.tao-pagination .pagination__link {
  min-width: 46px;
  height: 46px;
  border-color: #CFE6EF;
  border-radius: 23px;
  color: #0B6A90;
  font-family: "Josefin Sans", sans-serif;
  font-weight: 700;
}
.tao-pagination .pagination__link.is-current {
  border-color: #01739F;
  background: #01739F;
  color: #fff;
}

.tao-side {
  display: grid;
  gap: 32px;
  align-content: start;
}
.tao-side__box {
  padding: 24px;
  border: 1px solid #E4F1F6;
  border-radius: 20px;
}
.tao-side__title {
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 2px solid #0E9BE0;
  font-size: 1.6rem;
  font-weight: 700;
}
.tao-side__list {
  display: grid;
  gap: 12px;
}
.tao-side__list--recent {
  gap: 16px;
}
.tao-side__row {
  display: flex;
  justify-content: space-between;
  color: #14323F;
  font-size: 1.5rem;
  text-decoration: none;
}
.tao-side__row:hover {
  color: #01739F;
  opacity: 1;
}
.tao-side__count {
  color: #5B7C88;
}
.tao-side__entry {
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: #14323F;
  text-decoration: none;
}
.tao-side__entry:hover .tao-side__entry-title {
  color: #01739F;
}
.tao-side__date {
  color: #5B7C88;
  font-size: 1.3rem;
}
.tao-side__entry-title {
  font-size: 1.5rem;
  line-height: 1.7;
  transition: color 0.3s ease;
}
.tao-side__cta {
  padding: 28px 24px;
  border-radius: 20px;
  background: linear-gradient(140deg, var(--tao-grad-stops));
}
.tao-side__cta-title {
  margin-bottom: 14px;
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.6;
}
.tao-side__cta-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 52px;
  border-radius: 26px;
  background: #01739F;
  color: #fff;
  font-size: 1.5rem;
  font-weight: 700;
  text-decoration: none;
  transition: background 0.3s ease;
}
.tao-side__cta-btn:hover {
  background: #015E80;
  color: #fff;
  opacity: 1;
}

.tao-entry-section {
  padding-top: 28px;
}
.tao-entry__meta {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 18px;
}
.tao-entry__title {
  margin-bottom: 32px;
  font-size: 3.6rem;
  font-weight: 700;
  line-height: 1.55;
}
.tao-entry__thumb {
  display: block;
  width: 100%;
  height: 360px;
  margin-bottom: 40px;
  border-radius: 26px;
  object-fit: cover;
}
.tao-entry__body {
  color: #2E4F5C;
  font-size: 1.7rem;
  line-height: 2.1;
}
.tao-entry__body > * + * {
  margin-top: 24px;
}
.tao-entry__body h2 {
  margin-top: 40px;
  padding-left: 16px;
  border-left: 5px solid #0E9BE0;
  color: #14323F;
  font-size: 2.4rem;
  font-weight: 700;
}
.tao-entry__body .list-dot li {
  margin-bottom: 10px;
}
.tao-entry-nav {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin-top: 56px;
  padding-top: 28px;
  border-top: 1px solid #E4F1F6;
}
.tao-entry-nav__link {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-width: 44%;
  color: #14323F;
  text-decoration: none;
}
.tao-entry-nav__link--next {
  text-align: right;
}
.tao-entry-nav__label {
  color: #01739F;
  font-size: 1.3rem;
  font-weight: 700;
}
.tao-entry-nav__title {
  font-size: 1.5rem;
  line-height: 1.7;
}
.tao-entry-nav__back {
  display: flex;
  flex: none;
  align-self: center;
  align-items: center;
  height: 48px;
  padding: 0 24px;
  border: 1px solid #CFE6EF;
  border-radius: 24px;
  color: #0B6A90;
  font-size: 1.4rem;
  font-weight: 700;
  text-decoration: none;
}
.tao-entry-nav__back:hover {
  background: #EAF8FD;
  opacity: 1;
}
@media (max-width: 639px) {
  .tao-entry__title {
    font-size: 2.4rem;
  }
  .tao-entry__thumb {
    height: 220px;
  }
  .tao-entry-nav {
    flex-wrap: wrap;
  }
  .tao-entry-nav__link {
    max-width: 100%;
  }
}

/* ==========================================================================
   16. 全体のレスポンシブ（見出し・リード文）
   ========================================================================== */
@media (max-width: 1100px) {
  .heading--left .heading__ja,
  .tao-h2--sm {
    font-size: 2.4rem;
  }
  .tao-pagehero__title {
    font-size: 3rem;
  }
  .tao-pagehero__title--sm {
    font-size: 2.6rem;
  }
  .tao-pagehero__title-sub {
    font-size: 1.8rem;
  }
  .tao-pagehero__inner--split,
  .tao-pagehero__inner--illust {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .tao-pagehero__illust {
    max-width: 360px;
    margin: 0 auto;
  }
  .tao-pagehero__catch {
    font-size: 1.8rem;
  }
  .tao-pagehero__lead,
  .tao-lead-text,
  .tao-about__text {
    font-size: 1.6rem;
  }
  .tao-lead {
    font-size: 1.9rem;
  }
  .tao-subhead {
    font-size: 1.7rem;
  }
}
@media (max-width: 639px) {
  .heading--left .heading__ja,
  .tao-h2--sm {
    font-size: 2.2rem;
  }
  .tao-pagehero__title {
    font-size: 2.6rem;
  }
  .tao-pagehero__inner {
    padding-top: 44px;
    padding-bottom: 52px;
  }
}

/* ==========================================================================
   17. お問い合わせフォームCMS（form-pattern-2）デザイン上書き
   CMSの mail-form.css は本文中の <link> で後から読み込まれるため、
   同詳細度では常にCMS側が勝つ。上書きには !important が必須。
   ========================================================================== */

/* 送信ボタン：サイト共通ボタン（.btn--solid / .tao-cta__mail）に合わせる */
.form-pattern-2 .submit-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 300px !important;
  max-width: 100% !important;
  margin: 40px auto 0 !important;
  padding: 16px 34px !important;
  border: 2px solid #01739F !important;
  border-radius: 30px !important;
  background: #01739F !important;
  color: #FEFEFE !important;
  font-family: "Noto Sans JP", sans-serif !important;
  font-size: 1.6rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.06em !important;
  box-shadow: 0 10px 30px rgba(11, 106, 144, 0.1) !important;
  transition: background 0.3s ease, border-color 0.3s ease !important;
}
.form-pattern-2 .submit-btn:hover {
  border-color: #015E80 !important;
  background: #015E80 !important;
  color: #FEFEFE !important;
  opacity: 1 !important;
}
/* ボタン内の封筒アイコン（mask画像）はホバー時も白のまま維持 */
.form-pattern-2 .submit-btn::before,
.form-pattern-2 .submit-btn:hover::before {
  background-color: #FEFEFE !important;
}

/* 「必須」バッジ：CMS標準のオレンジ #f07240 → サイトのブルー */
.form-pattern-2 dl dt:not(.pattern-exclusion) span.required::before {
  color: #FEFEFE !important;
  background: #01739F !important;
}

@media (max-width: 639px) {
  .form-pattern-2 .submit-btn {
    width: 100% !important;
    max-width: 300px !important;
    font-size: 1.5rem !important;
  }
}

/* ==========================================================================
   18. 送信完了ページ（thanks.php）
   ========================================================================== */
.tao-thanks {
  max-width: 780px;
  margin: 0 auto;
  padding: 56px 48px;
  border-radius: 24px;
  background: #FEFEFE;
  box-shadow: 0 10px 30px rgba(11, 106, 144, 0.1);
  text-align: center;
}
.tao-thanks__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 84px;
  height: 84px;
  margin-bottom: 24px;
  border-radius: 50%;
  background: linear-gradient(150deg, var(--tao-grad-stops));
  color: var(--tao-on-grad);
  font-size: 3.6rem;
}
.tao-thanks__title {
  margin-bottom: 20px;
  color: #14323F;
  font-size: 2.4rem;
  font-weight: 700;
  line-height: 1.6;
}
.tao-thanks__text {
  margin-bottom: 24px;
  color: #14323F;
  font-size: 1.6rem;
  line-height: 2;
}
.tao-thanks__note {
  margin-bottom: 36px;
  color: #5B7C88;
  font-size: 1.4rem;
  line-height: 2;
}
.tao-thanks__tel {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-bottom: 36px;
  padding: 26px 20px;
  border-radius: 18px;
  background: #EEF8FF;
}
.tao-thanks__tel-label {
  color: #0B6A90;
  font-size: 1.4rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.tao-thanks__tel-link {
  display: flex;
  align-items: center;
  gap: 14px;
  color: #01739F;
  text-decoration: none;
}
.tao-thanks__tel-link:hover {
  opacity: 0.75;
}
.tao-thanks__tel-link i {
  font-size: 2.6rem;
}
.tao-thanks__tel-link .font-en {
  font-size: 3.2rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.tao-thanks__tel-note {
  color: #5B7C88;
  font-size: 1.3rem;
}
.tao-thanks__btns {
  display: flex;
  justify-content: center;
}
@media (max-width: 639px) {
  .tao-thanks {
    padding: 40px 20px;
  }
  .tao-thanks__title {
    font-size: 2rem;
  }
  .tao-thanks__text {
    font-size: 1.5rem;
  }
  .tao-thanks__tel-link .font-en {
    font-size: 2.6rem;
  }
}

/* ============================================================
   695918 グラデーションをラフ指定の淡い配色（#fafdda／#c4f8ef／#24b3fd）へ変更。
   691097 で白にしていた「グラデーション上の文字」を濃紺へ戻す
   ============================================================ */
.tao-start__head,
.tao-start__head .tao-start__lead,
.tao-start__head .tao-start__title,
.tao-cta-box,
.tao-cta-box .tao-cta-box__title,
.tao-cta-box .tao-cta-box__text,
.tao-side__cta,
.tao-side__cta * {
  color: var(--tao-on-grad);
}

/* お問い合わせCTA帯：背景（::before）が淡くなったため見出し・説明文を濃紺へ。
   ボタンは自前の背景色を持つため対象外 */
.tao-cta .tao-cta__en,
.tao-cta .tao-cta__title,
.tao-cta .tao-cta__desc {
  color: var(--tao-on-grad);
}
