@charset "utf-8";
/*====================================================================
 clearfix
====================================================================*/
.clearfix:after {
  content: ".";
  display: block;
  clear: both;
  height: 0;
  visibility: hidden;
}
.clearfix {
  min-height: 1px;
  overflow: hidden;
}
* html .clearfix {
  height: 1px;
  overflow: hidden;
}
html.fixed, body.fixed {
  overflow: hidden;
  width: 100%;
}
.sp_view {
  display: none;
}
.pc_view {
  display: block;
}
.hover {
  transition: opacity 0.4s ease;
}
.hover:hover {
  opacity: 0.8;
}
a.tel {
  color: #2E2E2E;
  text-decoration: none;
}
/*本番環境では復活*/
.grecaptcha-badge {
  display: none;
}
/*============================
         header
============================*/
body, html {
  margin: 0;
  padding: 0;
  height: 100%;
  overscroll-behavior: none; /* iOSの引っ張りスクロール防止 */
}
@supports (height: 100dvh) {
  body, html {
    height: 100dvh; /* 対応ブラウザでのみ適用 */
  }
}
html {
  scroll-behavior: auto; /* デフォルトはジャンプ */
}
html.smooth-scroll {
  scroll-behavior: smooth; /* クラスが付いたときだけスムーズ */
}
body {
  margin: 0;
  padding: 0;
  min-width: 1440px;
  background: #fff;
  /*overflow-x: hidden;*/
}
@media screen and (min-width: 769px) and (max-width: 1439px) {
  body {
    min-width: 1240px;
  }
}

#wrapper {
  position: relative;
  width: 100%;
  overflow: hidden;
}



/* スキップボタン */
#skipLoader {
  position: absolute;
  bottom: 20px;
  right: 20px;
  z-index: 100;
  padding: 10px 20px;
  font-size: 14px;
  color: #FFFFFF;
  border: none;
  cursor: pointer;
  background-color: none;
  background: none;
}
/* ローディング画面 */
#loader {
  opacity: 0;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100dvh;
  height: calc(var(--vh, 1vh) * 100);
  background: #fff; /* ← 白背景を初期値にする */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  z-index: 50;
}


/* キャッチコピー */
#loader h1 {
  opacity: 0;
  color: #fff;
  white-space: nowrap;
  text-align: center;
}
/* 光（first） */
#first {
  opacity: 0;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: auto;
  height: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 51;
}
#first img {
  max-width: 100%;
  height: auto;
}
#first img#mv_hikari {
  display: block;
}
#first img#sp_mv_hikari {
  display: none;
}

/*-----------------------------------*/
.logo-wrapper {
  opacity: 0;
  position: relative;
  width: 100%;
  height: 100dvh;
  height: calc(var(--vh, 1vh) * 100);
  z-index: 55;
}

.loader_logo_poji {
  width: 844px;
  margin: 0px auto;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
#loader_01, #loader_02 {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
#loader_01 {
  opacity: 0;
  width: 164px;
  height: auto;
}
#loader_02 {
  opacity: 0;
  width: 680px;
  height: auto;
}
#mv_hirakuto {
  opacity: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
#mv_hirakuto img {
  width: 844px;
  max-width: 844px;
  height: auto;
}
#spc_glo_entry {
  display: none;
}
/*-----------------------------------*/
.bt_entry {
  width: 100%;
  font-size: 18px;
  font-weight: bold;
  text-align: center;
  color: #FFFFFF;
  line-height: 1.0em;
  box-sizing: border-box;
  padding: 15px 40px 17px;
  border-radius: 60px;
  background-color: #DC0000;
  transition: background-color 0.3s ease;
}
.bt_entry:hover {
  background-color: #484848; /* ホバー時に変化 */
}
.bt_entry span {
  border-left: 2px solid #FFFFFF;
  margin-left: 20px;
  padding-left: 20px;
}
/* ----------------------------
   グローバルナビ
---------------------------- */
#global-nav {
  opacity: 0; /* 初期は透明 */
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  box-sizing: border-box;
  z-index: 100;
  transform: translateY(-100px); /* 初期位置: 上にずらす */
}
#global-nav-bg {
  padding: 30px 0px 20px 0px;
  background-color: #FFFFFF;
}
/*-----------------------------------*/
#glo_left {
  width: 93%;
  display: flex;
  padding: 0px 0px 0px 50px;
  justify-content: space-between;
}
#glo_entry {
  margin-left: auto;
  margin-top: 12px;
}
#h_logo {
  display: inline-block;
}
#h_rec {
  font-size: 46px;
  color: #000;
  font-family: "Barlow Condensed", sans-serif;
  font-weight: 600;
  line-height: 1.0em;
  letter-spacing: 0.045em;
  padding: 0px 30px 0px;
  border-left: 2px solid #000;
  border-right: 2px solid #000;
  margin: 0px 30px 0px;
}
#h_name {
  font-size: 16px;
  font-weight: 500;
  line-height: 1.0em;
  padding: 17px 0px 0px 0px;
}

@media screen and (max-width: 1463px) and (min-width: 1411px) {
  #glo_left {
     display: flex;
    flex-wrap: wrap;
      align-items: center;
    justify-content: flex-start;
  }
    #h_rec {
      padding: 6px 30px 6px;   
    }
  #h_name {
    flex-basis: 100%;
    text-align: left;
    white-space: nowrap;
    padding: 10px 0 0px 148px;
  }

  #glo_entry {
   flex: 0 0 auto;
      margin-left: auto;
      margin-top: 0;
      position: absolute;
      top: 12px;
      right: 20px;
  }
  
  #glo_entry .bt_entry {
    padding: 15px 40px 17px;
    white-space: nowrap;
  }
}
@media screen and (max-width: 1410px) and (min-width: 1164px) {
  #glo_left {
     display: flex;
    flex-wrap: wrap;
      align-items: center;
    justify-content: flex-start;
  }
    #h_rec {
      padding: 6px 30px 6px;   
    }
  #h_name {
    flex-basis: 100%;
    text-align: left;
    white-space: nowrap;
    padding: 10px 0 0px 148px;
  }

  #glo_entry {
   flex: 0 0 auto;
      margin-left: auto;
      margin-top: 0;
      position: absolute;
      top: 12px;
      right: 20px;
  }
}
@media screen and (max-width: 1165px) and (min-width: 1005px) {
     #glo_left {
     display: flex;
    flex-wrap: wrap;
      align-items: center;
    justify-content: flex-start;
  }
#h_rec {
      padding: 6px 30px 6px;   
    }
  #h_name {
    flex-basis: 100%;
    text-align: left;
    white-space: nowrap;
    padding: 10px 0 0px 148px;
  }

  #glo_entry {
   flex: 0 0 auto;
      margin-left: auto;
      margin-top: 0;
      position: absolute;
      top: 12px;
      right: 20px;
  }
   #glo_entry .bt_entry {
      padding: 15px 20px 17px;
      border-radius: 60px;
    }
    
   #glo_entry .bt_entry span {
      display: none;
    }
}
@media screen and (max-width: 1004px) and (min-width: 769px) {
     #glo_left {
     display: flex;
    flex-wrap: wrap;
      align-items: center;
    justify-content: flex-start;
       padding: 0px 0px 0px 30px;
  }
#h_rec {
      padding: 6px 30px 6px;   
    }
  #h_name {
    flex-basis: 100%;
    text-align: left;
    white-space: nowrap;
    padding: 10px 0 0px 148px;
  }

  #glo_entry {
   display: none;
  }
  
}


/* menu */
/*-----------------------------------*/
.hammenu {
  opacity: 0;
  position: fixed;
  top: 36px;
  right: 20px;
  width: 62px;
  height: 35px;
  cursor: pointer;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  transform: translateY(-100px);
}
.hammenu span {
  display: block;
  height: 4px;
  width: 100%;
  background: #DC0000;
  transition: transform 0.4s cubic-bezier(0.77, 0, 0.175, 1), background 0.4s ease, opacity 0.3s ease;
}
/* メニュー */
.menu {
  position: fixed;
  top: 0;
  right: -542px; /* 初期は画面外 */
  width: 542px;
  height: 100%;
  box-sizing: border-box;
  background: rgba(92, 92, 92, 0.98);
  transition: right 0.4s cubic-bezier(0.77, 0, 0.175, 1); /* イージング付き */
  padding: 60px 20px 50px 120px;
  z-index: 999;
}
.menu.open {
  right: 0;
}
.menu ul {
  display: block;
  clear: both;
  overflow: hidden;
  list-style: none;
  padding: 0;
  margin: 0 0 40px 0;
}
.menu li {
  display: block;
  margin: 40px 0 60px 0px;
}
.menu li a {
  position: relative; /* 疑似要素の基準にする */
  text-decoration: none;
  color: #FFFFFF;
  font-size: 18px;
  font-weight: bold;
  padding-bottom: 10px; /* 下線と文字の間隔 */
}
/* 下線を疑似要素で作る */
.menu li a::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 80px; /* 初期幅 */
  height: 3px; /* 高さ */
  background-color: #fff;
  transition: width 0.3s cubic-bezier(0.77, 0, 0.175, 1);
}
/* ホバー時に幅を伸ばす */
.menu li a:hover::after {
  width: 120px; /* 右に伸ばす */
}
/* ハンバーガーアニメーション（開閉時） */
.hammenu.active span {
  background-color: #FFF;
}
.hammenu.active span:nth-child(1) {
  transform: rotate(45deg) translate(10px, 11px);
}
.hammenu.active span:nth-child(2) {
  opacity: 0;
}
.hammenu.active span:nth-child(3) {
  transform: rotate(-45deg) translate(11px, -10px);
}
#sp_glo_entry {
  display: none;
}
/*-----------------------------------*/
#mv {
  clear: both;
  width: 100%;
  height: 100dvh;
  height: calc(var(--vh, 1vh) * 100);
  position: relative;
}


#mv_logo {
  position: absolute;
  top: 442px; /* 画面中央から出す */
  left: 50%;
  transform: translate(-50%, -50%);
  width: auto; /* 自動サイズでOK */
  height: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1;
}
/**/
.scroll-indicator {
  position: absolute;
  bottom: 4%; /* 位置はお好みで調整 */
  right: 2%;
  transform: translateX(-50%);
  text-align: center;
  color: #DC0000;
  z-index: 100;
}
.scroll-indicator .text {
  writing-mode: vertical-rl; /* 縦書き（右から左） */
  font-size: 16px;
  font-weight: bold;
  letter-spacing: 2px;
  display: block;
}
.scroll-indicator .line {
  display: block;
  width: 1px;
  height: 200px;
  margin: 0 auto 10px;
  background: #DC0000;
  position: relative;
  overflow: hidden;
}
.scroll-indicator .line::after {
  content: "";
  position: absolute;
  top: -100%;
  left: 0;
  width: 100%;
  height: 100%;
  background: #FFF;
  animation: scrollLine 2s infinite;
}
@keyframes scrollLine {
  0% {
    top: -100%;
  }
  50% {
    top: 0%;
  }
  100% {
    top: 100%;
  }
}
.scroll-indicator .text {
  font-size: 12px;
  letter-spacing: 2px;
  display: block;
}
/*-----------------------------------*/
#container {
  clear: both;
  width: 100%;
  margin: 0px auto 0px;
}
h2#h2_001 {
  clear: both;
  width: 100%;
  text-align: center;
  font-size: 20px;
  font-weight: 500;
  line-height: 53px;
  margin: 0px auto 80px;
}
h2#h2_001 span {
  display: block;
  opacity: 0; /* 初期は透明 */
  transform: translateY(30px); /* 下にずらしてスタート */
  transition: all 0.6s ease-out;
}
/*-----------------------------------*/
#place_wrap {
  width: 90%;
  max-width: 1440px;
  background-image: url("../images/bg_place.svg");
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  background-color: #DC0000;
  margin: 0px auto 100px;
  position: relative;
  border-radius: 20px;
  height: 700px; /* 適宜調整 */
}
@media screen and (min-width: 769px) and (max-width: 1439px) {
  #place_wrap {
    width: 98%; /* 余白をやや小さめにして視覚的に安定 */
    max-width: 1200px; /* 1440px → コンテンツに合わせて縮小 */
    background-image: url("../images/bg_place.svg");
    min-height: 700px; /* 固定高さを解除してコンテンツに合わせる */
    margin: 0 auto 80px; /* 下マージンも少し調整 */
    background-size: cover; /* coverよりも画面全体に収めやすく */
  }
}
#place_center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 3;
}
.place {
  position: absolute;
  z-index: 3;
}
#place01 {
  top: 10%;
  left: 10%;
}
#place02 {
  top: 10%;
  right: 10%;
}
#place03 {
  bottom: 10%;
  left: 10%;
}
#place04 {
  bottom: 10%;
  right: 10%;
}
@media screen and (min-width: 769px) and (max-width: 1439px) {
  #place01 {
  top: 8%;
  left: 5%;
}
#place02 {
  top: 8%;
  right: 5%;
}
#place03 {
  bottom: 8%;
  left: 5%;
}
#place04 {
  bottom: 8%;
  right: 5%;
}
}


.place a picture {
  display: block; /* inline-blockだと少しズレる場合があるのでblockに */
  transition: transform 0.4s ease; /* ホバー時のアニメーション */
}
.place a:hover picture {
  transform: scale(1.10); /* 5%拡大 */
}
/* SVG全体を全域に */
#lines {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
/*-----------------------------------*/
#philosophy {
  clear: both;
  width: 100%;
  padding: 100px 0px;
  background-color: #DC0000;
}
#h2_philosophy {
  clear: both;
  width: 100%;
  text-align: center;
  color: #FFF;
  font-size: 40px;
  font-weight: 700;
  line-height: 1.0em;
  padding: 110px 0px 0px 0px;
  margin-bottom: 60px;
  background: url("../images/philosophy_logo.svg") no-repeat top center;
  background-size: 62px auto;
}
#h2_philosophy span {
  display: block;
  text-align: center;
  font-size: 24px;
  padding: 30px 0px 0px 0px;
  color: rgba(255, 255, 255, 0.7);
}
#h3_philosophy {
  width: 580px;
  font-size: 35px;
  color: #DC0000;
  font-weight: 700;
  text-align: center;
  border: 4px solid #DC0000;
  border-radius: 50px;
  box-sizing: border-box;
  padding: 15px 0px 18px;
  margin: 0px auto 30px;
}
#tx_philosophy {
  text-align: center;
  font-size: 18px;
  margin-bottom: 90px;
}
#tx_philosophy::before {
  content: '▲';
  color: #DC0000;
  padding-right: 10px;
}
.white_wrap {
  clear: both;
  width: 90%;
  border-radius: 10px;
  padding: 100px 0px 120px;
  box-sizing: border-box;
  background-color: #FFF;
  margin: 0px auto;
}
@media screen and (min-width: 769px) and (max-width: 1439px) {
  #philosophy .white_wrap {
    width: 98%;
  }
}
#main_copy {
  display: flex; /* 横並び */
  gap: 0.2em; /* 文字間隔っぽく */
  justify-content: center;
  margin-bottom: 90px;
}
#main_copy span {
  display: inline-block;
  opacity: 0; /* 初期は非表示 */
  transform: translateY(30px); /* 下にずらしておく */
}
#main_text {
  width: 980px;
  display: flex;
  justify-content: center;
  margin: 0px auto 80px;
}
.mt_first, .mt_second {
  width: 48%;
  margin: 0px 1%;
}
#main_text p {
  font-size: 20px;
  font-weight: 700;
  line-height: 44px;
  margin-bottom: 36px;
  opacity: 0;
  transform: translateY(30px);
}
/*-----------------------------------*/
#three_block {
  clear: both;
  width: 1200px;
  margin: 0px auto;
}
@media screen and (min-width: 769px) and (max-width: 1439px) {
    #three_block {
      min-width: 1200px;
      transform: scale(0.97);
      transform-origin: top center;
    }
}

#sp_three_block {
  display: none;
}
.shutter {
  width: 100%;
  position: relative;
  overflow: hidden;
  display: flex;
}
.shutter_cover {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #FFF;
  z-index: 2;
}
.sec_image {
  width: 410px;
  text-align: center;
}
.sec_text {
  width: 790px;
  box-sizing: border-box;
}
.sec_text p {
  font-size: 18px;
  font-weight: 500;
  margin-bottom: 50px;
}
.sec_text p::before {
  content: '◀';
  color: #DC0000;
  margin-right: 10px;
}
.sec_text h3 {
  font-size: 35px;
  font-weight: 700;
  color: #DC0000;
  line-height: 1.6em;
  margin-left: 30px;
}
#sec01 {
  height: 356px;
  background-image: url("../images/tenline.svg");
  background-repeat: no-repeat;
  background-size: 970px auto;
  background-position: top right;
}
#sec02 {
  height: 356px;
  background-image: url("../images/tenline.svg"), url("../images/tenline.svg");
  background-repeat: no-repeat;
  background-size: 970px auto, 970px auto;
  background-position: top right, bottom right;
}
#sec03 {
  height: 532px;
  background-image: url("../images/tenline.svg");
  background-repeat: no-repeat;
  background-size: 970px auto;
  background-position: bottom right;
}
@media screen and (min-width: 769px) and (max-width: 1439px) {
    #sec01 {
    min-width: 970px;
  }
  #sec02 {
    min-width: 970px;
  }
  #sec03 {
    min-width: 970px;
  }
}

#sec01 .sec_text {
  padding: 80px 0px 0px 0px;
  margin-left: -70px;
}
#sec02 .sec_text {
  padding: 80px 0px 0px 0px;
  margin-left: -30px;
}
#sec03 .sec_text {
  padding: 60px 0px 0px 0px;
}
#sec03 .sec_text p {
  margin-bottom: 20px;
}
#sec03 .sec_text dl {
  width: 760px;
  display: flex;
  padding: 15px 0px;
  border-bottom: 2px dashed #F7B79B;
  margin-left: 30px;
}
#sec03 .sec_text dl:last-child {
  border-bottom: none;
}
#sec03 .sec_text dl dt {
  width: 250px;
  font-size: 32px;
  font-weight: 700;
  color: #DC0000;
  letter-spacing: 0.025em;
  line-height: 1.5em;
}
#sec03 .sec_text dl dd {
  font-size: 16px;
  font-weight: 700;
  color: #2E2E2E;
  letter-spacing: 0.04em;
  line-height: 1.5em;
}



/*-----------------------------------*/
#facility {
  clear: both;
  width: 100%;
  padding: 100px 0px;
  background-color: #F0EEEC;
}
#h2_facility {
  clear: both;
  width: 100%;
  text-align: center;
  color: #2E2E2E;
  font-size: 40px;
  font-weight: 700;
  line-height: 1.0em;
  padding: 110px 0px 0px 0px;
  margin-bottom: 60px;
  background: url("../images/entry_logo.svg") no-repeat top center;
  background-size: 62px auto;
}
#h2_facility span {
  display: block;
  text-align: center;
  font-size: 24px;
  padding: 30px 0px 0px 0px;
  color: #DC0000;
}
@media screen and (max-width: 1370px) and (min-width: 769px) {
  #facility .white_wrap {
   width: 98%;
  }
}

.fac_wrap {
  clear: both;
  width: 1200px;
  display: flex;
  flex-wrap: wrap; /* 折り返して2行に */
  gap: 90px 60px;
  margin: 0px auto;
}
.fac_wrap .fac {
  flex: 1 1 calc(50% - 30px); /* 2列にする（gap分を調整） */
  box-sizing: border-box;
}
@media screen and (max-width: 1290px) and (min-width: 769px) {
  .fac_wrap {
    width: 100%;
    min-width: 1200px;
    transform: scale(0.97);
    transform-origin: top center;
  }
}


@media (max-width: 768px) {
  .fac_wrap .fac {
    flex: 1 1 100%; /* 1列表示 */
    margin-bottom: 3.0vh;
  }
  .fac_wrap .fac:last-child {
    margin-bottom: 0vh;
  }
}
/*-----------------------------------*/
.fac_img {
  position: relative;
  width: 570px;
  height: auto;
  overflow: hidden;
  border-radius: 20px;
  margin-bottom: 40px;
}



.fac_img img {
  display: block;
  width: 100%;
  height: auto;
}
.overlay {
  position: absolute;
  top: 0;
  width: 50%;
  height: 100%;
  background-color: red;
  z-index: 2;
}
.overlay.left {
  left: 0;
}
.overlay.right {
  right: 0;
}


.fac_wrap .fac p {
  font-size: 17px;
  line-height: 1.6em;
  color: #484848;
  font-weight: 500;
  letter-spacing: 0.1em;
  margin-bottom: 20px;
}
@media screen and (max-width: 1290px) and (min-width: 769px) {
  .fac_wrap .fac p {
    letter-spacing: 0.08em;
  }
}


.fac_wrap .fac p.fac_sub {
  font-size: 18px;
  color: #484848;
  line-height: 1.0em;
  margin-bottom: 18px;
}
.fac_wrap .fac h3 {
  font-size: 35px;
  color: #DC0000;
  font-weight: 500;
  line-height: 1.0em;
  margin-bottom: 30px;
}
/*ボタン*/
.bt_fac a {
  display: inline-flex;
  align-items: center; /* 線・テキスト・アイコンを中央揃え */
  color: #333;
  text-decoration: none;
  font-size: 18px;
}
/* 左の線 */
/* 線のベース */
.bt_fac .line {
  position: relative;
  height: 1px;
  background: #707070; /* 薄いベース線 */
  margin-right: 30px;
  flex-shrink: 0; /* 幅を固定する */
}
/* 擬似要素でアニメーション線 */
.bt_fac .line::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background: #FFFFFF;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.6s ease;
}
/* ホバーで左→右へ */
.bt_fac a:hover .line::after {
  transform: scaleX(1);
}
/* 施設ごとの固定幅 */
#fac001 .bt_fac .line {
  width: 224px;
}
#fac002 .bt_fac .line {
  width: 232px;
}
#fac003 .bt_fac .line {
  width: 230px;
}
#fac004 .bt_fac .line {
  width: 256px;
}


/* テキスト */
.bt_fac .text {
  white-space: nowrap; /* 改行させない */
  margin-right: 8px;
}
/* アイコン */
.bt_fac .icon {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 50px;
  flex-shrink: 0;
}
/* 通常アイコン */
.bt_fac .icon::before, .bt_fac .icon::after {
  content: "";
  position: absolute;
  inset: 0;
  background: no-repeat center/contain;
  transition: opacity 0.6s ease;
}
/* 通常状態のアイコン */
.bt_fac .icon::before {
  background-image: url("../images/bt_arr.svg");
  opacity: 1;
}
/* ホバー時に出てくるアイコン */
.bt_fac .icon::after {
  background-image: url("../images/bt_arr_hv.svg");
  opacity: 0;
}
/* hover でクロスフェード */
.bt_fac a:hover .icon::before {
  opacity: 0;
}
.bt_fac a:hover .icon::after {
  opacity: 1;
}

/*-----------------------------------*/
#join {
  clear: both;
  width: 100%;
  padding: 100px 0px;
  background-color: #FFF;
}
#h2_join {
  clear: both;
  width: 100%;
  text-align: center;
  color: #2E2E2E;
  font-size: 40px;
  font-weight: 700;
  line-height: 1.0em;
  padding: 110px 0px 0px 0px;
  margin-bottom: 60px;
  background: url("../images/join_logo.svg") no-repeat top center;
  background-size: 62px auto;
}
#h2_join span {
  display: block;
  text-align: center;
  font-size: 24px;
  padding: 30px 0px 0px 0px;
  color: #DC0000;
}
p.desc {
  clear: both;
  text-align: center;
  font-size: 18px;
  font-weight: 500;
  line-height: 2.0em;
  margin: 0px auto 80px;
}
#entry p.desc {
  line-height: 2.3em;
}
.policy p.desc {
  font-size: 15px;
  font-weight: 500;
  line-height: 1.6em;
}
#join_wrap {
  width: 1200px;
  margin: 0px auto 30px;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 40px 30px; /* ボタン間の余白 */
}
.bt_join a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 540px;
  height: 148px;
  background-color: #DC0000;
  border-radius: 80px; /* 角丸大きめ */
  color: #fff;
  font-size: 26px;
  font-weight: 700;
  text-decoration: none;
  position: relative;
  overflow: hidden;
  transition: background-color 0.3s ease;
}
.bt_join .arrow {
  position: absolute;
  right: 40px;
  top: 50%;
  width: 20px;
  height: 25px;
  background: url("../images/arr.svg") no-repeat;
  background-size: auto 25px;
  transform: translateY(-50%);
  transition: transform 0.3s ease;
}
.bt_join a:hover {
  background-color: #484848;
}
.bt_join a:hover .arrow {
  transform: translateY(-50%) translateX(5px); /* ホバーで右にずらす */
}
/*-----------------------------------*/
#entry {
  clear: both;
  width: 100%;
  padding: 100px 0px;
  background-color: #F0EEEC;
}
#h2_entry {
  clear: both;
  width: 100%;
  text-align: center;
  color: #2E2E2E;
  font-size: 40px;
  font-weight: 700;
  line-height: 1.0em;
  padding: 110px 0px 0px 0px;
  margin-bottom: 60px;
  background: url("../images/entry_logo.svg") no-repeat top center;
  background-size: 62px auto;
}
#h2_entry span {
  display: block;
  text-align: center;
  font-size: 24px;
  padding: 30px 0px 0px 0px;
  color: #DC0000;
}
#entry h3 {
  text-align: center;
  font-size: 26px;
  color: #DC0000;
  font-weight: 700;
  margin-bottom: 40px;
}
#entry .flow {
  width: 1200px;
  margin: 0 auto 80px;
  display: flex;
  justify-content: flex-start;
  align-items: center;
  gap: 34px; /* li間の間隔 */
  list-style: none;
  padding: 0;
}
#entry .flow li {
  width: 215px;
  height: 136px;
  border: 2px solid #DC0000;
  border-radius: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.4;
  color: #2E2E2E;
  position: relative;
  flex-shrink: 0; /* 横幅固定 */
  padding: 10px;
}



/* 背景色を順番に付与 */
#entry .flow li:nth-child(1) {
  background-color: #FFFFFF;
}
#entry .flow li:nth-child(2) {
  background-color: #FCE5E4;
}
#entry .flow li:nth-child(3) {
  background-color: #F3A6A6;
}
#entry .flow li:nth-child(4) {
  background-color: #ED7F7F;
}
#entry .flow li:nth-child(5) {
  background-color: #DC0000;
  color: #FFFFFF;
}
/* 矢印をliの右側に追加（最後のliは除く） */
#entry .flow li:not(:last-child)::after {
  content: ""; /* 文字は使わない */
  position: absolute;
  right: -32px; /* li間隔と合わせる */
  top: 50%;
  transform: translateY(-50%);
  width: 24px; /* 画像の幅 */
  height: 24px; /* 画像の高さ */
  background-image: url("../images/arr_red.svg"); /* 矢印画像を指定 */
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
/*-----------------------------------*/
#form_wrap {
  clear: both;
  width: 1200px;
  border-radius: 10px;
  box-sizing: border-box;
  padding: 90px 100px 30px;
  background-color: #FFF;
  margin: 0px auto 30px;
}
/**/
/* ===============================
   個人情報保護方針ページ用CSS
   =============================== */
.poli_wrap {
  clear: both;
  overflow: hidden;
  width: 1000px;
  box-sizing: border-box;
  padding: 10px 10px 20px;
  border-radius: 5px;
  border: 1px solid #707070;
  margin-bottom: 40px;
}
.privacy-policy {
  width: 100%;
  overflow-y: scroll !important;
  line-height: 1.6em;
  font-size: 16px;
  height: 250px;
  box-sizing: border-box;
  padding: 30px 70px 30px;
}
/* --- Chrome / Edge / Safari --- */
.privacy-policy::-webkit-scrollbar {
  width: 14px; /* 横幅 */
}
.privacy-policy::-webkit-scrollbar-track {
  background: transparent; /* トラック部分（透明にしておく） */
}
.privacy-policy::-webkit-scrollbar-thumb {
  background-color: #E0E0E0; /* スクロール部分 */
  border-radius: 9px; /* 角丸 */
  border: 3px solid transparent; /* 内側に余白をつけて丸感を出す */
  background-clip: content-box; /* 余白を反映させる */
}
/* --- Firefox --- */
.privacy-policy {
  scrollbar-width: thin; /* 細めにする */
  scrollbar-color: #E0E0E0 transparent; /* 色（つまみ / 背景） */
}
.privacy-policy h4 {
  text-align: center;
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 30px;
}
/* 段落 */
.privacy-policy p {
  margin: 0 0 1.2em;
}
/* 見出し（h5） */
.privacy-policy h5 {
  font-size: 15px;
  font-weight: bold;
  margin: 2em 0 0.8em;
}
.privacy-policy h5::before {
  content: '●';
  font-size: 16px;
  margin-right: 5px;
}
/* 番号付きリスト */
.privacy-policy ol {
  padding-left: 1.5em;
  margin-bottom: 1.2em;
}
.privacy-policy ol li {
  margin-bottom: 0.5em;
}
/* 箇条書きリスト */
.privacy-policy ul {
  padding-left: 1.5em;
  margin-bottom: 1.2em;
  list-style-type: disc;
}
.privacy-policy ul li {
  margin-bottom: 0.5em;
}
/* 住所や問い合わせ先 */
.privacy-policy address, .privacy-policy .contact {
  font-style: normal;
  background: #f8f8f8;
  padding: 10px 15px;
  border-left: 3px solid #ccc;
  margin: 1em 0;
}
/* 強調したい部分 */
.privacy-policy strong {
  color: #c00;
  font-weight: bold;
}
/* レスポンシブ調整 */
@media (max-width: 768px) {
  .privacy-policy {
    font-size: 3.8vw;
    padding: 5vw;
  }
  .privacy-policy h5 {
    font-size: 1rem;
  }
}
#policy_agree {
  width: 400px;
  font-size: 18px;
  text-align: center;
  margin: 0 auto 20px;
  cursor: pointer;
}
#policy_agree label {
  display: inline-block;
  cursor: pointer;
  text-align: center;
  margin: 0px auto 0px;
}
/* ボタンのラッパー */
#bt_submit {
  text-align: center; /* 横中央揃え */
  margin-bottom: 40px; /* 下余白 */
}
/* ボタン本体 */
#bt_submit input[type="submit"] {
  width: 310px;
  height: 60px;
  background: #DC0000;
  color: #fff;
  font-size: 20px;
  font-weight: bold;
  border: none;
  border-radius: 30px;
  cursor: pointer;
  transition: background 0.3s ease; /* フェードアニメーション */
}
/* ホバー時 */
#bt_submit input[type="submit"]:hover {
  background: #484848;
}
.g-recaptcha {
  clear: both;
  width: 310px;
  margin: 0px auto 20px !important;
}
/*-----------------------------------*/
#footer {
  clear: both;
  width: 100%;
  padding: 100px 0px 50px;
  text-align: center;
  background-color: #FFFFFF;
}
#f_logo {
  margin-bottom: 40px;
}
#footer p {
  font-size: 16px;
  line-height: 1.6em;
}
#footer p#f_company {
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 30px;
}
#footer p.mb50 {
  margin-bottom: 50px;
}
#footer p#copyright {
  font-size: 14px;
}