@charset "utf-8";

/*======================
*
header
*
=======================*/
header {
    position: sticky;
    z-index: 9999;
    top: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background-color: #FAFAFC;
    padding: 28px calc((80 / 1366) * 100%);
}

header img.logo {
    width: 240px;
}

header nav {
    display: flex;
    align-items: center;
}

header nav ul {
    display: flex;
    align-items: center;
    gap: 32px;
    margin-right: 32px;
}


header nav ul li {
    font-weight: 500;
}

header nav ul li a {
    position: relative;
    padding-right: 26px;
    transition: 0.3s ease-in-out;
}

header nav ul li a::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
    width: 20px;
    aspect-ratio: 1 / 1;
    background: url(img/common/arrow-icn_b.webp) no-repeat right center / 100%;
    transition: 0.3s ease-in-out;
}

header nav ul li:last-of-type a:after {
    background-image: url(img/common/link-icn.webp);
}

@media (any-hover:hover) {
    header nav ul li a:hover {
        opacity: 0.75;
    }

    header nav ul li:not(:last-of-type) a:hover:after {
        translate: 0 3px;
    }
}

header .contact {
	font-weight: 700;
	color: #FFF;
	text-align: center;
	padding: 10px 35px 8px;
	background-color: var(--main-color);
	border-radius: 50px;
	line-height: 1.5;
	box-sizing: border-box;
	transition: 0.3s ease-in-out;
}

/*======================
*
mv
*
=======================*/
.mv-area {
    position: relative;
    overflow: hidden;
}

.mv-area h1 {
    position: absolute;
    top: calc((290 / 688) * 100%);
    left: calc((80 / 1366) * 100%);
    font-size: clamp(20px, 3.22vw, 44px);
    font-weight: 500;
    letter-spacing: 0.24em;
    line-height: calc(80 / 44);
    color: var(--main-color);
}

.mv-area .mv {
    width: calc((1025 / 1366) * 100%);
    aspect-ratio: 1025 / 688;
    margin-left: auto;
    background: url(img/mv/mv.webp) no-repeat left top / cover;
}

@media (min-width:768px) {
    .mv-area .mv {
        height: calc(100dvh - var(--header));
    }
}

.mv-area .mv img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.mv-area .deco {
    position: absolute;
    bottom: -2px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    width: 100vw;
    font-family: var(--Inter);
    font-size: 153px;
    font-weight: 600;
    white-space: nowrap;
    line-height: 0.74;
    color: var(--main-color);
}

.mv-area .deco span {
    display: inline-block;
    animation: mv-loop 25.0s 2.0s linear infinite;
}

@keyframes mv-loop {
    0% {
        transform: translateX(0%);
    }

    100% {
        transform: translateX(-100%);
    }
}

/*======================
about
=======================*/
section#about .cont-area {
    display: flex;
    flex-direction: row-reverse;
    align-items: stretch;
}

@media (min-width:1025px) {
    section#about .cont-area {
        min-height: 100dvh;
    }
}

section#about .img-area {
    width: 50%;
    overflow: hidden;
}

section#about .img-area img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

section#about .text-area {
    width: 50%;
    color: #FFF;
    background-color: var(--main-color);
}

section#about .text-area .inner {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column-reverse;
    width: 100%;
    height: 100%;
}

section#about .text-area p {
    font-size: 18px;
    font-weight: 500;
    text-align: center;
    line-height: 2.0;
}

section#about .text-area h2 {
    font-size: 30px;
    font-weight: 500;
    line-height: calc(52 / 30);
    margin-top: 32px;
}

/*======================
slider
=======================*/
.slider-area {
    display: flex;
    margin-top: 120px;
}

.slider-area ul {
    display: flex;
    min-width: calc((1584 / 1366) * 100%);
    animation: slider 25.0s -0.5s linear infinite;
}

@keyframes slider {
    0% {
        transform: translateX(0%);
    }

    100% {
        transform: translateX(-100%);
    }
}

.slider-area ul li {
    width: calc((480/ 1536) * 100%);
    margin-right: 48px;
}

/*======================
message
=======================*/
#message {
    width: calc((1206 / 1366) * 100%);
    margin: auto;
    margin-top: 70px;
}

#message .cont-area {
    margin: 80px auto 0;
}

#message .cont-area .cont {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: calc((106 / 1206) * 100%);
    width: calc((1106 / 1206) * 100%);
}

#message .cont-area .cont+.cont {
    margin-top: 80px;
}

#message .cont-area .cont:nth-of-type(odd) {
    flex-direction: row-reverse;
    margin-left: auto;
}

#message .cont-area .cont .img-area {
    width: calc((600 / 1106) * 100%);
}

#message .cont-area .cont .text-area {
    flex: 1;
}

#message .cont-area .cont .text-area h3 {
    font-size: clamp(20px, 1.9vw, 26px);
    font-weight: 500;
    line-height: calc(39 / 26);
}

#message .cont-area .cont .text-area h3 span {
    color: var(--main-color);
}

#message .cont-area .cont .text-area p {
    font-size: clamp(14px, 1.17vw, 16px);
    font-weight: 500;
    line-height: 2.0;
    margin-top: 11px;
}

/*======================
service
=======================*/
#service {
    margin-top: 150px;
}

@media (min-width:768px) {
    #service .hd-area {
        width: calc((1206 / 1366) * 100%);
        margin: auto;
    }
}

#service .cont-area {
    position: relative;
    width: calc((1206 / 1366) * 100%);
    margin: 120px auto 29px;
}

#service .cont-area .text-area {
    position: relative;
    z-index: 10;
}

#service .cont-area .text-area h3 {
    font-size: clamp(20px, 1.9vw, 26px);
    font-weight: 500;
    line-height: calc(39 / 26);
    text-align: center;
}

#service .cont-area .text-area h3 span {
    color: var(--main-color);
}

#service .cont-area .text-area p {
    font-size: clamp(14px, 1.17vw, 16px);
    font-weight: 500;
    line-height: 2.0;
    text-align: center;
    margin-top: 11px;
}

#service .cont-area .deco {
    position: absolute;
    opacity: 0;
}

#service .cont-area .deco01 {
    z-index: 1;
    width: calc((180 / 1206) * 100%);
    top: calc((114 / 383) * -100%);
    left: calc((184 / 1206) * 100%);
    filter: blur(5px);
}

#service .cont-area .deco02 {
    z-index: 2;
    width: calc((240 / 1206) * 100%);
    top: calc((97 / 383) * 100%);
    left: calc((26 / 1206) * 100%);
}

#service .cont-area .deco03 {
    z-index: 2;
    width: calc((320 / 1206) * 100%);
    top: calc((59 / 383) * -100%);
    right: calc((26 / 1206) * -100%);
}

#service .cont-area .deco04 {
    z-index: 1;
    width: calc((150 / 1206) * 100%);
    top: calc(100% + ((52 / 383) * 100%));
    right: calc((210 / 1206) * 100%);
    filter: blur(5px);
}

#service .cont-area :is(.deco02, .deco03) {
    translate: 0 15px;
    filter: blur(5px);
}

#service .cont-area :is(.deco02, .deco03).active {
    animation: service-animation ease-in-out 1.0s forwards;
}

#service .cont-area :is(.deco01, .deco04).active {
    animation: service-animation2 ease-in-out 1.0s forwards;
}

@keyframes service-animation {
    to {
        translate: 0;
        filter: blur(0);
        opacity: 1.0;
    }
}

@keyframes service-animation2 {
    to {
        opacity: 1.0;
    }
}

/*======================
point
=======================*/
#point {
    width: calc((1110 / 1366) * 100%);
    margin: 80px auto 115px;
}

#point .cont-area {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: calc((30 / 1110) * 100%);
    margin-top: 50px;
}

#point .cont-area .text-area {
    position: relative;
    z-index: 2;
    margin-top: -44px;
}

#point .cont-area .text-area .num {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    width: 88px;
    aspect-ratio: 1 / 1;
    font-family: var(--Inter);
    font-weight: 600;
    line-height: 1.0;
    color: #FFF;
    margin: auto;
    padding-top: 4px;
    background-color: var(--main-color);
}

#point .cont-area .text-area .num span:nth-of-type(1) {
    font-size: 12px;
}

#point .cont-area .text-area .num span:nth-of-type(2) {
    font-size: 32px;
    margin-top: 7px;
}

#point .cont-area .text-area h3 {
    font-size: clamp(20px, 1.9vw, 26px);
    font-weight: 500;
    line-height: calc(39 / 26);
    text-align: center;
    margin-top: 9px;
}

#point .cont-area .text-area h3 span {
    color: var(--main-color);
}

#point .cont-area .text-area p {
    font-size: clamp(14px, 1.17vw, 16px);
    font-weight: 500;
    line-height: 2.0;
    margin-top: 11px;
}

/*======================
company
=======================*/
.company {
    padding: 113px 0 120px;
    background-color: #FFF;
}

.company .hd01 {
    text-align: center;
}

.company .cont-area {
    display: grid;
    grid-template-columns: auto 1fr;
    width: 840px;
    font-size: 16px;
    line-height: calc(26 / 16);
    margin: 80px auto 0;
}

.company .cont-area :is(.th, .td) {
    margin-bottom: 30px;
    padding-bottom: 30px;
    border-bottom: solid 1px #D2DAE2;
}

.company .cont-area .th {
    color: var(--main-color);
    padding-right: 75px;
}

/*======================
cta
=======================*/
.cta {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
}

.cta .cont {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 143px 0 155px;
}

.cta .cont.recruit {
    background: url(img/cta/recruit-cta.webp) no-repeat top / cover;
}

.cta .cont.contact {
    background-color: var(--main-color);
}

.cta .cont .hd01 {
    color: #FFF;
}

.cta .cont .hd01 span {
    color: #FFF;
}

.cta .cont .btn-area {
    position: relative;
}

.cta .cont .annotation {
    position: absolute;
    top: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%);
    display: inline-block;
    width: 100%;
    font-size: 12px;
    color: #FFF;
}

.cta .cont .btn01 {
    width: fit-content;
    margin: 24px auto 0;
}

.cta .cont .btn01::after {
    right: 20px;
}

.cta .cont.recruit .btn01::after {
    background: url(img/common/link-icn_w.webp) no-repeat left top / 100%;
}

.cta .cont.contact .btn01 {
    color: var(--main-color);
    background-color: #FFF;
}

.cta .cont.contact .btn01::after {
    background: url(img/common/arrow-icn_blue.webp) no-repeat left top / 100%;
}

/*======================
*
contact
*
=======================*/
.contact-page .contact-head {
    padding: 100px 0 60px;
}

.contact-page .contact-head .hd-area .hd01 {
    text-align: center;
    margin: auto;
}

.contact-page #contact {
    width: calc((1110 / 1366) * 100%);
    margin: auto;
    padding: 80px calc((135 / 1366) * 100%);
    background-color: #FFF;
}

.contact-page #contact :is(.row, dl) {
    position: relative;
    display: grid;
    align-items: baseline;
    grid-template-columns: auto 1fr;
}

.contact-page #contact .row {
    gap: 38px;
}

.contact-page #contact .row+.row {
    margin-top: 16px;
}

.contact-page #contact :is(.row label, dl dt) {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 16px;
    font-weight: 700;
    width: 167px;
}

.contact-page #contact span.required {
    font-size: 12px;
    font-weight: 700;
    color: #FFF;
    padding: 2px 4px 1px;
    border-radius: 4px;
    background-color: var(--main-color);
}

.contact-page #contact :is(.row label+*, dl dd) {
    font-size: 16px;
    font-weight: 500;
}

.contact-page #contact .row label+* {
    padding: 28px 24px;
    border: solid 1px #D2DAE2;
    background-color: #FAFAFC;
    border-radius: 4px;
}

.contact-page #contact .row label+*::placeholder {
    font-size: 16px;
    font-weight: 700;
    color: #D2DAE2;
}

.contact-page #contact .row textarea {
    min-height: 240px;
    resize: none;
}

.contact-page #contact .row .error_text {
    position: absolute;
    top: 57px;
    font-size: 11px;
    font-weight: 700;
}

/*ボタン*/
.contact-page #contact .submit-btn {
    width: 241px;
    height: 60px;
    margin: 48px auto 0;
}

.contact-page #contact .submit-btn::after {
    right: 20px;
    background: url(img/common/arrow-icn_w.webp) no-repeat top right / 100%;
}

/*======================
confirmation
=======================*/
.contact-page #contact .confirmation-cont :is(dt, dd):not(:last-of-type) {
    padding-bottom: 28px;
    margin-bottom: 28px;
    border-bottom: solid #D2DAE2 1px;
}

.contact-page #contact .confirmation-cont dt {
    width: 205px;
}

/*ボタン*/
.contact-page #contact .confirmation-cont+.btn-area {
    display: flex;
    justify-content: center;
    gap: 16px;
    margin: 75px auto 0;
}

.contact-page #contact .confirmation-cont+.btn-area .confirm-btn {
    width: 272px;
    height: 60px;
    margin: 0;
    color: var(--main-color);
    border: solid 2px var(--main-color);
    background-color: #FFF;
}

.contact-page #contact .confirmation-cont+.btn-area .confirm-btn::after {
    left: 20px;
    transform: translateY(-50%) rotate(180deg);
    background: url(img/common/arrow-icn_blue.webp) no-repeat top right / 100%;
}


.contact-page #contact .confirmation-cont+.btn-area .submit-btn {
    width: 272px;
    margin: 0 auto;
}

/*======================
thanks error
=======================*/
.contact-page #contact :is(.thanks-cont, .error-cont) {
    font-weight: 500;
    text-align: center;
}

.contact-page #contact :is(.thanks-cont, .error-cont) p:first-of-type {
    font-size: 26px;
    color: var(--main-color);
}

.contact-page #contact :is(.thanks-cont, .error-cont) p:last-of-type {
    font-size: 16px;
    line-height: 2.0;
    margin-top: 16px;
}

.contact-page #contact :is(.thanks-cont, .error-cont)+.btn-area .btn01 {
    width: 241px;
    height: 60px;
    margin: 15px auto 0;
}

.contact-page #contact :is(.thanks-cont, .error-cont)+.btn-area .btn01::after {
    right: 20px;
    background: url(img/common/arrow-icn_w.webp) no-repeat top right / 100%;
}

/*======================
*
404
*
=======================*/
.page-404{
    display: flex;
    align-items: center;
    min-height: calc(100dvh - var(--header,60px));
}

.page-404 .cont{
    width: calc((1110 / 1366) * 100%);
    margin: auto;
    padding: 80px calc((135 / 1366) * 100%);
    text-align: center;
    background-color: #FFF;
}

.page-404 .cont .wrapper:first-of-type{
    font-family: var(--Inter);
    font-weight: 900;
    margin-bottom: 30px;
}

.page-404 .cont .wrapper:first-of-type p{
    font-size: 28px;
    color: var(--main-color);
}

.page-404 .cont .btn01 {
    max-width: 100%;
    width: 241px;
    height: 60px;
    margin: 48px auto 0;
}

.page-404 .cont .btn01::after {
    right: 20px;
    background: url(img/common/arrow-icn_w.webp) no-repeat top right / 100%;
}

.contact-page #contact .submit-btn {
    width: 241px;
    height: 60px;
    margin: 48px auto 0;
}

/*======================
*
footer
*
=======================*/
footer {
    padding: 65px 10px;
    text-align: center;
    background-color: #FAFAFC;
}

footer img {
    width: 240px;
    margin: auto;
}

footer .copyright {
    font-family: var(--Inter);
    font-size: 12px;
    font-weight: 400;
    margin-top: 23px;
}

/*===============
*
breadcrumbs
*
===============*/
.breadcrumbs ul {
    display: flex;
}

.breadcrumbs ul li+li {
    padding-left: 1.0em;
}