/* --------------------
 Front
-------------------- */
html {
    font-size: 4.2666666667vw;
}

@media (min-width: 768px) {
    html {
        font-size: min(19.2px, 1.8229166667vw);
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;    
    }
}

.header {
    background-color: rgba(255, 255, 255, 0);
}

.header.-bg {
    background-color: white;
}

.header__logo__link {
    color: var(--color, #ffffff);
}

.header__logo__link:before {
    background-color: var(--color, #ffffff);
}

.header__nav__contact a {
    color: var(--color, #ffffff);
}

.header__nav__contact a.-active:after {
    background-color: var(--color, #ffffff);
}

.layout {
    padding: 0;
}

.front {
    font-family: var(--ff-fot-tbom-pr6-r);
}

.front-scroll {
    bottom: 0;
    left: 0;
    position: fixed;
    right: 0;
    z-index: 99;
}

.front-scroll.-white {
    --color: #ffffff;
}

.front-scroll.-black {
    --color: #000000;
}

.front-scroll__button {
    -webkit-appearance: none;
    appearance: none;
    background: none;
    border: none;
    border-radius: 0;
    color: var(--color, #000000);
    display: block;
    font-size: var(--fs12);
    font-weight: 700;
    letter-spacing: 0.15em;
    line-height: 1.05;
    margin: 0 auto;
    padding: 0 0 14.6666666667vw;
    position: relative;
    text-align: center;
    text-decoration: none;
    transition: color 0.35s cubic-bezier(0.645, 0.045, 0.355, 1) 0s;
    width: 18.6666666667vw;
    z-index: 2;
}

@media (min-width: 768px) {
    .front-scroll__button {
        padding: 0 0 55px;
        width: 70px;
    }
}

.front-scroll__button:after {
    animation: gscroll 3s ease-in-out 0s infinite normal forwards;
    background-color: var(--color, #000000);
    bottom: 0;
    content: "";
    display: block;
    height: 13.3333333333vw;
    left: 0;
    margin: 0 auto;
    position: absolute;
    right: 0;
    transition: background-color 0.35s cubic-bezier(0.645, 0.045, 0.355, 1) 0s;
    width: 0.2666666667vw;
}

@media (min-width: 768px) {
    .front-scroll__button:after {
        height: 50px;
        width: 1px;
    }
}

@keyframes gscroll {
    0% {
        transform: scaleY(0);
        transform-origin: center top;
    }

    30% {
        transform: scaleY(1);
        transform-origin: center top;
    }

    31% {
        transform: scaleY(1);
        transform-origin: center bottom;
    }

    60% {
        transform: scaleY(0);
        transform-origin: center bottom;
    }

    100% {
        transform: scaleY(0);
        transform-origin: center bottom;
    }
}

.front__hero {
    height: 100svh;
    position: relative;
}

.front__hero__video {
    background-image: url(../images/pages/front/front-hero.webp);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    bottom: 0;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    z-index: 0;
}

.front__hero__video video {
    display: block;
    height: 100%;
    object-fit: cover;
    object-position: center;
    width: 100%;
}

.front__hero__main {
    align-items: center;
    display: flex;
    flex-flow: row nowrap;
    font-size: var(--fs10);
    height: 100%;
    justify-content: center;
    position: relative;
    width: 100%;
    z-index: 1;
}

.front__hero__main-container {
    width: 100%;
}

.front__hero__main__logo {
    margin: 0 0 13.3333333333vw;
    text-align: center;
}

@media (min-width: 768px) {
    .front__hero__main__logo {
        margin: 0 0 50px;
    }
}

.front__hero__main__logo img {
    width: 32vw;
}

@media (min-width: 768px) {
    .front__hero__main__logo img {
        width: 146px;
    }
}

.front__hero__main__title__ja {
    color: #ffffff;
    font-family: var(--ff-fot-tbom-pr6-b);
    font-size: var(--fs15);
    font-weight: 400;
    letter-spacing: 0.4em;
    line-height: 1.05;
    margin: 0 0 3.2vw;
    text-align: center;
}

@media (min-width: 768px) {
    .front__hero__main__title__ja {
        font-size: var(--fs16);
        margin: 0 0 12px;
    }
}

.front__hero__main__title__en {
    color: #ffffff;
    font-family: var(--ff-gpp-m);
    font-size: var(--fs11);
    letter-spacing: 0.105em;
    line-height: 1.05;
    margin: 0;
    text-align: center;
}

.front__hero__scroll {
    bottom: 0;
    color: #ffffff;
    display: block;
    font-size: var(--fs12);
    font-weight: 700;
    left: 0;
    letter-spacing: 0.15em;
    line-height: 1.05;
    margin: 0 auto;
    padding: 0 0 14.6666666667vw;
    position: absolute;
    right: 0;
    text-align: center;
    text-decoration: none;
    width: 18.6666666667vw;
    z-index: 2;
}

@media (min-width: 768px) {
    .front__hero__scroll {
        padding: 0 0 55px;
        width: 70px;
    }
}

.front__hero__scroll:after {
    animation: heroScroll 3s ease-in-out 0s infinite normal forwards;
    background-color: #ffffff;
    bottom: 0;
    content: "";
    display: block;
    height: 13.3333333333vw;
    left: 0;
    margin: 0 auto;
    position: absolute;
    right: 0;
    width: 0.2666666667vw;
}

@media (min-width: 768px) {
    .front__hero__scroll:after {
        height: 50px;
        width: 1px;
    }
}

@keyframes heroScroll {
    0% {
        transform: scaleY(0);
        transform-origin: center top;
    }

    30% {
        transform: scaleY(1);
        transform-origin: center top;
    }

    31% {
        transform: scaleY(1);
        transform-origin: center bottom;
    }

    60% {
        transform: scaleY(0);
        transform-origin: center bottom;
    }

    100% {
        transform: scaleY(0);
        transform-origin: center bottom;
    }
}

.front__overview {
    height: 100svh;
}

.front__overview-centering {
    align-items: center;
    display: flex;
    flex-flow: row nowrap;
    height: 100%;
    justify-content: center;
    width: 100%;
}

.front__overview-container {
    margin: 0 auto;
    max-width: 1104px;
    padding: 0 8vw;
    width: 100%;
}

@media (min-width: 768px) {
    .front__overview-container {
        padding: 0 30px;
    }
}

@media (min-width: 1284px) {
    .front__overview-container {
        max-width: 85.9813084112vw;
    }
}

.front__overview__title {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs24);
    font-weight: 400;
    letter-spacing: 0.105em;
    line-height: 1.4;
    margin: 0 0 60px;
    text-align: center;
}

@media (min-width: 768px) {
    .front__overview__title {
        font-size: var(--fs26);
    }
}

.front__overview__subtitle {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs13);
    font-weight: 400;
    letter-spacing: 0.32em;
    line-height: 2.9;
    margin: 0 0 60px;
    text-align: center;
}

@media (min-width: 768px) {
    .front__overview__subtitle {
        font-size: var(--fs15);
        line-height: 2.6;
    }
}

.front__overview__contents__en p {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs11);
    font-weight: 400;
    letter-spacing: 0.105em;
    line-height: 2;
    margin: 0;
    text-align: center;
}

@media (min-width: 768px) {
    .front__overview__contents__en p {
        font-size: var(--fs12);
        line-height: 1.4;
    }
}

.front__item {
    height: 100svh;
    width: 100%;
}

.front__item__1st {
    align-items: flex-end;
    background-image: url(../images/pages/front/front-1st-bg-mb.webp);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    color: #ffffff;
    display: flex;
    flex-flow: row nowrap;
    height: 100%;
    justify-content: stretch;
    padding: 0 0 120px;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__1st {
        background-image: url(../images/pages/front/front-1st-bg.webp);
        padding: 0 0 60px;
    }
}

.front__item__1st-container {
    margin: 0 auto;
    max-width: 1104px;
    padding: 0 8vw;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__1st-container {
        padding: 0 30px;
    }
}

@media (min-width: 1284px) {
    .front__item__1st-container {
        max-width: 85.9813084112vw;
    }
}

.front__item__1st__contents__en {
    margin: 0 0 24px;
}

.front__item__1st__contents__en p {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs12);
    letter-spacing: 0.105em;
    line-height: 2;
    margin: 0;
}

.front__item__1st__contents__ja p {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs13);
    letter-spacing: 0.5em;
    line-height: 2.9;
    margin: 0;
}

@media (min-width: 768px) {
    .front__item__1st__contents__ja p {
        font-size: var(--fs14);
        line-height: 2.8;
    }
}

.front__item__2nd {
    align-items: center;
    background-image: url(../images/pages/front/front-2nd-bg-mb.webp);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    color: #ffffff;
    display: flex;
    flex-flow: row nowrap;
    height: 100%;
    justify-content: stretch;
    padding: 0 0 60px;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__2nd {
        background-image: url(../images/pages/front/front-2nd-bg.webp);
    }
}

.front__item__2nd-container {
    margin: 0 auto;
    max-width: 1104px;
    padding: 0 8vw;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__2nd-container {
        padding: 0 30px;
    }
}

@media (min-width: 1284px) {
    .front__item__2nd-container {
        max-width: 85.9813084112vw;
    }
}

.front__item__2nd__contents {
    margin: 0 0 0 auto;
    width: -webkit-fit-content;
    width: fit-content;
}

.front__item__2nd__contents__en {
    margin: 0 0 24px;
}

.front__item__2nd__contents__en p {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs12);
    letter-spacing: 0.105em;
    line-height: 2;
    margin: 0;
}

.front__item__2nd__contents__ja p {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs13);
    letter-spacing: 0.32em;
    line-height: 2.9;
    margin: 0;
}

@media (min-width: 768px) {
    .front__item__2nd__contents__ja p {
        font-size: var(--fs14);
        line-height: 2.8;
    }
}

.front__item__3rd {
    align-items: center;
    background-image: url(../images/pages/front/front-3rd-bg-mb.webp);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    display: flex;
    flex-flow: row nowrap;
    height: 100%;
    justify-content: stretch;
    padding: 0 0 60px;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__3rd {
        background-image: url(../images/pages/front/front-3rd-bg.webp);
    }
}

.front__item__3rd-container {
    margin: 0 auto;
    max-width: 1104px;
    padding: 0 8vw;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__3rd-container {
        padding: 0 30px;
    }
}

@media (min-width: 1284px) {
    .front__item__3rd-container {
        max-width: 85.9813084112vw;
    }
}

.front__item__3rd__contents__en {
    margin: 0 0 24px;
}

.front__item__3rd__contents__en p {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs12);
    letter-spacing: 0.105em;
    line-height: 2;
    margin: 0;
}

.front__item__3rd__contents__ja p {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs13);
    letter-spacing: 0.32em;
    line-height: 2.9;
    margin: 0;
}

@media (min-width: 768px) {
    .front__item__3rd__contents__ja p {
        font-size: var(--fs14);
        line-height: 2.8;
    }
}

.front__item__4th {
    align-items: center;
    background-image: url(../images/pages/front/front-4th-bg-mb.webp);
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    display: flex;
    flex-flow: row nowrap;
    height: 100%;
    justify-content: stretch;
    padding: 0 0 60px;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__4th {
        background-image: url(../images/pages/front/front-4th-bg.webp);
    }
}

.front__item__4th-container {
    margin: 0 auto;
    max-width: 1104px;
    padding: 0 8vw;
    width: 100%;
}

@media (min-width: 768px) {
    .front__item__4th-container {
        padding: 0 30px;
    }
}

@media (min-width: 1284px) {
    .front__item__4th-container {
        max-width: 85.9813084112vw;
    }
}

.front__item__4th__contents {
    text-align: center;
}

.front__item__4th__contents__en {
    margin: 0 0 24px;
}

.front__item__4th__contents__en p {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs12);
    letter-spacing: 0.105em;
    line-height: 2;
    margin: 0;
}

.front__item__4th__contents__ja p {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs13);
    letter-spacing: 0.32em;
    line-height: 2.9;
    margin: 0;
}

@media (min-width: 768px) {
    .front__item__4th__contents__ja p {
        font-size: var(--fs14);
        line-height: 2.8;
    }
}

.front__about {
    padding: 180px 0 194px;
}

@media (min-width: 768px) {
    .front__about {
        padding: 160px 0;
    }
}

.front__about-container {
    margin: 0 auto;
    max-width: 1104px;
    padding: 0 8vw;
    width: 100%;
}

@media (min-width: 768px) {
    .front__about-container {
        padding: 0 30px;
    }
}

@media (min-width: 1284px) {
    .front__about-container {
        max-width: 85.9813084112vw;
    }
}

.front__about__contents {
    margin: 0 0 66.6666666667vw;
    text-align: center;
}

@media (min-width: 768px) {
    .front__about__contents {
        margin: 0 0 250px;
    }
}

.front__about__contents__en {
    margin: 0 0 23.4666666667vw;
}

@media (min-width: 768px) {
    .front__about__contents__en {
        margin: 0 0 88px;
    }
}

.front__about__contents__en p {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs12);
    letter-spacing: 0.105em;
    line-height: 2;
    margin: 0 0 2em;
}

.front__about__contents__en p:last-child {
    margin-bottom: 0;
}

.front__about__contents__ja p {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs13);
    letter-spacing: 0.32em;
    line-height: 2.9;
    margin: 0 0 2em;
}

@media (min-width: 768px) {
    .front__about__contents__ja p {
        font-size: var(--fs14);
        line-height: 2.8;
    }
}

.front__about__contents__ja p:last-child {
    margin-bottom: 0;
}

.front__about__msg__logo {
    margin: 0 0 16vw;
    text-align: center;
}

@media (min-width: 768px) {
    .front__about__msg__logo {
        margin: 0 0 60px;
    }
}

.front__about__msg__logo img {
    width: 32vw;
}

@media (min-width: 768px) {
    .front__about__msg__logo img {
        width: 136px;
    }
}

.front__about__msg__title {
    font-family: var(--ff-gpp-r);
    font-size: var(--fs15);
    letter-spacing: 0.105em;
    line-height: 1.4;
    margin: 0 0 42.6666666667vw;
    text-align: center;
}

@media (min-width: 768px) {
    .front__about__msg__title {
        font-size: var(--fs17);
        margin: 0 0 160px;
    }
}

.front__about__msg__content {
    margin: 0 0 69.3333333333vw;
}

@media (min-width: 768px) {
    .front__about__msg__content {
        margin: 0 0 260px;
    }
}

.front__about__msg__content p {
    font-family: var(--ff-fot-tbom-pr6-m);
    font-size: var(--fs14);
    letter-spacing: 0.32em;
    line-height: 2.5;
    margin: 0;
    text-align: center;
}

@media (min-width: 768px) {
    .front__about__msg__content p {
        line-height: 2.8;
    }
}

.front__about__contact__content {
    margin: 0 0 13.3333333333vw;
}

@media (min-width: 768px) {
    .front__about__contact__content {
        margin: 0 0 50px;
    }
}

.front__about__contact__content p {
    font-size: var(--fs13);
    letter-spacing: 0.36em;
    line-height: 2.6;
    margin: 0;
    text-align: center;
}

.front__about__contact__action a {
    align-items: center;
    color: inherit;
    display: flex;
    flex-flow: row nowrap;
    font-family: var(--ff-gpp-m);
    font-size: var(--fs28);
    height: 21.3333333333vw;
    justify-content: center;
    letter-spacing: 0.15em;
    line-height: 1.05;
    margin: 0 auto;
    padding: 0.25em 0 0 0.15em;
    position: relative;
    text-align: center;
    text-decoration: none;
    width: 69.3333333333vw;
}

@media (min-width: 768px) {
    .front__about__contact__action a {
        font-size: var(--fs32);
        height: 100px;
        width: 460px;
    }
}

.front__about__contact__action a:before, .front__about__contact__action a:after {
    border-color: #000;
    border-style: solid;
    bottom: auto;
    content: "";
    display: block;
    left: auto;
    position: absolute;
    right: auto;
    top: auto;
    transition: top 0.35s cubic-bezier(0.645, 0.045, 0.355, 1) 0s, right 0.35s cubic-bezier(0.645, 0.045, 0.355, 1) 0s, bottom 0.35s cubic-bezier(0.645, 0.045, 0.355, 1) 0s, left 0.35s cubic-bezier(0.645, 0.045, 0.355, 1) 0s;
    z-index: 0;
}

.front__about__contact__action a:before {
    border-width: 0 0 0.2666666667vw 0.2666666667vw;
    bottom: 0;
    left: 0;
    right: 5.3333333333vw;
    top: 5.3333333333vw;
}

@media (min-width: 768px) {
    .front__about__contact__action a:before {
        border-width: 0 0 1px 1px;
        right: 20px;
        top: 20px;
    }
}

.front__about__contact__action a:after {
    border-width: 0.2666666667vw 0.2666666667vw 0 0;
    bottom: 5.3333333333vw;
    left: 5.3333333333vw;
    right: 0;
    top: 0;
}

@media (min-width: 768px) {
    .front__about__contact__action a:after {
        border-width: 1px 1px 0 0;
        bottom: 20px;
        left: 20px;
    }
}

@media (hover: hover) and (pointer: fine) {
    .front__about__contact__action a:hover:before {
        right: 0;
        top: 0;
    }

    .front__about__contact__action a:hover:after {
        bottom: 0;
        left: 0;
    }
}