@charset "utf-8";

:root {
    --font-en: "Urbanist", sans-serif;
    --font-ja: "dnp-shuei-gothic-gin-std", "DNP Shuei Gothic Gin Std", sans-serif;
    --black: #373839;
    --white: #fff;
    --gray: #f5f5f5;
    --line: #ddd;
    --ease: cubic-bezier(0.25, 0.1, 0.25, 1);
    --tabs-h: 50px;
}

html {
    background: var(--white);
    overflow-x: hidden;
    scroll-behavior: auto;
}
/* SPタブ切替：①先頭へ瞬間移動中はチラ見え防止 */
html.is-tab-jumping,
html.is-tab-jumping body {
    opacity: 0;
}

body {
    font-family: var(--font-ja);
    font-weight: 300;
    font-size: 13px;
    line-height: 1.8;
    letter-spacing: 0.04em;
    color: var(--black);
    background: var(--white);
    -webkit-font-smoothing: antialiased;
}

html.is-locked,
body.is-locked {
    overflow: hidden;
    overscroll-behavior: none;
}
body.is-locked {
    position: fixed;
    left: 0;
    right: 0;
    width: 100%;
}

.wrapper {
    position: relative;
    width: 100%;
    /* overflow:hidden だと子孫の sticky / pin 被さりが効かない */
    overflow-x: hidden;
}

img {
    max-width: 100%;
    height: auto;
    vertical-align: bottom;
}

a {
    color: inherit;
    text-decoration: none;
}

button {
    font: inherit;
    color: inherit;
    background: none;
    border: none;
    cursor: pointer;
}

@media screen and (min-width: 901px) {
    .pc_hide { display: none !important; }
}
@media screen and (max-width: 900px) {
    .sp_hide { display: none !important; }
}

/* ========== MV ========== */
.mv-scroll {
    /* sticky MV + その上に被さる lead */
    position: relative;
}

.mv {
    --mv-view: clamp(620px, 100dvh, 900px); /* ファーストビュー分 */
    --mv-fade-h: 120px; /* その下の白ぼかし帯（初画面では見えない） */
    --mv-fade-overlap: 0px; /* ファーストビューに白ぼかしを食い込ませない */
    position: relative;
    z-index: 1;
    height: calc(var(--mv-view) + var(--mv-fade-h));
    overflow: hidden;
    background: #fff; /* 下端クリップの境界線を白で消す */
}

.mv__visual {
    position: absolute;
    inset: 0;
    transform-origin: center top;
}

.mv__panels {
    position: relative;
    z-index: 0;
    display: grid;
    width: 100%;
    height: 100%;
    gap: 0;
    border: 0;
    /* レイヤーの z-index をパネル内に閉じ込め、上シャドウ等が隠れないようにする */
    isolation: isolate;
}

.mv__panels--pc {
    grid-template-columns: repeat(3, 1fr);
}
.mv__panels--sp {
    display: none;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr 1fr;
}

.mv__panel {
    position: relative;
    overflow: hidden;
    background: transparent;
    border: 0;
    outline: 0;
    /* サブピクセルの隙間線を防ぐ */
    margin: 0 -0.5px;
}

.mv__layer {
    position: absolute;
    inset: -1px;
    background-position: top center;
    background-size: cover;
    background-repeat: no-repeat;
    /* 下→上／境目ぼかしのマスクワイプ（animation で確実に再生） */
    -webkit-mask-image: linear-gradient(
        to bottom,
        transparent 0%,
        transparent 28%,
        rgba(0, 0, 0, 0.2) 42%,
        rgba(0, 0, 0, 0.7) 55%,
        #000 68%,
        #000 100%
    );
    mask-image: linear-gradient(
        to bottom,
        transparent 0%,
        transparent 28%,
        rgba(0, 0, 0, 0.2) 42%,
        rgba(0, 0, 0, 0.7) 55%,
        #000 68%,
        #000 100%
    );
    -webkit-mask-size: 100% 280%;
    mask-size: 100% 280%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: 0 0;
    mask-position: 0 0;
    z-index: 0;
    will-change: mask-position, -webkit-mask-position;
}
.mv__layer.is-active {
    -webkit-mask-position: 0 100%;
    mask-position: 0 100%;
    z-index: 1;
}
.mv__layer.is-wiping-in {
    z-index: 2;
    animation: mv-layer-wipe-in 2.8s cubic-bezier(0.33, 0, 0.2, 1) forwards;
}
@keyframes mv-layer-wipe-in {
    from {
        -webkit-mask-position: 0 0;
        mask-position: 0 0;
    }
    to {
        -webkit-mask-position: 0 100%;
        mask-position: 0 100%;
    }
}

/* MV画像の上・白ぼかしの下：リード文字用の乗算グラデ */
.mv__bottom-shade {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    height: 44.33%; /* 478.78 相当 */
    pointer-events: none;
    z-index: 2;
    opacity: 1;
    mix-blend-mode: multiply;
    background: linear-gradient(
        to top,
        #767676 0%,
        rgba(255, 255, 255, 0) 100%
    );
}

.mv__fade {
    /* 画像下端に重ねて開始 → 切れ目の横線を出さない */
    position: absolute;
    left: 0;
    right: 0;
    top: calc(var(--mv-view) - var(--mv-fade-overlap));
    bottom: 0;
    pointer-events: none;
    z-index: 3;
    /* 上はごく薄く、下でしっかり白（参照どおり短く・横線なし） */
    background: linear-gradient(
        to bottom,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.18) 28%,
        rgba(255, 255, 255, 0.48) 52%,
        rgba(255, 255, 255, 0.82) 74%,
        rgba(255, 255, 255, 0.96) 88%,
        #fff 100%
    );
}
.mv__fade::after {
    content: none;
}

.mv__top-shade {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 150px;
    pointer-events: none;
    z-index: 4;
    opacity: 0.5;
    mix-blend-mode: multiply;
    background: linear-gradient(
        to bottom,
        #c4c6c9 0%,
        rgba(255, 255, 255, 0) 100%
    );
}

.mv__ui {
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;
}

.mv__year {
    position: absolute;
    top: 14px;
    right: 28px;
    width: 16%;
    max-width: 113px;
    margin: 0;
    line-height: 0;
}
.mv__year img {
    width: 100%;
    height: auto;
}

.mv__title {
    position: absolute;
    left: 50%;
    /* ファーストビュー内に収める */
    top: calc(var(--mv-view) * 0.8);
    width: 80%;
    max-width: 1025px;
    margin: 0;
    transform: translate3d(-50%, -50%, 0);
    line-height: 0;
    will-change: transform;
}
.mv__title img {
    width: 100%;
    height: auto;
}

/* MV左下：縦 scroll インジケータ（自動ループ） */
.mv__scroll {
    position: absolute;
    left: 30px;
    top: calc(var(--mv-view) - 19vh);
    bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    color: #fff;
    opacity: 1;
    transition: opacity 0.45s var(--ease);
}
.mv__scroll.is-hidden {
    opacity: 0;
}
.mv__scroll-label {
    flex-shrink: 0;
    writing-mode: vertical-rl;
    font-family: var(--font-en);
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.22em;
    line-height: 1;
    text-transform: lowercase;
}
.mv__scroll-bar {
    position: relative;
    flex: 1 1 auto;
    width: 1px;
    min-height: 0;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.28);
}
.mv__scroll-bar::after {
    content: "";
    position: absolute;
    left: 0;
    width: 100%;
    height: 48px;
    background: #fff;
    animation: mv-scroll-loop 1.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@keyframes mv-scroll-loop {
    0% {
        top: -30%;
    opacity: 0;
}
    15% {
    opacity: 1;
    }
    85% {
        opacity: 1;
    }
    100% {
        top: 100%;
        opacity: 0;
    }
}
@media (prefers-reduced-motion: reduce) {
    .mv__scroll-bar::after {
        animation: none;
        top: 36%;
        opacity: 1;
    }
}

/* ========== LEAD ========== */
/* pin された MV の上に被さる（各商品セクションと同じ） */
.lead {
    position: relative;
    z-index: 5;
    text-align: center;
    padding: 120px 7vw 60px;
    margin-top: 0;
    background: #fff;
}
.lead.is-covering-mv {
    z-index: 6;
}
.lead::before {
    content: "";
    position: absolute;
    left: 50%;
    top: -160px;
    width: 100vw;
    height: 160px;
    transform: translateX(-50%);
    /* スクロールで lead が被さるときだけ見える */
    opacity: 0;
    background: linear-gradient(
        to bottom,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.18) 28%,
        rgba(255, 255, 255, 0.48) 52%,
        rgba(255, 255, 255, 0.82) 74%,
        rgba(255, 255, 255, 0.96) 88%,
        #fff 100%
    );
    pointer-events: none;
    transition: opacity 0.35s var(--ease);
}
.lead.is-covering-mv::before {
    opacity: 1;
}
.lead__text {
    position: relative;
    z-index: 1;
    max-width: 38em;
    margin: 0 auto;
    font-size: 13px;
    line-height: 1.8;
    letter-spacing: 0.06em;
    color: #373839;
}

/* ========== TABS（上部固定） ========== */
.tabs {
    position: relative; /* MV通過後に sticky / fixed */
    top: 0;
    z-index: 40;
    width: 100%;
    max-width: none;
    margin: 0;
    background: #fff;
    opacity: 1;
    visibility: visible;
    transition:
        opacity 0.45s var(--ease),
        visibility 0.45s var(--ease),
        background-color 0.35s var(--ease);
}
.tabs.is-ready {
    position: sticky;
}
.tabs.is-fixed {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    max-width: none;
    margin: 0;
}
/* フッター到達時：右ページネーションと同じタイミングで非表示 */
.tabs.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.tabs__inner {
    display: flex;
    width: 90%;
    max-width: 1100px;
    height: var(--tabs-h);
    margin: 0 auto;
    align-items: stretch;
    border-bottom: 2px solid #C6D2D9;
    background: transparent;
    transition: background-color 0.35s var(--ease);
}

.tabs__btn {
    position: relative;
    flex: 1 1 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-en);
    font-weight: 400;
    font-size: 16px;
    letter-spacing: 0.01em;
    color: #C6D2D9;
    transition: color 0.3s var(--ease);
}
.tabs__btn::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -2px;
    height: 2px;
    background: var(--black);
    opacity: 0;
    transition: opacity 0.3s var(--ease);
}
.tabs__btn.is-active {
    color: #373839;
}
.tabs__btn.is-active::after {
    opacity: 1;
}
.tabs__btn:hover {
    color: #373839;
}

.tabs-spacer {
    display: none;
    height: var(--tabs-h);
}
.tabs-spacer.is-on {
    display: block;
}

/* ========== MAIN ========== */
.main {
    position: relative;
    z-index: 2;
    background: var(--white);
}

.tab-panel[hidden] {
    display: none !important;
}

/* ========== PRODUCT ========== */
.product {
    position: relative;
    z-index: 0;
    isolation: isolate;
    display: grid;
    grid-template-columns: minmax(280px, 1fr) minmax(280px, 0.95fr);
    width: 90%;
    max-width: 1100px;
    margin: 0 auto 330px;
    padding: 76px 0 0;
    background: transparent;
}

/* セクション背景（フルブリード・上下ぼかし）。せり上がりで下のギャラリーに被さる */
.product::before {
    content: "";
    position: absolute;
    left: 50%;
    top: -200px;
    bottom: -200px;
    width: 100vw;
    transform: translateX(-50%);
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        rgba(255, 255, 255, 0) 0%,
        #fff 200px,
        #fff calc(100% - 200px),
        rgba(255, 255, 255, 0) 100%
    );
}

/*
 * Even sections: #F7FBFC
 * nth-child ではなく .is-alt（ピンで pin-spacer に包まれても色が崩れない）
 */
.product.is-alt::before {
    background: linear-gradient(
        to bottom,
        rgba(247, 251, 252, 0) 0%,
        #f7fbfc 200px,
        #f7fbfc calc(100% - 200px),
        rgba(247, 251, 252, 0) 100%
    );
}

/* SP: ピン中、他セクションの上下白ぼかしが画面に被るのを防ぐ（本体は残す） */
.product.is-sp-bg-hidden::before {
    content: none !important;
    opacity: 0 !important;
}

/*
 * pinSpacing:false 時の前後関係。
 * ピン中を z-index:1 にすると、後続セクション（inline の方が大きい）が
 * 前面に出てきて「次の次」やスライダーが透ける／表示が崩れる。
 */
.product.is-sp-product-pinned {
    z-index: 20 !important;
}
.product.is-pinned-back {
    z-index: 1 !important;
}
.product.is-covering {
    position: relative;
    z-index: 50 !important;
}
/* SP: pin-spacer ごと前後関係を揃える */
.pin-spacer:has(> .product.is-sp-product-pinned) {
    z-index: 20;
}
.pin-spacer:has(> .product.is-pinned-back) {
    z-index: 1;
}
.pin-spacer:has(> .product.is-covering) {
    position: relative;
    z-index: 50;
}

/* PC: head を contents にして meta / main / gallery を同一グリッドに */
.product__head {
    display: contents;
}

.product__meta {
    grid-column: 1;
    grid-row: 1;
}

.product__main {
    grid-column: 2;
    grid-row: 1;
    align-self: start;
    /* 行高さは meta（BUY）基準。画像ははみ出して配置 */
    height: 0;
    min-height: 0;
    margin: 0;
    overflow: visible;
    line-height: 0;
}
/*
 * PC: メタ列をメイン画像の高さに合わせて両端揃え。
 * カラー〜説明文のあいだが伸び縮みし、説明が少ないほど広く／多いほど詰まる。
 */
@media screen and (min-width: 901px) {
    .product__meta {
        display: flex;
        flex-direction: column;
        align-self: stretch;
    }
    .product__main {
        /* 行高さを画像基準にし、meta 側の余白計算に使う */
        height: auto;
    }
    .product.is-tall-main .product__main {
        height: auto;
    }
    .product__colors {
        margin-bottom: 0;
    }
    .product__text {
        margin-top: auto;
    }
    /* BUY下端 → スタッフギャラリー上端 = 140px */
    .product__meta .buy-btn,
    .buy-btn--section {
        margin-bottom: 140px;
    }
    .gallery-pin {
        margin-top: 0;
    }

    /* WOMEN ③⑤: カンプ合わせで個別指定（auto を上書き） */
    #w-sec03 .product__text {
        margin-top: -43px;
    }
    #w-sec05 .product__text {
        margin-top: -47px;
    }
}

.product__num {
    display: flex;
    align-items: center;
    font-family: var(--font-en);
    font-weight: 700;
    font-size: 16px;
    letter-spacing: 0.08em;
    margin: 0 0 33px;
    color: var(--black);
}
.product__num-paren {
    font-size: 32px;
    line-height: 1;
    font-weight: 200;
    white-space: pre;
}

.product__brand {
    font-family: var(--font-en);
    font-weight: 300;
    font-size: 80px;
    line-height: 0.925;
    letter-spacing: -0.02em;
    margin: 0 0 19px;
}

.product__credit {
    margin: 0 0 5px;
    font-family: var(--font-en);
    font-weight: 400;
    font-size: 14px;
    line-height: 1.7;
    letter-spacing: 0.04em;
    color: #373839;
}
.product__credit-name,
.product__credit-price {
    display: block;
}

.product__colors {
    display: flex;
    gap: 5px;
    margin: 0 0 77px;
    padding: 0;
    list-style: none;
}
.product__color {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: 1px solid rgba(0, 0, 0, 0.08);
}
/* 縦半分の2トーン（グラデの滲み回避） --color-left / --color-right で指定 */
.product__color--split {
    position: relative;
    overflow: hidden;
    border: none;
    background: var(--color-right);
}
.product__color--split::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: 50%;
    height: 100%;
    background: var(--color-left);
}

.product__text {
    margin: 0;
    max-width: 29em;
    font-size: 14px;
    line-height: 1.57;
    letter-spacing: 0.025em;
    color: #373839;
}

.product__main img {
    width: 300px;
    max-width: 100%;
    height: auto;
    filter: drop-shadow(0 28px 40px rgba(0, 0, 0, 0.18));
}

/* PC: メイン画像幅をセクションごとに出し分け */
@media screen and (min-width: 901px) {
    #w-sec01 .product__main img {
        width: 300px;
        margin-left: 80px;
    }
    #w-sec02 .product__main img {
        width: 340px;
        margin-left: 90px;
    }
    #w-sec03 .product__main img {
        width: 300px;
        margin-left: 120px;
    }
    #w-sec04 .product__main img {
        width: 340px;
        margin-left: 90px;
    }
    #w-sec05 .product__main img {
        width: 320px;
        margin-left: 106px;
    }

    #m-sec01 .product__main img {
        width: 300px;
        margin-left: 90px;
    }
    #m-sec02 .product__main img {
        width: 320px;
        margin-left: 100px;
    }
    #m-sec03 .product__main img {
        width: 340px;
        margin-left: 130px;
    }
    #m-sec04 .product__main img {
        width: 340px;
        margin-left: 100px;
    }
    #m-sec05 .product__main img {
        width: 320px;
        margin-left: 73px;
    }
}

/* ========== BUY ========== */
.buy-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 28px;
    min-width: 200px;
    height: 44px;
    margin: 0;
    padding: 0 28px;
    border: 1px solid var(--black);
    background: var(--white);
    color: var(--black);
    font-family: var(--font-en);
    font-weight: 400;
    font-size: 16px;
    letter-spacing: 0.01em;
    transition: background 0.35s var(--ease), color 0.35s var(--ease), border-color 0.35s var(--ease);
}
.product__meta .buy-btn,
.buy-btn--section {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 270px;
    height: 60px;
    margin-top: 24px;
    border-radius: 999px;
    border-color: #bbb;
    gap: 0;
    padding: 0 28px 0 0;
}
/* 偶数セクション：BUY背景をセクション背景(#F7FBFC)に合わせる */
.product.is-alt .buy-btn--section,
.product.is-alt .product__meta .buy-btn {
    background: #f7fbfc;
}
.buy-btn--section .buy-btn__arrow {
    position: absolute;
    right: 28px;
    top: 50%;
    width: 21.52px;
    transform: translateY(-50%);
}
.buy-btn__arrow {
    position: relative;
    display: block;
    width: 36px;
    height: 1px;
    background: currentColor;
    transition: transform 0.35s var(--ease);
}
/* 横線＋先端の斜め1本（上側のみ） */
.buy-btn__arrow::after {
    content: "";
    position: absolute;
    right: 0;
    top: 0;
    width: 6px;
    height: 1px;
    background: currentColor;
    transform-origin: right center;
    transform: rotate(40deg);
}
/* ホバーは全BUY一律：黒背景・白文字 */
.buy-btn.is-disabled,
.buy-btn--section.is-disabled,
.modal__buy.is-disabled {
    pointer-events: none;
    cursor: default;
    opacity: 0.45;
}
/* 未発売：COMING SOON（枠・文字 #C6D2D9） */
.buy-btn--section.is-coming-soon,
.modal__buy.is-coming-soon {
    color: #c6d2d9;
    border-color: #c6d2d9;
    padding: 0;
    pointer-events: none;
    cursor: default;
    opacity: 1;
    font-size: 14px;
}
.modal__buy.is-coming-soon {
    width: 150px;
    min-width: 150px;
    padding: 0;
    gap: 0;
}
.buy-btn--section.is-coming-soon .buy-btn__arrow,
.modal__buy.is-coming-soon .buy-btn__arrow {
    display: none;
}
.buy-btn:hover,
.product__meta .buy-btn:hover,
.buy-btn--section:hover,
.product.is-alt .buy-btn--section:hover,
.product.is-alt .product__meta .buy-btn:hover,
.buy-btn--pill:hover,
.modal__buy:hover {
    background: var(--black);
    background-color: var(--black);
    color: var(--white);
    border-color: var(--black);
}
.buy-btn--section.is-coming-soon:hover,
.product.is-alt .buy-btn--section.is-coming-soon:hover,
.modal__buy.is-coming-soon:hover,
.modal__buy.buy-btn--pill.is-coming-soon:hover {
    background: var(--white);
    background-color: var(--white);
    color: #c6d2d9;
    border-color: #c6d2d9;
}
.product.is-alt .buy-btn--section.is-coming-soon:hover {
    background: #f7fbfc;
    background-color: #f7fbfc;
}
.buy-btn:hover .buy-btn__arrow,
.buy-btn--section:hover .buy-btn__arrow {
    transform: translateX(6px);
}
.buy-btn--section:hover .buy-btn__arrow {
    transform: translateY(-50%) translateX(6px);
}

.buy-btn--pill {
    width: 100%;
    width: 150px;
    min-width: 0;
    max-width: 100%;
    height: 40px;
    margin: 16px 0 20px;
    border-radius: 999px;
    gap: 40px;
    background-color: #F7FBFC;
    border: 1px solid #C6D2D9;
}
.buy-btn--pill .buy-btn__arrow {
    width: 21.52px;
}

/* ========== GALLERY ========== */
.gallery-pin {
    grid-column: 1 / -1;
    grid-row: 2;
    position: relative;
    width: 100%;
    /* PC の BUY→スタッフ 140px は buy-btn の margin-bottom で確保 */
    margin: 0 auto;
    max-width: 1280px;
}

/* ピン固定中：ギャラリーより上をセクション背景色で覆う（上ギャラリーの覗き込み防止） */
.gallery-pin.is-gallery-pinned::before {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 100%;
    z-index: 2;
    width: 100vw;
    height: 100vh;
    transform: translateX(-50%);
    background: #fff;
    pointer-events: none;
}
.product.is-alt .gallery-pin.is-gallery-pinned::before {
    background: #f7fbfc;
}
.gallery-pin.is-gallery-pinned .gallery {
    position: relative;
    z-index: 3;
}

/* GSAP pin-spacer も同じグリッド枠に乗せる */
.product > .pin-spacer {
    grid-column: 1 / -1;
    grid-row: 2;
    width: 100%;
    max-width: 1280px;
    margin-left: auto;
    margin-right: auto;
}

.gallery {
    position: relative;
    z-index: 1;
    width: 100%;
    /* PC: ピン止め中の下余白（50px） */
    padding-bottom: 50px;
    will-change: filter, transform, opacity;
}

.gallery__track {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}

.gallery__item {
    position: relative;
    display: block;
        width: 100%;
    padding: 0;
    overflow: hidden;
    background: #eee;
    text-align: left;
}

.gallery__img-wrap {
        display: block;
    overflow: hidden;
    line-height: 0;
}
.gallery__img-wrap img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 720 / 1066;
    object-fit: cover;
    transition: transform 0.7s var(--ease);
}

.gallery__hover {
    position: absolute;
    inset: 0;
    opacity: 1;
    pointer-events: none;
}

.gallery__staff {
    position: absolute;
    top: 16px;
    left: 14px;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    color: var(--black);
    line-height: 1.45;
    opacity: 0;
    transition: opacity 0.4s var(--ease);
}
.gallery__staff-name {
    font-family: var(--font-en);
    font-size: 16px;
    font-weight: 300;
    letter-spacing: 0.03em;
}
.gallery__staff-store {
    font-family: var(--font-ja);
    font-size: 8px;
    font-weight: 300;
    letter-spacing: 0.1em;
    margin-inline-start: 17px;
}

.gallery__plus {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 41px;
    height: 41px;
    background: transparent;
    color: var(--black);
    transition: background 0.35s var(--ease);
}
.gallery__plus::before,
.gallery__plus::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    background: currentColor;
    transform: translate(-50%, -50%);
}
.gallery__plus::before {
    width: 19.17px;
    height: 1px;
}
.gallery__plus::after {
    width: 1px;
    height: 19.17px;
}

.gallery__item:hover .gallery__img-wrap img,
.gallery__item:focus-visible .gallery__img-wrap img {
    transform: scale(1.06);
}
.gallery__item:hover .gallery__staff,
.gallery__item:focus-visible .gallery__staff {
    opacity: 1;
}
.gallery__item:hover .gallery__plus,
.gallery__item:focus-visible .gallery__plus {
    background: #fff;
}

.gallery__dots {
    display: none;
}

/* ========== FOOTER ========== */
.footer {
    position: relative;
    /* せり上がり中の .is-covering（〜50+）より前面に */
    z-index: 80;
    height: 768px;
        display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    color: var(--white);
}

.footer__bg {
    position: absolute;
    inset: 0;
}
.footer__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
}
.footer__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}

.footer__inner {
    position: relative;
    z-index: 1;
    width: 100%;
    padding: 158px 24px 48px;
    text-align: center;
}

.footer__btns {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
}

.footer__btn {
    display: grid;
    grid-template-columns: 5.6em 1fr auto;
    align-items: center;
    column-gap: 12px;
    width: min(420px, 86vw);
   height: 90px;
   padding: 0 40px 0 38px;
    border: 1px solid var(--white);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.95);
    color: var(--black);
    transition: opacity 0.3s var(--ease);
}
.footer__btn:hover {
    opacity: 0.55;
}
.footer__btn-text {
    display: contents;
}
.footer__btn-gender {
    font-family: var(--font-en);
    font-size: 18px;
    font-weight: 500;
    letter-spacing: 0.01em;
    text-align: left;
}
.footer__btn-sub {
    font-family: var(--font-ja);
    font-size: 14px;
    font-weight: 300;
    letter-spacing: 0;
    justify-self: start;
}
.footer__btn-arrow {
    position: relative;
    width: 32.28px;
    height: 1px;
    background: currentColor;
    justify-self: end;
}
.footer__btn-arrow::after {
    content: "";
    position: absolute;
    right: 0;
    top: 0;
    width: 10px;
    height: 1px;
    background: currentColor;
    transform-origin: right center;
    transform: rotate(40deg);
}

.footer__sns {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 30px;
    margin: 58px 0 0;
    padding: 0;
    list-style: none;
}
.footer__sns a {
    display: block;
    line-height: 0;
    transition: opacity 0.3s var(--ease);
}
.footer__sns a:hover {
    opacity: 0.45;
}

.footer__copy {
    margin: 7px 0 0;
    text-align: center;
    font-family: var(--font-en);
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 0.04em;
    color: var(--white);
}

/* ========== PAGER ========== */
.pager {
    position: fixed;
    top: 50px;
    right: 28px;
    z-index: 35;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.45s var(--ease), visibility 0.45s var(--ease);
}
.pager.is-shown {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.pager__dots {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 15px;
    align-items: flex-end;
    padding-left: 12px;
}

.pager__dot {
    position: relative;
    width: 8px;
    height: 8px;
    background: #c8ccd0;
    border: none;
    box-sizing: border-box;
    transition: background 0.3s var(--ease);
}
.pager__dot.is-active {
    background: #373839;
}

/* ========== MODAL ========== */
.modal {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}
.modal[hidden] {
    display: none !important;
}

.modal__overlay {
    position: absolute;
    inset: 0;
    background: rgba(129, 129, 129, 0.9); /* #818181 @ 90% */
    cursor: pointer;
}

.modal__dialog {
    position: relative;
    z-index: 1;
    width: min(1100px, 86vw);
    max-height: 568px;
    background: var(--white);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
}

.modal__close {
    position: absolute;
    top: 0;
    right: 0;
    left: auto;
    z-index: 3;
    width: 32px;
    height: 32px;
    background: #fff;
}
.modal__close span {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 18px;
    height: 18px;
    transform: translate(-50%, -50%);
}
.modal__close span::before,
.modal__close span::after {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    width: 100%;
    height: 1px;
    background: var(--black);
    transform-origin: center;
}
.modal__close span::before {
    transform: translateY(-50%) rotate(45deg);
}
.modal__close span::after {
    transform: translateY(-50%) rotate(-45deg);
}
.modal__close:hover span::before,
.modal__close:hover span::after {
    background: var(--black);
}

.modal__nav {
    position: absolute;
    top: 50%;
    z-index: 5;
    width: 48px;
    height: 48px;
    transform: translateY(-50%);
}
.modal__nav::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 14px;
    height: 14px;
    border-top: 1.5px solid rgba(255, 255, 255, 0.9);
    border-right: 1.5px solid rgba(255, 255, 255, 0.9);
}
/* PC: ダイアログ左右外側 */
.modal__nav--prev {
    left: calc(50% - min(550px, 43vw) - 56px);
}
.modal__nav--prev::before {
    transform: translate(-35%, -50%) rotate(-135deg);
}
.modal__nav--next {
    right: calc(50% - min(550px, 43vw) - 56px);
}
.modal__nav--next::before {
    transform: translate(-65%, -50%) rotate(45deg);
}
.modal__nav:hover::before {
    border-color: #fff;
}
@media screen and (min-width: 901px) and (max-width: 1100px) {
    .modal__nav--prev { left: 16px; }
    .modal__nav--next { right: 16px; }
}

.modal__body {
    display: flex;
    min-height: 568px;
    max-height: min(88vh, 760px);
}

.modal__media {
    position: relative;
    background: #eee;
    overflow: hidden;
    max-width: 428px;
    width: 40%;
}
.modal__slides {
    position: relative;
    width: 100%;
    height: 100%;
}
.modal__slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 0.45s ease;
}
.modal__slide.is-active {
    opacity: 1;
}
.modal__slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.modal__dots {
    position: absolute;
    left: 50%;
    bottom: 16px;
    display: flex;
    gap: 8px;
    transform: translateX(-50%);
}
.modal__dot {
    width: 8px;
    height: 8px;
    background: #fff;
    border: none;
    padding: 0;
}
.modal__dot.is-active {
    background: var(--black);
}

.modal__info {
    display: flex;
    width: 62%;
    flex-direction: column;
    justify-content: center;
    padding: 0 92.5px 0 59.5px;
    overflow: auto;
    background-color: #F7FBFC;
}

.modal__brand {
    font-family: var(--font-en);
    font-weight: 300;
    font-size: 56px;
    letter-spacing: -0.02em;
    line-height: 1.1;
    margin: 0;
}

.modal__name {
    margin: 0;
    font-family: var(--font-en);
    font-size: 14px;
    letter-spacing: 0.04em;
    color: var(--black);
    padding-left: 5px;
    font-weight: 500;
}

.modal__coords {
    margin: 0 0 49px;
    padding: 0;
    list-style: none;
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.04em;
    line-height: 2;
    font-weight: 500;
}
.modal__coords li {
    display: flex;
    align-items: center;
    gap: 10.5px;
    color: var(--black);
}
.modal__coords li::before {
    content: "";
    flex-shrink: 0;
    width: 4px;
    height: 4px;
    border-top: 1px solid currentColor;
    border-right: 1px solid currentColor;
    transform: rotate(45deg);
}
.modal__coords li a {
    color: inherit;
    text-decoration: none;
}
.modal__coords li a:hover {
    opacity: 0.55;
}

.modal__staff {
    border-top: 1px solid #E7ECEF;
    padding-top: 50px;
}
.modal__staff-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 17px 14px;
    margin: 0 0 14px;
    font-family: var(--font-en);
    font-size: 12px;
    letter-spacing: 0.06em;
    font-weight: 500;
}
.modal__staff-name {
    font-size: 20px;
    letter-spacing: 0.03em;
    font-weight: 300;
    line-height: 1;
}
.modal__staff-store {
    font-family: var(--font-ja);
    font-size: 13px;
    line-height: 1;
}
.modal__ig.is-hidden,
.modal__ig[hidden] {
    display: none !important;
}
.modal__ig {
    position: relative;
    display: inline-flex;
    width: 18px;
    height: 15.386px;
    line-height: 0;
    opacity: 0.85;
    transition: opacity 0.3s;
}
.modal__ig img {
    width: 100%;
    height: 100%;
    opacity: 0;
}
.modal__ig::after {
    content: "";
    position: absolute;
    inset: 0;
    background-color: var(--black);
    -webkit-mask: url("../img01/instagram.svg") center / contain no-repeat;
    mask: url("../img01/instagram.svg") center / contain no-repeat;
}
.modal__ig:hover {
    opacity: 0.4;
}
.modal__comment {
    margin: 0;
    font-size: 14px;
    letter-spacing: 0.025em;
    line-height: 1.9;
}

/* ========== SP ========== */
@media screen and (max-width: 900px) {
    :root {
        --tabs-h: 34px;
    }

    .mv__year {
        top: 9px;
        right: 10px;
        width: 64px;
    }

    .mv {
        /*
         * ファーストビュー分は画面高以上に確保し、白ぼかし帯が初画面に出ないようにする
         * （固定 734px だと縦長端末でぼかしが初画面に入る）
         */
        --mv-view: max(100dvh, 100svh, 734px);
        --mv-fade-h: 72px;
        --mv-fade-overlap: 0px;
    }

    .mv__panels--pc {
        display: none;
    }
    .mv__panels--sp {
        display: grid;
        grid-template-columns: 1fr 1fr;
        /* 画面高に依らず 2×2 を常に等分（Android Chrome 対策で min 0） */
        grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
        height: var(--mv-view);
        align-content: stretch;
    }
    .mv__panels--sp .mv__panel {
        min-width: 0;
        min-height: 0;
        height: auto;
    }
    .mv__bottom-shade {
        height: 28%;
        opacity: 0.55;
    }

    .mv__title {
        width: min(90vw, 324px);
        /* 等分行の境界付近 */
        top: calc(var(--mv-view) * 0.5);
    }

    /* scroll：左・白グラデ手前まで下寄せ */
    .mv__scroll {
        left: 14px;
        top: calc(var(--mv-view) * 0.68);
        bottom: auto;
        height: 160px;
        gap: 8px;
    }
    .mv__scroll-label {
        font-size: 10px;
    }
    .mv__scroll-bar::after {
        height: 36px;
    }

    .lead {
        margin-top: 0;
        padding: 56px 6vw 56px;
    }
    .lead::before {
        top: -120px;
        height: 120px;
    }
    .lead__title {
        font-size: 22px;
        margin-bottom: 16px;
    }
    .lead__text {
        font-size: 12px;
        line-height: 1.95;
    }
    .tabs {
        width: 100%;
    }

    .tabs__inner {
        width: 90%;
        max-width: none;
    }
    .tabs__btn {
        font-size: 16px;
    }

    .product {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        width: 100%;
        max-width: none;
        margin-left: 0;
        margin-right: 0;
        padding: 34px 8.5vw 0;
        overflow: visible;
        margin-bottom: 170px;
    }
    /* 最終セクションとフッターの間隔 */
    .tab-panel .product:last-child {
        margin-bottom: 80px;
    }

    .product::before {
        top: -80px;
        bottom: -80px;
        background: linear-gradient(
            to bottom,
            rgba(255, 255, 255, 0) 0%,
            #fff 80px,
            #fff calc(100% - 80px),
            rgba(255, 255, 255, 0) 100%
        );
    }

    .product.is-alt::before {
        background: linear-gradient(
            to bottom,
            rgba(247, 251, 252, 0) 0%,
            #f7fbfc 80px,
            #f7fbfc calc(100% - 80px),
            rgba(247, 251, 252, 0) 100%
        );
    }

    .product__head,
    .product__meta {
        display: contents;
    }

    .product__num {
        order: 1;
        margin-bottom: 25px;
    }
    .product__brand {
        order: 2;
        font-size: 50px;
        text-align: left;
        margin-bottom: 12px;
    }
    .product__credit {
        order: 3;
        margin-left: 0;
        margin-right: 0;
        text-align: left;
    }
    .product__colors {
        order: 4;
        justify-content: flex-start;
        margin: 0;
    }
    .product__main {
        order: 5;
        align-self: stretch;
        width: 100%;
        height: auto;
        min-height: 0;
        overflow: visible;
        margin: 0 0 28px;
        text-align: center;
    }
    .product__main img {
        display: block;
        width: 260px;
        max-width: 100%;
        margin-left: auto;
        margin-right: auto;
    }
    .product__text {
        order: 6;
        margin: 0;
        max-width: none;
        text-align: left;
    }
    .product__meta .buy-btn,
    .buy-btn--section {
        order: 7;
        width: 90%;
        max-width: 260px;
        margin: 19px auto 0;
        height: 56px;
    }
    .buy-btn__label {
        padding-left: 10px;
    }
    .gallery-pin {
        order: 8;
        grid-column: auto;
        grid-row: auto;
        width: calc(100% + 8.5vw);
        max-width: none;
        margin: 60px -8.5vw 0 0;
    }
    /* SP: ピン中の全面白帯が「真っ白」に見えるため無効化 */
    .gallery-pin.is-gallery-pinned::before {
        content: none;
        display: none;
    }
    /* ピン/transform 変更時にブラウザがスクロール位置を補正して飛ぶのを防ぐ */
    .product {
        overflow-anchor: none;
    }
    /* SP: セクション全体ピン中も背景が抜けないように（PCと同じ交互色） */
    .product.is-sp-product-pinned {
        background: #fff;
    }
    .product.is-alt.is-sp-product-pinned {
        background: #f7fbfc;
    }
    /*
     * SPピン中: 自セクション ::before の上下ぼかしを止め、ソリッドで覆う。
     */
    .product.is-sp-product-pinned::before {
        top: -100vh;
        bottom: -100vh;
        background: #fff;
    }
    .product.is-alt.is-sp-product-pinned::before {
        top: -100vh;
        bottom: -100vh;
        background: #f7fbfc;
    }
    /* JSクラス漏れ時の保険 */
    .tab-panel:has(.product.is-sp-product-pinned)
        .product:not(.is-sp-product-pinned):not(.is-covering)::before {
        content: none !important;
    }

    .gallery {
        width: 100%;
        padding-bottom: 100px;
        /* hidden だとピン中の横スクロールが落ちることがある */
        overflow: visible;
    }

    .gallery__track {
        display: flex;
        gap: 6px;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        padding: 0 0 4px;
        scrollbar-width: none;
        /* 横スワイプとページ縦スクロールの両方を許可 */
        touch-action: pan-x pan-y;
        position: relative;
        z-index: 2;
    }
    .gallery__track::-webkit-scrollbar {
        display: none;
    }
    .gallery__item {
        flex: 0 0 73%;
        scroll-snap-align: start;
    }

    .gallery__dots {
    display: flex;
        gap: 5px;
        margin-top: 6px;
    }
    .gallery__dot {
        width: 6px;
        height: 6px;
        background: #C6D2D9;
        padding: 0;
        border: none;
    }
    .gallery__dot.is-active {
        background: var(--black);
    }

    /* SP: 白い四角付き＋を常時表示（四角31px・＋12.77px） */
    .gallery__plus {
        right: 0;
        bottom: 0;
        width: 31px;
        height: 31px;
        background: rgba(255, 255, 255, 0.92);
    }
    .gallery__plus::before {
        width: 12.77px;
        height: 1px;
    }
    .gallery__plus::after {
        width: 1px;
        height: 12.77px;
    }
    /* SP: スタッフ情報は常時表示 */
    .gallery__staff {
    display: block;
        opacity: 1;
        left: 6px;
    }
    .gallery__staff-name {
        font-size: 14px;
    }
    .gallery__staff-store {
        font-size: 10px;
    }
    @media (hover: none) {
        .gallery__item .gallery__img-wrap img {
            transform: none;
        }
    }

    .pager {
        display: none !important;
    }

    .footer {
        /* footer_bg_sp.jpg (750×900) と同じ比率。左右は切れない */
        height: auto;
        min-height: 0;
        aspect-ratio: 750 / 900;
        width: 100%;
    }
    .footer__bg img {
        width: 100%;
        height: 100%;
        object-fit: contain;
        object-position: center center;
    }
    .footer__inner {
        padding: 88px 24px 40px;
    }
    .footer__btns{
        gap: 15px;
    }
    .footer__btn {
        height: 80px;
        width: 100%;
        max-width: 312px;
        grid-template-columns: 5em 1fr auto;
        column-gap: 10px;
        padding: 0 22px;
    }
    .footer__btn-gender {
        font-size: 16px;
    }
    .footer__btn-sub {
        font-size: 13px;
    }
    .footer__copy {
        font-size: 10px;
    }
    .footer__sns {
        gap: 38px;
        margin: 40px 0 0;
    }
    .footer__sns li:nth-child(1) img {
        width: 16px;
        height: auto;
    }
    .footer__sns li:nth-child(2) img {
        width: 17px;
        height: auto;
    }
    .footer__sns li:nth-child(3) img {
        width: 16px;
        height: auto;
    }

    /* SP modal：画像上＋情報下の縦積み・画面の約92%、下にナビ用余白 */
    .modal {
        padding: 4vw 4vw 52px;
        align-items: center;
        justify-content: center;
        overflow: hidden;
        box-sizing: border-box;
    }
    .modal__dialog {
        display: block;
        width: 100%;
        max-width: 500px;
        max-height: calc(100dvh - 52px - 8vw);
        min-height: 0;
        margin: 0;
        box-shadow: none;
        overflow-x: hidden;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
        /* 写真の横スワイプと本文の縦スクロールの両方を許可 */
        touch-action: pan-x pan-y;
    }
    /* SP: モーダル右上端にぴったり＋スクロール追従 */
    .modal__close {
        position: sticky;
        top: 0;
        right: 0;
        left: auto;
        display: block;
        width: 32px;
        height: 32px;
        margin: 0 0 -32px auto;
        background: #fff;
        z-index: 5;
    }
    .modal__body {
        display: flex;
        flex-direction: column;
        min-height: 0;
        max-height: none;
    }
    .modal__media {
        width: 100%;
        max-width: none;
        aspect-ratio: 3 / 4;
        flex-shrink: 0;
        touch-action: pan-x pan-y;
        user-select: none;
        -webkit-user-select: none;
    }
    .modal__info {
        width: 100%;
        padding: 28px 28px 40px;
        justify-content: flex-start;
        overflow: visible;
    }
    .modal__brand {
        font-size: 32px;
        margin-bottom: 10px;
    }
    .modal__name {
        display: flex;
        flex-direction: column;
        gap: 4px;
        padding-left: 0;
        font-size: 12px;
        line-height: 1.5;
    }
    .modal__buy.buy-btn--pill {
        position: relative;
        width: 98%;
        max-width: 260px;
        height: 48px;
        margin: 20px auto 24px;
        gap: 0;
        padding: 0 48px 0 0;
    }
    .modal__buy.buy-btn--pill .buy-btn__arrow {
        position: absolute;
        right: 24px;
        top: 50%;
        transform: translateY(-50%);
    }
    .modal__coords {
        display: inline-flex;
        flex-direction: column;
        align-items: flex-start;
        margin: 0 0 28px;
        text-align: left;
        font-size: 10px;
    }
    .modal__staff {
        border-top: 1px solid #E7ECEF;
        padding-top: 28px;
        text-align: left;
    }
    .modal__staff-meta {
        justify-content: flex-start;
        gap: 12px 14px;
        margin: 0 0 16px;
    }
    .modal__staff-name {
        font-size: 18px;
    }
    .modal__staff-store {
        font-size: 12px;
    }
    .modal__comment {
        font-size: 12px;
        line-height: 1.9;
        text-align: left;
    }
    /* 前後ナビ：モーダルカード外・右下のオーバーレイ上 */
    .modal__nav {
        position: absolute;
        top: auto;
        bottom: 14px;
        z-index: 6;
        width: 40px;
        height: 40px;
        transform: none;
    }
    .modal__nav--prev {
        left: auto;
        right: calc(4vw + 36px);
    }
    .modal__nav--next {
        right: 4vw;
    }
    .modal__nav::before {
        width: 28px;
        height: 28px;
        border-top-width: 1.5px;
        border-right-width: 1.5px;
        border-color: #fff;
    }
}

@media (prefers-reduced-motion: reduce) {
    .mv,
    .mv__layer,
    .gallery__img-wrap img,
    .buy-btn,
    .buy-btn__arrow,
    .pager,
    .modal__slide {
        transition: none !important;
    }
    .mv__layer.is-wiping-in {
        animation: none !important;
        -webkit-mask-position: 0 100% !important;
        mask-position: 0 100% !important;
    }
}
