/* ============================================================
   NIKO达人 · 现代化设计系统 (H5)
   风格：简洁 / 几何 / 卡片化 / 非动漫
   ============================================================ */
:root {
  --primary: #4f46e5;
  --primary-2: #7c3aed;
  --primary-soft: #eef2ff;
  --accent: #06b6d4;
  --bg: #f4f5f8;
  --card: #ffffff;
  --text: #15181f;
  --muted: #8b90a0;
  --line: #edeef2;
  --danger: #ef4444;
  --success: #10b981;
  --warning: #f59e0b;
  --radius: 16px;
  --radius-sm: 10px;
  --shadow: 0 8px 30px rgba(20, 24, 40, 0.06);
  --shadow-sm: 0 2px 10px rgba(20, 24, 40, 0.05);
  --safe-b: env(safe-area-inset-bottom, 0px);
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
[v-cloak] { display: none !important; }
html, body { margin: 0; padding: 0; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", Roboto, Helvetica, Arial, sans-serif;
  background: var(--bg);
  color: var(--text);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }

/* 手机容器 */
.app-shell {
  max-width: 480px;
  margin: 0 auto;
  min-height: 100vh;
  background: var(--bg);
  position: relative;
  box-shadow: 0 0 60px rgba(0,0,0,0.06);
}

/* 顶部导航 */
.nav-bar {
  position: sticky; top: 0; z-index: 30;
  height: 52px; display: flex; align-items: center; gap: 10px;
  padding: 0 14px; background: rgba(255,255,255,0.92);
  backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--line);
}
.nav-bar .title { font-size: 17px; font-weight: 700; letter-spacing: .3px; }
.nav-bar .left, .nav-bar .right { width: 40px; display: flex; align-items: center; }
.nav-bar .right { justify-content: flex-end; }
.icon-btn { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border-radius: 10px; color: var(--text); font-size: 18px; }
.bell { position: relative; font-size: 20px; cursor: pointer; line-height: 1; }
.bell .dot { position: absolute; top: -6px; right: -8px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 9px; background: #ff4d4f; color: #fff; font-size: 11px; font-style: normal; line-height: 16px; text-align: center; box-shadow: 0 1px 3px rgba(255,77,79,.4); }

/* 消息通知列表 */
.ntf-item { display: flex; align-items: center; gap: 12px; padding: 12px; background: #fff; border-radius: 12px; margin-bottom: 8px; position: relative; }
.ntf-item.unread { background: #fff7f0; }
.ntf-ava { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; flex-shrink: 0; background: #eee; }
.ntf-main { flex: 1; min-width: 0; }
.ntf-text { font-size: 14px; color: var(--text); line-height: 1.45; }
.ntf-time { font-size: 11.5px; color: var(--muted); margin-top: 4px; }
.ntf-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--primary); flex-shrink: 0; }

/* 内容区 */
.page { padding: 14px 14px 90px; }
.page.no-tab { padding-bottom: 24px; }

/* 卡片 */
.card {
  background: var(--card); border-radius: var(--radius);
  box-shadow: var(--shadow-sm); padding: 16px; margin-bottom: 12px;
}
.card-title { font-weight: 700; font-size: 15px; margin-bottom: 12px; display:flex; align-items:center; justify-content:space-between; }

/* 按钮 */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 46px; padding: 0 20px; border-radius: 14px; border: none;
  font-size: 15px; font-weight: 600; cursor: pointer; transition: .15s;
  background: var(--primary-soft); color: var(--primary);
}
.btn-primary { background: linear-gradient(135deg, var(--primary), var(--primary-2)); color: #fff; box-shadow: 0 6px 16px rgba(79,70,229,.20); }
/* 小号按钮/分段切换不投影，避免相邻 tab 互相压光 */
.btn-sm.btn-primary { box-shadow: none; }
.btn-block { width: 100%; }
.btn-ghost { background: transparent; border: 1px solid var(--line); color: var(--text); }
.btn-sm { height: 34px; padding: 0 14px; font-size: 13px; border-radius: 10px; }
.btn:active { transform: scale(.98); }
.btn:disabled { opacity: .5; }

/* 标签/胶囊 */
.chip {
  display: inline-flex; align-items: center; padding: 8px 13px; min-height: 34px; border-radius: 999px;
  background: var(--primary-soft); color: var(--primary); font-size: 12.5px; font-weight: 600;
}
.chip-line { background: #fff; border: 1px solid var(--line); color: var(--text); }
.chip.active { background: linear-gradient(135deg, var(--primary), var(--primary-2)); color: #fff; border: none; }
.tag { display:inline-block; padding:3px 9px; border-radius:8px; background:#f1f2f6; color:#5b6072; font-size:12px; margin:0 6px 6px 0; }

/* 输入 */
.field { margin-bottom: 14px; }
.field label { display:block; font-size:13px; color:var(--muted); margin-bottom:6px; }
.input {
  width: 100%; height: 46px; padding: 0 14px; border-radius: 12px;
  border: 1px solid var(--line); background: #fff; font-size: 15px; color: var(--text); outline: none;
}
.input:focus { border-color: var(--primary); }
textarea.input { height: auto; padding: 12px 14px; resize: vertical; }

/* 头像 */
.avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; background:#e9eaf0; }
.avatar-lg { width: 64px; height: 64px; }

/* 评分星 */
.stars { color: var(--warning); letter-spacing: 1px; }

/* 价格 */
.price { color: var(--primary); font-weight: 800; }
.price small { font-weight: 600; font-size: 12px; }

/* 底部Tab */
.tab-bar {
  position: fixed; bottom: 0; left: 50%; transform: translateX(-50%);
  width: 100%; max-width: 480px; height: calc(58px + var(--safe-b));
  padding-bottom: var(--safe-b);
  background: rgba(255,255,255,.96); backdrop-filter: blur(12px);
  border-top: 1px solid var(--line); display: flex; z-index: 40;
}
.tab-bar .tab { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: var(--muted); font-size: 11px; }
.tab-bar .tab.active { color: var(--primary); }
.tab-bar .tab .ic { font-size: 20px; line-height: 1; }
.tab-bar .tab .tab-icon { width: 22px; height: 22px; margin-bottom: 2px; }

/* 网格 */
.grid { display: grid; gap: 10px; }
.grid-2 { grid-template-columns: repeat(2,1fr); }
.grid-3 { grid-template-columns: repeat(3,1fr); }
.grid-4 { grid-template-columns: repeat(4,1fr); }

/* 横滑分类 */
.scroll-x { display: flex; gap: 10px; overflow-x: auto; padding: 4px 0 8px; scrollbar-width: none; }
.scroll-x::-webkit-scrollbar { display: none; }
.cat-item { flex: 0 0 auto; width: 66px; text-align: center; }
.cat-item .emoji { width: 52px; height: 52px; margin: 0 auto 4px; border-radius: 16px; background: var(--primary-soft); display:flex;align-items:center;justify-content:center; font-size: 26px; }
.cat-item.active .emoji { background: linear-gradient(135deg, var(--primary), var(--primary-2)); }

/* 达人卡 */
.talent-card { display: flex; gap: 12px; }
.talent-card .avatar-lg { flex: 0 0 auto; }
.talent-card .info { flex: 1; min-width: 0; }
.talent-card .name { font-weight: 700; font-size: 15px; }
.talent-card .meta { color: var(--muted); font-size: 12.5px; margin-top: 3px; }
.talent-card .bio { color: #4b5060; font-size: 13px; margin-top: 6px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

/* Banner */
.banner { border-radius: var(--radius); overflow: hidden; margin-bottom: 12px; box-shadow: var(--shadow-sm); }
.banner img { width: 100%; height: 140px; object-fit: cover; }

/* 区块标题 */
.section-head { display:flex; align-items:center; justify-content:space-between; margin: 6px 2px 10px; }
.section-head .t { font-size: 16px; font-weight: 800; }
.section-head .more { color: var(--muted); font-size: 12.5px; }

/* 空态 */
.empty { text-align: center; color: var(--muted); padding: 50px 0; }
.empty .em { font-size: 40px; }

/* 弹层 */
.mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 50; display:flex; align-items:flex-end; justify-content:center; }
.sheet { width: 100%; max-width: 480px; background:#fff; border-radius: 20px 20px 0 0; padding: 18px 18px calc(18px + var(--safe-b)); max-height: 86vh; overflow:auto; }
.sheet-head { display:flex; align-items:center; justify-content:space-between; margin-bottom: 14px; font-weight:700; font-size:16px; }

/* 支付选项 */
.pay-opt { display:flex; align-items:center; justify-content:space-between; padding:14px; border:1px solid var(--line); border-radius:12px; margin-bottom:10px; }
.pay-opt.active { border-color: var(--primary); background: var(--primary-soft); }

/* 文本辅助 */
.muted { color: var(--muted); }
.row { display:flex; align-items:center; justify-content:space-between; }
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}
.divider{height:1px;background:var(--line);margin:12px 0;}

/* 标签状态 */
.badge { font-size:11px; padding:2px 8px; border-radius:6px; font-weight:600; }
.badge-pending{background:#fff7ed;color:#ea580c}
.badge-confirmed{background:#eff6ff;color:#2563eb}
.badge-ongoing{background:#f0fdf4;color:#16a34a}
.badge-completed{background:#f1f5f9;color:#475569}
.badge-cancelled{background:#fef2f2;color:#dc2626}
.badge-refunding{background:#fefce8;color:#ca8a04}
.badge-refunded{background:#f1f5f9;color:#64748b}

/* 隐藏 */
.hidden{display:none!important}
.fade-enter-active,.fade-leave-active{transition:opacity .2s}
.fade-enter-from,.fade-leave-to{opacity:0}

/* 城市选择弹层 */
.city-picker { display: flex; flex-direction: column; max-height: 92vh; }
.city-search { padding: 0 18px 12px; }
.city-current { padding: 14px 18px; background: #f8f9fc; border-top: 1px solid var(--line); }
.city-current .row { margin-bottom: 8px; font-size: 13px; color: var(--muted); }
.city-name { display: inline-block; padding: 6px 14px; border-radius: 10px; background: #fff; border: 1px solid var(--line); font-size: 14px; font-weight: 600; color: var(--primary); margin-bottom: 6px; }
.city-name.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.city-addr { font-size: 12px; color: #5b6072; line-height: 1.5; }
.city-reloc { display: flex; align-items: center; gap: 4px; color: var(--primary); font-weight: 600; }
.city-body { flex: 1; display: flex; overflow: hidden; position: relative; }
.city-list { flex: 1; overflow-y: auto; padding: 0 14px 18px; }
.city-letter { font-size: 13px; font-weight: 700; color: var(--primary); padding: 10px 4px 6px; position: sticky; top: 0; background: #fff; }
.city-item { padding: 12px 4px; border-bottom: 1px solid var(--line); font-size: 14px; }
.city-item.active { color: var(--primary); font-weight: 700; }
.city-index { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; align-items: center; gap: 2px; z-index: 2; }
.city-index > div { width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; font-size: 10px; color: var(--muted); border-radius: 50%; }
.city-index > div.active { background: var(--primary); color: #fff; }

/* 个人中心 */
.mine-header {
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
  color: #fff;
  padding: 28px 18px 22px;
  border-radius: 0 0 24px 24px;
  position: relative; overflow: hidden;
}
.mine-header::after {
  content: ''; position: absolute; right: -40px; top: -40px; width: 160px; height: 160px;
  background: rgba(255,255,255,.12); border-radius: 50%;
}
.mine-user { display: flex; align-items: center; gap: 14px; position: relative; z-index: 1; }
.mine-user .avatar { width: 64px; height: 64px; border: 2px solid rgba(255,255,255,.4); }
.mine-user .name { font-size: 18px; font-weight: 800; display: flex; align-items: center; gap: 6px; }
.mine-user .level { font-size: 11px; background: rgba(255,255,255,.25); padding: 2px 8px; border-radius: 999px; }
.mine-user .phone { font-size: 13px; opacity: .85; margin-top: 4px; }
.mine-stats { display: flex; justify-content: space-around; margin-top: 22px; position: relative; z-index: 1; }
.mine-stats .item { text-align: center; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.mine-stats .item:active { opacity: .7; }
.mine-stats .num { font-size: 22px; font-weight: 800; }
.mine-stats .label { font-size: 12px; opacity: .8; margin-top: 2px; }
.mine-actions { padding: 14px; }
.mine-card { background: var(--card); border-radius: var(--radius); box-shadow: var(--shadow-sm); padding: 16px; margin-bottom: 12px; }
.mine-card-title { font-size: 15px; font-weight: 700; margin-bottom: 14px; }
.mine-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px 8px; }
.mine-grid-item { text-align: center; }
.mine-grid-item .ic { font-family: "Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif; width: 44px; height: 44px; margin: 0 auto 6px; border-radius: 14px; background: linear-gradient(135deg, #eef2ff, #f5f3ff); display: flex; align-items: center; justify-content: center; font-size: 22px; }
.mine-grid-item .txt { font-size: 12px; color: var(--text); }
.mine-btns { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.mine-btn { background: linear-gradient(135deg, #60a5fa, #3b82f6); color: #fff; border-radius: 14px; padding: 14px 8px; text-align: center; }
.mine-btn.orange { background: linear-gradient(135deg, #fbbf24, #f59e0b); }
.mine-btn.purple { background: linear-gradient(135deg, #a78bfa, #8b5cf6); }
.mine-btn .t { font-size: 14px; font-weight: 700; }
.mine-btn .d { font-size: 11px; opacity: .9; margin-top: 4px; }

/* ============================================================
   首页 / 发现页 2.0 模板（参考 INBan/友伴）
   ============================================================ */

/* 首页：蓝色渐变头部 */
.home-page { padding: 0 0 90px; }
.home-head {
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
  color: #fff;
  padding: 14px 16px 52px;
  border-radius: 0 0 24px 24px;
  position: relative;
}
.home-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.home-head .city-btn {
  display: inline-flex; align-items: center; gap: 5px;
  background: rgba(255,255,255,.22); color: #fff;
  padding: 6px 12px; border-radius: 999px; font-size: 13px; font-weight: 600;
  backdrop-filter: blur(6px);
}
.home-head .city-btn .arrow { font-size: 9px; opacity: .85; margin-left: 2px; }
.home-title { text-align: right; font-size: 17px; font-weight: 800; line-height: 1.35; }
.home-title small { font-size: 12px; font-weight: 500; opacity: .85; }

/* 首页内容区：负 margin 上拉与卡片 */
.home-body { margin-top: -36px; position: relative; z-index: 2; padding: 0 14px; }

/* 双 Banner */
.home-banner-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px;
}
.banner-card {
  border-radius: 16px; padding: 16px 14px; min-height: 86px;
  color: #fff; position: relative; overflow: hidden;
  box-shadow: 0 10px 24px rgba(59,130,246,.28);
  display: flex; flex-direction: column; justify-content: center;
}
.banner-card::after {
  content: ''; position: absolute; right: -16px; bottom: -22px; width: 80px; height: 80px;
  background: rgba(255,255,255,.18); border-radius: 50%;
}
.banner-left { background: linear-gradient(135deg, #818cf8 0%, #6366f1 100%); }
.banner-right { background: linear-gradient(135deg, #c084fc 0%, #a855f7 100%); }
.banner-card .b-title { font-size: 16px; font-weight: 800; position: relative; z-index: 1; }
.banner-card .b-sub { font-size: 11px; opacity: .9; margin-top: 4px; position: relative; z-index: 1; }

/* 动态中心入口 */
.home-notice {
  display: flex; align-items: center; gap: 10px;
  background: #fff; border-radius: 14px; padding: 12px 14px;
  box-shadow: var(--shadow-sm); margin-bottom: 12px;
}
.home-notice .n-icon { font-size: 20px; }
.home-notice .n-text { font-weight: 700; font-size: 14px; }
.home-notice .n-sub { font-size: 12px; color: var(--muted); flex: 1; }
.home-notice .n-arrow { color: var(--muted); font-size: 18px; }

/* 宫格入驻入口 */
.home-entries {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  margin-bottom: 14px;
}
.entry-item {
  background: #fff; border-radius: 14px; padding: 12px 4px;
  text-align: center; font-size: 12px; color: var(--text);
  box-shadow: var(--shadow-sm);
}
.entry-item .ic {
  width: 42px; height: 42px; margin: 0 auto 6px; border-radius: 14px;
  background: linear-gradient(135deg, #eef2ff, #f5f3ff);
  display: flex; align-items: center; justify-content: center; font-size: 22px;
}

/* 首页/发现 分类标签 */
.home-cats, .discover-cats {
  display: flex; gap: 10px; overflow-x: auto; padding: 4px 0 12px; scrollbar-width: none;
}
.home-cats::-webkit-scrollbar, .discover-cats::-webkit-scrollbar { display: none; }
.cat-pill, .discover-cats span {
  flex: 0 0 auto; padding: 7px 16px; border-radius: 999px;
  background: #fff; color: var(--text); font-size: 13px; font-weight: 600;
  box-shadow: var(--shadow-sm); border: 1px solid transparent;
}
.cat-pill.active, .discover-cats span.active {
  background: linear-gradient(135deg, var(--primary), var(--primary-2)); color: #fff;
}

/* 发现页头部 */
.discover-page { padding: 0 0 90px; }
.discover-head {
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
  color: #fff; padding: 14px 14px 18px; border-radius: 0 0 20px 20px;
}
.discover-head .search-row {
  display: flex; align-items: center; gap: 10px; margin-bottom: 12px;
}
.discover-head .city-btn {
  flex: 0 0 auto; background: rgba(255,255,255,.2); padding: 8px 12px;
  border-radius: 999px; font-size: 13px; font-weight: 600;
}
.discover-head .search-input {
  flex: 1; display: flex; align-items: center; gap: 8px;
  background: #fff; border-radius: 999px; padding: 0 14px; height: 40px;
}
.discover-head .search-input svg { color: var(--muted); }
.discover-head .search-input input {
  flex: 1; border: none; outline: none; font-size: 14px; background: transparent;
}
.discover-head .filter-btn {
  flex: 0 0 auto; background: rgba(255,255,255,.2); color: #fff;
  padding: 8px 14px; border-radius: 999px; font-size: 13px; font-weight: 600;
}
.discover-head .filter-btn.active { background: #fff; color: var(--primary); }

.discover-list { padding: 14px; }

/* 服务/达人卡片 */
.service-card {
  display: flex; gap: 12px; background: #fff; border-radius: 16px;
  padding: 12px; box-shadow: var(--shadow-sm); margin-bottom: 12px;
  align-items: center;
}
.service-card .service-cover {
  width: 96px; height: 96px; border-radius: 14px; object-fit: cover; flex: 0 0 auto;
  background: #e9eaf0;
}
.service-card .service-info { flex: 1; min-width: 0; }
.service-card .s-title { font-size: 15px; font-weight: 800; }
.service-card .s-tags {
  display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px;
}
.service-card .s-tags span {
  font-size: 11px; color: var(--primary); background: var(--primary-soft);
  padding: 3px 8px; border-radius: 999px;
}
.service-card .s-meta {
  display: flex; align-items: center; gap: 12px; margin-top: 8px;
  font-size: 12px; color: var(--muted);
}
.service-card .s-meta .dist { margin-left: auto; font-weight: 700; color: var(--primary); }
.service-card .s-bottom {
  display: flex; align-items: center; justify-content: space-between; margin-top: 10px;
}
.service-card .s-price { color: var(--primary); }
.service-card .s-price .p { font-size: 20px; font-weight: 800; }
.service-card .s-price .unit { font-size: 12px; font-weight: 600; }
.service-card .btn-book {
  height: 32px; padding: 0 16px; border-radius: 999px; border: none;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #fff; font-size: 13px; font-weight: 600;
  box-shadow: 0 6px 16px rgba(79,70,229,.25);
}

/* 空状态 */
.empty-state {
  text-align: center; padding: 60px 20px; color: var(--muted);
}
.empty-state .empty-icon { font-size: 60px; margin-bottom: 10px; }
.empty-state .empty-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 16px; }
.empty-state .btn { height: 40px; padding: 0 28px; }

/* Tab 图标 */
.tab-bar .tab .tab-icon {
  width: 22px; height: 22px; margin-bottom: 2px;
}
.tab-bar .tab.active { color: var(--primary); }
.tab-bar .tab.active .tab-icon { stroke: var(--primary); }

/* 城市未开通标记 */
.city-item {
  position: relative;
}
.city-item.disabled {
  color: #9ca3af;
  background: #f9fafb;
}
.city-disabled-tag {
  font-size: 10px;
  color: #fff;
  background: #cbd5e1;
  padding: 1px 5px;
  border-radius: 999px;
  margin-left: 6px;
  font-weight: 500;
}

/* ============================================================
   微信一键登录 / 扫脸实名认证
   ============================================================ */

/* 微信一键登录 */
.wx-login-box {
  text-align: center; padding: 22px 0 18px;
}
.wx-login-box .wx-logo {
  width: 62px; height: 62px; margin: 0 auto 12px; border-radius: 50%;
  background: linear-gradient(135deg, #4ade80, #22c55e);
  color: #fff; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 10px 24px rgba(34,197,94,.3);
}
.wx-login-box .wx-title { font-size: 17px; font-weight: 800; }
.wx-login-box .wx-sub { font-size: 12px; color: var(--muted); margin-top: 6px; }

/* 微信登录异常提示 + 切换登录方式 */
.wx-err {
  background: #fff5f3; color: #c0392b;
  border: 1px solid #ffd8d1; border-radius: 10px;
  padding: 9px 12px; font-size: 12.5px; line-height: 1.55;
  margin: 12px 0 2px;
}
.wx-alt {
  text-align: center; font-size: 12.5px; color: var(--muted);
  margin-top: 14px; padding: 8px 6px; cursor: pointer;
}
.wx-alt:active { opacity: .55; }

/* 我的 - 实名状态横幅 */
.mine-verify-bar {
  display: flex; align-items: center; gap: 8px;
  margin: 12px 14px 0; padding: 10px 14px; border-radius: 14px;
  background: rgba(255,255,255,.22); color: #fff; font-size: 13px;
  backdrop-filter: blur(6px);
}
.mine-verify-bar.v1 { background: rgba(255,255,255,.28); }
.mine-verify-bar.v2, .mine-verify-bar.v3 { background: rgba(255,193,7,.28); }
.mine-verify-bar .vb-text { flex: 1; }
.mine-verify-bar .vb-arrow { font-size: 18px; opacity: .8; }

/* 实名认证页 */
.verify-page { padding: 14px 14px 90px; }
.verify-done { text-align: center; padding: 26px 16px; }
.verify-done .vd-icon {
  width: 72px; height: 72px; border-radius: 50%; margin: 0 auto;
  display: flex; align-items: center; justify-content: center;
}
.verify-done .vd-icon.vd-ok   { background: linear-gradient(135deg, #34d399, #10b981); box-shadow: 0 10px 24px rgba(16,185,129,.32); }
.verify-done .vd-icon.vd-wait { background: linear-gradient(135deg, #fbbf24, #f59e0b); box-shadow: 0 10px 24px rgba(245,158,11,.3); }
.verify-done .vd-icon.vd-fail { background: linear-gradient(135deg, #f87171, #ef4444); box-shadow: 0 10px 24px rgba(239,68,68,.3); }
.verify-done .vd-title { font-size: 17px; font-weight: 800; margin-top: 8px; }
.verify-done .vd-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 14px;
}
.verify-done .vd-row:last-of-type { border-bottom: none; }
.verify-done .vd-row span { color: var(--muted); }
.verify-done .vd-reason {
  font-size: 13px; color: var(--danger); margin-top: 8px;
}
.verify-done .vd-photo {
  margin-top: 14px;
}
.verify-done .vd-photo img {
  width: 96px; height: 96px; border-radius: 50%; object-fit: cover;
  border: 3px solid var(--primary-soft);
}

/* 扫脸取景框 */
.face-box {
  position: relative; width: 100%; aspect-ratio: 1 / 1; max-height: 320px;
  background: #11131a; border-radius: 16px; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.face-box .face-video {
  width: 100%; height: 100%; object-fit: cover;
}
.face-box .face-preview {
  width: 100%; height: 100%; object-fit: cover;
}
.face-box .face-oval {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
  width: 66%; aspect-ratio: 3 / 4; border-radius: 50%;
  border: 3px solid rgba(79,70,229,.9);
  box-shadow: 0 0 0 999px rgba(0,0,0,.35);
  pointer-events: none;
}
.face-box .face-placeholder {
  color: #9ca3af; font-size: 13px; text-align: center;
}
.face-box .face-placeholder .fp-icon { font-size: 46px; margin-bottom: 8px; }
.face-box .face-step {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,.55); color: #fff; font-size: 13px;
  padding: 10px 12px; text-align: center;
}

/* 实名通道提示条 */
.verify-driver-tip {
  display: flex; align-items: center; gap: 10px;
  background: linear-gradient(135deg, #eef2ff, #f5f3ff);
  border: 1px solid #e0e7ff; border-radius: 14px;
  padding: 12px 14px; margin-bottom: 14px;
}
.verify-driver-tip .vdt-icon { font-size: 22px; }
.verify-driver-tip .vdt-text { font-size: 13px; color: var(--text); line-height: 1.5; }
.verify-driver-tip .vdt-text b { color: var(--primary); }

/* ===== 达人入驻申请页 ===== */
.apply-hero {
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  border-radius: var(--radius); padding: 22px 18px; color: #fff;
  text-align: center; margin-bottom: 12px;
  box-shadow: 0 10px 24px rgba(79,70,229,.25);
}
.apply-hero .ah-ic { font-size: 34px; }
.apply-hero .ah-t { font-size: 18px; font-weight: 800; margin-top: 6px; }
.apply-hero .ah-d { font-size: 12.5px; opacity: .85; margin-top: 4px; }

.field label .req { color: #ef4444; font-style: normal; margin-right: 3px; }

.up-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.up-card {
  position: relative; aspect-ratio: 3/4; border-radius: 12px;
  border: 1.5px dashed #c9cdea; background: #f8f9ff;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px; cursor: pointer; overflow: hidden; transition: .15s;
}
.up-card:active { transform: scale(.97); }
.up-card .up-ic { font-size: 26px; }
.up-card .up-svg { width: 34px; height: 34px; color: var(--primary); }
.up-card .up-t { font-size: 12px; font-weight: 600; color: var(--text); text-align: center; padding: 0 4px; }
.up-card .up-d { font-size: 10.5px; color: var(--muted); text-align: center; padding: 0 4px; }
.up-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.up-card .up-edit {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 3px 0;
  background: rgba(0,0,0,.5); color: #fff; font-size: 11px; text-align: center;
}

/* ===== 达人可选项目卡片 ===== */
.svc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.svc-cat {
  background: var(--card); border-radius: 14px; padding: 12px;
  border: 1.5px solid var(--line); display: flex; flex-direction: column; gap: 6px; transition: .15s;
}
.svc-cat.taken { border-color: var(--primary); background: #f6f5ff; }
.sc-top { display: flex; align-items: center; gap: 6px; font-size: 14px; position: relative; }
.sc-ic { font-size: 18px; }
.sc-badge {
  position: absolute; right: 0; font-size: 10px; color: #fff; background: var(--primary);
  border-radius: 8px; padding: 1px 7px; font-weight: 600;
}
.sc-desc { font-size: 11px; color: var(--muted); line-height: 1.4; min-height: 30px; }
.sc-price { font-size: 12px; color: var(--muted); }
.sc-price b { color: #ea580c; font-size: 14px; }
.sc-price em { font-style: normal; font-size: 11px; }
.sc-ops { display: flex; gap: 6px; justify-content: center; }

/* 协议正文排版 */
.agree-body { white-space: pre-wrap; font-size: 13.5px; line-height: 2; color: #333; letter-spacing: .2px; }
.agree-body::-webkit-scrollbar { width: 4px; }

/* ===== 上下线开关 ===== */
.onoff { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.onoff .oo-t { font-size:15px; font-weight:800; color:var(--text); }
.onoff.off .oo-t { color:var(--muted); }
.onoff .oo-d { font-size:11.5px; color:var(--muted); margin-top:2px; }
.onoff .oo-btn {
  flex:none; border:none; border-radius:20px; padding:8px 16px;
  background:var(--primary); color:#fff; font-size:13px; font-weight:700; cursor:pointer;
}
.onoff .oo-btn.off { background:#e5e7ee; color:var(--muted); }

/* ===== 动态 ===== */
.post-card { padding:12px 0; border-bottom:1px solid var(--line); }
.post-card:last-child { border-bottom:none; }
.post-head { display:flex; align-items:center; gap:8px; }
.post-ava { width:34px; height:34px; border-radius:50%; object-fit:cover; background:#eee; }
.post-head b { font-size:13.5px; }
.post-del { margin-left:auto; font-size:12px; color:var(--muted); cursor:pointer; }
.post-content { font-size:13.5px; line-height:1.7; color:#333; margin-top:8px; white-space:pre-wrap; word-break:break-word; }
.post-media { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:8px; border-radius:10px; overflow:hidden; }
.post-media video, .post-media img { width:100%; aspect-ratio:1; object-fit:cover; border-radius:8px; background:#000; }
.pm-edit { grid-template-columns:repeat(4,1fr); }
.pm-item { position:relative; }
.pm-item video, .pm-item img { width:100%; aspect-ratio:1; object-fit:cover; border-radius:8px; background:#000; }

/* 动态点赞 + 动态广场 */
.post-actions { display:flex; align-items:center; gap:12px; margin-top:10px; }
.post-like { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; border:1px solid var(--line); border-radius:20px; background:#fff; font-size:13px; color:#666; cursor:pointer; transition:transform .08s; }
.post-like .like-ico { font-size:15px; line-height:1; }
.post-like.liked { color:#ff4d6d; border-color:#ffd0d9; background:#fff5f7; }
.post-like:active { transform:scale(0.95); }
.post-go { margin-left:auto; font-size:12px; color:var(--muted); cursor:pointer; }
.post-feed { padding:12px; }
.post-feed .pf { padding:12px; margin-bottom:12px; border-bottom:none; border-radius:12px; background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.05); }
.pm-x {
  position:absolute; top:3px; right:3px; width:18px; height:18px; border-radius:50%;
  background:rgba(0,0,0,.6); color:#fff; font-size:11px; display:flex; align-items:center; justify-content:center; cursor:pointer;
}

/* ===== 视频播放（达人主页+动态） ===== */
.video-banner-wrap {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  margin-bottom: 12px;
  box-shadow: var(--shadow-sm);
  background: #000;
}
.video-banner {
  display: block;
  width: 100%;
  height: auto;
  max-height: 360px;
  min-height: 180px;
  aspect-ratio: 16 / 9;
  object-fit: contain;
  background: #000;
}
.vb-expand {
  position: absolute;
  right: 8px;
  bottom: 44px;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,.55);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  pointer-events: auto;
  backdrop-filter: blur(2px);
}

.post-media .pm-video {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  background: #000;
  cursor: pointer;
}
.post-media .pm-video video {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  display: block;
}
.pm-expand {
  position: absolute;
  right: 6px;
  bottom: 6px;
  z-index: 2;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(0,0,0,.55);
  color: #fff;
  font-size: 11px;
  font-weight: 600;
  pointer-events: auto;
}

.video-mask {
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,.92);
  padding: 0;
}
.video-box {
  position: relative;
  width: 100%;
  max-width: 480px;
}
.lightbox-video {
  width: 100%;
  max-height: 80vh;
  background: #000;
  display: block;
}
.video-box .vb-close {
  position: absolute;
  top: -44px;
  right: 14px;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: rgba(255,255,255,.15);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  cursor: pointer;
}

/* ===== 下单页 2.0 ===== */
.booking-page { padding-bottom: 100px; }
.booking-service { padding: 14px; }
.bs-info { display: flex; align-items: center; gap: 12px; }
.bs-cover { width: 76px; height: 76px; border-radius: 12px; object-fit: cover; background: #f1f2f6; flex: none; }
.bs-main { flex: 1; min-width: 0; }
.bs-title { font-size: 15px; font-weight: 700; line-height: 1.35; }
.bs-sub { font-size: 12px; color: var(--muted); margin-top: 4px; }
.bs-price { color: var(--primary); font-weight: 800; margin-top: 6px; }
.bs-price small { font-size: 11px; font-weight: 600; color: var(--muted); }
.bs-qty { display: flex; align-items: center; gap: 0; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.bs-qty .q-btn { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; font-size: 16px; color: var(--primary); background: #f8f9ff; cursor: pointer; }
.bs-qty .q-num { width: 32px; text-align: center; font-size: 14px; font-weight: 700; }

.booking-lines { padding: 6px 16px; }
.bline { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.bline:last-child { border-bottom: none; }
.bline .bl-icon { width: 32px; height: 32px; border-radius: 50%; background: #eef2ff; color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 14px; flex: none; }
.bline .bl-main { flex: 1; min-width: 0; }
.bline .bl-title { font-size: 15px; font-weight: 600; }
.bline .bl-label { font-size: 15px; font-weight: 600; }
.bline .bl-desc { font-size: 12px; color: var(--muted); margin-top: 3px; }
.bline .bl-arrow { color: var(--muted); font-size: 18px; }
.bline .bl-input { border: none; background: transparent; font-size: 14px; color: var(--text); text-align: right; outline: none; width: auto; min-width: 140px; }

.booking-fee { padding: 6px 16px; }
.fline { display: flex; align-items: center; justify-content: space-between; padding: 13px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.fline:last-child { border-bottom: none; }
.fline .fval { font-weight: 600; }
.fline .fval.danger { color: var(--danger); }
.fline .fval.muted { color: var(--muted); font-weight: 400; }

.booking-bar {
  flex-direction: row;
  align-items: center;
  padding: 0 14px calc(10px + var(--safe-b));
  gap: 14px;
  background: #fff;
  border-top: 1px solid var(--line);
  height: auto;
  min-height: 62px;
}
.booking-bar .bb-total { font-size: 15px; font-weight: 700; }
.booking-bar .bb-total .price { font-size: 22px; }
.booking-bar .btn { flex: 1; max-width: 160px; height: 44px; border-radius: 22px; }

.order-agree-sheet { border-radius: 18px 18px 0 0; }
.order-agree-btns { display: flex; gap: 12px; margin-top: 8px; }
.order-agree-btns .btn { flex: 1; height: 46px; border-radius: 12px; }

.addr-list { max-height: 46vh; overflow: auto; }
.addr-item { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.addr-item:last-child { border-bottom: none; }
.addr-item.active .addr-main { color: var(--primary); }
.addr-main { flex: 1; font-size: 14px; }
.addr-check { width: 22px; height: 22px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; }

/* 优惠券选择 */
.coupon-list { max-height: 50vh; overflow: auto; }
.coupon-item { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; margin-bottom: 10px; cursor: pointer; transition: .15s; }
.coupon-item.active { border-color: var(--primary); background: #fff7ed; }
.ci-left { width: 86px; flex: 0 0 86px; text-align: center; color: var(--primary); border-right: 1px dashed var(--line); padding-right: 8px; }
.ci-val { font-size: 22px; font-weight: 800; }
.ci-name { font-size: 12px; color: var(--muted); margin-top: 2px; }
.ci-right { flex: 1; font-size: 13px; }
.ci-cond { color: var(--text); font-weight: 600; }
.ci-exp { color: var(--muted); font-size: 12px; margin-top: 3px; }

/* 会员卡片 */
.vip-card { background: linear-gradient(135deg,#ffd66b,#ff9a3c); border-radius: 14px; padding: 18px; color: #5a3b00; text-align: center; margin-bottom: 14px; }
.vip-title { font-size: 15px; font-weight: 700; }
.vip-fee { font-size: 32px; font-weight: 900; margin: 6px 0; }
.vip-days { font-size: 13px; font-weight: 500; }
.vip-desc { font-size: 12px; line-height: 1.6; }

/* ===== 达人列表 2.0（Higo风格） ===== */
.discover-page { background: #f7f8fa; min-height: 100vh; }
.discover-header { background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
  position: relative; padding: 12px 14px 18px; border-radius: 0 0 22px 22px; }
.discover-top { text-align: center; color: #fff; margin-bottom: 12px; }
.discover-title { font-size: 18px; font-weight: 700; letter-spacing: 1px; }
.discover-sub { font-size: 11px; opacity: 0.85; margin-top: 2px; }
.discover-searchbar { display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.96); border-radius: 24px; padding: 5px 6px 5px 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.06); }
.city-picker { display: flex; align-items: center; gap: 3px; font-size: 14px; color: #333; font-weight: 500; padding-right: 8px; border-right: 1px solid #eee; white-space: nowrap; }
.city-picker .arrow { font-size: 10px; color: #999; }
.discover-search-input { flex: 1; min-width: 0; }
.discover-search-input input { width: 100%; border: none; background: transparent; font-size: 14px; color: #333; outline: none; padding: 0 4px; }
.discover-search-input input::placeholder { color: #bbb; }
.discover-actions { display: flex; gap: 4px; align-items: center; }
.discover-refresh { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: #666; font-size: 16px; }
.discover-search-btn { width: 36px; height: 36px; border-radius: 50%; background: #10b981; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 15px; box-shadow: 0 2px 8px rgba(16,185,129,0.35); }
.discover-tabs { display: flex; gap: 14px; margin-top: 14px; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.discover-tabs::-webkit-scrollbar { display: none; }
.discover-tabs span { white-space: nowrap; color: rgba(255,255,255,0.85); font-size: 14px; padding-bottom: 5px; position: relative; }
.discover-tabs span.active { color: #fff; font-weight: 700; }
.discover-tabs span.active::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 18px; height: 3px; background: #fff; border-radius: 2px; }
.discover-tabs .filter-tab { margin-left: auto; display: flex; align-items: center; gap: 2px; font-size: 13px; }

.new-talent-list { padding: 12px; padding-bottom: calc(80px + var(--safe-b)); }
.talent-card-row { display: flex; gap: 12px; background: #fff; border-radius: 16px; padding: 12px; margin-bottom: 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.04); }
.t-avatar-wrap { position: relative; width: 92px; height: 92px; flex-shrink: 0; }
.t-avatar { width: 100%; height: 100%; object-fit: cover; border-radius: 12px; background: #f1f2f6; }
.t-online { position: absolute; top: 6px; left: 6px; background: rgba(16,185,129,0.95); color: #fff; font-size: 10px; padding: 2px 6px; border-radius: 10px; display: flex; align-items: center; gap: 3px; line-height: 1; }
.t-online::before { content: ''; width: 5px; height: 5px; background: #fff; border-radius: 50%; }
.t-info { flex: 1; display: flex; flex-direction: column; justify-content: space-between; min-width: 0; overflow: hidden; }
.t-name-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.t-name { font-size: 16px; font-weight: 700; color: #222; }
.t-level { font-size: 10px; padding: 2px 6px; border-radius: 8px; font-weight: 600; line-height: 1; }
.t-level.lv-junior { background: #e6f9f1; color: #00b578; }
.t-level.lv-middle { background: #ffe6f0; color: #ff4d94; }
.t-level.lv-senior { background: #f3e6ff; color: #a020f0; }
.t-like { font-size: 12px; color: #666; margin-left: auto; }
.t-dist { font-size: 12px; color: #999; }
.t-dist-none { color: #bbb; font-style: italic; }
.t-physique { display: flex; gap: 8px; align-items: center; margin-top: 6px; flex-wrap: wrap; }
.tp-main { font-size: 11px; color: #fff; background: #10b981; padding: 3px 8px; border-radius: 10px; font-weight: 500; }
.tp-edu { font-size: 11px; color: #10b981; border: 1px solid #10b981; padding: 2px 8px; border-radius: 10px; font-weight: 500; }
.t-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
.t-tags span { font-size: 11px; color: #888; background: #f2f3f5; padding: 3px 8px; border-radius: 8px; }
.t-bottom { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.t-orders { font-size: 12px; color: #999; }
.btn-book-sm { background: #10b981; color: #fff; border: none; border-radius: 16px; padding: 6px 18px; min-height: 32px; font-size: 13px; font-weight: 600; box-shadow: 0 2px 8px rgba(16,185,129,0.25); }

/* 筛选弹层 */
.filter-sheet { display: flex; flex-direction: column; justify-content: flex-end; }
.filter-sheet-body { background: #fff; border-radius: 20px 20px 0 0; padding: 18px 18px calc(24px + var(--safe-b)); max-height: 70vh; overflow-y: auto; }
.filter-sheet-body .sheet-head { display: flex; align-items: center; justify-content: space-between; font-size: 16px; font-weight: 700; margin-bottom: 10px; }
.filter-sheet-body .sheet-head span { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; color: #999; font-size: 16px; }
.filter-section { margin-top: 14px; }
.filter-section-title { font-size: 14px; font-weight: 700; color: #333; margin-bottom: 10px; }
.filter-options { display: flex; gap: 10px; flex-wrap: wrap; }
.filter-options span { padding: 8px 16px; border-radius: 18px; background: #f2f3f5; color: #666; font-size: 13px; }
.filter-options span.active { background: #e6f9f1; color: #00b578; font-weight: 600; }

/* ===== 达人主页 2.0（图片视频轮播 + 提供项目/动态/评价） ===== */
.profile-page { background: #f4f5f8; min-height: 100vh; padding-bottom: calc(90px + var(--safe-b)); }

/* 轮播 */
.profile-carousel { background: #000; position: relative; overflow: hidden; }
.pc-track { display: flex; transition: transform 0.35s ease; }
.pc-slide { width: 100%; flex-shrink: 0; position: relative; }
.pc-slide img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; display: block; }
.pc-video-wrap { position: relative; width: 100%; aspect-ratio: 1 / 1; background: #111; }
.pc-video-wrap video { width: 100%; height: 100%; object-fit: contain; display: block; }
.pc-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 48px; height: 48px; border-radius: 50%; background: rgba(255,255,255,0.85); color: #10b981; display: flex; align-items: center; justify-content: center; font-size: 18px; pointer-events: none; }
.pc-indicators { position: absolute; left: 0; right: 0; bottom: 70px; display: flex; justify-content: center; gap: 6px; z-index: 2; }
.pc-indicators span { width: 6px; height: 6px; border-radius: 50%; background: rgba(255,255,255,0.4); }
.pc-indicators span.active { width: 14px; border-radius: 3px; background: #fff; }
.pc-thumbs { display: flex; gap: 8px; padding: 10px 14px; overflow-x: auto; background: rgba(0,0,0,0.25); position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; backdrop-filter: blur(4px); }
.pc-thumbs::-webkit-scrollbar { display: none; }
.pc-thumbs > div { flex: none; width: 52px; height: 52px; border-radius: 8px; overflow: hidden; border: 2px solid transparent; opacity: 0.75; }
.pc-thumbs > div.active { border-color: #10b981; opacity: 1; }
.pc-thumbs img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pc-thumbs .thumb-video { width: 100%; height: 100%; background: #222; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 14px; }

/* 资料卡 */
.profile-header { background: #fff; margin: 12px 14px 0; border-radius: 16px; padding: 14px; box-shadow: 0 2px 10px rgba(0,0,0,0.04); }
.ph-main { display: flex; gap: 12px; align-items: center; }
.ph-avatar { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; background: #f1f2f6; flex: none; }
.ph-info { flex: 1; min-width: 0; }
.ph-name { font-size: 17px; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.ph-level { font-size: 10px; padding: 2px 7px; border-radius: 8px; font-weight: 600; }
.ph-level.lv-junior { background: #e6f9f1; color: #00b578; }
.ph-level.lv-middle { background: #ffe6f0; color: #ff4d94; }
.ph-level.lv-senior { background: #f3e6ff; color: #a020f0; }
.ph-meta { font-size: 12px; color: #8b90a0; margin-top: 5px; }
.ph-actions { display: flex; gap: 10px; margin-top: 12px; }
.btn-follow { flex: 1; height: 34px; border-radius: 17px; border: 1px solid #10b981; background: #fff; color: #10b981; font-size: 14px; font-weight: 600; }
.btn-follow.active { background: #10b981; color: #fff; }
.btn-reward { flex: 1; height: 34px; border-radius: 17px; border: none; background: linear-gradient(135deg, #ffd66b, #ff9a3c); color: #5a3b00; font-size: 14px; font-weight: 600; }

/* 认证标签 */
.profile-badges { display: flex; gap: 8px; flex-wrap: wrap; padding: 0 14px; margin-top: 12px; }
.profile-badges span { display: flex; align-items: center; gap: 4px; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 5px 10px; font-size: 12px; color: #555; }
.profile-badges .dot { width: 6px; height: 6px; border-radius: 50%; }
.profile-badges .dot.real { background: #10b981; }
.profile-badges .dot.id { background: #4f46e5; }
.profile-badges .dot.green { background: #10b981; }

/* 简介/标签 */
.profile-bio { margin: 12px 14px 0; background: #fff; border-radius: 14px; padding: 14px; font-size: 14px; color: #4b5060; line-height: 1.7; box-shadow: 0 2px 10px rgba(0,0,0,0.04); }
.profile-tags { display: flex; gap: 8px; flex-wrap: wrap; padding: 0 14px; margin-top: 12px; }
.profile-tags span { background: #e6f9f1; color: #00b578; font-size: 12px; padding: 5px 12px; border-radius: 12px; }

/* 三 tab */
.profile-tabs { display: flex; gap: 18px; margin: 14px 14px 0; border-bottom: 1px solid var(--line); background: #f4f5f8; }
.profile-tabs span { font-size: 14px; color: #8b90a0; padding: 12px 0 10px; position: relative; }
.profile-tabs span.active { color: #15181f; font-weight: 700; }
.profile-tabs span.active::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 20px; height: 3px; background: #10b981; border-radius: 2px; }

/* 服务项目卡片 */
.profile-services { padding: 12px 14px; }
.svc-card { display: flex; gap: 12px; background: #fff; border-radius: 16px; padding: 12px; margin-bottom: 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.04); }
.svc-cover-wrap { width: 92px; height: 92px; flex: none; border-radius: 12px; overflow: hidden; position: relative; }
.svc-cover-wrap img { width: 100%; height: 100%; object-fit: cover; }
.svc-heart { position: absolute; top: 6px; right: 6px; width: 24px; height: 24px; border-radius: 50%; background: rgba(255,255,255,0.95); color: #ff4d94; display: flex; align-items: center; justify-content: center; font-size: 13px; }
.svc-main { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: space-between; }
.svc-title { font-size: 15px; font-weight: 700; color: #222; }
.svc-desc { font-size: 12px; color: #8b90a0; margin-top: 4px; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.svc-meta { display: flex; gap: 10px; margin-top: 8px; font-size: 11px; color: #999; }
.svc-meta i { margin-right: 3px; font-style: normal; }
.svc-bottom { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; }
.svc-price { color: #ff4d94; font-size: 20px; font-weight: 800; }
.svc-price small { font-size: 12px; margin-right: 2px; }
.svc-btn { height: 32px; border-radius: 15px; border: none; background: #10b981; color: #fff; font-size: 13px; font-weight: 600; padding: 0 14px; }

/* 动态/评价复用 */
.profile-posts, .profile-reviews { padding: 12px 14px; }
.review-item { background: #fff; border-radius: 14px; padding: 12px; margin-bottom: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.04); }
.review-head { display: flex; gap: 10px; align-items: center; }
.review-ava { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; }
.review-name { font-size: 14px; font-weight: 600; }
.review-stars { color: #f59e0b; font-size: 12px; margin-top: 2px; }
.review-content { margin-top: 8px; font-size: 14px; color: #4b5060; line-height: 1.6; }

/* 底部悬浮 */
.profile-bottom { position: fixed; left: 0; right: 0; bottom: 0; max-width: 480px; margin: 0 auto; background: #fff; border-top: 1px solid var(--line); padding: 10px 14px calc(10px + var(--safe-b)); display: flex; align-items: center; gap: 12px; z-index: 20; box-shadow: 0 -4px 20px rgba(0,0,0,0.05); }
.profile-bottom .pb-price { flex: 1; }
.profile-bottom .pb-label { font-size: 12px; color: #8b90a0; }
.profile-bottom .pb-num { font-size: 26px; font-weight: 800; color: #ff4d94; }
.profile-bottom .btn-primary { flex: 1; max-width: 200px; height: 46px; border-radius: 23px; font-size: 16px; font-weight: 700; }

/* 资料卡打赏统计 */
.ph-reward { text-align: center; font-size: 12px; color: #e08100; padding: 4px 14px 0; }

/* 打赏弹层 */
.reward-sheet { padding: 18px 16px; }
.reward-tip { text-align: center; color: var(--muted); font-size: 13px; margin: 4px 0 16px; }
.reward-presets { display: flex; flex-wrap: wrap; gap: 10px; }
.rp-item { flex: 0 0 calc(33.333% - 7px); box-sizing: border-box; text-align: center; padding: 14px 0; border: 1px solid var(--line); border-radius: 10px; font-size: 15px; font-weight: 700; color: #333; background: #fff; }
.rp-item.active { border-color: var(--primary); color: var(--primary); background: #eafaf3; }
.reward-custom { display: flex; align-items: center; gap: 10px; margin: 16px 0; }
.reward-custom span { font-size: 13px; color: #666; white-space: nowrap; }
.reward-custom input { flex: 1; border: 1px solid var(--line); border-radius: 8px; padding: 11px 12px; font-size: 15px; }

/* 消息未读红点 */
.badge-unread { position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px; padding: 0 5px; background: #ff4d4f; color: #fff; border-radius: 9px; font-size: 11px; line-height: 18px; text-align: center; box-shadow: 0 1px 3px rgba(0,0,0,.2); }

/* 订单/列表 加载更多 */
.load-more { text-align: center; color: var(--primary); font-size: 14px; padding: 12px 0; cursor: pointer; }

/* 聊天顶部：加载更早 / 回到最新 */
.chat-top { padding: 6px 12px 0; display: flex; flex-direction: column; gap: 6px; }
.chat-load-more, .chat-back-latest { text-align: center; font-size: 12px; color: var(--primary); background: #eafaf3; border-radius: 12px; padding: 6px 0; cursor: pointer; }
.chat-back-latest { color: #ff4d94; background: #fff0f6; }

/* 消息长按菜单 */
.msg-menu { position: fixed; z-index: 1301; min-width: 116px; background: #fff; border-radius: 12px; box-shadow: 0 6px 24px rgba(0,0,0,.18); padding: 6px; overflow: hidden; }
.msg-menu .mi { padding: 11px 16px; font-size: 14px; color: #222; text-align: center; cursor: pointer; border-radius: 8px; }
.msg-menu .mi:active { background: #f1f3f7; }
.msg-menu .mi.danger { color: #ef4444; }

/* 系统消息（撤回等）居中灰字 */
.msg-system { display: inline-block; font-size: 12px; color: #999; background: rgba(0,0,0,.04); border-radius: 8px; padding: 3px 10px; }
/* 撤回入口（自己2分钟内消息显示） */
.msg-recall { display: inline-block; font-size: 11px; color: #4f46e5; margin-left: 8px; cursor: pointer; vertical-align: middle; opacity: .8; }
/* 录音中按钮态 */
.btn.recording { background: #ef4444; color: #fff; border-color: #ef4444; animation: recpulse 1s infinite; }
@keyframes recpulse { 0%{opacity:.6} 50%{opacity:1} 100%{opacity:.6} }

/* ============================================================
   首页改版 v2（Higo 模板风格）
   ============================================================ */
.home-v2 { padding: 0 0 96px; background: #f4f5f8; }

/* 顶部：紫色渐变头部 */
.home-v2-head {
  padding: 14px 14px 64px;
  background: linear-gradient(160deg, #5b52e8 0%, #7c3aed 46%, #a855f7 100%);
  color: #fff;
  border-bottom-left-radius: 24px;
  border-bottom-right-radius: 24px;
}
.higo-topbar { display: flex; align-items: center; gap: 10px; }
.higo-city {
  display: flex; align-items: center; gap: 3px;
  padding: 5px 10px; border-radius: 999px;
  background: rgba(255,255,255,.18);
  font-size: 13px; font-weight: 600; max-width: 130px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.higo-city small { font-size: 8px; opacity: .85; }
.higo-slogan { flex: 1; text-align: center; line-height: 1.15; }
.higo-brand { font-size: 17px; font-weight: 800; letter-spacing: .5px; }
.higo-sub { font-size: 11px; opacity: .85; margin-top: 2px; }

/* 公告横幅 */
.higo-banner {
  margin-top: 14px; padding: 14px;
  background: #fff; border-radius: 16px;
  display: flex; align-items: center; gap: 10px;
  box-shadow: 0 6px 20px rgba(60, 40, 140, .12);
}
.hb-main { flex: 1; min-width: 0; }
.hb-title { font-size: 15px; font-weight: 800; color: #15181f; }
.hb-line { font-size: 12px; color: #6b7280; margin-top: 3px; }
.hb-tag {
  display: inline-block; margin-left: 4px; padding: 1px 6px;
  font-size: 11px; color: #fff; background: #ef4444; border-radius: 6px;
}
.hb-icon { font-size: 30px; }

/* 四宫格入口（悬浮于渐变头部下缘，不遮挡横幅） */
.higo-grid {
  margin: -50px 0 6px; position: relative; z-index: 3;
  background: #fff; border-radius: 16px;
  padding: 14px 4px; display: flex;
  box-shadow: 0 8px 24px rgba(20,24,40,.07);
}
.hg-item { flex: 1; text-align: center; padding: 0 2px; }
.hg-icon {
  width: 46px; height: 46px; margin: 0 auto 6px;
  border-radius: 14px; display: flex; align-items: center; justify-content: center;
  font-size: 22px;
}
.hg-title { font-size: 13px; font-weight: 700; color: #15181f; }
.hg-sub { font-size: 10px; color: #9aa0ad; margin-top: 2px; }

/* 主体 */
.home-v2-body { padding: 14px 14px 0; }

/* 双栏大 Tab（城市体验 / Higo时刻） */
.higo-section-tabs {
  display: flex; align-items: stretch; gap: 8px; margin-bottom: 14px;
}
.hst-arrow {
  width: 22px; display: flex; align-items: center; justify-content: center;
  font-size: 18px; color: #b6bac5; flex: none;
}
.hst-item {
  flex: 1; padding: 12px 10px; border-radius: 14px;
  background: #fff; box-shadow: 0 2px 10px rgba(20,24,40,.05);
}
.hst-title { font-size: 15px; font-weight: 800; color: #15181f; }
.hst-sub { font-size: 11px; color: #9aa0ad; margin-top: 2px; }
.hst-item.active {
  background: linear-gradient(135deg, #5b52e8, #a855f7);
}
.hst-item.active .hst-title { color: #fff; }
.hst-item.active .hst-sub { color: rgba(255,255,255,.85); }

/* 服务卡片（竖版大图） */
.higo-service-list { display: flex; flex-direction: column; gap: 12px; }
.higo-service-card {
  background: #fff; border-radius: 16px; overflow: hidden;
  box-shadow: 0 6px 20px rgba(20,24,40,.06);
}
.hsc-cover { width: 100%; height: 168px; object-fit: cover; background: #eceef3; }
.hsc-main { padding: 12px 12px 14px; }
.hsc-title {
  font-size: 16px; font-weight: 800; color: #15181f;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.hsc-desc {
  font-size: 12px; color: #8b90a0; margin-top: 4px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.hsc-tags { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.hsc-time, .hsc-booked { font-size: 11px; color: #8b90a0; }
.hsc-booked {
  padding: 1px 6px; border-radius: 6px;
  background: #fff5e6; color: #f59e0b; font-weight: 600;
}
.hsc-bottom {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 10px;
}
.hsc-price { color: #ef4444; font-size: 20px; font-weight: 800; line-height: 1; }
.hsc-price small { font-size: 12px; font-weight: 700; margin-right: 1px; }
.hsc-btn {
  border: 0; border-radius: 999px; padding: 8px 18px;
  font-size: 13px; font-weight: 700; color: #fff;
  background: linear-gradient(135deg, #5b52e8, #a855f7);
  box-shadow: 0 4px 12px rgba(91,82,232,.28);
}

/* 首页 Banner 轮播 */
.home-swiper {
  position: relative; margin: 12px 0 0;
  border-radius: 14px; overflow: hidden;
  box-shadow: 0 6px 18px rgba(20,24,40,.08);
}
.hsw-track { display: flex; transition: transform .45s ease; will-change: transform; }
.hsw-img { width: 100%; flex: none; height: 148px; object-fit: cover; background: #eceef3; }
.hsw-dots {
  position: absolute; left: 0; right: 0; bottom: 8px;
  display: flex; justify-content: center; align-items: center; gap: 5px;
}
.hsw-dots span {
  width: 6px; height: 6px; border-radius: 999px;
  background: rgba(255,255,255,.55); transition: all .25s ease;
}
.hsw-dots span.on { width: 14px; background: #fff; }

/* 收益提现页增强 */
.wd-all-btn {
  border: 1px solid rgba(255,255,255,.7); background: rgba(255,255,255,.16);
  color: #fff; border-radius: 999px; padding: 7px 16px;
  font-size: 13px; font-weight: 700; cursor: pointer;
}
.wd-all-btn:active { background: rgba(255,255,255,.3); }
.seg {
  display: flex; background: #f0f1f6; border-radius: 10px;
  padding: 3px; margin-bottom: 12px;
}
.seg > div {
  flex: 1; text-align: center; padding: 8px 0; border-radius: 8px;
  font-size: 13px; color: #6b7280; cursor: pointer; transition: all .2s ease;
}
.seg > div.on { background: #fff; color: var(--primary); font-weight: 700; box-shadow: 0 2px 8px rgba(20,24,40,.08); }
.wd-calc {
  display: flex; justify-content: space-between; align-items: center;
  background: #fff7ef; border-radius: 10px; padding: 8px 12px;
  font-size: 12px; color: #b25e00; margin-bottom: 10px;
}
.wd-calc b { font-size: 14px; }
.wd-item { display: flex; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.wd-item:last-child { border-bottom: 0; }
.wd-amt { font-size: 15px; font-weight: 800; }
.wd-amt small { font-size: 11px; font-weight: 500; color: #f59e0b; margin-left: 4px; }
.wd-reason {
  font-size: 12px; color: #ef4444; background: #fef2f2;
  border-radius: 8px; padding: 5px 8px; margin-top: 5px;
}

/* 地图选点（H5 页内 POI 搜索） */
.map-search-row { display: flex; gap: 8px; margin-bottom: 10px; align-items: center; }
.map-search-row .input { flex: 1; }
.map-list { max-height: 46vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.map-poi { padding: 11px 4px; border-bottom: 1px solid var(--line); }
.map-poi:last-child { border-bottom: none; }
.map-poi:active { background: var(--bg); }
.map-poi-name { font-size: 15px; font-weight: 600; display: flex; align-items: center; justify-content: space-between; }
.map-poi-dist { font-size: 12px; font-weight: 400; color: var(--primary); }
.map-poi-addr { font-size: 12px; color: var(--muted); margin-top: 2px; }

/* 客户钱包充值 */
.rc-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-bottom: 10px; }
.rc-item { border: 1px solid var(--line); border-radius: 10px; padding: 12px 0; text-align: center; font-weight: 700; font-size: 15px; color: var(--text); background: #fff; }
.rc-item.active { border-color: var(--primary); color: var(--primary); background: var(--primary-soft); }

/* ===== 统一空态（巡检后新增） ===== */
.empty-box { text-align:center; padding: 64px 24px 32px; }
.empty-box .eb-icon {
  width: 84px; height: 84px; margin: 0 auto 16px; border-radius: 26px;
  background: linear-gradient(135deg, #eef2ff, #f5f3ff);
  display: flex; align-items: center; justify-content: center; font-size: 38px;
  font-family: "Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;
}
.empty-box .eb-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 6px; }
.empty-box .eb-desc { font-size: 12.5px; color: var(--muted); line-height: 1.7; }
.empty-box .btn { margin-top: 18px; height: 40px; padding: 0 26px; border-radius: 20px; }

/* ===== 会员卡分档（巡检后新增） ===== */
.mlv-card { position: relative; overflow: hidden; }
.mlv-card::after {
  content: ''; position: absolute; left: -30px; bottom: -46px;
  width: 108px; height: 108px; border-radius: 50%; opacity: .09;
  pointer-events: none;
}
.mlv-silver::after { background: #94a3b8; }
.mlv-gold::after   { background: #f59e0b; }
.mlv-black::after  { background: #111827; }
.mlv-card.mlv-silver { border: 1px solid #e2e8f0; }
.mlv-card.mlv-gold   { border: 1px solid #fde68a; }
.mlv-card.mlv-black  { border: 1px solid #374151; }
.mlv-tag {
  display:inline-block; font-size:11px; font-weight:700; padding:2px 8px;
  border-radius: 8px; margin-left: 6px; vertical-align: middle;
}
.mlv-tag-current { background:#eef2ff; color: var(--primary); }
.mlv-tag-hot { background:#fff7ed; color:#ea580c; }
.mlv-priv { display:flex; align-items:flex-start; gap:7px; font-size:12.5px; color:#4b5563; line-height:1.9; }
.mlv-priv .tick { color: var(--primary); font-weight:700; flex:0 0 auto; }
