@charset "UTF-8";

/* base
--------------------------- */
html {
  font-size: 62.5%;
  font-family: "Zen Kaku Gothic New", sans-serif;
}
body {
  font-size: 1.4rem;
}
@font-face {
  font-family: "DIN";
  src: url("../fonts/DIN Bold.otf") format("opentype");
  font-family: "A P-OTF A1ã‚´ã‚·ãƒƒã‚¯ StdN Bold";
  src: url("../fonts/AP-OTF-A1GothicStdN-Bold.otf") format("opentype");
  font-family: "A P-OTF A1ã‚´ã‚·ãƒƒã‚¯ StdN Medium";
  src: url("../fonts/AP-OTF-A1GothicStdN-Medium.otf") format("opentype");
}
:root {
  --text-color: rgb(99, 93, 81);
  --bg-color: rgb(253, 244, 235);
}
p {
  color: var(--text-color);
  line-height: 1.8;
}

/* layout
  ========================================================================== */
.main {
  background-color: #fff;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  position: relative;
}

.left-cont {
  background: url(../image/left.jpg) no-repeat;
  background-size: cover;
  height: 100vh;
  width: 37%;
  position: fixed;
  padding: 2.5em 0 0 2.5em;
  margin: 0 2em 0 0;
  top: 0;
  z-index: 2;
}
@media screen and (max-width: 1024px) {
  .left-cont {
    width: 60%;
  }
}
@media screen and (max-width: 768px) {
  .left-cont {
    display: none;
  }
  .center-cont:before {
    width: 100%;
  }
}

.center-cont {
  min-width: 375px;
  max-width: 100%;
  width: 26%;
  margin: 0 auto;
  background-color: #fff;
  overflow: hidden;
  position: relative;
  z-index: 2;
}
.center-cont:before {
  content: "";
  min-width: 375px;
  max-width: 100%;
  width: 26%;
  height: 100vh;
  position: fixed;
  background-image: url(../image/2025/mv_back.jpg);
  background-position: top right;
  background-size: cover;
  z-index: -1;
}
@media screen and (max-width: 1024px) {
  .center-cont {
    width: 40%;
    min-width: auto;
    margin: 0 0 0 auto;
  }
  .center-cont:before {
    width: 40%;
  }
}
@media screen and (max-width: 768px) {
  .center-cont {
    margin: 0 auto;
    max-width: 500px;
    width: 100%;
  }
  .center-cont:before {
    min-width: 100%;
    width: 100%;
    left: 0;
  }
}

.right-cont {
  background: url(../image/right.jpg) no-repeat;
  background-size: cover;
  height: 100vh;
  width: 37%;
  position: fixed;
  right: 0;
  z-index: 1;
}
@media screen and (max-width: 1024px) {
  .right-cont {
    display: none;
  }
}

/* ribbon deco */
.sec01::before,
.sec02 p::after,
.sec03::before,
.sec03 .block:nth-of-type(3)::before,
.sec03 .block:nth-of-type(4)::before,
.sec03 .block:nth-of-type(7)::before,
.sec04::before {
  content: "";
  display: block;
  aspect-ratio: 1/2;
  width: 100%;
  height: auto;
  mask-image: url("../image/2025/deco_ribbon.svg?ver2");
  mask-repeat: no-repeat;
  position: absolute;
  left: 0;
}
.sec01::before {
  bottom: -15px;
  background: #fcf6c9;
  mask-position: bottom;
}
.sec02 p::after {
  top: -70px;
  left: -5%;
  transform: rotate(-87deg) translateX(-100%);
  transform-origin: left top;
  mask-size: 150%;
  background: #dcd6ee;
  z-index: -1;
  width: 100%;
}
.sec03::before {
  top: -80px;
  mask-size: 110%;
  background: #dbf0e9;
  mask-position: top;
}
.sec03 .block:nth-of-type(3)::before {
  top: -60px;
  background: #e5e1d7;
  z-index: 0;
}
.sec03 .block:nth-of-type(4)::before {
  top: -150px;
  left: 0;
  transform: rotate(-80deg) translateX(-100%);
  transform-origin: left top;
  mask-size: 130%;
  background: #fcf6c9;
  width: 100%;
}
.sec03 .block:nth-of-type(7)::before {
  top: -110px;
  left: 0;
  transform: rotate(-80deg) translateX(-100%);
  transform-origin: left top;
  mask-size: 130%;
  background: #fcf6c9;
  width: 100%;
}
.sec04::before {
  top: -80px;
  mask-size: 110%;
  background: #e5e1d7;
  mask-position: top;
  pointer-events: none;
}

.sec03,
.sec03 .block {
  position: relative;
  isolation: isolate; /* 新しい積層文脈を作って -1 を安全に背面へ */
}
.sec03::before,
.sec03 .block::before {
  pointer-events: none; /* クリック遮断しない */
  z-index: -1; /* 背景側へ */
}

/* block
    ========================================================================== */ /* unique
  ========================================================================== */
.sec01 {
  position: relative;
}
.sec01 .fv {
  position: relative;
  z-index: 1;
  height: 100lvh;
  min-height: 500px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
  -ms-flex-direction: column-reverse;
  flex-direction: column-reverse;
}
.sec01 .fv img {
  margin: auto;
  width: auto;
  height: 100%;
  aspect-ratio: 750/1334;
  object-fit: contain;
}

.sec02 {
  padding-top: 90px;
  position: relative;
}
.sec02:before {
  content: "";
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  background: var(--bg-color);
}
.sec02 img {
  position: relative;
  z-index: 2;
}
.sec02 p {
  position: relative;
  z-index: 1;
  padding: 70px 40px 0;
  line-height: 2;
}

.sec03 {
  position: relative;
  background-color: var(--bg-color);
  padding-top: 90px;
  padding-bottom: 70px;
}
.sec03 .block p,
.sec03 img {
  z-index: 1;
  position: relative;
}
.sec03 .sec03title {
  display: block;
  margin: 0 auto;
}
.sec03 .img01 {
  margin-top: 45px;
}
.sec03 .otherimg {
  display: block;
  margin: 90px auto 0;
}
.sec03 .block {
  margin-top: 70px;
  position: relative;
}
.sec03 .block > img {
  display: block;
  width: 100%;
  padding: 0 1rem;
  object-fit: contain;
}
.sec03 .block .text_sub {
  text-align: center;
  margin-top: 30px;
}
.sec03 p.location {
  margin-inline: auto;
  width: fit-content;
  margin-top: 20px;
  padding: 0 1rem;
  border: 2px solid;
}

.sec03 .maps-link {
  margin-top: 0.5rem;
  padding-bottom: 0.5rem;
  color: #666;
  width: fit-content;
  margin-inline: auto;
  border-bottom: 1px solid #666;
}
.sec04 {
  background-color: #fdf4eb;
  padding-bottom: 30px;
  position: relative;
}
.sec05 {
  background-color: #fff;
}
.sec05 img {
  background: #eee;
  width: 100%;
  height: 100px;
  display: block;
}

.insta1 {
  margin: 80px auto 110px;
  width: 80%;
}

.insta2 img {
  display: block;
}

.sec04 .insta2,
.sec04 .map {
  position: relative;
  z-index: 1;
}

.insta2_bottom {
  padding-top: 50px;
  padding-bottom: 50px;
}

.map {
  margin: 95px auto 0;
  width: 85%;
}

.map-img {
  margin-bottom: 72px;
}
.map p,
.map li {
  line-height: 1.9;
  font-size: 16px;
  color: #80695a;
}

.map-floor {
  margin-block: 28px 47px;
}

.map-floor__img {
  margin-bottom: 28px;
  margin-inline: auto;
}

.map-floor__img--size {
  width: 68%;
}

/* .map_accordion {
  width: 85%;
  margin: 0 auto;
}
.map_btn {
  font-size: 1.3rem;
  text-align: center;
  color: #fff;
  margin: 30px 0 0;
  padding: 10px 0;
  cursor: pointer;
  border: solid 3px #343434;
  position: relative;
}
.map_btn p {
  color: #fff;
}
.map_btn.btn01 {
  background: #2c894e;
}
.map_btn.btn02 {
  background: #7141b4;
}
.map_btn.btn03 {
  background: #105998;
}
.map_btn.btn04 {
  background: #f39543;
}
.map_btn.btn05 {
  background: #d52726;
}
.map_btn-icon {
  position: absolute;
  top: 50%;
  right: 20px;
  display: inline-block;
  vertical-align: middle;
  color: #fff;
  line-height: 1;
  width: 1em;
  height: 1em;
  border: 1.5px solid currentColor;
  border-left: 0;
  border-bottom: 0;
  box-sizing: border-box;
  transform: translateY(-80%) rotate(135deg);
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
}
.map_btn-icon.on {
  transform: translateY(-15%) rotate(-45deg);
}
.map_hide-img-wrapper {
  height: 0;
  -webkit-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s;
  opacity: 0;
}
.map_hide-img-wrapper.on {
  height: auto;
  -webkit-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s;
  opacity: 1;
}
.map_hide-img-wrapper table {
  width: 100%;
  margin-top: 15px;
}
.map_hide-img-wrapper th {
  font-size: 1.2rem;
  color: #343434;
  line-height: 22px;
  width: 20%;
  padding-bottom: 30px;
}
.map_hide-img-wrapper td {
  font-size: 1.3rem;
  color: #343434;
  line-height: 22px;
} */

.form {
  margin-bottom: 120px;
}
.form img {
  display: block;
  width: 75%;
  margin: 0 auto;
}
.form iframe {
  width: 90%;
  height: 2350px;
  display: block;
  margin: 30px auto 0;
  position: relative;
  z-index: 2;
}

.footer {
  padding: 50px 0;
  text-align: center;
  background-color: rgb(241, 164, 179);
}
.footer h2 {
  color: #fff;
  font-size: 30px;
  font-weight: 700;
}
.footer .block > img {
  display: block;
  margin: 0 auto;
}
.footer .block .text_sub {
  font-size: 14px;
  text-align: center;
  line-height: 1.8;
  color: #fff;
  margin-top: 40px;
}
.footer .block .sponsorship {
  width: 85%;
  margin: 18px auto 0;
  display: flex;
  flex-wrap: wrap;
}
.footer .block .sponsorship p {
  width: 50%;
  font-size: 13px;
  text-align: left;
  line-height: 2;
  color: #fff;
}

.footer .footerimg {
  width: 250px;
}

.footer .footer_info {
  margin-top: 30px;
}
.footer .footer_info p,
.footer .footer_info a {
  font-size: 12px;
  line-height: 1.6;
  text-align: center;
  color: #fff;
  display: block;
}
.footer .footer_info .center {
  line-height: 2;
}

.left-cont_head {
  margin: 0 4em 0 0;
}

.left-cont_body {
  margin: 3em 4em 0 0;
}

.left-cont_list {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr 1fr;
  grid-template-columns: 1fr 1fr;
  row-gap: 20px;
}

.left-cont_link {
  display: block;
  text-align: center;
}
.left-cont_address {
  position: absolute;
  bottom: 32px;
}

.left-cont_txt {
  font-family: "Noto Sans CJK JP", sans-serif;
  font-size: 1.4rem;
  letter-spacing: 0.08em;
  color: #fff;
}

.left-cont_copyright {
  font-size: 0.9rem;
  letter-spacing: 0.03em;
  font-family: "DIN", sans-serif;
  color: #fff;
}

.bg-slider {
  background-size: cover;
  background-repeat: no-repeat;
  height: 100vh;
}

/* helper
  ========================================================================== */
.dot-text {
  position: relative;
  padding-top: 0.2em;
  letter-spacing: -0.1em;
  background-color: #fff;
}
.dot-text::before {
  content: "";
  width: 0.2em;
  height: 0.2em;
  border-radius: 50%;
  background-color: #dc000c;
  position: absolute;
  top: 0;
  left: 50%;
  -webkit-transform: translate(-50%, 0);
  -ms-transform: translate(-50%, 0);
  transform: translate(-50%, 0);
}

/* program
  ========================================================================== */
.fadeinElem {
  -webkit-transition: all 350ms ease-out;
  -o-transition: all 350ms ease-out;
  transition: all 350ms ease-out;
}

.fadeinElem.toUp {
  -webkit-transform: translateY(90px) !important;
  -ms-transform: translateY(90px) !important;
  transform: translateY(90px) !important;
  opacity: 0;
  -webkit-transition: 1s;
  -o-transition: 1s;
  transition: 1s;
}

.fadeinElem.show {
  -webkit-transition: 1s;
  -o-transition: 1s;
  transition: 1s;
  -webkit-transform: translate(0) !important;
  -ms-transform: translate(0) !important;
  transform: translate(0) !important;
  opacity: 1;
}

.entry-btn {
  width: 25%;
  bottom: 10px;
  right: 10px;
  position: fixed;
  z-index: 100;
}

@media screen and (max-width: 768px) {
  .entry-btn {
    width: 100%;
    bottom: 0px;
    right: 0px;
  }
}

a:hover {
  opacity: 0.7;
}

/* topに戻る
  ========================================================================== */

.pagetop {
  height: 50px;
  width: 50px;
  position: fixed;
  right: 10px;
  bottom: 15px;
  background: #fff;
  border: solid 2px #e2a2a0;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2;
}

.pagetop__arrow {
  height: 10px;
  width: 10px;
  border-top: 3px solid #e2a2a0;
  border-right: 3px solid #e2a2a0;
  transform: translateY(20%) rotate(-45deg);
}

@media (min-width: 960px) {
  .pagetop {
    left: 59%;
  }
}

/* ハンバーガーメニュー
  ========================================================================== */
.hamburger-wrap {
  max-width: 560px;
}
.hamburger {
  position: fixed;
  top: 12px;
  right: 12px;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  background: transparent;
  border: 0;
  cursor: pointer;
  z-index: 1001;
}
@media (min-width: 960px) {
  .hamburger {
    right: 38%;
  }
}

.hamburger .bar,
.hamburger .bar::before,
.hamburger .bar::after {
  content: "";
  display: block;
  width: 22px;
  height: 2px;
  background: #111;
  border-radius: 2px;
  transition: transform 200ms ease, opacity 200ms ease;
}
.hamburger .bar {
  position: relative;
}
.hamburger .bar::before {
  position: absolute;
  top: -6px;
}
.hamburger .bar::after {
  position: absolute;
  top: 6px;
}

/* オーバーレイ */
.overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  opacity: 0;
  visibility: hidden;
  transition: opacity 200ms ease;
  z-index: 1000;
}
.overlay.is-show {
  opacity: 1;
  visibility: visible;
}

/* ドロワー */
.drawer {
  position: fixed;
  top: 0;
  left: 50%;
  min-width: 375px;
  width: 100%;
  height: 40vh;
  background: #fdf5eb;
  box-shadow: -12px 0 30px rgba(0, 0, 0, 0.12);
  transform: translate(-50%, -100%);
  transition: transform 80ms ease-out;
  z-index: 1002;
  display: flex;
  flex-direction: column;
  padding: 20px;
}
.drawer.is-open {
  transform: translate(-50%, 0);
}

@media (min-width: 960px) {
  .drawer {
    width: 26%;
  }
}

/* 閉じるボタン */
.drawer .close-btn {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  border: none;
  background: transparent;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
}

.menu {
  margin-top: 60px;
}
.menu a {
  display: block;
  padding: 12px 4px;
  color: #635d52;
  text-decoration: none;
}
.menu a + a {
  border-top: 1px solid #eee;
}
