@charset "utf-8";
/* ── main.css — 共通リセット後のスタイル ── */
html{
  box-sizing: border-box;
  scroll-behavior: smooth;
}
body{
  box-sizing: border-box;
}

/* 1. 変数定義 */
:root {
  /* カラー */
  --color-bg-light:    #fff;
  --color-bg-dark:     #000;
  --color-bg-base:     #E7F7F0;
  --color-bg-mid:      #1DCCC0;
  --color-bg-deep:     #45615a;
  --color-bg-key:      #FDC9BE;
  --color-bg-deep-key: #EC708C;
  --color-bg-deep-key-dark:#dd3f62;
  --color-bg-light-key:#FFE8E3;

  /* フォントファミリー */
  --font-logo:     "roca", sans-serif;
  --font-catch:    "hiragino-kaku-gothic-pron", sans-serif;
  --font-body:     "dnp-shuei-mgothic-std", sans-serif;
  --font-en-title: "futura-pt", sans-serif;
  --font-zh:       "alibaba-puhuiti", sans-serif;
  --font-en:       "futura-pt", sans-serif;

  /* フォントサイズ */
  --font-size-xs:  12px;
  --font-size-s:  13px;
  --font-size-sm:  14px;
  --font-size-m:  15px;
  --font-size-md:  16px;
  --font-size-lg:  20px;
  --font-size-xl:  26px;
  --font-size-xxl: 36px;
  --font-size-mega: 52px;

  /* 字間 */
  --ls-tight:   -0.02em;
  --ls-normal:  0;
  --ls-wide:    0.05em;

  /* 行間 */
  --lh-tight:   1.2;
  --lh-normal:  1.6;
  --lh-loose:   1.8;
}

/*マーカー*/
.marker-green {
    background: linear-gradient(transparent 60%, #82ffc39e 0%);
    }

/* 2. タイポグラフィ例 */
.site-logo {
  font-family: var(--font-logo);
  font-size: var(--font-size-lg);
  letter-spacing: var(--ls-wide);
  line-height: var(--lh-tight);
}
@media (max-width: 767px) {
  /* モバイル時にサイトロゴを小さく */
  .site-logo {
    font-size: var(--font-size-sm); /* 14px */
    line-height: var(--lh-tight);
  }
}
@media (max-width: 400px) {
  /* モバイル時にサイトロゴを小さく */
  .site-logo {
    font-size: var(--font-size-xs); /* 12px */
    line-height: var(--lh-tight);
  }
}
.site-logo-sub{
  font-size:var(--font-size-sm);
}
@media (max-width: 767px) {
  /* モバイル時にサイトロゴを小さく */
  .site-logo-sub {
    font-size: var(--font-size-xs); /* 12px */
    line-height: var(--lh-tight);
  }
}
.catch-copy,
h1.main-heading {
  font-family: var(--font-catch);
  font-size: var(--font-size-xxl);
  line-height: var(--lh-tight);
}
h2.section-heading {
  font-family: var(--font-catch);
  font-size: var(--font-size-xxl);
  line-height: var(--lh-normal);
}
p, li, .body-text {
  font-family: var(--font-body);
  font-size: var(--font-size-m);
  line-height: var(--lh-loose);
}

/* 英語タイトル共通 */
.page-title-en {
  display: inline-block;   /* 一文字目をピンクにするためブロック化*/
  font-family: var(--font-en-title);
  font-size: var(--font-size-mega);
  font-weight: bold;
  /* 最初の文字だけピンクに */
}
.page-title-en::first-letter {
  color: var(--color-bg-deep-key);
}

/* ── 共通タイトル（日本語・１文字目ピンク） ── */
.title-jp {
  font-family: var(--font-catch);
  font-size: var(--font-size-xxl);
  line-height: var(--lh-tight);
  margin: 0 0 16px;
}
.title-jp::first-letter {
  color: var(--color-bg-deep-key);
}

/* 3. ヘッダー共通スタイル */
/* site-header 自体は固定ヘッダー */
.site-header {
  position: fixed;
  top: 0; left: 0;
  width: 100%;
  background-color:#ffffffd1;
  z-index: 1000;
}

/* 上段：ロゴ＋コントロール */
.header-top {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 20px;
  width: 100%;
  max-width: 90%;
}
@media (max-width: 767px) {
  /* モバイル時にフレックスボックス左よせ */
  .header-top {
    margin: 0;
    justify-content: flex-start;
  }
}

/* 言語／電話／予約／ハンバーガー */
.header-controls {
  display: flex;
  align-items: center;
}
.header-controls > * {
  margin-left: 16px;
}
.lang-list {
  display: flex;
  list-style: none;
  margin: 0; padding: 0;
}
.lang-list li {
  margin-right: 8px;
}
.lang-list li:last-child {
  margin-right: 0;
}
.lang-list a img {
  display: block;
  width: 24px;
  height: auto;
}
.tel {
  font-family: var(--font-body);
  font-size: var(--font-size-lg);
  color: var(--color-bg-dark);
  text-decoration: none;
}
.btn-reserve {
  font-family: var(--font-body);
  font-size: var(--font-size-md);
  display: inline-block;
  padding: 8px 16px;
  background-color: var(--color-bg-deep-key);
  color: #fff;
  text-decoration: none;
}

@media (max-width: 767px) {
  /* ヘッダー上部の電話＆WEB予約を非表示に */
  .header-controls .tel,
  .header-controls .btn-reserve {
    display: none;
  }
}





/* 下段：ナビ */
.header-nav {
  position: relative;
  overflow: visible;    /* これがないと子の absolute がはみ出すと隠れる */
}
.header-nav .nav-menu {
  display: flex;
  list-style: none;
  padding: 0;
  justify-content: flex-end;
}
.header-nav .nav-menu li {
  position: relative;
  margin: 0 16px;
}
.header-nav .nav-menu li:first-child {
  margin-left: 0;
}
.header-nav .nav-menu a {
  font-family: var(--font-body);
  font-size: var(--font-size-sm);
  color: var(--color-bg-dark);
  text-decoration: none;
}
/* ドロップダウン */
.header-nav .sub-menu {
  display: none;
  position: absolute;
  top: 100%; left: 0;
  background-color: #ffffffd1;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  list-style: none;
  padding: 8px 0;
  z-index: 1001;        /* site-header の 1000 より大きく */
}
.header-nav .nav-menu li:hover > .sub-menu {
  display: block;
}
.header-nav .sub-menu li {
  margin: 0;
}
.header-nav .sub-menu a {
  display: block;
  padding: 8px 16px;
  white-space: nowrap;
  font-size:var(--font-size-sm);
}



/* ── スマホ対応：ヘッダーナビ ── */
@media (max-width: 767px) {
  /* 通常メニューは隠す */
  .header-nav .nav-menu {
    display: none;
  }
}

/*電話とWEB予約ボタンのモバイル時固定用*/
/* デフォルトは非表示 */
.mobile-fixed-bar {
  display: none;
}

/* モバイル時だけ下に固定表示 */
@media (max-width: 767px) {
  .mobile-fixed-bar {
    display: flex;
    position: fixed;
    bottom: 0; left: 0;
    width: 100%;
    justify-content: space-between;
    background: transparent;
    z-index: 1000;
  }
  .mobile-fixed-bar .tel,
  .mobile-fixed-bar .btn-reserve {
    flex: 0 0 50%;
    text-align: center;
    padding: 12px 0;
    color: #fff;
    text-decoration: none;
    font-size: var(--font-size-md);
    border-radius: 0;
  }
  .mobile-fixed-bar .tel {
    background-color: var(--color-bg-mid);
  }
  .mobile-fixed-bar .btn-reserve {
    background-color: var(--color-bg-deep-key);
  }
}

/*new ハンバーガー*/
.header {
  position: relative;
  padding: 5px;
  z-index:999;
}

.hamburger {
  position: fixed;
  top: 0px;
  right: 10px;
  z-index: 100;
  width: 30px;
  height: 30px;
  border: none;
  background: transparent;
  cursor: pointer;
}

.hamburger__line {
  position: absolute;
  left: 11px;
  width: 26px;
  height: 2px;
  background-color: #333;
  transition: all .4s;
}

.hamburger__line:nth-of-type(1) {
  top: 14px;
}
.hamburger__line:nth-of-type(2) {
  top: 23px;
}
.hamburger__line:nth-of-type(3) {
  top: 32px;
}

/* メニューオープン時 */
.hamburger.active .hamburger__line:nth-of-type(1) {
  transform: translateY(9px) rotate(-45deg);
}
.hamburger.active .hamburger__line:nth-of-type(2) {
  opacity: 0;
}
.hamburger.active .hamburger__line:nth-of-type(3) {
  transform: translateY(-9px) rotate(45deg);
}

.nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 300px;
  height: 100vh;
  background-color: #ffffffed;
  box-shadow: 2px 0 4px rgba(0,0,0,.1);
  transform: translateX(-100%);
  transition: transform .4s;
  z-index: 90;
}

.nav.active {
  transform: translateX(0);
}

.nav__list {
  margin: 0;
  list-style: none;
  height: 100%;/*スクロールする場合は指定◎*/
  overflow-y: scroll;/*スクロール*/
  scrollbar-width: none;/*スクロールバー非表示*/
}

.nav__item {
  font-size: var(--font-size-md); /* 通常サイズ */
  padding: 10px 20px;
}

.nav__link {
  display: block;
  font-size: var(--font-size-m); /* 通常サイズ */
  padding: 3px 20px;
  color: #333;
  text-decoration: none;
  border-bottom: 1px solid #eee;
}

/* サブメニュー用クラス */
.nav__sublist {
  list-style: none;
  margin: 0;
  padding: 0 0 0 20px;    /* インデント */
}

/* サブ項目 */
.nav__subitem .nav__link {
  font-size: var(--font-size-s); /* やや小さめ */
  padding: 8px 20px;
  color: #666;                    /* メインより淡い色 */
}

/* ── 多言語化ボックス（固定表示） ── */
.lang-vertical-bar {
  position: fixed;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  background: rgba(255,255,255,0.5);
  border-radius: 8px 0 0 8px;
  padding: 8px 4px;
  z-index: 1000;
}
.lang-list-vertical {
  list-style: none;
  margin: 0;
  padding: 0;
}
.lang-list-vertical li {
  margin: 8px 0;
}
.lang-list-vertical a img {
  display: block;
  width: 32px;
  height: auto;
}

/* ── お問い合わせ（ご予約はこちらから）セクション ── */
.reserve-section {
  background-color: var(--color-bg-base);
  padding: 80px 20px;
}
.reserve-inner {
  max-width: 1000px;
  width: 100%;
  margin: 0 auto;
  text-align: center;
}
/* 説明テキスト */
.reserve-text {
  font-family: var(--font-body);
  font-size: var(--font-size-md);
  color: #000;
  margin-bottom: 40px;
  line-height: var(--lh-normal);
}
/* ボタン群 */
.reserve-buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
  margin-bottom: 24px;
}
.reserve-buttons a {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--font-size-md);
  color: #000;
  text-decoration: none;
  padding: 12px 32px;
  background-color: var(--color-bg-deep-key);
  border-radius: 24px;
  transition: opacity 0.3s;
}
/* モバイル時：100%幅 */
@media (max-width: 767px) {
  .reserve-buttons a {
    width: 100%;
    margin-bottom: 8px;
  }
}
.reserve-buttons a:hover {
  opacity: 0.8;
}
/* フッターリンク */
.reserve-footer {
  font-family: var(--font-body);
  font-size: var(--font-size-sm);
  color: #000;
}
.reserve-footer a {
  color: #000;
  text-decoration: underline;
  margin: 0 8px;
}

/* ── バナーボックスセクション ── */
.banner-box-section {
  /* 全幅＆中央寄せ */
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
  padding: 60px 0px;
}

.banner-box-inner {
  display: flex;
  flex-direction: column; 
  justify-content: center;
  gap: 50px;
  align-items: center;
}

/* モニター募集中ボタン */
.btn-monitor {
  width: 100%;
  max-width: 600px;
  padding: 16px 0px;
  background-color: var(--color-bg-mid);
  color: #000;
  font-family: var(--font-catch);
  font-size: var(--font-size-xl);
  text-align: center;
  border-radius: 50px;
  text-decoration: none;
  transition: opacity 0.3s;
}
.btn-monitor:hover {
  opacity: 0.8;
}

/* アクセスマップバナー */
.banner-access {
  display: block;
  width: 100%;
  max-width: 600px;
}
.banner-access img {
  display: block;
  width: 100%;
  height: auto;
}

/* ── Footer ── */
.site-footer {
  background-color: var(--color-bg-light);
  padding: 60px 20px 20px;
  font-family: var(--font-body);
  color: var(--color-bg-dark);
}
.footer-inner {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  max-width: 1200px;
  margin: 0 auto;
  gap: 40px;
}

/* SNS＋クリニック情報 */
.footer-info {
  font-size: var(--font-size-sm);
}
.footer-sns {
  display: flex;
  gap: 12px;
  list-style: none;
  padding: 0;
  margin-bottom: 16px;
}
.footer-sns img {
  display: block;
  width: 40px;
  height: auto;
}
.footer-info address {
  font-style: normal;
  line-height: var(--lh-normal);
  margin-bottom: 8px;
}
.footer-tel {
  display: inline-block;
  color: var(--color-bg-dark);
  text-decoration: none;
  margin-bottom: 8px;
}
.footer-closed {
  margin: 8px 0;
}
.btn-footer-notice {
  display: inline-block;
  font-size: var(--font-size-s);
  background-color: var(--color-bg-mid);
  color: #fff;
  padding: 4px 8px;
  border-radius: 4px;
  text-decoration: none;
  margin-left: 8px;
}
.footer-hours {
  font-size: var(--font-size-sm);
}

/* ナビゲーションカラム */
.footer-navs {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 20px;
  align-items: flex-end;
}
.footer-nav-col {
  list-style: none;
  padding: 0;
  margin: 0;
}
.footer-nav-col li {
  margin-bottom: 8px;
  font-size: var(--font-size-s);

}
.footer-nav-col a {
  color: var(--color-bg-dark);
  text-decoration: none;
  font-size: var(--font-size-s);
}

/* コピーライト */
.footer-copy {
  text-align: center;
  font-size: var(--font-size-xs);
  margin-top: 40px;
  color: #9f9f9f;
  margin:40px 0;
  font-family: var(--font-en-title);
}

/* レスポンシブ */
@media (max-width: 767px) {
  .footer-inner {
    flex-direction: column;
    align-items: center;
  }
  .footer-navs {
    flex-wrap: nowrap;
  }
  .footer-nav-col {

  }
}

@media (max-width: 500px) {
  .footer-inner {

  }
  .footer-navs {
      flex-wrap: wrap;
      justify-content: flex-start;
  }
  .footer-nav-col {

  }
}

/* 1. パンくず */
.breadcrumb {
  font-size: var(--font-size-sm);
  margin: 100px 20px 0;
}
.breadcrumb a {
  color: var(--color-bg-dark);
  text-decoration: none;
}
.breadcrumb span {
  color: var(--color-bg-dark);
  font-weight: bold;
}

/* main.css に追加 共有スタイル */
.box {
  padding: 20px;
  border-radius: 4px;
  box-sizing: border-box;
  margin-bottom: 24px;
}
.flex {
  display: flex;
}
.flex-col {
  display: flex;
  flex-direction: column;
}
.flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}
.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
@media (max-width:767px) {
  .grid-3 { grid-template-columns: 1fr; }
}

.bg_white{
  background-color:#fff;
}

/* 余白ユーティリティ */
.mb-40 { margin-bottom: 40px; }

/* 共通：中央寄せで幅800pxユーティリティ */
.mw-800 { max-width: 800px; margin: 0 auto; }

/*共通：背景を薄緑*/
.bg-base{
  background-color: var(--color-bg-base);
}
/*共通：背景を薄ピンク*/
.bg-key{
  background-color: var(--color-bg-light-key);
}