/* Extracted from root domain (optimize theme) */


body {
  font-family: var(--swl-font_family, "游ゴシック体", "Yu Gothic", YuGothic, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif) !important;
}

:root {
  --theme-mincho: "游明朝体", "Yu Mincho", "YuMincho", "ヒラギノ明朝 Pro", "Hiragino Mincho Pro", "MS P明朝", "MS PMincho", serif;
  --theme-base-color-theme: #f8ba5e;
  --theme-base-color-theme-rgb: 248, 186, 94;
  --theme-base-color-accent: #c4dc81;
  --theme-base-color-accent-rgb: 196, 220, 129;
  --theme-base-color-sub01: #fff0d6;
  --theme-base-color-sub01-rgb: 255, 240, 214;
  --theme-base-color-sub02: #fff8ed;
  --theme-base-color-txt: #231815;
  --theme-base-color-txt-rgb: 35, 24, 21;
  --theme-base-color-line: #d1c9c0;
  --theme-base-font-base-family: "游ゴシック体", "YuGothic", "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", "Meiryo", sans-serif;
  --theme-base-font-size-pc: 1.8rem;
  --theme-base-font-size-sp: 1.5rem;
  --theme-base-font-size-pc-px: 18px;
  --theme-base-font-size-sp-px: 15px;
  --theme-base-font-ttl-family: "游明朝体", "Yu Mincho", "YuMincho", "ヒラギノ明朝 Pro", "Hiragino Mincho Pro", "MS P明朝", "MS PMincho", serif;
  --theme-base-font-ttl-weight: 500;
  --theme-top-font-catch-family: "游明朝体", "Yu Mincho", "YuMincho", "ヒラギノ明朝 Pro", "Hiragino Mincho Pro", "MS P明朝", "MS PMincho", serif;
  --theme-top-font-catch-weight: 500;
  --theme-top-font-catch-size-pc: 54px;
  --theme-top-font-catch-size-tablet: 41px;
  --theme-top-font-catch-size-sp: 28px;
  --theme-top-font-title-family: "游明朝体", "Yu Mincho", "YuMincho", "ヒラギノ明朝 Pro", "Hiragino Mincho Pro", "MS P明朝", "MS PMincho", serif;
  --theme-top-font-title-weight: 500;
  --theme-top-font-title-s-size-pc: 24px;
  --theme-top-font-title-s-size-tablet: 19.5px;
  --theme-top-font-title-s-size-sp: 15px;
  --theme-top-font-title-l-size-pc: 48px;
  --theme-top-font-title-l-size-tablet: 39px;
  --theme-top-font-title-l-size-sp: 30px;
  --theme-top-firstview-catch-position: left;
  --theme-top-firstview-catch-color: #ffffff;
  --theme-top-firstview-catch-shadow: drop-shadow(0 0 0.5rem rgba(0, 0, 0, 0.9));
  --theme-top-firstview-overlay-color: rgba(140, 129, 98, 0.1);
  --theme-hd-navi-fix-position: sticky;
}

/* Header styles */
.header {
  font-family: var(--theme-base-font-base-family, "游ゴシック体", "YuGothic", "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック", "Yu Gothic", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "メイリオ", "Meiryo", sans-serif);
  /* Force 18px to match root site optimize theme base */
  font-size: 18px !important;
  /* Match root body settings */
  letter-spacing: 0.04em !important;
  line-height: 2 !important;
}

/* ==========================================================================
header (from parent-style.css)
========================================================================== */
.header {
  width: 100%;
  z-index: 8888;
  position: var(--theme-hd-navi-fix-position);
  top: 0;
  box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
}

.header .header-upper {
  background: #fff;
  min-height: 100px;
  display: flex;
  justify-content: space-between;
  padding-left: 20px;
}

/* Breakpoint: Desktop to Tablet (1300px) */
@media (max-width: 1300px) {
  .header .header-upper {
    min-height: 0;
    height: 70px;
    padding-right: 70px !important;
    /* Space for hamburger */
  }

  /* Hide Global Nav */
  .header .header-upper__left .global-nav {
    display: none;
  }

  /* Show Hamburger Button */
  header .hamburger-button {
    display: block !important;
  }
}

/* Breakpoint: Tablet (1024px) */
@media (max-width: 1024px) {
  .header .header-upper {
    padding-left: 10px;
  }
}

/* Breakpoint: Mobile (599px) */
@media (max-width: 599px) {
  .header .header-upper {
    height: 50px;
    padding-right: 100px;
  }
}

.header .header-upper__left {
  flex-shrink: 2;
  display: flex;
}

.header .header-upper__left .global-nav {
  margin-left: 28px;
  font-size: 0.88em;
  line-height: 1.2;
  height: 100%;
}

.header .header-upper__left .global-nav>ul {
  display: flex;
  justify-content: center;
  height: 100%;
}

.header .header-upper__left .global-nav>ul>li {
  position: relative;
  transition: background-color 0.4s;
}

.header .header-upper__left .global-nav>ul>li>a {
  display: flex;
  padding: 0 1vw;
  align-items: center;
  height: 100%;
  color: #231815;
  /* Default nav text color */
  text-decoration: none;
}

/* Dropdown Menu */
.header .header-upper__left .global-nav>ul>li>.sub-menu {
  display: none;
  background: var(--theme-base-color-theme);
  left: 0;
  position: absolute;
  top: 100%;
  min-width: calc(100% + 50px);
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li {
  padding-left: 0;
  border-bottom: 1px solid #fff;
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li>a {
  padding: 10px 30px;
  font-weight: bold;
  color: #fff !important;
  /* Dropdown text is white */
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li:last-child {
  border-bottom: none;
}

.header .header-upper__left .global-nav>ul>li:hover {
  color: #FFF;
  background-color: var(--theme-base-color-theme);
}

/* On hover, make top level link white */
.header .header-upper__left .global-nav>ul>li:hover>a {
  color: #FFF !important;
}

.header .header-upper__left .global-nav>ul>li:hover>.sub-menu {
  display: block;
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li>.sub-menu>li {
  font-size: 0.88em;
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li>.sub-menu>li a {
  padding-top: calc(10px + 0.072em);
  padding-bottom: calc(10px + 0.072em);
  padding-right: 30px;
  background-image: url(https://ggm-clinic.com/wp-content/themes/optimize/assets/img/common/menu-arrow.svg);
  background-repeat: no-repeat;
  background-size: 4px 10px;
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li>.sub-menu>li>a {
  padding-left: 50px;
  background-position: 40px calc(10px + 0.28em);
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li>.sub-menu>li>.sub-menu>li>a {
  padding-left: 70px;
  background-position: 60px calc(10px + 0.28em);
}

.header .header-upper__left .global-nav>ul>li>.sub-menu>li>.sub-menu>li>.sub-menu>li .sub-menu li a {
  padding-left: 90px;
  background-position: 80px calc(10px + 0.28em);
}

.header .header-upper__left .global-nav .sub-menu {
  white-space: nowrap;
  line-height: 1.2;
}

.header .header-upper__left .global-nav .sub-menu li a {
  display: block;
  color: #fff;
}

.header .header-upper__left .global-nav .sub-menu li a:hover {
  background-color: rgba(255, 255, 255, 0.18);
}

/* Right Section (Tel, etc) */
.header .header-upper__right {
  flex-shrink: 1;
  display: flex;
  align-items: center;
  border-left: 1px solid var(--theme-base-color-line);
  max-width: 310px;
  text-align: right;
  padding: 23px 1.56vw;
  min-height: 100px;
  height: 100%;
}

@media (max-width: 1300px) {
  .header .header-upper__right {
    min-height: 0;
    height: 70px;
  }
}

@media (max-width: 1024px) {
  .header .header-upper__right {
    max-width: 230px;
  }
}

@media (max-width: 599px) {
  .header .header-upper__right {
    display: none;
  }
}

.header .header-upper__tel-num {
  font-size: 1.22em;
  line-height: 1em;
  font-weight: bold;
  white-space: nowrap;
  padding-left: 23px;
  position: relative;
}

@media (max-width: 1300px) {
  .header .header-upper__tel-num {
    font-size: 1.11em;
  }
}

.header .header-upper__tel-num::before {
  content: "";
  display: block;
  position: absolute;
  top: 0.2em;
  left: 0;
  width: 20px;
  height: 20px;
  background-color: var(--theme-base-color-txt);
  -webkit-mask-image: url(https://ggm-clinic.com/wp-content/themes/optimize/assets/img/common/ico-tel.svg);
  mask-image: url(https://ggm-clinic.com/wp-content/themes/optimize/assets/img/common/ico-tel.svg);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.header .header-upper__tel-time {
  display: block;
  font-size: 0.77em;
  line-height: 1.4em;
  letter-spacing: 0;
}

@media (max-width: 1300px) {
  .header .header-upper__tel-time {
    font-size: 12px;
  }
}

.header .logo {
  line-height: 1.2;
  transition: 0.3s;
}

h1.logo.img-logo {
  max-width: 250px;
}

@media (max-width: 1300px) {
  .header .logo {
    padding-right: 10px;
  }
}

@media (max-width: 599px) {
  .header .logo {
    padding-right: 5px;
  }
}

.header .logo img {
  width: auto;
  height: auto;
  max-height: 70px;
}

@media (max-width: 599px) {
  .header .logo img {
    max-height: 50px;
  }

  h1.logo.img-logo {
    max-width: 130px !important;
  }
}

.header .logo__txt {
  font-size: 1.3em;
  font-weight: bold;
  color: var(--theme-base-color-txt);
}

@media (max-width: 1024px) {
  .header .logo__txt {
    font-size: 1.11em;
  }

  h1.logo.img-logo {
    max-width: 190px;
  }
}

@media (max-width: 599px) {
  .header .logo__txt {
    font-size: 1.07em;
  }
}

.header .logo a {
  display: flex;
  align-items: center;
  height: 100%;
}

.header .logo:hover {
  opacity: 0.8;
}

.header__mobile-buttons {
  position: absolute;
  right: 0;
  top: 0;
  z-index: 80;
  display: flex;
}

.header__mobile-buttons .header-tel-button {
  display: none;
}

.header__mobile-buttons .header-tel-button a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  background-color: var(--theme-base-color-accent);
}

.header__mobile-buttons .header-tel-button a img {
  width: 20px;
}

@media (max-width: 599px) {
  .header__mobile-buttons .header-tel-button {
    display: block;
  }
}

/*  ハンバーガーメニュー  */
header .hamburger-button {
  background: #ffb74c;
  /* Updated color */
  cursor: pointer;
  display: none;
  width: 70px;
  height: 70px;
  position: relative;
  z-index: 90;
}

@media (max-width: 599px) {
  header .hamburger-button {
    width: 50px;
    height: 50px;
    display: block !important;
    /* Force show */
  }
}

header .hamburger-button span {
  position: absolute;
  background-color: #fff;
  content: "";
  display: block;
  left: 50%;
  top: 50%;
  transform: translateX(-50%);
  height: 1px;
  width: 30px;
}

header .hamburger-button span:nth-child(1) {
  margin-top: -11px;
}

header .hamburger-button span:nth-child(3) {
  margin-top: 11px;
}

@media (max-width: 599px) {
  header .hamburger-button span {
    width: 25px;
  }

  header .hamburger-button span:nth-child(1) {
    margin-top: -8px;
  }

  header .hamburger-button span:nth-child(3) {
    margin-top: 8px;
  }
}

header .hamburger-button.active {
  background-color: var(--theme-base-color-theme);
}

@media (max-width: 1024px) {
  header .hamburger-button.active {
    height: 70px;
    width: 70px;
  }
}

@media (max-width: 599px) {
  header .hamburger-button.active {
    height: 50px;
    width: 50px;
  }
}

@media (max-width: 1200px) {
  header .hamburger-button.active span {
    width: 40px;
  }
}

@media (max-width: 599px) {
  header .hamburger-button.active span {
    width: 30px;
  }
}

header .hamburger-button.active span:nth-child(2) {
  background-color: rgba(255, 255, 255, 0);
}

header .hamburger-button.active span:nth-child(1) {
  margin-top: 0;
  transform: translate(-50%, -50%) rotate(45deg);
}

header .hamburger-button.active span:nth-child(3) {
  margin-top: 0;
  transform: translate(-50%, -50%) rotate(-45deg);
}

/*メニューウィンドウ */

/* Drawer Transition State - Prepare for JS toggle */
header .drawer {
  background-color: var(--theme-base-color-theme);
  color: #fff;
  display: block;
  /* Change from none to block for transition (handle visibility via opacity/pointer-events) */
  height: 100vh;
  line-height: 1.4;
  overflow: auto;
  padding: 100px 5% 100px !important;
  /* Increased top padding to avoid X button overlap */
  position: fixed;
  right: 0;
  top: 0px;
  width: 100%;
  z-index: 80;

  /* Animation props */
  opacity: 0;
  visibility: hidden;
  transform: translateY(-20px);
  /* Slight slide down effect */
  transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s ease;
}

header .drawer.is-active {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

header .drawer .drawer-inner {
  margin: auto;
  max-width: 800px;
}


header .drawer .drawer-nav {
  font-weight: bold;
}

header .drawer .drawer-nav a {
  display: block;
  transition: 0.2s;
  width: 100%;
  color: #fff !important;
  /* Force white text */
  text-decoration: none;
  /* Arrow Icon */
  position: relative;
  background-image: url(https://ggm-clinic.com/wp-content/themes/optimize/assets/img/common/menu-arrow.svg);
  background-repeat: no-repeat;
  background-position: right 20px center;
  /* Position arrow on right */
  background-size: 6px auto;
}

header .drawer .drawer-nav a:hover {
  text-decoration: underline;
}

header .drawer .drawer-nav>ul>li {
  position: relative;
  border-bottom: 1px solid #fff;
  padding: 0 50px 0 20px;
  width: 100%;
}

@media (max-width: 599px) {
  header .drawer .drawer-nav>ul>li {
    padding: 0 40px 0 10px;
  }
}

header .drawer .drawer-nav>ul>li>a {
  position: relative;
  height: 55px;
  display: flex;
  align-items: center;
}

header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot {
  display: block;
  height: 55px;
  width: 50px;
  position: absolute;
  top: 0;
  right: 0px;
  cursor: pointer;
}

@media (max-width: 599px) {
  header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot {
    width: 40px;
  }
}

header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::before,
header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::after {
  position: absolute;
  content: "";
  width: 20px;
  height: 1px;
  background-color: #fff;
  right: 15px;
  top: 25px;
}

@media (max-width: 599px) {

  header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::before,
  header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::after {
    right: 10px;
  }
}

header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::after {
  transform: rotate(90deg);
}

header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot.active::after {
  display: none;
}


/* ==========================================================================
header Overrides (from child-style.css)
========================================================================== */

header .global-nav li a {
  font-weight: bold;
}

.header .header-upper {
  background: #fff;
  min-height: 80px;
  display: block;
  justify-content: space-between;
  padding-left: 20px;
  width: 100%;
}

.header .header-upper__left {
  flex-shrink: 2;
  display: flex;
  justify-content: space-between;
  height: 80px;
}

.header .header-upper__left .global-nav>ul>li>a {
  padding: 0 12px;
}

.header .lang-switch {
  display: block;
}

.header-upper__leftblock {
  display: flex;
  gap: 32px;
  align-items: center;
}

.header-upper__leftblock a {
  color: #AAAAAA;
  font-size: 15px;
}

.header-upper__leftblock a.active {
  text-decoration: underline;
  font-weight: bold;
  color: #231815;
  pointer-events: none;
}

/* Button: Contact */
header .header-upper__left .btn-contact {
  width: 80px;
  height: 100%;
  background: #B5D06A;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 0;
  margin-left: 16px;
  transition: opacity 0.3s ease !important;
}

header .header-upper__left .btn-contact:hover {
  background-color: #B5D06A !important;
  opacity: 0.7;
}

/* Insert Mail Icon */
.header .header-upper__left .btn-contact a {
  color: #fff !important;
  /* Force white text */
  font-size: 13px;
  /* Increased from 13px */
  padding: 0 !important;
  text-align: center;
  display: flex;
  flex-direction: column;
  /* Stack icon and text */
  align-items: center;
  justify-content: center;
  height: 100%;
  width: 100%;
  margin-bottom: 6px;
  /* Slight adjustment */
}

header .header-upper__left .btn-contact a::before {
  content: "";
  display: block;
  width: 35px;
  height: 35px;
  background-image: url(https://ggm-clinic.com/wp-content/uploads/2025/05/mail.png);
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  margin-bottom: 2px;
  position: relative;
  top: -4px;
}


/* Button: Reserve */
header li.btn-reserve {
  align-items: center;
  display: flex;
}

header li.btn-reserve a {
  height: max-content !important;
  padding: 16px 40px 16px 24px !important;
  display: block;
  background: #FF884C;
  color: #ffffff !important;
  /* Force white text */
  border-radius: 100px;
  margin-left: 16px;
  transition: opacity 0.3s ease;
  position: relative;
  /* For arrow */
}

header li.btn-reserve a::after {
  content: "";
  position: absolute;
  right: 24px;
  top: 50%;
  transform: translateY(-50%) rotate(-45deg);
  width: 8px;
  height: 8px;
  border-right: 2px solid #FFFFFF;
  border-bottom: 2px solid #FFFFFF;
}

header li.btn-reserve a:hover {
  opacity: 0.7;
}

header li.btn-reserve:hover {
  background-color: transparent !important;
}

/* Drawer variants */
.drawer-nav li.btn-reserve a {
  background: transparent;
  padding: 0 !important;
  height: 55px !important;
  left: -16px;
}

.drawer-nav li.btn-reserve a::after {
  display: none;
}

/* Responsive Overrides matching root */
@media screen and (max-width: 1300px) {
  .header .header-upper {
    min-height: 70px;
  }

  .header .header-upper__left {
    height: 70px;
  }

  .header .lang-switch {
    display: none;
  }
}

@media screen and (max-width: 599px) {
  .header .header-upper {
    min-height: 50px;
  }

  .header .header-upper__left {
    height: 50px;
  }
}

/* Drawer Fixes & Submenu Animation */
/* Drawer Fixes & Submenu Animation (Grid Method) */
/* Wrapper for grid transition */
/* Drawer Fixes & Submenu Animation (Grid Method) */
/* Wrapper for grid transition */
.header .drawer .drawer-nav .sub-menu {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.3s ease-out;
  /* Slightly faster to match root */
  background: var(--theme-base-color-theme);
  padding: 0;
  margin: 0;
  list-style: none;
}

.header .drawer .drawer-nav .sub-menu.is-open {
  grid-template-rows: 1fr;
}

/* Inner wrapper for overflow hidden */
.header .drawer .drawer-nav .sub-menu>div {
  overflow: hidden;
}

/* Submenu Items Styling per user image */
/* Submenu Items Styling per user image */
.header .drawer .drawer-nav .sub-menu a {
  display: flex;
  align-items: center;
  position: relative;
  background-image: none !important;
  /* Remove generic arrow */
  color: #fff !important;
  padding: 5px 0 !important;
  /* User requested */
  font-size: 0.94em;
  /* User requested */
}

/* Add bottom padding to the last item as requested */
.header .drawer .drawer-nav .sub-menu>div>li:last-child a {
  padding-bottom: 20px !important;
}

/* The > arrow for submenu items - ONLY for submenu items, not parents */
.header .drawer .drawer-nav .sub-menu a::before {
  content: "›";
  /* Simple chevron */
  font-family: monospace;
  margin-right: 10px;
  font-weight: bold;
  transform: rotate(0deg);
  display: inline-block;
  font-size: 1.2em;
  line-height: 1;
}

/* Parent items in drawer (top level) - NO ARROW */
.header .drawer .drawer-nav>ul>li>a {
  background-image: none !important;
  /* Explicitly remove arrow */
}

/* Ensure no pseudo-element arrow on top level either if it was added */
.header .drawer .drawer-nav>ul>li>a::before {
  display: none !important;
}

/* Deep nested submenu (if any) */
.header .drawer .drawer-nav .sub-menu .sub-menu a {
  padding-left: 45px !important;
}

/* Toggle Icon logic */
header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot {
  z-index: 10;
}

header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::before,
header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot::after {
  transition: opacity 0.3s;
}

/* When active (open), hide vertical line to make it a Minus */
header .drawer .drawer-nav>ul>li.menu-item-has-children>.js-menuRoot.active::after {
  opacity: 0;
}