/* ============ 赴星 v1.3.0 · 界面系统优化 ============
   覆盖层（加载于 styles.css 之后）：
   视觉语言：从“玻璃渐变卡”转向「白纸卡 + 细描边 + 高信息密度」
   - 全局再紧凑：字号/留白进一步收敛，正文 13px 起步
   - 首页：本场刚需内容置顶；宫格数据摘要下沉到年度回忆册上方
   - 行程：行式卡片（封面小图 + 状态 + 下一步入口）
   - 回忆：票根横版、副券大幅收窄；时间轴保持
   - 社区：双列瀑布细节加强
   - 我的：个人主页化（夜空头卡 + 统计条 + 分组列表）
================================================================= */
body { font-size: 13px; line-height: 1.45; }
.page { padding: 9px 12px 94px !important; }
.topbar { margin-bottom: 7px; min-height: 34px; gap: 6px; }
.topbar .title { font-size: 19px; letter-spacing: -0.3px; }
.topbar .sub { font-size: 11px; margin-top: 1px; }
.home-topbar { margin-bottom: 6px; }
.greet { font-size: 11.5px; margin-top: 2px; }
.greet-name { font-size: 13.5px; font-weight: 700; }
.card {
  padding: 11px 12px; margin-bottom: 8px; border-radius: 15px;
  background: var(--card-solid);
  border: 1px solid var(--border-soft);
  box-shadow: 0 1px 2px rgba(15,23,42,0.03), 0 10px 24px rgba(15,23,42,0.05);
  backdrop-filter: none;
}
[data-theme="dark"] .card { background: var(--card-solid); border-color: rgba(255,255,255,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.2), 0 12px 28px rgba(0,0,0,0.35); }
.card h3 { font-size: 13px; margin-bottom: 7px; }
.muted { font-size: 11px; }
.back-bar { padding: 9px 12px; min-height: 42px; margin: -9px -12px 9px; }
.back-bar .bb-title { font-size: 15px; }
.btn { padding: 9px 14px; font-size: 13px; min-height: 36px; border-radius: 12px; }
.btn-sm { padding: 5px 10px; font-size: 11.5px; min-height: 30px; }
.btn-text { font-size: 11.5px; }
.list-item { padding: 7px 0; min-height: 38px; font-size: 13px; }
.list-item .tag { font-size: 9.5px; padding: 2px 7px; }
.input, .textarea, select { font-size: 15px !important; }
.field { margin-bottom: 9px; }
.field label { font-size: 11.5px; margin-bottom: 3px; }
.field .input, .field .textarea { padding: 7px 10px; border-radius: 10px; }
.stat-grid { gap: 7px; margin-bottom: 9px; }
.stat { padding: 7px 3px 8px; border-radius: 12px; background: var(--card-solid); border: 1px solid var(--border-soft); box-shadow: none; }
.stat .n { font-size: 16px; }
.stat .t { font-size: 9.5px; margin-top: 1px; }
.hero-card { padding: 14px 15px; margin: 0 0 8px; border-radius: 17px; }
.hero-card .artist { font-size: 19px; }
.hero-card .place { font-size: 11px; margin-top: 3px; }
.countdown { margin-top: 8px; gap: 5px; }
.countdown .unit { padding: 5px 2px 5px; border-radius: 10px; }
.countdown .num { font-size: 17px; }
.countdown .lbl { font-size: 9px; margin-top: 0; }
.func-grid { gap: 4px; }
.f { padding: 8px 2px 7px; gap: 3px; min-height: 70px; }
.fi { width: 38px; height: 38px; border-radius: 12px; }
.f-name { font-size: 10.5px; }
.f-sub { font-size: 10px; min-height: 12px; }
.f-prog { width: 32px; height: 3px; }
.tabbar { bottom: calc(7px + env(safe-area-inset-bottom)); left: 9px; right: 9px; padding: 5px 4px; border-radius: 22px; }
.tab { padding: 3px 2px; gap: 1px; font-size: 9.5px; min-height: 43px; border-radius: 17px; }
.tab .ti svg { width: 20px !important; height: 20px !important; }
.seg { padding: 3px; border-radius: 12px; margin-bottom: 8px; background: rgba(15,23,42,0.04); border: none; }
[data-theme="dark"] .seg { background: rgba(255,255,255,0.06); }
.seg button { font-size: 12px; padding: 6px 6px; border-radius: 10px; }
.seg button.on { background: var(--card-solid); }
.empty-start { text-align: center; padding: 16px 12px; }
.empty .ei svg { width: 30px !important; height: 30px !important; }
.empty { padding: 26px 16px; }
.empty p { font-size: 12.5px; }
.empty h3 { font-size: 15px; }
.link-more { font-size: 11.5px; }
.tag { font-size: 10px; padding: 2px 8px; }

/* ============ 首页 · 本场置顶 + 数据摘要下沉 ============ */
.hero-top { position: relative; display: flex; justify-content: space-between; align-items: center; margin-bottom: 5px; }
.hero-pill { font-size: 9px; font-weight: 800; letter-spacing: 1.5px; background: rgba(255,255,255,.2); border: 1px solid rgba(255,255,255,.35); padding: 2px 8px; border-radius: 18px; }
.hero-status { font-size: 10.5px; opacity: .9; }
.ht-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; margin: 0 0 8px; }
.ht { flex-direction: row; justify-content: flex-start; gap: 7px; padding: 8px 9px; border-radius: 13px; background: var(--card-solid); border: 1px solid var(--border-soft); box-shadow: none; }
[data-theme="dark"] .ht { box-shadow: none; }
.ht-ic { width: 27px; height: 27px; border-radius: 9px; flex: none; }
.ht b { font-size: 14px; line-height: 1.1; font-variant-numeric: tabular-nums; }
.ht span { font-size: 8.5px; }
.qt-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 7px; }
.qt { gap: 8px; padding: 8px 10px; border-radius: 12px; background: rgba(15,23,42,0.025); border: 1px solid var(--border-soft); box-shadow: none; }
[data-theme="dark"] .qt { background: rgba(255,255,255,0.04); }
.qt-ic { width: 30px; height: 30px; border-radius: 10px; }
.qt b { font-size: 12.5px; }
.qt span { font-size: 9.5px; margin-top: 0; }
.todo-count { font-size: 9.5px; }
.todo-item .grow { font-size: 12.5px; }
/* 年度回忆册入口（紧致） */
.link-card { gap: 10px; padding: 2px 0; }
.lc-icon { width: 34px; height: 34px; border-radius: 11px; background: linear-gradient(135deg, #fff3d6, #ffe3ef); color: #c98a12; border: 1px solid rgba(201,138,18,.18); }
[data-theme="dark"] .lc-icon { background: rgba(245,185,78,.14); }
.link-card b { font-size: 12.5px; }
.link-card .grow span { font-size: 10.5px; margin-top: 0; }
/* 首页“大家都在聊” */
.hot-row { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.hot-mini { padding: 7px; border-radius: 11px; background: var(--card-solid); border: 1px solid var(--border-soft); box-shadow: none; }
.hot-cv { width: 42px; height: 42px; border-radius: 9px; }
.hot-cv-ph { background: linear-gradient(135deg, #8b5cf6, #ec4899); }
.hot-txt b { font-size: 11.5px; }
.hot-txt span { font-size: 9.5px; margin-top: 2px; }

/* ============ 行程 · 行式卡片 ============ */
.trip-sum { display: flex; align-items: baseline; gap: 6px; padding: 2px 2px 8px; }
.trip-sum b { font-size: 15px; }
.trip-sum .muted { font-size: 10.5px; }
.concert-card { display: flex; gap: 11px; align-items: stretch; margin-bottom: 9px; border-radius: 15px; padding: 10px; background: var(--card-solid); border: 1px solid var(--border-soft); box-shadow: 0 1px 2px rgba(15,23,42,.03), 0 10px 24px rgba(15,23,42,.05); }
[data-theme="dark"] .concert-card { box-shadow: none; border-color: rgba(255,255,255,0.07); }
.concert-cover { width: 84px; height: 84px; flex: none; border-radius: 12px; padding: 8px; align-items: flex-end; justify-content: flex-start; background: linear-gradient(135deg, #3a4fd0, #4a6cf7); display: flex; }
.concert-cover img { border-radius: 12px; }
.concert-cover::before { content: none; }
.concert-cover .cc-ico { position: relative; top: auto; left: auto; transform: none; color: rgba(255,255,255,.55); margin: auto; }
.concert-cover > div[style] { display: none; }
.cc-past-badge { top: 6px; left: 6px; font-size: 8.5px; padding: 2px 7px; }
.concert-body { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; padding: 0; }
.concert-body .cc-name { font-size: 15px; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.concert-body .cc-meta { font-size: 10.5px; color: var(--text-2); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.concert-body .cc-date { font-size: 10.5px; color: var(--text-3); margin-top: 1px; }
.concert-body .cc-next { display: inline-flex; align-items: center; gap: 3px; margin-top: 7px; align-self: flex-start; font-size: 10px; font-weight: 700; color: var(--primary); background: rgba(74,108,247,0.08); padding: 3px 9px; border-radius: 16px; }
.concert-body .cc-next svg { width: 11px !important; height: 11px !important; }
.concert-body .tag { position: absolute; top: 6px; right: 6px; }
.concert-card .concert-body { position: relative; }
.concert-card.past { opacity: .9; }
.concert-card.past .concert-cover { background: linear-gradient(135deg, #8892b0, #6b7390); }
.cc-sub { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 10.5px; color: var(--text-2); margin-top: 3px; }
.cc-sub b { color: var(--text); font-weight: 700; }

/* ============ 回忆 · 票根 ============ */
.ticket { min-height: 146px; border-radius: 13px; margin: 0 0 10px; box-shadow: 0 1px 2px rgba(15,23,42,.03), 0 12px 26px rgba(15,23,42,.08); }
.t-side { flex: 0 0 52px; width: 52px; padding: 11px 3px 11px 5px; }
.t-side-head { font-size: 8.5px; letter-spacing: 2px; }
.t-side-mark { font-size: 17px; }
.t-side-date { font-size: 8px; letter-spacing: 1px; }
.t-main { padding: 10px 11px 8px 12px; }
.t-name { font-size: 14.5px; }
.t-where { font-size: 10px; margin-top: 1px; }
.t-cols { gap: 2px 6px; margin-top: 6px; padding-top: 6px; }
.t-cell .k { font-size: 8px; }
.t-cell b { font-size: 10.5px; }
.t-msg { font-size: 9.5px; margin-top: 3px; }
.t-act { padding-top: 4px; }
.t-act .btn-text { font-size: 10px; }
.stamp { width: 38px; height: 38px; left: 15px; margin-top: -19px; font-size: 8.5px; border-width: 2px; }
@media (max-width: 370px) {
  .ticket { min-height: 138px; }
  .t-side { flex-basis: 46px; width: 46px; }
  .t-main { padding: 9px 9px 7px 10px; }
  .ticket > .stamp { left: 12px; }
}
/* 票样选择可视化 */
.tk-styles { gap: 6px; }
.tkopt { padding: 5px 8px; border-radius: 9px; font-size: 11px; gap: 4px; }
.tkopt .sw { width: 9px; height: 9px; border-radius: 3px; }

/* ============ 回忆 · 时间轴（足迹线） ============ */
.view-cap { font-size: 10.5px; margin: 0 0 7px; }
.recap-banner { border-radius: 13px; padding: 9px 12px !important; margin-bottom: 8px; }
.recap-banner-title { font-size: 13px !important; }
.recap-banner-sub { font-size: 10px !important; }
.tl-sec-head { padding: 6px 2px 3px; }
.tl-year { font-size: 12px; }
.tl-sec-count { font-size: 9.5px; }
.tl { padding-left: 20px; margin-left: 6px; }
.tl-node { padding-bottom: 9px; }
.tl-node::before { left: -23px; top: 15px; width: 9px; height: 9px; border-width: 2px; box-shadow: 0 0 0 2.5px rgba(74,108,247,.13); }
.tl-node.done::before { box-shadow: 0 0 0 2.5px rgba(34,197,94,.15); }
.tl-node.miss::before { box-shadow: 0 0 0 2.5px rgba(154,161,181,.13); }
.tl-date { font-size: 9.5px; margin-bottom: 3px; }
.tl-card { padding: 8px 10px; border-radius: 12px; }
.tl-artist { font-size: 14px; }
.tl-chip { font-size: 8.5px; padding: 1px 7px; }
.tl-meta { font-size: 10.5px; margin-top: 2px; }
.tl-tags { gap: 5px; margin-top: 5px; }
.tl-tag { font-size: 9px; padding: 2px 7px; }
.tl-more { font-size: 9.5px; margin-top: 5px; }

/* ============ 社区 · 双列瀑布加强 ============ */
.community-banner { margin-bottom: 7px; padding: 8px 10px !important; border-radius: 12px !important; }
.community-banner .banner-icon { font-size: 13px !important; }
.community-banner .banner-title { font-size: 11px !important; }
.community-banner .banner-desc { font-size: 9.5px !important; }
.community-header { padding-bottom: 2px; }
.search-box { min-height: 34px; }
.search-input { font-size: 12.5px; }
.cat-tabs { gap: 6px; padding: 0 0 6px; }
.cat-tab { font-size: 11.5px !important; padding: 5px 12px !important; border-radius: 15px !important; white-space: nowrap; }
.sort-row { margin: 0 0 8px; }
.xh-feed { columns: 2; column-gap: 8px; padding-bottom: 2px; }
.xh-feed .xh-card { display: inline-block; width: 100%; margin: 0 0 8px; vertical-align: top; break-inside: avoid; }
.xh-card { border-radius: 13px; border: 1px solid var(--border-soft); box-shadow: 0 2px 10px rgba(15,23,42,.05); }
.xh-cover { aspect-ratio: 3 / 3.7; }
.xh-title { font-size: 12.5px; line-height: 1.32; min-height: 2.64em; }
.xh-body { padding: 7px 8px 8px; }
.xh-meta { margin-top: 5px; gap: 4px; }
.xh-avatar { width: 15px; height: 15px; font-size: 8px; }
.xh-name { font-size: 9.5px; }
.xh-like { font-size: 9.5px; }
.xh-cat { font-size: 9px; left: 6px; top: 6px; padding: 2px 7px; }
.xh-count { font-size: 9px; right: 6px; bottom: 6px; }
.xh-hot { font-size: 8.5px; right: 6px; top: 6px; }
.xh-ph i svg { width: 24px !important; height: 24px !important; }
.xh-ph span { font-size: 10px; }

/* ============ 我的 · 个人主页 ============ */
.pr-head { position: relative; overflow: hidden; border-radius: 16px; padding: 16px 14px 12px; margin: 0 0 8px; color: #fff; background: linear-gradient(150deg, #171b45 0%, #2a2760 48%, #5a2a68 100%); }
[data-theme="dark"] .pr-head { background: linear-gradient(150deg, #0b0e22 0%, #1b1a3d 48%, #3c1c45 100%); }
.pr-head::before, .pr-head::after { content: ''; position: absolute; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.16), transparent 65%); pointer-events: none; }
.pr-head::before { width: 140px; height: 140px; top: -50px; right: -30px; }
.pr-head::after { width: 90px; height: 90px; bottom: -34px; left: 18%; background: radial-gradient(circle, rgba(255,255,255,.08), transparent 70%); }
.pr-top { display: flex; align-items: center; gap: 12px; position: relative; }
.pr-avatar { flex: none; width: 52px; height: 52px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 800; color: #fff; background: rgba(255,255,255,.18); border: 1.5px solid rgba(255,255,255,.5); overflow: hidden; }
.pr-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pr-info { min-width: 0; flex: 1; }
.pr-name { font-size: 17px; font-weight: 800; letter-spacing: .2px; display: flex; align-items: center; gap: 6px; }
.pr-sig { font-size: 10.5px; opacity: .82; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pr-badges { display: flex; gap: 6px; margin-top: 5px; }
.pr-badge { font-size: 9px; font-weight: 700; background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.22); padding: 2px 8px; border-radius: 14px; }
.pr-edit { position: relative; flex: none; }
.pr-edit .btn { color: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.3); }
.pr-trend { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 13px; }
.pr-trend .cell { text-align: center; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12); border-radius: 11px; padding: 7px 2px 6px; }
.pr-trend .n { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; }
.pr-trend .t { font-size: 8.5px; opacity: .78; margin-top: 1px; }
.pr-links { margin-bottom: 9px; }
.grp-label { display: flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 800; color: var(--text-3); margin: 10px 2px 5px; letter-spacing: 1px; }
.grp-label::after { content: ''; flex: 1; height: 1px; background: var(--border-soft); }
.li-ico { flex: none; width: 30px; height: 30px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; background: rgba(74,108,247,.08); color: var(--primary); }
.li-ico svg { width: 17px !important; height: 17px !important; }
.li-ico.danger { background: rgba(239,68,68,.08); color: var(--danger); }
.li-ico.gold { background: rgba(245,185,78,.12); color: #c98a12; }
.list-item .grow { font-size: 12.5px; }
.list-item .grow .desc { display: block; font-size: 9.5px; color: var(--text-3); margin-top: 1px; }
.pr-foot { text-align: center; padding: 4px 0 10px; font-size: 9.5px; color: var(--text-3); }

@media (max-width: 340px) {
  .ht-grid { gap: 5px; }
  .ht b { font-size: 13px; }
  .xh-title { font-size: 11.5px; }
  .concert-cover { width: 72px; height: 76px; }
}

/* 行式行程卡细节补全 */
.concert-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.concert-body .cc-name { padding-right: 74px; }
.concert-body .cc-meta svg, .concert-body .cc-date svg { width: 11px !important; height: 11px !important; vertical-align: -2px; }
.concert-card.past .cc-next { background: rgba(15,23,42,.05); color: var(--text-2); }
[data-theme="dark"] .concert-card.past .cc-next { background: rgba(255,255,255,.08); }
.cc-date { display: flex; align-items: center; gap: 4px; }
.cc-meta { display: flex; align-items: center; gap: 4px; }
/* 我的页分组紧凑 */
.page > .grp-label:first-of-type { margin-top: 2px; }
.pr-badge svg { width: 10px !important; height: 10px !important; vertical-align: -1px; }
.pr-head .btn-sm { min-height: 26px; padding: 3px 11px; font-size: 11px; border-radius: 9px; }

/* ============ v1.3.1 视觉修正：配色/字体/可读性 ============ */
body { font-size: 13.5px; }
button, input, textarea, select, .chip, .seg button, .cc-next { font-family: inherit; }
.ht { font-family: inherit; }
.ht b { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--text); }
.ht span { font-size: 8.5px; letter-spacing: .2px; color: var(--text-3); }
/* 数据宫格彩色图标（此前漏定义） */
.ht-c1 { background: #ffeaf0; color: #f43f5e; }
.ht-c2 { background: #ede9ff; color: #7c5cfc; }
.ht-c3 { background: #e6f0ff; color: #2f7cf6; }
.ht-c4 { background: #e6f8ef; color: #14a365; }
[data-theme="dark"] .ht-c1 { background: rgba(244,63,94,.16); color: #fb7185; }
[data-theme="dark"] .ht-c2 { background: rgba(139,92,246,.18); color: #b6a6ff; }
[data-theme="dark"] .ht-c3 { background: rgba(47,124,246,.18); color: #7fb1ff; }
[data-theme="dark"] .ht-c4 { background: rgba(20,163,101,.16); color: #4ade80; }

/* 统一按钮/控件字体 & Hero 文字投影 */
#app button { font-family: inherit; }
.hero-card .artist, .hero-card .place, .hero-top, .hero-card .countdown { text-shadow: 0 1px 10px rgba(3,6,24,.45); }
.countdown .num { font-variant-numeric: tabular-nums; }

/* 数据宫格：竖排小统计（图标/数字/标签），窄屏不换行 */
.ht { flex-direction: column; align-items: center; justify-content: center; gap: 1px; padding: 7px 2px 6px; }
.ht-ic { margin-bottom: 2px; }
.ht b { font-size: 16px; line-height: 1.1; margin-top: 1px; }
.ht span { font-size: 8px; white-space: nowrap; margin-top: 2px; color: var(--text-3); letter-spacing: .2px; }

.ht { display: flex; }
.ht-ic { display: flex; align-items: center; justify-content: center; }

/* ============ v1.3.0 收口：卡片有框、首页 Hero 拉高 ============ */
.card,
.concert-card,
.hot-mini,
.xh-card {
  border-color: rgba(22, 32, 72, 0.12);
  box-shadow: 0 2px 6px rgba(22, 32, 72, 0.04), 0 10px 26px rgba(22, 32, 72, 0.09);
}
[data-theme="dark"] .card,
[data-theme="dark"] .concert-card,
[data-theme="dark"] .hot-mini,
[data-theme="dark"] .xh-card {
  border-color: rgba(255, 255, 255, 0.16);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3), 0 12px 30px rgba(0, 0, 0, 0.42);
}
/* 迷你统计格：给足可见边界但不喧宾夺主 */
.ht { border-color: rgba(22, 32, 72, 0.1); box-shadow: 0 1px 3px rgba(22, 32, 72, 0.05); }
[data-theme="dark"] .ht { border-color: rgba(255, 255, 255, 0.14); box-shadow: none; }

/* 首页下一场 Hero：拉高约 1/3，倒计时沉底 */
.hero-card.hero-home {
  display: flex;
  flex-direction: column;
  min-height: 208px;
  padding: 15px 16px 14px;
  border-radius: 19px;
  margin-bottom: 9px;
}
.hero-card.hero-home > .hero-top { margin-bottom: 0; }
.hero-card.hero-home > .artist { margin-top: auto; font-size: 22px; font-weight: 800; padding-top: 10px; }
.hero-card.hero-home > .place { font-size: 11.5px; margin-top: 4px; }
.hero-card.hero-home > .countdown { margin-top: 10px; }

/* 社区卡片元信息不挤行 */
.xh-meta { min-width: 0; }
.xh-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.xh-avatar { flex: none; }
.xh-like { flex: none; margin-left: auto; }

/* ============ v1.2.7 视觉打磨 ============ */
/* 1) 首页 Hero：图片上部透出，文字/倒计时沉底 */
.hero-home {
  display: flex; flex-direction: column; justify-content: flex-end; align-items: stretch;
  min-height: 216px; padding: 15px 16px 14px; position: relative; overflow: hidden;
  color: #fff; border: 1px solid rgba(255,255,255,.16);
  background: linear-gradient(150deg, #232a63 0%, #3f2a78 52%, #6d2a6e 100%);
}
.hero-home::before {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(6,9,28,.04) 0%, rgba(6,9,28,.06) 32%, rgba(6,9,28,.34) 64%, rgba(6,9,28,.78) 100%);
}
.hero-home::after { content: none; }
.hero-home .stars-bg { z-index: 0; }
.hero-top { position: relative; z-index: 2; margin-bottom: 7px; }
.hero-home .artist, .hero-home .place, .hero-home .countdown { position: relative; z-index: 2; }
.hero-home .artist { font-size: 23px; line-height: 1.15; text-shadow: 0 1px 10px rgba(0,0,0,.5); }
.hero-home .place { font-size: 11.5px; opacity: .97; margin-top: 4px; line-height: 1.35; text-shadow: 0 1px 6px rgba(0,0,0,.5); }
.hero-home .countdown { margin-top: 11px; gap: 5px; }
.hero-home .countdown .unit { background: rgba(8,10,28,.42); border: 1px solid rgba(255,255,255,.18); border-radius: 11px; padding: 6px 3px 5px; box-shadow: inset 0 0 8px rgba(255,255,255,.05); }
.hero-home .countdown .num { color: #fff; }
.hero-home .countdown .lbl { color: rgba(255,255,255,.8); }
.hero-status { color: #fff; }
[data-theme="dark"] .hero-home { border-color: rgba(255,255,255,.1); }

/* 2) 首页各卡片：边框/底色更明确，宫格按钮带彩色图标 */
.card, .hot-mini, .ht, .qt, .concert-card { border-color: rgba(15,23,42,.09); }
.card-head h3 { display: inline-flex; align-items: center; gap: 5px; }
.ht { background: linear-gradient(160deg, #ffffff, #eef2ff); }
.qt { background: linear-gradient(160deg, #ffffff, #f8f4ff); }
.hot-mini { background: linear-gradient(160deg, #ffffff, #f4f6ff); }
.ht:active, .qt:active, .hot-mini:active { transform: scale(.98); }
.qt-ic { color: #fff; background: linear-gradient(135deg, #6d5ce7, #8b5cf6); box-shadow: 0 3px 8px rgba(109,92,231,.26); }
.ht-ic { color: #fff; }
.ht-c1 { background: linear-gradient(135deg, #7c5cf0, #a855f7); }
.ht-c2 { background: linear-gradient(135deg, #2f7cf0, #38bdf8); }
.ht-c3 { background: linear-gradient(135deg, #f0a13c, #fb923c); }
.ht-c4 { background: linear-gradient(135deg, #17a98e, #10b981); }

/* 3) 行程卡：柔和分层底色 + 高级阴影 */
.concert-card { background: linear-gradient(135deg, #ffffff 0%, #f3f1ff 100%); }
.concert-card.past { background: linear-gradient(135deg, #fdfdfe, #edf0f6); }
.concert-card .concert-cover { box-shadow: 0 5px 12px rgba(35,42,99,.16); }
.concert-card .cc-next { background: linear-gradient(135deg, #6d5ce7, #8b5cf6); color: #fff; }
.concert-card.past .cc-next { background: linear-gradient(135deg, #9aa1b5, #7c879c); color: #fff; }

/* 4) 回忆时间轴：明确左侧轴 + 状态圆点 */
.tl-sec-head { padding: 8px 2px 4px; }
.tl { padding-left: 26px; margin-left: 6px; }
.tl::before {
  left: 8px; top: 12px; bottom: 12px; width: 3px; border-radius: 2px;
  background: linear-gradient(to bottom, #7c5cf0 0%, rgba(124,92,240,.38) 55%, rgba(124,92,240,.08) 100%);
}
.tl-node { position: relative; padding-bottom: 12px; }
.tl-node::before {
  left: -23px; top: 15px; width: 13px; height: 13px; border-radius: 50%; z-index: 1;
  background: #7c5cf0; border: 2.5px solid #fff;
  box-shadow: 0 0 0 2px rgba(124,92,240,.22), 0 2px 7px rgba(15,23,42,.22);
}
.tl-node.done::before { background: #22c55e; box-shadow: 0 0 0 2px rgba(34,197,94,.22), 0 2px 7px rgba(15,23,42,.16); }
.tl-node.miss::before { background: #8a93a8; box-shadow: 0 0 0 2px rgba(138,147,168,.3), 0 2px 7px rgba(15,23,42,.16); }
.tl-date { margin-bottom: 4px; }
[data-theme="dark"] .tl-node::before { border-color: #0f1322; }
[data-theme="dark"] .tl-node.done::before { border-color: #0f1322; }
[data-theme="dark"] .tl-node.miss::before { border-color: #0f1322; }

/* 5) 社区：小红书式双列瀑布卡片 */
.xh-feed { columns: 2; column-gap: 9px; padding-bottom: 2px; }
.xh-feed .xh-card {
  display: inline-block; width: 100%; margin: 0 0 9px; vertical-align: top; break-inside: avoid;
  background: #fff; overflow: hidden; border-radius: 14px; border: 1px solid rgba(15,23,42,.07);
  box-shadow: 0 2px 10px rgba(15,23,42,.05);
}
[data-theme="dark"] .xh-feed .xh-card { background: #181b29; border-color: rgba(255,255,255,.08); }
.xh-cover { position: relative; overflow: hidden; border-radius: 0; aspect-ratio: 3 / 3.8; }
.xh-cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.xh-cover .xh-ph { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 12px; }
.xh-ph i { display: inline-flex; }
.xh-ph span { text-align: center; max-width: 92%; }
.xh-title {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  min-height: 2.64em; font-size: 13px; font-weight: 600; line-height: 1.32;
}
.xh-body { padding: 8px 9px 9px; }
.xh-avatar { width: 17px; height: 17px; font-size: 9px; font-weight: 700; color: #fff; background: linear-gradient(135deg, #7c5cf0, #a855f7); border: 1px solid rgba(255,255,255,.9); }
.xh-name { font-size: 10px; font-weight: 600; }
.xh-like { font-size: 10px; }
.xh-cat { font-size: 9px; left: 7px; top: 7px; padding: 2px 8px; font-weight: 700; background: rgba(10,12,30,.52); color: #fff; border: 1px solid rgba(255,255,255,.18); }
.xh-card:active { transform: scale(.985); }
/* v1.2.7 · 补充 */
.xh-feed.single { columns: 1; }
.xh-feed.single .xh-cover { aspect-ratio: 3 / 2.2; }
.xh-feed.single .xh-title { -webkit-line-clamp: 2; }
.concert-card { background: linear-gradient(135deg, #f9f7ff 0%, #ffffff 55%, #f1efff 100%); }
.concert-card .concert-cover { background: linear-gradient(135deg, #3a4fd0, #4a6cf7); }
.concert-card:nth-of-type(3n+2) .concert-cover { background: linear-gradient(135deg, #7c5cf0, #a855f7); }
.concert-card:nth-of-type(3n+3) .concert-cover { background: linear-gradient(135deg, #0e9f8f, #14b8a6); }
[data-theme="dark"] .concert-card { background: #1a1d2e; }


/* ============ v1.2.9 · 全页面组件强化 ============ */
/* 首页问候：头像圆标 + 名字渐变色 */
.greet { align-items: center; }
.greet-ava {
  width: 30px; height: 30px; border-radius: 50%; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 13px; font-weight: 700; margin-right: 5px;
  background: linear-gradient(135deg, #6d5ce7 0%, #a855f7 55%, #ec4899 100%);
  box-shadow: 0 3px 9px rgba(124, 92, 240, .32);
}
.greet-line { display: inline-flex; flex-wrap: wrap; align-items: baseline; min-width: 0; }
.greet-name {
  background: linear-gradient(120deg, #3a56d4, #7c5cf0 60%, #d946b8);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
[data-theme="dark"] .greet-name { background: linear-gradient(120deg, #8fb0ff, #b79bff 60%, #ff9fe0); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }

/* 首页速办：进度条沉底 */
.qt { position: relative; }
.qt-bd { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.qt-bd b { font-size: 12.5px; }
.qt-bd > span { font-size: 10px; color: var(--text-2); line-height: 1.3; }
.qt-bar {
  display: block; width: 100%; height: 3px; border-radius: 99px; overflow: hidden;
  background: rgba(124, 92, 240, .14); margin-top: 4px;
}
.qt-bar i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, #6d5ce7, #a855f7); }

/* 通用“文字链”升级为胶囊/图标控件 */
.link-more {
  display: inline-flex; align-items: center; gap: 2px; flex: none;
  color: var(--text-2); background: rgba(15, 23, 42, .05);
  border: 1px solid rgba(15, 23, 42, .07); border-radius: 999px;
  padding: 3px 10px; font-weight: 600;
}
[data-theme="dark"] .link-more { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .09); color: #cfd6f2; }
.todo-item > .muted, .link-card > .muted {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(124, 92, 240, .1); color: #6d5ce7; font-size: 12px; font-weight: 800;
}
[data-theme="dark"] .todo-item > .muted, [data-theme="dark"] .link-card > .muted { background: rgba(139, 122, 246, .2); color: #c4b2ff; }
.recap-banner-go {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%; flex: none;
  background: rgba(255, 255, 255, .26); border: 1px solid rgba(255, 255, 255, .4);
  color: #fff; font-size: 14px; line-height: 1; box-shadow: 0 2px 8px rgba(15, 23, 42, .14);
}
[data-theme="dark"] .recap-banner-go { background: rgba(255, 255, 255, .14); }

/* 票根操作：图标胶囊按钮，不再是纯文字 */
.t-act { gap: 8px; justify-content: flex-start; }
.t-act-btn {
  display: inline-flex; align-items: center; gap: 4px; margin: 0; padding: 6px 11px;
  border: none; border-radius: 999px; font-size: 10.5px; font-weight: 700;
  cursor: pointer; font-family: inherit; line-height: 1;
  transition: transform .15s ease, opacity .15s ease;
}
.t-act-btn:active { transform: scale(.94); }
.t-act-btn svg { width: 13px !important; height: 13px !important; }
.t-zoom { background: rgba(74, 108, 247, .09); color: #3a56d4; }
.t-page { background: linear-gradient(135deg, #6d5ce7, #8b5cf6); color: #fff; box-shadow: 0 3px 9px rgba(109, 92, 231, .3); }
[data-theme="dark"] .t-zoom { background: rgba(107, 133, 255, .16); color: #a6baff; }
.ticket.st-night .t-act-btn { color: #fff; }
.ticket.st-night .t-zoom { background: rgba(255, 255, 255, .12); }
.ticket.st-night .t-page { background: linear-gradient(135deg, #c9a24b, #e3c06a); box-shadow: 0 3px 9px rgba(0, 0, 0, .3); }

/* 时间轴节点：“翻开这一场”按钮化 */
.tl-open {
  display: inline-flex; align-items: center; gap: 3px; margin: 6px 0 1px;
  padding: 5px 11px; border-radius: 999px; border: 1px solid rgba(124, 92, 240, .18);
  background: linear-gradient(135deg, #eef1ff, #f6f0ff); color: #4a3f9e;
  font-size: 10.5px; font-weight: 700; font-family: inherit; cursor: pointer;
  transition: transform .15s ease;
}
.tl-open:active { transform: scale(.96); }
.tl-open svg { width: 12px !important; height: 12px !important; }
[data-theme="dark"] .tl-open { background: rgba(124, 92, 240, .16); border-color: rgba(124, 92, 240, .28); color: #c4b2ff; }

/* 行程筹备宫格：进度条占满格宽 */
.func-grid .f-prog { width: calc(100% - 4px); height: 4px; margin: 2px auto 0; }
.func-grid .f-sub { font-size: 10px; }

/* 统计条：数字渐变加粗 */
.stat-grid .stat { text-align: center; }
.stat .n {
  font-size: 18px; font-weight: 800; letter-spacing: -.5px; line-height: 1.15;
  background: linear-gradient(120deg, #3a56d4, #7c5cf0 70%, #a855f7);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
[data-theme="dark"] .stat .n { background: linear-gradient(120deg, #8fb0ff, #b79bff 70%, #d7a2ff); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.stat .t { font-size: 10px; color: var(--text-2); margin-top: 2px; }

/* 空状态卡片：图标做成渐变圆角块 */
.empty-start .ei {
  width: 58px; height: 58px; border-radius: 19px;
  display: flex; align-items: center; justify-content: center; color: #fff;
  background: linear-gradient(150deg, #6d5ce7, #a855f7 60%, #ec4899);
  box-shadow: 0 8px 20px rgba(124, 92, 240, .26);
}

/* 主按钮统一渐变（按钮告别纯色） */
.btn-primary {
  background: linear-gradient(135deg, #4a6cf7, #6d5ce7 55%, #8b5cf6);
  box-shadow: 0 6px 16px rgba(74, 108, 247, .26);
  border: none;
}
.btn-primary:active { transform: translateY(1px) scale(.99); }

/* 社区卡片质感 + 点赞胶囊 */
.xh-feed .xh-card { box-shadow: 0 5px 16px rgba(15, 23, 42, .07); }
.xh-like {
  display: inline-flex; align-items: center; gap: 2px; flex: none;
  padding: 2px 7px; border-radius: 999px; background: rgba(15, 23, 42, .045);
}
[data-theme="dark"] .xh-like { background: rgba(255, 255, 255, .08); }

/* 登录/注册：老用户入口去浏览器默认样式 */
.btn-link {
  display: block; width: 100%; margin: 12px auto 0; padding: 0;
  border: none; background: none; color: var(--text-3);
  font-size: 11.5px; font-family: inherit; cursor: pointer; text-align: center;
  text-decoration: underline; text-underline-offset: 3px; opacity: .9;
}
.btn-link:hover { opacity: 1; }
[data-theme="dark"] .btn-link { color: #8e97b3; }
/* ===== v1.3.0 星夜视觉发布（2026-09-06）：瓷瓶化卡片/毛玻璃方块倒计时/双列竖贴纸社区/预算比/首页头像同步/主卡底部主题纱幕 ===== */
