@charset "UTF-8";

@font-face {
    font-family: "Noto Sans";
    src: url("../../fonts/NotoSans-VariableFont_wdth\,wght.ttf") format("truetype");
    font-display: swap;
}

@font-face {
    font-family: "Barlow Condensed";
    src: url("../../fonts/BarlowCondensed-Bold.ttf") format("truetype");
    font-display: swap;
}

/* Default Value */
html {
    font-size: calc(100vw / 72);
    scroll-behavior: smooth;
    width: 100vw;
    overflow-x: hidden;
}

/* Var */
:root {
    --Jp: "Noto Sans", "ヒラギノ角ゴ ProN", "游ゴシック", "游ゴシック体", "Yu Gothic", YuGothic, sans-serif;
    --En: "Barlow Condensed", sans-serif;

    --black: #2d2d2d;
    --key1: #D63384;
    --key2: #0292F5;
    --key3: #F2CE02;
    --key4: #E63946;
    --key5: #4CAF50;

    --keycolor: var(--key5);
}

body {
    overflow-x: hidden;
}

a {
    text-decoration: none;
}

header {
    display: flex;
    width: 100vw;
    height: 12.5vh;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 5;
    background-color: #fff;
    align-items: center;
}

header>a {
    font-family: var(--Jp);
    display: flex;
    width: fit-content;
    align-items: center;
    margin-left: 2vw;
}

header img {
    width: 6vh;
}

header>a p {
    margin: 0 auto;
    color: var(--black);
    font-size: 1.25rem;
    font-family: var(--Ja);
    margin-left: 0.5vw;
    font-weight: 600;
}

nav {
    margin: 0 auto;
    margin-right: 5vw;
}

ul {
    margin: 0 auto;
    display: flex;
    padding: 0;
}

li {
    width: 12.5vw;
    height: 12.5vh;
    align-content: center;
    list-style-type: none;
}

li a {
    display: flex;
    height: 100%;
    color: var(--black);
    font-family: var(--Jp);
    font-size: 0.8rem;
    justify-content: center;
    align-items: center;
    white-space: nowrap;
    position: relative;
    color: var(--black);
}

li a:hover {
    color: var(--keycolor);
}

li a::before {
    background: var(--keycolor);
    content: '';
    width: 100%;
    height: 1vh;
    position: absolute;
    left: 0;
    bottom: 0;
    margin: auto;
    transform-origin: center top;
    transform: scale(0, 1);
    transition: transform .2s;
}

li a:hover::before {
    transform-origin: left top;
    transform: scale(1, 1);
}

/*first view*/
main {
    width: 100%;
    height: 100vh;
    position: relative;
    margin-top: 10vh;
}

.slide::after {
    content: '';
    width: 100%;
    height: 50vh;
    background-image: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 40%, rgba(0, 0, 0, 0.8) 100%);
    position: absolute;
    bottom: 0;
    left: 0;
}

/*animation part*/
.slide {
    width: 100%;
    height: 100%;
    position: absolute;
    background-size: cover;
    background-repeat: none;
    background-position: center;
    overflow: hidden;
    z-index: -1;
}

#slide1 {
    background-image: url(../images/fv1.jpg);
    animation: slide1 30s infinite;
}

#slide2 {
    background-image: url(../images/fv2.jpg);
    animation: slide2 30s infinite;
}

#slide3 {
    background-image: url(../images/fv3.jpg);
    animation: slide3 30s infinite;
}

#slide4 {
    background-image: url(../images/fv4.jpg);
    animation: slide4 30s infinite;
}

/*animation setting*/
@keyframes slide1 {
    0% {
        opacity: 1
    }

    20% {
        opacity: 1;
    }

    25% {
        opacity: 0;
    }

    95% {
        opacity: 0
    }

    100% {
        opacity: 1;
    }
}

@keyframes slide2 {
    0% {
        opacity: 0;
    }

    20% {
        opacity: 0
    }

    25% {
        opacity: 1;
    }

    50% {
        opacity: 1;
    }

    55% {
        opacity: 0;
    }

    100% {
        opacity: 0;
    }
}

@keyframes slide3 {
    0% {
        opacity: 0;
    }

    50% {
        opacity: 0
    }

    55% {
        opacity: 1;
    }

    75% {
        opacity: 1;
    }

    80% {
        opacity: 0
    }

    100% {
        opacity: 0;
    }
}

@keyframes slide4 {
    0% {
        opacity: 0;
    }

    75% {
        opacity: 0
    }

    80% {
        opacity: 1;
    }

    95% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

main>p {
    position: absolute;
    bottom: 50%;
    left: -8.5rem;
    transform: rotate(90deg);
    color: #fff;
    width: fit-content;
    text-align: right;
    padding-left: calc(10vh + 0.625rem);
    padding-bottom: 0.35vw;
    border-bottom: 0.25vw solid #fff;
    font-size: 1rem;
    font-family: var(--Jp);
    letter-spacing: 0.625rem;
    z-index: 2;
}

#lab {
    width: fit-content;
    position: absolute;
    bottom: 10%;
    left: calc(0.625rem + 10vw);
    color: #fff;
    z-index: 2;
}

#lab div:first-of-type {
    display: flex;
    align-items: end;
    width: fit-content;
    height: fit-content;
    box-sizing: border-box;
    border-bottom: 1.5vh solid #fff;
    z-index: 2;
}

h1 {
    width: fit-content;
    font-size: 6.4rem;
    margin: 0 auto;
    margin-right: 0.5vw;
    letter-spacing: 2rem;
    font-weight: 700;
    font-family: var(--Jp);
    z-index: 2;
}

#year {
    margin: 0 auto;
    margin-right: 0;
    font-size: 2.4rem;
    font-weight: 600;
    padding-left: 0.75rem;
    letter-spacing: 0.75rem;
    font-family: var(--Jp);
    text-align: right;
    z-index: 2;
}

#rn {
    font-size: 3.2rem;
    font-family: var(--Jp);
    font-weight: 600;
    letter-spacing: 1.33rem;
    z-index: 2;
}

#rn span {
    font-size: 2rem;
    font-weight: 500;
    margin-left: calc(0.75rem - 1.33rem);
    letter-spacing: 0.75rem;
}

h2 {
    font-family: var(--En);
    width: fit-content;
    font-size: 4.8rem;
    margin: 0 auto;
    position: relative;
    margin-top: 10vh;
    margin-bottom: 2.5vh;
    letter-spacing: 0.5rem;
}


h3 {
    width: fit-content;
    margin: 0 auto;
    font-family: var(--Jp);
    font-weight: 500;
    font-size: 1rem;
    letter-spacing: 0.375rem;
    padding-left: 0.375rem;
    margin-bottom: 7.5vh;
}

h2::before,
h2::after {
    content: '';
    width: 16.6vw;
    height: 0.5vw;
    display: inline-block;
    border: 0.25vw solid var(--keycolor);
}

h2::before {
    position: absolute;
    top: calc(50% - 0.25vw);
    left: -21.6vw;
}

h2::after {
    position: absolute;
    top: calc(50% - 0.25vw);
    right: -21.6vw;
}

.item {
    width: 90vw;
    height: 37.5vw;
    margin: 5vh auto;
    position: relative;
    overflow: hidden;
}

#about_us .item::after {
    content: '';
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    background: linear-gradient(-90deg, rgba(255, 255, 255, 0) 0%, #fff 45%, #fff 100%);
    z-index: -1;
}

.item:not(img) {
    z-index: 2;
}

.title {
    display: flex;
    position: absolute;
    left: 5vw;
    top: 12.5%;
    align-items: center;
}

.title p {
    width: 7.5vw;
    height: 7.5vw;
    margin: 0;
    background-color: var(--keycolor);
    border-radius: 50%;
    color: #fff;
    text-align: center;
    align-content: center;
    font-family: var(--En);
    font-weight: 700;
    font-size: 0.8rem;
    letter-spacing: 0.25rem;
    padding-left: 0.25rem;
    align-items: center;
}

.title p span {
    font-size: 2.4rem;
}

#about_us h5 {
    font-family: var(--Jp);
    font-size: 1.2rem;
    font-weight: 700;
    margin: 0 auto;
    margin-left: 1.5vw;
}

.text {
    position: absolute;
    top: 35%;
    left: 5vw;
    width: 40vw;
    letter-spacing: 0.05rem;
    line-height: 3.5vh;
    font-family: var(--Jp);
    font-size: 0.8rem;
}

.item img {
    position: absolute;
    right: 0;
    z-index: -1;
    width: 50vw;
    height: 37.5vw;
    transition: transform 30s;
    object-fit: cover;
}

.item:hover img {
    transform: scale(1.05, 1.05);
}

#product .item {
    margin: 0 auto;
}

#product .title {
    margin-top: 1vw;
}

#product h5 {
    font-family: var(--Jp);
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 auto;
}

#product h5::before {
    content: '・';
}

#product img {
    width: 37.5vw;
    height: 25vw;
    margin: 0 auto;
    margin-top: 7.5vw;
    margin-right: 2.5vw;
}

.belt {
    display: flex;
    width: 100vw;
}

.swiper {
    width: 100vw;
    height: 15vh;
}

.swiper-wrapper {
    transition-timing-function: linear !important;
}

.swiper-slide {
    display: flex;
    height: 100%;
    justify-content: center;
}

.tag {
    width: fit-content;
    text-wrap: nowrap;
    align-self: center;
    padding: 0.8vh 1.6vw;
    border-radius: 2vw;
    border: 0.1vw solid #ccc;
    font-family: var(--Jp);
    font-size: 0.8rem;
    font-weight: 500;
}

#sns_box {
    width: 80vw;
    height: 40vw;
    margin: 0 auto;
    justify-content: center;
    position: relative;
}

#sns_box a {
    position: absolute;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    margin: 0 auto;
    overflow: hidden;
}

#sns_box a:first-of-type {
    width: 60%;
    height: 100%;
    left: 0;
}

#sns_box a:nth-of-type(2),
#sns_box a:nth-of-type(3) {
    width: 40%;
    height: 50%;
    right: 0;
}

#sns_box a:nth-of-type(3) {
    bottom: 0;
}

#sns_box p {
    background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 50%, #000 100%);
    position: absolute;
    bottom: 0;
    margin: 0 auto;
    color: #fff;
    font-family: var(--Jp);
    font-size: 1rem;
    width: 100%;
    height: 20%;
    align-content: center;
}

#sns_box a:first-of-type p {
    padding-left: 7.5%;
    font-weight: 500;
}

#sns_box a:nth-of-type(2) p,
#sns_box a:nth-of-type(3) p {
    padding: 5%;
    font-size: 0.8rem;
    font-weight: 400;
}

#sns_box img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s;
}

#sns_box img:hover {
    transform: scale(1.05, 1.05);
}

#contact {
    margin-top: 15vh;
    position: relative;
}

/* "CONTACT" what besided frame */
#contact>p {
    width: 17.5vw;
    height: 3vw;
    align-content: center;
    text-align: center;
    margin: 0 auto;
    position: absolute;
    top: 7.25vw;
    left: 4vw;

    font-family: var(--En);
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: calc(100vw / 180);
    padding-left: calc(100vw / 180);

    transform: rotate(90deg);
}

/* black frame */
#frame {
    width: 70vw;
    height: 300px;
    margin: 0 auto;
    border: 0.4vw solid #000;
    position: relative;
}

#icon {
    width: 8.75vw;
    height: 8.75vw;

    background-image: url('../images/personal_logo.png');
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;

    position: absolute;
    top: 4.375vw;
    left: 2vw;
}

/* address name */
h4 {
    margin: 0 auto;
    color: var(--key1);

    font-family: var(--Jp);
    font-weight: 700;
    font-size: 1.2rem;
    letter-spacing: 0.75em;
    justify-content: left;
    color: var(--keycolor);

    position: absolute;
    top: 30%;
    left: 13vw;
}

h4 span:last-of-type {
    padding-left: 0.75rem;
}

/* mail address*/
#email {
    margin: 0 auto;
    width: fit-content;

    font-family: var(--Jp);
    font-size: 0.8rem;
    font-weight: 400;
    letter-spacing: 0.1rem;
    display: flex;

    position: absolute;
    top: 60%;
    left: 13vw;
}

/* mail icon */
#email img {
    width: calc(100vw / 90);
    margin-right: 0.5vw;
}

#frame a {
    width: 25vw;
    height: 80px;
    position: absolute;
    top: 50%;
    right: 2vw;
    transform: translateY(-50%);
    background-color: #2d2d2d;
    color: #fff;
}

#frame a p {
    width: 100%;
    height: 100%;
    margin: 0 auto;
    align-content: center;
    text-align: center;
    font-size: 0.8rem;
    letter-spacing: calc(100vw / 360);
    padding-left: calc(100vw / 360);
    z-index: 1;
    font-family: var(--Jp);
}

#frame a p::after {
    background-color: var(--keycolor);
    position: absolute;
    top: 0;
    left: 0;
    content: '';
    width: 100%;
    height: 100%;
    transform: scale(0, 1);
    transform-origin: left top;
    transition: .1s cubic-bezier(0.45, 0, 0.55, 1);
    z-index: -1;
}

#frame a:hover p::after {
    transform: scale(1, 1);
}

#more {
    display: grid;
    width: 100vw;
    grid-template-columns: 25vw 25vw 25vw;
    column-gap: 1.25vw;
    justify-content: center;
    margin: 20vh auto;
}

#more>a {
    height: calc(6.25vw * 3);
    border: 1px solid #ccc;
    border-radius: 2.5%;
}

#more_heading {
    align-content: center;
}

#more_heading img {
    width: 100%;
}

.page img {
    width: 22.5vw;
    height: 11.25vw;
    margin: 0 auto;
    margin-top: 1.25vw;
    object-fit: cover;
}

h6 {
    width: 22.5vw;
    margin: 0 auto;
    margin-top: 0.675vw;
    font-size: 1.2rem;
    color: var(--black);
    position: relative;
    padding-left: calc(2vw - 0.1rem);
    letter-spacing: 0.1rem;
    font-family: var(--Jp);
}

h6::before {
    content: '';
    width: 1.5vw;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
}

.id01::before {
    background-color: var(--key1);
}

.id02::before {
    background-color: var(--key2);
}

.id03::before {
    background-color: var(--key3);
}

.id04::before {
    background-color: var(--key4);
}

.id05::before {
    background-color: var(--key5);
}

.study {
    width: fit-content;
    margin: 0 auto;
    margin-top: 0.675vw;
    margin-left: 1.25vw;
    font-size: 0.75rem;
    font-weight: 400;
    padding: 0 2vw;
    background-color: var(--black);
    color: #fff;
    font-family: var(--Jp);
    letter-spacing: 0.25rem;
}

footer {
    height: 40vh;
    background-color: var(--black);
    margin: 0 auto;
    position: relative;
}

#footer_content {
    width: 40vw;
    height: 85%;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

#footer_content img {
    width: 4vw;
    height: 4vw;
    margin: 0 4vw;
}

.nothing {
    filter: invert(83%) sepia(0%) saturate(1670%) hue-rotate(353deg) brightness(96%) contrast(86%);
}

#copy {
    font-family: var(--Jp);
    color: #fff;
    position: absolute;
    bottom: 2vh;
    left: 50%;
    transform: translateX(-50%);
    font-weight: 300;
    font-size: 0.5rem;
    letter-spacing: 0.4vw;
    padding-left: 0.4vw;
}

@media screen and (max-width: 768px) {
    html {
        font-size: calc(100vw / 27);
        font-family: var(--Ja);
    }

    header {
        display: grid;
        height: 17.5vh;
        justify-content: center;
    }

    header img {
        width: 6vh;
    }

    header>a {
        margin: 0 auto;
        height: 10vh;
    }

    header>a p {
        margin: 0 auto;
    }

    nav {
        width: 100vw;
        margin: 0 auto;
    }

    li {
        width: 25%;
        height: 7.5vh;
    }

    li a {
        box-sizing: content-box;
    }

    li a:not(li:first-of-type a) {
        border-left: 0.25px solid #ccc;
    }

    li a:not(li:last-of-type a) {
        border-right: 0.25px solid #ccc;
    }

    main::after {
        background-image: linear-gradient(rgba(0, 0, 16, 0) 0%, rgba(0, 0, 16, 0.5) 75% var(--black) 100%);
    }

    main p {
        display: none;
    }

    .slide {
        background-position: unset;
    }


    #slide1 {
        background-image: url(../images/fv1.jpg);
        animation: slide1 90s infinite;
    }

    #slide2 {
        background-image: url(../images/fv2.jpg);
        animation: slide2 90s infinite;
    }

    #slide3 {
        background-image: url(../images/fv3.jpg);
        animation: slide3 90s infinite;
    }

    #slide4 {
        background-image: url(../images/fv4.jpg);
        animation: slide4 90s infinite;
    }

    @keyframes slide1 {
        0% {
            background-position: 20% 50%;
            opacity: 1
        }

        20% {
            opacity: 1;
            background-position: 80% 50%;
        }

        25% {
            opacity: 0;
        }

        95% {
            background-position: 20% 50%;
            opacity: 0
        }

        100% {
            opacity: 1;
            background-position: 20% 50%;
        }
    }

    @keyframes slide2 {
        0% {
            opacity: 0;
        }

        20% {
            background-position: 20% 50%;
            opacity: 0;
        }

        25% {
            opacity: 1;
        }

        50% {
            background-position: 80% 50%;
            opacity: 1;
        }

        55% {
            opacity: 0;
        }

        100% {
            opacity: 0;
        }
    }

    @keyframes slide3 {
        0% {
            opacity: 0;
        }

        50% {
            background-position: 20% 50%;
            opacity: 0;
        }

        55% {
            opacity: 1;
        }

        75% {
            background-position: 80% 50%;
            opacity: 1;
        }

        80% {
            opacity: 0
        }

        100% {
            opacity: 0;
        }
    }

    @keyframes slide4 {
        0% {
            opacity: 0;
        }

        75% {
            background-position: 20% 50%;
            opacity: 0
        }

        80% {
            opacity: 1;
        }

        95% {
            background-position: 80% 50%;
            opacity: 1;
        }

        100% {
            background-position: 80% 50%;
            opacity: 0;
        }
    }

    #lab {
        width: fit-content;
        left: 2.5vw;
        bottom: 20%;
    }

    h1 {
        font-size: 3rem;
        width: fit-content;
        padding-right: 7.5vw;
        margin: 0 auto;
    }

    #rn {
        width: 24rem;
        font-size: 2rem;
    }

    #rn span {
        font-size: 1rem;
    }

    .heading {
        margin: 7.5vh auto;
        font-family: var(--En);
    }

    h2 {
        font-size: 2.5rem;
    }

    h3 {
        font-size: 0.8rem;
    }

    .item {
        height: 100vh;
        /*margin: 5vh auto;*/
        position: unset;
        overflow: hidden;
        display: grid;
        overflow: visible;
        height: auto;
    }

    #about_us .item::after {
        display: none;
    }

    .title {
        display: flex;
        height: fit-content;
        position: unset;
        align-items: center;
        margin-top: 5vh;
    }

    .title p {
        width: 20vw;
        height: 20vw;
    }

    .title p span {
        font-size: 3rem;
    }

    .text {
        position: unset;
        width: 100%;
        line-height: 5vh;
        font-size: 0.8rem;
    }

    .item img,
    #product img {
        position: unset;
        right: 0;
        z-index: -1;
        width: 100%;
        height: calc(270vw / 4);
    }

    #sns_box {
        height: 80vw;
    }

    #sns_box p {
        font-size: 0.8rem;
    }

    .swiper-slide {
        margin: 0 10vw;
    }

    .tag {
        letter-spacing: 0.2rem;
        padding: 0.8vh 5vw;
        border-radius: 64px;
        margin: 0 120vw;
    }

    #contact {
        margin: 0 auto;
    }

    #frame {
        width: 90vw;
        height: 76vw;
        border: 1vw solid #000;
        position: relative;
    }

    #icon {
        display: none;
        width: 10vw;
        height: 10vw;
        top: 20%;
        left: 3vw;
        border-radius: 5vw;
    }

    /* address name */
    h4 {
        height: 10vw;
        font-size: 1.5rem;
        letter-spacing: 1rem;
        top: 20%;
        left: 15vw;
    }

    /* mail address*/
    #email {
        width: 80%;
        font-size: 1rem;
        top: 40%;
        left: 15vw;
    }

    /* mail icon */
    #email img {
        width: 1rem;
    }

    #frame a {
        width: 80%;
        height: 20%;
        top: 62.5%;
        right: 10%;
        transform: unset;
    }

    #frame a p {
        font-size: 1rem;
        letter-spacing: 0.4rem;
        padding-left: 0.4rem;
    }

    #more {
        display: grid;
        width: 100vw;
        grid-template-columns: unset;
        column-gap: 0;
        row-gap: 5vh;
        margin: 7.5vh auto;
    }

    #more>a {
        width: 90vw;
        height: 77.5vw;
    }

    #more a img {
        width: 85vw;
        height: 42.5vw;
        margin-top: 1.25vw;
    }

    h6 {
        width: 85vw;
        margin-top: 2vw;
        font-size: 2rem;
        padding-left: 5vw;
    }

    h6::before {
        width: 5vw;
    }

    .study {
        margin-top: 5vw;
        margin-left: 2.5vw;
        padding: 0 5vw;
    }

    footer {
        height: 30vh;
    }

    #footer_content {
        width: 100%;
    }

    #footer_content img {
        width: 10vw;
        height: 10vw;
        margin: 0 8vw;
    }

    #copy {
        font-family: var(--En);
        font-size: 14px;
        letter-spacing: 0.4vw;
        padding-left: 0.4vw;
    }
}