@charset 'UTF-8';
/* =====================================================================
------------------------------------------------------------------------
01 Reset & Base Styles
  01.1 HTML Base
  01.2 Bootstrap
02 Typography
03 Components
  03.1 Button
04 Utilities
  04.1 Spacing
05 Layout
  05.1 Header
  05.2 Navigation
  05.3 Footer
  05.4 Main - Section
  05.5 Main - Page
  05.6 Main - Breadcrumb
  05.7 Main - Sidebar
  05.8 Main - Article
06 Responsive Breakpoints
------------------------------------------------------------------------
===================================================================== */

/* =====================================================================
   01 Reset & Base Styles
      HTMLの初期化・基礎スタイルをまとめた章。
      ブラウザごとの差異を整え、全体のデフォルト基準を統一する。
===================================================================== */

/* ---------------------------------------------------------------------
   01.1 HTML Base
        HTMLタグ（body, h1〜h6, p, a, ul, ol など）の初期設定。
        日本語フォント・行間・色・背景・基本余白などをここで定義する。
--------------------------------------------------------------------- */

/* Google Fonts 読み込み */
@import url('https://fonts.googleapis.com/css2?family=Kiwi+Maru&family=Noto+Sans+JP:wght@100..900&display=swap');

/* Google Material Symbols 読み込み */
@font-face {
  font-family: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/MaterialSymbolsOutlined-Regular.woff2") format('woff2');
  font-display: block;
}

.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}

/* カラー設計 */
:root {
  /* ブランドカラー */
  --color-brand-main:   #40b477; /* ロゴカラー1：黄緑色 */
  --color-brand-accent: #fee487; /* ロゴカラー2：黄色 */
  --color-brand-light:  #b2dabf; /* ロゴカラー3：薄い黄緑色 */

  /* 基本カラー（本文・背景・境界） */
  --color-text:   #111511; /* 基本文字色 */
  --color-bg:     #f8fbf8; /* 基本背景色 */
  --color-surface:#ffffff; /* コンテンツ背景用（カード・ボックスなど） */
  --color-border: #dddcd6; /* ボーダー色 */
  
  /* Bootstrap変数にも反映（上書き用） */
  --bs-light:     #ebf7ec;
  --bs-light-rgb: 235, 247, 236;
}

html {
  box-sizing: border-box;
  scroll-behavior: smooth;
  overflow-x: hidden;
  font-size: 14px;
}

*, *::before, *::after {
  box-sizing: inherit;
}

body {
  font-family: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
  line-height: 1.7;
  letter-spacing: 0.03em;
  font-weight: 400;
  color: var(--color-text);
  background-color: var(--color-bg);
  /* font-size: clamp(0.9375rem, 0.5vw + 0.875rem, 1.125rem); */
  font-size: 1rem;
  margin: 0;
  padding: 0;
  overflow-x: hidden;
}

img, svg {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
  border-style: none;
}

a {
  word-break: break-all;
}

/* ---------------------------------------------------------------------
   01.2 Bootstrap
        Bootstrap標準CSSとの整合性を保つための補正レイヤー。
        フォント・行間・字間など、日本語環境に最適化する調整を行う。
--------------------------------------------------------------------- */
.lead {
  font-weight: 500;
  font-size: 1rem;
}


/* =====================================================================
   02. Typography
       文字の見た目に関する基本設定。
       フォントファミリ、行間(line-height)、文字間(letter-spacing)、
       見出しと本文の階層バランスを整える。
===================================================================== */
.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
  line-height: 1.4;
  font-weight: 500;
  letter-spacing: 0.06em;
  margin-bottom: 0.809rem;
}
.h5, h5 {
  font-weight: 600;
}
.h6, h6 {
  font-weight: 700;
}

h1, .h1 { font-size: clamp(2rem, 2.5vw + 1rem, 3rem); }
h2, .h2 { font-size: clamp(1.75rem, 2vw + 0.875rem, 2.5rem); }
h3, .h3 { font-size: clamp(1.5rem, 1.5vw + 0.75rem, 2rem); }
h4, .h4 { font-size: clamp(1.25rem, 1vw + 0.625rem, 1.75rem); }
h5, .h5 { font-size: clamp(1.125rem, 0.75vw + 0.5625rem, 1.5rem); }
h6, .h6 { font-size: clamp(1rem, 0.5vw + 0.5rem, 1.25rem); }

p {
  line-height: 1.8;
  margin-bottom: 1.618rem;
  text-align: justify;
  text-justify: inter-ideograph;
  font-size: 1rem;
}

/* =====================================================================
   03 Components
      Bootstrapや独自のUI要素を定義・補正する章。
      各パーツ（ボタン、フォーム、カードなど）のビジュアルを統一する。
===================================================================== */

/* ---------------------------------------------------------------------
  03.1 Button
--------------------------------------------------------------------- */
.btn {
  font-family: inherit;
  line-height: 1.6;
  letter-spacing: 0.02em;
}

/* ---
   カラー設計
------------------------------- */
.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: #40b477;
  --bs-btn-border-color: #40b477;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: #379e66;
  --bs-btn-hover-border-color: #379e66;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #2e8757;
  --bs-btn-active-border-color: #2e8757;
  --bs-btn-focus-shadow-rgb: 64, 180, 119; /* #40b477 をRGB化 */
}

/* ---
   標準ボタン
------------------------------- */
.btn-primary {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 240px;
  padding: 0.9rem 1.5rem;
  margin: auto;
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #fff;
  background-color: #028760;
  border: none;
  border-radius: 40px;
  text-decoration: none;
  box-shadow: 0 0 30px 0 #0000000d;
  overflow: hidden;
  transition: background-color 0.4s ease, color 0.4s ease;
}
.btn-primary::before {
  content: "";
}
/* 右矢印（Material Symbols） */
.btn-primary::after {
  content: "arrow_forward";
  font-family: "Material Symbols Outlined";
  font-size: 1.4rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.3s ease, opacity 0.3s ease;
}

/* hover時 */
.btn-primary:hover {
  background-color: #046c52;
  color: #fff;
}

.btn-primary:hover::after {
  transform: translateX(4px);
}

/* focus / active */
.btn-primary:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 3px rgba(2, 135, 96, 0.35),
    0 0 30px 0 #00000014;
}

/* ---
   幅広ボタン
------------------------------- */
.btn-block {
  width: 100%;
}

/* ---
   アニメーションボタン
------------------------------- */
.btn-anim-border {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  gap: 6px;
  margin: auto;
  font-size: 1rem;
  line-height: 54px;
  width: 240px;
  border-radius: 40px;
  color: #fff;
  text-decoration: none;
  overflow: hidden;
  box-shadow: 0 0 30px 0 #0000000d;
  transition: color 0.6s ease;
}

/* テキスト・アイコン
------------------------------- */
.btn-anim-border .btn-text,
.btn-anim-border .material-symbols-outlined {
  position: relative;
  z-index: 5;
  font-weight: 600;
}

.btn-anim-border .material-symbols-outlined {
  margin-top: 2px;
  line-height: 1;
  transition: transform 0.3s ease, color 0.6s ease;
}

.btn-anim-border .none-icon {
  width: 1.15em;
}

/* 背景グラデーション
------------------------------- */
.btn-anim-border .bg-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}

/* 枠線アニメーション
------------------------------- */
.btn-anim-border .border-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 4;
  pointer-events: none;
}

.btn-anim-border .border-svg rect {
  fill: none;
  stroke: url(#grad-border);
  stroke-width: 0;
  stroke-dasharray: 0, 420;
  stroke-dashoffset: 0;
  transition:
    stroke-width 0.6s ease,
    stroke-dasharray 0.6s ease,
    stroke-dashoffset 0.6s ease;
}

/* 白フェード */
.btn-anim-border::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0);
  transition: background 0.6s ease;
  z-index: 2;
}

/* hover時 */
.btn-anim-border:hover::before {
  background: rgba(255,255,255,1);
}
.btn-anim-border:hover .border-svg rect {
  stroke-width: 2;
  stroke-dasharray: 260, 0;
  stroke-dashoffset: 437;
  stroke: url(#grad-border);
}
.btn-anim-border:hover {
  color: #028760;
}
.btn-anim-border:hover .material-symbols-outlined {
  transform: translateX(4px);
  color: #028760;
}


/* ---------------------------------------------------------------------
  03.2 Cards
--------------------------------------------------------------------- */

/* ---
   病院メニューカード
------------------------------- */
.card-menu {
  background: #FFF;
  border-radius: 20px;
  box-shadow: 0 0 30px 0 #0000000d;
}
.card-menu:hover {
  color: #FFF;
  transition: background 0.6s ease;
  background: #028760;
}
.card-menu .card-body {
  padding-top: 2rem;
  padding-bottom: 0;
}
.card-menu .card-footer {
  padding-bottom: 2rem;
}
.card-menu .icon-menu {
  margin-bottom: 1rem;
  color: #028760;
  font-size: 3em;
}
.card-menu:hover .icon-menu {
  color: #FFF;
}
.card-menu .card-title {
  margin-bottom: 0;
  font-weight: 700;
  font-size: 1rem;
}
.card-menu .icon-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #028760;
  color: #fff;
  border-radius: 50%;
  width: 32px;
  height: 32px;
  font-size: 1rem;
  transition: background 0.3s ease, transform 0.3s ease;
}
.card-menu:hover .icon-arrow {
  background: #fff;
  color: #028760;
  transform: translateY(-2px);
}

/* =====================================================================
   04 Utilities
      細かなデザイン調整や共通スタイルをまとめた補助クラス群。
      プロジェクト全体で再利用できる便利クラスをここに定義する。
===================================================================== */

/* ---------------------------------------------------------------------
  04.1 Material Symbols 共通設定（フォントサイズ継承対応）
--------------------------------------------------------------------- */
.material-symbols-outlined,
.material-symbols-rounded,
.material-symbols-sharp {
  font-style: normal;
  font-weight: 400;
  font-size: 1.15em;        /* テキストに追随 */
  line-height: 1;        /* 余白を消す */
  display: inline-block; /* baseline調整が効きやすい */
  /* 日本語フォントと合わない分を微調整（-0.1〜0.2emで調整） */
  vertical-align: -0.15em;
  /* 可変軸（必要なら）：塗り/太さ/光学サイズ */
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
}

/* =====================================================================
  05 Layout
    ページ全体の構造・レイアウトを扱う章。
    Header、Navigation、Footer、Main Contentなど、  
    大きなコンテナ構造をここで設計する。

    -- 構成 --
    05.1 Header
    05.2 Navigation
    05.3 Footer
    05.4 Main - Section

===================================================================== */

/* ---------------------------------------------------------------------
  05.1 Header
--------------------------------------------------------------------- */
/* ---
   Header 基本設計
------------------------------- */
.header {
  position: relative;
  z-index: 1045;
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

/* トップページ表示時
------------------------------- */
body.home .header .main-nav {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  width: 100%; /* 明示的に固定幅を指定 */
  max-width: 100vw; /* 画面幅を超えないよう制御 */
  background: transparent;
  box-shadow: none;
}

/* scroll時：固定化＋背景展開 */
body.home .header .main-nav.scroll,
.header .main-nav.scroll {
  position: fixed !important;
  top: 0;
  left: 0;
  right: 0;
  width: 100%; /* 明示的に固定幅を指定 */
  max-width: 100vw; /* 画面幅を超えないよう制御 */
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  animation: fadeDown 0.4s ease forwards;
}
/* Safari / iOS 向けの安全策 */
@supports (-webkit-touch-callout: none) {
  .header .main-nav.scroll {
    right: 0;
  }
}

/* ロゴ
------------------------------- */
.header-logo {
  max-width: 300px;
  padding-left: 5px;
}

/* ナビゲーショングループ
------------------------------- */
.nav-group {
  padding: .75rem .5rem;
}

/* テキストナビ
------------------------------- */
.main-nav .text-nav .nav-link {
  color: #111511;
  font-weight: 600;
  font-size: 1rem;
  transition: all 0.3s ease;
}
.main-nav .text-nav .nav-link:hover {
  color: #028760;
}
.main-nav .text-nav .nav-link.home {
  font-size: 2rem;
  color: #028760;
}

/* 言語切り替えボタン
------------------------------- */
.btn-lang {
  display: block;
  padding: .25rem .75rem;
  border-radius: 6px;
  background-color: #f0f0f0;
  color: #028760;
  font-weight: 600;
  line-height: 1;
  text-align: center;
  font-size: 0.8rem;
  transition: all 0.3s ease;
}
.btn-lang:hover {
  background-color: #028760;
  color: #fff;
}
.btn-lang.active {
  background-color: #028760;
  color: #fff;
  cursor: default;
}

/* ボタンナビ
------------------------------- */
.nav-button .btn-navicon {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 52px;
  min-width: 52px;
  height: 52px;
  padding: 0;
  transition: all 0.3s ease;
  border-radius: .375rem;
}
.nav-button .btn-navicon .icon-nav {
  font-size: 1.75rem;
}
.nav-button .btn-navicon .btn-label {
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -1px;
}
/*
.nav-button .btn-navicon.search {
  color: #FFF;
  background-color: #40b477;
}
.nav-button .btn-navicon.search:hover {
  background-color: #028760;
  color: #fff;
}
*/
.nav-button .btn-navicon.access {
  color: #FFF;
  background-color: #028760;
}
.nav-button .btn-navicon.access:hover {
  background-color: #046649;
  color: #fff;
}

/* -- 検索ボックス ここから -- */

/* =====================================================
   検索ボタンの外枠（位置基準）
===================================================== */
.search-box {
  position: relative; /* hidden-content の基点にする */
  display: inline-block;
}

/* =====================================================
   検索ボタン（アイコン + ラベル）
===================================================== */
.search-btn {
  display: inline-flex;
  flex-direction: column;          /* ← アイコン＋ラベルを縦並び */
  align-items: center;
  justify-content: center;
  color: #FFF;
  background-color: #40b477;
  border: none;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.3s ease, opacity 0.3s ease;
}

.search-btn .label {
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -1px;
}

/* ボタン押下中の薄くなる表現 */
.search-btn.close {
  opacity: 1;
}

/* ホバー */
.search-btn:hover {
  background-color: #028760;
}

/* =====================================================
   hidden-content（展開部分）
===================================================== */
.hidden-content {
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 0.6rem;
  padding: 0.75rem 1rem;
  background: #ffffff;
  border: 1px solid #ddd;
  border-radius: 6px;
  box-shadow: 0 4px 14px rgba(0,0,0,0.15);
  z-index: 1000;

  /* 横並び */
  display: flex;
  align-items: center;
  gap: 0.6rem;

  /* 初期非表示（displayで切り替えるとflexが消えるため、opacity管理） */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-4px);
  transition:
    opacity 0.25s ease,
    transform 0.25s ease,
    visibility 0.25s ease;
}

/* 表示されている状態 */
.hidden-content.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

/* =====================================================
   内部のフォーム（横並び）
===================================================== */
.hidden-content form {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* 入力欄 */
.hidden-content input[type="text"] {
  width: 180px;
  padding: 0.45rem 0.6rem;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 0.9rem;
}

/* 送信ボタン */
.submit-icon {
  background: #40b477;
  color: #fff;
  border: none;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.25s ease;
}

.submit-icon:hover {
  background: #1565c0;
}

.submit-icon .material-symbols-outlined {
  font-size: 22px;
}

/* =====================================================
   閉じる（×）ボタン
===================================================== */
.search-close {
  width: 38px;
  height: 38px;
  border: none;
  background: #eee;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s ease;
}

.search-close:hover {
  background: #ddd;
}

.search-close .material-symbols-outlined {
  font-size: 22px;
}

@media (max-width: 575.98px) {
  .search-box {
    width: 100%;
  }

  .search-btn {
    /* 必要ならヘッダー右端揃え など調整用 */
    padding-inline: 0.25rem;
  }

  .hidden-content {
    position: fixed;
    left: 0;
    right: 0;
    top: 70px; 
    margin-top: 0;
    border-radius: 0;
    padding: 0.75rem 1rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    gap: 0.75rem;
  }

  .hidden-content form {
    flex: 1 1 auto;
  }

  .hidden-content input[type="text"] {
    min-width: 0;
    width: 100%;
  }

  .search-close {
    /* スマホでは少し大きめでもOKなら調整 */
    width: 36px;
    height: 36px;
  }
}


/* -- 検索ボックス ここまで -- */



/* ---
   アニメーション定義
------------------------------- */
@keyframes fadeDown {
  0% {
    opacity: 0;
    transform: translateY(-70px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ---
   offcanvas
------------------------------- */
.offcanvas.text-bg-dark {
  background-color: #046649!important;
}

.offcanvas-title {
  max-width: 240px;
}

/* メインナビ（上部大項目）
------------------------------- */
.offcanvas-main-nav {
  width: 100%;
  border-top: 1px solid rgba(255, 255, 255, 0.15);
}

.offcanvas-main-nav .nav-item {
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
  position: relative;
}

.offcanvas-main-nav .nav-link {
  display: flex;
  align-items: center;
  justify-content: space-between; /* 左テキスト／右アイコン */
  color: #fff;
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-align: left;
  padding: 1rem .75rem;
  transition: color 0.3s ease;
}

/* アイコン設定（右側矢印） */
.offcanvas-main-nav .nav-link::after {
  content: "arrow_circle_right";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.5rem;
  display: inline-block;
  line-height: 1;
  color: #7ebea5;
  transition: transform 0.3s ease, color 0.3s ease;
}

/* hover時：文字とアイコンが同調してアクティブ感 */
.offcanvas-main-nav .nav-link:hover {
  color: #7ebea5;
}
.offcanvas-main-nav .nav-link:hover::after {
  color: #fff;
  transform: translateX(4px);
}

/* モバイルでの指先タッチ領域確保 */
.offcanvas-main-nav .nav-item:not(:last-child) {
  margin-bottom: 0.2rem;
}

/* 中央ボタン群
------------------------------- */
.offcanvas-btn-nav {
  width: 100%;
  margin: 1.5rem 0;
}

.offcanvas-btn-nav .nav-item {
  margin-bottom: 0.6rem;
}

/* ボタン本体 */
.offcanvas-btn-nav .btn-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border: 1px solid #fff;
  border-radius: 0.5rem;
  padding: 0.8rem 1rem;
  background-color: rgba(255,255,255,.9);
  color: #046649;
  font-weight: 600;
  letter-spacing: 0.03em;
  transition: all 0.3s ease;
  text-decoration: none;
}

/* 左右アイコンの調整 */
.offcanvas-btn-nav .btn-nav .material-symbols-outlined {
  font-size: 1.5rem;
  vertical-align: middle;
  transition: transform 0.3s ease, color 0.3s ease;
}

/* 左アイコン */
.offcanvas-btn-nav .btn-nav .icon-left {
  margin-right: 0.5rem;
  color: #046649;
}

/* テキスト中央揃え */
.offcanvas-btn-nav .btn-nav .btn-text {
  flex: 1;
  text-align: center;
}

/* 右アイコン */
.offcanvas-btn-nav .btn-nav .icon-right {
  margin-left: 0.5rem;
  color: #046649;
}

/* hover時 */
.offcanvas-btn-nav .btn-nav:hover {
  color: #FFF;
  background-color: #028760;
  border-color: #028760;
}
.offcanvas-btn-nav .btn-nav:hover .material-symbols-outlined {
  color: #fff;
}
.offcanvas-btn-nav .btn-nav:hover .icon-right {
  transform: translateX(4px);
}

/* サブナビ
------------------------------- */
.offcanvas-sub-nav {
  width: 100%;
}
.offcanvas-sub-nav .nav-link {
  display: flex;
  align-items: center;
  justify-content: space-between; /* 左テキスト / 右アイコン */
  width: 100%;
  color: #fff;
  font-size: .9rem;
  font-weight: 500;
  text-decoration: none;
  margin: .1rem;
  padding: 0.8rem;
  transition: color 0.3s ease, transform 0.3s ease;
}

/* アイコン設定（右側） */
.offcanvas-sub-nav .nav-link::after {
  content: "arrow_circle_right";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.3rem;
  line-height: 1;
  color: #7ebea5;
  transition: transform 0.3s ease, color 0.3s ease;
}

/* hover時 */
.offcanvas-sub-nav .nav-link:hover {
  color: #7ebea5;
}
.offcanvas-sub-nav .nav-link:hover::after {
  color: #fff;
  transform: translateX(4px);
}

/* 言語切り替え ------------------ */
.offcanvas-language-list {
  padding: 1rem;
  background-color: rgba(255,255,255,.25);
}
.offcanvas-language-list .btn-lang {
  margin: 0 .5rem;
  padding: .75rem 2rem
}

/* SNSナビゲーション ------------------ */
.offcanvas-sns {
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.offcanvas-sns .nav-item {
  list-style: none;
}

.offcanvas-sns .sns-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background-color: #fff;
  color: #028760;
  font-size: 1.6rem;
  transition: all 0.3s ease;
}

/* hover時にSNSブランドカラー */
.offcanvas-sns .sns-youtube:hover {
  background-color: #ff0000;
  color: #fff;
}

.offcanvas-sns .sns-instagram:hover {
  background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%);
  color: #fff;
}

.offcanvas-sns .sns-link:hover {
  transform: scale(1.1);
}


/* ---------------------------------------------------------------------
  05.2 Navigation
--------------------------------------------------------------------- */

/* 均等配置（Bootstrap補正） */
.nav-justified .nav-item {
  flex-grow: 1;
}

/* ハンバーガーメニュー制御 */
.navbar-toggler {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 52px;
  height: 52px;
  padding: 0;
  border: none;
  background: #046649;
  cursor: pointer;
  transition: all 0.3s ease;
  border-radius: .375rem;
}
.navbar-toggler:hover {
  background-color: #111511;
}

/* 各ライン共通 */
.navbar-toggler .toggler-line {
  display: block;
  position: absolute;
  width: 26px;
  height: 2.5px;
  background-color: #FFF;
  border-radius: 2px;
  transition: all 0.4s ease;
}

/* 各ラインの初期位置 */
.navbar-toggler .toggler-line:nth-child(1) {
  top: 17px;
}
.navbar-toggler .toggler-line:nth-child(2) {
  top: 25px;
}
.navbar-toggler .toggler-line:nth-child(3) {
  top: 33px;
}

/* タブメニュー */
.nav-tabs {
  padding: 0 !important;
}
.nav-tabs .nav-item {
  margin: 0;
}
.nav-tabs .nav-link {
  margin: 0;
  padding: 1rem;
  color: #111511;
  font-weight: 600;
  background-color: #DDD;
  border-top-left-radius: 1.5rem;
  border-top-right-radius: 1.5rem;
}
.nav-tabs .nav-link.active {
  color: #FFF;
  background-color: #40b477;
  border-color: #40b477;
}
.nav-tabs .nav-link:hover {
  color: #111511;
  background-color: #e7f5e8;
  border-color: #e7f5e8;
}


/* ==============================
   Offcanvas Body スクロールバー
============================== */
.offcanvas-body {
  overflow-y: auto;
  scrollbar-width: thin; /* Firefox用 */
  scrollbar-color: #7ebea5 transparent; /* Firefox用 */
}

/* Chrome, Edge, Safari */
.offcanvas-body::-webkit-scrollbar {
  width: 8px; /* スクロールバー全体の幅 */
}

.offcanvas-body::-webkit-scrollbar-track {
  background: transparent; /* 背景透明 */
}

.offcanvas-body::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #7ebea5 0%, #028760 100%);
  border-radius: 6px;
  box-shadow: inset 0 0 4px rgba(0,0,0,0.1);
  transition: background 0.3s ease;
}

/* hover時：色が少し濃くなる */
.offcanvas-body::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, #028760 0%, #046c52 100%);
}

/* Edge／Safariでの極細スクロールバー */
@supports (-webkit-touch-callout: none) {
  .offcanvas-body::-webkit-scrollbar {
    width: 6px;
  }
}


/* ---------------------------------------------------------------------
  05.3 Footer
--------------------------------------------------------------------- */
.footer {
  font-size: 0.95rem;
  line-height: 1.6;
}

/* --- 上部（テキストナビ） --- */
.footer-top {
  background: none;
  border-bottom: 1px solid #e5e5e5;
}

/* フッターナビ */
.footer-nav {
  margin: 2.5rem 0;
}
.footer-nav .nav-item {
  margin: .25rem 0;
}
.footer-nav .nav-link {
  position: relative;
  color: #111511;
  font-weight: 500;
  text-decoration: none;
  padding: 0.5rem 1.5rem 0.5rem 1rem;
  transition: color 0.3s ease;
}
.footer-nav .nav-link::after {
  content: "arrow_circle_right";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.1em;
  line-height: 1;
  display: inline-block;
  vertical-align: middle;
  margin-left: 0.4rem;
  color: #028760;
  transition: transform 0.3s ease, color 0.3s ease;
}
.footer-nav .nav-link:hover {
  color: #01694f;
}
.footer-nav .nav-link:hover::after {
  color: #01694f;
  transform: translateX(3px);
}


/* --- 下部（メインフッター） --- */
.footer-bottom {
  padding: 80px 0 40px;
  background-color: #02684b; /* 濃い緑 */
  color: #fff;
}

.footer-address {
  margin-bottom: 0;
  font-style: normal;
}

/* --- SNSリンク --- */
.footer-sns {
  display: flex;
  justify-content: center;
  gap: 1rem;
}

.footer-sns .sns-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #fff;
  color: #02684b;
  font-size: 1.4rem;
  transition: all 0.3s ease;
  text-decoration: none;
}

.footer-sns .sns-link:hover {
  background: #028760;
  color: #fff;
}

/* --- 認定マーク --- */
.footer-certmark {
  padding: 5px;
  max-height: 120px;
  background-color: #FFF;
}

/* --- コピーライト --- */
.footer-copy {
  margin-top: 60px;
  font-size: 0.85rem;
  color: #fff;
  opacity: 0.85;
}

/* 
   Back to TOP
   -------------------------- */
.back-to-top {
  position: fixed;
  bottom: 1rem;
  right: 1rem;
  width: 50px;
  height: 50px;
  line-height: 50px;
  text-align: center;
  color: #FFF;
  background-color: rgba(63,49,43,.95);
  border-radius: 0;
  z-index: 100;
  opacity: 0;
  transition: opacity .5s ease-out;
}
.back-to-top.view {
  opacity: 1;
}
.back-to-top:hover {
  color: #FFF;
  background-color: rgba(0,0,0,0.6);
}

/* ---------------------------------------------------------------------
  05.4 Main - Section
--------------------------------------------------------------------- */
.section {
  --section-padding: clamp(1.618rem, 3vw + 1rem, 4.236rem);
  padding-block: var(--section-padding);
}
.section-header {
  text-align: center;
  margin-bottom: clamp(1rem, 2vw + 0.5rem, 1.618rem);
}
.section-title h2 {
  position: relative;
  padding-bottom: 30px;
  margin-bottom: 50px;
}
.section-body {
  margin-top: clamp(1rem, 2vw + 0.5rem, 1.618rem);
}
.section-footer {
  margin-top: clamp(1.618rem, 3vw + 1rem, 2.618rem);
}

/* ---
   セクション：ヒーロー
------------------------------- */
.section-hero {
  position: relative;
  padding: 0;
  width: 100%;
  height: 60vh;
  overflow: hidden;
}

/* --- セクションボディ --- */
.section-hero .section-body {
  position: relative;
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.section-hero .section-body::before {
  content: '';
  display: inline-block;
  position: absolute;
  margin: auto;
  width: 52vw;
  height: 32vw;
  background: #e7f5e8;
  /* animation: fluidrotate 20s ease 0s infinite; */
  /*アニメーションの設定*/
  top: -16vw;
  left: -12vw;
  z-index: 2;
  border-radius: 60% 40% 50% 45% / 60% 40% 60% 40%;
}
@keyframes fluidrotate {
  0% {
      border-radius: 65% 35% 55% 45% / 55% 50% 55% 45%;
  }

  12.5% {
      border-radius: 60% 75% 40% 80% / 70% 70% 60% 65%;
  }

  25% {
      border-radius: 55% 95% 65% 90% / 75% 65% 85% 70%;
  }

  37.5% {
      border-radius: 60% 40% 50% 45% / 60% 40% 60% 40%;
  }

  50% {
      border-radius: 55% 95% 65% 90% / 75% 65% 85% 70%;
  }

  62.5% {
      border-radius: 60% 40% 50% 45% / 60% 40% 60% 40%;
  }

  75% {
      border-radius: 60% 75% 40% 80% / 70% 70% 60% 65%;
  }

  87.5% {
      border-radius: 40% 60% 55% 45% / 50% 60% 40% 50%;
  }

  100% {
      border-radius: 65% 35% 55% 45% / 55% 50% 55% 45%;
  }
}
.hero-illust-01 {
  position: absolute;
  right: -15px;
  bottom: -5px;
  width: 40vw;
  height: auto;
  z-index: 3;
  animation: 3s infinite news-at-leaf;
}
@keyframes news-at-leaf {
  0% {
      transform: rotate(0deg);
  }

  50% {
      transform: rotate(2deg);
  }

  100% {
      transform: rotate(0deg);
  }
}

/* --- 背景動画 --- */
.section-hero .hero-video {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 100%;
  object-fit: cover; /* 比率を保ちながら全画面表示 */
  transform: translate(-50%, -50%);
  z-index: 1;
  background: #000; /* ロード前の黒背景 */
}

.section-hero::before, .section-hero::after {
    content: "";
    display: inline-block;
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
}
.section-hero::before {
    background-image: url(../img/top/news-leaf-top.svg);
    background-size: 100% 5.68222vw;
    background-position: 0 bottom 0;
    background-repeat: no-repeat;
    width: 100%;
    height: 5.68222vw;
    z-index: 2;
    bottom: -4px;
}

/*
.section-hero::before {
  content: "";
  display: inline-block;
  position: absolute;
  left: 0;
  right: 0;
  margin: auto;
  background-image: url(../img/top/news-leaf-top.svg);
  background-size: 100% 5.41666vw;
  background-position: 0 bottom 0;
  background-repeat: no-repeat;
  width: 100%;
  height: 5.41666vw;
  z-index: 2;
  bottom: -2px;
}
*/

/* ---
   セクション：新着情報
------------------------------- */
.news-wrap {
  position: relative;
  overflow: hidden;
  padding-bottom: 60px;
}
.news-wrap::before {
  content: "";
  display: inline-block;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  background-image: url(../img/top/news-leaf-bottom.svg);
  background-size: 100% 104px;
  background-position: left 0 top 0px;
  width: 100%;
  height: 104px;
}
.section-news .section-title h2 {
  margin-bottom: 30px;
}
.section-news h2::before {
  content: "News";
  display: inline-block;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #b2dabf;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}

/*--- カテゴリメニュー ---*/
.article-category {
  flex-wrap: wrap;
  gap: 0.5rem;
}
.article-category .nav-item {
  flex: 1 1 auto;
}
.article-category .nav-link {
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: #028760;
  background-color: #fff;
  border-radius: 9999px;
  padding: 0.45rem 1rem;
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  transition: all 0.3s ease;
  width: 100%;
  text-align: center;
}
.article-category .nav-link:hover,
.article-category .nav-link.active {
  background-color: #028760;
  color: #fff;
}
.article-category .nav-link .material-symbols-outlined {
  font-size: 1.1rem;
  vertical-align: middle;
  position: relative;
  top: 0.05em;
  margin-right: 0.4em; 
  color: #028760;
  transition: color 0.3s ease, transform 0.3s ease;
}
.article-category .nav-link:hover .material-symbols-outlined,
.article-category .nav-link.active .material-symbols-outlined {
  color: #FFF;
}

/* --- 各記事一覧 --- */
.news-list {
  transition: opacity 0.15s ease;
}
.article-category .nav-link:active ~ .news-list {
  opacity: 0.9;
}
/* リスト全体の背景を透明に戻す（重ね効果を防ぐ） */
.news-list {
  background: none;
  box-shadow: none;
}

/* --- 記事本体 --- */
.news-list-item {
  background-color: #fff;
  border-radius: 10px;
  padding: 0;
  margin: 0.75rem 0;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.05);
  transition: all 0.3s ease;
}
.news-list-item:hover {
  background-color: #f9fdfa;
  transform: translateY(-2px);
  box-shadow: 0 4px 10px rgba(2, 135, 96, 0.08);
}

/* --- 記事リンク --- */
.news-list-link {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-decoration: none;
  padding: 2rem 1.25rem;
  color: #111;
}
.news-list-link::after {
  content: "";
  display: inline-block;
  width: 0.45rem;
  height: 0.45rem;
  border-top: 2px solid #028760;
  border-right: 2px solid #028760;
  transform: rotate(45deg);
  margin-left: 0.5rem;
  transition: transform 0.3s ease, border-color 0.3s ease;
}
.news-list-link:hover::after {
  transform: translateX(3px) rotate(45deg);
  border-color: #01694f;
}
.news-main {
  display: flex;
  flex-direction: column; /* 上下2段構成 */
  gap: 0.3rem;
}

/* 上段グループ（日時＋カテゴリ） */
.news-meta {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* タイトル */
.news-day {
  width: 5rem;
  font-size: 0.9rem;
  color: #666;
  flex-shrink: 0;
}
.news-category.badge {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  /* width: 8em; */
  min-width: 8em;
  text-align: center;
  font-size: 0.8rem;
  font-weight: 600;
  line-height: 1.2;
  padding: 0.35em 0.5em;
  border-radius: 0.4rem;
  color: #fff;
  flex-shrink: 0;
}
.badge.oshirase { background-color: #028760; }
.badge.press    { background-color: #2b9ed4; }
.badge.medical  { background-color: #f6b800; color: #111; }
.badge.recruit  { background-color: #7c3aed; }
.badge.bid      { background-color: #d63b3b; }

.news-title {
  display: block;
  width: 100%;
  font-size: 0.95rem;
  line-height: 1.5;
  white-space: normal;
  margin-top: 0.1rem;
}
.news-new {
  font-size: 0.75rem;
  color: #d00;
  font-weight: bold;
  margin-left: 0.4rem;
}

/* 記事一覧ページ用補正 */
.archive .news-list-item {
  padding: 2rem 1.25rem;
}

.archive .news-list-item:hover {
  transform: translateY(0);
}

/* ---------------------------------------
  ニュース1件：PCは横並び、スマホは縦積み
---------------------------------------- */
.archive .news-main{
  display: grid;
  grid-template-columns: auto 1fr; /* 左：meta / 右：title */
  grid-template-areas:
    "meta title"
    "body body";
  gap: .4rem 1rem;
}

/* エリア割当 */
.archive .news-meta{ grid-area: meta; }
.archive .news-title{ grid-area: title; }
.archive .news-body{ grid-area: body; }

.archive .news-body {
  margin-top: .25rem;
}
.archive .news-body p {
  margin-bottom: 1rem;
}
.archive .news-body p:last-of-type {
  margin-bottom: 0;
}

/* 右カラム（タイトル）が長いときのはみ出し防止 */
.archive .news-title{
  min-width: 0;
}
.archive .news-title a,
.archive .news-title span{
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* metaはPCでは詰めて表示（折返ししにくく） */
.archive .news-meta{
  white-space: nowrap;
  align-self: start;
}

/* titleの縦位置（metaと揃える） */
.archive .news-title{
  align-self: start;
}

/* ---------------------------------------
  スマホ：meta → title → body の縦積み
---------------------------------------- */
@media (max-width: 576px){
  .archive .news-main{
    grid-template-columns: 1fr;
    grid-template-areas:
      "meta"
      "title"
      "body";
    gap: .35rem 0;
  }

  .archive .news-meta{
    white-space: normal;
  }
}


/* イラスト配置 */
.medical-illust-01 {
  position: absolute;
  left: 2.5vw;
  bottom: 60px;
  width: 80px;
  z-index: 1;
}
.medical-illust-02 {
  position: absolute;
  right: 4vw;
  top: 30px;
  width: 120px;
  z-index: 1;
}

/* ---
   セクション：病院メニュー
------------------------------- */
.section-menu {
  position: relative;
  overflow: hidden;
}

.section-menu h2::before {
  content: "Hospital Menu";
  display: inline-block;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #b2dabf;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}

.section-menu .section-body {
  position: relative;
  z-index: 1;
  padding-bottom: 3rem;
}
.section-menu .section-body::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 540px;
  margin: auto;
  border-radius: 30px;
  background-color: #e7f5e8;
  z-index: -1;
}

/* ---
   セクション：公式SNS
------------------------------- */
.section-sns h2::before {
  content: "Official SNS";
  display: inline-block;
  position: absolute;
  left: .25rem;
  right: 0;
  bottom: 0;
  margin: auto;
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #b2dabf;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}
.section-sns .section-title h2 {
  margin-bottom: 30px;
  color: #028760;
  line-height: 2.25;
}
.section-sns .section-title {
  background-image: url(../img/top/medical-illust-06.png);
  background-size: 180px 120px;
  background-repeat: no-repeat;
  background-position: top right;
}

.section-sns .sns-content {
  margin: 0 auto;
  padding: 30px 20px 40px 20px;
  max-width: 1200px;
  background-color: #f6f7e2;
  border-radius: 40px;
}
.section-sns .sns-content .youtube-box {
  background-color: #FFF;
}

/* ---
   ナビゲーション：公式SNSボタン用
------------------------------- */
/* ベースデザイン */
.nav-sns .nav-link {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50px;
  padding: 0.9rem 1rem;
  font-weight: 600; /* SNS名を太字 */
  background: #fff;
  color: #333;
  text-decoration: none;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.05); /* 立体感を軽く追加 */
}

/* アイコンの位置調整 */
.nav-sns .nav-link .material-symbols-outlined {
  font-size: 1.4em;
  margin-right: 0.4rem;
  vertical-align: middle;
  position: relative;
  top: 0.05em; /* わずかに下げて整列 */
}

/* Instagram */
.btn-instagram {
  color: #dd2a7b;
  transition-duration: 0s;
}
.btn-instagram .material-symbols-outlined {
  color: #dd2a7b;
}
.btn-instagram:hover {
  background: linear-gradient(45deg, #f58529, #dd2a7b, #8134af, #515bd4);
  color: #fff;
}
.btn-instagram:hover .material-symbols-outlined {
  color: #fff;
}

/* YouTube */
.btn-youtube {
  color: #ff0000;
  transition: all 0.4s ease;
}
.btn-youtube .material-symbols-outlined {
  color: #ff0000;
}
.btn-youtube:hover {
  background: #ff0000;
  color: #fff;
  transition: all 0.4s ease;
}
.btn-youtube:hover .material-symbols-outlined {
  color: #fff;
  transition: all 0.4s ease;
}

/* ---
   セクション：診療案内
------------------------------- */
.guide-wrap {
  position: relative;
  padding: 10% 0;
}
.guide-wrap::before {
  top: 0;
  background-position: center bottom;
  background-color: #FFF;
}
.guide-wrap::after {
  bottom: 1px;
  background-position: center bottom;
  /* background-color: #FFF; */
  transform: scale(-1, -1);
}
.guide-wrap::before, .guide-wrap::after {
  content: "";
  display: inline-block;
  position: absolute;
  margin: auto;
  background-image: url(../img/top/guide-fuwa.svg);
  background-repeat: no-repeat;
  width: 100%;
  height: 0;
  left: 0;
  right: 0;
  padding-bottom: 10%;
}

.section-guide {
  background-color: #ebf7ec;
}
.section-guide h2::before {
  content: "Information";
  display: inline-block;
  position: absolute;
  left: .25rem;
  right: 0;
  bottom: 0;
  margin: auto;
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #b2dabf;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}
.section-guide .guide-box {
  width: 100%;
  border: 5px solid #e6e8bf;
  border-radius: 5px;
  background-color: #fff;
  padding: 16px;
  height: 100%;
}
.section-guide .guide-box-item {
  font-size: 1rem;
}
.section-guide .guide-box-data {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  position: relative;
  border-bottom: 3px dotted #1d8826;
  margin-bottom: 30px;
  padding-bottom: 20px;
}
.section-guide .guide-box-title {
  background-color: #1d8826;
  color: #fff;
  display: inline-block;
  font-size: .9rem;
  line-height: 1;
  padding: 8px 16px 10px;
  border-radius: 20px;
  margin-right: 16px;
}
.section-guide .guide-box-con {
  margin-bottom: 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: #1d8826;
  line-height: 1;
}
.section-guide .guide-box-data.time {
  border-bottom: 3px dotted #7e7813;
}
.section-guide .guide-box-title.time {
  background-color: #7e7813;
}
.section-guide .guide-box-con.time {
  color: #7e7813;
  font-family: "Roboto Condensed", sans-serif !important;
  font-size: 1.75rem;
  font-weight: 700;
}

/* ---
   セクション：当院の特徴
------------------------------- */
.section-feature {
  position: relative;
  overflow: hidden;
}
.section-feature h2::before {
  content: "Feature";
  display: inline-block;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #b2dabf;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}
.feature-lead {
  text-align: center;
  font-family: "Kiwi Maru", serif;
  font-size: clamp(1.5rem, 2vw + 0.875rem, 2.5rem) !important;
  font-weight: 500;
  color: #1d8826;
  letter-spacing: 0.1em;
  margin-bottom: 25px;
}
.feature-text {
  text-align: center;
  font-size: 1rem;
  margin-bottom: 200px;
  font-weight: bold;
}
.feature-attempt {
  margin-bottom: 60px;
}
.feature-attempt-box {
  position: relative;
  z-index: auto;
  margin-bottom: 150px;
  padding: 0 0px 36px 0px;
}
.feature-attempt-img {
  max-width: 90%;
  width: 100%;
  margin-top: -105px;
  margin-bottom: 20px;
  border-radius: 8px;
  overflow: hidden;
}
.feature-attempt-copy {
  position: absolute;
  top: -40px;
  left: 5px;
  color: #fff;
  font-size: clamp(1.15rem, 1.5vw + 0.75rem, 1.75rem);
  font-family: "Kiwi Maru", serif !important;
  writing-mode: vertical-rl;
  background-color: #1d8826;
  padding: 26px 5px;
  border-radius: 5px;
}
.feature-attempt-text {
  padding: 0 30px 0 42px;
  margin-bottom: 20px;
  font-size: .9rem;
}
.feature-attempt-box::before {
  content: "";
  display: inline-block;
  position: absolute;
  right: 0;
  bottom: 0;
  margin: auto;
  background-color: #e7f5e8;
  width: calc(100% - 20px);
  height: 88%;
  z-index: -1;
  border-radius: 40px;
}

.feature-relatio {
  margin-bottom: 60px;
}

/* 特徴カード */
.card-feature {
  position: relative;
  border: none;
  background: transparent;
  border-radius: 20px;
  overflow: visible;
  transition: transform 0.4s ease, box-shadow 0.4s ease;
}
.card-feature:hover {
  transform: translateY(-4px);
  text-decoration: none;
}

.card-feature img {
  width: 100%;
  border-radius: 20px;
  transition: transform 0.5s ease, box-shadow 0.5s ease;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);
}
.card-feature:hover img {
  transform: scale(1.04);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
}
.card-feature .card-footer {
  position: absolute;
  bottom: -2rem;
  left: 0;
  width: 100%;
  display: flex;
  justify-content: center;
}

.btn-feature {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background-color: #028760;
  width: 280px;
  /* white-space: nowrap; */
  color: #fff;
  font-weight: 600;
  font-size: 1rem;
  border-radius: 50px;
  padding: 0.8rem 1.5rem;
  box-shadow: 0 5px 15px rgba(2, 135, 96, 0.2);
  transition: all 0.4s ease;
  z-index: 2;
  position: relative;
}
.btn-feature::before {
  content: "adjust";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.3em;
  line-height: 1;
  display: inline-block;
  margin-left: 0.4rem;
  vertical-align: middle;
  transition: transform 0.4s ease;
}
.btn-feature::after {
  content: "";
  width: 1rem;
}
.card-feature:hover .btn-feature {
  color: #111511;
  background-color: #FFF;
  transform: translateY(-2px);
}

/* ---
   セクション：スライドナビ
------------------------------- */
/* --- 全体構成 --- */
.section-nav-swiper {
  padding: 2rem 0;
  background-color: #1d8826;
}

/* --- Swiper本体 --- */
.section-nav-swiper .swiper {
  margin: 0 3rem;
  padding: 0;
}
.section-nav-swiper .swiper-slide {
  display: flex;
  justify-content: center;
  box-sizing: border-box;
  flex-shrink: 0;
}

/* --- ナビボタン --- */
.section-nav-swiper .btn-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  max-width: 240px;
  padding: 1.25rem 1rem;
  font-weight: 600;
  border: 1px solid #028760;
  background: #fff;
  color: #111511;
  border-radius: 0;
  text-decoration: none;
  transition: all 0.3s ease;
}
.section-nav-swiper .btn-nav::before {
  content: "";
  width: 1rem;
}
.section-nav-swiper .btn-nav::after {
  content: "arrow_circle_right";
  font-family: "Material Symbols Outlined";
  font-size: 1.3em;
  color: #028760;
  transition: transform 0.3s ease, color 0.3s ease;
}
.section-nav-swiper .btn-nav:hover {
  background: #028760;
  color: #fff;
}
.section-nav-swiper .btn-nav:hover::after {
  color: #fff;
  transform: translateX(4px);
}

/* --- コントロール矢印 --- */
.section-nav-swiper .swiper-button-prev,
.section-nav-swiper .swiper-button-next {
  position: absolute;
  top: 50%;
  /* transform: translateY(-50%); */
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #fff;
  color: #028760;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  transition: all 0.3s ease;
  z-index: 10;
}
.section-nav-swiper .swiper-button-prev::after,
.section-nav-swiper .swiper-button-next::after {
  font-size: 1.2rem;
  line-height: 1;
}
.section-nav-swiper .swiper-button-prev:hover,
.section-nav-swiper .swiper-button-next:hover {
  background: #028760;
  color: #fff;
  box-shadow: 0 0 15px rgba(2, 135, 96, 0.25);
}
.section-nav-swiper .swiper-button-prev {
  left: 10px;
}
.section-nav-swiper .swiper-button-next {
  right: 10px;
}

/* Safariなどで中央ズレする対策 */
.section-nav-swiper .swiper {
  position: relative;
}
.section-nav-swiper .swiper-wrapper {
  align-items: center; /* スライド内容と高さを揃える */
}

/* ---
   セクション：採用情報
------------------------------- */
.section-recruit {
  position: relative;
  display: block;
  margin-bottom: 40px;
  padding-top: 12vh;
}
.section-recruit h2 {
  text-align: left;
  letter-spacing: 0.1em;
  position: relative;
  padding-bottom: 26px;
  margin-bottom: 40px;
}
.section-recruit h2::before {
  content: "Recruit";
  display: inline-block;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  font-size: 1rem;
  letter-spacing: 0.2em;
  color: #b2dabf;
  font-family: "Montserrat", sans-serif;
  font-weight: 700;
}

/* 左カラム：ビジュアルエリア */
.recruit-visual {
  position: absolute;
  bottom: auto;
  top: 40px;
  max-width: 96vw;
}

.recruit-visual-img img {
  height: 230px;
  border-radius: 0px 40px 40px 0px;
}

.recruit-visual-text {
  position: absolute;
  top: -45px;
  left: 60px;
  writing-mode: vertical-rl;
  font-family: "Kiwi Maru", serif !important;
  font-size: clamp(1.5rem, 1.5vw + 0.75rem, 1.75rem);
  letter-spacing: 0.1em;
  color: #fff;
}

.recruit-visual-text-in {
  display: inline-block;
  margin: 0 13px;
  background-color: #1d8826;
  padding: 15px 3px 15px;
  border-radius: 5px;
}

/* 右カラム：募集リスト */
.recruit-content {
  max-width: 95vw;
  margin-left: 5vw;
  padding: 26px 26px 40px 26px;
  border-radius: 40px 0px 0px 40px;
  background-color: #e7f5e8;
  width: 100%;
}
.recruit-list {
  max-width: 690px;
  width: 100%;
  background-color: #fff;
  border-radius: 5px;
  padding: 10px 20px 10px 20px;
  display: flex;
  flex-wrap: wrap;
  margin-bottom: 20px;
  list-style: none;
}
.recruit-list-item:not(:nth-child(2n)) {
  margin-right: 0;
}
.recruit-list-item {
  width: 100%;
  border-bottom: 1px solid #cfe3dd;
  position: relative;
}
.recruit-list-item:last-of-type {
  border-bottom: none;
}
.recruit-list-link {
  position: relative;
  display: flex;
  align-items: center;
  padding: 0.9rem;
  color: #111511;
  font-weight: 600;
  font-size: 1rem;
  text-decoration: none;
  transition: color 0.3s ease;
}
.recruit-list-link::before {
  content: "adjust";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.2em;
  line-height: 1;
  margin-right: 0.5rem;
  color: #028760;
  flex-shrink: 0;
  vertical-align: middle;
}
.recruit-list-link::after {
  content: "arrow_forward";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.3em;
  line-height: 1;
  color: #028760;
  margin-left: auto;
  flex-shrink: 0;
  transition: transform 0.3s ease, color 0.3s ease;
}
.recruit-list-link:hover {
  color: #01674d;
  background-color: rgba(254,228,135,.25);
}
.recruit-list-link:hover::before,
.recruit-list-link:hover::after {
  color: #01674d;
}
.recruit-list-link:hover::after {
  transform: translateX(4px);
}

/* ---------------------------------------------------------------------
  05.5 Main - Page
--------------------------------------------------------------------- */
.page .main-content {
  position: relative;
  margin-top: 120px;
}
.page .main-content::before {
  background-image: url("../img/page/page-header.jpg");
  background-repeat: no-repeat;
  background-position: center center;
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  margin: auto;
  z-index: -1;
  overflow: hidden;
  /* Setting */
  height: 90px;
  top: -90px;
  width: calc(100% - 20px);
  background-size: 100% 90px;
  border-radius: 8px;
}

.section-main-content {
  --section-padding: clamp(1.618rem, 3vw + 1rem, 4.236rem);
  padding-bottom: var(--section-padding);
  padding-top: 1rem;
}

/* ---------------------------------------------------------------------
  05.6 Main - Breadcrumb
--------------------------------------------------------------------- */
/*-- パンくず全体 --*/
.breadcrumb-wrap {
  padding: 0.75rem 0;
}

/*-- 各リスト要素 --*/
.breadcrumb {
  background: transparent;
  font-size: 0.9rem;
  padding: 0;
}

/*-- リンク部分 --*/
.breadcrumb-item a {
  color: #028760;
  text-decoration: underline;
  transition: color 0.2s ease;
}

.breadcrumb-item a:hover {
  color: #02684e;
  text-decoration: none;
}

/*-- 区切り記号の色 --*/
.breadcrumb-item + .breadcrumb-item::before {
  color: #999;
}

/*-- 最後（現在地）は強調 --*/
.breadcrumb-item.active {
  color: #333;
  font-weight: 600;
}

/* ---------------------------------------------------------------------
  05.7 Main - Sidebar
--------------------------------------------------------------------- */
/*-- コンテナ --*/
.side-nav {
  overflow: hidden;
  border-radius: 16px;
}
/*-- タイトル --*/
.side-nav-title {
  padding: 1.25rem 0;
  text-align: center;
  background-color: #028760;
  border-bottom: 1px solid #ddd;
}
.side-nav-heading {
  font-size: 1.2rem;
  font-weight: 700;
  margin: 0;
  color: #FFF;
}
/* ---
   ナビリスト
------------------------------- */
.side-nav-list .nav-link {
  position: relative;
  display: flex;
  align-items: center;
  padding: 0.75rem 0.5rem;
  color: #111511;
  font-weight: 600;
  font-size: 0.9rem;
  text-decoration: none;
  width: 100%;
  transition: 
    color 0.3s ease,
    background-color 0.3s ease;
}
.side-nav-list > ul > li > .nav-link {
  background-color: #e7f5e8;
  border-top: 1px dotted #1d8826;
}
.side-nav-list > ul > li > .nav-link::before {
  margin-top: 2px;
  content: "adjust";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.1em;
  line-height: 1;
  margin-right: 0.15rem;
  color: #028760;
  flex-shrink: 0;
  vertical-align: middle;
}
.side-nav-list > ul > li:first-of-type > .nav-link {
  border-top: none;
}

.side-nav-list > ul > li > .nav-link::after {
  content: "arrow_forward";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.3em;
  line-height: 1;
  color: #028760;
  margin-left: auto;
  flex-shrink: 0;
  transition: transform 0.3s ease, color 0.3s ease;
}
.side-nav-list > ul > li > .nav-link:hover,
.side-nav-list > ul > li > .nav-link.active {
  color: #fff;
  background-color: #40b477;
}
.side-nav-list > ul > li > .nav-link:hover::before,
.side-nav-list > ul > li > .nav-link:hover::after,
.side-nav-list > ul > li > .nav-link.active::before,
.side-nav-list > ul > li > .nav-link.active::after {
  color: #fff;
}
.side-nav-list > ul > li > .nav-link:hover::after,
.side-nav-list > ul > li > .nav-link.active::after {
  transform: translateX(4px);
}
/*
.side-nav-list li.has-child > .nav-link {
  border-top: none;
}
*/

.side-nav-list ul ul > li > .nav-link {
  background-color: #f3faf4;
  border-top: 1px dotted #b9d7bb;
  border-bottom: none;
  font-weight: 500;
}
.side-nav-list ul ul > li > .nav-link::before {
  content: "keyboard_double_arrow_right";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.1em;
  line-height: 1;
  margin-right: 0.5rem;
  color: #028760;
}
.side-nav-list ul ul > li > .nav-link::after {
  display: none;
}
.side-nav-list ul ul > li > .nav-link:hover,
.side-nav-list ul ul > li > .nav-link.active {
  color: #fff;
  background-color: #40b477;
}
.side-nav-list ul ul > li > .nav-link:hover::before,
.side-nav-list ul ul > li > .nav-link:hover::after,
.side-nav-list ul ul > li > .nav-link.active::before,
.side-nav-list ul ul > li > .nav-link.active::after {
  color: #fff;
}


/* ---------------------------------------------------------------------
  05.8 Main - Article
--------------------------------------------------------------------- */

/* 見出し */
.article-header {
  position: relative;
  margin-bottom: clamp(1rem, 2vw + 0.5rem, 1.618rem);
  padding-bottom: clamp(1rem, 0.5vw + 0.5rem, 1.25rem);
}
.article-header::before, .article-header::after {
  content: "";
  display: inline-block;
  position: absolute;
  left: 0;
  bottom: 0;
  margin: auto;
}
.article-header::before {
  width: 100%;
  height: 5px;
  background-color: #e4e7e8;
  border-radius: 3px;
}
.article-header::after {
  background-color: #028760;
  border-radius: 3px;
  width: 120px;
  height: 5px;
}

/* 前が hタグ以外のときだけ余白を付ける */
.article-body *:not(h3):not(h4):not(h5):not(h6) + h3,
.article-body *:not(h3):not(h4):not(h5):not(h6) + h4,
.article-body *:not(h3):not(h4):not(h5):not(h6) + h5,
.article-body *:not(h3):not(h4):not(h5):not(h6) + h6 {
  margin-top: 3rem; /* ← 好きな量に調整可能 */
}

.article-body h3 {
  position: relative;
  padding: 0 0 .75rem;
  line-height: 1.2;
  border-bottom: 2px solid #e4e7e8;
  scroll-margin-top: 120px;
}
.article-body h3::before {
  margin-right: .25em;
  content: "temp_preferences_eco";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.25em;
  line-height: 1;
  color: #028760;
  vertical-align: middle;
}

.article-body h4 {
  padding: 0 0 13px 18px;
  border-bottom: 2px solid #e4e7e8;
  position: relative;
}
.article-body h4::before {
  content: "";
  display: inline-block;
  position: absolute;
  top: 8px;
  left: 0;
  margin: auto;
  background-color: #028760;
  width: 5px;
  height: 20px;
  border-radius: 3px;
}
.article-body h5 {
  display: flex;
  padding: 16px;
  line-height: 1.3;
  background-color: #e7f5e8;
  position: relative;
  overflow: hidden;
  border-radius: 10px;
}
.article-body h5::before {
  content: "adjust";
  font-family: "Material Symbols Outlined";
  font-weight: normal;
  font-style: normal;
  font-size: 1.2em;
  line-height: 1.2;
  margin-right: 0.5rem;
  color: #028760;
  flex-shrink: 0;
  vertical-align: middle;
}
.article-body h6 {
  padding: 16px;
  line-height: 1.3;
  background-color: #e4e7e8;
  position: relative;
  overflow: hidden;
  border-radius: 10px;
}

/* テーブル */
.article-body table {
  margin-bottom: 1.5rem;
  width: 100%;
  border: 1px solid #dad8d8;
  border-collapse: collapse;
}
.article-body table thead th {
  padding: 8px 8px;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.3em;
  text-align: center;
  vertical-align: middle;
  background-color: #e7f5e8;
  border: 1px solid #dad8d8;
  letter-spacing: 0.05em;
}
.article-body table th {
  padding: 8px 8px;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.3em;
  text-align: center;
  vertical-align: middle;
  background-color: #e7f5e8;
  border: 1px solid #dad8d8;
  letter-spacing: 0.05em;
}
.article-body table td {
  padding: 12px 12px;
  font-size: 15px;
  line-height: 1.3em;
  /* text-align: justify; */
  vertical-align: middle;
  border: 1px solid #dad8d8;
  background-color: #fff;
}
.article-body table th p:last-of-type,
.article-body table td p:last-of-type {
  margin-bottom: 0;
}

.article-body table.border-0 {
  padding: 0;
  border: none;
  background-color: transparent;
}
.article-body table.border-0 th,
.article-body table.border-0 td {
  padding: 0;
  border: none;
  vertical-align: top;
  background-color: transparent;
}
.article-body table.border-0 img {
  max-width: inherit;
  vertical-align: inherit;
}

.article-body table.flow {
  margin-bottom: 0;
  border: none;
  background-color: transparent;
}
.article-body table.flow th,
.article-body table.flow td {
  border: none;
  padding: 0;
  background-color: transparent;
}
.article-body table.flow img {
  max-width: inherit;
  vertical-align: inherit;
}

.article-body ul,
.article-body ol {
  padding: 15px 15px 15px 25px;
}
.article-body ul li,
.article-body ol li {
  margin-bottom: .5rem;
  /* font-weight: 500; */
  font-size: 1rem;
}
.article-body ul li:last-of-type,
.article-body ol li:last-of-type {
  margin-bottom: 0;
}

.article-body hr {
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}

/* ---
   インデックス
------------------------------- */
/* index card */
.card-index {
  border: 1px solid #e6e6e6;
  border-radius: 12px;
  transition: all .3s ease;
}

.card-index:hover {
  background: #f8fbf8;
  transform: translateY(-3px);
  border-color: #028760;
}

/* タイトル（改行対応） */
.card-index-title {
  font-size: 1rem;
  font-weight: 600;
  color: #111;
  line-height: 1.6;
  flex: 1;
  padding-right: 1rem;
}

/* 矢印丸 */
.card-index-arrow {
  width: 38px;
  height: 38px;
  min-width: 38px;
  background: #028760;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.card-index-arrow .material-symbols-outlined {
  color: #fff;
  font-size: 22px;
}

/* カード内のレイアウト崩れ防止 */
.card-index .card-body {
  display: flex;
  align-items: center;
  height: 100%;
}

/* ---
   その他装飾
------------------------------- */
.pdf a {
  background-image: url(../../images/pdficon_s.gif);
  background-repeat: no-repeat;
  background-position: left center;
  padding-left: 35px;
  display: block;
  vertical-align: middle;
  /* height: 30px; */
}

.word a {
  background-image: url(../../images/wordicon_s.gif);
  background-repeat: no-repeat;
  background-position: left center;
  padding-left: 35px;
  display: block;
  vertical-align: middle;
  /* height: 30px; */
}

.excel a {
  background-image: url(../../images/excelicon_s.gif);
  background-repeat: no-repeat;
  background-position: left center;
  padding-left: 35px;
  display: block;
  vertical-align: middle;
  /* height: 30px; */
}

.box_gry {
  margin-bottom: 3rem;
  background-color: #FFF;
  padding: 1rem;
  border: 2px solid #DDD;
}
.box_gry p:last-of-type {
  margin-bottom: 0;
}

.box_pink {
  text-align: left;
  border: 2px solid #fdd6d8;
  background-color: #ffeeef;
  padding: 8px 16px 4px 16px;
}
.box_pink p:last-of-type {
  margin-bottom: 0;
}

.box_dot {
  padding: 20px;
  border: 1px dotted #CCCCCC;
  margin-right: auto;
  margin-left: auto;
  text-align: left;
}

.box_ad {
  margin-bottom: 1.5rem;
  padding: 1rem;
  background-color: #e7ebec;
}
.box_ad p:last-of-type {
  margin-bottom: 0;
}
.box_b {
  background: #5491cb;
  padding: 20px;
  text-align: left;
  color: #fff;
  border-radius: 10px;
}
.box_flow {
  border: 1px solid #bfbfbf;
  text-align: left;
  padding-top: 3px;
  padding-right: 25px;
  padding-bottom: 3px;
  padding-left: 25px;
  margin: 0px;
}

.w-50px {
  width: 50px;
}
.w-250 {
  width: 250px;
}

.miw-200 {
  min-width: 200px;
}
.miw-250 {
  min-width: 250px;
}

.adobe-reader {
  margin-left: auto;
  margin-right: auto;
  padding: 1rem;
  border: 1px solid #DDD;
}
.adobe-reader p {
  margin-bottom: 0;
}

.box_ojt {
  margin-bottom: 3rem;
  width: 100%;
  text-align: left;
  border: 1px solid #028760;
  background-color: #f6fbfc;
  padding: 20px;
  border-radius: 15px;
  box-sizing: border-box;
}
.box_ojt p:last-of-type {
  margin-bottom: 0;
}

.red {
  color: #990000;
}

.f_small {
  font-size: 80%;
}

.floor_box table {
  display: table;
  margin-left: auto;
  margin-right: auto;
  width: auto;
  border-collapse: collapse;
  border-spacing: 0;
  padding: 0;
  border: none;
  background-color: transparent;
}
.floor_box table tr {
  display: table-row;
  line-height: inherit;
}
.floor_box table th,
.floor_box table td {
  padding: 0;
  border: none;
  font-size: 100%;
  vertical-align: middle;
  background-color: transparent;
}
.floor_box table img {
  width: revert-layer;
  height: revert-layer;
  max-width: inherit;
  vertical-align: middle;
}
.floor_box table img.flg_u {
  display: block;
}

.kango_floor_box table {
  display: table;
  margin-left: auto;
  margin-right: auto;
  width: auto;
  border-collapse: collapse;
  border-spacing: 0;
  padding: 0;
  border: none;
  background-color: transparent;
}
.kango_floor_box table tr {
  display: table-row;
  line-height: inherit;
}
.kango_floor_box table th,
.kango_floor_box table td {
  padding: 0;
  border: none;
  font-size: 100%;
  vertical-align: middle;
  background-color: transparent;
}
.kango_floor_box table img {
  width: revert-layer;
  height: revert-layer;
  max-width: inherit;
  vertical-align: middle;
}
.kango_floor_box table img.flg_u {
  display: block;
}

.floor-scroll > table{
  width: max-content; /* “中身の幅”で広がる → スクロール対象になる */
}


.notes {
  color: #d90000;
  line-height: 1.5em;
}

.arrow_box {
  margin-left: auto;
  margin-right: auto;
  position: relative;
  width: 300px;
  background: #5491cb;
  padding: 20px;
  text-align: left;
  color: #fff;
  font-size: 14px;
  font-weight: bold;
  border-radius: 15px;
}
@media (min-width: 992px) {
  .arrow_box:after {
    border: solid transparent;
    content: '';
    height: 0;
    width: 0;
    pointer-events: none;
    position: absolute;
    border-color: rgba(90, 230, 40, 0);
    border-top-width: 10px;
    border-bottom-width: 10px;
    border-left-width: 30px;
    border-right-width: 30px;
    margin-top: -10px;
    border-right-color: #5491cb;
    right: 100%;
    top: 50%;
  }
}

/* 病院指標 */
.out_link {
  text-align: right;
}
ol.contents li {
  margin: 0;
  padding: .25rem 0;
  line-height: normal;
}
a.csv_btn {
  border: 1px solid #008000;
  color: #008000;
  background-color: #b8f28c;
  width: 75px;
  font-size: x-small;
  font-weight: bold;
  padding: 5px;
  margin-left: 20px;
  position: relative;
  top: -2px;
}
.div-title, .div-title-hist {
  border-left: 5px solid #028760;
  padding: 7px 0 7px 5px;
  margin-top: 35px;
  margin-bottom: 15px;
  font-size: large;
}
.comment {
  background-color: #f1f1f1;
  margin-top: 15px;
  margin-bottom: 15px;
  padding: 10px 15px 10px 15px;
}

.dot {
	text-align: center;
	width: 100%;
	border-bottom-width: 1px;
	border-bottom-style: dotted;
	border-bottom-color: #ccc;
	margin-top: 15px;
	margin-bottom: 15px;
}

.couse_a {color: #e8546b}
.couse_b {color: #0067b4}

.blu {color: #0A2E6B}
.pnk {color: #FA9AA3}
.red {color: #990000}
.grn {color: #324606}
.org {color: #FF6600}
.brn {color: #663300}
.vlt {color: #9999C8}
.yrw {color: #FFBF00}
.wht {color: #FFFFFF}
.gry {color: #999999}

.kenshin-flow li {
  margin-bottom: 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px dotted #DDD;
}

/* 外来担当医・休診案内 */

table.type4 {
	width: 100%;
	border-collapse:collapse;
}
table.type4 th {
	background-color: #eeeeee;
	font-weight: normal;
}
table.type4 th, table.type4 td {
	padding: 2px;
	border: 1px solid #CCCCCC;
	text-align: center;
}
table.type4 .st {
	background-color: #dbe5ef;
	text-align: left;
	padding-left: 10px;
}
table.type4 .sst {
	background-color: #f6f6e3;
}
table.type4 .c1_blu {
	background-color: #b8d7f1;
}
table.type4 .c1_grn {
	background-color: #90EE90;
}
table.type4 .c1_red {
	background-color: #fdd6d8;
}
table.type4 .c1_org {
	background-color: #ffdbab;
}

table.type4s,
table.type4s th,
table.type4s td {
  padding: 0;
  border: none;
  background-color: transparent;
}

table.type4s .c1_blu {
	background-color: #b8d7f1;
}
table.type4s .c1_grn {
	background-color: #90EE90;
}
table.type4s .c1_red {
	background-color: #fdd6d8;
}
table.type4s .c1_org {
	background-color: #ffdbab;
}

table td table.type0 td{
	border-collapse:collapse;
	border-top-style: none;
	border-right-style: none;
	border-bottom-style: none;
	border-left-style: none;
	padding: 1px;
}
table.pink {
	border-top-color: #c760ad;
	border-right-color: #c760ad;
	border-bottom-color: #c760ad;
	border-left-color: #c760ad;
}
table.green {
	border-top-color: #409d27;
	border-right-color: #409d27;
	border-bottom-color: #409d27;
	border-left-color: #409d27;
}
table.orange {
	border-top-color: #ff7f00;
	border-right-color: #ff7f00;
	border-bottom-color: #ff7f00;
	border-left-color: #ff7f00;
}
table.purple {
	border-top-color: #8068b0;
	border-right-color: #8068b0;
	border-bottom-color: #8068b0;
	border-left-color: #8068b0;
}

/* 人間ドック */
table.type1 th.ct,table.type1 td.ct {
	text-align: center;
}

table.type1 th.rt,table.type1 td.rt {
	text-align: right;
}


table.type1 {
	width: 100%;
	border-collapse:collapse;
	border-top-width: 1px;
	border-top-style: solid;
	border-top-color: #CCCCCC;
}
table.type1 th {
	background-color: #eeeeee;
	font-weight: normal;
	text-align: left;
	vertical-align: top;
}
table.type1 th, table.type1 td {
	padding: 6px;
	border-right-width: 1px;
	border-bottom-width: 1px;
	border-right-style: solid;
	border-bottom-style: solid;
	border-left-style: none;
	border-right-color: #CCCCCC;
	border-bottom-color: #CCCCCC;
}
table.type1 .rightcell {
	border-right-style: none;
}

table.type1 .st {
	background-color: #f2f4f6;
}
table.type1 .acouse {
	background-color: #e8546b;
	color: #FFF;
}
table.type1 .bcouse {
	background-color: #0067b4;
	color: #FFF;
}

/* 診療科・センター・部門 */
#menubox ul{
	margin: 0px;
	padding: 0px;
}
#menubox ul li{
	float: none;
	list-style-type: none;
	margin: 0px;
	padding: 0px;
}

#menubox li a {
	overflow: hidden;
	border-right-style: solid;
	border-bottom-style: solid;
	border-right-width: 1px;
	border-bottom-width: 1px;
	border-right-color: #999999;
	border-bottom-color: #999999;
	list-style-type: none;
	display: block;
	width: 100%;
	margin-bottom: 5px;
	background-image: url(../../images/arrow_b.gif),  url(../../images/menubox_bg.gif);
	background-repeat: no-repeat, repeat;
	background-position: 8px;
	padding-top: 2px;
	padding-right: 5px;
	padding-bottom: 2px;
	padding-left: 20px;
}
div#menubox li a {
  color: #004986;
}
div#menubox li a:hover {
  text-decoration: none;
}

.caption {
  font-size: 80%;
  text-align: center !important;
}

/* 研修医募集 */
.fontGrn {
  color: #46bd7b;
}
.read_ttl {
    overflow: hidden;
    color: #028760;
    font-size: 129%;
    margin-bottom: 10px;
}

table.type3 {
	border-collapse:collapse;
	border-top: 1px solid #999;
}
table.type3 th, table.type3 td {
  font-size: .85rem;
	font-weight: normal;
	text-align: center;
  vertical-align: middle;
	padding: 4px ;
	border-bottom: 1px solid #999;
	border-left: 1px solid #999;
}
table.type3 th {
	font-weight: normal;
	background-color: #e1f3e8;
}
table.type3 th:first-child, table.type3 td:first-child {
	border-left: none;
}
table th.bg_grn, table td.bg_grn {
  background-color: #e1f3e8;
}
table.type3 table {
  margin: 0;
}

/* サイトマップ */
.ft_tt {
  border-bottom: none;
  background-color: #e7f5e8;
  padding: 15px 15px 14px 25px;
  font-size: 1.25rem;
  font-weight: 500;
}
.ft_tt a {
  color: #028760;
}
.ft_tt a:hover {
  text-decoration: none;
}
.sitemap ul {
  list-style: none;           /* liの初期スタイル無効化 */
  padding: 0;
  margin: 0;
}
.sitemap ul li {
  border-bottom: 1px dotted #ccc; /* ドットタイプのボーダー */
}
.sitemap ulli:last-child {
  border-bottom: none;
}

/* リンク本体 */
.sitemap ul li a {
  position: relative;
  display: flex;
  align-items: center;
  padding: 0.75rem 0 0.75rem 1.8rem;
  color: #111511;
  text-decoration: none;
  font-size: 0.95rem;
  line-height: 1.6;
  transition: color 0.3s ease;
}
.sitemap ul li a::before {
  content: "arrow_circle_right";
  font-family: "Material Symbols Outlined";
  font-size: 1.2rem;
  position: absolute;
  left: 0;
  top: 53%;
  transform: translateY(-50%);
  color: #028760;
  transition: transform 0.3s ease, color 0.3s ease;
}
.sitemap ul li a:hover {
  color: #028760;
}
.sitemap ul li a:hover::before {
  transform: translateY(-50%) translateX(4px);
}


/* =====================================================================
   06 Responsive Breakpoints
      各デバイスサイズに対応したメディアクエリ設定。
      Bootstrap標準（576px, 768px, 992px, 1200px, 1400px）を基準に、
      フォントサイズ・余白・レイアウトを調整する。
===================================================================== */

/* ---------------------------------------------------------------------
   06.1 Small(sm) ≥576px
--------------------------------------------------------------------- */
@media (min-width: 576px) {
  body {
    font-size: 1rem;
  }
  
  /* 05.1 Header */
  .nav-button .btn-navicon {
    width: 70px;
    height: 70px;
  }
  .nav-button .btn-navicon .icon-nav {
    font-size: 2rem;
  }
  .nav-button .btn-navicon .btn-label {
    letter-spacing: 1px;
  }
  
  /* 05.2 Navigation */
  .navbar-toggler {
    width: 70px;
    height: 70px;
  }
  .navbar-toggler .toggler-line {
    width: 32px;
    height: 3px;
  }
  .navbar-toggler .toggler-line:nth-child(1) { top: 24px; }
  .navbar-toggler .toggler-line:nth-child(2) { top: 33px; }
  .navbar-toggler .toggler-line:nth-child(3) { top: 42px; }
  
  /* セクション：公式SNS */
  .section-sns .sns-content {
    padding: 50px 64px 50px 94px;
    border-radius: 40px;
  }
  
}

/* ---------------------------------------------------------------------
  06.2 Medium(md) ≥768px
--------------------------------------------------------------------- */
@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
  
  /* セクション：ヒーロー */
  .hero-illust-01 {
    position: absolute;
    right: -50px;
    bottom: 0;
    width: 30vw;
    height: auto;
    z-index: 3;
    animation: 3s infinite news-at-leaf;
  }
  
  /* セクション：新着情報 */
  .article-category {
    align-items: flex-start;
  }
  
  .medical-illust-01 {
    display: none;
  }
  .medical-illust-02 {
    display: none
  }
  
  /* 記事カテゴリーメニュー */
  .article-category {
    margin-top: 1rem;
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }
  .article-category .nav-item {
    width: 100%;
    border-bottom: 1px solid #dddcd6;
  }
  .article-category .nav-link {
    position: relative;
    transition: all 0.3s ease;
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-top: none;
    border-bottom: none;
    justify-content: flex-start;
    padding: 0.75rem 0;
    font-size: 1rem;
    color: #111511;
    width: 100%; 
    background-color: transparent;
  }
  .article-category .nav-link:hover,
  .article-category .nav-link.active {
    background-color: transparent;
    color: #028760;
  }
  .article-category .nav-link::after {
    content: "";
    position: absolute;
    right: 1rem;
    top: 50%;
    width: 0.45rem;
    height: 0.45rem;
    border-top: 2px solid transparent;
    border-right: 2px solid transparent;
    transform: translateY(-50%) rotate(45deg);
    opacity: 0;
    transition: all 0.25s ease;
  }
  .article-category .nav-link:hover::after,
  .article-category .nav-link.active::after {
    border-top-color: #028760;
    border-right-color: #028760;
    opacity: 1;
    right: 0.6rem;
  }
  .article-category .nav-link:hover .material-symbols-outlined,
  .article-category .nav-link.active .material-symbols-outlined {
    color: #028760;
  }
  
  /* セクション：病院メニュー */
  .section-menu .section-body::before {
    height: 320px;
  }
  
  /* セクション：求人情報 */
  .section-recruit {
    position: relative;
    display: flex;
    justify-content: flex-end;
  }
  .recruit-content {
    border-radius: 60px 0px 0px 60px;
    max-width: 65.11vw;
    padding: 5.2vw 2vw 3.125vw 12.1vw;
  }
  .recruit-visual {
    position: absolute;
    left: 0;
    top: 50px;
    max-width: 44.8vw;
    width: 100%;
  }
  
  /* セクション：公式SNS */
  .section-sns .sns-content {
    padding: 50px 64px 50px 94px;
    border-radius: 40px;
  }
  
  
  /* 下層ページ：ヘッダーイメージ */
  .page .main-content {
    margin-top: 140px;
  }
  .page .main-content::before {
    /* Setting */
    background-size: 100% 100px;
    width: calc(100% - 60px);
    height: 100px;
    top: -100px;
  }

}

/* ---------------------------------------------------------------------
  06.3 Large(lg) ≥992px
--------------------------------------------------------------------- */
@media (min-width: 992px) {
  body {
    font-size: 1rem;
  }
  
  /* Bootstrap */
  .lead {
    font-size: 1.1rem;
  }
  
  /* ナビゲーショングループ */
  .nav-group {
    padding: .75rem 1rem .75rem;
    background-color: #FFF;
    border-bottom-left-radius: 16px;
  }
  
  /* セクション：ヒーロー */
  .section-hero {
    height: 100vh;
  }
  .section-hero .section-body::before {
    width: 32vw;
    height: 20vw;
    top: -8vw;
    left: -6vw;  
  }

  /* セクション：新着情報 */
  .news-wrap {
    padding-bottom: 74px;
  }
  .news-main {
    flex-direction: row; /* 横並びに変更 */
    align-items: center;
    gap: 0.5rem;
  }
  .news-meta {
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
  }


  /* セクション：病院メニュー */
  .section-menu .section-body::before {
    height: 160px;
  }
  .card-menu .card-title {
    margin-bottom: 0;
    font-weight: 600;
    font-size: 1.15rem;
  }
  
  /* セクション：診療案内 */
  .section-guide .guide-box {
    padding: 34px;
  }
  .section-guide .guide-box-con {
    font-size: 1.5rem;
  }
  .section-guide .guide-box-title {
    font-size: 1rem;
  }
  .feature-text {
    font-size: 1.15rem;
  }
  
  /* セクション：採用情報 */
  .recruit-content {
    border-radius: 100px 0px 0px 100px;
    padding: 5.2vw 2vw 3.125vw 15.1vw;
  }
  .recruit-visual-img img {
    width: 860px;
    height: auto;
    border-radius: 0px 100px 100px 0px;
  }
  .recruit-list {
    max-width: 690px;
    padding: 30px 30px 35px;
    margin-bottom: 35px;
  }
  .recruit-list-item:not(:nth-child(2n)) {
    margin-right: 20px;
  }
  .recruit-list-item {
    width: calc((100% - 20px) / 2);
    border-bottom: 1px solid #cfe3dd;
    position: relative;
  }
  .recruit-list-item:last-of-type {
    border-bottom: 1px solid #cfe3dd;
  }
  
  /* 下層ページ：ヘッダーイメージ */
  .page .main-content {
    margin-top: 210px;
  }
  .page .main-content::before {
    /* Setting */
    background-size: 100% 170px;
    width: calc(100% - 60px);
    height: 170px;
    top: -170px;
  }
  
  .box_gry {
    padding: 1.5rem;
  }
  .box_ad {
    padding: 1.5rem;
  }
  
}

/* ---------------------------------------------------------------------
  06.4 Extra large(xl) ≥1200px
--------------------------------------------------------------------- */
@media (min-width: 1200px) {
  
  /* セクション基本設定 */
  .section {
    --section-padding: clamp(2.589rem, 4.8vw + 1.6rem, 6.778rem);
  }
  .section-header {
    text-align: center;
    margin-bottom: clamp(1rem, 2vw + 0.5rem, 1.618rem);
  }
  .section-body {
    margin-top: clamp(1rem, 2vw + 0.5rem, 1.618rem);
  }
  .section-footer {
    margin-top: clamp(1.618rem, 3vw + 1rem, 2.618rem);
  }
  
  /* セクション：新着情報 */
  .medical-illust-01 {
    display: block;
    position: absolute;
    left: 2vw;
    width: 120px;
    z-index: 1;
  }
  
  /* セクション：病院メニュー */
  .section-menu .section-body {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
  .card-menu .card-title {
    font-size: 1.25rem;
  }
  
  /* セクション：当院の特徴 */
  .feature-attempt {
    margin-bottom: 120px;
  }
  .feature-attempt-copy {
    top: -40px;
    left: 20px;
    font-size: clamp(1.5rem, 1.5vw + 0.75rem, 1.75rem);
    font-family: "Kiwi Maru", serif !important;;
    padding: 26px 5px;
  }
  .feature-attempt-img {
    margin-bottom: 40px;
  }
  .feature-attempt-text {
    padding: 0 60px 0 84px;
    font-size: 1rem;
  }
  .feature-attempt-box {
    margin-bottom: 0;
    padding: 0 0px 58px 0px;
  }
  .feature-attempt-box::before {
    border-radius: 100px;
  }
  .feature-relatio {
    margin-bottom: 100px;
  }
  
  /* 下層ページ：ヘッダーイメージ */
  .page .main-content {
    margin-top: 210px;
  }
  .page .main-content::before {
    /* Setting */
    width: calc(100% - 80px);
  }
  
}

/* ---------------------------------------------------------------------
  06.5 Extra extra large(xxl) ≥1400px
--------------------------------------------------------------------- */
@media (min-width: 1400px) {
  body {
    font-size: 1rem;
  }

  /* セクション：ヒーロー */
  .section-hero .section-body::before {
    width: 28vw;
    height: 16vw;
    top: -8vw;
    left: -6vw;  
  }

  /* 下層ページ：ヘッダーイメージ */
  .page .main-content {
    margin-top: 260px;
  }
  .page .main-content::before {
    /* Setting */
    background-size: 100% 240px;
    border-radius: 20px;
    height: 240px;
    width: calc(100% - 120px);
    top: -240px;
  }
  
}
