@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Figtree:wght@300..900&family=Noto+Sans+JP:wght@100..900&family=Roboto+Condensed:wght@300..700&display=swap');

:root {
    --blue: #294C7A;
    --bgBlue: #F0F3FE;
    --lineBlue: #B7D4FA;
    --opacityBlue: #D3DAE7;
    --fontJa: "Noto Sans JP", sans-serif;
    --fontEn: "Figtree", sans-serif;
    --fontEn2: "Be Vietnam Pro", sans-serif;
    --fontRoboto: 'Roboto Condensed', 'Noto Sans JP', sans-serif;
}


html {
    font-size: 0.694vw;
    scroll-behavior: auto;
}

body {
    font-family: "Noto Sans JP", sans-serif;
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 1.7;
    color: #333;
    background: #F8F9FF;
}

main{
    overflow-x: hidden;
}

.wrapper{
    margin: auto;
    max-width: 110rem;
}

.sp{
    display: none;
}
@media (max-width: 767px) {
    .pc {
        display: none;
    }
    .sp {
        display: block;
    }
}

section{
    padding: 10rem 0;
    position: relative;
}

.section_title{
    color: var(--blue);
    display: flex;
    align-items: end;
    justify-content: start;
    gap: 5rem;
    font-family: var(--fontEn);
    font-size: 7.2rem;
    line-height: 1;
    padding-bottom: 3rem;
    border-bottom: solid 0.1rem var(--lineBlue);
}

.section_title span{
    font-family: var(--fontJa);
    font-size: 1.4rem;
    font-weight: 500;
    margin-bottom: 1rem;
}

.hover{
    transition: 0.3s;
}

.hover:hover{
    opacity: 0.7;
}

.grecaptcha-badge { 
    visibility: hidden; 
}


/* under page ---------------------------------------------------*/

.under_kv{
    width: 137rem;
    margin: 11rem auto 0;
    padding: 10rem 5rem;
    border-radius: 1rem;
}

.page_title{
    color: #fff;
    font-family: var(--fontEn);
    font-size: 7.2rem;
    line-height: 1;
}

.page_title span{
    display: flex;
    align-items: center;
    gap: 1rem;
    font-family: var(--fontJa);
    font-size: 1.6rem;
    font-weight: 500;
    margin-top: 1.5rem;
}

.page_title span::before{
    content: "";
    display: block;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background: #fff;
}

/* more btn ---------------------------------------------------*/

.more_btn{
    color: var(--blue);
    background: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 4.5rem;
    border-radius: 10rem;
    font-size: 1.4rem;
    padding: 0.5rem 0.5rem 0.5rem 3rem;
    border: solid 0.1rem var(--opacityBlue);
}

.more_arrow{
    background: var(--blue);
    width: 3.5rem;
    height: 3.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    flex-shrink: 0;
}

.more_arrow img{
    width: 1.1rem;
    height: 0.9rem;
    transition: 0.3s;
}

.more_btn:hover .more_arrow img{
    transform: translateX(0.5rem);
}


/* cta ---------------------------------------------------*/

.contact .section_title{
    color: #fff;
}

.contact_inner{
    background: var(--blue);
    border-radius: 1.6rem;
    padding: 7rem 8rem;
    display: flex;
    flex-flow: column;
    gap: 3rem;
}

.contact_inner .section_title{
    margin-bottom: 0!important;
}

.contact_content{
    color: #fff;
    display: flex;
    align-items: center;
    gap: 6rem;
}

.contact_content p{
    line-height: 2.1;
}

.contact_link{
    display: flex;
    flex-flow: column;
    flex-shrink: 0;
    gap: 2rem;
}

.contact_tel{
    display: flex;
    align-items: end;
    justify-content: center;
    font-family: var(--fontRoboto);
    letter-spacing: 0.04em;
}

.contact_tel p:nth-child(1) {
    font-size: 3.2rem;
    line-height: 1.2;
}

.contact_tel p:nth-child(2) {
    font-size: 4.2rem;
    line-height: 1;
}

.contact_link .more_btn {
    color: var(--blue);
    background: #fff;
    display: inline-flex    ;
    align-items: center;
    gap: 2.5rem;
    border-radius: 10rem;
    font-family: var(--fontEn);
    font-size: 2.6rem;
    font-weight: 500;
    padding: 0.8rem 0.8rem 0.8rem 4rem;
    border: solid 0.1rem var(--opacityBlue);
}

.contact_link .more_arrow{
    width: 6.5rem;
    height: 6.5rem;
}


/* header ---------------------------------------------------*/

header{
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: fixed;
    z-index: 999;
    top: 0;
    padding: 2rem 3.5rem;
}

.header_logo{
    width: 21rem;
}

.header_logo img{
    width: 100%;
}

.header_menu{
    color: var(--blue);
    font-family: var(--fontEn);
    letter-spacing: 0.04em;
    display: flex;
    justify-content: end;
    align-items: center;
    gap: 3.5rem;
}

.header_contact{
    color: #fff;
    background-color: var(--blue);
    border: solid 0.1rem var(--blue);
    border-radius: 10rem;
    font-size: 1.4rem;
    font-weight: 500;
    padding: 1rem 3rem;
    transition: 0.3s;
}

.header_contact:hover{
    color: var(--blue);
    background-color: #00000000;
}

.header_hamburger {
    display: none;
}

.header_hamburger span{
    display: inline-block;
    transition: all .4s;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    height: 0.1rem;
    background: #fff;
    width: 1.2rem;
}

.header_hamburger span:nth-of-type(1) {
    top: 1rem;
}

.header_hamburger span:nth-of-type(2) {
    top: 1.7rem;
}

.header_hamburger.active span:nth-of-type(1) {
    top: 0.8rem;
    left: 0.7rem;
    transform: translateY(7px) rotate(-45deg);
    width: 1.5rem;
}

.header_hamburger.active span:nth-of-type(2){
    top: 2.2rem;
    left: 0.7rem;
    transform: translateY(-7px) rotate(45deg);
    width: 1.5rem;
}

.header__nav {
    display: none;
}

.header_contact:hover a, .header.fixType .header_contact:hover a {
    background-color: #fff;
}

.header_contact:hover a, .header.fixType .header_contact:hover a {
    color: var(--bule);
}

.header_fixed .header_list:not(.header_contact) a::after {
    background-color: #000;
    bottom: -6px;
}


/* footer ---------------------------------------------------*/

footer {
    padding: 9rem 16rem;
    border-top: solid 0.1rem var(--lineBlue);
}

.footer_inner{
    display: flex;
    align-items: stretch;
    justify-content: space-between;
}

.footer_left{
    display: flex;
    flex-flow: column;
    gap: 5rem;
}

.footer_logo{
    width: 30rem;
}

.footer_logo img{
    width: 100%;
}

.footer_address{
    color: var(--blue);
    display: flex;
    flex-flow: column;
    gap: 1rem;
}

.footer_address p{
    font-weight: 500;
}

.footer_address a{
    font-size: 1.2rem;
    font-weight: 500;
    letter-spacing: 0.07em;
}

.footer_right{
    display: flex;
    flex-flow: column;
    justify-content: space-between;
    align-items: end;
}

.footer_menu{
    color: var(--blue);
    display: flex;
    align-items: center;
    gap: 3rem;
}

small{
    color: var(--blue);
    font-size: 1.2rem;
}


@media (max-width: 1024px) {
    html {
        font-size: 0.977vw;
    }

    .wrapper{
        max-width: 90rem;
    }

    .under_kv{
        width: 98rem;
    }

    footer{
        padding: 9rem 6rem;
    }
}


@media screen and (max-width:767px){
    html {
        font-size: 2.56vw;
    }

    .wrapper{
        max-width: 35rem;
    }

    section{
        padding: 6rem 0;
        position: relative;
    }

    .section_title{
        flex-flow: column;
        align-items: start;
        gap: 1.5rem;
        font-size: 4.8rem;
    }

    .section_title span{
        margin-bottom: 0;
    }

    /* under page ---------------------------------------------------*/

    .under_kv{
        width: 37rem;
        margin: 6.5rem auto 0;
        padding: 5.5rem 2.5rem;
        border-radius: 0.4rem;
    }

    .page_title{
        font-size: 4.8rem;
    }

    .page_title span{
        font-size: 1.4rem;
    }

    .header_menu{
        display: none;
    }

    .header_hamburger {
        background: var(--blue);
        width: 3rem;
        height: 3rem;
        border-radius: 50%;
        display: block;
        position: fixed;
        top: 1.2rem;
        right: 1.5rem;
        z-index: 2000;
    }

    /* cta ---------------------------------------------------*/

    .contact_inner{
        border-radius: 0.8rem;
        padding: 6rem 2rem 3rem;
    }

    .contact_content{
        flex-flow: column;
        gap: 2rem;
    }

    .contact_link{
        width: 100%;
        gap: 2.5rem;
    }

    .contact_tel p:nth-child(1) {
        font-size: 2.4rem;
    }

    .contact_tel p:nth-child(2) {
        font-size: 4rem;
    }

    .contact_link .more_btn {
        display: flex;
        justify-content: space-between;
        font-size: 2rem;
    }

    /* header ---------------------------------------------------*/

    header{
        padding: 0.8rem 1.5rem;
    }

    .header_logo{
        width: 11.5rem;
    }

    .header__nav {
        display: block;
        background-color: #fff;
        position: fixed;
        top: 0;
        right: 0;
        width: 100%;
        height: 100dvh;
        z-index: 1000;
        transform: translateX(100%);
        transition: transform 0.5s ease;
    }

    .header__nav.active {
        transform: translateX(0);
    }

    .header_nav_menu {
        width: 100%;
    }

    .header_nav_inner {
        margin-top: 10rem;
        padding: 0 3.5rem;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 50px;
    }

    .header_nav_list {
        color: var(--blue);
        border-bottom: 1px solid var(--lineBlue);
    }

    .header_nav_list a {
        display: block;
        font-family: var(--fontEn);
        font-size: 2.4rem;
        font-weight: 500;
        letter-spacing: 0.04rem;
        padding: 2rem 0;
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
    }

    .header_nav_list a span{
        display: flex;
        align-items: center;
        gap: 0.5rem;
        font-size: 1.2rem;
        font-weight: 500;
    }

    .header_nav_list a span::before{
        content: "";
        display: block;
        background: var(--blue);
        height: 0.6rem;
        width: 0.6rem;
        border-radius: 50%;
    }

    .header_nav_list a svg {
        width: 2.4rem;
        height: 2.4rem;
    }

    .header_nav_list a svg rect,
    .header_nav_list a svg path{
        stroke: var(--blue);
        transition: 0.3s;
    }

    .header_nav_list a:hover svg rect,
    .header_nav_list a:hover svg path{
        stroke: #fff;
    }


    /* footer ---------------------------------------------------*/

    footer {
        padding: 6rem 2rem;
    }

    .footer_inner{
        flex-flow: column;
        gap: 4rem;
    }

    .footer_left{
        gap: 4rem;
    }

    .footer_logo{
        width: 25rem;
    }

    .footer_right{
        justify-content: start;
        align-items: start;
        gap: 6.5rem;
    }

    .footer_menu{
        font-size: 1.4rem;
        position: relative;
        width: 100%;
    }

    .footer_address{
        line-height: 1.4;
    }

    .pagetop{
        position: absolute;
        right: 0;
        bottom: -9rem;
    }
}


/* animation ---------------------------------------------------*/

.fadeIn{
    opacity: 0;
    transition: opacity 0.8s;
}

.fadeIn.show {
    opacity: 1;
}

.fadeInUp{
    opacity: 0;
    transform: translateY(2rem);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.fadeInUp.show {
    opacity: 1;
    transform: translateY(0);
}

.blur{
    opacity: 0;
    filter: blur(2rem);
    transition: filter 0.8s ease, opacity 0.8s ease;
}

.blur.show{
    opacity: 1;
    filter: blur(0);
}

/* delay */
.delay200{
    transition-delay: 0.2s;
}

.delay300{
    transition-delay: 0.3s;
}

.delay400{
    transition-delay: 0.4s;
}

.delay500{
    transition-delay: 0.5s;
}

.delay600{
    transition-delay: 0.6s;
}

.delay700{
    transition-delay: 0.7s;
}

.delay800{
    transition-delay: 0.8s;
}

.delay800{
    transition-delay: 0.8s;
}

.delay1000{
    transition-delay: 1s;
}