/*
Theme Name: Ultimate Premium Flight Awards Luxury V28
Description: カレンダー検索を「検索ボタン押下→ローディング→結果表示」方式に刷新し自動表示・カウント不整合を解消。月選択ドロップダウン、PC時ホバー/モバイル時タップでの運行会社一覧表示、詳細検索への日程幅・キャリア・アライアンス引き継ぎを追加。往復カードの往路/復路表示をバッジ+アイコン化。SEO/AIO対策としてOGP/Twitter Card/canonical/meta descriptionとJSON-LD（Organization/WebSite/TravelAgency/BreadcrumbList/FAQPage）を実装し、汎用page.phpテンプレートを追加
Version: 31.0
Author: WP Developer
*/

@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700&family=Montserrat:wght@300;400;500;600;700;800&family=Noto+Sans+JP:wght@300;400;500;600;700&display=swap');

:root {
    --bg-color: #F7F8FA;
    --card-bg: #FFFFFF;
    --text-main: #10151F;
    --text-muted: #6B7280;
    --text-soft: #9CA3AF;

    --accent-gold: #B38E44;
    --accent-gold-light: #D4B571;
    --accent-gold-soft: #FBF8F2;
    --accent-gold-deep: #8C6B2E;

    --accent-navy: #0B1729;
    --accent-navy-soft: #16283F;
    --accent-navy-mist: #EEF1F5;

    --border-light: #E6E8EC;
    --border-subtle: #F1F2F4;

    --economy-class: #86EFAC;
    --economy-bg: #F0FDF4;
    --business-class: #2563EB;
    --business-bg: #EFF6FF;
    --first-class: #DC2626;
    --first-bg: #FEF2F2;

    --prob-high: #15803D;
    --prob-mid: #B45309;
    --prob-low: #6B7280;

    --font-sans: 'Montserrat', 'Noto Sans JP', -apple-system, BlinkMacSystemFont, sans-serif;
    --font-serif: 'Cinzel', 'Noto Serif JP', serif;

    --shadow-soft: 0 4px 20px rgba(11, 23, 41, 0.05);
    --shadow-lift: 0 16px 40px rgba(11, 23, 41, 0.10);
    --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

* { box-sizing: border-box; }

body {
    font-family: var(--font-sans);
    background:
        radial-gradient(1100px 460px at 50% -180px, rgba(179, 142, 68, 0.07), transparent 60%),
        var(--bg-color);
    color: var(--text-main);
    margin: 0;
    padding: 0;
    -webkit-font-smoothing: antialiased;
    line-height: 1.65;
    word-break: break-word;
    letter-spacing: -0.01em;
}
.container { max-width: 1180px; margin: 0 auto; padding: 32px 18px; box-sizing: border-box; }
@media (min-width: 768px) { .container { padding: 64px 24px; } }
::selection { background: var(--accent-gold-light); color: var(--accent-navy); }

/* -------------------------------------------
   SITE HEADER
------------------------------------------- */
.site-header {
    position: sticky; top: 0; z-index: 500;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: saturate(180%) blur(14px);
    -webkit-backdrop-filter: saturate(180%) blur(14px);
    border-bottom: 1px solid var(--border-light);
}
.site-header-inner { max-width: 1180px; margin: 0 auto; padding: 16px 20px; display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.site-logo { text-decoration: none; color: var(--accent-navy); font-family: var(--font-serif); font-size: 1.28rem; letter-spacing: 0.09em; font-weight: 700; display: flex; align-items: baseline; gap: 8px; white-space: nowrap; }
.site-logo .logo-div { color: var(--accent-gold); font-size: 1rem; font-weight: 400; }
.site-logo .logo-sub { font-family: var(--font-sans); font-size: 0.72rem; letter-spacing: 0.22em; font-weight: 700; color: var(--text-muted); }

.site-nav { display: flex; gap: 6px; align-items: center; }
.site-nav a { text-decoration: none; color: var(--text-main); font-size: 0.83rem; font-weight: 600; letter-spacing: 0.02em; padding: 9px 14px; border-radius: 20px; transition: background 0.2s var(--ease), color 0.2s var(--ease); white-space: nowrap; }
.site-nav a:hover { background: var(--accent-navy-mist); }
.site-nav a.nav-cta { color: #fff; background: linear-gradient(135deg, var(--accent-gold-light), var(--accent-gold-deep)); padding: 9px 18px; box-shadow: 0 6px 16px rgba(179, 142, 68, 0.30); }
.site-nav a.nav-cta:hover { filter: brightness(1.05); box-shadow: 0 8px 22px rgba(179, 142, 68, 0.4); }
.site-nav a.nav-cta--amex { background: linear-gradient(135deg, #2A3D5A, var(--accent-navy)); box-shadow: 0 6px 16px rgba(11, 23, 41, 0.30); }
.site-nav a.nav-cta--amex:hover { filter: brightness(1.15); box-shadow: 0 8px 22px rgba(11, 23, 41, 0.4); }

.nav-toggle { display: none; flex-direction: column; justify-content: center; gap: 5px; width: 38px; height: 38px; background: none; border: 1px solid var(--border-light); border-radius: 8px; cursor: pointer; }
.nav-toggle span { display: block; width: 18px; height: 2px; background: var(--accent-navy); margin: 0 auto; transition: all 0.25s var(--ease); }
.nav-toggle.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.open span:nth-child(2) { opacity: 0; }
.nav-toggle.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 860px) {
    .nav-toggle { display: flex; }
    .site-nav { position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; align-items: stretch; background: #fff; border-bottom: 1px solid var(--border-light); box-shadow: var(--shadow-soft); padding: 10px 16px 18px; gap: 4px; display: none; }
    .site-nav.open { display: flex; }
    .site-nav a { padding: 12px 14px; border-radius: 8px; }
    .site-nav a.nav-cta { text-align: center; margin-top: 6px; }
    .site-header-inner { position: relative; }
}

/* Headers */
.page-header { text-align: center; margin-bottom: 40px; }
.page-header .eyebrow { display: inline-block; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.28em; text-transform: uppercase; color: var(--accent-gold-deep); margin-bottom: 14px; }
.page-header h1 { font-family: var(--font-serif); font-size: 2rem; letter-spacing: 0.1em; margin-bottom: 14px; color: var(--accent-navy); font-weight: 600; text-transform: uppercase; }
.page-header h1::after { content: ''; display: block; width: 56px; height: 2px; margin: 16px auto 0; background: linear-gradient(90deg, transparent, var(--accent-gold), transparent); }
.page-header p { color: var(--text-muted); font-size: 0.92rem; max-width: 640px; margin: 0 auto; line-height: 1.85; letter-spacing: 0.02em; font-weight: 400; }
@media (min-width: 768px) { .page-header h1 { font-size: 2.65rem; } .page-header p { font-size: 1rem; } }

/* Hero (front page) */
.hero-panel { position: relative; text-align: center; padding: 56px 20px 60px; border-radius: 18px; overflow: hidden; background: radial-gradient(720px 320px at 50% 0%, rgba(179, 142, 68, 0.16), transparent 65%), linear-gradient(180deg, var(--accent-navy) 0%, var(--accent-navy-soft) 100%); color: #fff; box-shadow: var(--shadow-lift); }
.hero-panel.hero-panel--photo { background-size: cover; background-position: center; }
.hero-panel::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.05) 1px, transparent 1px); background-size: 42px 42px; mask-image: radial-gradient(circle at 50% 30%, black, transparent 75%); opacity: 0.5; }
.hero-panel > * { position: relative; z-index: 1; }
.hero-panel .eyebrow { color: var(--accent-gold-light); }
.hero-panel h1 { font-family: var(--font-serif); font-size: 2.1rem; letter-spacing: 0.09em; margin: 0 0 18px; font-weight: 600; text-transform: uppercase; color: #fff; }
.hero-panel h1::after { background: linear-gradient(90deg, transparent, var(--accent-gold-light), transparent); }
.hero-panel p { color: rgba(255,255,255,0.72); font-size: 0.95rem; max-width: 600px; margin: 0 auto; line-height: 1.85; }
@media (min-width: 768px) { .hero-panel { padding: 84px 40px 90px; } .hero-panel h1 { font-size: 2.9rem; } .hero-panel p { font-size: 1.02rem; } }

.hero-actions { display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; margin-top: 36px; }
.hero-actions .btn-search, .hero-actions .btn-reset { text-decoration: none; }
.hero-actions .btn-reset { background: rgba(255,255,255,0.06); color: #fff; border-color: rgba(255,255,255,0.28); }
.hero-actions .btn-reset:hover { background: rgba(255,255,255,0.14); color: #fff; }

.hero-stats { display: flex; justify-content: center; gap: 32px; margin-top: 44px; flex-wrap: wrap; }
.hero-stat { text-align: center; }
.hero-stat strong { display: block; font-family: var(--font-serif); font-size: 1.5rem; color: var(--accent-gold-light); letter-spacing: 0.03em; }
.hero-stat span { display: block; font-size: 0.72rem; color: rgba(255,255,255,0.6); letter-spacing: 0.08em; text-transform: uppercase; margin-top: 4px; }

/* Buttons */
.btn-primary { display: inline-block; background: var(--accent-navy); color: #fff; padding: 14px 34px; text-decoration: none; font-size: 0.9rem; font-weight: 600; letter-spacing: 0.1em; transition: all 0.25s var(--ease); border: 1px solid var(--accent-navy); border-radius: 6px; cursor: pointer; }
.btn-primary:hover { background: var(--accent-navy-soft); border-color: var(--accent-navy-soft); transform: translateY(-1px); }

/* Mode Tabs (one-way / round-trip) */
.search-tabs { display: flex; justify-content: center; gap: 10px; margin-bottom: 22px; flex-wrap: wrap; }
.search-tab { padding: 12px 32px; font-weight: 700; font-size: 0.9rem; letter-spacing: 0.03em; cursor: pointer; border-radius: 30px; border: 1px solid var(--border-light); background: #fff; color: var(--text-muted); transition: all 0.25s var(--ease); }
.search-tab:hover { border-color: var(--accent-gold); color: var(--accent-navy); }
.search-tab.active { background: linear-gradient(135deg, var(--accent-navy-soft), var(--accent-navy)); color: #fff; border-color: var(--accent-navy); box-shadow: 0 8px 20px rgba(11, 23, 41, 0.18); }

/* Search Panel */
.search-panel { background: #fff; padding: 24px; margin-bottom: 35px; border-radius: 14px; box-shadow: var(--shadow-soft); border: 1px solid var(--border-light); box-sizing: border-box; }
@media (min-width: 768px) { .search-panel { padding: 42px; border-radius: 18px; margin-bottom: 48px; } }
.panel-heading { font-family: var(--font-sans); font-size: 1.02rem; color: var(--accent-navy); margin-bottom: 20px; font-weight: 700; border-bottom: 1px solid var(--border-light); padding-bottom: 14px; letter-spacing: 0.08em; text-transform: uppercase; display: flex; align-items: center; gap: 10px; }
.panel-heading::before { content: ''; width: 4px; height: 16px; background: linear-gradient(180deg, var(--accent-gold-light), var(--accent-gold-deep)); border-radius: 2px; }

.filter-grid { display: grid; grid-template-columns: 1fr; gap: 16px; margin-bottom: 24px; }
@media (min-width: 768px) { .filter-grid { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 18px; margin-bottom: 28px; } }
.filter-group { display: flex; flex-direction: column; }
.filter-group label { font-size: 0.73rem; font-weight: 700; color: var(--text-muted); margin-bottom: 7px; letter-spacing: 0.09em; text-transform: uppercase; }
.filter-group input, .filter-group select { padding: 13px 14px; border: 1px solid #D8DBE0; font-size: 0.95rem; background: #FFFFFF; transition: all 0.2s var(--ease); font-family: var(--font-sans); color: var(--text-main); border-radius: 8px; width: 100%; box-sizing: border-box; }
.filter-group input:focus, .filter-group select:focus { outline: none; border-color: var(--accent-gold); box-shadow: 0 0 0 3px rgba(179, 142, 68, 0.14); }

/* Checkboxes */
.checkbox-section { display: flex; flex-direction: column; gap: 12px; margin-bottom: 24px; background: var(--accent-navy-mist); padding: 16px 18px; border-radius: 10px; border: 1px solid var(--border-light); box-sizing: border-box; }
@media (min-width: 768px) { .checkbox-section { flex-direction: row; flex-wrap: wrap; gap: 24px; padding: 18px 24px; } }
.check-item { display: flex; align-items: center; gap: 8px; font-size: 0.9rem; font-weight: 600; color: var(--accent-navy); cursor: pointer; }
.check-item input { width: 18px; height: 18px; cursor: pointer; accent-color: var(--accent-gold-deep); flex-shrink: 0; }

/* Action Buttons */
.search-action-row { display: flex; flex-direction: column; gap: 10px; margin-top: 24px; border-top: 1px solid var(--border-light); padding-top: 24px; }
@media (min-width: 768px) { .search-action-row { flex-direction: row; justify-content: center; gap: 16px; margin-top: 32px; padding-top: 32px; } }
.btn-search { background: linear-gradient(135deg, var(--accent-navy-soft), var(--accent-navy)); color: #fff; border: 1px solid var(--accent-navy); padding: 15px 36px; font-size: 0.95rem; font-weight: 600; border-radius: 8px; cursor: pointer; transition: all 0.25s var(--ease); letter-spacing: 0.08em; text-align: center; box-sizing: border-box; box-shadow: 0 8px 20px rgba(11, 23, 41, 0.18); }
.btn-search:hover { transform: translateY(-1px); box-shadow: 0 12px 26px rgba(11, 23, 41, 0.24); }
.btn-reset { background: #fff; color: var(--text-muted); border: 1px solid var(--border-light); padding: 14px 28px; font-size: 0.9rem; font-weight: 600; border-radius: 8px; cursor: pointer; transition: all 0.2s var(--ease); text-align: center; box-sizing: border-box; }
.btn-reset:hover { background: #F3F4F6; color: var(--text-main); border-color: #D8DBE0; }

/* Meta & Result Controls */
.search-meta-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 22px; padding: 0 4px; flex-wrap: wrap; gap: 12px; }
.result-count { font-weight: 700; font-size: 1.05rem; color: var(--accent-navy); letter-spacing: 0.04em; }

.controls-bar { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; background: #fff; padding: 14px 20px; border-radius: 10px; border: 1px solid var(--border-light); box-shadow: var(--shadow-soft); margin-bottom: 20px; }
.controls-bar label { font-size: 0.8rem; font-weight: 700; color: var(--accent-navy); letter-spacing: 0.03em; }
.controls-bar select { padding: 9px 12px; border: 1px solid #D8DBE0; border-radius: 8px; font-size: 0.88rem; font-family: var(--font-sans); color: var(--text-main); background: #fff; }
.controls-bar select:focus { outline: none; border-color: var(--accent-gold); }

.init-prompt { grid-column: 1 / -1; text-align: center; padding: 75px 20px; background: #fff; border-radius: 14px; border: 1px dashed #D1D5DB; color: var(--text-muted); font-size: 1rem; }
.init-prompt span { display: block; font-size: 2.8rem; margin-bottom: 14px; opacity: 0.5; }

/* -------------------------------------------
   CARRIER SECTION (results grouped by operating carrier)
------------------------------------------- */
.carrier-section { margin-bottom: 40px; }
.carrier-section-header { display: flex; align-items: center; gap: 12px; padding: 14px 18px; margin-bottom: 18px; background: linear-gradient(135deg, #fff, var(--accent-gold-soft)); border: 1px solid var(--border-light); border-left: 4px solid var(--accent-gold); border-radius: 10px; flex-wrap: wrap; }
.carrier-section-logo { width: 26px; height: 26px; object-fit: contain; background: #fff; border-radius: 6px; padding: 3px; border: 1px solid var(--border-light); }
.carrier-section-name { font-weight: 700; font-size: 1rem; color: var(--accent-navy); letter-spacing: 0.02em; }
.carrier-section-stars { color: var(--accent-gold-deep); font-size: 0.9rem; letter-spacing: 2px; }
.carrier-section-count { margin-left: auto; font-size: 0.78rem; font-weight: 700; color: var(--text-muted); background: #fff; border: 1px solid var(--border-light); padding: 4px 12px; border-radius: 20px; }

/* -------------------------------------------
   BRANDED LUXURY FLIGHT CARD
------------------------------------------- */
.award-flight-grid { display: grid; grid-template-columns: 1fr; gap: 22px; }
@media (min-width: 768px) { .award-flight-grid { grid-template-columns: repeat(auto-fill, minmax(430px, 1fr)); gap: 28px; } }

.luxury-card { position: relative; background: var(--card-bg); border-radius: 16px; border: 1px solid var(--border-light); box-shadow: var(--shadow-soft); display: flex; flex-direction: column; transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease), border-color 0.3s var(--ease); box-sizing: border-box; overflow: hidden; animation: fadeIn 0.35s var(--ease); }
.luxury-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--accent-gold-light), var(--accent-gold-deep) 50%, var(--accent-gold-light)); opacity: 0; transition: opacity 0.3s var(--ease); }
.luxury-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); border-color: rgba(179, 142, 68, 0.5); }
.luxury-card:hover::before { opacity: 1; }

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

/* Top strip */
.lc-top { padding: 16px 20px; border-bottom: 1px solid var(--border-subtle); display: flex; justify-content: space-between; align-items: center; background: linear-gradient(180deg, #FAFAFA, #ffffff); gap: 12px; }
.lc-date { font-weight: 600; color: var(--accent-navy); font-size: 0.88rem; letter-spacing: 0.03em; }
.lc-carrier-badge { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.lc-carrier-name { font-size: 0.85rem; font-weight: 700; color: var(--accent-navy); display: flex; align-items: center; gap: 6px; }
.lc-carrier-name img { width: 16px; height: 16px; object-fit: contain; }
.lc-stars { color: var(--accent-gold-deep); font-size: 0.8rem; letter-spacing: 2px; }

/* Route Area */
.lc-route { padding: 30px 20px 26px; display: flex; align-items: center; justify-content: space-between; }
.lc-airport { text-align: center; flex: 1; }
.lc-city { font-size: 1.35rem; font-weight: 700; color: var(--text-main); margin-bottom: 3px; line-height: 1.25; letter-spacing: 0.02em; }
@media (min-width: 768px) { .lc-city { font-size: 1.6rem; } }
.lc-code { font-size: 0.82rem; color: var(--text-muted); background: #F3F4F6; padding: 2px 9px; border-radius: 20px; font-weight: 600; letter-spacing: 0.06em; display: inline-block; }
.lc-arrow { flex: 0.6; position: relative; display: flex; justify-content: center; align-items: center; margin: 0 8px; }
.lc-line { position: absolute; width: 100%; height: 1px; background: repeating-linear-gradient(90deg, #D1D5DB 0 6px, transparent 6px 10px); z-index: 1; }
.lc-plane { position: relative; z-index: 2; font-size: 1.05rem; color: var(--accent-gold-deep); background: #fff; padding: 0 8px; }

/* Probability & Class List */
.lc-body { padding: 0 20px 20px; flex-grow: 1; }
.lc-section-title { font-size: 0.72rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.09em; margin-bottom: 12px; font-weight: 700; }
.lc-classes-grid { display: flex; flex-direction: column; gap: 9px; }
.lc-class-row { display: flex; justify-content: space-between; align-items: center; padding: 13px 16px; border-radius: 10px; border: 1px solid var(--border-subtle); background: #FAFBFD; transition: transform 0.2s var(--ease); }
.lc-class-row:hover { transform: translateX(2px); }

.lc-class-row.first { border-left: 4px solid var(--first-class); background: var(--first-bg); }
.lc-class-row.business { border-left: 4px solid var(--business-class); background: var(--business-bg); }
.lc-class-row.economy { border-left: 4px solid var(--economy-class); background: var(--economy-bg); }

.lc-class-info { display: flex; flex-direction: column; gap: 2px; }
.lc-class-name { font-weight: 700; font-size: 0.88rem; letter-spacing: 0.03em; }
.lc-class-row.first .lc-class-name { color: #991B1B; }
.lc-class-row.business .lc-class-name { color: #1E40AF; }
.lc-class-row.economy .lc-class-name { color: #166534; }
.lc-carrier-context { font-size: 0.74rem; color: var(--text-muted); }

.lc-prob-pill { padding: 5px 13px; border-radius: 20px; font-weight: 700; font-size: 0.9rem; letter-spacing: 0.02em; display: flex; align-items: center; gap: 4px; }
.lc-prob-pill.high { background: #DCFCE7; color: var(--prob-high); border: 1px solid rgba(21, 128, 61, 0.2); }
.lc-prob-pill.mid { background: #FEF3C7; color: var(--prob-mid); border: 1px solid rgba(180, 83, 9, 0.2); }
.lc-prob-pill.low { background: #F3F4F6; color: var(--prob-low); border: 1px solid rgba(107, 114, 128, 0.2); }

/* Accordion */
.lc-footer { border-top: 1px solid var(--border-subtle); background: #FAFAFA; }
.accordion-toggle { width: 100%; background: none; border: none; padding: 13px 20px; font-size: 0.82rem; font-weight: 600; color: var(--accent-navy); cursor: pointer; transition: background 0.15s var(--ease); display: flex; justify-content: center; align-items: center; gap: 6px; }
.accordion-toggle:hover { background: #F3F4F6; }
.accordion-toggle::after { content: '▼'; font-size: 0.6rem; transition: transform 0.2s var(--ease); opacity: 0.6; }
.accordion-toggle.open::after { transform: rotate(180deg); }
.accordion-content { display: none; padding: 16px 20px 20px; background: #fff; border-top: 1px solid var(--border-subtle); font-size: 0.8rem; color: var(--text-muted); }
.accordion-content.open { display: block; animation: fadeIn 0.25s var(--ease); }

/* Round-trip summary card */
.rt-route-label { display: flex; align-items: center; gap: 10px; font-size: 0.9rem; font-weight: 700; color: var(--accent-navy); background: var(--accent-navy-mist); border-radius: 8px; padding: 9px 14px; margin-bottom: 12px; letter-spacing: 0.01em; flex-wrap: wrap; }
.rt-route-label--ret { margin-top: 4px; }
.rt-route-badge { flex-shrink: 0; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.08em; padding: 3px 10px; border-radius: 20px; color: #fff; }
.rt-route-badge--out { background: linear-gradient(135deg, var(--accent-gold-light), var(--accent-gold-deep)); }
.rt-route-badge--ret { background: var(--accent-navy); }
.rt-route-path { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.rt-route-code { color: var(--text-muted); font-weight: 600; font-size: 0.8rem; margin-right: 2px; }
.rt-route-sep { color: var(--accent-gold-deep); font-size: 0.8rem; margin: 0 2px; }
.rt-summary-route { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px dashed var(--border-light); padding-bottom: 18px; margin-bottom: 18px; gap: 10px; }
.rt-summary-route:last-child { border-bottom: none; padding-bottom: 0; margin-bottom: 0; }
.rt-leg-airport { text-align: center; flex: 1; }
.rt-leg-code { font-size: 0.7rem; color: var(--text-soft); font-weight: 700; letter-spacing: 0.08em; margin-top: 1px; }
.rt-leg-city { font-size: 1.15rem; font-weight: 700; color: var(--text-main); margin-top: 4px; }
.rt-leg-meta { font-size: 0.72rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.06em; }
.rt-leg-carrier { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 0.78rem; font-weight: 700; color: var(--accent-navy); }
.rt-leg-carrier img { width: 16px; height: 16px; object-fit: contain; }
.rt-leg-stars { color: var(--accent-gold-deep); font-size: 0.72rem; letter-spacing: 1px; margin-top: 2px; }

/* AI Wizard UI */
.ai-wizard { background: #fff; border-radius: 18px; box-shadow: var(--shadow-lift); border: 1px solid var(--border-light); overflow: hidden; max-width: 780px; margin: 0 auto; display: flex; flex-direction: column; min-height: 520px; box-sizing: border-box; }
.wizard-chat { padding: 24px 18px; flex-grow: 1; display: flex; flex-direction: column; gap: 16px; overflow-y: auto; background: linear-gradient(180deg, #FAFBFD, #fff 300px); }
@media (min-width: 768px) { .wizard-chat { padding: 36px; gap: 20px; } }

.wiz-msg { display: flex; gap: 12px; animation: fadeIn 0.3s var(--ease); max-width: 88%; }
.wiz-msg.bot { align-self: flex-start; }
.wiz-msg.user { align-self: flex-end; flex-direction: row-reverse; }
.wiz-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--accent-navy); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1rem; flex-shrink: 0; }
.wiz-msg.user .wiz-avatar { background: linear-gradient(135deg, var(--accent-gold-light), var(--accent-gold-deep)); }
.wiz-bubble { background: #fff; padding: 15px 18px; border-radius: 14px; border: 1px solid var(--border-light); font-size: 0.92rem; color: var(--text-main); line-height: 1.6; }
.wiz-msg.bot .wiz-bubble { border-top-left-radius: 2px; }
.wiz-msg.user .wiz-bubble { background: var(--accent-navy); color: #fff; border-top-right-radius: 2px; border: none; }

.map-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 12px; width: 100%; box-sizing: border-box; }
@media (min-width: 640px) { .map-grid { grid-template-columns: repeat(3, 1fr); gap: 12px; } }
.map-btn { position: relative; background-color: var(--accent-navy); background-size: cover; background-position: center; border: 1px solid var(--border-light); border-radius: 12px; padding: 22px 10px; cursor: pointer; transition: all 0.25s var(--ease); display: flex; flex-direction: column; align-items: center; justify-content:center; gap: 6px; font-weight: 700; color: #fff; font-size: 0.9rem; text-shadow: 0 1px 4px rgba(0,0,0,0.5); min-height: 96px; }
.map-btn:hover { border-color: var(--accent-gold-light); box-shadow: 0 10px 26px rgba(11, 23, 41, 0.28); transform: translateY(-3px); }
.map-icon { font-size: 1.8rem; }

.options-grid { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.opt-btn { background: #fff; border: 1px solid var(--border-light); border-radius: 24px; padding: 10px 20px; cursor: pointer; transition: all 0.15s var(--ease); font-weight: 600; color: var(--accent-navy); font-size: 0.88rem; }
.opt-btn:hover { background: var(--accent-navy); color: #fff; border-color: var(--accent-navy); }

/* Quick Chatbot */
.chat-container { position: fixed; bottom: 20px; right: 20px; z-index: 9999; display: flex; flex-direction: column; align-items: flex-end; }
.chat-toggle-btn { background: linear-gradient(135deg, var(--accent-navy-soft), var(--accent-navy)); color: #fff; border: none; border-radius: 30px; padding: 13px 22px; font-size: 0.92rem; font-weight: 600; cursor: pointer; box-shadow: 0 8px 24px rgba(11, 23, 41, 0.28); transition: all 0.2s var(--ease); display: flex; align-items: center; gap: 8px; font-family: var(--font-sans); }
.chat-toggle-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(11, 23, 41, 0.34); }
.chat-window { width: calc(100vw - 32px); max-width: 350px; height: 460px; background: #fff; border-radius: 16px; box-shadow: 0 20px 50px rgba(11, 23, 41, 0.2); display: none; flex-direction: column; overflow: hidden; margin-bottom: 12px; border: 1px solid var(--border-light); box-sizing: border-box; }
.chat-window.open { display: flex; animation: fadeIn 0.25s var(--ease); }
.chat-header { background: var(--accent-navy); color: #fff; padding: 15px 18px; font-weight: 600; display: flex; justify-content: space-between; align-items: center; font-size: 0.95rem; }
.chat-close { cursor: pointer; font-size: 1.25rem; line-height: 1; }
.chat-restart-btn { cursor: pointer; font-size: 0.72rem; font-weight: 700; background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.3); padding: 4px 10px; border-radius: 20px; white-space: nowrap; }
.chat-restart-btn:hover { background: rgba(255,255,255,0.28); }
.chat-messages { flex-grow: 1; padding: 16px; overflow-y: auto; background: #FAFBFD; display: flex; flex-direction: column; gap: 10px; }
.chat-msg { max-width: 85%; font-size: 0.86rem; line-height: 1.5; display: flex; flex-direction: column; }
.chat-msg.bot { align-self: flex-start; }
.chat-msg.user { align-self: flex-end; }
.msg-bubble { padding: 10px 14px; border-radius: 12px; }
.chat-msg.bot .msg-bubble { background: #fff; color: var(--text-main); border: 1px solid var(--border-light); border-bottom-left-radius: 2px; }
.chat-msg.user .msg-bubble { background: linear-gradient(135deg, var(--accent-gold-light), var(--accent-gold-deep)); color: #fff; border-bottom-right-radius: 2px; }
.quick-replies { display: flex; flex-direction: column; gap: 7px; padding: 12px; background: #fff; border-top: 1px solid var(--border-light); }
.qr-btn { background: #F8FAFC; color: var(--accent-navy); border: 1px solid var(--border-light); padding: 9px 12px; border-radius: 8px; font-size: 0.82rem; cursor: pointer; transition: all 0.15s var(--ease); text-align: left; font-weight: 600; }
.qr-btn:hover { background: var(--accent-navy); color: #fff; border-color: var(--accent-navy); }

/* Toast */
.toast-notification { position: fixed; bottom: -160px; left: 50%; transform: translateX(-50%); width: 92%; max-width: 420px; background: #fff; color: var(--text-main); padding: 20px 22px; box-shadow: 0 20px 45px rgba(11, 23, 41, 0.16); transition: bottom 0.45s var(--ease); z-index: 10000; border-left: 4px solid var(--accent-gold); border-radius: 12px; text-align: left; box-sizing: border-box; }
.toast-notification.show { bottom: 20px; }
.toast-title { font-size: 1rem; font-weight: 700; margin-bottom: 4px; color: var(--accent-navy); display: flex; align-items: center; justify-content: space-between; }
.toast-close { cursor: pointer; color: #888; font-size: 1.15rem; }
.toast-desc { font-size: 0.85rem; color: var(--text-muted); margin-bottom: 14px; line-height: 1.5; }
.toast-btn { display: inline-block; background: linear-gradient(135deg, var(--accent-navy-soft), var(--accent-navy)); color: #fff; text-decoration: none; padding: 9px 18px; font-size: 0.85rem; font-weight: 600; border-radius: 8px; transition: all 0.2s var(--ease); }
.toast-btn:hover { transform: translateY(-1px); }

/* Admin and Subpages */
.afa-history-table { width: 100%; border-collapse: collapse; margin-top: 18px; font-size: 0.9rem; }
.afa-history-table th, .afa-history-table td { border: 1px solid #E5E7EB; padding: 11px; text-align: left; }
.afa-history-table th { background: #F8FAFC; font-weight: 600; color: var(--accent-navy); }
.content-section { background: #fff; padding: 36px 20px; border-radius: 14px; border: 1px solid var(--border-light); margin-bottom: 26px; box-sizing: border-box; box-shadow: var(--shadow-soft); }
@media (min-width: 768px) { .content-section { padding: 48px; border-radius: 18px; } }
.content-section h2 { font-size: 1.45rem; color: var(--accent-navy); border-bottom: 2px solid var(--accent-gold); padding-bottom: 12px; margin-bottom: 22px; font-family: var(--font-serif); letter-spacing: 0.02em; }
.content-section p { color: var(--text-muted); line-height: 1.9; }
.program-card { border: 1px solid var(--border-light); border-radius: 12px; padding: 20px; margin-bottom: 18px; background: #F8FAFC; display: flex; flex-direction: column; gap: 14px; transition: box-shadow 0.25s var(--ease), transform 0.25s var(--ease); }
.program-card:hover { box-shadow: var(--shadow-soft); transform: translateY(-2px); }
@media (min-width: 640px) { .program-card { flex-direction: row; gap: 20px; padding: 22px; } }
.program-logo { width: 56px; height: 56px; object-fit: contain; background: #fff; border-radius: 8px; padding: 6px; border: 1px solid var(--border-light); flex-shrink: 0; }
.program-info h4 { margin: 0 0 6px 0; font-size: 1.1rem; color: var(--accent-navy); font-weight: 700; }
.program-info p { margin: 0; font-size: 0.88rem; line-height: 1.6; color: var(--text-muted); }
.content-section .step-num { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-gold-light), var(--accent-gold-deep)); color: #fff; font-family: var(--font-serif); font-weight: 700; font-size: 0.9rem; margin-right: 10px; vertical-align: middle; }

/* Site Footer */
.site-footer { text-align: center; padding: 50px 16px 40px; color: rgba(255,255,255,0.55); font-size: 0.85rem; margin-top: 60px; background: linear-gradient(180deg, var(--accent-navy) 0%, var(--accent-navy-soft) 100%); box-sizing: border-box; }
.site-footer .footer-brand { font-family: var(--font-serif); color: #fff; font-size: 1.1rem; letter-spacing: 0.1em; margin-bottom: 10px; }
.site-footer .footer-brand span { color: var(--accent-gold-light); }
.site-footer .footer-links { display: flex; justify-content: center; gap: 18px; flex-wrap: wrap; margin-bottom: 22px; }
.site-footer .footer-links a { color: rgba(255,255,255,0.7); text-decoration: none; font-size: 0.82rem; font-weight: 600; transition: color 0.2s var(--ease); }
.site-footer .footer-links a:hover { color: var(--accent-gold-light); }
.site-footer .footer-rule { width: 56px; height: 1px; background: rgba(255,255,255,0.18); margin: 0 auto 22px; }
.site-footer p { margin: 0; letter-spacing: 0.03em; }

/* -------------------------------------------
   NEW V17 COMPONENTS
------------------------------------------- */

/* AI Wizard toolbar (brand label + restart) */
.wizard-toolbar { display: flex; justify-content: space-between; align-items: center; padding: 14px 20px; background: linear-gradient(135deg, var(--accent-navy-soft), var(--accent-navy)); color: #fff; }
.wizard-toolbar-label { font-weight: 700; font-size: 0.85rem; letter-spacing: 0.04em; }
.wizard-restart-btn { background: rgba(255,255,255,0.12); color: #fff; border: 1px solid rgba(255,255,255,0.3); padding: 7px 14px; border-radius: 20px; font-size: 0.78rem; font-weight: 700; cursor: pointer; transition: all 0.2s var(--ease); }
.wizard-restart-btn:hover { background: rgba(255,255,255,0.22); }

/* Area photo banner above search results */
.area-banner { position: relative; height: 120px; border-radius: 14px; background-size: cover; background-position: center; display: flex; align-items: flex-end; margin-bottom: 22px; overflow: hidden; box-shadow: var(--shadow-soft); }
.area-banner span { color: #fff; font-family: var(--font-serif); font-size: 1.15rem; letter-spacing: 0.06em; padding: 14px 20px; text-shadow: 0 1px 6px rgba(0,0,0,0.5); }
@media (min-width: 768px) { .area-banner { height: 160px; } .area-banner span { font-size: 1.4rem; } }

/* Hilton hotel suggestion box (round-trip card) */
.hilton-suggest { margin-top: 18px; background: var(--accent-gold-soft); border: 1px solid rgba(179,142,68,0.3); border-radius: 10px; padding: 14px 16px; display: flex; flex-direction: column; gap: 4px; }
.hilton-suggest-label { font-size: 0.78rem; font-weight: 700; color: var(--accent-gold-deep); letter-spacing: 0.03em; }
.hilton-suggest-link { color: var(--accent-navy); font-size: 0.86rem; font-weight: 700; text-decoration: none; }
.hilton-suggest-link:hover { text-decoration: underline; color: var(--accent-gold-deep); }

/* Itinerary print/share button */
.itinerary-print-btn { display: block; width: 100%; margin-top: 18px; background: linear-gradient(135deg, var(--accent-navy-soft), var(--accent-navy)); color: #fff; border: none; }
.itinerary-print-btn:hover { background: linear-gradient(135deg, var(--accent-navy), #060d18); color: #fff; }

/* Detected mileage programs — inline chip row (v20 fix) */
.detected-prog-list-inline { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.detected-prog-chip { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; background: #F9FAFB; border: 1px solid #E5E7EB; border-radius: 20px; font-size: 0.74rem; font-weight: 700; color: #0C192C; white-space: nowrap; }
.detected-prog-chip em { font-style: normal; font-weight: 600; color: #6B7280; font-size: 0.7rem; }

/* Mileage redemption guide link (v20, item 4) */
.mileage-guide-box { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border-light); display: flex; flex-direction: column; gap: 4px; }
.mileage-guide-label { font-size: 0.72rem; font-weight: 700; color: var(--text-muted); }
.mileage-guide-link { font-size: 0.84rem; font-weight: 700; color: var(--accent-gold-deep); text-decoration: none; }
.mileage-guide-link:hover { text-decoration: underline; }

/* Missing return-leg detail warning (v20, item 2) */
.return-detail-warning { margin-top: 10px; background: rgba(180,83,9,0.18); color: #FDE68A; border: 1px solid rgba(253,230,138,0.35); border-radius: 8px; padding: 8px 12px; font-size: 0.76rem; font-weight: 600; }

/* Sitewide admin-managed popup (v20, item 7) — centered modal, fixed by design (previous bottom-toast never triggered) */
.afa-popup-overlay { position: fixed; inset: 0; background: rgba(11,23,41,0.6); display: none; align-items: center; justify-content: center; z-index: 20000; padding: 20px; opacity: 0; transition: opacity 0.25s var(--ease, ease); }
.afa-popup-overlay.show { display: flex; opacity: 1; }
.afa-popup-box { position: relative; background: #fff; border-radius: 16px; max-width: 520px; width: 100%; max-height: 85vh; overflow-y: auto; padding: 36px 32px; box-shadow: 0 30px 70px rgba(11,23,41,0.35); }
.afa-popup-close { position: absolute; top: 14px; right: 16px; background: none; border: none; font-size: 1.2rem; color: #6B7280; cursor: pointer; line-height: 1; }
.afa-popup-close:hover { color: #0B1729; }
.afa-popup-content { font-size: 0.95rem; color: #10151F; line-height: 1.7; }
.afa-popup-content h1, .afa-popup-content h2, .afa-popup-content h3 { color: #0B1729; font-family: var(--font-serif, serif); margin-top: 0; }
.afa-popup-content a { color: #8C6B2E; font-weight: 700; }

/* Free-tier result gating preview (v20, item 8) — hook points for a future membership plugin */
.afa-premium-gate { position: relative; overflow: hidden; }
.afa-premium-gate > *:not(.afa-premium-overlay) { filter: blur(7px); pointer-events: none; user-select: none; }
.afa-premium-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.6); z-index: 5; border-radius: 16px; }
.afa-premium-overlay-inner { text-align: center; padding: 20px; }
.afa-premium-icon { font-size: 1.8rem; margin-bottom: 8px; }
.afa-premium-overlay-inner p { font-size: 0.88rem; font-weight: 700; color: var(--accent-navy); margin: 0 0 14px; max-width: 220px; }
.afa-premium-btn { display: inline-block; background: linear-gradient(135deg, var(--accent-gold-light), var(--accent-gold-deep)); color: #fff; text-decoration: none; padding: 10px 22px; border-radius: 20px; font-size: 0.85rem; font-weight: 700; box-shadow: 0 8px 20px rgba(179,142,68,0.3); border: none; cursor: pointer; font-family: var(--font-sans); }
.afa-premium-btn:hover { filter: brightness(1.05); }

/* Source match badge (v21, item 5) */
.match-badge { display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 10px; font-size: 0.68rem; font-weight: 700; vertical-align: middle; }
.match-badge-ok { background: #DCFCE7; color: #166534; }
.match-badge-solo { background: #FEF3C7; color: #92400E; }

/* Alternative-suggestion note when no exact round-trip pairs are found (v21, item 1) */
.alt-suggestion-note { background: #FBF8F2; border: 1px solid rgba(179,142,68,0.3); border-radius: 10px; padding: 14px 18px; margin: 0 0 22px; font-size: 0.86rem; color: #8C6B2E; font-weight: 600; }

/* Tutorial overlay (item 5) */
.tutorial-link-btn { margin-top: 14px; background: #fff; border: 1px solid var(--border-light); color: var(--accent-navy); font-size: 0.8rem; font-weight: 700; padding: 8px 16px; border-radius: 20px; cursor: pointer; box-shadow: var(--shadow-soft); }
.tutorial-link-btn:hover { border-color: var(--accent-gold); color: var(--accent-gold-deep); }
.afa-tutorial-overlay { position: fixed; inset: 0; background: rgba(11,23,41,0.65); display: none; align-items: center; justify-content: center; z-index: 19000; padding: 20px; }
.afa-tutorial-overlay.show { display: flex; }
.afa-tutorial-box { position: relative; background: #fff; border-radius: 16px; max-width: 520px; width: 100%; max-height: 85vh; overflow-y: auto; padding: 40px 32px 28px; box-shadow: 0 30px 70px rgba(11,23,41,0.35); }
.afa-tutorial-skip { position: absolute; top: 14px; right: 16px; background: none; border: none; font-size: 0.78rem; font-weight: 700; color: var(--text-muted); cursor: pointer; }
.afa-tutorial-skip:hover { color: var(--accent-navy); }
.afa-tutorial-progress { font-size: 0.72rem; font-weight: 700; color: var(--accent-gold-deep); letter-spacing: 0.1em; margin-bottom: 8px; }
.afa-tutorial-title { font-family: var(--font-serif); color: var(--accent-navy); font-size: 1.2rem; margin: 0 0 14px; }
.afa-tutorial-body { font-size: 0.92rem; line-height: 1.8; color: var(--text-main); }
.afa-tutorial-body p { margin: 0 0 12px; }
.tutorial-agree-row { display: flex; align-items: center; gap: 10px; margin-top: 16px; padding: 12px 14px; background: var(--accent-gold-soft); border-radius: 8px; font-weight: 700; font-size: 0.88rem; }
.tutorial-agree-row input { width: 18px; height: 18px; accent-color: var(--accent-gold-deep); }
.afa-tutorial-nav { display: flex; justify-content: space-between; margin-top: 24px; gap: 12px; }
.afa-tutorial-nav button:disabled { opacity: 0.45; cursor: not-allowed; }

/* Calendar feature (item 3) */
.afa-calendar-overlay { position: fixed; inset: 0; background: rgba(11,23,41,0.7); display: none; align-items: center; justify-content: center; z-index: 18000; padding: 16px; }
.afa-calendar-overlay.show { display: flex; }
.afa-calendar-box { background: #fff; border-radius: 16px; max-width: 760px; width: 100%; max-height: 90vh; overflow-y: auto; box-shadow: 0 30px 70px rgba(11,23,41,0.35); }
.afa-calendar-header { display: flex; justify-content: space-between; align-items: center; background: var(--accent-navy); color: #fff; padding: 16px 22px; border-radius: 16px 16px 0 0; font-weight: 700; }
.afa-calendar-header .afa-popup-close { color: #fff; }
.afa-calendar-controls { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; padding: 18px 22px 0; }
.afa-calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; padding: 18px 22px; }
.afa-cal-day-label { text-align: center; font-size: 0.72rem; font-weight: 700; color: var(--text-muted); padding-bottom: 4px; }
.afa-cal-cell { aspect-ratio: 1; border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 0.78rem; font-weight: 700; border: 1px solid var(--border-light); background: #F9FAFB; color: var(--text-soft); }
.afa-cal-cell.afa-cal-high { background: #DCFCE7; color: #166534; border-color: rgba(21,128,61,0.3); }
.afa-cal-cell.afa-cal-mid { background: #FEF3C7; color: #92400E; border-color: rgba(180,83,9,0.3); }
.afa-cal-cell.afa-cal-low { background: #F3F4F6; color: #6B7280; }
.afa-cal-cell .afa-cal-pct { font-size: 0.64rem; font-weight: 600; margin-top: 2px; }
.afa-calendar-legend { display: flex; gap: 18px; flex-wrap: wrap; padding: 0 22px 20px; font-size: 0.78rem; color: var(--text-muted); }
.afa-cal-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; vertical-align: middle; }
.afa-cal-dot.afa-cal-high { background: #166534; } .afa-cal-dot.afa-cal-mid { background: #B45309; }
.afa-cal-dot.afa-cal-low { background: #9CA3AF; } .afa-cal-dot.afa-cal-none { background: #E5E7EB; }

/* Standalone calendar page (item 1) */
.cal-month-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 20px 0 16px; }
.cal-month-tab { padding: 9px 18px; border-radius: 20px; border: 1px solid var(--border-light); background: #fff; color: var(--text-muted); font-weight: 700; font-size: 0.85rem; cursor: pointer; }
.cal-month-tab.active { background: var(--accent-navy); color: #fff; border-color: var(--accent-navy); }
.afa-calendar-grid--page { padding: 0; }
.afa-cal-cell.afa-cal-clickable { cursor: pointer; transition: transform 0.15s ease; }
.afa-cal-cell.afa-cal-clickable:hover { transform: translateY(-2px); box-shadow: var(--shadow-soft); }

/* Calendar mobile carrier panel + selection state (item 1) */
.afa-cal-cell.afa-cal-selected { outline: 2px solid var(--accent-gold-deep); outline-offset: -2px; }
.cal-mobile-carrier-panel { display: none; margin-top: 18px; padding: 14px 16px; background: var(--accent-navy-mist); border-radius: 10px; }
.cal-mobile-carrier-panel.show { display: block; }
.cal-mobile-carrier-date { font-size: 0.8rem; font-weight: 700; color: var(--accent-navy); margin-bottom: 8px; }
.cal-mobile-carrier-list { display: flex; flex-wrap: wrap; gap: 6px; }
.cal-mobile-carrier-chip { background: #fff; border: 1px solid var(--border-light); border-radius: 20px; padding: 5px 12px; font-size: 0.78rem; font-weight: 600; color: var(--accent-navy); }
@media (min-width: 721px) { .cal-mobile-carrier-panel { display: none !important; } }


/* =========================================================================
   v29: concierge chatbot, member page, alert link
   ========================================================================= */
.chat-container { right: auto !important; left: 20px; }
.afa-cb { position: fixed; right: 20px; bottom: 20px; z-index: 99990; font-family: var(--font-sans, inherit); }
.afa-cb-fab { display: inline-flex; align-items: center; gap: 10px; border: 1px solid rgba(184,146,63,.55); border-radius: 999px; padding: 13px 22px; background: #0B1729; color: #F5EEDC; font-size: .92rem; font-weight: 600; letter-spacing: .04em; cursor: pointer; box-shadow: 0 10px 28px rgba(11,23,41,.35); transition: transform .2s, box-shadow .2s; }
.afa-cb-fab:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(11,23,41,.42); }
.afa-cb-fab.hidden { display: none; }
.afa-cb-fab-dot { width: 8px; height: 8px; border-radius: 50%; background: #B8923F; box-shadow: 0 0 0 0 rgba(184,146,63,.6); animation: afaCbPulse 2.4s infinite; }
@keyframes afaCbPulse { 70% { box-shadow: 0 0 0 9px rgba(184,146,63,0); } 100% { box-shadow: 0 0 0 0 rgba(184,146,63,0); } }
.afa-cb-window { display: none; flex-direction: column; width: min(380px, calc(100vw - 24px)); height: min(560px, calc(100vh - 40px)); background: #fff; border: 1px solid #E5E7EB; border-radius: 16px; overflow: hidden; box-shadow: 0 24px 60px rgba(11,23,41,.32); }
.afa-cb-window.open { display: flex; }
.afa-cb-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 14px 16px; background: #0B1729; color: #F5EEDC; border-bottom: 2px solid #B8923F; }
.afa-cb-title { display: flex; flex-direction: column; line-height: 1.3; }
.afa-cb-name { font-weight: 700; font-size: .95rem; letter-spacing: .04em; }
.afa-cb-sub { font-size: .66rem; letter-spacing: .14em; color: #B8923F; }
.afa-cb-tools { display: flex; gap: 8px; align-items: center; }
.afa-cb-tool { background: transparent; border: 1px solid rgba(245,238,220,.4); color: #F5EEDC; border-radius: 999px; padding: 4px 11px; font-size: .74rem; cursor: pointer; }
.afa-cb-tool:hover { background: rgba(245,238,220,.12); }
.afa-cb-close { padding: 2px 10px; font-size: 1rem; line-height: 1.3; }
.afa-cb-log { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 10px; background: #FAFAF7; }
.afa-cb-msg { max-width: 88%; padding: 10px 14px; border-radius: 14px; font-size: .9rem; line-height: 1.75; white-space: pre-wrap; word-break: break-word; }
.afa-cb-bot { align-self: flex-start; background: #fff; color: #1F2937; border: 1px solid #E5E7EB; border-top-left-radius: 4px; }
.afa-cb-user { align-self: flex-end; background: #0B1729; color: #F5EEDC; border-top-right-radius: 4px; }
.afa-cb-think { color: #6B7280; display: flex; align-items: center; gap: 8px; }
.afa-cb-dots i { display: inline-block; width: 5px; height: 5px; margin-right: 3px; border-radius: 50%; background: #B8923F; animation: afaCbDot 1.2s infinite ease-in-out; }
.afa-cb-dots i:nth-child(2) { animation-delay: .15s; } .afa-cb-dots i:nth-child(3) { animation-delay: .3s; }
@keyframes afaCbDot { 0%, 80%, 100% { opacity: .25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
.afa-cb-links { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.afa-cb-link { display: block; text-align: center; padding: 9px 12px; border-radius: 10px; border: 1px solid #0B1729; color: #0B1729; text-decoration: none; font-size: .86rem; font-weight: 600; }
.afa-cb-link-primary { background: #0B1729; color: #F5EEDC; border-color: #0B1729; }
.afa-cb-chips { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 16px; background: #FAFAF7; }
.afa-cb-chips:not(:empty) { padding: 4px 16px 12px; }
.afa-cb-chip { border: 1px solid #B8923F; background: #fff; color: #0B1729; border-radius: 999px; padding: 7px 14px; font-size: .82rem; cursor: pointer; }
.afa-cb-chip:hover { background: #B8923F; color: #fff; }
.afa-cb-form { display: flex; gap: 8px; padding: 12px; border-top: 1px solid #E5E7EB; background: #fff; }
.afa-cb-input { flex: 1; border: 1px solid #D1D5DB; border-radius: 10px; padding: 10px 12px; font-size: 16px; }
.afa-cb-send { border: none; background: #B8923F; color: #fff; border-radius: 10px; padding: 0 16px; font-weight: 700; cursor: pointer; }
.afa-cb-send:disabled, .afa-cb-input:disabled { opacity: .55; cursor: not-allowed; }
@media (max-width: 520px) { .afa-cb { right: 12px; bottom: 12px; } .afa-cb-window { height: min(78vh, 560px); } .chat-container { left: 12px; bottom: 12px; } }
@media (prefers-reduced-motion: reduce) { .afa-cb-fab-dot, .afa-cb-dots i { animation: none; } }

.afa-member-card { background: #fff; border: 1px solid #E5E7EB; border-radius: 14px; padding: 26px 28px; margin-bottom: 24px; }
.afa-member-card h2 { margin: 0 0 14px; font-size: 1.15rem; }
.afa-member-form label { display: flex; flex-direction: column; gap: 6px; font-size: .85rem; font-weight: 600; color: #374151; margin-bottom: 14px; }
.afa-member-form input, .afa-member-form select { padding: 10px 12px; border: 1px solid #D1D5DB; border-radius: 10px; font-size: 16px; }
.afa-member-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0 18px; }
.afa-member-actions { grid-column: 1 / -1; }
.afa-member-note { color: #6B7280; font-size: .85rem; }
.afa-member-error { color: #B91C1C; font-weight: 600; } .afa-member-ok { color: #166534; font-weight: 600; }
.afa-member-dl { display: grid; grid-template-columns: 120px 1fr; gap: 8px 14px; margin: 0 0 14px; } .afa-member-dl dt { color: #6B7280; } .afa-member-dl dd { margin: 0; font-weight: 700; }
.afa-member-alert { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding: 14px 0; border-top: 1px solid #F1F5F9; }
.afa-member-alert form { display: flex; gap: 8px; }
.afa-member-tag { display: inline-block; margin-left: 8px; padding: 2px 10px; border-radius: 999px; background: #F1F5F9; font-size: .72rem; font-weight: 700; color: #475569; } .afa-member-tag.on { background: #DCFCE7; color: #166534; }
.afa-alert-link { display: inline-block; margin-left: 16px; font-size: .86rem; color: #8A6A22; text-decoration: underline; text-underline-offset: 3px; }

/* =========================================================================
   v30: premium benefits (login), member greeting, call-center guide
   ========================================================================= */
.afa-prem { margin: 8px 0 32px; padding: 34px 28px; border-radius: 18px; background: linear-gradient(160deg, #0B1729, #14233D); color: #F5EEDC; border: 1px solid rgba(184,146,63,.45); }
.afa-prem-head { text-align: center; max-width: 640px; margin: 0 auto 26px; }
.afa-prem-badge { display: inline-block; padding: 4px 14px; border: 1px solid #B8923F; border-radius: 999px; color: #D9B866; font-size: .72rem; letter-spacing: .22em; font-weight: 700; }
.afa-prem-head h2 { margin: 14px 0 10px; color: #fff; font-size: 1.5rem; letter-spacing: .04em; }
.afa-prem-head p { margin: 0; color: #CBD5E1; line-height: 1.8; font-size: .92rem; }
.afa-prem-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin-bottom: 26px; }
.afa-prem-card { position: relative; padding: 22px 20px 20px; border-radius: 14px; background: rgba(255,255,255,.05); border: 1px solid rgba(245,238,220,.14); }
.afa-prem-no { position: absolute; top: 14px; right: 16px; font-size: 1.5rem; font-weight: 700; color: rgba(184,146,63,.55); font-family: var(--font-serif, serif); }
.afa-prem-card h3 { margin: 0 0 8px; color: #D9B866; font-size: 1rem; padding-right: 36px; }
.afa-prem-card p { margin: 0; font-size: .86rem; line-height: 1.75; color: #E2E8F0; }
.afa-prem-table { width: 100%; max-width: 640px; margin: 0 auto 26px; border-collapse: collapse; font-size: .88rem; }
.afa-prem-table th, .afa-prem-table td { padding: 11px 12px; border-bottom: 1px solid rgba(245,238,220,.14); text-align: center; }
.afa-prem-table thead th { color: #D9B866; font-size: .78rem; letter-spacing: .08em; }
.afa-prem-table tbody th { text-align: left; font-weight: 600; color: #F5EEDC; }
.afa-prem-table td { color: #CBD5E1; } .afa-prem-table td.on { color: #fff; font-weight: 700; background: rgba(184,146,63,.16); }
.afa-prem-cta { text-align: center; }
.afa-prem-cta .afa-member-note { color: #94A3B8; margin: 10px 0 0; }
.afa-prem-btn { display: inline-block; padding: 15px 38px; border-radius: 999px; background: linear-gradient(135deg, #D9B866, #B8923F); color: #0B1729; font-weight: 700; letter-spacing: .06em; text-decoration: none; box-shadow: 0 10px 26px rgba(184,146,63,.35); transition: transform .2s; }
.afa-prem-btn:hover { transform: translateY(-2px); }
.afa-prem-btn.is-disabled { background: #475569; color: #CBD5E1; box-shadow: none; cursor: default; }
.afa-greeting { display: flex; gap: 14px; align-items: center; margin-bottom: 22px; padding: 18px 22px; border-radius: 14px; background: linear-gradient(135deg, #0B1729, #14233D); color: #F5EEDC; border-left: 4px solid #B8923F; }
.afa-greeting-mark { flex: none; font-size: .68rem; letter-spacing: .2em; text-transform: uppercase; color: #D9B866; border: 1px solid rgba(217,184,102,.5); border-radius: 999px; padding: 3px 10px; }
.afa-greeting p { margin: 0; line-height: 1.8; font-size: .95rem; }
.afa-cc-wrap { max-width: 1100px; margin: 40px auto 0; padding: 0 16px; }
.afa-cc { padding: 28px; border: 1px solid #E5E7EB; border-radius: 16px; background: #FAFAF7; }
.afa-cc-title { margin: 0 0 6px; font-size: 1.1rem; letter-spacing: .04em; }
.afa-cc-lead { margin: 0 0 18px; color: #6B7280; font-size: .86rem; line-height: 1.7; }
.afa-cc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
.afa-cc-card { background: #fff; border: 1px solid #E5E7EB; border-radius: 12px; padding: 18px 20px; }
.afa-cc-card h3 { margin: 0 0 12px; font-size: .98rem; color: #0B1729; }
.afa-cc-card dl { margin: 0 0 12px; } .afa-cc-card dt { font-size: .74rem; color: #6B7280; margin-top: 8px; } .afa-cc-card dd { margin: 2px 0 0; }
.afa-cc-tel { font-size: 1.15rem; font-weight: 700; color: #0B1729; text-decoration: none; letter-spacing: .03em; }
.afa-cc-hours { display: block; font-size: .78rem; color: #6B7280; }
.afa-cc-status { margin: 0; padding-top: 12px; border-top: 1px dashed #D1D5DB; font-size: .8rem; line-height: 1.7; color: #475569; }
.afa-cc-badge { display: inline-block; margin-right: 8px; padding: 2px 10px; border-radius: 999px; background: #0B1729; color: #D9B866; font-size: .68rem; font-weight: 700; letter-spacing: .06em; }
@media (max-width: 520px) { .afa-prem { padding: 26px 16px; } .afa-greeting { flex-direction: column; align-items: flex-start; gap: 8px; } .afa-cc { padding: 20px 16px; } }

/* =========================================================================
   v31: executive membership copy block, 2FA UI
   ========================================================================= */
.afa-exec { margin: 8px 0 36px; padding: 56px 32px 48px; text-align: center; background: linear-gradient(170deg, #0A1220, #101D33); color: #EFE8D6; border-top: 1px solid #B8923F; border-bottom: 1px solid #B8923F; border-radius: 4px; }
.afa-exec-eyebrow { margin: 0 0 18px; font-size: .74rem; letter-spacing: .38em; color: #B8923F; }
.afa-exec h2 { margin: 0 0 24px; font-family: var(--font-serif, "Noto Serif JP", serif); font-weight: 500; font-size: clamp(1.45rem, 3.2vw, 2.05rem); letter-spacing: .08em; color: #fff; line-height: 1.6; }
.afa-exec-lead { max-width: 700px; margin: 0 auto 38px; font-size: .95rem; line-height: 2.05; color: #CFC8B6; letter-spacing: .03em; }
.afa-exec-points { list-style: none; margin: 0 auto 40px; padding: 0; max-width: 960px; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 0; }
.afa-exec-points li { padding: 8px 26px 12px; text-align: left; border-left: 1px solid rgba(184,146,63,.35); }
.afa-exec-points li:first-child { border-left: none; }
.afa-exec-no { display: block; margin-bottom: 10px; font-family: var(--font-serif, serif); font-size: 1.1rem; color: #B8923F; letter-spacing: .12em; }
.afa-exec-points h3 { margin: 0 0 10px; font-size: 1rem; font-weight: 600; color: #F5EEDC; letter-spacing: .05em; }
.afa-exec-points p { margin: 0; font-size: .86rem; line-height: 1.9; color: #AEB6C4; }
.afa-exec-btn { display: inline-block; padding: 17px 34px; border: 1px solid #B8923F; color: #0A1220; background: linear-gradient(135deg, #D9B866, #B8923F); text-decoration: none; font-weight: 700; font-size: .92rem; letter-spacing: .06em; border-radius: 2px; transition: transform .2s, box-shadow .2s; }
.afa-exec-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(184,146,63,.35); }
.afa-exec-btn.is-disabled { background: transparent; color: #94A3B8; border-color: #475569; cursor: default; box-shadow: none; transform: none; }
@media (max-width: 640px) { .afa-exec { padding: 40px 18px 36px; } .afa-exec-points li { border-left: none; border-top: 1px solid rgba(184,146,63,.3); padding: 18px 4px; } .afa-exec-points li:first-child { border-top: none; } .afa-exec-btn { padding: 15px 18px; font-size: .86rem; } }

.afa-2fa-bar { display: none; list-style: none; margin: 18px 0 22px; padding: 0; gap: 8px; }
.afa-2fa.is-wizard .afa-2fa-bar { display: flex; }
.afa-2fa-bar li { flex: 1; padding: 8px 4px; text-align: center; font-size: .78rem; color: #94A3B8; border-bottom: 3px solid #E5E7EB; }
.afa-2fa-bar li.on { color: #0B1729; font-weight: 700; border-color: #B8923F; } .afa-2fa-bar li.done { color: #166534; border-color: #86EFAC; }
.afa-2fa-step { padding: 6px 0 14px; } .afa-2fa-step h3 { margin: 18px 0 10px; font-size: 1.02rem; color: #0B1729; }
.afa-2fa-step p, .afa-2fa-step li { line-height: 1.85; font-size: .9rem; }
.afa-2fa-apps { margin: 10px 0 0 18px; }
.afa-2fa-qrrow { display: flex; gap: 26px; flex-wrap: wrap; align-items: center; margin-top: 12px; }
.afa-2fa-qr { width: 208px; min-height: 208px; padding: 6px; background: #fff; border: 1px solid #E5E7EB; border-radius: 8px; }
.afa-2fa-qr svg { display: block; width: 100%; height: auto; }
.afa-2fa-secret { display: inline-block; padding: 10px 14px; font-size: 1.05rem; letter-spacing: .12em; background: #F8FAFC; border: 1px dashed #B8923F; border-radius: 8px; word-break: break-all; }
.afa-2fa-codes { list-style: none; margin: 12px 0; padding: 14px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; background: #F8FAFC; border: 1px solid #E5E7EB; border-radius: 10px; }
.afa-2fa-codes code { font-size: 1rem; letter-spacing: .1em; }
.afa-2fa-check { display: flex !important; flex-direction: row !important; align-items: center; gap: 10px; font-weight: 600; margin: 12px 0; }
.afa-2fa-check input { width: 18px; height: 18px; }
.afa-2fa-input { font-size: 1.4rem !important; letter-spacing: .3em; text-align: center; max-width: 240px; }
.afa-2fa-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 10px; }
.afa-2fa:not(.is-wizard) .afa-2fa-nav { display: none; }
.afa-member-form-label { display: flex; flex-direction: column; gap: 6px; font-weight: 600; margin-bottom: 14px; }
.afa-2fa-manage { margin-top: 12px; border-top: 1px solid #F1F5F9; padding-top: 10px; } .afa-2fa-manage summary { cursor: pointer; font-weight: 600; }
.afa-2fa-newcodes { padding: 14px 16px; margin: 10px 0; border: 1px solid #B8923F; border-radius: 10px; background: #FFFBEB; }
