/* =========================================
   GARAGE MEMBER LP
========================================= */

.garage-member-lp{
    --member-black:#33343a;
    --member-dark:#25262b;
    --member-gray:#777;
    --member-light:#f5f4f1;
    --member-border:#deddda;
    --member-accent:#d74c43;
    --member-accent-dark:#bd3e36;
    --member-white:#fff;

    color:var(--member-black);
    font-family:inherit;
    line-height:1.8;
}

.garage-member-lp *,
.garage-member-lp *::before,
.garage-member-lp *::after{
    box-sizing:border-box;
}

.garage-member-lp img{
    max-width:100%;
    height:auto;
}

.garage-member-lp a{
    text-decoration:none;
}


/* =========================================
   COMMON
========================================= */

.garage-member-lp .member-section-heading{
    text-align:center;
    margin-bottom:55px;
}

.garage-member-lp .member-section-label{
    margin:0 0 8px;
    color:#888;
    font-size:12px;
    font-weight:bold;
    letter-spacing:.18em;
}

.garage-member-lp .member-section-heading h2{
    margin:0 0 15px;
    font-size:32px;
    line-height:1.4;
    letter-spacing:.04em;
    font-weight:bold;
}

.garage-member-lp .member-section-heading > p:last-child{
    margin:0;
    color:#777;
    font-size:14px;
}


/* =========================================
   HERO
========================================= */

.garage-member-lp .member-hero{
    position:relative;
    padding:85px 20px 90px;
    text-align:center;
    background:
        linear-gradient(
            135deg,
            #f7f6f2 0%,
            #ffffff 55%,
            #f2f0eb 100%
        );
    overflow:hidden;
}

.garage-member-lp .member-hero::before{
    width:360px;
    height:360px;
    top:-190px;
    right:-130px;

    border:1px solid rgba(55,55,55,.12);
    border-radius:50%;
}

.garage-member-lp .member-hero::after{
    width:220px;
    height:220px;
    bottom:-140px;
    left:-100px;

    border:1px solid rgba(55,55,55,.08);
    border-radius:50%;
}

.garage-member-lp .member-hero > *{
    position:relative;
    z-index:1;
}

.garage-member-lp .member-hero-label{
    margin:0 0 18px;
    font-size:13px;
    font-weight:bold;
    letter-spacing:.25em;
    color:#777;
}

.garage-member-lp .member-hero h1{
    margin:0;
    font-size:40px;
    line-height:1.45;
    letter-spacing:.05em;
}

.garage-member-lp .member-hero-lead{
    margin:25px 0 35px;
    color:#666;
    font-size:15px;
}


/* =========================================
   COUPON
========================================= */

.garage-member-lp .member-coupon{
    width:min(440px,100%);
    margin:0 auto 32px;
    padding:28px 30px 30px;
    background:#fff;
    border:1px solid #ddd;
    box-shadow:0 8px 25px rgba(0,0,0,.06);
}

.garage-member-lp .member-coupon-label{
    margin:0 0 10px;
    color:#999;
    font-size:11px;
    font-weight:bold;
    letter-spacing:.2em;
}

.garage-member-lp .member-coupon-text{
    margin:0;
    font-size:16px;
    font-weight:bold;
}

.garage-member-lp .member-coupon-price{
    margin:0;
    color:var(--member-accent);
    font-size:25px;
    font-weight:bold;
}

.garage-member-lp .member-coupon-price strong{
    font-size:64px;
    line-height:1;
    letter-spacing:-.03em;
}

.garage-member-lp .member-coupon-note{
    margin:4px 0 0;
    font-size:15px;
    font-weight:bold;
}


/* =========================================
   BUTTON
========================================= */

.garage-member-lp .member-main-btn{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;

    width:min(420px,100%);
    min-height:68px;

    margin:0 auto;

    color:#fff;
    background:var(--member-accent);

    border-radius:2px;

    transition:
        background .25s ease,
        transform .25s ease;
}

.garage-member-lp .member-main-btn:hover{
    background:var(--member-accent-dark);
    color:#fff;
    transform:translateY(-2px);
}

.garage-member-lp .member-main-btn span{
    font-size:17px;
    font-weight:bold;
    letter-spacing:.05em;
}

.garage-member-lp .member-main-btn small{
    margin-top:1px;
    font-size:11px;
    opacity:.9;
}

.garage-member-lp .member-login{
    margin:15px 0 0;
    font-size:12px;
    color:#777;
}

.garage-member-lp .member-login a{
    color:#333;
    text-decoration:underline;
}


/* =========================================
   MERIT
========================================= */

.garage-member-lp .member-merit{
    max-width:1100px;
    margin:0 auto;
    padding:100px 20px 50px;
}

.garage-member-lp .member-category{
    margin-bottom:90px;
}

.garage-member-lp .member-category-heading{
    display:flex;
    align-items:center;
    gap:18px;

    margin-bottom:30px;
    padding-bottom:15px;

    border-bottom:1px solid var(--member-border);
}

.garage-member-lp .member-category-heading > span{
    display:flex;
    align-items:center;
    justify-content:center;

    width:48px;
    height:48px;

    border:1px solid #333;
    border-radius:50%;

    font-size:13px;
    font-weight:bold;
}

.garage-member-lp .member-category-heading p{
    margin:0;
    color:#999;
    font-size:10px;
    font-weight:bold;
    letter-spacing:.18em;
}

.garage-member-lp .member-category-heading h3{
    margin:0;
    font-size:24px;
    line-height:1.4;
}


/* =========================================
   MERIT CARD
========================================= */

.garage-member-lp .member-merit-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
}

.garage-member-lp .member-merit-card{
    position:relative;

    overflow:hidden;

    background:#fff;
    border:1px solid var(--member-border);

    transition:
        box-shadow .25s ease,
        transform .25s ease;
}

.garage-member-lp .member-merit-card:hover{
    transform:translateY(-3px);
    box-shadow:0 8px 25px rgba(0,0,0,.07);
}

.garage-member-lp .member-merit-card--important{
    border:2px solid var(--member-accent);
}

.garage-member-lp .member-merit-number{
    position:absolute;
    top:12px;
    left:14px;

    z-index:2;

    font-size:11px;
    font-weight:bold;
    letter-spacing:.1em;
    color:#555;

    background:rgba(255,255,255,.9);
    padding:2px 7px;
}

.garage-member-lp .member-merit-image{
    display:flex;
    align-items:center;
    justify-content:center;

    aspect-ratio:16 / 9;

    padding:20px;

    background:#fafafa;
}

.garage-member-lp .member-merit-image img{
    width:100%;
    height:100%;
    object-fit:contain;
}

.garage-member-lp .member-merit-body{
    padding:25px 25px 28px;
}

.garage-member-lp .member-merit-tag{
    display:inline-block;

    margin:0 0 8px;
    padding:3px 8px;

    color:#fff;
    background:var(--member-accent);

    font-size:9px;
    font-weight:bold;
    letter-spacing:.1em;
}

.garage-member-lp .member-merit-body h4{
    margin:0 0 12px;

    font-size:18px;
    line-height:1.6;
}

.garage-member-lp .member-merit-body h4 strong{
    color:var(--member-accent);
}

.garage-member-lp .member-merit-body p{
    margin:0;
    color:#777;
    font-size:12px;
    line-height:1.8;
}


/* =========================================
   CTA
========================================= */

.garage-member-lp .member-cta{
    margin:30px 0 100px;
    padding:80px 20px;

    text-align:center;

    background:#3d3d3d;!important;
    color:#fff;
}

.garage-member-lp .member-cta .member-cta-label{
    margin:0 0 15px;
    color:#aaa;
    font-size:11px;
    font-weight:bold;
    letter-spacing:.2em;
}

.garage-member-lp .member-cta h2{
    margin:0 0 20px;

    font-size:32px;
    line-height:1.5;
    letter-spacing:.05em;
}

.garage-member-lp .member-cta > p:not(.member-cta-label){
    margin:0 0 30px;
    color:#ccc;
    font-size:14px;
}

.garage-member-lp .member-main-btn--large{
    min-height:75px;
}


/* =========================================
   PRODUCT
========================================= */

.garage-member-lp .member-products{
    max-width:1100px;
    margin:0 auto;
    padding:0 20px 100px;
}

.garage-member-lp .member-product-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:15px;
}

.garage-member-lp .member-product-card{
    display:block;

    padding:15px;

    color:#333;

    background:#fff;
    border:1px solid #ddd;

    transition:
        box-shadow .25s ease,
        transform .25s ease;
}

.garage-member-lp .member-product-card:hover{
    color:#333;
    transform:translateY(-3px);
    box-shadow:0 8px 20px rgba(0,0,0,.06);
}

.garage-member-lp .member-product-image{
    display:flex;
    align-items:center;
    justify-content:center;

    aspect-ratio:1 / 1;
    margin-bottom:12px;

    background:#f7f7f7;
}

.garage-member-lp .member-product-image img{
    width:100%;
    height:100%;
    object-fit:contain;
}

.garage-member-lp .member-product-card h3{
    margin:0 0 5px;

    font-size:13px;
    line-height:1.5;
}

.garage-member-lp .member-product-card p{
    margin:0;
    font-size:12px;
    color:#777;
}


/* =========================================
   COLUMN
========================================= */

.garage-member-lp .member-column{
    padding:100px 20px;
    background:#f5f4f1;
}

.garage-member-lp .member-column-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;

    max-width:1100px;
    margin:0 auto;
}

.garage-member-lp .member-column-card{
    display:block;

    background:#fff;
    color:#333;

    border:1px solid #ddd;

    transition:
        box-shadow .25s ease,
        transform .25s ease;
}

.garage-member-lp .member-column-card:hover{
    color:#333;
    transform:translateY(-3px);
    box-shadow:0 8px 25px rgba(0,0,0,.08);
}

.garage-member-lp .member-column-image{
    aspect-ratio:16 / 9;
    overflow:hidden;
}

.garage-member-lp .member-column-image img{
    width:100%;
    height:100%;
    object-fit:cover;

    transition:transform .4s ease;
}

.garage-member-lp .member-column-card:hover img{
    transform:scale(1.03);
}

.garage-member-lp .member-column-body{
    padding:20px;
}

.garage-member-lp .member-column-body span{
    color:#999;
    font-size:10px;
}

.garage-member-lp .member-column-body h3{
    margin:5px 0 10px;

    font-size:16px;
    line-height:1.5;
}

.garage-member-lp .member-column-body p{
    margin:0;

    color:#777;

    font-size:12px;
    line-height:1.8;
}


/* =========================================
   FINAL CTA
========================================= */

.garage-member-lp .member-final-cta{
    padding:100px 20px 110px;
    text-align:center;
}

.garage-member-lp .member-final-cta h2{
    margin:0 0 15px;

    font-size:32px;
    line-height:1.5;
}

.garage-member-lp .member-final-cta > p:not(.member-section-label){
    margin:0 0 30px;
    color:#777;
    font-size:14px;
}


/* =========================================
   SP
========================================= */

@media screen and (max-width:767px){

    .garage-member-lp .member-hero{
        padding:55px 20px 65px;
    }

    .garage-member-lp .member-hero h1{
        font-size:27px;
        line-height:1.55;
    }

    .garage-member-lp .member-hero-lead{
        font-size:13px;
        line-height:1.8;
    }

    .garage-member-lp .member-coupon{
        padding:23px 20px 25px;
    }

    .garage-member-lp .member-coupon-price strong{
        font-size:54px;
    }

    .garage-member-lp .member-main-btn{
        width:100%;
    }


    .garage-member-lp .member-merit{
        padding:70px 15px 20px;
    }

    .garage-member-lp .member-section-heading{
        margin-bottom:40px;
    }

    .garage-member-lp .member-section-heading h2{
        font-size:24px;
    }

    .garage-member-lp .member-section-heading > p:last-child{
        font-size:12px;
    }


    .garage-member-lp .member-category{
        margin-bottom:65px;
    }

    .garage-member-lp .member-category-heading{
        gap:12px;
        margin-bottom:20px;
    }

    .garage-member-lp .member-category-heading > span{
        width:40px;
        height:40px;
        font-size:11px;
    }

    .garage-member-lp .member-category-heading h3{
        font-size:19px;
    }

    .garage-member-lp .member-merit-grid{
        grid-template-columns:1fr;
        gap:15px;
    }

    .garage-member-lp .member-merit-card{
        display:grid;
        grid-template-columns:40% 60%;
    }

    .garage-member-lp .member-merit-number{
        top:8px;
        left:8px;
    }

    .garage-member-lp .member-merit-image{
        aspect-ratio:auto;
        min-height:170px;
        padding:15px;
    }

    .garage-member-lp .member-merit-body{
        display:flex;
        flex-direction:column;
        justify-content:center;
        padding:20px 17px;
    }

    .garage-member-lp .member-merit-body h4{
        font-size:15px;
        line-height:1.5;
    }

    .garage-member-lp .member-merit-body p{
        font-size:11px;
        line-height:1.7;
    }


    .garage-member-lp .member-cta{
        margin:20px 0 70px;
        padding:65px 20px;
    }

    .garage-member-lp .member-cta h2{
        font-size:24px;
    }


    .garage-member-lp .member-products{
        padding:0 15px 70px;
    }

    .garage-member-lp .member-product-grid{
        grid-template-columns:repeat(2,1fr);
        gap:10px;
    }

    .garage-member-lp .member-product-card{
        padding:10px;
    }

    .garage-member-lp .member-product-card h3{
        font-size:11px;
    }

    .garage-member-lp .member-product-card p{
        font-size:10px;
    }


    .garage-member-lp .member-column{
        padding:70px 15px;
    }

    .garage-member-lp .member-column-grid{
        grid-template-columns:1fr;
        gap:15px;
    }

    .garage-member-lp .member-column-body{
        padding:16px;
    }

    .garage-member-lp .member-column-body h3{
        font-size:14px;
    }


    .garage-member-lp .member-final-cta{
        padding:70px 20px 80px;
    }

    .garage-member-lp .member-final-cta h2{
        font-size:24px;
    }

}

/* =========================================
   右下追従バナー（基本：PC向け）
========================================= */
.floating-banner {
    position: fixed;
    right: 20px;
    bottom: 120px; /* プログレスバーを避ける位置 */
    z-index: 9999;
    line-height: 1;
    width: 300px; /* バナー全体の幅を固定 */

    /* 変更点: 影と角丸は親コンテナ全体に適用 */
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
    border-radius: 10px; /* 全体の角丸 */
    background: #fff; /* 背景を白に（念のため） */
}

/* バナー画像部分のリンク */
.floating-banner .banner-link {
    display: block;
}

/* バナー内の画像 */
.floating-banner img {
    display: block;
    width: 100%; /* 幅いっぱいにする */
    height: auto;
    /* 画像自体の角丸や影は解除 (親コンテナに任せる) */
    border-radius: 0;
    box-shadow: none;

    border-radius: 10px; 
    border-bottom-left-radius: 0; /* 下側はCTAとくっつけるため角丸を解除 */
    border-bottom-right-radius: 0;
}

/* CTAテキストエリアのスタイル */
.floating-banner .banner-cta-text {
    display: block;
    background-color: #f9f9f9;
    color: #333;
    text-align: center;
    padding: 16px 10px;
    font-size: 16px;
    font-weight: bold;
    text-decoration: none;
    border-top: 1px solid #eee;
    transition: background-color 0.2s;
    
    /* CTAエリアの下側だけ角丸にする */
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;
}

/* ホバー時のアクション（任意） */
.floating-banner .banner-cta-text:hover {
    background-color: #f0f0f0; /* ホバーで少し色を変える */
}

.floating-banner .banner-close {
    position: absolute;
    top: -10px;
    right: -10px;
    width: 26px;
    height: 26px;
    background: #333;
    color: #fff;
    border: 2px solid #fff;
    border-radius: 50%;
    font-size: 14px;
    font-weight: bold;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
    z-index: 100;
}

/* =========================================
   スマホ向け調整（画面幅768px以下）
========================================= */
@media screen and (max-width: 768px) {
    /* 1. バナー全体の配置と幅をスマホ用に調整 */
    .floating-banner {
        right: 10px;
        bottom: 70px; /* スマホのスクロールプログレスや下部バーを避ける位置 */
        width: calc(100vw - 60px); /* 画面幅いっぱいから左右の余白を引いたサイズ */
        max-width: 170px; /* 大きくなりすぎないよう最大幅を制限 */
    }

    /* 2. 画像やCTAの文字サイズをスマホに合わせて少しコンパクトにする */
    .floating-banner .banner-cta-text {
        padding: 12px 10px; /* 上下の余白を少し狭くする */
        font-size: 12px;     /* フォントサイズを少し小さくする */
    }

    /* 3. 閉じるボタンの位置調整（はみ出しを避けるため微調整） */
    .floating-banner .banner-close {
        top: -8px;
        right: -8px;
        width: 24px;
        height: 24px;
        font-size: 12px;
    }
}