@charset "utf-8";
/*
Theme Name: REHUB child
Theme URI: https://tcd-theme.com/tcd099
Description: WordPressテーマ「REHUB」の子テーマ
Template: rehub_tcd099
Author: TCD
Author URI: https://tcd-theme.com/
Version: 1.0
*/

/* ============================================================
   あすふるデザイントークン — Material Design 3 Expressive 準拠
   公式: https://m3.material.io/styles
   ============================================================ */
:root {
    /* ==========================================================
       1. M3E カラーロール (Color Roles)
       ========================================================== */

    /* --- Primary 系 (MAIN: あすふるグリーン) --- */
    --md-sys-color-primary: #8BC244;
    --md-sys-color-on-primary: #FFFFFF;
    --md-sys-color-primary-hover: #76AD37;
    --md-sys-color-primary-container: #E7F5D6;
    --md-sys-color-on-primary-container: #2B5F1B;

    /* --- Secondary 系 (SUB: スカイブルー) --- */
    --md-sys-color-secondary: #4A90E2;
    --md-sys-color-on-secondary: #FFFFFF;
    --md-sys-color-secondary-hover: #3A78C2;
    --md-sys-color-secondary-container: #E3F0FC;
    --md-sys-color-on-secondary-container: #1A3D6E;

    /* --- Tertiary 系 (ACCENT: エナジーオレンジ / CTA 専用) --- */
    --md-sys-color-tertiary: #F5A623;
    --md-sys-color-on-tertiary: #FFFFFF;
    --md-sys-color-tertiary-hover: #D9911A;
    --md-sys-color-tertiary-container: #FFF3E0;
    --md-sys-color-on-tertiary-container: #6D4200;

    /* --- Error 系 --- */
    --md-sys-color-error: #D93025;
    --md-sys-color-on-error: #FFFFFF;
    --md-sys-color-error-container: #FDECEC;
    --md-sys-color-on-error-container: #8F1D1D;

    /* --- Surface 系 (BASE BG: ソフトホワイト) --- */
    --md-sys-color-surface: #F9FBFA;
    --md-sys-color-surface-dim: #F0F4ED;
    --md-sys-color-surface-container-lowest: #FFFFFF;
    --md-sys-color-surface-container-low: #F8F9FA;
    --md-sys-color-surface-container: #F1F3F4;
    --md-sys-color-surface-container-high: #E8EAED;
    --md-sys-color-surface-container-highest: #DFE1E5;

    /* --- On-Surface 系 (TEXT MAIN: ダークグレー) --- */
    --md-sys-color-on-surface: #333333;
    --md-sys-color-on-surface-variant: #5F6368;

    /* --- Outline 系 (BORDER: ライトグレー) --- */
    --md-sys-color-outline: #E0E7E3;
    --md-sys-color-outline-variant: #EEF2F0;

    /* --- rgba() 用 RGB トリプレット --- */
    --asufuru-green-rgb: 139, 194, 68;
    --asufuru-blue-rgb: 74, 144, 226;
    --asufuru-orange-rgb: 245, 166, 35;

    /* --- あすふる互換エイリアス --- */
    --asufuru-green: var(--md-sys-color-primary);
    --asufuru-main-bg: var(--md-sys-color-surface);
    --asufuru-text-main: var(--md-sys-color-on-surface);

    /* ==========================================================
       2. M3E タイポグラフィ (Typescale)
       ========================================================== */
    --md-ref-typeface-brand: 'Plus Jakarta Sans', 'Noto Sans JP', sans-serif;
    --md-ref-typeface-plain: 'Noto Sans JP', sans-serif;

    --md-sys-typescale-display-large-size: clamp(40px, 4vw, 57px);
    --md-sys-typescale-display-large-line-height: 1.15;
    --md-sys-typescale-display-large-weight: 900;

    --md-sys-typescale-display-medium-size: clamp(36px, 3.5vw, 45px);
    --md-sys-typescale-display-medium-line-height: 1.18;
    --md-sys-typescale-display-medium-weight: 800;

    --md-sys-typescale-display-small-size: clamp(30px, 3vw, 36px);
    --md-sys-typescale-display-small-line-height: 1.22;
    --md-sys-typescale-display-small-weight: 800;

    --md-sys-typescale-headline-large-size: clamp(28px, 3.2vw, 42px);
    --md-sys-typescale-headline-large-line-height: 1.25;
    --md-sys-typescale-headline-large-weight: 800;

    --md-sys-typescale-headline-medium-size: clamp(22px, 2.2vw, 30px);
    --md-sys-typescale-headline-medium-line-height: 1.35;
    --md-sys-typescale-headline-medium-weight: 700;

    --md-sys-typescale-headline-small-size: clamp(20px, 1.8vw, 24px);
    --md-sys-typescale-headline-small-line-height: 1.35;
    --md-sys-typescale-headline-small-weight: 700;

    --md-sys-typescale-title-large-size: clamp(18px, 1.6vw, 22px);
    --md-sys-typescale-title-large-line-height: 1.4;
    --md-sys-typescale-title-large-weight: 700;

    --md-sys-typescale-title-medium-size: 16px;
    --md-sys-typescale-title-medium-line-height: 1.5;
    --md-sys-typescale-title-medium-weight: 700;

    --md-sys-typescale-title-small-size: 14px;
    --md-sys-typescale-title-small-line-height: 1.45;
    --md-sys-typescale-title-small-weight: 700;

    --md-sys-typescale-body-large-size: 16px;
    --md-sys-typescale-body-large-line-height: 1.8;
    --md-sys-typescale-body-large-weight: 400;

    --md-sys-typescale-body-medium-size: 15px;
    --md-sys-typescale-body-medium-line-height: 1.75;
    --md-sys-typescale-body-medium-weight: 400;

    --md-sys-typescale-body-small-size: 12px;
    --md-sys-typescale-body-small-line-height: 1.65;
    --md-sys-typescale-body-small-weight: 400;

    --md-sys-typescale-label-large-size: 14px;
    --md-sys-typescale-label-large-line-height: 1.5;
    --md-sys-typescale-label-large-weight: 700;

    --md-sys-typescale-label-medium-size: 13px;
    --md-sys-typescale-label-medium-line-height: 1.4;
    --md-sys-typescale-label-medium-weight: 700;

    --md-sys-typescale-label-small-size: 12px;
    --md-sys-typescale-label-small-line-height: 1.4;
    --md-sys-typescale-label-small-weight: 700;

    /* ==========================================================
       3. M3E スペーシング (4dp グリッド)
       ========================================================== */
    --md-sys-spacing-0: 0px;
    --md-sys-spacing-1: 4px;
    --md-sys-spacing-2: 8px;
    --md-sys-spacing-3: 12px;
    --md-sys-spacing-4: 16px;
    --md-sys-spacing-5: 20px;
    --md-sys-spacing-6: 24px;
    --md-sys-spacing-7: 28px;
    --md-sys-spacing-8: 32px;
    --md-sys-spacing-9: 36px;
    --md-sys-spacing-10: 40px;
    --md-sys-spacing-12: 48px;
    --md-sys-spacing-14: 56px;
    --md-sys-spacing-16: 64px;
    --md-sys-spacing-20: 80px;
    --md-sys-spacing-24: 96px;

    /* ==========================================================
       4. M3E シェイプ (角丸 10段階)
       ========================================================== */
    --md-sys-shape-corner-none: 0px;
    --md-sys-shape-corner-extra-small: 4px;
    --md-sys-shape-corner-small: 8px;
    --md-sys-shape-corner-medium: 12px;
    --md-sys-shape-corner-large: 16px;
    --md-sys-shape-corner-large-increased: 20px;
    --md-sys-shape-corner-extra-large: 28px;
    --md-sys-shape-corner-extra-large-increased: 32px;
    --md-sys-shape-corner-extra-extra-large: 48px;
    --md-sys-shape-corner-full: 9999px;

    /* ==========================================================
       5. M3E エレベーション (シャドウ level 0–5)
       ========================================================== */
    --md-sys-elevation-0: none;
    --md-sys-elevation-1: 0 1px 2px rgba(60, 64, 67, 0.08);
    --md-sys-elevation-2: 0 4px 12px rgba(60, 64, 67, 0.10);
    --md-sys-elevation-3: 0 8px 20px rgba(60, 64, 67, 0.12);
    --md-sys-elevation-4: 0 10px 28px rgba(60, 64, 67, 0.14);
    --md-sys-elevation-5: 0 14px 36px rgba(60, 64, 67, 0.16);
    --asufuru-elevation-primary: 0 10px 22px rgba(139, 194, 68, 0.22);
    --asufuru-elevation-tertiary: 0 8px 20px rgba(245, 166, 35, 0.25);

    /* ==========================================================
       6. M3E モーション
       ========================================================== */
    --md-sys-motion-duration-short: 0.15s;
    --md-sys-motion-duration-medium: 0.2s;
    --md-sys-motion-duration-long: 0.3s;
    --md-sys-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
    --md-sys-motion-easing-emphasized: cubic-bezier(0.05, 0.7, 0.1, 1);

    /* ==========================================================
       7. z-index スケール
       ========================================================== */
    --asufuru-z-fab: 120;
    --asufuru-z-drawer: 200;
    --asufuru-z-modal: 300;

    /* ==========================================================
       8. あすふるコンポーネントトークン (M3E ロールの参照)
       ========================================================== */
    --asufuru-section-padding-y: var(--md-sys-spacing-12);
    --asufuru-section-padding-y-sm: var(--md-sys-spacing-8);
    --asufuru-screen-gutter: var(--md-sys-spacing-4);
    --asufuru-card-radius: var(--md-sys-shape-corner-medium);
    --asufuru-surface-radius-large: var(--md-sys-shape-corner-extra-large);
    --asufuru-chip-radius: var(--md-sys-shape-corner-small);
    --asufuru-button-pill-radius: var(--md-sys-shape-corner-full);
    /* トップ（ストライプ内）：セクション下部の「一覧を見る」等 CTA 行の上余白 */
    --asufuru-fp-cta-row-margin-top: var(--md-sys-spacing-10);

    --asufuru-fp-stripe-a: var(--md-sys-color-surface-container-lowest);
    --asufuru-fp-stripe-b: var(--md-sys-color-surface-container-low);
}

/* トップページ: ストライプ帯（子セクションの背景は透明にして帯色を見せる） */
.asufuru-fp-stripe--even {
    background-color: var(--asufuru-fp-stripe-a);
}

.asufuru-fp-stripe--odd {
    background-color: var(--asufuru-fp-stripe-b);
}

/* 帯の色を見せるため、直下のセクションの背景は透過（TCD / 子テーマ共通） */
.asufuru-fp-stripe > section {
    background-color: transparent !important;
}

/* テンプレ内 <style> より高specificityで上書き */
.asufuru-fp-stripe .asufuru-emblem-section {
    background-color: transparent !important;
}

.asufuru-fp-stripe + .asufuru-fp-stripe {
    border-top: 1px solid var(--md-sys-color-outline);
}

/* トップ: ストライプ帯の余白 — margin:0 でボーダーと密着させ、padding で内側の呼吸を確保 */
.asufuru-fp-stripe {
    margin-top: 0;
    margin-bottom: 0;
    padding-top: var(--md-sys-spacing-12);
    padding-bottom: var(--md-sys-spacing-12);
}

.asufuru-fp-stripe:first-of-type {
    margin-top: 0;
}

/* 帯内の直下セクションは縦余白を 0 にし、帯の padding に一任 */
.asufuru-fp-stripe > section,
.asufuru-fp-stripe > .asufuru-search-ranking-wrapper,
.asufuru-fp-stripe > .asufuru-org-updates-feed {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* ID セレクタは詳細度が高いため個別に上書き */
html body .asufuru-fp-stripe > #asufuru-taxonomy-categories {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    background-color: transparent !important;
}

/* 帯内に複数セクションが並ぶ場合: ストライプ間と同様に border + padding で区切る
   margin-top = ボーダー上の余白、padding-top = ボーダー下の余白 */
.asufuru-fp-stripe > section + section:not([hidden]),
.asufuru-fp-stripe > section + .asufuru-search-ranking-wrapper:not([hidden]),
.asufuru-fp-stripe > section + .asufuru-org-updates-feed:not([hidden]) {
    margin-top: var(--md-sys-spacing-12) !important;
    padding-top: var(--md-sys-spacing-12) !important;
    border-top: 1px solid var(--md-sys-color-outline) !important;
}
/* ID セレクタの padding/margin を上書き（#asufuru-taxonomy-categories 等） */
html body .asufuru-fp-stripe > section + #asufuru-taxonomy-categories:not([hidden]) {
    margin-top: var(--md-sys-spacing-12) !important;
    padding-top: var(--md-sys-spacing-12) !important;
    border-top: 1px solid var(--md-sys-color-outline) !important;
}

@media (max-width: 767px) {
    /* セクション自体は常に全幅表示 */
    body .l-main > section,
    body main.l-main > section,
    body .l-main > article.asufuru-listing-guide-page.asufuru-listing-guide,
    body main.l-main > article.asufuru-listing-guide-page.asufuru-listing-guide,
    body .l-main > .asufuru-fp-stripe,
    body main.l-main > .asufuru-fp-stripe,
    body .l-main > .asufuru-fp-stripe > section,
    body main.l-main > .asufuru-fp-stripe > section {
        width: 100vw !important;
        max-width: 100vw !important;
        margin-left: calc(50% - 50vw) !important;
        margin-right: calc(50% - 50vw) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        box-sizing: border-box;
    }

    /* section 自体が l-inner の場合は、内容ラインをトップ基準ガターに揃える */
    body .l-main > section.l-inner,
    body main.l-main > section.l-inner,
    body .l-main > .asufuru-fp-stripe > section.l-inner,
    body main.l-main > .asufuru-fp-stripe > section.l-inner {
        width: auto !important;
        max-width: none !important;
        margin-left: var(--asufuru-screen-gutter) !important;
        margin-right: var(--asufuru-screen-gutter) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        box-sizing: border-box;
    }

    .asufuru-fp-stripe {
        margin-top: 0;
        margin-bottom: 0;
        padding-top: var(--md-sys-spacing-10);
        padding-bottom: var(--md-sys-spacing-10);
    }

    .asufuru-fp-stripe:first-of-type {
        margin-top: 0;
    }

    /* SP: 帯内セクションの縦余白リセット（デスクトップと同様） */
    .asufuru-fp-stripe > section,
    .asufuru-fp-stripe > .asufuru-search-ranking-wrapper,
    .asufuru-fp-stripe > .asufuru-org-updates-feed {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        margin-top: 0 !important;
        margin-bottom: 0 !important;
    }

    html body .asufuru-fp-stripe > #asufuru-taxonomy-categories {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        background-color: transparent !important;
    }

    .asufuru-fp-stripe > section + section:not([hidden]),
    .asufuru-fp-stripe > section + .asufuru-search-ranking-wrapper:not([hidden]),
    .asufuru-fp-stripe > section + .asufuru-org-updates-feed:not([hidden]) {
        margin-top: var(--md-sys-spacing-10) !important;
        padding-top: var(--md-sys-spacing-10) !important;
        border-top: 1px solid var(--md-sys-color-outline) !important;
    }
    html body .asufuru-fp-stripe > section + #asufuru-taxonomy-categories:not([hidden]) {
        margin-top: var(--md-sys-spacing-10) !important;
        padding-top: var(--md-sys-spacing-10) !important;
        border-top: 1px solid var(--md-sys-color-outline) !important;
    }

    /* 全ページ共通: SPはトップと同じ横幅ガター基準に統一 */
    body .l-container__inner.l-inner,
    body .l-main .l-inner {
        width: auto !important;
        max-width: none !important;
        margin-left: var(--asufuru-screen-gutter) !important;
        margin-right: var(--asufuru-screen-gutter) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        box-sizing: border-box;
    }
}

/* メイン内の最後の帯: フッター直上の下マージンは不要（無駄な空白を防ぐ） */
main.l-main > .asufuru-fp-stripe:last-child,
.l-main > .asufuru-fp-stripe:last-child {
    margin-bottom: 0 !important;
}

/* トップ（ストライプ内）：セクション下部の一覧・遷移 CTA 行（一覧を見る / 全ての団体を見る） */
.asufuru-fp-stripe .asufuru-list-footer {
    text-align: center;
    margin-top: var(--asufuru-fp-cta-row-margin-top);
    margin-bottom: 0;
    padding-left: 0;
    padding-right: 0;
}

/* 新着・活動的ランキング：一覧を見る */
.asufuru-fp-stripe .asufuru-btn-all {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--md-sys-spacing-3);
    max-width: 100%;
    box-sizing: border-box;
    padding: var(--md-sys-spacing-5) var(--md-sys-spacing-20);
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary) !important;
    border-radius: var(--asufuru-button-pill-radius);
    font-weight: 900;
    font-size: var(--md-sys-typescale-title-large-size);
    text-decoration: none !important;
    box-shadow: var(--md-sys-elevation-3);
    transition: transform var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard),
        box-shadow var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-fp-stripe .asufuru-btn-all:hover {
    transform: translateY(-2px);
    box-shadow: var(--md-sys-elevation-4);
}

@media (max-width: 767px) {
    .asufuru-fp-stripe .asufuru-btn-all {
        font-size: var(--md-sys-typescale-body-large-size);
        padding: var(--md-sys-spacing-4) var(--md-sys-spacing-10);
    }
}

@media (max-width: 599px) {
    .asufuru-item-hidden-sp {
        display: none !important;
    }
}

/* --------------------------------------------------------------------------
   トップ：最近のチェックリスト（閲覧履歴カルーセル）
   -------------------------------------------------------------------------- */
.asufuru-recent-checklist:not([hidden]) {
    margin-bottom: var(--md-sys-spacing-10);
}

.asufuru-recent-checklist .p-fp-section__header {
    margin-bottom: var(--md-sys-spacing-6) !important;
}

.asufuru-recent-checklist__swiper {
    overflow: hidden;
    padding-bottom: var(--md-sys-spacing-2);
}

.asufuru-recent-checklist__slide {
    height: auto;
    box-sizing: border-box;
}

/* レビューカード共通（最近のチェックリスト・ランキング系カルーセル） */
.asufuru-unified-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--md-sys-color-surface-container-lowest);
    border: 1px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-medium);
    box-shadow: var(--md-sys-elevation-2);
    overflow: hidden;
    transition: box-shadow var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard), transform var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-unified-card:hover {
    box-shadow: var(--md-sys-elevation-3);
    transform: translateY(-2px);
}

.asufuru-unified-card__image-link {
    display: block;
    text-decoration: none;
    color: inherit;
}

.asufuru-unified-card__image-wrap {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--md-sys-color-surface-container);
}

.asufuru-unified-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.asufuru-unified-card__body {
    flex: 1 1 auto;
    padding: var(--md-sys-spacing-4);
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-2);
}

.asufuru-unified-card__title {
    margin: 0 !important;
    font-family: 'Noto Sans JP', sans-serif !important;
    font-weight: 800 !important;
    font-size: var(--md-sys-typescale-body-large-size) !important;
    line-height: 1.45 !important;
    color: var(--asufuru-text-main) !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.asufuru-unified-card__meta {
    margin: 0 !important;
    font-size: var(--md-sys-typescale-label-medium-size) !important;
    line-height: 1.4 !important;
    color: var(--md-sys-color-on-surface-variant) !important;
    font-weight: 600 !important;
}

.asufuru-unified-card__meta--sports::before {
    content: '競技：';
    color: var(--md-sys-color-on-surface-variant);
    font-weight: 600;
    margin-right: var(--md-sys-spacing-1);
}

.asufuru-unified-card__meta--region::before {
    content: '地域：';
    color: var(--md-sys-color-on-surface-variant);
    font-weight: 600;
    margin-right: var(--md-sys-spacing-1);
}

.asufuru-unified-card__meta--age::before {
    content: '年代：';
    color: var(--md-sys-color-on-surface-variant);
    font-weight: 600;
    margin-right: var(--md-sys-spacing-1);
}

.asufuru-unified-card__rating-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--md-sys-spacing-2) var(--md-sys-spacing-3);
    margin-top: auto;
    padding-top: var(--md-sys-spacing-2);
}

.asufuru-unified-card__stars .p-star-review {
    display: inline-flex;
    align-items: center;
    gap: var(--md-sys-spacing-1);
}

/* 総合評価なし（「-」）：5つ星は薄いグレーで未評価を示す */
.asufuru-unified-card__stars--no-rating .p-star-review__icon {
    color: var(--md-sys-color-outline) !important;
}
.asufuru-unified-card__stars--no-rating .p-star-review__icon.is-active:before,
.asufuru-unified-card__stars--no-rating .p-star-review__icon.is-active::before {
    color: var(--md-sys-color-outline) !important;
}

.asufuru-unified-card__rating-num {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-large-size);
    color: var(--asufuru-text-main);
}

.asufuru-unified-card__comments {
    font-size: var(--md-sys-typescale-body-small-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-unified-card__cta {
    display: flex !important;
    align-items: center;
    justify-content: center;
    margin: 0 var(--md-sys-spacing-4) var(--md-sys-spacing-4);
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-4);
    background: var(--md-sys-color-secondary) !important;
    color: var(--md-sys-color-on-secondary) !important;
    font-weight: 800 !important;
    font-size: var(--md-sys-typescale-body-medium-size) !important;
    text-decoration: none !important;
    border-radius: var(--md-sys-shape-corner-small);
    transition: opacity var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard), transform var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
    box-shadow: 0 4px 12px rgba(var(--asufuru-blue-rgb), 0.25);
}

.asufuru-unified-card__cta:hover {
    opacity: 0.95;
    transform: translateY(-1px);
    color: var(--md-sys-color-on-secondary) !important;
    background: var(--md-sys-color-secondary-hover) !important;
}

.asufuru-unified-card__cta-group {
    display: grid;
    gap: var(--md-sys-spacing-3);
    margin: 0 var(--md-sys-spacing-4) var(--md-sys-spacing-4);
}

.asufuru-unified-card__cta-group .asufuru-unified-card__cta {
    margin: 0;
}

.asufuru-unified-card__cta--secondary {
    background: var(--md-sys-color-tertiary) !important;
    color: var(--md-sys-color-on-tertiary) !important;
    border: 2px solid var(--md-sys-color-tertiary);
    box-shadow: var(--asufuru-elevation-tertiary);
}

.asufuru-unified-card__cta--secondary:hover {
    background: var(--md-sys-color-tertiary-hover) !important;
    color: var(--md-sys-color-on-tertiary) !important;
}

@media (max-width: 767px) {
    .asufuru-recent-checklist:not([hidden]) {
        margin-bottom: var(--md-sys-spacing-8);
    }
}

/* 検索・絞り込み・アーカイブ：グレー背景はビューポート全幅、カードグリッドは .l-inner＝人気団体と同じ最大幅 */
.asufuru-review-cards-list.p-review-loop-wrapper {
    /* 親テーマ .p-review-loop-wrapper { overflow: hidden } が全幅背景を切らないようにする */
    overflow: visible !important;
}

.asufuru-review-cards-list {
    background: var(--md-sys-color-surface-container);
    padding: var(--md-sys-spacing-4) 0 var(--md-sys-spacing-6);
    box-sizing: border-box;
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    position: relative;
}

/* 100vw とスクロールバー起因の横スクロールを抑止 */
html:has(.asufuru-review-cards-list) {
    overflow-x: hidden;
}

.asufuru-review-cards-list > .l-inner.asufuru-review-cards-list__inner {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-4);
}

/* PC：4列（タブレットは2列） */
@media (min-width: 768px) {
    .asufuru-review-cards-list > .l-inner.asufuru-review-cards-list__inner {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        align-items: stretch;
    }
}

@media (min-width: 992px) {
    .asufuru-review-cards-list > .l-inner.asufuru-review-cards-list__inner {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.asufuru-review-cards-list__item {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.asufuru-review-cards-list__item .asufuru-unified-card {
    width: 100%;
    max-width: 100%;
    height: 100%;
}

.u-color-asufuru {
    color: var(--asufuru-green) !important;
}

/* --------------------------------------------------------------------------
   団体詳細：活動の様子（ぐるなび型・3×3 正方形格子・タップで拡大）
   .post_content ul/img のテーマ既定を打ち消すため .single-review で強めに指定
   -------------------------------------------------------------------------- */
.asufuru-activity-photo-grid-wrap {
    margin-top: var(--md-sys-spacing-6);
    padding: 0;
    background: transparent;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    position: relative;
    overflow: visible;
}

.asufuru-activity-photo-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 0;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent;
    border: none;
    box-sizing: border-box;
}

.asufuru-activity-photo-grid__cell {
    margin: 0 !important;
    padding: 0 !important;
    min-width: 0;
    position: relative;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--md-sys-color-surface-container-high);
}

.asufuru-activity-photo-grid__trigger {
    -webkit-appearance: none;
    appearance: none;
    display: block;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    cursor: zoom-in;
    background: var(--md-sys-color-surface-container-high);
    line-height: 0;
    text-align: left;
}

.asufuru-activity-photo-grid__trigger:focus-visible {
    outline: 3px solid var(--md-sys-color-primary);
    outline-offset: 2px;
    z-index: 1;
}

/* 親テーマ .post_content img { height: auto; max-width: 100% } を上書き */
.single-review .post_content .asufuru-activity-photo-grid__img,
.single-review .post_content .asufuru-activity-photo-grid__trigger img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: cover !important;
    vertical-align: top;
}

/* ライトボックス（ぐるなび風：暗幕＋中央拡大＋×） */
.asufuru-activity-lightbox {
    position: fixed;
    inset: 0;
    z-index: 100090;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
    box-sizing: border-box;
}

.asufuru-activity-lightbox[hidden] {
    display: none !important;
}

.asufuru-activity-lightbox__backdrop {
    position: absolute;
    inset: 0;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgba(0, 0, 0, 0.88);
    cursor: zoom-out;
}

.asufuru-activity-lightbox__inner {
    position: relative;
    z-index: 1;
    max-width: 100%;
    max-height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.asufuru-activity-lightbox__img {
    display: block;
    max-width: min(100vw - 32px, 100%);
    max-height: min(100vh - 100px, 92vh);
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 0;
    box-shadow: 0 8px 40px rgba(0, 0, 0, 0.45);
}

.asufuru-activity-lightbox__close {
    position: fixed;
    top: max(10px, env(safe-area-inset-top));
    right: max(10px, env(safe-area-inset-right));
    z-index: 2;
    width: 44px;
    height: 44px;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-activity-lightbox__close:hover {
    background: rgba(255, 255, 255, 0.22);
}

.asufuru-activity-lightbox__close-x {
    position: relative;
    width: 22px;
    height: 22px;
    display: block;
}

.asufuru-activity-lightbox__close-x::before,
.asufuru-activity-lightbox__close-x::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    width: 2px;
    height: 22px;
    margin-left: -1px;
    margin-top: -11px;
    background: var(--md-sys-color-surface-container-lowest);
    border-radius: 1px;
}

.asufuru-activity-lightbox__close-x::before {
    transform: rotate(45deg);
}

.asufuru-activity-lightbox__close-x::after {
    transform: rotate(-45deg);
}

@media (max-width: 767px) {
    .asufuru-activity-photo-grid-wrap {
        margin-top: var(--md-sys-spacing-4);
    }
}

/* ============================================================
   あすふる：地図検索セクションのレイアウト調整
   ============================================================ */
.asufuru-map-search {
    margin: var(--asufuru-section-padding-y) auto !important;
    padding: 0 var(--md-sys-spacing-5) !important;
}

@media (max-width: 767px) {
    .asufuru-map-search {
        margin: var(--asufuru-section-padding-y-sm) auto !important;
        padding: 0 var(--md-sys-spacing-3) !important;
    }
}

/* ============================================================
   あすふる：お好みの条件で探す（タグボタン）
   ============================================================ */
html body section.p-fp-review-tags.p-fp-section {
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

html body section.p-fp-review-tags ul.p-fp-review-tags__list li.p-fp-review-tags__item a.p-fp-review-tags__item-link {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background-color: var(--md-sys-color-surface-container-lowest) !important;
    color: var(--md-sys-color-on-surface) !important;
    border: 2px solid var(--md-sys-color-primary) !important;
    height: auto !important;
    min-height: 58px !important;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-10) !important;
    margin: var(--md-sys-spacing-2) !important;
    border-radius: var(--asufuru-button-pill-radius) !important;
    font-size: var(--md-sys-typescale-title-large-size) !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    letter-spacing: 0.05em !important;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease !important;
    box-shadow: var(--md-sys-elevation-1) !important;
}

html body section.p-fp-review-tags ul.p-fp-review-tags__list li.p-fp-review-tags__item a.p-fp-review-tags__item-link:hover {
    background-color: var(--md-sys-color-surface-container-low) !important;
    color: var(--md-sys-color-on-surface) !important;
    border-color: var(--md-sys-color-primary) !important;
    transform: translateY(-2px) !important;
    box-shadow: var(--md-sys-elevation-2) !important;
}

/* SP：タグを M3 チップに近いコンパクトさに（PC のルールは変更しない） */
@media (max-width: 767px) {
    html body section.p-fp-review-tags .p-fp-review-tags__inner {
        padding-left: var(--md-sys-spacing-4) !important;
        padding-right: var(--md-sys-spacing-4) !important;
    }

    html body section.p-fp-review-tags ul.p-fp-review-tags__list {
        margin: 0 !important;
        gap: var(--md-sys-spacing-2) var(--md-sys-spacing-3) !important;
        row-gap: var(--md-sys-spacing-2) !important;
        justify-content: center !important;
    }

    html body section.p-fp-review-tags ul.p-fp-review-tags__list li.p-fp-review-tags__item {
        margin: 0 !important;
    }

    html body section.p-fp-review-tags ul.p-fp-review-tags__list li.p-fp-review-tags__item a.p-fp-review-tags__item-link {
        box-sizing: border-box !important;
        min-height: 44px !important;
        padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4) !important;
        margin: 0 !important;
        border-width: 1.5px !important;
        border-color: var(--md-sys-color-primary) !important;
        border-radius: var(--md-sys-shape-corner-full) !important;
        font-size: var(--md-sys-typescale-label-large-size) !important;
        font-weight: 700 !important;
        line-height: 1.35 !important;
        letter-spacing: 0.02em !important;
        background-color: var(--md-sys-color-surface-container-lowest) !important;
        color: var(--md-sys-color-on-surface) !important;
        box-shadow: var(--md-sys-elevation-1) !important;
    }

    html body section.p-fp-review-tags ul.p-fp-review-tags__list li.p-fp-review-tags__item a.p-fp-review-tags__item-link:hover {
        background-color: var(--md-sys-color-surface-container-low) !important;
        transform: translateY(-1px) !important;
        box-shadow: var(--md-sys-elevation-2) !important;
    }
}

/* ==========================================================================
   あすふる：カテゴリーセクション（完全上書き版）
   ========================================================================== */

/* セクション全体 */
html body #asufuru-taxonomy-categories {
    background-color: var(--asufuru-main-bg) !important;
    padding: var(--asufuru-section-padding-y) 0 !important;
}

@media (max-width: 767px) {
    html body #asufuru-taxonomy-categories { padding: var(--asufuru-section-padding-y-sm) 0 !important; }
}

/* 3カラムレイアウト */
.asufuru-tax-grid {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: var(--md-sys-spacing-10) !important;
    align-items: start !important;
    max-width: 1200px;
    margin: 0 auto;
}

@media (max-width: 991px) {
    .asufuru-tax-grid { grid-template-columns: 1fr !important; gap: var(--md-sys-spacing-12) !important; }
}

/* 見出しデザイン */
.asufuru-tax-header {
    text-align: left !important;
    margin-bottom: var(--md-sys-spacing-7) !important;
    border: none !important;
}

.asufuru-tax-header .en {
    display: block !important;
    font-family: 'Plus Jakarta Sans', sans-serif !important;
    font-weight: 800 !important;
    font-size: var(--md-sys-typescale-label-medium-size) !important;
    color: var(--asufuru-green) !important;
    letter-spacing: 0.2em !important;
    margin-bottom: 5px !important;
}

.asufuru-tax-header .ja {
    display: block !important;
    font-family: 'Noto Sans JP', sans-serif !important;
    font-weight: 900 !important;
    font-size: var(--md-sys-typescale-headline-medium-size) !important;
    color: var(--md-sys-color-on-surface) !important;
    margin: 0 !important;
}

/* リストアイテム：カード型装飾 */
html body ul.asufuru-tax-list {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

html body ul.asufuru-tax-list li {
    margin: 0 0 var(--md-sys-spacing-3) 0 !important;
    padding: 0 !important;
    list-style: none !important;
    border: none !important;
}

html body ul.asufuru-tax-list li a {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    background: var(--md-sys-color-surface-container-lowest) !important;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-5) !important;
    border-radius: var(--asufuru-card-radius) !important;
    box-shadow: var(--md-sys-elevation-2) !important;
    text-decoration: none !important;
    transition: all var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard) !important;
}

html body ul.asufuru-tax-list li a:hover {
    transform: translateY(-3px) !important;
    box-shadow: var(--md-sys-elevation-3) !important;
}

/* テキストとカウント */
html body .tax-name {
    font-family: 'Noto Sans JP', sans-serif !important;
    font-weight: 700 !important;
    font-size: var(--md-sys-typescale-body-large-size) !important;
    color: var(--md-sys-color-on-surface) !important;
}

html body .tax-count {
    font-family: 'Plus Jakarta Sans', sans-serif !important;
    font-weight: 800 !important;
    font-size: var(--md-sys-typescale-body-small-size) !important;
    color: var(--asufuru-green) !important;
    background-color: var(--md-sys-color-primary-container) !important;
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3) !important;
    border-radius: var(--asufuru-button-pill-radius) !important;
}

/* カテゴリーセクション：共通見出し（他セクションと同一トンマナ） */
#asufuru-taxonomy-categories .p-fp-section__header {
    margin-bottom: var(--md-sys-spacing-6);
}

@media (max-width: 767px) {
    #asufuru-taxonomy-categories .p-fp-section__header {
        margin-bottom: var(--md-sys-spacing-4);
    }
}

/* SP: 「地域 / 年代 / 競技」タブ（M3＋あすふる緑。768px 未満のみ。デフォルトは競技） */
.asufuru-tax-tabs-sp {
    display: none;
}

@media (max-width: 767px) {
    .asufuru-tax-tabs-sp {
        display: flex;
        width: 100%;
        max-width: 1200px;
        margin: 0 auto var(--md-sys-spacing-6);
        padding: 0;
        border: 1px solid var(--md-sys-color-outline-variant);
        border-radius: var(--md-sys-shape-corner-small);
        overflow: hidden;
        background: var(--md-sys-color-surface-container);
        box-sizing: border-box;
        box-shadow: var(--md-sys-elevation-1);
    }

    .asufuru-tax-tab {
        flex: 1 1 0;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 0;
        min-height: 48px;
        margin: 0;
        padding: var(--md-sys-spacing-2) var(--md-sys-spacing-2);
        font-family: 'Noto Sans JP', sans-serif !important;
        font-weight: 700 !important;
        font-size: clamp(12px, 3.2vw, 14px) !important;
        line-height: 1.35;
        letter-spacing: 0.02em;
        color: var(--md-sys-color-on-surface-variant);
        background: transparent;
        border: none;
        border-right: 1px solid var(--md-sys-color-outline-variant);
        border-top: 3px solid transparent;
        border-bottom: 2px solid var(--md-sys-color-outline-variant);
        cursor: pointer;
        transition: color var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard), background var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard), border-color var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
        -webkit-tap-highlight-color: transparent;
    }

    .asufuru-tax-tab:last-child {
        border-right: none;
    }

    .asufuru-tax-tab.is-active {
        color: var(--asufuru-green) !important;
        background: var(--md-sys-color-surface-container-lowest) !important;
        border-top-color: var(--asufuru-green) !important;
        border-bottom-color: var(--md-sys-color-outline-variant);
        box-shadow: 0 1px 0 rgba(var(--asufuru-green-rgb), 0.12);
    }

    .asufuru-tax-tab:focus {
        outline: none;
    }

    .asufuru-tax-tab:focus-visible {
        outline: 2px solid var(--asufuru-green);
        outline-offset: -2px;
        z-index: 1;
    }

    #asufuru-taxonomy-categories .asufuru-tax-column:not(.asufuru-tax-column--active) {
        display: none !important;
    }

    #asufuru-taxonomy-categories .asufuru-tax-column.asufuru-tax-column--active {
        display: block !important;
    }

    /* タブラベルと重複するため列見出しは非表示 */
    #asufuru-taxonomy-categories .asufuru-tax-column .asufuru-tax-header {
        display: none !important;
    }
}

@media (min-width: 768px) {
    .asufuru-tax-tabs-sp {
        display: none !important;
    }

    #asufuru-taxonomy-categories .asufuru-tax-column {
        display: block !important;
    }
}

/* スマホ版「もっと見る」の制御 */
@media (max-width: 767px) {
    .as-item-hidden-sp {
        display: none !important;
    }
    .is-expanded .as-item-hidden-sp {
        display: block !important;
    }
    .is-expanded .as-item-hidden-sp a {
        display: flex !important;
    }

    .as-btn-container {
        display: flex;
        justify-content: center;
        margin-top: var(--md-sys-spacing-5);
    }

    .as-load-more-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: var(--md-sys-spacing-2);
        width: 100%;
        max-width: 300px;
        padding: var(--md-sys-spacing-4);
        background: var(--md-sys-color-surface-container-lowest);
        border: 2px solid var(--md-sys-color-outline);
        border-radius: var(--md-sys-shape-corner-small);
        font-weight: 700;
        color: var(--md-sys-color-on-surface-variant);
        cursor: pointer;
        transition: all var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
    }
}


/*--------------------------------------------------
  あすふる：お問い合わせフォーム 最終デザイン（装飾復活版）
--------------------------------------------------*/

/* フォーム全体：余白ルール SP 60px / PC 100px を意識 */
.asufuru-form-container {
    max-width: 800px;
    margin: var(--md-sys-spacing-10) auto;
    color: var(--asufuru-text-main); /* #333333 */
    font-family: 'Noto Sans JP', sans-serif; /* 本文：和文優先 [cite: 28] */
}

/* 体験申込ページではフォームを見出し幅に合わせてフル表示 */
.asufuru-trial-entry-page .asufuru-form-container {
    max-width: 100%;
    margin-top: var(--md-sys-spacing-6);
}

.asufuru-trial-form-wrap {
    text-align: left;
    background: var(--md-sys-color-surface-container-lowest);
    border-radius: var(--md-sys-shape-corner-extra-large);
    border: 1px solid var(--md-sys-color-outline-variant);
    box-shadow: var(--md-sys-elevation-3);
    padding: clamp(16px, 3vw, 28px);
}

/* 体験申込ページ：申込先カード */
.asufuru-trial-entry-page__target {
    margin: 0 0 var(--md-sys-spacing-6);
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-5);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium);
    background: linear-gradient(180deg, var(--md-sys-color-primary-container) 0%, var(--md-sys-color-surface-container-lowest) 100%);
}

.asufuru-trial-entry-page__target-label {
    margin: 0 0 var(--md-sys-spacing-1);
    font-size: var(--md-sys-typescale-body-small-size);
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-trial-entry-page__target-title {
    margin: 0;
    font-size: var(--md-sys-typescale-headline-medium-size);
    font-weight: 800;
    line-height: 1.4;
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-trial-entry-page__target-link-wrap {
    margin: var(--md-sys-spacing-3) 0 0;
}

.asufuru-trial-entry-page__target-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-label-medium-size);
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    transition: all var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-trial-entry-page__target-link:hover {
    color: var(--asufuru-green);
    border-color: rgba(var(--asufuru-green-rgb), 0.35);
    background: var(--md-sys-color-primary-container);
}

/* 体験申込ページ（SP）：横幅を広げて余白を圧縮 */
@media (max-width: 767px) {
    .asufuru-trial-entry-page {
        padding-top: var(--md-sys-spacing-6) !important;
        padding-bottom: var(--md-sys-spacing-6) !important;
    }
    .asufuru-trial-entry-page .l-inner {
        width: 100% !important;
        max-width: none !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    .asufuru-trial-entry-page .p-fp-section__header {
        margin-bottom: var(--md-sys-spacing-4);
    }
    .asufuru-trial-entry-page__target {
        margin-bottom: var(--md-sys-spacing-4);
        padding: var(--md-sys-spacing-4) var(--md-sys-spacing-4);
    }
    .asufuru-trial-entry-page__target-title {
        font-size: var(--md-sys-typescale-headline-small-size);
        line-height: 1.3;
    }
    .asufuru-trial-entry-page .asufuru-form-container {
        margin-top: 0;
    }
    .asufuru-trial-entry-page .asufuru-trial-form-wrap {
        border-radius: var(--md-sys-shape-corner-large-increased);
        padding: var(--md-sys-spacing-4) var(--md-sys-spacing-3);
    }
}

/* 各項目：グレー背景を排除し、下線で区切る */
.asufuru-form-item {
    margin-bottom: var(--md-sys-spacing-8);
    padding-bottom: var(--md-sys-spacing-6);
    border-bottom: 1px solid var(--md-sys-color-outline);
    background: transparent !important;
}

/* ラベル：力強い見出しフォント [cite: 24] */
.asufuru-form-item label {
    display: block;
    font-family: 'Plus Jakarta Sans', 'Noto Sans JP', sans-serif;
    font-weight: 800;
    font-size: var(--md-sys-typescale-body-large-size);
    margin-bottom: var(--md-sys-spacing-3);
    line-height: 1.45;
    letter-spacing: 0.04em; /* 仕様書準拠 [cite: 15] */
}

/* ラベル直下の入力欄が詰まって重ならないように調整 */
.asufuru-form-item label .wpcf7-form-control-wrap {
    display: block;
    margin-top: var(--md-sys-spacing-3);
}

/* エラーメッセージと次項目の干渉を防ぐ */
.asufuru-form-item .wpcf7-not-valid-tip {
    margin-top: var(--md-sys-spacing-2);
    line-height: 1.5;
}

/* 設問見出しと入力コントロールの重なり防止 */
.asufuru-form-item > .wpcf7-form-control-wrap,
.asufuru-form-item > .wpcf7-form-control {
    display: block;
    margin-top: var(--md-sys-spacing-2);
}

/* 必須・任意ラベル：視認性を高める装飾 */
.label-required {
    background: var(--md-sys-color-error);
    color: var(--md-sys-color-on-error);
    font-size: var(--md-sys-typescale-label-small-size);
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-2);
    border-radius: var(--md-sys-shape-corner-extra-small);
    margin-left: var(--md-sys-spacing-2);
    vertical-align: middle;
}
.label-optional {
    background: var(--md-sys-color-on-surface-variant);
    color: var(--md-sys-color-surface-container-lowest);
    font-size: var(--md-sys-typescale-label-small-size);
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-2);
    border-radius: var(--md-sys-shape-corner-extra-small);
    margin-left: var(--md-sys-spacing-3);
}

/* 入力フィールド：行間 1.8 を確保 [cite: 15] */
/*
 * CF7 はチェック／ラジオ／同意で「input」ではなく span.wpcf7-form-control.wpcf7-checkbox 等を使う。
 * [type=checkbox] だけでは除外できず、span に width:100% + padding が当たって巨大な白箱になる。
 */
.wpcf7-form-control:not(.wpcf7-submit):not([type="checkbox"]):not([type="radio"]):not(.wpcf7-checkbox):not(.wpcf7-radio):not(.wpcf7-acceptance) {
    width: 100%;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-4);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-small);
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: 1.8;
    background: var(--md-sys-color-surface-container-lowest);
    transition: all var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard);
}

.wpcf7-form-control:not([type="checkbox"]):not([type="radio"]):not(.wpcf7-checkbox):not(.wpcf7-radio):not(.wpcf7-acceptance):focus {
    border-color: var(--asufuru-green);
    outline: none;
    box-shadow: 0 0 0 var(--md-sys-spacing-1) rgba(var(--asufuru-green-rgb), 0.12);
}

/* 親テーマ .wpcf7 input { width:100% } より確実に：チェック群ラッパー span をリセット */
.asufuru-form-container span.wpcf7-form-control.wpcf7-checkbox,
.asufuru-form-container span.wpcf7-form-control.wpcf7-radio,
.asufuru-form-container span.wpcf7-form-control.wpcf7-acceptance,
.asufuru-trial-form-wrap span.wpcf7-form-control.wpcf7-checkbox,
.asufuru-trial-form-wrap span.wpcf7-form-control.wpcf7-radio,
.asufuru-trial-form-wrap span.wpcf7-form-control.wpcf7-acceptance,
form.asufuru-trial-form span.wpcf7-form-control.wpcf7-checkbox,
form.asufuru-trial-form span.wpcf7-form-control.wpcf7-radio,
form.asufuru-trial-form span.wpcf7-form-control.wpcf7-acceptance {
    width: auto !important;
    max-width: none !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
    display: block;
    line-height: inherit;
    font-size: inherit;
}

/* CF7：チェックボックス・ラジオ・同意（acceptance）の見た目を正す */
input.wpcf7-form-control[type="checkbox"],
input.wpcf7-form-control[type="radio"] {
    width: auto !important;
    min-width: 1.125em;
    max-width: none;
    height: auto;
    margin: 0;
    padding: 0 !important;
    border: none !important;
    border-radius: 4px;
    background: transparent !important;
    box-shadow: none !important;
    vertical-align: middle;
    accent-color: var(--asufuru-green);
    flex-shrink: 0;
}

.asufuru-form-container .wpcf7-checkbox .wpcf7-list-item,
.asufuru-form-container .wpcf7-radio .wpcf7-list-item {
    margin: 0 0 var(--md-sys-spacing-3);
    padding: 0;
    border: none;
    background: transparent;
}

.asufuru-form-container .wpcf7-checkbox .wpcf7-list-item:last-child,
.asufuru-form-container .wpcf7-radio .wpcf7-list-item:last-child {
    margin-bottom: 0;
}

.asufuru-form-container .wpcf7-checkbox .wpcf7-list-item label,
.asufuru-form-container .wpcf7-radio .wpcf7-list-item label {
    display: flex;
    align-items: flex-start;
    gap: var(--md-sys-spacing-3);
    font-weight: 600;
    margin-bottom: 0;
    line-height: 1.6;
    cursor: pointer;
}

.asufuru-form-container .wpcf7-checkbox input[type="checkbox"],
.asufuru-form-container .wpcf7-radio input[type="radio"] {
    margin-top: var(--md-sys-spacing-1);
}

/* 同意事項セクション：謎のボックスを排除し、余白を調整 */
.asufuru-agreement-area {
    margin: var(--md-sys-spacing-12) 0 var(--md-sys-spacing-10);
    padding: var(--md-sys-spacing-10);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--asufuru-card-radius);
}

.agreement-title {
    font-family: 'Plus Jakarta Sans', 'Noto Sans JP', sans-serif;
    font-weight: 800;
    text-align: center;
    margin-bottom: var(--md-sys-spacing-5);
}

.agreement-text {
    padding: var(--md-sys-spacing-6);
    background: var(--asufuru-main-bg);
    font-size: var(--md-sys-typescale-label-large-size);
    line-height: 1.8;
    border-radius: var(--md-sys-shape-corner-small);
    margin-bottom: var(--md-sys-spacing-6);
}

/* 同意チェック部分の不要な要素・枠線を徹底排除 */
.agreement-check {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}
.agreement-check span.wpcf7-form-control-wrap {
    border: none !important;
    padding: 0 !important;
    display: inline-block !important;
}
.agreement-check br, 
.agreement-check span::before, 
.agreement-check span::after {
    display: none !important;
}

/* 体験申込ページ：同意事項ブロックを非表示（要望対応） */
.asufuru-trial-entry-page .asufuru-agreement-area {
    display: none !important;
}

/* --------------------------------------------------
   基本情報テーブル（親テーマ：あすふるトンマナ上書き）
   - Material風：角丸・軽い影・十分なコントラスト
   - Google UI ポリシー的配慮：読みやすい文字サイズ/余白、低コントラスト回避
-------------------------------------------------- */
.p-single--review-table {
    margin-top: var(--md-sys-spacing-6) !important;
    border: 1px solid rgba(var(--asufuru-green-rgb), 0.22) !important;
    border-radius: var(--asufuru-surface-radius-large, 16px) !important;
    overflow: hidden;
    background: var(--md-sys-color-surface-container-lowest) !important;
    color: var(--md-sys-color-on-surface) !important;
    font-size: var(--md-sys-typescale-body-large-size) !important;
    line-height: 1.6 !important;
    box-shadow: none !important;
}

.p-single--review-table__wrapper {
    width: 100% !important;
    border-collapse: collapse !important;
}

.p-single--review-table__body .p-single--review-table__item + .p-single--review-table__item {
    border-top: 1px solid rgba(60, 64, 67, 0.10) !important;
}

.p-single--review-table__cell {
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-5) !important;
    vertical-align: middle;
    word-break: break-word;
}

.p-single--review-table__cell-left {
    width: 34% !important;
    min-width: 160px;
    font-size: var(--md-sys-typescale-body-medium-size) !important;
    font-weight: 800 !important;
    color: var(--md-sys-color-on-primary-container) !important;
    background: var(--md-sys-color-primary-container) !important;
    border-right: 1px solid rgba(var(--asufuru-green-rgb), 0.20) !important;
    text-align: center !important;
}

.p-single--review-table__cell-right {
    width: 66% !important;
    font-size: var(--md-sys-typescale-body-large-size) !important;
    font-weight: 650 !important;
    color: var(--md-sys-color-on-surface) !important;
}

/* テーブル内タグ（既存のトンマナを緑ベースに寄せる） */
.p-single--review-tag-wrapper {
    padding-top: var(--md-sys-spacing-2) !important;
}

.p-single--review-tag {
    margin: -8px 0 0 -8px !important;
    padding: 0 !important;
    list-style: none !important;
}

.p-single--review-tag__item {
    margin: var(--md-sys-spacing-2) 0 0 var(--md-sys-spacing-2) !important;
    list-style: none !important;
}

.p-single--review-tag__link {
    display: inline-flex;
    align-items: center;
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-3) !important;
    border-radius: var(--md-sys-shape-corner-full) !important;
    border: 1px solid rgba(var(--asufuru-green-rgb), 0.28) !important;
    background: rgba(var(--asufuru-green-rgb), 0.08) !important;
    color: var(--md-sys-color-on-primary-container) !important;
    font-size: var(--md-sys-typescale-label-large-size) !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
}

.p-single--review-table a:focus-visible {
    outline: 2px solid var(--md-sys-color-primary) !important;
    outline-offset: 3px;
}

/* 口コミ: 親テーマ側 li の外枠を除去（角丸カード外に残る枠線対策） */
.single-review .p-single--review-comments__item.asufuru-comment-card-wrap {
    border: 0 !important;
    margin-top: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}

.single-review .p-single--review-comments__list.asufuru-comment-card-list {
    margin: 0 !important;
    padding: 0 !important;
}

/* 基本情報テーブル: 下端に見える余分な罫線を抑止 */
.single-review .p-single--review-table__wrapper {
    border-bottom: 0 !important;
}

.single-review .p-single--review-table__body .p-single--review-table__item:last-child {
    border-bottom: 0 !important;
}

@media (max-width: 767px) {
    .p-single--review-table {
        font-size: var(--md-sys-typescale-label-large-size) !important;
        border-radius: var(--md-sys-shape-corner-medium) !important;
    }
    .p-single--review-table__cell {
        padding: var(--md-sys-spacing-3) var(--md-sys-spacing-3) !important;
    }
    .p-single--review-table__cell-left {
        width: 40% !important;
        min-width: 128px;
        font-size: var(--md-sys-typescale-label-medium-size) !important;
    }
    .p-single--review-table__cell-right {
        width: 60% !important;
        font-size: var(--md-sys-typescale-label-large-size) !important;
    }
    .p-single--review-tag__link {
        font-size: var(--md-sys-typescale-label-medium-size) !important;
        padding: 7px var(--md-sys-spacing-3) !important;
    }
}

/* 送信ボタン：ブランドを象徴する中央揃えボタン [cite: 24] */
.asufuru-submit-btn {
    text-align: center;
    margin-bottom: var(--md-sys-spacing-12);
}

.asufuru-submit-btn .wpcf7-submit {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 320px;
    height: 64px;
    background-color: var(--asufuru-green) !important;
    color: var(--md-sys-color-on-primary) !important;
    border: none !important;
    border-radius: var(--asufuru-button-pill-radius) !important;
    font-family: 'Plus Jakarta Sans', sans-serif !important;
    font-weight: 800 !important;
    font-size: var(--md-sys-typescale-title-large-size) !important;
    letter-spacing: 0.05em;
    box-shadow: 0 10px 20px rgba(var(--asufuru-green-rgb), 0.25) !important;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important;
}

.asufuru-submit-btn .wpcf7-submit:hover {
    transform: translateY(-5px) scale(1.03) !important;
    box-shadow: 0 15px 30px rgba(var(--asufuru-green-rgb), 0.35) !important;
}

/* スマホ対応 */
@media (max-width: 767px) {
    .asufuru-form-item { margin-bottom: var(--md-sys-spacing-6); }
    .asufuru-agreement-area { padding: var(--md-sys-spacing-6); margin: var(--md-sys-spacing-16) 0 var(--md-sys-spacing-10); }
    .asufuru-submit-btn .wpcf7-submit { min-width: 100%; font-size: var(--md-sys-typescale-body-large-size) !important; }
}


/* --- 指導者カードのデザイン刷新 --- */
.asufuru-instructor-card {
    background: var(--md-sys-color-surface-container-lowest);
    border: 2px solid var(--md-sys-color-outline);
    border-radius: var(--asufuru-surface-radius-large);
    padding: var(--md-sys-spacing-10) var(--md-sys-spacing-10);
    box-shadow: 0 10px 30px rgba(var(--asufuru-green-rgb), 0.05);
    height: 100%;
    box-sizing: border-box;
}

.asufuru-instructor-flex {
    display: flex;
    gap: var(--md-sys-spacing-10);
    align-items: flex-start;
}

.instructor-left {
    flex-shrink: 0;
    width: 200px; /* 少し広めに調整 */
    text-align: center;
}

.instructor-image-wrapper {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    overflow: hidden;
    border: 4px solid var(--md-sys-color-surface-container-lowest);
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    margin: 0 auto var(--md-sys-spacing-4);
}

.instructor-post {
    display: inline-block;
    background: var(--asufuru-green);
    color: var(--md-sys-color-on-primary);
    font-size: var(--md-sys-typescale-label-small-size);
    font-weight: 800;
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3);
    border-radius: var(--asufuru-button-pill-radius);
    margin-bottom: var(--md-sys-spacing-2);
}

.instructor-name {
    font-size: var(--md-sys-typescale-title-large-size);
    font-weight: 800;
    color: var(--md-sys-color-on-surface);
    margin-bottom: var(--md-sys-spacing-4) !important;
}

.instructor-meta {
    list-style: none;
    padding: 0;
    margin: 0;
    text-align: left;
    font-size: var(--md-sys-typescale-label-medium-size);
    color: var(--md-sys-color-on-surface-variant);
}

.instructor-meta li {
    margin-bottom: var(--md-sys-spacing-2);
    display: flex;
    gap: var(--md-sys-spacing-2);
    border-bottom: 1px dotted var(--md-sys-color-outline);
    padding-bottom: var(--md-sys-spacing-1);
}

.meta-label {
    font-weight: 800;
    color: var(--asufuru-green);
    flex-shrink: 0;
    width: 42px;
}

.instructor-right {
    flex-grow: 1;
}

.instructor-quote {
    font-size: var(--md-sys-typescale-headline-small-size);
    font-weight: 900;
    line-height: 1.4;
    margin-bottom: var(--md-sys-spacing-5);
    color: var(--md-sys-color-on-surface);
    font-style: italic;
    font-family: 'Plus Jakarta Sans', sans-serif;
}

.instructor-info-box {
    margin-bottom: var(--md-sys-spacing-4);
}

.info-title {
    font-size: var(--md-sys-typescale-label-medium-size);
    font-weight: 800;
    color: var(--asufuru-green);
    margin-bottom: 5px !important;
    display: flex;
    align-items: center;
    gap: 6px;
}

.info-title::before {
    content: "";
    width: 3px;
    height: 12px;
    background: var(--asufuru-green);
    border-radius: var(--md-sys-shape-corner-extra-small);
}

.info-content {
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: 1.7;
    color: var(--md-sys-color-on-surface);
    font-weight: 500;
}

.is-message {
    background: var(--asufuru-main-bg);
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-large);
    margin-top: var(--md-sys-spacing-2);
}

/* スマホ対応 */
@media (max-width: 767px) {
    .asufuru-instructor-flex {
        flex-direction: column;
        align-items: center;
        gap: var(--md-sys-spacing-5);
    }
    .instructor-left { width: 100%; }
    .asufuru-instructor-card { padding: var(--md-sys-spacing-8) var(--md-sys-spacing-5); }
}



/* --- 活動ギャラリー共通 --- */
.asufuru-gallery-container { margin-top: var(--md-sys-spacing-7); }

/* PC版：モダン・グリッド */
.asufuru-gallery-pc-grid { display: grid; gap: var(--md-sys-spacing-4); }
.gallery-main-frame { width: 100%; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--md-sys-shape-corner-large); box-shadow: 0 4px 20px rgba(0,0,0,0.05); }
.gallery-sub-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--md-sys-spacing-3); }
.gallery-sub-frame { aspect-ratio: 1 / 1; overflow: hidden; border-radius: var(--asufuru-card-radius); box-shadow: 0 2px 10px rgba(0,0,0,0.05); }
.asufuru-gallery-pc-grid img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard); }
.asufuru-gallery-pc-grid img:hover { transform: scale(1.05); }

/* 動画セクション */
.video-sub-title {
    font-family: 'Noto Sans JP', sans-serif;
    font-size: var(--md-sys-typescale-title-large-size); font-weight: 800; color: var(--asufuru-green);
    margin-bottom: var(--md-sys-spacing-5); display: flex; align-items: center; gap: var(--md-sys-spacing-2);
}
.video-sub-title::before { content: "▶"; font-size: var(--md-sys-typescale-label-large-size); }
.asufuru-video-card {
    background: var(--md-sys-color-surface-container-lowest); border: 2px solid var(--md-sys-color-outline); border-radius: var(--asufuru-surface-radius-large);
    padding: var(--md-sys-spacing-5); box-shadow: 0 10px 30px rgba(0,0,0,0.02);
}

/* レスポンシブ制御 */
@media (min-width: 768px) {
    .asufuru-gallery-swiper { display: none; }
}

@media (max-width: 767px) {
    .asufuru-gallery-pc-grid { display: none; }
    .asufuru-gallery-swiper { display: block; padding-bottom: var(--md-sys-spacing-10); }
    .gallery-sp-frame { aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--md-sys-shape-corner-large); }
    .gallery-sp-frame img { width: 100%; height: 100%; object-fit: cover; }
    .asufuru-video-card { padding: var(--md-sys-spacing-2); border-radius: var(--md-sys-shape-corner-large); }
}


/* ============================================================
    あすふる：検索結果ページ 人気ランキング
    注目チーム・団体と同一レイアウト（PC:4列グリッド / SP:カルーセル）
   ============================================================ */

.asufuru-search-ranking-wrapper {
    background-color: var(--asufuru-main-bg) !important;
    padding: var(--asufuru-section-padding-y) 0 var(--md-sys-spacing-6) !important;
    font-family: 'Plus Jakarta Sans', 'Noto Sans JP', sans-serif;
}

.asufuru-search-ranking-wrapper .l-inner,
#review-list-section .l-inner {
    max-width: 1200px !important;
    margin: 0 auto !important;
    padding: 0 var(--md-sys-spacing-5) !important;
}

.asufuru-search-ranking-wrapper .p-fp-section__header,
#review-list-section .p-fp-section__header {
    margin-bottom: var(--md-sys-spacing-6) !important;
}

/* SP: Swiper はコンテナをはみ出し非表示にする必要がある（visible だと全スライドが横並びで潰れる） */
.asufuru-search-ranking-wrapper .asufuru-review-swiper,
.asufuru-search-ranking-wrapper .asufuru-ranking-swiper,
.asufuru-search-ranking-wrapper .asufuru-ranking-swiper-container,
#review-list-section .asufuru-review-swiper,
#review-list-section .asufuru-ranking-swiper,
#review-list-section .asufuru-ranking-swiper-container,
#active-review-list-section .asufuru-review-swiper,
#active-review-list-section .asufuru-ranking-swiper,
#active-review-list-section .asufuru-ranking-swiper-container {
    padding: var(--md-sys-spacing-2) 0 var(--md-sys-spacing-12) !important;
}

@media (max-width: 991px) {
    .asufuru-search-ranking-wrapper .asufuru-review-swiper,
    .asufuru-search-ranking-wrapper .asufuru-ranking-swiper,
    .asufuru-search-ranking-wrapper .asufuru-ranking-swiper-container,
    #review-list-section .asufuru-review-swiper,
    #review-list-section .asufuru-ranking-swiper,
    #review-list-section .asufuru-ranking-swiper-container,
    #active-review-list-section .asufuru-review-swiper,
    #active-review-list-section .asufuru-ranking-swiper,
    #active-review-list-section .asufuru-ranking-swiper-container {
        overflow: hidden !important;
    }
}

@media (min-width: 992px) {
    .asufuru-search-ranking-wrapper .asufuru-review-swiper,
    .asufuru-search-ranking-wrapper .asufuru-ranking-swiper,
    .asufuru-search-ranking-wrapper .asufuru-ranking-swiper-container,
    #review-list-section .asufuru-review-swiper,
    #review-list-section .asufuru-ranking-swiper,
    #review-list-section .asufuru-ranking-swiper-container,
    #active-review-list-section .asufuru-review-swiper,
    #active-review-list-section .asufuru-ranking-swiper,
    #active-review-list-section .asufuru-ranking-swiper-container {
        overflow: visible !important;
    }
}

/* ランキング系セクション内の統一カード（王冠は画像エリア左上） */
.asufuru-search-ranking-wrapper .asufuru-unified-card,
#review-list-section .asufuru-unified-card,
#active-review-list-section .asufuru-unified-card {
    position: relative;
    height: 100%;
}

.asufuru-search-ranking-wrapper .asufuru-unified-card__image-wrap .asufuru-unified-card__badge,
#review-list-section .asufuru-unified-card__image-wrap .asufuru-unified-card__badge,
#active-review-list-section .asufuru-unified-card__image-wrap .asufuru-unified-card__badge {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 4;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 24px;
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3);
    border-radius: var(--md-sys-shape-corner-full);
    border: 1px solid rgba(255, 255, 255, 0.65);
    background: rgba(var(--asufuru-green-rgb), 0.95);
    color: var(--md-sys-color-on-primary);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-small-size);
    line-height: 1;
    letter-spacing: 0.06em;
    box-shadow: var(--md-sys-elevation-2);
    pointer-events: none;
}

/* 王冠＋順位：画像左上肩に重ね、数字は王冠と一体の緑バッジ内に配置 */
.asufuru-search-ranking-wrapper .asufuru-unified-card__image-wrap .rank-badge-crown,
#review-list-section .asufuru-unified-card__image-wrap .rank-badge-crown,
.asufuru-search-ranking-wrapper .rank-badge-crown,
#review-list-section .rank-badge-crown,
#active-review-list-section .rank-badge-crown {
    position: absolute;
    top: 0;
    left: 0;
    right: auto;
    z-index: 4;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    min-width: 48px;
    min-height: 52px;
    padding: 6px var(--md-sys-spacing-3) var(--md-sys-spacing-2);
    background: var(--asufuru-green);
    color: var(--md-sys-color-on-primary);
    border-radius: 0 0 var(--md-sys-shape-corner-large) 0;
    border-right: 2px solid var(--md-sys-color-surface-container-lowest);
    border-bottom: 2px solid var(--md-sys-color-surface-container-lowest);
    box-shadow: 2px 3px 12px rgba(0, 0, 0, 0.12);
    pointer-events: none;
}

.asufuru-search-ranking-wrapper .asufuru-ranking-crown__svg,
#review-list-section .asufuru-ranking-crown__svg,
#active-review-list-section .asufuru-ranking-crown__svg {
    position: relative;
    width: 26px;
    height: 26px;
    flex-shrink: 0;
    fill: none;
    stroke: var(--md-sys-color-on-primary);
    stroke-width: 2;
}

.asufuru-search-ranking-wrapper .rank-badge-crown__num,
#review-list-section .rank-badge-crown__num,
#active-review-list-section .rank-badge-crown__num {
    position: relative;
    z-index: 1;
    margin-top: 2px;
    font-size: var(--md-sys-typescale-label-medium-size);
    font-weight: 800;
    line-height: 1;
    color: var(--md-sys-color-on-primary);
    letter-spacing: 0.02em;
}

/* ランキングカルーセル内：星をあすふるグリーンに */
.asufuru-search-ranking-wrapper .asufuru-unified-card__stars .p-star-review__icon.is-active:before,
#review-list-section .asufuru-unified-card__stars .p-star-review__icon.is-active:before,
#active-review-list-section .asufuru-unified-card__stars .p-star-review__icon.is-active:before {
    color: var(--asufuru-green) !important;
}

/* PC: 4カラムグリッド（注目チーム・団体と同一） */
@media (min-width: 992px) {
    .asufuru-search-ranking-wrapper .asufuru-grid-wrapper,
    #review-list-section .asufuru-grid-wrapper,
    #active-review-list-section .asufuru-grid-wrapper {
        display: grid !important;
        grid-template-columns: repeat(4, 1fr) !important;
        gap: var(--md-sys-spacing-8) !important;
        transform: none !important;
        width: 100% !important;
    }

    .asufuru-search-ranking-wrapper .asufuru-card-item,
    #review-list-section .asufuru-card-item,
    #active-review-list-section .asufuru-card-item {
        width: 100% !important;
        height: auto !important;
        margin: 0 !important;
    }

    .asufuru-search-ranking-wrapper .swiper-pagination,
    #review-list-section .swiper-pagination,
    #active-review-list-section .swiper-pagination {
        display: none !important;
    }
}

/* SP: カルーセル（スライド幅は Swiper が制御）— 一覧 .p-review-loop-wrapper と同じ実効幅に揃える */
@media (max-width: 991px) {
    .asufuru-search-ranking-wrapper {
        padding: var(--asufuru-section-padding-y-sm) 0 var(--md-sys-spacing-6) !important;
    }

    /* 背景はフルブリード（余白なし） */
    .asufuru-search-ranking-wrapper,
    #review-list-section.asufuru-search-ranking-wrapper,
    #active-review-list-section.asufuru-search-ranking-wrapper {
        width: 100vw !important;
        max-width: 100vw !important;
        margin-left: calc(50% - 50vw) !important;
        margin-right: calc(50% - 50vw) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    /* 親 .l-inner の calc(100% - 40px) ＋ 子の余白で一覧より狭くなっていたのを解消 */
    .asufuru-search-ranking-wrapper .l-inner {
        width: auto !important;
        max-width: none !important;
        margin-left: var(--asufuru-screen-gutter) !important;
        margin-right: var(--asufuru-screen-gutter) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .asufuru-search-ranking-wrapper .asufuru-review-swiper,
    .asufuru-search-ranking-wrapper .asufuru-ranking-swiper,
    .asufuru-search-ranking-wrapper .asufuru-ranking-swiper-container {
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        box-sizing: border-box;
    }

    .asufuru-search-ranking-wrapper .asufuru-card-item.swiper-slide,
    #review-list-section .asufuru-card-item.swiper-slide,
    #active-review-list-section .asufuru-card-item.swiper-slide {
        flex-shrink: 0;
        height: auto;
    }

    .asufuru-search-ranking-wrapper .swiper-pagination,
    #review-list-section .swiper-pagination,
    #active-review-list-section .swiper-pagination {
        margin-top: var(--md-sys-spacing-6) !important;
    }

}

/* SP：カード内タグをややコンパクトに（注目・人気ランキング共通） */
@media (max-width: 767px) {
    .asufuru-search-ranking-wrapper .tag-item,
    #review-list-section .tag-item,
    #active-review-list-section .tag-item {
        font-size: 9px;
        font-weight: 700;
        padding: 1px var(--md-sys-spacing-2);
        border-radius: var(--md-sys-chip-radius);
    }
}

/* 検索結果一覧との区切り */
.asufuru-search-divider {
    margin: var(--md-sys-spacing-8) auto var(--md-sys-spacing-6);
    padding: 0 var(--asufuru-screen-gutter);
}

.asufuru-search-divider .divider-text {
    font-family: 'Plus Jakarta Sans', 'Noto Sans JP', sans-serif;
    font-weight: 800;
    font-size: var(--md-sys-typescale-body-small-size);
    letter-spacing: 0.06em;
    color: var(--asufuru-green);
}

/* 絞り込み検索：一覧の並び替え */
.asufuru-review-sort-toolbar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-3);
    margin: 0 auto var(--md-sys-spacing-4);
    font-family: 'Plus Jakarta Sans', 'Noto Sans JP', sans-serif;
}

.asufuru-review-sort-toolbar__label {
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-medium-size);
    color: var(--asufuru-text-main);
}

.asufuru-review-sort-toolbar__select {
    min-width: 200px;
    max-width: 100%;
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: 700;
    color: var(--asufuru-text-main);
    background: var(--md-sys-color-surface-container-lowest);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-small);
    box-shadow: var(--md-sys-elevation-1);
}

/* カード内の月謝とタグのスタイルを強制適用 */
.card-info-box.fee .label {
    background: var(--asufuru-green); color: var(--md-sys-color-on-primary); font-size: var(--md-sys-typescale-label-small-size); font-weight: 900;
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-2);
    border-radius: var(--md-sys-shape-corner-extra-small);
    margin-right: var(--md-sys-spacing-2);
}
.card-tags { margin-top: auto; padding-top: var(--md-sys-spacing-3); display: flex; flex-wrap: wrap; gap: var(--md-sys-spacing-2); border-top: 1px dashed var(--md-sys-color-outline-variant); }
.tag-item { font-size: var(--md-sys-typescale-label-small-size); font-weight: 700; color: var(--asufuru-green); background: var(--md-sys-color-primary-container); padding: 2px var(--md-sys-spacing-3); border-radius: var(--asufuru-chip-radius); }

/* 絞り込み検索：人気ランキング（閲覧数） */
.asufuru-popular-views {
    display: flex;
    align-items: center;
    gap: var(--md-sys-spacing-2);
    margin-top: var(--md-sys-spacing-2);
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-large-size);
    color: var(--md-sys-color-on-surface);
}
.asufuru-popular-views__label {
    font-size: var(--md-sys-typescale-label-small-size);
    font-weight: 700;
    color: var(--asufuru-green);
    letter-spacing: 0.05em;
}
.asufuru-popular-views__num {
    color: var(--md-sys-color-on-surface);
}

/* セクション見出し（p-fp-section__headline + c-headline）を左揃え */
html body .p-fp-section__headline.c-headline {
    text-align: left !important;
}
html body .p-fp-section__headline.c-headline::after {
    left: 0 !important;
    transform: none !important;
}

/* ディスクリプションも左揃え */
html body .p-fp-section__header {
    text-align: left !important;
}
html body .p-fp-section__desc {
    text-align: left !important;
}

/* タグクラウド（お好みの条件で探す）の見出し・リードも左揃え */
.asufuru-tag-search .asufuru-h2,
.asufuru-tag-search .asufuru-lead {
    text-align: left !important;
}

/* ------------------------------------------------------------
   トップ：ブログカルーセルUIを新着団体カード寄せに調整
   ①カテゴリは画像左上 ②タイトルは画像下 ③更新日時はタイトル下
------------------------------------------------------------ */
.p-fp-posts .p-archive--post-item__link {
    display: block;
    position: relative;
}

.p-fp-posts .p-archive--post-item__image {
    position: relative;
}

.p-fp-posts .p-archive--post-item__content {
    width: 100%;
    position: static;
    transform: none;
    left: auto;
    bottom: auto;
    padding: var(--md-sys-spacing-4) 0 0;
    background: transparent;
}

.p-fp-posts .p-archive--post-item__category {
    position: absolute;
    top: var(--md-sys-spacing-3);
    left: var(--md-sys-spacing-3);
    z-index: 2;
}

.p-fp-posts .p-archive--post-item__title {
    margin: 0;
}

.p-fp-posts .p-archive--post-item__date {
    margin-top: var(--md-sys-spacing-2);
}

/* ブログカルーセル：SPでも他コンテンツと同じ幅に揃える */
@media (max-width: 767px) {
    .p-fp-posts__swiper {
        margin: 0 !important;
    }
}

/* ブログカルーセル：カテゴリラベルをキーカラー＋角丸に */
.p-fp-posts .p-archive--post-item__category.c-post-category {
    width: auto;
    min-height: 34px;
    height: auto;
    padding: 6px var(--md-sys-spacing-4);
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--asufuru-green);
    color: var(--md-sys-color-on-primary);
    font-weight: 800;
    line-height: 1.3;
    box-shadow: 0 4px 12px rgba(var(--asufuru-green-rgb), 0.22);
}

/* ------------------------------------------------------------
   ブログ一覧（アーカイブ）もトップと同じカードUIに統一
------------------------------------------------------------ */
.p-arvhive--post-wrap .p-archive--post-item__link {
    display: block;
    position: relative;
}

.p-arvhive--post-wrap .p-archive--post-item__image {
    position: relative;
}

.p-arvhive--post-wrap .p-archive--post-item__content {
    width: 100%;
    position: static;
    transform: none;
    left: auto;
    bottom: auto;
    padding: var(--md-sys-spacing-4) 0 0;
    background: transparent;
}

.p-arvhive--post-wrap .p-archive--post-item__category {
    position: absolute;
    top: var(--md-sys-spacing-3);
    left: var(--md-sys-spacing-3);
    z-index: 2;
}

.p-arvhive--post-wrap .p-archive--post-item__title {
    margin: 0;
}

.p-arvhive--post-wrap .p-archive--post-item__date {
    margin-top: var(--md-sys-spacing-2);
}

.p-arvhive--post-wrap .p-archive--post-item__category.c-post-category {
    width: auto;
    min-height: 34px;
    height: auto;
    padding: 6px var(--md-sys-spacing-4);
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
    font-weight: 800;
    line-height: 1.3;
    box-shadow: 0 4px 12px rgba(var(--asufuru-green-rgb), 0.22);
}

/* 比較ボード：カード上の追加ボタン */
.asufuru-card-v2 {
    position: relative;
}
.asufuru-compare-toggle {
    position: absolute;
    right: 12px;
    bottom: 12px;
    z-index: 3;
    border: 1px solid var(--asufuru-green);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--asufuru-green);
    font-size: var(--md-sys-typescale-body-small-size);
    font-weight: 800;
    line-height: 1;
    border-radius: var(--md-sys-shape-corner-full);
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-3);
    cursor: pointer;
}
.asufuru-compare-toggle.is-active {
    background: var(--asufuru-green);
    color: var(--md-sys-color-on-primary);
}

.asufuru-compare-toggle--single-floating {
    position: fixed;
    left: 16px;
    right: auto;
    bottom: 90px;
    z-index: 119;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--md-sys-typescale-label-large-size);
    padding: 0 !important;
    width: 52px;
    height: 52px;
    min-height: 52px;
    border-radius: 50%;
    opacity: 0.72;
    transition: opacity var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
    box-shadow: 0 10px 24px rgba(var(--asufuru-green-rgb), 0.18);
}

.asufuru-heart-icon {
    width: 100%;
    height: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--md-sys-typescale-headline-small-size);
    line-height: 1;
}

.asufuru-heart-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}

.asufuru-compare-toggle--single-floating:hover {
    opacity: 1;
}

@media (max-width: 767px) {
    /* スマホでは TOP へ戻る（右下）を消す：比較フローティングと競合するため */
    .p-return-top-button-wrapper {
        display: none !important;
    }

    .p-single--review .asufuru-compare-toggle--single-floating {
        left: auto !important;
        right: 12px !important;
        bottom: calc(72px + env(safe-area-inset-bottom)) !important;
        z-index: 130 !important;
        display: inline-flex !important;
        padding: 0 !important;
        font-size: var(--md-sys-typescale-label-medium-size);
    }

    /* 比較ボード動線：追加ボタンの左隣に出す */
    .asufuru-compare-floating-cta.is-visible {
        right: 12px !important;
        bottom: calc(25px + env(safe-area-inset-bottom)) !important;
        transform: translateX(calc(-100% - 12px));
        z-index: 129 !important;
    }

    /* お気に入り一覧：スマホは横スワイプ（カルーセル）表示 */
    .asufuru-compare-grid {
        display: flex;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x mandatory;
        gap: var(--md-sys-spacing-3);
        padding: 0 6px var(--md-sys-spacing-3);
    }
    .asufuru-compare-card {
        flex: 0 0 86%;
        scroll-snap-align: start;
    }
}

/* 比較ボード：固定CTA */
.asufuru-compare-floating-cta {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: 120;
    display: none;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0 var(--md-sys-spacing-4);
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--asufuru-green);
    color: var(--md-sys-color-on-primary) !important;
    font-weight: 800;
    box-shadow: 0 10px 24px rgba(var(--asufuru-green-rgb), 0.28);
    opacity: 0.72;
    transition: opacity var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}
.asufuru-compare-floating-cta {
    display: none !important;
}
.asufuru-compare-floating-cta.is-visible {
    display: inline-flex;
}

.asufuru-compare-floating-cta:hover {
    opacity: 1;
}

/* 比較ページ */
.asufuru-compare-page .l-inner {
    max-width: 1200px;
}
.asufuru-compare-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--md-sys-spacing-3);
    margin-bottom: var(--md-sys-spacing-4);
}
.asufuru-compare-toolbar__count {
    font-weight: 800;
}
.asufuru-compare-toolbar__clear {
    border: 1px solid var(--md-sys-color-outline);
    background: var(--md-sys-color-surface-container-lowest);
    border-radius: var(--md-sys-shape-corner-full);
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    font-weight: 700;
    cursor: pointer;
}
.asufuru-compare-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--md-sys-spacing-4);
}
.asufuru-compare-card {
    position: relative;
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-large);
    background: var(--md-sys-color-surface-container-lowest);
    padding: var(--md-sys-spacing-3);
}
.asufuru-compare-card__remove {
    position: absolute;
    top: 10px;
    right: 10px;
    border: 1px solid var(--md-sys-color-outline);
    background: var(--md-sys-color-surface-container-lowest);
    border-radius: var(--md-sys-shape-corner-full);
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-body-small-size);
    font-weight: 700;
    cursor: pointer;
}
.asufuru-compare-card__image-wrap {
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: var(--md-sys-shape-corner-medium);
    overflow: hidden;
    margin-bottom: var(--md-sys-spacing-3);
}
.asufuru-compare-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.asufuru-compare-card__title {
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: 1.5;
    margin: 0 0 var(--md-sys-spacing-3);
}
.asufuru-compare-card__specs {
    margin: 0;
}
.asufuru-compare-card__specs div {
    display: grid;
    grid-template-columns: 72px 1fr;
    gap: var(--md-sys-spacing-2);
    padding: 6px 0;
    border-top: 1px dashed var(--md-sys-color-outline);
}
.asufuru-compare-card__specs dt {
    margin: 0;
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-body-small-size);
}
.asufuru-compare-card__specs dd {
    margin: 0;
    font-size: var(--md-sys-typescale-label-medium-size);
}
.asufuru-compare-card__link {
    display: inline-flex;
    margin-top: var(--md-sys-spacing-3);
    font-weight: 800;
    color: var(--asufuru-green);
}
.asufuru-compare-empty,
.asufuru-compare-loading {
    margin: 0;
    padding: var(--md-sys-spacing-7) var(--md-sys-spacing-5);
    background: var(--md-sys-color-surface-container-lowest);
    border-radius: var(--md-sys-shape-corner-large);
    border: 1px solid var(--md-sys-color-outline);
}

@media (max-width: 991px) {
    .asufuru-compare-grid {
        grid-template-columns: 1fr;
    }
}

/* お気に入り一覧（SP）：比較しやすい横カルーセル表示 */
@media (max-width: 767px) {
    .asufuru-compare-page #asufuru-compare-board .asufuru-compare-grid {
        display: flex !important;
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x mandatory;
        gap: var(--md-sys-spacing-3);
        padding: 0 var(--md-sys-spacing-2) var(--md-sys-spacing-3);
        margin: 0 -8px;
    }
    .asufuru-compare-page #asufuru-compare-board .asufuru-compare-grid::-webkit-scrollbar {
        display: none;
    }
    .asufuru-compare-page #asufuru-compare-board .asufuru-compare-card {
        flex: 0 0 84%;
        scroll-snap-align: start;
        scroll-snap-stop: always;
    }
}

/* --------------------------------------------------------------------------
   SP のみ：フローティング（地図 / TOPに戻る）※ぐるなび型・右下固定
   -------------------------------------------------------------------------- */
.asufuru-mobile-fab {
    position: fixed;
    right: max(12px, env(safe-area-inset-right));
    bottom: max(20px, env(safe-area-inset-bottom));
    z-index: 9990;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--md-sys-spacing-3);
    font-family: 'Noto Sans JP', sans-serif;
    -webkit-tap-highlight-color: transparent;
}

.asufuru-mobile-fab__btn {
    box-sizing: border-box;
    width: 56px;
    min-height: 56px;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: var(--md-sys-color-surface-container-lowest);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    cursor: pointer;
    text-decoration: none;
    color: var(--md-sys-color-on-surface);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: transform var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard), box-shadow var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-mobile-fab__btn:focus-visible {
    outline: 2px solid var(--md-sys-color-primary);
    outline-offset: 2px;
}

.asufuru-mobile-fab__btn:active {
    transform: scale(0.96);
}

.asufuru-mobile-fab__btn--map {
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-1) 6px;
    gap: 2px;
}

.asufuru-mobile-fab__btn--search {
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-1) 6px;
    gap: 2px;
}

.asufuru-mobile-fab__search-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.asufuru-mobile-fab__search-icon svg {
    display: block;
    width: 22px;
    height: 22px;
}

.asufuru-mobile-fab__pin {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.asufuru-mobile-fab__pin svg {
    display: block;
    width: 22px;
    height: 22px;
}

.asufuru-mobile-fab__btn-text {
    font-size: var(--md-sys-typescale-label-small-size);
    font-weight: 800;
    line-height: 1;
    letter-spacing: 0.02em;
    color: var(--md-sys-color-on-surface);
}

.asufuru-mobile-fab__btn--top {
    padding: 0;
}

.asufuru-mobile-fab__chevron {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.asufuru-mobile-fab__chevron svg {
    display: block;
    width: 24px;
    height: 24px;
}

@media (min-width: 768px) {
    .asufuru-mobile-fab {
        display: none !important;
    }
}

@media print {
    .asufuru-mobile-fab {
        display: none !important;
    }
}

body.asufuru-mobile-search-drawer-open {
    overflow: hidden;
    touch-action: none;
}

.asufuru-mobile-search-drawer {
    position: fixed;
    inset: 0;
    z-index: 10010;
    pointer-events: none;
}

.asufuru-mobile-search-drawer__overlay {
    position: absolute;
    inset: 0;
    border: 0;
    padding: 0;
    margin: 0;
    background: rgba(32, 33, 36, 0.34);
    opacity: 0;
    transition: opacity var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-mobile-search-drawer__panel {
    position: absolute;
    top: 0;
    right: 0;
    width: min(92vw, 420px);
    height: 100%;
    background: var(--md-sys-color-surface-container-lowest);
    box-shadow: -8px 0 24px rgba(0, 0, 0, 0.12);
    transform: translateX(106%);
    transition: transform var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-4) calc(18px + env(safe-area-inset-bottom));
}

.asufuru-mobile-search-drawer.is-open {
    pointer-events: auto;
}

.asufuru-mobile-search-drawer.is-open .asufuru-mobile-search-drawer__overlay {
    opacity: 1;
}

.asufuru-mobile-search-drawer.is-open .asufuru-mobile-search-drawer__panel {
    transform: translateX(0);
}

.asufuru-mobile-search-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--md-sys-color-surface-container-lowest);
    padding: var(--md-sys-spacing-2) 0 var(--md-sys-spacing-3);
    margin-bottom: var(--md-sys-spacing-2);
    border-bottom: 1px solid var(--md-sys-color-outline);
}

.asufuru-mobile-search-drawer__close {
    border: 0;
    background: transparent;
    color: var(--md-sys-color-primary);
    font-weight: 900;
    font-size: var(--md-sys-typescale-label-large-size);
}

.asufuru-mobile-search-drawer__form {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-4);
}

.asufuru-mobile-search-drawer__group {
    display: grid;
    gap: var(--md-sys-spacing-2);
}

.asufuru-mobile-search-drawer__group label,
.asufuru-mobile-search-drawer__group-label {
    margin: 0;
    color: var(--md-sys-color-primary);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-medium-size);
}

.asufuru-mobile-search-drawer__group input[type="text"],
.asufuru-mobile-search-drawer__group select {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface);
    font-weight: 700;
    padding: var(--md-sys-spacing-3);
}

.asufuru-mobile-search-drawer__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--md-sys-spacing-3);
}

.asufuru-mobile-search-drawer__select-wrap {
    display: grid;
    gap: 6px;
}

.asufuru-mobile-search-drawer__tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-3);
    max-height: 220px;
    overflow-y: auto;
    padding-right: var(--md-sys-spacing-1);
}

.asufuru-mobile-search-drawer__tag {
    display: inline-flex;
    align-items: center;
    gap: var(--md-sys-spacing-2);
    cursor: pointer;
    user-select: none;
    background: var(--md-sys-color-surface-container-lowest);
    border: 2px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-full);
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-medium-size);
    color: var(--md-sys-color-on-surface);
    transition: all var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-mobile-search-drawer__tag-input {
    width: 16px;
    height: 16px;
    accent-color: var(--md-sys-color-primary);
    margin: 0;
}

.asufuru-mobile-search-drawer__tag.is-checked {
    background: var(--md-sys-color-primary);
    border-color: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
}

.asufuru-mobile-search-drawer__actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--md-sys-spacing-3);
    position: sticky;
    bottom: 0;
    background: var(--md-sys-color-surface-container-lowest);
    padding-top: var(--md-sys-spacing-3);
    margin-top: var(--md-sys-spacing-2);
    border-top: 1px solid var(--md-sys-color-outline);
}

.asufuru-mobile-search-drawer__count {
    margin: 2px var(--md-sys-spacing-1) 0;
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-body-small-size);
    font-weight: 700;
    line-height: 1.4;
}

.asufuru-mobile-search-drawer__clear,
.asufuru-mobile-search-drawer__submit {
    min-height: 44px;
    border-radius: var(--md-sys-shape-corner-full);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-large-size);
    border: 0;
}

.asufuru-mobile-search-drawer__clear {
    background: var(--md-sys-color-surface-container);
    color: var(--md-sys-color-on-surface);
}

.asufuru-mobile-search-drawer__submit {
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
}

@media (min-width: 768px), print {
    .asufuru-mobile-search-drawer {
        display: none !important;
    }
}

/* --------------------------------------------------------------------------
   トップページ：オリジナル検索ボックス（モバイルドロワーと同一仕様）
   -------------------------------------------------------------------------- */
.asufuru-top-search-box {
    margin: 0 auto;
    padding: 0;
}

.asufuru-top-search-box__form {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-4);
    background: var(--md-sys-color-surface-container-lowest);
    border: 2px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-extra-large);
    padding: var(--md-sys-spacing-5);
    box-shadow: 0 8px 24px rgba(var(--asufuru-green-rgb), 0.08);
}

.asufuru-top-search-box__group {
    display: grid;
    gap: var(--md-sys-spacing-2);
}

.asufuru-top-search-box__group label,
.asufuru-top-search-box__group-label {
    margin: 0;
    color: var(--md-sys-color-primary);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-medium-size);
}

.asufuru-top-search-box__group input[type="text"],
.asufuru-top-search-box__group select {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface);
    font-weight: 700;
    padding: var(--md-sys-spacing-3);
}

.asufuru-top-search-box__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--md-sys-spacing-3);
}

.asufuru-top-search-box__select-wrap {
    display: grid;
    gap: 6px;
}

.asufuru-top-search-box__tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-3);
    max-height: 220px;
    overflow-y: auto;
    padding-right: var(--md-sys-spacing-1);
}

.asufuru-top-search-box__tag {
    display: inline-flex;
    align-items: center;
    gap: var(--md-sys-spacing-2);
    cursor: pointer;
    user-select: none;
    background: var(--md-sys-color-surface-container-lowest);
    border: 2px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-full);
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-medium-size);
    color: var(--md-sys-color-on-surface);
    transition: all var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-top-search-box__tag-input {
    width: 16px;
    height: 16px;
    accent-color: var(--md-sys-color-primary);
    margin: 0;
}

.asufuru-top-search-box__tag.is-checked {
    background: var(--md-sys-color-primary);
    border-color: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
}

.asufuru-top-search-box__actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--md-sys-spacing-3);
}

.asufuru-top-search-box__count {
    margin: 2px var(--md-sys-spacing-1) 0;
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-body-small-size);
    font-weight: 700;
    line-height: 1.4;
}

.asufuru-top-search-box__clear,
.asufuru-top-search-box__submit {
    min-height: 44px;
    border-radius: var(--md-sys-shape-corner-full);
    font-weight: 800;
    font-size: var(--md-sys-typescale-label-large-size);
    border: 0;
}

.asufuru-top-search-box__clear {
    background: var(--md-sys-color-surface-container);
    color: var(--md-sys-color-on-surface);
}

.asufuru-top-search-box__submit {
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
}

.asufuru-top-search-box__menu-trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 54px;
    padding: 0 var(--md-sys-spacing-4);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-headline-small-size);
    font-weight: 700;
}

.asufuru-top-search-box__menu {
    position: fixed;
    inset: 0;
    z-index: 10020;
    pointer-events: none;
}

.asufuru-top-search-box__menu-overlay {
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(32, 33, 36, 0.34);
    opacity: 0;
    transition: opacity var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-top-search-box__menu-panel {
    position: absolute;
    top: 0;
    right: 0;
    width: min(92vw, 420px);
    height: 100%;
    background: var(--md-sys-color-surface-container);
    transform: translateX(106%);
    transition: transform var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    padding: 0 0 calc(16px + env(safe-area-inset-bottom));
}

.asufuru-top-search-box__menu.is-open {
    pointer-events: auto;
}

.asufuru-top-search-box__menu.is-open .asufuru-top-search-box__menu-overlay {
    opacity: 1;
}

.asufuru-top-search-box__menu.is-open .asufuru-top-search-box__menu-panel {
    transform: translateX(0);
}

.asufuru-top-search-box__menu-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 74px;
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
    padding: 0 var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-headline-medium-size);
    font-weight: 800;
}

.asufuru-top-search-box__menu-close {
    border: 0;
    background: transparent;
    color: inherit;
    font-size: 34px;
    line-height: 1;
}

.asufuru-top-search-box__menu .asufuru-top-search-box__group {
    background: var(--md-sys-color-surface-container);
    padding: var(--md-sys-spacing-5) var(--md-sys-spacing-4);
}

.asufuru-top-search-box__menu-actions {
    margin-top: auto;
    padding: var(--md-sys-spacing-4);
    background: var(--md-sys-color-surface-container);
}

.asufuru-top-search-box__menu-actions--double {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
}

body.asufuru-top-search-box-menu-open {
    overflow: hidden;
}

/* フロントページ: 親テーマ由来の検索フォームを非表示（オリジナルUIへ統一） */
.home .p-filter-search,
.home .p-filter-search-form-simple {
    display: none !important;
}

/* フロントカバー内のテーマ標準検索フォームを非表示 */
.home .p-front-cover__search {
    display: none !important;
}

/* ヘッダー検索: テーマ標準から子テーマオリジナルへ統一 */
.asufuru-header-search .asufuru-header-search__form input {
    border-radius: var(--md-sys-shape-corner-full) !important;
    border: 1px solid rgba(60, 64, 67, 0.18) !important;
    background: var(--md-sys-color-surface-container-lowest) !important;
    color: var(--md-sys-color-on-surface) !important;
}

.asufuru-header-search .asufuru-header-search__form input::placeholder {
    color: var(--md-sys-color-on-surface-variant) !important;
}

.asufuru-header-search .asufuru-header-search__button label {
    color: var(--md-sys-color-on-surface) !important;
}

/* SP: ぐるなび風に、検索ボックスをヘッダー画像下端へ重ねる */
@media (max-width: 767px) {
    .home .asufuru-top-search-box,
    .post-type-archive-review .asufuru-top-search-box,
    .tax-review_category .asufuru-top-search-box,
    .tax-review_tag .asufuru-top-search-box,
    .page-template-filter-search-template-php .asufuru-top-search-box,
    .is-filter-search-style--center .asufuru-top-search-box,
    .is-filter-search-style--bottom .asufuru-top-search-box {
        margin-top: 0 !important;
        padding-top: 0 !important;
        position: relative;
        z-index: 120;
    }

    .home .asufuru-top-search-box > .l-inner,
    .post-type-archive-review .asufuru-top-search-box > .l-inner,
    .tax-review_category .asufuru-top-search-box > .l-inner,
    .tax-review_tag .asufuru-top-search-box > .l-inner,
    .page-template-filter-search-template-php .asufuru-top-search-box > .l-inner,
    .is-filter-search-style--center .asufuru-top-search-box > .l-inner,
    .is-filter-search-style--bottom .asufuru-top-search-box > .l-inner {
        display: block;
        width: auto !important;
        max-width: none !important;
        margin-left: var(--asufuru-screen-gutter) !important;
        margin-right: var(--asufuru-screen-gutter) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .home .asufuru-top-search-box .asufuru-top-search-box__form,
    .post-type-archive-review .asufuru-top-search-box .asufuru-top-search-box__form,
    .tax-review_category .asufuru-top-search-box .asufuru-top-search-box__form,
    .tax-review_tag .asufuru-top-search-box .asufuru-top-search-box__form,
    .page-template-filter-search-template-php .asufuru-top-search-box .asufuru-top-search-box__form,
    .is-filter-search-style--center .asufuru-top-search-box .asufuru-top-search-box__form,
    .is-filter-search-style--bottom .asufuru-top-search-box .asufuru-top-search-box__form {
        margin-top: -110px;
        margin-bottom: var(--md-sys-spacing-5);
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        position: relative;
        z-index: 130;
        border-radius: var(--md-sys-shape-corner-large-increased);
        border: 1px solid var(--md-sys-color-outline);
        background: rgba(255, 255, 255, 0.96);
        box-shadow: 0 10px 24px rgba(20, 30, 20, 0.12);
    }

    .post-type-archive-review .p-page-header__bottom,
    .tax-review_category .p-page-header__bottom,
    .tax-review_tag .p-page-header__bottom,
    .page-template-filter-search-template-php .p-page-header__bottom,
    .is-filter-search-style--center .p-page-header__bottom,
    .is-filter-search-style--bottom .p-page-header__bottom {
        position: relative;
        z-index: 1;
    }

    /* 検索結果一覧はトップと同様に、ヒーロー直下へ検索ボックスを被せる */
    .page-template-filter-search-template-php .p-page-header__bottom,
    .is-filter-search-style--center .p-page-header__bottom,
    .is-filter-search-style--bottom .p-page-header__bottom {
        display: none !important;
    }
}

@media (max-width: 991px) {
    .asufuru-top-search-box__grid {
        grid-template-columns: 1fr;
    }
}


/* --------------------------------------------------------------------------
   団体詳細（SP）：下部固定バー（地図 | お気に入り | 体験CTA）横一列・M3/あすふるトンマナ
   -------------------------------------------------------------------------- */
.asufuru-mobile-review-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9990;
    padding: 0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
    /* ぐるなび型：ややグレーの帯（コンテンツと区切り） */
    background: var(--md-sys-color-surface-container-low);
    border-top: 1px solid var(--md-sys-color-outline-variant);
    box-shadow:
        0 -1px 2px rgba(var(--asufuru-green-rgb), 0.06),
        0 -2px 6px 2px rgba(var(--asufuru-green-rgb), 0.04);
    font-family: 'Noto Sans JP', sans-serif;
    -webkit-tap-highlight-color: transparent;
    /* fixed の基準をビューポートに固定（祖先の transform 対策） */
    width: 100%;
    max-width: 100vw;
    box-sizing: border-box;
}

.asufuru-mobile-review-bar__inner {
    box-sizing: border-box;
    position: relative;
    z-index: 1;
    /* 地図 | お気に入り | CTA（絶対配置の子を含んでも崩れない） */
    display: grid;
    grid-template-columns: 48px 48px minmax(0, 1fr);
    align-items: center;
    gap: var(--md-sys-spacing-3);
    width: 100%;
    max-width: 100%;
    margin: 0 auto;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-3) var(--md-sys-spacing-3);
}

/*
 * 比較ボード用 .asufuru-compare-toggle { position: absolute } が
 * 下部バー内のお気に入りに乗ると画面全体に飛び出すため、ここで必ずリセットする。
 */
.asufuru-mobile-review-bar .asufuru-compare-toggle {
    position: static !important;
    inset: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    z-index: auto;
}

.asufuru-mobile-review-bar__round {
    box-sizing: border-box;
    flex: 0 0 48px;
    width: 48px;
    min-width: 48px;
    height: 48px;
    min-height: 48px;
    margin: 0;
    padding: 0;
    border: 1px solid var(--md-sys-color-outline);
    border-radius: 50%;
    background: var(--md-sys-color-surface-container-lowest);
    box-shadow:
        0 1px 2px rgba(var(--asufuru-green-rgb), 0.2),
        0 1px 3px 1px rgba(var(--asufuru-green-rgb), 0.1);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: var(--md-sys-color-on-surface-variant);
    cursor: pointer;
    transition: box-shadow var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard), transform var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard), background-color var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard);
}

.asufuru-mobile-review-bar__round:active {
    transform: scale(0.98);
    box-shadow:
        0 1px 2px rgba(60, 64, 67, 0.2),
        0 1px 2px rgba(60, 64, 67, 0.1);
}

.asufuru-mobile-review-bar__round:focus-visible {
    outline: 2px solid var(--md-sys-color-primary);
    outline-offset: 2px;
}

.asufuru-mobile-review-bar__round .asufuru-heart-icon {
    width: auto;
    height: auto;
    font-size: var(--md-sys-typescale-title-medium-size);
    line-height: 1;
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-mobile-review-bar__pin {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
}

.asufuru-mobile-review-bar__pin svg {
    display: block;
    width: 20px;
    height: 20px;
}

.asufuru-mobile-review-bar .asufuru-compare-toggle.is-active {
    background: var(--md-sys-color-primary);
    border-color: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
    box-shadow:
        0 1px 2px rgba(var(--asufuru-green-rgb), 0.45),
        0 2px 6px rgba(var(--asufuru-green-rgb), 0.25);
}

.asufuru-mobile-review-bar .asufuru-compare-toggle.is-active .asufuru-heart-icon {
    color: var(--md-sys-color-on-primary);
}

.asufuru-mobile-review-bar__cta {
    position: relative;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-4);
    margin: 0;
    border: none;
    border-radius: var(--asufuru-button-pill-radius, 9999px);
    background: var(--md-sys-color-tertiary);
    color: var(--md-sys-color-on-tertiary) !important;
    font-size: var(--md-sys-typescale-label-medium-size);
    font-weight: 700;
    line-height: 1.35;
    letter-spacing: 0.02em;
    text-align: center;
    text-decoration: none !important;
    white-space: normal;
    word-break: keep-all;
    overflow-wrap: anywhere;
    writing-mode: horizontal-tb;
    box-shadow:
        0 1px 2px rgba(var(--asufuru-orange-rgb), 0.35),
        0 2px 6px rgba(var(--asufuru-orange-rgb), 0.22);
    transition: box-shadow var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard), transform var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard), filter var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-mobile-review-bar__cta:hover {
    filter: brightness(0.97);
}

.asufuru-mobile-review-bar__cta:active {
    transform: scale(0.99);
    box-shadow:
        0 1px 2px rgba(var(--asufuru-orange-rgb), 0.3),
        0 1px 4px rgba(var(--asufuru-orange-rgb), 0.18);
}

.asufuru-mobile-review-bar__cta:focus-visible {
    outline: 2px solid var(--md-sys-color-primary);
    outline-offset: 3px;
}

@media (min-width: 768px) {
    .asufuru-mobile-review-bar {
        display: none !important;
    }
}

@media (max-width: 767px) {
    /* 下部バーに集約したため、従来の左下フローティングお気に入りは非表示 */
    body.asufuru-has-mobile-review-bar .p-single--review .asufuru-compare-toggle--single-floating {
        display: none !important;
    }

    /* 詳細では FAB（地図+TOP）を出さないが、万一二重出力されたとき用 */
    body.asufuru-has-mobile-review-bar .asufuru-mobile-fab {
        display: none !important;
    }

    body.asufuru-has-mobile-review-bar main.l-main {
        padding-bottom: calc(84px + env(safe-area-inset-bottom));
    }
}

@media print {
    .asufuru-mobile-review-bar {
        display: none !important;
    }
}

/* --------------------------------------------------------------------------
 * 団体・チーム詳細：ページ内ナビ（768px 未満のみ表示・全幅・トップ「カテゴリで探す」と同一タブ UI）
 * -------------------------------------------------------------------------- */
.asufuru-inpage-nav-fullbleed {
    display: none;
}

@media (max-width: 767px) {
    article.p-single--review .asufuru-inpage-nav-fullbleed {
        display: block;
        width: 100vw;
        max-width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        margin-top: 0;
        margin-bottom: var(--md-sys-spacing-4);
        padding-left: 0;
        padding-right: 0;
        box-sizing: border-box;
    }

    /* .asufuru-tax-tabs-sp の見た目を流用（max-width 解除でエリアいっぱい） */
    article.p-single--review .asufuru-inpage-nav-tabs.asufuru-tax-tabs-sp {
        max-width: none;
        width: 100%;
        border-radius: 0;
        border-left: 0;
        border-right: 0;
        box-shadow: none;
        background: var(--md-sys-color-surface-container-lowest);
        margin-left: 0;
        margin-right: 0;
        margin-bottom: 0;
    }

    article.p-single--review .asufuru-inpage-nav-tabs__track {
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: stretch;
        width: 100%;
        min-width: 0;
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        touch-action: pan-x;
    }

    article.p-single--review .asufuru-inpage-nav-tabs__track::-webkit-scrollbar {
        display: none;
    }

    /* ボタンタブと同型。横スクロールのため幅は内容に合わせる */
    article.p-single--review a.asufuru-tax-tab.asufuru-inpage-nav-tab {
        flex: 0 0 auto;
        min-width: 0;
        min-height: 50px;
        padding: var(--md-sys-spacing-3) var(--md-sys-spacing-4);
        border-top: 0;
        border-bottom: 3px solid transparent;
        border-right: 0;
        background: var(--md-sys-color-surface-container-lowest);
        text-decoration: none !important;
        -webkit-tap-highlight-color: transparent;
        box-sizing: border-box;
    }

    article.p-single--review a.asufuru-tax-tab.asufuru-inpage-nav-tab,
    article.p-single--review a.asufuru-tax-tab.asufuru-inpage-nav-tab:visited {
        color: var(--md-sys-color-on-surface-variant) !important;
    }

    article.p-single--review a.asufuru-tax-tab.asufuru-inpage-nav-tab.is-active,
    article.p-single--review a.asufuru-tax-tab.asufuru-inpage-nav-tab.is-active:visited {
        color: var(--asufuru-green) !important;
        border-bottom-color: var(--asufuru-green) !important;
        background: var(--md-sys-color-surface-container-lowest) !important;
        box-shadow: none !important;
    }
}

/* アンカー移動時に固定ヘッダーと重ならないよう余白（CTA は既存インライン指定） */
article.p-single--review [id^="asufuru-section-"] {
    scroll-margin-top: 96px;
}

@media (min-width: 900px) {
    article.p-single--review [id^="asufuru-section-"] {
        scroll-margin-top: 88px;
    }
}


/* ==========================================================================
   あすふる：掲載お申し込みウィザード
   ========================================================================== */

.asufuru-listing-apply-page {
    padding-bottom: var(--md-sys-spacing-16);
}

.asufuru-listing-apply-page__guide-link {
    margin: 0 0 var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    text-align: center;
}

.asufuru-listing-apply-page__guide-link a {
    color: var(--md-sys-color-secondary);
    font-weight: var(--md-sys-typescale-title-small-weight);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.asufuru-listing-apply-page__guide-link a:hover {
    color: var(--md-sys-color-secondary-hover);
}

.asufuru-listing-apply-page__ai-link,
.asufuru-listing-apply-page__classic-link {
    margin: 0 0 var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    text-align: center;
}

.asufuru-listing-apply-page__ai-link a,
.asufuru-listing-apply-page__classic-link a {
    color: var(--md-sys-color-secondary);
    font-weight: var(--md-sys-typescale-title-small-weight);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.asufuru-listing-apply-page__ai-link a:hover,
.asufuru-listing-apply-page__classic-link a:hover {
    color: var(--md-sys-color-secondary-hover);
}

.asufuru-listing-ai-page__warn {
    margin: var(--md-sys-spacing-4) auto 0;
    max-width: 42rem;
    padding: var(--md-sys-spacing-4);
    border-radius: var(--md-sys-shape-corner-medium);
    background: var(--md-sys-color-error-container);
    color: var(--md-sys-color-on-error-container);
    font-size: var(--md-sys-typescale-body-medium-size);
    text-align: left;
}

.asufuru-listing-ai-layout {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-8);
    margin-top: var(--md-sys-spacing-8);
}

.asufuru-listing-ai-layout--wizard-only {
    margin-top: var(--md-sys-spacing-6);
}

@media (min-width: 1200px) {
    .asufuru-listing-ai-layout {
        flex-direction: row;
        align-items: flex-start;
        gap: var(--md-sys-spacing-10);
    }

    .asufuru-listing-ai-layout__chat {
        flex: 0 0 380px;
        position: sticky;
        top: var(--md-sys-spacing-6);
    }

    .asufuru-listing-ai-layout__wizard {
        flex: 1;
        min-width: 0;
    }
}

/* AIチャット — モーダル（「AIと一緒に考える」で表示） */
.asufuru-listing-ai-modal {
    position: fixed;
    inset: 0;
    z-index: 100050;
    display: flex;
    align-items: stretch;
    justify-content: center;
    padding: 0;
    box-sizing: border-box;
}

.asufuru-listing-ai-modal[hidden] {
    display: none !important;
}

.asufuru-listing-ai-modal__backdrop {
    position: absolute;
    inset: 0;
    margin: 0;
    padding: 0;
    border: none;
    background: rgb(var(--asufuru-green-rgb) / 0.12);
    backdrop-filter: blur(2px);
    cursor: pointer;
}

.asufuru-listing-ai-modal__dialog {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    width: 100%;
    max-width: 36rem;
    max-height: 100%;
    margin: 0;
    margin-left: auto;
    margin-right: auto;
    padding: var(--md-sys-spacing-4);
    padding-top: var(--md-sys-spacing-2);
    box-sizing: border-box;
    background: var(--md-sys-color-surface-container-lowest);
    border-radius: var(--md-sys-shape-corner-large) var(--md-sys-shape-corner-large) 0 0;
    box-shadow: var(--md-sys-elevation-3);
}

@media (min-width: 768px) {
    .asufuru-listing-ai-modal {
        align-items: center;
        padding: var(--md-sys-spacing-6);
    }

    .asufuru-listing-ai-modal__dialog {
        max-height: min(90vh, 40rem);
        border-radius: var(--md-sys-shape-corner-large);
    }
}

.asufuru-listing-ai-modal__toolbar {
    display: flex;
    justify-content: flex-end;
    flex-shrink: 0;
    margin-bottom: var(--md-sys-spacing-2);
}

.asufuru-listing-ai-modal__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.75rem;
    min-height: 2.75rem;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: var(--md-sys-shape-corner-full);
    background: transparent;
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-headline-small-size);
    line-height: 1;
    cursor: pointer;
}

.asufuru-listing-ai-modal__close:hover {
    background: var(--md-sys-color-surface-container-high);
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-ai-modal__close:focus-visible {
    outline: 2px solid var(--md-sys-color-primary);
    outline-offset: 2px;
}

.asufuru-listing-ai-modal__dialog .asufuru-listing-ai-chat {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: var(--md-sys-spacing-4);
    border: none;
    box-shadow: none;
}

.asufuru-listing-ai-modal__dialog .asufuru-listing-ai-chat__log {
    flex: 1;
    min-height: 8rem;
    max-height: none;
}

.asufuru-listing-ai-modal__dialog .asufuru-listing-ai-chat__head,
.asufuru-listing-ai-modal__dialog .asufuru-listing-ai-chat__composer {
    flex-shrink: 0;
}

.asufuru-listing-ai-chat {
    padding: var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-large);
    border: 1px solid var(--md-sys-color-outline-variant);
    background: var(--md-sys-color-surface-container-lowest);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-listing-ai-chat__head {
    margin-bottom: var(--md-sys-spacing-4);
}

.asufuru-listing-ai-chat__title {
    margin: 0 0 var(--md-sys-spacing-2);
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-ai-chat__privacy {
    margin: 0;
    font-size: var(--md-sys-typescale-body-small-size);
    color: var(--md-sys-color-on-surface-variant);
    line-height: 1.5;
}

.asufuru-listing-ai-chat__log {
    max-height: 22rem;
    overflow-y: auto;
    padding: var(--md-sys-spacing-3);
    margin-bottom: var(--md-sys-spacing-4);
    border-radius: var(--md-sys-shape-corner-medium);
    background: var(--md-sys-color-surface-container-low);
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-3);
}

.asufuru-listing-ai-chat__msg {
    display: flex;
}

.asufuru-listing-ai-chat__msg--user {
    justify-content: flex-end;
}

.asufuru-listing-ai-chat__msg--user .asufuru-listing-ai-chat__bubble {
    background: var(--md-sys-color-secondary-container);
    color: var(--md-sys-color-on-secondary-container);
}

.asufuru-listing-ai-chat__msg--assistant .asufuru-listing-ai-chat__bubble {
    background: var(--md-sys-color-surface-container-high);
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-ai-chat__bubble {
    max-width: 100%;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-4);
    border-radius: var(--md-sys-shape-corner-large);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: 1.55;
    white-space: pre-wrap;
}

.asufuru-listing-ai-chat__composer {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-3);
}

.asufuru-ai-assist-btn {
    margin-left: var(--md-sys-spacing-2);
    padding: 2px var(--md-sys-spacing-2);
    border: 1px solid var(--md-sys-color-secondary);
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-secondary);
    font-size: var(--md-sys-typescale-label-small-size);
    font-weight: 700;
    line-height: 1.6;
    cursor: pointer;
    vertical-align: middle;
}

.asufuru-ai-assist-btn:hover {
    background: var(--md-sys-color-secondary-container);
    color: var(--md-sys-color-on-secondary-container);
}

.asufuru-listing-ai-chat__input {
    width: 100%;
    min-height: 5rem;
    padding: var(--md-sys-spacing-3);
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface);
    font-family: var(--md-ref-typeface-plain, inherit);
    font-size: var(--md-sys-typescale-body-medium-size);
    resize: vertical;
}

.asufuru-listing-ai-chat__input:focus {
    outline: 2px solid var(--md-sys-color-primary);
    outline-offset: 2px;
    border-color: var(--md-sys-color-primary);
}

.asufuru-listing-ai-chat__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-3);
    align-items: center;
}

.asufuru-listing-ai-chat__send {
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-6);
    border: none;
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
    font-weight: 700;
    font-size: var(--md-sys-typescale-label-large-size);
    cursor: pointer;
}

.asufuru-listing-ai-chat__send:hover:not(:disabled) {
    background: var(--md-sys-color-primary-hover);
}

.asufuru-listing-ai-chat__send:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

.asufuru-listing-ai-chat__apply {
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-5);
    border: 1px solid var(--md-sys-color-primary);
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-primary);
    font-weight: 700;
    font-size: var(--md-sys-typescale-label-large-size);
    cursor: pointer;
}

.asufuru-listing-ai-chat__apply:hover {
    background: var(--md-sys-color-primary-container);
}

.asufuru-listing-ai-chat__hint {
    margin: 0;
    font-size: var(--md-sys-typescale-body-small-size);
    color: var(--md-sys-color-on-secondary-container);
    padding: var(--md-sys-spacing-3);
    border-radius: var(--md-sys-shape-corner-small);
    background: var(--md-sys-color-secondary-container);
}

.asufuru-listing-ai-chat__loading {
    margin: var(--md-sys-spacing-2) 0 0;
    font-size: var(--md-sys-typescale-body-small-size);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-listing-ai-layout__wizard .asufuru-listing-wizard {
    max-width: none;
    margin-top: 0;
}

.asufuru-listing-wizard {
    position: relative;
    z-index: 1;
    isolation: isolate;
    max-width: 800px;
    margin: var(--md-sys-spacing-10) auto 0;
    width: 100%;
    box-sizing: border-box;
}

.asufuru-listing-wizard__form {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

/* --- プログレスバー --- */
.asufuru-listing-wizard__progressbar {
    margin-bottom: var(--md-sys-spacing-10);
}

.asufuru-listing-wizard__progressbar ol {
    display: flex;
    justify-content: space-between;
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: wizard-step;
    position: relative;
}

.asufuru-listing-wizard__progressbar ol::before {
    content: '';
    position: absolute;
    top: 16px;
    left: 24px;
    right: 24px;
    height: 2px;
    background: var(--md-sys-color-outline-variant);
    z-index: 0;
}

.asufuru-listing-wizard__progressbar-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--md-sys-spacing-2);
    position: relative;
    z-index: 1;
    flex: 1;
}

.asufuru-listing-wizard__progressbar-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 2px solid var(--md-sys-color-outline-variant);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: 700;
    transition: all 0.3s ease;
}

.asufuru-listing-wizard__progressbar-label {
    font-size: var(--md-sys-typescale-label-small-size);
    color: var(--md-sys-color-on-surface-variant);
    font-weight: 500;
    text-align: center;
    transition: color 0.3s ease;
}

.asufuru-listing-wizard__progressbar-step.is-active .asufuru-listing-wizard__progressbar-num {
    background: var(--md-sys-color-primary);
    border-color: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
}

.asufuru-listing-wizard__progressbar-step.is-active .asufuru-listing-wizard__progressbar-label {
    color: var(--md-sys-color-primary);
    font-weight: 700;
}

.asufuru-listing-wizard__progressbar-step.is-done .asufuru-listing-wizard__progressbar-num {
    background: var(--md-sys-color-primary-container);
    border-color: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-listing-wizard__progressbar-step.is-done .asufuru-listing-wizard__progressbar-label {
    color: var(--md-sys-color-on-surface);
}

/* --- ステップ表示 --- */
/* fieldset+legend の UA レイアウトで入力欄だけ狭くなるのを防ぐ（見出し幅と揃える） */
.asufuru-listing-wizard__step {
    display: none;
    border: none;
    padding: 0;
    margin: 0;
    min-width: 0;
    min-inline-size: 0;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    animation: asufuruWizardFadeIn 0.35s ease;
}

.asufuru-listing-wizard__step.is-active {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

@keyframes asufuruWizardFadeIn {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

.asufuru-listing-wizard__step-title {
    display: block;
    width: 100%;
    max-width: 100%;
    float: none;
    font-size: var(--md-sys-typescale-title-large-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
    margin-bottom: var(--md-sys-spacing-8);
    padding: 0;
}

/* --- フォーム項目（既存 asufuru-form-item を継承しつつウィザード内補正） --- */
.asufuru-listing-wizard .asufuru-form-item {
    margin-bottom: var(--md-sys-spacing-6);
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.asufuru-listing-wizard .asufuru-form-item label,
.asufuru-listing-wizard .asufuru-form-item__group-label {
    display: block;
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
    margin-bottom: var(--md-sys-spacing-2);
}

.asufuru-listing-wizard input[type="text"],
.asufuru-listing-wizard input[type="email"],
.asufuru-listing-wizard input[type="tel"],
.asufuru-listing-wizard input[type="url"],
.asufuru-listing-wizard textarea,
.asufuru-listing-wizard select {
    display: block;
    width: 100%;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-4);
    border: 1.5px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-small, 8px);
    background: var(--md-sys-color-surface-container-lowest);
    color: var(--md-sys-color-on-surface);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: 1.6;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    box-sizing: border-box;
}

.asufuru-listing-wizard input:focus,
.asufuru-listing-wizard textarea:focus,
.asufuru-listing-wizard select:focus {
    outline: none;
    border-color: var(--md-sys-color-primary);
    box-shadow: 0 0 0 3px rgba(var(--asufuru-green-rgb), 0.15);
}

.asufuru-listing-wizard textarea {
    resize: vertical;
    min-height: 60px;
}

/* --- チェックボックスグリッド --- */
.asufuru-listing-wizard__checkbox-grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-2);
    margin-top: var(--md-sys-spacing-2);
}

.asufuru-listing-wizard__checkbox-label {
    display: flex;
    align-items: center;
    gap: var(--md-sys-spacing-2);
    padding: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    border: 1.5px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-small, 8px);
    background: var(--md-sys-color-surface-container-lowest);
    cursor: pointer;
    font-size: var(--md-sys-typescale-body-medium-size);
    transition: all 0.2s ease;
    user-select: none;
}

.asufuru-listing-wizard__checkbox-label:has(input:checked) {
    border-color: var(--md-sys-color-primary);
    background: var(--md-sys-color-primary-container);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-listing-wizard__checkbox-label input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--md-sys-color-primary);
}

/* --- スケジュールグリッド --- */
.asufuru-listing-wizard__schedule-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: var(--md-sys-spacing-1);
    margin-top: var(--md-sys-spacing-2);
}

.asufuru-listing-wizard__schedule-cell {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: var(--md-sys-spacing-2);
    border: 1.5px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-small, 8px);
    cursor: pointer;
    transition: all 0.2s ease;
    text-align: center;
}

.asufuru-listing-wizard__schedule-cell:has(input:checked) {
    border-color: var(--md-sys-color-primary);
    background: var(--md-sys-color-primary-container);
}

.asufuru-listing-wizard__schedule-cell input[type="checkbox"] {
    width: 14px;
    height: 14px;
    accent-color: var(--md-sys-color-primary);
}

.asufuru-listing-wizard__schedule-day {
    font-size: var(--md-sys-typescale-label-small-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-listing-wizard__schedule-note {
    margin-top: var(--md-sys-spacing-2) !important;
}

/* --- 料金グリッド --- */
.asufuru-listing-wizard__fee-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--md-sys-spacing-3);
    margin-bottom: var(--md-sys-spacing-3);
}

.asufuru-listing-wizard__fee-grid label {
    font-size: var(--md-sys-typescale-label-small-size) !important;
    font-weight: 600 !important;
    color: var(--md-sys-color-on-surface-variant) !important;
    margin-bottom: var(--md-sys-spacing-1) !important;
}

.asufuru-listing-wizard__fee-textareas {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-3);
}

/* --- 2カラムレイアウト --- */
.asufuru-listing-wizard__two-col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--md-sys-spacing-4);
}

/* --- 繰り返しインプット --- */
.asufuru-listing-wizard__repeated-input {
    margin-bottom: var(--md-sys-spacing-2) !important;
}

/* --- こだわりポイントのペア --- */
.asufuru-listing-wizard__feature-pair {
    padding: var(--md-sys-spacing-4);
    border: 1px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-small, 8px);
    margin-bottom: var(--md-sys-spacing-3);
    background: var(--md-sys-color-surface-container-lowest);
}

.asufuru-listing-wizard__feature-pair input {
    margin-bottom: var(--md-sys-spacing-2) !important;
}

/* --- 動的スロット --- */
.asufuru-listing-wizard__slot {
    border: 1.5px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-medium, 12px);
    padding: var(--md-sys-spacing-6);
    margin-bottom: var(--md-sys-spacing-4);
    background: var(--md-sys-color-surface-container-lowest);
}

.asufuru-listing-wizard__slot-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--md-sys-spacing-4);
}

.asufuru-listing-wizard__slot-num {
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: 700;
    color: var(--md-sys-color-primary);
}

.asufuru-listing-wizard__slot-remove-btn {
    background: none;
    border: 1px solid var(--md-sys-color-error);
    color: var(--md-sys-color-error);
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3);
    border-radius: var(--md-sys-shape-corner-small, 8px);
    font-size: var(--md-sys-typescale-label-small-size);
    cursor: pointer;
    transition: all 0.2s ease;
}

.asufuru-listing-wizard__slot-remove-btn:hover {
    background: var(--md-sys-color-error-container);
}

.asufuru-listing-wizard__slot-add-btn {
    display: block;
    width: 100%;
    padding: var(--md-sys-spacing-3);
    border: 2px dashed var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium, 12px);
    background: transparent;
    color: var(--md-sys-color-primary);
    font-size: var(--md-sys-typescale-body-medium-size);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
    margin-bottom: var(--md-sys-spacing-6);
}

.asufuru-listing-wizard__slot-add-btn:hover {
    background: var(--md-sys-color-primary-container);
    border-color: var(--md-sys-color-primary);
}

/* --- セクションラベル --- */
.asufuru-listing-wizard__section-label {
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
    margin-bottom: var(--md-sys-spacing-4);
}

/* --- 区切り線 --- */
.asufuru-listing-wizard__divider {
    border: none;
    border-top: 1px solid var(--md-sys-color-outline-variant);
    margin: var(--md-sys-spacing-8) 0;
}

/* --- ナビゲーション --- */
.asufuru-listing-apply-page .asufuru-listing-wizard__nav {
    position: relative;
    z-index: 10050;
}

.asufuru-listing-apply-page .asufuru-listing-wizard__nav-next,
.asufuru-listing-apply-page .asufuru-listing-wizard__nav-prev {
    position: relative;
    z-index: 10051;
    pointer-events: auto;
}

.asufuru-listing-wizard__nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: var(--md-sys-spacing-10);
    padding-top: var(--md-sys-spacing-6);
    border-top: 1px solid var(--md-sys-color-outline-variant);
}

.asufuru-listing-wizard__nav-prev {
    background: none;
    border: 1.5px solid var(--md-sys-color-outline);
    color: var(--md-sys-color-on-surface-variant);
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-8);
    border-radius: 50px;
    font-size: var(--md-sys-typescale-body-medium-size);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.asufuru-listing-wizard__nav-prev:hover {
    border-color: var(--md-sys-color-on-surface);
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-wizard__nav-next {
    background: var(--md-sys-color-primary);
    border: none;
    color: var(--md-sys-color-on-primary);
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-10);
    border-radius: 50px;
    font-size: var(--md-sys-typescale-body-large-size);
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s ease;
    box-shadow: 0 4px 12px rgba(var(--asufuru-green-rgb), 0.2);
}

.asufuru-listing-wizard__nav-next:hover {
    background: var(--md-sys-color-primary-hover);
    box-shadow: 0 6px 16px rgba(var(--asufuru-green-rgb), 0.3);
}

/* --- エラー --- */
.asufuru-listing-wizard__errors {
    list-style: none;
    margin: 0 0 var(--md-sys-spacing-4);
    padding: var(--md-sys-spacing-4);
    background: var(--md-sys-color-error-container);
    border-radius: var(--md-sys-shape-corner-small, 8px);
    color: var(--md-sys-color-on-error-container);
    font-size: var(--md-sys-typescale-body-medium-size);
}

.asufuru-listing-wizard__errors li {
    padding: var(--md-sys-spacing-1) 0;
}

.asufuru-listing-wizard__errors li::before {
    content: '! ';
    font-weight: 700;
}

/* --- 確認画面 --- */
.asufuru-listing-wizard__confirm-desc {
    font-size: var(--md-sys-typescale-body-medium-size);
    color: var(--md-sys-color-on-surface-variant);
    margin-bottom: var(--md-sys-spacing-6);
}

.asufuru-listing-wizard__confirm-section {
    border: 1.5px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-medium, 12px);
    padding: var(--md-sys-spacing-6);
    margin-bottom: var(--md-sys-spacing-4);
    background: var(--md-sys-color-surface-container-lowest);
}

.asufuru-listing-wizard__confirm-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--md-sys-spacing-4);
    padding-bottom: var(--md-sys-spacing-3);
    border-bottom: 1px solid var(--md-sys-color-outline-variant);
}

.asufuru-listing-wizard__confirm-section-header h3 {
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: 700;
    color: var(--md-sys-color-primary);
    margin: 0;
}

.asufuru-listing-wizard__confirm-edit-link {
    font-size: var(--md-sys-typescale-label-large-size);
    color: var(--md-sys-color-secondary);
    text-decoration: none;
    font-weight: 600;
}

.asufuru-listing-wizard__confirm-edit-link:hover {
    text-decoration: underline;
}

.asufuru-listing-wizard__confirm-dl {
    display: grid;
    grid-template-columns: minmax(100px, auto) 1fr;
    gap: var(--md-sys-spacing-2) var(--md-sys-spacing-4);
    margin: 0;
}

.asufuru-listing-wizard__confirm-dl dt {
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: 600;
    color: var(--md-sys-color-on-surface-variant);
    padding: var(--md-sys-spacing-1) 0;
}

.asufuru-listing-wizard__confirm-dl dd {
    font-size: var(--md-sys-typescale-body-medium-size);
    color: var(--md-sys-color-on-surface);
    margin: 0;
    padding: var(--md-sys-spacing-1) 0;
    word-break: break-word;
}

/* --- 同意チェック --- */
.asufuru-listing-wizard__agreement {
    margin: var(--md-sys-spacing-8) 0;
    padding: var(--md-sys-spacing-6);
    background: var(--md-sys-color-surface-container);
    border-radius: var(--md-sys-shape-corner-medium, 12px);
}

.asufuru-listing-wizard__agreement-label {
    display: flex;
    align-items: flex-start;
    gap: var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-body-medium-size);
    color: var(--md-sys-color-on-surface);
    cursor: pointer;
}

.asufuru-listing-wizard__agreement-label input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-top: 2px;
    flex-shrink: 0;
    accent-color: var(--md-sys-color-primary);
}

.asufuru-listing-wizard__agreement-label a {
    color: var(--md-sys-color-secondary);
}

/* --- 送信ボタン --- */
.asufuru-listing-wizard__nav--final {
    flex-direction: row;
    gap: var(--md-sys-spacing-4);
}

.asufuru-listing-wizard__submit {
    background: var(--md-sys-color-primary);
    border: none;
    color: var(--md-sys-color-on-primary);
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-12);
    border-radius: 50px;
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    box-shadow: 0 8px 20px rgba(var(--asufuru-green-rgb), 0.25);
    letter-spacing: 0.03em;
}

.asufuru-listing-wizard__submit:hover {
    background: var(--md-sys-color-primary-hover);
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgba(var(--asufuru-green-rgb), 0.35);
}

.asufuru-listing-wizard__submit:disabled {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
}

/* --- サンクス画面 --- */
.asufuru-listing-wizard__thanks-inner {
    text-align: center;
    padding: var(--md-sys-spacing-16) var(--md-sys-spacing-8);
    background: var(--md-sys-color-surface-container-lowest);
    border: 2px solid var(--md-sys-color-primary-container);
    border-radius: var(--md-sys-shape-corner-large, 20px);
}

.asufuru-listing-wizard__thanks-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--md-sys-color-primary);
    color: var(--md-sys-color-on-primary);
    font-size: 28px;
    font-weight: 900;
    margin-bottom: var(--md-sys-spacing-6);
}

.asufuru-listing-wizard__thanks-title {
    font-size: var(--md-sys-typescale-headline-small-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
    margin-bottom: var(--md-sys-spacing-4);
}

.asufuru-listing-wizard__thanks-body {
    font-size: var(--md-sys-typescale-body-large-size);
    color: var(--md-sys-color-on-surface-variant);
    line-height: 1.8;
    margin-bottom: var(--md-sys-spacing-4);
}

.asufuru-listing-wizard__thanks-ref {
    font-size: var(--md-sys-typescale-label-large-size);
    color: var(--md-sys-color-on-surface-variant);
    margin-bottom: var(--md-sys-spacing-8);
}

.asufuru-listing-wizard__thanks-actions {
    display: flex;
    justify-content: center;
    gap: var(--md-sys-spacing-4);
}

.asufuru-listing-wizard__thanks-link {
    display: inline-block;
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-8);
    border: 1.5px solid var(--md-sys-color-primary);
    border-radius: 50px;
    color: var(--md-sys-color-primary);
    font-weight: 600;
    text-decoration: none;
    transition: all 0.2s ease;
}

.asufuru-listing-wizard__thanks-link:hover {
    background: var(--md-sys-color-primary-container);
}

/* --- ローディング --- */
.asufuru-listing-wizard__loading-inner {
    text-align: center;
    padding: var(--md-sys-spacing-16) var(--md-sys-spacing-8);
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-body-large-size);
}

.asufuru-listing-wizard__spinner {
    display: inline-block;
    width: 40px;
    height: 40px;
    border: 3px solid var(--md-sys-color-outline-variant);
    border-top-color: var(--md-sys-color-primary);
    border-radius: 50%;
    animation: asufuruWizardSpin 0.8s linear infinite;
    margin-bottom: var(--md-sys-spacing-4);
}

@keyframes asufuruWizardSpin {
    to { transform: rotate(360deg); }
}

/* --- トースト通知 --- */
.asufuru-listing-wizard__toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    background: var(--md-sys-color-on-surface);
    color: var(--md-sys-color-surface);
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-6);
    border-radius: 50px;
    font-size: var(--md-sys-typescale-body-medium-size);
    font-weight: 600;
    z-index: 9999;
    opacity: 0;
    transition: all 0.3s ease;
    pointer-events: none;
}

.asufuru-listing-wizard__toast.is-visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* --- モバイル対応 --- */
@media (max-width: 767px) {
    .asufuru-listing-wizard {
        margin-top: var(--md-sys-spacing-6);
    }

    .asufuru-listing-wizard__progressbar-label {
        font-size: 10px;
    }

    .asufuru-listing-wizard__progressbar-num {
        width: 28px;
        height: 28px;
        font-size: var(--md-sys-typescale-label-small-size);
    }

    .asufuru-listing-wizard__progressbar ol::before {
        top: 14px;
        left: 16px;
        right: 16px;
    }

    .asufuru-listing-wizard__two-col {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .asufuru-listing-wizard__schedule-grid {
        grid-template-columns: repeat(4, 1fr);
    }

    .asufuru-listing-wizard__fee-grid {
        grid-template-columns: 1fr;
    }

    .asufuru-listing-wizard__slot {
        padding: var(--md-sys-spacing-4);
    }

    .asufuru-listing-wizard__nav-next,
    .asufuru-listing-wizard__submit {
        padding-left: var(--md-sys-spacing-6);
        padding-right: var(--md-sys-spacing-6);
        font-size: var(--md-sys-typescale-body-medium-size);
    }

    .asufuru-listing-wizard__nav--final {
        flex-direction: column-reverse;
        gap: var(--md-sys-spacing-3);
    }

    .asufuru-listing-wizard__submit {
        width: 100%;
    }

    .asufuru-listing-wizard__confirm-dl {
        grid-template-columns: 1fr;
    }

    .asufuru-listing-wizard__confirm-dl dt {
        padding-bottom: 0;
    }

    .asufuru-listing-wizard__confirm-dl dd {
        padding-bottom: var(--md-sys-spacing-3);
        border-bottom: 1px solid var(--md-sys-color-outline-variant);
    }

    .asufuru-listing-wizard__thanks-inner {
        padding: var(--md-sys-spacing-10) var(--md-sys-spacing-5);
    }

    .asufuru-listing-wizard__thanks-title {
        font-size: var(--md-sys-typescale-title-large-size);
    }
}

/* ============================================================
   あすふるとは（ブランド LP）— page-asufuru-brand.php
   トークン: asufuru-color-palette / asufuru-design-tokens 準拠
   ============================================================ */

body.asufuru-brand-page .asufuru-brand {
    font-family: var(--md-ref-typeface-plain);
    color: var(--md-sys-color-on-surface);
    background: var(--md-sys-color-surface);
}

/* メイン直下を掲載申込（section + l-inner）と同じ1カラムに揃える。SP は .l-main > section の共通全幅ルールの対象にする */
body.asufuru-brand-page .l-main > .asufuru-brand-page-section {
    width: 100%;
    max-width: none;
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
    box-sizing: border-box;
}

.asufuru-brand__root {
    overflow-x: clip;
}

.asufuru-brand__inner {
    width: 100%;
}

/* セクション装飾（薄緑の水玉）— 本文より背面 */
.asufuru-brand__section--ambient {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.asufuru-brand__section--ambient > .l-inner {
    position: relative;
    z-index: 1;
}

.asufuru-brand__atmosphere {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.asufuru-brand__bubble {
    position: absolute;
    border-radius: 50%;
    background: rgba(var(--asufuru-green-rgb), 0.12);
    box-shadow: 0 0 0 1px rgba(var(--asufuru-green-rgb), 0.06);
    will-change: transform;
}

.asufuru-brand__atmosphere--hero .asufuru-brand__bubble {
    width: clamp(0.75rem, 2.2vw, 1.25rem);
    height: clamp(0.75rem, 2.2vw, 1.25rem);
    opacity: 0.55;
}

.asufuru-brand__atmosphere--compact .asufuru-brand__bubble {
    width: clamp(0.5rem, 1.4vw, 0.875rem);
    height: clamp(0.5rem, 1.4vw, 0.875rem);
    opacity: 0.42;
}

.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(1) {
    left: 6%;
    top: 72%;
    animation: asufuru-brand-bubble-drift-a 26s ease-in-out infinite;
    animation-delay: -4s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(2) {
    left: 18%;
    top: 22%;
    animation: asufuru-brand-bubble-drift-b 32s ease-in-out infinite;
    animation-delay: -9s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(3) {
    left: 82%;
    top: 14%;
    animation: asufuru-brand-bubble-drift-c 24s ease-in-out infinite;
    animation-delay: -2s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(4) {
    left: 58%;
    top: 58%;
    animation: asufuru-brand-bubble-drift-a 30s ease-in-out infinite;
    animation-delay: -14s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(5) {
    left: 38%;
    top: 82%;
    animation: asufuru-brand-bubble-drift-b 28s ease-in-out infinite;
    animation-delay: -6s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(6) {
    left: 92%;
    top: 48%;
    animation: asufuru-brand-bubble-drift-c 34s ease-in-out infinite;
    animation-delay: -11s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(7) {
    left: 12%;
    top: 44%;
    animation: asufuru-brand-bubble-drift-b 22s ease-in-out infinite;
    animation-delay: -1s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(8) {
    left: 72%;
    top: 78%;
    animation: asufuru-brand-bubble-drift-a 36s ease-in-out infinite;
    animation-delay: -18s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(9) {
    left: 48%;
    top: 12%;
    animation: asufuru-brand-bubble-drift-c 29s ease-in-out infinite;
    animation-delay: -7s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(10) {
    left: 28%;
    top: 62%;
    animation: asufuru-brand-bubble-drift-a 31s ease-in-out infinite;
    animation-delay: -12s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(11) {
    left: 64%;
    top: 34%;
    animation: asufuru-brand-bubble-drift-b 27s ease-in-out infinite;
    animation-delay: -3s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(12) {
    left: 4%;
    top: 88%;
    animation: asufuru-brand-bubble-drift-c 33s ease-in-out infinite;
    animation-delay: -16s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(13) {
    left: 88%;
    top: 66%;
    animation: asufuru-brand-bubble-drift-a 25s ease-in-out infinite;
    animation-delay: -8s;
}
.asufuru-brand__atmosphere--hero .asufuru-brand__bubble:nth-child(14) {
    left: 52%;
    top: 90%;
    animation: asufuru-brand-bubble-drift-b 35s ease-in-out infinite;
    animation-delay: -20s;
}

.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(1) {
    left: 8%;
    top: 20%;
    animation: asufuru-brand-bubble-drift-a 22s ease-in-out infinite;
    animation-delay: -3s;
}
.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(2) {
    left: 78%;
    top: 12%;
    animation: asufuru-brand-bubble-drift-c 26s ease-in-out infinite;
    animation-delay: -10s;
}
.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(3) {
    left: 22%;
    top: 78%;
    animation: asufuru-brand-bubble-drift-b 24s ease-in-out infinite;
    animation-delay: -6s;
}
.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(4) {
    left: 58%;
    top: 42%;
    animation: asufuru-brand-bubble-drift-a 28s ease-in-out infinite;
    animation-delay: -1s;
}
.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(5) {
    left: 90%;
    top: 62%;
    animation: asufuru-brand-bubble-drift-b 30s ease-in-out infinite;
    animation-delay: -14s;
}
.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(6) {
    left: 40%;
    top: 88%;
    animation: asufuru-brand-bubble-drift-c 21s ease-in-out infinite;
    animation-delay: -8s;
}
.asufuru-brand__atmosphere--compact .asufuru-brand__bubble:nth-child(7) {
    left: 6%;
    top: 52%;
    animation: asufuru-brand-bubble-drift-a 27s ease-in-out infinite;
    animation-delay: -5s;
}

@keyframes asufuru-brand-bubble-drift-a {
    0%,
    100% {
        transform: translate3d(0, 0, 0) scale(1);
    }
    50% {
        transform: translate3d(12%, -18%, 0) scale(1.08);
    }
}

@keyframes asufuru-brand-bubble-drift-b {
    0%,
    100% {
        transform: translate3d(0, 0, 0) scale(1);
    }
    50% {
        transform: translate3d(-14%, 14%, 0) scale(0.95);
    }
}

@keyframes asufuru-brand-bubble-drift-c {
    0%,
    100% {
        transform: translate3d(0, 0, 0) scale(1);
    }
    33% {
        transform: translate3d(10%, 8%, 0) scale(1.05);
    }
    66% {
        transform: translate3d(-8%, -12%, 0) scale(1.02);
    }
}

@media (prefers-reduced-motion: reduce) {
    .asufuru-brand__bubble {
        animation: none !important;
        opacity: 0.28;
    }
}

/* セクション共通メディア（images/brand/brand-{section}.*） */
.asufuru-brand__media-block {
    margin: var(--md-sys-spacing-8) 0 0;
}

.asufuru-brand__media-block:first-child {
    margin-top: 0;
}

.asufuru-brand__media-frame {
    position: relative;
    overflow: hidden;
    border-radius: var(--md-sys-shape-corner-large);
    border: 1px solid var(--md-sys-color-outline-variant);
    background: var(--md-sys-color-surface-container-lowest);
    box-shadow: var(--md-sys-elevation-2);
}

.asufuru-brand__media-photo {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
}

.asufuru-brand__media-block--hero {
    margin-top: var(--md-sys-spacing-10);
}

/* Hero 画像は 2500×1600px（25:16）を前提 */
.asufuru-brand__media-block--hero .asufuru-brand__media-frame {
    aspect-ratio: 25 / 16;
    min-height: 10rem;
}

.asufuru-brand__media-block--hero .asufuru-brand__media-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.asufuru-brand__media-placeholder {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--md-sys-spacing-2);
    min-height: 10rem;
    padding: var(--md-sys-spacing-6);
    text-align: center;
    border-radius: var(--md-sys-shape-corner-large);
    border: 2px dashed var(--md-sys-color-outline);
    background: var(--md-sys-color-surface-container);
    box-shadow: var(--md-sys-elevation-2);
    overflow: hidden;
}

.asufuru-brand__media-placeholder::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0.5;
    background: linear-gradient(
        120deg,
        transparent 0%,
        transparent 38%,
        rgba(var(--asufuru-green-rgb), 0.12) 50%,
        transparent 62%,
        transparent 100%
    );
    background-size: 220% 100%;
}

@media (prefers-reduced-motion: no-preference) {
    .asufuru-brand__media-placeholder::before {
        animation: asufuru-brand-mission-placeholder-sweep 9s ease-in-out infinite;
    }
}

.asufuru-brand__media-placeholder-icon {
    position: relative;
    z-index: 1;
    display: flex;
    color: var(--md-sys-color-primary);
}

.asufuru-brand__media-placeholder-label {
    position: relative;
    z-index: 1;
    font-size: var(--md-sys-typescale-title-medium-size);
    line-height: var(--md-sys-typescale-title-medium-line-height);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__media-placeholder-hint {
    position: relative;
    z-index: 1;
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
    max-width: 22rem;
}

.asufuru-brand__media-block-caption {
    margin-top: var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
    text-align: center;
}

.asufuru-brand__media-block--section .asufuru-brand__media-frame,
.asufuru-brand__media-block--section .asufuru-brand__media-placeholder {
    aspect-ratio: 4 / 3;
    min-height: 0;
}

.asufuru-brand__media-block--mission {
    margin-top: 0;
}

.asufuru-brand__media-block--mission .asufuru-brand__media-placeholder,
.asufuru-brand__media-block--mission .asufuru-brand__media-frame {
    min-height: 11rem;
    aspect-ratio: 4 / 3;
}

.asufuru-brand__parents-layout {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-10);
    align-items: stretch;
}

.asufuru-brand__orgs-layout {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-10);
    align-items: stretch;
}

@media (min-width: 992px) {
    .asufuru-brand__parents-layout {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--md-sys-spacing-12);
        align-items: center;
    }

    .asufuru-brand__orgs-layout {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--md-sys-spacing-12);
        align-items: center;
    }

    .asufuru-brand__orgs-layout .asufuru-brand__media-block--orgs {
        margin-top: 0;
    }

    .asufuru-brand__parents-layout .asufuru-brand__media-block--parents {
        margin-top: 0;
    }
}

.asufuru-brand__vision-layout {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-10);
    align-items: stretch;
}

.asufuru-brand__vision-layout .asufuru-brand__media-block--vision {
    margin-top: 0;
}

@media (min-width: 992px) {
    .asufuru-brand__vision-layout {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--md-sys-spacing-12);
        align-items: center;
    }
}

.asufuru-brand__section {
    padding-top: var(--md-sys-spacing-16);
    padding-bottom: var(--md-sys-spacing-16);
}

.asufuru-brand__section--dim {
    background: var(--md-sys-color-surface-dim);
}

/* 100vw ブレイクアウトの #primary 内にネストした薄色帯は親幅の丸めで右端に地色が見えることがあるため、SP のみ vw 基準で全幅に揃える */
@media (max-width: 767px) {
    body.asufuru-brand-page .asufuru-brand__root .asufuru-brand__section--dim {
        width: 100vw;
        max-width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
        box-sizing: border-box;
    }
}

/* 上記 100vw と親レイアウトの組み合わせで横方向に 1px 足りるケースのスクロールを抑止（レビューカード一覧と同様） */
html:has(body.asufuru-brand-page) {
    overflow-x: hidden;
}

#asufuru-brand-hero,
#asufuru-brand-story,
#asufuru-brand-mission,
#asufuru-brand-values,
#asufuru-brand-parents,
#asufuru-brand-orgs,
#asufuru-brand-vision,
#asufuru-brand-closing {
    scroll-margin-top: var(--md-sys-spacing-12);
}

.asufuru-brand__section-title {
    font-size: var(--md-sys-typescale-headline-medium-size);
    line-height: var(--md-sys-typescale-headline-medium-line-height);
    font-weight: var(--md-sys-typescale-headline-medium-weight);
    color: var(--md-sys-color-on-surface);
    margin: 0 0 var(--md-sys-spacing-6);
}

.asufuru-brand__section-lead {
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface-variant);
    margin: 0;
    max-width: 65ch;
}

.asufuru-brand__prose {
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    margin: 0 0 var(--md-sys-spacing-5);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__prose:last-child {
    margin-bottom: 0;
}

/* --- Hero --- */
.asufuru-brand__hero {
    position: relative;
    padding-top: var(--md-sys-spacing-20);
    padding-bottom: var(--md-sys-spacing-16);
    scroll-margin-top: var(--md-sys-spacing-8);
}

.asufuru-brand__hero .asufuru-brand__atmosphere {
    z-index: 1;
}

.asufuru-brand__hero-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    background:
        radial-gradient(ellipse 120% 80% at 90% 10%, rgba(var(--asufuru-green-rgb), 0.18) 0%, transparent 55%),
        radial-gradient(ellipse 100% 60% at 10% 90%, rgba(var(--asufuru-blue-rgb), 0.12) 0%, transparent 50%),
        var(--md-sys-color-surface);
    pointer-events: none;
}

.asufuru-brand__hero-inner {
    position: relative;
    z-index: 2;
}

.asufuru-brand__eyebrow {
    display: inline-block;
    margin: 0 0 var(--md-sys-spacing-4);
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: var(--md-sys-typescale-label-large-weight);
    line-height: var(--md-sys-typescale-label-large-line-height);
    color: var(--md-sys-color-on-primary-container);
    background: var(--md-sys-color-primary-container);
    border-radius: var(--md-sys-shape-corner-full);
}

.asufuru-brand__hero-title {
    margin: 0 0 var(--md-sys-spacing-5);
    font-size: var(--md-sys-typescale-display-small-size);
    line-height: var(--md-sys-typescale-display-small-line-height);
    font-weight: var(--md-sys-typescale-display-small-weight);
    color: var(--md-sys-color-on-surface);
    letter-spacing: -0.02em;
}

.asufuru-brand__hero-lead {
    margin: 0 0 var(--md-sys-spacing-8);
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface-variant);
    max-width: 65ch;
}

.asufuru-brand__hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-4);
    align-items: center;
}

/* --- Buttons --- */
.asufuru-brand__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--md-sys-spacing-12);
    padding: var(--md-sys-spacing-3) var(--md-sys-spacing-6);
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: var(--md-sys-typescale-label-large-weight);
    line-height: var(--md-sys-typescale-label-large-line-height);
    text-decoration: none;
    border-radius: var(--md-sys-shape-corner-full);
    border: 1px solid transparent;
    transition:
        background-color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        box-shadow var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        border-color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-brand__btn--primary {
    color: var(--md-sys-color-on-primary);
    background: var(--md-sys-color-primary);
    box-shadow: var(--asufuru-elevation-primary);
}

.asufuru-brand__btn--primary:hover {
    background: var(--md-sys-color-primary-hover);
}

.asufuru-brand__btn--ghost {
    color: var(--md-sys-color-secondary);
    background: transparent;
    border-color: var(--md-sys-color-outline);
}

.asufuru-brand__btn--ghost:hover {
    background: var(--md-sys-color-secondary-container);
    color: var(--md-sys-color-on-secondary-container);
    border-color: transparent;
}

.asufuru-brand__btn--secondary {
    color: var(--md-sys-color-on-secondary);
    background: var(--md-sys-color-secondary);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-brand__btn--secondary:hover {
    background: var(--md-sys-color-secondary-hover);
}

.asufuru-brand__btn--cta {
    color: var(--md-sys-color-on-tertiary);
    background: var(--md-sys-color-tertiary);
    box-shadow: var(--asufuru-elevation-tertiary);
}

.asufuru-brand__btn--cta:hover {
    background: var(--md-sys-color-tertiary-hover);
}

/* --- Story + media slot --- */
.asufuru-brand__story-grid {
    display: grid;
    gap: var(--md-sys-spacing-10);
    align-items: start;
}

/* --- Mission（本文 + 仮ビジュアル） --- */
.asufuru-brand__mission-inner {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-8);
}

.asufuru-brand__mission-head .asufuru-brand__section-title {
    margin-bottom: 0;
}

.asufuru-brand__mission-grid {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-10);
    align-items: stretch;
}

.asufuru-brand__mission-copy .asufuru-brand__mission-lead {
    margin-top: 0;
    margin-bottom: var(--md-sys-spacing-5);
    max-width: none;
}

.asufuru-brand__mission-media {
    margin: 0;
}

@media (max-width: 991px) {
    .asufuru-brand__mission-media {
        order: -1;
    }
}

@media (min-width: 992px) {
    .asufuru-brand__mission-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--md-sys-spacing-12);
        align-items: start;
    }

    .asufuru-brand__mission-media {
        order: 0;
    }
}

.asufuru-brand__mission-placeholder {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--md-sys-spacing-2);
    min-height: 11rem;
    aspect-ratio: 4 / 3;
    padding: var(--md-sys-spacing-6);
    text-align: center;
    border-radius: var(--md-sys-shape-corner-large);
    border: 2px dashed var(--md-sys-color-outline);
    background: var(--md-sys-color-surface-container);
    box-shadow: var(--md-sys-elevation-2);
    overflow: hidden;
}

.asufuru-brand__mission-placeholder::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0.55;
    background: linear-gradient(
        120deg,
        transparent 0%,
        transparent 38%,
        rgba(var(--asufuru-green-rgb), 0.14) 50%,
        transparent 62%,
        transparent 100%
    );
    background-size: 220% 100%;
}

@media (prefers-reduced-motion: no-preference) {
    .asufuru-brand__mission-placeholder::before {
        animation: asufuru-brand-mission-placeholder-sweep 9s ease-in-out infinite;
    }
}

@keyframes asufuru-brand-mission-placeholder-sweep {
    0%,
    100% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
}

.asufuru-brand__mission-placeholder-icon {
    position: relative;
    z-index: 1;
    display: flex;
    color: var(--md-sys-color-primary);
}

.asufuru-brand__mission-placeholder-label {
    position: relative;
    z-index: 1;
    font-size: var(--md-sys-typescale-title-medium-size);
    line-height: var(--md-sys-typescale-title-medium-line-height);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__mission-placeholder-hint {
    position: relative;
    z-index: 1;
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
    max-width: 18rem;
}

.asufuru-brand__mission-caption {
    margin-top: var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
    text-align: center;
}

@media (prefers-reduced-motion: reduce) {
    .asufuru-brand__mission-placeholder::before,
    .asufuru-brand__media-placeholder::before {
        animation: none;
        opacity: 0.35;
    }
}

.asufuru-brand__media {
    margin: 0;
}

.asufuru-brand__media-slot {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: calc(var(--md-sys-spacing-24) + var(--md-sys-spacing-24));
    padding: var(--md-sys-spacing-8);
    background: var(--md-sys-color-surface-container);
    border: 1px dashed var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-large);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-brand__media-slot--photo {
    border-style: solid;
    border-color: var(--md-sys-color-outline-variant);
    padding: 0;
    background: var(--md-sys-color-surface-container-lowest);
    overflow: hidden;
}

.asufuru-brand__media-slot--photo:not(.has-photo) {
    padding: var(--md-sys-spacing-4);
}

.asufuru-brand__media-slot--photo.has-photo {
    border-radius: var(--md-sys-shape-corner-large);
    min-height: 0;
    align-items: stretch;
    align-content: stretch;
    /* グリッド gap 部分にカード用の surface が乗らないよう、周囲セクションの面と揃える */
    background: transparent;
}

.asufuru-brand__media-grid {
    display: grid;
    gap: var(--md-sys-spacing-4);
    grid-template-columns: 1fr;
    width: 100%;
}

.asufuru-brand__media-img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
    aspect-ratio: 4 / 3;
    border-radius: var(--md-sys-shape-corner-medium);
}

.asufuru-brand__illustration-wrap {
    width: 100%;
    max-width: min(100%, 28rem);
    margin: 0 auto;
}

.asufuru-brand__illustration-svg {
    width: 100%;
    height: auto;
    display: block;
}

.asufuru-brand__illustration-bg {
    fill: var(--md-sys-color-surface-container-lowest);
}

.asufuru-brand__illustration-sky {
    fill: rgba(var(--asufuru-blue-rgb), 0.14);
}

.asufuru-brand__illustration-sun {
    fill: rgba(var(--asufuru-orange-rgb), 0.35);
}

.asufuru-brand__illustration-hill {
    fill: var(--md-sys-color-primary-container);
}

.asufuru-brand__illustration-field {
    fill: rgba(var(--asufuru-green-rgb), 0.28);
}

.asufuru-brand__illustration-baseline {
    stroke: var(--md-sys-color-primary);
}

.asufuru-brand__illustration-figure--a,
.asufuru-brand__illustration-figure--c,
.asufuru-brand__illustration-figure--e {
    fill: var(--md-sys-color-secondary);
}

.asufuru-brand__illustration-figure--b {
    fill: var(--md-sys-color-primary);
}

.asufuru-brand__illustration-figure--d {
    fill: var(--md-sys-color-on-secondary-container);
    opacity: 0.9;
}

.asufuru-brand__illustration-ball {
    fill: var(--md-sys-color-surface-container-lowest);
    stroke: var(--md-sys-color-outline);
    stroke-width: 1px;
}

.asufuru-brand__illustration-star {
    fill: var(--md-sys-color-tertiary);
    opacity: 0.88;
}

.asufuru-brand__illustration-star--sm {
    opacity: 0.55;
}

.asufuru-brand__media-caption {
    margin-top: var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

/* --- Evidence（東北・宮城・公表データ）— knowledge/tohoku-sports-population-decline-structural-analysis.md と整合 */
.asufuru-brand__evidence-lead {
    max-width: 65ch;
}

.asufuru-brand__evidence-subhead {
    margin: var(--md-sys-spacing-12) 0 var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-title-large-size);
    line-height: var(--md-sys-typescale-title-large-line-height);
    font-weight: var(--md-sys-typescale-title-large-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__evidence-subhead:first-of-type {
    margin-top: var(--md-sys-spacing-8);
}

.asufuru-brand__sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* --- Infographics（定量データ・スクロール連動） --- */
/* エビデンス内の図は、値カードと同じく l-inner 全幅で積み上げ（2列にすると半幅になり他セクションとずれる） */
#asufuru-brand-evidence .asufuru-brand__ig-demo-grid {
    grid-template-columns: 1fr;
}

.asufuru-brand__ig {
    margin: var(--md-sys-spacing-6) 0 var(--md-sys-spacing-10);
    width: 100%;
    box-sizing: border-box;
}

.asufuru-brand__ig-region-label {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--md-sys-spacing-3);
    margin: 0 0 var(--md-sys-spacing-5);
    font-size: var(--md-sys-typescale-title-medium-size);
    line-height: var(--md-sys-typescale-title-medium-line-height);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__ig-kicker {
    display: inline-flex;
    align-items: center;
    padding: var(--md-sys-spacing-1) var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-label-medium-size);
    line-height: var(--md-sys-typescale-label-medium-line-height);
    font-weight: 700;
    color: var(--md-sys-color-on-primary-container);
    background: var(--md-sys-color-primary-container);
    border-radius: var(--md-sys-shape-corner-full);
}

.asufuru-brand__ig-sr-hint {
    margin: var(--md-sys-spacing-3) 0 0;
}

/* 図1 人口増減率 */
.asufuru-brand__ig-pop-chart {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-4);
}

.asufuru-brand__ig-pop-row {
    display: grid;
    grid-template-columns: minmax(3.5rem, 5rem) minmax(0, 1fr) minmax(4.5rem, 6rem);
    gap: var(--md-sys-spacing-3);
    align-items: center;
}

.asufuru-brand__ig-pop-label {
    font-size: var(--md-sys-typescale-label-large-size);
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__ig-pop-track {
    position: relative;
    height: 14px;
    background: var(--md-sys-color-surface-container-highest);
    border-radius: var(--md-sys-shape-corner-full);
    overflow: hidden;
    border: 1px solid var(--md-sys-color-outline-variant);
}

.asufuru-brand__ig-pop-fill {
    height: 100%;
    width: 0;
    border-radius: var(--md-sys-shape-corner-full);
    background: var(--md-sys-color-primary);
    transition: width 0.88s cubic-bezier(0.2, 0.75, 0.15, 1);
}

.asufuru-brand__ig[data-ig-root].is-ig-active .asufuru-brand__ig-pop-row:nth-child(1) .asufuru-brand__ig-pop-fill {
    transition-delay: 0ms;
}

.asufuru-brand__ig[data-ig-root].is-ig-active .asufuru-brand__ig-pop-row:nth-child(2) .asufuru-brand__ig-pop-fill {
    transition-delay: 90ms;
}

.asufuru-brand__ig[data-ig-root].is-ig-active .asufuru-brand__ig-pop-row:nth-child(3) .asufuru-brand__ig-pop-fill {
    transition-delay: 180ms;
}

.asufuru-brand__ig[data-ig-root].is-ig-active .asufuru-brand__ig-pop-fill {
    width: calc(var(--ig-pop-norm) * 1%);
}

.asufuru-brand__ig-pop-value {
    font-size: var(--md-sys-typescale-title-medium-size);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    color: var(--md-sys-color-primary);
    text-align: right;
}

/* 図2〜4 横棒・パネル */
.asufuru-brand__ig-demo-grid {
    display: grid;
    gap: var(--md-sys-spacing-6);
    width: 100%;
}

.asufuru-brand__ig-panel {
    padding: var(--md-sys-spacing-6);
    background: var(--md-sys-color-surface-container-lowest);
    border: 1px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-large);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-brand__ig-panel--population {
    margin: 0;
}

.asufuru-brand__ig-hbar-chart {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-3);
}

.asufuru-brand__ig-hbar-row {
    display: grid;
    grid-template-columns: minmax(2.75rem, 3.25rem) minmax(0, 1fr) minmax(3.25rem, 4rem);
    gap: var(--md-sys-spacing-2);
    align-items: center;
}

.asufuru-brand__ig-hbar-chart--compact .asufuru-brand__ig-hbar-label {
    font-size: var(--md-sys-typescale-body-small-size);
}

.asufuru-brand__ig-hbar-label {
    font-size: var(--md-sys-typescale-body-medium-size);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-brand__ig-hbar-track {
    position: relative;
    height: 12px;
    background: var(--md-sys-color-surface-container-highest);
    border-radius: var(--md-sys-shape-corner-full);
    overflow: hidden;
    border: 1px solid var(--md-sys-color-outline-variant);
}

.asufuru-brand__ig-hbar-track--emphasis {
    height: 18px;
}

.asufuru-brand__ig-hbar-fill {
    height: 100%;
    width: 0;
    border-radius: var(--md-sys-shape-corner-full);
    transition: width 0.88s cubic-bezier(0.2, 0.75, 0.15, 1);
}

.asufuru-brand__ig-hbar-fill--primary {
    background: var(--md-sys-color-primary);
}

.asufuru-brand__ig-hbar-fill--secondary {
    background: var(--md-sys-color-secondary);
}

.asufuru-brand__ig[data-ig-root].is-ig-active .asufuru-brand__ig-hbar-fill {
    width: calc(var(--ig-pct) * 1%);
}

.asufuru-brand__ig-hbar-num {
    font-size: var(--md-sys-typescale-body-medium-size);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    color: var(--md-sys-color-on-surface);
    text-align: right;
}

.asufuru-brand__ig-num--large {
    font-size: var(--md-sys-typescale-headline-small-size);
    color: var(--md-sys-color-primary);
}

.asufuru-brand__ig-work-chart {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-5);
}

.asufuru-brand__ig-work-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--md-sys-spacing-3);
}

@media (min-width: 600px) {
    .asufuru-brand__ig-work-row {
        grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) auto;
        align-items: center;
        gap: var(--md-sys-spacing-4);
    }
}

.asufuru-brand__ig-work-label {
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__ig-work-value {
    text-align: right;
}

.asufuru-brand__ig-work-note {
    margin: var(--md-sys-spacing-5) 0 0;
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

/* 図2〜3: デスクトップでも1列のまま（全幅＝カードセクションと同じコンテンツ幅） */

@media (prefers-reduced-motion: reduce) {
    .asufuru-brand__ig-pop-fill,
    .asufuru-brand__ig-hbar-fill {
        transition: none;
    }

    .asufuru-brand__ig[data-ig-root] .asufuru-brand__ig-pop-fill {
        width: calc(var(--ig-pop-norm) * 1%);
    }

    .asufuru-brand__ig[data-ig-root] .asufuru-brand__ig-hbar-fill {
        width: calc(var(--ig-pct) * 1%);
    }
}

.asufuru-brand__evidence-points {
    margin: var(--md-sys-spacing-6) 0 var(--md-sys-spacing-8);
    padding-left: var(--md-sys-spacing-6);
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__evidence-points li + li {
    margin-top: var(--md-sys-spacing-4);
}

.asufuru-brand__evidence-source {
    margin: var(--md-sys-spacing-8) 0 0;
    padding: var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
    background: var(--md-sys-color-surface-container);
    border-radius: var(--md-sys-shape-corner-medium);
    border: 1px solid var(--md-sys-color-outline-variant);
}

/* --- Role cards --- */
.asufuru-brand__cards {
    display: grid;
    gap: var(--md-sys-spacing-6);
    margin-top: var(--md-sys-spacing-8);
}

.asufuru-brand__card {
    padding: var(--md-sys-spacing-6);
    background: var(--md-sys-color-surface-container-lowest);
    border: 1px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-large);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-brand__card-title {
    margin: 0 0 var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-title-large-size);
    line-height: var(--md-sys-typescale-title-large-line-height);
    font-weight: var(--md-sys-typescale-title-large-weight);
    color: var(--md-sys-color-primary);
}

.asufuru-brand__card-body {
    margin: 0;
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__note {
    margin: var(--md-sys-spacing-8) 0 0;
    padding: var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    color: var(--md-sys-color-on-secondary-container);
    background: var(--md-sys-color-secondary-container);
    border-radius: var(--md-sys-shape-corner-medium);
    border: 1px solid var(--md-sys-color-outline-variant);
}

/* --- Orgs --- */
.asufuru-brand__orgs-copy {
    max-width: 65ch;
}

.asufuru-brand__orgs-note {
    margin: var(--md-sys-spacing-5) 0 var(--md-sys-spacing-6);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-brand__orgs-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-4);
    align-items: center;
}

/* --- Vision --- */
.asufuru-brand__vision {
    text-align: center;
}

.asufuru-brand__vision-title {
    margin: 0 0 var(--md-sys-spacing-5);
    font-size: var(--md-sys-typescale-headline-small-size);
    line-height: var(--md-sys-typescale-headline-small-line-height);
    font-weight: var(--md-sys-typescale-headline-small-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-brand__vision-quote {
    margin: 0 auto var(--md-sys-spacing-8);
    max-width: min(100%, 40rem);
    padding: var(--md-sys-spacing-5) var(--md-sys-spacing-6);
    text-align: center;
    border: 1px solid var(--md-sys-color-outline-variant);
    border-radius: var(--md-sys-shape-corner-large);
    background: var(--md-sys-color-primary-container);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-brand__vision-quote-text {
    margin: 0;
    font-size: var(--md-sys-typescale-title-large-size);
    line-height: var(--md-sys-typescale-title-large-line-height);
    font-weight: var(--md-sys-typescale-title-large-weight);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-brand__vision-body {
    margin: 0 auto;
    max-width: 65ch;
    text-align: left;
}

.asufuru-brand__vision-paragraph {
    margin: 0;
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

/* --- Closing --- */
.asufuru-brand__closing {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding-top: var(--md-sys-spacing-20);
    padding-bottom: var(--md-sys-spacing-24);
    background: linear-gradient(
        180deg,
        var(--md-sys-color-surface) 0%,
        var(--md-sys-color-primary-container) 100%
    );
}

.asufuru-brand__closing.asufuru-brand__section--ambient > .l-inner {
    position: relative;
    z-index: 1;
}

.asufuru-brand__closing-inner {
    text-align: center;
}

.asufuru-brand__closing-title {
    margin: 0 0 var(--md-sys-spacing-10);
    font-size: var(--md-sys-typescale-display-small-size);
    line-height: var(--md-sys-typescale-display-small-line-height);
    font-weight: var(--md-sys-typescale-display-small-weight);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-brand__closing-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-4);
    justify-content: center;
    align-items: center;
}

/* --- Scroll reveal --- */
.asufuru-brand [data-brand-reveal] {
    opacity: 0;
    transform: translate3d(0, var(--md-sys-spacing-5), 0);
    transition:
        opacity var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard),
        transform var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard);
}

.asufuru-brand [data-brand-reveal].is-revealed {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
    .asufuru-brand [data-brand-reveal] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* --- Responsive --- */
@media (min-width: 992px) {
    .asufuru-brand__story-grid {
        grid-template-columns: 1fr 1fr;
        gap: var(--md-sys-spacing-12);
    }

    .asufuru-brand__media-grid {
        grid-template-columns: 1fr 1fr;
        gap: var(--md-sys-spacing-3);
    }
}

@media (max-width: 767px) {
    .asufuru-brand__hero {
        padding-top: var(--md-sys-spacing-12);
        padding-bottom: var(--md-sys-spacing-12);
    }

    .asufuru-brand__hero-title {
        font-size: var(--md-sys-typescale-headline-large-size);
        line-height: var(--md-sys-typescale-headline-large-line-height);
    }

    .asufuru-brand__section {
        padding-top: var(--md-sys-spacing-10);
        padding-bottom: var(--md-sys-spacing-10);
    }
}

/* ============================================================
   あすふる：掲載のご案内 LP
   ============================================================ */
.asufuru-listing-guide-page {
    /* フローティング CTA と重ならない余白 */
    padding-bottom: var(--md-sys-spacing-24);
}

/* コンテンツ幅は親テーマ .l-inner（max-width: 1160px）に合わせる。SP は全体共通の .l-main .l-inner ガターでヒーローも下層セクションも同じ幅になる。 */

/* --- Scroll reveal --- */
.asufuru-listing-guide [data-listing-reveal] {
    opacity: 0;
    transform: translate3d(0, var(--md-sys-spacing-5), 0);
    transition:
        opacity var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard),
        transform var(--md-sys-motion-duration-long) var(--md-sys-motion-easing-standard);
}

.asufuru-listing-guide [data-listing-reveal].is-revealed {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

/* --- Hero --- */
.asufuru-listing-guide__hero {
    margin-bottom: var(--md-sys-spacing-12);
    padding: var(--md-sys-spacing-10) var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-large);
    background: linear-gradient(
        155deg,
        var(--md-sys-color-primary-container) 0%,
        var(--md-sys-color-surface) 52%,
        var(--md-sys-color-surface-dim) 100%
    );
    box-shadow: var(--md-sys-elevation-2);
}

.asufuru-listing-guide__eyebrow {
    margin: 0 0 var(--md-sys-spacing-2);
    font-size: var(--md-sys-typescale-title-small-size);
    font-weight: var(--md-sys-typescale-title-small-weight);
    letter-spacing: 0.04em;
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-listing-guide__hero-title {
    margin: 0 0 var(--md-sys-spacing-4);
    font-size: var(--md-sys-typescale-headline-medium-size);
    line-height: var(--md-sys-typescale-headline-medium-line-height);
    font-weight: var(--md-sys-typescale-headline-medium-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-guide__hero-lead {
    margin: 0 0 var(--md-sys-spacing-6);
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-listing-guide__hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--md-sys-spacing-3);
    margin-bottom: var(--md-sys-spacing-5);
}

.asufuru-listing-guide__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 var(--md-sys-spacing-6);
    border-radius: var(--md-sys-shape-corner-full);
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    text-decoration: none;
    transition:
        background-color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        box-shadow var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-listing-guide__btn--cta {
    color: var(--md-sys-color-on-tertiary);
    background-color: var(--md-sys-color-tertiary);
    box-shadow: var(--md-sys-elevation-2);
}

.asufuru-listing-guide__btn--cta:hover {
    background-color: var(--md-sys-color-tertiary-hover);
    box-shadow: var(--md-sys-elevation-3);
}

.asufuru-listing-guide__btn--ghost {
    color: var(--md-sys-color-secondary);
    background-color: var(--md-sys-color-surface-container-lowest);
    border: 1px solid var(--md-sys-color-outline);
    box-shadow: var(--md-sys-elevation-0);
}

.asufuru-listing-guide__btn--ghost:hover {
    background-color: var(--md-sys-color-secondary-container);
    border-color: var(--md-sys-color-secondary);
}

.asufuru-listing-guide__hero-legal {
    margin: 0;
    font-size: var(--md-sys-typescale-body-small-size);
    line-height: var(--md-sys-typescale-body-small-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-listing-guide__hero-legal a {
    color: var(--md-sys-color-secondary);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.asufuru-listing-guide__hero-legal a:hover {
    color: var(--md-sys-color-secondary-hover);
}

/* --- Section titles --- */
.asufuru-listing-guide__section-title {
    margin: 0 0 var(--md-sys-spacing-5);
    font-size: var(--md-sys-typescale-headline-small-size);
    line-height: var(--md-sys-typescale-headline-small-line-height);
    font-weight: var(--md-sys-typescale-headline-small-weight);
    color: var(--md-sys-color-on-surface);
}

/* --- Pillars --- */
.asufuru-listing-guide__pillars {
    margin-bottom: var(--md-sys-spacing-12);
}

.asufuru-listing-guide__pillar-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--md-sys-spacing-4);
}

@media (min-width: 768px) {
    .asufuru-listing-guide__pillar-list {
        grid-template-columns: repeat(3, 1fr);
        gap: var(--md-sys-spacing-5);
    }
}

.asufuru-listing-guide__pillar {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-3);
    padding: var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-medium);
    border: 1px solid var(--md-sys-color-outline);
    background-color: var(--md-sys-color-surface-container-lowest);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-listing-guide__pillar-icon {
    width: var(--md-sys-spacing-10);
    height: var(--md-sys-spacing-10);
    border-radius: var(--md-sys-shape-corner-full);
    background-color: var(--md-sys-color-primary-container);
    box-shadow: inset 0 0 0 2px var(--md-sys-color-primary);
}

.asufuru-listing-guide__pillar-icon--flow {
    box-shadow: inset 0 0 0 2px var(--md-sys-color-secondary);
    background-color: var(--md-sys-color-secondary-container);
}

.asufuru-listing-guide__pillar-icon--hand {
    box-shadow: inset 0 0 0 2px var(--md-sys-color-on-primary-container);
}

.asufuru-listing-guide__pillar-title {
    margin: 0;
    font-size: var(--md-sys-typescale-title-large-size);
    line-height: var(--md-sys-typescale-title-large-line-height);
    font-weight: var(--md-sys-typescale-title-large-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-guide__pillar-text {
    margin: 0;
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

/* --- Fee --- */
.asufuru-listing-guide__fee {
    margin-bottom: var(--md-sys-spacing-12);
}

.asufuru-listing-guide__fee-highlight {
    margin-bottom: var(--md-sys-spacing-6);
    padding: var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-medium);
    background-color: var(--md-sys-color-primary-container);
    text-align: center;
}

.asufuru-listing-guide__fee-badge {
    margin: 0 0 var(--md-sys-spacing-2);
    font-size: var(--md-sys-typescale-headline-small-size);
    font-weight: var(--md-sys-typescale-headline-small-weight);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-listing-guide__fee-highlight-text {
    margin: 0;
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-listing-guide__table-wrap {
    overflow-x: auto;
    border-radius: var(--md-sys-shape-corner-medium);
    border: 1px solid var(--md-sys-color-outline);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-listing-guide__table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--md-sys-typescale-body-large-size);
    background-color: var(--md-sys-color-surface-container-lowest);
}

.asufuru-listing-guide__table thead th {
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-5);
    text-align: left;
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-surface);
    background-color: var(--md-sys-color-surface-container-low);
    border-bottom: 1px solid var(--md-sys-color-outline);
}

.asufuru-listing-guide__table tbody th,
.asufuru-listing-guide__table tbody td {
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-5);
    border-bottom: 1px solid var(--md-sys-color-outline-variant);
    vertical-align: top;
}

.asufuru-listing-guide__table tbody th {
    font-weight: var(--md-sys-typescale-title-small-weight);
    color: var(--md-sys-color-on-surface);
    text-align: left;
}

.asufuru-listing-guide__table tbody tr:last-child th,
.asufuru-listing-guide__table tbody tr:last-child td {
    border-bottom: none;
}

.asufuru-listing-guide__table-row--option th,
.asufuru-listing-guide__table-row--option td {
    background-color: var(--md-sys-color-surface-container);
}

.asufuru-listing-guide__fee-free {
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-primary-container);
}

.asufuru-listing-guide__fee-note {
    margin: var(--md-sys-spacing-4) 0 0;
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

/* --- Timeline --- */
.asufuru-listing-guide__flow {
    margin-bottom: var(--md-sys-spacing-12);
}

.asufuru-listing-guide__flow-lead {
    margin: 0 0 var(--md-sys-spacing-8);
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-listing-guide__timeline {
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
}

.asufuru-listing-guide__timeline::before {
    content: '';
    position: absolute;
    left: calc(var(--md-sys-spacing-5) + 11px);
    top: var(--md-sys-spacing-3);
    bottom: var(--md-sys-spacing-3);
    width: 3px;
    border-radius: var(--md-sys-shape-corner-extra-small);
    background: linear-gradient(
        180deg,
        var(--md-sys-color-primary) 0%,
        var(--md-sys-color-secondary) 100%
    );
    opacity: 0.35;
}

.asufuru-listing-guide__step {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: var(--md-sys-spacing-4);
    margin-bottom: var(--md-sys-spacing-6);
    align-items: flex-start;
}

.asufuru-listing-guide__step:last-child {
    margin-bottom: 0;
}

.asufuru-listing-guide__step:nth-child(1) { transition-delay: 0.03s; }
.asufuru-listing-guide__step:nth-child(2) { transition-delay: 0.06s; }
.asufuru-listing-guide__step:nth-child(3) { transition-delay: 0.09s; }
.asufuru-listing-guide__step:nth-child(4) { transition-delay: 0.12s; }
.asufuru-listing-guide__step:nth-child(5) { transition-delay: 0.15s; }
.asufuru-listing-guide__step:nth-child(6) { transition-delay: 0.18s; }

.asufuru-listing-guide__step-marker {
    position: relative;
    z-index: 1;
    width: var(--md-sys-spacing-12);
    display: flex;
    justify-content: center;
}

.asufuru-listing-guide__step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--md-sys-spacing-10);
    height: var(--md-sys-spacing-10);
    border-radius: var(--md-sys-shape-corner-full);
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-primary);
    background-color: var(--md-sys-color-primary);
    box-shadow: var(--md-sys-elevation-2);
}

.asufuru-listing-guide__step-card {
    padding: var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-medium);
    border: 1px solid var(--md-sys-color-outline);
    background-color: var(--md-sys-color-surface-container-lowest);
    box-shadow: var(--md-sys-elevation-1);
}

.asufuru-listing-guide__step-title {
    margin: 0 0 var(--md-sys-spacing-2);
    font-size: var(--md-sys-typescale-title-large-size);
    line-height: var(--md-sys-typescale-title-large-line-height);
    font-weight: var(--md-sys-typescale-title-large-weight);
    color: var(--md-sys-color-on-surface);
}

.asufuru-listing-guide__step-label {
    margin: 0 0 var(--md-sys-spacing-3);
    font-size: var(--md-sys-typescale-label-large-size);
    line-height: var(--md-sys-typescale-label-large-line-height);
    font-weight: var(--md-sys-typescale-label-large-weight);
    color: var(--md-sys-color-secondary);
}

.asufuru-listing-guide__step-list {
    margin: 0;
    padding-left: var(--md-sys-spacing-5);
    color: var(--md-sys-color-on-surface-variant);
    font-size: var(--md-sys-typescale-body-medium-size);
    line-height: var(--md-sys-typescale-body-medium-line-height);
}

.asufuru-listing-guide__step-list li + li {
    margin-top: var(--md-sys-spacing-2);
}

/* --- Bottom CTA --- */
.asufuru-listing-guide__bottom-cta {
    margin-top: var(--md-sys-spacing-12);
    padding: var(--md-sys-spacing-8) var(--md-sys-spacing-5);
    border-radius: var(--md-sys-shape-corner-large);
    background-color: var(--md-sys-color-tertiary-container);
    text-align: center;
}

.asufuru-listing-guide__bottom-cta-text {
    margin: 0 0 var(--md-sys-spacing-5);
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-tertiary-container);
}

.asufuru-listing-guide__bottom-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 0 var(--md-sys-spacing-10);
    border-radius: var(--md-sys-shape-corner-full);
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    text-decoration: none;
    color: var(--md-sys-color-on-tertiary);
    background-color: var(--md-sys-color-tertiary);
    box-shadow: var(--md-sys-elevation-2);
    transition:
        background-color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        box-shadow var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-listing-guide__bottom-cta-btn:hover {
    background-color: var(--md-sys-color-tertiary-hover);
    box-shadow: var(--md-sys-elevation-3);
}

/* --- Floating CTA --- */
.asufuru-listing-guide__fab-wrap {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9998;
    display: flex;
    justify-content: center;
    padding: var(--md-sys-spacing-4);
    padding-bottom: max(var(--md-sys-spacing-4), env(safe-area-inset-bottom, 0px));
    pointer-events: none;
    opacity: 0;
    transform: translate3d(0, 110%, 0);
    transition:
        opacity var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-standard),
        transform var(--md-sys-motion-duration-medium) var(--md-sys-motion-easing-emphasized);
}

.asufuru-listing-guide__fab-wrap.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    pointer-events: auto;
}

.asufuru-listing-guide__fab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    min-width: min(100%, 320px);
    padding: 0 var(--md-sys-spacing-8);
    border-radius: var(--md-sys-shape-corner-full);
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    text-decoration: none;
    color: var(--md-sys-color-on-tertiary);
    background-color: var(--md-sys-color-tertiary);
    box-shadow: var(--md-sys-elevation-4);
}

.asufuru-listing-guide__fab:hover {
    background-color: var(--md-sys-color-tertiary-hover);
}

/* --- FAQ --- */
.asufuru-listing-guide-faq {
    margin-top: var(--md-sys-spacing-12);
}

.asufuru-listing-guide-faq__main-title {
    font-size: var(--md-sys-typescale-headline-small-size);
    line-height: var(--md-sys-typescale-headline-small-line-height);
    font-weight: var(--md-sys-typescale-headline-small-weight);
    color: var(--md-sys-color-on-surface);
    margin: 0 0 var(--md-sys-spacing-5);
    padding-bottom: var(--md-sys-spacing-2);
    border-bottom: 2px solid var(--md-sys-color-primary-container);
}

.asufuru-listing-guide-faq__group {
    margin-top: var(--md-sys-spacing-8);
}

.asufuru-listing-guide-faq__group:first-of-type {
    margin-top: var(--md-sys-spacing-6);
}

.asufuru-listing-guide-faq__cat-title {
    font-size: var(--md-sys-typescale-title-large-size);
    line-height: var(--md-sys-typescale-title-large-line-height);
    font-weight: var(--md-sys-typescale-title-large-weight);
    color: var(--md-sys-color-on-primary-container);
    margin: 0 0 var(--md-sys-spacing-5);
}

.asufuru-listing-guide-faq__list {
    display: flex;
    flex-direction: column;
    gap: var(--md-sys-spacing-3);
}

.asufuru-listing-guide-faq__item {
    border: 1px solid var(--md-sys-color-outline);
    border-radius: var(--md-sys-shape-corner-medium);
    background-color: var(--md-sys-color-surface-container-lowest);
    box-shadow: var(--md-sys-elevation-1);
    overflow: hidden;
}

.asufuru-listing-guide-faq__item[open] {
    box-shadow: var(--md-sys-elevation-2);
}

.asufuru-listing-guide-faq__q {
    list-style: none;
    cursor: pointer;
    font-size: var(--md-sys-typescale-title-medium-size);
    line-height: var(--md-sys-typescale-title-medium-line-height);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    color: var(--md-sys-color-on-surface);
    padding: var(--md-sys-spacing-4) var(--md-sys-spacing-5);
    padding-right: var(--md-sys-spacing-10);
    position: relative;
}

.asufuru-listing-guide-faq__q::-webkit-details-marker {
    display: none;
}

.asufuru-listing-guide-faq__q::after {
    content: '';
    position: absolute;
    right: var(--md-sys-spacing-5);
    top: 50%;
    width: var(--md-sys-spacing-2);
    height: var(--md-sys-spacing-2);
    border-right: 2px solid var(--md-sys-color-primary);
    border-bottom: 2px solid var(--md-sys-color-primary);
    transform: translateY(-65%) rotate(45deg);
    transition: transform var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-listing-guide-faq__item[open] .asufuru-listing-guide-faq__q::after {
    transform: translateY(-25%) rotate(-135deg);
}

.asufuru-listing-guide-faq__a {
    padding: 0 var(--md-sys-spacing-5) var(--md-sys-spacing-5);
    border-top: 1px solid var(--md-sys-color-outline-variant);
}

.asufuru-listing-guide-faq__a p {
    margin: var(--md-sys-spacing-4) 0 0;
    font-size: var(--md-sys-typescale-body-large-size);
    line-height: var(--md-sys-typescale-body-large-line-height);
    color: var(--md-sys-color-on-surface-variant);
}

.asufuru-listing-guide-faq__footer-cta {
    margin-top: var(--md-sys-spacing-12);
    display: flex;
    justify-content: center;
}

.asufuru-listing-guide-faq__cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 var(--md-sys-spacing-8);
    border-radius: var(--md-sys-shape-corner-full);
    font-size: var(--md-sys-typescale-title-medium-size);
    font-weight: var(--md-sys-typescale-title-medium-weight);
    text-decoration: none;
    color: var(--md-sys-color-on-tertiary);
    background-color: var(--md-sys-color-tertiary);
    box-shadow: var(--md-sys-elevation-2);
    transition:
        background-color var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard),
        box-shadow var(--md-sys-motion-duration-short) var(--md-sys-motion-easing-standard);
}

.asufuru-listing-guide-faq__cta-btn:hover {
    background-color: var(--md-sys-color-tertiary-hover);
    box-shadow: var(--md-sys-elevation-3);
}

@media (prefers-reduced-motion: reduce) {
    .asufuru-listing-guide [data-listing-reveal] {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .asufuru-listing-guide__fab-wrap {
        transition: none;
    }

    .asufuru-listing-guide-faq__q::after {
        transition: none;
    }
}

/* 地図テンプレート：モバイルで親 .l-inner の幅制限に加え、共通ガター（361行付近の margin-left/right）を打ち消して全幅に */
@media (max-width: 767px) {
    body.asufuru-page-map-switch .l-container__inner.l-inner,
    body.page-template-page-asufuru-map-switch-php .l-container__inner.l-inner,
    body.page-template-page-asufuru-map-switch .l-container__inner.l-inner {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    /* 地図ブロック内の .l-inner のみ：SP 共通ガターを解除（ランキング内 .l-inner は対象外） */
    body.asufuru-page-map-switch #map-switch-section .l-inner,
    body.page-template-page-asufuru-map-switch-php #map-switch-section .l-inner,
    body.page-template-page-asufuru-map-switch #map-switch-section .l-inner {
        margin-left: 0 !important;
        margin-right: 0 !important;
        width: 100% !important;
        max-width: none !important;
    }
}

/* 地図ページ：地図下の周辺ランキング（トップのランキング UI と同一クラスを利用） */
/* 地図ブロックとの距離・帯背景・罫線（トップ .asufuru-fp-stripe と整合）— 背景・上下罫線はビューポート全幅（PC は vw ブレイクアウト／モバイルは親全幅化に合わせ 100%） */
#asufuru-map-nearby-rankings.asufuru-map-nearby-rankings {
    margin-top: var(--md-sys-spacing-16);
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    width: 100vw;
    max-width: 100vw;
    padding-top: var(--md-sys-spacing-12);
    padding-bottom: var(--md-sys-spacing-12);
    padding-left: 0;
    padding-right: 0;
    border-top: 1px solid var(--md-sys-color-outline);
    border-bottom: 1px solid var(--md-sys-color-outline);
    background-color: var(--asufuru-fp-stripe-b);
    box-sizing: border-box;
}

@media (max-width: 767px) {
    body.asufuru-page-map-switch #asufuru-map-nearby-rankings.asufuru-map-nearby-rankings {
        margin-left: 0 !important;
        margin-right: 0 !important;
        width: 100% !important;
        max-width: none !important;
    }

    /* 親を全幅にしたうえで、子のランキング行が二重に 100vw しないよう上書き（トップと同ルールの打ち消し） */
    body.asufuru-page-map-switch #asufuru-map-nearby-rankings .asufuru-search-ranking-wrapper {
        width: 100% !important;
        max-width: none !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }
}

#asufuru-map-nearby-rankings .asufuru-search-ranking-wrapper {
    background-color: transparent !important;
}

#asufuru-map-nearby-rankings .asufuru-map-nearby-ranking-block:first-of-type {
    padding-top: 0 !important;
}

#asufuru-map-nearby-rankings .asufuru-map-nearby-ranking-block + .asufuru-map-nearby-ranking-block {
    margin-top: var(--md-sys-spacing-12);
    padding-top: var(--md-sys-spacing-12);
    border-top: 1px solid var(--md-sys-color-outline);
}

@media (max-width: 991px) {
    #asufuru-map-nearby-rankings.asufuru-map-nearby-rankings {
        margin-top: var(--md-sys-spacing-12);
        padding-top: var(--md-sys-spacing-10);
        padding-bottom: var(--md-sys-spacing-10);
    }

    #asufuru-map-nearby-rankings .asufuru-map-nearby-ranking-block + .asufuru-map-nearby-ranking-block {
        margin-top: var(--md-sys-spacing-10);
        padding-top: var(--md-sys-spacing-10);
    }
}

.asufuru-map-nearby-ranking-block__empty {
    margin: 0;
    color: var(--md-sys-color-on-surface-variant);
    font-weight: 700;
    font-size: var(--md-sys-typescale-body-medium-size);
}