/* ========================================
   ベース
   ======================================== */
html {
    scroll-behavior: smooth;
}

body {
    background-color: #D9F5FF;
}

.header {
    background-color: #fff;
    position: relative;
    z-index: 2;
}

.header::before {
    content: '';
    display: block;
    width: 100vw;
    height: 100%;
    background-color: #fff;
    position: absolute;
    top: 0;
    left: 50%;
    z-index: -1;
    transform: translateX(-50%);
}

.footer {
    position: relative;
}

/* ========================================
   背景
   ======================================== */
body::before {
    content: '';
    display: block;
    width: 100vw;
    height: 100vh;
    position: fixed;
    z-index: -1;
    background-image: url("../image/background-image.png");
    background-size: cover;
    background-position: top;
    background-repeat: no-repeat;
}

/* ========================================
   PC固定サイドブロック
   ======================================== */
.pc-side-block {
    display: none;
}

/* ========================================
   メインコンテンツ
   ======================================== */
.lp {
    position: relative;
    max-width: 375px;
    width: 30vw;
    margin: auto;
    box-shadow: 0 0 20px rgba(0, 0, 0, .15);
    background-color: #fff;
}

.lp .image {
    position: relative;
    width: 100%;
    height: auto;
}

.lp .image img {
    width: 100%;
    height: 100%;
    display: block;
    margin-bottom: -1px;
}

/* ========================================
   メニュー
   ======================================== */
.menu-section {
    background-color: #fff;
    padding: 40px 24px;
}

.menu-container {
    display: flex;
    flex-direction: column;
    gap: 8px;

    .menu-title {
        margin: auto;
    }
}

.menu-list {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.menu-item {
    font-family: "Inter", sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: #0097CB;
    text-align: center;
    position: relative;
    background-color: #D9F5FF;
}

.menu-item-link {
    display: block;
    padding: 16px 32px;
    color: inherit;
    text-decoration: none;
}

.menu-item::after {
    content: '';
    display: block;
    background-image: url("../image/arrow.png");
    background-size: contain;
    background-repeat: no-repeat;
    width: 17px;
    height: 17px;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 24px;
}

/* ========================================
   PC固定メニュー
   ======================================== */
.pc-side-menu {
    display: flex;
    flex-direction: column;
    gap: 16px;
    list-style: none;
}

.pc-side-menu-link {
    display: block;
    position: relative;
    padding: 16px 32px;
    background-color: #0097CB;
    box-shadow: 0 5px 0 #005A79;
    color: #fff;
    font-family: "Inter", sans-serif;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.4;
    text-align: center;
    text-decoration: none;
}

.pc-side-menu-link::after {
    content: '';
    width: 17px;
    height: 17px;
    background-image: url("../image/menu-arrow.png");
    background-size: contain;
    background-repeat: no-repeat;
    position: absolute;
    top: 50%;
    right: 24px;
    transform: translateY(-50%);
}

.pc-side-gift-banner {
    display: block;
    width: 100%;
    border-radius: 8px;
}

/* ========================================
   CTA
   ======================================== */
.cta_block {
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 40px 24px;
}

.cta_block a,
.cta_block img {
    display: block;
}

.cta_block img {
    width: 100%;
}

/* ========================================
   追従CTA
   ======================================== */
.floating-cta {
    display: block;
    box-sizing: border-box;
    width: 100%;
    max-width: 375px;
    padding-block: 12px 40px;
    padding-inline: 24px;
    background-image: linear-gradient(to top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
    position: fixed;
    bottom: 0px;
    right: 0;
    left: 0;
    z-index: 20;
    margin-inline: auto;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .3s, visibility .3s;
}

.floating-cta.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.floating-cta img {
    display: block;
    width: 100%;
    height: auto;
    transition: opacity .3s cubic-bezier(.13, .78, .38, .98);
}

/* ========================================
   ラインアップ
   ======================================== */
.lineup {
    background-image: url("../image/lineup-block-bg.png");
    background-position: top center;
    background-repeat: no-repeat;
    background-size: 100% auto;
    padding: 40px 24px;
    position: relative;
}

.lp .lineup .lineup-image-1 {
    display: block;
    max-width: 282px;
    width: 100%;
    height: auto;
    margin-inline: auto;
    margin-bottom: 10px;
}

.lineup-image-2 {
    max-width: 79px;
    width: 100%;
    height: 121px;
    position: absolute;
    top: 130px;
    right: max(0px, calc((100% - 375px) / 2));
}

.lineup-button-group {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    position: relative;
    z-index: 1;
    margin-bottom: 24px;
}

.lineup-button {
    flex: 0 0 calc((100% - 12px) / 3);
    width: calc((100% - 12px) / 3);
    height: auto;
    aspect-ratio: 1 / 1;
    position: relative;
    z-index: 2;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
    line-height: 0;
    touch-action: manipulation;
}

.lp .lineup .lineup-button img {
    width: 100%;
    height: 100%;
    display: block;
    box-sizing: border-box;
    object-fit: contain;
    margin-bottom: 0;
    border: solid 1px #A4DAEE;
}

.lp .lineup .lineup-button.is-active img {
    border: solid 2px #62C7EC;
    background-color: #F3FCFF;
}

.lineup-slider-area {
    position: relative;
    width: 100%;
}

.lineup-slider {
    width: 100%;
    overflow: hidden;
}

.lineup-slider .slick-list {
    overflow: hidden;
}

.lineup-slider .slick-track {
    display: flex;
}

.lineup-slider .slick-slide {
    height: auto;
}

.lineup-slider .slider-image {
    display: block;
    width: 100%;
    height: auto;
}

.lineup-slider-control {
    width: 32px;
    height: 32px;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
    line-height: 0;
    position: absolute;
    top: 27.84%;
    z-index: 2;
}

.lineup-slider-control-prev {
    left: clamp(-16px, -4.89%, 16px);
}

.lineup-slider-control-next {
    right: clamp(-16px, -4.89%, 16px);
}

.lineup-slider-control img {
    display: block;
    width: 100%;
    height: 100%;
}

.lineup-stock-banner {
    padding-block: 8px 32px;
    padding-inline: 24px;
}

.lineup-stock-banner-link {
    display: block;
}

.lineup-stock-banner-image {
    display: block;
    width: 100%;
}

/* ========================================
   キャンペーン
   ======================================== */
.campaign {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 40px 24px;
    background: linear-gradient(180deg, #32B7EC 0%, #CEE8F3 100%);
}

#anchor-4 {
    scroll-margin-top: 80px;
}

.campaign-image-1 {
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    max-width: 327px;
    width: 100%;
    height: auto;
}

.campaign-image-container {
    position: relative;
}

.campaign-image-2 {
    width: 100%;
    height: auto;
}

.campaign-image-3-overlay {
    position: absolute;
    top: -7px;
    left: -13px;
    width: 27px;
    height: 27px;
}

.campaign-details {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.campaign-period,
.campaign-target-models {
    width: 100%;
    height: auto;
}

.campaign-offers {
    display: flex;
    flex-direction: column;
    gap: 24px; 

    img {
        width: 100%;
        height: auto;
    }
}

.campaign-cta {
    width: 100%;
    line-height: 0;

    img {
        display: block;
        width: 100%;
        height: auto;
    }
}

.campaign-cta a {
    display: block;
}

.campaign-2 {
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 40px 0px;
    background-color: #D0121B;

    .campaign-cta {
        padding-inline: 24px;
    }
}

.campaign2-image-1 {
    display: block;
    max-width: 239px;
    width: 100%;
    height: auto;
    margin-inline: auto;
}

.campaign2-image-2 {
    width: 100%;
    height: auto;
}

.campaign2-image-3 {
    width: 100%;
    height: auto;
    padding-inline: 24px;
}

/* ========================================
   ホバーアニメーション
   ======================================== */
.menu-item-link,
.pc-side-menu-link,
.lineup-slider-control,
.lineup-stock-banner-link {
    transition: opacity .3s cubic-bezier(.13, .78, .38, .98);
}

.cta_block a,
.campaign-cta a,
.floating-cta img {
    transition:
        transform .3s cubic-bezier(.13, .78, .38, .98);
}

.cta_block a,
.campaign-cta a {
    position: relative;
    overflow: hidden;
    border-radius: 999px;
}

.floating-cta {
    overflow: hidden;
}

.cta_block a::before,
.campaign-cta a::before {
    content: '';
    position: absolute;
    top: 0;
    left: -75%;
    width: 50%;
    height: 100%;
    background: linear-gradient(to right, rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, .4) 50%, rgba(255, 255, 255, 0) 100%);
    -webkit-transform: skewX(-20deg);
    transform: skewX(-20deg);
    z-index: 1;
    pointer-events: none;
}

@media (hover: hover) {
    .menu-item-link:hover,
    .pc-side-menu-link:hover,
    .lineup-slider-control:hover,
    .lineup-stock-banner-link:hover {
        opacity: .5;
    }

    .cta_block a:hover,
    .campaign-cta a:hover,
    .floating-cta:hover img {
        transform: scale(1.03);
    }

    .cta_block a:hover::before,
    .campaign-cta a:hover::before {
        animation: cta-shine .8s ease;
    }
}

.menu-item-link:active,
.pc-side-menu-link:active,
.lineup-slider-control:active,
.lineup-stock-banner-link:active {
    opacity: .5;
}

.cta_block a:active,
.campaign-cta a:active,
.floating-cta:active img {
    transform: translateY(0) scale(.98);
}

@keyframes cta-shine {
    100% {
        left: 125%;
    }
}

.pc-side-menu-link:hover,
.pc-side-menu-link:focus-visible {
    opacity: .6;
    transition-duration: 0s;
}

.pc-side-menu-link:active {
    opacity: .6;
}

/* ========================================
   フッター
   ======================================== */
.lp-footer {
    padding: 24px 16px;
    background-color: #484848;

    p {
        font-family: "Noto Sans JP", sans-serif;
        font-size: 11px;
        font-weight: 500;
        line-height: 1.4;
        letter-spacing: 0.03em;
        color: #fff;
    }
}

/* ========================================
   レスポンシブ
   ======================================== */
@media screen and (max-width: 767px) {
    .pagetop {
        bottom: calc(23.55vw + 61px);
    }

    .pagetop_anchor {
        width: 38px;
        padding-top: 38px;
    }

    .lp {
        width: 100%;
        max-width: 100%;
        border: none;
        box-shadow: none;
    }
    .floating-cta {
        max-width: none;
    }
}

@media screen and (max-width: 1024px) and (min-width: 768px) {
    .pagetop {
        bottom: 150px;
    }

    .lp {
        width: 60vw;
        max-width: 480px;
    }

    .pc-side-block {
        display: none;
    }
}

@media screen and (max-width: 979px) and (min-width: 768px) {
    .lp {
        width: 60vw;
        max-width: 100%;
    }

    .pagetop {
        right: 0;
    }

    .header_new,
    .footer_inner {
        max-width: 92%;
        margin-left: 4%;
        margin-right: 4%;
    }
}

@media screen and (min-width: 598px) and (max-width: 1024px) {
    .lineup-button {
        flex-basis: calc((100% - 24px) / 5);
        width: calc((100% - 24px) / 5);
        height: auto;
        aspect-ratio: 1 / 1;
    }
}

@media screen and (min-width: 1025px) {
    .pc-side-block {
        display: flex;
        justify-content: center;
        align-items: center;
        width: calc((100vw - 395px) / 2);
        position: fixed;
        top: 50%;
        z-index: 2;
        transform: translateY(-50%);
    }

    .pc-side-left {
        left: 0;
    }

    .pc-side-right {
        right: 0;
    }

    .pc-side-menu {
        width: 90%;
        max-width: 375px;
    }

    .pc-side-gift-banner {
        width: 90%;
        max-width: 375px;
    }
}
