@layer reset, base, components, utilities;

@import url("reset.css") layer(reset);
@import url("base.css") layer(base);
@import url("modal.css") layer(base);
/* @import url("common.css") layer(components); */
/* @import url("utilities.css") layer(utilities); */

@layer components {

    /* レスポンシブユーティリティ */
    @media (min-width: 769px) {
        .sp {
            display: none !important;
        }
    }

    @media (max-width: 768px) {
        .pc {
            display: none !important;
        }
    }

    /* Loading */
    .loading {
        position: fixed;
        inset: 0;
        background-color: var(--color-white);
        display: grid;
        place-items: center;
        z-index: 9999;
        transition: opacity var(--transition), visibility var(--transition);
    }

    .loading svg {
        width: 120px;
    }

    .loading svg path {
        opacity: 0;
        animation: fadeInLetter 0.6s ease-out forwards;
    }

    .loading svg path:nth-child(1) {
        animation-delay: 0s;
    }

    .loading svg path:nth-child(2) {
        animation-delay: 0.5s;
    }

    .loading svg path:nth-child(3) {
        animation-delay: 1.0s;
    }

    .loading svg path:nth-child(4) {
        animation-delay: 1.5s;
    }

    @keyframes fadeInLetter {
        from {
            opacity: 0;
            transform: translateY(20px);
        }

        to {
            opacity: 1;
            transform: translateY(0);
        }
    }

    .loading.loaded {
        opacity: 0;
        visibility: hidden;
    }

    .loading__spinner {
        width: clamp(40px, 4vw, 60px);
        height: clamp(40px, 4vw, 60px);
        border: 3px solid var(--color-border);
        border-top-color: var(--color-primary);
        border-radius: 50%;
        animation: spin 1s linear infinite;
    }

    .loading__progress {
        position: absolute;
        bottom: 20%;
        width: clamp(150px, 15vw, 200px);
        height: 4px;
        background-color: var(--color-border);
        border-radius: 2px;
        overflow: hidden;
    }

    .loading__progress-bar {
        height: 100%;
        background-color: var(--color-primary);
        width: 0%;
        transition: width 0.3s ease;
    }

    @keyframes spin {
        to {
            transform: rotate(360deg);
        }
    }

    /* Hero */
    .hero {
        .hero__inner {
            position: relative;
        }

        .hero__media {
            display: flex;
        }

        .hero__lead {
            position: absolute;
            top: 0;
            left: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            width: var(--width-screen);
            height: 100%;
            z-index: 99;

            .hero__title--jp {
                color: var(--color-white);
                font-size: 3.4vw;
                font-weight: var(--font-weight-normal);
                text-align: center;
                text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.7);
            }

            .hero__subtitle--en {
                color: var(--color-white);
                font-size: 3vw;
                font-weight: var(--font-weight-normal);
                line-height: var(--line-height-none);
                margin-top: var(--space-fluid-xs);
                text-align: center;
                text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.7);
            }
        }

        .hero__epor-logo {
            transform: translateX(-50%);
            width: 8%;
            position: absolute;
            bottom: 40px;
            left: 50%;
            z-index: 99;
        }
    }

    /* Feature */
    .feature {
        margin-block: var(--space-fluid-xl);

        .feature__lead {
            font-size: var(--font-size-fluid-base);
            font-weight: var(--font-weight-normal);
            text-align: center;
        }

        .feature__lead--1 {
            margin-bottom: var(--space-fluid-md);
        }
    }

    /* Link summary */
    .link-summary {
        margin-block: var(--space-fluid-xl);

        .link-summary__inner {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: var(--space-fluid-md);
            width: var(--width-80);
            margin: 0 auto;

            .link-card {
                padding: var(--space-fluid-sm) 0;

                .link-card__meta {
                    display: flex;
                    flex-direction: column;
                    justify-content: center;
                    align-items: center;

                    .link-card__number {
                        font-size: var(--font-size-fluid-xl);
                        font-weight: var(--font-weight-normal);
                    }

                    .link-card__divider {
                        display: block;
                        width: 1px;
                        height: 16px;
                        background-color: var(--color-black);
                        margin: var(--space-2) 0;
                    }
                }

                .link-card__title {
                    text-align: center;
                    font-size: var(--font-size-fluid-xl);
                    font-weight: var(--font-weight-normal);
                    margin-bottom: var(--space-fluid-sm);
                }
            }
        }
    }

    /* Product detail */
    .product-detail {
        margin-block: var(--space-fluid-2xl);

        /* Card */
        .product-detail__card {
            background: var(--color-product-detail-card-bg);
            width: var(--width-70);
            margin: 0 auto;
            padding: var(--space-fluid-lg) var(--space-fluid-xl);
            margin-block: var(--space-fluid-2xl);

            .product-detail__header {
                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: center;
                margin-bottom: var(--space-fluid-md);

                .product-detail__divider {
                    display: block;
                    width: 2px;
                    height: 24px;
                    background-color: var(--color-black);
                }

                .product-detail__number,
                .product-detail__title {
                    font-size: var(--font-size-fluid-4xl);
                    font-weight: var(--font-weight-medium);
                }
            }

            .product-detail__details {
                .product-detail__credit {
                    display: flex;
                    flex-direction: row;
                    align-items: end;
                    justify-content: end;
                    margin: var(--space-fluid-sm) 0;

                    .product-detail__price {
                        text-align: right;
                        font-size: var(--font-size-fluid-base);
                        border-bottom: 1px solid var(--color-black);
                        line-height: var(--line-height-tight);
                    }

                    .product-detail__tax {
                        font-size: var(--font-size-fluid-sm);
                        margin-left: var(--space-fluid-xs);
                    }
                }

                .product-detail__description {
                    margin-top: var(--space-fluid-lg);
                    font-size: var(--font-size-fluid-base);
                    text-align: center;
                }
            }
        }

        /* Style scene */
        .style-scene {
            .style-scene__inner {
                position: relative;
                padding: var(--space-fluid-3xl) 0;

                .style-scene__eyebrow {
                    position: absolute;
                    top: 40px;
                    right: 40px;
                    font-size: var(--font-size-fluid-5xl);
                    font-weight: var(--font-weight-medium);
                    /* for logo styls */
                    line-height: 0.9;
                    color: var(--color-white);
                    text-align: left;
                }

                .style-scene__main {
                    display: flex;
                    width: 100%;

                    .style-scene__media {
                        flex: 0.9;
                        margin-left: var(--space-fluid-lg);

                        .style-scene__price {
                            display: flex;
                            justify-content: end;
                            align-items: baseline;
                            margin-top: var(--space-fluid-sm);
                        }

                        .style-scene__price-link {
                            font-size: var(--font-size-fluid-base);
                            color: var(--color-white);
                            border-bottom: 1px solid var(--color-white);
                            line-height: var(--line-height-tight);

                            .style-scene__tax {
                                display: inline-block;
                                font-size: var(--font-size-fluid-sm);
                                margin-left: var(--space-fluid-xs);
                            }
                        }
                    }

                    .style-scene__content {
                        flex: 1;
                        padding-left: var(--space-fluid-md);
                        padding-right: var(--space-fluid-xl);

                        .style-scene__title {
                            margin-top: var(--space-fluid-3xl);
                            margin-bottom: var(--space-fluid-sm);
                            color: var(--color-white);
                            font-size: var(--font-size-fluid-2xl);
                            font-weight: var(--font-weight-normal);
                        }

                        .style-scene__description {
                            color: var(--color-white);
                            font-size: var(--font-size-fluid-base);
                            font-weight: var(--font-weight-normal);
                        }
                    }
                }

                .style-scene__sub {
                    display: flex;
                    width: 80%;
                    margin: 0 auto;
                    margin-top: var(--space-fluid-2xl);
                    gap: var(--space-fluid-xl);

                    .style-scene__media--sub {
                        flex: 1;
                    }
                }
            }
        }

        /* daily */
        .style-scene--daily {
            /* background: var(--color-product-detail-daily-bg); */
            position: relative;
            overflow: hidden;

            &::before {
                content: '';
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: var(--color-product-detail-daily-bg);
                transform: translateX(var(--bg-position, -100%));
                z-index: 0;
                transition: none;
            }

            .style-scene__inner {
                position: relative;
                z-index: 1;
            }

            .style-scene__media--left {
                margin-top: var(--space-fluid-9xl);
            }
        }

        .style-scene--semiformal {
            /* background: var(--color-product-detail-semiformal-bg); */
            position: relative;
            overflow: hidden;

            &::before {
                content: '';
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: var(--color-product-detail-semiformal-bg);
                transform: translateX(var(--bg-position, -100%));
                z-index: 0;
                transition: none;
            }

            .style-scene__inner {
                position: relative;
                z-index: 1;
            }

            .style-scene__media--right {
                margin-top: var(--space-fluid-9xl);
            }
        }
    }

    /* All items */
    .product-all-items {
        margin-block: var(--space-fluid-2xl);

        .product-all-items__title {
            font-size: var(--font-size-fluid-2xl);
            font-weight: var(--font-weight-normal);
            text-align: center;
        }

        .product-all-items__list {
            display: grid;
            width: 70%;
            grid-template-columns: 1fr 1fr;
            gap: var(--space-fluid-lg);
            margin: 0 auto;
            margin-top: var(--space-fluid-lg);
        }

        .product-card {
            display: flex;
            flex-direction: column;

            .product-card__body {
                margin-top: var(--space-fluid-sm);

                .product-card__name {
                    display: inline-block;
                    font-size: var(--font-size-fluid-base);
                    font-weight: var(--font-weight-normal);
                    border-bottom: 1px solid var(--color-black);
                    line-height: var(--line-height-tight);

                    .product-card__tax {
                        font-size: var(--font-size-fluid-sm);
                        margin-left: var(--space-fluid-xs);
                    }
                }
            }
        }

        .series-card {
            display: flex;
            flex-direction: column;

            .series-card__inner {
                background: var(--color-all-items-series-card-bg);
                flex: 1;
                display: flex;
                align-items: center;
                justify-content: center;

                .series-card__label {
                    font-size: var(--font-size-fluid-xl);
                }
            }

            .dummy {
                font-size: var(--font-size-fluid-base);
                line-height: var(--line-height-tight);
                padding-top: var(--space-fluid-sm);
                color: rgba(0, 0, 0, 0);
            }
        }
    }

    /* Staff credits */
    .staff-credits {
        margin-block: var(--space-fluid-2xl);

        .credits__list {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;

            .credits__item {
                margin-bottom: var(--space-fluid-sm);

                .credits__text {
                    font-size: var(--font-size-fluid-sm);
                }
            }
        }
    }

    /* CTA Grid */
    .cta-grid {
        margin-block: var(--space-fluid-2xl);
        display: flex;
        justify-content: center;
        align-items: center;

        .cta-grid__list {
            display: grid;
            grid-template-columns: 1fr 1fr;
            grid-template-rows: 1fr 1fr;
            gap: var(--space-fluid-md);
            width: 50%;

            .cta-link {
                display: flex;
                align-items: center;
                justify-content: center;
                padding: var(--space-fluid-sm);
                background-color: var(--color-white);
                border: 1px solid var(--color-black);
                transition: all 0.2s ease;

                &:hover {
                    background-color: var(--color-black);
                    color: var(--color-white);
                    opacity: 1 !important;
                }

                .cta-link__label {
                    font-size: var(--font-size-fluid-sm);
                    font-weight: var(--font-weight-normal);
                    text-align: center;
                }
            }
        }
    }
}


/* Links */
.links {
    margin-block: var(--space-fluid-2xl);
    text-align: center;

    .jun-grp {
        margin-bottom: var(--space-fluid-2xl);
    }

    .ex-grp {
        justify-content: center;
        margin: 0 auto;
        gap: var(--space-fluid-md);
    }
}

/* Footer */
.footer {
    margin-top: 160px;

    & a:hover img {
        opacity: 0.5;
    }

    .footer-logo {
        margin: 0 auto 90px auto;
    }

    .footer-logo h3 {
        width: 6%;
        margin: 0 auto 5px auto;
    }

    .footer-logo h3 img {
        width: 100%;
    }

    .footer-logo p {
        font-size: 0.7rem;
        line-height: 2.4rem;
        letter-spacing: 0.1rem;
        text-align: center;
    }

    .footer-link {
        font-size: 0.8rem;
        letter-spacing: 0.1rem;
        margin: 0 auto 90px auto;
        text-align: center;
    }

    .footer-link span {
        color: #aaa;
        margin: 0 15px;
    }

    .footer-sns {
        margin: 0 auto 90px auto;
    }

    .footer-sns p {
        font-size: 1.2rem;
        letter-spacing: 0.1rem;
        margin: 0 auto 30px auto;
        text-align: center;
    }

    .footer-sns a {
        display: block;
        width: 40px;
        margin: 0 auto;
    }

    .footer-sns a:nth-of-type(3) img {
        margin: 0 15px 0 8px;
    }

    .footer-copyright {
        width: 100%;
        text-align: center;
        margin: 0 auto 90px auto;
    }

    .footer-copyright p {
        font-size: 0.7rem;
        letter-spacing: 0.1rem;
    }
}

@media (max-width: 768px) {

    /* Loading */
    .loading svg {
        width: 80px;
    }

    /* Hero */
    .hero {
        .hero__inner {
            position: relative;
        }

        .hero__media {
            display: flex;
        }

        .hero__lead {
            position: absolute;
            top: 0;
            left: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            width: var(--width-screen);
            height: 100%;
            z-index: 99;

            .hero__title--jp {
                color: var(--color-white);
                font-size: 4.5vw;
                font-weight: var(--font-weight-medium);
                text-align: center;
            }

            .hero__subtitle--en {
                color: var(--color-white);
                font-size: 4.5vw;
                font-weight: var(--font-weight-normal);
                line-height: var(--line-height-tight);
                margin-top: var(--space-fluid-xs);
                text-align: center;
            }
        }

        .hero__epor-logo {
            transform: translateX(-50%);
            width: 16%;
            position: absolute;
            bottom: 20px;
            left: 50%;
            z-index: 99;
        }
    }

    /* Feature */
    .feature {
        width: 90%;
        margin: 0 auto;
        margin-block: var(--space-fluid-lg);

        .feature__lead {
            font-size: var(--font-size-fluid-xs);
            font-weight: var(--font-weight-normal);
            text-align: center;
        }

        .feature__lead--1 {
            margin-bottom: var(--space-fluid-md);
        }
    }

    /* Link summary */
    .link-summary {
        margin-block: var(--space-fluid-lg);

        .link-summary__inner {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: var(--space-fluid-md);
            width: var(--width-90);
            margin: 0 auto;

            .link-card {
                padding: var(--space-fluid-sm) 0;

                .link-card__meta {
                    display: flex;
                    flex-direction: column;
                    justify-content: center;
                    align-items: center;

                    .link-card__number {
                        font-size: var(--font-size-fluid-lg);
                        font-weight: var(--font-weight-normal);
                    }

                    .link-card__divider {
                        display: block;
                        width: 1px;
                        height: 12px;
                        background-color: var(--color-black);
                        margin: var(--space-2) 0;
                    }
                }

                .link-card__title {
                    text-align: center;
                    font-size: var(--font-size-fluid-sm);
                    font-weight: var(--font-weight-normal);
                    margin-bottom: var(--space-fluid-sm);
                }
            }
        }
    }

    /* Product detail */
    .product-detail {
        margin-block: var(--space-fluid-lg);

        /* Card */
        .product-detail__card {
            background: var(--color-product-detail-card-bg);
            width: var(--width-90);
            margin: 0 auto;
            padding: var(--space-fluid-md) var(--space-fluid-md);
            margin-block: var(--space-fluid-xl);

            .product-detail__header {
                display: flex;
                flex-direction: column;
                justify-content: center;
                align-items: center;
                margin-bottom: var(--space-fluid-sm);

                .product-detail__divider {
                    display: block;
                    width: 2px;
                    height: 16px;
                    background-color: var(--color-black);
                    margin-block: 2px;
                }

                .product-detail__number,
                .product-detail__title {
                    font-size: var(--font-size-fluid-2xl);
                    font-weight: var(--font-weight-medium);
                }
            }

            .product-detail__details {
                .product-detail__credit {
                    display: flex;
                    flex-direction: row;
                    align-items: end;
                    justify-content: end;
                    margin: var(--space-fluid-sm) 0;

                    .product-detail__price {
                        text-align: right;
                        font-size: var(--font-size-fluid-base);
                        border-bottom: 1px solid var(--color-black);
                        line-height: var(--line-height-tight);
                    }

                    .product-detail__tax {
                        font-size: var(--font-size-fluid-sm);
                        margin-left: var(--space-fluid-xs);
                    }
                }

                .product-detail__description {
                    margin-top: var(--space-fluid-lg);
                    font-size: var(--font-size-fluid-xs);
                    text-align: center;
                }
            }
        }

        /* Style scene */
        .style-scene {
            .style-scene__inner {
                position: relative;
                padding: var(--space-fluid-2xl) 0 var(--space-fluid-xl) 0;

                .style-scene__eyebrow {
                    position: absolute;
                    top: 16px;
                    right: 10px;
                    font-size: var(--font-size-fluid-3xl);
                    font-weight: var(--font-weight-medium);
                    /* for logo styls */
                    line-height: 0.9;
                    color: var(--color-white);
                    text-align: left;
                }

                .style-scene__main {
                    display: flex;
                    flex-direction: column;
                    width: 90%;
                    margin: 0 auto;

                    .style-scene__media {
                        flex: 1;
                        order: 2;
                        margin-left: 0;
                        margin-top: var(--space-fluid-lg);

                        .style-scene__price {
                            display: flex;
                            justify-content: end;
                            align-items: baseline;
                            margin-top: var(--space-fluid-sm);
                        }

                        .style-scene__price-link {
                            font-size: var(--font-size-fluid-base);
                            color: var(--color-white);
                            border-bottom: 1px solid var(--color-white);
                            line-height: var(--line-height-tight);

                            .style-scene__tax {
                                display: inline-block;
                                font-size: var(--font-size-fluid-sm);
                                margin-left: var(--space-fluid-xs);
                            }
                        }
                    }

                    .style-scene__content {
                        flex: 1;
                        order: 1;
                        padding-left: 0;
                        padding-right: 0;

                        .style-scene__title {
                            margin-top: 0;
                            margin-bottom: var(--space-fluid-sm);
                            color: var(--color-white);
                            font-size: var(--font-size-fluid-base);
                            font-weight: var(--font-weight-normal);
                        }

                        .style-scene__description {
                            color: var(--color-white);
                            font-size: var(--font-size-fluid-xs);
                            font-weight: var(--font-weight-normal);
                        }
                    }
                }

                .style-scene__sub {
                    display: flex;
                    flex-direction: column;
                    width: 90%;
                    margin: 0 auto;
                    margin-top: var(--space-fluid-sm);
                    gap: var(--space-fluid-xl);

                    .style-scene__media--sub {
                        flex: 1;
                    }
                }
            }
        }

        /* daily */
        .style-scene--daily {
            /* background: var(--color-product-detail-daily-bg); */
            position: relative;
            overflow: hidden;

            &::before {
                content: '';
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: var(--color-product-detail-daily-bg);
                transform: translateX(var(--bg-position, -100%));
                z-index: 0;
                transition: none;
            }

            .style-scene__inner {
                position: relative;
                z-index: 1;
            }

            .style-scene__media--left {
                margin-top: 0;
                padding-right: var(--space-fluid-2xl);
                order: 2;
            }

            .style-scene__media--right {
                margin-top: var(--space-fluid-xl);
                padding-left: var(--space-fluid-2xl);
                order: 1;
            }
        }

        .style-scene--semiformal {
            /* background: var(--color-product-detail-semiformal-bg); */
            position: relative;
            overflow: hidden;

            &::before {
                content: '';
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: var(--color-product-detail-semiformal-bg);
                transform: translateX(var(--bg-position, -100%));
                z-index: 0;
                transition: none;
            }

            .style-scene__inner {
                position: relative;
                z-index: 1;
                padding: var(--space-fluid-3xl) 0 var(--space-fluid-xl) 0;
            }

            .style-scene__media--right {
                margin-top: var(--space-fluid-xl);
            }


            .style-scene__media--left {
                margin-top: var(--space-fluid-xl);
                padding-right: var(--space-fluid-2xl);
                order: 1;
            }

            .style-scene__media--right {
                margin-top: 0;
                padding-left: var(--space-fluid-2xl);
                order: 2;
            }
        }
    }

    /* All items */
    .product-all-items {
        margin-block: var(--space-fluid-xl);

        .product-all-items__title {
            font-size: var(--font-size-fluid-2xl);
            font-weight: var(--font-weight-normal);
            text-align: center;
        }

        .product-all-items__list {
            display: grid;
            width: 90%;
            grid-template-columns: 1fr 1fr;
            gap: var(--space-fluid-md);
            margin: 0 auto;
            margin-top: var(--space-fluid-md);
        }

        .product-card {
            display: flex;
            flex-direction: column;

            .product-card__body {
                margin-top: var(--space-fluid-xs);

                .product-card__name {
                    display: inline-block;
                    font-size: var(--font-size-fluid-sm);
                    font-weight: var(--font-weight-normal);
                    border-bottom: 1px solid var(--color-black);
                    line-height: var(--line-height-tight);

                    .product-card__tax {
                        font-size: var(--font-size-fluid-xs);
                        /* margin-left: var(--space-fluid-xs); */
                    }
                }
            }
        }

        .series-card {
            display: flex;
            flex-direction: column;

            .series-card__inner {
                background: var(--color-all-items-series-card-bg);
                flex: 1;
                display: flex;
                align-items: center;
                justify-content: center;

                .series-card__label {
                    font-size: var(--font-size-fluid-lg);
                }
            }

            .dummy {
                font-size: var(--font-size-fluid-base);
                line-height: var(--line-height-tight);
                padding-top: var(--space-fluid-sm);
                color: rgba(0, 0, 0, 0);
            }
        }
    }

    /* Staff credits */
    .staff-credits {
        margin-block: var(--space-fluid-xl);

        .credits__list {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;

            .credits__item {
                margin-bottom: var(--space-fluid-sm);

                .credits__text {
                    font-size: var(--font-size-fluid-xs);
                }
            }
        }
    }

    /* CTA Grid */
    .cta-grid {
        margin-block: var(--space-fluid-xl);
        display: flex;
        justify-content: center;
        align-items: center;

        .cta-grid__list {
            display: flex;
            flex-direction: column;
            grid-template-columns: 1fr 1fr;
            grid-template-rows: 1fr 1fr;
            gap: var(--space-fluid-md);
            width: 70%;

            .cta-link {
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                padding: var(--space-fluid-md);
                background-color: var(--color-white);
                border: 1px solid var(--color-black);
                transition: all 0.2s ease;

                &:hover {
                    background-color: var(--color-black);
                    color: var(--color-white);
                }

                .cta-link__label {
                    font-size: var(--font-size-fluid-sm);
                    font-weight: var(--font-weight-normal);
                    text-align: center;
                }
            }
        }
    }

    /* Footer */
    .footer {
        margin-top: 80px;

        .footer-logo h3 {
            width: 20%;
        }
    }
}