@charset "utf-8";

:root {
  --easing: cubic-bezier(0.2, 1, 0.2, 1);
  --transition: 0.8s var(--easing);
  --color-base: #f8f8f8;
  --color-gray: #ddd;
  --color-theme: #00a9c9;
  --color-theme-darken: #f12617;
  --box-shadow: 0.8rem 0.8rem 1.2rem rgba(0, 0, 0, 0.15), -0.8rem -0.8rem 1.2rem #fff;
  --box-shadow-hover: 1rem 1rem 1.5rem rgba(0, 0, 0, 0.08), -1rem -1rem 1.5rem #fff;
  --box-shadow-inset: inset 0.8rem 0.8rem 1.2rem rgba(0, 0, 0, 0.05), inset -0.8rem -0.8rem 1.2rem #fff;
  --box-shadow-dark: 0.8rem 0.8rem 1.2rem rgba(0, 0, 0, 0.1), -0.8rem -0.8rem 1.2rem rgba(#fff, 0.2);
}

/* First View
========================================================================== */
#fv {
  position: relative;
  width: 100%;
  height: auto;

  & img {
    width: 100%;
    height: auto;
    vertical-align: bottom;
  }
}

/* leadBubble
========================================================================== */
.leadBubble {
  position: relative;
  display: inline-block;
  width: 900px;
  padding: 20px 0;
  border: 2px solid #444444;
  border-radius: 9999px;
  background-color: #ffffff;
  text-align: center;
  color: #444444;

  &::before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    border-style: solid;
    border-width: 20px 10px 0 10px;
    border-color: #444444 transparent transparent;
    translate: -50% 100%;
  }

  &::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    border-style: solid;
    border-width: 15.5px 7.8px 0 7.8px;
    border-color: #ffffff transparent transparent;
    translate: -50% 100%;
  }
}

@media (max-width: 767px) {
  .leadBubble {
    width: 100%;
    padding: 10px 0;
  }
}

/* pickUp swiper
========================================================================== */
[class*="swiper"]:focus {
  outline: none;
}

.swiper-section {
  position: relative;
  padding-block: 30px;

  & .inner {
    max-width: 1080px;
    margin: 0 auto;

    & .slide-media,
    .thumb-media {
      position: relative;
      overflow: hidden;

      & img {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
      }
    }

    & .swiper-button-prev,
    .swiper-button-next {
      display: grid;
      place-content: center;
      width: 40px;
      height: 40px;
      cursor: pointer;
      transition: var(--transition);

      &::before,
      &::before {
        transition: var(--transition);
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        content: "";
        border-radius: 50%;
        background-color: #231815;
      }

      &:hover::before,
      &:hover::before {
        -webkit-transform: scale(1.2);
        transform: scale(1.2);
      }

      &::after,
      &::after {
        content: "";
        width: 10px;
        height: 10px;
        border: solid var(--color-gray);
        border-width: 3px 3px 0 0;
      }
    }

    & .swiper-button-prev::after {
      margin-left: 0.4rem;
      transform: rotate(-135deg);
    }

    .swiper-button-next::after {
      margin-right: 0.4rem;
      transform: rotate(45deg);
    }
  }
}

/* pickUp swiper card
========================================================================== */
.card {
  overflow: hidden;

  & .swiper {
    overflow: visible;

    & .swiper-controller {
      display: flex;
      gap: 2rem;
      align-items: center;
      justify-content: flex-end;
      margin-top: 1.5rem;

      & .swiper-pagination {
        display: flex;
        flex-wrap: wrap;
        gap: 1.2rem 0.8rem;
        justify-content: flex-start;
        margin: 0 auto 0 0;
        text-align: center;
      }

      & .swiper-button-prev,
      .swiper-button-next {
        position: relative;
        flex-shrink: 0;
        margin: 0;
      }
    }

    & .swiper-slide {
      width: max-content;

      & .slide {
        overflow: hidden;
        width: 350px;
        min-height: 470px;
        border-radius: 5px;
        box-shadow: var(--box-shadow);
        transition: var(--transition);

        &:hover {
          transform: translateY(-16px);
          box-shadow: var(--box-shadow-hover);

          & img {
            transform: translateY(0);
          }
        }

        & img {
          transition: var(--transition);
        }
      }

      & .slide-media {
        padding-top: 62.5%;

        & img {
          height: calc(100% + 16px);
          transform: translateY(-16px);
        }
      }

      & .slide-content {
        padding: 15px;

        & .slide-title {
          overflow: hidden;
          font-size: 24px;
          font-weight: bold;
          color: #444444;
        }

        & .slide-price {
          font-size: 34px;
          font-weight: bold;
          color: #ab0000;

          & small {
            font-size: 20px;
          }
        }

        & .slide-txt {
          margin-block-end: 30px;
          color: #444444;
        }

        & .details-link {
          position: relative;
          color: #444444;
          background: #ffffff;
          font-weight: bold;
          border: solid 1px #444444;
          border-radius: 9999px;
          display: flex;
          justify-content: space-around;
          align-items: center;
          padding: 10px 50px;
          text-decoration: none;
          transition: 0.3s ease-in-out;

          &:hover {
            background: #444444;
            color: #fff;

            &::after {
              right: 10px;
            }
          }

          &::after {
            content: "";
            position: absolute;
            top: 50%;
            right: 20px;
            display: flex;
            justify-content: center;
            align-items: center;
            transition: right 0.3s;
            width: 10px;
            height: 10px;
            border-top: solid 2px currentColor;
            border-right: solid 2px currentColor;
            transform: translateY(-50%) rotate(45deg);
          }
        }
      }
    }
  }
}

@media (max-width: 767px) {
  .card {
    overflow: hidden;
    padding-inline: 15px 15px;

    & .swiper {
      overflow: visible;

      & .swiper-controller {
        gap: 2rem;
      }

      & .slide {
        width: 300px !important;
      }
    }
  }
}

/* landMap selectionMap
========================================================================== */
.selectionMap {
  width: 100%;
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 20px;
  margin-block-start: 70px;

  & .map {
    width: 40%;

    & #googleMap {
      width: 100%;
      height: 125vh;
    }
  }

  & .selectionList {
    width: calc(100% - 40%);

    & .location {
      width: 100%;
      font-size: 18px;
      font-weight: bold;
      color: #ffffff;
      background: #444444;
      padding: 10px;
      border-radius: 5px;
      text-align: center;
    }

    & #modal {
      & .prefecture {
        border: solid 1px #444444;
        border-radius: 5px;
        padding: 10px;
        text-align: center;
        font-size: 18px;
        font-weight: bold;
        margin-block-start: 15px;
      }

      & ul {
        display: flex;
        flex-wrap: wrap;
        align-items: center;

        & li {
          width: calc(100% / 4);
          padding-block: 10px;
          border-bottom: dashed 1px #444444;
          font-size: 14px;
          cursor: pointer;

          &:last-of-type {
            border: none;
          }
        }
      }

      & #js-modal-close {
        display: none;
      }
    }

    & .land-details {
      display: flex;
      align-items: flex-start;
      margin-block-start: 30px;
      background-color: #ffffff;

      & .thumbnail {
        width: 40%;

        & img {
          max-width: 100%;
          object-fit: contain;
        }

        & .newPrice {
          display: grid;
          place-items: center;
          color: #ffffff;
          background-color: #ab0000;
          border-radius: 2px;
          margin: 5px 5px 0;
          font-size: 25px;
        }
      }

      & .content {
        width: calc(100% - 40%);
        padding: 10px;

        & .title {
          font-size: 24px;
          font-weight: bold;
          line-height: 1;
        }

        & .price {
          color: #ab0000;
          font-size: 28px;
          font-weight: bold;

          & span {
            font-size: 16.2px;
          }
        }

        & table {
          width: 100%;
          font-size: 13px;
          margin-block-start: 10px;

          & th {
            padding: 5px;
            color: #ffffff;
            background: #444444;
          }

          & td {
            padding: 5px;
            background: #f6f5f3;
          }
        }

        & .details-link {
          display: block;
          width: 100%;
          color: #ffffff;
          background: #444444;
          border-radius: 5rem;
          padding: 10px;
          cursor: pointer;
          text-align: center;
          margin-block: 15px 5px;
        }
      }
    }

    & .controll {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-block-start: 15px;

      & .button-prev,
      .button-next {
        position: relative;
        flex-shrink: 0;
        margin: 0;
        display: grid;
        place-content: center;
        width: 40px;
        height: 40px;
        cursor: pointer;
        transition: var(--transition);

        &::before,
        &::before {
          transition: var(--transition);
          position: absolute;
          top: 0;
          right: 0;
          bottom: 0;
          left: 0;
          content: "";
          border-radius: 50%;
          background-color: #231815;
        }

        &:hover::before,
        &:hover::before {
          transform: scale(1.2);
        }

        &::after,
        &::after {
          content: "";
          width: 10px;
          height: 10px;
          border: solid var(--color-gray);
          border-width: 3px 3px 0 0;
        }
      }

      & .button-prev::after {
        margin-left: 0.4rem;
        transform: rotate(-135deg);
      }

      .button-next::after {
        margin-right: 0.4rem;
        transform: rotate(45deg);
      }
    }
  }
}

@media (max-width: 767px) {
  .selectionMap {
    flex-direction: column;

    & .map {
      width: 100%;

      & #googleMap {
        width: 100%;
        height: 100vw;
      }
    }

    & .selectionList {
      width: 100%;

      & #modal {
        background: #ffffff;
        width: 90%;
        height: 100vh;
        padding: 15px;
        border-radius: 0.5rem;
        position: fixed;
        top: 5%;
        left: 0;
        right: 0;
        bottom: 5%;
        margin: auto;
        z-index: 9999;
        opacity: 0;
        visibility: hidden;

        & ul {
          position: relative;

          & li {
            width: calc(100% / 2);
          }
        }

        & #js-modal-close {
          display: block;
          width: 100%;
          color: #ffffff;
          background: #444444;
          border-radius: 5rem;
          padding: 1rem 2rem;
          cursor: pointer;
        }
      }

      & #mask {
        background: rgba(0, 0, 0, 0.6);
        position: fixed;
        inset: 0;
        z-index: 9998;
        opacity: 0;
        visibility: hidden;
      }

      .land-details {
        flex-direction: column;

        & .thumbnail {
          width: 100%;

          & img {
            max-width: 100%;
          }
        }

        & .content {
          width: 100%;
          height: auto;

          & .title {
            font-size: 22px;
          }
        }
      }
    }
  }
}

/* method lead
========================================================================== */
.lead {
  text-align: center;
  margin-block: 100px;
}

@media (max-width: 767px) {
  .lead {
    margin-block: 70px;
  }
}

/* method bgWhite
========================================================================== */
.bgWhite {
  background: #ffffff;
  margin-block-start: 40px;
  padding: 40px;
}

@media (max-width: 767px) {
  .bgWhite {
    margin-block-start: 40px;
    padding: 15px;
  }
}

/* method horizontal
========================================================================== */
.horizontal {
  display: flex;
  align-items: flex-start;
  gap: 35px;
  margin-block-end: 35px;

  &:last-of-type {
    margin-block-end: 0;
  }

  & .txt {
    width: calc(100% - 450px);

    & .txt-header {
      display: flex;
      align-items: flex-start;
      margin-block-end: 35px;

      & img {
        width: 60px;
        height: auto;
        margin-inline-end: 35px;
      }

      & h5 {
        font-size: 26px;
        line-height: 1.5;

        & span {
          font-size: 20px;
        }
      }
    }
  }

  & .photo {
    width: 450px;
  }
}

@media (max-width: 767px) {
  .horizontal {
    flex-direction: column-reverse;
    align-items: flex-start;
    gap: 35px;
    margin-block-end: 35px;

    &:last-of-type {
      margin-block-end: 0;
    }

    & .txt {
      width: 100%;

      & .txt-header {
        display: flex;
        align-items: flex-start;
        margin-block-end: 35px;

        & img {
          width: 60px;
          height: auto;
          margin-inline-end: 35px;
        }

        & h5 {
          font-size: 21px;
          line-height: 1.5;

          & span {
            font-size: 20px;
          }
        }
      }
    }

    & .photo {
      width: 100%;
    }
  }
}

/* flow horizontal
========================================================================== */
#flow .horizontal {
  display: flex;
  align-items: flex-start;
  gap: 35px;
  margin-block-end: 35px;

  & .txt {
    width: calc(100% - 450px);
    display: flex;
    align-items: flex-start;

    & .txt-left {
      margin-inline-end: 35px;

      & img {
        width: 60px;
        height: auto;
      }
    }

    & .txt-right {
      & h5 {
        font-size: 21px;
        line-height: 1.5;
        margin-block-end: 20px;
      }
    }
  }
}

& .photo {
  width: 450px;

  & img {
    max-width: 100%;
  }
}

@media (max-width: 767px) {
  #flow .horizontal {
    flex-direction: column-reverse;
    align-items: flex-start;
    gap: 35px;
    margin-block-end: 35px;

    & .txt {
      width: 100%;
      flex-direction: column;

      & .txt-left {
        margin-block-end: 15px;

        & img {
          width: 60px;
          height: auto;
        }
      }

      & .txt-right {
        & h5 {
          font-size: 21px;
          line-height: 1.5;
          margin-block-end: 20px;
        }
      }
    }
  }

  & .photo {
    width: 100%;

    & img {
      max-width: 100%;
    }
  }
}

/* flow concierge
========================================================================== */
.concierge {
  background: #eeeeee;
  padding: 15px;
  margin-block-start: 140px;
  border-radius: 5px;
}

#concierge .horizontal {
  display: flex;
  align-items: flex-start;
  gap: 35px;
  margin-block-end: 0;

  & .photo {
    width: 450px;
  }

  & .txt-reverse {
    width: calc(100% - 450px);

    & h5 {
      font-size: 26px;
      margin-block-end: 35px;
    }

    & ul li {
      list-style: none;
    }

    & .details-link a {
      position: relative;
      color: #444444;
      background: #ffffff;
      font-weight: bold;
      border: solid 1px #444444;
      border-radius: 9999px;
      display: flex;
      justify-content: space-around;
      align-items: center;
      padding: 10px 50px;
      text-decoration: none;
      transition: 0.3s ease-in-out;
      margin-block: 30px 0;

      &:hover {
        background: #444444;
        color: #fff;

        &::after {
          right: 10px;
        }
      }

      &::after {
        content: "";
        position: absolute;
        top: 50%;
        right: 20px;
        display: flex;
        justify-content: center;
        align-items: center;
        transition: right 0.3s;
        width: 10px;
        height: 10px;
        border-top: solid 2px currentColor;
        border-right: solid 2px currentColor;
        transform: translateY(-50%) rotate(45deg);
      }
    }
  }
}

@media (max-width: 767px) {
  .concierge {
    padding: 15px;
    margin-block-start: 70px;
  }

  #concierge .horizontal {
    flex-direction: column;
    gap: 35px;
    margin-block-end: 0;

    & .photo {
      width: 100%;
    }

    & .txt-reverse {
      width: 100%;

      & h5 {
        font-size: 26px;
        margin-block-end: 35px;
      }

      & ul li {
        list-style: none;
      }

      & .details-link a {
        position: relative;
        color: #444444;
        background: #ffffff;
        font-weight: bold;
        border: solid 1px #444444;
        border-radius: 9999px;
        display: flex;
        justify-content: space-around;
        align-items: center;
        padding: 10px 40px;
        text-decoration: none;
        transition: 0.3s ease-in-out;
        margin-block: 30px 150px;

        &:hover {
          background: #444444;
          color: #fff;

          &::after {
            right: 10px;
          }
        }

        &::after {
          content: "";
          position: absolute;
          top: 50%;
          right: 20px;
          display: flex;
          justify-content: center;
          align-items: center;
          transition: right 0.3s;
          width: 10px;
          height: 10px;
          border-top: solid 2px currentColor;
          border-right: solid 2px currentColor;
          transform: translateY(-50%) rotate(45deg);
        }
      }
    }
  }
}

/* New Price Icon
========================================================================== */
.newPrice {
  color: #fff;
  background-color: #ab0000;
  padding: 0 10px;
  border-radius: 3px 0 0 0;
}
