/* ══════════════ v101.142 浅色 iOS 17+ 体验层 ══════════════
 * 只做视觉/交互层，不触碰任何业务逻辑与计算。
 * 浅色为默认（[data-theme=light]），深色切换保留。
 */
/* Skill 标准设计变量（iphone-light-ui-qa），别名映射到 App 既有变量 */
:root{
  --primary:#007AFF; --success:#34C759; --warning:#FF9500; --danger:#FF3B30;
  --bg-page:#F2F2F7; --bg-card:#FFFFFF; --bg-bar:rgba(255,255,255,.8);
  --radius-card:16px; --radius-button:12px; --radius-sheet:16px;
  --page-horizontal:16px; --section-gap:24px; --card-padding:16px;
  --font-large-title:28px; --font-title-1:20px; --font-title-2:17px; --font-body:15px; --font-caption:13px;
  --text-primary:#000000; --text-secondary:#8E8E93; --text-tertiary:#C7C7CC;
  --tabbar-height:64px; /* 用户偏好：微信高度，覆盖 iOS 标准 49px */
  --nav-height:44px; --touch-target:44px;
  --card-shadow:0 2px 8px rgba(0,0,0,.06); --bar-shadow:0 .5px 0 rgba(0,0,0,.12);
}
[data-theme="light"]{
  --radius:18px; --radius-sm:13px; --radius-lg:24px; --radius-xs:9px;
  --shadow:0 1px 2px rgba(16,24,40,.05), 0 8px 24px rgba(16,24,40,.06);
  --shadow-soft:0 1px 2px rgba(16,24,40,.04), 0 4px 14px rgba(16,24,40,.05);
  --accent:#007AFF; --accent2:#0A84FF;
  --card:#ffffff; --card2:#F7F7F9; --bg:#F2F2F7; --bg2:#FFFFFF;
  --primary:#007AFF; --success:#34C759; --warning:#FF9500; --danger:#FF3B30;
  --bg-page:#F2F2F7; --bg-card:#FFFFFF; --bg-bar:rgba(255,255,255,.8);
  --text-primary:#000000; --text-secondary:#8E8E93; --text-tertiary:#C7C7CC;
}
[data-theme="dark"]{
  --radius:18px; --radius-sm:13px; --radius-lg:24px; --radius-xs:9px;
  --primary:#0A84FF; --success:#30D158; --warning:#FF9F0A; --danger:#FF453A;
  --bg-page:#000000; --bg-card:#1C1C1E; --bg-bar:rgba(28,28,30,.72);
  --text-primary:#FFFFFF; --text-secondary:#98989D; --text-tertiary:#48484A;
}

/* ── 分段控件（定投 / 资产页内子页切换）── */
.seg-bar{
  display:flex; gap:4px; margin:10px 16px 12px; padding:4px;
  background:rgba(118,118,128,.14); border-radius:999px;
  -webkit-backdrop-filter:blur(10px) saturate(180%); backdrop-filter:blur(10px) saturate(180%);
}
.seg-btn{
  flex:1; min-height:34px; border:0; border-radius:999px; background:transparent;
  color:var(--text); font-size:14px; font-weight:500; cursor:pointer;
  -webkit-tap-highlight-color:transparent; transition:background .18s,color .18s,box-shadow .18s;
  font-family:system-ui,-apple-system,'PingFang SC',sans-serif;
}
.seg-btn.active{
  background:var(--card); color:var(--accent); font-weight:600;
  box-shadow:0 1px 3px rgba(16,24,40,.08), 0 2px 8px rgba(16,24,40,.06);
}
.seg-btn:active{ opacity:.7; }
.tab-page{ min-height:100%; }
.tab-body{ min-height:calc(100vh - var(--bottomnav-h) - 70px); }

/* ── 底部导航（4 Tab，毛玻璃，选中态）── */
.bottomnav{
  -webkit-backdrop-filter:blur(20px) saturate(180%); backdrop-filter:blur(20px) saturate(180%);
  background:rgba(242,242,247,.78);
}
[data-theme="dark"] .bottomnav{ background:rgba(28,28,30,.72); }
.bnav-item small{ font-size:10.5px; letter-spacing:.2px; }
.bnav-item.active small{ color:var(--accent); font-weight:600; }
.bnav-item.active svg{ stroke:var(--accent); }

/* ── 卡片质感统一 ── */
.card, .set-group, .guide-card, .tbl-wrap, .acct-card, .stat-card{
  border-radius:var(--radius); border:1px solid var(--border2);
  box-shadow:var(--shadow-soft);
}

/* ── 胶囊按钮体系 ── */
.btn, .btn.primary, .btn.ghost, .btn.danger, .btn.accent-soft, .btn.sm, .exec-batch-btn, .exec-budget-save{
  border-radius:999px !important;
}
.btn{ min-height:44px; padding:0 20px; font-size:15px; font-weight:600; }
.btn.primary{ background:var(--accent); color:#fff; }
.btn.ghost{ border:1px solid var(--accent); color:var(--accent); background:transparent; }

/* ── 输入框 / 开关贴合 iOS ── */
input[type="number"], input[type="text"], input[type="search"], input[type="tel"], input[type="url"], select, textarea{
  border-radius:12px !important; border:1px solid transparent !important;
  background:var(--card2) !important; font-size:16px !important;
  box-shadow:none !important; transition:background .18s ease;
}
.sw-track{ border-radius:999px; }

/* ── 间距呼吸感 ── */
.page-head{ padding-top:14px; }
.card, .acct-card, .stat-card{ padding:var(--card-padding); }
.exec-budget-row{ margin:8px 16px 6px; }
.plan-section, .exec-asset-card, .hc-row, .record-actions{ margin-bottom:12px; }

/* ── 温和状态条（避免生硬）── */
.toast{
  border-radius:999px; font-weight:500;
  -webkit-backdrop-filter:blur(12px) saturate(180%); backdrop-filter:blur(12px) saturate(180%);
  background:rgba(28,28,30,.82); color:#fff;
}

/* ══════════════ v101.143 阶段C 交互反馈 ══════════════ */
/* 点击按压反馈：轻缩放，不生硬 */
.btn:active, .seg-btn:active, .bnav-item:active, .set-row:active, .stat-card:active, .exec-batch-btn:active,
.guide-alloc:active, .hc-asset-head:active, .rem-row:active, .txn-row:active, .fold-head:active{
  transform: scale(.985);
}
.btn, .seg-btn, .bnav-item, .set-row, .stat-card, .exec-batch-btn, .fold-head, .hc-asset-head{
  transition: transform .15s ease, background .18s ease, opacity .18s ease;
}
/* 卡片悬停/阴影过渡（浅色质感） */
.card, .set-group, .guide-card, .tbl-wrap, .acct-card, .stat-card{
  transition: box-shadow .2s ease;
}
/* 底部导航选中态：图标下加 iOS 风格药丸底 */
.bnav-item span{
  position:relative; display:flex; align-items:center; justify-content:center;
  width:34px; height:24px; border-radius:999px; transition:background .2s ease;
}
.bnav-item.active span{ background:rgba(0,122,255,.12); }
[data-theme="dark"] .bnav-item.active span{ background:rgba(10,132,255,.18); }
/* 弹层圆角贴合 iOS（底部 sheet 顶部大圆角、居中弹窗大圆角） */
.sheet-bottom{ border-radius:16px 16px 0 0; }
.modal-box{ border-radius:16px; }
/* 输入框聚焦：柔和主色环，不生硬 */
input:focus, select:focus, textarea:focus{
  outline:none; background:var(--card) !important; box-shadow:none !important;
}
/* 页面标题层级 */
.page-head h1{ font-size:28px; font-weight:700; letter-spacing:-.3px; }
.page-head .sub{ font-size:13px; color:var(--muted); margin-top:2px; }
/* 分段控件更贴合 iOS（14px 圆角胶囊，active 白色浮起） */
.seg-bar{ border:1px solid rgba(118,118,128,.12); }
.seg-btn{ font-size:13.5px; }
/* 温和 toast：下滑入、自动淡出（保留原有 show/hide 逻辑） */
.toast{ box-shadow:0 8px 24px rgba(0,0,0,.18); }

/* v101.144 总览决策中心：快捷操作胶囊按钮 */
.quick-actions{ display:flex; gap:10px; margin:2px var(--page-horizontal) 16px; }
.qa-btn{ flex:1; min-height:44px; border-radius:999px; border:1px solid var(--border2); background:var(--card); color:var(--text); font-size:14px; font-weight:600; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:transform .15s ease,background .18s ease; box-shadow:var(--shadow-soft); font-family:system-ui,-apple-system,'PingFang SC',sans-serif; }
.qa-btn:active{ transform:scale(.97); }
.qa-btn.qa-primary{ background:var(--accent); border-color:var(--accent); color:#fff; }

/* v101.145 行内快捷操作在手机上加大（左滑的稳妥替代：直接点按钮，功能不丢、零回归风险） */
.tbl-wrap .btn.sm{ min-height:30px; padding:0 11px; font-size:13px; border-radius:999px; }
.tbl-wrap .btn.sm.danger{ background:rgba(255,59,48,.10); color:#FF3B30; border:1px solid rgba(255,59,48,.25); }
.tbl-wrap .btn.sm[data-fix-share]{ background:rgba(0,122,255,.10); color:var(--accent); border:1px solid rgba(0,122,255,.25); }
.dca-row{ cursor:pointer; }
.dca-row:active{ background:var(--hover-bg); }

/* v101.146 Skill 审计修正：触控目标对齐 ≥44px（分段控件按 iOS 规范 36px） */
.exec-batch-btn{ min-height:40px; padding:0 14px; font-size:13.5px; }
.exec-budget-save{ min-height:44px; }
.seg-btn{ min-height:36px; }

/* v101.147 底部确认弹层（替代系统 confirm，iOS Action Sheet 风格） */
.confirm-sheet{ padding:8px 12px calc(env(safe-area-inset-bottom,0px) + 12px); }
.confirm-box{ background:var(--card); border-radius:16px; padding:20px 16px 18px; margin-bottom:8px; text-align:center; }
.confirm-title{ font-size:17px; font-weight:600; color:var(--text); margin-bottom:6px; }
.confirm-msg{ font-size:14px; color:var(--muted); line-height:1.65; }
.confirm-actions{ display:flex; flex-direction:column; gap:8px; }
.confirm-actions .btn{ min-height:52px; width:100%; }
.confirm-actions .btn.danger{ background:var(--danger); border-color:var(--danger); color:#fff; }
.confirm-actions .btn.ghost{ background:var(--card); border:1px solid var(--border2); color:var(--text); }

/* v101.149 本月可投：紧凑行 + 底部 sheet 编辑 */
.budget-summary{ display:flex; align-items:center; gap:10px; margin:2px 0 10px; padding:12px 14px; background:var(--card); border:1px solid var(--border2); border-radius:12px; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:background .18s ease; }
.budget-summary:active{ background:var(--card2); }
.budget-label{ font-size:14px; font-weight:600; color:var(--text); }
.budget-value{ margin-left:auto; font-size:16px; font-weight:700; color:var(--accent); font-variant-numeric:tabular-nums; }
.budget-chev{ font-size:14px; color:var(--muted); }
.budget-sheet-row{ display:flex; gap:10px; align-items:center; }
.budget-sheet-row .exec-budget-input{ flex:1; width:auto; }

/* v101.151 本月定投决策卡 */
.month-card{ background:var(--card); border:1px solid var(--border2); border-radius:var(--radius); padding:16px; margin:4px 0 12px; box-shadow:var(--shadow-soft); }
.mc-head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:10px; }
.mc-title{ font-size:15px; font-weight:700; color:var(--text); }
.mc-budget{ font-size:13px; color:var(--muted); }
.mc-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.mc-num{ font-size:24px; font-weight:700; font-variant-numeric:tabular-nums; color:var(--text); }
.mc-total{ font-size:15px; color:var(--muted); font-weight:500; }
.mc-bar{ height:8px; border-radius:999px; background:var(--chip-bg); margin:10px 0 8px; overflow:hidden; }
.mc-bar-fill{ height:100%; border-radius:999px; background:var(--accent); transition:width .3s ease; }
.mc-sub{ font-size:12px; color:var(--muted); line-height:1.5; }

/* v101.153 券商风格：账户卡底部统计 / 持仓列表 / 标的详情 */
.bk-divider{ height:1px; background:var(--border2); margin:12px 0 10px; }
.bk-stats{ display:flex; }
.bk-stat{ flex:1; display:flex; flex-direction:column; gap:3px; text-align:center; }
.bk-stat + .bk-stat{ border-left:1px solid var(--border2); }
.bk-stat span{ font-size:11.5px; color:var(--muted); }
.bk-stat b{ font-size:14px; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.pos-summary{ display:flex; align-items:center; justify-content:space-between; margin:4px 16px 8px; font-size:12.5px; color:var(--muted); }
.pos-summary b{ font-size:13.5px; color:var(--text); font-variant-numeric:tabular-nums; }
.pos-list{ background:var(--card); border:1px solid var(--border2); border-radius:var(--radius); overflow:hidden; margin:0 16px 14px; box-shadow:var(--shadow-soft); }
.pos-row{ padding:11px 14px; display:flex; align-items:center; gap:10px; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:background .15s ease; }
.pos-row + .pos-row{ border-top:1px solid var(--border2); }
.pos-row:active{ background:var(--card2); }
.pr-name{ flex:1.1; font-size:14px; font-weight:600; color:var(--text); display:flex; flex-direction:column; }
.pr-code{ font-size:11px; color:var(--muted); font-weight:400; margin-top:1px; }
.pr-mid{ flex:0.9; display:flex; flex-direction:column; align-items:flex-end; gap:1px; }
.pr-price{ font-size:14px; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.pr-chg{ font-size:12px; }
.pr-right{ flex:1; display:flex; flex-direction:column; align-items:flex-end; gap:1px; }
.pr-val{ font-size:14px; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.pr-prof{ font-size:12px; }
.pr-chg.up, .pr-prof.up{ color:var(--red); }
.pr-chg.down, .pr-prof.down{ color:var(--green); }
.pos-empty{ padding:20px 14px; text-align:center; font-size:13px; color:var(--muted); }
.ad-head{ display:flex; align-items:baseline; gap:10px; margin-bottom:12px; }
.ad-price{ font-size:26px; font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; }
.ad-chg{ font-size:15px; }
.ad-chg.up{ color:var(--red); } .ad-chg.down{ color:var(--green); }
.ad-pe{ margin-left:auto; font-size:12.5px; color:var(--muted); }
.ad-actions{ display:flex; gap:10px; margin-bottom:14px; }
.ad-actions .btn{ flex:1; }
.ad-detail{ background:var(--card2); border-radius:14px; padding:4px 14px; margin-bottom:14px; }
.ad-row{ display:flex; align-items:center; justify-content:space-between; padding:9px 0; font-size:14px; border-bottom:1px solid var(--border2); }
.ad-row:last-child{ border-bottom:0; }
.ad-row span{ color:var(--muted); font-size:13px; }
.ad-row b{ color:var(--text); font-variant-numeric:tabular-nums; }
.ad-row b.up{ color:var(--red); } .ad-row b.down{ color:var(--green); }

/* v101.154 主页精简：账户构成一行 / 本月定投极简卡 / 持仓标题 */
.bk-compose{ display:flex; align-items:baseline; justify-content:center; gap:7px; font-size:12px; color:var(--muted); }
.bk-compose b{ font-size:13px; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.bk-cdot{ color:var(--border2); }
.mc-mini{ padding:12px 16px; margin:4px 0 12px; }
.mc-line{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
.mc-mini .mc-num{ font-size:17px; }
.mc-mini .mc-total{ font-size:13px; }
.mc-mini .mc-bar{ margin:8px 0 0; height:6px; }
.pos-sec-head{ display:flex; align-items:center; justify-content:space-between; margin:2px 16px 8px; }
.pos-sec-head span{ font-size:15px; font-weight:700; color:var(--text); }

/* v101.155 主页：资产卡 + 资金到位 + 持仓表 合并整体 */
.acct-wrap{ background:var(--card); border:1px solid var(--border2); border-radius:var(--radius-card); padding:16px 16px 6px; margin:0 0 16px; box-shadow:var(--shadow-soft); }
.acct-wrap .acct-inner{ margin:0; padding:0; }
.acct-wrap .acct-total{ font-size:30px; margin-bottom:10px; }
.acct-wrap .acct-row{ margin-bottom:2px; }
.aw-divider{ height:1px; background:var(--border2); margin:12px 0; }
.fp-box{ margin-bottom:12px; }
.fp-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.fp-title{ font-size:14px; font-weight:700; color:var(--text); }
.fp-right{ display:flex; align-items:center; gap:8px; }
.fp-link{ font-size:13px; color:var(--accent); background:none; border:none; padding:4px 0; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.fp-pct{ font-size:14px; font-weight:700; font-variant-numeric:tabular-nums; }
.fp-pct.ok{ color:var(--success); }
.fp-pct.warn{ color:var(--warning); }
.fp-bar{ height:10px; border-radius:999px; background:var(--bg); border:1px solid var(--border2); overflow:hidden; box-shadow:inset 0 1px 2px rgba(0,0,0,.4); cursor:pointer; -webkit-tap-highlight-color:transparent; }
.fp-bar:active{ opacity:.75; }
.fp-fill{ height:100%; border-radius:999px; background:linear-gradient(90deg,#2ea87e,#1d9e75); transition:width .4s; box-shadow:0 0 10px rgba(46,168,126,.35); }
.fp-meta{ font-size:12px; color:var(--muted); margin-top:7px; }
.fp-meta b{ color:var(--text); font-variant-numeric:tabular-nums; }
.pos-table{ margin:0 -16px; }
/* v101.302 高端简约优化：列宽比例 + 间距 + 字体层次 */
.pt-head{ position:relative; display:flex; align-items:center; padding:10px 16px; } .pt-head::before{ content:""; position:absolute; top:0; left:16px; right:16px; height:0.5px; background:var(--border2); }
.pt-h{ flex:1; display:flex; align-items:center; justify-content:flex-end; gap:3px; font-size:10.5px; color:var(--muted2); font-weight:500; padding:6px 0; cursor:pointer; -webkit-tap-highlight-color:transparent; user-select:none; white-space:nowrap; letter-spacing:.2px; }
.pt-h.pt-name{ flex:1.25; justify-content:flex-start; }
.pt-h.pt-prof{ flex:1.05; }
.pt-h.pt-cost{ flex:1.05; }
.pt-h.pt-day{ flex:0.95; }
.pt-h.pt-target{ flex:1.0; }
.pt-h.active{ color:var(--accent); font-weight:600; }
.pt-arr{ font-size:10px; }
.pt-label{ white-space:nowrap; }
.pt-row{ position:relative; display:flex; align-items:center; padding:12px 16px; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:background .15s ease; }
.pt-row + .pt-row::before{ content:""; position:absolute; top:0; left:16px; right:16px; height:0.5px; background:var(--border2); }
.pt-row:active{ background:var(--card2); }
.pt-cell{ flex:1; display:flex; flex-direction:column; align-items:flex-end; gap:3px; white-space:nowrap; }
.pt-name{ flex:1.25; align-items:flex-start; }
.pt-prof{ flex:1.05; align-items:flex-end; }
.pt-cost{ flex:1.05; align-items:flex-end; }
.pt-day{ flex:0.95; align-items:flex-end; }
.pt-target{ flex:1.0; align-items:flex-end; }
.pt-n{ font-size:14px; font-weight:600; color:var(--text); width:100%; display:flex; align-items:baseline; justify-content:space-between; gap:6px; min-width:0; }
.pt-name-t{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pt-code{ font-size:10px; color:var(--muted); font-weight:400; flex:0 0 auto; }
.pt-v{ font-size:15px; font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; width:100%; display:flex; align-items:baseline; justify-content:space-between; gap:6px; }
.pt-val{ min-width:0; }
.pt-sub{ font-size:10px; color:var(--muted); font-weight:400; flex:0 0 auto; }
.pt-num{ font-size:13.5px; font-weight:600; font-variant-numeric:tabular-nums; line-height:1.2; }
.pt-prof .pt-num{ font-size:15.5px; font-weight:700; }
.pt-prof .pt-pct{ font-size:12px; font-weight:500; }
.pt-cost .pt-num{ font-size:12.5px; font-weight:500; color:var(--muted); }
.pt-cost .pt-pct{ font-size:11.5px; font-weight:400; color:var(--muted2); }
.pt-day .pt-num{ font-size:13.5px; font-weight:600; }
.pt-day .pt-pct{ font-size:11.5px; }
.pt-target .pt-num{ font-size:13.5px; font-weight:600; }
.pt-target .pt-pct{ font-size:11px; }
.pt-pct{ font-size:11.5px; line-height:1.2; }
.pt-num.up, .pt-pct.up{ color:var(--red); }
.pt-num.down, .pt-pct.down{ color:var(--green); }
.pt-pct.ok{ color:var(--success); }
.pt-pct.warn{ color:var(--warning); }
/* v101.192 资产页「持仓偏离与操作」：复用首页持仓表排版 + 操作列/占比偏离着色 */
.pt-h.pt-op{ flex:0 0 80px; }
.pt-cell.pt-op{ flex:0 0 80px; flex-direction:row; align-items:center; justify-content:flex-end; }
.fund-row{ display:flex; align-items:center; gap:8px; padding:11px 4px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.fund-row + .fund-row{ border-top:1px solid var(--border2); }
.fund-row:active{ background:var(--card2); }
.fr-name{ flex:0 0 76px; font-size:14px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fr-mid{ flex:1; min-width:0; font-size:12px; color:var(--muted); line-height:1.5; }
.fr-cum{ white-space:nowrap; }
.fr-cum b{ color:var(--text); font-variant-numeric:tabular-nums; }
.fr-m{ white-space:nowrap; }
.fr-right{ flex:0 0 92px; text-align:right; font-size:13px; font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap; }
.fr-right.ok{ color:var(--success); }
.fr-right.warn{ color:var(--warning); }

/* v101.166 全局隐藏滚动条：消除网页风，滚动功能保留 */
*::-webkit-scrollbar{ display:none !important; width:0 !important; height:0 !important; }
*{ scrollbar-width:none !important; -ms-overflow-style:none !important; }

/* v101.167 资产卡月均收益列 + 月度盈亏日历 */
.acct-col-m{ flex:1; padding-left:14px; border-left:1px solid var(--border2); cursor:pointer; border-radius:10px; padding:6px 8px; transition:background .15s; -webkit-tap-highlight-color:transparent; }
.acct-col-m:active{ background:var(--hover-bg); }
.mpl-row{ display:flex; align-items:center; gap:8px; padding:11px 4px; }
.mpl-row + .mpl-row{ border-top:1px solid var(--border2); }
.mpl-ym{ flex:1; font-size:14px; font-weight:600; color:var(--text); }
.mpl-p{ flex:1; text-align:right; font-size:13px; font-weight:600; font-variant-numeric:tabular-nums; }
.mpl-r{ flex:0 0 76px; text-align:right; font-size:13px; font-weight:600; font-variant-numeric:tabular-nums; }
.mpl-p.up, .mpl-r.up{ color:var(--red); }
.mpl-p.down, .mpl-r.down{ color:var(--green); }
