@charset 'utf-8';
/* ======================================================
CSS information

 File Name  : style.css
 Style Info : 共通スタイル
====================================================== */

/*****************************************
 * 初期化
 ****************************************/

* { min-height: 0vw; }

*, ::before, ::after { --clamp-root-font-size: 16;--clamp-slope: calc((var(--clamp-max) - var(--clamp-min)) / (var(--clamp-viewport-max) - var(--clamp-viewport-min)));--clamp-y-axis-intersection: calc(var(--clamp-min) - (var(--clamp-slope) * var(--clamp-viewport-min)));--clamp-preffered-value: calc(var(--clamp-y-axis-intersection) * (1rem / var(--clamp-root-font-size)) + (var(--clamp-slope) * 100vi));--clamp: clamp(calc(var(--clamp-min) * (1rem / var(--clamp-root-font-size))),var(--clamp-preffered-value),calc(var(--clamp-max) * (1rem / var(--clamp-root-font-size))));font-size: var(--clamp); }

:root {
  --clamp-viewport-min: 375;
  --clamp-viewport-max: 1200;
  --basecolor1: #3A3335;
  --basecolor2: #FAFFFD;
  --basecolor3: #87919E;
  --basecolor4: #5F5449;
  --basecolor5: #B4E33D;
  --basecolor6: #FF9914;
  --basecolor7: #F45B69;
  --basecolor8: #F9FBF2;
  --basecolor9: #F7EC59;
  --table-border-color: #eee;
  --table-th-bgcolor  : #F8FFE5;
  --input-border-color: #ddd;
  --required: #F26157;
  --border-color: #DDDDDD;
  --spacing: 1px;
  --radius: 10px;
}

:root {
  --base-w: var(--clamp-viewport-min);
  --head-contents-height: 80px;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  :root {
    --base-w: var(--clamp-viewport-max);
    --head-contents-height: 90px;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  :root {
    --head-contents-height: 100px;
  }

}

:target {
  scroll-margin-top: calc(var(--head-contents-height) + 20px);
}

body {
  --clamp-min: 15;
  --clamp-max: 16;
  overflow-x: clip;
  overflow-y: scroll;
  line-height: 1.5;
  color: var(--basecolor1);
  font-weight: 400;
  font-style: normal;
  font-family: "Noto Sans JP", sans-serif;
  overflow-wrap: anywhere;
  word-break: normal;
  line-break: strict;
  background: var(--basecolor2);
}

body.fixed {
  position: fixed;
  width: 100%;
  height: 100vh;
}

body.hidden {
  overflow: hidden;
}

h1, h2, h3, h4, h5, h6 {
  font-size: var(--clamp);
}

.montserrat {
  font-family: "Montserrat", sans-serif;
  font-optical-sizing: auto;
}

dt {
  font-weight: 400;
}

summary {
  cursor: pointer;
  display: block;
  outline: none;
}

summary::-webkit-details-marker {
  display: none;
}

:where(button, [type='button'], [type='reset'], [type='submit']) {
  touch-action: manipulation;
}

/*****************************************
 * ローディング
 ****************************************/

#wrap {
  opacity: 0;
  visibility: hidden;
  overflow: hidden;
}

#wrap.active {
  opacity: 1;
  visibility: visible;
  overflow: auto;
  transition: all .5s ease;
}

#loader {
  opacity: 0;
  visibility: hidden;
  transition: all .5s ease;
}

#loader.active {
  z-index: 9999;
  position: fixed;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100svh;
  background: var(--basecolor8);
  opacity: 1;
  visibility: visible;
}

#load-img {
  width: 160px;
}

#load-img img {
  max-width: 100%;
  height: auto;
}

/*****************************************
 * 枠
 ****************************************/

#header {
  z-index: 9994;
  position: relative;
  background: rgb(255 255 255 / .8);
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #header {
    z-index: 9995;
  }

}

#header.fixed {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  backdrop-filter: blur(10px);
}

#container {
  z-index: 1;
  position: relative;
  padding-bottom: clamp(6.25rem, 3.4091rem + 12.1212vw, 12.5rem);
  background: var(--basecolor2);
}

#footer {

  z-index: 9995;
  position: relative;
  display: flex;
  align-items: center;
  flex-direction: column;
  margin-top: clamp(6.25rem, 4.8295rem + 6.0606vw, 9.375rem);
  width: 100%;
  min-height: 100svh;
  color: var(--basecolor2);
  background: var(--basecolor3);

  &::after {
    content: '';
    position: absolute;
    bottom: calc(100% - 1px);
    left: 0;
    width: 100%;
    height: clamp(6.25rem, 4.8295rem + 6.0606vw, 9.375rem);
    background: var(--basecolor3);
    mask-image: url("../img/common/wave-top.webp");
    mask-repeat: no-repeat;
    mask-position: center 0;
    mask-size: 100% 100%;
    scale: -1 1;
  }

}

.inner {
  padding-inline: clamp(1.25rem, 0.9659rem + 1.2121vw, 1.875rem);
}

/*****************************************
 * ヘッダー内部
 ****************************************/

#head-contents {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--head-contents-height);
}

#head-top {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-top {
    justify-content: space-between;
  }

}

#head-logo {
  width: 140px;
}

#head-logo img {
  max-width: 100%;
  height: auto;
}

#gnav {
  z-index: 9998;
  display: flex;
}

/* ～959px
------------------------------------*/
@media (max-width: 959px) {

  #gnav {
    opacity: 0;
    visibility: hidden;
    position: fixed;
    top: 0;
    left: 0;
    justify-content: space-between;
    align-items: flex-start;
    gap: clamp(1.5625rem, 0.8523rem + 3.0303vw, 3.125rem);
    padding-block: 80px;
    padding-inline: clamp(1.875rem, 1.5909rem + 1.2121vw, 2.5rem);
    width: 100vw;
    height: 100svh;
    background: var(--basecolor2);
    overflow-y: scroll;
    translate: -100%;
    transition: all .3s ease;
  }

  #gnav.active {
    overflow-y: auto;
    opacity: 1;
    visibility: visible;
    translate: 0;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #gnav {
    flex-direction: column;
    justify-content: center;
    align-items: flex-end;
    height: 100px;
  }

}

.gtranslate_wrapper {
  display: flex;
  gap: 5px;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .gtranslate_wrapper {
    order: 1;
    margin-block: 5px;
  }

}

.gtranslate_wrapper a {
  --clamp-min: 16;
  --clamp-max: 16;
  display: flex;
  gap: 5px;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .gtranslate_wrapper a {
    --clamp-min: 14;
    --clamp-max: 14;
  }

}

.gtranslate_wrapper a:not(:last-of-type)::after {
  content: '/';
}

a.glink.gt-current-lang {
  font-weight: 400 !important;
  pointer-events: none;
  opacity: .5;
}

#head-nav {
  flex: 1;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-nav {
    order: 2;
    display: flex;
    gap: clamp(0.9375rem, 0.7955rem + 0.6061vw, 1.25rem);
  }

}

#head-nav > li {

  position: relative;
  padding-block: 30px;
  border-bottom: 1px solid var(--basecolor1);

  &:first-child {
    padding-top: 0;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-nav > li {

    padding-block: 0;
    border-bottom: none;

    &:last-child {
      display: none;
    }

  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-nav > li.menu-item-has-children > a {

    z-index: 101;
    position: relative;

    &::before,
    &::after {
      content: '';
      position: absolute;
      bottom: 8px;
      left: calc(50% - 1px);
      width: 2px;
      height: 8px;
      border-radius: 9999px;
      background: currentColor;
      transform-origin: 50% calc(100% - 1px);
    }

    &::before {
      rotate: 45deg;
    }

    &::after {
      rotate: -45deg;
    }

  }

}

#head-nav > li > a {
  --clamp-min: 16;
  --clamp-max: 16;
  letter-spacing: var(--spacing);
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 500;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-nav > li > a {
    --clamp-min: 15;
    --clamp-max: 15;
    flex-direction: column;
    justify-content: flex-start;
    height: 100%;
    border-bottom: none;
  }

  #head-nav > li > a.current {
    color: var(--basecolor3);
  }

}

/* hover
------------------------------------*/
@media (any-hover: hover) {

  #head-nav > li > a {
    transition: all .2s ease-in-out;
  }

  #head-nav > li:hover > a {
    color: var(--basecolor3);
  }

}

.parent-pageid-125 #head-nav .menu-item-954 a,
.parent-pageid-921 #head-nav .menu-item-959 a,
.parent-pageid-15 #head-nav .menu-item-963 a {
  color: var(--basecolor3);
}

#head-nav > li > a > span {
  --clamp-min: 11;
  --clamp-max: 11;
  font-weight: 300;
  text-align: right;
  text-transform: uppercase;
}

#head-nav .sub-menu {
  margin-top: 20px;
  padding-left: 18px
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-nav .sub-menu {
    opacity: 0;
    visibility: hidden;
    position: absolute;
    top: 150%;
    left: 50%;
    translate: -50% 0;
    margin: 0;
    padding: 20px 10px;
    width: calc(100% + 120px);
    background: var(--basecolor2);
    transition: all .4s ease;
  }

  #head-nav .sub-menu.active {
    z-index: 100;
    opacity: 1;
    visibility: visible;
    top: 100%;
  }

}

#head-nav .sub-menu > li:not(:first-child) {
  margin-top: 20px;
}

#head-nav .sub-menu > li > a {
  --clamp-min: 15;
  --clamp-max: 15;
  display: block;
  font-weight: 500;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #head-nav .sub-menu > li > a {
    text-align: center;
  }

}

/* hover
------------------------------------*/
@media (any-hover: hover) {

  #head-nav .sub-menu > li > a {
    transition: all .2s ease-in-out;
  }

  #head-nav .sub-menu > li > a:hover {
    opacity: .6;
  }

}

/*****************************************
 * ハンバーガーメニュー
 ****************************************/

#btn-humberger {
  z-index: 9999;
  position: fixed;
  top: 20px;
  right: 20px;
  display: grid;
  place-content: center;
  gap: 8px;
  aspect-ratio: 1;
  width: 38px;
  transition: all .3s ease-in-out;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  #btn-humberger {
    top: 26px;
    right: 26px;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #btn-humberger {
    display: none;
  }

}

#btn-humberger > span {

  position: relative;
  width: 38px;
  height: 1px;
  background: var(--basecolor1);
  transition: all .3s ease-in-out;

  &:nth-child(3) {
    width: 28px;
  }

}

#btn-humberger.active > span {

  &:nth-child(1) {
    translate: 0 9px;
    rotate: 45deg;
  }

  &:nth-child(2) {
    rotate: -45deg;
  }

  &:nth-child(3) {
    opacity: 0;
  }

}

/*****************************************
 * コンテンツ内部
 ****************************************/

.contents-pin {
  width: 100%;
}

/*****************************************
 * フッター内部
 ****************************************/

#footer a {
  color: currentColor;
}

#foot-contents {
  display: grid;
  gap: clamp(2.5rem, 2.2159rem + 1.2121vw, 3.125rem);
  padding-top: clamp(2.5rem, 0.7955rem + 7.2727vw, 6.25rem);
  padding-bottom: clamp(1.875rem, 1.0227rem + 3.6364vw, 3.75rem);
  padding-inline: clamp(1.25rem, 0.9659rem + 1.2121vw, 1.875rem);
  width: 100%;
  min-height: 100svh;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  #foot-contents {
    grid-template-columns: 250px 1fr;
    grid-template-rows: auto auto 1fr;
    grid-template-areas: "foot-left foot-top"
                         "foot-left foot-middle"
                         "foot-left foot-bottom";
  }

}

#foot-left {
  display: grid;
  gap: 20px;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  #foot-left {
    grid-area: foot-left;
    grid-template-rows: auto 1fr;
    align-items: end;
    gap: 0;
    height: 100%;
  }

}

#foot-left > .logo {
  position: relative;
  margin-top: 38px;
}

#foot-left .logo img.bird {
  position: absolute;
  top: -38px;
  left: -21px;
  width: 60px;
  height: auto;
}

#foot-left .logo img.logo {
  width: 160px;
  height: auto;
}

#foot-left .address > * {
  --clamp-min: 14;
  --clamp-max: 14;
  letter-spacing: var(--spacing);
}

#foot-left .address > h2 {
  letter-spacing: calc(var(--spacing) * 2);
  font-weight: 500;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  #foot-top {
    grid-area: foot-top;
  }

}

.foot-nav {

  display: flex;
  flex-wrap: wrap;
  flex-direction: column;

  &:not(:first-child) {
    margin-top: clamp(1.875rem, 1.5909rem + 1.2121vw, 2.5rem);
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .foot-nav {
    flex-direction: row;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .foot-nav:not(:has(ul)) {
    align-items: center;
    gap: 40px;
  }

}

.foot-nav:not(:has(ul)) > li:last-child {
  margin-left: auto;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .foot-nav:has(ul) > li {

    width: 25%;
    padding-inline: clamp(1.25rem, 0.6818rem + 2.4242vw, 2.5rem);
    border-left: 1px solid rgb(255 255 255 / .2);

    &:last-child {
      border-right: 1px solid rgb(255 255 255 / .2);
    }

  }

}

.foot-nav > li:not(:first-child) {
  margin-top: 20px;
}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .foot-nav > li:not(:first-child) {
    margin-top: 0;
  }

}

.foot-nav > li > a {
  --clamp-min: 15;
  --clamp-max: 16;
  position: relative;
  display: block;
  font-weight: 500;
  white-space: nowrap;
}

.foot-nav ul {
  --clamp-min: 14;
  --clamp-max: 15;
  margin-top: clamp(1.25rem, 1.108rem + 0.6061vw, 1.5625rem);
}

.foot-nav ul > li:not(:first-child) {
  margin-top: 20px;
}

.foot-nav ul > li > a {

  line-height: 1.3;
  display: flex;
  align-items: center;
  gap: 8px;

  &::before {
    content: '';
    width: 6px;
    height: 1px;
    background: currentColor;
  }

}

#foot-middle {
  display: grid;
  align-items: center;
  gap: clamp(3.125rem, 2.5568rem + 2.4242vw, 4.375rem);
  margin-bottom: clamp(2.5rem, 1.9318rem + 2.4242vw, 3.75rem);
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  #foot-middle {
    grid-area: foot-middle;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  #foot-middle {
    grid-template-columns: 1fr 230px;
  }

}

#foot-middle > .form-box > a {
  --clamp-min: 33;
  --clamp-max: 40;
  letter-spacing: calc(var(--spacing) * 4);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: clamp(1.25rem, 0.9659rem + 1.2121vw, 1.875rem);
  height: clamp(12.5rem, 11.0795rem + 6.0606vw, 15.625rem);
  background: rgb(250 255 253 / .1);
  border-top-right-radius: calc(var(--radius) * 2);
  border-bottom-right-radius: calc(var(--radius) * 2);
}

#foot-middle > .form-box > a .iconify {
  width: clamp(3.125rem, 2.8409rem + 1.2121vw, 3.75rem);
}

/* hover
------------------------------------*/
@media (any-hover: hover) {

  #foot-middle > .form-box > a {
    transition: all .2s ease-in-out;
  }

  #foot-middle > .form-box > a:hover {
    color: var(--basecolor3);
    background: rgb(250 255 253 / .8);
  }

  #foot-middle > .form-box > a .iconify {
    transition: all .2s ease-in-out;
  }

  #foot-middle > .form-box > a:hover .iconify {
    translate: 20px;
  }

}

#foot-middle > .tel-box {
  letter-spacing: var(--spacing);
  margin-inline: auto;
  width: fit-content;
  text-align: center;
}

#foot-middle > .tel-box p {
  --clamp-min: 15;
  --clamp-max: 15;
  letter-spacing: calc(var(--spacing) * 2);
  font-weight: 500;
}

#foot-middle > .tel-box dt {
  --clamp-min: 32;
  --clamp-max: 32;
  padding-bottom: 10px;
  font-weight: 700;
  border-bottom: 2px solid rgb(255 255 255 / .8);
}

#foot-middle > .tel-box dd {
  --clamp-min: 15;
  --clamp-max: 15;
  margin-top: 10px;
}

#foot-bottom {
  --clamp-min: 14;
  --clamp-max: 14;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  width: 100%;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  #foot-bottom {
    grid-area: foot-bottom;
  }

}

#btn-page-top {

  z-index: 9996;
  position: fixed;
  right: clamp(1.25rem, 0.6818rem + 2.4242vw, 2.5rem);
  bottom: clamp(10rem, 9.4318rem + 2.4242vw, 11.25rem);
  aspect-ratio: 1;
  width: clamp(2.5rem, 1.9318rem + 2.4242vw, 3.75rem);
  background: var(--basecolor2);
  border: solid 1px var(--basecolor3);
  border-radius: 50%;
  opacity: 0;
  visibility: hidden;
  transition: all .3s;

  &::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
    aspect-ratio: 1;
    width: clamp(2.5rem, 1.9318rem + 2.4242vw, 3.75rem);
    background: var(--basecolor3);
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 7'%3E%3Cpath d='M12.5 6a.47.47 0 0 1-.35-.15L8 1.71L3.85 5.85c-.2.2-.51.2-.71 0c-.2-.2-.2-.51 0-.71L7.65.65c.2-.2.51-.2.71 0l4.5 4.5c.2.2.2.51 0 .71c-.1.1-.23.15-.35.15Z'/%3E%3C/svg%3E");
    mask-repeat: no-repeat;
    mask-position: center center;
    mask-size: clamp(1.75rem, 1.6932rem + 0.2424vw, 1.875rem);
  }

}

#btn-page-top.active {
  opacity: 1;
  visibility: visible;
}

/* hover
------------------------------------*/
@media (any-hover: hover) {

  #btn-page-top:hover {
    background: var(--basecolor3);
    border-color: var(--basecolor2);
  }

  #btn-page-top:hover::after {
    background: var(--basecolor2);
  }

}

/*****************************************
 * 配置
 ****************************************/

.left {
  text-align: left;
}

.center {
  text-align: center;
}

.right {
  text-align: right;
}

/*****************************************
 * 画像
 ****************************************/

img {
  display: block;
  max-width: auto;
  width: 100%;
  vertical-align: bottom;
}

@media (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm) {

  img {
    image-rendering: -webkit-optimize-contrast;
  }

}

.radius {
  border-radius: var(--radius);
}

/* hover
------------------------------------*/
@media (any-hover: hover) {

  .hover-img {
    overflow: hidden;
  }

  .hover-img img {
    transition: all .3s ease-in-out;
  }

  .hover-img img:hover {
    opacity: .8;
    scale: 1.1;
  }

}

/*****************************************
 * リンク
 ****************************************/

a {
  color: var(--basecolor1);
}

a.underline {
  text-decoration: underline;
}

.tel-link > a {
  color: inherit;
}

/*****************************************
 * 改行
 ****************************************/

br.sp {
  display: block;
}

br.tb-pc {
  display: none;
}

br.pc {
  display: none;
}

/* 768px～（タブレット）
------------------------------------*/
@media (min-width: 768px) {

  br.sp {
    display: none;
  }

  br.tb-pc {
    display: block;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  br.pc {
    display: block;
  }

}

/*****************************************
 * 表示 / 非表示
 ****************************************/

/* ～959px
------------------------------------*/
@media (max-width: 959px) {

  .hide-sp {
    display: none !important;
  }

}

/* 960px～（パソコン）
------------------------------------*/
@media (min-width: 960px) {

  .hide-pc {
    display: none !important;
  }

}

/*****************************************
 * Contact Form 7 reCAPTCHA
 ****************************************/

.grecaptcha-badge {
  visibility: hidden;
}
