@charset "UTF-8";
@font-face {
  font-family: "Noto Sans JP";
  font-style: normal;
  font-weight: 300;
  src: url("../font/NotoSansJP-DemiLight.woff2") format("woff2"), url("../font/NotoSansJP-DemiLight.woff") format("woff"), url("../font/NotoSansJP-DemiLight.otf") format("opentype"); }
@font-face {
  font-family: "Noto Sans JP";
  font-style: normal;
  font-weight: 400;
  src: url("../font/NotoSansJP-Regular.woff2") format("woff2"), url("../font/NotoSansJP-Regular.woff") format("woff"), url("../font/NotoSansJP-Regular.otf") format("opentype"); }
@font-face {
  font-family: "Noto Sans JP";
  font-style: normal;
  font-weight: 500;
  src: url("../font/NotoSansJP-Medium.woff2") format("woff2"), url("../font/NotoSansJP-Medium.woff") format("woff"), url("../font/NotoSansJP-Medium.otf") format("opentype"); }
@font-face {
  font-family: "Noto Sans JP";
  font-style: normal;
  font-weight: 600;
  src: url("../font/NotoSansJP-Bold.woff2") format("woff2"), url("../font/NotoSansJP-Bold.woff") format("woff"), url("../font/NotoSansJP-Bold.otf") format("opentype"); }
:root {
  --fontR: "roboto", sans-serif;
  --fontF: "freight-big-pro", serif;
  --fontN: "Noto Sans JP", sans-serif; }

body:has(.top) {
  overflow-x: hidden; }

.top + footer {
  margin-top: 0; }

@media (max-width: 768px) {
  .dl_common {
    margin-top: 25px; } }
/* =================================
FV
================================= */
@media (max-width: 768px) {
  .fv {
    object-fit: cover;
    height: calc(100svh - 100px); } }
/* =================================
イントロダクション
================================= */
.top_intro {
  margin-top: 50px;
  margin-bottom: 140px; }
  .top_intro h2 {
    text-align: center;
    line-height: 1;
    letter-spacing: .05em;
    font-weight: 400;
    font-size: 80px;
    margin-bottom: 35px; }
    .top_intro h2 span {
      font-family: "medusa", sans-serif; }
  .top_intro p {
    font-size: 18px;
    font-family: var(--fontR);
    line-height: 1.5;
    text-align: center;
    letter-spacing: .05em; }
  .top_intro .img_wrap {
    height: 1135px;
    margin-top: 85px;
    position: relative; }
    .top_intro .img_wrap > * {
      position: absolute; }
    .top_intro .img_wrap span {
      line-height: 1; }
      .top_intro .img_wrap span * {
        display: block; }
      .top_intro .img_wrap span em {
        color: #938c8a;
        font-size: 18px;
        font-weight: 300;
        letter-spacing: .25em;
        font-family: var(--fontR); }
      .top_intro .img_wrap span strong {
        font-size: 38px; }
  .top_intro .abs01 {
    top: 100px;
    left: 90px;
    max-width: 543px;
    width: 43%; }
    .top_intro .abs01 span {
      position: absolute;
      top: 143px;
      left: 365px;
      text-align: right; }
    .top_intro .abs01 .intro_01 {
      max-width: 322px; }
    .top_intro .abs01 .intro_02 {
      max-width: 271px;
      position: absolute;
      right: 0;
      bottom: -145px;
      z-index: -1; }
  .top_intro .abs02 {
    top: 0;
    right: 0;
    max-width: 593px;
    width: 47%; }
    .top_intro .abs02 .relative_wrap > * {
      position: absolute; }
    .top_intro .abs02 span {
      top: 435px;
      left: 435px;
      width: 225px; }
    .top_intro .abs02 img {
      max-width: 432px;
      top: 510px;
      right: 0; }
    .top_intro .abs02 video {
      width: 100%;
      max-width: 417px;
      height: 492px;
      background: #000;
      top: 0;
      left: 0;
      object-fit: cover; }
  .top_intro .abs03 {
    left: 0;
    bottom: 95px;
    width: 44%; }
    .top_intro .abs03 span {
      position: absolute;
      top: -75px;
      left: 18px; }
    .top_intro .abs03 img {
      max-width: 458px; }
  .top_intro .abs04 {
    width: 50%;
    bottom: 0;
    right: 0; }
  .top_intro .dl_common .txt {
    letter-spacing: .05em;
    line-height: 1.8;
    max-width: 480px; }

@media (max-width: 768px) {
  .top_intro {
    margin-top: 55px;
    margin-bottom: 110px; }
    .top_intro h2 {
      font-size: 30px;
      line-height: 1.4;
      margin-bottom: 15px; }
    .top_intro p {
      font-size: 14px;
      line-height: 1.7; }
    .top_intro .img_wrap {
      height: auto;
      margin-top: 105px; }
      .top_intro .img_wrap > * {
        position: static; }
      .top_intro .img_wrap span {
        line-height: 1.2; }
        .top_intro .img_wrap span em {
          font-size: min(2.8vw, 14px); }
        .top_intro .img_wrap span strong {
          font-size: min(6.3vw, 28px); }
    .top_intro .abs01 {
      max-width: none;
      width: 100%;
      margin-bottom: -3vw; }
      .top_intro .abs01 .relative_wrap {
        height: 97vw; }
        .top_intro .abs01 .relative_wrap div {
          position: absolute;
          bottom: 0;
          width: 100%; }
      .top_intro .abs01 span {
        position: static;
        margin-bottom: 10px;
        display: block; }
      .top_intro .abs01 .intro_01 {
        width: 63%;
        max-width: none;
        position: relative;
        z-index: 1; }
      .top_intro .abs01 .intro_02 {
        width: 52%;
        max-width: none;
        position: static;
        margin-left: auto; }
    .top_intro .abs02 {
      max-width: none;
      width: 100%;
      margin-bottom: 8vw; }
      .top_intro .abs02 .relative_wrap > * {
        position: static; }
      .top_intro .abs02 .relative_wrap > span {
        display: block;
        margin-bottom: 10px;
        width: auto; }
      .top_intro .abs02 img {
        max-width: none;
        width: 87%;
        margin-left: auto;
        margin-right: -5%;
        margin-bottom: 9vw; }
      .top_intro .abs02 video {
        width: 100%;
        max-width: none;
        height: 106vw; }
    .top_intro .abs03 {
      width: 100%; }
      .top_intro .abs03 span {
        position: static;
        margin-bottom: 10px;
        display: block; }
      .top_intro .abs03 img {
        max-width: none;
        margin-left: -5%; }
    .top_intro .abs04 {
      width: 100%; } }
/* =================================
SERVICE
================================= */
.top_service {
  margin-bottom: 70px; }
  .top_service .dl_common {
    margin-top: 15px;
    padding-left: 40px; }

@media (max-width: 768px) {
  .top_service {
    margin-bottom: 75px; }
    .top_service video {
      height: 320px;
      object-fit: cover; }
    .top_service .dl_common {
      margin-top: 35px;
      padding-left: 0; } }
/* =================================
Gallery
================================= */
.top_gallery {
  text-align: center;
  position: relative;
  padding: 0;
  overflow: hidden; }
  .top_gallery .gallery_pin {
    position: relative;
    z-index: 10;
    width: 100%;
    height: calc(var(--vh, 1vh) * 100);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(24px, 6svh, 80px) 0; }
  .top_gallery h2 {
    margin-bottom: 45px;
    font-size: 50px; }
  .top_gallery .gallery_track {
    display: flex;
    gap: 2.5svh;
    will-change: transform;
    margin-bottom: 85px; }
  .top_gallery li {
    flex: 0 0 auto; }
  .top_gallery img {
    display: block;
    height: min(70svh, 520px);
    width: auto;
    object-fit: cover; }
  .top_gallery .btn {
    align-self: center; }

@media (max-width: 768px) {
  .top_gallery h2 {
    margin-bottom: 40px;
    font-size: 28px; }
  .top_gallery .gallery_track {
    margin-bottom: 40px; }
  .top_gallery img {
    height: min(70svh, 400px); } }
/* =================================
LOVE STORY
================================= */
.top_love_story {
  text-align: center;
  padding: 90px 0 75px; }
  .top_love_story h2 {
    margin-bottom: 55px;
    text-align: left;
    line-height: 1; }
    .top_love_story h2 > * {
      display: block; }
    .top_love_story h2 strong {
      font-size: 28px;
      font-weight: 300;
      font-style: italic; }
    .top_love_story h2 em {
      font-size: 50px;
      font-weight: 400; }
  .top_love_story ul {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    margin-bottom: 60px;
    column-gap: 4.5%; }
  .top_love_story li {
    max-width: 390px;
    width: 31%; }
  .top_love_story img {
    display: block;
    margin-bottom: 15px; }
  .top_love_story dl {
    width: 90%;
    text-align: center;
    margin: 0 auto; }
  .top_love_story dt {
    color: #938c8a;
    font-weight: 300;
    font-size: 20px;
    font-family: var(--fontR);
    padding: 0 0 2px;
    margin-bottom: 12px;
    border-bottom: 1px solid #938c8a; }
  .top_love_story dd {
    font-size: 24px;
    display: inline-block;
    text-align: left; }

@media (max-width: 768px) {
  .top_love_story {
    padding: 85px 0; }
    .top_love_story h2 {
      margin-bottom: 38px;
      line-height: 1.4; }
      .top_love_story h2 strong {
        font-size: 20px; }
      .top_love_story h2 em {
        font-size: 28px; }
    .top_love_story ul {
      flex-direction: column;
      row-gap: 60px;
      margin-bottom: 25px; }
    .top_love_story li {
      max-width: none;
      width: 100%; }
    .top_love_story img {
      margin-bottom: 18px; }
    .top_love_story dt {
      font-size: 18px;
      margin-bottom: 10px; }
    .top_love_story dd {
      font-size: 22px; } }
/* =================================
FAQ
================================= */
.top_faq {
  text-align: center;
  margin-bottom: 90px; }
  .top_faq .relative_wrap {
    height: 630px; }
  .top_faq .bg_fixed:before {
    background-image: url("../images/top/faq_pc.jpg"); }
  .top_faq .abs {
    height: max-content;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto; }
  .top_faq h2 {
    font-size: 50px;
    color: #fff;
    margin-bottom: 12px; }
  .top_faq p {
    font-weight: 300;
    font-family: var(--fontR);
    letter-spacing: .05em;
    line-height: 1.7;
    color: #fff;
    margin-bottom: 35px; }
  .top_faq .btn {
    background: rgba(255, 255, 255, 0.8); }

@media (max-width: 768px) {
  .top_faq .relative_wrap {
    height: 410px; }
  .top_faq .bg_fixed:before {
    background-image: url("../images/top/faq_smp.jpg"); }
  .top_faq h2 {
    font-size: 28px; } }
/* =================================
About
================================= */
.top_about {
  position: relative;
  margin-bottom: 90px;
  height: 510px; }
  .top_about .bg_fixed:before {
    background-image: url("../images/top/about_pc.jpg"); }
  .top_about .dl_common {
    color: #fff;
    position: absolute;
    bottom: 30px;
    width: 100%; }
    .top_about .dl_common > * {
      padding: 0 60px; }
  .top_about .txt {
    border-bottom: 1px solid #fff;
    padding-bottom: 25px;
    margin-bottom: 25px; }
  .top_about dd:has(.btn) {
    text-align: right; }
  .top_about .btn {
    color: #242424;
    background: rgba(255, 255, 255, 0.8); }

@media (max-width: 768px) {
  .top_about {
    margin-bottom: 75px;
    height: 440px; }
    .top_about .bg_fixed:before {
      background-image: url("../images/top/about_smp.jpg"); }
    .top_about .dl_common {
      bottom: 25px; }
      .top_about .dl_common > * {
        padding: 0 7%; }
    .top_about .txt {
      padding-bottom: 10px;
      margin-bottom: 20px; }
      .top_about .txt p {
        max-width: 240px; } }
/* =================================
contact
================================= */
.top_contact {
  background: #E3DED6;
  padding: 75px 0;
  /*フォーム(FC7)*/ }
  .top_contact .inner {
    max-width: 1225px;
    display: flex;
    align-items: flex-start;
    justify-content: space-between; }
    .top_contact .inner > * {
      width: 47%;
      max-width: 575px; }
  .top_contact .left {
    margin-top: 35px; }
    .top_contact .left h3 {
      text-align: center;
      font-size: 60px;
      margin-bottom: -28px;
      position: relative; }
    .top_contact .left img {
      max-width: 426px;
      margin: 0 auto 18px; }
    .top_contact .left p {
      font-size: 19px;
      text-align: center;
      letter-spacing: .05em;
      line-height: 1.4; }
  .top_contact .wpcf7 {
    font-family: var(--fontR);
    font-weight: 300; }
    .top_contact .wpcf7 input, .top_contact .wpcf7 textarea {
      background: #f4f2ef;
      padding: 12px 18px;
      font-size: 16px;
      width: 100%;
      border-bottom: 1px solid #242424; }
    .top_contact .wpcf7 textarea {
      height: 130px; }
    .top_contact .wpcf7 .wja-row {
      margin-bottom: 32px;
      position: relative; }
      .top_contact .wpcf7 .wja-row:last-of-type {
        margin-bottom: 0; }
      .top_contact .wpcf7 .wja-row:has(+ .wja-row-submit) {
        margin-bottom: 50px; }
    .top_contact .wpcf7 .wja-label {
      font-size: 16px;
      margin-bottom: 8px; }
    .top_contact .wpcf7 .req {
      color: #7c7c7c; }
    .top_contact .wpcf7 .wpcf7-not-valid-tip {
      position: absolute;
      width: 100%;
      margin-top: 3px; }
    .top_contact .wpcf7 form.invalid .wpcf7-response-output, .top_contact .wpcf7 form.unaccepted .wpcf7-response-output, .top_contact .wpcf7 form.payment-required .wpcf7-response-output {
      position: absolute;
      right: 0;
      border: 0;
      margin: 0;
      margin-top: 3px;
      padding: 0;
      color: #dc3232;
      font-weight: 400; }
    .top_contact .wpcf7 .wja-row-radio {
      display: flex;
      align-items: flex-start;
      justify-content: flex-start;
      column-gap: 20px;
      margin-bottom: 40px; }
      .top_contact .wpcf7 .wja-row-radio .wpcf7-list-item {
        margin-bottom: 15px; }
        .top_contact .wpcf7 .wja-row-radio .wpcf7-list-item:last-of-type {
          margin-bottom: 0; }
      .top_contact .wpcf7 .wja-row-radio label {
        display: flex;
        align-items: center;
        column-gap: 15px;
        cursor: pointer; }
      .top_contact .wpcf7 .wja-row-radio input {
        width: auto;
        margin: 0;
        border: 0;
        width: 23px;
        height: 23px;
        accent-color: #242424; }
    .top_contact .wpcf7 .wpcf7-list-item {
      display: block;
      margin: 0;
      font-size: 16px; }
    .top_contact .wpcf7 .wja-row-2col {
      display: flex;
      align-items: flex-start;
      justify-content: space-between; }
      .top_contact .wpcf7 .wja-row-2col .wja-col {
        width: 48%; }
    .top_contact .wpcf7 .wja-form input[name="FirstName"],
    .top_contact .wpcf7 .wja-form input[name="LastName"] {
      text-transform: capitalize; }
    .top_contact .wpcf7 .js-date-range {
      background: url("../images/top/contact_calendar_ico.png") no-repeat 95% 50%/26px #f4f2ef; }
    .top_contact .wpcf7 .wja-row-submit {
      text-align: right; }
      .top_contact .wpcf7 .wja-row-submit input {
        width: 115px;
        border: 1px solid #686868;
        background: #fff;
        padding: 15px 0;
        cursor: pointer;
        font-weight: 400; }
        .top_contact .wpcf7 .wja-row-submit input:hover {
          text-decoration: none;
          opacity: .5;
          transition: all .2s ease-in; }
    .top_contact .wpcf7 .wpcf7-spinner {
      margin: 0;
      position: absolute;
      right: 130px; }
    .top_contact .wpcf7 form.sent .wpcf7-response-output {
      display: none; }

/*カレンダー*/
.flatpickr-calendar {
  font-family: var(--fontR);
  width: 260px !important; }

span.flatpickr-weekday {
  color: #242424 !important; }

.flatpickr-current-month {
  font-size: 16px !important; }

.flatpickr-current-month .flatpickr-monthDropdown-months {
  color: #242424;
  font-weight: 500 !important; }

.flatpickr-current-month input.cur-year {
  font-weight: 500 !important; }

.flatpickr-months {
  margin-top: 12px; }

.flatpickr-months .flatpickr-prev-month, .flatpickr-months .flatpickr-next-month {
  top: 10px !important;
  padding: 10px 28px !important; }

.flatpickr-weekdays {
  height: 38px !important;
  width: 210px !important;
  margin: 0 auto; }

.flatpickr-days {
  width: 260px !important; }

.dayContainer {
  width: 215px !important;
  min-width: 215px !important;
  max-width: 215px !important;
  margin: 0 auto 15px !important; }

.flatpickr-day {
  font-weight: 500 !important;
  max-width: 30px !important;
  height: 30px !important;
  line-height: 2 !important; }

.flatpickr-current-month,
.flatpickr-current-month .flatpickr-monthDropdown-months,
.flatpickr-current-month input.cur-year,
.flatpickr-day {
  font-weight: 500; }

.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay {
  background: #DBC9B1 !important;
  border-color: #DBC9B1 !important; }

.flatpickr-day.inRange, .flatpickr-day.prevMonthDay.inRange, .flatpickr-day.nextMonthDay.inRange, .flatpickr-day.today.inRange, .flatpickr-day.prevMonthDay.today.inRange, .flatpickr-day.nextMonthDay.today.inRange, .flatpickr-day:hover, .flatpickr-day.prevMonthDay:hover, .flatpickr-day.nextMonthDay:hover, .flatpickr-day:focus, .flatpickr-day.prevMonthDay:focus, .flatpickr-day.nextMonthDay:focus {
  background: #F4EAE1 !important;
  border-color: #F4EAE1 !important; }

.flatpickr-day.inRange,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  box-shadow: -5px 0 0 #F4EAE1, 5px 0 0 #F4EAE1 !important; }

.flatpickr-day.selected.startRange,
.flatpickr-day.selected.endRange {
  box-shadow: 0px 0 0 #F4EAE1, 0px 0 0 #F4EAE1 !important;
  z-index: 1; }

.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover {
  color: #9fa0a0 !important; }

@media (max-width: 768px) {
  .top_contact {
    padding: 85px 0;
    /*フォーム(FC7)*/ }
    .top_contact .inner {
      flex-direction: column;
      row-gap: 50px; }
      .top_contact .inner > * {
        width: 100%;
        margin: 0 auto; }
    .top_contact .left h3 {
      font-size: 30px;
      margin-bottom: -12px; }
    .top_contact .left img {
      max-width: none;
      width: 72%;
      margin-bottom: 20px; }
    .top_contact .left p {
      font-size: 16px; }
    .top_contact .wpcf7 .wja-row {
      margin-bottom: 28px; }
      .top_contact .wpcf7 .wja-row:has(+ .wja-row-submit) {
        margin-bottom: 30px; }
    .top_contact .wpcf7 .wpcf7-list-item {
      font-size: 16px; }
    .top_contact .wpcf7 .js-date-range {
      background-size: 24px; }
    .top_contact .wpcf7 .wja-row-submit {
      text-align: center; }
      .top_contact .wpcf7 .wja-row-submit input {
        width: 95px;
        padding: 10px 0; }
    .top_contact .wpcf7 form.invalid .wpcf7-response-output, .top_contact .wpcf7 form.unaccepted .wpcf7-response-output, .top_contact .wpcf7 form.payment-required .wpcf7-response-output {
      text-align: center;
      left: 0; } }
