@charset 'utf-8';

/* =============================================================
   Foundation
============================================================= */
:root {
    /* color */
    --color-base: #0e120e;
    --color-white: #fff;
    --color-black: #222;
    --color-gold: #c3b8a3;
    --color-gold-dark: #95876d;
    --color-gold-light: #e9decb;
    --color-green: #233627;

    /* font */
    --font-sans: "Noto Sans JP", "Noto Sans CJK JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
    --font-serif: "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif;
    --font-serif-en: "Noto Serif", "Noto Serif JP", serif;
    --font-en: "Inter", "Noto Sans JP", sans-serif;

    /* 縮小時に小さくなりすぎないための文字サイズ下限 */
    --font-size-min: 10px;
}

/* レイアウトの考え方（0701と同じ「サイズ固定 + ブロック幅のみ可変」）
   1rem = デザイン上の10px として全サイズを rem で指定
   ・390px以上は 1rem = 10px 固定。文字・余白・商品画像・ボタン等は画面幅が変わっても等倍のまま
   ・ブロックの幅だけ画面幅に追従（デザイン上の幅を上限に、左右2remの余白を残して縮む）
   ・1440px以上はコンテンツを中央寄せし、背景のみ画面幅いっぱいに広げる
   ・MV（p-fv）だけは常に画面幅に合わせて拡大縮小
   ・390px未満のみ、はみ出し防止のためデザイン幅390pxを基準に比例縮小
   ・PC / SP レイアウトの切り替えは 768px
--------------------------------------------------------------- */
html {
    font-size: min(calc(100vw / 39), 10px);
    -webkit-text-size-adjust: 100%;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

body {
    overflow-x: clip;
    background-color: var(--color-base);
    color: var(--color-white);
    font-family: var(--font-sans);
    font-size: 1.6rem;
    font-weight: 400;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

img,
picture,
iframe {
    display: block;
}

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

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

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

/* =============================================================
   Layout
============================================================= */
/* l-footer
--------------------------------------------------------------- */
.l-footer {
    padding: 3.3rem 0 7.4rem;
    background: linear-gradient(to bottom, #212e24, var(--color-base));
    text-align: center;
}

.l-footer__logo {
    width: 42.7rem;
    margin-inline: auto;
}

.l-footer__copy {
    margin-top: 2.4rem;
    font-size: max(1.5rem, var(--font-size-min));
    line-height: 1;
}

@media screen and (max-width: 767px) {
    .l-footer {
        padding: 3.8rem 0 5.2rem;
        background: #131b14;
    }

    .l-footer__logo {
        width: 35.1rem;
        max-width: calc(100% - 3.9rem);
    }

    .l-footer__copy {
        margin-top: 2.2rem;
        font-size: max(1.2rem, var(--font-size-min));
    }
}

/* =============================================================
   Component
============================================================= */
/* c-product（商品シリーズ セクション共通）
--------------------------------------------------------------- */
.c-product {
    /* 商品画像の高さ。商品ごとにHTML側（.c-product__item-img の style）で指定する
       値 = XD上の画像の高さ ÷ 10（4倍書き出し画像なら 高さpx ÷ 40） */
    --item-img-height: 24rem;
    --item-img-margin-top: 2.6rem;
    --item-shop-gap: 2.2rem;
    --inner-padding-bottom: 11.1rem;
    --inner-padding-bottom-sp: 3.6rem;
    position: relative;
    z-index: 0;
    overflow: hidden;
    text-align: center;
}

.c-product__bg {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.c-product__bg img {
    height: 100%;
    object-fit: cover;
}

.c-product__inner {
    position: relative;
    width: 144rem;
    max-width: 100%;
    margin-inline: auto;
    padding: 12rem 0 var(--inner-padding-bottom);
}

.c-product__brand {
    position: absolute;
    top: 0;
    left: max(2rem, calc(50% - 60.9rem));
    width: 17.5rem;
}

/* シリーズ画像と重なる幅では、SPデザインと同じ小さいサイズにして重なりを避ける */
@media screen and (max-width: 1119px) {
    .c-product__brand {
        width: 11.1rem;
    }
}

.c-product__visual {
    width: min(72rem, calc(100% - 4rem));
    margin-inline: auto;
}

.c-product__title {
    margin-top: 5.4rem;
    color: var(--color-gold);
    font-family: var(--font-en);
    font-size: 6rem;
    font-weight: 500;
    line-height: 1;
}

.c-product__lead {
    margin-top: 1.2rem;
    padding-inline: 2rem;
    font-size: max(1.6rem, var(--font-size-min));
    font-weight: 500;
    line-height: 1.75;
}

.c-product__slider {
    position: relative;
    margin-top: 3.6rem;
}

.c-product__arrows {
    display: none;
}

/* Splide が出力する要素（splide-core.css を読み込まない代わりに必要な分だけ定義）
   .splide__sr : スライド移動のたびに一瞬挿入される読み上げ用の「…」。画面には表示しない */
.splide__sr {
    position: absolute;
    overflow: hidden;
    clip: rect(0 0 0 0);
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
}

/* ドラッグ中にテキストが選択されないようにする */
.splide__track--draggable {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
}

/* PC: 3カラム（1列は最大33.6rem。狭い画面では3列均等に縮む）。
   subgridでカード間の各行の高さを揃える */
.c-product__track {
    width: min(100.8rem, calc(100% - 4rem));
    margin-inline: auto;
}

.c-product__list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.c-product__item {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 7;
    justify-items: center;
}

.c-product__item-badge {
    display: grid;
    grid-row: 1;
    place-items: center;
    align-self: end;
    width: 8.4rem;
    height: 3.2rem;
    margin-bottom: 0.4rem;
    background-color: var(--color-gold-light);
    color: #004e25;
    font-size: max(1.4rem, var(--font-size-min));
    font-weight: 700;
    line-height: 1;
}

/* 同じ行の中で高さの違う商品画像は上下中央で揃える */
.c-product__item-img {
    grid-row: 2;
    align-self: center;
    margin-top: var(--item-img-margin-top);
}

.c-product__item-img img {
    width: auto;
    height: var(--item-img-height);
}

.c-product__item-shop {
    grid-row: 3;
    margin-top: var(--item-shop-gap);
    font-size: max(1.3rem, var(--font-size-min));
    font-weight: 500;
    line-height: 1.5385;
}

.c-product__item-name {
    grid-row: 4;
    margin-top: 1.9rem;
    color: var(--color-gold);
    font-family: var(--font-en);
    font-size: 3rem;
    font-weight: 600;
    line-height: 1;
}

.c-product__item-spec {
    grid-row: 5;
    margin-top: 1.6rem;
    font-size: max(1.1rem, var(--font-size-min));
    font-weight: 500;
    line-height: 1.6364;
}

.c-product__item-price {
    grid-row: 6;
    margin-top: 1.2rem;
    font-size: max(1.2rem, var(--font-size-min));
    font-weight: 500;
    line-height: 1;
}

.c-product__item-price-num {
    margin-right: 0.4rem;
    font-family: var(--font-serif-en);
    font-size: 2.4rem;
    font-weight: 400;
    line-height: 3.5rem;
}

.c-product__item-btn {
    position: relative;
    display: grid;
    grid-row: 7;
    place-items: center;
    width: 20.8rem;
    height: 5.6rem;
    margin-top: 1.1rem;
    border: 1px solid var(--color-gold-light);
    color: var(--color-gold-dark);
    font-size: max(1.4rem, var(--font-size-min));
    font-weight: 700;
    line-height: 1;
    transition: opacity 0.3s ease;
}

.c-product__item-btn::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 1.5rem;
    width: 0.725rem;
    height: 1.3rem;
    background: url(../img/arrow_gold.png) no-repeat center / contain;
    transform: translateY(-50%);
}

.c-product__item-btn[href]:focus-visible {
    opacity: 0.7;
}

@media (any-hover: hover) {
    .c-product__item-btn[href]:hover {
        opacity: 0.7;
    }
}

@media screen and (max-width: 767px) {
    .c-product__inner {
        padding: 11.4rem 0 var(--inner-padding-bottom-sp);
    }

    .c-product__brand {
        left: 2.1rem;
        width: 11.1rem;
    }

    .c-product__visual {
        width: calc(100% - 4rem);
    }

    .c-product__title {
        margin-top: 4.3rem;
        font-size: 5rem;
    }

    .c-product__lead {
        width: calc(100% - 4rem);
        margin: 2.3rem auto 0;
        padding-inline: 0;
        font-size: max(1.4rem, var(--font-size-min));
        line-height: 1.8571;
        text-align: left;
    }

    .c-product__slider {
        margin-top: 3.2rem;
    }

    /* SP: カルーセル（Splide）。必要最低限のスタイルのみここで定義 */
    .c-product__list {
        display: flex;
    }

    .c-product__item {
        position: relative;
        display: flex;
        flex-direction: column;
        flex-shrink: 0;
        align-items: center;
        width: 100%;
        padding: 2.4rem 1rem 3.2rem;
        background: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), #000);
    }

    /* 各スライドは画面幅いっぱい（左右に隣のカードや隙間を見せない） */
    .c-product__track {
        overflow: hidden;
        width: auto;
    }

    .c-product__arrows {
        display: block;
    }

    .c-product__arrow {
        position: absolute;
        top: 50%;
        z-index: 1;
        width: 2.75rem;
        height: 4.7rem;
        filter: drop-shadow(0 0 0.5rem rgba(0, 0, 0, 0.16));
        transform: translateY(-50%);
    }

    /* タップ領域を拡張 */
    .c-product__arrow::before {
        content: "";
        position: absolute;
        inset: -1rem -1.5rem;
    }

    .c-product__arrow--prev {
        left: 2rem;
    }

    .c-product__arrow--next {
        right: 2rem;
    }

    .c-product__arrow svg {
        display: block;
        width: 100%;
        height: 100%;
        fill: var(--color-white);
    }

    .c-product__item-badge {
        position: absolute;
        top: 0;
        left: 2.1rem;
        margin-bottom: 0;
    }

    .c-product__item-img {
        display: flex;
        align-items: center;
        align-self: center;
        justify-content: center;
        height: 24rem;
        margin-top: 0;
    }

    .c-product__item-shop {
        min-height: 4rem;
        margin-top: 2.2rem;
    }

    .c-product__item-name {
        margin-top: 0.8rem;
        font-weight: 500;
    }

    /* 取扱店表記がない商品も型番の位置を揃える */
    .c-product__item-img + .c-product__item-name {
        margin-top: 7rem;
    }

    .c-product__item-spec {
        margin-top: 1rem;
        font-weight: 400;
    }

    .c-product__item-price {
        margin-top: 0.9rem;
    }

    .c-product__item-btn {
        margin-top: 1.25rem;
        color: var(--color-gold);
        font-weight: 500;
    }
}

/* =============================================================
   Project
============================================================= */
/* p-fv
--------------------------------------------------------------- */
/* MVのみ1440px以上でも画面幅いっぱいに拡大（remに依存させない）。
   超ワイド画面で縦に伸びすぎないよう高さは1440pxまで */
.p-fv__img img {
    aspect-ratio: 1440 / 810;
    max-height: 1440px;
    object-fit: cover;
}

@media screen and (max-width: 767px) {
    .p-fv__img img {
        aspect-ratio: 390 / 500;
        max-height: none;
    }
}

/* p-fair
--------------------------------------------------------------- */
.p-fair {
    position: relative;
    z-index: 0;
    overflow: hidden;
    padding: 7.3rem 0 5.7rem;
    text-align: center;
}

.p-fair__bg {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.p-fair__bg img {
    height: 100%;
    object-fit: cover;
}

.p-fair__heading-en {
    color: var(--color-gold);
    font-family: var(--font-en);
    font-size: 3.2rem;
    font-weight: 300;
    line-height: 1;
}

.p-fair__heading-ja {
    margin-top: 0.5rem;
    font-family: var(--font-serif);
    font-size: 4.2rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0.02em;
}

.p-fair__box {
    width: 131.4rem;
    max-width: calc(100% - 4rem);
    margin: 2.2rem auto 0;
    padding: 5.7rem 2rem 5.2rem;
    border-radius: 4rem;
    background-color: var(--color-white);
    color: var(--color-black);
}

.p-fair__box-head {
    display: flex;
    align-items: flex-end;
    /* 幅が足りない画面（約885px未満）でだけ、間隔 → キャッチの文字サイズの順に詰めて1行に収める */
    column-gap: clamp(1.5rem, calc(100vw - 83rem), 5.5rem);
    width: 82.7rem;
    max-width: 100%;
    margin-inline: auto;
    border-bottom: 0.2rem solid var(--color-gold-dark);
}

/* line-height: 0.728 = Interのキャップハイト。文字のベースラインを下線に乗せる */
.p-fair__box-label {
    margin-left: -1.5rem;
    color: var(--color-gold-dark);
    font-family: var(--font-en);
    font-size: 12.5rem;
    font-weight: 100;
    line-height: 0.728;
}

.p-fair__box-catch {
    padding-bottom: 2.3rem;
    font-family: var(--font-serif);
    font-size: clamp(2.1rem, calc((100vw - 34rem) / 20.7), 2.5rem);
    line-height: 1.6;
    letter-spacing: 0.03em;
    white-space: nowrap;
}

.p-fair__box-text {
    margin-top: 2.8rem;
    font-size: 2rem;
    line-height: 1.75;
}

.p-fair__period {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: center;
    gap: 1rem 2.7rem;
    margin-top: 2.4rem;
}

.p-fair__period-label {
    display: grid;
    place-items: center;
    width: 11.6rem;
    height: 3.6rem;
    margin-bottom: 1.1rem;
    background-color: var(--color-green);
    color: var(--color-white);
    font-size: max(1.8rem, var(--font-size-min));
    line-height: 1;
    letter-spacing: 0.02em;
}

.p-fair__period-date {
    color: var(--color-green);
    font-size: 3.4rem;
    line-height: 1;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.p-fair__period-num {
    margin-inline: 0.4rem;
    font-family: var(--font-en);
    font-size: 6.5rem;
    letter-spacing: 0;
}

.p-fair__period-num:first-child {
    margin-left: 0;
}

.p-fair__movie {
    width: 112.6rem;
    max-width: calc(100% - 4rem);
    margin: 12.9rem auto 0;
}

.p-fair__movie iframe {
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
}

.p-fair__lineup {
    margin-top: 17.2rem;
    color: var(--color-gold);
    font-family: var(--font-en);
    font-size: 6rem;
    font-weight: 500;
    line-height: 1;
}

@media screen and (max-width: 767px) {
    .p-fair {
        padding: 4.4rem 0 3.3rem;
    }

    .p-fair__heading-en {
        font-size: 2.4rem;
    }

    .p-fair__heading-ja {
        margin-top: 1.2rem;
        font-size: 3.1rem;
    }

    .p-fair__box {
        width: calc(100% - 4rem);
        max-width: none;
        margin-top: 3.4rem;
        padding: 2.7rem 2rem 2rem;
        border-radius: 2rem;
        background-color: rgba(255, 255, 255, 0.9);
        box-shadow: 0 0.3rem 0.3rem rgba(65, 89, 145, 0.3);
    }

    .p-fair__box-head {
        display: block;
        width: auto;
        border-bottom: 0;
        text-align: left;
    }

    .p-fair__box-label {
        margin-left: 0;
        padding-left: 0.6rem;
        border-bottom: 0.2rem solid var(--color-gold-dark);
        font-size: 6.3rem;
    }

    .p-fair__box-catch {
        margin-top: 1.3rem;
        padding-bottom: 0;
        font-size: 1.5rem;
        line-height: 1.2667;
    }

    .p-fair__box-text {
        margin-top: 1.6rem;
        font-size: 1.5rem;
        line-height: 1.6;
        text-align: left;
    }

    .p-fair__period {
        display: block;
        margin-top: 1.1rem;
    }

    .p-fair__period-label {
        width: 100%;
        height: 3.1rem;
        margin-bottom: 0;
        font-size: 1.5rem;
    }

    .p-fair__period-date {
        margin-top: 0.7rem;
        font-size: 1.9rem;
        text-align: center;
    }

    .p-fair__period-num {
        margin-inline: 0.15rem;
        font-size: 3.7rem;
    }

    .p-fair__movie {
        width: calc(100% - 4rem);
        max-width: none;
        margin-top: 5.2rem;
    }

    .p-fair__lineup {
        margin-top: 3.5rem;
        font-size: 4.4rem;
    }
}

/* p-diver1965 / p-diver1968 / p-speedtimer / p-alpinist
   （c-product と併用。シリーズごとの差分のみ）
--------------------------------------------------------------- */
.p-diver1965 {
    --item-img-margin-top: 2.3rem;
    --item-shop-gap: 1.6rem;
}

.p-diver1968 {
    --item-img-margin-top: 0.2rem;
    --item-shop-gap: 2.4rem;
}

.p-speedtimer {
    --item-img-margin-top: 2rem;
    --item-shop-gap: 3.2rem;
    --inner-padding-bottom: 11.6rem;
    --inner-padding-bottom-sp: 4rem;
}

.p-alpinist {
    --item-img-margin-top: 1.7rem;
    --item-shop-gap: 2.8rem;
    --inner-padding-bottom: 11.6rem;
    --inner-padding-bottom-sp: 4rem;
}

/* p-shop
--------------------------------------------------------------- */
.p-shop {
    padding: 5.8rem 0 6.4rem;
    background-color: var(--color-white);
    color: #333;
}

.p-shop__heading {
    text-align: center;
}

.p-shop__heading-en {
    color: var(--color-green);
    font-family: var(--font-en);
    font-size: 2.4rem;
    font-weight: 300;
    line-height: 1;
}

.p-shop__heading-ja {
    margin-top: 1rem;
    color: #292929;
    font-size: 3.6rem;
    font-weight: 700;
    line-height: 1.4;
}

.p-shop__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 4.5rem 4.1rem;
    width: min(100.1rem, calc(100% - 4rem));
    margin: 4.2rem auto 0;
}

.p-shop__item-img img {
    aspect-ratio: 480 / 320;
    object-fit: cover;
}

.p-shop__item-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
    margin-top: 1.5rem;
}

.p-shop__item-tag {
    display: grid;
    place-items: center;
    min-height: 4.4rem;
    padding: 0.5rem 1.4rem;
    border-radius: 0.7rem;
    background-color: var(--color-gold-dark);
    color: var(--color-white);
    font-size: max(1.5rem, var(--font-size-min));
    font-weight: 500;
    line-height: 1.2;
    text-shadow: 0 0.3rem 0.3rem rgba(0, 0, 0, 0.16);
}

.p-shop__item-name {
    margin-top: 1.3rem;
    font-size: 2.4rem;
    font-weight: 700;
    line-height: 1.5;
}

.p-shop__item-address {
    margin-top: 0.6rem;
    font-size: max(1.6rem, var(--font-size-min));
    line-height: 1.5;
}

.p-shop__item-btn {
    display: grid;
    place-items: center;
    width: 18.4rem;
    height: 4.4rem;
    margin-top: 1.2rem;
    border: 1px solid #ccc;
    border-radius: 1rem;
    background: linear-gradient(to bottom, #fff, #fbfbfb);
    color: #555;
    font-size: max(1.5rem, var(--font-size-min));
    font-weight: 500;
    line-height: 1;
    transition: opacity 0.3s ease;
}

.p-shop__item-btn:focus-visible {
    opacity: 0.7;
}

@media (any-hover: hover) {
    .p-shop__item-btn:hover {
        opacity: 0.7;
    }
}

@media screen and (max-width: 767px) {
    .p-shop {
        padding: 5.2rem 0 4.7rem;
    }

    .p-shop__heading-ja {
        margin-top: 1.3rem;
        color: #333;
        font-size: 2rem;
    }

    .p-shop__list {
        display: block;
        width: calc(100% - 4rem);
        margin: 2.7rem auto 0;
    }

    .p-shop__item + .p-shop__item {
        margin-top: 4rem;
    }

    .p-shop__item-img img {
        aspect-ratio: 350 / 233;
    }

    .p-shop__item-tags {
        flex-direction: column;
        gap: 0.6rem;
    }

    .p-shop__item-name {
        margin-top: 1.5rem;
        font-size: 2.2rem;
    }

    .p-shop__item-address {
        min-height: 7.2rem;
        margin-top: 0.8rem;
        padding-right: 2rem;
        font-size: max(1.5rem, var(--font-size-min));
        line-height: 1.6;
    }

    .p-shop__item-btn {
        margin-top: 0.9rem;
    }
}

/* =============================================================
   Utility
============================================================= */
@media screen and (max-width: 767px) {
    .u-hidden-sp {
        display: none;
    }
}

@media screen and (min-width: 768px) {
    .u-hidden-pc {
        display: none;
    }
}
