/**
 * Front Page — Carousel (数字の奥にいる、一人ひとりの姿)
 *
 * Zoom 公式サイト風 3:4 縦長カードの横スクロール一覧。
 *
 * 設計方針:
 * - object-fit: cover は .jj-carousel スコープ内のみで使用。
 *   .jj-hero / .jj-strong / .jj-promise には影響させない (スコープを限定する)。
 * - 横スクロール + scroll-snap-type: x mandatory。ライブラリ不使用。
 * - PC で 3〜4 枚 + 両端チラ見せ、SP で 1 枚 + 次カードがチラ見え。
 * - スクロールバーは非表示。ドットはサイズ可変の button。
 * - reduced-motion 配慮 (transition 抑制は本 CSS 側で行う / 自動再生 OFF は JS 側)。
 *
 * @package JobJepang
 */

/* ============================================================
   Section frame
   ============================================================ */

.jj-carousel {
    padding: 64px 0;
    background: var(--jj-bg-white, #fff);
}

.jj-carousel__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 16px;
}

.jj-carousel__header {
    max-width: 720px;
    margin: 0 auto 32px;
    text-align: center;
}

.jj-carousel__heading {
    font-size: 28px;
    font-weight: 700;
    line-height: 1.4;
    color: var(--jj-text-primary, #1f2937);
    margin: 0 0 16px;
}

.jj-carousel__lead {
    font-size: 16px;
    line-height: 1.9;
    color: var(--jj-text-secondary, #374151);
    margin: 0;
}

/* ============================================================
   Viewport (横スクロール領域)
   ============================================================ */

.jj-carousel__viewport {
    position: relative;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    /* スクロールバー非表示 */
    scrollbar-width: none;
    /* 両端チラ見せ用の左右パディング (PC) */
    padding: 12px calc((100% - 1040px) / 2);
    /* tabindex でフォーカスされた時のアウトラインを内側に */
    outline-offset: -4px;
}

.jj-carousel__viewport::-webkit-scrollbar {
    display: none;
}

.jj-carousel__viewport:focus-visible {
    outline: var(--jj-focus-outline);
    outline-offset: -4px;
}

/* ============================================================
   Track (ul) + Card (li)
   ============================================================ */

.jj-carousel__track {
    display: flex;
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.jj-carousel__card {
    flex: 0 0 240px;
    width: 240px;
    height: 320px;
    border-radius: 20px;
    overflow: hidden;
    scroll-snap-align: center;
    background: var(--jj-gray-50, #f5f7fa);
    /* v1.2.5: 手書き値をトークン参照に統一 (DS v1.2.5 整合) */
    box-shadow: var(--jj-shadow-sm);
    transition: transform var(--jj-transition-normal),
                box-shadow var(--jj-transition-normal);
}

.jj-carousel__card:hover {
    transform: scale(1.02);
    box-shadow: var(--jj-shadow-md);
}

/* object-fit: cover は .jj-carousel スコープ内のみで使用。
   他コンポーネント (.jj-hero / .jj-strong / .jj-promise) には影響しない。 */
.jj-carousel .jj-carousel__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* ============================================================
   Dots
   ============================================================ */

.jj-carousel__dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-top: 24px;
}

.jj-carousel__dots button {
    appearance: none;
    -webkit-appearance: none;
    width: 8px;
    height: 8px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--jj-gray-300, #cbd2dd);
    cursor: pointer;
    /* v1.2.5: 手書き値をトークン参照に統一 */
    transition: background-color var(--jj-transition-normal),
                transform var(--jj-transition-normal),
                width var(--jj-transition-normal),
                height var(--jj-transition-normal);
}

.jj-carousel__dots button:hover {
    background: var(--jj-gray-500, #6b7280);
}

.jj-carousel__dots button:focus-visible {
    outline: var(--jj-focus-outline);
    outline-offset: var(--jj-focus-outline-offset);
}

.jj-carousel__dots button[aria-current="true"] {
    width: 12px;
    height: 12px;
    background: var(--jj-primary, #0072b1);
}

/* ============================================================
   Tablet (768〜1023px): 2〜3 枚 + チラ見せ
   ============================================================ */

@media (max-width: 1023px) {
    .jj-carousel__viewport {
        padding: 12px 48px;
    }
}

/* ============================================================
   SP (〜767px): 1 枚 + 次カードが少し見える
   ============================================================ */

@media (max-width: 767px) {
    .jj-carousel {
        padding: 48px 0;
    }

    .jj-carousel__heading {
        font-size: 22px;
    }

    .jj-carousel__lead {
        font-size: 15px;
    }

    .jj-carousel__viewport {
        /* viewport 幅 - カード 220px = 余白 → 半分ずつ左右に配分。
           次カードがチラ見えするように 36px 程度残す。 */
        padding: 12px 36px;
    }

    .jj-carousel__track {
        gap: 16px;
    }

    .jj-carousel__card {
        flex: 0 0 220px;
        width: 220px;
        height: 293px;
        border-radius: 16px;
    }
}

/* ============================================================
   Reduced motion
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
    .jj-carousel__viewport {
        scroll-behavior: auto;
    }
    .jj-carousel__card,
    .jj-carousel__dots button {
        transition: none;
    }
    .jj-carousel__card:hover {
        transform: none;
    }
}
