@charset "UTF-8";
/* COCOTSUNA デザインシステム */

/* ==========================================
   CSS Variables（グローバル）
   ========================================== */
:root {
    /* === カラーパレット === */
    --c-base: #F9F9F7;
    --c-white: #FFFFFF;
    --c-main: #E65100;
    --c-main-light: #FF9800;
    --c-accent: #CCA43B;
    --c-accent-dark: #a8852e;
    --c-text: #333333;
    --c-text-secondary: #666666;
    --c-text-muted: #999999;
    --c-gray: #666666;
    --c-border: #E0E0E0;

    /* 背景色 */
    --c-bg-card: #FFFFFF;
    --c-bg-image: #f0f0f0;
    --c-bg-badge: #e3f2fd;
    --c-bg-header: rgba(255, 255, 255, 0.95);
    --c-bg-disabled: #cccccc;
    --c-bg-hero-lead: rgba(230, 81, 0, 0.85); /* Hero lead背景（半透明オレンジ） */

    /* ボーダー */
    --c-border-header: rgba(0, 0, 0, 0.05);
    --c-border-active: #E65100;

    /* バッジ・アクセント */
    --c-badge-text: #1565c0;
    --c-shadow: rgba(0, 0, 0, 0.05);

    /* システム変数上書き (Overriding mase.css defaults) */
    --color-main: var(--c-main);
    --color-border-main: rgba(230, 81, 0, 0.5);
    --color-sub: #c78a5b;
    --color-a: var(--c-main);

    /* === フォント === */
    --f-serif: 'Noto Serif JP', serif;
    --f-sans: 'Noto Sans JP', sans-serif;

    /* フォントウェイト */
    --fw-demilight: 300;
    --fw-regular: 400;
    --fw-medium: 500;
    --fw-bold: 700;

    /* フォントサイズ */
    --fs-xs: 12px;
    --fs-sm: 12.8px;
    --fs-base: 14.4px;
    --fs-md: 16px;
    --fs-lg: 17.6px;
    --fs-xl: 22.4px;
    --fs-2xl: 24px;
    --fs-3xl: 25.6px;
    --fs-4xl: 28.8px;
    --fs-5xl: 40px; /* Intro lead等の大見出し用 */

    /* 行高 */
    --lh-xs: 14.4px;
    --lh-sm: 21.6px;
    --lh-base: 23px;
    --lh-md: 25.92px;
    --lh-lg: 28.8px;
    --lh-xl: 31.36px;
    --lh-2xl: 38.4px;
    --lh-3xl: 46px;
    --lh-4xl: 51.84px;

    /* === スペーシング === */
    --sp-xs: 2px;
    --sp-sm: 8px;
    --sp-md: 16px;
    --sp-lg: 24px;
    --sp-xl: 32px;
    --sp-2xl: 48px;
    --sp-3xl: 100px;
    --sp-4xl: 200px;

    /* === ボーダー半径 === */
    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 12px;
    --radius-full: 16px;
    --radius-pill: 50px;

    /* === シャドウ === */
    --shadow-card: 0 4px 12px rgba(0, 0, 0, 0.05);
    --shadow-hover: 0 8px 20px rgba(230, 81, 0, 0.15);

    /* === レイアウト幅 === */
    --w-page: 1600px;
    --w-content: 1400px;
    --w-main: 1000px;
    --w-header-inner: 1200px;
    --w-stepper: 600px;
    --gap-card: 32px;
    --gap-section: 32px;
}

/* ヘッダーの重なり順序を最優先にする（全ページ共通）
   NOTE: フロントエンドでは site-header.css で同等の定義あり。
   ここではバックエンド含む全ページへの安全マージンとして維持。 */
._z:where(:not(._backend)) ._a._container {
    position: relative !important;
    z-index: 10001 !important;
    max-width: 100% !important;
    width: 100% !important;
    padding: 0 !important;
}

.cocotsuna-header {
    z-index: 10002 !important;
}

/* ==========================================
   グローバルスタイル調整
   ========================================== */
body {
    font-family: var(--f-sans);
    color: var(--c-text);
    background-color: var(--c-base);
    line-height: 1.6;
}

a {
    color: var(--color-a);
    transition: all 0.3s ease;
}

a.u-btn {
    color: var(--c-text);
}
a.u-btn.mainPrimary,
a.u-btn.subPrimary,
a.u-btn.calendar {
    color: var(--color-main-on);
}

a.u-btn.mainSecondary {
    color: var(--color-main);
}

a.addtop.current {
    color: var(--c-text);
}

/* ==========================================
   ユーティリティクラス
   ========================================== */
.serif {
    font-family: var(--f-serif);
}

.text-accent {
    color: var(--c-main);
}

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

/* ==========================================
   共通コンポーネント (Global Components)
   ========================================== */

/* ページネーション (Standard Pager) */
.t-pager {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin: 2rem 0;
}

.t-pager :is(a, span, b) {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--c-white);
    border: 1px solid var(--c-border);
    border-radius: 50%;
    color: var(--c-text);
    font-weight: bold;
    transition: 0.3s;
    font-size: 0.9rem;
    text-decoration: none;
    max-width: 120px !important;
}

.t-pager :is(span, b) {
    background: var(--c-main);
    color: var(--c-white);
    border-color: var(--c-main);
}

.t-pager a:hover {
    background: #eee;
    color: var(--c-main);
}
.t-pager__first,.t-pager__prev,.t-pager__next,.t-pager__last {
    width: 120px !important;
    height: auto !important;
    white-space: nowrap;
    max-width: 120px !important;
    font-size: 0.8rem !important;
    border: none !important;
    background: transparent !important;
}

/* ステッパー (Step Flow Bar — Figma準拠) */
.step-flow {
    padding: 48px clamp(20px, 5vw, 200px) 32px;
    margin-top: 70px;
}

.step-list {
    display: flex;
    justify-content: center;
    gap: var(--sp-md);
    position: relative;
    max-width: var(--w-stepper);
    margin: 0 auto;
    padding: 0;
    list-style: none;
}

.step-list::before {
    content: '';
    position: absolute;
    top: 15px;
    left: 30px;
    right: 30px;
    height: 2px;
    background-color: var(--c-border);
}

.step-item {
    position: relative;
    z-index: 1;
    flex: 1;
    text-align: center;
    color: var(--c-text-muted);
}

.step-circle {
    width: 32px;
    height: 32px;
    background-color: var(--c-white);
    border: 2px solid var(--c-border);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 0.5rem;
    font-weight: var(--fw-bold);
    font-size: 0.9rem;
}

.step-label {
    font-size: var(--fs-xs);
    font-weight: var(--fw-medium);
    display: block;
}

/* ステッパー: 完了ステップ */
.step-item.completed {
    color: var(--c-main);
}

.step-item.completed .step-circle {
    background-color: var(--c-main);
    border-color: var(--c-main);
    color: var(--c-white);
}

/* ステッパー: アクティブステップ */
.step-item.active {
    color: var(--c-main);
}

.step-item.active .step-circle {
    background-color: var(--c-main);
    border-color: var(--c-main);
    color: var(--c-white);
}

@media (max-width: 768px) {
    .step-flow {
        padding: 24px 20px 16px;
    }

    .step-list {
        gap: 0;
    }

    .step-label {
        font-size: 0.65rem;
    }
}

/* コンテナ（既存のスタイルを上書きしない場合のみ） */
.container-cocotsuna {
    width: 90%;
    max-width: 1140px;
    margin: 0 auto;
}

/* ボタンスタイル */
.btn-cocotsuna {
    display: inline-block;
    padding: 0.8rem 2rem;
    border-radius: 50px;
    font-weight: 700;
    text-align: center;
    transition: all 0.3s;
    border: none;
    cursor: pointer;
    font-size: 0.95rem;
}

.btn-cocotsuna-main {
    background: linear-gradient(45deg, var(--c-main), var(--c-main-light));
    color: var(--c-white);
    box-shadow: 0 4px 15px rgba(230, 81, 0, 0.2);
}

.btn-cocotsuna-main:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(230, 81, 0, 0.3);
}

.btn-cocotsuna-outline {
    background: var(--c-white);
    color: var(--c-main);
    border: 2px solid var(--c-main);
}

.btn-cocotsuna-outline:hover {
    background: var(--c-main);
    color: var(--c-white);
}

/* カードスタイル */
.card-cocotsuna {
    background: var(--c-white);
    border-radius: 12px;
    padding: 1.5rem;
    box-shadow: var(--shadow-card);
    transition: all 0.3s;
}

.card-cocotsuna:hover {
    box-shadow: var(--shadow-hover);
    transform: translateY(-2px);
}

/* レスポンシブ設定 */
@media (max-width: 768px) {
    .hidden-sp {
        display: none !important;
    }
}

@media (min-width: 769px) {
    .hidden-pc {
        display: none !important;
    }
    .visible-sp {
        display: none !important;
    }
}

/* ==========================================
   商品詳細ページ（Product Detail）
   ========================================== */

/* Top Section: Image & Buy Info */
.prod-top {
    background: var(--c-white);
    border-radius: 12px;
    padding: 2.5rem;
    box-shadow: var(--shadow-card);
    margin-bottom: 2.5rem;
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
}

@media (min-width: 768px) {
    .prod-top {
        grid-template-columns: 1fr 1fr;
        gap: 4rem;
    }
}

.prod-gallery { position: relative; }
.main-img-box {
    width: 100%;
    aspect-ratio: 1/1;
    margin-bottom: 1rem;
    cursor: pointer;
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
}
.main-img-box img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.thumb-list { display: flex; gap: 0.8rem; flex-wrap: wrap; }
.thumb-item {
    width: 80px; height: 80px; border-radius: 8px;
    border: 2px solid transparent; cursor: pointer; transition: 0.3s;
    background: #fff;
    overflow: hidden;
}
.thumb-item:hover, .thumb-item.active { border-color: var(--c-main); opacity: 1; }
.thumb-item img {
    width: 100%; height: 100%; object-fit: contain; border-radius: 6px;
}

.prod-info-detail h1 {
    font-size: 2.2rem; margin-bottom: 0.8rem; line-height: 1.3;
    font-family: var(--f-serif);
}
.prod-detail-tag {
    font-size: 0.85rem; padding: 5px 12px;
    border-radius: 4px; display: inline-block; margin-bottom: 1.2rem; font-weight: 700;
    color: #fff;
}
.prod-detail-tag.plan { background: var(--c-main); }
.prod-detail-tag.option { background: var(--c-accent); }
.prod-catch { 
    font-size: 1.15rem; color: var(--c-gray); margin-bottom: 2rem; 
    border-bottom: 1px solid var(--c-border); padding-bottom: 1.5rem;
    line-height: 1.6;
}

.prod-price-area { margin-bottom: 2.5rem; }
.prod-price-large { font-size: 2.5rem; font-weight: 800; color: var(--c-main); margin-right: 0.5rem; }
.prod-price-note { font-size: 1rem; color: var(--c-gray); }

.basic-specs {
    background: #fcfcfc; padding: 1.5rem; border-radius: 12px; margin-bottom: 2.5rem; 
    font-size: 0.95rem; border: 1px solid #f0f0f0;
}
.basic-specs dl { display: grid; grid-template-columns: auto 1fr; gap: 0.8rem 2rem; }
.basic-specs dt { color: var(--c-gray); font-weight: 700; }
.basic-specs dd { font-weight: 500; color: var(--c-text); }

.action-area-detail {
    background: var(--c-white); padding: 0; border-radius: 12px;
    text-align: center;
}

/* Detail Content Section */
.detail-content-area {
    background: var(--c-white);
    border-radius: 16px;
    padding: 2rem;
    box-shadow: var(--shadow-card);
    margin-bottom: 4rem;
}

@media (min-width: 768px) {
    .detail-content-area { padding: 4rem; }
}

.detail-h2 {
    font-family: var(--f-serif);
    font-size: 1.8rem; margin-bottom: 2rem; padding-bottom: 0.8rem;
    border-bottom: 3px solid var(--c-main); color: var(--c-text);
    display: inline-block;
}
.detail-h3 {
    font-family: var(--f-serif);
    font-size: 1.4rem; margin: 3.5rem 0 1.5rem; font-weight: 700;
    border-left: 6px solid var(--c-main); padding-left: 1.2rem;
    line-height: 1.2;
}

.intro-text-detail { font-size: 1.1rem; line-height: 2.2; margin-bottom: 3rem; color: #444; }

.video-wrapper {
    position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; 
    border-radius: 12px; margin-bottom: 4rem; box-shadow: 0 15px 30px rgba(0,0,0,0.1);
}
.video-wrapper iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

.spec-table-detail {
    width: 100%; border-collapse: collapse; margin-bottom: 3rem; font-size: 1rem;
}
.spec-table-detail th, .spec-table-detail td {
    border: 1px solid #eee; padding: 1.2rem; text-align: left;
}
.spec-table-detail th {
    background: #fbfbfb; width: 40%; font-weight: 700; color: var(--c-text);
}

.package-box {
    background: #fffbf5; border: 1px solid #ffe0b2; border-radius: 12px; padding: 2rem 3rem;
}
.package-box li {
    list-style: disc; margin-bottom: 0.8rem; color: #555;
}
.package-note {
    margin-top: 1.5rem; font-size: 0.9rem; color: var(--c-main); font-weight: 700;
}

/* Sidebar Styles */
.side-col-detail {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.panel-detail {
    background: var(--c-white);
    border-radius: 12px;
    margin: 1rem 0;
    padding: 1.5rem 0.5rem;
    box-shadow: var(--shadow-card);
}

.panel-head-detail {
    font-size: 1.1rem;
    font-weight: 700;
    margin-bottom: 1.2rem;
    padding-bottom: 0.8rem;
    border-bottom: 2px solid var(--c-base);
    color: var(--c-text);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Search Form in Sidebar */
.search-group-detail {
    margin-bottom: 1rem;
}
.search-label-detail {
    display: block;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--c-gray);
    margin-bottom: 0.4rem;
}
.search-input-detail {
    width: 100%;
    padding: 0.6rem;
    border: 1px solid var(--c-border);
    border-radius: 6px;
    font-size: 0.9rem;
}

/* Category List */
.cat-list-detail {
    list-style: none;
    padding: 0;
    margin: 0;
}
.cat-item-detail {
    border-bottom: 1px solid #f5f5f5;
}
.cat-item-detail:last-child {
    border-bottom: none;
}
.cat-link-detail {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.8rem 0.4rem;
    color: var(--c-text);
    font-size: 0.95rem;
    transition: 0.2s;
    text-decoration: none;
}
.cat-link-detail:hover {
    color: var(--c-main);
    padding-left: 0.8rem;
}
.cat-count-detail {
    font-size: 0.8rem;
    color: var(--c-gray);
    background: var(--c-base);
    padding: 2px 8px;
    border-radius: 10px;
}

/* My Menu Grid */
.menu-grid-detail {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.menu-item-detail {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 1rem 0.5rem;
    background: #f5f5f5;
    border-radius: 8px;
    text-decoration: none;
    color: var(--c-text);
    transition: 0.3s;
}
.menu-item-detail:hover {
    background: #eee;
    color: var(--c-main);
}
.menu-icon-detail {
    font-size: 1.5rem;
    margin-bottom: 0.5rem;
    color: inherit;
}
.menu-label-detail {
    font-size: 0.8rem;
    font-weight: 700;
}

/* Layout Overrides */
._stp._product._info {
    --zLayout-pc-colmuns: min-content 0 900px 300px min-content;
}
._stp._product._info :is(._f, ._g) {
    padding: 0;
}
._stp._product._info ._efg {
    gap: 40px;
}

@media (min-width: 768px) {
    ._stp._product._info .prod-top {
        grid-template-columns: 1.1fr 0.9fr;
        gap: 50px;
        padding: 3rem;
    }
}

@media (max-width: 768px) {
    ._stp._product._info ._g {
        margin-top: 2rem;
    }
}

/* ==========================================
   ブログ一覧ページ（Blog List）
   ========================================== */

._blogpost._search {
    --zLayout-pc-colmuns: min-content 0 900px 300px min-content;
}
._blogpost._search :is(._f, ._g) {
    padding: 0;
}
._blogpost._search ._efg {
    gap: 40px;
}

.blog-grid-custom {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
    margin-bottom: 3rem;
}

@media (max-width: 992px) {
    .blog-grid-custom {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 768px) {
    .blog-grid-custom {
        grid-template-columns: 1fr;
    }
}

.blog-card-custom {
    background: var(--c-white);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--shadow-card);
    transition: 0.3s;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--c-border);
    height: 100%;
}

.blog-card-custom:hover {
    box-shadow: var(--shadow-hover);
    transform: translateY(-3px);
    border-color: var(--c-main);
    text-decoration: none;
}

.blog-card-custom .img-box {
    position: relative;
    padding-top: 60%;
    background: #f0f0f0;
    overflow: hidden;
}

.blog-card-custom .img-box img {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    object-fit: cover; transition: 0.5s;
}

.blog-card-custom:hover .img-box img { transform: scale(1.05); }

.blog-card-custom .body {
    padding: 1.2rem; flex-grow: 1; display: flex; flex-direction: column;
}

.blog-card-custom .meta {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: 0.8rem; font-size: 0.8rem;
}

.blog-card-custom .date { color: #888; }

.blog-card-custom .cat {
    background: var(--c-text); color: #fff; padding: 2px 8px; border-radius: 4px; 
    font-weight: bold; font-size: 0.7rem;
}

.blog-card-custom .title {
    font-size: 1rem; font-weight: 700; margin-bottom: 0.8rem; line-height: 1.5;
    color: var(--c-text);
}

.blog-card-custom .excerpt {
    font-size: 0.85rem; color: #666; line-height: 1.6;
    margin-bottom: 1rem;
    flex-grow: 1;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}

.blog-card-custom .read-more {
    text-align: right; font-size: 0.85rem; color: var(--c-main); font-weight: bold;
}

/* ==========================================
   ブログ詳細ページ（Blog Detail）
   ========================================== */

._blogpost._postInfo {
    --zLayout-pc-colmuns: min-content 0 900px 300px min-content;
}
._blogpost._postInfo :is(._f, ._g) {
    padding: 0;
}
._blogpost._postInfo ._efg {
    gap: 40px;
}

.article-container-custom {
    background: var(--c-white);
    border-radius: 12px;
    padding: 3rem;
    box-shadow: var(--shadow-card);
    margin-bottom: 3rem;
}

@media (max-width: 768px) {
    .article-container-custom {
        padding: 1.5rem;
    }
}

.article-header-custom {
    margin-bottom: 2rem;
    border-bottom: 1px solid #eee;
    padding-bottom: 1.5rem;
}

.article-meta-custom {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem;
    font-size: 0.85rem;
}

.article-date-custom {
    color: var(--c-text-gray);
}

.article-cat-custom {
    background: var(--c-text);
    color: #fff;
    padding: 3px 10px;
    border-radius: 4px;
    font-weight: bold;
    font-size: 0.75rem;
}

.article-title-custom {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.4;
    margin-bottom: 1.5rem;
}

@media (max-width: 768px) {
    .article-title-custom {
        font-size: 1.5rem;
    }
}

.article-eye-catch-custom {
    width: 100%;
    height: auto;
    border-radius: 8px;
    margin-bottom: 2rem;
}

.post-content-custom {
    font-size: 1rem;
    line-height: 1.9;
    color: #444;
}

.post-content-custom h2 {
    font-size: 1.6rem;
    font-family: var(--f-serif);
    margin: 3rem 0 1.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--c-main);
    color: var(--c-text);
}

.post-content-custom h3 {
    font-size: 1.3rem;
    margin: 2rem 0 1rem;
    font-weight: 700;
    border-left: 5px solid var(--c-main);
    padding: 0.5rem 0.5rem 0.5rem 1rem;
    background: #fffbf5;
}

.post-content-custom p {
    margin-bottom: 1.5rem;
    text-align: justify;
}

.post-content-custom img {
    margin: 2rem 0;
    border-radius: 8px;
    max-width: 100%;
    height: auto;
}

/* Related Posts Section */
.related-posts-custom {
    margin-top: 4rem;
}

.related-head-custom {
    font-size: 1.4rem;
    font-weight: 700;
    margin-bottom: 1.5rem;
    border-bottom: 1px solid #eee;
    padding-bottom: 0.5rem;
}

.related-grid-custom {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
}

@media (max-width: 768px) {
    .related-grid-custom {
        grid-template-columns: 1fr;
    }
}

.related-card-custom {
    display: block;
    color: inherit;
    text-decoration: none;
}

.related-img-custom {
    width: 100%;
    height: 120px;
    object-fit: cover;
    border-radius: 6px;
    margin-bottom: 0.5rem;
    background: #eee;
}

.related-title-custom {
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.4;
}

.related-card-custom:hover .related-title-custom {
    color: var(--c-main);
}

/* Radio Group for Sidebar */
.radio-group-custom {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.radio-label-detail {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
    cursor: pointer;
}
/* ==========================================
   お気に入りボタン（ハートアイコン）
   ========================================== */
.favorite-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    background: #fff;
    border: 2px solid var(--c-border);
    border-radius: 50%;
    cursor: pointer;
    transition: all 0.3s ease;
    font-size: 1.4rem;
    color: var(--c-main);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    position: relative;
}

.favorite-icon-btn:hover {
    transform: scale(1.1);
    border-color: var(--c-main);
    box-shadow: 0 4px 12px rgba(230, 81, 0, 0.2);
}

.favorite-icon-btn i {
    line-height: 1;
}

/* お気に入り登録済み（塗りつぶしハート） */
.favorite-icon-btn .fa-heart {
    color: var(--c-main);
}

/* お気に入り未登録（枠線ハート） */
.favorite-icon-btn .fa-heart.far {
    color: var(--c-gray);
}

.favorite-icon-btn:hover .fa-heart.far {
    color: var(--c-main);
}

/* ==========================================
   商品一覧ページ（Product Search/List）
   ========================================== */

/* Layout Override: 2 Column (Main: 779px + Sidebar: 389px) */
._stp._product._search {
    --zLayout-pc-colmuns: min-content 0 779px 389px min-content;
}
._stp._product._search :is(._f, ._g) {
    padding: 0;
}
._stp._product._search ._efg {
    gap: 40px;
}

/* Product Grid: 3 Columns */
.product-grid-custom {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-bottom: 2rem;
}

@media (max-width: 992px) {
    .product-grid-custom {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 768px) {
    .product-grid-custom {
        grid-template-columns: 1fr;
    }
    ._stp._product._search {
        --zLayout-pc-colmuns: 1fr;
    }
    ._stp._product._search :is(._f, ._g) {
        padding: 1em;
    }
    ._stp._product._search ._g {
        margin-top: 2rem;
    }
}

/* Product Card */
.product-card-custom {
    background: var(--c-bg-card);
    border-radius: 8px;
    overflow: hidden;
    border: 1px solid var(--c-border);
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    height: 100%;
}

.product-card-custom:hover {
    box-shadow: var(--shadow-hover);
    transform: translateY(-3px);
    border-color: var(--c-main);
}

/* 契約中の商品カード: オレンジボーダー＋背景色 */
.product-card-custom.contracted {
    border: 2px solid var(--c-main);
    background: #fffbf5;
}

.product-card-custom .card-img {
    position: relative;
    width: 100%;
    aspect-ratio: 3 / 2;
    background: var(--c-bg-image);
    overflow: hidden;
}

.product-card-custom .card-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

.product-card-custom:hover .card-img img {
    transform: scale(1.05);
}

.product-card-custom .card-body {
    padding: 16px;
    display: flex;
    flex-direction: column;
    flex-grow: 1;
}

.product-card-custom .badge-row {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}

.product-card-custom .badge-type {
    font-size: 11px;
    font-weight: var(--fw-bold);
    padding: 2px 8px;
    border-radius: var(--radius-sm);
}

/* バッジ: 基本プラン（オレンジ） */
.product-card-custom .badge-type.plan {
    background: var(--c-main);
    color: #fff;
}

/* バッジ: オプション（ゴールド） */
.product-card-custom .badge-type.option {
    background: var(--c-accent);
    color: #fff;
}

/* バッジ: 買い切り（オレンジ） */
.product-card-custom .badge-type.onetime {
    background: #fff3e0;
    color: var(--c-main);
}

/* バッジ: 契約中（白文字オレンジ背景） */
.product-card-custom .badge-contracted {
    background: var(--c-main);
    color: white;
    font-size: 11px;
    font-weight: var(--fw-bold);
    padding: 2px 8px;
    border-radius: var(--radius-sm);
}

.product-card-custom .card-title {
    font-size: var(--fs-md);
    font-weight: var(--fw-bold);
    line-height: 1.4;
    margin-bottom: 4px;
    color: var(--c-text);
}

.product-card-custom .card-desc {
    font-size: var(--fs-sm);
    font-weight: var(--fw-demilight);
    color: var(--c-text-secondary);
    line-height: 1.5;
    margin-bottom: 8px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.product-card-custom .card-price {
    margin-bottom: 12px;
    margin-top: auto;
}

.product-card-custom .price-value {
    font-size: var(--fs-lg);
    font-weight: var(--fw-bold);
    color: var(--c-text);
}

.product-card-custom .price-suffix {
    font-size: var(--fs-sm);
    font-weight: var(--fw-demilight);
    color: var(--c-text-secondary);
}

.product-card-custom .card-actions {
    display: flex;
    gap: 8px;
}

.product-card-custom .btn-cart,
.product-card-custom .btn-detail {
    flex: 1;
    text-align: center;
    padding: 8px;
    border-radius: var(--radius-sm);
    font-size: var(--fs-sm);
    font-weight: var(--fw-bold);
    cursor: pointer;
    transition: 0.3s;
    text-decoration: none;
}

.product-card-custom .btn-cart {
    border: 2px solid var(--c-main);
    color: var(--c-main);
    background: white;
}

.product-card-custom .btn-cart:hover {
    background: var(--c-main);
    color: white;
}

.product-card-custom .btn-detail {
    border: 1px solid var(--c-border);
    color: var(--c-text-secondary);
    background: white;
}

.product-card-custom .btn-detail:hover {
    border-color: var(--c-text);
    color: var(--c-text);
}

/* Sidebar Search Panel */
.search-panel-custom {
    background: var(--c-white);
    border-radius: var(--radius-lg);
    padding: 24px;
    box-shadow: var(--shadow-card);
    margin-bottom: 24px;
}

.search-panel-custom .panel-title {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 16px;
    color: var(--c-text);
    border-bottom: 2px solid var(--c-base);
    padding-bottom: 8px;
}

.search-panel-custom .search-group {
    margin-bottom: 1rem;
}

.search-panel-custom .search-label {
    display: block;
    font-size: 0.85rem;
    font-weight: var(--fw-bold);
    color: var(--c-gray);
    margin-bottom: 0.4rem;
}

.search-panel-custom .search-input {
    width: 100%;
    padding: 0.6rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    font-size: 0.9rem;
}

.search-panel-custom .price-range {
    display: flex;
    align-items: center;
    gap: 8px;
}

.search-panel-custom .price-range input {
    flex: 1;
    padding: 0.6rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    font-size: 0.9rem;
}

.search-panel-custom .btn-search {
    width: 100%;
    padding: 0.8rem;
    background: var(--c-main);
    color: white;
    border: none;
    border-radius: var(--radius-md);
    font-weight: var(--fw-bold);
    cursor: pointer;
    margin-top: 1rem;
    font-size: 1rem;
    transition: 0.3s;
}

.search-panel-custom .btn-search:hover {
    opacity: 0.9;
}

/* My Menu Panel */
.menu-panel-custom {
    background: var(--c-white);
    border-radius: var(--radius-lg);
    padding: 24px;
    box-shadow: var(--shadow-card);
    margin-top: 1rem;
}

.menu-panel-custom .panel-title {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 16px;
    color: var(--c-text);
    border-bottom: 2px solid var(--c-base);
    padding-bottom: 8px;
}

/* Pager Override for Product Search (40px circle) */
._stp._product._search .t-pager :is(a, span, b) {
    width: 40px;
    height: 40px;
}

/* ==========================================
   S010: Image modal backdrop & navigation
   ========================================== */
/* ::backdrop is hidden behind .js-dialog (width:100% in mase.css),
   so we darken the dialog element itself when .modal-image-nav is present. */
/* Dialog overlay: full-screen dark backdrop */
.js-dialog:has(.modal-image-nav) {
    background-color: rgba(0, 0, 0, 0.5) !important;
    height: 100% !important;
    max-height: 100vh !important;
    top: 0 !important;
    translate: none !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
}
.js-dialog::backdrop {
    background: rgba(0, 0, 0, 0.5);
}

/* Inner container (.u-dialog): fixed viewport-relative size */
.js-dialog:has(.modal-image-nav) .u-dialog {
    width: 70vw !important;
    height: 70vh !important;
    max-width: 70vw !important;
    max-height: 70vh !important;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* .content between .u-dialog and .modal-image-nav must fill its parent */
.js-dialog:has(.modal-image-nav) .u-dialog .content {
    width: 100% !important;
    height: 100% !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
}

/* Nav wrapper: fill the .content container */
.modal-image-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    width: 100%;
    height: 100%;
}

/* Image: fill the container, uniform across all products */
.modal-image-nav img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    min-width: 0;
}

.modal-nav-btn {
    width: 44px;
    height: 44px;
    background: rgba(255, 255, 255, 0.9) !important;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    font-size: 1.2rem;
    color: var(--c-text) !important;
    flex-shrink: 0;
    transition: background 0.2s;
}

.modal-nav-btn:hover {
    background: rgba(255, 255, 255, 1) !important;
}

/* Responsive: larger modal on wider screens, smaller on mobile */
@media (max-width: 768px) {
    .js-dialog:has(.modal-image-nav) .u-dialog {
        width: 90vw !important;
        height: 60vh !important;
        max-width: 90vw !important;
        max-height: 60vh !important;
    }
}

/* ページ内部品 */
.freespace-content { margin-bottom: 2rem; }
.freespace-content img { max-width: 100%; height: auto; }
/* PC/SP出し分けが必要になった場合は以下を有効化
.freespace-sp { display: none; }
.freespace-pc { display: block; }
@media (max-width: 768px) {
    .freespace-sp { display: block; }
    .freespace-pc { display: none; }
}
*/

/* ==========================================
   お問い合わせページ: 案内ガイド (.e-inquiryGuide)
   ._sitetop._inquiry  ※sitetop.cssは非ログインTOPページのみ読込のためこちらに記述
   ========================================== */
._sitetop._inquiry .e-inquiryGuide {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    margin-bottom: 2.5rem;
    padding: 1.75rem 2rem;
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
}

._sitetop._inquiry .e-inquiryGuide__lead {
    font-size: 0.95rem;
    line-height: 1.8;
    color: var(--c-text);
}

._sitetop._inquiry .e-inquiryGuide__topics {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.5rem;
    padding: 0;
    list-style: none;
}

._sitetop._inquiry .e-inquiryGuide__topics li {
    background: #f8f8f8;
    border: 1px solid #e8e8e8;
    border-radius: 6px;
    padding: 0.55rem 0.85rem;
    font-size: 0.875rem;
    color: var(--c-text);
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

._sitetop._inquiry .e-inquiryGuide__topics li::before {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    content: "\f00c";
    color: var(--c-main);
    font-size: 0.75em;
    flex-shrink: 0;
}

._sitetop._inquiry .e-inquiryGuide__cancel {
    background: #fafafa;
    border: 1px solid #e0e0e0;
    border-left: 3px solid var(--c-main);
    border-radius: 0 6px 6px 0;
    padding: 1.25rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

._sitetop._inquiry .e-inquiryGuide__cancelTitle {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--c-text);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
}

._sitetop._inquiry .e-inquiryGuide__cancelTitle::before {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    content: "\f05a";
    font-size: 1em;
    color: var(--c-main);
}

._sitetop._inquiry .e-inquiryGuide__cancel > p {
    font-size: 0.875rem;
    color: var(--c-text);
    line-height: 1.7;
    margin: 0;
}

._sitetop._inquiry .e-inquiryGuide__list {
    padding-left: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    list-style: none;
    counter-reset: inquiry-step;
}

._sitetop._inquiry .e-inquiryGuide__list li {
    list-style: none;
    font-size: 0.875rem;
    line-height: 1.7;
    color: var(--c-text);
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    counter-increment: inquiry-step;
}

._sitetop._inquiry .e-inquiryGuide__list li::before {
    content: counter(inquiry-step);
    background: #888;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    min-width: 1.4em;
    height: 1.4em;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 0.2em;
}

@media (max-width: 600px) {
    ._sitetop._inquiry .e-inquiryGuide {
        padding: 1.25rem 1.2rem;
    }
    ._sitetop._inquiry .e-inquiryGuide__topics {
        grid-template-columns: 1fr;
    }
}

/* お問い合わせページ: フォームフッター（ボタンエリア）を白カードに */
._sitetop._inquiry .u-formFooter {
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: 8px;
    padding: 1.75rem 2rem;
    margin-top: 0.5rem;
    position: static;
}

/* ==========================================
   サイト共通フッター (.footer)
   ========================================== */
/* --- Footer --- */
.footer { background: var(--c-base); padding: 50px 0 30px; text-align: center; border-top: 1px solid #e0e0e0; }
.footer-nav { margin-bottom: 2rem; display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; }
.footer-nav a { margin: 0 10px; color: var(--c-text); font-size: 1.15rem; font-weight: 500; }
.footer-nav a:hover { color: var(--c-main); }
.copyright { font-size: 1.15rem; color: var(--c-gray); }
