/*-- s-main-visual --*/
.s-main--visual{
    padding:0;
    margin-top:clamp(4.375rem,3.31vi + 3.6rem,6.25rem);
}
.main--visual_content{
    position:relative;
    max-width:85vw;
    height:85dvh;
    margin:0 auto;
    overflow:hidden;
}
.main--visual_slider{
    position:relative;
    width:100%;
    height:100%;
}
.main--visual_slider .swiper-slide{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
}
.main--visual_slider .slide-bg{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    background-size:cover;
    background-position:center;
    transform:scale(1);
}
.main--visual_content .slide-overlay{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    background:linear-gradient(180deg,rgba(255,255,255,.2) 70%,rgba(23,23,23,.45) 100%);
    z-index:1;
}
.progress-container{
    position:absolute;
    right:1.25rem;
    bottom:1.25rem;
    width:1.25rem;
    height:1.25rem;
    cursor:pointer;
    opacity:0;
    z-index:2;
}
.progress-circle{
    width:100%;
    height:100%;
    transform:rotate(-90deg);
}
.progress-circle-bg{
    fill:none;
    stroke:rgba(255,255,255,.2);
    stroke-width:3;
}
.progress-circle-fill{
    fill:none;
    stroke:var(--background-color);
    stroke-width:5;
    stroke-linecap:round;
    stroke-dasharray:238.76;
    stroke-dashoffset:238.76;
}
.s-main--visual .content-img{
    position:relative;
}
.s-main--visual .content-img .scroll-down{
    font-size:clamp(.625rem,.22vi + .57rem,.75rem);
    position:absolute;
    display:inline-flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:.625rem;
    bottom:-2.75rem;
    right:0;
    left:0;
    color:var(--secondary-color);
    z-index:3;
}
.scroll-down .deco-line{
    display:inline-block;
    width:.063rem;
    height:clamp(5rem,2.21vi + 4.48rem,6.25rem);
    background-color:var(--highlight-color);
}
.main--visual_txt{
    margin-top:3.75rem;
    text-align:center;
}
.main--visual_txt h1{
    font-family:var(--hiragino-mincho-pron);
    font-size:clamp(2rem,4.86vi + .86rem,4.75rem);
    font-weight:var(--font-w-bold);
    line-height:1;
    white-space:nowrap;
}
.main--visual_txt h1 span{
    font-size:clamp(3.25rem,6.63vi + 1.7rem,7rem);
    color:var(--highlight-color);
}
.main--visual_txt p{
    font-size:clamp(1rem,1.04vi + .76rem,2rem);
    margin-top:.938rem;
}
/*-- s-concept --*/
.s-concept h1{
    font-family:var(--hiragino-mincho-pron);
    font-size:clamp(1.75rem,1.55vi + 1.39rem,2.625rem);
    font-weight:var(--font-w-bold);
    margin-bottom:2.5rem;
}
.s-concept h1 span{
    color:var(--highlight-color);
}
.s-concept .content-img02{
    display:none;
}
.s-concept .content-img03{
    display:flex;
    justify-content:space-between;
    margin-top:3.125rem;
}
.s-concept .content-img03 figure{
    width:150px;
}
.s-concept .content-img{
    margin-top:clamp(4.688rem,8.29vi + 2.75rem,9.375rem);
}
/*-- s-strengths --*/
.s-strengths{
    background-color:var(--background--alt2-color);
}
.strengths-list .flex{
    gap:3.125rem;
}
.s-strengths .section_to-pin{
    padding:0 1.25rem;
}
.s-strengths .section_pin > div+div{
    margin-top:1.875rem;
}
.strengths-item{
    margin-top:.938rem;
}
.strengths-item .no-txt{
    font-size:clamp(1.75rem,2.65vi + 1.13rem,3.25rem);
    font-weight:var(--font-w-bold);
    position:relative;
}
.strengths-item .no-txt::after{
    content:'';
    position:absolute;
    display:inline-block;
    width:3.75rem;
    height:.063rem;
    right:-1.875rem;
    bottom:.625rem;
    background-color:var(--highlight-color);
    transform:rotate(-40deg);
}
.strengths-item h3{
    font-family:var(--hiragino-mincho-pron);
    font-size:clamp(1.25rem,1.1vi + .99rem,1.875rem);
    font-weight:var(--font-w-semibold);
    margin:1.25rem 0 .625rem;
}
.cert-content{
    position:relative;
    display:flex;
    flex-direction:column-reverse;
}
.cert-content > div{
    position:relative;
    z-index:2;
}
.cert-content::before{
    content:'';
    position:absolute;
    display:inline-block;
    width:100%;
    height:100%;
    top:0;
    right:0;
    bottom:0;
    left:0;
    margin:auto;
    background:url(../img/cert-round.png) center / contain no-repeat;
    opacity:.05;
}
.cert-content .flex{
    flex-direction:row;
    flex-wrap:wrap;
    gap:1.25rem;
}
.cert-content .flex > figure{
    width:calc(50% - .625rem);
}
.cert-content h3{
    font-family:var(--hiragino-mincho-pron);
    font-size:clamp(1.25rem,1.1vi + .99rem,1.875rem);
    font-weight:var(--font-w-semibold);
    margin-bottom:clamp(.938rem,1.66vi + .55rem,1.875rem);
    color:var(--highlight-color);
}
.cert-content .content-txt{
    margin-bottom:1.875rem;
}
.cert-content .content-txt p{
    line-height:var(--p-lineheight);
}
/*-- s-services --*/
.s-services{
    padding:5rem 0 0;
    background-color:var(--primary-color);
}
.cards{
    position:relative;
    display:flex;
    flex-direction:column;
    gap:25svh;
}
.card{
    position:relative;
    width:100vw;
    height:100svh;
    padding:1.5em;
}
.card-wrapper{
    position:relative;
    width:100%;
    height:100%;
    will-change:transform,opacity;
    transform:translateZ(0);
}
.card-img{
    position:absolute;
    width:100%;
    height:100%;
    border-radius:9.375rem;
    overflow:hidden;
    will-change:transform,border-radius,opacity;
    transform:translateZ(0);
    backface-visibility:hidden;
}
.card-img::before{
    content:'';
    position:absolute;
    display:block;
    top:0;
    right:0;
    bottom:0;
    left:0;
    width:100%;
    height:100%;
    background:linear-gradient(180deg,rgba(255,255,255,.2) 30%,rgba(23,23,23,1) 100%);
    z-index:1;
}
.card-img img{
    position:relative;
    width:100%;
    height:100%;
    object-fit:cover;
    transform:scale(2) translateZ(0);
    will-change:transform;
    backface-visibility:hidden;
}
.card-content{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:flex-end;
    position:absolute;
    width:100%;
    height:100%;
    color:var(--background-color);
    z-index:2;
}
.card-content .card-title{
    position:relative;
    width:100%;
    text-align:center;
}
.card-content .card-title h1{
    font-size:clamp(1.25rem,1.1vi + .99rem,1.875rem);
}
.card-content .card-title-en{
    font-size:var(--fs-sm);
    position:relative;
    width:100%;
    text-align:center;
}
.card-content .card-description{
    position:relative;
    width:100%;
    margin-bottom:3em;
    padding:0 .938rem;
    transform:translateX(2.5rem);
    opacity:0;
    will-change:transform,opacity;
    text-align:center;
}
.card-content .card-description p{
    font-size:clamp(.75rem,.22vi + .7rem,.875rem);
    line-height:var(--p-lineheight);
}
.card:nth-child(2){
    margin-top:50vh;
}
.char{
    display:inline-block;
    position:relative;
    overflow:hidden;
}
.char span{
    display:inline-block;
    transform:translateX(100%);
    will-change: transform;
}
/*-- s-product --*/
.s-products .flex{
    position:relative;
    padding-bottom:6.25rem;
}
.products-content{
    margin-top:clamp(2.5rem,4.42vi + 1.46rem,5rem);
}
.products-slider{
    padding-bottom:clamp(3.125rem,5.52vi + 1.83rem,6.25rem);
    overflow:inherit;
}
.products-slider .swiper-slide{
    width:clamp(15rem,11.05vi + 12.41rem,21.25rem);
    overflow:hidden;
}
.products-slider .swiper-slide .slider-item{
    display:flex;
    flex-direction:column;
    gap:clamp(.625rem,1.1vi + .37rem,1.25rem);
    padding:clamp(.938rem,1.66vi + .55rem,1.875rem);
    border:.063rem solid var(--background--alt2-color);
    border-left:0;
}
.products-slider .swiper-slide .img{
    position:relative;
    height:clamp(13.75rem,11.05vi + 11.16rem,20rem);
    line-height:0;
    border:.063rem solid var(--background--alt2-color);
    overflow:hidden;
}
.products-slider .swiper-slide .img img{
    position:relative;
    height:100%;
    object-fit:cover;
    object-position:center;
    line-height:0;
}
.products-slider .swiper-slide h4{
    font-size:clamp(.813rem,.44vi + .71rem,1.063rem);
    white-space:nowrap;
}
/*-- s-facilities --*/
.s-facilities{
    background-color:var(--primary-color);
    border-radius:0 0 var(--border-radius-default) var(--border-radius-default);
}
.s-facilities .s-ttl{
    color:var(--background-color);
}
.s-facilities .flex{
    gap:1.563rem;
}
.s-facilities dl{
    padding:1.25rem;
    background-color:var(--background-color);
}
.s-facilities dl dt{
    text-align:center;
}
.s-facilities dl dt span{
    font-size:var(--fs-sm);
}
.s-facilities dl dt h3{
    font-family:var(--hiragino-mincho-pron);
    font-size:var(--fs-md);
    margin-top:.938rem;
}
.s-facilities dl dd{
    margin-top:1.563rem;
}
.s-facilities dl dd figure{
    margin-bottom:1.563rem;
    border-radius:var(--border-radius-default);
    overflow:hidden;
}
.s-facilities dl dd p{
    line-height:var(--p-lineheight);
}
.facility-content{
    margin-top:clamp(4.688rem,8.29vi + 2.75rem,9.375rem);
    padding:1.875rem 1.25rem;
    background-color:var(--background--alt2-color);
}
.facility-content .content-img{
    text-align:center;
}
.facility-content .content-img img{
    display:inline-block;
    width:clamp(6.25rem,5.52vi + 4.96rem,9.375rem);
}
.modal-btn{
    font-family:var(--hiragino-mincho-pron);
    font-size:clamp(.875rem,.22vi + .82rem,1rem);
    font-weight:var(--font-w-semibold);
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:clamp(.63rem,1.1vi + .37rem,1.25rem);
    background-color:var(--dark-grey-color);
    color:var(--background-color);
    padding:clamp(.625rem,1.1vi + .37rem, 1.25rem) 1.25rem;
}
.modal-btn .arr-icon{
    width:1.125rem;
    height:1rem;
    background:url(../img/arrow-right-wht.svg) center / contain no-repeat;
}
/*-- s-company --*/
.s-company{
    position:relative;
    border-top:.063rem solid var(--background-alt-color);
}
.s-company .compass-deco{
    display:flex;
    justify-content:center;
    position:absolute;
    top:-2.25rem;
    right:0;
    left:0;
    width:7.5rem;
    height:7.5rem;
    margin:auto;
    background-color:var(--background-color);
    border-radius:50%;
}
.s-company .compass-deco span{
    width:1.5rem;
    height:1.125rem;
    margin-top:1.5rem;
    background:url(../img/arrow-down.svg) center / contain no-repeat;
}
.company-content .flex{
    position:relative;
    z-index:2;
}
.company-content .content-img img{
    max-width:42.5rem;
}
.company-content .table-context{
    position:relative;
    margin-top:clamp(2.5rem,4.42vi + 1.46rem,5rem);
}
.company-content .table-context dl+dl{
    margin-top:.938rem;
    padding-top:.938rem;
    border-top:.06rem solid var(--background-alt-color);
}
.company-content .table-context dl dt{
    font-weight:var(--font-w-bold);
}
.company-content .table-context dl dd{
    margin-top:.625rem;
}
.company-content .map{
    position:relative;
    width:100%;
    height:clamp(18.75rem,22.1vi + 13.57rem,31.25rem);
    margin-top:clamp(4.688rem,8.29vi + 2.75rem,9.375rem);
    overflow:hidden;
}
.company-content .map iframe{
    position:absolute;
    width:100%;
    height:100%;
    top:0;
    right:0;
    bottom:0;
    left:0;
}
/*-- s-contact --*/
.s-contact{
    position:relative;
    background-color:var(--dark-grey-color);
    border-radius:var(--border-radius-default) var(--border-radius-default) 0 0;
}
.s-contact .contact-content{
    padding:1.875rem 1.25rem;
    background-color:var(--background-color);
    border-radius:var(--border-radius-default);
}
.s-contact .to-top{
    position:absolute;
    right:0;
    bottom:-3.125rem;
    left:0;
    margin:auto;
    text-align:center;
    z-index:2;
}
.s-contact .to-top a{
    font-size:clamp(.625rem,.22vi + .57rem,.75rem);
    display:inline-flex;
    flex-direction:column;
    align-items:center;
}
.s-contact .to-top a .deco-line{
    display:inline-block;
    width:.063rem;
    height:clamp(5rem,2.21vi + 4.48rem,6.25rem);
    background-color:var(--highlight-color);
}
/*-- Modal overlay --*/
.factory-map-modal{
    position:fixed;
    display:none;
    align-items:center;
    justify-content:center;
    top:0;
    left:0;
    width:100%;
    min-height:100dvh;
    background-color:rgba(0, 0, 0, 0.8);
    z-index:9999;
    opacity:0;
    visibility:hidden;
    transition:opacity 0.3s ease, visibility 0.3s ease;
}
.factory-map-modal.active{
    display:flex;
    opacity:1;
    visibility:visible;
}
.factory-map-modal .modal-inner{
    position:relative;
    max-width:90%;
    max-height:42.5rem;
    transform:scale(.8);
    transition:transform 0.3s ease;
}
.factory-map-modal.active .modal-inner{
    transform:scale(1);
}
.factory-map-modal  .modal-content{
    position:relative;
    max-width:48rem;
    height:100%;
    padding:2.5rem;
    background-color:var(--background-color);
    overflow-y:auto;
}
.factory-map-modal .content-img{
    display:block;
    margin-bottom:.938rem;
}
.modal-btn{
    cursor:pointer;
    transition:opacity 0.3s ease, transform 0.3s ease;
    user-select:none;
}
.modal-btn:hover{
    opacity:.8;
    transform:translateY(-2px);
}
.modal-close{
    position:absolute;
    display:flex;
    align-items:center;
    justify-content:center;
    top:.625rem;
    right:.625rem;
    cursor:pointer;
    width:2rem;
    height:2rem;
    padding:.313rem;
    opacity:.8;
    transition:opacity 0.3s ease;
    border-radius:50%;
}
.modal-close span{
    width:1.25rem;
    height:1.25rem;
    display:inline-block;
    background:url(../img/close-icon.svg) center / contain no-repeat;
}
.modal-close:hover {
    opacity:1;
}
/*-- media query 47.938rem --*/
@media screen and (max-width:47.938rem){}
/*-- media query 48rem --*/
@media screen and (min-width:48rem){
}
/*-- media query 60rem --*/
@media screen and (min-width:60rem){
    .s-concept .flex{
        flex-direction:row;
        justify-content:space-between;
    }
    .s-concept .flex .content-txt{
        width:26.25rem;
    }
    .s-concept .content-img02{
        display:block;
        width:11.25rem;
        margin-top:auto;
        margin-left:-3.125rem;
    }
    .s-concept .content-img03{
        margin-top:0;
    }
    .s-concept .content-img03 > figure:nth-of-type(1){
        display:none;
    }
    .s-concept .content-img03 > figure:nth-child(2){
        width:auto;
        margin-right:-9.375rem;
    }
    .s-concept .content-img03 > figure:nth-child(2) img{
        max-width:22.5rem;
    }
    .s-concept .content-img{
        text-align:right;
    }
    .s-concept .content-img img{
        display:inline-block;
        width:42.5rem;
    }
    .section_to-pin{
        display:flex;
        justify-content:flex-start;
        align-items:center;
        height:100vh;
        left:0;
        overflow: hidden;
    }
    .section_to-pin .section_pin{
        display:flex;
        justify-content:flex-start;
        align-items:center;
        height:100vh;
        padding:7.5rem 12vw 7.5rem 12vw;
        
    }
    .section_to-pin .section_pin .content_wrapper{
        position:relative;
        display:flex;
        gap:2.5rem;
        min-width:70vw;
        padding:0vw 6vw 0vw 6vw;
        opacity:.7;
        transition:opacity 0.3s cubic-bezier(.51,.18,0,.88);
    }
    .section_to-pin .section_pin .content_wrapper.active{
        opacity:1;
    }
    .section_to-pin .section_pin .content_wrapper figure{
        width:40%;
    }
    .section_to-pin .section_pin .content_wrapper > div{
        width:60%;
    }
    .section_to-pin .section_pin .content_wrapper .image{
        width:100%;
        height:100%;
        object-fit:cover;
        object-position:center;
    }
    .strengths-list .flex{
        flex-direction:row;
        flex-wrap:wrap;
        gap:1.875rem;
    }
    .strengths-list dl{
        width:calc(50% - .938rem);
    }
    .cert-content{
        flex-direction:column;
        max-width:960px;
        margin:0 auto;
    }
    .cert-content .flex{
        flex-direction:row;
        flex-wrap:nowrap;
        justify-content:space-between;
    }
    .cert-content .flex > figure{
        width:30%;
    }
    .cert-content .content-txt{
        margin:2.5rem 0 0;
    }
    .s-products .flex > div:nth-of-type(1){
        position:relative;
        display:flex;
        align-items:center;
        gap:6.25rem;
        z-index:2;
    }
    .s-products .s-ttl{
        margin-bottom:0;
    }
    .product-control{
        position:relative;
        margin-top:5rem;
    }
    .s-facilities .flex{
        flex-direction:row;
        flex-wrap:wrap;
    }
    .s-facilities .flex > dl{
        width:calc(50% - .813rem);
    }
    .s-facilities .facility-content .flex{
        flex-wrap:nowrap;
        align-items:center;
        justify-content:space-evenly;
    }
    .company-content .flex{
        align-items:flex-end;
    }
    .company-content .table-context{
        width:42.5rem;
        margin-top:0;
    }
}
/*-- media query 80rem --*/
@media screen and (min-width:80rem){
    .s-concept .flex .content-txt{
        width:30rem;
    }
    .s-concept .content-img02{
        width:13.75rem;
        margin-left:0;
    }
    .s-concept .content-img03 > figure:nth-child(2){
        margin-right:-3.125rem;
    }
    .strengths-list .flex > dl{
        width:calc(33.333333% - 1.25rem);
    }
    .card-content .card-description{
        width:38.75rem;
    }
    .s-facilities .flex > dl{
        width:calc(33.333333% - 1.063rem);
    }
    .s-factory-zone .flex{
        flex-direction:row;
        gap:6.25rem;
    }
    .s-factory-zone .flex > div:nth-of-type(1){
        position: relative;
        width:25rem;
        z-index:2;
    }
    .s-factory-zone .flex > div:nth-of-type(2){
        width:calc(100% - 500px);
    }
    .s-factory-zone .content-img{
        margin-top:0;
    }
    .company-content .flex{
        flex-direction:row;
        gap:6.25rem;
    }
    .company-content .table-context dl{
        display:flex;
        gap:5rem;
    }
    .company-content .table-context{
        width:50%;
    }
    .company-content .table-context dl+dl{
        margin-top:1.875rem;
        padding-top:1.875rem;
    }
    .company-content .table-context dl dt{
        flex-shrink:0;
        width:7.5rem;
    }
    .company-content .table-context dl dd{
        flex-basis:auto;
        width:100%;
        margin-top:0;
    }
    .company-content .map{
        width:50%;
        height:40rem;
        margin-top:0;
    }
    .s-contact .contact-content{
        padding:9.375rem;
    }
}
