/* ========================================
   リセット & ベース設定
   ======================================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    font-size: 17px;
    line-height: 1.7;
}

body {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    color: #333;
    background-color: #FFFFFF;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
    font-family: 'Montserrat', sans-serif;
    font-weight: 700;
    color: #222;
}

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

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

/* ========================================
   コンテナ
   ======================================== */
.container {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 15px;
}

/* ========================================
   ヘッダー
   ======================================== */
:root {
    --site-header-height: 75px;
    --site-agent-bar-height: 36px;
    /* ページタイトルをヘッダー直下へ寄せる共通余白 */
    --page-section-padding-top: 40px;
    --page-section-padding-bottom: 80px;
    --page-title-margin-bottom: 40px;
}

#header-container {
    min-height: var(--site-header-height);
}

body.is-agent-logged-in #header-container {
    min-height: calc(var(--site-header-height) + var(--site-agent-bar-height));
}

.header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 1000;
    background-color: #FFFFFF;
    padding: 12px 0;
    border-bottom: 1px solid #e0e0e0;
}

.header__inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 40px;
}

.header__logo {
    flex-shrink: 0;
    margin: 0;
    line-height: 1;
}

.header__logo a {
    display: block;
    line-height: 0;
}

.header__logo-img {
    width: 140px;
    height: auto;
    max-height: 50px;
    display: block;
}

.header__nav {
    flex: 1;
    display: flex;
    justify-content: flex-end;
}

.header__nav-list {
    display: flex;
    list-style: none;
    gap: 30px;
    align-items: center;
    margin: 12px 0 0;
    padding: 0;
}

.header__nav-list a {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    color: #333;
    white-space: nowrap;
}

/* PCのみ：ホバーで上方向にくるっと入れ替わる（英語→日本語） */
@media (hover: hover) {
    .header__nav-list .header__nav-item {
        display: inline-block;
        vertical-align: top;
    }

    .header__nav-list .header__nav-item:hover {
        opacity: 1;
    }

    .header__nav-list .header__nav-item-inner {
        display: block;
        position: relative;
        line-height: 1.5;
        min-height: 1.5em;
        /* 上下のみクリップ、左右にはみ出しは表示 */
        clip-path: inset(0 -100vw 0 -100vw);
    }

    .header__nav-list .header__nav-text {
        display: block;
        transform-origin: top center;
        transition: transform 0.5s ease;
    }

    .header__nav-list .header__nav-text--en {
        font-family: 'Montserrat', sans-serif;
        transform: translateY(0) rotateX(0deg);
    }

    .header__nav-list .header__nav-item:hover .header__nav-text--en {
        transform: translateY(-100%) rotateX(-18deg);
    }

    /* 1つ目「daBRANCHの想い」は表記の都合で日本語フォント */
    .header__nav-list li:first-child .header__nav-text--en {
        font-family: 'Zen Kaku Gothic New', sans-serif;
    }

    .header__nav-list .header__nav-text--ja {
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        font-family: 'Zen Kaku Gothic New', sans-serif;
        font-size: 14px;
        white-space: nowrap;
        transform: translateY(100%) rotateX(18deg);
    }

    .header__nav-list .header__nav-item:hover .header__nav-text--ja {
        transform: translateY(0) rotateX(0deg);
    }
}

/* ホバー非対応（タッチ端末等）では従来の見た目を維持 */
.header__nav-list a:not(.header__nav-item):hover {
    opacity: 0.7;
    transition: opacity 0.3s ease;
}

.header__nav-item--japanese {
    font-family: 'Zen Kaku Gothic New', sans-serif !important;
}

.header__actions {
    display: flex;
    align-items: center;
    gap: 24px;
    flex-shrink: 0;
    margin-top: 4px;
}

.header__contact-btn {
    padding: 5px 8px;
    background-color: #751C47;
    color: #FFFFFF;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-weight: 500;
    font-size: 16px;
    border-radius: 0;
    white-space: nowrap;
    transition: background-color 0.3s ease;
}

.header__contact-btn:hover {
    background-color: #5E1840;
    opacity: 1;
}

.header__icons {
    display: flex;
    align-items: center;
    gap: 12px;
    overflow: visible;
}

.header__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background-color: transparent;
    transition: opacity 0.3s ease;
    overflow: hidden;
    padding: 0;
}

.header__icon:hover {
    opacity: 0.7;
}

.header__icon-img {
    width: auto;
    height: 32px;
    object-fit: contain;
    display: block;
}

.header__icon--cart {
    position: relative;
    overflow: visible;
    width: 36px;
    height: 36px;
    margin-right: 8px;
    flex-shrink: 0;
}

.header__icon--cart .header__icon-img {
    height: 100%;
    width: 100%;
    object-fit: contain;
}

.header__cart-badge {
    position: absolute;
    top: -8px;
    right: -14px;
    min-width: 26px;
    height: 26px;
    padding: 0 7px;
    border-radius: 999px;
    background-color: #751C47;
    color: #FFFFFF;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 700;
    line-height: 22px;
    text-align: center;
    letter-spacing: 0;
    box-sizing: border-box;
    pointer-events: none;
    border: 2px solid #FFFFFF;
    z-index: 2;
    box-shadow: 0 2px 6px rgba(117, 28, 71, 0.4);
}

.header__cart-badge[hidden] {
    display: none;
}

/* SP用アクション（カートとハンバーガー） */
.header__sp-actions {
    display: none;
    align-items: center;
    gap: 16px;
    flex-shrink: 0;
}

/* ハンバーガーメニューボタン（SP時のみ表示） */
.header__hamburger {
    display: none;
    flex-direction: column;
    justify-content: space-around;
    width: 30px;
    height: 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0;
    z-index: 1000;
    position: relative;
}

.header__hamburger-line {
    width: 100%;
    height: 2px;
    background-color: #333;
    transition: all 0.3s ease;
    transform-origin: center;
    position: absolute;
    left: 0;
}

.header__hamburger-line:nth-child(1) {
    top: 6px;
}

.header__hamburger-line:nth-child(2) {
    top: 50%;
    transform: translateY(-50%);
}

.header__hamburger-line:nth-child(3) {
    bottom: 6px;
}

.header__hamburger[aria-expanded="true"] .header__hamburger-line:nth-child(1) {
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
}

.header__hamburger[aria-expanded="true"] .header__hamburger-line:nth-child(2) {
    opacity: 0;
    transform: translateY(-50%) scale(0);
}

.header__hamburger[aria-expanded="true"] .header__hamburger-line:nth-child(3) {
    bottom: auto;
    top: 50%;
    transform: translateY(-50%) rotate(-45deg);
}

/* モバイルメニュー（SP時のみ表示・floating-btnより前面） */
.header__mobile-menu {
    display: none;
    position: fixed;
    top: 0;
    right: -100%;
    width: 80%;
    max-width: 320px;
    height: 100vh;
    background-color: #FFFFFF;
    box-shadow: -2px 0 10px rgba(0, 0, 0, 0.1);
    transition: right 0.3s ease;
    z-index: 1101;
    overflow-y: auto;
    visibility: hidden;
}

.header__mobile-menu.header__mobile-menu--open {
    visibility: visible;
}

.header__mobile-menu--open {
    right: 0 !important;
}

.header__mobile-menu-inner {
    padding: 80px 30px 30px;
    display: flex;
    flex-direction: column;
    gap: 40px;
}

.header__mobile-icons {
    display: flex;
    gap: 16px;
    justify-content: center;
}

.header__mobile-nav-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.header__mobile-nav-list a {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    color: #333;
    display: block;
    padding: 10px 0;
    border-bottom: 1px solid #e0e0e0;
    transition: opacity 0.3s ease;
}

.header__mobile-nav-list a:hover {
    opacity: 0.7;
}

.header__mobile-contact {
    text-align: center;
}

.header__mobile-contact .header__contact-btn {
    width: 100%;
    margin: 0;
}

/* モバイルメニューオーバーレイ */
.header__mobile-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1100;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

.header__mobile-overlay--active {
    opacity: 1;
    pointer-events: auto;
}

.header__mobile-overlay--active {
    opacity: 1;
}

/* ========================================
   メインコンテンツ（セクション）
   ======================================== */
main {
    min-height: 60vh;
}

.recommend,
.category,
.brand {
    padding: 60px 0;
}

/* ========================================
   ボタン（共通）
   ======================================== */
.btn {
    display: inline-block;
    text-align: center;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: all 0.3s ease;
    font-family: 'Zen Kaku Gothic New', sans-serif;
}

.btn--detail {
    width: 220px;
    height: 50px;
    background-color: #751C47;
    color: #FFFFFF;
    font-size: 17px;
    font-weight: 500;
    line-height: 50px;
    display: block;
    margin: 0 auto;
}

.btn--detail:hover {
    background-color: #5E1840;
    opacity: 1;
}

/* ========================================
   daBRANCHについて セクション
   ======================================== */
.about-us {
    position: relative;
    padding: 100px 0;
    overflow: hidden;
}

.about-us__content {
    position: relative;
    max-width: 1000px;
    margin: 0 auto;
    text-align: center;
}

.about-us__catchphrase {
    font-family: 'Montserrat', sans-serif;
    font-size: 48px;
    font-weight: 400;
    color: #751C47;
    margin: 0 0 16px;
    line-height: 1.2;
    white-space: nowrap;
}

.about-us__title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 24px;
    font-weight: 500;
    color: #222;
    margin-bottom: 30px;
    line-height: 1.5;
}

.about-us__quote {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 500;
    color: #222;
    margin-bottom: 40px;
    line-height: 1.8;
}

.about-us__button-wrapper {
    text-align: center;
}

/* ========================================
   Hero セクション
   ======================================== */
.hero {
    position: relative;
    min-height: 700px;
    overflow: hidden;
    opacity: 0;
    transition: opacity 2.2s ease;
}

.hero.hero--ready {
    opacity: 1;
}

.hero__slider {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

.hero__slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    opacity: 0;
    transition: opacity 1.8s ease-in-out;
}

.hero:not(.hero--ready) .hero__slide--active {
    opacity: 0;
}

.hero__slide--active {
    opacity: 1;
}

.hero__overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.2);
    z-index: 2;
    opacity: 0;
    transition: opacity 2.2s ease;
}

.hero.hero--ready .hero__overlay {
    opacity: 1;
}

.hero__content {
    position: relative;
    z-index: 3;
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    gap: 48px;
    align-items: center;
    justify-items: start;
    min-height: 700px;
    padding-top: 80px;
    padding-bottom: 80px;
    opacity: 0;
    transform: translateY(14px);
    transition: opacity 2s ease 0.25s, transform 2s ease 0.25s;
}

.hero.hero--ready .hero__content {
    opacity: 1;
    transform: translateY(0);
}

.hero__indicators {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 12px;
    z-index: 10;
    pointer-events: auto;
    opacity: 0;
    transition: opacity 2s ease 0.45s;
}

.hero.hero--ready .hero__indicators {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .hero {
        opacity: 1;
        transition: none;
    }

    .hero__slide {
        transition: none;
    }

    .hero:not(.hero--ready) .hero__slide--active,
    .hero__slide--active {
        opacity: 1;
    }

    .hero__overlay,
    .hero.hero--ready .hero__overlay {
        opacity: 1;
        transition: none;
    }

    .hero__content,
    .hero.hero--ready .hero__content,
    .hero__indicators,
    .hero.hero--ready .hero__indicators {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

.hero__text-left {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
    align-self: center;
}

.hero__title-row {
    display: flex;
    align-items: flex-end;
    gap: 40px;
}

.hero__title-main {
    font-family: 'Comfortaa', sans-serif;
    font-size: 170px;
    font-weight: 300;
    font-synthesis: none;
    font-variant-ligatures: none;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: geometricPrecision;
    color: #FFFFFF;
    line-height: 0.9;
    margin: 0;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
    white-space: nowrap;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.hero__title-main--branch {
    font-size: 170px;
    font-weight: 300;
}

.hero__slogan {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 30px;
    font-weight: 500;
    color: #FFFFFF;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
    margin: 0;
    padding-bottom: 10px;
    line-height: 1.6;
    white-space: nowrap;
}

.hero__frame-img {
    width: 100%;
    height: auto;
    display: block;
    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));
}

.hero__right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: 0;
    align-self: center;
}

.hero__right-img {
    width: auto;
    height: 442px;
    display: block;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
    object-fit: contain;
}

.hero__brand-icon {
    position: relative;
    width: 60px;
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.hero__brand-line {
    position: absolute;
    width: 4px;
    height: 100%;
    background-color: #FFFFFF;
    z-index: 1;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

.hero__brand-circle {
    position: absolute;
    width: 40px;
    height: 40px;
    border: 4px solid #FFFFFF;
    border-radius: 50%;
    background-color: transparent;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

.hero__brand-circle--top {
    top: 0;
    left: 50%;
    transform: translateX(-50%);
}

.hero__brand-circle--bottom {
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
}

.hero__indicators {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 12px;
    z-index: 10;
    pointer-events: auto;
}

.hero__indicator {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 2px solid #FFFFFF;
    background-color: transparent;
    cursor: pointer;
    transition: all 0.3s ease;
    display: inline-block;
    pointer-events: auto;
    position: relative;
    z-index: 11;
}

.hero__indicator:hover {
    background-color: rgba(255, 255, 255, 0.5);
}

.hero__indicator--active {
    background-color: #FFFFFF;
}

/* ========================================
   セクションタイトル（共通）
   ======================================== */
.section-title-large {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    margin: 0;
    line-height: 1.2;
    text-align: left;
}

.section-subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    margin: 0;
    line-height: 1.5;
    text-align: left;
}

/* ========================================
   ラインナップ・ギャラリー ブロック（共通背景）
   ======================================== */
.lineup-gallery-block {
    background-image: url('../img/lineup-gallery-block.jpg');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    padding: 60px 0;
}

/* ========================================
   ラインナップ セクション
   ======================================== */
.lineup-gallery-block .lineup {
    position: relative;
    overflow: hidden;
    background-color: #FFFFFF;
    max-width: 1180px;
    margin: 0 auto 40px;
    padding-left: 20px;
    box-sizing: border-box;
}

.lineup-gallery-block .lineup:last-of-type {
    margin-bottom: 0;
}

.lineup__inner {
    position: relative;
    min-height: 600px;
    padding: 100px 0;
}

.lineup__inner .container {
    position: relative;
    z-index: 2;
}

.lineup__content {
    max-width: 600px;
    position: relative;
    z-index: 3;
    text-align: left;
    padding-right: 0px;
}

.lineup__description {
    margin-top: 40px;
    margin-bottom: 50px;
}

.lineup__description-item {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    line-height: 1.8;
    margin: 0 0 15px;
    text-align: left;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 0.25em;
    row-gap: 0.1em;
}

.lineup__description-item:last-child {
    margin-bottom: 0;
}

.lineup__description-label {
    flex: 0 0 auto;
    white-space: nowrap;
}

.lineup__description-label::after {
    content: '：';
}

.lineup__description-text {
    flex: 1 1 12em;
    min-width: 0;
    word-break: keep-all;
    overflow-wrap: anywhere;
}

.lineup__button-wrapper {
    text-align: left;
}

.lineup__button-wrapper .btn--detail {
    margin-left: 0;
    margin-right: auto;
}

.lineup__right {
    position: absolute;
    top: 0;
    right: 0;
    width: 50%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    z-index: 1;
}

.lineup__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ========================================
   ギャラリー セクション
   ======================================== */
.lineup-gallery-block .gallery {
    position: relative;
    overflow: hidden;
    background-color: #FFFFFF;
    max-width: 1180px;
    margin: 0 auto;
    padding-right: 20px;
    box-sizing: border-box;
}

.gallery__inner {
    position: relative;
    min-height: 600px;
    padding: 100px 0;
}

.gallery__inner .container {
    position: relative;
    z-index: 2;
}

.gallery__left {
    position: absolute;
    top: 0;
    left: 0;
    width: 50%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    z-index: 1;
}

.gallery__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.gallery__content {
    max-width: 540px;
    margin-left: auto;
    position: relative;
    z-index: 3;
    text-align: left;
    padding-left: 0px;
}

.gallery__description {
    margin-top: 40px;
    margin-bottom: 50px;
}

.gallery__description p {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 400;
    color: #222;
    line-height: 1.7;
    text-align: left;
}

.gallery__button-wrapper {
    text-align: left;
}

.gallery__button-wrapper .btn--detail {
    margin-left: 0;
    margin-right: auto;
}

/* ========================================
   ニュース セクション
   ======================================== */
.news {
    padding: 100px 0;
    background-color: #FFFFFF;
}

.news__header {
    text-align: center;
    margin-bottom: 60px;
}

.news__header .section-title-large {
    color: #222;
    margin-bottom: 10px;
    text-align: center;
}

.news__header .section-subtitle {
    color: #222;
    text-align: center;
}

.news__list {
    display: flex;
    flex-direction: column;
    gap: 0;
    margin: 0 auto 60px;
    max-width: 900px;
    border-top: 1px solid #e5e5e5;
}

.news-card {
    width: 100%;
    background: transparent;
    border: none;
    border-bottom: 1px solid #e5e5e5;
    border-radius: 0;
    overflow: visible;
    padding: 0;
    box-sizing: border-box;
}

.news-card::before,
.news-card::after {
    display: none !important;
}

.news-card:hover {
    transform: none;
    box-shadow: none;
}

.news-card__row {
    display: grid;
    grid-template-columns: 110px 140px 1fr auto;
    align-items: center;
    gap: 16px 20px;
    padding: 20px 8px;
    text-decoration: none;
    color: inherit;
    transition: background-color 0.2s ease;
}

.news-card__row:hover {
    background-color: #faf7f8;
}

.news-card__image,
.news-card__img,
.news-card__excerpt,
.news-card__meta {
    display: none !important;
}

.news-card__date {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #666;
    white-space: nowrap;
}

.news-card__category {
    display: inline-block;
    padding: 4px 10px;
    background-color: #f0ecee;
    border-radius: 2px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    font-weight: 500;
    color: #751C47;
    text-align: center;
    white-space: nowrap;
    justify-self: start;
}

.news-card__title {
    font-family: 'Zen Kaku Gothic New', 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    margin: 0;
    line-height: 1.5;
    min-width: 0;
}

.news-card__link {
    display: inline-block;
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #751C47;
    margin: 0;
    text-decoration: none;
    transition: transform 0.2s ease;
}

.news-card__row:hover .news-card__link {
    transform: translateX(3px);
}

.news__button-wrapper {
    text-align: center;
}

.news__button-wrapper .btn--detail {
    margin: 0 auto;
}

/* ========================================
   News ページ（お知らせ・タブでカテゴリ絞り込み）
   ======================================== */
.news-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.news-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.news-section__header .news-section__title {
    margin-bottom: 10px;
}

.news-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.news-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.news-section__tabs {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0 24px;
    margin-bottom: 56px;
    padding: 0 15px;
    border-bottom: 1px solid #e0e0e0;
}

.news-section__tab {
    padding: 12px 4px 14px;
    font-family: 'Montserrat', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #666;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.news-section__tab:hover {
    color: #5E1840;
}

.news-section__tab.is-active {
    color: #751C47;
    border-bottom-color: #751C47;
}

.news-section__list {
    display: flex;
    flex-direction: column;
    gap: 0;
    max-width: 900px;
    margin: 0 auto;
    border-top: 1px solid #e5e5e5;
}

.news-section__list.is-loading,
.news__list.is-loading {
    display: block;
    border-top: none;
}

.news-section__loading,
.news__loading,
.news-section__empty {
    text-align: center;
    padding: 48px 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #888;
    margin: 0;
}

.news-section__item {
    min-width: 0;
    border-bottom: 1px solid #e5e5e5;
}

.news-section__item.is-hidden {
    display: none;
}

.news-section__row {
    display: grid;
    grid-template-columns: 110px 140px 1fr auto;
    align-items: center;
    gap: 16px 20px;
    padding: 22px 8px;
    text-decoration: none;
    color: inherit;
    transition: background-color 0.2s ease;
}

.news-section__row:hover {
    background-color: #faf7f8;
}

.news-section__card,
.news-section__card::before,
.news-section__card::after,
.news-section__image,
.news-section__img,
.news-section__excerpt,
.news-section__meta {
    display: none !important;
}

.news-section__date {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #666;
    margin: 0;
    white-space: nowrap;
}

.news-section__category {
    display: inline-block;
    padding: 4px 10px;
    background-color: #f0ecee;
    border-radius: 2px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    font-weight: 500;
    color: #751C47;
    white-space: nowrap;
    justify-self: start;
}

.news-section__card-title {
    font-family: 'Zen Kaku Gothic New', 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    margin: 0;
    line-height: 1.5;
    min-width: 0;
}

.news-section__link-text {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #751C47;
    display: inline-block;
    text-decoration: none;
    transition: transform 0.2s ease;
    margin: 0;
}

.news-section__row:hover .news-section__link-text {
    transform: translateX(3px);
}

/* 記事詳細ページ */
.news-detail {
    padding: 100px 0;
    background-color: #FFFFFF;
}

.news-detail__breadcrumb {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #666;
    margin-bottom: 40px;
}

.news-detail__breadcrumb a {
    color: #751C47;
    text-decoration: none;
}

.news-detail__breadcrumb a:hover {
    text-decoration: underline;
}

.news-detail__breadcrumb-sep {
    margin: 0 8px;
    color: #999;
}

.news-detail__breadcrumb-current {
    color: #222;
}

.news-detail__loading {
    color: #666;
    margin: 0;
}

.news-detail__notfound {
    text-align: center;
    padding: 48px 0;
}

.news-detail__notfound p {
    margin: 0 0 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    color: #222;
}

.news-detail__notfound a {
    color: #751C47;
    text-decoration: underline;
}

.news-detail__article {
    max-width: 780px;
    margin: 0 auto;
}

.news-detail__image,
.news-detail__img {
    display: none !important;
}

.news-detail__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 24px;
    margin-bottom: 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #666;
}

.news-detail__date {
    font-weight: 500;
}

.news-detail__category {
    font-weight: 500;
    color: #751C47;
}

.news-detail__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 32px;
    font-weight: 600;
    color: #222;
    margin: 0 0 32px;
    line-height: 1.4;
}

.news-detail__body {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.8;
    color: #333;
    margin-bottom: 48px;
}

.news-detail__body p {
    margin: 0 0 1em;
}

.news-detail__body p:last-child {
    margin-bottom: 0;
}

.news-detail__body img,
.news-detail__body-image img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 1.5em auto;
}

.news-detail__back {
    margin: 0;
    font-size: 15px;
}

.news-detail__back a {
    color: #751C47;
    text-decoration: underline;
}

.news-detail__back a:hover {
    opacity: 0.8;
}

@media (max-width: 768px) {
    .news-detail {
        padding: 60px 0;
    }

    .news-detail__breadcrumb {
        margin-bottom: 24px;
        font-size: 13px;
    }

    .news-detail__title {
        font-size: 24px;
        margin-bottom: 24px;
    }

    .news-detail__body {
        font-size: 15px;
        margin-bottom: 32px;
    }
}

@media (max-width: 768px) {
    .news-section {
        padding: 28px 0 60px;
    }

    .news-section__header {
        margin-bottom: 28px;
    }

    .news-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .news-section__subtitle {
        font-size: 18px;
    }

    .news-section__tabs {
        gap: 0 16px;
        margin-bottom: 40px;
    }

    .news-section__tab {
        font-size: 13px;
        padding: 10px 2px 12px;
    }

    .news-section__row {
        grid-template-columns: 1fr auto;
        grid-template-areas:
            "date cat"
            "title title"
            "link link";
        gap: 8px 12px;
        padding: 18px 4px;
    }

    .news-section__date { grid-area: date; font-size: 13px; }
    .news-section__category { grid-area: cat; justify-self: end; font-size: 11px; }
    .news-section__card-title { grid-area: title; font-size: 15px; }
    .news-section__link-text { grid-area: link; justify-self: end; }
}

/* ========================================
   SNS セクション
   ======================================== */
.sns {
    position: relative;
    padding: 100px 0;
    overflow: hidden;
}

.sns__background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: url('../img/sns-background.jpg');
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    z-index: 1;
}

.sns__inner {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: center;
    align-items: center;
    max-width: 1180px;
    margin: 0 auto;
}

.sns__card {
    background-color: #FFFFFF;
    border: 2px solid #751C47;
    border-radius: 0;
    padding: 40px 80px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    opacity: 0.9;
    width: 100%;
    max-width: 900px;
}

/* SNS 見出し（他セクションに合わせたデザイン・中央配置） */
.sns__header {
    text-align: center;
    margin-bottom: 48px;
}

.sns__header .section-title-large {
    color: #222;
    margin: 0 0 10px;
    text-align: center;
}

.sns__header .section-subtitle {
    color: #222;
    margin: 0;
    text-align: center;
}

.sns__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    width: 100%;
    margin-bottom: 48px;
}

.sns__grid-item {
    aspect-ratio: 3 / 4;
    overflow: hidden;
    background-color: #f5f5f5;
}

.sns__grid-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.sns__card-button-wrapper {
    text-align: center;
    margin-top: auto;
}

.sns__card-button-wrapper .btn--detail {
    margin: 0 auto;
    border-radius: 0;
}

/* ========================================
   ご注文の流れ
   ======================================== */
.order-flow-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.order-flow-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.order-flow-section__header .order-flow-section__title {
    margin-bottom: 10px;
}

.order-flow-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.order-flow-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.order-flow__step {
    display: flex;
    align-items: flex-start;
    gap: 60px;
    margin-bottom: 80px;
}

.order-flow__step:last-child {
    margin-bottom: 0;
}

.order-flow__text {
    flex: 1;
    min-width: 0;
}

.order-flow__title-row {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin-bottom: 24px;
}

.order-flow__number {
    display: inline-block;
    font-family: 'Montserrat', sans-serif;
    font-size: 36px;
    font-weight: 600;
    color: #751C47;
    margin: 0;
    letter-spacing: 0.05em;
    flex-shrink: 0;
}

.order-flow__heading {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 24px;
    font-weight: 600;
    color: #222;
    margin: 0;
    line-height: 1.4;
}

.order-flow__body {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 400;
    color: #333;
    line-height: 1.8;
}

.order-flow__body p {
    margin: 0 0 16px;
}

.order-flow__body p:last-child {
    margin-bottom: 0;
}

.order-flow__body .order-flow__note,
.order-flow__body .order-flow__callout {
    margin-top: 20px;
}

.order-flow__note {
    font-weight: 500;
    color: #222;
}

.order-flow__list {
    margin: 8px 0 0;
    padding-left: 1.2em;
    list-style-type: disc;
}

.order-flow__list li {
    margin-bottom: 6px;
}

.order-flow__list--numbered {
    list-style-type: decimal;
}

.order-flow__address {
    font-weight: 500;
    line-height: 1.7;
}

.order-flow__callout {
    margin-top: 24px;
    padding: 16px 20px;
    background-color: #f5f5f5;
    border-left: 4px solid #751C47;
    font-weight: 500;
}

.order-flow__image {
    flex-shrink: 0;
    width: 45%;
    max-width: 520px;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background-color: #f5f5f5;
}

.order-flow__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ご注文の流れ：03の注意事項（step と別・画像左・内容右） */
.order-flow__notes-row {
    display: flex;
    align-items: stretch;
    gap: 40px;
    margin-bottom: 80px;
}

.order-flow__notes-row-image {
    flex-shrink: 0;
    width: 38%;
    max-width: 400px;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background-color: #f5f5f5;
}

.order-flow__notes-row-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.order-flow__notes-box {
    flex: 1;
    min-width: 0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 400;
    color: #333;
    line-height: 1.8;
}

.order-flow__notes-note {
    font-weight: 500;
    color: #222;
    margin: 0 0 12px;
}

.order-flow__notes-list {
    margin: 8px 0 0;
    padding-left: 1.2em;
    list-style-type: disc;
}

.order-flow__notes-list li {
    margin-bottom: 6px;
}

.order-flow__notes-callout {
    margin-top: 24px;
    padding: 16px 20px;
    background-color: #f5f5f5;
    border-left: 4px solid #751C47;
    font-weight: 500;
    margin-bottom: 0;
}

/* ご注文の流れ：画像左・注釈ボックス右（step/text と分けたブロック） */
.order-flow__info-row {
    display: flex;
    align-items: stretch;
    gap: 40px;
    margin-bottom: 80px;
}

.order-flow__info-row-image {
    flex-shrink: 0;
    width: 38%;
    max-width: 400px;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background-color: #f5f5f5;
}

.order-flow__info-row-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.order-flow__info-box {
    flex: 1;
    min-width: 0;
    padding: 24px 32px;
    margin-top: 20px;
    background-color: #ebebeb;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 400;
    color: #333;
    line-height: 1.8;
}

.order-flow__info-box p {
    margin: 0 0 12px;
}

.order-flow__info-box p:last-of-type {
    margin-bottom: 0;
}

.order-flow__info-box-note {
    margin-top: 16px;
    font-weight: 500;
    color: #222;
}

.order-flow__info-box-list {
    margin: 8px 0 0;
    padding-left: 1.2em;
    list-style-type: disc;
}

.order-flow__info-box-list li {
    margin-bottom: 4px;
}

.order-flow__lineup-cta {
    text-align: center;
    margin-top: 72px;
    padding-top: 56px;
}

.order-flow__lineup-btn {
    display: inline-block;
    padding: 16px 48px;
    background: #751C47;
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-decoration: none;
    transition: background 0.2s ease, box-shadow 0.2s ease;
}

.order-flow__lineup-btn:hover {
    background: #5E1840;
    box-shadow: 0 4px 16px rgba(117, 28, 71, 0.3);
}

/* ご注文の流れ レスポンシブ */
@media (max-width: 768px) {
    .order-flow-section {
        padding: 28px 0 60px;
    }

    .order-flow-section__header {
        margin-bottom: 28px;
    }

    .order-flow-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .order-flow-section__subtitle {
        font-size: 18px;
    }

    .order-flow__step {
        flex-direction: column;
        gap: 24px;
        margin-bottom: 56px;
    }

    .order-flow__image {
        width: 100%;
        max-width: none;
        order: -1;
    }

    .order-flow__heading {
        font-size: 20px;
        margin-bottom: 16px;
    }

    .order-flow__body {
        font-size: 15px;
    }

    .order-flow__info-row {
        flex-direction: column;
        gap: 20px;
        margin-bottom: 56px;
    }

    .order-flow__info-row-image {
        width: 100%;
        max-width: none;
    }

    .order-flow__info-box {
        padding: 24px 20px;
        font-size: 14px;
    }

    .order-flow__notes-row {
        flex-direction: column;
        gap: 20px;
        margin-bottom: 56px;
    }

    .order-flow__notes-row-image {
        width: 100%;
        max-width: none;
    }

    .order-flow__notes-box {
        font-size: 15px;
    }

    .order-flow__title-row {
        flex-wrap: wrap;
        gap: 12px;
        margin-bottom: 20px;
    }
}

/* ========================================
   フッター
   ======================================== */
.footer {
    color: #FFFFFF;
}

.footer__inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 15px;
}

/* サービス見出し（グレー背景・画面幅いっぱい） */
.footer__services {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0;
    width: 100vw;
    margin-left: min(-15px, calc((1180px - 100vw) / 2 - 15px));
    margin-right: min(-15px, calc((1180px - 100vw) / 2 - 15px));
    box-sizing: border-box;
    padding: 50px max(15px, calc((100vw - 1180px) / 2));
    background-color: #808080;
}

/* footer__services 内の文字・アイコン・線は白 */
.footer__services .footer__service-title {
    color: #FFFFFF;
}

.footer__services .footer__service-icon {
    filter: brightness(0) invert(1);
}

.footer__services .footer__service-divider {
    background-color: rgba(255, 255, 255, 0.6);
}

.footer__service-item {
    flex: 1;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.footer__service-icon {
    width: 40px;
    height: 40px;
    object-fit: contain;
    filter: brightness(0) invert(1);
}

.footer__service-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    margin: 0;
}

.footer__service-divider {
    width: 1px;
    height: 40px;
    background-color: rgba(255, 255, 255, 0.3);
    margin: 0 20px;
}

/* メインコンテンツ（白背景・画面幅いっぱい） */
.footer__main {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 60px;
    width: 100vw;
    margin-left: min(-15px, calc((1180px - 100vw) / 2 - 15px));
    margin-right: min(-15px, calc((1180px - 100vw) / 2 - 15px));
    margin-bottom: 0;
    box-sizing: border-box;
    padding: 60px max(15px, calc((100vw - 1180px) / 2)) 40px;
    background-color: #FFFFFF;
}

.footer__column {
    display: flex;
    flex-direction: column;
    gap: 40px;
}

.footer__link-group {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.footer__link-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 20px;
    font-weight: 600;
    color: #000000;
    margin: 0;
}

.footer__link-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.footer__link-list li {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #000000;
    line-height: 1.2;
}

.footer__link-list a {
    color: #000000;
    text-decoration: none;
    transition: opacity 0.3s ease;
}

.footer__link-list a:hover {
    opacity: 0.7;
}

/* フッターリンク：英語が主、日本語は添えるキャプション */
.footer__link-inner {
    display: inline-block;
    line-height: 1.15;
}

.footer__link-text {
    display: block;
}

.footer__link-text--en {
    font-family: 'Montserrat', sans-serif;
    font-size: 17px;
    font-weight: 500;
    line-height: 1.2;
}

.footer__link-text--ja {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 11px;
    font-weight: 400;
    line-height: 1.2;
    margin-top: 1px;
    color: #666;
    opacity: 1;
}

/* お問い合わせボタン（左カラム内） */
.footer__contact-wrap {
    margin-top: 8px;
}

.footer__contact-btn {
    display: inline-block;
    background-color: #000000;
    color: #FFFFFF;
    border: 2px solid #000000;
}

.footer__contact-btn:hover {
    background-color: #333333;
    color: #FFFFFF;
    border-color: #333333;
}

/* カタログ */
.footer__catalog {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.footer__catalog-image {
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    background-color: #f0f0f0;
    overflow: hidden;
    border-radius: 4px;
    text-decoration: none;
}

.footer__catalog-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.footer__catalog-content {
    text-align: center;
}

.footer__catalog-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: #000000;
    margin: 0 0 4px;
}

.footer__catalog-subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #000000;
    margin: 12px 0 0;
}

.footer__catalog-link {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #000000;
    margin-bottom: 12px;
    text-decoration: underline;
    transition: opacity 0.3s ease;
}

.footer__catalog-link:hover {
    opacity: 0.7;
}

/* 下部：SNSとロゴ（白背景・画面幅いっぱい） */
.footer__bottom {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: flex-end;
    gap: 16px;
    width: 100vw;
    margin-left: min(-15px, calc((1180px - 100vw) / 2 - 15px));
    margin-right: min(-15px, calc((1180px - 100vw) / 2 - 15px));
    box-sizing: border-box;
    padding: 16px max(15px, calc((100vw - 1180px) / 2)) 0;
    background-color: #FFFFFF;
    border-top: 1px solid #e0e0e0;
}

.footer__social {
    display: flex;
    gap: 16px;
    align-items: center;
    justify-content: center;
    grid-column: 2;
    justify-self: center;
}

.footer__bottom .footer__logo {
    grid-column: 3;
    justify-self: end;
}

.footer__social-link {
    display: block;
    width: 40px;
    height: 40px;
    transition: opacity 0.3s ease;
}

.footer__social-link:hover {
    opacity: 0.7;
}

.footer__social-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

.footer__logo {
    display: flex;
    align-items: center;
}

.footer__logo-img {
    height: 100px;
    width: auto;
    display: block;
}

/* フッター main 以降（白背景）：アイコン・ロゴを黒に */
.footer__bottom .footer__social-img,
.footer__bottom .footer__logo-img {
    filter: brightness(0);
}

/* コピーライト（白背景・画面幅いっぱい） */
.footer__copyright {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    font-weight: 400;
    color: #000000;
    text-align: center;
    margin: 0;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    width: 100vw;
    box-sizing: border-box;
    padding: 40px max(15px, calc((100vw - 1180px) / 2)) 40px;
    background-color: #FFFFFF;
}

/* ========================================
   レスポンシブ（SP: 768px以下）
   ======================================== */
/* ========================================
   レスポンシブ（SP）
   ======================================== */
@media (max-width: 768px) {
    /* ヘッダー（SP） */
    :root {
        --site-header-height: 71px;
    }

    .header {
        padding: 15px 0;
    }

    .header__inner {
        gap: 15px;
    }

    .header__logo-img {
        width: auto;
        max-height: 40px;
    }

    /* PC用ナビゲーションとアクションを非表示 */
    .header__nav,
    .header__actions {
        display: none;
    }

    /* SP用アクションを表示 */
    .header__sp-actions {
        display: flex;
    }

    /* ハンバーガーメニューボタンを表示 */
    .header__hamburger {
        display: flex;
    }

    /* モバイルメニューを表示可能にする */
    .header__mobile-menu {
        display: block !important;
        visibility: visible;
    }

    .header__mobile-overlay {
        display: block !important;
    }
    
    /* メニューが開いている時のスタイル（SP時） */
    .header__mobile-menu--open {
        right: 0 !important;
        visibility: visible !important;
    }
    
    .header__mobile-overlay--active {
        opacity: 1 !important;
        pointer-events: auto !important;
    }

    html {
        font-size: 14px;
        line-height: 1.5;
    }

    .container {
        padding: 0 15px;
    }

    .header__inner {
        flex-wrap: nowrap;
        gap: 15px;
    }

    .header__logo-img {
        width: auto;
        max-height: 40px;
    }

    .header__sp-actions .header__icon {
        width: 36px;
        height: 36px;
    }

    .header__sp-actions .header__icon-img {
        height: 36px;
    }

    .header__sp-actions .header__icon--cart {
        overflow: visible;
        width: 40px;
        height: 40px;
        margin-right: 10px;
    }

    .header__sp-actions .header__cart-badge {
        top: -6px;
        right: -12px;
        min-width: 28px;
        height: 28px;
        padding: 0 8px;
        font-size: 16px;
        line-height: 24px;
    }

    .recommend,
    .category,
    .brand {
        padding: 40px 0;
    }

    .btn--detail {
        width: 200px;
        height: 45px;
        font-size: 16px;
        line-height: 45px;
    }

    .about-us {
        padding: 60px 0 40px;
    }

    .about-us__catchphrase {
        font-size: 30px;
        margin-bottom: 12px;
        white-space: normal;
    }

    .about-us__title {
        font-size: 18px;
        margin-bottom: 20px;
    }

    .about-us__quote {
        font-size: 15px;
        margin-bottom: 30px;
    }

    .section-title-large {
        font-size: 48px;
    }

    .section-subtitle {
        font-size: 18px;
    }

    .lineup-gallery-block {
        padding: 40px 15px;
    }

    .lineup-gallery-block .lineup,
    .lineup-gallery-block .gallery {
        padding-left: 15px;
        padding-right: 15px;
        margin-bottom: 30px;
    }

    .lineup-gallery-block .gallery {
        margin-bottom: 0;
    }

    .lineup__inner {
        min-height: auto;
        padding: 40px 0 0;
    }

    .lineup__content {
        max-width: 100%;
        padding-right: 0;
    }

    .lineup__description {
        margin-top: 30px;
        margin-bottom: 40px;
    }

    .lineup__description-item {
        display: block;
        font-size: 15px;
        margin-bottom: 16px;
        line-height: 1.65;
    }

    .lineup__description-label {
        display: block;
        margin-bottom: 0.2em;
    }

    .lineup__description-text {
        display: block;
        padding-left: 0;
        word-break: keep-all;
        overflow-wrap: break-word;
        line-break: strict;
    }

    .lineup__button-wrapper {
        text-align: left;
    }

    .lineup__right {
        position: relative;
        width: 100%;
        height: 400px;
        margin-top: 40px;
    }

    .gallery__inner {
        min-height: auto;
        padding: 60px 0;
        display: flex;
        flex-direction: column;
    }

    .gallery__inner .container {
        order: 1;
    }

    .gallery__left {
        position: relative;
        width: 100%;
        height: 400px;
        margin-bottom: 0;
        margin-top: 40px;
        order: 2;
    }

    .gallery__content {
        max-width: 100%;
        padding-left: 0;
        margin-left: 0;
    }

    .gallery__description {
        margin-top: 30px;
        margin-bottom: 40px;
    }

    .gallery__description p {
        font-size: 15px;
    }

    .news {
        padding: 60px 0;
    }

    .news__header {
        margin-bottom: 40px;
    }

    .news__list {
        max-width: 100%;
        margin-bottom: 40px;
    }

    .news-card__row {
        grid-template-columns: 1fr auto;
        grid-template-areas:
            "date cat"
            "title title"
            "link link";
        gap: 8px 12px;
        padding: 16px 4px;
    }

    .news-card__date { grid-area: date; font-size: 13px; }
    .news-card__category { grid-area: cat; justify-self: end; font-size: 11px; }
    .news-card__title { grid-area: title; font-size: 15px; }
    .news-card__link { grid-area: link; justify-self: end; font-size: 14px; }

    .sns {
        padding: 60px 0;
    }

    .sns__card {
        padding: 40px 20px;
    }

    .sns__header {
        margin-bottom: 30px;
    }

    .sns__header .section-title-large {
        font-size: 48px;
    }

    .sns__header .section-subtitle {
        font-size: 18px;
    }

    .sns__grid {
        gap: 12px;
        margin-bottom: 30px;
    }

    .footer__services {
        flex-direction: column;
        gap: 20px;
        padding: 40px 15px 40px;
    }

    .footer__service-icon {
        width: 32px;
        height: 32px;
    }

    .footer__service-divider {
        width: 100%;
        height: 1px;
        margin: 0;
    }

    .footer__main {
        grid-template-columns: 1fr;
        gap: 40px;
    }

    .footer__column {
        gap: 30px;
    }

    .footer__bottom {
        gap: 20px;
        padding-top: 24px;
    }

    .footer__copyright {
        padding: 20px 15px 120px;
        font-size: 11px;
    }

    .footer__logo-img{
        height: 60px;
    }

    .footer__social-link{
        height: 30px;
    }
   
    .footer__social {
        justify-content: center;
    }

    .hero {
        min-height: 500px;
    }

    .hero__content {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
        gap: 30px;
        min-height: 500px;
        padding-top: 40px;
        padding-bottom: 60px;
    }

    .hero__text-left {
        align-items: flex-start;
        align-self: center;
        justify-content: center;
        gap: 14px;
    }

    .hero__title-row {
        gap: 10px;
    }

    .hero__title-main {
        font-size: 80px;
    }

    .hero__title-main--branch {
        font-size: 80px;
    }

    .hero__slogan {
        font-size: 17px;
        padding-bottom: 0;
        white-space: normal;
    }

    .hero__right {
        align-items: center;
        align-self: center;
        margin: 0 auto;
    }

    .hero__right-img {
        height: 200px;

    }

    .hero__brand-icon {
        width: 40px;
        height: 80px;
    }

    .hero__brand-circle {
        width: 30px;
        height: 30px;
        border-width: 3px;
    }

    .hero__indicators {
        bottom: 20px;
        gap: 8px;
    }

    .hero__indicator {
        width: 10px;
        height: 10px;
    }
}

/* ========================================
   商品一覧ページ
   ======================================== */
.product-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.product-section .section-title-large {
    text-align: center;
    margin-bottom: 60px;
}

/* フィルターボタン */
.filter-buttons {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-bottom: 60px;
    flex-wrap: wrap;
}

.filter-btn {
    padding: 12px 32px;
    background-color: #FFFFFF;
    color: #333;
    border: 2px solid #751C47;
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.3s ease;
    white-space: nowrap;
}

.filter-btn:hover {
    background-color: #f5f5f5;
    opacity: 0.8;
}

.filter-btn.is-active {
    background-color: #751C47;
    color: #FFFFFF;
    border-color: #751C47;
}

.filter-btn.is-active:hover {
    background-color: #5E1840;
    opacity: 1;
}

/* 商品グリッド */
.product-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 40px;
    margin: 0 auto;
}

/* 商品カード */
.product-card {
    background-color: #FFFFFF;
    border: 2px solid #751C47;
    border-radius: 0;
    overflow: hidden;
    transition: box-shadow 0.3s ease;
    display: flex;
    flex-direction: column;
}

.product-card:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.product-card.is-hidden {
    display: none;
}

.product-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    background-color: #f5f5f5;
    overflow: hidden;
}

.product-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.product-card__content {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: 1;
}

.product-card__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    font-weight: 500;
    color: #222;
    margin: 0;
    line-height: 1.4;
}

.product-card__price {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 500;
    color: #333;
    margin: 0;
}

.product-card__link {
    display: inline-block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #751C47;
    text-decoration: underline;
    transition: opacity 0.3s ease;
    margin-top: auto;
}

.product-card__link:hover {
    opacity: 0.7;
}

/* 商品一覧ページ レスポンシブ（SP） */
@media (max-width: 768px) {
    .product-section {
        padding: 28px 0 60px;
    }

    .product-section .section-title-large {
        font-size: 48px;
        margin-bottom: 40px;
    }

    .filter-buttons {
        gap: 12px;
        margin-bottom: 40px;
        padding: 0 15px;
    }

    .filter-btn {
        padding: 10px 20px;
        font-size: 14px;
    }

    .product-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 20px;
        padding: 0 15px;
    }

    .product-card__content {
        padding: 16px;
        gap: 10px;
    }

    .product-card__title {
        font-size: 16px;
    }

    .product-card__price {
        font-size: 15px;
    }

    .product-card__link {
        font-size: 14px;
    }
}

/* より小さい画面（1カラム） */
@media (max-width: 480px) {
    .product-grid {
        grid-template-columns: 1fr;
    }
}

/* ========================================
   商品詳細ページ（PDP：DL-1 プランツ等）
   ======================================== */
/* PDP ローディング */
.pdp__loading {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}
.pdp__loading-spinner {
    display: inline-block;
    width: 40px;
    height: 40px;
    border: 3px solid #e8e8e8;
    border-top-color: #751C47;
    border-radius: 50%;
    animation: pdp-spin 0.8s linear infinite;
}
@keyframes pdp-spin {
    to { transform: rotate(360deg); }
}

.pdp-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

/* daBRANCH Style 商品詳細（product-earth251.html 準拠） */
.pdp-section--dabranch {
    /* 必要に応じてデザイン差分を追加 */
}

/* Rose Collection 商品詳細（product-earth251-rose.html 準拠） */
.pdp-section--rose {
    /* 必要に応じてデザイン差分を追加 */
}

.pdp {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px 56px;
    align-items: start;
    max-width: 1200px;
    margin: 0 auto;
}

.pdp__gallery {
    position: sticky;
    top: 100px;
    min-width: 0;
    overflow: hidden;
}

.pdp__main-image {
    aspect-ratio: 1;
    background: #f8f8f8;
    border: 1px solid #e8e8e8;
    overflow: hidden;
    margin-bottom: 16px;
}

.pdp__main-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.pdp__thumbs-carousel {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-width: 0;
}

.pdp__thumbs-carousel[hidden] {
    display: none !important;
}

.pdp__thumbs-viewport {
    flex: 1;
    min-width: 0;
    overflow: hidden;
}

.pdp__thumbs {
    display: flex;
    flex-wrap: nowrap;
    gap: 12px;
    list-style: none;
    margin: 0;
    padding: 2px 4px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: smooth;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.pdp__thumbs::-webkit-scrollbar {
    display: none;
}

.pdp__thumbs > li {
    flex: 0 0 auto;
    scroll-snap-align: start;
}

.pdp__thumbs-nav {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 72px;
    padding: 0;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    background: #fff;
    color: #751C47;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}

.pdp__thumbs-nav:hover:not(:disabled) {
    background: #faf5f7;
    border-color: #751C47;
}

.pdp__thumbs-nav:disabled {
    opacity: 0.35;
    cursor: default;
}

.pdp__thumbs-carousel--no-nav .pdp__thumbs-nav {
    display: none;
}

.pdp__thumb {
    width: 72px;
    height: 72px;
    padding: 0;
    border: 2px solid #e0e0e0;
    background: #fff;
    cursor: pointer;
    overflow: hidden;
    transition: border-color 0.2s ease;
}

.pdp__thumb:hover {
    border-color: #b0b0b0;
}

.pdp__thumb.pdp__thumb--active {
    border-color: #751C47;
}

.pdp__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.pdp__body {
    min-width: 0;
}

.pdp__category {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #666;
    margin: 0 0 8px;
}

.pdp__title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 28px;
    font-weight: 600;
    color: #222;
    margin: 0 0 12px;
    line-height: 1.3;
}

.pdp__price {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 22px;
    font-weight: 600;
    color: #222;
    margin: 0 0 20px;
}

.pdp__price-note {
    font-size: 14px;
    font-weight: 500;
    color: #666;
}

.pdp__description {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    line-height: 1.8;
    color: #333;
    margin: 0 0 32px;
}

.pdp__form {
    border-top: 1px solid #e8e8e8;
    padding-top: 24px;
}

.pdp__form-group {
    margin-bottom: 24px;
}

.pdp__divider {
    border: none;
    border-top: 1px solid #e0e0e0;
    margin: 8px 0 24px;
}

.pdp__form-group--venue {
    margin-top: 28px;
}

.pdp__form-heading {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #222;
    margin: 28px 0 16px;
    padding-bottom: 8px;
}

.pdp__label {
    display: block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #222;
    margin-bottom: 8px;
}

#pdp-label-word-wrap .pdp__label,
#pdp-label-word-section-title {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 16px;
}

.pdp__label-example,
.pdp__label-sub {
    font-size: 13px;
    font-weight: 400;
    color: #666;
}

.pdp__input-title {
    font-size: 14px;
    font-weight: 700;
    color: #222;
    margin: 12px 0 4px;
}

.pdp__options {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
}

.pdp__options--wrap {
    gap: 10px 16px;
}

/* フレームカラー（画像スウォッチ・マット/ベースと同様のデザイン） */
.pdp__frame-color-group.pdp__color-group {
    padding: 0;
    border: none;
    border-bottom: 1px solid #e8e4dc;
}

.pdp__frame-color-group--error {
    border: none;
    border-bottom: 1px solid #c00;
    background-color: #fefafa;
}

.pdp__frame-swatches-wrap {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.pdp__frame-swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 20px;
    margin-bottom: 10px;
}

.pdp__frame-swatches-wrap > .pdp__clear {
    margin-bottom: 0;
}

.pdp__frame-swatch {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    position: relative;
}

.pdp__frame-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

.pdp__frame-swatch-img {
    display: block;
    width: 50px;
    height: 50px;
    padding: 3px;
    box-sizing: border-box;
    border: 2px solid #e0e0e0;
    overflow: hidden;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.pdp__frame-swatch-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    background: #f5f5f5;
}


.pdp__frame-swatch:has(.pdp__frame-input:checked) .pdp__frame-swatch-img,
.pdp__frame-swatch:hover .pdp__frame-swatch-img {
    border-color: #333;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.3);
}

.pdp__radio-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #333;
    cursor: pointer;
}

.pdp__radio {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #751C47;
}

/* マットカラー・ベースカラー（スウォッチ） */
.pdp__color-group {
    padding: 0;
    border: none;
    border-bottom: 1px solid #e8e4dc;
}

.pdp__color-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #222;
    margin: 0 0 14px;
}

.pdp__required-mark,
.pdp__color-label::first-letter,
.pdp__label--required::first-letter {
    color: #751C47;
}

.pdp__color-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

.pdp__swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 10px;
}

.pdp__swatches--base {
    gap: 12px;
}

.pdp__swatch {
    display: block;
    width: 50px;
    height: 50px;
    min-width: 50px;
    min-height: 50px;
    padding: 2px;
    box-sizing: border-box;
    background-origin: content-box;
    background-clip: content-box;
    border: 2px solid transparent;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    flex-shrink: 0;
    position: relative;
}

.pdp__swatch:hover {
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
}

.pdp__swatch[data-tooltip]:hover::after,
.pdp__frame-swatch[data-tooltip]:hover::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%);
    background: rgba(30, 20, 25, 0.88);
    color: #fff;
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
    padding: 4px 8px;
    border-radius: 3px;
    pointer-events: none;
    z-index: 10;
    letter-spacing: 0.03em;
}

.pdp__swatch[data-tooltip]:hover::before,
.pdp__frame-swatch[data-tooltip]:hover::before {
    content: '';
    position: absolute;
    bottom: calc(100% + 2px);
    left: 50%;
    transform: translateX(-50%);
    border: 4px solid transparent;
    border-top-color: rgba(30, 20, 25, 0.88);
    pointer-events: none;
    z-index: 10;
}

.pdp__swatch--selected {
    border-color: #333;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.3);
}

/* オフホワイト：パディング内側にグレー線（コンテンツ境界に1px）、選択時は内側に黒線 */
.pdp__swatch--offwhite {
    background-color: #fff;
    border: 2px solid transparent;
    box-shadow: inset 0 0 0 2px #e0e0e0, inset 0 0 0 3px #fff;
}

.pdp__swatch--offwhite:hover {
    box-shadow: inset 0 0 0 2px #e0e0e0, inset 0 0 0 3px #fff, 0 0 0 1px rgba(0, 0, 0, 0.1);
}

.pdp__swatch--offwhite.pdp__swatch--selected {
    border-color: transparent;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.3), inset 0 0 0 2px #222, inset 0 0 0 4px #fff;
}

.pdp__swatch--lightgray {
    background-color: #c4c4c4;
}

.pdp__swatch--black {
    background-color: #222;
}

/* メッシュブラウン：オフホワイト同様にパディング内側に薄いボーダー、選択時は内側に黒線 */
.pdp__swatch--meshbrown {
    background-color: #8b7355;
    border: 2px solid transparent;
    box-shadow: inset 0 0 0 2px #c4c4c4, inset 0 0 0 4px #fff;
}

.pdp__swatch--meshbrown:hover {
    box-shadow: inset 0 0 0 2px #c4c4c4, inset 0 0 0 4px #fff, 0 0 0 1px rgba(0, 0, 0, 0.1);
}

.pdp__swatch--meshbrown.pdp__swatch--selected {
    border-color: transparent;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.3), inset 0 0 0 2px #222, inset 0 0 0 4px #fff;
}

.pdp__swatch--meshbrown-texture {
    background:  url("../img/swatch-matt-texture.png") center/cover no-repeat;
    background-origin: content-box;
    background-clip: content-box;
    border: 2px solid transparent;
    box-shadow: inset 0 0 0 2px #c4c4c4, inset 0 0 0 4px #fff;
}

.pdp__swatch--meshbrown-texture:hover {
    box-shadow: inset 0 0 0 2px #c4c4c4, inset 0 0 0 4px #fff, 0 0 0 1px rgba(0, 0, 0, 0.1);
}

.pdp__swatch--meshbrown-texture.pdp__swatch--selected {
    border-color: transparent;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.3), inset 0 0 0 2px #222, inset 0 0 0 4px #fff;
}

.pdp__swatch--omakase {
    background: linear-gradient(to right, #f5d4d4, #d4e0f5);
    background-origin: content-box;
    background-clip: content-box;
}

.pdp__swatch--olive {
    background-color: #947F26;
}

.pdp__swatch--gray {
    background-color: #A8A8A8;
}

.pdp__swatch--sandbeige {
    background-color: #E6D7C5;
}

.pdp__swatch--pinkbeige {
    background-color: #F3CCB5;
}

/* ホワイト：パディング内側にグレー線（コンテンツ境界に1px）、選択時は内側に黒線 */
.pdp__swatch--white {
    background-color: #F2F1ED;
    border: 2px solid transparent;
    box-shadow: inset 0 0 0 2px #e0e0e0, inset 0 0 0 3px #F2F1ED;
}

.pdp__swatch--white:hover {
    box-shadow: inset 0 0 0 2px #e0e0e0, inset 0 0 0 3px #F2F1ED, 0 0 0 1px rgba(0, 0, 0, 0.1);
}

.pdp__swatch--white.pdp__swatch--selected {
    border-color: transparent;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.3), inset 0 0 0 2px #222, inset 0 0 0 4px #F2F1ED;
}

.pdp__swatch--mistyblue {
    background-color: #D0D3CF;
}

.pdp__clear {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #999;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    text-decoration: underline;
    transition: color 0.2s ease;
}

.pdp__clear--hidden {
    display: none;
}

.pdp__clear:hover {
    color: #666;
}

.pdp__color-input--none {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

/* 仕上がりイメージ（2段表示） */
.pdp__preview-box {
    padding: 16px 20px;
    margin-bottom: 0;
    background-color: #b7b2ac;
    border: 1px solid #ddd;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #FFF;
    min-height: 52px;
}

.pdp__preview-box + .pdp__divider {
    margin: 24px 0;
}

.pdp__preview-line {
    line-height: 1.6;
}

.pdp__preview-line + .pdp__preview-line {
    margin-top: 4px;
}

.pdp__preview-box--3lines .pdp__preview-line + .pdp__preview-line {
    margin-top: 8px;
}

/* バリデーションエラー */
.pdp__form-group--errors {
    margin-bottom: 20px;
    padding: 16px 20px;
    background-color: #fef5f5;
    border: 1px solid #e8c4c4;
}

.pdp__errors {
    margin: 0;
    padding: 0 0 0 1.2em;
    list-style: disc;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #c00;
}

.pdp__errors li {
    margin-bottom: 4px;
}

.pdp__errors li:last-child {
    margin-bottom: 0;
}

.pdp__input--error,
.pdp__select--error {
    border-color: #c00 !important;
    background-color: #fefafa;
}

.pdp__color-group--error {
    border: none;
    border-bottom: 1px solid #c00;
    background-color: #fefafa;
}

/* 備考欄テキストエリア */
.pdp__textarea {
    width: 100%;
    padding: 12px 14px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #333;
    border: none;
    background: #fff;
    resize: vertical;
    min-height: 100px;
    transition: border-color 0.2s ease;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
}

.pdp__textarea:focus {
    outline: none;
}

/* 備考欄ラッパー（テキストエリア＋説明文をまとめて枠で囲む） */
.pdp__remarks-wrap {
    border: 2px solid #d0d0d0;
    background: #fff;
    transition: border-color 0.2s ease;
}

.pdp__remarks-wrap:focus-within {
    border-color: #751C47;
}

.pdp__remarks-hint {
    padding: 6px 14px 8px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #999;
    border-top: 1px solid #e8e8e8;
    background: #fafafa;
    margin: 0;
}

.pdp__textarea::placeholder {
    color: #999;
}

.pdp__name-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.pdp__date-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.pdp__date-inline {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.pdp__input {
    width: 100%;
    padding: 12px 14px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #333;
    border: 2px solid #d0d0d0;
    background: #fff;
    transition: border-color 0.2s ease;
    -webkit-appearance: none;
    appearance: none;
}

.pdp__input:focus {
    outline: none;
    border-color: #751C47;
}

.pdp__input--short {
    width: 80px;
    text-align: center;
}

.pdp__input--date {
    max-width: 240px;
}

/* flatpickr 日本語カレンダー（ヘッダー・固定UIより前面に） */
.flatpickr-calendar {
    z-index: 10050;
}

.pdp__select {
    padding: 12px 14px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #333;
    border: 2px solid #d0d0d0;
    background: #fff;
    min-width: 100px;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
}

.pdp__select:focus {
    outline: none;
    border-color: #751C47;
}

.pdp__note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 13px;
    color: #666;
    margin: 8px 0 0;
}

.pdp__label-counter {
    margin-top: 4px;
    font-size: 12px;
    color: #888;
}

.pdp__form-group--quantity {
    margin-top: 8px;
}

.pdp__quantity {
    display: inline-flex;
    align-items: center;
    border: 2px solid #d0d0d0;
    overflow: hidden;
    width: fit-content;
}

.pdp__quantity-btn {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: 500;
    color: #333;
    background: #f5f5f5;
    border: none;
    cursor: pointer;
    transition: background 0.2s;
}

.pdp__quantity-btn:hover {
    background: #e8e8e8;
}

.pdp__quantity-input {
    width: 56px;
    height: 44px;
    text-align: center;
    font-size: 16px;
    font-weight: 500;
    border: none;
    border-left: 1px solid #e0e0e0;
    border-right: 1px solid #e0e0e0;
    -moz-appearance: textfield;
}

.pdp__quantity-input::-webkit-outer-spin-button,
.pdp__quantity-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.pdp__file-wrap {
    margin-top: 8px;
}

.pdp__file {
    width: 0.1px;
    height: 0.1px;
    opacity: 0;
    position: absolute;
}

.pdp__file-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #666;
    border: 2px dashed #d0d0d0;
    background: #fafafa;
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
    max-width: 400px;
    border-radius: 6px;
}

.pdp__file-label::before {
    content: '📎';
    flex-shrink: 0;
    font-size: 16px;
}

.pdp__file-label:hover {
    border-color: #5E1840;
    background: #f5f8f5;
}

.pdp__file-label--selected {
    border: 2px solid #2e7d32;
    background: #f1f8f1;
    color: #2e7d32;
    font-weight: 600;
    padding: 8px 16px 8px 8px;
    gap: 12px;
}

.pdp__file-label--selected::before {
    display: none;
}

.pdp__file-label__name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 220px;
}

/* サムネイルはラベル内に inline 表示 */
.pdp__file-preview {
    display: none;
}

.pdp__file-preview--inline {
    display: contents;
}

.pdp__file-preview__img {
    width: 52px;
    height: 52px;
    object-fit: cover;
    border-radius: 4px;
    border: 1.5px solid #2e7d32;
    flex-shrink: 0;
}

/* ✓バッジ（選択済み表示） */
.pdp__file-check {
    flex-shrink: 0;
    font-size: 15px;
    font-weight: 700;
    color: #2e7d32;
}

.pdp__quantity {
    display: inline-flex;
    align-items: center;
    border: 2px solid #d0d0d0;
    width: fit-content;
}

.pdp__qty-btn {
    width: 44px;
    height: 44px;
    padding: 0;
    border: none;
    background: #f5f5f5;
    font-size: 18px;
    color: #333;
    cursor: pointer;
    transition: background 0.2s ease;
}

.pdp__qty-btn:hover {
    background: #e8e8e8;
}

.pdp__qty-input {
    width: 52px;
    height: 40px;
    padding: 0;
    border: none;
    border-left: 1px solid #e0e0e0;
    border-right: 1px solid #e0e0e0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    text-align: center;
    -moz-appearance: textfield;
}

.pdp__qty-input::-webkit-outer-spin-button,
.pdp__qty-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.pdp__cart-btn {
    width: 100%;
    padding: 16px 24px;
    font-size: 16px;
    background-color: #751C47;
    color: #fff;
}

.pdp__cart-btn:hover {
    background-color: #5E1840;
    color: #fff;
}

/* 商品詳細：説明ブロック（「」ごとのブロック・背景統一） */
.pdp__info-block {
    margin-top: 24px;
    padding: 24px;
    background: #f8f8f8;
    border: 1px solid #e8e8e8;
}

.pdp__info-block:first-of-type {
    margin-top: 40px;
}

.pdp__info-block-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    margin: 0 0 12px;
}

.pdp__info-block-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    line-height: 1.7;
    color: #333;
    margin: 0 0 8px;
}

.pdp__info-block-text:last-child {
    margin-bottom: 0;
}

/* 旧クラス（DL-1等で使用している場合の互換） */
.pdp__sample {
    margin-top: 40px;
    padding: 24px;
    background: #f8f8f8;
    border: 1px solid #e8e8e8;
}

.pdp__sample-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    margin: 0 0 12px;
}

.pdp__sample-note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 13px;
    color: #666;
    margin: 0 0 10px;
}

.pdp__sample-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    line-height: 1.7;
    color: #333;
    margin: 0 0 8px;
}

.pdp__sample-text:last-child {
    margin-bottom: 0;
}

.pdp__notice {
    margin-top: 24px;
    padding: 20px;
    background: #f8f8f8;
    border: 1px solid #e8e8e8;
}

.pdp__notice-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 700;
    color: #222;
    margin: 0 0 8px;
}

.pdp__notice-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    line-height: 1.7;
    color: #333;
    margin: 0;
}

@media (max-width: 768px) {
    .pdp-section {
        padding: 40px 0 60px;
    }

    .pdp {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .pdp__gallery {
        position: static;
    }

    .pdp__main-image {
        max-width: 400px;
        margin-left: auto;
        margin-right: auto;
    }

    .pdp__thumbs-carousel {
        max-width: 400px;
        margin-left: auto;
        margin-right: auto;
    }

    .pdp__thumbs-nav {
        width: 32px;
        height: 64px;
    }

    .pdp__title {
        font-size: 24px;
    }

    .pdp__price {
        font-size: 20px;
    }

    .pdp__name-row {
        grid-template-columns: 1fr;
    }

    .pdp__date-row {
        flex-direction: column;
    }

    .pdp__select {
        min-width: 100%;
    }

    .pdp__cart-btn {
        padding: 14px 20px;
        font-size: 15px;
    }

    .pdp__swatch {
        width: 56px;
        height: 56px;
        min-width: 56px;
        min-height: 56px;
    }

    .pdp__frame-swatch-img {
        width: 56px;
        height: 56px;
    }
}

/* ========================================
   Line up セクション
   ======================================== */

/* 代理店コード経由時：ヘッダー下・ページ右上の式場・ホテル名・コード表示 */
/* 全ページ共通代理店ログイン中バー（固定ヘッダーの直下に表示） */
.global-agent-bar {
    background: #751C47;
    color: #fff;
}
.global-agent-bar[hidden] {
    display: none;
}
.global-agent-bar:not([hidden]) {
    margin-top: var(--site-header-height);
    position: relative;
    z-index: 999;
}
.global-agent-bar__inner {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
    padding-top: 6px;
    padding-bottom: 6px;
}
.global-agent-bar__text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 13px;
    color: #fff;
}
.global-agent-bar__text strong {
    font-weight: 700;
}
.global-agent-bar__logout {
    background: transparent;
    border: 1px solid rgba(255,255,255,0.7);
    color: #fff;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    padding: 2px 10px;
    border-radius: 3px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.2s;
}
.global-agent-bar__logout:hover {
    background: rgba(255,255,255,0.15);
}

.lineup-agent-bar {
    display: none;
    padding: 12px 15px 0;
    text-align: right;
}

.lineup-agent-bar:not([hidden]) {
    display: block;
}

.lineup-agent-bar__text {
    display: inline-block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #333;
    margin: 0;
    padding: 10px 16px;
    border: 2px solid #751C47;
    border-radius: 4px;
    max-width: 100%;
    word-break: break-word;
}

.lineup-section {
    /* Line up は商品をファーストビューで見せるため上余白を特に詰める */
    padding: 32px 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

/* ページタイトル（Newsセクション同様に中央揃え） */
.lineup-section__header {
    text-align: center;
    margin-bottom: 20px;
}

.lineup-section__header .lineup-section__title {
    margin-bottom: 10px;
}

.lineup-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.lineup-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

/* メインカテゴリボタン */
.lineup-section__main-categories {
    display: flex;
    flex-direction: column;
    gap: 32px;
    margin-bottom: 24px;
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

.lineup-section__main-category-btn {
    padding: 12px 20px;
    background-color: #FFFFFF;
    color: #333;
    border: 2px solid #751C47;
    font-family: 'Montserrat', sans-serif;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
}

/* ALLボタン（中央固定） + アイテム説明リンク（ALLの右隣） */
.lineup-section__main-categories-top {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
}

.lineup-section__main-categories-top .lineup-section__main-category-btn[data-category="all"] {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

.lineup-section__main-categories-top .lineup-section__item-description-link {
    position: absolute;
    left: calc(50% + 100px + 16px);
    top: 50%;
    transform: translateY(-50%);
}

.lineup-section__main-categories-top .lineup-section__main-category-btn[data-category="all"]:hover {
    transform: translateX(-50%) translateY(-3px);
}

.lineup-section__main-categories-top .lineup-section__main-category-btn[data-category="all"]:active {
    transform: translateX(-50%) translateY(0);
}

/* ALLボタン */
.lineup-section__main-category-btn[data-category="all"] {
    width: auto;
    min-width: 200px;
    max-width: 500px;
    margin: 0;
    text-align: center;
    align-items: center;
    justify-content: center;
}

/* 3つのボタンのコンテナ（同じ横幅、等間隔） */
.lineup-section__main-categories-wrapper {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    width: 100%;
}

.lineup-section__main-category-btn:not([data-category="all"]) {
    width: 100%;
    position: relative;
    overflow: hidden;
}

/* スタイル選択3ボタン：上下の枠を可能な限り薄く */
.lineup-section__main-categories-wrapper .lineup-section__main-category-btn {
    padding: 6px 12px;
    justify-content: center;
    min-height: 0;
}

.lineup-section__main-categories-wrapper .lineup-section__main-category-name {
    gap: 0;
    line-height: 1.15;
}

.lineup-section__main-categories-wrapper .lineup-section__main-category-name-en {
    font-size: 20px;
    line-height: 1.2;
}

.lineup-section__main-categories-wrapper .lineup-section__main-category-name-jp {
    font-size: 13px;
    line-height: 1.2;
}

.lineup-section__main-categories-wrapper .lineup-section__main-category-desc {
    font-size: 12px;
    font-weight: 500;
    padding-top: 2px;
    line-height: 1.3;
}

/* スタイル選択3ボタン：左テキスト + 右に作品が大きく抜けるプレミアムカード */
.lineup-section .lineup-section__main-categories-wrapper {
    gap: 14px;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn {
    min-height: 180px;
    padding: 26px 22px 26px 24px;
    justify-content: center;
    align-items: flex-start;
    border: 1px solid rgba(117, 28, 71, 0.18);
    border-radius: 0;
    background-color: #5E1840;
    background-size: cover;
    background-position: right center;
    background-repeat: no-repeat;
    color: #FFFFFF;
    box-shadow: 0 8px 24px rgba(61, 16, 42, 0.16);
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn[data-category="bouquet"] {
    background-image: url(../img/lineup-category-bouquet.png);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn[data-category="dabranch"] {
    background-image: url(../img/lineup-category-dabranch.png);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn[data-category="rose"] {
    background-image: url(../img/lineup-category-rose.jpg);
    background-position: center;
}

/* 左に深いブランド色、右は写真がしっかり見える横グラデ */
.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn::before {
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(
        100deg,
        rgba(94, 24, 64, 0.88) 0%,
        rgba(117, 28, 71, 0.78) 24%,
        rgba(117, 28, 71, 0.40) 46%,
        rgba(117, 28, 71, 0.08) 66%,
        rgba(117, 28, 71, 0) 82%
    );
    mask: none;
    -webkit-mask: none;
    opacity: 1;
    z-index: 0;
    transition: background 0.3s ease;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn::after {
    content: '';
    position: absolute;
    left: 24px;
    top: 34px;
    bottom: 34px;
    width: 1px;
    height: auto;
    background: rgba(255, 255, 255, 0.65);
    mask: none;
    -webkit-mask: none;
    opacity: 1;
    z-index: 1;
    pointer-events: none;
    transition: background 0.3s ease, opacity 0.3s ease;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-name {
    position: relative;
    z-index: 1;
    max-width: 58%;
    padding-left: 14px;
    gap: 5px;
    text-align: left;
    align-items: flex-start;
    text-shadow: 0 1px 10px rgba(61, 16, 42, 0.35);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-name-en {
    font-size: 19px;
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1.15;
    white-space: nowrap;
    color: #FFFFFF;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-name-jp {
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.06em;
    line-height: 1.3;
    color: rgba(255, 255, 255, 0.9);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-desc {
    margin-top: 8px;
    padding-top: 0;
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.02em;
    line-height: 1.35;
    white-space: nowrap;
    color: rgba(255, 255, 255, 0.82);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn:hover {
    transform: translateY(-3px);
    border-color: rgba(117, 28, 71, 0.35);
    box-shadow: 0 14px 32px rgba(61, 16, 42, 0.28);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn:hover::before {
    background: linear-gradient(
        100deg,
        rgba(74, 18, 50, 0.90) 0%,
        rgba(94, 24, 64, 0.80) 26%,
        rgba(117, 28, 71, 0.44) 48%,
        rgba(117, 28, 71, 0.10) 68%,
        rgba(117, 28, 71, 0) 84%
    );
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn:hover::after {
    background: rgba(255, 255, 255, 0.9);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn.is-active {
    background-color: transparent;
    border-color: rgba(255, 255, 255, 0.45);
    box-shadow: 0 14px 32px rgba(61, 16, 42, 0.32);
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn.is-active::before {
    background: linear-gradient(
        100deg,
        rgba(74, 18, 50, 0.92) 0%,
        rgba(94, 24, 64, 0.82) 26%,
        rgba(117, 28, 71, 0.46) 48%,
        rgba(117, 28, 71, 0.10) 68%,
        rgba(117, 28, 71, 0) 84%
    );
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn.is-active::after {
    background: #FFFFFF;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn.is-active:hover {
    background-color: transparent;
}

.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn.is-active .lineup-section__main-category-desc {
    color: rgba(255, 255, 255, 0.88);
}

/* ニュースカード同様のホバー装飾（左上・右下＋影） */
.lineup-section__main-category-btn:not([data-category="all"])::before {
    content: '';
    position: absolute;
    left: -30px;
    top: -15px;
    width: 120px;
    height: 120px;
    background-color: #5E1840;
    mask: url(../img/left-top.svg) no-repeat center / contain;
    -webkit-mask: url(../img/left-top.svg) no-repeat center / contain;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.lineup-section__main-category-btn:not([data-category="all"])::after {
    content: '';
    position: absolute;
    right: -15px;
    bottom: -30px;
    width: 120px;
    height: 120px;
    background-color: #5E1840;
    mask: url(../img/right-bottom.svg) no-repeat center / contain;
    -webkit-mask: url(../img/right-bottom.svg) no-repeat center / contain;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.lineup-section__main-category-btn:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.lineup-section__main-category-btn:not([data-category="all"]):hover::before,
.lineup-section__main-category-btn:not([data-category="all"]):hover::after {
    opacity: 0.5;
}

.lineup-section__main-category-btn.is-active {
    background-color: #751C47;
    color: #FFFFFF;
    border-color: #751C47;
}

.lineup-section__main-category-btn.is-active:hover {
    background-color: #5E1840;
    opacity: 1;
}

.lineup-section__main-category-text {
    font-size: 18px;
    font-weight: 600;
    display: block;
}

.lineup-section__main-category-name {
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-align: center;
}

.lineup-section__main-category-name-jp {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: inherit;
}

.lineup-section__main-category-name-en {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 600;
    color: inherit;
}

.lineup-section__main-category-desc {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 600;
    color: #751C47;
    margin: 0;
    padding-top: 8px;
    line-height: 1.6;
    text-align: center;
}

.lineup-section__main-category-btn.is-active .lineup-section__main-category-desc {
    color: rgba(255, 255, 255, 0.9);
}

/* 小カテゴリー一覧 */
.lineup-section__sub-categories-list {
    margin-bottom: 28px;
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
    overflow: hidden;
    position: relative;
}

.lineup-section__sub-categories-scroll {
    display: flex;
    flex-wrap: nowrap;
    gap: 0;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: auto;
    width: 100%;
    padding: 16px 20px 24px;
}

.lineup-section__sub-categories-scroll::-webkit-scrollbar {
    height: 10px;
}

.lineup-section__sub-categories-scroll::-webkit-scrollbar-track {
    background: #f0f0f0;
    border-radius: 5px;
}

.lineup-section__sub-categories-scroll::-webkit-scrollbar-thumb {
    background: #751C47;
    border-radius: 5px;
}

.lineup-section__sub-categories-scroll::-webkit-scrollbar-thumb:hover {
    background: #5E1840;
}

/* スクロール案内（右下に矢印＋「スクロール」・クリックで右にスライド） */
.lineup-section__scroll-indicator {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    padding-right: 4px;
    cursor: pointer;
}

.lineup-section__scroll-indicator.is-no-scroll {
    display: none;
}

.lineup-section__scroll-arrow {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-right: 2px solid #751C47;
    border-bottom: 2px solid #751C47;
    transform: rotate(-45deg);
    flex-shrink: 0;
}

.lineup-section__scroll-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    font-weight: 500;
    color: #751C47;
}

.lineup-section__sub-categories-group {
    margin-bottom: 0;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: auto;
}

.lineup-section__sub-categories-group:not(:first-child) {
    margin-left: 28px;
    padding-left: 28px;
    border-left: 1px solid #d8d8d8;
}

/* daBRANCH / Rose のみ選択時は縦線を非表示 */
.lineup-section__sub-categories-list.is-single-category .lineup-section__sub-categories-group:not(:first-child) {
    margin-left: 0;
    padding-left: 0;
    border-left: none;
}

.lineup-section__sub-categories-group-items {
    display: flex;
    flex-wrap: nowrap;
    align-items: flex-end;
    gap: 20px;
    width: 100%;
}

.lineup-section__sub-categories-group-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    margin: 0 0 20px;
    line-height: 1.5;
    white-space: nowrap;
}

.lineup-section__sub-categories-group .lineup-section__sub-category-item {
    margin-bottom: 0;
}

.lineup-section__sub-category-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    transition: opacity 0.3s ease;
    flex-shrink: 0;
    min-width: 80px;
    user-select: none;
    -webkit-user-select: none;
}

.lineup-section__sub-category-item:hover {
    opacity: 0.7;
}

.lineup-section__sub-category-item-image {
    width: 120px;
    height: 120px;
    overflow: hidden;
    flex-shrink: 0;
}

/* Extra Small 基準(1.0) / Small 1.1 / Medium 1.6 / その他 1.79 */
.lineup-section__sub-category-item[data-sub-category="small"] .lineup-section__sub-category-item-image {
    width: 132px;
    height: 132px;
}

.lineup-section__sub-category-item[data-sub-category="medium"] .lineup-section__sub-category-item-image {
    width: 192px;
    height: 192px;
}

.lineup-section__sub-category-item[data-sub-category="large"] .lineup-section__sub-category-item-image,
.lineup-section__sub-category-item[data-sub-category="earth"] .lineup-section__sub-category-item-image,
.lineup-section__sub-category-item[data-sub-category="square"] .lineup-section__sub-category-item-image,
.lineup-section__sub-category-item[data-sub-category="double"] .lineup-section__sub-category-item-image,
.lineup-section__sub-category-item[data-sub-category="basic"] .lineup-section__sub-category-item-image,
.lineup-section__sub-category-item[data-sub-category="bouquet"] .lineup-section__sub-category-item-image {
    width: 215px;
    height: 215px;
}

.lineup-section__sub-category-item-image {
    isolation: isolate;
}

.lineup-section__sub-category-item-image img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    transform: translateZ(0);
}

.lineup-section__sub-category-item-name {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #333;
    margin: 0;
    text-align: center;
    line-height: 1.4;
}

/* 大カテゴリーコンテンツ */
.lineup-section__main-category-content {
    margin-bottom: 0;
    padding-bottom: 48px;
}

.lineup-section__main-category-content:not(.is-hidden) + .lineup-section__main-category-content:not(.is-hidden) {
    border-top: 1px solid #e5e5e5;
    padding-top: 48px;
}

.lineup-section__main-category-content:last-child {
    padding-bottom: 0;
}

.lineup-section__main-category-content.is-hidden {
    display: none;
}

.lineup-section__sub-categories-group.is-hidden {
    display: none;
}

.lineup-section__main-category-title-wrapper {
    display: flex;
    align-items: flex-end;
    gap: 50px;
    margin-bottom: 28px;
}

.lineup-section__main-category-heading {
    flex-shrink: 0;
}

.lineup-section__main-category-description-toggle {
    display: none;
}

/* PC時：「〜とは」見出し（メインカラー）、説明文の上に表示 */
.lineup-section__main-category-intro {
    display: block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 800;
    color: #751C47;
    margin: 0 0 6px;
    line-height: 1.5;
}

.lineup-section__main-category-description {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 600;
    color: #555;
    line-height: 1.8;
    margin: 0;
}

.lineup-section__main-category-title-jp {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #751C47;
    margin: 0;
    line-height: 1.5;
}

.lineup-section__main-category-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 48px;
    font-weight: 500;
    color: #751C47;
    margin: 0 0 8px;
    line-height: 1.2;
}

/* 小カテゴリー */
.lineup-section__sub-category {
    margin-bottom: 40px;
}

.lineup-section__sub-category:last-child {
    margin-bottom: 0;
}

/* CMS 連携時：各メインカテゴリは「商品一覧」1ブロックのみ表示 */
.lineup-section--cms-loaded .lineup-section__sub-category--hidden-when-cms {
    display: none;
}

.lineup-section__sub-category-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 24px;
    font-weight: 500;
    color: #222;
    margin: 0 0 20px;
    line-height: 1.4;
}

.lineup-section__sub-category-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    gap: 8px 16px;
    margin-bottom: 30px;
}

.lineup-section__sub-category-header .lineup-section__sub-category-title {
    margin: 0;
}

.lineup-section__sub-category-desc {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #555;
    line-height: 1.6;
    white-space: pre-line;
    text-align: left;
    flex-shrink: 0;
}

/* 商品グリッド */
.lineup-section__product-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 40px;
    margin: 0;
}

/* 商品が0件のときのメッセージ（CMS連携時） */
.lineup-section__product-grid-empty {
    grid-column: 1 / -1;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #666;
    text-align: center;
    margin: 24px 0;
    padding: 24px;
}

/* 商品カード */
.lineup-section__product-card {
    border-radius: 0;
    overflow: hidden;
    transition: box-shadow 0.3s ease;
    display: flex;
    flex-direction: column;
}

.lineup-section__product-card:has(.lineup-section__product-link):hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.lineup-section__product-link {
    display: flex;
    flex-direction: column;
    flex: 1;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}

.lineup-section__product-link:hover {
    color: inherit;
}

.lineup-section__product-image {
    width: 100%;
    aspect-ratio: 1 / 1;
    position: relative;
    background-color: #fff;
    overflow: hidden;
    isolation: isolate;
}

.lineup-section__product-image img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center;
    display: block;
}

.lineup-section__product-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #333;
    margin: 0;
    padding: 16px;
    text-align: center;
    line-height: 1.5;
}

.lineup-section__item-description-link {
    display: inline-block;
    flex-shrink: 0;
    margin-top: 0;
    text-align: left;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #751C47;
    cursor: pointer;
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 3px;
    transition: opacity 0.3s ease;
}

.lineup-section__item-description-link:hover {
    opacity: 0.8;
    color: #751C47;
    text-decoration: underline;
    text-decoration-thickness: 2px;
}

/* Line up セクション レスポンシブ（SP） */
@media (max-width: 768px) {
    .lineup-section {
        padding: 24px 0 60px;
        overflow-x: hidden;
    }

    .lineup-section .container {
        width: 100%;
        max-width: 100%;
        padding-left: 15px;
        padding-right: 15px;
        box-sizing: border-box;
    }

    .lineup-section__header {
        margin-bottom: 28px;
    }

    .lineup-section__title {
        font-size: 48px;
        margin-bottom: 8px;
        word-break: break-word;
    }

    .lineup-section__subtitle {
        font-size: 18px;
    }

    .lineup-section__main-categories {
        align-items: stretch;
        gap: 16px;
        margin-bottom: 20px;
        padding: 0;
        max-width: 100%;
    }

    .lineup-section__main-category-btn {
        padding: 10px 16px;
        min-width: 0;
    }

    .lineup-section__main-categories-top {
        min-height: 50px;
        margin-bottom: 4px;
    }

    .lineup-section__main-categories-top .lineup-section__item-description-link {
        left: calc(50% + 60px + 12px);
    }

    .lineup-section__main-category-btn[data-category="all"] {
        width: auto;
        min-width: 120px;
        max-width: none;
    }

    .lineup-section__main-categories-wrapper {
        width: 100%;
        max-width: 100%;
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .lineup-section .lineup-section__main-categories-wrapper {
        gap: 10px;
    }

    .lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn {
        min-height: 132px;
        padding: 20px 16px 20px 18px;
        border-radius: 0;
        background-position: right center;
        background-size: cover;
    }

    .lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn::after {
        left: 18px;
        top: 26px;
        bottom: 26px;
    }

    .lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-name {
        max-width: 62%;
        padding-left: 12px;
    }

    .lineup-section__main-category-text {
        font-size: 16px;
    }

    .lineup-section__main-category-name-jp {
        font-size: 14px;
    }

    .lineup-section__main-category-name-en {
        font-size: 16px;
    }

    .lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-name-en {
        font-size: 16px;
    }

    .lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-name-jp {
        font-size: 12px;
    }

    .lineup-section__item-description-link {
        font-size: 15px;
    }

    .lineup-section__main-category-desc {
        font-size: 15px;
    }

    .lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-desc {
        font-size: 10px;
        margin-top: 4px;
        line-height: 1.3;
        white-space: nowrap;
    }

    .lineup-agent-bar.container {
        padding-left: 15px;
        padding-right: 15px;
        box-sizing: border-box;
    }

    .lineup-agent-bar__text {
        max-width: 100%;
        word-break: break-word;
    }

    .lineup-section__sub-categories-list {
        margin-bottom: 24px;
        padding: 0;
        max-width: 100%;
    }

    .lineup-section__sub-categories-scroll {
        padding: 12px 15px 20px;
        max-width: 100%;
        box-sizing: border-box;
    }

    .lineup-section__sub-categories-scroll::-webkit-scrollbar {
        height: 8px;
    }

    .lineup-section__sub-categories-group:not(:first-child) {
        margin-left: 20px;
        padding-left: 20px;
    }

    .lineup-section__sub-categories-list.is-single-category .lineup-section__sub-categories-group:not(:first-child) {
        margin-left: 0;
        padding-left: 0;
        border-left: none;
    }

    .lineup-section__sub-categories-group {
        min-width: auto;
    }

    .lineup-section__sub-categories-group-items {
        gap: 15px;
    }

    .lineup-section__sub-categories-group-title {
        font-size: 14px;
        margin-bottom: 15px;
    }

    .lineup-section__sub-category-item-image {
        width: 50px;
        height: 50px;
    }

    .lineup-section__sub-category-item[data-sub-category="small"] .lineup-section__sub-category-item-image {
        width: 55px;
        height: 55px;
    }

    .lineup-section__sub-category-item[data-sub-category="medium"] .lineup-section__sub-category-item-image {
        width: 80px;
        height: 80px;
    }

    .lineup-section__sub-category-item[data-sub-category="large"] .lineup-section__sub-category-item-image,
    .lineup-section__sub-category-item[data-sub-category="earth"] .lineup-section__sub-category-item-image,
    .lineup-section__sub-category-item[data-sub-category="square"] .lineup-section__sub-category-item-image,
    .lineup-section__sub-category-item[data-sub-category="double"] .lineup-section__sub-category-item-image,
    .lineup-section__sub-category-item[data-sub-category="basic"] .lineup-section__sub-category-item-image,
    .lineup-section__sub-category-item[data-sub-category="bouquet"] .lineup-section__sub-category-item-image {
        width: 89.5px;
        height: 89.5px;
    }

    .lineup-section__sub-category-item-name {
        font-size: 11px;
    }

    .lineup-section__main-category-content {
        padding-bottom: 60px;
        max-width: 100%;
        min-width: 0;
    }

    .lineup-section__main-category-content:not(.is-hidden) + .lineup-section__main-category-content:not(.is-hidden) {
        padding-top: 60px;
    }

    .lineup-section__main-category-title-wrapper {
        flex-direction: column;
        gap: 8px;
        margin-bottom: 40px;
    }

    .lineup-section__main-category-heading {
        align-self: flex-start;
        text-align: left;
    }

    .lineup-section__main-category-description-wrap {
        display: flex;
        flex-direction: column;
        width: 100%;
    }

    .lineup-section__main-category-intro {
        display: none;
    }

    .lineup-section__main-category-description-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: space-between;
        width: 100%;
        padding: 12px 0;
        font-family: 'Zen Kaku Gothic New', sans-serif;
        font-size: 14px;
        font-weight: 500;
        color: #222;
        background: none;
        border: none;
        border-bottom: 1px solid #ddd;
        cursor: pointer;
        text-align: left;
        appearance: none;
    }

    .lineup-section__main-category-description-toggle::after {
        content: '';
        width: 8px;
        height: 8px;
        border-right: 2px solid #222;
        border-bottom: 2px solid #222;
        transform: rotate(45deg);
        transform-origin: center;
        transition: transform 0.2s ease;
    }

    .lineup-section__main-category-description-wrap.is-open .lineup-section__main-category-description-toggle::after {
        transform: rotate(-135deg);
    }

    .lineup-section__main-category-description {
        font-size: 14px;
        line-height: 1.75;
        max-width: none;
        max-height: 0;
        overflow: hidden;
        margin: 0;
        padding: 0;
        border: none;
        transition: max-height 0.3s ease;
    }

    .lineup-section__main-category-description-wrap.is-open .lineup-section__main-category-description {
        max-height: 500px;
        padding-top: 12px;
    }

    .lineup-section__main-category-title-jp {
        font-family: 'Zen Kaku Gothic New', sans-serif;
        font-size: 17px;
        margin-bottom: 0;
        font-weight: 400;
    }

    .lineup-section__main-category-title {
        font-size: 32px;
        margin-bottom: 6px;
    }

    .lineup-section__sub-category {
        margin-bottom: 32px;
    }

    .lineup-section__sub-category-title {
        font-size: 20px;
        margin-bottom: 16px;
        word-break: break-word;
    }

    .lineup-section__sub-category-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
        margin-bottom: 20px;
    }

    .lineup-section__sub-category-desc {
        font-size: 13px;
        text-align: left;
        word-break: break-word;
        overflow-wrap: break-word;
        min-width: 0;
        max-width: 100%;
    }

    .lineup-section__product-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px;
        min-width: 0;
    }

    .lineup-section__product-card {
        min-width: 0;
    }

    .lineup-section__product-link {
        min-width: 0;
    }

    .lineup-section__product-image {
        min-width: 0;
    }

    .lineup-section__product-label {
        font-size: 13px;
        padding: 10px 8px;
        word-break: break-word;
        overflow-wrap: break-word;
    }

    .lineup-section__product-grid-empty {
        padding: 16px;
        font-size: 14px;
    }
}

@media (max-width: 480px) {
    .lineup-section__product-grid {
        gap: 12px;
    }

    .lineup-section__product-label {
        font-size: 12px;
        padding: 8px 6px;
    }
}

/* ========================================
   Gallery セクション
   ======================================== */
.gallery-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.gallery-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.gallery-section__header .gallery-section__title {
    margin-bottom: 10px;
}

.gallery-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.gallery-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.gallery-section__filter-toggle-wrap {
    display: flex;
    justify-content: center;
    margin: 0 0 28px;
}

.gallery-section__filter-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 240px;
    padding: 12px 28px;
    border: 1px solid #751C47;
    border-radius: 4px;
    background: #fff;
    color: #751C47;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    line-height: 1.4;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.gallery-section__filter-toggle:hover {
    background: #751C47;
    color: #fff;
}

.gallery-section__filter-toggle[aria-expanded="true"] {
    background: #751C47;
    color: #fff;
}

.gallery-section__filter-toggle-icon {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    transition: transform 0.2s ease;
}

.gallery-section__filter-toggle[aria-expanded="true"] .gallery-section__filter-toggle-icon {
    transform: rotate(-135deg) translateY(-1px);
}

.gallery-section__detail-filters {
    display: none;
    margin-bottom: 8px;
}

.gallery-section__detail-filters.is-open,
.gallery-section__detail-filters[aria-hidden="false"] {
    display: block;
}

.gallery-section__detail-filters[hidden] {
    display: none !important;
}

.gallery-section__filters {
    margin-bottom: 48px;
}

@media (max-width: 768px) {
    .gallery-section__filter-toggle-wrap {
        margin: 0 0 28px;
    }

    .gallery-section__filter-toggle {
        width: min(100%, 320px);
        min-width: 0;
        font-size: 14px;
    }
}

.gallery-section__filter-label {
    max-width: 1180px;
    margin: 0 auto 16px;
    padding: 0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #751C47;
    text-align: left;
    line-height: 1.5;
}

.gallery-section #gallery-main-categories-wrap {
    gap: 32px;
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-categories-top {
    min-height: 50px;
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn[data-category="all"] {
    width: auto;
    min-width: 200px;
    max-width: 200px;
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn[data-category="all"]:hover {
    transform: translateX(-50%) translateY(-3px);
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn[data-category="all"]:active {
    transform: translateX(-50%) translateY(0);
}

.gallery-section #gallery-main-categories-wrap .gallery-section__filter-label {
    width: 100%;
    margin: 0;
}

.gallery-section__flower-filters {
    margin-bottom: 48px;
}

.gallery-section__flower-filters .gallery-flower-categories {
    margin-bottom: 0;
}

.gallery-section__filters .lineup-section__main-categories {
    margin-bottom: 32px;
}

/* Gallery: スタイルボタンの装飾を軽くし、クリック可能性を強調 */
.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn {
    transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease, color 0.22s ease, border-color 0.22s ease;
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:not([data-category="all"])::before,
.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:not([data-category="all"])::after {
    opacity: 0;
    transition: opacity 0.22s ease;
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:not([data-category="all"]):hover::before,
.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:not([data-category="all"]):hover::after {
    opacity: 0.5;
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:not([data-category="all"]):hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 18px rgba(117, 28, 71, 0.16);
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:not([data-category="all"]):active {
    transform: translateY(0);
    box-shadow: 0 3px 8px rgba(117, 28, 71, 0.2);
}

.gallery-section #gallery-main-categories-wrap .lineup-section__main-category-btn:focus-visible {
    outline: 2px solid rgba(117, 28, 71, 0.45);
    outline-offset: 2px;
}

/* Line up: 同様のホバー/クリックアクション */
.lineup-section .lineup-section__main-category-btn {
    transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease, color 0.22s ease, border-color 0.22s ease;
}

.lineup-section .lineup-section__main-category-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 18px rgba(117, 28, 71, 0.16);
}

.lineup-section .lineup-section__main-category-btn:active {
    transform: translateY(0);
    box-shadow: 0 3px 8px rgba(117, 28, 71, 0.2);
}

.lineup-section .lineup-section__main-category-btn:focus-visible {
    outline: 2px solid rgba(117, 28, 71, 0.45);
    outline-offset: 2px;
}

/* 既存の花装飾は控えめに表示（背景画像ボタンは除外） */
.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn:hover::before,
.lineup-section .lineup-section__main-categories-wrapper .lineup-section__main-category-btn:hover::after {
    opacity: 1;
}

.lineup-section .lineup-section__main-category-btn:not([data-category="all"]):hover::before,
.lineup-section .lineup-section__main-category-btn:not([data-category="all"]):hover::after {
    opacity: 0.5;
}

/* サイズ絞り込み（簡易ボタン・ALLはスタイル側のみ） */
.gallery-section__size-filters {
    margin-bottom: 32px;
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

.gallery-section__size-filters-wrapper {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    width: 100%;
}

.gallery-section__size-filters .lineup-section__main-category-btn[data-size] {
    width: 100%;
    min-height: 58px;
    text-align: center;
    align-items: center;
    justify-content: center;
    overflow: visible;
}

.gallery-section__size-filters .lineup-section__main-category-btn[data-size]::before,
.gallery-section__size-filters .lineup-section__main-category-btn[data-size]::after {
    display: none;
}

.gallery-section__size-filters .lineup-section__main-category-btn[data-size] {
    transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease, color 0.22s ease, border-color 0.22s ease;
}

.gallery-section__size-filters .lineup-section__main-category-btn[data-size]:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 18px rgba(117, 28, 71, 0.16);
}

.gallery-section__size-filters .lineup-section__main-category-btn[data-size]:active {
    transform: translateY(0);
    box-shadow: 0 3px 8px rgba(117, 28, 71, 0.2);
}

.gallery-section__size-filters .lineup-section__main-category-btn[data-size]:focus-visible {
    outline: 2px solid rgba(117, 28, 71, 0.45);
    outline-offset: 2px;
}

@media (max-width: 768px) {
    .gallery-section__size-filters-wrapper {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
    }
}

/* 花カテゴリ「すべてを表示」（中央・下線） */
.gallery-flower-categories__show-all {
    text-align: center;
    margin: 0 0 24px;
}

.gallery-flower-categories__show-all-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #333;
    border-bottom: 1px solid #333;
    padding-bottom: 2px;
}

/* 花カテゴリ一覧（丸画像＋名前・控えめサイズ） */
.gallery-flower-categories {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 12px 10px;
    margin-bottom: 48px;
    max-width: 100%;
}

.gallery-flower-categories__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    cursor: pointer;
}

.gallery-flower-categories__image-wrap {
    width: 100%;
    aspect-ratio: 1;
    max-width: 72px;
    border-radius: 50%;
    overflow: hidden;
    border: 1px solid rgba(117, 28, 71, 0.18);
    margin: 0 auto 6px;
    background: #fafafa;
    flex-shrink: 0;
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.gallery-flower-categories__item:hover .gallery-flower-categories__image-wrap {
    border-color: rgba(117, 28, 71, 0.35);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.gallery-flower-categories__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.gallery-flower-categories__name {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    font-weight: 400;
    color: #666;
    margin: 0;
    line-height: 1.35;
}

/* Gallery用：小カテゴリ選択中のスタイル */
.gallery-section .lineup-section__sub-category-item.is-active {
    opacity: 1;
}

.gallery-section .lineup-section__sub-category-item.is-active .lineup-section__sub-category-item-name {
    color: #751C47;
    font-weight: 500;
}

.gallery-section__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 40px;
    margin: 0;
    min-height: 200px;
}

.gallery-section__grid.is-loading::before {
    content: '読み込み中…';
    grid-column: 1 / -1;
    text-align: center;
    padding: 48px 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #888;
}

.gallery-section__item {
    border-radius: 0;
    overflow: hidden;
    transition: box-shadow 0.3s ease;
    display: flex;
    flex-direction: column;
}

.gallery-section__item:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.gallery-section__item.is-hidden {
    display: none;
}

.gallery-section__item.is-hidden-flower {
    display: none;
}

.gallery-flower-categories__item.is-active .gallery-flower-categories__image-wrap {
    border: 3px solid #751C47;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.15);
}

.gallery-flower-categories__item.is-active .gallery-flower-categories__name {
    color: #751C47;
    font-weight: 700;
}

.gallery-section__item-image {
    width: 100%;
    aspect-ratio: 1 / 1;
    background-color: #f5f5f5;
    overflow: hidden;
}

.gallery-section__item-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.gallery-section__item-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #333;
    margin: 0;
    padding: 16px;
    text-align: center;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .gallery-section {
        padding: 28px 0 60px;
    }

    .gallery-section__header {
        margin-bottom: 24px;
    }

    .gallery-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .gallery-section__subtitle {
        font-size: 18px;
    }

    .gallery-flower-categories {
        grid-template-columns: repeat(4, 1fr);
        gap: 10px 8px;
        margin-bottom: 32px;
    }

    .gallery-flower-categories__image-wrap {
        max-width: 56px;
    }

    .gallery-flower-categories__name {
        font-size: 11px;
    }

    .gallery-section__grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 20px;
    }

    .gallery-section__item-label {
        font-size: 14px;
        padding: 12px;
    }
}

@media (max-width: 480px) {
    .gallery-flower-categories {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px 12px;
        margin-bottom: 40px;
    }

    .gallery-flower-categories__image-wrap {
        max-width: 100px;
    }

    /* SPでもギャラリー掲載は横2列 */
    .gallery-section__grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
    }

    .gallery-section__item-label {
        font-size: 12px;
        padding: 8px;
    }
}

/* Gallery ポップアップ */
.gallery-popup-overlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(0, 0, 0, 0.6);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, visibility 0.25s ease;
}
.gallery-popup-overlay.is-open {
    opacity: 1;
    visibility: visible;
}
.gallery-popup__inner {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
    overflow: auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
    padding: 24px;
    padding-top: 48px;
}
.gallery-popup__close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 36px;
    height: 36px;
    padding: 0;
    font-size: 28px;
    line-height: 1;
    color: #333;
    background: none;
    border: none;
    cursor: pointer;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease, color 0.2s ease;
}
.gallery-popup__close:hover {
    background: #f0f0f0;
    color: #000;
}
.gallery-popup__image-wrap {
    margin-bottom: 16px;
    border-radius: 4px;
    overflow: hidden;
}
.gallery-popup__image {
    display: block;
    max-width: 100%;
    height: auto;
    max-height: 70vh;
    margin: 0 auto;
}
.gallery-popup__label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 500;
    color: #222;
    margin: 0 0 8px;
    text-align: center;
}
.gallery-popup__footer {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 16px;
    margin-top: 8px;
}
.gallery-popup__description {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #555;
    margin: 0;
    text-align: left;
    white-space: pre-line;
    width: 100%;
}
.gallery-popup__purchase {
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 100%;
    padding-top: 8px;
    border-top: 1px solid #eee;
}
.gallery-popup__choice-title {
    margin: 0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 700;
    color: #333;
}
.gallery-popup__flower-choice {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.gallery-popup__choice-label {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #ddd;
    border-radius: 4px;
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #333;
}
.gallery-popup__choice-label:hover {
    border-color: #751C47;
    background: #faf6f8;
}
.gallery-popup__choice-input {
    width: 18px;
    height: 18px;
    accent-color: #751C47;
    flex-shrink: 0;
}
.gallery-popup__choice-label:has(.gallery-popup__choice-input:checked) {
    border-color: #751C47;
    background: #faf6f8;
}
body.is-agent-logged-in .gallery-popup__choice-label:has(input[value="dabranch"]),
.gallery-popup__choice-label[hidden] {
    display: none;
}
.gallery-popup__choice-text {
    line-height: 1.4;
}
.gallery-popup__actions {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 0;
}
.gallery-popup__buy-btn {
    min-width: 220px;
    text-align: center;
    text-decoration: none;
    border: none;
    cursor: pointer;
}
.gallery-popup__buy-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

/* 見積もり依頼 */
.estimate-section {
    padding: 64px 0 96px;
}
.estimate-section__header {
    text-align: center;
    margin-bottom: 40px;
}
.estimate-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}
.estimate-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    margin: 0 0 16px;
    color: #751C47;
}
.estimate-section__lead {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    line-height: 1.8;
    color: #555;
    margin: 0 auto;
    max-width: 640px;
}
.estimate-section__layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 40px;
    align-items: start;
    max-width: 960px;
    margin: 0 auto;
}
.estimate-section__summary {
    background: #f7f5f6;
    padding: 24px;
    border-radius: 4px;
}
.estimate-section__summary-image-wrap {
    margin-bottom: 16px;
    border-radius: 4px;
    overflow: hidden;
    background: #fff;
}
.estimate-section__summary-image {
    display: block;
    width: 100%;
    height: auto;
}
.estimate-section__summary-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 8px;
    color: #222;
}
.estimate-section__summary-desc {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 13px;
    line-height: 1.7;
    color: #555;
    white-space: pre-line;
    margin: 0 0 16px;
}
.estimate-section__summary-note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #751C47;
    margin: 0;
    line-height: 1.6;
}
.estimate-section__form-wrap {
    max-width: 480px;
}
.estimate-section__message {
    margin-bottom: 16px;
    padding: 12px 14px;
    border-radius: 4px;
    background: #eef7f0;
    color: #1f5c34;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
}
.estimate-section__message.is-error {
    background: #fdeeee;
    color: #8a1f1f;
}
.estimate-section__form-group {
    margin-bottom: 18px;
}
.estimate-section__label {
    display: block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 700;
    margin-bottom: 8px;
    color: #333;
}
.estimate-section__required {
    margin-left: 6px;
    font-size: 12px;
    font-weight: 500;
    color: #c0392b;
}
.estimate-section__input {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    box-sizing: border-box;
}
.estimate-section__input:focus {
    outline: none;
    border-color: #751C47;
}
.estimate-section__agreement {
    margin-top: 8px;
}
.estimate-section__checkbox-label {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #333;
    cursor: pointer;
}
.estimate-section__checkbox {
    margin-top: 3px;
    accent-color: #751C47;
}
.estimate-section__policy-link {
    color: #751C47;
}
.estimate-section__submit-wrapper {
    margin-top: 28px;
}
.estimate-section__submit {
    width: 100%;
    min-height: 52px;
}
.estimate-section--thanks {
    min-height: 50vh;
    display: flex;
    align-items: center;
}
.estimate-section__thanks {
    text-align: center;
    max-width: 640px;
    margin: 0 auto;
    padding: 40px 0;
}
.estimate-section__thanks-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 28px;
    font-weight: 700;
    margin: 0 0 20px;
    color: #222;
}
.estimate-section__thanks-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    line-height: 1.9;
    color: #555;
    margin: 0 0 32px;
}
.estimate-section__thanks-actions {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}
@media (max-width: 768px) {
    .estimate-section {
        padding: 40px 0 72px;
    }
    .estimate-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }
    .estimate-section__layout {
        grid-template-columns: 1fr;
        gap: 28px;
    }
    .estimate-section__form-wrap {
        max-width: none;
    }
}

/* アイテム紹介 画像拡大ポップアップ */
.item-intro-popup-overlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 12px;
    background: rgba(0, 0, 0, 0.6);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, visibility 0.25s ease;
}
.item-intro-popup-overlay.is-open {
    opacity: 1;
    visibility: visible;
}
.item-intro-popup__inner {
    position: relative;
    overflow: auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
    padding: 24px;
    padding-top: 48px;
    box-sizing: border-box;
}
.item-intro-popup__close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 36px;
    height: 36px;
    padding: 0;
    font-size: 28px;
    line-height: 1;
    color: #333;
    background: none;
    border: none;
    cursor: pointer;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease, color 0.2s ease;
}
.item-intro-popup__close:hover {
    background: #f0f0f0;
    color: #000;
}
.item-intro-popup__image-wrap {
    width: 40vw;
    height: 40vh;
    border-radius: 4px;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fafafa;
}
.item-intro-popup__image {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
}
.gallery-section__item-date {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #666;
    margin: 4px 0 0;
}
.gallery-section__item--clickable .gallery-section__item-link {
    cursor: pointer;
    text-decoration: none;
    color: inherit;
}

/* ========================================
   Q&A セクション
   ======================================== */
.qa-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.qa-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.qa-section__header .qa-section__title {
    margin-bottom: 10px;
}

.qa-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.qa-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.qa-section__tabs {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0 24px;
    margin-bottom: 56px;
    padding: 0 15px;
    border-bottom: 1px solid #e0e0e0;
}

.qa-section__tab {
    padding: 12px 4px 14px;
    font-family: 'Montserrat', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #666;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.qa-section__tab:hover {
    color: #5E1840;
}

.qa-section__tab.is-active {
    color: #751C47;
    border-bottom-color: #751C47;
}

.qa-section__list {
    max-width: 800px;
    margin: 0 auto;
}

.qa-section__item {
    border-bottom: 1px solid #e0e0e0;
}

.qa-section__item.is-hidden {
    display: none;
}

.qa-section__item-inner {
    padding: 0 0 4px;
}

.qa-section__question {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 20px 0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    text-align: left;
    background: none;
    border: none;
    cursor: pointer;
    transition: color 0.2s ease;
}

.qa-section__question:hover {
    color: #5E1840;
}

.qa-section__question[aria-expanded="true"] {
    color: #751C47;
}

.qa-section__question-text {
    flex: 1;
    padding-right: 16px;
}

.qa-section__question-icon {
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    transition: transform 0.3s ease;
}

.qa-section__question[aria-expanded="true"] .qa-section__question-icon {
    transform: rotate(-135deg);
}

.qa-section__answer {
    overflow: hidden;
    max-height: 0;
    padding-bottom: 16px;
    transition: max-height 0.3s ease;
}

.qa-section__answer.is-open {
    max-height: 800px;
}

.qa-section__answer p {
    margin: 0 0 20px 0;
    padding: 0 0 20px 0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    line-height: 1.8;
    color: #555;
}

.qa-section__answer p:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
}

@media (max-width: 768px) {
    .qa-section {
        padding: 28px 0 60px;
    }

    .qa-section__header {
        margin-bottom: 24px;
    }

    .qa-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .qa-section__subtitle {
        font-size: 18px;
    }

    .qa-section__tabs {
        gap: 0 16px;
        margin-bottom: 40px;
    }

    .qa-section__tab {
        font-size: 13px;
        padding: 10px 2px 12px;
    }

    .qa-section__question {
        padding: 16px 0;
        font-size: 15px;
    }

    .qa-section__answer p {
        font-size: 14px;
    }
}

/* ========================================
   Contact セクション（お問い合わせ）
   ======================================== */
.contact-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.contact-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.contact-section__header .contact-section__title {
    margin-bottom: 10px;
}

.contact-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.contact-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

/* タブ */
.contact-section__tabs {
    display: flex;
    gap: 0;
    max-width: 720px;
    margin: 0 auto 40px;
    border-bottom: 2px solid #e0e0e0;
}

.contact-section__tab {
    flex: 1;
    padding: 14px 20px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #666;
    background: none;
    border: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.contact-section__tab:hover {
    color: #333;
}

.contact-section__tab.is-active {
    color: #751C47;
    border-bottom-color: #751C47;
}

.contact-section__form-wrapper {
    max-width: 720px;
    margin: 0 auto;
}

/* お電話でのお問い合わせ（フォームと離して中央・目立たせる） */
.contact-section__phone-block {
    width: 100%;
    max-width: 560px;
    margin: 0 auto 72px;
    padding: 20px 24px;
    text-align: center;
    background-color: #f9f5f7;
    border: 2px solid #751C47;
    border-radius: 8px;
    box-sizing: border-box;
}

.contact-section__phone-text {
    display: block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 22px;
    font-weight: 600;
    color: #222;
    margin: 0;
    line-height: 1.5;
}

.contact-section__phone-link {
    display: inline-block;
    margin-top: 2px;
    color: #751C47;
    font-weight: 700;
    font-size: 28px;
    text-decoration: underline;
    text-decoration-color: #751C47;
    text-underline-offset: 4px;
    letter-spacing: 0.08em;
    transition: color 0.2s ease, opacity 0.2s ease;
}

.contact-section__phone-link:hover {
    color: #5E1840;
    opacity: 0.9;
}

.contact-section__label--block {
    display: block;
    margin-bottom: 12px;
}

.contact-section__radio-group {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 48px;
}

.contact-section__radio-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    color: #333;
    cursor: pointer;
}

.contact-section__radio {
    width: 20px;
    height: 20px;
    margin: 0;
    accent-color: #751C47;
}

.contact-section__file {
    width: 100%;
    padding: 10px 14px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #333;
    background-color: #fff;
    border: 2px solid #d0d0d0;
    -webkit-appearance: none;
    appearance: none;
}

.contact-section__file:focus {
    outline: none;
    border-color: #751C47;
}

.contact-section__form {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.contact-section__form-group {
    margin-bottom: 32px;
}

.contact-section__label {
    display: flex;
    align-items: flex-end;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    margin-bottom: 8px;
    line-height: 1.5;
}

.contact-section__required {
    margin-left: 8px;
    padding: 2px 8px;
    font-size: 12px;
    font-weight: 500;
    color: #fff;
    background-color: #C6A867;
    vertical-align: bottom;
}

.contact-section__agreement {
    margin-bottom: 32px;
}

.contact-section__checkbox-label {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #222;
    cursor: pointer;
}

.contact-section__checkbox {
    -webkit-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    margin: 0;
    padding: 0;
    background-color: #fff;
    border: 2px solid #d0d0d0;
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

.contact-section__checkbox:hover {
    border-color: #b0b0b0;
}

.contact-section__checkbox:focus {
    outline: none;
    border-color: #751C47;
}

.contact-section__checkbox:checked {
    background-color: #751C47;
    border-color: #751C47;
    background-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22white%22 stroke-width=%222.5%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpolyline points=%2220 6 9 17 4 12%22%3E%3C/polyline%3E%3C/svg%3E");
    background-size: 14px 14px;
    background-position: center;
    background-repeat: no-repeat;
}

.contact-section__checkbox-text {
    line-height: 1.5;
}

.contact-section__policy-link {
    color: #C6A867;
    text-decoration: underline;
    transition: opacity 0.2s ease;
}

.contact-section__policy-link:hover {
    opacity: 0.8;
}

.contact-section__input,
.contact-section__textarea {
    width: 100%;
    padding: 14px 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    color: #333;
    background-color: #fff;
    border: 2px solid #d0d0d0;
    transition: border-color 0.2s ease;
    -webkit-appearance: none;
    appearance: none;
}

.contact-section__input::placeholder,
.contact-section__textarea::placeholder {
    color: #999;
}

.contact-section__input:hover,
.contact-section__textarea:hover {
    border-color: #b0b0b0;
}

.contact-section__input:focus,
.contact-section__textarea:focus {
    outline: none;
    border-color: #751C47;
}

.contact-section__textarea {
    min-height: 160px;
    resize: vertical;
    line-height: 1.6;
}

.contact-section__submit-wrapper {
    margin-top: 16px;
    margin-bottom: 0;
    text-align: center;
}

.contact-section__submit {
    min-width: 280px;
    padding: 16px 48px;
    background-color: #751C47;
    color: #fff;
    font-size: 17px;
    font-weight: 500;
    border: none;
    transition: background-color 0.2s ease, opacity 0.2s ease;
}

.contact-section__submit:hover {
    background-color: #5E1840;
    opacity: 1;
}

/* 確認ページ */
.contact-section__confirm-wrapper,
.contact-section__thanks-wrapper {
    max-width: 720px;
    margin: 0 auto;
}

.contact-section__confirm-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 24px;
    font-weight: 700;
    color: #222;
    margin: 0 0 12px;
    padding-bottom: 12px;
    border-bottom: 2px solid #751C47;
}

.contact-section__confirm-lead {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #555;
    margin: 0 0 32px;
    line-height: 1.6;
}

.contact-section__confirm-list {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 16px 24px;
    margin: 0 0 40px;
    padding: 24px;
    background-color: #f9f9f9;
    border: 1px solid #e8e8e8;
    border-radius: 4px;
}

.contact-section__confirm-term {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: #333;
    margin: 0;
}

.contact-section__confirm-desc {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    color: #333;
    margin: 0;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-word;
}

.contact-section__confirm-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    justify-content: center;
}

.contact-section__confirm-back {
    min-width: 160px;
    padding: 14px 24px;
    font-size: 16px;
    font-weight: 500;
    color: #751C47;
    background-color: #fff;
    border: 2px solid #751C47;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.contact-section__confirm-back:hover {
    background-color: #751C47;
    color: #fff;
}

/* サンクスページ */
.contact-section__thanks-wrapper {
    text-align: center;
    padding: 40px 0;
}

.contact-section__thanks-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 32px;
    font-weight: 500;
    color: #751C47;
    margin: 0 0 24px;
}

.contact-section__thanks-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    color: #333;
    line-height: 1.8;
    margin: 0 0 40px;
}

.contact-section__thanks-actions {
    margin-top: 24px;
}

@media (max-width: 768px) {
    .contact-section {
        padding: 28px 0 60px;
    }

    .contact-section__header {
        margin-bottom: 28px;
    }

    .contact-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .contact-section__subtitle {
        font-size: 18px;
    }

    .contact-section__form-group {
        margin-bottom: 24px;
    }

    .contact-section__agreement {
        margin-bottom: 24px;
    }

    .contact-section__label {
        font-size: 15px;
    }

    .contact-section__checkbox-label {
        font-size: 15px;
    }

    .contact-section__input,
    .contact-section__textarea {
        padding: 12px 14px;
        font-size: 16px;
    }

    .contact-section__submit {
        min-width: 100%;
        padding: 16px 24px;
    }

    .contact-section__phone-block {
        padding: 16px 20px;
    }

    .contact-section__phone-text {
        font-size: 18px;
    }

    .contact-section__phone-link {
        font-size: 24px;
    }

    .contact-section__radio-group {
        flex-direction: column;
        gap: 16px;
    }

    .contact-section__tab {
        padding: 12px 10px;
        font-size: 14px;
    }

    .contact-section__confirm-list {
        grid-template-columns: 1fr;
        gap: 8px 0;
        padding: 16px;
    }

    .contact-section__confirm-term {
        padding-top: 12px;
        border-top: 1px solid #e0e0e0;
    }

    .contact-section__confirm-term:first-child {
        padding-top: 0;
        border-top: none;
    }

    .contact-section__confirm-actions {
        flex-direction: column;
    }

    .contact-section__confirm-back,
    .contact-section__submit {
        min-width: 100%;
    }

    .contact-section__thanks-title {
        font-size: 24px;
    }

    .contact-section__thanks-text {
        font-size: 15px;
    }
}

/* ========================================
   お持ち込み予約ページ
   ======================================== */
.carry-in-main {
    min-height: 100vh;
    background-color: #FFFFFF;
}

.carry-in-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.carry-in-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.carry-in-section__header .carry-in-section__title {
    margin-bottom: 10px;
}

.carry-in-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.carry-in-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.carry-in-section__body {
    display: grid;
    grid-template-columns: 1fr 400px;
    gap: 40px;
    align-items: start;
}

/* カレンダーカード */
.carry-in-calendar {
    background: #ffffff;
    padding: 28px;
    border: 1px solid #e8e8e8;
}

.carry-in-calendar__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 12px;
}

.carry-in-calendar__today {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #555;
    background: #f0f0f0;
    border: none;
    padding: 8px 16px;
    cursor: pointer;
    transition: background 0.2s ease;
}

.carry-in-calendar__today:hover {
    background: #e5e5e5;
}

.carry-in-calendar__nav {
    display: flex;
    align-items: center;
    gap: 12px;
}

.carry-in-calendar__arrow {
    font-size: 18px;
    font-weight: 600;
    color: #333;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px 8px;
    line-height: 1;
    transition: color 0.2s ease;
}

.carry-in-calendar__arrow:hover {
    color: #751C47;
}

.carry-in-calendar__month {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 600;
    color: #222;
    min-width: 120px;
    text-align: center;
}

.carry-in-calendar__weekdays {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 8px;
    margin-bottom: 8px;
}

.carry-in-calendar__weekday {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    font-weight: 600;
    color: #555;
    text-align: center;
    padding: 0;
    height: 28px;
    line-height: 1;
}

.carry-in-calendar__weekday--sun {
    color: #c00;
}

.carry-in-calendar__weekday--sat {
    color: #00a;
}

.carry-in-calendar__grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 8px;
}

.carry-in-calendar__cell {
    appearance: none;
    -webkit-appearance: none;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    color: #333;
    background: none;
    border: none;
    width: 100%;
    max-width: none;
    height: 36px;
    min-width: 0;
    padding: 0;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
}

.carry-in-calendar__cell:hover:not([data-other="1"]) {
    background: rgba(117, 28, 71, 0.1);
    color: #751C47;
}

.carry-in-calendar__cell--sun {
    color: #c00;
}

.carry-in-calendar__cell--sat {
    color: #00a;
}

.carry-in-calendar__cell--other {
    color: #bbb;
}

.carry-in-calendar__cell--disabled,
.carry-in-calendar__cell:disabled:not([data-other="1"]) {
    color: #bbb;
    cursor: not-allowed;
    opacity: 0.45;
}

.carry-in-calendar__cell--disabled:hover,
.carry-in-calendar__cell:disabled:not([data-other="1"]):hover {
    background: transparent;
}

.carry-in-calendar__cell--selected {
    background: #751C47;
    color: #fff !important;
}

.carry-in-calendar__cell--selected.carry-in-calendar__cell--sun,
.carry-in-calendar__cell--selected.carry-in-calendar__cell--sat {
    color: #fff !important;
}

/* お客様情報フォームカード */
.carry-in-form-card {
    background: #ffffff;
    padding: 28px;
    border: 1px solid #e8e8e8;
}

.carry-in-form__heading {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #222;
    margin: 0 0 24px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.carry-in-form__heading-icon {
    display: inline-block;
    width: 20px;
    height: 20px;
    background: linear-gradient(135deg, #751C47 0%, #9a2d5f 100%);
    opacity: 0.9;
}

.carry-in-form__group {
    margin-bottom: 20px;
}

.carry-in-form__label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: #333;
    display: block;
    margin-bottom: 8px;
}

.carry-in-form__select,
.carry-in-form__input {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    color: #333;
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #ddd;
    background: #fff;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.carry-in-form__select:focus,
.carry-in-form__input:focus {
    outline: none;
    border-color: #751C47;
    box-shadow: 0 0 0 2px rgba(117, 28, 71, 0.15);
}

.carry-in-form__select {
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 40px;
}

.carry-in-form__submit-wrap {
    margin-top: 28px;
}

.carry-in-form__required {
    color: #C0004A;
    margin-right: 2px;
    font-weight: 700;
}

.carry-in-form__submit {
    width: 100%;
    padding: 14px 24px;
    font-size: 16px;
    font-weight: 600;
    background: #C4B8BC;
    color: #fff;
    border: none;
    cursor: not-allowed;
    transition: background 0.25s ease, box-shadow 0.25s ease;
}

.carry-in-form__submit--active {
    background: #751C47;
    cursor: pointer;
}

.carry-in-form__submit--active:hover {
    background: #5E1840;
    box-shadow: 0 4px 16px rgba(117, 28, 71, 0.35);
}

@media (max-width: 768px) {
    .carry-in-section {
        padding: 28px 0 60px;
    }

    .carry-in-section__header {
        margin-bottom: 28px;
    }

    .carry-in-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .carry-in-section__subtitle {
        font-size: 18px;
    }

    .carry-in-section__body {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .carry-in-calendar {
        padding: 16px 12px;
    }

    .carry-in-calendar__month {
        min-width: 0;
        font-size: 14px;
    }

    .carry-in-calendar__weekdays,
    .carry-in-calendar__grid {
        gap: 2px;
    }

    .carry-in-calendar__weekday {
        height: 24px;
        font-size: 12px;
    }

    .carry-in-calendar__cell {
        width: 100%;
        max-width: none;
        height: auto;
        min-height: 36px;
        aspect-ratio: 1;
        font-size: 13px;
    }

    .carry-in-form-card {
        padding: 24px;
    }
}

/* ========================================
   Terms of Service（EC サイト利用規約）
   ======================================== */
.terms-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.terms-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.terms-section__header .terms-section__title {
    margin-bottom: 10px;
}

.terms-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.terms-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.terms-section__content {
    max-width: 800px;
    margin: 0 auto;
}

.terms-section__intro {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.9;
    color: #333;
    margin: 0 0 48px;
}

.terms-section__article {
    margin-bottom: 40px;
}

.terms-section__article:last-of-type {
    margin-bottom: 0;
}

.terms-section__article-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #222;
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e0e0e0;
}

.terms-section__article-body {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.9;
    color: #333;
    margin: 0 0 12px;
}

.terms-section__article-body:last-child {
    margin-bottom: 0;
}

.terms-section__list {
    margin: 0 0 0 1.2em;
    padding: 0;
    list-style-type: disc;
}

.terms-section__list li {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.9;
    color: #333;
    margin-bottom: 6px;
}

.terms-section__list li:last-child {
    margin-bottom: 0;
}

.terms-section__contact {
    margin-top: 56px;
    margin-bottom: 56px;
    padding: 32px;
    background-color: #f8f8f8;
    border: 1px solid #e8e8e8;
}

.terms-section__contact-heading {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    margin: 0 0 8px;
}

.terms-section__contact-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: #333;
    margin: 0 0 16px;
}

.terms-section__company-name {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    margin: 0 0 12px;
}

.terms-section__contact-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.terms-section__contact-list li {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    line-height: 1.8;
    color: #333;
}

@media (max-width: 768px) {
    .terms-section {
        padding: 28px 0 60px;
    }

    .terms-section__header {
        margin-bottom: 28px;
    }

    .terms-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .terms-section__subtitle {
        font-size: 18px;
    }

    .terms-section__intro {
        font-size: 15px;
        margin-bottom: 36px;
    }

    .terms-section__article {
        margin-bottom: 32px;
    }

    .terms-section__article-title {
        font-size: 17px;
        margin-bottom: 10px;
    }

    .terms-section__article-body,
    .terms-section__list li {
        font-size: 15px;
    }

    .terms-section__contact {
        margin-top: 40px;
        padding: 24px 20px;
    }

    .terms-section__contact-heading,
    .terms-section__contact-text,
    .terms-section__company-name {
        font-size: 15px;
    }

    .terms-section__contact-list li {
        font-size: 14px;
    }
}

/* ========================================
   Policy ページ（特定商取引・利用規約・プライバシー タブ）
   ======================================== */
.policy-section__header {
    margin-bottom: 48px;
}

.policy-tabs {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0 4px;
    margin-bottom: 56px;
    border-bottom: 2px solid #e0e0e0;
}

.policy-tab {
    padding: 14px 24px 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #666;
    background: none;
    border: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.policy-tab:hover {
    color: #333;
}

.policy-tab.policy-tab--active {
    color: #751C47;
    border-bottom-color: #751C47;
}

.policy-panel {
    display: none;
}

.policy-panel.policy-panel--active {
    display: block;
}

@media (max-width: 768px) {
    .policy-section__header {
        margin-bottom: 32px;
    }

    .policy-tabs {
        gap: 0 2px;
        margin-bottom: 40px;
    }

    .policy-tab {
        padding: 12px 12px 14px;
        font-size: 13px;
    }
}

/* ========================================
   daBRANCHの想い（Our Philosophy）
   ======================================== */
.philosophy-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.philosophy-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.philosophy-section__header .philosophy-section__title {
    margin-bottom: 10px;
}

.philosophy-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.philosophy-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.philosophy-section__lead {
    max-width: 900px;
    margin: 0 auto 56px;
}

.philosophy-section__lead-img {
    width: 100%;
    height: auto;
    display: block;
    vertical-align: middle;
}

.philosophy-section__content {
    max-width: 900px;
    margin: 0 auto;
}

.philosophy-section__block {
    margin-bottom: 24px;
}

.philosophy-section__block:last-of-type {
    margin-bottom: 48px;
}

.philosophy-section__heading {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 600;
    color: #222;
    margin: 0 0 20px;
    line-height: 1.4;
}

.philosophy-section__body {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 400;
    color: #333;
    line-height: 1.9;
}

.philosophy-section__body p {
    margin: 0 0 1em;
}

.philosophy-section__body p:last-child {
    margin-bottom: 0;
}

.philosophy-section__block--with-image .philosophy-section__block-inner {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 48px;
    align-items: center;
}

.philosophy-section__block--reverse .philosophy-section__block-inner {
    direction: rtl;
}

.philosophy-section__block--reverse .philosophy-section__block-inner > * {
    direction: ltr;
}

.philosophy-section__block-text {
    min-width: 0;
}

.philosophy-section__block-image {
    overflow: hidden;
}

.philosophy-section__block-image img {
    width: 100%;
    height: auto;
    display: block;
    vertical-align: middle;
}

.philosophy-section__footer-img {
    margin: 0 auto;
}

.philosophy-section__footer-img img {
    width: 100%;
    height: auto;
    display: block;
    vertical-align: middle;
}

/* 製造工程 The Crafting Process */
.crafting-process {
    max-width: 900px;
    margin: 64px auto 0;
    padding-top: 56px;
    border-top: 1px solid #e0e0e0;
}

.crafting-process__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 32px;
    font-weight: 600;
    color: #222;
    text-align: center;
    margin: 0 0 8px;
}

.crafting-process__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 500;
    color: #555;
    text-align: center;
    margin: 0 0 32px;
}

.crafting-process__intro {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 400;
    color: #333;
    line-height: 1.9;
    text-align: center;
    margin: 0 0 48px;
}

.crafting-process__item {
    display: grid;
    grid-template-columns: 472px 380px;
    gap: 48px;
    align-items: center;
    margin-bottom: 56px;
}

.crafting-process__item:last-child {
    margin-bottom: 0;
}

.crafting-process__item--reverse {
    grid-template-columns: 380px 472px;
}

.crafting-process__item--reverse .crafting-process__item-content {
    order: 2;
}

.crafting-process__item--reverse .crafting-process__item-image,
.crafting-process__item--reverse .crafting-process__item-images {
    order: 1;
}

.crafting-process__item-title {
    margin: 0 0 16px;
    line-height: 1.4;
}

.crafting-process__item-title-num {
    display: block;
    font-family: 'Montserrat', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #751C47;
    margin-bottom: 8px;
}

.crafting-process__item-title-line {
    display: block;
}

.crafting-process__item-title-line--en {
    font-family: 'Montserrat', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: #222;
}

.crafting-process__item-title-line--ja {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #555;
    margin-top: 2px;
}

.crafting-process__item-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 400;
    color: #333;
    line-height: 1.9;
    margin: 0;
}

.crafting-process__item-image {
    overflow: hidden;
    border-radius: 4px;
    width: 380px;
    max-width: 100%;
    height: 253px;
}

.crafting-process__item-image img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    vertical-align: middle;
}

.crafting-process__item-images {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    overflow: hidden;
    border-radius: 4px;
    width: 380px;
    max-width: 100%;
}

.crafting-process__item-images img {
    width: 100%;
    height: 253px;
    display: block;
    object-fit: cover;
    vertical-align: middle;
}

@media (max-width: 768px) {
    .crafting-process {
        margin-top: 48px;
        padding-top: 40px;
    }

    .crafting-process__title {
        font-size: 24px;
    }

    .crafting-process__subtitle {
        font-size: 16px;
        margin-bottom: 24px;
    }

    .crafting-process__intro {
        font-size: 15px;
        margin-bottom: 32px;
    }

    .crafting-process__item {
        grid-template-columns: 1fr;
        gap: 24px;
        margin-bottom: 40px;
    }

    .crafting-process__item--reverse .crafting-process__item-content,
    .crafting-process__item--reverse .crafting-process__item-image,
    .crafting-process__item--reverse .crafting-process__item-images {
        order: unset;
    }

    .crafting-process__item-image {
        order: -1;
    }

    .crafting-process__item--reverse .crafting-process__item-image,
    .crafting-process__item--reverse .crafting-process__item-images {
        order: -1;
    }

    .crafting-process__item-title-num {
        font-size: 12px;
    }

    .crafting-process__item-title-line--en {
        font-size: 16px;
    }

    .crafting-process__item-title-line--ja {
        font-size: 14px;
    }

    .crafting-process__item-text {
        font-size: 14px;
    }

    .crafting-process__item-image {
        width: 100%;
        height: 220px;
    }

    .crafting-process__item-images {
        width: 100%;
        grid-template-columns: 1fr;
    }

    .crafting-process__item-images img {
        height: 220px;
    }
}

@media (max-width: 768px) {
    .philosophy-section {
        padding: 28px 0 60px;
    }

    .philosophy-section__header {
        margin-bottom: 28px;
    }

    .philosophy-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .philosophy-section__subtitle {
        font-size: 18px;
    }

    .philosophy-section__lead {
        margin-bottom: 40px;
    }

    .philosophy-section__block {
        margin-bottom: 40px;
    }

    .philosophy-section__block:last-of-type {
        margin-bottom: 32px;
    }

    .philosophy-section__heading {
        font-size: 18px;
        margin-bottom: 16px;
    }

    .philosophy-section__body {
        font-size: 15px;
    }

    .philosophy-section__block--with-image .philosophy-section__block-inner {
        grid-template-columns: 1fr;
        gap: 24px;
        direction: ltr;
    }

    .philosophy-section__block--reverse .philosophy-section__block-inner {
        direction: ltr;
    }

    .philosophy-section__block-image {
        order: -1;
    }
}

/* ========================================
   アイテム紹介（daBRANCHの想いページ内）
   ======================================== */
.item-intro {
    max-width: 1180px;
    margin: 64px auto 0;
    padding-top: 56px;
    padding-bottom: 80px;
    width: 100%;
    box-sizing: border-box;
}

.item-intro__main-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #2b2b2b;
    text-align: left;
    margin: 0 0 32px;
    letter-spacing: 0.04em;
}

.item-intro__block {
    margin-bottom: 56px;
}

.item-intro__block:last-child {
    margin-bottom: 0;
}

.item-intro__heading {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #2b2b2b;
    margin: 0 0 24px;
    padding-bottom: 12px;
    border-bottom: 1px solid #c9c2b6;
    letter-spacing: 0.04em;
}

.item-intro img {
    cursor: pointer;
}

.item-intro__mat-section img,
.item-intro__preview-frame img {
    cursor: default;
}

/* 共通：プレビュー（左カラムの小さなフレーム見本） */
.item-intro__color-section {
    display: flex;
    align-items: flex-start;
    gap: 28px;
}

.item-intro__preview-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex-shrink: 0;
    width: 100px;
}

.item-intro__preview-frame {
    width: 100px;
    background: transparent;
    padding: 0;
    box-sizing: border-box;
    display: block;
}

.item-intro__preview-frame .item-intro__preview-img {
    display: block;
    width: 100px;
    height: 124px;
    margin: 0 auto;
    object-fit: contain;
}

.item-intro__preview-note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 10px;
    color: #777;
    margin: 8px 0 0;
    text-align: center;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

/* フレームカラー */
.item-intro__frame-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 28px;
    min-width: 0;
}

.item-intro__frame-row {
    display: flex;
    gap: 32px;
    align-items: flex-start;
    flex-wrap: wrap;
}

.item-intro__frame-group-inline {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    min-width: 0;
}

.item-intro__frame-size-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #555;
    margin: 0;
    align-self: stretch;
    display: flex;
    align-items: center;
    padding-bottom: 24px;
    flex-shrink: 0;
    letter-spacing: 0.02em;
}

.item-intro__frame-grid {
    display: grid;
    grid-template-columns: repeat(4, 110px);
    gap: 12px 18px;
}

.item-intro__frame-grid--inline {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
}

.item-intro__frame-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    width: 100px;
}

.item-intro__frame-item img {
    width: 100%;
    height: auto;
    display: block;
    margin-bottom: 8px;
}

.item-intro__frame-item span {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #555;
    letter-spacing: 0.02em;
}

/* マットカラー */
.item-intro__mat-section {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) minmax(0, 2.2fr);
    gap: 40px;
    align-items: flex-start;
}

.item-intro__mat-basic-block,
.item-intro__mat-special-block {
    display: flex;
    align-items: flex-start;
    gap: 24px;
}

.item-intro__mat-image-wrap {
    flex-shrink: 0;
    text-align: center;
}

.item-intro__mat-style-note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 11px;
    font-weight: 500;
    color: #5E1840;
    margin: 0 0 8px;
    line-height: 1.35;
    letter-spacing: 0.02em;
}

.item-intro__mat-basic-block .item-intro__mat-style-note {
    max-width: 168px;
    margin-left: auto;
    margin-right: auto;
}

.item-intro__mat-shapes .item-intro__mat-style-note {
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}

.item-intro__mat-img {
    width: 110px;
    height: auto;
    display: block;
    margin: 0 auto;
    object-fit: contain;
}

/* ベーシックマット：スクエアマット等と同じ表示枠（100×124px） */
.item-intro__mat-basic-block .item-intro__mat-img {
    width: 100px;
    height: 124px;
    object-fit: contain;
}

.item-intro__mat-shapes .item-intro__mat-img {
    width: 100px;
    height: 124px;
    object-fit: contain;
}

.item-intro__mat-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #555;
    margin: 8px 0 0;
    letter-spacing: 0.02em;
}

.item-intro__mat-size {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 10px;
    color: #888;
    margin: 2px 0 0;
    letter-spacing: 0.02em;
}

.item-intro__mat-shapes {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    flex-wrap: wrap;
}

.item-intro__mat-info {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-top: 4px;
}

/* スウォッチ（円形カラー見本） */
.item-intro__color-swatches {
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: flex-start;
}

.item-intro__swatch {
    display: flex;
    align-items: center;
    gap: 12px;
}

.item-intro__swatch-circle {
    position: relative;
    display: inline-block;
    width: 22px;
    height: 22px;
    min-width: 22px;
    min-height: 22px;
    border-radius: 50%;
    border: 1px solid rgba(0, 0, 0, 0.08);
    flex-shrink: 0;
    overflow: hidden;
    box-sizing: border-box;
    vertical-align: middle;
    line-height: 0;
}

.item-intro__swatch-circle--offwhite {
    background-color: #F9F4E9;
}

.item-intro__swatch-circle--lightgray {
    background-color: #c0bdb0;
}

.item-intro__swatch-circle--black {
    background-color: #1a1a1a;
}

.item-intro__swatch-circle--meshbrown {
    background-color: #c8b89a;
}

.item-intro__swatch-circle--meshbrown::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: url("../img/swatch-matt-texture.png") center center / cover no-repeat;
}

.item-intro__swatch-circle--white {
    background-color: #F2F1ED;
}

.item-intro__swatch-circle--pinkbeige {
    background-color: #efcfc0;
}

.item-intro__swatch-circle--sandbeige {
    background-color: #e4d5b8;
}

.item-intro__swatch-circle--gray {
    background-color: #aaa6a0;
}

.item-intro__swatch-circle--olive {
    background-color: #807a23;
}

.item-intro__swatch-circle--mistyblue {
    background-color: #c4cbcb;
}

.item-intro__swatch-name {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #555;
    letter-spacing: 0.02em;
}

.item-intro__mat-color-note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 10px;
    color: #888;
    margin: 8px 0 0;
    line-height: 1.7;
    letter-spacing: 0.02em;
}

/* ベースカラー & レーベルワードの2カラム */
.item-intro__bottom-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 56px;
    align-items: flex-start;
}

.item-intro__base-swatches {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 24px;
    align-content: start;
}

/* レーベルワード */
.item-intro__label-row {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.item-intro__label-images {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 14px;
    width: 100%;
}

.item-intro__label-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    width: 100%;
}

.item-intro__label-item img {
    width: 100%;
    height: auto;
    display: block;
    margin-bottom: 8px;
    object-fit: contain;
}

.item-intro__label-item span {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #555;
    letter-spacing: 0.02em;
}

.item-intro__label-item--double {
    width: 100%;
}

.item-intro__label-dabranch-imgs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 8px;
    width: 100%;
}

.item-intro__label-dabranch-imgs img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: contain;
}

.item-intro__label-item-caption {
    display: block;
    text-align: center;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 12px;
    color: #555;
    letter-spacing: 0.02em;
}

.item-intro__label-desc {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 13px;
    color: #444;
    line-height: 1.9;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.item-intro__label-desc p {
    margin: 0;
}

/* レスポンシブ */
@media (max-width: 900px) {
    .item-intro__mat-section {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .item-intro__bottom-row {
        grid-template-columns: 1fr;
        gap: 40px;
    }
}

@media (max-width: 768px) {
    .item-intro {
        margin-top: 32px;
        padding-top: 32px;
        padding-bottom: 56px;
    }

    .item-intro__main-title {
        margin-bottom: 20px;
        font-size: 16px;
    }

    .item-intro__block {
        margin-bottom: 36px;
    }

    .item-intro__heading {
        font-size: 14px;
        margin-bottom: 16px;
    }

    /* フレームカラー：プレビューを上段・フレーム一覧を下段に */
    .item-intro__color-section {
        flex-direction: column;
        gap: 12px;
    }

    .item-intro__preview-col {
        flex-direction: row;
        align-items: center;
        gap: 10px;
        width: 100%;
    }

    .item-intro__preview-frame {
        width: 100px;
        flex-shrink: 0;
    }

    .item-intro__preview-frame .item-intro__preview-img {
        width: 100px;
        height: 124px;
        object-fit: contain;
    }

    .item-intro__preview-note {
        margin: 0;
        text-align: left;
        white-space: normal;
        font-size: 11px;
    }

    .item-intro__frame-content {
        width: 100%;
    }

    .item-intro__frame-row {
        flex-direction: column;
        gap: 16px;
    }

    /* サイズラベルを上・画像グリッドを下に縦積み */
    .item-intro__frame-group-inline {
        flex-direction: column;
        gap: 8px;
    }

    .item-intro__frame-size-label {
        padding-bottom: 0;
        font-size: 13px;
        align-self: flex-start;
        display: block;
    }

    .item-intro__frame-grid--inline {
        flex-wrap: wrap;
        gap: 8px 10px;
    }

    .item-intro__frame-item {
        width: 72px;
    }

    /* マット */
    .item-intro__mat-section {
        grid-template-columns: 1fr;
        gap: 28px;
    }

    .item-intro__mat-basic-block,
    .item-intro__mat-special-block {
        flex-direction: column;
        gap: 14px;
    }

    .item-intro__mat-shapes {
        gap: 10px;
        flex-wrap: wrap;
    }

    .item-intro__mat-shapes .item-intro__mat-image-wrap {
        flex: 1 1 80px;
        max-width: 130px;
    }

    /* ベースカラー */
    .item-intro__bottom-row {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .item-intro__base-swatches {
        grid-template-columns: 1fr 1fr;
        gap: 10px 16px;
    }

    /* レーベルワード */
    .item-intro__label-images {
        grid-template-columns: 1fr 1fr;
    }

    .item-intro__label-desc {
        font-size: 12px;
        gap: 2px;
    }
}

/* ========================================
   Company（会社情報）
   ======================================== */
.company-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.company-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.company-section__header .company-section__title {
    margin-bottom: 10px;
}

.company-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.company-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.company-section__content {
    max-width: 800px;
    margin: 0 auto;
}

.company-section__info {
    margin: 0 0 48px;
    padding: 0;
}

.company-section__row {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 0;
    align-items: start;
    border-bottom: 1px solid #e8e8e8;
    padding: 21px 0;
}

.company-section__row:first-child .company-section__term,
.company-section__row:first-child .company-section__desc {
    padding-top: 0;
}

.company-section__term {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.8;
    color: #222;
    margin: 0;
    padding-left: 12px;
}

.company-section__desc {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.8;
    color: #333;
}

.company-section__desc a {
    color: #751C47;
    text-decoration: none;
}

.company-section__desc a:hover {
    text-decoration: underline;
}

.company-section__address {
    margin: 0 0 16px;
}

.company-section__map-wrap {
    margin-top: 16px;
    border-radius: 8px;
    overflow: hidden;
    border: 1px solid #e0e0e0;
}

.company-section__map {
    display: block;
    vertical-align: middle;
}

.company-section__map-link-wrap {
    margin: 12px 0 0;
}

.company-section__map-link {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    color: #751C47;
    text-decoration: underline;
}

.company-section__map-link:hover {
    opacity: 0.85;
}

.company-section__contact-block {
    padding: 32px 24px;
    background-color: #f9f5f7;
    border: 2px solid #751C47;
    border-radius: 8px;
}

.company-section__contact-title {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 600;
    color: #222;
    margin: 0;
}

.company-section__contact-title-ja {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #555;
    margin: 0 0 16px;
}

.company-section__contact-item {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.8;
    color: #333;
    margin: 0 0 8px;
}

.company-section__contact-item:last-child {
    margin-bottom: 0;
}

.company-section__contact-item a {
    color: #751C47;
    text-decoration: none;
}

.company-section__contact-item a:hover {
    text-decoration: underline;
}

@media (max-width: 768px) {
    .company-section {
        padding: 28px 0 60px;
    }

    .company-section__header {
        margin-bottom: 28px;
    }

    .company-section__title {
        font-size: 48px;
    }

    .company-section__subtitle {
        font-size: 18px;
    }

    .company-section__row {
        grid-template-columns: 120px 1fr;
    }

    .company-section__map {
        height: 300px;
    }
}

/* ========================================
   Recruit（採用情報）
   ======================================== */
.recruit-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background-color: #FFFFFF;
}

.recruit-section__header {
    text-align: center;
    margin-bottom: var(--page-title-margin-bottom);
}

.recruit-section__header .recruit-section__title {
    margin-bottom: 10px;
}

.recruit-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 80px;
    font-weight: 400;
    color: #222;
    text-align: center;
    margin: 0 0 10px;
    line-height: 1.2;
}

.recruit-section__subtitle {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 500;
    color: #222;
    text-align: center;
    margin: 0;
}

.recruit-section__content {
    max-width: 800px;
    margin: 0 auto;
}

.recruit-section__intro {
    margin-bottom: 80px;
}

.recruit-section__intro > .recruit-section__intro-text {
    text-align: center;
}

.recruit-section__intro-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 700;
    color: #222;
    margin: 0 0 20px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e0e0e0;
}

.recruit-section__intro-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.9;
    color: #333;
    margin: 0 0 16px;
}

.recruit-section__intro-text:last-child {
    margin-bottom: 0;
}

.recruit-section__job {
    margin-bottom: 80px;
}

.recruit-section__job:last-of-type {
    margin-bottom: 48px;
}

.recruit-section__job-head {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: #222;
    margin: 0 0 24px;
    padding-bottom: 12px;
    border-bottom: 2px solid #751C47;
}

.recruit-section__job-dot {
    flex-shrink: 0;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background-color: #751C47;
}

.recruit-section__job-item {
    margin-bottom: 24px;
}

.recruit-section__job-item:last-child {
    margin-bottom: 0;
}

.recruit-section__job-label {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    margin: 0 0 8px;
}

.recruit-section__job-body {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.9;
    color: #333;
}

.recruit-section__job-body p {
    margin: 0 0 12px;
}

.recruit-section__job-body p:last-child {
    margin-bottom: 0;
}

.recruit-section__job-body .recruit-section__list {
    margin-top: 12px;
}

.recruit-section__job-note {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    line-height: 1.7;
    color: #666;
    margin: 8px 0 0;
}

.recruit-section__list {
    margin: 0 0 0 1.2em;
    padding: 0;
    list-style-type: disc;
}

.recruit-section__list--benefits {
    margin: 24px 0 0 0;
    list-style: none;
}

.recruit-section__list--benefits li {
    position: relative;
    padding-left: 1.4em;
}

.recruit-section__list--benefits li::before {
    content: '○';
    position: absolute;
    left: 0;
}

.recruit-section__list li {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    line-height: 1.9;
    color: #333;
    margin-bottom: 6px;
}

.recruit-section__list li:last-child {
    margin-bottom: 0;
}

.recruit-section__apply {
    margin-top: 48px;
    padding-top: 40px;
    border-top: 1px solid #e0e0e0;
}

.recruit-section__apply-title {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 20px;
    font-weight: 700;
    color: #222;
    margin: 0 0 24px;
}

.recruit-section__cta {
    margin-top: 32px;
    text-align: left;
}

.recruit-section__contact-btn {
    display: inline-block;
    padding: 16px 48px;
    background-color: #751C47;
    color: #fff;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 500;
    text-decoration: none;
    transition: background-color 0.2s ease, opacity 0.2s ease;
    margin-bottom: 32px;
}

.recruit-section__contact-btn:hover {
    background-color: #5E1840;
    opacity: 1;
}

@media (max-width: 768px) {
    .recruit-section {
        padding: 28px 0 60px;
    }

    .recruit-section__header {
        margin-bottom: 28px;
    }

    .recruit-section__title {
        font-size: 48px;
        margin-bottom: 8px;
    }

    .recruit-section__subtitle {
        font-size: 18px;
    }

    .recruit-section__intro {
        margin-bottom: 40px;
    }

    .recruit-section__intro-title {
        font-size: 18px;
    }

    .recruit-section__intro-text {
        font-size: 15px;
    }

    .recruit-section__job {
        margin-bottom: 40px;
    }

    .recruit-section__job-head {
        font-size: 16px;
        flex-wrap: wrap;
        gap: 8px;
    }

    .recruit-section__job-label,
    .recruit-section__job-body,
    .recruit-section__list li {
        font-size: 15px;
    }

    .recruit-section__cta {
        margin-top: 24px;
    }

    .recruit-section__contact-btn {
        display: block;
        width: 100%;
        max-width: 320px;
        margin: 0 auto;
        padding: 16px 24px;
        text-align: center;
        box-sizing: border-box;
    }
}

/* ========================================
   持ち込み連絡セクション
   ======================================== */
.reservation-section {
    position: relative;
    padding: 60px 0;
    text-align: center;
}

/* バナーコンテナ */
.reservation-section__banner {
    max-width: 400px;
    border: 2px solid #751C47;
    margin: 0 auto;
    position: relative;
}

/* 吹き出し要素 */
.reservation-section__callout {
    position: relative;
    width: 100%;
    margin: 0 auto -22px;
    background-color: #FFFFFF;
    padding: 10px 18px;
    z-index: 10;
}

.reservation-section__callout::after {
    content: '';
    position: absolute;
    bottom: -11px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 11px solid transparent;
    border-right: 11px solid transparent;
    border-top: 11px solid #FFFFFF;
}

.reservation-section__callout-text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #222;
    margin: 0;
    line-height: 1.6;
    text-align: center;
}

.reservation-section__content {
    width: 100%;
    background-color: #751C47;
    padding: 36px 22px 28px;
    text-align: center;
}

.reservation-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 44px;
    font-weight: 300;
    color: #EAEAEA;
    margin: 0 0 20px;
    line-height: 1.2;
    letter-spacing: 0.02em;
}

.reservation-section__description {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 400;
    color: #EAEAEA;
    margin: 0 0 28px;
    line-height: 1.6;
}

.reservation-section__button-wrapper {
    text-align: center;
    margin-top: 0;
}

.reservation-section__button {
    display: inline-block;
    padding: 10px 28px;
    background-color: transparent;
    color: #EAEAEA;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 500;
    border: 1px solid #EAEAEA;
    text-decoration: none;
    transition: all 0.3s ease;
    line-height: 1.5;
}

.reservation-section__button:hover {
    background-color: #5E1840;
    opacity: 0.9;
}

/* 持ち込み連絡セクション レスポンシブ（SP） */
@media (max-width: 768px) {
    .reservation-section {
        padding: 48px 15px;
    }

    .reservation-section__banner {
        max-width: 100%;
    }

    .reservation-section__callout {
        padding: 14px 18px;
    }

    .reservation-section__callout::after {
        bottom: -10px;
        border-left-width: 10px;
        border-right-width: 10px;
        border-top-width: 10px;
    }

    .reservation-section__callout-text {
        font-size: 13px;
    }

    .reservation-section__content {
        padding: 32px 20px 26px;
    }

    .reservation-section__title {
        font-size: 40px;
        margin-bottom: 18px;
    }

    .reservation-section__description {
        font-size: 13px;
        margin-bottom: 24px;
    }

    .reservation-section__button {
        padding: 9px 24px;
        font-size: 13px;
    }
}

@media (max-width: 480px) {
    .reservation-section {
        padding: 40px 15px;
    }

    .reservation-section__title {
        font-size: 32px;
    }

    .reservation-section__callout {
        padding: 12px 16px;
    }

    .reservation-section__callout-text {
        font-size: 12px;
    }

    .reservation-section__content {
        padding: 28px 16px 22px;
    }

    .reservation-section__description {
        font-size: 12px;
    }

    .reservation-section__button {
        padding: 8px 20px;
        font-size: 12px;
    }
}

/* ========================================
   代理店コードページ（ロゴのみヘッダー）
   ======================================== */
.agent-code-page {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background-color: #FFFFFF;
}

.agent-code-header {
    flex-shrink: 0;
    padding: 20px 0;
    border-bottom: 1px solid #e0e0e0;
    background-color: #FFFFFF;
}

.agent-code-header__inner {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 15px;
}

.agent-code-header__logo {
    display: inline-block;
    line-height: 0;
}

.agent-code-header__logo-img {
    height: auto;
    max-height: 50px;
    width: auto;
    display: block;
}

.agent-code-main {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 15px;
}

.agent-code-section {
    width: 100%;
    max-width: 400px;
}

.agent-code-section__lead {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 500;
    color: #222;
    margin: 0 0 24px;
    text-align: center;
    line-height: 1.6;
}

.agent-code-form__field {
    margin-bottom: 20px;
}

.agent-code-form__label {
    display: block;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: #333;
    margin-bottom: 8px;
}

.agent-code-form__input {
    width: 100%;
    padding: 12px 16px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    color: #222;
    border: 1px solid #ccc;
    background-color: #FFFFFF;
    box-sizing: border-box;
}

.agent-code-form__input::placeholder {
    color: #999;
}

.agent-code-form__input:focus {
    outline: none;
    border-color: #751C47;
}

.agent-code-form__venue {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 16px;
    font-weight: 500;
    color: #751C47;
    margin: 0 0 24px;
    min-height: 1.5em;
}

.agent-code-form__venue.is-hidden {
    display: none;
}

.agent-code-form__submit {
    text-align: center;
}

.agent-code-form__btn {
    display: inline-block;
    min-width: 200px;
    max-width: 100%;
    padding: 14px 32px;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 17px;
    font-weight: 500;
    line-height: 1.55;
    color: #FFFFFF;
    background-color: #751C47;
    border: none;
    cursor: pointer;
    transition: background-color 0.12s ease, color 0.12s ease;
    white-space: normal;
    text-align: center;
}

.agent-code-form__btn-venue {
    display: inline-block;
}

.agent-code-form__btn:hover {
    background-color: #5E1840;
}

.agent-code-form__btn:disabled,
.agent-code-form__btn.agent-code-form__btn--inactive {
    background-color: #b8b8b8;
    color: #f0f0f0;
    cursor: not-allowed;
    opacity: 1;
}

.agent-code-form__btn:disabled:hover,
.agent-code-form__btn.agent-code-form__btn--inactive:hover {
    background-color: #b8b8b8;
}

.agent-code-section__no-code {
    margin-top: 20px;
    text-align: center;
}

.agent-code-section__no-code-link {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 500;
    line-height: 1.5;
    color: #751C47;
    text-decoration: underline;
    cursor: pointer;
}

.agent-code-section__no-code-link:hover {
    color: #5E1840;
}

/* ========================================
   フローティングボタン（店頭購入案内・Line up / Gallery のみ）
   モダンで分かりやすいカード型
   ======================================== */
.floating-btn {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 1000;
    display: inline-flex;
    max-width: calc(100vw - 48px);
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.floating-btn:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(94, 24, 64, 0.35);
}

.floating-btn__inner {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 20px 24px;
    background-color: #C6A867;
    border-radius: 6px;
    color: #FFFFFF;
    font-family: 'Zen Kaku Gothic New', sans-serif;
    text-align: left;
    box-shadow: 0 8px 12px rgba(117, 28, 71, 0.15);
}

.floating-btn__text-block {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.floating-btn__text {
    display: block;
    font-size: 16px;
    line-height: 1.5;
    font-weight: 500;
}

.floating-btn__arrow {
    flex-shrink: 0;
    width: 12px;
    height: 12px;
    border-right: 3px solid #FFFFFF;
    border-bottom: 3px solid #FFFFFF;
    transform: rotate(-45deg);
    margin-left: 4px;
}

@media (max-width: 768px) {
    .floating-btn {
        bottom: calc(16px + env(safe-area-inset-bottom, 0));
        left: 0px;
        right: auto;
        max-width: calc(100vw - 32px);
    }

    .floating-btn__inner {
        padding: 12px 30px;
        border-radius: 0px;
        gap: 8px;
    }

    .floating-btn__text {
        font-size: 13px;
    }

    .floating-btn__text-block{
        gap: 4px;
    }

    .floating-btn__arrow {
        width: 12px;
        height: 12px;
        border-width: 2px;
    }
}

/* ========================================
   上に戻るボタン（全ページ）
   ======================================== */
.back-to-top {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 997;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background-color: #751C47;
    color: #FFFFFF;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    box-shadow: 0 4px 12px rgba(117, 28, 71, 0.35);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.2s ease;
}

.back-to-top.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.back-to-top:hover,
.back-to-top:focus {
    background-color: #5E1840;
    transform: translateY(-2px);
    color: #FFFFFF;
}

.back-to-top__icon {
    width: 24px;
    height: 24px;
    display: block;
}

@media (max-width: 768px) {
    .back-to-top {
        bottom: calc(16px + env(safe-area-inset-bottom, 0));
        right: 16px;
        width: 44px;
        height: 44px;
    }

    .back-to-top__icon {
        width: 20px;
        height: 20px;
    }
}

/* ========================================
   カートページ
   ======================================== */
.cart-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
}

.cart-section__header {
    margin-bottom: 40px;
    border-bottom: 1px solid #e0e0e0;
    padding-bottom: 16px;
}

.cart-section__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #222;
    margin: 0 0 4px;
}

.cart-section__subtitle {
    font-size: 14px;
    color: #666;
    margin: 0;
}

.cart-section .lineup-section__header {
    margin-bottom: 24px;
}

.cart-add-more {
    display: flex;
    justify-content: center;
    margin: 0 0 40px;
}

.cart-add-more__btn {
    display: inline-block;
    min-width: 220px;
    text-align: center;
    padding: 14px 32px;
    border-radius: 4px;
    text-decoration: none;
}

@media (max-width: 768px) {
    .cart-section .lineup-section__header {
        margin-bottom: 16px;
    }

    .cart-add-more {
        margin: 0 0 32px;
    }

    .cart-add-more__btn {
        min-width: 200px;
        width: min(100%, 280px);
    }
}

.cart-empty {
    text-align: center;
    padding: 60px 20px;
}

.cart-empty__text {
    margin-bottom: 24px;
    font-size: 16px;
    color: #555;
}

.cart-empty__link {
    display: inline-block;
    padding: 14px 28px;
    background-color: #751C47;
    color: #fff;
    font-weight: 500;
    border-radius: 4px;
}

.cart-empty__link:hover {
    background-color: #5E1840;
    color: #fff;
}

.cart-content {
    max-width: 720px;
    margin: 0 auto;
}

.cart-summary {
    margin-bottom: 24px;
    padding: 18px 20px;
    background: #f9f9f9;
    border: 1px solid #e8e8e8;
}

.cart-summary__title {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #e0e0e0;
}

.cart-detail {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 10px 24px;
    margin: 0;
    font-size: 15px;
}

.cart-detail dt {
    font-weight: 500;
    color: #555;
    grid-column: 1;
}

.cart-detail dd {
    margin: 0;
    grid-column: 2;
    word-break: break-word;
    white-space: pre-wrap;
}

.cart-total {
    margin-bottom: 40px;
    padding: 24px;
    background: #fff;
    border: 2px solid #751C47;
    text-align: right;
}

.cart-total__label {
    font-size: 14px;
    color: #555;
    margin: 0 0 8px;
}

.cart-total__amount {
    font-size: 22px;
    font-weight: 700;
    color: #222;
    margin: 0;
}

.cart-privacy {
    margin-bottom: 40px;
}

.cart-privacy__title {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e0e0e0;
}

.cart-privacy__body {
    max-height: 320px;
    overflow-y: auto;
    padding: 20px;
    background: #f5f5f5;
    border: 1px solid #e0e0e0;
    font-size: 14px;
    line-height: 1.8;
}

.cart-privacy__body h3 {
    font-size: 15px;
    font-weight: 700;
    margin: 16px 0 8px;
    color: #333;
}

.cart-privacy__body h3:first-of-type {
    margin-top: 0;
}

.cart-privacy__body p,
.cart-privacy__body ul {
    margin: 0 0 8px;
}

.cart-privacy__body ul {
    padding-left: 1.2em;
}

.cart-privacy__intro {
    margin-bottom: 12px;
}

/* カート 注意事項（必ずご確認ください） */
.cart-notice {
    margin-bottom: 40px;
}

.cart-notice__main-title {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 20px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e0e0e0;
    color: #222;
}

.cart-notice__heading {
    font-size: 16px;
    font-weight: 700;
    margin: 20px 0 10px;
    color: #333;
}

.cart-notice__heading:first-of-type {
    margin-top: 0;
}

.cart-notice__body {
    max-height: none;
    overflow-y: visible;
    padding: 0 0 24px;
    background: none;
    border: none;
    font-size: 14px;
    line-height: 1.8;
    margin-bottom: 16px;
}

.cart-notice__body p {
    margin: 0 0 8px;
}

.cart-notice__body p:last-child {
    margin-bottom: 0;
}

.cart-notice__color-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 24px;
    margin: 16px 0 0;
    align-items: flex-start;
}

.cart-notice__color-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    min-width: 80px;
}

.cart-notice__color-swatch {
    display: block;
    width: 48px;
    height: 48px;
    border: 1px solid rgba(0,0,0,0.1);
    box-sizing: border-box;
}

.cart-notice__color-swatch--red { background: #c62828; }
.cart-notice__color-swatch--red-dried { background: #4a1515; }
.cart-notice__color-swatch--pink { background: #f8bbd0; }
.cart-notice__color-swatch--pink-dried { background: #6a1b9a; }
.cart-notice__color-swatch--white { background: #fff; border-color: #ddd; }
.cart-notice__color-swatch--cream { background: #f5f0dc; }
.cart-notice__color-swatch--orange { background: #ff9800; }
.cart-notice__color-swatch--orange-dried { background: #f8c8c8; }
.cart-notice__color-swatch--brown { background: #b89585; }
.cart-notice__color-swatch--brown-dried { background: #3d2863; }

.cart-notice__color-name {
    font-size: 12px;
    line-height: 1.4;
    text-align: center;
}

.cart-notice__color-arrow {
    font-size: 14px;
    line-height: 1;
    margin: 2px 0;
}

.cart-notice__agree-lead {
    margin: 24px 0 0;
    font-size: 15px;
    font-weight: 500;
    text-align: center;
    line-height: 1.7;
}

.cart-agree {
    margin-bottom: 24px;
    text-align: center;
}

.cart-agree__label {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 500;
}

.cart-agree__checkbox {
    margin-top: 4px;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    accent-color: #751C47;
}

.cart-agree__text {
    flex: 1;
}

.cart-agree__error {
    margin: 12px 0 0;
    padding: 12px;
    background: #fff0f0;
    border: 1px solid #f0c0c0;
    color: #c00;
    font-size: 14px;
}

.cart-actions {
    text-align: center;
}

.cart-actions__submit {
    display: inline-block;
    padding: 16px 40px;
    font-size: 16px;
    cursor: pointer;
}

.cart-actions__back {
    display: inline-block;
    padding: 14px 28px;
    border: 1px solid #751C47;
    color: #751C47;
    font-weight: 500;
}

.cart-actions__back:hover {
    background-color: #5E1840;
    color: #fff;
}

.btn--primary {
    background-color: #751C47;
    color: #fff;
    padding: 14px 24px;
    font-weight: 500;
}

.btn--primary:hover {
    background-color: #5E1840;
    color: #fff;
}

@media (max-width: 768px) {
    .cart-detail {
        grid-template-columns: 1fr;
        gap: 4px 0;
    }

    .cart-detail dt {
        margin-top: 12px;
        padding-top: 8px;
        border-top: 1px solid #e0e0e0;
    }

    .cart-detail dt:first-of-type {
        margin-top: 0;
        padding-top: 0;
        border-top: none;
    }

    .cart-detail dd {
        margin-bottom: 4px;
    }

    .cart-privacy__body {
        max-height: 280px;
    }
}

/* カート 商品一覧（React） */
.cart-item-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.cart-item {
    padding: 14px 0;
    border-bottom: 1px solid #e8e8e8;
    font-size: 16px;
}

.cart-item:first-child {
    padding-top: 0;
}

.cart-item__main {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

.cart-item__name {
    margin: 0 0 6px;
    font-size: 16px;
    font-weight: 600;
    color: #222;
}

.cart-item__options {
    margin: 0;
    font-size: 13px;
    color: #666;
}

.cart-item__detail {
    margin: 8px 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: 11em 1fr;
    gap: 6px 14px;
    font-size: 15px;
    line-height: 1.55;
}

.cart-item__detail-row {
    margin: 0;
    display: contents;
}

.cart-item__detail dt {
    color: #444;
    font-size: 14px;
    font-weight: 600;
}

.cart-item__detail dd {
    margin: 0;
    color: #222;
    font-size: 15px;
    word-break: break-word;
    white-space: pre-wrap;
}

.cart-item__qty-actions {
    display: flex;
    align-items: flex-end;
    gap: 24px;
    margin-top: auto;
    align-self: flex-end;
}

.cart-item__price {
    margin-top: auto;
    padding-top: 8px;
    text-align: right;
    font-size: 17px;
    font-weight: 600;
}

.cart-item__qty-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.cart-item__qty-label {
    font-size: 12px;
    color: #666;
}

.cart-item__qty {
    display: flex;
    align-items: center;
    border: 1px solid #ddd;
    border-radius: 4px;
}

.cart-item__qty-btn {
    width: 36px;
    height: 34px;
    border: none;
    background: #f5f5f5;
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    color: #333;
}

.cart-item__qty-btn:hover:not(:disabled) {
    background: #e8e8e8;
}

.cart-item__qty-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.cart-item__qty-input {
    width: 48px;
    height: 34px;
    border: none;
    border-left: 1px solid #ddd;
    border-right: 1px solid #ddd;
    text-align: center;
    font-size: 14px;
}

.cart-item__remove {
    padding: 5px 12px;
    font-size: 12px;
    color: #c00;
    background: none;
    border: 1px solid #c00;
    border-radius: 4px;
    cursor: pointer;
}

.cart-item__remove:hover {
    background: #fff0f0;
}

@media (max-width: 768px) {
    .cart-item__qty-actions {
        flex-wrap: wrap;
    }

    .cart-item__detail {
        grid-template-columns: 1fr;
        gap: 2px 0;
    }

    .cart-item__detail-row {
        display: block;
        margin-top: 6px;
        padding-top: 6px;
        border-top: 1px solid #eee;
    }

    .cart-item__detail-row:first-child { margin-top: 0; padding-top: 0; border-top: none; }

    .cart-item__detail dt {
        margin-bottom: 2px;
        font-size: 13px;
    }

    .cart-item__detail dd {
        font-size: 14px;
    }

    .cart-item__qty-wrap {
        flex-direction: row;
    }
}

/* ========================================
   チェックアウト・注文完了
   ======================================== */
.checkout-section,
.complete-section {
    padding: var(--page-section-padding-top) 0 var(--page-section-padding-bottom);
    background: #fff;
}

.checkout-page--white {
    background: #fff;
}

.checkout-page__title,
.complete-page__title {
    font-family: 'Montserrat', sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #222;
    margin: 0 0 32px;
}

.checkout-page__title--script {
    font-family: 'Montserrat', sans-serif;
    font-size: 36px;
    font-weight: 600;
    text-align: center;
}

.checkout-form {
    max-width: 640px;
    margin: 0 auto;
}

.checkout-quote-meta {
    max-width: 640px;
    margin: -8px auto 24px;
    text-align: center;
    font-size: 14px;
    color: #555;
}

.checkout-form__section {
    margin-bottom: 32px;
    padding-bottom: 24px;
    border-bottom: 1px solid #e0e0e0;
}

.checkout-form__heading {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 16px;
    color: #333;
}

.checkout-form__required-note {
    font-size: 14px;
    color: #555;
    margin: 0 0 12px;
}

.checkout-handover {
    display: flex;
    flex-wrap: nowrap;
    gap: 8px;
    margin-bottom: 16px;
}

.checkout-handover__option {
    flex: 1 1 0;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 6px;
    padding: 12px 10px;
    border: 1px solid #ddd;
    border-radius: 8px;
    cursor: pointer;
    font-size: 13px;
    line-height: 1.4;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.checkout-handover__option:hover {
    border-color: #ccc;
}

.checkout-handover__option--selected {
    border-color: #751C47;
    box-shadow: 0 0 0 1px #751C47;
}

.checkout-handover__option input {
    width: auto;
}

.checkout-handover__option input:checked {
    accent-color: #751C47;
}

.checkout-handover__pickup {
    margin-top: 16px;
    padding: 16px;
    background: #f9f9f9;
    border: 1px solid #eee;
    border-radius: 8px;
}

.checkout-handover__pickup-note {
    margin: 12px 0 0;
    font-size: 13px;
    color: #555;
    line-height: 1.6;
}

.checkout-handover__pickup-note--lead {
    margin: 0 0 16px;
}

.checkout-form__row {
    margin-bottom: 16px;
}

.checkout-form__row--half {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

@media (max-width: 768px) {
    .checkout-form__row--half {
        grid-template-columns: 1fr;
    }

    .checkout-handover__pickup {
        padding: 12px;
    }

    .checkout-handover__calendar.carry-in-calendar {
        padding: 12px 8px;
    }
}

.checkout-form__field {
    margin-bottom: 0;
}

.checkout-form__label {
    display: block;
    font-size: 14px;
    font-weight: 500;
    margin-bottom: 6px;
    color: #444;
}

.checkout-form__required {
    color: #c00;
}

.checkout-form__input {
    width: 100%;
    max-width: 100%;
    padding: 12px 14px;
    font-size: 15px;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-sizing: border-box;
}

.checkout-form__row--half .checkout-form__input {
    max-width: none;
}

.checkout-form__input:focus {
    outline: none;
    border-color: #751C47;
}

.checkout-form__select {
    width: 100%;
    max-width: none;
    cursor: pointer;
}

.checkout-form__textarea {
    width: 100%;
    max-width: 100%;
    padding: 12px 14px;
    font-size: 15px;
    border: 1px solid #ddd;
    border-radius: 4px;
    resize: vertical;
}

.checkout-form__checkbox-label {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-size: 14px;
}

.checkout-form__checkbox-label input {
    width: auto;
}

/* ご注文内容（ブロック形式） */
.checkout-order-details {
    margin-bottom: 16px;
}

.checkout-order-block {
    padding: 12px 0;
    border-bottom: 1px solid #eee;
}

.checkout-order-block:first-child {
    padding-top: 0;
}

.checkout-order-block__name {
    margin: 0 0 6px;
    font-weight: 600;
    font-size: 16px;
}

.checkout-order-block .cart-item__detail {
    margin-top: 6px;
}

.checkout-order-block__options {
    margin: 0 0 6px;
    padding-left: 1.2em;
    font-size: 14px;
    color: #555;
    list-style: none;
}

.checkout-order-block__options li {
    margin-bottom: 2px;
}

.checkout-order-block__options li::before {
    content: none;
}

.checkout-order-block__line {
    margin: 6px 0 0;
    font-size: 15px;
    color: #555;
}

.checkout-order-block__subtotal {
    margin: 4px 0 0;
    font-size: 16px;
    font-weight: 600;
    text-align: right;
}

.checkout-order-summary {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid #e0e0e0;
}

.checkout-order-summary__row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    font-size: 15px;
}

.checkout-order-summary__row--total {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #e0e0e0;
    font-weight: 700;
    font-size: 16px;
}

.checkout-order-summary__label {
    color: #333;
}

.checkout-order-summary__value {
    color: #222;
}

.checkout-order-list {
    margin: 0 0 16px;
    padding: 0;
    list-style: none;
}

.checkout-order-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
    font-size: 15px;
}

.checkout-order-item__name {
    flex: 1;
}

.checkout-order-item__qty {
    color: #666;
}

.checkout-order-total {
    font-size: 18px;
    font-weight: 700;
    margin: 0;
    text-align: right;
}

.checkout-payment__security {
    margin: 0 0 16px;
    font-size: 14px;
    color: #555;
}

.checkout-payment {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.checkout-payment__option {
    display: flex;
    flex-direction: column;
    gap: 0;
    cursor: pointer;
    font-size: 15px;
    padding: 14px 16px;
    border: 1px solid #ddd;
    border-radius: 8px;
    transition: border-color 0.2s, box-shadow 0.2s;
    background: #fff;
}

.checkout-payment__option:hover {
    border-color: #ccc;
}

.checkout-payment__option--selected {
    border-color: #751C47;
    box-shadow: 0 0 0 1px #751C47;
}

.checkout-payment__option-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
}

.checkout-payment__option input {
    width: auto;
}

.checkout-payment__option input:checked {
    accent-color: #751C47;
}

.checkout-payment__option-text {
    flex: 0 0 auto;
}

.checkout-payment__option-note {
    font-size: 13px;
    color: #666;
    margin-left: auto;
}

.checkout-payment__option-desc {
    margin: 10px 0 0 28px;
    padding: 0;
    font-size: 13px;
    line-height: 1.6;
    color: #666;
}

.checkout-form__errors {
    margin: 0 0 20px;
    padding: 12px 16px;
    background: #fff0f0;
    border: 1px solid #f0c0c0;
    border-radius: 4px;
    color: #c00;
    font-size: 14px;
    list-style: none;
}

.checkout-form__actions {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    margin-top: 32px;
}

.btn--checkout-submit {
    min-width: 280px;
    padding: 16px 32px;
    font-size: 16px;
}

.checkout-form__back-link {
    font-size: 14px;
    color: #666;
}

.checkout-form__back-link:hover {
    color: #751C47;
}

.checkout-empty {
    text-align: center;
    padding: 40px 20px;
}

.checkout-empty p {
    margin-bottom: 20px;
}

.complete-page__order-summary {
    max-width: 720px;
    margin: 0 auto 28px;
    text-align: left;
}

.complete-page__order-total {
    margin: 12px 0 0;
    padding-top: 12px;
    border-top: 1px solid #e0e0e0;
    font-size: 16px;
    text-align: right;
    color: #222;
}

.complete-page__order-total strong {
    font-size: 18px;
    font-weight: 700;
}

.cart-item--readonly .cart-item__qty-actions {
    display: none;
}

.complete-page__order-id {
    margin: 0 0 16px;
    font-size: 16px;
}

.complete-page__message {
    margin: 0 0 32px;
    padding: 24px;
    background: #f9f9f9;
    border: 1px solid #e8e8e8;
    border-radius: 4px;
    font-size: 15px;
    line-height: 1.8;
    white-space: pre-wrap;
}

.complete-page__message--error {
    background: #fff8f8;
    border-color: #f0c0c0;
    color: #c00;
}

.complete-page__delivery-link-wrap {
    margin: 24px 0 32px;
    padding: 20px 24px;
    background: #fdf5f8;
    border: 1px solid #e1d5dc;
    border-radius: 4px;
    text-align: center;
}

.complete-page__delivery-link-lead {
    margin: 0 0 12px;
    font-size: 14px;
    color: #555;
}

.complete-page__delivery-link {
    display: inline-block;
    min-width: 220px;
}

.complete-page__delivery-link:hover {
    opacity: 0.9;
}

.complete-page__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.complete-page__bank-info {
    margin: 0 0 32px;
    padding: 28px 32px;
    background: #fff;
    border: 1px solid #e1d5dc;
    border-left: 4px solid #751C47;
    border-radius: 4px;
}

.complete-page__bank-info-title {
    margin: 0 0 20px;
    padding-bottom: 12px;
    border-bottom: 1px solid #eee;
    font-size: 18px;
    font-weight: 600;
    color: #333;
}

.complete-page__bank-info-list {
    margin: 0 0 20px;
    padding: 0;
}

.complete-page__bank-info-row {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 16px;
    padding: 12px 0;
    border-bottom: 1px dashed #eee;
}

.complete-page__bank-info-row:last-child {
    border-bottom: none;
}

.complete-page__bank-info-label {
    margin: 0;
    font-size: 14px;
    color: #777;
    font-weight: 500;
}

.complete-page__bank-info-value {
    margin: 0;
    font-size: 16px;
    color: #222;
    font-weight: 500;
    word-break: break-all;
}

.complete-page__bank-deadline {
    margin: 20px 0 0;
    padding: 14px 16px;
    background: #fdf5f8;
    border-radius: 4px;
    font-size: 14px;
    line-height: 1.7;
    color: #333;
}

.complete-page__bank-deadline strong {
    color: #751C47;
    font-weight: 700;
}

.complete-page__bank-notes {
    margin: 16px 0 0;
    font-size: 13px;
    line-height: 1.7;
    color: #666;
}

.complete-page__bank-notes p {
    margin: 0 0 4px;
}

.complete-page__bank-notes p:last-child {
    margin-bottom: 0;
}

@media (max-width: 600px) {
    .complete-page__bank-info {
        padding: 20px;
    }
    .complete-page__bank-info-row {
        grid-template-columns: 100px 1fr;
        gap: 12px;
        padding: 10px 0;
    }
    .complete-page__bank-info-value {
        font-size: 15px;
    }
}

.btn--outline {
    display: inline-block;
    padding: 14px 24px;
    font-weight: 500;
    border: 1px solid #751C47;
    color: #751C47;
    border-radius: 4px;
}

.btn--outline:hover {
    background: #751C47;
    color: #fff;
}

/* ========================================
   TOP：リリース期間限定 代理店コード案内ポップアップ
   ======================================== */
.top-agency-popup {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    background: rgba(0, 0, 0, 0.55);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, visibility 0.25s ease;
}

.top-agency-popup.is-open {
    opacity: 1;
    visibility: visible;
}

body.is-top-agency-popup-open {
    overflow: hidden;
}

.top-agency-popup__inner {
    position: relative;
    width: 100%;
    max-width: 420px;
    padding: 48px 28px 36px;
    background: #FFFFFF;
    border-radius: 8px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
    text-align: center;
}

.top-agency-popup__close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 36px;
    height: 36px;
    padding: 0;
    font-size: 28px;
    line-height: 1;
    color: #333;
    background: none;
    border: none;
    cursor: pointer;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.top-agency-popup__close:hover {
    background: #f0f0f0;
    color: #000;
}

.top-agency-popup__text {
    font-family: 'Zen Kaku Gothic New', sans-serif;
    font-size: 18px;
    font-weight: 500;
    color: #222;
    line-height: 1.7;
    margin: 0 0 28px;
}

.top-agency-popup__btn {
    display: inline-block;
    min-width: 200px;
    padding: 14px 28px;
    font-size: 16px;
}

@media (max-width: 768px) {
    .top-agency-popup__inner {
        padding: 44px 20px 32px;
    }

    .top-agency-popup__text {
        font-size: 16px;
    }
}
