@charset "utf-8";
@import url("https://use.typekit.net/tqc3pzi.css");
@import url('https://fonts.googleapis.com/css2?family=Cormorant:ital@1&family=Noto+Sans+JP:wght@100..900&display=swap');

:root {
    /* color */
    --purple: #C700FF;
    --orange: #FF6932;
    --blue: #8232FF;
    --white: #F0F0F0;
    --dark: #323232;

    /* font family */
    --en: "trade-gothic-next-compressed", sans-serif;

    /* font size */
    --font10: 0.625rem;
    --font12: 0.75rem;
    --font14: 0.875rem;
    --font18: 1.125rem;
    --font20: 1.25rem;
    --font22: 1.375rem;
    --font24: 1.5rem;
    --font26: 1.625rem;
    --font28: 1.75rem;
    --font30: 1.875rem;
    --font32: 2.0rem;
    --font34: 2.125rem;
    --font36: 2.25rem;
    --font38: 2.375rem;
    --font40: 2.5rem;
    --font42: 2.625rem;
    --font44: 2.75rem;
    --font46: 2.875rem;
    --font48: 3.0rem;
    --font50: 3.125rem;
    --font56: 3.5rem;
    --font76: 4.75rem;
    --font80: 5.0rem;
    --font112: 7.0rem;
    --font160: 10.0rem;

    /* width */
    --width10: 0.6803vw;
    --width20: 1.3605vw;
    --width30: 2.0408vw;
    --width40: 2.7211vw;
    --width50: 3.4014vw;
    --width60: 4.0816vw;
    --width70: 4.7619vw;
    --width80: 5.4422vw;
    --width90: 6.1224vw;
    --width100: 6.8027vw;
    --width110: 7.483vw;
    --width120: 8.1633vw;
    --width130: 8.8435vw;
    --width140: 9.5238vw;
    --width150: 10.2041vw;
    --width160: 10.8844vw;
    --width170: 11.5646vw;
    --width180: 12.2449vw;
    --width190: 12.9252vw;
    --width200: 13.6054vw;
}

html{
    font-family: "Noto Sans JP", sans-serif;
    font-size: 1.09vw;
    font-weight: 400;
    font-style: normal;
    scroll-behavior: auto;
}

body{
    color: var(--white);
    background: #000;
    line-height: 1.75;
    letter-spacing: 0.07em;
    scroll-behavior: auto;
}

.wrapper{
    width: 84.31vw;
    margin: auto;
}

main{
    position: relative;
    z-index: 1;
    overflow-x: hidden;
}

[id] {
    scroll-margin-top: 0;
}

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

.section_title {
    color: #646464;
}

.section_title h2 {
    font-family: var(--en);
    font-size: var(--font76);
    letter-spacing: 0.07em;
    line-height: 1.4;
    margin-bottom: var(--width10);
    position: relative;
    overflow: hidden;
}

.section_title h2::after {
    content: "";
    display: block;
    width: 0%;
    height: 2px;
    background: var(--purple);
    transition: width 1s ease-in-out;
}

.section_title.show h2::after {
    width: 100%;
}

.section_title p{
    font-size: var(--font22);
    font-weight: 600;
    position: relative;
}

.section_title_shadow {
    display: block;
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    color: var(--purple);
    overflow: hidden;
    width: 0%;
    white-space: nowrap;
    transition-duration: 1s;
    transition-property: width;
    transition-delay: .3s;
}

p span.section_title_shadow {
    color: var(--white);
}

.section_title_shadow.show{
    width: 100%;
}


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

.scroll-move {
    transition: transform 0.1s ease-out; /* スムーズな変化を加える */
}

.fadein {
    opacity: 0;
    transition: opacity 0.4s ease-in;
}

.fadein.show {
    opacity: 1;
}

.fadein_up {
    opacity: 0;
    transform: translateY(0.6803vw);
    transition: opacity 0.4s ease-in, transform 0.4s ease-in; /* opacity と transform のトランジションを設定 */
}

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

.fade100 {
    transition-delay: 0.1s;
}

.fade200 {
    transition-delay: 0.2s;
}

.fade300 {
    transition-delay: 0.3s;
}

.fade400 {
    transition-delay: 0.4s;
}

.fade500 {
    transition-delay: 0.5s;
}

.fade600 {
    transition-delay: 0.6s;
}

.fade600 {
    transition-delay: 0.7s;
}

@keyframes neonBlink {
    0% { opacity: 0; filter: brightness(0.5); }
    10% { opacity: 1; filter: brightness(1.5); }
    20% { opacity: 0; filter: brightness(0.7); }
    30% { opacity: 1; filter: brightness(1.3); }
    40% { opacity: 0; filter: brightness(0.8); }
    50% { opacity: 1; filter: brightness(1.2); }
    60% { opacity: 0; filter: brightness(0.9); }
    70% { opacity: 1; filter: brightness(1.1); }
    80% { opacity: 0; filter: brightness(0.8); }
    90% { opacity: 1; filter: brightness(1.05); }
    100% { opacity: 1; filter: brightness(1); }
}

.neon_box {
    opacity: 0;
    transition: opacity 0.2s ease-in-out;
}

.neon_box.active {
    animation: neonBlink 0.3s ease-in-out forwards;
}

@keyframes hoverBlink {
    0% { opacity: 0; filter: brightness(0.5); }
    15% { opacity: 1; filter: brightness(1.5); }
    30% { opacity: 0; filter: brightness(0.7); }
    45% { opacity: 1; filter: brightness(1.3); }
    60% { opacity: 0; filter: brightness(0.8); }
    75% { opacity: 1; filter: brightness(1.2); }
    100% { opacity: 1; filter: brightness(1); }
}


.line_animation{
    position: absolute;
}

.dot_line{
    height: 8px;
}

.dot_line img{
    height: 100%;
}

.dot_line2 {
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
}

.dot_line2.show > img {
    width: 100%;
}

.dot_line2.show > div {
    width: 100%;
}

.dot_line2 > img {
    width: 0%;
    height: 100%;
    object-fit: cover;
    object-position: 0% 50%;
    transition: width 0.5s;
}


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

header{
    position: fixed;
    z-index: 999;
    transform: translateX(-4vw);
    transition: 0.8s;
    top: 0;
    mix-blend-mode: difference;
}

header.show{
    transform: translateX(0);
}

header.blend {
    mix-blend-mode: inherit;
}


.header_logo{
    font-family: var(--en);
    font-size: var(--font34);
    font-weight: 700;
    letter-spacing: 0.12em;
    transform: rotate(-90deg);
    position: absolute;
    top: 28vw;
    left: -9.5vw;
    width: 360px;
    width: 24.5vw;
    mix-blend-mode: difference;
    z-index: 1000;
}


/* hamburger --------------------------------------------------------------------------- */

.hamburger-menu {
    height: var(--width40);
    width: var(--width40);
    position: absolute;
    top: var(--width70);
    left: var(--width20);
    transition: transform 0.3s;
    z-index: 1000;
    mix-blend-mode: difference;
}

.hamburger-menu.load::before,
.hamburger-menu.load::after {
    animation: none;
}

.hamburger-menu::before,
.hamburger-menu::after {
    content: '';
    position: absolute;
    top: calc(50% - 2px);
    left: calc(50% - 2px);
    width: 5px;
    height: 5px;
    border-radius: 5px;
    display: block;
    background: var(--white);
    transform-origin: center;
}

.hamburger-menu::before {
    transform: translateY(-12px);
    box-shadow: 0 12px 0 var(--white);
    animation: top 0.7s forwards;
}

.hamburger-menu::after {
    animation: bottom 0.7s forwards;
    transform: translateY(12px);
}

.hamburger-menu--open::before {
    animation: top-active 0.7s forwards;
}

.hamburger-menu--open::after {
    animation: bottom-active 0.7s forwards;
}

@keyframes top {
    0% {
        left: 6px;
        box-shadow: none;
        width: 30px;
        transform: translateY(0) rotate(45deg);
    }
    50% {
        left: calc(50% - 2px);
        width: 5px;
        box-shadow: none;
        transform: translateY(0) rotate(0);
    }
    100% {
        left: calc(50% - 2px);
        width: 5px;
        box-shadow: 0 12px 0 var(--white);
        transform: translateY(-12px) rotate(0);
    }
}

@keyframes bottom {
    0% {
        left: 6px;
        width: 30px;
        transform: translateY(0) rotate(-45deg);
    }
    50% {
        left: calc(50% - 2px);
        width: 5px;
        transform: translateY(0) rotate(0);
    }
    100% {
        left: calc(50% - 2px);
        width: 5px;
        transform: translateY(12px) rotate(0);
    }
}

@keyframes top-active {
    50% {
        left: calc(50% - 2px);
        width: 5px;
        box-shadow: none;
        transform: translateY(0px) rotate(0);
    }
    100% {
        left: 6px;
        box-shadow: none;
        width: 30px;
        transform: translateY(0) rotate(45deg);
    }
}

@keyframes bottom-active {
    50% {
        left: calc(50% - 2px);
        width: 5px;
        box-shadow: none;
        transform: translateY(0px) rotate(0);
    }
    100% {
        left: 6px;
        box-shadow: none;
        width: 30px;
        transform: translateY(0) rotate(-45deg);
    }
}

.hamburger-menu {
    position: relative;
    border: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 0;
    cursor: pointer;
    z-index: 1000;
    transition: 0.3s;
}

.navigation {
    background: #000;
    position: absolute;
    width: 34vw;
    top: 0;
    left: 0;
    height: 100vh;
    z-index: 999;
    opacity: 0;
    overflow-x: hidden;
}

.navigation_inner{
    position: relative;
}

.navigation.is-open {
    opacity: 1;
}

.navigation__list {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    flex-flow: column;
    gap: var(--width40);
    color: var(--white);
    font-family: var(--en);
    font-size: var(--font28);
    font-weight: 700;
    letter-spacing: 0.11em;
}

.navigation__link:hover {
    animation: hoverBlink 0.35s ease-in-out forwards;
}


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

footer{
    background: #000;
    padding: var(--width90) var(--width170) var(--width20);
    position: relative;
    z-index: 1;
}

.footer_flex{
    display: flex;
    justify-content: space-between;
}

.footer_logo{
    width: 21vw;
}

.footer_menu{
    font-family: var(--en);
    font-size: var(--font18);
    font-weight: 700;
    letter-spacing: 0.08em;
    display: flex;
    gap: var(--width100);
}

.footer_menu_column{
    display: flex;
    flex-flow: column;
    gap: var(--width30);
}

.footer_menu_column a{
    letter-spacing: 0.2em;
}

.footer_menu_column a:hover{
    animation: hoverBlink 0.35s ease-in-out forwards;
}

.footer_menu_about{
    position: relative;
}

.footer_menu_about::after{
    content: "";
    width: 0.5vw;
    height: 0.5vw;
    border-right: solid 2px var(--white);
    border-bottom: solid 2px var(--white);
    transform: rotate(-45deg);
    position: absolute;
    top: 0.9vw;
    right: 0.3vw;
    transition: all 0.3s;
}

.page_top{
    display: block;
    width: var(--width50);
    margin-left: auto;
    margin-top: var(--width70);
}

small{
    font-family: var(--en);
    font-size: var(--font12);
    font-weight: 700;
    letter-spacing: 0.08em;
    display: block;
    text-align: center;
    margin-top: var(--width70);
}


.grecaptcha-badge { 
    visibility: hidden; 
}

/* responsive --------------------------------------------------------------------------- */

@media (max-width: 767px) {

    :root {
        --width10: 2.564vw;
        --width20: 5.128vw;
        --width30: 7.692vw;
        --width40: 10.256vw;
        --width50: 12.821vw;
        --width60: 15.385vw;
        --width70: 17.949vw;
        --width80: 20.513vw;
        --width90: 23.077vw;
        --width100: 25.641vw;
        --width110: 28.205vw;
        --width120: 30.769vw;
        --width130: 33.333vw;
        --width140: 35.897vw;
        --width150: 38.462vw;
        --width160: 41.026vw;
        --width170: 43.590vw;
        --width180: 46.154vw;
        --width190: 48.718vw;
        --width200: 51.282vw;
    }

    html{
        font-size: 4.1vw;
    }

    .wrapper{
        width: 90vw;
    }

    a:hover{
        animation: none!important;
    }

    .section_title h2 {
        font-size: var(--font48);
    }

    .section_title p{
        font-size: var(--font14);
    }


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

    header{
        width: 100%;
        transform: translate(0, -20vw);
        transition: 0.8s;
    }

    header.show{
        transform: translate(0, 0);
    }

    .header_logo{
        font-size: var(--font24);
        transform: rotate(0deg);
        position: absolute;
        top: 3.5vw;
        left: var(--width40);
        letter-spacing: 0.08em;
        width: 64vw;
    }


    /* hamburger --------------------------------------------------------------------------- */

    .hamburger-menu {
        position: absolute;
        height: var(--width30);
        width: var(--width30);
        top: 5vw;
        left: auto;
        right: var(--width20);
    }

    .hamburger-menu::before {
        transform: translateX(0px);
        box-shadow: -12px 0px 0 var(--white);
    }

    .hamburger-menu::after {
        transform: translateX(12px);
    }

    @keyframes top {
        0% {
            left: 6px;
            box-shadow: none;
            width: 30px;
            transform: translateX(-12px);
        }
        50% {
            left: calc(50% - 2px);
            width: 5px;
            box-shadow: none;
            transform: translateX(0) rotate(0);
        }
        100% {
            left: calc(50% - 2px);
            width: 5px;
            box-shadow: 12px 0 0 var(--white);
            transform: translateX(-12px) rotate(0);
        }
    }

    @keyframes bottom {
        0% {
            left: 6px;
            width: 30px;
            transform: translateX(0);
        }
        50% {
            left: calc(50% - 2px);
            width: 5px;
            transform: translateX(0) rotate(0);
        }
        100% {
            left: calc(50% - 2px);
            width: 5px;
            transform: translateX(12px) rotate(0);
        }
    }

    @keyframes top-active {
        50% {
            left: calc(50% - 2px);
            width: 5px;
            box-shadow: none;
            transform: translateY(0px) rotate(0);
        }
        100% {
            left: -12px;
            box-shadow: none;
            width: 30px;
            transform: translateX(12px) rotate(45deg);
        }
    }

    @keyframes bottom-active {
        50% {
            left: calc(50% - 2px);
            width: 5px;
            box-shadow: none;
            transform: translateY(0px) rotate(0);
        }
        100% {
            left: -12px;
            box-shadow: none;
            width: 30px;
            transform: translateX(12px) rotate(-45deg);
        }
    }

    .navigation {
        width: 100vw;
    }

    .navigation__list {
        gap: var(--width30);
    }


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

    footer{
        background: #000;
        padding: var(--width60) var(--width20) var(--width20);
        position: relative;
        z-index: 1;
    }

    .footer_flex{
        flex-flow: column-reverse;
        align-items: center;
        gap: var(--width100);
    }

    .footer_logo{
        width: 21vw;
    }

    .footer_flex{
        gap: var(--width80);
    }

    .footer_menu{
        gap: var(--width100);
    }

    .footer_menu_column{
        gap: 6.5vw;
    }

    .footer_menu_about::after{
        width: 2vw;
        height: 2vw;
        top: 3.2vw;
        right: 2vw;
    }

    .footer_logo{
        width: 63vw;
    }

    .page_top{
        margin: 0;
        position: absolute;
        bottom: 87px;
        bottom: 22vw;
        right: var(--width20);
    }
}