:root {
    --home-primary: #0e8a7d;
    --home-primary-dark: #0a6b61;
    --home-primary-light: #e6f4f2;
    --home-accent: #f59e0b;
    --home-text: #1f2937;
    --home-muted: #6b7280;
    --home-border: #e5e7eb;
    --home-bg: #f5f7f9;
    /* 权益对比选中态：跟随主题色 */
    --cmp-selected-bg: linear-gradient(135deg, rgba(var(--home-primary-rgb),.10), rgba(var(--home-primary-rgb),.03));
    --cmp-selected-border: var(--home-primary);
    --cmp-selected-shadow: 0 4px 16px -4px rgba(var(--home-primary-rgb),.40);
}

* { -webkit-tap-highlight-color: transparent; }

body {
    background: var(--home-bg);
    color: var(--home-text);
    font-size: 15px;
    padding-bottom: env(safe-area-inset-bottom);
}

a { text-decoration: none; }

.home-container { max-width: 1080px; }

/* ===== PC 顶部导航 ===== */
.home-navbar {
    background: linear-gradient(135deg, var(--home-primary-dark), var(--home-primary));
    box-shadow: 0 2px 8px rgba(14, 138, 125, .25);
    padding: .6rem 0;
}
.home-navbar .navbar-brand { font-size: 1.1rem; letter-spacing: .5px; }
.home-nav-link {
    color: rgba(255,255,255,.82);
    font-size: .95rem;
    padding: .35rem .7rem;
    border-radius: 8px;
    transition: all .15s;
    white-space: nowrap;
}
.home-nav-link:hover { color: #fff; background: rgba(255,255,255,.12); }
.home-nav-link.active { color: #fff; background: rgba(255,255,255,.2); font-weight: 600; }

/* ===== 移动端顶部标题栏 ===== */
.home-mobile-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    background: linear-gradient(135deg, var(--home-primary-dark), var(--home-primary));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .15rem .9rem;
    font-size: .95rem;
    box-shadow: 0 2px 6px rgba(14, 138, 125, .2);
}

/* 移动端右上角登录/退出 */
.home-mobile-right {
    color: #fff !important;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: opacity .15s;
}
.home-mobile-right:hover { opacity: .75; }

.home-mobile-login {
    font-size: 1.7rem;
    width: 38px;
    height: 38px;
    min-width: 38px;
    min-height: 38px;
    line-height: 1;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

.home-mobile-avatar {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    min-height: 38px !important;
    gap: 0 !important;
    font-size: 1.7rem;
    flex-shrink: 0;
}
.home-mobile-avatar > img,
.home-mobile-avatar > i:first-child {
    width: 1.7rem !important;
    height: 1.7rem !important;
    border-radius: 50%;
    object-fit: cover;
    background: #e5e7eb;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
}
.home-mobile-avatar > i:last-child {
    display: none;  /* 旧退出图标已移除 */
}

/* ===== 移动端底部 Tab（中间凸起：验票入园） ===== */
.home-tabbar {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 1040;
    display: flex;
    align-items: stretch;
    background: #fff;
    border-top: 1px solid var(--home-border);
    padding: 4px 0 calc(4px + env(safe-area-inset-bottom));
    box-shadow: 0 -2px 10px rgba(0,0,0,.05);
    overflow: visible;
}
.home-tabbar { position: fixed; }
.home-tabbar-side {
    flex: 1;
    display: flex;
}
/* 左侧最后一个 tab 靠近占位符处加间距 */
.home-tabbar-left  { justify-content: flex-end; }
.home-tabbar-left  .home-tab:last-child { margin-right: 8px; }
/* 中间占位：68px + 两侧各 8px = 84px */
.home-tabbar-placeholder {
    width: 84px;
    flex-shrink: 0;
    height: 0;
    visibility: hidden;
}
/* 右侧第一个 tab 靠近占位符处加间距 */
.home-tabbar-right { justify-content: flex-start; }
.home-tabbar-right .home-tab:first-child { margin-left: 8px; }

.home-tab {
    flex: 1;
    text-align: center;
    padding: .45rem 0 .35rem;
    color: var(--home-muted);
    font-size: .72rem;
    line-height: 1.3;
    text-decoration: none;
}
.home-tab i { font-size: 1.25rem; display: block; margin-bottom: .15rem; }
.home-tab.active { color: var(--home-primary); font-weight: 600; }

/* home-tabbar-center 脱离 tabbar flex，用 absolute 定位覆盖 */
.home-tabbar-center {
    position: absolute;   /* 关键：脱离 flex 流，不被 tabbar 任何 overflow 裁 */
    left: 50%;
    bottom: calc(36px + env(safe-area-inset-bottom) - 34px);  /* 按钮 68px 高，向下偏移 34px → 一半在 tabbar 上，一半伸出 */
    transform: translateX(-50%);
    width: 68px;
    height: 68px;
    flex-shrink: 0;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    z-index: 1050;
}
/* 开放标签显示 shadow root 内容的关键：必须显式 display */
.home-tabbar-center > wx-open-launch-weapp,
.home-tabbar-center.wx-open-launch-weapp {
    display: block;
    width: 68px;
    height: 68px;
}
.home-ticket-inner {
    position: absolute;
    left: 50%;
    bottom: -4px;
    transform: translateX(-50%);
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--home-primary-dark), var(--home-primary));
    color: #fff;
    box-shadow: 0 4px 12px rgba(var(--home-primary-rgb), .4), 0 2px 6px rgba(0,0,0,.15);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: transform .15s;
}
.home-ticket-inner:active { transform: translateX(-50%) scale(.93); }
.home-ticket-inner i { font-size: 1.5rem; line-height: 1; margin-bottom: 1px; }
.home-ticket-inner span { font-size: .58rem; line-height: 1; white-space: nowrap; letter-spacing: .02em; }

/* 主内容区为底部 tab 留位（仅移动端） */
@media (max-width: 767.98px) {
    .home-main { padding-bottom: 64px; }
}

/* ===== 通用美化弹窗（替代原生 alert / confirm） ===== */
.home-msgbox-mask {
    position: fixed; inset: 0;
    background: rgba(0,0,0,0);
    transition: background .22s;
    z-index: 2000;
    display: flex; align-items: center; justify-content: center;
}
.home-msgbox-mask.show { background: rgba(0,0,0,.4); }
.home-msgbox {
    width: 290px;
    background: #fff;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 12px 40px rgba(0,0,0,.18);
    opacity: 0;
    transform: scale(.92);
    transition: opacity .22s, transform .22s;
    animation-timing-function: cubic-bezier(.2,.9,.3,1.2);
}
.home-msgbox.show { opacity: 1; transform: scale(1); }
.home-msgbox-title {
    padding: 18px 16px 6px;
    text-align: center;
    font-size: 16px;
    font-weight: 600;
    color: #1c1c1e;
    letter-spacing: .02em;
}
.home-msgbox-body {
    padding: 4px 20px 18px;
    text-align: center;
    font-size: 14px;
    line-height: 1.6;
    color: #64646b;
    white-space: pre-wrap;
    word-break: break-word;
}
.home-msgbox-actions {
    border-top: .5px solid #e5e5ea;
    display: flex;
}
.home-msgbox-actions-split .home-msgbox-btn {
    flex: 1;
    border-radius: 0;
    border-right: .5px solid #e5e5ea;
}
.home-msgbox-actions-split .home-msgbox-btn:last-child { border-right: none; }
.home-msgbox-btn {
    flex: 1;
    padding: 12px 0 13px;
    border: none;
    background: none;
    font-size: 16px;
    cursor: pointer;
    color: #1c1c1e;
    transition: background .12s;
    font-family: inherit;
    -webkit-tap-highlight-color: transparent;
}
.home-msgbox-btn:active { background: rgba(0,0,0,.06); }
.home-msgbox-btn-primary { color: #2563eb; font-weight: 500; }
.home-msgbox-btn-danger  { color: #dc2626; font-weight: 500; }
.home-msgbox-btn-cancel  { color: #64646b; }

/* ===== 通用卡片 ===== */
.home-card {
    background: #fff;
    border: 1px solid var(--home-border);
    border-radius: 12px;
    padding: .9rem 1rem;
    margin-bottom: .75rem;
    transition: box-shadow .15s;
}
.home-card:active { box-shadow: 0 2px 10px rgba(0,0,0,.08); }
@media (min-width: 768px) {
    .home-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.07); }
}

/* 等级徽章 */
.lv-badge {
    display: inline-block;
    font-size: .72rem;
    font-weight: 700;
    padding: .1rem .45rem;
    border-radius: 5px;
    color: #fff;
    line-height: 1.5;
}
.lv-5 { background: #dc2626; }
.lv-4 { background: #ea580c; }
.lv-3 { background: #ca8a04; }
.lv-2 { background: #2563eb; }
.lv-1 { background: #6b7280; }

/* 标签 */
.home-tag {
    display: inline-block;
    font-size: .74rem;
    padding: .12rem .5rem;
    border-radius: 20px;
    background: var(--home-primary-light);
    color: var(--home-primary-dark);
    margin-right: .35rem;
    margin-bottom: .25rem;
    border: 1px solid transparent;
}
.home-tag.warn { background: #fff7ed; color: #c2410c; }
.home-tag.gray { background: #f3f4f6; color: #6b7280; }
.home-tag.blue { background: #eff6ff; color: #1d4ed8; }
/* 景区名是链接时，保持 tag 外观 */
a.home-tag.cmp-scenic-link { text-decoration: none; cursor: pointer; }
a.home-tag.cmp-scenic-link:hover { opacity: 0.75; }

/* 区块标题 */
.home-section-title {
    font-size: 1rem;
    font-weight: 700;
    margin: 1.1rem 0 .65rem;
    display: flex;
    align-items: center;
    gap: .4rem;
}
.home-section-title::before {
    content: '';
    width: 4px;
    height: 1rem;
    border-radius: 2px;
    background: var(--home-primary);
}

/* 空状态 */
.home-empty {
    text-align: center;
    color: var(--home-muted);
    padding: 2.5rem 1rem;
}
.home-empty i { font-size: 2.6rem; opacity: .35; display: block; margin-bottom: .6rem; }

/* ========== 友好提示（空结果 + 其他卡可去） ========== */
.home-empty-hint { padding: 1.5rem 0; }
.home-empty-hint-title { font-size: 1.02rem; color: #1f2937; margin-bottom: 4px; }
.home-empty-hint-title b { color: var(--home-primary); }
.home-empty-hint-sub { font-size: .88rem; color: #6b7280; margin-bottom: 16px; }
.home-hint-cards {
    max-width: 460px;
    margin: 0 auto;
    text-align: left;
}
.home-hint-card-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    margin-bottom: 8px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    cursor: pointer;
    transition: all .15s;
}
.home-hint-card-item:hover {
    border-color: var(--home-primary);
    background: #f0fdf4;
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(16,185,129,.12);
}
.home-hint-card-item > i:first-child {
    width: 32px; height: 32px;
    border-radius: 8px;
    background: linear-gradient(135deg, var(--home-primary), var(--home-primary-dark));
    color: #fff; font-size: 1rem;
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.home-hint-card-name {
    flex: 1 1 auto;
    min-width: 0;
}
.home-hint-card-name { font-size: .9rem; font-weight: 600; color: #1f2937; line-height: 1.35; }
.home-hint-card-scenic {
    display: block;
    font-size: .78rem;
    color: #9ca3af;
    margin-top: 2px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.home-hint-card-action {
    flex-shrink: 0;
    font-size: .82rem;
    color: var(--home-primary);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 3px;
    line-height: 1;
    padding: 4px 10px;
    border-radius: 14px;
    border: 1px solid var(--home-primary);
    transition: all .15s;
    white-space: nowrap;
}
.home-hint-card-action i {
    font-size: 1rem;
    line-height: 1;
    font-family: "bootstrap-icons" !important;
    font-style: normal;
    transform: translateY(4px);
}
.home-empty-hint-tip { margin-top: 12px; }

/* 骨架/加载 */
.home-loading { text-align: center; color: var(--home-muted); padding: 2rem 0; }
.spinner-border { color: var(--home-primary) !important; }

/* 价格强调 */
.home-price { color: #dc2626; font-weight: 700; }
.home-value { color: var(--home-primary-dark); font-weight: 700; }

/* 卡类型分组标题 */
.home-type-title {
    background: var(--home-primary-light);
    color: var(--home-primary-dark);
    font-weight: 700;
    border-radius: 8px;
    padding: .5rem .8rem;
    margin: 1rem 0 .6rem;
    font-size: .95rem;
}

/* 选择条 */
.home-pick-bar {
    position: sticky;
    top: 40px;
    z-index: 1020;
    background: rgba(245,247,249,.95);
    backdrop-filter: blur(6px);
    padding: .6rem 0;
}
@media (min-width: 768px) {
    .home-pick-bar { top: 56px; }
}

/* 共享组聚合卡 */
.home-group-card {
    border-left: 4px solid #0891b2;
    background: rgba(var(--home-primary-rgb), .08);
}

/* 卡多选下拉 */
.home-multiselect { position: relative; }
.home-multiselect .form-select,
.home-treeselect .form-select {
    background-image: none;   /* 去掉原生 select 箭头，只保留右侧 bi 图标 */
    padding-right: .75rem;
}
.home-multiselect-menu,
.home-treeselect-menu {
    left: 0;
    right: 0;
    top: 100%;
    margin-top: .3rem;
}
.home-multiselect-menu {
    max-height: 320px;
    overflow-y: auto;
    padding: .25rem 0;
    font-size: 1rem;
}
.home-multiselect-menu .ms-type {
    padding: .3rem .9rem .15rem;
    font-size: .9rem;
    color: #94a3b8;
    font-weight: 600;
}
.home-multiselect-menu .form-check {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    padding: .28rem .9rem;
    min-height: auto;
}
.home-multiselect-menu .form-check .form-check-input {
    position: static;
    margin: 0;
    flex-shrink: 0;
}
.home-multiselect-menu .form-check .form-check-label {
    margin: 0;
    white-space: normal;
}
.home-multiselect-menu .form-check:hover { background: rgba(var(--home-primary-rgb), .08); }
.home-multiselect-menu .ms-count { color: #94a3b8; font-size: .88rem; }
.home-multiselect-menu .ms-year { font-size: 1rem; font-weight: 500; }
.home-multiselect .form-select { cursor: pointer; }
.home-multiselect .form-select i.bi-chevron-down { flex-shrink: 0; }
/* 多选按钮内文字 span 必须 min-width:0 才能让 text-truncate 真正截断 */
.home-multiselect #pickCardText { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== 紧凑筛选区 ===== */
.filter-card { padding: .55rem .65rem; margin-bottom: .6rem; }
.filter-row { display: grid; gap: 8px; }
.filter-row + .filter-row { margin-top: 10px; }
/* 卡选择框：单列撑满整行 */
.filter-row-1 { grid-template-columns: 1fr; }
.filter-row-2 { grid-template-columns: minmax(0,1fr); }
.filter-keyword { grid-column: 1 / -1; }
.filter-region { grid-column: 1 / -1; }
.filter-card .form-control-sm,
.filter-card .form-select-sm,
.filter-card .input-group-sm > .form-control,
.filter-card .input-group-sm > .input-group-text,
.filter-card .input-group-sm > .btn {
    font-size: .85rem;
    border-radius: 7px;
}
.filter-card .input-group-sm > .form-control,
.filter-card .input-group-sm > .input-group-text {
    padding-top: .2rem;
    padding-bottom: .2rem;
}
.filter-card .input-group-text { color: var(--home-muted); }
.filter-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem;
    margin-top: 4px;
    font-size: .74rem;
    line-height: 1.35;
}
.filter-meta > span:empty { display: none; }
/* 提示/假期都隐藏时不占高度 */
.filter-meta:has(> span.d-none:only-child),
.filter-meta:has(> #dateHint.d-none + #holidayBadge.d-none) { display: none; }

/* 日期 —— 独立一行，左边"使用日期"小标签 + 整行日期控件（仅移动端） */
.filter-row-date {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
}
.filter-row-date::before {
    content: '使用日期';
    font-size: 13px;
    font-weight: 500;
    color: #6c757d;
    white-space: nowrap;
    flex-shrink: 0;
    padding-left: 2px;
}
@media (max-width: 767px) {
    /* 移动端：filter-row-date 改成块布局，伪元素隐藏（假框自带日历图标） */
    .filter-row-date::before { display: none; }
    .filter-row-date { display: block; }
    .filter-date-fake-wrap { width: 100%; }
}
.filter-row-date .filter-date-wrap {
    flex: 1 1 auto;
    min-width: 0;
}

/* PC 端（>=768px）：日期行跟选卡行并排，不显示"使用日期"标签 */
@media (min-width: 768px) {
    .filter-card {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 6px 10px;
    }
    .filter-card > .filter-row-1,
    .filter-card > .filter-row-date { margin: 0; }
    .filter-card > .filter-row-date::before { display: none; }
    /* 后续所有元素都占满整行 */
    .filter-card > .filter-row-2,
    .filter-card > .filter-meta,
    .filter-card > .filter-expire,
    .filter-card > .filter-actions { grid-column: 1 / -1; }
}
.filter-date-wrap {
    position: relative;
    display: inline-block;
    width: 100%;
}
.filter-date-wrap .input-group { width: 100%; }
.filter-date-wrap .input-group .form-control {
    color: transparent; /* 默认隐藏原生 placeholder（年/月/日） */
}
/* WebKit：隐藏原生文字但保留日历图标 */
.filter-date-wrap .input-group .form-control::-webkit-datetime-edit { color: transparent; }
.filter-date-wrap .input-group .form-control::-webkit-calendar-picker-indicator {
    opacity: .55;
    cursor: pointer;
}
/* 有值时恢复 */
.filter-date-wrap.has-value .input-group .form-control { color: var(--bs-body-color, #212529); }
.filter-date-wrap.has-value .input-group .form-control::-webkit-datetime-edit { color: inherit; }

/* overlay（自定义 placeholder）—— 只覆盖 input 区域，不进入按钮 */
.filter-date-overlay {
    position: absolute;
    top: 50%;
    left: 12px;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #9ca3af;
    font-size: 14px;
    font-weight: 400;
    pointer-events: none; /* 穿透点击到 date input */
    user-select: none;
    white-space: nowrap;
    transition: opacity .15s ease;
    /* 让 overlay 停在按钮之前 */
    max-width: calc(100% - 120px);
    overflow: hidden;
}
.filter-date-overlay i { font-size: 15px; }
.filter-date-wrap.has-value .filter-date-overlay { opacity: 0; }

/* 右侧"所有日期"按钮 */
.filter-date-reset {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-left: none;
    border-radius: 0 .375rem .375rem 0;
    background: #f8fafc;
    color: #6c757d;
    font-size: 13px;
    font-weight: 500;
    padding: 0 10px;
    white-space: nowrap;
    transition: background-color .15s, color .15s;
}
.filter-date-reset:hover {
    background: #eef2f7;
    color: var(--home-primary, #0d9488);
}
.filter-date-reset:active { background: #e2e6eb; }
.filter-date-reset i { font-size: 14px; }
/* 移动端紧凑化 */
@media (max-width: 575px) {
    .filter-date-reset span { display: none; }
    .filter-date-reset { padding: 0 10px; }
}
/* 有值时按钮变高亮，提示可以清 */
.filter-date-wrap.has-value .filter-date-reset {
    background: var(--home-primary, #0d9488);
    color: #fff;
    border-color: var(--home-primary, #0d9488);
}
.filter-date-wrap.has-value .filter-date-reset:hover {
    background: var(--home-primary-dark, #0f766e);
    color: #fff;
}

/* 过期筛选开关 —— 精致 iOS 风格 */
.filter-expire {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 22px;
    margin-top: 10px;
}
.filter-expire .home-filter-switch {
    margin: 0;
    padding-left: 0;
    font-size: 14.5px;
    line-height: 1;
    color: #555e66;
    user-select: none;
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}
.filter-expire .home-filter-switch .form-check-input {
    /* 轨道 */
    position: relative;
    width: 40px;
    height: 22px;
    margin: 0;
    border: none;
    border-radius: 22px;
    background-color: #e3e6ea;
    box-shadow: none;
    background-image: none;
    flex-shrink: 0;
    transition: background-color .25s cubic-bezier(.4,0,.2,1);
    -webkit-appearance: none;
    appearance: none;
}
.filter-expire .home-filter-switch .form-check-input::before {
    /* 圆球 */
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0,0,0,.18), 0 1px 3px rgba(0,0,0,.08);
    transform: translateX(0);
    transition: transform .25s cubic-bezier(.4,0,.2,1);
}
.filter-expire .home-filter-switch .form-check-input:checked {
    background-color: var(--home-primary, #0d9488);
}
.filter-expire .home-filter-switch .form-check-input:checked::before {
    transform: translateX(18px);
}
.filter-expire .home-filter-switch .form-check-input:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px rgba(13, 148, 136, .28);
}
/* 禁用态：灰轨道 + 降低透明度 + 禁用鼠标事件（checkbox.disabled 覆盖开关行为） */
.filter-expire .home-filter-switch.is-disabled {
    opacity: .55;
    cursor: not-allowed;
    color: #9aa3ad;
}
.filter-expire .home-filter-switch.is-disabled .form-check-input:disabled {
    background-color: #e3e6ea;  /* 强制轨道保持未选中灰色 */
    cursor: not-allowed;
}
.filter-expire .home-filter-switch.is-disabled .form-check-input:checked:disabled {
    background-color: #d4d8dd;  /* 就算意外被选中，也是灰的 */
}

.filter-actions { display: flex; gap: 6px; margin-top: 10px; }
.filter-actions .btn {
    padding-top: .3rem;
    padding-bottom: .3rem;
    font-size: .88rem;
    border-radius: 7px;
}
.filter-actions #btnReset { flex: 0 0 66px; }
.filter-actions #btnQuery { flex: 1 1 auto; font-weight: 600; }

@media (min-width: 768px) {
    .filter-card { padding: .7rem .85rem; }
    /* PC：卡+日期一行；关键词+地区一行；操作按钮独占底部一行 */
    .filter-row-1 { grid-template-columns: minmax(0,1.9fr) minmax(0,1fr); }
    .filter-row-2 { grid-template-columns: minmax(0,1.25fr) minmax(0,2fr); }
    .filter-keyword { grid-column: auto; }
    .filter-region { grid-column: auto; }
    .filter-actions #btnReset { flex: 0 0 96px; }
}

/* 多卡权益标签 */
.home-cardtags { display: flex; flex-wrap: wrap; gap: .3rem; }

/* 按地区分块显示 */
.home-region-block { margin-bottom: .3rem; }
.home-region-head {
    font-size: .88rem;
    font-weight: 700;
    color: var(--home-primary);
    padding: .5rem .55rem .2rem;
    background: #f5f7fa;
    border-radius: 8px 8px 0 0;
    margin-bottom: .15rem;
}
.home-region-cnt {
    font-size: .72rem;
    font-weight: 400;
    color: var(--home-muted);
    margin-left: .3rem;
}
.home-region-block .home-card {
    background: var(--home-scenic-bg);
    border: 1px solid var(--home-scenic-bg);
    border-radius: 10px;
    box-shadow: 0 2px 2px rgba(0, 0, 0, 0.27);
}

/* 权益手册：home-card-wrap 内的 db-scenic */
.home-card-wrap > .db-scenic {
    background: var(--home-scenic-bg);
    border: 1px solid var(--home-scenic-bg);
    border-radius: 10px;
    box-shadow: 0 2px 2px rgba(0, 0, 0, 0.27);
    padding: 16px 16px;
    border-bottom: none;
    margin: 0;
}
.home-card-wrap > .db-scenic:last-child {
    border-bottom: none;
}

/* 权益手册景区卡 — 子元素宽松排版 */
.home-card-wrap > .db-scenic .db-scenic-head {
    gap: 12px;
}
.home-card-wrap > .db-scenic .db-scenic-name {
    font-size: .95rem;
}
.home-card-wrap > .db-scenic .db-scenic-body {
    margin-top: 10px;
    font-size: .82rem;
}
.home-card-wrap > .db-scenic .db-scenic-benefit {
    gap: 7px;
    margin-bottom: 6px;
}
.home-card-wrap > .db-scenic .db-scenic-meta {
    line-height: 1.8;
}
.home-card-wrap > .db-scenic .db-use-dates,
.home-card-wrap > .db-scenic .db-instructions {
    margin-top: 4px;
}

/* 景区卡 + 卡权益块 组合 */
.home-card-wrap {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .08);
    margin-bottom: 14px;
    /* 给 absolute 定位的 sticky 头部提供基准（截断时用） */
    position: relative;
    /* 不能 overflow:hidden —— 否则 absolute 头部会被裁 */
    overflow: visible;
}
.home-card-wrap > .home-card-top {
    border-radius: 10px 10px 0 0;
    margin: 0;
    padding: 12px 14px;
    box-shadow: 0 2px 2px rgba(0, 0, 0, 0.27);
    background: var(--home-scenic-bg);
    transition: border-radius .15s ease, box-shadow .15s ease;
}

/* ========= JS 驱动的头部定位类 ========= */
/* 1) normal：还没滚到吸顶点，头部 static */
.home-card-wrap.is-sticky > .home-card-top.st-normal {
    position: static;
}
/* 2) fixed：吸顶中（含正常吸顶 + 截断跟随两种子模式，JS 动态设 top/left/width） */
.home-card-wrap.is-sticky > .home-card-top.st-fixed {
    position: fixed;
    z-index: 50;
    border-radius: 0;
}

/* fixed 时用来撑住文档流的占位 div，高度 = 头部高度 */
.home-card-top-placeholder {
    /* 宽度由 wrap 撑开 */
}

/* 移动端：top 值由 JS 动态读取 CSS media query，无需额外规则 */
.home-card-wrap .hb-list {
    border-top: 1px dashed #e5ecf1;
    padding: 6px 0 10px;
}

/* 单条权益行 */
.hb-row {
    position: relative;
    margin: 10px 10px 12px;
    padding: 8px 10px 8px 14px;
    border-radius: 8px;
    border-left: 3px solid var(--home-primary);
    background: #fafcfb;
}
.hb-row.hb-notstart { border-left-color: #e74c3c; background: #fff8f8; }
.hb-row.hb-soon    { border-left-color: #e67e22; background: #fef7ef; }
.hb-row.hb-expired  { border-left-color: #c0c6cf; background: #f5f7fa; opacity: .78; }
.hb-row.hb-expired * { color: #8b95a5 !important; }  /* 强制所有子元素灰 */
.hb-row.hb-expired .hb-range { text-decoration: line-through; }
.hb-row.hb-inactive { border-left-color: #a674d9; background: #f7f2fb; opacity: .85; }

.hb-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 8px;
    font-size: .9rem;
    line-height: 1.35;
}
.hb-type {
    color: #64748b;
    font-size: .85rem;
}
.hb-ver {
    font-weight: 600;
    color: #1f2937;
    font-size: .92rem;
}
.hb-row.hb-soon    .hb-ver { color: #b85b0a; }
.hb-row.hb-expired .hb-ver { color: #9aa3b2 !important; border-color: #c0c6cf !important; background: #eef1f5 !important; }
.hb-row.hb-inactive .hb-ver { color: #7e58a8 !important; }
.hb-row.hb-notstart .hb-ver { color: #c0392b !important; }
.hb-row.hb-notstart .hb-benefit { color: #c0392b; }
.hb-row.hb-notstart .hb-range { color: #c0392b; }
.hb-row.hb-expired .hb-status { color: #6b7280 !important; }

.hb-status {
    margin-left: auto;
    font-size: .7rem;
    padding: 1px 7px;
    border-radius: 10px;
    font-weight: 500;
    white-space: nowrap;
}
.hb-status.hb-avail    { background: rgba(var(--home-primary-rgb),.12); color: var(--home-primary, #0b6e64); }
.hb-status.hb-soon     { background: rgba(230,126,34,.15); color: #b85b0a; }
.hb-status.hb-expired  { background: #eef1f5; color: #6b7280; }
.hb-status.hb-inactive { background: #efe6f8; color: #7e58a8; }
.hb-status.hb-notstart { background: #fde8e8; color: #d63031; font-weight: 600; }

.hb-body {
    margin-top: 3px;
    font-size: .85rem;
    line-height: 1.5;
    color: #334155;
}
.hb-row.hb-expired  .hb-body,
.hb-row.hb-inactive .hb-body { color: #8b95a5; }

.hb-benefit {
    font-weight: 600;
    color: #0e8a7d;
}
.hb-row.hb-soon    .hb-benefit { color: #b85b0a; }
.hb-row.hb-expired  .hb-benefit { color: #8b95a5; }
.hb-row.hb-inactive .hb-benefit { color: #8b95a5; }

.hb-range {
    margin-top: 2px;
    color: #6a8a85;
}
.hb-row.hb-expired  .hb-range { color: #a8b0be; text-decoration: line-through; }
.hb-row.hb-soon     .hb-range { color: #c87a18; }

.hb-rule {
    margin-top: 2px;
    color: #475569;
}
.hb-reserve {
    display: inline-block;
    font-size: .68rem;
    padding: 1px 5px;
    border-radius: 4px;
    background: #f1f5f9;
    color: #64748b;
    margin-right: 4px;
}

/* 去预约按钮 */
.hb-row.has-reserve {
    padding-bottom: 36px;
}
.hb-reserve-btn {
    position: absolute;
    right: 10px;
    bottom: 8px;
    font-size: .72rem;
    padding: 3px 10px;
    border-radius: 12px;
    background: var(--home-primary, #0e8a7d);
    color: #fff;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    line-height: 1.3;
    box-shadow: 0 1px 3px rgba(var(--home-primary-rgb),.25);
    transition: transform .1s ease, box-shadow .1s ease;
}
.hb-reserve-btn:hover {
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 2px 6px rgba(var(--home-primary-rgb),.35);
}
.hb-row.hb-expired .hb-reserve-btn,
.hb-row.hb-inactive .hb-reserve-btn {
    background: #9aa3b2;
    box-shadow: none;
}

/* 权益差异对比表 */
.hb-compare {
    margin-top: 10px;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    overflow: hidden;
    background: #fafbfc;
}
.hb-compare-head {
    font-size: .78rem;
    font-weight: 600;
    color: #4b5563;
    padding: 8px 12px;
    background: linear-gradient(180deg, #f3f4f6 0%, #eef1f5 100%);
    border-bottom: 1px solid #e5e7eb;
}
.hb-compare-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.hb-compare-table {
    width: 100%;
    min-width: 380px;
    border-collapse: collapse;
    font-size: .76rem;
}
.hb-compare-table th,
.hb-compare-table td {
    padding: 8px 10px;
    text-align: left;
    vertical-align: top;
    border-bottom: 1px solid #eef1f5;
    white-space: nowrap;
}
.hb-compare-table td { white-space: normal; line-height: 1.4; }
.hb-compare-table thead th {
    font-size: .76rem;
    font-weight: 700;
    background: #fff;
    padding: 10px 10px;
    position: sticky; top: 0; z-index: 1;
}
.hb-compare-table tbody tr:last-child td { border-bottom: none; }
.hb-compare-lbl {
    font-weight: 600;
    color: #6b7280;
    background: #f9fafb;
    width: 68px;
    flex-shrink: 0;
}
.hb-reserve-inline {
    display: inline-block;
    padding: 1px 6px;
    background: #fef3c7;
    color: #92400e;
    border-radius: 4px;
    font-size: .72rem;
    font-weight: 600;
}
/* 景区本身的"需预约"徽章（比卡权益层的标记更小，在卡片标题行右侧） */
.hb-reserve-inline-sm {
    display: inline-block;
    padding: 0 5px;
    background: linear-gradient(135deg, #fef3c7, #fde68a);
    color: #92400e;
    border-radius: 8px;
    font-size: .62rem;
    font-weight: 700;
    border: 1px solid #fbbf24;
    line-height: 1.3;
    white-space: nowrap;
    flex-shrink: 0;
    margin-left: auto;
}
/* 移动端：表头更紧凑 */
@media (max-width: 575px) {
    .hb-compare-table th, .hb-compare-table td { padding: 6px 8px; font-size: .72rem; }
    .hb-compare-lbl { width: 60px; }
}

/* 权益差异汇总区块 */
.hb-diff-summary {
    margin-bottom: 16px;
    border: 1px solid #f0a030;
    border-radius: 12px;
    background: linear-gradient(180deg, #fffaf3 0%, #fff 100%);
    overflow: hidden;
}
.hb-diff-summary-head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    background: linear-gradient(180deg, #f59e0b 0%, #d97706 100%);
    color: #fff;
    font-size: .82rem;
    font-weight: 600;
}
.hb-diff-summary-head i:first-child { font-size: 1rem; }
.hb-diff-summary-cnt {
    margin-left: auto;
    font-size: .72rem;
    background: rgba(255,255,255,.25);
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 500;
}
.hb-diff-summary-toggle {
    width: 26px; height: 26px;
    padding: 0; border: none; background: rgba(255,255,255,.2);
    color: #fff; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    transition: transform .2s;
}
.hb-diff-summary-toggle:hover { background: rgba(255,255,255,.35); }
.hb-diff-summary-toggle[aria-expanded="true"] i { transform: rotate(180deg); }
.hb-diff-summary-body { padding: 4px 14px 10px; }
.hb-diff-item { padding: 12px 4px 4px; }
.hb-diff-item-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
    flex-wrap: wrap;
}
.hb-diff-scenic-name {
    font-weight: 700;
    font-size: .86rem;
    color: #1f2937;
    text-decoration: none;
}
.hb-diff-scenic-name:hover { color: #2563eb; text-decoration: underline; }
.hb-diff-scenic-region,
.hb-diff-scenic-cnt { font-size: .72rem; color: #6b7280; }
.hb-diff-scenic-cnt {
    margin-left: auto;
    background: #eff6ff;
    color: #2563eb;
    padding: 2px 8px;
    border-radius: 10px;
}
.hb-diff-divider {
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, #f3d8a3 30%, #f3d8a3 70%, transparent 100%);
    margin: 10px 0;
}

/* 导出按钮条 */
.home-export-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 6px 2px 10px;
}
.home-export-bar .btn-outline-success { color: #198754; border-color: #28a745; }
.home-export-bar .btn-outline-success:hover,
.home-export-bar .btn-outline-success:focus {
    color: #fff; background-color: #198754; border-color: #198754;
}
.home-export-bar .btn-outline-danger { color: #dc3545; border-color: #dc3545; }
.home-export-bar .btn-outline-danger:hover,
.home-export-bar .btn-outline-danger:focus {
    color: #fff; background-color: #dc3545; border-color: #dc3545;
}

/* 打印样式（浏览器 Ctrl+P / 另存为 PDF 时只打列表） */
@media print {
    body { background: #fff !important; }
    .home-filter-card, .home-navbar, #pager, .home-tab-bar,
    .home-export-bar, .filter-actions, .dropdown-menu { display: none !important; }
    .home-region-block .home-card-wrap { box-shadow: none !important; border: 1px solid #ddd; page-break-inside: avoid; }
    .hb-row { page-break-inside: avoid; }
    #searchResult { margin: 0 !important; }
}

/* 弹窗关闭按钮（仅移动端显示） —— iOS 风格：圆形半透明毛玻璃 + 柔和阴影 */
.home-menu-close {
    display: none;
    position: absolute;
    top: 10px;          /* 父容器 padding-top 10px + 内容行高 34px = 首行总高 ~54px，按钮 32px，居中 */
    right: 12px;
    z-index: 3;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .85);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    color: #475569;
    font-size: 1rem;
    line-height: 1;
    align-items: center;
    justify-content: center;
    padding: 0;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .12), 0 0 0 1px rgba(15, 23, 42, .06);
    transition: background .15s, transform .1s;
}
.home-menu-close:hover { background: rgba(255, 255, 255, .95); color: #0f172a; }
.home-menu-close:active { transform: scale(.92); background: #fff; }

/* 移动端卡多选弹窗底部确认按钮 */
@media (max-width: 767.98px) {
    .home-confirm-wrap {
        border-top: 1px solid #eef2f5;
        padding-top: .5rem;
    }
    .home-confirm-wrap .btn-primary {
        background: var(--home-primary);
        border-color: var(--home-primary);
        font-weight: 500;
    }
    .home-confirm-wrap .btn-primary:active {
        background: var(--home-primary-dark, #0b6e64);
        border-color: var(--home-primary-dark, #0b6e64);
    }
}

/* 移动端：卡多选/地区树下拉以居中弹窗呈现（超大阴影作遮罩，点遮罩=点外部自动收起） */
@media (max-width: 767.98px) {
    .home-multiselect-menu.show,
    .home-treeselect-menu.show {
        position: fixed;
        left: 10px;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
        width: auto !important;
        max-width: none;
        max-height: 72vh;
        margin-top: 0;
        border-radius: 14px;
        z-index: 1090;
        padding-top: 0;              /* 去掉顶部内边距，蓝条贴顶 */
        box-shadow: 0 8px 30px rgba(15, 23, 42, .25), 0 0 0 100vmax rgba(15, 23, 42, .45);
    }
    .home-treeselect-menu.show { max-height: 78vh; }
    /* 关闭按钮：紧贴顶部蓝条区域内居中 */
    .home-menu-close {
        display: inline-flex;
        top: 5px;
        right: 12px;
        transform: none;
    }
    /* 蓝条：紧顶弹窗顶部，关闭按钮正好在蓝条内部上下居中 */
    .home-multiselect-menu > .form-check:first-of-type,
    .home-treeselect-menu > .tree-all {
        padding: .45rem 44px .45rem .9rem;
        min-height: 42px;
        display: flex;
        align-items: center;
    }
    /* 关闭按钮按下 */
    .home-menu-close:active { transform: scale(.92); }
}

/* AI帮选模态框内卡选项文字放大 */
.ai-pick-modal .home-multiselect-menu {
    font-size: 1.05rem;
}
.ai-pick-modal .home-multiselect-menu .form-check-label.small {
    font-size: 1rem;
}
.ai-pick-modal .home-multiselect-menu .ms-type {
    font-size: .92rem;
}

.home-cardtags .home-tag { font-size: .76rem; }
.home-tag .ms-label { color: var(--home-primary); font-weight: 600; margin-right: .2rem; }

/* 景区列表距我 — 浅灰小字号，与地址/区划保持一致的视觉层级 */
.hb-dist {
    display: inline-block;
    color: #94a3b8;
    font-size: .78rem;
    font-weight: 500;
    margin-left: 2px;
}

/* 地区树单选下拉 */
.home-treeselect { position: relative; }
.home-treeselect-menu {
    max-height: 340px;
    overflow-y: auto;
    padding: .25rem 0;
    font-size: .9rem;
}
.home-treeselect-menu .tree-item {
    display: flex;
    align-items: center;
    gap: .35rem;
    padding: .42rem .9rem;
    cursor: pointer;
    white-space: nowrap;
}
.home-treeselect-menu .tree-item:hover { background: rgba(var(--home-primary-rgb), .08); }
.home-treeselect-menu .tree-item.selected { background: rgba(var(--home-primary-rgb), .10); color: var(--home-primary); font-weight: 600; }
.home-treeselect-menu .tree-item.selected .tree-count { color: var(--home-primary); }
.home-treeselect-menu .tree-toggle {
    width: 1.15rem;
    text-align: center;
    color: #94a3b8;
    flex-shrink: 0;
    transition: transform .15s;
}
.home-treeselect-menu .tree-toggle.leaf { visibility: hidden; }
.home-treeselect-menu .tree-toggle.expanded { transform: rotate(90deg); }
.home-treeselect-menu .tree-name { flex: 1; overflow: hidden; text-overflow: ellipsis; }
.home-treeselect-menu .tree-count { color: #94a3b8; font-size: .78rem; flex-shrink: 0; }
.home-treeselect-menu .tree-children { display: none; }
.home-treeselect-menu .tree-children.expanded { display: block; }
.home-treeselect-menu .tree-depth-1 { padding-left: 2.1rem; }
.home-treeselect-menu .tree-depth-2 { padding-left: 3.3rem; }
.home-treeselect-menu .tree-all { font-size: .9rem; }

/* 对比悬浮按钮 */
.compare-bar {
    position: fixed;
    left: 50%;
    /* 和验票凸起共用 safe-area 参考系，iOS Safari 地址栏滚动时保持间距恒定 */
    /* 验票 top = calc(70px + safe-area)，加 16px 间距 → bottom = calc(86px + safe-area) */
    bottom: calc(86px + env(safe-area-inset-bottom));
    transform: translateX(-50%);
    z-index: 1035;
    background: var(--home-primary);
    color: #fff !important;
    padding: .6rem 1.6rem;
    border-radius: 30px;
    font-size: .92rem;
    font-weight: 600;
    box-shadow: 0 4px 16px rgba(14, 138, 125, .4);
    white-space: nowrap;
}
.compare-bar:active { background: var(--home-primary-dark); }
@media (min-width: 768px) {
    .compare-bar { bottom: 40px; }
}

/* 表单控件紧凑化（移动端）—— 注意：不能把 form-control/form-select 缩到 < 16px，否则 iOS 聚焦会 zoom */
@media (max-width: 767.98px) {
    .btn { font-size: .9rem; }
    .input-group-text { font-size: .9rem; }
    body { font-size: 14px; }
}

/* ===== iOS Safari 防输入框聚焦自动放大 ===== */
html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}
@media (max-width: 767px) {
    /* 强制所有表单控件 ≥ 16px，iOS 聚焦不再缩放 */
    input, select, textarea,
    .form-control, .form-select,
    .form-control-sm, .form-select-sm,
    .form-control-lg, .form-select-lg,
    .input-group-sm .form-control,
    .input-group-sm .form-select,
    .input-group-lg .form-control,
    .input-group-lg .form-select {
        font-size: 16px !important;
        -webkit-text-size-adjust: 100%;
    }
}

/* ===== 返回顶部按钮 ===== */
.home-back-top {
    position: fixed;
    right: 16px;
    /* 以 tabbar 高度为基准 + 上移 20px */
    bottom: calc(56px + env(safe-area-inset-bottom) + 8px + 20px);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: none;
    background: linear-gradient(135deg, var(--home-primary-dark), var(--home-primary));
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(14, 138, 125, .35);
    z-index: 1035;  /* 低于 modal-backdrop(1040),确保弹窗能盖住返回顶部 */
    opacity: 0;
    transform: translateY(10px);
    transition: opacity .25s ease, transform .25s ease, box-shadow .15s ease;
    pointer-events: none;
}
.home-back-top.show {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}
.home-back-top:hover { box-shadow: 0 6px 20px rgba(14, 138, 125, .45); }
.home-back-top:active { transform: translateY(2px); }
@media (max-width: 767px) {
    /* 移动端顺序（从下往上）：返回顶部 → 足迹 → 公众号 */
    .home-back-top {
        bottom: calc(56px + env(safe-area-inset-bottom) + 6px + 20px);
        right: 12px;
        width: 42px;
        height: 42px;
    }
}
@media print { .home-back-top { display: none !important; } }

/* ===== 我的足迹悬浮按钮（返回顶部正上方） ===== */
.home-fp-fab {
    position: fixed;
    right: 16px;
    /* tabbar + safe-area + 返回顶部(上移20) + 返回顶部按钮高 + 间距 → 足迹也跟着上移 */
    bottom: calc(56px + env(safe-area-inset-bottom) + 8px + 20px + 44px + 8px);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--home-primary-dark), var(--home-primary));
    color: #fff !important;
    text-decoration: none;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(var(--home-primary-rgb), .35);
    transition: transform .15s, box-shadow .15s;
    z-index: 1030;
    line-height: 1;
    font-size: 1.15rem;
}
.home-fp-fab:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(var(--home-primary-rgb), .5);
}
.home-fp-fab:active { transform: translateY(1px); }
.home-fp-fab-label {
    font-size: .55rem;
    margin-top: 1px;
    font-weight: 600;
    letter-spacing: .3px;
}
@media (max-width: 767px) {
    .home-fp-fab {
        bottom: calc(56px + env(safe-area-inset-bottom) + 6px + 20px + 42px + 6px);
        right: 12px;
        width: 42px;
        height: 42px;
        font-size: 1.1rem;
    }
    .home-fp-fab-label { display: none; }
}
@media print { .home-fp-fab { display: none !important; } }

/* ===== 进入公众号悬浮按钮（我的足迹正上方） ===== */
.home-official-btn {
    position: fixed;
    right: 16px;
    /* tabbar + safe-area + 返回顶部(上移10) + 足迹 + 两次间距 */
    bottom: calc(56px + env(safe-area-inset-bottom) + 8px + 10px + 44px + 8px + 44px + 8px);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--home-primary);
    color: #fff !important;
    text-decoration: none;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(var(--home-primary-rgb), .4);
    transition: transform .15s, box-shadow .15s;
    z-index: 1030;
    line-height: 1;
    font-size: 1.15rem;
}
.home-official-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(7, 193, 96, .55);
}
.home-official-btn-label {
    font-size: .55rem;
    margin-top: 1px;
    font-weight: 600;
    letter-spacing: .3px;
}
@media (max-width: 767px) {
    .home-official-btn {
        bottom: calc(56px + env(safe-area-inset-bottom) + 6px + 10px + 42px + 6px + 42px + 6px);
        right: 12px;
        width: 42px;
        height: 42px;
    }
}
@media print { .home-official-btn { display: none !important; } }

/* ===== AI帮我选悬浮按钮（始终显示） ===== */
/* 默认：公众号 absent → 坐足迹正上方 */
.home-ai-pick-btn {
    position: fixed;
    right: 16px;
    /* tabbar + safe + backTop base(8+20) + 足迹(44+8) + 自己(44+8) */
    bottom: calc(56px + env(safe-area-inset-bottom) + 8px + 20px + 44px + 8px + 44px + 8px);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--home-primary-dark), var(--home-primary));
    color: #fff !important;
    text-decoration: none;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(var(--home-primary-rgb), .4);
    transition: transform .15s ease, box-shadow .15s ease;
    z-index: 1030; /* 低于 modal-backdrop(1040) 和 modal(1050)，确保弹窗打开时不遮挡 */
    line-height: 1;
    font-size: 1.15rem;
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}
/* 公众号 present → 坐公众号正上方 */
.home-official-btn + .home-ai-pick-btn {
    bottom: calc(56px + env(safe-area-inset-bottom) + 8px + 10px + 44px + 8px + 44px + 8px + 44px + 8px);
}
.home-ai-pick-btn.show {
    /* 兼容 home.js 仍在 toggle .show，但已经不控制显隐 */
}
.home-ai-pick-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(var(--home-primary-rgb), .55);
}
.home-ai-pick-btn:active { transform: translateY(1px); }
.home-ai-pick-btn-label {
    font-size: .55rem;
    margin-top: 1px;
    font-weight: 600;
    letter-spacing: .3px;
}
@media (max-width: 767px) {
    .home-ai-pick-btn {
        bottom: calc(56px + env(safe-area-inset-bottom) + 6px + 20px + 42px + 6px + 42px + 6px);
        right: 12px;
        width: 42px;
        height: 42px;
        font-size: 1.1rem;
    }
    .home-official-btn + .home-ai-pick-btn {
        bottom: calc(56px + env(safe-area-inset-bottom) + 6px + 10px + 42px + 6px + 42px + 6px + 42px + 6px);
    }
    .home-ai-pick-btn-label { display: none; }
}
@media print { .home-ai-pick-btn { display: none !important; } }

/* ===== 卡对比页 ===== */
.cmp-table-wrap { border-radius: 12px; }
.cmp-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.cmp-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: .88rem;
    table-layout: auto;
    min-width: 520px;
}
.cmp-table col.cmp-col-label { width: 140px; }
.cmp-table col.cmp-col-val { min-width: 140px; }
.cmp-table thead th {
    background: linear-gradient(180deg, rgba(var(--home-primary-rgb),.04) 0%, rgba(var(--home-primary-rgb),.12) 100%);
    border-bottom: 2px solid var(--home-primary);
    padding: 10px 14px;
    font-weight: 600;
    text-align: center;
    white-space: nowrap;
    position: relative;
}
.cmp-table th.sticky-left,
.cmp-table td.sticky-left {
    position: sticky;
    left: 0;
    z-index: 2;
    background: #fff;
}
.cmp-table thead th.sticky-left {
    background: linear-gradient(180deg, rgba(var(--home-primary-rgb),.04) 0%, rgba(var(--home-primary-rgb),.12) 100%);
    z-index: 3;
}
.cmp-th-rowhome {
    background: #f8fafc !important;
    border-bottom: 2px solid #cbd5e1 !important;
    font-size: .82rem;
    color: #64748b;
    font-weight: 600;
    text-align: left !important;
}
.cmp-th-col.cmp-best-col {
    background: linear-gradient(180deg, rgba(var(--home-primary-rgb),.15) 0%, var(--home-primary) 100%) !important;
    color: #fff !important;
}
.cmp-th-col.cmp-best-col .cmp-card-sub { color: rgba(255,255,255,.85) !important; }
.cmp-card-year { font-size: .78rem; color: var(--home-muted); }
.cmp-card-ver { font-size: 1.05rem; font-weight: 700; color: var(--home-text); }
.cmp-card-sub { font-size: .72rem; color: #94a3b8; margin-top: 2px; }
.cmp-th-col.cmp-best-col .cmp-card-year { color: rgba(255,255,255,.8); }
.cmp-th-col.cmp-best-col .cmp-card-ver { color: #fff; }
.cmp-table tbody tr td {
    padding: 9px 14px;
    border-bottom: 1px solid #f1f5f9;
    text-align: center;
    color: var(--home-text);
    vertical-align: middle;
}
.cmp-table tbody tr:last-child td { border-bottom: none; }
.cmp-table tbody tr:hover td { background: #fafcfb; }
.cmp-table tbody tr td.sticky-left {
    background: #fff;
    text-align: left;
    font-size: .85rem;
    color: #475569;
    font-weight: 500;
}
.cmp-table tbody tr:hover td.sticky-left { background: #fafcfb; }
.cmp-td-best {
    background: rgba(var(--home-primary-rgb),.10) !important;
    color: var(--home-primary, #0b6e64) !important;
    font-weight: 700;
}
.cmp-td-best.sticky-left {
    background: rgba(var(--home-primary-rgb),.10) !important;
}
.cmp-table tr.cmp-group-row td {
    background: #f1f5f9;
    padding: 4px 14px;
}
.cmp-group-label {
    font-size: .75rem;
    font-weight: 700;
    color: #64748b;
    letter-spacing: 1px;
}
.cmp-unique {
    color: #d97706;
    font-weight: 700;
    font-size: 1rem;
}

/* 景区重合度进度条 */
.cmp-summary .cmp-overlap {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.cmp-overlap-label {
    font-weight: 600;
    color: #475569;
    font-size: .9rem;
}
.cmp-overlap-bar {
    height: 10px;
    background: #e2e8f0;
    border-radius: 6px;
    overflow: hidden;
}
.cmp-overlap-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--home-primary) 0%, var(--home-accent) 100%);
    border-radius: 6px;
    transition: width .4s ease;
}
.cmp-overlap-num {
    font-size: .82rem;
    color: var(--home-muted);
}

/* 标签云 */
.cmp-chip-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

/* 移动端优化：sticky left 加阴影提示 */
@media (max-width: 767px) {
    .cmp-table col.cmp-col-label { width: 110px; }
    .cmp-table col.cmp-col-val { min-width: 130px; }
    .cmp-table { font-size: .82rem; min-width: 440px; }
    .cmp-table thead th,
    .cmp-table tbody tr td { padding: 8px 10px; }
    .cmp-card-ver { font-size: .95rem; }
    .cmp-table th.sticky-left {
        box-shadow: 3px 0 6px -3px rgba(0,0,0,.12);
    }
    .cmp-table td.sticky-left {
        box-shadow: 3px 0 6px -3px rgba(0,0,0,.08);
    }
}

/* ===== A 级景区彩色徽章 ===== */
.lv-chip-group {
    display: inline-flex;
    gap: 4px;
    flex-wrap: wrap;
}
.lv-chip {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: .72rem;
    border-radius: 12px;
    padding: 1px 8px 1px 3px;
    line-height: 1.5;
    font-weight: 500;
    transition: transform .12s;
}
.lv-chip:active { transform: scale(.95); }
.lv-chip-tag {
    font-weight: 700;
    font-size: .68rem;
    padding: 1px 4px;
    border-radius: 8px;
    color: #fff;
    line-height: 1.4;
}
.lv-chip-num {
    font-weight: 700;
    font-size: .78rem;
}
/* 5A 红金 */
.lv-chip-5 {
    background: #fff1f0;
    color: #cf1322;
    border: 1px solid #ffa39e;
}
.lv-chip-5 .lv-chip-tag { background: linear-gradient(135deg, #ff4d4f, #cf1322); }
/* 4A 橙色 */
.lv-chip-4 {
    background: #fff7e6;
    color: #d46b08;
    border: 1px solid #ffd591;
}
.lv-chip-4 .lv-chip-tag { background: linear-gradient(135deg, #fa8c16, #d46b08); }
/* 3A 金黄 */
.lv-chip-3 {
    background: #fffbe6;
    color: #ad6800;
    border: 1px solid #ffe58f;
}
.lv-chip-3 .lv-chip-tag { background: linear-gradient(135deg, #faad14, #ad6800); }
/* 2A 青蓝 */
.lv-chip-2 {
    background: #e6f7ff;
    color: #096dd9;
    border: 1px solid #91d5ff;
}
.lv-chip-2 .lv-chip-tag { background: linear-gradient(135deg, #1890ff, #096dd9); }

/* ===== 对比页筛选栏 ===== */
.cmp-filter { padding: 14px 16px; }
.cmp-filter-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.cmp-filter-row:last-child { margin-bottom: 0; }
.cmp-filter-label {
    flex: 0 0 auto;
    font-size: .82rem;
    color: #52c41a;
    font-weight: 600;
    min-width: 68px;
}
/* 等级 chip 按钮 */
.cmp-filter-chip {
    border: 1px solid #d9d9d9;
    background: #fff;
    border-radius: 14px;
    padding: 2px 12px;
    font-size: .78rem;
    color: #595959;
    font-weight: 600;
    line-height: 1.6;
    cursor: pointer;
    transition: all .15s;
    user-select: none;
}
.cmp-filter-chip:hover { border-color: #10b981; color: #10b981; }
.cmp-filter-chip.active {
    background: linear-gradient(135deg, #10b981, #0d9488);
    border-color: #0d9488;
    color: #fff;
    box-shadow: 0 2px 6px rgba(16, 185, 129, .3);
}
/* 筛选摘要 */
.cmp-filter-summary { padding-top: 6px; }

/* 等级徽章（版本列表） */
.home-tag.cmp-lv { font-size: 0.75rem; padding: 2px 8px; font-weight: 600; }
.home-tag.cmp-lv:first-of-type { background: var(--home-card-bg); }

.cmp-filter-active {
    display: inline-block;
    font-size: .8rem;
    padding: 3px 10px;
    background: #f0fdf4;
    border: 1px solid #86efac;
    border-radius: 12px;
    color: #166534;
}
/* 筛选无结果空状态 */
.cmp-empty-filter {
    background: #fff;
    border-radius: 12px;
    border: 1px dashed #d9d9d9;
}

/* 响应式：筛选栏 */
@media (max-width: 767px) {
    .cmp-filter { padding: 12px; }
    .cmp-filter-row { gap: 6px; margin-bottom: 6px; }
    .cmp-filter-label { font-size: .78rem; min-width: 60px; }
    .cmp-filter-chip { padding: 2px 10px; font-size: .72rem; }
    .cmp-filter-region select { max-width: 100px !important; font-size: .78rem; }
}
/* 禁用的下拉 */
.cmp-filter-region select:disabled {
    background-color: #f5f5f5;
    color: #999;
    cursor: not-allowed;
}

/* ===== 卡列表：选中高亮 ===== */
.cmp-card {
    transition: border-color .2s, box-shadow .25s, background .2s;
    position: relative;
}
/* 选中态：主题色边框 + 渐变背景 + 阴影 */
.cmp-card-selected {
    border-color: var(--cmp-selected-border) !important;
    background: var(--cmp-selected-bg) !important;
    box-shadow: var(--cmp-selected-shadow);
}
/* 选中态左侧加竖条 */
.cmp-card-selected::before {
    content: '';
    position: absolute;
    left: -1px; top: 14px; bottom: 14px;
    width: 3px;
    background: linear-gradient(180deg, var(--home-primary), var(--home-primary-dark));
    border-radius: 0 3px 3px 0;
}
/* 选中态标题颜色加深 */
.cmp-card-selected > div:first-child .fw-bold {
    color: var(--home-primary-dark);
}
/* 选中态 checkbox 主题色 */
.cmp-card-selected .cmp-check {
    accent-color: var(--home-primary);
}

/* ===== 权益手册 ===== */
/* 卡概览头部 */
.db-card-overview {
    background: linear-gradient(135deg, var(--home-primary-light), #fff);
    border: 1px solid rgba(var(--home-primary-rgb),.15);
}
.db-card-header {
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}
.db-card-year {
    font-size: .72rem;
    background: var(--home-primary);
    color: #fff;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 600;
}
.db-card-ver {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--home-primary-dark);
}
.db-card-type {
    font-size: .82rem;
    color: var(--home-muted);
}
.db-card-meta {
    margin-top: 8px;
    font-size: .78rem;
    color: var(--home-muted);
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
.db-card-meta .db-phone-link {
    color: var(--home-muted);
    text-decoration: none;
    transition: color .15s;
}
.db-card-meta .db-phone-link:hover,
.db-card-meta .db-phone-link:active {
    color: var(--home-primary);
    text-decoration: underline;
}
.db-card-stats {
    display: flex;
    margin-top: 14px;
    gap: 0;
    border-top: 1px dashed rgba(var(--home-primary-rgb),.2);
    padding-top: 12px;
}
.db-stat {
    flex: 1;
    text-align: center;
}
.db-stat-num {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--home-primary-dark);
    line-height: 1.1;
}
.db-stat-label {
    font-size: .72rem;
    color: var(--home-muted);
    margin-top: 2px;
}
.db-stat + .db-stat {
    border-left: 1px dashed rgba(var(--home-primary-rgb),.2);
}

/* section 标题 */
.db-section-title {
    font-size: .92rem;
    font-weight: 700;
    color: var(--home-primary-dark);
    padding-bottom: 8px;
    border-bottom: 1px solid var(--home-border);
    margin-bottom: 4px;
}

/* 地区分组 */
.db-region-block {
    margin-top: 12px;
}
.db-region-block + .db-region-block {
    border-top: 1px dashed var(--home-border);
    padding-top: 8px;
}
.db-region-name {
    font-size: .85rem;
    font-weight: 600;
    color: #374151;
    padding: 4px 0;
}
.db-region-count {
    display: inline-block;
    background: #f3f4f6;
    color: #6b7280;
    font-size: .7rem;
    border-radius: 8px;
    padding: 0 7px;
    margin-left: 6px;
    line-height: 1.5;
}

/* 景区卡片 */
.db-scenic {
    padding: 10px 0;
    border-bottom: 1px dashed #f0f0f0;
}
.db-scenic-link {
    display: block;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: transform .12s, box-shadow .12s;
}
.db-scenic-link:hover {
    transform: translateY(-1px);
}
.db-scenic:last-child {
    border-bottom: none;
}
.db-scenic-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}
.db-scenic-left {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    min-width: 0;
}
.db-scenic-name {
    font-weight: 600;
    font-size: .88rem;
    color: var(--home-text);
}
.db-scenic-body {
    margin-top: 6px;
    font-size: .78rem;
}
.db-scenic-benefit {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    align-items: center;
    margin-bottom: 4px;
}
.db-scenic-meta {
    color: var(--home-muted);
}
.db-use-dates {
    margin-top: 4px;
    color: #92400e;
    background: #fffbeb;
    padding: 2px 8px;
    border-radius: 6px;
    font-size: .72rem;
    display: inline-block;
}
.db-use-dates i { margin-right: 4px; }
.db-instructions {
    margin-top: 4px;
    padding: 6px 8px;
    background: #fff7f7;
    border: 1px solid #fecaca;
    border-radius: 6px;
    font-size: .76rem;
    line-height: 1.5;
    color: #7f1d1d;
}

/* 权益徽章 */
.db-badge {
    display: inline-block;
    font-size: .7rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
    line-height: 1.5;
}
.db-free {
    background: #dcfce7;
    color: #166534;
}
.db-free-unlimited {
    background: linear-gradient(135deg, #22c55e, #15803d);
    color: #fff;
    box-shadow: 0 2px 6px rgba(34,197,94,.3);
}
.db-discount {
    background: #fef3c7;
    color: #92400e;
    border: 1px solid #fde68a;
}
.db-holiday-ok {
    font-size: .72rem;
    color: #15803d;
    background: #dcfce7;
    padding: 2px 7px;
    border-radius: 8px;
}
.db-holiday-no {
    font-size: .72rem;
    color: #b91c1c;
    background: #fee2e2;
    padding: 2px 7px;
    border-radius: 8px;
    cursor: help;
}
.db-reserve-text {
    font-size: .72rem;
    color: #b45309;
    background: #fef3c7;
    padding: 2px 7px;
    border-radius: 8px;
}
.db-reserve-btn {
    font-size: .72rem;
    font-weight: 600;
    color: var(--home-primary);
    border: 1px solid var(--home-primary);
    padding: 1px 8px;
    border-radius: 8px;
    text-decoration: none;
    cursor: pointer;
    transition: all .15s;
}
.db-reserve-btn:hover {
    background: var(--home-primary);
    color: #fff;
}

/* ===== 服务入口（多条卡片 / 按钮） ===== */
.db-entries { margin-bottom: 4px; }
.db-entries-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 10px;
    margin-bottom: 10px;
}
.db-entry-card {
    display: block;
    border: 1px solid var(--home-border);
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
    text-decoration: none;
    color: inherit;
    transition: transform .15s, box-shadow .15s, border-color .15s;
}
.db-entry-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,.08);
    border-color: var(--home-primary);
}
.db-entry-card-img { aspect-ratio: 16 / 9; overflow: hidden; background: #f5f5f5; }
.db-entry-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.db-entry-card-body {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 10px;
    font-size: .82rem;
    font-weight: 500;
}
.db-entry-card-body i.bi-chevron-right { margin-left: auto; font-size: .8rem; color: #adb5bd; }
.db-entries-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 8px;
}
.db-entry-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 14px;
    font-size: .82rem;
    font-weight: 500;
    border-radius: 20px;
    text-decoration: none;
    border: 1px solid var(--home-primary);
    color: var(--home-primary);
    background: #fff;
    transition: all .15s;
}
.db-entry-btn:hover { background: var(--home-primary); color: #fff; }
.db-entry-btn.entry-mini { border-color: #07c160; color: #07c160; }
.db-entry-btn.entry-mini:hover { background: #07c160; color: #fff; }
.db-entry-btn-hint { margin-top: 2px; }
.db-entry-card.has-warn { border-color: #dc3545; }
.db-entry-card-warn {
    padding: 2px 10px 8px;
    font-size: .7rem;
    color: #dc3545;
    line-height: 1.4;
}
.db-entry-badge {
    font-size: .62rem;
    padding: 1px 6px;
    border-radius: 10px;
    line-height: 1.4;
    font-weight: 600;
}
.db-entry-badge.h5 { background: #e8f5f3; color: var(--home-primary); }
.db-entry-badge.mini { background: #e8f9ef; color: #07c160; }

/* 顶部 info 气泡提示 */
.home-info-tip-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px; height: 28px;
    background: transparent;
    border: none;
    border-radius: 50%;
    color: #9ca3af;
    cursor: help;
    margin-right: 4px;
    vertical-align: middle;
    font-size: 18px;
    padding: 0;
}
.home-info-tip-btn:hover { color: var(--home-primary); background: rgba(7,193,96,.08); }
.home-info-tip-bubble {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    min-width: 240px;
    max-width: 280px;
    padding: 10px 12px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(0,0,0,.12);
    font-size: .8rem;
    line-height: 1.55;
    color: #374151;
    z-index: 2000;
    animation: homeTipFade .15s ease-out;
}
.home-info-tip-bubble-arrow {
    position: absolute;
    top: -6px;
    right: 34px;
    width: 10px; height: 10px;
    background: #fff;
    border-left: 1px solid #e5e7eb;
    border-top: 1px solid #e5e7eb;
    transform: rotate(45deg);
}
@keyframes homeTipFade {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ===== 我的卡 — 服务入口（图标+文字卡片式，参考图2） ===== */
.my-card-entries {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 14px 10px !important;
    margin-top: 10px;
    margin-bottom: 14px;
    width: 100% !important;
}
.db-entry-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    width: 100% !important;
    padding: 4px 2px;
    text-decoration: none;
    border: none;
    background: transparent;
    cursor: pointer;
    transition: transform .15s;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}
.db-entry-card:active { transform: scale(.95); }
.db-entry-card.entry-mini .db-entry-iconbox { background: #e8f9ef; color: #07c160; }
.db-entry-card.disabled { opacity: .55; cursor: default; pointer-events: none; }

.db-entry-iconbox {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: #e8f5f3;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--home-primary);
    line-height: 1;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
    transition: box-shadow .15s;
}
.db-entry-iconbox svg {
    width: 28px;
    height: 28px;
    display: block;
}
.db-entry-iconbox i {
    font-family: "bootstrap-icons" !important;
    font-size: 28px !important;
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    display: inline-block;
}
.db-entry-card.entry-mini .db-entry-iconbox {
    box-shadow: 0 2px 8px rgba(7,193,96,.08);
}

/* 图片放进 iconbox 同款圆角方块——与图标卡片完全同构 */
.db-entry-imgbox { padding: 3px; background: #fff !important; }
.db-entry-imgbox img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    border-radius: 11px;
}

.db-entry-label {
    font-size: .76rem;
    font-weight: 500;
    color: #333;
    line-height: 1.25;
    text-align: center;
    max-width: 100%;
    word-break: break-all;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.db-entry-card.entry-mini .db-entry-label { color: #222; }

/* PC 端（≥768px）图标更大一点，5 列 */
@media (min-width: 768px) {
    .my-card-entries {
        grid-template-columns: repeat(5, 1fr) !important;
        gap: 16px 14px !important;
    }
    .db-entry-iconbox { width: 60px; height: 60px; font-size: 30px; border-radius: 16px; }
    .db-entry-label { font-size: .8rem; }
}

/* 兼容旧 .db-entry-btn-sm 类名（可能还有外部引用） */
.db-entry-btn-sm {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100% !important;
    padding: 6px 10px;
    font-size: .76rem;
    font-weight: 500;
    border-radius: 14px;
    text-decoration: none;
    border: 1px solid var(--home-primary);
    color: var(--home-primary);
    background: #fff;
    transition: all .15s;
    line-height: 1.4;
    cursor: pointer;
    white-space: nowrap;
    box-sizing: border-box;
}
.db-entry-btn-sm:hover { background: var(--home-primary); color: #fff; text-decoration: none; }
.db-entry-btn-sm.entry-mini { border-color: #07c160; color: #07c160; }
.db-entry-btn-sm.entry-mini:hover { background: #07c160; color: #fff; }

/* 共享权益组 */
.db-group {
    border: 1px solid var(--home-border);
    border-radius: 8px;
    margin-bottom: 8px;
    background: #fafafa;
}
.db-group:last-child { margin-bottom: 0; }
.db-group > summary {
    list-style: none;
    cursor: pointer;
    padding: 10px 12px;
    background: #f3f4f6;
    border-radius: 8px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: background .15s;
}
.db-group > summary:hover { background: #e5e7eb; }
.db-group > summary::-webkit-details-marker { display: none; }
.db-group[open] > summary {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.db-group-name {
    font-weight: 700;
    color: var(--home-primary-dark);
    font-size: .9rem;
}
.db-group-count {
    font-size: .75rem;
    color: var(--home-muted);
}
.db-group-members {
    padding: 8px 12px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-height: 360px;
    overflow-y: auto;
}
.db-group-member {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: .8rem;
}
.db-member-name { flex: 1; color: var(--home-text); }
.db-member-region { flex-shrink: 0; }

/* 移动端适配 */
@media (max-width: 767px) {
    .db-card-stats .db-stat-num { font-size: 1.15rem; }
    .db-card-header .db-card-ver { font-size: 1rem; }
    .db-scenic-name { font-size: .82rem; }
    .db-group-member { font-size: .76rem; }
}

/* ===== 我的旅游卡 ===== */
.my-user-card {
    background: linear-gradient(135deg, var(--home-primary-light), #fff);
    border: 1px solid rgba(var(--home-primary-rgb),.15);
    margin-bottom: 16px;
}
.my-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: #e5e7eb;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
    color: #9ca3af;
}
.my-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.my-avatar i { font-size: 1.5rem; }

/* ===== 小程序入口复制交互 ===== */
.db-mini-toast {
    position: fixed; left: 50%; top: 40%; transform: translate(-50%, -50%) scale(.85);
    z-index: 99999;
    background: rgba(0,0,0,.82); color: #fff;
    padding: 12px 22px; border-radius: 10px; font-size: .85rem;
    max-width: 82vw; text-align: center; line-height: 1.6;
    opacity: 0; transition: opacity .25s ease, transform .25s ease;
    pointer-events: none;
}
.db-mini-toast.show { opacity: 1; transform: translate(-50%, -50%) scale(1); }

.db-copy-card {
    cursor: pointer;
    background: linear-gradient(135deg, #fff 0%, #f0fff4 100%) !important;
    border: 1px solid rgba(7,193,96,.25) !important;
}
.db-copy-card .db-entry-card-body i.bi-clipboard {
    color: var(--home-primary);
    margin-left: auto;
    font-size: .9rem;
}
.db-copy-card:hover { box-shadow: 0 2px 10px rgba(7,193,96,.12); }

.db-entry-copy-hint {
    font-size: .72rem; color: #6c757d; margin-top: 6px; line-height: 1.4;
}
.db-entry-copy-hint i { color: var(--home-primary); }

.db-entry-btn.db-copy-entry {
    background: rgba(7,193,96,.08);
    border-color: rgba(7,193,96,.35);
    cursor: pointer;
}
.db-entry-btn.db-copy-entry:hover {
    background: rgba(7,193,96,.15);
}

.db-entry-btn-sm.db-copy-entry {
    background: rgba(7,193,96,.08);
    border-color: rgba(7,193,96,.35);
    cursor: pointer;
}
.db-entry-btn-sm.db-copy-entry i.bi-clipboard {
    font-size: .72rem;
}

.db-entry-disabled { opacity: .7; cursor: not-allowed; }
.db-entry-btn.disabled { opacity: .6; cursor: not-allowed; text-decoration: line-through; }
.my-card-type-block {
    margin-bottom: 18px;
    padding-bottom: 4px;
}
.my-card-type-block + .my-card-type-block {
    border-top: 1px dashed var(--home-border);
    padding-top: 14px;
}
.my-card-type-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 8px;
    padding: 4px 2px;
}
.my-card-type-title {
    font-size: .95rem;
    font-weight: 600;
    color: var(--home-primary);
    letter-spacing: .3px;
}

.my-card-item { margin-bottom: 10px; }

.my-card-status {
    font-size: .72rem;
    padding: 3px 8px;
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    white-space: nowrap;
}
.my-active {
    background: #dcfce7;
    color: #166534;
}
.my-expired {
    background: #fee2e2;
    color: #b91c1c;
}

.my-empty {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--home-muted);
}
.my-empty > i {
    font-size: 2.8rem;
    color: var(--home-border);
}

/* 导航栏右上角（登录/退出/头像） */
.home-nav-right {
    gap: 14px;
}
.home-nav-right-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-decoration: none !important;
    color: #fff !important;
    transition: opacity .15s;
    font-size: 1.55rem;
    line-height: 1;
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    flex-shrink: 0;
    padding: 0 !important;
    margin: 0 !important;
    overflow: hidden;
    border-radius: 50%;
}
.home-nav-right-btn:hover { opacity: .75; }

.home-nav-login {
    border-radius: 50% !important;
}

.home-nav-right-avatar {
    width: 100% !important;
    height: 100% !important;
    max-width: 42px !important;
    max-height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    border-radius: 50% !important;
    overflow: hidden;
    background: #e5e7eb;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 2px solid rgba(255,255,255,.85);
    box-sizing: border-box;
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1 !important;
}
.home-nav-right-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.home-nav-right-avatar i {
    font-size: 1rem;
    color: #9ca3af;
}

/* 旧选择器兼容（保留避免其他引用报错）*/
.home-nav-user, .home-nav-user-avatar, .home-nav-login-btn { display: none; }

/* ========== 添加卡模态框 ========== */
.bind-type-group { margin-bottom: 4px; }
.bind-type-group + .bind-type-group { margin-top: 12px; }
.bind-type-title {
    font-size: .78rem;
    font-weight: 600;
    color: #6b7280;
    padding: 0 4px 6px;
    display: flex;
    align-items: center;
}
.bind-card-list .bind-option {
    position: relative;
    padding: 14px 16px;
    margin-bottom: 10px;
    border: 2px solid #e5e7eb;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.15s ease;
    background: #fff;
}
.bind-card-list .bind-option:hover {
    border-color: var(--brand);
    background: #f0fdf4;
}
.bind-card-list .bind-option.active {
    border-color: var(--brand);
    background: linear-gradient(135deg, #f0fdf4 0%, #ecfdf5 100%);
    box-shadow: 0 2px 10px rgba(16,185,129,0.15);
}
.bind-card-list .bind-option .bind-check {
    position: absolute;
    top: 12px;
    right: 12px;
    font-size: 1.2rem;
    color: var(--brand);
    opacity: 0;
    transform: scale(0.5);
    transition: all 0.15s ease;
}
.bind-card-list .bind-option.active .bind-check {
    opacity: 1;
    transform: scale(1);
}
.bind-card-list .bind-error {
    padding: 20px;
}

/* ========== Toast ========== */
.home-toast {
    position: fixed;
    top: 72px;
    left: 50%;
    transform: translate(-50%, -20px);
    padding: 10px 20px;
    border-radius: 24px;
    font-size: 0.9rem;
    font-weight: 500;
    z-index: 9999;
    opacity: 0;
    transition: all 0.25s ease;
    pointer-events: none;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
}
.home-toast.show {
    opacity: 1;
    transform: translate(-50%, 0);
}
.home-toast-success {
    background: #dcfce7;
    color: #15803d;
    border: 1px solid #bbf7d0;
}
.home-toast-error {
    background: #fee2e2;
    color: #b91c1c;
    border: 1px solid #fecaca;
}

/* ========== 卡列表解绑按钮 ========== */
.my-unbind {
    font-size: 0.8rem;
}

/* ========== 首页：用户绑定卡提示条 ========== */
.home-user-card-tip {
    margin-bottom: 0.75rem;
    padding: 0.55rem 0.85rem;
    border-radius: 10px;
    background: linear-gradient(135deg, #eef4ff 0%, #f5efff 100%);
    border: 1px solid #dbe7ff;
    font-size: 0.85rem;
    color: #3b5998;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.3rem;
    animation: tipFadeIn 0.35s ease both;
}
@keyframes tipFadeIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}
.home-user-card-tip b {
    color: #2a4494;
    font-weight: 600;
}
.home-tip-link {
    color: #6c5ce7;
    font-weight: 500;
    text-decoration: none;
    transition: color 0.2s;
}
.home-tip-link:hover {
    color: #4834d4;
    text-decoration: underline;
}

/* ========== 关注公众号弹窗 ========== */
.home-follow-modal .modal-content {
    border-radius: 16px;
    overflow: hidden;
}
.home-follow-qrcode-wrap {
    width: 200px;
    height: 200px;
    margin: 0 auto;
    padding: 10px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid #e5e7eb;
}
.home-follow-qrcode {
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 6px;
    display: block;
}
.home-follow-actions {
    display: flex;
    justify-content: center;
    gap: 8px;
}

/* ========== 个人中心 · 公众号关注状态 ========== */
.home-subscribed-badge {
    display: inline-flex;
    align-items: center;
    font-size: 0.82rem;
    font-weight: 500;
    padding: 3px 10px;
    border-radius: 12px;
    line-height: 1.4;
}
.home-subscribed-yes {
    color: #07c160;
    background: #e8f9ef;
}
.home-subscribed-badge i {
    font-size: 0.9rem;
}
.home-follow-btn {
    display: inline-flex;
    align-items: center;
    font-size: 0.82rem;
    font-weight: 500;
    padding: 4px 12px;
    border-radius: 14px;
    border: 1px solid #07c160;
    background: #07c160;
    color: #fff;
    line-height: 1.4;
    transition: opacity .15s;
    cursor: pointer;
}
.home-follow-btn:active {
    opacity: 0.85;
}
.home-follow-btn i {
    font-size: 0.85rem;
}
.home-official-enter-link {
    display: inline-flex;
    align-items: center;
    padding: 0 2px;
}
.home-official-enter-link:hover i {
    opacity: 0.7;
}

/* ========== 个人中心 ========== */
.profile-user-card {
    border-radius: 12px;
}
.profile-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #f0faf8;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.profile-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.profile-avatar i {
    font-size: 28px;
    color: var(--home-primary);
}
.profile-nickname {
    font-size: 1rem;
    font-weight: 600;
    color: #1f2937;
}
.profile-user-id {
    font-size: .72rem;
    margin-top: 2px;
}
.profile-menu {
    border-radius: 12px;
    overflow: hidden;
}
.profile-menu-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    cursor: pointer;
    transition: background .15s;
    border-bottom: 1px solid #f1f5f9;
    font-size: .9rem;
    color: #374151;
}
.profile-menu-item:last-child {
    border-bottom: none;
}
.profile-menu-item:hover,
.profile-menu-item:active {
    background: #f8fafc;
}
.profile-menu-item > i:first-child {
    font-size: 1.2rem;
    color: var(--home-primary);
}
.profile-menu-item > span {
    flex-grow: 1;
}

/* ========== 仿微信个人资料 cell 列表 ========== */
.wx-cell-group {
    border-radius: 10px;
    overflow: hidden;
    box-shadow: none;
}
.wx-cell-group-title {
    padding: 10px 16px 6px;
    font-size: 0.78rem;
    color: #8a8a8a;
    letter-spacing: 0.02em;
    background: transparent;
}
.wx-cell-item {
    display: flex;
    align-items: center;
    min-height: 50px;
    padding: 0 16px;
    background: #fff;
    cursor: pointer;
    transition: background 0.15s;
    position: relative;
}
.wx-cell-item + .wx-cell-item::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 0.5px;
    background: #e5e5ea;
}
.wx-cell-item:active {
    background: #f2f2f7;
}
.wx-cell-label {
    font-size: 0.94rem;
    color: #1c1c1e;
    flex-shrink: 0;
}
.wx-cell-value {
    font-size: 0.94rem;
    color: #8a8a8a;
    margin-right: 6px;
    max-width: 60%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: right;
}
.wx-cell-arrow {
    color: #c7c7cc;
    font-size: 0.85rem;
    flex-shrink: 0;
}

/* 头像大卡片（首行） */
.wx-profile-hero {
    padding: 0 !important;
    border-radius: 10px;
    overflow: hidden;
}
.wx-profile-hero-item {
    display: flex;
    align-items: center;
    min-height: 72px;
    padding: 0 16px;
    background: #fff;
    cursor: pointer;
}
.wx-profile-hero-item:active { background: #f2f2f7; }
.wx-hero-avatar {
    width: 48px;
    height: 48px;
    border-radius: 8px;
    overflow: hidden;
    background: #e5e5ea;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 10px;
}
.wx-hero-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.wx-hero-avatar i {
    font-size: 1.8rem;
    color: #c7c7cc;
}

/* ===== 仿微信 Modal（编辑器） ===== */
.wx-edit-sheet {
    border-radius: 14px;
    border: none;
    overflow: hidden;
}
.wx-edit-sheet .wx-edit-header {
    padding: 14px 16px;
    border-bottom: 0.5px solid #e5e5ea;
}
.wx-edit-sheet .wx-edit-header .modal-title {
    font-size: 1rem;
    font-weight: 600;
}
.wx-edit-sheet .modal-footer {
    border-top: 0.5px solid #e5e5ea;
    padding: 12px 16px;
}

/* 性别选项：仿微信 ActionSheet 风格 */
.wx-edit-option {
    padding: 16px 18px;
    font-size: 0.95rem;
    color: #1c1c1e;
    cursor: pointer;
    position: relative;
    transition: background 0.12s;
}
.wx-edit-option + .wx-edit-option::before {
    content: '';
    position: absolute;
    left: 18px;
    right: 0;
    top: 0;
    height: 0.5px;
    background: #e5e5ea;
}
.wx-edit-option:active { background: #f2f2f7; }
.wx-edit-option.active::after {
    content: '\2713';  /* ✓ */
    position: absolute;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    color: #07c160;
    font-weight: 700;
    font-size: 1rem;
}

/* ===== 轻量 Toast（仿微信） ===== */
.wx-toast {
    position: fixed;
    left: 50%;
    top: 45%;
    transform: translate(-50%, -50%) scale(0.9);
    background: rgba(30, 30, 30, 0.88);
    color: #fff;
    padding: 10px 18px;
    border-radius: 8px;
    font-size: 0.88rem;
    z-index: 9999;
    opacity: 0;
    transition: opacity 0.2s, transform 0.2s;
    pointer-events: none;
    max-width: 80vw;
    text-align: center;
    white-space: nowrap;
}
.wx-toast.show {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}
.wx-toast.wx-toast-error {
    background: rgba(180, 50, 50, 0.92);
}

/* ===== 生日日期输入框（iOS 风格美化） ===== */
.wx-birthday-picker {
    width: 100%;
    max-width: 300px;
    height: 52px;
    padding: 0 40px 0 16px;
    font-size: 1.05rem;
    font-weight: 500;
    color: #1c1c1e;
    text-align: center;
    border: none;
    border-radius: 12px;
    background: #f2f2f7;
    outline: none;
    position: relative;
    /* 去掉浏览器默认聚焦高亮 */
    box-shadow: none;
    transition: background 0.15s;
}
.wx-birthday-picker:focus {
    background: #e8e8ee;
}
/* 用伪元素添加自定义日历图标 */
.wx-birthday-picker-wrap { position: relative; display: inline-block; }
/* 隐藏 WebKit/Chromium 原生日历图标，换成我们自定义的 */
.wx-birthday-picker::-webkit-calendar-picker-indicator {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    opacity: 0;        /* 透明但保留点击区域 */
    cursor: pointer;
    z-index: 2;
}
/* Firefox 隐藏默认图标 */
.wx-birthday-picker::-moz-calendar-picker-indicator { opacity: 0; }
/* 在 input 后面伪元素加图标 —— 浏览器不支持 ::after 在 input 上，
   所以用 background-image + mask 方案 */
.wx-birthday-picker {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238a8a8a'%3E%3Cpath d='M5 .5a.5.5 0 0 1 .5.5v1h5V.5a.5.5 0 0 1 1 0V1h1.5A1.5 1.5 0 0 1 14 2.5v10a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 12.5v-10A1.5 1.5 0 0 1 3.5 1H5V.5zM3.5 2a.5.5 0 0 0-.5.5V4h10V2.5a.5.5 0 0 0-.5-.5h-9zM13 5H3v7.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V5z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 20px 20px;
    /* 保留浅灰底 */
    background-color: #f2f2f7;
}

/* ========== 搜索历史/热门下 拉面板 ========== */
.filter-keyword {
    position: relative;
}
.home-suggest-panel {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    z-index: 50;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-top: none;
    border-radius: 0 0 10px 10px;
    padding: 10px 12px 12px;
    max-height: 60vh;
    overflow-y: auto;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.hs-block {
    margin-bottom: 10px;
}
.hs-block:last-child {
    margin-bottom: 0;
}
.hs-title {
    font-size: .8rem;
    font-weight: 600;
    color: #6b7280;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 4px;
}
.hs-title i {
    color: var(--home-primary, #088c48);
    font-size: .85rem;
}
.hs-clear {
    margin-left: auto;
    font-size: .72rem;
    font-weight: 400;
    color: #9ca3af;
    text-decoration: none;
}
.hs-clear:hover {
    color: #ef4444;
}
.hs-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 8px;
}
.hs-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    font-size: .78rem;
    border-radius: 14px;
    cursor: pointer;
    user-select: none;
    transition: background .15s;
}
.hs-chip-recent {
    background: #f3f4f6;
    color: #374151;
}
.hs-chip-recent:hover {
    background: #e5e7eb;
}
.hs-chip-hot {
    background: #fef3c7;
    color: #92400e;
    font-weight: 500;
}
.hs-chip-hot:hover {
    background: #fde68a;
}
.hs-rank {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    font-size: .65rem;
    font-style: normal;
    border-radius: 4px;
    background: #fbbf24;
    color: #7c2d12;
    font-weight: 700;
}
.hs-rank.top {
    background: #ef4444;
    color: #fff;
}
.hs-rank-kw {
    max-width: 140px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.hs-empty {
    font-size: .8rem;
    color: #9ca3af;
    text-align: center;
    padding: 10px 0;
}

/* ========== 热门景区（每行一条） ========== */
.hs-hot-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.hs-hot-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    font-size: .82rem;
    cursor: pointer;
    border-radius: 8px;
    transition: background .12s;
    color: #374151;
}
.hs-hot-row:hover {
    background: #f3f4f6;
}
.hs-hot-rank {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    font-style: normal;
    font-size: .7rem;
    font-weight: 700;
    border-radius: 4px;
    background: #e5e7eb;
    color: #6b7280;
    flex-shrink: 0;
}
.hs-hot-rank.hs-rank-top {
    background: #ef4444;
    color: #fff;
}
.hs-hot-name {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 500;
}
.hs-hot-cnt {
    font-size: .72rem;
    color: var(--home-primary, #088c48);
    font-weight: 500;
    flex-shrink: 0;
}
.hs-hot-cnt-zero {
    color: #9ca3af;
    font-weight: 400;
}

/* ========== 搜索联想 ========== */
.hs-suggest-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.hs-suggest-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    font-size: .88rem;
    cursor: pointer;
    border-radius: 8px;
    transition: background .12s;
    color: #374151;
}
.hs-suggest-row:hover {
    background: #f3f4f6;
}
/* 联想列表行政区划标签（直辖市显示省名、其他显示市名）*/
.hs-suggest-region {
    display: inline-block;
    margin-left: 6px;
    padding: 0 6px;
    font-size: 11px;
    line-height: 16px;
    color: #94a3b8;
    background: #f1f5f9;
    border-radius: 8px;
    vertical-align: middle;
}
.hs-suggest-name {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 500;
}
.hs-suggest-name mark {
    background: transparent;
    color: var(--home-primary, #088c48);
    font-weight: 700;
}
.hs-suggest-cnt {
    font-size: .72rem;
    color: #6b7280;
    flex-shrink: 0;
    white-space: nowrap;
}
.hs-suggest-loading,
.hs-suggest-empty {
    padding: 12px;
    text-align: center;
    font-size: .8rem;
    color: #9ca3af;
}

/* 搜索框清除按钮 */
.filter-keyword-clear {
    cursor: pointer;
    border-left: none;
}
.filter-keyword-clear i {
    font-size: 1.05rem;
    color: #9ca3af;
    transition: color .15s;
}
.filter-keyword-clear:hover i {
    color: #ef4444;
}

/* ========== 移动端：联想面板 Bottom Sheet ========== */
@media (max-width: 767px) {
    .home-suggest-panel {
        position: fixed !important;
        left: 0;
        right: 0;
        bottom: 0;
        top: auto !important;
        z-index: 9999;
        background: #fff;
        border: none !important;
        border-radius: 16px 16px 0 0;
        max-height: 65vh;
        box-shadow: 0 -4px 20px rgba(0,0,0,.18);
        padding: 8px 14px 16px;
        transform: translateY(0);
    }
    .home-suggest-panel::before {
        /* 顶部 drag handle */
        content: '';
        display: block;
        width: 36px;
        height: 4px;
        background: #d1d5db;
        border-radius: 2px;
        margin: 2px auto 8px;
    }
    .home-suggest-panel .hs-title {
        font-size: .88rem;
    }
}

/* 遮罩层（JS 动态插入） */
.home-suggest-mask {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.4);
    z-index: 9998;
    display: none;
}

/* ========== 移动端假搜索按钮 ========== */
.filter-keyword-fake {
    width: 100%;
    text-align: left;
    padding: 6px 10px;
    font-size: .85rem;
    border: 1px solid #dee2e6;
    border-radius: 6px;
    background: #fff;
    color: #374151;
    display: flex;
    align-items: center;
    gap: 4px;
}
.filter-keyword-fake:active {
    background: #f3f4f6;
}
.filter-keyword-fake .text-muted {
    color: #9ca3af !important;
}
.filter-keyword-fake.is-filled .text-muted {
    color: #374151 !important;
}

/* 全屏 Modal 内的搜索样式 */
.home-search-modal .modal-header {
    padding: 10px 14px;
}
.home-search-modal .modal-header .btn {
    border-radius: 20px;
    font-size: .88rem;
    padding: 6px 16px;
}
.home-search-modal .modal-body {
    padding: 10px 14px 14px;
    overflow-y: auto;
}
#homeSearchSuggestWrap {
    margin-top: 10px;
}
/* Modal 里的联想面板（直接平铺，不需要 position: absolute） */
#homeSearchSuggestWrap .home-suggest-panel,
#homeSearchSuggestWrap .hs-suggest-list {
    position: static !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
    max-height: none !important;
    transform: none !important;
    border-radius: 0 !important;
}
#homeSearchSuggestWrap .home-suggest-panel::before {
    display: none !important;
}

/* ========== 移动端假搜索框（含内部清除按钮） ========== */
.filter-keyword-fake-wrap {
    position: relative;
    width: 100%;
    display: inline-block;
}
.filter-keyword-fake-wrap .filter-keyword-fake {
    width: 100%;
    padding-right: 36px; /* 给清除按钮让位 */
}
.filter-keyword-fake-wrap .filter-keyword-fake-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 26px;
    height: 26px;
    border: none;
    background: transparent;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 2;
}
.filter-keyword-fake-wrap .filter-keyword-fake-clear:hover,
.filter-keyword-fake-wrap .filter-keyword-fake-clear:active {
    background: #f3f4f6;
}
.filter-keyword-fake-wrap .filter-keyword-fake-clear i {
    font-size: 1.15rem;
    color: #9ca3af;
}
.filter-keyword-fake-wrap .filter-keyword-fake-clear:active i {
    color: #ef4444;
}
.filter-keyword-fake-wrap .filter-keyword-fake.is-filled + .filter-keyword-fake-clear {
    display: flex;
}

/* ========== 移动端日期假框 ========== */
.filter-date-fake-wrap {
    width: 100%;
}
.filter-date-fake {
    width: 100%;
    text-align: left;
    padding: 6px 10px;
    font-size: .85rem;
    border: 1px solid #dee2e6;
    border-radius: 6px;
    background: #fff;
    color: #374151;
    display: flex;
    align-items: center;
    gap: 4px;
    justify-content: space-between;
}
.filter-date-fake:active { background: #f3f4f6; }
.filter-date-fake .text-muted { color: #9ca3af !important; }
.filter-date-fake.has-value .text-muted { color: #374151 !important; }
.filter-date-fake .filter-date-fake-clear {
    margin-left: auto;
    font-size: 1.15rem;
    color: #9ca3af;
}
.filter-date-fake .filter-date-fake-clear:hover { color: #ef4444; }

/* 移动端 Modal 内日期控件 */
.home-search-modal .modal-body input[type="date"] {
    padding: 6px 10px;
}

/* ========== 移动端日期透明叠层：点击直接触发原生日历 ========== */
.filter-date-fake-wrap { position: relative; }
.filter-date-fake-input {
    position: absolute;
    inset: 0;           /* 覆盖整个假按钮区域 */
    opacity: 0;
    z-index: 2;
    cursor: pointer;
    width: 100%;
    height: 100%;
    border: none;
}
/* 清除按钮区不应该触发日历（清除按钮本身是 click stopPropagation，
   但透明 input 会遮挡它——给清除按钮加 z-index 让它在上层 */
.filter-date-fake-wrap .filter-date-fake-clear {
    position: relative;
    z-index: 3;
    cursor: pointer;
}

/* ===== AI 条件弹窗卡片样式 ===== */
.aiq-group { margin-bottom: 18px; }
.aiq-label { display: block; font-size: 14px; font-weight: 500; margin-bottom: 10px; color: #334155; }
.aiq-row { display: flex; flex-wrap: wrap; gap: 10px; }
.aiq-chip {
    border: 1px solid #e2e8f0; background: #fff; border-radius: 10px;
    padding: 9px 16px; font-size: 14px; cursor: pointer;
    transition: all .15s; color: #64748b; font-family: inherit; line-height: 1.4;
    display: inline-flex; align-items: center; gap: 4px;
}
.aiq-chip:hover { border-color: var(--home-primary,#10b981); color: var(--home-primary,#10b981); }
.aiq-chip.sel { background: var(--home-primary,#10b981); color: #fff; border-color: var(--home-primary,#10b981); }
.aiq-date {
    border: 1px solid #e2e8f0; border-radius: 10px; padding: 8px 12px;
    font-size: 14px; color: #334155; width: 100%; max-width: 200px;
}
.aiq-btn-cancel {
    flex: 1; background: #fff; color: #6b7280; border: 1px solid #e5e7eb;
    border-radius: 14px; padding: 12px 16px; font-size: 0.9rem;
    font-weight: 600; cursor: pointer; font-family: inherit;
}
.aiq-btn-cancel:active { transform: scale(0.97); }
@media (max-width: 420px) {
    .aiq-chip { padding: 8px 12px; font-size: 13px; }
    .aiq-row { gap: 8px; }
}

/* ===== AI 自定义人数输入 ===== */
.aiq-count-input {
    border: 1px solid #e2e8f0; border-radius: 10px; padding: 8px 12px;
    font-size: 14px; color: #334155; width: 110px; font-family: inherit;
    -moz-appearance: textfield;
}
.aiq-count-input::-webkit-outer-spin-button,
.aiq-count-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.aiq-count-input:focus { border-color: var(--home-primary,#10b981); outline: none; box-shadow: 0 0 0 2px rgba(16,185,129,.15); }
.aiq-count-apply {
    border: none; background: var(--home-primary,#10b981); color: #fff;
    border-radius: 10px; padding: 8px 12px; font-size: 14px; cursor: pointer;
    font-family: inherit; line-height: 1;
}
.aiq-count-apply:active { transform: scale(.95); }
