/**
 * bibikusu-cms 映え強化スタイル（追加レイヤー）
 *
 * 既存 frontend.css・テーマプリセットは無改変。ここは追加クラスのみ。
 * 各色は世界観プリセットの CSS 変数 (--bcms-*) を尊重し、未定義時のフォールバックを持つ。
 */

:root {
    --bcms-accent: var(--bcms-primary, #c89b6a);
    --bcms-card-radius: 14px;
    --bcms-card-shadow: 0 6px 20px rgba(0, 0, 0, .08);
    --bcms-card-shadow-hover: 0 12px 30px rgba(0, 0, 0, .16);
}

/* ===== 共通カードグリッド ===== */
.bibikusu-cast-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 16px;
}
.bibikusu-cast-card {
    background: #fff;
    border-radius: var(--bcms-card-radius);
    overflow: hidden;
    box-shadow: var(--bcms-card-shadow);
    transition: transform .25s ease, box-shadow .25s ease;
}
.bibikusu-cast-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--bcms-card-shadow-hover);
}
.bibikusu-cast-card a {
    display: block;
    text-decoration: none;
    color: inherit;
}
.bibikusu-cast-card img {
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    display: block;
}
.bibikusu-cast-card .title {
    padding: 10px 12px 2px;
    font-weight: 700;
}
.bibikusu-cast-card .age {
    padding: 0 12px 12px;
    font-size: .85em;
    color: #888;
}

/* ===== ランキング ===== */
.bibikusu-ranking-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 16px;
}
.bibikusu-ranking-item {
    position: relative;
    background: #fff;
    border-radius: var(--bcms-card-radius);
    overflow: hidden;
    box-shadow: var(--bcms-card-shadow);
    transition: transform .25s ease, box-shadow .25s ease;
}
.bibikusu-ranking-item:hover {
    transform: translateY(-4px);
    box-shadow: var(--bcms-card-shadow-hover);
}
.bibikusu-ranking-item a {
    display: block;
    text-decoration: none;
    color: inherit;
}
.bibikusu-ranking-item img {
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    display: block;
}
.bibikusu-ranking-item .name {
    display: block;
    padding: 10px 12px;
    font-weight: 700;
}
.bibikusu-ranking-item .rank-badge {
    position: absolute;
    top: 8px;
    left: 8px;
    z-index: 2;
    width: 34px;
    height: 34px;
    line-height: 34px;
    text-align: center;
    border-radius: 50%;
    font-weight: 700;
    color: #fff;
    background: rgba(60, 60, 60, .8);
}
.bibikusu-ranking-item.rank-1 .rank-badge { background: linear-gradient(135deg, #f7d774, #d4af37); color: #5a4a14; }
.bibikusu-ranking-item.rank-2 .rank-badge { background: linear-gradient(135deg, #e6e6e6, #b8b8b8); color: #444; }
.bibikusu-ranking-item.rank-3 .rank-badge { background: linear-gradient(135deg, #e7b98c, #c87f49); color: #5a3617; }

/* ===== 料金表 ===== */
.bibikusu-pricing {
    margin: 1.5rem 0;
}
.bibikusu-pricing-block { margin-bottom: 1.5rem; }
.bibikusu-pricing-block h2 {
    border-left: 5px solid var(--bcms-accent);
    padding-left: 10px;
    margin-bottom: .6rem;
}
.bibikusu-pricing-table {
    width: 100%;
    border-collapse: collapse;
}
.bibikusu-pricing-table th,
.bibikusu-pricing-table td {
    padding: 12px 14px;
    border-bottom: 1px solid #eee;
    text-align: left;
}
.bibikusu-pricing-table thead th {
    background: rgba(0, 0, 0, .03);
    font-size: .9em;
}
.bibikusu-pricing-table td:last-child {
    text-align: right;
    font-weight: 700;
    white-space: nowrap;
}
.bibikusu-pricing-table small { color: #999; font-weight: 400; }
.bibikusu-pricing-notes {
    font-size: .9em;
    color: #777;
    background: rgba(0, 0, 0, .03);
    padding: 12px 14px;
    border-radius: 8px;
}

/* ===== 特集 ===== */
.bibikusu-feature-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 20px;
}
.bibikusu-feature-card {
    background: #fff;
    border-radius: var(--bcms-card-radius);
    overflow: hidden;
    box-shadow: var(--bcms-card-shadow);
    transition: transform .25s ease, box-shadow .25s ease;
}
.bibikusu-feature-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--bcms-card-shadow-hover);
}
.bibikusu-feature-card a { text-decoration: none; color: inherit; display: block; }
.bibikusu-feature-card img {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    display: block;
}
.bibikusu-feature-card .title { padding: 12px 14px 4px; font-weight: 700; }
.bibikusu-feature-card .lead { padding: 0 14px 14px; color: #777; font-size: .9em; }

.bibikusu-feature-hero,
.bibikusu-area-hero {
    background-size: cover;
    background-position: center;
    color: #fff;
    padding: 64px 24px;
    text-align: center;
    border-radius: var(--bcms-card-radius);
    margin-bottom: 1.5rem;
}
.bibikusu-feature-title,
.bibikusu-area-title { margin: 0 0 .4rem; font-size: clamp(1.6rem, 4vw, 2.6rem); }
.bibikusu-feature-lead,
.bibikusu-area-lead { margin: 0; opacity: .92; }

/* ===== 即姫・出勤の軽い装飾（既存構造を壊さない範囲で） ===== */
.bibikusu-machihime-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 12px;
}
.bibikusu-machihime-list img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 10px;
}

/* ===== 固定CTAバー・店舗情報・問い合わせフォーム（A05-SITE1-SHOPINFO-CTA-001） =====
 * テーマ非依存。色は --bcms-* 変数（業態プロファイル供給）。
 */
body.has-bibikusu-cta { padding-bottom: 4.5rem; }
.bibikusu-cta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9990; background: #fff; border-top: 1px solid rgba(0,0,0,.08); box-shadow: 0 -2px 10px rgba(0,0,0,.08); font-family: var(--bcms-font-family, sans-serif); padding-bottom: env(safe-area-inset-bottom); }
.bibikusu-cta__hours { text-align: center; font-size: .75rem; color: #555; padding: .2rem .5rem 0; }
.bibikusu-cta__buttons { display: flex; gap: .4rem; padding: .4rem .5rem .5rem; max-width: 720px; margin: 0 auto; }
.bibikusu-cta__btn { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 48px; padding: .35rem .5rem; border-radius: 8px; text-decoration: none; color: #fff; background: var(--bcms-primary, #333); line-height: 1.2; }
.bibikusu-cta__btn--line { background: #06c755; }
.bibikusu-cta__btn--contact { background: #fff; color: var(--bcms-primary, #333); box-shadow: inset 0 0 0 2px var(--bcms-primary, #333); } /* 薄色 accent＋白文字は読めないため、白地＋primary 文字・枠（AA） */
.bibikusu-cta__label { font-size: .7rem; opacity: .9; }
.bibikusu-cta__value { font-size: .95rem; font-weight: bold; }
@media (min-width: 768px) {
    .bibikusu-cta__hours { font-size: .85rem; }
    .bibikusu-cta__value { font-size: 1.05rem; }
}
.bibikusu-shop-info { display: grid; grid-template-columns: 6rem 1fr; gap: .35rem 1rem; margin: 1rem 0; }
.bibikusu-shop-info dt { font-weight: bold; color: #444; } /* secondary は薄色テーマで 1.1:1 になるため固定（AA） */
.bibikusu-shop-info dd { margin: 0; }
.bibikusu-shop-info--footer { font-size: .85rem; grid-template-columns: 5rem 1fr; }
.bibikusu-site-footer { max-width: 960px; margin: 2rem auto 0; padding: 1rem 1.5rem; border-top: 1px solid #eee; }
.bibikusu-access-note { white-space: normal; line-height: 1.8; margin: 1rem 0; }
.bibikusu-contact-form { max-width: 600px; margin: 1rem 0; }
.bibikusu-contact-form label { font-weight: bold; }
.bibikusu-contact-form .req { color: #c00; }
.bibikusu-contact-form input[type="text"], .bibikusu-contact-form input[type="email"], .bibikusu-contact-form input[type="tel"], .bibikusu-contact-form textarea { width: 100%; padding: .6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 1rem; }
.bibikusu-contact-form__submit { background: var(--bcms-primary, #333); color: #fff; padding: .8rem 1.5rem; border: none; border-radius: 4px; cursor: pointer; min-height: 44px; }
.bibikusu-contact-form .form-message { padding: .75rem; margin-top: .75rem; border-radius: 4px; }
.bibikusu-contact-form .form-message.success { background: #e8f5e9; color: #1b5e20; }
.bibikusu-contact-form .form-message.error { background: #fdecea; color: #b71c1c; }

/* ===== 週間出勤（A05-SITE1-SCHEDULE-ADMIN-001） ===== */
.bibikusu-week-schedule { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 1rem 0; }
.bibikusu-schedule--week { min-width: 640px; }
.bibikusu-schedule--week th, .bibikusu-schedule--week td { white-space: nowrap; text-align: center; font-size: .9rem; }
.bibikusu-schedule--week tbody th { text-align: left; }
.bibikusu-schedule--week .off { color: #bbb; }
.bibikusu-cast-week { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: .5rem; }
.bibikusu-cast-week li { border: 1px solid #eee; border-radius: 6px; padding: .5rem; text-align: center; }
.bibikusu-cast-week li.on { border-color: var(--bcms-accent, #c9a253); }
.bibikusu-cast-week .day { display: block; font-size: .8rem; color: #666; }
.bibikusu-cast-week .time { display: block; font-weight: bold; }
.bibikusu-cast-week li.off .time { color: #bbb; font-weight: normal; }
.bibikusu-cast-week .note { display: block; font-size: .75rem; color: #888; }

/* ===== 場所別追加料金（A05-SITE1-PRICING-FEE-001） ===== */
.bibikusu-pricing-placeholder { background: #fff3cd; color: #7a5a00; padding: .5rem .75rem; border-radius: 4px; font-size: .85rem; }
.bibikusu-place-fee section { margin: 1rem 0; }
.bibikusu-place-fee h3 { margin: .5rem 0 .25rem; }
.bibikusu-place-fee .sub { font-size: .85rem; color: #666; margin: 0 0 .5rem; }
.bibikusu-place-fee .base { font-size: 1.05rem; }
.bibikusu-pricing-table td.fee { text-align: right; white-space: nowrap; font-weight: bold; }
.bibikusu-area-fee { max-width: 960px; margin: 1rem auto; padding: 1rem 1.5rem; background: #fafafa; border-radius: 8px; }
.bibikusu-area-fee__value { font-size: 1.2rem; margin: .25rem 0; }
.bibikusu-area-fee .ph { color: #7a5a00; font-size: .85rem; }

/* ===== 年齢認証・法令ブロック（A05-SITE1-LEGAL-001） ===== */
.bibikusu-age-gate { position: fixed; inset: 0; z-index: 99999; background: rgba(20,20,20,.92); display: flex; align-items: center; justify-content: center; padding: 1rem; font-family: var(--bcms-font-family, sans-serif); }
.bibikusu-age-gate[hidden] { display: none; }
html.bibikusu-age-gate-open { overflow: hidden; }
.bibikusu-age-gate__box { background: #fff; color: #222; max-width: 420px; width: 100%; border-radius: 12px; padding: 1.5rem 1.25rem; text-align: center; }
.bibikusu-age-gate__site { font-size: .85rem; color: #666; margin: 0 0 .5rem; }
.bibikusu-age-gate h2 { font-size: 1.15rem; margin: 0 0 .75rem; }
.bibikusu-age-gate__buttons { display: flex; flex-direction: column; gap: .6rem; margin-top: 1rem; }
.bibikusu-age-gate__enter { background: var(--bcms-primary, #333); color: #fff; border: none; border-radius: 8px; min-height: 48px; font-size: 1rem; cursor: pointer; }
.bibikusu-age-gate__exit { color: #666; font-size: .9rem; text-decoration: underline; min-height: 44px; display: flex; align-items: center; justify-content: center; }
.bibikusu-legal { max-width: 960px; margin: .5rem auto 0; padding: .75rem 1.5rem 1.25rem; font-size: .8rem; color: #666; text-align: center; }
.bibikusu-legal p { margin: .25rem 0; }

/* A05-SITE1-SEARCH-DISCOVERABILITY-001: 料金の自然文・キャスト詳細の戻り導線 */
.bibikusu-place-fee__sentence { margin: .25rem 0 .5rem; }
.bibikusu-cast-nav { margin: 1.5rem 0; }
.bibikusu-cast-nav ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.bibikusu-cast-nav a { display: inline-block; padding: .5rem .9rem; border: 1px solid var(--bcms-accent, #ccc); border-radius: 999px; text-decoration: none; }

/* SP で料金表の金額セルがはみ出さないように（A05-SITE1-SEARCH-DISCOVERABILITY-001） */
.bibikusu-pricing-table { width: 100%; max-width: 100%; table-layout: fixed; border-collapse: collapse; }
.bibikusu-pricing-table td, .bibikusu-pricing-table th { overflow-wrap: anywhere; word-break: break-word; }
.bibikusu-pricing-table td.fee { white-space: nowrap; width: 5.5em; text-align: right; }
.bibikusu-pricing-block, .bibikusu-place-fee section { max-width: 100%; overflow-x: auto; }

/* ===== ランクバッジ・絞り込み・詳細追加欄（A05-PL-3-2A） ===== */
.bibikusu-cast-card a { position: relative; }
.bibikusu-rank-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 999px;
    background: var(--bcms-primary, #0d0d0d);
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .05em;
    line-height: 1.5;
}
.bibikusu-cast-card .bibikusu-rank-badge { position: absolute; top: 8px; left: 8px; }
.bibikusu-cast-page .hero .bibikusu-rank-badge { margin: .25rem 0; }
.bibikusu-cast-filter { margin: 0 0 1.25rem; }
.bibikusu-cast-filter p { margin: 0 0 .5rem; }
.bibikusu-cast-filter__group { list-style: none; padding: 0; margin: 0 0 .5rem; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.bibikusu-cast-filter__label { font-size: .85rem; font-weight: 700; color: #555; min-width: 5em; }
.bibikusu-cast-filter a { display: inline-block; padding: .35rem .8rem; border: 1px solid var(--bcms-accent, #ccc); border-radius: 999px; text-decoration: none; color: inherit; }
.bibikusu-cast-filter a[aria-current="true"] { background: var(--bcms-primary, #0d0d0d); color: #fff; }
.bibikusu-cast-empty { text-align: center; padding: 2rem 0; color: #666; }
.bibikusu-cast-page .profile-extra dl,
.bibikusu-cast-page .profile-qa dl { display: grid; grid-template-columns: 8rem 1fr; gap: .5rem 1rem; }
.bibikusu-cast-page .profile-extra dt,
.bibikusu-cast-page .profile-qa dt { font-weight: bold; color: #555; }
.bibikusu-cast-page .profile-extra dd,
.bibikusu-cast-page .profile-qa dd { margin: 0; }
.bibikusu-cast-options { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.bibikusu-cast-options a { display: inline-block; padding: .15rem .6rem; border: 1px solid var(--bcms-accent, #ccc); border-radius: 999px; text-decoration: none; color: inherit; font-size: .9rem; }
@media (max-width: 600px) {
    .bibikusu-cast-page .profile-qa dl { grid-template-columns: 1fr; gap: .15rem; }
    .bibikusu-cast-page .profile-qa dd { margin-bottom: .6rem; }
}

.bibikusu-cast-pager { margin: 1.5rem 0; }
.bibikusu-cast-pager ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; }
.bibikusu-cast-pager a,
.bibikusu-cast-pager span[aria-current] { display: inline-block; min-width: 2.2rem; padding: .35rem .7rem; border: 1px solid var(--bcms-accent, #ccc); border-radius: 999px; text-align: center; text-decoration: none; color: inherit; }
.bibikusu-cast-pager span[aria-current] { background: var(--bcms-primary, #0d0d0d); color: #fff; }

/* A05-PL-3-3B-001 即姫: ランク・年齢/身長/カップ・案内開始 */
.bibikusu-machihime-list .profile,
.bibikusu-machihime-list .since { display: block; font-size: .75rem; color: #444; }

/* A05-PL-3-7-001 特割クーポン */
.bibikusu-coupons { display: grid; gap: 12px; }
.bibikusu-coupon { border: 2px solid var(--bcms-primary, #8c3b52); border-radius: 8px; padding: 12px; background: #fff; }
.bibikusu-coupon .coupon-title { margin: 0 0 .4rem; }
.bibikusu-coupon .coupon-price { font-weight: bold; margin: 0 0 .4rem; }
.bibikusu-coupon .coupon-meta { margin: 0; display: grid; grid-template-columns: max-content 1fr; gap: 2px 12px; font-size: .9rem; }
.bibikusu-coupon .coupon-meta dd { margin: 0; }

/* A05-PL-3-8-001 ホテルリスト・出張エリア */
.bibikusu-hotels ul { list-style: none; margin: 0 0 1rem; padding: 0; }
.bibikusu-hotels li { padding: .4rem 0; border-bottom: 1px solid #e5e5e5; }
.bibikusu-hotels .hotel-name { font-weight: bold; }
.bibikusu-hotels .hotel-tel { display: inline-block; min-height: 44px; line-height: 44px; }
.bibikusu-dispatch-areas ul { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.bibikusu-dispatch-areas li { border: 0; padding: 0; }

/* A05-PL-3-9-001 ランキング基準文 */
.bibikusu-ranking-basis { margin: .6rem 0 0; font-size: .85rem; color: #444; }

/* A05-PL-3-2B-001 キャスト写真ギャラリー */
.bibikusu-cast-gallery ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
.bibikusu-cast-gallery img { width: 100%; height: auto; display: block; border-radius: 4px; }
