/* 岳计划 小程序高保真原型 · 山河入色设计系统
   P0 合规：纯 SVG 图标（无 emoji）、无紫粉渐变、颜色统一 Token。 */
:root {
  --gold: #B45309;          /* 鎏金 */
  --gold-light: #D97706;
  --gold-soft: #F4E4C8;
  --lang-red: #9E2B25;      /* 郎釉红 */
  --lang-red-soft: #E8D5D2;
  --ink: #1C1917;           /* 松烟墨 */
  --ink-2: #292524;
  --ink-3: #44403C;
  --paper: #FAF7F2;         /* 暖纸白 */
  --paper-2: #F5EFE6;
  --paper-3: #EFE7D9;
  --line: #E7DFD3;
  --line-2: #D9CFBE;
  --text: #1C1917;
  --text-2: #78716C;
  --text-3: #A8A29E;
  --success: #4D7C0F;
  --warn: #B45309;
  --page-bg: #E9E2D6;        /* 桌面环境底色 */
  --map-bg-1: #EAF0E6;       /* 地图底色（浅青渐变三档） */
  --map-bg-2: #E3EADF;
  --map-bg-3: #DCE6DC;
  --map-contour: #D7E0D2;    /* 地图等高线描边 */
  --map-pin-dim: #9CA89A;    /* 地图未点亮定位点 */
  --danger-bg: #F2E2E0;      /* 驳回/停用浅底 */
  --cert-bg-1: #FFFDF8;      /* 证书卡渐变起点 */
  --on-dark-dim: #D9CFBE;    /* 深色底上的次级文字 */
  --shadow-sm: 0 1px 3px rgba(28,25,23,.08);
  --shadow-md: 0 6px 20px rgba(28,25,23,.10);
  --shadow-lg: 0 16px 48px rgba(28,25,23,.14);
  --radius: 18px;
  --radius-sm: 12px;
}
* { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }
html, body { height: 100%; }
body {
  font-family: -apple-system, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  background: var(--page-bg); color: var(--text);
  display: flex; align-items: center; justify-content: center;
  min-height: 100vh; padding: 18px;
}
.phone {
  width: 390px; height: 844px; background: var(--paper);
  border-radius: 44px; box-shadow: var(--shadow-lg);
  position: relative; overflow: hidden; border: 10px solid var(--ink);
  display: flex; flex-direction: column;
}
/* 内嵌预览（后台 iframe）：去掉自带手机壳，铺满容器，避免"双层手机框"导致横向溢出 */
html.embedded, html.embedded body { height: 100%; overflow: hidden; }
html.embedded body { padding: 0; display: block; min-height: 100%; background: var(--paper); }
html.embedded .phone {
  width: 100%; height: 100%; min-height: 100vh;
  border: none; border-radius: 0; box-shadow: none; background: var(--paper);
}
html.embedded .phone { border: 0; }
/* 宽屏（平板横屏 / 桌面档）时按移动端阅读宽度居中，避免把手机布局横向拉散 */
@media (min-width: 900px) {
  html.embedded body { background: var(--page-bg); display: flex; align-items: stretch; justify-content: center; }
  html.embedded .phone { max-width: 560px; height: 100%; }
}
@media (orientation: landscape) and (max-height: 520px) {
  html.embedded .statusbar { display: none; }
}
.statusbar {
  height: 44px; flex: 0 0 44px; display: flex; align-items: center; justify-content: space-between;
  padding: 0 22px; font-size: 13px; font-weight: 600; color: var(--ink);
  background: linear-gradient(180deg, var(--paper) 0%, var(--paper) 100%);
}
.statusbar .icons { display: flex; gap: 6px; align-items: center; }
.statusbar svg { width: 16px; height: 16px; }
.screen { flex: 1; overflow-y: auto; overflow-x: hidden; position: relative; background: var(--paper); }
.screen::-webkit-scrollbar { width: 0; }

/* 顶部标题区 */
.appbar {
  padding: 8px 18px 12px; background: var(--paper);
  position: sticky; top: 0; z-index: 5;
}
.appbar h1 { font-size: 22px; font-weight: 800; letter-spacing: -.5px; color: var(--ink); }
.appbar .sub { font-size: 12px; color: var(--text-2); margin-top: 2px; }

/* 顶部 tab */
.top-tabs { display: flex; gap: 18px; overflow-x: auto; padding: 6px 18px 10px; border-bottom: 1px solid var(--line); }
.top-tabs::-webkit-scrollbar { height: 0; }
.top-tabs .tt { font-size: 15px; color: var(--text-2); white-space: nowrap; padding: 4px 0; position: relative; }
.top-tabs .tt.active { color: var(--ink); font-weight: 700; }
.top-tabs .tt.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px; border-radius: 3px; background: var(--gold); }

/* 卡片 */
.card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); }
.section-pad { padding: 14px 16px; }
.muted { color: var(--text-2); }
.tiny { font-size: 11px; }
.col-side { display:flex; flex-direction:column; align-items:flex-end; gap:3px; text-align:right; }
.col-side .req { font-size:10px; color:var(--text-2); max-width:130px; line-height:1.3; }
.cond { font-size:11px; color:var(--text-2); margin-top:5px; padding:3px 7px; background:var(--paper-3); border-radius:7px; }

/* 省市级联 + 标签筛选 */
.browse-bar { display: flex; gap: 10px; padding: 4px 16px 10px; }
.select { flex: 1; appearance: none; background: #fff; border: 1px solid var(--line-2); border-radius: var(--radius-sm); padding: 10px 12px; font-size: 13px; color: var(--ink); font-weight: 600; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B45309' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; background-size: 16px; }
.tag-chips { display: flex; gap: 8px; overflow-x: auto; padding: 2px 16px 12px; }
.tag-chips::-webkit-scrollbar { height: 0; }
.tag-chip { flex: 0 0 auto; padding: 6px 12px; border-radius: 999px; font-size: 12px; font-weight: 600; background: var(--paper-3); color: var(--ink-3); border: 1px solid transparent; cursor: pointer; }
.tag-chip.active { background: var(--gold); color: #fff; border-color: var(--gold); }
.section-title { padding: 4px 16px 8px; font-size: 14px; font-weight: 700; color: var(--ink); }

/* 集合勋章墙 */
.col-wall { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 12px 16px; }
.col-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; position: relative; overflow: hidden; }
.col-card .head { display: flex; align-items: center; gap: 8px; }
.col-card .badge { width: 40px; height: 40px; border-radius: 50%; flex: 0 0 40px; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--gold-light), var(--gold)); color: #fff; }
.col-card .badge svg { width: 22px; height: 22px; }
.col-card.locked .badge { background: var(--paper-3); color: var(--text-3); }
.col-card .nm { font-size: 13px; font-weight: 700; color: var(--ink); }
.col-card .ds { font-size: 11px; color: var(--text-2); margin-top: 2px; line-height: 1.4; }
.col-card .prog { margin-top: 10px; height: 6px; border-radius: 3px; background: var(--paper-3); overflow: hidden; }
.col-card .prog > i { display: block; height: 100%; background: var(--gold); border-radius: 3px; }
.col-card .pnum { font-size: 11px; color: var(--text-2); margin-top: 5px; }
.col-card .ok { position: absolute; top: 10px; right: 10px; font-size: 10px; font-weight: 700; color: var(--success); }
.pill { display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; }
.pill.gold { background: var(--gold-soft); color: var(--gold); }
.pill.red { background: var(--lang-red-soft); color: var(--lang-red); }
.pill.ink { background: var(--paper-3); color: var(--ink-3); }

/* 底部 tabbar */
.tabbar {
  flex: 0 0 78px; display: flex; border-top: 1px solid var(--line);
  background: #fff; padding: 6px 0 18px;
}
.tabbar .tab {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  font-size: 11px; color: var(--text-3); cursor: pointer; transition: color .15s;
}
.tabbar .tab.active { color: var(--gold); }
.tabbar .tab svg { width: 24px; height: 24px; }
.tabbar .tab .dot { position: relative; }

/* 地图占位 */
.map-wrap { position: relative; height: 320px; margin: 0 16px; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); background: linear-gradient(160deg, var(--map-bg-1) 0%, var(--map-bg-2) 60%, var(--map-bg-3) 100%); }
.map-wrap svg { width: 100%; height: 100%; display: block; }
.map-badge { position: absolute; top: 12px; left: 12px; background: rgba(255,255,255,.9); border: 1px solid var(--line); border-radius: 999px; padding: 5px 12px; font-size: 12px; font-weight: 600; color: var(--ink); box-shadow: var(--shadow-sm); }
.map-fab { position: absolute; bottom: 16px; right: 16px; width: 52px; height: 52px; border-radius: 50%; background: var(--gold); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-md); cursor: pointer; }
.map-fab svg { width: 24px; height: 24px; }

/* 分类面板 */
.cat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 14px 16px; }
.cat { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px 8px; text-align: center; }
.cat .num { font-size: 20px; font-weight: 800; color: var(--ink); }
.cat .lbl { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.cat svg { width: 22px; height: 22px; color: var(--gold); margin-bottom: 4px; }

/* 列表 */
.list { padding: 4px 16px 16px; }
.list-item { display: flex; gap: 12px; padding: 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); margin-bottom: 10px; cursor: pointer; transition: transform .1s; content-visibility: auto; contain-intrinsic-size: auto 88px; }
.list-item:active { transform: scale(.985); }
.list-item .thumb { width: 56px; height: 56px; border-radius: 12px; background: linear-gradient(135deg, var(--gold-soft), var(--paper-3)); flex: 0 0 56px; display: flex; align-items: center; justify-content: center; color: var(--gold); }
.list-item .thumb svg { width: 28px; height: 28px; }
.list-item .body { flex: 1; min-width: 0; }
.list-item .title { font-size: 15px; font-weight: 700; color: var(--ink); }
.list-item .meta { font-size: 12px; color: var(--text-2); margin-top: 3px; }

/* 大按钮 */
.btn-primary { background: var(--gold); color: #fff; border: none; border-radius: 14px; padding: 16px; font-size: 16px; font-weight: 700; width: 100%; cursor: pointer; box-shadow: var(--shadow-md); }
.btn-secondary { background: #fff; color: var(--ink); border: 1px solid var(--line-2); border-radius: 14px; padding: 13px; font-size: 14px; font-weight: 600; width: 100%; cursor: pointer; }

/* 记录中遮罩 */
.recording-overlay { position: absolute; inset: 0; background: rgba(28,25,23,.92); z-index: 30; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #fff; }
.pulse { width: 120px; height: 120px; border-radius: 50%; background: var(--gold); display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 0 rgba(180,83,9,.6); animation: pulse 1.6s infinite; }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(180,83,9,.5);} 70% { box-shadow: 0 0 0 26px rgba(180,83,9,0);} 100% { box-shadow: 0 0 0 0 rgba(180,83,9,0);} }
.rec-stats { display: flex; gap: 28px; margin: 28px 0; }
.rec-stats .s { text-align: center; }
.rec-stats .s .v { font-size: 26px; font-weight: 800; }
.rec-stats .s .l { font-size: 12px; color: var(--on-dark-dim); margin-top: 4px; }

/* 点亮中国 */
.lightmap { margin: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; }
.lightmap svg { width: 100%; height: 220px; }
.medal-wall { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; padding: 14px 16px; }
.medal { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px 6px; text-align: center; }
.medal .ring { width: 46px; height: 46px; margin: 0 auto 6px; border-radius: 50%; background: linear-gradient(135deg, var(--gold-light), var(--gold)); display: flex; align-items: center; justify-content: center; color: #fff; }
.medal.locked .ring { background: var(--paper-3); color: var(--text-3); }
.medal .n { font-size: 11px; color: var(--text-2); }

/* 我的 */
.profile-head { margin: 14px 16px; background: linear-gradient(135deg, var(--ink) 0%, var(--ink-2) 100%); border-radius: var(--radius); padding: 18px; color: #fff; display: flex; align-items: center; gap: 14px; }
.profile-head .avatar { width: 54px; height: 54px; border-radius: 50%; background: linear-gradient(135deg, var(--gold-light), var(--gold)); display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 20px; }
.profile-head .pvip { font-size: 12px; color: var(--on-dark-dim); margin-top: 3px; }
.menu-row { display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: #fff; border-bottom: 1px solid var(--line); }
.menu-row svg { width: 20px; height: 20px; color: var(--gold); }
.menu-row .arrow { margin-left: auto; color: var(--text-3); }

.hide { display: none !important; }
.toast { position: absolute; left: 50%; bottom: 100px; transform: translateX(-50%); background: rgba(28,25,23,.92); color: #fff; padding: 10px 18px; border-radius: 999px; font-size: 13px; z-index: 50; opacity: 0; transition: opacity .2s; pointer-events: none; }
.toast.show { opacity: 1; }

/* 提交景区（UGC 入口） */
.submit-bar { padding: 0 16px 10px; }
.btn-submit { width: 100%; background: linear-gradient(135deg, var(--gold-light), var(--gold)); color: #fff; border: none; border-radius: 14px; padding: 13px; font-size: 14px; font-weight: 700; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 8px; box-shadow: var(--shadow-sm); }
.btn-submit svg { width: 18px; height: 18px; }
.submit-form { margin-top: 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 14px; box-shadow: var(--shadow-sm); }
.fld { width: 100%; box-sizing: border-box; border: 1px solid var(--line-2); border-radius: 10px; padding: 11px 12px; font-size: 14px; color: var(--ink); margin-bottom: 8px; background: var(--paper); }
.fld:focus { outline: none; border-color: var(--gold); }
.row2 { display: flex; gap: 8px; }
.row2 .fld { flex: 1; }

/* 景区行附加元素 */
.chip-mini { display: inline-block; font-size: 10px; padding: 2px 7px; border-radius: 999px; background: var(--paper-3); color: var(--ink-3); margin-left: 6px; }
.chip-mini.off { background: var(--danger-bg); color: var(--lang-red); }
.cert-btn { display: inline-block; margin-top: 6px; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--gold); background: var(--gold-soft); color: var(--gold); font-size: 11px; font-weight: 700; cursor: pointer; }
.list-item.offline { opacity: .55; }

/* AI 证书弹层（山河认证） */
.modal { position: absolute; inset: 0; background: rgba(28,25,23,.55); z-index: 40; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 24px; }
.cert-card { width: 100%; max-width: 320px; background: linear-gradient(160deg, var(--cert-bg-1) 0%, var(--paper-2) 100%); border: 1px solid var(--cert-accent, var(--gold)); border-radius: 18px; padding: 22px; box-shadow: var(--shadow-lg); position: relative; overflow: hidden; }
.cert-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 6px; background: var(--cert-accent, var(--gold)); }
.cert-head { text-align: center; padding: 10px 0 14px; border-bottom: 1px dashed var(--line-2); }
.cert-seal { width: 56px; height: 56px; margin: 0 auto 10px; border-radius: 50%; background: var(--cert-accent, var(--gold)); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; letter-spacing: 1px; }
.cert-title { font-size: 18px; font-weight: 800; color: var(--ink); }
.cert-sub { font-size: 12px; color: var(--text-2); margin-top: 4px; }
.cert-body { font-size: 13px; line-height: 1.7; color: var(--ink-2); margin: 14px 0; }
.cert-hi { font-size: 12px; color: var(--cert-accent, var(--gold)); font-weight: 600; }
.cert-foot { font-size: 10px; color: var(--text-3); margin-top: 12px; text-align: center; }
.modal-close { margin-top: 16px; background: #fff; border: 1px solid var(--line-2); border-radius: 999px; padding: 9px 28px; font-size: 14px; font-weight: 600; color: var(--ink); cursor: pointer; }
.detail-card { width: 100%; max-width: 340px; max-height: 80vh; overflow-y: auto; background: var(--paper-2); border: 1px solid var(--line-2); border-radius: 18px; padding: 20px; box-shadow: var(--shadow-lg); position: relative; }
.detail-card h3 { font-size: 18px; color: var(--ink); margin: 0 0 4px; }
.detail-card .dc-sub { font-size: 12px; color: var(--text-2); margin-bottom: 12px; }
.detail-card .dc-row { font-size: 13px; color: var(--text-2); margin: 6px 0; line-height: 1.5; }
.detail-card .dc-pt { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-top: 1px solid var(--line); font-size: 13px; color: var(--ink-2); }
.detail-card .dc-pt::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); flex: 0 0 6px; }
.detail-card .dc-btn { margin-top: 14px; width: 100%; }
.list-item.no-link { cursor: default; }

/* AI 待确认面板（后台副驾） */
.rev-item { padding: 10px 0; border-bottom: 1px solid var(--line); }
.rev-item:last-child { border-bottom: none; }
.rev-top { display: flex; align-items: center; gap: 8px; font-size: 14px; flex-wrap: wrap; }
.rev-ai { font-size: 12px; color: var(--text-2); margin: 5px 0; }
.rev-cert { font-size: 12px; color: var(--gold); font-weight: 600; }
.rev-actions { display: flex; gap: 8px; margin-top: 8px; }
.rev-ok, .rev-no { flex: 1; padding: 8px; border-radius: 10px; font-size: 13px; font-weight: 700; cursor: pointer; border: none; }
.rev-ok { background: var(--success); color: #fff; }
.rev-no { background: var(--danger-bg); color: var(--lang-red); }

/* AI 业务中心（小程序端） */
.ai-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm); padding:14px; margin-bottom:14px; box-shadow:var(--shadow-sm); }
.ai-card-h { display:flex; align-items:center; gap:8px; font-size:14px; font-weight:800; color:var(--ink); margin-bottom:10px; }
.ai-card-h svg { width:18px; height:18px; color:var(--gold); }
.ai-ask-box { display:flex; gap:8px; }
.ai-ask-box .fld { margin-bottom:0; flex:1; }
.ai-answer { margin-top:10px; background:var(--paper-2); border-radius:10px; padding:10px 12px; font-size:13px; line-height:1.6; color:var(--ink-2); min-height:42px; }
.ai-route { background:var(--paper-2); border-radius:10px; padding:10px 12px; font-size:13px; }
.ai-route-row { display:flex; justify-content:space-between; padding:4px 0; color:var(--ink-3); }
.ai-route-row b { color:var(--ink); }
.ai-route-tip { margin-top:6px; font-size:12px; color:var(--gold); line-height:1.6; }

/* AI 业务管理面板（工作台端） */
.aibiz-row { display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid var(--line); gap:10px; }
.aibiz-row:last-child { border-bottom:none; }
.aibiz-info { display:flex; flex-direction:column; gap:2px; }
.aibiz-info b { font-size:13px; color:var(--ink); }
.aibiz-stat { display:flex; flex-direction:column; align-items:flex-end; gap:5px; }
.aibiz-toggle { border:none; border-radius:999px; padding:5px 12px; font-size:11px; font-weight:700; cursor:pointer; }
.aibiz-toggle.on { background:var(--success); color:#fff; }
.aibiz-toggle.off { background: var(--danger-bg); color: var(--lang-red); }

/* ===== 商业化：会员中心（价格清晰一图流） ===== */
.biz-card { margin: 12px 16px 0; padding: 16px; }
.biz-h { display:flex; align-items:baseline; gap:8px; font-size:15px; font-weight:800; color:var(--ink); }
.biz-h .tiny { font-weight:600; }
.biz-h2 { font-size:13px; font-weight:800; color:var(--ink-2); margin-bottom:8px; }
.biz-h2 .tiny { font-weight:600; }
.biz-free { margin-top:10px; background:var(--gold-soft); border-radius:10px; padding:9px 12px; font-size:12px; line-height:1.6; color:var(--ink-2); }
.biz-free b { color:var(--gold); }
.biz-plans { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:12px 0 10px; }
.biz-plan { position:relative; border:1.5px solid var(--line); border-radius:var(--radius-sm); padding:12px 6px 10px; text-align:center; background:var(--paper); }
.biz-plan.hot { border-color:var(--gold); background:linear-gradient(180deg,var(--gold-soft),var(--paper)); }
.biz-tag { position:absolute; top:-9px; left:50%; transform:translateX(-50%); background:var(--gold); color:#fff; font-size:10px; font-weight:700; padding:2px 8px; border-radius:999px; white-space:nowrap; }
.biz-price { display:block; font-size:19px; font-weight:800; color:var(--lang-red); letter-spacing:-.3px; }
.biz-plan.hot .biz-price { color:var(--gold); }
.biz-name { display:block; font-size:12px; font-weight:700; color:var(--ink); margin-top:2px; }
.biz-sub { display:block; font-size:10px; color:var(--ink-3); margin-top:2px; }
.biz-sep { height:1px; background:var(--line); margin:14px 0 12px; }
.biz-gems { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.biz-gem { border:1px solid var(--line); border-radius:var(--radius-sm); padding:9px 6px; text-align:center; background:var(--paper-2); }
.biz-gem .biz-price { font-size:16px; color:var(--ink); }
.biz-flow { display:flex; align-items:center; justify-content:space-between; gap:2px; }
.biz-step { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; }
.biz-step b { width:22px; height:22px; border-radius:50%; background:var(--gold-soft); color:var(--gold); font-size:11px; display:flex; align-items:center; justify-content:center; }
.biz-step span { font-size:10.5px; color:var(--ink-3); font-weight:600; }
.biz-arrow { color:var(--line-2); font-size:14px; font-weight:700; }

/* ===== 首页今日状态摘要条 ===== */
.home-status { display:flex; align-items:center; justify-content:space-around; margin:10px 16px 0; background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm); padding:10px 8px; box-shadow:var(--shadow-sm); }
.hs-item { display:flex; flex-direction:column; align-items:center; gap:2px; }
.hs-item b { font-size:17px; font-weight:800; color:var(--gold); }
.hs-item span { font-size:10.5px; color:var(--ink-3); font-weight:600; }
.hs-div { width:1px; height:22px; background:var(--line); }

/* ===== 首页今日热点条（AI 每日自治发现） ===== */
.trend-strip { margin:10px 16px 0; background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm); padding:10px 12px; box-shadow:var(--shadow-sm); }
.trend-h { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:8px; }
.trend-title { font-size:13px; font-weight:800; color:var(--ink); }
.trend-row { display:flex; gap:8px; overflow-x:auto; }
.trend-row::-webkit-scrollbar { height:0; }
.trend-item { flex:0 0 auto; display:flex; flex-direction:column; gap:2px; padding:7px 12px; border-radius:10px; background:var(--gold-soft); border:1px solid var(--line-2); }
.trend-item .tw { font-size:12px; font-weight:700; color:var(--ink-2); white-space:nowrap; }
.trend-item .th { font-size:10px; font-weight:600; color:var(--gold); }

/* ===== 标签云：AI 自学习标记 ===== */
.tag-ai { display:inline-block; font-style:normal; font-size:9px; font-weight:800; padding:1px 5px; margin-left:4px; border-radius:999px; background:var(--gold); color:#fff; vertical-align:1px; }

/* ===== 打卡页：徒步路线专区 ===== */
.route-list { padding: 0 16px 16px; display:flex; flex-direction:column; gap:10px; }
.route-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm); padding:14px; box-shadow:var(--shadow-sm); position:relative; overflow:hidden; }
.route-card::before { content:""; position:absolute; top:0; left:0; right:0; height:4px; background:linear-gradient(90deg, var(--gold-light), var(--gold)); }
.route-card.offline { opacity:.55; }
.rc-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.rc-name { font-size:15px; font-weight:800; color:var(--ink); }
.rc-meta { font-size:12px; color:var(--text-2); margin-top:3px; }
.rc-stats { display:flex; gap:8px; margin-top:10px; }
.rc-stat { flex:1; background:var(--paper-2); border-radius:10px; padding:8px 4px; text-align:center; }
.rc-stat b { display:block; font-size:16px; font-weight:800; color:var(--gold); }
.rc-stat span { font-size:10px; color:var(--ink-3); font-weight:600; }
.rc-intro { font-size:12px; color:var(--text-2); line-height:1.5; margin-top:10px; }
.rc-foot { display:flex; align-items:center; gap:6px; margin-top:10px; flex-wrap:wrap; }

/* 报名弹层与表单（山河入色 Token，无硬编码） */
.reg-card { background: var(--paper); border-radius: var(--radius-lg); padding: 18px 16px 16px; max-width: 420px; width: 100%; max-height: 78vh; overflow-y: auto; }
.reg-card h3 { font-size: 18px; font-weight: 800; color: var(--ink); margin: 0 0 2px; }
.reg-sub { font-size: 12px; color: var(--text-2); margin-bottom: 12px; }
.reg-sec { border-top: 1px solid var(--line); padding: 12px 0; }
.reg-sec-t { font-size: 13px; font-weight: 700; color: var(--ink-2); margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.reg-sec-t::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); }
.reg-line { font-size: 13px; color: var(--text-2); line-height: 1.6; }
.reg-price { font-size: 22px; font-weight: 800; color: var(--gold); }
.reg-free { font-size: 16px; font-weight: 800; color: var(--ink); }
.reg-opt { display: flex; align-items: center; gap: 8px; padding: 11px 12px; border: 1px solid var(--line-2); border-radius: 12px; margin-bottom: 8px; cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ink); transition: all .12s; }
.reg-opt.active { border-color: var(--gold); background: var(--gold-soft); color: var(--gold); }
.reg-opt .dot { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--line-2); flex: 0 0 16px; }
.reg-opt.active .dot { border-color: var(--gold); background: var(--gold); box-shadow: inset 0 0 0 3px var(--paper); }
.reg-chk { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--ink); margin-bottom: 8px; cursor: pointer; }
.reg-chk .box { width: 18px; height: 18px; border-radius: 5px; border: 2px solid var(--line-2); flex: 0 0 18px; display: flex; align-items: center; justify-content: center; }
.reg-chk.on .box { background: var(--gold); border-color: var(--gold); }
.reg-chk.on .box::after { content: ""; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); margin-top: -2px; }
.reg-status { background: var(--paper-2); border-radius: 12px; padding: 12px; margin-bottom: 10px; }
.reg-status .rs-row { display: flex; justify-content: space-between; font-size: 13px; padding: 4px 0; color: var(--text-2); }
.reg-status .rs-row b { color: var(--ink); font-weight: 700; }
.reg-buy { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--line); }
.reg-buy .rb-name { font-size: 13px; font-weight: 600; color: var(--ink); }
.reg-buy .rb-desc { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.reg-buy .rb-price { color: var(--gold); font-weight: 800; font-size: 14px; }
.reg-buy .rb-btn { background: var(--gold); color: #fff; border: none; border-radius: 10px; padding: 7px 14px; font-size: 13px; font-weight: 700; cursor: pointer; }
.reg-note { font-size: 11px; color: var(--ink-3); margin-top: 8px; line-height: 1.5; }

/* ---- 首页目的地省份分组（深度） ---- */
.dest-sum { font-size: 12px; color: var(--text-2); padding: 8px 4px 10px; line-height: 1.6; }
.dest-sum b { color: var(--ink); font-weight: 800; }
/* ---- 探索打卡汇总条（与探索样式同源，零硬编码） ---- */
.ck-sum { font-size: 12px; color: var(--text-2); padding: 8px 18px 10px; line-height: 1.6; }
.ck-sum b { color: var(--ink); font-weight: 800; }
.dest-prov { font-size: 13px; font-weight: 800; color: var(--gold); padding: 10px 4px 4px; display: flex; align-items: baseline; gap: 8px; border-top: 1px solid var(--line); margin-top: 6px; }
.dest-prov:first-of-type { border-top: none; }
/* ---- 详情卡内可点击项（相关活动跳转） ---- */
.dc-pt.link { cursor: pointer; transition: color .12s, background .12s; }
.dc-pt.link:hover { color: var(--gold); background: var(--gold-soft); }

/* ---- 探索页：景区分类 / 城市分类 / 标签云 ---- */
.tag-group-t { font-size: 13px; font-weight: 800; color: var(--gold); padding: 12px 18px 6px; }
/* 详情卡内可点击 chips（分类 / 标签 / 城市，互钻） */
.dc-chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 4px 0 2px; }
.dc-chip { font-size: 12px; padding: 4px 10px; border-radius: 999px; background: var(--paper-3); color: var(--ink-2); border: 1px solid var(--line); }
.dc-chip.cat { background: var(--gold-soft); color: var(--gold); border-color: var(--gold-soft); font-weight: 700; }
.dc-chip.link { cursor: pointer; transition: color .12s, border-color .12s, background .12s; }
.dc-chip.link:hover { border-color: var(--gold); color: var(--gold); }
.dc-intro { font-size: 13px; line-height: 1.65; color: var(--ink-3); padding: 10px 0 2px; }
.dc-done { margin-top: 10px; font-size: 13px; font-weight: 700; color: var(--success); background: var(--gold-soft); border-radius: 10px; padding: 8px 12px; }
/* 打卡任务卡 */
.task-card { margin-top: 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; padding: 12px; box-shadow: var(--shadow-sm); }
.task-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.task-mode { font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px; }
.task-mode.gold { background: var(--gold-soft); color: var(--gold); }
.task-mode.red { background: var(--lang-red-soft); color: var(--lang-red); }
.task-mode.ink { background: var(--paper-3); color: var(--ink-2); }
.task-prog { font-size: 12px; color: var(--text-2); font-weight: 600; }
.task-tip { font-size: 12px; color: var(--text-2); line-height: 1.6; margin-bottom: 8px; }
.task-pt { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-top: 1px dashed var(--line); font-size: 13px; }
.task-pt:first-of-type { border-top: none; }
.tp-dot { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--line-2); flex: none; display: flex; align-items: center; justify-content: center; font-size: 10px; color: #fff; }
.task-pt.done .tp-dot { background: var(--success); border-color: var(--success); }
.tp-name { flex: 1; color: var(--ink-2); }
.task-pt.done .tp-name { color: var(--ink); font-weight: 600; }
.tp-ok { font-size: 11px; color: var(--success); font-weight: 700; }
.tp-btn { font-size: 12px; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--gold); color: var(--gold); background: #fff; cursor: pointer; }
.tp-btn:hover { background: var(--gold); color: #fff; }
.dc-btn { width: 100%; margin-top: 12px; }

/* ---- 图鉴收集（植物 / 动物 / 石刻 / 建筑 / 地貌 / 传说）---- */
.coll-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; padding: 4px 16px 16px; }
.coll-card { border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; padding: 10px 12px; position: relative; box-shadow: var(--shadow-sm); }
.coll-card.done { border-color: var(--gold); background: var(--gold-soft); }
.coll-card .coll-name { font-size: 14px; font-weight: 700; color: var(--ink); }
.coll-card .coll-rare { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.coll-card .coll-meta { font-size: 11px; color: var(--text-2); margin-top: 6px; }
.coll-card.done .coll-meta { color: var(--gold); }
/* 稀有度标记（山河入色 Token，无紫粉 / 无 emoji）*/
.rarity { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; background: var(--ink-3); }
.rarity.r-common { background: var(--ink-3); }
.rarity.r-rare { background: var(--success); }
.rarity.r-precious { background: var(--gold); }
.rarity.r-secret { background: var(--gold-light); box-shadow: 0 0 0 2px var(--gold-soft); }
/* 景区详情内联图鉴 */
.coll-mini { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.coll-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--ink-2); }
.coll-chip.done { border-color: var(--gold); background: var(--gold-soft); color: var(--ink); }
.coll-chip .coll-name { font-weight: 600; }
.coll-chip .coll-cat { font-size: 10px; color: var(--text-2); background: var(--paper-3); padding: 1px 6px; border-radius: 999px; }
.coll-chip .coll-done { font-size: 10px; color: var(--gold); font-weight: 700; }
.coll-chip .coll-lock { font-size: 10px; color: var(--text-2); }
.coll-btn { font-size: 11px; padding: 2px 10px; border-radius: 999px; border: 1px solid var(--gold); color: var(--gold); background: #fff; cursor: pointer; }
.coll-btn:hover { background: var(--gold); color: #fff; }
.dc-tip { font-size: 12px; color: var(--text-2); margin-top: 8px; line-height: 1.6; }

/* ---- 图鉴详情弹层（AI 识别标准 + 解释）---- */
.collectible-card { width: 100%; max-width: 340px; max-height: 82vh; overflow-y: auto; background: var(--paper-2); border: 1px solid var(--line-2); border-radius: 18px; padding: 20px; box-shadow: var(--shadow-lg); position: relative; }
.collectible-card .cd-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.collectible-card .cd-name { font-size: 18px; font-weight: 800; color: var(--ink); }
.collectible-card .cd-cat { width: 100%; font-size: 12px; color: var(--text-2); margin-top: 2px; }
.collectible-card .cd-desc { font-size: 13px; color: var(--ink-2); line-height: 1.7; margin-top: 12px; }
.collectible-card .cd-sec { margin-top: 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; }
.collectible-card .cd-t { font-size: 12px; font-weight: 700; color: var(--gold); margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
.collectible-card .cd-t::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); flex: 0 0 6px; }
.collectible-card .cd-b { font-size: 13px; color: var(--ink-2); line-height: 1.7; }
.collectible-card .cd-ok { margin-top: 14px; font-size: 13px; font-weight: 700; color: var(--success); background: var(--gold-soft); border-radius: 10px; padding: 8px 12px; }
.coll-card { cursor: pointer; }
.coll-card:active { transform: scale(.98); }

/* ===== 今日推荐（人性化引导卡） ===== */
.rec-card { margin: 12px 16px 4px; background: linear-gradient(135deg, var(--gold-soft), var(--paper-2)); border: 1px solid var(--line-2); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow-sm); }
.rec-h { font-size: 12px; font-weight: 800; color: var(--gold); letter-spacing: .5px; }
.rec-name { font-size: 18px; font-weight: 800; color: var(--ink); margin-top: 4px; display: flex; align-items: baseline; gap: 8px; }
.rec-loc { font-size: 12px; font-weight: 600; color: var(--text-2); }
.rec-sub { font-size: 12px; color: var(--text-2); line-height: 1.55; margin-top: 6px; }
.rec-meta { font-size: 12px; color: var(--text-2); margin-top: 8px; }
.near-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.near-row:last-of-type { border-bottom: none; }
.near-main { flex: 1; min-width: 0; }
.near-main b { display: block; font-size: 14px; color: var(--ink); font-weight: 700; }
.near-meta { font-size: 11px; color: var(--text-2); }
.rec-meta b { color: var(--gold); }
.rec-go { margin-top: 10px; }

/* ===== 了解这座山（科普区块） ===== */
.learn-card { margin-top: 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; box-shadow: var(--shadow-sm); }
.learn-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.learn-title { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 800; color: var(--ink); }
.learn-title svg { width: 18px; height: 18px; color: var(--gold); }
.learn-btn { font-size: 12px; font-weight: 700; color: var(--gold); background: var(--gold-soft); border: 1px solid var(--gold); border-radius: 999px; padding: 5px 12px; cursor: pointer; }
.learn-btn:disabled { opacity: .6; cursor: default; }
.learn-intro { font-size: 13px; line-height: 1.7; color: var(--ink-2); }
.learn-sec-t { font-size: 12px; font-weight: 700; color: var(--gold); margin: 10px 0 4px; }
.learn-pt { display: flex; gap: 8px; padding: 5px 0; border-top: 1px dashed var(--line); font-size: 12px; color: var(--ink-2); line-height: 1.5; }
.learn-pt b { color: var(--ink); flex: 0 0 auto; }
.learn-trivia { margin-top: 10px; background: var(--paper-2); border-radius: 10px; padding: 8px 10px; font-size: 12px; line-height: 1.6; color: var(--ink-2); }
.learn-tag { display: inline-block; font-size: 10px; font-weight: 800; color: #fff; background: var(--gold); border-radius: 999px; padding: 1px 7px; margin-right: 6px; vertical-align: 1px; }
.learn-hint { font-size: 11px; color: var(--text-3); margin-top: 8px; }
.learn-note { font-size: 11px; color: var(--text-2); margin-top: 8px; padding-top: 6px; border-top: 1px dashed var(--line); }

/* ===== 打卡任务卡：进度条 + 下个打卡点 ===== */
.task-bar { height: 6px; border-radius: 3px; background: var(--paper-3); overflow: hidden; margin: 2px 0 6px; }
.task-bar > i { display: block; height: 100%; background: var(--gold); border-radius: 3px; transition: width .3s; }
.task-pt.next { background: var(--gold-soft); border-radius: 8px; padding-left: 6px; padding-right: 6px; }
.task-pt.next .tp-name { color: var(--gold); font-weight: 700; }
.tp-btn-next { background: var(--gold); color: #fff; }
.tp-btn-next:hover { background: var(--gold); color: #fff; }

/* ===== 列表一键打卡按钮 ===== */
.ck-quick { margin-top: 6px; font-size: 12px; font-weight: 700; color: var(--gold); background: var(--gold-soft); border: 1px solid var(--gold); border-radius: 999px; padding: 4px 14px; cursor: pointer; }
.ck-quick:hover { background: var(--gold); color: #fff; }

/* ===== 图鉴收集筛选 ===== */
.coll-filters { display: flex; gap: 8px; padding: 4px 16px 6px; }
.cf { font-size: 12px; font-weight: 600; color: var(--text-2); padding: 5px 14px; border-radius: 999px; background: var(--paper-3); border: 1px solid transparent; cursor: pointer; }
.cf.on { background: var(--gold); color: #fff; border-color: var(--gold); }

/* ===== 6.7.0 我的成长 / 照片墙 / 付费墙 ===== */
.growth-top { display: flex; gap: 10px; padding: 4px 0 10px; }
.gt-item { flex: 1; text-align: center; background: var(--paper-2); border-radius: var(--radius-sm); padding: 10px 4px; }
.gt-num { font-size: 22px; font-weight: 800; color: var(--gold); }
.gt-l { font-size: 11px; color: var(--text-2); }
.ms-row { display: flex; gap: 8px; margin-bottom: 12px; }
.ms { flex: 1; text-align: center; padding: 8px 2px; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--text-3); }
.ms.on { border-color: var(--gold); color: var(--gold); font-weight: 700; background: var(--gold-soft); }
.ms-n { font-size: 12px; }
.cal-title { font-size: 12px; color: var(--text-2); margin-bottom: 6px; font-weight: 700; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-cell { aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center; font-size: 11px; border-radius: 6px; background: var(--paper-2); color: var(--text-3); }
.cal-cell.on { background: var(--gold); color: #fff; }
.cal-cell.empty { background: transparent; }
.growth-foot { display: flex; gap: 10px; margin-top: 12px; }
.gf-item { flex: 1; text-align: center; background: var(--paper-2); border-radius: var(--radius-sm); padding: 8px 4px; }
.gf-num { font-size: 17px; font-weight: 800; color: var(--ink); }
.gf-l { font-size: 11px; color: var(--text-2); }
.coll-prog { height: 7px; border-radius: 99px; background: var(--paper-3); overflow: hidden; margin-top: 10px; }
.coll-prog i { display: block; height: 100%; background: var(--gold); border-radius: 99px; }

/* 知识闯关 */
.quiz-card { margin-top: 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; background: var(--paper); }
.quiz-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.quiz-title { font-weight: 800; color: var(--ink); }
.quiz-hint { font-size: 12px; color: var(--text-2); }
.quiz-q { padding: 8px 0; border-top: 1px dashed var(--line); }
.qq-t { font-weight: 700; font-size: 14px; margin-bottom: 4px; }
.qq-opt { display: block; font-size: 13px; color: var(--text); padding: 4px 0; cursor: pointer; }
.quiz-result { font-size: 14px; padding: 6px 0; }
.quiz-badge { color: var(--gold); font-weight: 800; margin-top: 4px; }
.quiz-fb { font-size: 12px; color: var(--text-2); padding: 2px 0; }

/* 照片墙 */
.photo-actions { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.photo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.photo-item { background: var(--paper-2); border-radius: var(--radius-sm); overflow: hidden; }
.photo-item img, .photo-ph { width: 100%; height: 84px; object-fit: cover; display: block; background: var(--map-bg-2); }
.photo-cap { font-size: 11px; color: var(--text); padding: 4px 6px 0; line-height: 1.3; }
.photo-meta { font-size: 10px; color: var(--text-3); padding: 2px 6px 6px; }

/* 付费墙 */
.pay-card { background: var(--paper); border-radius: var(--radius); padding: 22px 18px; max-width: 300px; margin: 0 auto; text-align: center; }
.pay-h { font-size: 19px; font-weight: 800; color: var(--ink); margin-bottom: 8px; }
.pay-desc { font-size: 13px; color: var(--text-2); margin-bottom: 12px; }
.pay-price { font-size: 14px; color: var(--ink); margin-bottom: 14px; }
.pay-price b { color: var(--gold); font-size: 18px; }
.pay-ok { color: var(--success); font-weight: 700; font-size: 13px; }

/* ===== 6.8.0 深化：赛季勋章 / 限时活动 / 好友榜 / 主题闯关 ===== */
.deep-sec { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.md-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 8px; }
.md-card { border-radius: var(--radius-sm); padding: 12px 12px 10px; background: var(--paper-2); border: 1px solid var(--line); }
.md-t { font-size: 12px; color: var(--text-2); }
.md-n { font-size: 26px; font-weight: 800; color: var(--ink); line-height: 1.15; }
.md-n span { font-size: 12px; font-weight: 600; color: var(--text-2); margin-left: 2px; }
.md-s { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.md-card.t-bronze { background: var(--paper-2); border-color: var(--line-2); }
.md-card.t-silver { background: var(--paper-3); border-color: var(--line-2); }
.md-card.t-gold { background: var(--gold-soft); border-color: var(--gold-light); }
.md-card.t-gold .md-n { color: var(--gold); }
.md-card.t-none { opacity: .72; }
.ev-card { border-radius: var(--radius-sm); padding: 12px; background: var(--paper-2); border: 1px solid var(--line); margin-top: 10px; }
.ev-card.done { border-color: var(--success); }
.ev-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.ev-n { font-size: 14px; font-weight: 800; color: var(--ink); }
.ev-d { font-size: 11px; color: var(--text-2); white-space: nowrap; }
.ev-desc { font-size: 12px; color: var(--text-2); margin: 4px 0 8px; line-height: 1.5; }
.ev-bar { height: 7px; border-radius: 999px; background: var(--line); overflow: hidden; }
.ev-bar i { display: block; height: 100%; background: var(--gold); border-radius: 999px; }
.ev-card.done .ev-bar i { background: var(--success); }
.ev-foot { display: flex; justify-content: space-between; gap: 8px; font-size: 11px; color: var(--text-2); margin-top: 6px; }
.ev-foot span:last-child { text-align: right; }
.fr-sum { font-size: 12px; color: var(--text-2); margin: 6px 0 8px; }
.fr-sum b { color: var(--gold); }
.fr-list { display: flex; flex-direction: column; gap: 4px; }
.fr-row { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: var(--radius-sm); background: var(--paper-2); font-size: 13px; }
.fr-row.self { background: var(--gold-soft); border: 1px solid var(--gold-light); }
.fr-r { width: 20px; text-align: center; font-weight: 800; color: var(--text-2); font-size: 12px; }
.fr-row.self .fr-r { color: var(--gold); }
.fr-n { flex: 1; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fr-c { color: var(--text-2); font-size: 12px; }
.pack-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 8px; }
.pack-card { text-align: left; border: 1px solid var(--line); background: var(--paper-2); border-radius: var(--radius-sm); padding: 12px; cursor: pointer; font-family: inherit; }
.pack-card:active { background: var(--paper-3); }
.pk-n { font-size: 14px; font-weight: 800; color: var(--ink); }
.pk-d { font-size: 11px; color: var(--text-2); margin: 4px 0 6px; line-height: 1.45; min-height: 30px; }
.pk-c { font-size: 11px; color: var(--gold); font-weight: 700; }
.pack-modal-card { background: var(--paper); border-radius: var(--radius); padding: 18px 16px; max-width: 340px; margin: 0 auto; max-height: 72vh; overflow-y: auto; }
.pack-modal-h { font-size: 17px; font-weight: 800; color: var(--ink); margin-bottom: 10px; }

/* ===== 6.9.0 易查找：搜索 + 等级筛选 ===== */
.browse-bar .fld { flex: 1 1 auto; min-width: 0; }
.browse-bar .select { flex: 0 0 104px; }
.sc-empty { padding: 22px 12px; text-align: center; color: var(--text-2); font-size: 13px; line-height: 1.7; }
.sc-empty b { color: var(--gold); }

/* ===== 6.9.0 易学习：快速了解卡片 ===== */
.learn-loc { font-size: 12px; color: var(--text-2); background: var(--paper-2); border-radius: 999px; display: inline-block; padding: 4px 10px; margin-bottom: 6px; }

/* ===== 6.9.0 任务中心 ===== */
.tk-row { border-radius: var(--radius-sm); background: var(--paper-2); border: 1px solid var(--line); padding: 11px 12px; margin-top: 9px; }
.tk-row.done { border-color: var(--success); }
.tk-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.tk-n { font-size: 14px; font-weight: 800; color: var(--ink); }
.tk-c { font-size: 12px; color: var(--text-2); white-space: nowrap; }
.tk-row.done .tk-c { color: var(--success); font-weight: 700; }
.tk-d { font-size: 11px; color: var(--text-2); margin: 3px 0 7px; line-height: 1.5; }
.tk-bar { height: 6px; border-radius: 999px; background: var(--line); overflow: hidden; }
.tk-bar i { display: block; height: 100%; background: var(--gold); border-radius: 999px; }
.tk-row.done .tk-bar i { background: var(--success); }
.tk-f { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 8px; font-size: 11px; color: var(--text-2); }
.tk-go { border: 1px solid var(--gold-light); background: var(--gold-soft); color: var(--gold); font-weight: 700; font-size: 11px; border-radius: 999px; padding: 5px 12px; cursor: pointer; font-family: inherit; }
.tk-row.done .tk-go { border-color: var(--success); background: var(--paper); color: var(--success); }

/* ===== 6.9.0 下一座山推荐 ===== */
.rec-scenic { border-radius: var(--radius-sm); background: var(--paper-2); border: 1px solid var(--line); padding: 12px; margin-top: 9px; }
.rs-n { font-size: 15px; font-weight: 800; color: var(--ink); }
.rs-m { font-size: 12px; color: var(--text-2); margin: 2px 0 6px; }
.rs-d { font-size: 12px; color: var(--text-2); line-height: 1.6; }
.rs-f { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 9px; font-size: 11px; color: var(--text-2); }
.rs-go { border: 1px solid var(--gold-light); background: var(--gold-soft); color: var(--gold); font-weight: 700; font-size: 11px; border-radius: 999px; padding: 5px 12px; cursor: pointer; font-family: inherit; }

/* ===== 6.11.0 博物馆文物打卡 ===== */
.museum-card { margin-top: 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--paper-2); padding: 12px; }
.mu-h { font-size: 14px; font-weight: 800; color: var(--ink); margin-bottom: 6px; }
.mu-sec { font-size: 12px; color: var(--text-2); margin: 8px 0 4px; }
.mu-tip { font-size: 11px; line-height: 1.6; color: var(--text-2); background: var(--paper-2); border: 1px solid var(--line); border-radius: 8px; padding: 7px 9px; margin-bottom: 4px; }
.rl-item { display: flex; align-items: flex-start; gap: 10px; padding: 9px 0; border-top: 1px dashed var(--line); }
.rl-item:first-of-type { border-top: 0; }
.rl-main { flex: 1; min-width: 0; }
.rl-n { font-size: 13px; font-weight: 700; color: var(--ink); }
.rl-b { font-size: 10px; font-weight: 700; color: var(--gold); background: var(--gold-soft); border-radius: 999px; padding: 1px 7px; margin-left: 6px; }
.rl-b.lite { color: var(--text-2); background: var(--paper-3); }
.rl-d { font-size: 11px; color: var(--text-2); line-height: 1.5; margin-top: 2px; }
.rl-go { flex: 0 0 auto; border: 1px solid var(--gold-light); background: var(--gold-soft); color: var(--gold); font-weight: 700; font-size: 11px; border-radius: 999px; padding: 6px 10px; cursor: pointer; font-family: inherit; }
.cam-card { background: var(--paper); border-radius: var(--radius); padding: 18px 16px; max-width: 320px; margin: 0 auto; text-align: center; }
.cam-h { font-size: 17px; font-weight: 800; color: var(--ink); margin-bottom: 6px; }
.cam-hint { font-size: 12px; color: var(--text-2); line-height: 1.6; margin-bottom: 10px; }
.cam-preview { margin-bottom: 10px; }
.cam-preview img { max-width: 100%; border-radius: var(--radius-sm); }
.cam-actions { display: flex; gap: 8px; }
.cam-actions .btn-primary { flex: 1; }

/* ===== 6.12.0 探索页体验优化：分段 / 排序 / 分页 / 打卡态 ===== */
.seg-bar { display: flex; gap: 8px; padding: 2px 16px 10px; }
.seg { flex: 1; border: 1px solid var(--line-2); background: var(--paper); color: var(--text-2); font-weight: 700; font-size: 13px; padding: 8px 0; border-radius: 999px; cursor: pointer; font-family: inherit; }
.seg.on { background: var(--gold); border-color: var(--gold); color: #fff; }
.sort-bar { display: flex; gap: 8px; padding: 2px 16px 8px; }
.sort-chip { font-size: 12px; color: var(--text-2); border: 1px solid var(--line-2); border-radius: 999px; padding: 4px 12px; cursor: pointer; background: var(--paper); }
.sort-chip.on { color: var(--gold); border-color: var(--gold-light); background: var(--gold-soft); font-weight: 700; }
.near-btn { flex: 0 0 auto; border: 1px solid var(--gold-light); background: var(--gold-soft); color: var(--gold); font-weight: 700; font-size: 12px; border-radius: var(--radius-sm); padding: 0 12px; cursor: pointer; font-family: inherit; }
.tag-more { padding: 0 16px 6px; }
.tag-more-btn { border: 0; background: transparent; color: var(--gold); font-size: 12px; font-weight: 700; cursor: pointer; font-family: inherit; padding: 2px 0; }
.filter-sum { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 2px 16px 8px; font-size: 12px; color: var(--text-2); }
.fs-clear { border: 1px solid var(--line-2); background: var(--paper); color: var(--text-2); font-size: 11px; border-radius: 999px; padding: 3px 10px; cursor: pointer; font-family: inherit; }
.load-more { display: block; width: calc(100% - 32px); margin: 12px 16px 18px; border: 1px solid var(--line-2); background: var(--paper); color: var(--ink-2); font-weight: 700; font-size: 13px; border-radius: 999px; padding: 11px 0; cursor: pointer; font-family: inherit; }
.done-b { font-size: 10px; font-weight: 700; color: var(--success); background: var(--paper-2); border: 1px solid var(--success); border-radius: 999px; padding: 1px 6px; margin-left: 6px; }
.pill.done { color: var(--success); border-color: var(--success); background: var(--paper-2); }

/* 登录 / 注册门禁 */
.auth-gate { position: fixed; inset: 0; z-index: 9999; background: var(--page-bg); display: flex; align-items: center; justify-content: center; padding: 24px; }
.auth-gate.hide { display: none; }
.auth-card { width: 100%; max-width: 340px; background: var(--paper); border: 1px solid var(--line); border-radius: 20px; padding: 24px 22px; box-shadow: var(--shadow-lg); }
.auth-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.auth-logo { width: 44px; height: 44px; border-radius: 12px; background: var(--gold); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 20px; }
.auth-t { font-size: 18px; font-weight: 800; color: var(--ink); }
.auth-s { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.auth-tabs { display: flex; gap: 6px; background: var(--paper-2); border-radius: 10px; padding: 4px; margin-bottom: 16px; }
.auth-tabs .at { flex: 1; text-align: center; font-size: 13px; font-weight: 700; color: var(--text-2); padding: 8px 0; border-radius: 8px; cursor: pointer; }
.auth-tabs .at.on { background: var(--paper); color: var(--gold); box-shadow: var(--shadow-sm); }
.auth-l { display: block; font-size: 12px; color: var(--text-2); margin: 10px 0 6px; font-weight: 600; }
.auth-i { width: 100%; padding: 11px 12px; border: 1px solid var(--line-2); border-radius: 10px; font-size: 14px; background: var(--paper); color: var(--ink); font-family: inherit; }
.auth-i:focus { outline: none; border-color: var(--gold); }
.auth-err { min-height: 18px; font-size: 12px; color: var(--lang-red); margin-top: 8px; }
.auth-btn { width: 100%; margin-top: 4px; padding: 12px; border: none; border-radius: 10px; background: var(--gold); color: #fff; font-size: 15px; font-weight: 700; font-family: inherit; cursor: pointer; }
.auth-btn:disabled { opacity: .6; }
.auth-hint { font-size: 11px; color: var(--text-3); text-align: center; margin-top: 12px; line-height: 1.6; }
.acc-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; background: var(--paper-2); border: 1px solid var(--line); border-radius: 12px; margin-bottom: 10px; }
.acc-bar .acc-n { font-size: 13px; color: var(--ink); font-weight: 700; }
.acc-bar .acc-u { font-size: 11px; color: var(--text-2); margin-top: 2px; }
.acc-bar button { border: 1px solid var(--line-2); background: var(--paper); color: var(--text-2); font-size: 12px; font-weight: 700; padding: 6px 12px; border-radius: 8px; font-family: inherit; cursor: pointer; }

/* ---------- 6.18.0 探索分类 / 商业化精简 / 实拍对照 ---------- */
/* 筛选按钮 */
.filter-btn { position: relative; flex: 0 0 auto; border: 1px solid var(--line-2); background: var(--paper); color: var(--ink-3); font-family: inherit; font-size: 13px; font-weight: 700; padding: 0 14px; border-radius: var(--radius-sm); cursor: pointer; }
.filter-btn:active { background: var(--paper-2); }
.fp-dot { position: absolute; top: -5px; right: -5px; min-width: 16px; height: 16px; line-height: 16px; border-radius: 999px; background: var(--gold); color: #fff; font-size: 10px; font-style: normal; text-align: center; padding: 0 4px; }

/* 主题 chips：横向滚动，一屏 8 类 */
.theme-chips { display: flex; gap: 8px; overflow-x: auto; padding: 2px 16px 10px; scrollbar-width: none; }
.theme-chips::-webkit-scrollbar { display: none; }
.theme-chip { flex: 0 0 auto; border: 1px solid var(--line); background: var(--paper); color: var(--ink-3); font-family: inherit; font-size: 13px; font-weight: 700; padding: 8px 12px; border-radius: 999px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
.theme-chip i { font-style: normal; font-size: 11px; color: var(--text-3); font-weight: 600; }
.theme-chip.on { background: var(--gold); border-color: var(--gold); color: #fff; }
.theme-chip.on i { color: #fff; opacity: .85; }

/* 高级筛选抽屉 */
.filter-panel { margin: 0 16px 8px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; }
.filter-panel.hide { display: none; }
.fp-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--line); }
.fp-row:last-of-type { border-bottom: none; }
.fp-l { flex: 0 0 36px; font-size: 12px; color: var(--text-2); font-weight: 700; }
.fp-chips { display: flex; gap: 6px; flex-wrap: wrap; flex: 1; }
.fp-chip { border: 1px solid var(--line-2); background: var(--paper); color: var(--ink-3); font-family: inherit; font-size: 12px; font-weight: 700; padding: 5px 11px; border-radius: 999px; cursor: pointer; }
.fp-chip.on { background: var(--gold-soft); border-color: var(--gold-light); color: var(--gold); }
.fp-sel { display: flex; gap: 6px; flex: 1; flex-wrap: wrap; }
.fp-sel .select { flex: 1 1 30%; min-width: 92px; font-size: 12px; padding: 6px 8px; }
.fp-foot { display: flex; gap: 10px; margin-top: 10px; }
.fp-clear { flex: 0 0 84px; border: 1px solid var(--line-2); background: var(--paper); color: var(--text-2); font-family: inherit; font-size: 13px; font-weight: 700; border-radius: 10px; padding: 9px 0; cursor: pointer; }
.fp-ok { flex: 1; border: none; background: var(--gold); color: #fff; font-family: inherit; font-size: 14px; font-weight: 700; border-radius: 10px; padding: 9px 0; cursor: pointer; }

/* 商业化精简卡 */
.biz-mini-card { margin: 0 16px; }
.bm-row { display: flex; align-items: center; gap: 12px; }
.bm-left { flex: 1; min-width: 0; }
.bm-t { font-size: 14px; font-weight: 800; color: var(--ink); display: flex; align-items: center; gap: 6px; }
.bm-t b { color: var(--gold); font-size: 18px; }
.bm-plan { font-size: 11px; font-weight: 700; color: var(--text-2); background: var(--paper-2); border-radius: 999px; padding: 2px 8px; }
.bm-s { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.bm-btn { flex: 0 0 auto; border: none; background: var(--gold); color: #fff; font-family: inherit; font-size: 13px; font-weight: 700; border-radius: 999px; padding: 9px 14px; cursor: pointer; }

/* 会员弹层 */
.mv-sec { font-size: 12px; font-weight: 800; color: var(--text-2); margin: 12px 0 6px; }
.mv-plans { display: flex; gap: 8px; }
.mv-plan { position: relative; flex: 1; border: 1px solid var(--line); border-radius: 12px; padding: 10px 8px; text-align: center; cursor: pointer; background: var(--paper); }
.mv-plan.hot { border-color: var(--gold-light); background: var(--gold-soft); }
.mv-plan b { display: block; font-size: 16px; color: var(--gold); }
.mv-plan span { display: block; font-size: 12px; font-weight: 700; color: var(--ink); margin-top: 2px; }
.mv-plan i { display: block; font-style: normal; font-size: 10px; color: var(--text-3); margin-top: 2px; }
.mv-tag { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); background: var(--gold); color: #fff; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
.mv-gems { display: flex; gap: 8px; }
.mv-gem { flex: 1; border: 1px dashed var(--line-2); border-radius: 10px; padding: 9px 6px; text-align: center; cursor: pointer; }
.mv-gem b { display: block; font-size: 14px; color: var(--ink); }
.mv-gem span { font-size: 11px; color: var(--text-2); }
.mv-note { font-size: 11px; color: var(--text-3); line-height: 1.6; margin-top: 10px; }

/* 实拍对照墙 */
.shots-card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px; margin-top: 10px; }
.shots-h { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.shots-title { font-size: 14px; font-weight: 800; color: var(--ink); }
.shots-n { font-size: 11px; color: var(--text-3); }
.shots-tip { font-size: 11px; color: var(--text-3); margin: 4px 0 10px; line-height: 1.6; }
.shots-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.shot-item { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: var(--paper-2); }
.shot-ph { width: 100%; height: 96px; background: var(--paper-3); overflow: hidden; }
.shot-ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.shot-cap { font-size: 11px; color: var(--ink-3); padding: 6px 8px 2px; line-height: 1.5; max-height: 34px; overflow: hidden; }
.shot-meta { font-size: 10px; color: var(--text-3); padding: 0 8px 7px; display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.shot-ai { font-style: normal; color: var(--success); background: var(--paper); border: 1px solid var(--line); border-radius: 999px; padding: 1px 6px; }
.shot-ai.warn { color: var(--gold); }
.shot-example .shot-ex-ph { width: 100%; height: 96px; background: linear-gradient(135deg, var(--paper-3), var(--paper-2)); display: flex; align-items: center; justify-content: center; }
.shot-example .shot-ex-ph span { font-size: 12px; font-weight: 700; color: var(--text-3); border: 1px dashed var(--line-2); border-radius: 999px; padding: 4px 10px; }
.shots-actions { display: flex; gap: 8px; margin-top: 10px; align-items: center; }
.shots-add { flex: 0 0 auto; border: 1px solid var(--gold-light); background: var(--gold-soft); color: var(--gold); font-family: inherit; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 8px 12px; cursor: pointer; }
.shots-add:disabled { opacity: .6; }

/* 位置条：替代常驻大地图，首屏更轻 */
.geo-strip { display: flex; align-items: center; gap: 10px; margin: 0 16px 10px; padding: 8px 12px; background: var(--paper-2); border: 1px solid var(--line); border-radius: 999px; }
.geo-strip span { flex: 1; font-size: 12px; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.geo-btn { flex: 0 0 auto; border: none; background: var(--gold); color: #fff; font-family: inherit; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 6px 12px; cursor: pointer; }

/* 分类速览与主题 chip 重复，隐藏以保持首屏清爽 */
#cat-grid.hide { display: none !important; }
.shot-example .shot-ph { height: 96px; }
.shot-example .shot-ph img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.92); }
.shot-ai.sample { color: var(--text-3); }
