
.yuGothic {
  font-family: "游ゴシック体", YuGothic, "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック", "Yu Gothic", sans-serif;
  font-optical-sizing: auto;
  font-style: normal;
}

.montserrat {
  font-family: "Montserrat", sans-serif;
  font-optical-sizing: auto;
  font-style: normal;
}

:root {
  /* font-weight */
  --font-weight-normal: normal;
  --font-weight-bold: bold;
  /* font line-height */
  --font-line-200: 2;
  --font-line-160: 1.6;
  --font-line-100: 1;
  /* font letter-spacing */
  --font-spacing-005: 0.05em;
  /* font font-size */
  --font-size-64: 64px;
  --font-size-48: 48px;
  --font-size-40: 40px;
  --font-size-32: 32px;
  --font-size-28: 28px;
  --font-size-24: 24px;
  --font-size-20: 20px;
  --font-size-18: 18px;
  --font-size-16: 16px;
  --font-size-14: 14px;
  --font-size-12: 12px;
  --font-size-10: 10px;
  /* color */
  --color-white: #FFFFFF;
  --color-black: #222222;
  --color-blue: #007FC3;
  --color-orange: #F7931E;
  --color-green: #39C070;
  --color-yellow: #FDD668;
  --color-gray: #99A9B0;
  --color-bg-yellow: #FFF9DF;
  --color-bg_blue: #DEF4FF;
  --color-bg_green: #ECF6E7;
  /* Section width */
  --section-contents-width: 100%;
  --contents-width-1400: 1400px;
}

.yuGothic_H_XL {
  font-size: var(--font-size-40);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_H_L {
  font-size: var(--font-size-32);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_H_M {
  font-size: var(--font-size-28);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_H_S {
  font-size: var(--font-size-24);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_H_XS {
  font-size: var(--font-size-20);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BN_L {
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-normal);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BN_M {
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-normal);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BN_S {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-normal);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BN_XS {
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-normal);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BB_L {
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BB_M {
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BB_S {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.yuGothic_BB_XS {
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-160);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_H_XL {
  font-size: var(--font-size-64);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_H_L {
  font-size: var(--font-size-40);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_H_M {
  font-size: var(--font-size-32);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_H_S {
  font-size: var(--font-size-24);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_H_XS {
  font-size: var(--font-size-20);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_BB_L {
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_BB_M {
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_BB_S {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

.montserrat_BB_XS {
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-bold);
  line-height: var(--font-line-100);
  letter-spacing: var(--font-spacing-005);
  color: var(--color-black);
}

@media screen and (max-width:960px) {
  .yuGothic_H_XL {
    font-size: var(--font-size-32);
  }

  .yuGothic_H_L {
    font-size: var(--font-size-24);
  }

  .yuGothic_H_M {
    font-size: var(--font-size-20);
  }

  .yuGothic_H_S {
    font-size: var(--font-size-18);
  }

  .yuGothic_H_XS {
    font-size: var(--font-size-16);
  }

  .yuGothic_BN_L {
    font-size: var(--font-size-16);
  }

  .yuGothic_BN_M {
    font-size: var(--font-size-14);
  }

  .yuGothic_BN_S {
    font-size: var(--font-size-12);
  }

  .yuGothic_BN_XS {
    font-size: var(--font-size-10);
  }

  .yuGothic_BB_L {
    font-size: var(--font-size-16);
  }

  .yuGothic_BB_M {
    font-size: var(--font-size-14);
  }

  .yuGothic_BB_S {
    font-size: var(--font-size-12);
  }

  .yuGothic_BB_XS {
    font-size: var(--font-size-10);
  }

  .montserrat_H_XL {
    font-size: var(--font-size-32);
  }

  .montserrat_H_L {
    font-size: var(--font-size-24);
  }

  .montserrat_H_M {
    font-size: var(--font-size-20);
  }

  .montserrat_H_S {
    font-size: var(--font-size-18);
  }

  .montserrat_H_XS {
    font-size: var(--font-size-16);
  }

  .montserrat_BB_L {
    font-size: var(--font-size-16);
  }

  .montserrat_BB_M {
    font-size: var(--font-size-14);
  }

  .montserrat_BB_S {
    font-size: var(--font-size-12);
  }

  .montserrat_BB_XS {
    font-size: var(--font-size-10);
  }
}

.topMagin60 {
  margin-top: 60px;
}

.topMagin40 {
  margin-top: 40px;
}

.topMagin20 {
  margin-top: 20px;
}

@media screen and (max-width:960px) {
  .topMagin60 {
    margin-top: 40px;
  }

  .topMagin40 {
    margin-top: 20px;
  }

  .topMagin20 {
    margin-top: 10px;
  }
}

/* やじるしボタン */
.arrow-btn {
  display: inline-flex;
  text-decoration: none;
  position: absolute;
  top: 50%;
  right: 20px;
  transform: translateY(-50%);
}

.arrow-circle {
  position: relative;
  width: 30px;
  height: 30px;
  overflow: hidden;
  border-radius: 50%;
  background: var(--color-white);
  transition:
    background .4s ease,
    border-color .4s ease;
}

.arrow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 20px;
  color: var(--color-blue);
  transform: translate(-50%, -50%);
  transition:
    transform .4s cubic-bezier(.22, 1, .36, 1),
    color .4s ease;
}

/* 表示中 */
.arrow-current {
  transform: translate(-50%, -50%);
  transition: .55s cubic-bezier(.76, 0, .24, 1);
}

/* 左側に待機 */
.arrow-next {
  transform: translate(-250%, -50%);
  transition: .55s cubic-bezier(.76, 0, .24, 1);
}

/* hover */

.guidanceQaLeftButton:hover .arrow-circle,
.guidanceButton:hover .arrow-circle,
.storyButton:hover .arrow-circle,
.stepButton:hover .arrow-circle {
  background: var(--color-blue);
}

.guidanceQaLeftButton:hover .arrow,
.guidanceButton:hover .arrow,
.storyButton:hover .arrow,
.stepButton:hover .arrow {
  color: var(--color-white);
}

/* 右へ抜ける */
.guidanceQaLeftButton:hover .arrow-current,
.guidanceButton:hover .arrow-current,
.storyButton:hover .arrow-current,
.stepButton:hover .arrow-current {
  transform: translate(150%, -50%);
  transition: .55s cubic-bezier(.76, 0, .24, 1);
}

/* 左から入る */
.guidanceQaLeftButton:hover .arrow-next,
.guidanceButton:hover .arrow-next,
.storyButton:hover .arrow-next,
.stepButton:hover .arrow-next {
  transform: translate(-50%, -50%);
  transition: .55s cubic-bezier(.76, 0, .24, 1);
}

/* ハンバーガーメニュー */
.menuBtn {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 20px;
  border: none;
  border-radius: 9999px;
  background: var(--color-blue);
  color: #fff;
  cursor: pointer;
  z-index: 10;
  box-shadow: 4px 4px 4px rgba(000, 000, 000, .1);
  border: 1px solid transparent;
}

.menuBtn:hover {
  background-color: var(--color-white);
  color: var(--color-blue);
  border: 1px solid var(--color-blue);
}

.menuText {
  font-size: 14px;
  letter-spacing: .1em;
}

/* ハンバーガー */
.menuIcon {
  position: relative;
  width: 24px;
  height: 16px;
}

.menuIcon span {
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background: #fff;
  transition: .3s;
}

.menuBtn:hover .menuIcon span {
  background: var(--color-blue);
}

.menuIcon span:nth-child(1) {
  top: 2px;
}

.menuIcon span:nth-child(2) {
  bottom: 2px;
}

/* OPEN */
.menuBtn.is-active {
  background: var(--color-gray);
}

.menuBtn.is-active:hover {
  background: var(--color-white);
  border: 1px solid var(--color-gray);
  color: var(--color-gray);
}

.menuBtn.is-active:hover .menuIcon span {
  background: var(--color-gray);
}

.menuBtn.is-active .menuIcon span:nth-child(1) {
  top: 7px;
  transform: rotate(45deg);
}

.menuBtn.is-active .menuIcon span:nth-child(2) {
  bottom: 7px;
  transform: rotate(-45deg);
}

/* モーダル */
.modalOverlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .4);
  opacity: 0;
  visibility: hidden;
  transition: .3s;
  z-index: 4;
  cursor: pointer;
  /* モーダルより下 */
}

.modalOverlay.is-active {
  opacity: 1;
  visibility: visible;
}

.modalMenu {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  max-width: 1300px;
  background: var(--color-white);
  opacity: 0;
  visibility: hidden;
  transition: .3s;
  z-index: 5;
  padding: 50px;
  border-radius: 40px;
  border: 1px solid var(--color-blue);
}

.modalMenu.is-active {
  opacity: 1;
  visibility: visible;
}

.modalMenuFlex {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
}

.modalMenuFlex li {
  width: calc(33% - 20px);
}

.modalMenuTitle {
  width: 100%;
  color: var(--color-blue);
  border-bottom: 1px solid var(--color-gray);
  padding-bottom: 10px;
  margin-bottom: 10px;
  position: relative;
}

.modalMenuTitle::after {
  content: '';
  position: absolute;
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-normal);
  color: var(--color-gray);
  right: 0;
  top: 4px;
}

.modalMenuTitleTop::after {
  content: 'トップページ';
}

.modalMenuTitleDiscovery::after {
  content: '高知の魅力、再発見！';
}

.modalMenuTitleStory::after {
  content: '先輩社員インタビュー';
}

.modalMenuTitleGuidance::after {
  content: 'はじめての移住ガイド';
}

.modalMenuFlexLink {
  width: 100%;
  display: flex;
  flex-direction: column;
  padding: 0 20px;
  gap: 10px;
}

.modalMenuFlexLink>li {
  width: 100%;
  position: relative;
  padding-right: 28px;
  overflow: hidden;
}

.modalMenuFlexLink a {
  color: var(--color-black);
}

.modalMenuFlexLink a:hover {
  color: var(--color-blue);
}

.modalMenuContents+.modalMenuContents {
  margin-top: 20px;
}

/* テキストの下線アニメーション */
.modalMenuFlexLink li a {
  position: relative;
  display: block;
  padding-bottom: 4px;
}

.modalMenuFlexLink a:hover .span::after {
  width: 100%;
  opacity: 1;
}

/* 下線（span にだけ付ける） */
.modalMenuFlexLink li a span {
  position: relative;
}

.modalMenuFlexLink li a span::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 0%;
  height: 1px;
  background-color: var(--color-blue);
  transition: width .3s ease, opacity .3s ease;
  opacity: 0;
}

/* a をホバーした時だけ下線が出る */
.modalMenuFlexLink li a:hover span::after {
  width: 100%;
  opacity: 1;
}

/* アイコン2つ重ねる */
.modalMenuFlexLink li::before,
.modalMenuFlexLink li::after {
  content: "›";
  position: absolute;
  top: 10px;
  transform: translateY(-55%);
  font-size: 20px;
  transition: transform .35s ease;
}

.modalMenuFlexLink li::before {
  color: var(--color-blue);
}

/* 表示されているアイコン（右へ抜ける） */
.modalMenuFlexLink li::after {
  right: 0;
}

/* 左から入ってくるアイコン（最初は左外） */
.modalMenuFlexLink li::before {
  right: 10px;
  opacity: 0;
}

/* ホバー時のアニメーション */
.modalMenuFlexLink li:hover::after {
  transform: translate(15px, -50%);
  /* 右へ抜ける */
  opacity: 1;
}

.modalMenuFlexLink li:hover::before {
  transform: translate(10px, -50%);
  /* 左から中央へ */
  opacity: 1;
}

.modalMenuButtonFlex {
  display: flex;
  flex-wrap: wrap;
  margin-top: 40px;
  gap: 20px;
}

.modalMenuButtonFlexLeft {
  width: 65%;
}


.modalMenuButtonFlexRight {
  width: calc(35% - 20px);
  position: relative;
}

.modalMenuButton {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  padding: 80px 70px 80px 40px;
  border-radius: 10px;
  background: var(--color-orange);
  color: var(--color-white);
  transition: all .4s;
  border: 1px solid transparent;
  letter-spacing: .005em;
  bottom: 0;
  right: 0;
}

.modalMenuButton:visited {
  color: var(--color-white);
}

.modalMenuButton p {
  display: flex;
  align-items: center;
  color: var(--color-white);
}

.modalMenuButton p span {
  display: block;
  color: var(--color-white);
  margin-right: 20px;
}

.modalMenuButton:hover {
  background: var(--color-white);
  color: var(--color-orange);
  transition: all .4s;
  border: 1px solid var(--color-orange);
}

.modalMenuButton:hover p,
.modalMenuButton:hover p span {
  color: var(--color-orange);
}


.modalMenuButton:hover .arrow-circle {
  background: var(--color-orange);
}


.modalMenuButton:hover .arrow {
  color: var(--color-white);
}

/* 右へ抜ける */
.modalMenuButton:hover .arrow-current {
  transform: translate(150%, -50%);
  transition: .55s cubic-bezier(.76, 0, .24, 1);
}

/* 左から入る */
.modalMenuButton:hover .arrow-next {
  transform: translate(-50%, -50%);
  transition: .55s cubic-bezier(.76, 0, .24, 1);
}

.modalMenuButton .arrow {
  color: var(--color-orange);
}

.modalMenuButton .arrow-circle {
  width: 50px;
  height: 50px;
}

.modalMenuButton .spOnly {
  display: none;
}

.footerFixedButton {
  display: flex;
  align-items: center;
  background: var(--color-orange);
  border-radius: 500px;
  padding: 8px 40px;
  color: var(--color-white);
  top: -55px;
  right: 70px;
  border: 1px solid transparent;
  box-shadow: 4px 4px 4px rgba(000, 000, 000, .1);
}

.footerFixedButton:link {
  color: var(--color-white);
}

.footerFixedButton:visited {
  color: var(--color-white);
}

.footerFixedButton:hover {
  background: var(--color-white);
  color: var(--color-orange);
  border: 1px solid var(--color-orange);
}

.footerFixedButton span {
  color: var(--color-white);
  margin-right: 10px;
}

.footerFixedButton:hover span {
  color: var(--color-orange);
}

@media screen and (max-width:960px) {
  .modalMenu {
    height: 100%;
    width: 100%;
    overflow: auto;
    border-radius: 20px;
    padding: 80px 25px 140px 25px;
  }

  .modalMenuFlex {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    gap: 20px;
  }

  .modalMenuFlex li {
    width: calc(100%);
  }

  .modalMenuButton .pcOnly {
    display: none;
  }

  .modalMenuButton .spOnly {
    display: block;
  }

  .modalMenuButton span {
    font-size: var(--font-size-32);
  }

  .modalMenuButtonFlexLeft {
    width: 100%;
  }

  .modalMenuButtonFlexRight {
    width: 100%;
    position: relative;
  }

  .modalMenuButtonFlex {
    flex-direction: column;
  }

  .modalMenuButton p {
    text-align: left;
  }

  .modalMenuButton p span {
    display: block;
    /* ENTRY を1行として扱う */
  }

  .headerButton .pcOnly,
  .footerFixedButton .pcOnly {
    display: none;
  }

  .footerFixedButton {
    padding: 12px 20px;
    font-size: var(--font-size-14);
  }
}

@media screen and (max-width: 429px) {
  .menuText {
    font-size: 12px;
  }

  .footerFixedButton {
    font-size: 12px;
  }
}



