:root{
  /* ── iOS 系统色（暗色 · grouped 风格，避免死黑） ── */
  --bg:#1c1c1e; --bg2:#161618; --card:#2c2c2e; --card2:#3a3a3c;
  --border:#38383a; --border2:#48484a;
  --text:#ffffff; --muted:#98989d; --muted2:#8e8e93;
  --accent:#0a84ff; --accent2:#409cff;
  --green:#30d158; --red:#ff453a; --orange:#ff9f0a; --purple:#bf5af2; --teal:#64d2ff;
  --radius:16px; --radius-sm:12px; --radius-lg:22px; --radius-xs:8px;
  --shadow:0 1px 2px rgba(0,0,0,.40);
  --shadow-soft:0 1px 2px rgba(0,0,0,.30);
  --glow:none;
  --sidebar-w:248px; --bottomnav-h:64px;
  --acct-bg:#2c2c2e; --acct-bg2:#1c1c1e;
  --text-link:#0a84ff; --text-faint:#8e8e93; --wx-green:#07C160; --bnav-muted:#636366;
  --chip-bg:rgba(118,118,128,.24); --chip-border:rgba(118,118,128,.36); --hover-bg:rgba(255,255,255,.06);
  /* 毛玻璃（vibrancy） */
  --glass:rgba(44,44,46,.72); --glass-border:rgba(255,255,255,.14);
}

/* ═══ 浅色主题（设置里「外观」一键切换）═══ */
[data-theme="light"]{
  --bg:#f2f2f7; --bg2:#ffffff; --card:#ffffff; --card2:#ececf0;
  --border:#d1d1d6; --border2:#e5e5ea;
  --text:#1c1c1e; --muted:#6b6b70; --muted2:#6b6b70; --bnav-muted:#575b60;
  --accent:#007aff; --accent2:#0a84ff;
  --green:#34c759; --red:#ff3b30; --orange:#ff9500; --purple:#af52de; --teal:#5ac8fa;
  --acct-bg:#ffffff; --acct-bg2:#f2f2f7;
  --text-link:#007aff; --text-faint:#8e8e93;
  --chip-bg:rgba(118,118,128,.12); --chip-border:rgba(118,118,128,.24); --hover-bg:rgba(0,0,0,.04);
  --glow:none;
  --shadow:0 1px 2px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.05);
  --shadow-soft:0 1px 2px rgba(0,0,0,.05);
  --glass:rgba(255,255,255,.72); --glass-border:rgba(0,0,0,.10);
}
[data-theme="light"] .bottomnav{background:var(--glass)}
[data-theme="light"] input[type=range]::-webkit-slider-thumb{background:var(--accent);box-shadow:0 1px 4px rgba(20,30,50,.25)}
[data-theme="light"] input[type=range]::-moz-range-thumb{background:var(--accent);box-shadow:0 1px 4px rgba(20,30,50,.25)}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  background-image:var(--glow);
  background-repeat:no-repeat;
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;
  font-size:15px; line-height:1.6; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
/* ── 移动端交互态统一修复 ──
   ① 去掉点击后的灰色高亮块；
   ② 移除浏览器原生聚焦蓝框（按钮/卡片等可聚焦元素被点后残留的蓝圈），
      仅在键盘 Tab 导航时（:focus-visible）显示聚焦环，兼顾可访问性；
   ③ 真正的输入框聚焦态（蓝色描边+光晕）由下方 .field/:focus 规则保留。 */
*,*::before,*::after{-webkit-tap-highlight-color:transparent}
button,a,input,select,textarea,[tabindex],
.nav-item,.bnav-item,.dm-btn,.exec-card,.quad-card,.fold-head,.hc-asset-head,
.rec-toggle,.af-item,.acc-head,.pa-caret,.term-help,.log-rec-toggle,.chk-row,
.sig-chip,.um-toggle,.datepill,.pause-add,.pause-chip .x,.stat--link,.todo-chip,
.q,.modal-x,.hl-name,.csv-btn,.pos-row,.ss-btn,.reset-disc,.btn,
.af-btn,.ob-btn,.ob-step,.mc-check,.asset-card,.sig-dot,.rd-span,.gl-block{
  outline:none;
}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}
h1,h2,h3,h4{margin:0 0 .4em;font-weight:700;letter-spacing:.2px}
.muted{color:var(--muted)} .small{font-size:12.5px} .tiny{font-size:11.5px}

/* ── 顶部栏（移动端） ── */
@keyframes spin{to{transform:rotate(360deg)}}

/* ── 侧边栏 ── */
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);
  background:var(--bg2);border-right:1px solid var(--border2);
  display:flex;flex-direction:column;z-index:40;transform:translateX(0);transition:transform .22s ease}
.sidebar-head{display:flex;align-items:center;gap:10px;padding:16px 16px;border-bottom:1px solid var(--border2)}
.logo{font-size:26px}
.logo-text{display:flex;flex-direction:column;line-height:1.2;flex:1}
.logo-text strong{font-size:15px}
.logo-text small{color:var(--muted);font-size:11px}
.sidebar-close{display:none;background:none;border:none;color:var(--muted);font-size:18px}
.nav{flex:1;padding:10px 10px;display:flex;flex-direction:column;gap:3px;overflow-y:auto}
.nav-item{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:var(--radius-sm);color:var(--muted);font-weight:600;font-size:14.5px}
.nav-item .nav-ico{font-size:17px;width:20px;text-align:center}
@media (hover:hover) and (pointer:fine){
.nav-item:hover{background:var(--card);color:var(--text)}
}
.nav-item.active{background:linear-gradient(90deg,rgba(10,132,255,.18),rgba(10,132,255,.04));color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}
.sidebar-foot{padding:12px 16px;border-top:1px solid var(--border2)}
.src-mini{font-size:11.5px;color:var(--muted);background:var(--card);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:7px 9px}
.src-mini.live{color:#30d158;border-color:rgba(48,209,88,.5);background:rgba(48,209,88,.08)}
.src-mini.warn{color:#e6c07b;border-color:rgba(230,160,40,.6);background:rgba(230,160,40,.12)}
.src-mini.refreshing{color:#409cff;border-color:rgba(10,132,255,.6);background:rgba(10,132,255,.12);animation:pulse 1s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}
.update-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 72px);z-index:120;display:flex;align-items:center;gap:9px;max-width:calc(100vw - 32px);padding:11px 16px;background:rgba(10,132,255,.9);-webkit-backdrop-filter:blur(14px) saturate(180%);backdrop-filter:blur(14px) saturate(180%);color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:var(--radius);box-shadow:0 10px 34px rgba(10,132,255,.35),inset 0 1px 0 rgba(255,255,255,.28);font-size:13px;cursor:pointer;animation:ubIn .25s ease;transition:transform .15s,box-shadow .15s}
.update-bar:active{transform:translateX(-50%) scale(.975)}
.update-bar .ub-ico{flex:0 0 auto;font-size:15px;line-height:1;opacity:.95;animation:ubSpin 3.2s linear infinite}
.update-bar .ub-text{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.update-bar .ub-text b{font-weight:700;color:#dbeeff}
.update-bar .ub-go{flex:0 0 auto;font-size:14px;font-weight:700;color:#eaf5ff}
@keyframes ubSpin{to{transform:rotate(360deg)}}
@keyframes ubIn{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
.scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:35}

/* ── 主区 ── */
.main{margin-left:var(--sidebar-w);padding:24px 28px 44px;max-width:1080px}
.boot{min-height:78vh;padding:32px 20px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px}
.boot-card{width:74px;height:74px;border-radius:21px;background:linear-gradient(145deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 26px rgba(10,132,255,.32)}
.boot-ico{font-size:34px;line-height:1}
.boot-name{font-size:18px;font-weight:700;color:var(--text);letter-spacing:.4px}
.boot-spin{width:22px;height:22px;border:2.5px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:bootSpin .8s linear infinite}
.boot-tip{font-size:12px;color:var(--muted2);letter-spacing:.5px}
@keyframes bootSpin{to{transform:rotate(360deg)}}

/* 页面头部 */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;
  position:sticky;top:0;z-index:25;background:var(--bg);border-bottom:1px solid var(--border2);
  margin:0 -28px 18px;padding:20px 28px 14px}
.page-head h1{font-size:24px;letter-spacing:.3px}
.page-head .sub{color:var(--muted);font-size:13px;margin-top:3px}
/* 执行页头部：标题与记录按钮同处一行、与吸顶头部融为一体 */
.page-head.exec-page{display:block}
.exec-head-tit{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.exec-head-tit h1{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exec-head-tit .exec-batch-btn{flex:0 0 auto;margin-bottom:0}
/* v100.99 执行页头部按钮组（📅 定投 + 📝 记账 同一行） */
.exec-head-acts{display:flex;align-items:center;gap:8px;flex:0 0 auto}
/* 顶部刷新按钮已移除 → 改为「下拉到头松开刷新」（pull-to-refresh）*/
.datebar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:14px;box-shadow:var(--shadow-soft)}
.datebar .date-main{font-size:14px;color:var(--text)}
.datebar .date-main strong{font-size:16px;font-weight:700}
/* 日期卡：日期 + 今日执行 + 即将到来下拉，整合为一整块 */
.date-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:13px 16px;margin-bottom:14px;box-shadow:var(--shadow-soft)}
/* 仪表盘顶部：当前模式状态条（增长/保护） */
.mode-banner{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;border-radius:var(--radius-sm);margin-bottom:12px;font-size:13.5px;border:1px solid var(--border)}
.mode-banner.growth{background:var(--card2);color:var(--text)}
.mode-banner.protect{background:linear-gradient(90deg,rgba(255,184,74,.14),rgba(255,184,74,.05));border-color:var(--orange,#ffb84a);color:var(--text)}
.mode-banner .mb-ico{font-size:15px}
.mode-banner b{font-weight:700}
.mode-banner .mb-why{color:var(--muted);font-size:12px;flex:1 1 200px}
.mode-banner .mb-goto{margin-left:auto;background:none;border:0;color:var(--accent);font-size:12.5px;cursor:pointer;padding:4px 8px}
.mode-banner .mb-goto:active{opacity:.7}
/* 设置页：保护模式状态卡 */
.pm-status{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border-radius:var(--radius-sm);background:var(--card2);border:1px solid var(--border);margin-top:10px;font-size:14px}
.pm-status.on{background:rgba(255,184,74,.12);border-color:var(--orange,#ffb84a)}
.pm-status .pm-why{color:var(--muted);font-size:12px;flex:1 1 200px}
.pm-chip{display:inline-block;vertical-align:middle;margin-left:4px;padding:1px 8px;border-radius:999px;font-size:10.5px;font-weight:700;color:var(--muted);background:var(--chip-bg);border:1px solid var(--border2)}
.pm-chip.on{color:var(--orange);border-color:var(--orange);background:rgba(255,184,74,.1)}
/* 持仓体检：保护模式权重来源提示条 */
.pm-banner{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:9px 12px;border-radius:var(--radius-sm);background:rgba(255,184,74,.12);border:1px solid var(--orange,#ffb84a);margin:8px 0 10px;font-size:12.5px;color:var(--text)}
/* 数据页：风险平价计算过程 */
.rp-note{padding:8px 10px;border-radius:var(--radius-sm);background:var(--card2);border:1px solid var(--border);font-size:12.5px;color:var(--text);margin-bottom:10px}
.rp-sec{margin-top:12px}
.rp-sec-t{font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:6px}
.rp-tbl th,.rp-tbl td{font-size:12px;padding:5px 8px}
.rp-tbl td.tiny{font-size:11px}
.rp-corr td,.rp-corr th{padding:4px 5px;white-space:nowrap}
.date-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.date-main{font-size:14px;color:var(--text)}
.date-main strong{font-size:16px;font-weight:700}
.date-acts{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;position:relative}
.date-acts > *{flex-shrink:0}
/* 待办区放不下时：右缘淡出提示「还能横向滑动」，避免最后一个 chip 像被截断 */
.date-acts.can-scroll::after{content:"";position:absolute;right:0;top:0;bottom:0;width:26px;background:linear-gradient(to right, transparent, var(--card));pointer-events:none}
/* 「即将到来」独立成行：不再挤在待办行里被截断，完整呈现 */
.upcoming-bar{margin-top:10px;padding-top:9px;border-top:1px dashed var(--border2)}
.um-toggle{display:inline-flex;align-items:center;gap:4px;margin:0;padding:6px 11px;border:1px solid var(--border);border-radius:999px;background:var(--card2);color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent}
.um-toggle:active{filter:brightness(1.15)}
.um-toggle .caret{font-size:10px;transition:transform .15s}

/* 卡片 */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 19px;margin-bottom:18px;box-shadow:var(--shadow-soft);scroll-margin-top:70px}
.card h3{font-size:15.5px;display:flex;align-items:center;gap:8px}
.card .hint{color:var(--muted);font-size:12.5px;margin-top:4px}

.grid{display:grid;gap:14px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:760px){.grid-2,.grid-3{grid-template-columns:repeat(2,1fr);gap:12px}
  .grid-2 .stat,.grid-3 .stat{padding:14px 12px}
  .grid-2 .stat .value,.grid-3 .stat .value{font-size:20px}
  .grid-2 .stat .label,.grid-3 .stat .label{font-size:11px}
  .grid-2 .stat .delta,.grid-3 .stat .delta{font-size:10.5px}}

/* 指标块 · 四卡整合为统一「英雄面板」 */
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  background:var(--card);
  border:1px solid var(--border);border-radius:var(--radius-lg);
  overflow:hidden;box-shadow:var(--shadow);margin-bottom:18px}
.stat{position:relative;background:transparent;border:none;border-radius:0;padding:20px 36px 20px 18px;min-width:0;transition:background .15s}
.stat:not(:last-child){border-right:1px solid var(--border2)}
.stat .label{color:var(--muted);font-size:11.5px;font-weight:600;letter-spacing:.4px;margin-bottom:9px}
.stat .value{font-size:24px;font-weight:800;letter-spacing:.2px;font-variant-numeric:tabular-nums;line-height:1.05;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.stat .delta{font-size:12px;margin-top:7px;color:var(--muted)}
.stat--link{cursor:pointer}
@media (hover:hover) and (pointer:fine){
.stat--link:hover{background:rgba(10,132,255,.06)}
}
.stat--link:active{background:rgba(10,132,255,.12)}
.stat-go{position:absolute;right:14px;top:16px;color:var(--muted2);font-size:16px;line-height:1;pointer-events:none;opacity:.55;transition:opacity .15s}
@media (hover:hover) and (pointer:fine){
.stat--link:hover .stat-go{opacity:.9}
}
.datepill{cursor:pointer}
.datepill:active{filter:brightness(1.15)}
.row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.row+.row{margin-top:8px}
.divider{height:1px;background:var(--border2);margin:12px 0}

/* 颜色工具 */
.up{color:var(--red)} .down{color:var(--green)} /* 中国习惯：涨红跌绿 */
.pos{color:var(--green)} .neg{color:var(--red)}
.tone-green{color:var(--green)}.tone-teal{color:var(--teal)}.tone-neutral{color:var(--muted)}
.tone-orange{color:var(--orange)}.tone-red{color:var(--red)}.tone-blue{color:var(--accent)}.tone-purple{color:var(--purple)}

/* 标签 */
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;vertical-align:middle;
  padding:3px 9px;border-radius:999px;border:1px solid var(--border);background:var(--card2);color:var(--muted)}
.tag.green{color:var(--green);border-color:rgba(48,209,88,.4);background:rgba(48,209,88,.1)}
.tag.red{color:var(--red);border-color:rgba(255,69,58,.4);background:rgba(255,69,58,.1)}
.tag.orange{color:var(--orange);border-color:rgba(255,159,10,.4);background:rgba(255,159,10,.1)}
.tag.blue{color:var(--accent);border-color:rgba(10,132,255,.4);background:rgba(10,132,255,.1)}
.tag.purple{color:var(--purple);border-color:rgba(191,90,242,.4);background:rgba(191,90,242,.1)}
.tag.gray{color:var(--muted2)}

/* 表格 */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:12px 13px;border-bottom:1px solid var(--border2);font-variant-numeric:tabular-nums}
th{color:var(--muted);font-weight:600;font-size:12px;position:sticky;top:0;background:var(--card2);z-index:1;white-space:nowrap}
tbody tr:nth-child(even) td{background:rgba(255,255,255,.022)}
td.num,th.num{text-align:right}
@media (hover:hover) and (pointer:fine){
tr:hover td{background:rgba(10,132,255,.06)}
}
.tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);box-shadow:var(--shadow-soft)}
/* 导出日历按钮：苹果风蓝底圆角全宽按钮 */
#icsBtn{display:flex;width:100%;justify-content:center;align-items:center;background:var(--accent);color:#fff;border:none;font-weight:600;font-size:14px;padding:12px;border-radius:var(--radius-sm);-webkit-tap-highlight-color:transparent;cursor:pointer}
#icsBtn:active{opacity:.9;transform:scale(.99)}
/* 持仓/体检表格数字列不换行（列宽均衡由 .hl-tbl 主样式统一控制，不再单独加宽计划列） */
.hl-tbl th,.hl-tbl td,.pos-tbl th,.pos-tbl td{white-space:nowrap}

/* 进度条 */
.bar{height:9px;background:var(--bg2);border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
.bar > i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px;box-shadow:0 0 12px rgba(10,132,255,.35)}
.bar.green > i{background:linear-gradient(90deg,#30d158,#28cd41);box-shadow:0 0 12px rgba(48,209,88,.3)}
.bar.red > i{background:linear-gradient(90deg,#ff453a,#ff453a);box-shadow:0 0 12px rgba(255,69,58,.3)}
.bar.orange > i{background:linear-gradient(90deg,#ff9f0a,#ff9500);box-shadow:0 0 12px rgba(255,159,10,.3)}
.bar.blue > i{background:linear-gradient(90deg,#0a84ff,#5e9bff);box-shadow:0 0 12px rgba(10,132,255,.3)}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);
  background:var(--card2);color:var(--text);padding:9px 14px;border-radius:var(--radius-sm);font-weight:600;font-size:13.5px;transition:.15s;box-shadow:var(--shadow-soft)}
@media (hover:hover) and (pointer:fine){
.btn:hover{border-color:var(--accent);color:var(--accent)}
}
.btn.primary{background:var(--accent);border-color:transparent;color:#fff;font-weight:600;box-shadow:none}
@media (hover:hover) and (pointer:fine){
.btn.primary:hover{filter:brightness(1.06)}
}
.btn.danger{border-color:rgba(255,69,58,.5);color:var(--red)}
@media (hover:hover) and (pointer:fine){
.btn.danger:hover{background:rgba(255,69,58,.12)}
}
.btn.sm{padding:6px 10px;font-size:12.5px}
.btn.block{display:flex;width:100%;min-height:46px;margin-top:14px;font-size:15px;justify-content:center;align-items:center;text-align:center}
.btn .ico{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;line-height:1}
.btn.block .ico{width:18px;height:18px;font-size:16px}
.btn.accent-soft{background:rgba(10,132,255,.1);border-color:rgba(10,132,255,.3);color:var(--accent)}
@media (hover:hover) and (pointer:fine){
.btn.accent-soft:hover{background:rgba(10,132,255,.16);color:var(--accent);border-color:rgba(10,132,255,.45)}
}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
/* 休投月份：iOS 风格月份选择器 */
.pause-wrap{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}
.pause-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pause-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 10px 6px 12px;border-radius:999px;background:var(--bg2);border:1px solid var(--border2);color:var(--text);font-size:13px;font-weight:500}
.pause-chip .x{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:none;background:transparent;color:var(--muted2);font-size:13px;cursor:pointer;padding:0;margin-left:2px}
@media (hover:hover) and (pointer:fine){
.pause-chip .x:hover{background:var(--hover-bg);color:var(--text)}
}
.pause-chip .x:active{transform:scale(.92)}
.pause-add{display:inline-flex;align-items:center;gap:6px;padding:6px 14px 6px 11px;border-radius:999px;background:transparent;border:1.5px dashed var(--border2);color:var(--accent);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,transform .12s;-webkit-tap-highlight-color:transparent}
.pause-add .plus{display:inline-flex;width:18px;height:18px}
.pause-add .plus svg{width:18px;height:18px;display:block}
@media (hover:hover) and (pointer:fine){
.pause-add:hover{background:var(--hover-bg);border-color:var(--accent)}
}
.pause-add:active{transform:scale(.97);background:rgba(10,132,255,.1)}
.pause-empty{color:var(--muted2);font-size:13px}
.pause-in{flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px;color:var(--text);font-size:14px;transition:border-color .15s,box-shadow .15s}
.pause-in:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.pause-in::placeholder{color:var(--muted2)}
/* 数据迁移：2x2 动作网格 */
.dm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}
.dm-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:14px 8px;border-radius:var(--radius-sm);background:var(--bg2);border:1px solid var(--border2);color:var(--text);font-size:13px;font-weight:600;cursor:pointer;transition:.15s;-webkit-tap-highlight-color:transparent}
@media (hover:hover) and (pointer:fine){
.dm-btn:hover{background:var(--card2);border-color:var(--border)}
}
.dm-btn:active{transform:scale(.98)}
.dm-btn .ico{font-size:20px;line-height:1}
/* v98.46：破坏性按钮（清空全部）改为与「数据迁移」其他按钮完全同色；重要性靠点击后的确认弹窗体现，而非红色外观 */
.dm-btn.danger{color:var(--text);background:var(--bg2);border:1px solid var(--border2);box-shadow:none}
[data-theme="light"] .dm-btn.danger{background:var(--bg2)}
/* v98.46：破坏性按钮（清空全部）改为与其他「数据迁移」按钮同色，重要性靠点击后的确认弹窗体现，而非红色外观 */@media (hover:hover) and (pointer:fine){
.dm-btn.danger:hover{background:rgba(255,69,58,.18);border-color:rgba(255,69,58,.5)}
}
.dm-btn.danger:active{transform:scale(.97)}
/* 自动备份列表：默认折叠 */
.ab-top-row{display:flex;gap:8px;margin-top:12px}
.ab-top-row .btn{flex:1;min-width:0}
.ab-fold-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);cursor:pointer;user-select:none}
.ab-fold-head:active{background:var(--card2)}
.ab-fold-title{font-size:13px;font-weight:600;color:var(--text)}
.ab-fold-sub{font-size:11.5px;color:var(--muted)}
.ab-fold-caret{font-size:12px;color:var(--muted2);transition:transform .15s}
.ab-fold.open .ab-fold-caret{transform:rotate(180deg)}
.ab-fold-body{display:none;padding-top:10px}
.ab-fold.open .ab-fold-body{display:flex;flex-direction:column;gap:12px}

/* 表单 */
.field{margin-bottom:13px}
.field label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:5px;font-weight:600}
.field input,.field select,.field textarea{width:100%;max-width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--border);
  color:var(--text);padding:10px 12px;border-radius:var(--radius-sm);font-size:14px;font-family:inherit;line-height:1.4;min-height:44px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.15)}
.field .unit{color:var(--muted2);font-size:12px}
/* v101.58 负数输入框 ± 切换：输入框 + 按钮并排，按钮固定宽度不挤压输入框 */
.inp-neg{display:flex;gap:6px;align-items:center}
.inp-neg input{flex:1;min-width:0}
.neg-toggle{flex:none;width:40px;height:44px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--chip-bg);color:var(--text);font-size:18px;font-weight:600;cursor:pointer;line-height:1;font-variant-numeric:tabular-nums}
.neg-toggle:active{background:var(--active-bg)}
/* v101.58 执行页覆盖月标注：存量抵扣 X · 需补买 Y */
.dly-credit-note{margin:6px 12px 0;padding:7px 10px;background:var(--chip-bg);border-radius:var(--radius-sm);font-size:12px;color:var(--text)}
.dly-credit-note b{font-variant-numeric:tabular-nums}
.dly-credit-note .tiny{margin-left:4px}
.form-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.form-2{grid-template-columns:1fr}}
/* 记账表单：保持两列（日期|标的 · 代码|份额 · 金额全宽），手机端也两列，避免折行 */
#txnForm .form-2{grid-template-columns:1fr 1fr}
@media(max-width:360px){#txnForm .form-2{grid-template-columns:1fr}}

/* 提醒卡片 */
.reminder{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;border:1px solid var(--border);
  border-radius:var(--radius-sm);background:var(--card2);margin-bottom:10px}
.reminder .r-ico{font-size:20px;flex-shrink:0}
.reminder .r-main{flex:1;min-width:0}
.reminder .r-title{font-weight:700;font-size:14px}
.reminder .r-desc{color:var(--muted);font-size:12.5px;margin-top:3px}
.reminder.done{opacity:.55}

/* 图标清单 */
.check{display:flex;gap:11px;align-items:flex-start;padding:11px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);margin-bottom:9px;background:var(--card2)}
/* iOS 风格开关（新手模式等） */
.sw-toggle{position:relative;display:inline-flex;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.sw-toggle input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:2;pointer-events:none}
.sw-track{width:51px;height:31px;border-radius:999px;background:var(--border2);transition:background .2s;position:relative;box-shadow:inset 0 1px 2px rgba(0,0,0,.15)}
.sw-thumb{position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.25);transition:transform .2s}
.sw-toggle input:checked + .sw-track{background:var(--green)}
.sw-toggle input:checked + .sw-track .sw-thumb{transform:translateX(20px)}
.check input{margin-top:3px;width:17px;height:17px;accent-color:var(--accent)}
.check .c-text{font-size:13.5px;font-weight:600}
.check .c-hint{color:var(--muted);font-size:12px;margin-top:2px}
.check.done .c-text{color:var(--muted);text-decoration:line-through}

/* 资产行 / 执行卡 */
.asset-row{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.1fr;gap:8px;align-items:center;
  padding:11px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);margin-bottom:8px;background:var(--card2)}
.asset-row .a-name{font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:8px}
.asset-row .a-code{color:var(--muted);font-size:11.5px}
.dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}

/* 各标的清单（响应式卡片，替代宽表，合并冗余列） */
.asset-list{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.asset-card{background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}
.asset-card .ac-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}
.asset-card .ac-name{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;min-width:0;flex:1 1 auto}
.asset-card .ac-name span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.asset-card .a-code{color:var(--muted);font-size:11px;font-weight:600;flex-shrink:0}
.asset-card .ac-head-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.asset-card .ac-value{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;flex-shrink:0}
.asset-card .ac-meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:12.5px;color:var(--muted)}
.asset-card .ac-meta b{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}
.asset-card .ac-meta .up{color:var(--red)} .asset-card .ac-meta .down{color:var(--green)}
/* 资产配置：每标的卡内 权重/目标/偏离/收益 固定列宽，跨卡垂直对齐 */
.asset-card .ac-grid{display:grid;grid-template-columns:1fr 1fr 1.4fr 1fr;gap:6px 10px;margin-top:10px}
.asset-card .ac-g{display:flex;flex-direction:column;gap:3px;min-width:0}
.asset-card .ac-k{font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}
.asset-card .ac-g b{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.asset-card .ac-g-dev b{font-size:12.5px;font-weight:700}
/* 权重偏离分档色标（替代比例条）：去掉色块框，仅用对应颜色字体。
   必须提升优先级，否则被 .asset-card .ac-g b 的文字色覆盖 */
.asset-card .ac-g b.dev-ok{color:var(--green)}
.asset-card .ac-g b.dev-slight{color:var(--teal)}
.asset-card .ac-g b.dev-warn{color:var(--orange)}
.asset-card .ac-g b.dev-bad{color:var(--red)}
.asset-card .ac-g b.pos{color:var(--green)}
.asset-card .ac-g b.neg{color:var(--red)}
/* ≈ 估算符：低调弱化 */
.asset-card .ac-value .approx{color:var(--muted);opacity:.5;font-weight:500;font-size:12px;margin-right:1px}
.asset-card .ac-reason{margin-top:7px;font-size:11.5px;color:var(--muted);line-height:1.5}
.asset-card .ac-bar{position:relative;height:5px;background:var(--border2);border-radius:999px;margin-top:9px;overflow:visible;box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.asset-card .ac-bar > i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px;box-shadow:0 0 8px rgba(10,132,255,.35)}
.asset-card .ac-bar > .ac-tgt{position:absolute;top:-2px;width:2px;height:9px;background:var(--text);opacity:.55;border-radius:1px}

.exec-card .exec-head{display:grid;grid-template-columns:1fr auto;align-items:start;gap:3px 8px;margin-bottom:8px}
.exec-card .eh-top{grid-column:1;align-self:center;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* 执行页代码/PE 溢价行：固定单行、不可横滑；信息过长省略号截断，末尾「?」按钮始终可见 */
.exec-card .exec-meta{grid-column:1 / -1;display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow:hidden;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.exec-card .exec-meta .exec-meta-body{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exec-card .exec-meta > *{flex-shrink:0}
.exec-card .exec-meta .pe-inline{margin:0}
.exec-card .a-code{color:var(--muted);font-size:11.5px}
.exec-ind{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}
.ind-pair{background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:8px 10px}
.ind-pair .ind-row{display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.ind-pair .ind-k{font-size:10.5px;color:var(--muted)}
.ind-pair .ind-v{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.ind-pair .ind-coef{font-size:11px;color:var(--muted);margin-top:3px}
.ind-pair .ind-coef b{font-weight:700;font-variant-numeric:tabular-nums}
.ind-pair .ind-note{font-style:normal;margin-left:4px;font-size:10.5px}
.pe-inline{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.prem-src{font-size:11px;font-weight:400;opacity:.8;margin-left:4px;padding:1px 3px;border-radius:4px;background:rgba(255,255,255,.06)}
/* 标的卡概览模块：目标 + 当月 + 进度 + 勾选，整合为一块 */
.exec-summary{margin-top:12px;padding:13px 14px;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-sm);}
.es-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.es-main{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0}
.es-k{font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}
.es-val{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.es-month{font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap}
/* 右上角「已完成」状态标签（替代确认按钮） */
.exec-card .done-tag{grid-column:2;justify-self:end;align-self:start;display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border:1px solid var(--border2);border-radius:999px;background:var(--card2);cursor:pointer;font-size:11.5px;font-weight:700;color:var(--muted);transition:all .15s;white-space:nowrap;user-select:none;-webkit-appearance:none;font-family:inherit}
.exec-card .done-tag:active{transform:scale(.97)}
.exec-card .done-tag.rec{background:rgba(48,209,88,.10);border-color:rgba(48,209,88,.4);color:var(--green)}
.exec-card .done-tag.on{background:rgba(48,209,88,.16);border-color:rgba(48,209,88,.55);color:var(--green)}
/* 变暗卡片里：编辑入口保持高亮可点，明确提示「可改金额」 */
.exec-card.done .done-tag{opacity:1;box-shadow:0 0 0 2px rgba(48,209,88,.35);cursor:pointer;pointer-events:auto}
@media (hover:hover) and (pointer:fine){
.exec-card.done .done-tag:hover{background:rgba(48,209,88,.24);box-shadow:0 0 0 2px rgba(48,209,88,.55)}
}
.exec-summary .exec-prog{margin-top:11px}
.exec-formula{margin-top:8px;display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:11.5px;font-variant-numeric:tabular-nums}
.exec-formula::-webkit-scrollbar{height:3px}
.exec-formula .f-op{color:var(--muted);flex-shrink:0}
.exec-formula .f-base{color:var(--text);flex-shrink:0}
.exec-formula .f-coef{font-weight:700;flex-shrink:0}
.exec-formula .f-coef.trend-coef{color:var(--orange,#ffb84a)}   /* 趋势跟踪 ×0.5：橙色强调 */
/* 执行页 meta 行趋势状态（v100.52：正常灰字 MA 周期、破位触发红色） */
.exec-card .exec-meta .trend-up{color:var(--muted,#8b949e)}
.exec-card .exec-meta .trend-down{color:var(--red,#e5484d);font-weight:600}
.exec-card .exec-meta .prem-over{color:var(--red,#e5484d);font-weight:600}   /* 溢价超推荐范围 → 红色 */
.exec-formula .f-pe{color:var(--muted);flex-shrink:0}
.exec-formula .f-plus{flex-shrink:0}
.exec-formula .f-final{color:var(--text);font-weight:700;flex-shrink:0}
.exec-formula .f-each{color:var(--accent);font-weight:700;flex-shrink:0}
/* 资金来源/去向：小字提醒，不占主布局 */
.addon-hint{margin-top:7px;font-size:11px;line-height:1.5;color:var(--muted)}
.addon-hint.add{color:#c9736b}
.addon-hint.cut{color:#6ba368}
.addon-hint.muted{opacity:.75}
/* v99.89：进度条「剩余应投」强调 */
.prog-remain{color:var(--text);font-weight:700}
/* 执行说明：公式 + 加减仓金额 + 资金去向 统一解释块（点「?」底部弹窗展示） */
/* 「?」执行说明按钮：放在待买入/开关边上，与操作同行 */
.exec-card .exec-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end;flex-wrap:wrap;min-width:0}
.exec-card .ex-toggle{position:relative;background:var(--bg);border:1px solid var(--border2);padding:0;margin-left:6px;width:22px;height:22px;border-radius:50%;color:var(--muted);font-size:13px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;flex-shrink:0}
.exec-card .ex-toggle::before{content:'';position:absolute;inset:-11px;border-radius:50%}
.exec-card .ex-toggle:active{background:var(--card2);border-color:var(--accent);color:var(--accent)}
.exec-card .exec-detail{display:none;margin-top:10px;padding-top:10px;border-top:1px solid var(--border2)}
.exec-card .exec-detail.open{display:block}
.exec-card .ex-body{display:block;margin-top:0;padding-top:0;border-top:0}
.exec-card .ex-body .exec-formula{margin-top:0;opacity:.92;padding-left:0}
.exec-card .ex-body .addon-hint{margin-top:8px;opacity:.92;padding-left:0}
/* 今日待办顶部一行 */
.todo-bar{display:flex;align-items:center;gap:8px;margin:2px 0 18px;padding:8px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--card2);flex-wrap:wrap}
.todo-label{font-weight:700;font-size:12.5px;white-space:nowrap;flex-shrink:0}
.todo-items{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
.todo-chip{display:inline-flex;align-items:center;gap:5px;min-height:44px;box-sizing:border-box;padding:4px 10px;border:1px solid var(--border2);border-radius:999px;font-size:12px;cursor:pointer;white-space:nowrap;background:var(--bg);flex-shrink:0}
.todo-chip input{width:14px;height:14px;accent-color:var(--accent);margin:0}
.todo-chip.done{opacity:.5}
.todo-chip.done .todo-text{text-decoration:line-through}
.todo-none{font-size:12px;color:var(--muted)}
.prem-pill{display:inline-flex;align-items:center;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;border:1px solid var(--border2);font-variant-numeric:tabular-nums;white-space:nowrap;cursor:default;background:transparent;color:inherit;line-height:1.6}
.prem-green{color:#30d158;background:rgba(48,209,88,.14);border-color:rgba(48,209,88,.45)}
.prem-yellow{color:#ff9f0a;background:rgba(255,159,10,.14);border-color:rgba(255,159,10,.45)}
.prem-red{color:#ff453a;background:rgba(255,69,58,.14);border-color:rgba(255,69,58,.45)}

.exec-card{transform:translateX(0);will-change:transform;background:var(--card);position:relative;z-index:1}
/* 弹窗 */
.ec-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:8px}
.ec-tab{flex:1;padding:10px 0;text-align:center;border:0;background:transparent;color:var(--muted);font-size:14px;font-weight:600;border-bottom:2px solid transparent;cursor:pointer}
.ec-tab.on{color:var(--accent);border-bottom-color:var(--accent)}
.ec-row{display:flex;align-items:center;gap:10px;padding:10px 8px;border-bottom:1px solid var(--border);cursor:pointer}
.ec-row:active{background:var(--bg2)}
.ec-row.proj{cursor:default;opacity:.7}
.ec-date{font-size:13px;font-weight:600;color:var(--muted);min-width:42px}
.ec-type{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--chip-bg);min-width:48px;text-align:center}
.ec-type.buy{color:#30d158;background:rgba(48,209,88,.12)}
.ec-type.sell{color:#ff453a;background:rgba(255,69,58,.12)}
.ec-type.deduct{color:var(--accent);background:rgba(10,132,255,.12)}
.ec-amt{font-weight:700;font-size:14px;text-align:right;white-space:nowrap}
.ec-amt.up{color:#30d158}.ec-amt.down{color:#ff453a}
.ec-shares{font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
.ec-go{color:var(--muted2);font-size:16px}
.ec-sum{margin-top:10px;padding:10px 8px;background:var(--bg2);border-radius:8px;font-size:12px;color:var(--muted)}
.ec-sum b{color:var(--text)}
.ec-sum .up{color:#30d158}.ec-sum .down{color:#ff453a}

/* v101.96 流水表头固定 + 定投日历视图 + 底部固定 */
.ec-body{position:relative}
.ec-grid-head{display:flex;gap:8px;padding:8px;font-size:11px;color:var(--muted);background:var(--bg2);position:sticky;top:0;z-index:2;border-bottom:1px solid var(--border);font-weight:600}
.ec-grid-head{display:grid;grid-template-columns:44px minmax(0,1fr) 82px 54px 58px;gap:6px;align-items:center;white-space:nowrap;text-align:left}
.ec-grid-head span{overflow:hidden;text-overflow:ellipsis}
.ec-grid-head span.r{text-align:right}
.ec-row{display:grid;grid-template-columns:44px minmax(0,1fr) 82px 54px 58px;gap:6px;align-items:center;padding:9px 8px;border-bottom:1px solid var(--border);cursor:pointer}
.ec-row:active{background:var(--bg2)}
.ec-row.proj{cursor:default;opacity:.72}
.ec-tk{display:flex;align-items:center;gap:6px;min-width:0}
.ec-cn{display:flex;flex-direction:column;gap:1px;min-width:0;line-height:1.25}
.ec-code{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-name{font-size:10.5px;color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-code{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-type{font-size:11px;padding:1px 6px;border-radius:6px;background:var(--chip-bg);min-width:22px;text-align:center;flex-shrink:0;line-height:1.4}
.ec-agg .ec-tk{cursor:pointer}
.ec-agg-detail{background:var(--bg);border-left:2px solid var(--border2);margin:0 8px;border-radius:6px}
.ec-fee{font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
.ec-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:4px}
.ec-cal-h{text-align:center;font-size:11px;color:var(--muted);padding:4px 0}
.ec-cal-cell{min-height:52px;border-radius:8px;background:var(--bg2);border:1px solid var(--border);padding:4px;font-size:10px;display:flex;flex-direction:column;gap:2px;position:relative}
.ec-cal-cell.blank{background:transparent;border-color:transparent}
.ec-cal-cell.holiday{opacity:.5}
.ec-cal-cell.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.ec-cal-cell.has{cursor:pointer}
.ec-cal-cell.has:active{background:var(--chip-bg)}
.ec-cal-d{font-size:13px;font-weight:700}
.ec-cal-done{color:#30d158;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-cal-pend{color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ec-cal-off{color:var(--muted2)}
.ec-day-detail{border:1px solid var(--border);border-radius:8px;margin-top:8px;overflow:hidden}
.ec-foot{display:flex;flex-direction:column;gap:10px;padding:12px 4px 0;position:sticky;bottom:0;background:var(--card);z-index:3}
.ec-nav{display:flex;align-items:center;justify-content:center;gap:8px;width:100%}
/* v101.100 月份翻页固定到弹窗顶部（tabs 下方，不随内容滑动） */
.ec-navbar{position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 4px;background:var(--card);border-bottom:1px solid var(--border);margin-bottom:4px}
.ec-acts{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;flex-wrap:wrap}
.ec-acts{display:flex;align-items:center;gap:8px;flex-shrink:0}
.ec-nav{display:flex;align-items:center;gap:8px}
.ec-nav-btn{border:1px solid var(--border2);background:var(--bg2);color:var(--text);font-size:13px;padding:7px 12px;border-radius:999px;cursor:pointer}
.ec-nav-btn:active{background:var(--chip-bg)}
.ec-ym{font-size:14px;font-weight:700;min-width:84px;text-align:center}
.ec-nav{display:flex;align-items:center;gap:8px}
.ec-ym{font-size:14px;font-weight:700;min-width:60px;text-align:center}
.exec-card.done{border-left-color:var(--green)}
.exec-card.off{opacity:.42;filter:grayscale(.65);border-left-color:var(--muted2);border-style:dashed}
.exec-card.off .exec-head strong{color:var(--muted)}
.exec-card .f-note{font-size:11px;margin-left:4px}
.exec-card .f-base.muted{font-weight:700}
/* v101.100 取消买够划横线，改为圆点状态识别 */
/* 点开「改金额」后，录入框在变暗卡片里恢复清晰可读可填 */
.exec-card.done .exec-log{opacity:1}

/* 进度条 + 缺口累计 */
.exec-prog{margin-top:12px}
.prog-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
.prog-pct{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.prog-pct.ok{color:#30d158}.prog-pct.warn{color:#ff9f0a}.prog-pct.low{color:#ff453a}
.prog-track{height:8px;border-radius:999px;background:var(--bg2);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
.prog-fill{height:100%;border-radius:0;transition:width .35s ease;background:linear-gradient(90deg,var(--accent),#5ac8fa)}
.prog-fill.ok{background:linear-gradient(90deg,#34c759,#30d158)}
.prog-fill.warn{background:linear-gradient(90deg,var(--accent),#5ac8fa)}
.prog-fill.low{background:linear-gradient(90deg,var(--accent),#5ac8fa)}
.prog-fill.paused{background:var(--muted2)}
/* v101.59 两段式进度条：绿=正常买入 · 蓝=存量抵扣（用户决策：颜色区分代替文字标注） */
.prog-fill.buy,.dly-head-fill.buy{display:inline-block;vertical-align:top;background:linear-gradient(90deg,#2f9e44,#34c759)!important;box-shadow:0 0 10px rgba(52,199,89,.35)}
.prog-fill.credit,.dly-head-fill.credit{display:inline-block;vertical-align:top;background:linear-gradient(90deg,#185FA5,#5ac8fa)!important;box-shadow:0 0 10px rgba(24,95,165,.35)}
/* v101.84 定投预计扣款（灰色虚线段，不计收益仅预披露） */
.dly-head-fill.proj,.prog-fill.proj{display:inline-block;vertical-align:top;background:repeating-linear-gradient(90deg,rgba(134,148,166,.28) 0 4px,transparent 4px 8px)!important;box-shadow:none!important}
/* v101.91 超配延展：进度条 100% 后再延伸一段红色，标识持仓占比 > 目标权重 */
.dly-head-fill.over{display:inline-block;vertical-align:top;background:linear-gradient(90deg,#ff453a,#ff9f0a)!important;box-shadow:0 0 10px rgba(255,69,58,.4)}
.over-text{color:#ff453a;font-weight:700}
.dca-proj-num{color:var(--muted2);font-weight:600}
.prog-legend{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:10.5px;color:var(--muted)}
.prog-legend .lg{display:inline-block;width:9px;height:9px;border-radius:2px}
.prog-legend .lg-buy{background:#34c759}
.prog-legend .lg-credit{background:#185FA5}
/* v101.60 执行卡表面定投计划行：日扣款金额/频率可见 */
.dly-plan-line{margin:6px 12px 0;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dly-plan-line b{color:var(--text);font-variant-numeric:tabular-nums}
.prog-sub{margin-top:4px;font-size:11px}
.amt-carry{font-size:11px;font-weight:700;color:#ff9f0a;margin-left:6px}
.dly-head-gap{font-size:10.5px;font-weight:700;color:#ff9f0a;margin-left:6px;white-space:nowrap}

/* 勾选即记录弹窗（内联展开） */
.exec-log{margin-top:10px;padding:14px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--card2);animation:logSlide .2s ease}
@keyframes logSlide{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.log-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.log-title{font-size:14px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:6px}
.log-title::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.log-close{flex-shrink:0;width:26px;height:26px;border-radius:50%;border:1px solid var(--border2);background:var(--bg);color:var(--muted);font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.log-close:active{transform:scale(.94);background:var(--card2)}
.log-hint{font-size:11px;color:var(--muted);margin-bottom:12px}
.log-fields{display:flex;flex-direction:column;gap:10px}
.log-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.log-field{display:flex;flex-direction:column;gap:4px;position:relative}
.log-label{font-size:11px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}
.log-input-wrap{position:relative}
.log-nv-refresh{position:relative;margin-left:6px;width:22px;height:18px;line-height:15px;font-size:12px;text-align:center;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg2);color:var(--accent);cursor:pointer;padding:0}
.log-nv-refresh::before{content:'';position:absolute;inset:-13px -11px}
.log-nv-refresh:active{transform:scale(.92)}
.log-auto{font-size:11px;color:var(--accent);margin:6px 0 2px;min-height:14px}
.log-price-src{font-size:12px;color:var(--text);background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:var(--radius-xs);padding:9px 11px;margin-bottom:12px;line-height:1.5}
.log-price-src b{color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}
.log-field input{font-size:16px;padding:10px 12px;padding-right:32px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);font-variant-numeric:tabular-nums;width:100%;box-sizing:border-box;-webkit-appearance:none}
.log-field input:focus{outline:none;border-color:var(--accent);background:var(--card2)}
.log-field input::placeholder{color:var(--muted);opacity:.65}
.log-unit{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--muted);pointer-events:none}
.log-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.log-save{width:100%;padding:12px;border:none;border-radius:var(--radius-sm);background:var(--green);color:#fff;font-size:15px;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent}
.log-save:active{transform:scale(.98);opacity:.95}
.log-skip{width:100%;padding:10px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg);color:var(--muted);font-size:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.log-skip:active{transform:scale(.98);background:var(--card2)}
.log-del{width:100%;padding:10px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg);color:#ff453a;font-size:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.log-del:active{transform:scale(.98);background:var(--card2)}
/* 多笔成交列表：默认收起，点开「本周记录」才显示 */
.log-list{display:none;flex-direction:column;gap:6px;margin:8px 0 10px}
.log-list.show{display:flex}
.log-row-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg)}
.log-date{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.log-amt{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.log-acts{display:flex;align-items:center;gap:6px}
/* 「本周记录（N 笔）」折叠头 */
.log-rec-toggle{width:100%;text-align:left;padding:8px 10px;margin-top:4px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg);color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;-webkit-tap-highlight-color:transparent}
.log-rec-toggle::before{content:'▸';font-size:10px;line-height:1;transition:transform .15s}
.log-rec-toggle.open::before{content:'▾'}
.log-rec-toggle:active{background:var(--card2)}
.log-edit,.log-del{width:auto;padding:5px 11px;border-radius:var(--radius-xs);font-size:12px;font-weight:700;cursor:pointer;border:1px solid var(--border2);background:var(--card2);color:var(--muted);-webkit-tap-highlight-color:transparent}
.log-edit{color:var(--accent);border-color:rgba(10,132,255,.4)}
.log-del{color:#ff453a;border-color:rgba(255,69,58,.4)}
.log-edit:active,.log-del:active{transform:scale(.96)}
.log-edit-wrap{display:flex;align-items:center;gap:4px}
.log-edit-wrap input{width:110px;font-size:14px;padding:6px 8px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--card2);color:var(--text);font-variant-numeric:tabular-nums}
.log-edit-wrap input:focus{outline:none;border-color:var(--accent)}
.log-save-sm{padding:6px 12px;border:none;border-radius:var(--radius-xs);background:var(--green);color:#fff;font-size:12px;font-weight:700;cursor:pointer}
.log-cancel{padding:6px 12px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg);color:var(--muted);font-size:12px;cursor:pointer}
.log-empty{font-size:12px;color:var(--muted);padding:8px 2px}
.log-add-head{font-size:12px;font-weight:700;color:var(--text);margin-bottom:8px}
.log-tip{margin-top:12px;font-size:11px;color:var(--muted);line-height:1.5;opacity:.85}
/* 间距修正：金额与日期/份额/净值之间、保存按钮与上一行之间留好空白 */
.log-field-main{margin-bottom:2px}
.log-field-date{margin:2px 0 4px}
.log-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.log-save{width:100%;padding:12px;margin-top:14px;border:none;border-radius:var(--radius-sm);background:var(--green);color:#fff;font-size:15px;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent}
.log-save:active{transform:scale(.98);opacity:.95}
/* 苹果风格滚轮日期（3 列 scroll-snap，替代日历） */
.wheel-date{position:relative;display:flex;height:180px;width:100%;min-width:0;overflow:hidden;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--card2);margin-top:4px}
.wheel-col{flex:1;min-width:0;height:180px;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;padding:72px 0;scrollbar-width:none;touch-action:pan-y;overscroll-behavior:contain}
.wheel-col::-webkit-scrollbar{display:none}
.wheel-item{height:36px;scroll-snap-align:center;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}
.wheel-col .wheel-item.sel{color:var(--text);font-weight:700}
.wheel-band{position:absolute;top:50%;left:8px;right:8px;height:36px;transform:translateY(-50%);border-top:1px solid var(--border2);border-bottom:1px solid var(--border2);background:rgba(10,132,255,.08);border-radius:var(--radius-xs);pointer-events:none}
/* 手机上滚轮更紧凑、列宽自适应，避免窄屏（如 320px）下被裁切/挤压 */
@media(max-width:560px){
  .wheel-date{height:168px}
  .wheel-date .wheel-col{padding:66px 0}
  .wheel-date .wheel-item{font-size:14px}
}
/* 「改」展开后的内联编辑框 */
.log-row-item.editing{display:block;padding:10px}
.log-edit-box{display:flex;flex-direction:column;gap:10px}
.log-edit-amt-row{display:flex;flex-direction:column;gap:4px}
.log-edit-amt-row .log-input-wrap{position:relative}
.log-edit-amt-row .log-input-wrap input{font-size:16px;padding:10px 12px;padding-right:32px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);width:100%;box-sizing:border-box;font-variant-numeric:tabular-nums}

/* 本月概览仪表盘 */
.dash-overview{margin-bottom:4px}
.dash-groups{display:flex;flex-direction:column;gap:9px}
.dash-group{display:grid;grid-template-columns:94px 1fr;align-items:start;gap:8px}
.dg-label{font-size:12.5px;font-weight:600;white-space:nowrap;line-height:1.5;letter-spacing:-.2px}
.dash-reasons{display:flex;flex-wrap:wrap;gap:4px;font-size:12px;padding-top:1px}
.dash-reason{background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:2px 7px}
.dash-reason b{font-weight:600}
/* 今日待办并入概览卡 */
.dash-todo{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border2);flex-wrap:nowrap;overflow:hidden}
.dash-todo .todo-items{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;flex:1 1 auto;min-width:0;position:relative}

/* 本月概览：当月资金到位进度条（替代原「本周计划+资金拆解行」） */
.dash-monthly{display:flex;flex-direction:column;gap:7px;margin-bottom:4px}
.dm-head{display:flex;justify-content:space-between;align-items:baseline}
.dm-title{font-size:15px;font-weight:700}
.dm-pct{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.dm-pct.ok{color:#30d158}
.dm-pct.warn{color:var(--orange)}
.dm-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)}
.dm-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)}
.dm-meta{font-size:13px;color:var(--muted)}
.dm-meta b{color:var(--text);font-variant-numeric:tabular-nums}
.dm-sub{font-size:11px;color:var(--muted2)}
/* 短债弹药入口行 */
.dash-bond{display:flex;align-items:center;gap:8px;margin-top:10px;padding:10px 12px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}
.dash-bond:active{transform:scale(.99)}
.dash-bond .db-k{font-size:12px;font-weight:600;color:var(--muted)}
.dash-bond strong{font-size:14px;font-variant-numeric:tabular-nums;margin-left:auto}
.dash-bond .db-go{color:var(--muted2);font-size:14px}
.dm-right{display:flex;align-items:baseline;gap:10px}
.dm-link{background:none;border:none;padding:0;margin:0;font-size:12px;color:var(--accent);cursor:pointer;font-weight:500}
.dm-link:active{opacity:.6}

/* 概览弹窗统一明细行 */
.qlist{display:flex;flex-direction:column;gap:8px}
.qrow{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}
.qrow:active{transform:scale(.99)}
.qdot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--muted2)}
.qdot.tone-red{background:var(--red)}
.qdot.tone-orange{background:var(--orange)}
.qdot.tone-blue{background:var(--accent)}
.qdot.tone-green{background:#30d158}
.qrow-main{flex:1 1 auto;min-width:0}
.qrow-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qrow-sub{font-size:11.5px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qrow-right{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:1px}
.qr-v{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.qr-v.add{color:#30d158}
.qr-v.cut{color:#ff453a}
.qr-v.ok{color:#30d158}
.qr-s{font-size:11px;color:var(--muted);white-space:nowrap}
.qrow-go{color:var(--muted2);font-size:14px;flex:0 0 auto}

/* 标的专属历史购买记录行（明细弹窗下钻） */
.txn-wrap{display:flex;flex-direction:column;gap:4px}
.txn-head,.txn-row{display:grid;grid-template-columns:44px 1fr 40px 72px 56px 26px;gap:6px;align-items:center}
.txn-head{position:sticky;top:0;z-index:9;font-size:11px;color:var(--muted);padding:8px 10px;background:var(--bg);border-bottom:1px solid var(--border2)}
.txn-head .th-r{text-align:right}
.txn-list{display:flex;flex-direction:column;gap:6px}
.txn-row{padding:8px 10px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12.5px}
.txn-row.is-sell{opacity:.85;border-style:dashed}
.txn-row.is-sell .txn-amt{color:var(--red);font-weight:600}
.txn-row.is-sell .txn-typ{color:var(--red)}
.txn-row.is-init .txn-typ{color:var(--accent)}
/* 历史交易弹窗：记录/FIFO 批次 视图切换 */
.lt-tabs{display:flex;gap:8px;margin-bottom:12px}
.lt-tab{flex:1;padding:9px 0;background:transparent;border:1px solid var(--border2);border-radius:10px;color:var(--muted);font-size:13px;cursor:pointer;text-align:center}
.lt-tab.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.lt-lots{display:flex;flex-direction:column;gap:10px}
.lt-lot{background:var(--card2);border:1px solid var(--border);border-radius:12px;padding:12px 14px}
.lt-lot-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.lt-lot-date{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.lt-lot-tag{font-size:11px;color:var(--muted);background:var(--chip-bg);border:1px solid var(--border2);border-radius:999px;padding:2px 10px}
.lt-lot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 12px}
.lt-lot-grid>div{display:flex;flex-direction:column;gap:2px}
.lt-k{font-size:11px;color:var(--muted)}
.lt-lot-grid b{font-size:14px;font-variant-numeric:tabular-nums}
/* 再平衡批量卖出录入 */
.rb-batch{padding:2px 0}
.rb-tip{font-size:12.5px;color:var(--muted);line-height:1.6;margin-bottom:12px;background:var(--chip-bg);border:1px solid var(--border2);border-radius:10px;padding:10px 12px}
.rb-list{display:flex;flex-direction:column;gap:10px}
.rb-row{background:var(--card2);border:1px solid var(--border);border-radius:12px;padding:12px 14px}
.rb-name{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.rb-dot{width:8px;height:8px;border-radius:50%;background:var(--red);flex:0 0 auto}
.rb-name b{font-size:14px}
.rb-hint{font-size:11px;color:var(--muted);margin-left:auto}
.rb-inputs{display:flex;gap:8px;align-items:center}
.rb-inputs input.rb-amt,.rb-inputs input.rb-sh{flex:1;min-width:0;height:40px;padding:0 10px;box-sizing:border-box;border:1px solid var(--border);border-radius:8px;background:var(--bg2);color:var(--text);font-size:13px;font-variant-numeric:tabular-nums}
.rb-skip{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);flex:0 0 auto;white-space:nowrap}
.rb-skip input{accent-color:var(--accent)}
.txn-date{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.txn-name{display:flex;align-items:center;gap:5px;min-width:0;white-space:nowrap;overflow:hidden}
.txn-name em{font-style:normal;color:var(--muted);font-size:11px}
.txn-typ{font-size:11px;color:var(--muted);text-align:center;white-space:nowrap}
.txn-amt,.txn-sh{font-variant-numeric:tabular-nums;cursor:pointer;padding:2px 4px;border-radius:4px;white-space:nowrap}
.txn-amt{color:var(--text);font-weight:600;text-align:right}
.txn-sh{color:var(--muted);text-align:right}
.txn-amt:active,.txn-sh:active{background:var(--bg)}
/* v101.52 卖出盈亏徽章显示在金额列下方（flex 竖排），不再溢出压到金额 */
.txn-row.is-sell .txn-amt{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.txn-row.is-sell .txn-pnl{margin-left:0}
/* v101.56 存量使用进度（「我已持有 → 存量记录」顶部汇总） */
.credit-sum{margin:10px 0 12px;padding:10px 12px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm)}
.cs-title{font-size:12px;font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.cs-tip{font-size:10px;font-weight:400;color:var(--muted)}
.cs-row{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-bottom:1px solid var(--border)}
.cs-row:last-child{border-bottom:none}
.cs-name{font-size:12px;color:var(--text);white-space:nowrap;font-weight:600}
.cs-bar{height:6px;width:100%;background:var(--chip-bg);border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.cs-fill{display:block;height:100%;background:var(--accent);border-radius:999px;box-shadow:0 0 8px rgba(10,132,255,.35)}
.cs-txt{font-size:11px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.cs-txt b{color:var(--text);font-weight:600}
.cs-txt em{font-style:normal;color:var(--muted2)}
.cs-covered{color:var(--muted2)}
.txn-edit-input{width:100%;box-sizing:border-box;font-size:12.5px;padding:3px 6px;border:1px solid var(--accent);border-radius:6px;background:var(--bg);color:var(--text);text-align:right;font-variant-numeric:tabular-nums}
.txn-del{width:24px;height:24px;border:none;background:none;color:var(--muted2);font-size:16px;line-height:1;cursor:pointer;border-radius:50%}
.txn-del:active{color:var(--red);background:rgba(255,69,58,.10)}

/* ── 执行页：四方块概览（v76） ── */
.dash-quad{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:10px 0}
.quad-full{grid-column:1 / -1}
.quad-card{position:relative;display:flex;align-items:center;gap:8px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;cursor:pointer;transition:border-color .15s,background .15s}
.quad-card:active{transform:scale(.99)}
.quad-card.active{border-color:var(--border2)}
.quad-card.open{border-color:var(--border2);box-shadow:0 6px 18px rgba(0,0,0,.16)}
.quad-card.open .quad-caret{transform:translateY(-50%) rotate(180deg)}
.quad-h{flex:1 1 auto;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);min-width:0}
.quad-h span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.quad-dot{width:7px;height:7px;border-radius:50%;background:var(--muted2);flex:0 0 auto}
.quad-dot.tone-red{background:var(--red)}
.quad-dot.tone-orange{background:var(--orange)}
.quad-dot.tone-blue{background:var(--accent)}
.quad-right{min-width:58px;margin-right:16px;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto}
.quad-count{font-size:15px;font-weight:700;color:var(--text);line-height:1.15;font-variant-numeric:tabular-nums;white-space:nowrap}
.quad-amt{font-size:12px;font-weight:600;color:var(--muted);line-height:1.15;font-variant-numeric:tabular-nums;white-space:nowrap;max-width:74px;overflow:hidden;text-overflow:ellipsis}
.quad-amt.cut{color:#ff453a}
.quad-amt.add{color:#30d158}
.quad-caret{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--muted2);transition:transform .15s}
.quad-base-list{display:flex;flex-direction:column;gap:6px}
.quad-base-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.quad-base-item .muted{flex:1 1 auto}
.quad-base-item .tag{font-size:10px;padding:1px 6px;border-radius:999px}

.bond-flex-amt{font-size:16px;font-weight:800;color:var(--text);margin:2px 0 3px}
.bond-flex-amt.neutral{color:var(--muted)}
.bond-flex-dest{font-size:12px;font-weight:600;color:var(--accent);margin-bottom:2px}
.bond-flex-src{font-size:11px;color:var(--muted2)}

/* 短债下拉 */
.bond-drop-section{margin-top:8px}
.bond-drop-section:first-child{margin-top:0}
.bond-drop-title{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:6px}
.bond-hist-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:5px 0;border-bottom:1px solid var(--border2)}
.bond-hist-row:last-child{border-bottom:none}
.bond-date{color:var(--muted)}
.bond-amt{font-weight:700;color:var(--green)}
.bond-incoming{font-size:13px;font-weight:700;color:var(--green);padding:6px 0}

/* 基准周投下拉：每月金额计算说明 */
.mcalc-hint{font-size:12px;color:var(--muted);line-height:1.5;margin-bottom:12px}
.mcalc-list{display:flex;flex-direction:column;gap:8px}
.mcalc-row{background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:8px 10px}
.mcalc-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mcalc-name{font-size:13px;font-weight:700}
.mcalc-week{font-size:12px;color:var(--accent);font-weight:600;white-space:nowrap}
.mcalc-note{font-size:12px;color:var(--muted);line-height:1.5;margin-top:3px}
.mcalc-total{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;padding:8px 2px 2px;border-top:1px solid var(--border2);margin-top:6px}
.mcalc-total strong{color:var(--accent)}
/* 基准周投：加仓红 / 减仓绿 / 不变橙，按分组排序 */
.mcalc-sep{font-size:12px;font-weight:700;color:var(--muted);margin:8px 2px 2px}
.mc-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle;flex-shrink:0}
.mc-dot.mc-add{background:#ff453a}
.mc-dot.mc-cut{background:#30d158}
.mc-dot.mc-hold{background:#ff9f0a}
.mcalc-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin:10px 2px 4px}
.mcalc-legend .lg{display:inline-flex;align-items:center;gap:4px;font-weight:600}
.mcalc-legend .lg-add{color:#ff453a}
.mcalc-legend .lg-cut{color:#30d158}
.mcalc-legend .lg-hold{color:#ff9f0a}

/* 今日待办优化 */
.dash-todo .todo-label{font-size:11.5px;font-weight:600;color:var(--muted);white-space:nowrap;flex-shrink:0;opacity:.9}
.dash-todo .todo-chip{display:inline-flex;align-items:center;gap:6px;min-height:30px;box-sizing:border-box;background:var(--card2);border:1px solid var(--border2);border-radius:999px;padding:3px 11px 3px 7px;font-size:11.5px;cursor:pointer;transition:background .15s,box-shadow .15s,transform .12s;-webkit-tap-highlight-color:transparent;box-shadow:var(--shadow-soft)}
.dash-todo .todo-chip:active{transform:scale(.97);box-shadow:none}
.dash-todo .todo-check{flex:0 0 auto;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--muted2);position:relative;background:var(--bg)}
.dash-todo .todo-check[aria-checked="true"]{background:var(--green);border-color:var(--green)}
.dash-todo .todo-check[aria-checked="true"]::after{content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.dash-todo .todo-text{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.dash-todo .todo-go{flex:0 0 auto;color:var(--muted2);font-size:13px;line-height:1;margin-left:1px}
.dash-todo .todo-chip.done{background:rgba(48,209,88,.12);border-color:rgba(48,209,88,.32)}
.dash-todo .todo-chip.done .todo-text{text-decoration:line-through;color:var(--muted)}
@media (hover:hover) and (pointer:fine){
.dash-todo .todo-chip:hover{background:var(--bg)}
}
.todo-none{font-size:12px;color:var(--muted)}
.flash-sec{animation:secFlash 1.2s ease}
@keyframes secFlash{0%{box-shadow:0 0 0 2px var(--accent)}100%{box-shadow:0 0 0 0 transparent}}

@media(min-width:560px){
  .dash-fund .df-k{font-size:11.5px}
  .dash-fund strong{font-size:15px}
  .dash-quad{grid-template-columns:repeat(4,1fr);gap:10px}
  .quad-card{padding:12px 14px}
  .quad-count{font-size:16px}
  .quad-amt{font-size:13px}
}
/* 手机端：四方块改为单列横向卡片，避免任何溢出 */
@media(max-width:560px){
  .dash-overview{padding:12px}
  .dash-top{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:10px}
  .dash-meta{justify-content:flex-start;width:100%;gap:6px}
  .dash-total{font-size:12px}
  .dash-total strong{font-size:16px}
  .dash-quad{grid-template-columns:1fr;gap:6px}
  .quad-card{flex-direction:row;align-items:center;gap:8px;padding:8px 10px;min-height:44px}
  .quad-h{font-size:11px;gap:5px;width:auto;flex:1 1 auto}
  .quad-h span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .quad-right{margin-right:18px;text-align:right;align-items:flex-end;min-width:56px;gap:1px}
  .quad-count{font-size:15px}
  .quad-amt{font-size:11px}
  .quad-caret{right:8px;top:50%;transform:translateY(-50%);font-size:10px}
  .dash-funds.four{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:10px 0 0;overflow-x:auto}
  .dash-funds.four .dash-fund{border-right:1px solid var(--border2);padding:0 8px;min-width:72px}
  .dash-funds.four .dash-fund:nth-child(4){border-right:none}
  .dash-funds.four .dash-fund strong{text-align:right;font-size:13px}
}
@media(max-width:360px){
  .quad-card{padding:7px 9px}
  .quad-h{font-size:10.5px;gap:4px}
  .quad-count{font-size:14px}
  .quad-amt{font-size:10px}
  .quad-right{min-width:52px;margin-right:16px}
}

/* 单指标全宽 */
.exec-ind.single{grid-template-columns:1fr}

/* 场景卡 */
.scenario{border:1px solid var(--border);border-left-width:3px;border-radius:var(--radius-sm);padding:13px 15px;margin-bottom:11px;background:var(--card2)}
.scenario h4{font-size:14.5px;display:flex;align-items:center;gap:8px}
.scenario ol{margin:8px 0 0;padding-left:20px;color:var(--muted);font-size:13px}
.scenario ol li{margin-bottom:3px}
.scenario .note{margin-top:8px;font-size:12.5px;color:var(--text);background:rgba(10,132,255,.07);border-radius:var(--radius-xs);padding:8px 10px}

/* 空态 */
.empty{text-align:center;color:var(--muted);padding:38px 16px;font-size:13.5px}
.empty .big{font-size:34px;margin-bottom:8px}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(10px);
  background:rgba(28,30,38,.92);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  color:#fff;padding:9px 16px;border-radius:999px;font-size:12.5px;line-height:1.35;letter-spacing:.2px;
  box-shadow:0 6px 22px rgba(0,0,0,.30);opacity:0;pointer-events:none;transition:opacity .3s ease,transform .3s ease;
  z-index:80;max-width:84vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* 下拉刷新指示器（仅顶部下拉时淡入） */
.ptr{position:fixed;left:0;right:0;top:max(env(safe-area-inset-top),10px);height:42px;display:flex;align-items:center;justify-content:center;gap:8px;
  opacity:0;pointer-events:none;z-index:25;color:var(--muted);font-size:12.5px;letter-spacing:.3px;transition:opacity .2s ease}
.ptr-spinner{width:17px;height:17px;border:2px solid var(--border2);border-top-color:var(--muted2);border-radius:50%}
.ptr.spinning .ptr-spinner{animation:spin .8s linear infinite}
.ptr.ready .ptr-spinner{border-top-color:var(--wx-green)}
/* 方案A：手机端下拉刷新提示显示在标题栏右侧（页面不位移、无回弹） */
.ptr.ptr--head{left:0;right:0;top:env(safe-area-inset-top,0px);
  height:44px;justify-content:center;align-items:center;gap:6px;font-size:12px;z-index:26;padding:0 12px}
.ptr.ptr--head .ptr-spinner{width:15px;height:15px;border-width:2px}

/* 数据/行情/库异常提示已改为「侧栏状态点 + 自动消失的轻提示」，不再用遮挡内容的大弹窗 */
/* 累计交易费用提示（费后口径透明度指标） */
.fee-note{margin:10px 0 12px;font-size:12.5px;color:var(--muted2);background:rgba(140,170,255,.07);
  border:1px solid rgba(140,170,255,.18);border-radius:var(--radius-sm);padding:8px 12px;line-height:1.5}
.fee-note b{color:var(--text-link)}

/* loading */
.loading-overlay{position:fixed;inset:0;background:rgba(13,17,23,.78);z-index:90;display:flex;
  align-items:center;justify-content:center;gap:12px;color:var(--text);font-size:14px;backdrop-filter:blur(3px)}
.loading-overlay[hidden]{display:none}
.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}

/* 底部导航（移动端）—— v101.121 iOS 原生 Tab bar 标准
   关键：height = 49pt 内容区，不含 safe-area。
   iOS PWA 模式下 WebKit 会自动让 fixed bottom: 0 元素避开 Home Indicator (~33pt)，
   总占用 = 49pt 元素 + 33pt iOS 让出 = 底导底距屏底 ~33pt。
   这与 iOS 系统设置 App Tab bar 布局一致。 */
.bottomnav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:30;
  height:calc(var(--bottomnav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);
  background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);
  border-top:1px solid var(--glass-border);
  align-items:stretch}
.bnav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:1;height:var(--bottomnav-h);
  color:var(--bnav-muted);font-size:20px;line-height:1;padding:0;position:relative;transition:color .18s,transform .12s;-webkit-tap-highlight-color:transparent}
.bnav-item span{display:flex;align-items:center;justify-content:center;height:34px;width:34px;line-height:1}
.bnav-item span svg{width:30px;height:30px;display:block;stroke-width:1.6;transition:transform .14s}
.bnav-item.active span svg{transform:none}
.bnav-item small{font-size:11px;font-weight:400;letter-spacing:0;line-height:1}
.bnav-item.active{color:var(--accent)}
.bnav-item.active span{filter:none;opacity:1}
.bnav-item:active{opacity:.7;transform:scale(.94)}

/* 区块标题 */
.section-title{font-size:14px;color:var(--text);font-weight:700;letter-spacing:.4px;margin:28px 0 14px;padding-left:11px;border-left:3px solid var(--accent);scroll-margin-top:70px}
.section-title .st-sub{font-size:11px;font-weight:600;color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);padding:2px 8px;border-radius:999px;margin-left:8px;letter-spacing:0;vertical-align:middle}
.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-right:0}
.exec-batch-day-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:6px 12px;font-size:12.5px;font-weight:600;border-radius:999px;background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s,background .12s;white-space:nowrap}
@media (hover:hover) and (pointer:fine){.exec-batch-day-btn:hover{background:var(--border2)}}
.exec-batch-day-btn:active{transform:translateY(1px) scale(.98);background:var(--border2)}

/* 移动端适配 */
@media(max-width:860px){
  .sidebar{transform:translateX(-100%);width:268px;box-shadow:var(--shadow)}
  .sidebar.open{transform:translateX(0)}
  .sidebar-close{display:block}
  .scrim.show{display:block}
  .main{margin-left:0;padding:0 14px calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 24px);max-width:none}
  .bottomnav{display:flex}
  /* toast 浮在底部导航栏上方，留出间距，不被导航栏遮挡（移动端共识） */
  .toast{bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 16px)}
  .page-head h1{font-size:19px}
  .page-head{margin:0 -14px 16px;padding:calc(env(safe-area-inset-top) + 8px) 14px 12px}
  .grid{gap:12px}
  .grid-4{grid-template-columns:repeat(2,1fr);border-radius:var(--radius-lg)}
  .stat:nth-child(2n){border-right:none}
  .stat:nth-child(-n+2){border-bottom:1px solid var(--border2)}
  .stat{padding:16px 30px 16px 15px}
  .stat .label{font-size:11px;margin-bottom:6px}
  .stat .value{font-size:20px}
  .card{padding:15px 15px;margin-bottom:14px}
  .section-title{margin:18px 0 8px}
  .asset-row{grid-template-columns:1fr 1fr;gap:6px}
  .exec-ind{grid-template-columns:repeat(2,1fr)}
}

/* 日期条下方：紧凑的「即将到来」列表（整合原独立卡片，无排定时只占一行） */
.upcoming-mini{margin:10px 0 0;display:flex;flex-direction:column;gap:7px;padding:12px 14px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm)}
.um-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text)}
.um-ico{width:18px;text-align:center;flex:none;font-size:13px}
.um-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.um-when{color:var(--muted);font-size:11.5px;flex:none}
.um-empty{font-size:12.5px;color:var(--muted);padding:2px 0}

/* 年化收益率展开面板 */
.annual-panel{margin-top:12px;background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.ap-row{display:flex;align-items:center;gap:10px;font-size:13px}
.ap-k{color:var(--muted);min-width:78px}
.ap-row strong{font-size:15px}
.ap-note{color:var(--muted);font-size:11px;margin-left:auto;text-align:right}
.ap-sub{font-size:12px;font-weight:700;color:var(--text);margin-top:4px;border-top:1px dashed var(--border2);padding-top:8px}
.ap-year{display:flex;align-items:center;gap:10px;font-size:13px}
.ap-y{color:var(--muted);min-width:44px}
.ap-year strong{font-size:14px}
.ap-empty{font-size:12px;color:var(--muted);line-height:1.5}

/* 入场动画：视图内各块轻轻上浮淡入（切换页面时更顺滑、更有质感） */
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
#view > *{animation:none}   /* v101.190 去掉路由切换的逐块淡入（opacity 0 起导致切换后闪动），切换即已就绪 */
/* 自动刷新重渲染时跳过入场动画，避免每分钟卡片闪一下 */
#view.no-anim > *{animation:none!important}
/* 吸顶标题栏不参与入场位移动画，避免 sticky 元素在动画帧抖动/短暂失效 */
#view > .page-head,#view > .plan-topbar{animation:none!important}

/* ═══════════ PE 数据来源三态徽标（手动 / 实时 / 快照）═══════════ */
.pe-state{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px;border:1px solid var(--border2);white-space:nowrap;font-variant-numeric:tabular-nums}
.pe-state.manual{color:var(--teal);border-color:rgba(45,212,191,.45);background:rgba(45,212,191,.10)}
.pe-state.auto{color:var(--green);border-color:rgba(48,209,88,.45);background:rgba(48,209,88,.10)}
.pe-state.snapshot{color:var(--orange);border-color:rgba(255,159,10,.45);background:rgba(255,159,10,.12)}

/* 月度检查：本月 PE 待录入警告横幅 */
.pe-warn{border:1px solid rgba(255,159,10,.5);background:rgba(255,159,10,.10);border-radius:var(--radius-sm);padding:13px 15px;margin-bottom:14px}
.pe-warn-title{font-size:14px;font-weight:700;color:var(--orange)}
.pe-warn-body{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.6}
.pe-warn-body strong{color:var(--text)}
.pe-warn-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.pe-warn-chip{font-size:12px;font-weight:600;color:var(--orange);background:rgba(255,159,10,.14);border:1px solid rgba(255,159,10,.4);border-radius:999px;padding:3px 10px}
.pe-ok{font-size:12.5px;color:var(--green);background:rgba(48,209,88,.10);border:1px solid rgba(48,209,88,.35);border-radius:999px;padding:7px 12px;margin-bottom:14px;display:inline-block}

/* 资产配置：未录份额估算提示 */
.alloc-note{font-size:11.5px;color:var(--muted);margin-top:8px;margin-bottom:12px;line-height:1.5;padding:8px 11px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-xs);}
.data-safe{margin-top:14px}
.ds-top{display:flex;gap:12px;align-items:flex-start}
.ds-ico{font-size:22px;line-height:1;flex:0 0 auto}
.ds-txt h3{margin:0;font-size:14px;font-weight:500}
.ds-sub{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.5}
.ds-row{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.ds-last{font-size:12px;color:var(--muted)}
.ab-list{margin-top:10px;display:flex;flex-direction:column;gap:12px}
/* 备份并清理缓存按钮：上间距与卡片四周内边距(14px)一致，四周间距均匀 */
#backupClearCacheBtn{margin-top:14px}
.ab-item{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}
.ab-fold-body{padding-top:14px}
.ab-item-info{min-width:0}
.ab-item-time{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.ds-recover{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.ds-rec-title{font-size:13px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:6px}
.ds-rec-body{margin-top:8px}
.ds-rec-body ol{margin:0;padding-left:20px;font-size:12px;color:var(--muted);line-height:1.7}
.alloc-note b{color:var(--orange)}

/* 纪律提示条（所有相关页面统一展示） */
.discipline{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 16px}
.disc{font-size:12px;font-weight:600;color:var(--muted);background:var(--card2);border:1px solid var(--border);border-radius:999px;padding:5px 11px}
.um-toggle.warn{color:var(--orange);border-color:rgba(255,159,10,.5);background:rgba(255,159,10,.10)}

/* 「建议填」标记（份额录入引导） */
.req,.log-req{font-size:11px;font-weight:700;color:#c9732b;background:rgba(255,159,10,.14);border:1px solid rgba(255,159,10,.4);border-radius:999px;padding:1px 6px;margin-left:4px;vertical-align:middle}

/* ── 复盘中心 · 纪律状态条（融合进进度模块） ── */
.disc-status{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.disc-chip{font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;border:1px solid var(--border)}
.disc-chip.ok{color:var(--green);background:rgba(48,209,88,.10);border-color:rgba(48,209,88,.4)}
.disc-chip.warn{color:var(--red);background:rgba(255,69,58,.10);border-color:rgba(255,69,58,.45)}
.disc-chip.muted{color:var(--muted);background:var(--card2)}

/* ── 复盘中心 · 本月执行（融合进进度模块 + 下拉） ── */
.rec-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin-top:12px}
.rec-sum{font-size:13px;color:var(--text)}
.rec-sum strong{font-variant-numeric:tabular-nums}
.rec-toggle{font-size:12px;font-weight:700;color:var(--accent);background:var(--card2);border:1px solid var(--border);border-radius:999px;padding:5px 13px;cursor:pointer;user-select:none;white-space:nowrap}
.rec-toggle:active{transform:scale(.97)}
.month-rec-list{display:flex;flex-direction:column;gap:12px;max-height:320px;overflow:auto;-webkit-overflow-scrolling:touch;padding-right:2px}
.mr-week{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:9px 11px}
.mr-week-h{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:12.5px}
.mr-week-stat{margin-left:auto;font-weight:600;font-size:12px}
.mr-slot{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 0;border-top:1px dashed var(--border2)}
.mr-slot:first-of-type{border-top:none}
.mr-date{font-variant-numeric:tabular-nums;color:var(--muted);min-width:42px}
.mr-name{font-weight:600}
.mr-cad{font-size:10.5px;color:var(--muted2);background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:1px 6px}
.mr-chip{margin-left:auto;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px}
.mr-chip.ok{color:var(--green);background:rgba(48,209,88,.12)}
.mr-chip.miss{color:var(--orange);background:rgba(255,159,10,.14)}
.mr-chip.future{color:var(--muted);background:var(--card2)}
.mr-slot.miss .mr-name{color:var(--orange)}
.mr-slot.future .mr-name{color:var(--muted)}

/* ── 复盘中心 · 年度收益对比 ── */
.yr-list{display:flex;flex-direction:column;gap:7px;margin-top:4px}
.yr-row{display:flex;align-items:center;gap:10px;font-size:12.5px}
.yr-row.muted{color:var(--muted2)}
.yr{width:42px;font-variant-numeric:tabular-nums;color:var(--muted);flex:none}
.yr-bar{position:relative;flex:1;height:16px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-xs);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.yr-fill{position:absolute;left:0;top:0;bottom:0;border-radius:6px 0 0 6px}
.yr-fill.pos{background:rgba(48,209,88,.55);box-shadow:0 0 8px rgba(48,209,88,.3)}
.yr-fill.neg{background:rgba(255,69,58,.55);box-shadow:0 0 8px rgba(255,69,58,.3)}
.yr-exp{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--muted);opacity:.7}
.yr-val{width:60px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;flex:none}

/* ── 持仓体检 · 诊断小问号 + 解释弹窗 ── */
.q{position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-left:5px;border-radius:50%;border:1px solid var(--orange);color:var(--orange);font-size:13px;font-weight:700;background:rgba(255,159,10,.12);cursor:help;vertical-align:middle;line-height:1}
.q::before{content:'';position:absolute;inset:-11px;border-radius:50%}
@media (hover:hover) and (pointer:fine){
.q:hover{background:rgba(255,159,10,.28)}
}
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;align-items:center;justify-content:center;z-index:60;padding:16px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow-y:auto;overscroll-behavior:contain}
/* 日期/月份滚轮弹窗：必须高于记账弹窗（sheet-mask z-index:200），否则被覆盖无法点选 */
.modal-mask.wheel-bottom{z-index:300}
.modal-mask.show{display:flex}
.modal-box{position:relative;max-width:430px;width:100%;background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);border:1px solid var(--glass-border);border-radius:var(--radius);padding:18px 18px 16px;box-shadow:0 12px 40px rgba(0,0,0,.45)}
.modal-x{position:absolute;top:6px;right:10px;border:none;background:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:2px 6px}
@media (hover:hover) and (pointer:fine){
.modal-x:hover{color:var(--text)}
}
.ex-title{font-size:15px;font-weight:600;margin-bottom:10px;color:var(--text)}
.ex-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--border2);font-size:13px}
.ex-k{color:var(--muted)}
.ex-reason{margin-top:10px;font-size:13px;line-height:1.55;background:rgba(10,132,255,.12);border:1px solid rgba(10,132,255,.35);border-radius:var(--radius-sm);padding:10px;color:var(--text)}
.ex-warn{margin-top:10px;font-size:12px;line-height:1.55;background:rgba(255,159,10,.12);border:1px solid rgba(255,159,10,.4);border-radius:var(--radius-sm);padding:10px;color:var(--text)}
.ex-ok{margin-top:10px;font-size:12px;line-height:1.55;background:rgba(48,209,88,.12);border:1px solid rgba(48,209,88,.35);border-radius:var(--radius-sm);padding:10px;color:var(--text)}
.ex-note{margin-top:10px;font-size:11px;color:var(--muted);line-height:1.5}

/* ── 我的 FIRE 计划 ── */
/* 推算结果汇总卡片：预期年化 / 终点资产 / 目标进度 / 所需月供 → 2×2 四分格 */
.plan-summary{margin-top:16px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--card2);overflow:hidden}
.ps-quads{display:grid;grid-template-columns:1fr 1fr}
.ps-quad{display:flex;flex-direction:column;gap:4px;padding:14px 16px;min-width:0}
.ps-quad:nth-child(odd){border-right:1px solid var(--border2)}
.ps-quad:nth-child(-n+2){border-bottom:1px solid var(--border2)}
.ps-label{font-size:11.5px;color:var(--muted)}
.ps-value{font-size:23px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;line-height:1.15}
.ps-hint{font-size:11px;color:var(--muted2);line-height:1.35}
.ps-quad-need{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.ps-quad-need .btn{align-self:flex-start;margin-top:4px}
@media(max-width:560px){.ps-value{font-size:21px}}
.plan-asset{border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px;margin-top:10px}
.plan-asset.flex-row{border-style:dashed;background:var(--bg-soft,rgba(148,163,184,.06))}
.pa-head{display:flex;align-items:center;gap:6px}
.pa-head .a-code{margin-left:8px;color:var(--muted2);font-size:11px}
.pa-head .pa-w{margin-left:auto;font-size:16px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;min-width:46px;text-align:right}
.pa-toggles{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}

/* 权重滑块行：两侧 ±1% 微调，中间滑块 */
.pa-slider{display:flex;align-items:center;gap:8px;margin-top:6px}
.pa-slider input[type=range]{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:2px;
  background:var(--border);outline:none;margin:0}
.pa-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;
  background:#fff;border:0;box-shadow:0 1px 4px rgba(0,0,0,.5);cursor:grab}
.pa-slider input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:0;
  box-shadow:0 1px 4px rgba(0,0,0,.5);cursor:grab}
.pa-step{width:28px;height:28px;flex:none;border-radius:var(--radius-xs);border:1px solid var(--border);background:var(--card2);
  color:var(--text);font-size:15px;line-height:1;cursor:pointer;padding:0}
.pa-step:active{background:var(--accent);border-color:var(--accent)}
.pa-money{font-size:12px;color:var(--muted);margin-top:5px;font-variant-numeric:tabular-nums}

/* 参与开关：小药丸，禁用态说明原因 */
.pa-sw{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:6px 9px;border-radius:999px;width:100%;justify-content:flex-start;
  border:1px solid var(--border2);background:var(--card2);cursor:pointer;user-select:none}
.pa-sw input{margin:0;accent-color:var(--accent)}
.pa-sw:has(input:checked){border-color:color-mix(in srgb,var(--accent) 55%,transparent);
  background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--text)}
.pa-sw.dis{opacity:.5;cursor:not-allowed}
.pa-sw em{font-style:normal;color:var(--muted2);font-size:11px}
/* 参与开关收进「展开框」；右下角小 ▾ 触发，手册不参与的只提示不置灰 */
.pa-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--border2)}
.pa-caret{margin-left:auto;width:30px;height:26px;flex:none;border-radius:var(--radius-xs);border:1px solid var(--border2);
  background:var(--card2);color:var(--muted);font-size:14px;line-height:1;cursor:pointer;padding:0}
@media (hover:hover) and (pointer:fine){
.pa-caret:hover{border-color:var(--accent);color:var(--text)}
}
.pa-caret.open{border-color:color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent)}
.pa-toggles.collapsed{display:none}
/* 价值平均月增长目标输入（参与规则内，横跨两列） */
.pa-vag{grid-column:1/-1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:8px 10px;margin-top:4px}
.pa-vag.vag-ref{opacity:.85}
.pa-vag label{font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:5px}
.pa-vag input{width:76px;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);color:var(--text);padding:6px 8px;font-size:16px;min-height:36px;text-align:right}
.pa-vag .er-check{font-size:11px;width:100%;margin-top:2px}
.sw-hint{width:100%;grid-column:1 / -1;font-size:11px;color:var(--muted2);margin:-2px 0 4px;line-height:1.35}
.pa-codes{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border2)}
.pa-codes-lab{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;font-weight:500}
.pa-codes-lab .tiny{margin-left:4px;font-weight:400}
.pa-codes-in{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px;color:var(--text);font-size:16px;min-height:44px;transition:border-color .15s,box-shadow .15s}
.pa-codes-in:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.pa-codes-in::placeholder{color:var(--muted2);font-size:14px}

/* 目标 / 预算：两格卡片，滑块粗调 + 数字框精调 */
.goal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.goal-cell{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--card2);min-width:0}
.gc-head{display:flex;align-items:flex-start;gap:10px}
.gc-icon{font-size:18px;line-height:1}
.goal-cell label{font-size:13px;font-weight:600;color:var(--text)}
.gc-sub{font-size:11.5px;color:var(--muted);margin-top:1px;line-height:1.35}
.slider-num{display:flex;align-items:center;gap:10px}
.slider-num .rng{flex:1;min-width:0}
.gn-num{flex:0 0 118px;width:118px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-xs);
  color:var(--text);padding:6px 8px;font-size:15px;font-family:inherit;text-align:center;
  font-variant-numeric:tabular-nums;transition:border-color .15s,box-shadow .15s;
  -webkit-appearance:none;-moz-appearance:textfield}
.gn-num::-webkit-outer-spin-button,.gn-num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.gn-num:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.15)}
.gn-num::placeholder{color:var(--muted2);font-weight:400}
.goal-reset-row{display:flex;justify-content:center;margin-top:10px}
input[type=range].rng{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:2px;background:var(--border);outline:none}
input[type=range].rng::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid #fff}
input[type=range].rng::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid #fff}
@media(max-width:560px){.goal-grid{grid-template-columns:1fr}}

/* 高级区：iOS 设置分组风格（计划页高级参数） */
.adv-sec{font-size:11px;font-weight:700;color:var(--muted2);letter-spacing:.06em;text-transform:uppercase;margin:16px 2px 6px}
.adv-sec:first-of-type{margin-top:4px}
.acc{margin-top:8px;border:1px solid var(--border2);border-radius:12px;overflow:hidden;background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.03)}
.acc-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;cursor:pointer;user-select:none;
  font-size:13.5px;font-weight:600;background:var(--card);transition:background .15s;-webkit-tap-highlight-color:transparent}
@media (hover:hover) and (pointer:fine){
.acc-head:hover{background:var(--bg2)}
}
.acc-head:active{background:var(--chip-bg)}
.acc-head.open{color:var(--accent)}
.acc-caret{color:var(--muted2);font-size:12px;transition:transform .18s;flex-shrink:0}
.acc-head.open .acc-caret{transform:rotate(180deg)}
.acc-body{padding:12px 14px 14px;border-top:1px solid var(--border2);background:var(--card)}
.acc .acc:last-child{margin-bottom:4px}
/* iOS 风格输入（高级参数/健康检查/录入面板） */
.form-2 .field input,.form-2 .field select,.hc-input-col input,.legacy-in,.pause-in{background:var(--bg2);border:1px solid var(--border);border-radius:10px}
.form-2 .field input:focus,.hc-input-col input:focus,.legacy-in:focus,.pause-in:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.14);background:var(--card)}
/* 高级参数内嵌子卡片（估值分档/回撤/价值平均） */
.legacy-row{transition:border-color .15s,box-shadow .15s}
.legacy-row:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.1)}

/* 合计条 */
.w-sum-bar{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-top:6px;border-radius:var(--radius-sm);
  background:var(--card2);border:1px solid var(--border2);flex-wrap:wrap}
.w-sum{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
.w-sum.ok{color:var(--green)}
.w-sum.bad{color:var(--red)}

/* 起止时间：双拇指滑块（iOS 风格） */
.rd-wrap{margin-top:8px}
.rd-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:15px}
.rd-top strong{color:var(--text);font-variant-numeric:tabular-nums}
.rd-span{font-size:12px;color:var(--accent);font-weight:700;background:color-mix(in srgb,var(--accent) 13%,transparent);
  padding:3px 10px;border-radius:999px}
.range-dual{position:relative;height:34px;margin-top:6px}
.rd-track{position:absolute;top:15px;left:0;right:0;height:4px;border-radius:2px;background:var(--border)}
.rd-fill{position:absolute;top:0;height:100%;border-radius:2px;background:var(--accent)}
.rd-input{position:absolute;top:7px;left:0;width:100%;height:20px;margin:0;background:transparent;
  -webkit-appearance:none;appearance:none;pointer-events:none}
.rd-input::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;width:22px;height:22px;border-radius:50%;
  background:#fff;border:0;box-shadow:0 1px 5px rgba(0,0,0,.55);cursor:grab}
.rd-input::-moz-range-thumb{pointer-events:auto;width:22px;height:22px;border-radius:50%;background:#fff;border:0;
  box-shadow:0 1px 5px rgba(0,0,0,.55);cursor:grab}
.rd-input::-webkit-slider-runnable-track{background:transparent}
.rd-input::-moz-range-track{background:transparent}
.rd-scale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted2);margin-top:2px}

/* 计划页：标题栏复用全局 .page-head 吸顶（整页范围内固定）；保存/恢复按钮条全宽随内容滚动，滚入标题栏下方被实色背景盖住 */
.plan-actionbar.save-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 -28px 18px;padding:0 28px;background:transparent;border:none;box-shadow:none;backdrop-filter:none}
.plan-actionbar .reset-disc{flex:1 1 auto;width:auto;margin:0}
.plan-actionbar .pa-act{display:flex;gap:8px;flex:0 0 auto;margin-left:auto}
.page-head.dirty{border-bottom-color:color-mix(in srgb,var(--orange) 55%,transparent)}
/* 保存按钮：平时常态，有改动时高亮脉冲，常亮可点（不会误以为失效） */
.btn.primary.hot{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 28%,transparent);animation:hotpulse 1.4s ease-in-out infinite}
@keyframes hotpulse{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--accent) 6%,transparent)}}
@media(max-width:860px){
  .plan-actionbar.save-bar{margin:0 -14px 16px;padding:0 14px}
  .plan-actionbar .reset-disc{width:100%}
  .plan-actionbar .pa-act{width:100%;margin-left:0}
  .plan-actionbar .pa-act .btn.primary{flex:1}
}

/* 一键恢复手册纪律：iOS 风格次要按钮，轻背景 + 系统橙字 */
.reset-disc{display:block;width:100%;margin:0 0 14px;padding:11px 14px;border-radius:var(--radius);
  background:var(--card2);border:1px solid var(--border2);
  color:var(--orange);font-weight:600;font-size:14px;cursor:pointer;user-select:none;box-shadow:none;transition:background .15s,border-color .15s}
@media (hover:hover) and (pointer:fine){
.reset-disc:hover{background:var(--card);border-color:var(--orange)}
}
.reset-disc:active{transform:translateY(1px)}

/* 持仓体检：动作含义图例（让「加/减/估值缺口」一眼看懂） */
.hl-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin:10px 0 6px;font-size:11.5px;color:var(--muted)}
.hl-legend span{display:inline-flex;align-items:center;gap:6px}
.hl-legend i.sw{width:13px;height:13px;border-radius:4px;display:inline-block;flex:0 0 auto;box-shadow:0 0 0 1px rgba(255,255,255,.08) inset}
.hl-legend .sw-hold{background:rgba(148,161,181,.55)}
.hl-legend .sw-buy{background:var(--red)}
.hl-legend .sw-sell{background:var(--green)}
.hl-legend .sw-veto{background:var(--orange)}
.hl-legend b{font-weight:800}
/* 持仓明细·偏离诊断：与「实时持仓市值」pos-tbl 统一为干净紧凑表格 */
.hl-tbl{width:100%;border-collapse:collapse;margin-top:4px;font-variant-numeric:tabular-nums}
.hl-tbl th,.hl-tbl td{padding:9px 8px;border-bottom:1px solid var(--border2);font-size:13px;vertical-align:middle;white-space:nowrap}
.hl-tbl th{color:var(--muted);font-weight:600;font-size:11.5px;text-align:left}
.hl-tbl th.num,.hl-tbl td.num{text-align:right}
/* 列宽按内容自然分配（已删除旧 min-width:62px 残留），padding 全列统一；
   标的列限宽+省略号，防止超长名称撑爆整表；总宽超出窄屏时由 .tbl-wrap 横滑兜底 */
.hl-tbl th:first-child,.hl-tbl td:first-child{max-width:130px;text-align:left;overflow:hidden;text-overflow:ellipsis}
.hl-tbl tbody tr:last-child td{border-bottom:none}
.hl-name{cursor:pointer;border-bottom:1px dotted var(--border2)}
@media (hover:hover) and (pointer:fine){
.hl-name:hover{color:var(--accent)}
}
.hl-tbl tbody tr:hover{background:var(--hover-bg)}
/* 仅用左侧细色条表示建议操作，不再整行刷底色（避免遮挡数据） */
.hl-tbl tbody td:first-child{box-shadow:inset 3px 0 0 transparent}
.hl-tbl tbody tr.hl-row-hold td:first-child{box-shadow:inset 3px 0 0 var(--muted2)}
.hl-tbl tbody tr.hl-row-buy td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.hl-tbl tbody tr.hl-row-sell td:first-child{box-shadow:inset 3px 0 0 var(--green)}
.hl-tbl tbody tr.hl-row-veto td:first-child{box-shadow:inset 3px 0 0 var(--orange)}

/* 被手动关掉的规则标签 */
.tag.off{background:var(--card2);color:var(--muted2);border:1px solid var(--border2)}
.adv-head{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.adv-head h3{margin:0}
.caret{transition:transform .15s;color:var(--muted);font-size:14px}

/* ── 数据页布局美化 ── */
.rec-grid{display:grid;gap:12px;align-items:start;margin-bottom:12px}
.rec-grid .card{margin-bottom:0}
.rec-grid .fold-card{margin-bottom:0}
.hist-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.hist-grid > *{min-width:0}
.hist-grid .card{margin-bottom:0}
.hist-full{grid-column:1 / -1}
.hist-card{position:relative;overflow:hidden}
.hist-card.tx{border-left:3px solid var(--accent)}
.hist-card.snap{border-left:3px solid var(--teal)}
.hist-card.pe{border-left:3px solid var(--purple)}
.hist-card h3{margin-bottom:10px}
/* 表格美化：斑马纹 + 悬停 + 表头吸顶，长表可滚动 */
.tbl-wrap{overflow:auto;max-height:440px}
.tbl-wrap table{width:100%;border-collapse:collapse;font-size:13px}
.tbl-wrap th{position:sticky;top:0;background:var(--card2);color:var(--muted);font-weight:600;z-index:1}
.tbl-wrap td,.tbl-wrap th{padding:7px 10px;border-bottom:1px solid var(--border2);white-space:nowrap}
/* 表格行内的操作按钮（如「删」）在密集列表里收小，避免把整行撑高（手机端 44px 大点按区会拉高行高） */
.tbl-wrap td .btn.sm{min-height:30px;padding:4px 9px;font-size:12px}
.tbl-wrap tbody tr:nth-child(even){background:color-mix(in srgb,var(--card2) 55%,transparent)}
@media (hover:hover) and (pointer:fine){
.tbl-wrap tbody tr:hover{background:color-mix(in srgb,var(--accent) 11%,transparent)}
}
@media(max-width:680px){
  .rec-grid{grid-template-columns:1fr;gap:14px}
  .hist-grid{grid-template-columns:1fr;gap:14px}
  .hist-full{grid-column:auto}
  .hl-tbl th,.hl-tbl td{padding:7px 6px;font-size:12px}
  .tbl-wrap td,.tbl-wrap th{padding:6px 9px}
  .tbl-wrap td .btn.sm{min-height:28px;padding:3px 8px;font-size:11.5px}
  .hl-tbl th:nth-child(1),.hl-tbl td:nth-child(1){min-width:0}
}

/* ── 持仓页：资产配置环形图 ── */
.ring-card{margin-top:16px}
.ring-wrap{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-top:10px}
.ring-wrap svg{flex:0 0 auto}
.ring-center-val{fill:var(--text);font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.ring-center-lab{fill:var(--muted);font-size:10px}
.ring-leg{flex:1 1 220px;min-width:200px;display:flex;flex-direction:column;gap:6px}
.ring-leg-item{display:flex;align-items:center;gap:8px;font-size:13px}
.ring-sw{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.ring-leg-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ring-leg-pct{font-weight:700;font-variant-numeric:tabular-nums}
.ring-leg-val{color:var(--muted);font-variant-numeric:tabular-nums;min-width:84px;text-align:right}

/* ── 批量记录本周弹窗：彻底重写的全屏/居中双适配布局 ── */
/* 打开批量弹窗时，禁止外层 modal-mask 滚动，避免 mask 和内部 scroll 抢事件 */
.modal-mask.batch-open{overflow:hidden;align-items:stretch;justify-content:stretch}
.modal-box.batch-modal{position:relative;display:flex;flex-direction:column;width:92vw;max-width:560px;height:85vh;max-height:700px;margin:auto;padding:0;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.batch-head{flex:0 0 auto;padding:14px 16px 10px;border-bottom:1px solid var(--border2);background:var(--card)}
.batch-title-row{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}
.batch-title-row h4{margin:0;font-size:16px;font-weight:800}
.batch-modal .modal-x{position:relative;top:auto;right:auto;flex:0 0 auto;padding:4px 8px;font-size:20px;color:var(--muted);border:none;background:none;cursor:pointer;line-height:1}
.batch-modal .modal-x:active{color:var(--text)}
.batch-hint{font-size:12px;color:var(--muted);line-height:1.45;margin-top:5px}
.batch-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;padding:12px 16px 16px;background:var(--bg)}
.batch-foot{flex:0 0 auto;display:flex;gap:10px;padding:12px 16px 16px;border-top:1px solid var(--border2);background:var(--card)}
.batch-foot .btn{flex:1}
.batch-foot .btn.primary{flex:2}
.batch-row{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin-bottom:8px}
.batch-row:last-child{margin-bottom:0}
.batch-info{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
.batch-name{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:700;min-width:0}
.batch-name b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.batch-plan{font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap}
.batch-in{display:flex;flex-direction:column;gap:10px}
.batch-in label{display:flex;flex-direction:column;gap:5px;font-size:11.5px;color:var(--muted);font-weight:600}
.batch-in input,.batch-in select{width:100%;box-sizing:border-box;padding:11px 12px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text);font-size:16px;font-weight:700}
.batch-in input:focus,.batch-in select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.batch-in input::placeholder{color:var(--muted2);opacity:.7;font-weight:500}
.bin-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.batch-cap{font-size:11px;color:var(--muted2);margin-top:2px}
@media(max-width:560px){
  /* 根治 iOS 批量弹窗滚到底后无法回滑：移动端让 .modal-mask 成为唯一滚动容器（全屏滚动），
     头部/底部 sticky 固定，取消内层 .batch-scroll 的嵌套滚动——避免手势被外层吞掉 */
  .modal-mask.batch-open{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0}
  .modal-box.batch-modal{width:100%;max-width:100%;height:auto;min-height:100%;max-height:none;margin:0;border-radius:0;box-shadow:none;overflow:visible}
  .batch-scroll{flex:1 1 auto;min-height:0;overflow:visible;overscroll-behavior:auto;touch-action:auto;padding:12px 16px 16px;background:var(--bg)}
  .batch-head{position:sticky;top:0;z-index:5;padding:calc(12px + env(safe-area-inset-top)) 16px 10px;border-bottom:1px solid var(--border2)}
  .batch-foot{position:sticky;bottom:0;z-index:5;padding:12px 16px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--border2)}
  .bin-row{grid-template-columns:1fr 1fr;gap:8px}
}

/* ── 苹果滚轮式日期/月份选择弹窗 ── */
.modal-box.wheel{max-width:300px;width:100%;padding:0 0 18px;border-radius:18px;background:var(--bg)}
.wheel .wheel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 10px;border-bottom:1px solid var(--border2)}
.wheel .wheel-title{font-size:15px;font-weight:700}
.wheel .wheel-cancel{background:none;border:none;color:var(--muted);font-size:15px;padding:4px 8px;cursor:pointer}
.wheel .wheel-ok{background:none;border:none;color:var(--accent);font-size:15px;font-weight:700;padding:4px 8px;cursor:pointer}
.wheel .wheel-wrap{display:flex;gap:6px;position:relative;height:210px;overflow:hidden;background:var(--bg);margin:14px 16px 6px;border-radius:var(--radius-sm)}
.wheel .wheel-col{flex:1;height:210px;overflow-y:auto;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;padding:88px 0;scrollbar-width:none;touch-action:pan-y;overscroll-behavior:contain}
.wheel .wheel-col::-webkit-scrollbar{display:none}
.wheel .wheel-item{height:34px;scroll-snap-align:center;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums;transition:font-size .12s,color .12s}
.wheel .wheel-item.sel{color:var(--text);font-weight:700;font-size:18px}
.wheel .wheel-band{position:absolute;top:50%;left:6px;right:6px;height:34px;transform:translateY(-50%);border-top:1px solid var(--border2);border-bottom:1px solid var(--border2);background:rgba(10,132,255,.06);border-radius:var(--radius-xs);pointer-events:none}
.wheel .wheel-shade{position:absolute;left:0;right:0;height:60px;pointer-events:none;background:linear-gradient(var(--bg),rgba(255,255,255,0))}
.wheel .wheel-shade.top{top:0}
.wheel .wheel-shade.bottom{bottom:0;transform:rotate(180deg)}
@media(max-width:560px){
  .modal-box.wheel{max-width:100%;border-radius:18px 18px 0 0;margin-top:auto}
  .modal-mask.wheel-bottom{align-items:flex-end;padding:0}
}

/* ── 底部日历弹窗（记账日期选择，B 方案）── */
.calendar-box{max-width:420px;width:100%;padding:0 0 18px;border-radius:18px;background:var(--bg);-webkit-user-select:none;user-select:none}
.calendar-box .calendar-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 8px}
.calendar-box .cal-title{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}
.calendar-box .cal-nav{background:none;border:none;color:var(--accent);font-size:24px;line-height:1;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin:0}
.calendar-box .cal-nav:active{background:var(--border2)}
.calendar-box .cal-week{display:grid;grid-template-columns:repeat(7,1fr);padding:6px 12px 4px;font-size:12px;color:var(--muted);text-align:center}
.calendar-box .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:2px 12px 6px;gap:2px}
.calendar-box .cal-day{aspect-ratio:1;border:0;background:none;border-radius:50%;font-size:15px;color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin:0;font-variant-numeric:tabular-nums;min-height:38px}
.calendar-box .cal-day.other{color:var(--muted3)}
.calendar-box .cal-day.today{color:var(--accent);font-weight:700}
.calendar-box .cal-day.sel{background:var(--accent);color:#fff;font-weight:700}
.calendar-box .cal-day:active{background:var(--border2)}
.calendar-box .cal-actions{padding:10px 16px 0}
@media(max-width:560px){
  .calendar-box{max-width:100%;border-radius:18px 18px 0 0;margin-top:auto}
}

/* ── 回撤加码历史 ── */
.dd-hist{margin-top:12px}
.dd-hist-list{display:flex;flex-direction:column;gap:6px}
.dd-hist-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-xs);background:var(--card2);font-size:13px;font-variant-numeric:tabular-nums}
.dd-hist-ym{font-weight:700;min-width:62px}
.dd-hist-dd{color:var(--muted);min-width:88px}
.dd-hist-mult{min-width:34px}
.dd-hist-amt{margin-left:auto;color:var(--red);font-weight:700}

/* ── 执行页：触发信号面板（v71 视觉整合） ── */
.dash-signals{display:flex;flex-direction:column;gap:6px;margin:12px 0 10px}
.dash-sig{display:grid;grid-template-columns:88px 1fr;align-items:center;gap:8px;font-size:12px}
.dash-sig-h{display:flex;align-items:center;gap:6px}
.sig-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex:0 0 auto}
.sig-dot.tone-red{background:var(--red)}
.sig-dot.tone-green{background:var(--green)}
.sig-dot.tone-orange{background:var(--orange)}
.sig-dot.tone-blue{background:var(--accent)}
.sig-dot.muted{background:var(--muted2)}
.dash-sig-l{color:var(--muted);font-weight:600;white-space:nowrap}
.dash-sig-items{display:flex;flex-wrap:wrap;gap:5px}
.sig-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;background:var(--bg);border:1px solid var(--border2);border-radius:999px;font-size:11.5px}
.sig-chip b{font-weight:600;color:var(--text)}
.sig-chip .sig-val{color:var(--muted);font-variant-numeric:tabular-nums}
.sig-chip.tone-red{border-color:rgba(255,69,58,.45);background:rgba(255,69,58,.10)}
.sig-chip.tone-red b{color:var(--red)}
.sig-chip.tone-green{border-color:rgba(48,209,88,.45);background:rgba(48,209,88,.10)}
.sig-chip.tone-green b{color:var(--green)}
.sig-chip.tone-orange{border-color:rgba(255,159,10,.45);background:rgba(255,159,10,.10)}
.sig-chip.tone-orange b{color:var(--orange)}
.sig-chip.tone-blue{border-color:rgba(10,132,255,.45);background:rgba(10,132,255,.10)}
.sig-chip.tone-blue b{color:var(--accent)}
.sig-chip.muted{background:var(--card2);border-color:var(--border)}
.dd-compact-bar{margin:2px 0 10px}
.btn.text{background:none;border:none;color:var(--accent);font-size:12px;font-weight:600;padding:4px 0;cursor:pointer}
@media (hover:hover) and (pointer:fine){
.btn.text:hover{color:#409cff}
}


/* ── 数据页：CSV 导出区域协调 ── */
.csv-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:10px 0 14px}
.csv-bar .csv-title{font-size:13px;font-weight:600;color:var(--text)}
.csv-bar .csv-hint{font-size:11.5px;color:var(--muted)}
.csv-btns{display:flex;gap:8px;flex-wrap:wrap}
.csv-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;background:var(--card2);border:1px solid var(--border);border-radius:999px;color:var(--text);font-size:12.5px;font-weight:600;cursor:pointer}
@media (hover:hover) and (pointer:fine){
.csv-btn:hover{background:var(--card);border-color:var(--accent)}
}
.csv-btn svg{width:14px;height:14px;fill:currentColor;opacity:.8}

/* ══════ 账户总览（券商风格） ══════ */
.acct-overview{background:var(--acct-bg);border:1px solid var(--border2);border-radius:var(--radius-lg);padding:18px 18px 14px;margin-bottom:14px}
.acct-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.acct-label{font-size:13px;color:var(--muted);font-weight:600;letter-spacing:.3px}
.acct-live{font-size:11px;color:var(--muted2);font-variant-numeric:tabular-nums}
.acct-live.live{color:#30d158}
.acct-live.partial{color:#FFD60A}
.acct-live.stale{color:var(--orange)}
.acct-total{font-size:34px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.5px;line-height:1.1;margin:2px 0 12px;color:var(--text)}
.acct-total-link{cursor:pointer;border-radius:10px;padding:4px 6px;margin-left:-6px;transition:background .15s;-webkit-tap-highlight-color:transparent}
.acct-total-link:active{background:var(--hover-bg)}
/* 全部标的 52周回撤一览（体检页 stat 点开） */
.dd52-row{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--border)}
.dd52-row:last-child{border-bottom:none}
.dd52-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.dd52-main b{font-size:13px;display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dd52-sub{font-size:10.5px;color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dd52-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.dd52-dd{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;min-width:52px;text-align:right}
.dd52-st{font-size:10.5px;font-weight:600;min-width:52px;text-align:right;white-space:nowrap}
.dd52-st.tone-red{color:var(--red)}.dd52-st.tone-orange{color:var(--orange)}.dd52-st.pos{color:var(--green)}.dd52-st.muted{color:var(--muted2)}
.acct-row{display:flex}
.acct-col{flex:1;padding-right:14px;cursor:pointer;border-radius:10px;padding:6px 8px;transition:background .15s;-webkit-tap-highlight-color:transparent}
.acct-col:active{background:var(--hover-bg)}
.acct-col-r{flex:1;padding-left:14px;border-left:1px solid var(--border2)}
.acct-k{font-size:11.5px;color:var(--muted);margin-bottom:3px}
.acct-v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15}
.acct-sub{font-size:12px;margin-top:1px;font-variant-numeric:tabular-nums}
.acct-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border2);font-size:11.5px;color:var(--muted);flex-wrap:wrap}
.acct-foot-note{color:var(--muted2)}

/* v100.95 持仓盈亏明细弹窗（账户总览三处点击）
 * v100.96 对齐修复：表头与数据行共用同一固定列宽 grid（之前 auto 列随内容宽、各行列边界不齐） */
.pnl-head{display:flex;gap:10px;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:10px;font-size:12px;color:var(--muted)}
.pnl-hd-cell b{font-size:14px;margin-left:2px}
.pnl-list{display:flex;flex-direction:column;gap:4px}
.pnl-row{display:grid;grid-template-columns:minmax(96px,1fr) 64px 56px 66px 40px;gap:5px;align-items:center;padding:9px 6px;border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent}   /* v101.265 压缩数字列，名称列保底 96px，避免窄屏名称被挤没 */
.pnl-row:active{background:var(--hover-bg)}
.pnl-row-head{font-size:11px;color:var(--muted2);cursor:default;padding:2px 6px}
.pnl-row-head:active{background:transparent}
.pnl-name{font-weight:700;font-size:12px;min-width:0;display:flex;align-items:flex-start;gap:6px}   /* v101.265 名称允许两行，不再单行截断 */
.pnl-name .dot{flex:0 0 auto;margin-top:3px}
.pnl-name .pnl-nm{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
.pnl-cell{font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.pnl-val{font-weight:700;color:var(--text)}
.pnl-rate{min-width:38px;font-size:11px}

/* v100.95 累计收益贡献弹窗 */
.ctb-head{display:flex;flex-direction:column;gap:4px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:8px;font-size:12.5px}
.ctb-head b{font-size:14px;margin-left:2px}
.ctb-note-tip{font-size:12px;color:var(--muted);margin-bottom:8px}
.ctb-list{display:flex;flex-direction:column;gap:5px}
.contrib-row{display:grid;grid-template-columns:minmax(96px,1fr) 52px 72px 40px;gap:6px;align-items:center;padding:8px 6px;border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent}   /* v101.265 压缩数字列，名称列保底 */
.contrib-row:active{background:var(--hover-bg)}
.ctb-name{font-weight:700;font-size:12px;min-width:0;display:flex;align-items:flex-start;gap:6px}
.ctb-name .dot{flex:0 0 auto;margin-top:3px}
.ctb-name .ctb-nm{flex:1 1 auto;min-width:0;white-space:normal;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
.ctb-name .ctb-note{flex:0 0 auto;font-style:normal;font-size:10px;color:var(--muted);font-weight:600;white-space:nowrap;margin-top:1px}
.ctb-bar{height:8px;border-radius:999px;background:var(--bg2);overflow:hidden}
.ctb-bar i{display:block;height:100%;border-radius:999px}
.ctb-bar i.up{background:var(--green)}
.ctb-bar i.down{background:var(--red)}
.ctb-pnl{font-size:12.5px;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-weight:700}
.ctb-rate{font-size:11.5px;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;min-width:52px}
/* D. 录错告警：浅色红边卡片 + 独立行动按钮（低调但保留醒目） */
.acct-warn{margin:12px 0;padding:10px 12px;background:var(--card);border:1px solid rgba(255,69,58,.35);border-left:3px solid var(--red);border-radius:var(--radius-xs);font-size:12px;line-height:1.5;color:var(--text)}
.acct-warn .aw-head{display:flex;gap:8px;align-items:flex-start}
.acct-warn .aw-ico{color:var(--orange);font-size:14px;line-height:1.4;flex:0 0 auto}
.acct-warn .aw-title{flex:1 1 auto;min-width:0}
.acct-warn .aw-title b{color:var(--red);font-size:12.5px}
.acct-warn .aw-sub{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.5}
.acct-warn .aw-reason{margin:6px 0 0;color:var(--muted);font-size:11px}
.acct-warn .aw-btn{margin-top:8px;display:inline-flex;align-items:center;padding:6px 12px;font-size:12.5px;font-weight:600;color:#fff;background:var(--red);border:none;border-radius:var(--radius-xs);cursor:pointer}
.acct-warn .aw-btn:active{filter:brightness(.94)}

/* ══════ 实时持仓市值 → 资产配置卡片 ══════ */
/* v101.192 持仓偏离与操作（资产页 · 与首页券商持仓表同款排版） */
.pos-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.pos-card .pos-table{margin:0 -16px}
.pos-liqu{font-size:11px;font-weight:600;color:var(--accent);background:var(--chip-bg);border:1px solid var(--border2);border-radius:999px;padding:5px 12px;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.pos-liqu:active{background:var(--hover-bg);transform:scale(.97)}
.pos-sell{font-size:11px;font-weight:700;color:var(--orange,#d2991d);background:var(--chip-bg);border:1px solid var(--orange,#d2991d);border-radius:999px;padding:5px 12px;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.pos-sell:active{background:var(--hover-bg);transform:scale(.97)}
.pos-offplan-tag{font-size:10px;color:#ff9f0a;background:rgba(255,159,10,.12);border:1px solid rgba(255,159,10,.3);border-radius:999px;padding:0 6px;flex-shrink:0;font-weight:600}
.pos-multi{font-size:10.5px;color:var(--muted2);font-weight:500;flex-shrink:0}
.pt-row.pos-off{opacity:.92}
.pt-name-t .pr-dot{display:inline-block;width:8px;height:8px;border-radius:50%;vertical-align:1px;margin-right:5px;flex-shrink:0}
.pt-sub.ok{color:var(--accent)}
.pt-sub.warn{color:var(--warning)}
.pt-sub.bad{color:var(--danger)}
.pt-sub.off{color:var(--muted)}

/* 资产配置现状（紧凑表格） */
.alloc-tbl th:first-child,.alloc-tbl td:first-child{max-width:150px;overflow:hidden;text-overflow:ellipsis}
.alloc-name{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;font-weight:700}
.alloc-nm{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.alloc-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.alloc-multi{font-size:10.5px;color:var(--muted2);font-weight:500;background:none;border:none;padding:0;cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent}
.alloc-warn{color:var(--orange);font-size:11px;flex-shrink:0;margin-left:auto}
@media (hover:hover) and (pointer:fine){
.pt-row:hover{background:var(--card2)}
}
.approx{color:var(--muted);opacity:.6;margin-right:1px}

/* 执行页 PE 高估减仓明细：整行可点，跳到数据健康检查对应标的 */
.pe-row{cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .12s}
@media (hover:hover) and (pointer:fine){.pe-row:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}}
.pe-row:active{background:color-mix(in srgb,var(--accent) 16%,transparent)}
.pe-row td{padding:11px 8px;vertical-align:middle}
/* 「查看 ›」列吸在右缘：窄屏横向滑动时始终可见，不会漏掉操作入口 */
.pe-row .pe-go{position:sticky;right:0;color:var(--accent);font-weight:600;font-size:12px;white-space:nowrap;text-align:right;background:var(--card);padding-left:10px;box-shadow:-6px 0 8px -6px rgba(0,0,0,.25)}
/* 执行页各类明细行（PE高估/波动率加仓/基准定投）：整行可点跳数据健康检查 */
.drill-row{cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .12s}
@media (hover:hover) and (pointer:fine){.drill-row:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}}
.drill-row:active{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.drill-go{color:var(--accent);font-weight:600;font-size:12px;margin-left:auto;flex:0 0 auto;white-space:nowrap}
.quad-base-item.drill-row{cursor:pointer}
/* 跳转后浮动「返回」按钮（左缘右滑同样可返回） */
.jump-back{position:fixed;left:12px;top:calc(12px + env(safe-area-inset-top));z-index:110;display:inline-flex;align-items:center;gap:5px;padding:8px 15px 8px 11px;border:1px solid var(--border2);border-radius:999px;background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--text);font-size:13px;font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.25);cursor:pointer;-webkit-tap-highlight-color:transparent}
.jump-back:active{transform:scale(.96)}
#offlineBar{padding:6px 14px;font-size:12px;color:var(--muted);text-align:center}

/* ══════ 录入表单：实时预览 / 价格提示 ══════ */
.txn-preview{display:none;margin:4px 0 2px;padding:10px 12px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-xs);font-size:13px;color:var(--text);line-height:1.6}
.txn-preview.show{display:block}
.txn-preview.warn{display:block;color:var(--orange);border-color:rgba(230,160,40,.4)}
.txn-preview b{font-weight:700;font-variant-numeric:tabular-nums}
.field-hint{font-size:11px;color:var(--muted2);margin-top:3px;line-height:1.4}
.field-hint.ok{color:#30d158}
.field-hint.warn{color:var(--orange)}
/* 新增成交 / 我已持有 模式切换（首次记账专用） */
.txn-mode{display:flex;gap:8px;margin-bottom:10px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:4px}
.txn-mode-btn{flex:1;border:none;background:transparent;color:var(--muted);font-size:13px;font-weight:600;padding:9px 8px;border-radius:var(--radius-xs);cursor:pointer;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent}
.txn-mode-btn.active{background:var(--card);color:var(--accent);box-shadow:0 1px 4px rgba(0,0,0,.18)}
.txn-mode-hint{font-size:12.5px;color:var(--muted);line-height:1.6;background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:var(--radius-sm);padding:9px 11px;margin-bottom:10px}
/* 点击弹出式日期/月份选择按钮（替代内联滚轮：不碰就不会误触，点确认才生效） */
.picker-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;box-sizing:border-box;background:var(--bg2);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:10px 12px;font-size:16px;min-height:44px;font-variant-numeric:tabular-nums;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .15s,box-shadow .15s}
.picker-btn:active{border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.picker-btn .picker-val{font-weight:600}
.picker-btn .picker-chev{color:var(--muted2);font-size:12px;flex:0 0 auto}
.log-field-date .picker-btn{width:auto;min-width:150px;background:var(--bg2)}

/* ══════ 导入与模拟（③ 功能增强） ══════ */
.csv-import{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}
.csv-file{flex:1;min-width:180px;font-size:13px;color:var(--text);background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:8px}
.csv-status{font-size:12px;color:var(--muted2);min-width:120px}
.csv-msg{font-size:12px;color:var(--orange);margin-top:8px;line-height:1.5}
.csv-msg.warn{color:var(--red)}
.csv-chk{width:18px;height:18px}
.row-off{opacity:.9}
.tag-off{display:inline-block;font-size:11px;color:#ff9f0a;background:rgba(230,160,40,.12);border:1px solid rgba(230,160,40,.3);border-radius:var(--radius-xs);padding:1px 6px}
.ps-sub{display:block;font-size:11px;color:var(--text-link);margin-top:2px;font-weight:500}
.sim-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.sim-row label{font-size:13px;color:var(--text);min-width:96px}
.sim-input{flex:1;max-width:160px;font-size:16px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-xs);padding:8px 10px;color:var(--text)}
.sim-result{margin-top:6px;font-size:13px}
.sim-line{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border2);font-variant-numeric:tabular-nums}
.sim-line:last-child{border-bottom:none}
.sim-line b{font-weight:700;font-variant-numeric:tabular-nums}
.sim-empty{font-size:12.5px;color:var(--muted2);line-height:1.6;padding:6px 0}

/* ── 数据页：折叠表单 ── */
.rec-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;align-items:start}
.rec-grid .card{margin-bottom:0}
.fold-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:visible;margin-bottom:12px;scroll-margin-top:70px}
.fold-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;cursor:pointer;user-select:none}
@media (hover:hover) and (pointer:fine){
.fold-head:hover{background:var(--card2)}
}
.fold-head h3{margin:0;font-size:15px}
.fold-hint{font-size:12px;color:var(--muted);margin-top:2px}
.fold-caret{appearance:none;font-family:inherit;line-height:1;padding:0;width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;border:none;color:transparent;font-size:0;cursor:pointer;transition:transform .2s}
.fold-caret::before{content:'›';color:var(--muted2);font-size:20px;font-weight:500;display:block;transform:translateX(1px)}
.fold-caret:active{opacity:.6}
.fold-card.open .fold-caret{transform:rotate(90deg)}
.fold-body{display:none;padding:14px 16px 16px}
.fold-card.open .fold-body{display:block}

/* 持仓体检页：复盘分析折叠卡与周围 .card 保持一致 */
#fold-review{border-radius:var(--radius);margin-bottom:18px}
#fold-review .fold-head{padding:17px 19px}
#fold-review .fold-body{padding:0 15px 16px}
#fold-review .card.review-inner{margin:0 0 12px;padding:15px 16px;border-radius:var(--radius-sm)}
#fold-review .card.review-inner:last-child{margin-bottom:0}
.health-summary{font-size:13px;color:var(--text);background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-xs);padding:10px 12px;margin-bottom:10px;line-height:1.5}
.health-summary strong{color:var(--orange);font-variant-numeric:tabular-nums}
.auto-stat{font-size:13px;color:var(--muted);background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-xs);padding:10px 12px;margin-bottom:10px;line-height:1.6}
.auto-stat b{color:var(--text);font-variant-numeric:tabular-nums}
.prem-input.sm{width:50px;font-size:11px;padding:2px 4px;border:1px solid var(--border2);border-radius:var(--radius-xs);background:var(--bg);color:var(--text);margin-top:2px}
.prem-cell{min-width:70px}
.health-modules{margin-top:4px}
.health-modules .fold-card{margin-bottom:0}
/* ══════ 数据健康检查：v98.27 完全重做（干净列表 · 默认折叠 · 无蓝块） ══════ */
.hc-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.hc-asset{background:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.hc-asset.open{border-color:var(--border);box-shadow:0 2px 10px rgba(0,0,0,.07)}
.hc-asset-head{display:flex;align-items:center;gap:9px;padding:11px 14px;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.hc-asset-head:active{background:var(--card2)}
.hc-asset-main{display:flex;align-items:center;gap:9px;min-width:0;flex:1}
.hc-asset-name{font-size:13.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-asset-status{font-size:11px;color:var(--muted);white-space:nowrap}
.hc-asset-toggle{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:11px;transition:transform .18s;background:var(--bg2);border:1px solid var(--border2);flex-shrink:0}
.hc-asset.open .hc-asset-toggle{transform:rotate(180deg)}
.hc-asset-body{display:none;padding:11px 14px 13px;border-top:1px solid var(--border2)}
.hc-asset.open .hc-asset-body{display:block}
.hc-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:7px}
.hc-stat{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:9px 10px;min-width:0}
.hc-stat-label{font-size:10px;color:var(--muted);margin-bottom:3px;letter-spacing:.02em}
.hc-stat-value{font-size:14.5px;font-weight:700;color:var(--text);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-stat-value.red{color:var(--red)}.hc-stat-value.green{color:var(--green)}.hc-stat-value.orange{color:var(--orange)}.hc-stat-value.neutral{color:var(--muted)}
.hc-stat-sub{font-size:9.5px;color:var(--muted2);margin-top:3px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-input-col{display:flex;flex-direction:column;gap:5px}
.hc-input-col label{font-size:11.5px;color:var(--muted);font-weight:500}
.hc-input-col input{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:10px;color:var(--text);padding:9px 11px;font-size:16px;min-height:42px}
.hc-input-col input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.hc-input-col input::placeholder{color:var(--muted2)}
.hc-dual-in{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.hc-dual-in input{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:10px;color:var(--text);padding:9px 11px;font-size:16px;min-height:42px}
.hc-actions{display:flex;gap:7px;margin-top:10px;flex-wrap:wrap}
.hc-actions .btn.sm{min-height:30px;font-size:12px;font-weight:600;padding:0 12px;white-space:nowrap;flex-shrink:0;background:transparent;border-color:var(--border2);color:var(--muted);border-radius:999px}
@media (hover:hover) and (pointer:fine){
.hc-actions .btn.sm:hover{background:var(--chip-bg);border-color:var(--border);color:var(--text)}
}
.hc-actions .btn.sm:active{transform:translateY(1px)}
.hc-manual{margin-top:10px;background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:12px}
.hc-inputs{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}
.hc-input-col{display:flex;flex-direction:column;gap:4px}
.hc-input-col label{font-size:11px;color:var(--muted)}
.hc-input-col input{width:100%;box-sizing:border-box;background:var(--card);border:1px solid var(--border2);border-radius:10px;color:var(--text);padding:8px 10px;font-size:16px;min-height:40px}
.hc-pe-ex{margin-top:10px}
/* v100.69 数据健康：head-only 列表 + 明细弹窗四四方格 */
.hc-quads{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:2px}
.hc-quad{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:10px 11px;min-width:0;display:flex;flex-direction:column;gap:4px}
.hc-quad-label{font-size:10px;color:var(--muted);letter-spacing:.03em;font-weight:700}
.hc-quad-value{font-size:14px;font-weight:700;color:var(--text);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-quad-value.orange{color:var(--orange)}.hc-quad-value.red{color:var(--red)}.hc-quad-value.green{color:var(--green)}.hc-quad-value.muted{color:var(--muted)}
.hc-quad-sub{font-size:9.5px;color:var(--muted2);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;white-space:normal}
.hc-ex{margin-top:10px}
@media (max-width:380px){.hc-quads{grid-template-columns:1fr}}
.pe-ex-card{background:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.pe-ex-head{padding:9px 12px;font-size:12px;font-weight:700;color:var(--muted);background:var(--bg2);border-bottom:1px solid var(--border2)}
.pe-ex-body{padding:10px 12px 12px}
/* v100.69b 分档表格：命中行高亮（去命中列）+ 左侧 kv 整齐 + 右下角修改按钮 */
.pe-ex-card table tr.hit{background:var(--accent-soft,#e8f1fe);font-weight:700;box-shadow:inset 3px 0 0 var(--accent)}
[data-theme="dark"] .pe-ex-card table tr.hit{background:rgba(10,132,255,.14)}
.kv-col{display:flex;flex-direction:column;gap:7px}
.kv{display:grid;grid-template-columns:86px 1fr;gap:4px 10px;align-items:baseline;min-width:0}
.kv-k{color:var(--muted);font-size:11px;white-space:nowrap}
.kv-v{color:var(--text);font-size:12.5px;line-height:1.5;word-break:break-all;min-width:0}
.hc-ex{position:relative;padding-bottom:46px}
.hc-ex-edit{position:absolute;right:12px;bottom:8px;display:inline-flex;align-items:center;gap:5px;background:var(--accent);color:#fff;border:none;border-radius:999px;padding:7px 14px;font-size:12px;font-weight:700;cursor:pointer;box-shadow:0 2px 8px rgba(10,132,255,.25);transition:transform .15s;-webkit-tap-highlight-color:transparent}
.hc-ex-edit:active{transform:scale(.95)}
/* 数据健康检查折叠头不再用特殊蓝色，和普通 fold-card 保持一致 */
#foldHealth>.fold-head{background:transparent}
#foldHealth{border-radius:var(--radius-sm)}
#foldHealth .fold-head h3{font-size:15px}
.hc-asset-head .mc-check{margin-left:auto}   /* v100.69b 月检✓ 移到最右边对齐 */
.mc-check{display:inline-flex;align-items:center;gap:5px;background:var(--bg2);border:1px solid var(--border2);border-radius:999px;padding:4px 10px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none;white-space:nowrap}
.mc-check input{accent-color:var(--accent);cursor:pointer;margin:0}
.mc-check.done{background:rgba(60,180,120,.12);border-color:rgba(60,180,120,.4);color:var(--text)}
.mc-banner{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px}
.hyst-card{margin-top:12px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px}
.hyst-card.has-pend{border-color:rgba(255,159,10,.45);background:rgba(255,159,10,.06)}
.hyst-head{display:flex;align-items:baseline;gap:8px;font-size:13px;font-weight:700;margin-bottom:8px}
.hyst-sub{font-size:11px;font-weight:500;color:var(--muted)}
/* v100.71 场内穿透录入 */
.pen-card{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:12px}
.pen-head{font-size:13px;font-weight:700;color:var(--text);display:flex;flex-direction:column;gap:3px;margin-bottom:9px}
.pen-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.pen-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.pen-field label{font-size:11px;color:var(--muted)}
.pen-field input{width:100%;box-sizing:border-box;background:var(--card);border:1px solid var(--border2);border-radius:10px;color:var(--text);padding:8px 10px;font-size:16px;min-height:42px}
.pen-field input:focus{outline:none;border-color:var(--accent)}
.pen-name{font-size:11.5px;min-height:16px}
.pen-preview{margin-top:8px;background:var(--card);border:1px solid var(--border2);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:5px}
.pen-row{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--text);flex-wrap:wrap}
.pen-actions{margin-top:10px}
.pen-actions .btn{width:100%}
@media (max-width:480px){.pen-grid{grid-template-columns:1fr}}
/* v100.72 定投计划 */
.dca-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}
/* v101.38 定投校准提醒：角标 / 提醒卡 / 日历到月底预计投入 */
.calib-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-left:4px;border-radius:999px;background:var(--red,#ff3b30);color:#fff;font-size:10px;font-weight:700;font-style:normal;vertical-align:1px}
.calib-warn{background:rgba(255,149,0,.08);border:1px solid rgba(255,149,0,.35);border-radius:12px;padding:10px 12px;margin-bottom:10px}
.calib-warn-title{font-size:12.5px;font-weight:700;color:var(--orange,#ff9500);margin-bottom:6px}
/* v101.44 排版修复：calib-warn-row 改 block 布局（不用 flex，避免 iOS Safari 上 flex item 被压窄导致 white-space:nowrap + CJK 字符逐字竖排）
 *   calib-warn-main 100% 宽（name/detail 横排显示正常），calib-ignore absolute 右上角不占空间。点击行进编辑（calib-ignore stopPropagation 已做）*/
.calib-warn-row{position:relative;padding:7px 30px 7px 0;border-top:1px solid rgba(255,149,0,.15);cursor:pointer;border-radius:8px}
.calib-warn-row:first-of-type{border-top:none}
.calib-warn-row:active{background:rgba(255,149,0,.06)}
.calib-warn-main{display:block}
.calib-warn-name{font-weight:600;color:var(--text);font-size:12px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calib-warn-detail{font-size:11px;color:var(--orange,#ff9500);margin-top:2px;line-height:1.4;word-break:break-all}
.calib-ignore{position:absolute;top:7px;right:0;border:1px solid var(--border2);background:var(--bg2);color:var(--muted);border-radius:999px;padding:2px 10px;font-size:11px;cursor:pointer}
.calib-ignore:active{background:var(--chip-bg)}
.calib-warn-tip{font-size:10.5px;color:var(--muted);margin-top:6px}
.dc-plan-sum{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:7px 10px;margin-top:8px;border:1px dashed var(--border2);border-radius:8px;background:var(--bg2);font-size:11.5px;color:var(--muted)}
.dc-plan-sum b{color:var(--text);font-size:13px}
.dc-plan-sum span{color:var(--muted2);font-size:10.5px}
/* v101.37 同标的定投分组折叠卡 */
.dca-groups{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.dca-group{display:flex;align-items:center;gap:10px;width:100%;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 14px;cursor:pointer;text-align:left;transition:background .15s}
.dca-group:active{background:var(--chip-bg)}
.dca-g-name{font-size:14px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto}
.dca-g-sub{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-shrink:0}
.dca-g-sub em{font-style:normal;font-size:10px;color:var(--muted2);background:var(--bg2);border-radius:999px;padding:1px 6px}
.dca-g-go{color:var(--muted);font-size:16px;flex-shrink:0}
/* v101.41 明细行：整行可点进编辑（原 ✎ 按钮已移除）· 基金名独立一行 + 代码/平台/方式一行 */
.dca-row{display:flex;align-items:center;gap:9px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:10px 12px;cursor:pointer}
.dca-row:active{background:var(--bg2)}
.dca-main{flex:1;min-width:0}
.dca-name{font-size:13.5px;font-weight:700;color:var(--text);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dca-meta{font-size:11.5px;color:var(--muted);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dca-tag{font-size:10px;color:var(--muted);background:var(--bg2);border:1px solid var(--border2);border-radius:999px;padding:1px 7px}
.dca-sub{font-size:11px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dca-sub2{font-size:11.5px;color:var(--text);margin-top:2px}
.dca-del{width:26px;height:26px;border-radius:50%;border:1px solid var(--border2);background:var(--bg2);color:var(--muted);font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer}
.dca-del:active{transform:scale(.9);background:var(--chip-bg)}
/* v101.84 定投计划左滑删除：行左滑露出红底删除区 */
.dca-swipe{position:relative;overflow:hidden;border-radius:12px}
.dca-swipe-del{position:absolute;top:0;right:0;bottom:0;width:76px;background:linear-gradient(90deg,#ff453a,#ff2d55);color:#fff;border:0;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;border-radius:0 12px 12px 0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.dca-swipe-del:active{filter:brightness(1.12)}
.dca-row{display:flex;align-items:center;gap:9px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:10px 12px;cursor:pointer;position:relative;touch-action:pan-y;transition:transform .18s ease;will-change:transform}
/* v101.90 定投明细行右侧操作区：删除按钮 + 暂停开关 */
.dca-acts{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-left:auto}
.dca-del-btn{border:1px solid var(--border2);background:transparent;color:var(--danger,#ff453a);font-size:12px;padding:5px 10px;border-radius:999px;cursor:pointer;flex-shrink:0}
.dca-del-btn:active{background:rgba(255,69,58,.1)}
.dca-row:active{background:var(--bg2)}
.dca-row.dca-off{opacity:.55}
.dca-row.swiped{transform:translateX(-76px)}
/* v101.282 暂停计划折叠分组 */
.dca-paused-toggle{font-size:12px;font-weight:700;color:var(--muted);padding:8px 4px;cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px;margin-top:6px}
.dca-paused-list{margin-top:4px}
.dca-paused-list.dca-paused-open{display:block!important}
.dca-plat-t{font-size:12px;font-weight:700;color:var(--text);margin:14px 0 6px}
.dca-plats{display:flex;flex-direction:column;gap:6px}
.dca-plat{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--text);background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:8px 11px;flex-wrap:wrap}
.dca-plat-name{font-weight:700}
.dca-form{display:flex;flex-direction:column;gap:10px}
.dca-select{width:100%;box-sizing:border-box;background:var(--card);border:1px solid var(--border2);border-radius:10px;color:var(--text);padding:9px 11px;font-size:16px;min-height:42px;appearance:none;-webkit-appearance:none}
.hyst-card.has-pend .hyst-sub{color:#ff9f0a}
.hyst-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12.5px;border-top:1px dashed var(--border2)}
.hyst-row:first-of-type{border-top:0}
.hyst-name{font-weight:600;min-width:64px}
.hyst-eff{font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent);min-width:56px}
.hyst-pend{font-size:11.5px;color:#ff9f0a}
.hyst-raw{font-size:11.5px;color:var(--muted)}
.hyst-note{margin-top:8px;font-size:11.5px;color:var(--muted);line-height:1.5}
.mc-banner.done{border-color:rgba(60,180,120,.4);background:rgba(60,180,120,.08)}
.mc-banner-title{font-size:14px;font-weight:700}
.mc-banner-sub{font-size:12px;color:var(--muted);margin-top:2px}
.mc-bar{height:6px;background:var(--bg);border-radius:999px;margin-top:8px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.mc-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:999px;transition:width .2s;box-shadow:0 0 8px rgba(10,132,255,.35)}
.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0;background:var(--muted)}
.status-dot.ok{background:var(--green)}
.status-dot.stale{background:var(--orange)}
.status-dot.bad{background:var(--red)}
.hc-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;font-size:12px;color:var(--muted)}
.hc-legend-item{display:inline-flex;align-items:center;gap:5px}
/* v101.74 自动校准估值数据按钮（数据健康检查区块） */
.hc-auto-row{margin-top:12px;padding:10px 12px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm)}
.hc-auto-row .btn{width:100%}
/* 场内溢价快捷录入卡片 */
.prem-edit-list{display:flex;flex-direction:column;gap:10px}
.prem-edit-row{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:9px 11px}
.prem-edit-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.prem-edit-name{font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px}
.prem-edit-src{font-size:11px;color:var(--muted)}
.prem-edit-input{display:flex;align-items:center;gap:6px;flex-shrink:0}
.prem-edit-input input{width:96px;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);color:var(--text);padding:8px 10px;font-size:16px;min-height:40px;text-align:right}
.prem-pct-sign{font-size:13px;color:var(--muted);margin-left:-4px}
.prem-edit-input .btn.sm{min-height:40px;white-space:nowrap;flex-shrink:0}
@media(max-width:560px){
  .prem-edit-row{flex-wrap:wrap}
  .prem-edit-input{width:100%;justify-content:flex-end}
}
@media(max-width:560px){
  .hc-stats{grid-template-columns:1fr}
  .hc-inputs{grid-template-columns:1fr}
  .hc-asset-head{padding:11px 12px}
  .hc-asset-name{font-size:13.5px}
}

/* —— 移动端适配加固：防横向溢出 + 放大触控与字号 —— */
html,body{overflow-x:clip;max-width:100%;overscroll-behavior-y:contain}
/* 弹窗（底部 sheet / 居中 modal）打开时锁定背后页面滚动，避免 iOS 上手指在弹窗内滑动却滚动到背后内容 */
html.noscroll{overflow:hidden !important}
@media(max-width:560px){
  body{font-size:15px;line-height:1.5}
  .card{padding:12px 12px}
  .btn,.btn.sm{min-height:44px;font-size:15px;padding:0 16px}
  .fold-head{padding:13px 14px}
  .hc-card-head{padding:11px 12px}
  .subcard-head{padding:13px 13px}
  .prem-input,.prem-input.sm{min-height:42px;font-size:16px}
  .field input,.field select,.field textarea{min-height:44px;font-size:16px}
  .main{padding:0 13px calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 22px)}
}

/* 状态图例（✓ / 旧 / ✗） */
.hist-card.prem .fold-head h3{font-size:13px}
@media(max-width:760px){.rec-grid{grid-template-columns:1fr}}
.fold-guide{font-size:12px;line-height:1.6;color:var(--muted);background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:12px}
.fold-guide b{color:var(--text)}
.fold-guide ul{margin:6px 0 0 16px;padding:0}
.fold-guide li{margin-bottom:3px}
.field select{appearance:none;-webkit-appearance:none;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a1b5' d='M6 8L1 3h10z'/%3E%3C/svg%3E") no-repeat right 12px center;border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 32px 10px 12px;color:var(--text);font-size:14px;width:100%;max-width:100%;box-sizing:border-box}
.field select:focus{outline:none;border-color:var(--accent)}
/* 记账表单：标的 picker 按钮（替代 select，点开底部弹窗选择）。
 * 高度精确 44px（button 的 height 在 iOS 上可控），与其他输入框完全一致 */
.asset-pick-btn{appearance:none;-webkit-appearance:none;background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:0 12px;color:var(--text);font-size:15px;width:100%;max-width:100%;box-sizing:border-box;height:44px;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;text-align:left;margin:0}
.asset-pick-btn:active{background:var(--card);border-color:var(--accent)}
.asset-pick-btn .ap-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.asset-pick-btn .ap-go{color:var(--muted2);font-size:15px;flex:0 0 auto}

/* 记账表单：所有普通 input 输入框精确 44px 等高（与日期/标的按钮完全一致） */
#txnForm .form-2 .field input{height:44px;min-height:44px;padding:0 12px;box-sizing:border-box;font-size:15px;margin:0;font-variant-numeric:tabular-nums;border-radius:10px;background:var(--bg2);border:1px solid var(--border)}
/* 记账表单：日期字段 = 视觉按钮（.native-date-btn，高度完全可控 44px，与其他输入框一致），
 * 点它打开自研底部日历弹窗（openDateSheet，B 方案）。值存在 hidden input[name=date]。 */
.native-date-wrap{position:relative;height:44px;min-height:44px;box-sizing:border-box;border-radius:10px;background:var(--bg2);border:1px solid var(--border);overflow:hidden}
.native-date-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:100%;box-sizing:border-box;padding:0 12px;background:transparent;border:0;color:var(--text);font-size:15px;text-align:left;cursor:pointer;font-variant-numeric:tabular-nums}
.native-date-btn:active{background:var(--card)}
.native-date-btn .dt-text{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.native-date-btn .ap-go{color:var(--muted2);font-size:15px;flex:0 0 auto}
/* 记账表单底部：历史购买 + 保存买入 同尺寸（仅颜色区分）；右上角 ✕ 负责关闭 */
/* v101.231 记账弹窗底部按钮固定常显：内容滚动时「历史购买 / 保存」始终停在弹窗底部，不再被截断需上滑 */
.ledger-actions{position:sticky;bottom:0;z-index:2;margin-top:14px;padding:10px 0 6px;background:var(--bg);border-top:1px solid var(--border2)}
.ledger-actions .btn{flex:1;min-height:46px;font-size:15px}
.ledger-actions .btn.ghost{border:1px solid var(--border2)}
/* 日期/月份选择器已统一为内联苹果滚轮，不再使用原生 input */
/* 历史查询默认折叠 */
.hist-grid .fold-card .fold-body{padding:12px 12px 12px}
.hist-grid .fold-card .fold-head{padding:12px 14px}
.hist-grid .fold-card .fold-head h3{font-size:14px}
@media(max-width:801px){
  .rec-grid{grid-template-columns:1fr;gap:14px}
  .hist-grid{grid-template-columns:1fr;gap:14px}
  .hist-grid .fold-card .fold-body{padding:0 10px 10px}
}
@media(max-width:560px){
  .field input,.field select,.field textarea,.prem-input,.prem-input.sm{font-size:16px} /* 防 iOS 缩放 */
  .prem-input.sm{width:64px}
  .fold-head{padding:12px 14px}
  .fold-body{padding:12px 12px 12px}
}



/* ══════ 实时账户：首用空状态 + 移动端适配 ══════ */
.acct-empty{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:14px;font-size:13.5px;line-height:1.65;color:var(--text)}
.acct-empty b{color:var(--accent)}
.acct-empty a{color:var(--accent);font-weight:700}
.pos-empty{margin:6px 0 2px}
@media (max-width:480px){
  .acct-total{font-size:27px;letter-spacing:0}
  .acct-v{font-size:16px}
  .acct-col{padding-right:10px}
  .acct-col-r{padding-left:10px}
  /* v101.73 窄屏下占比/操作列收紧，保证名称与市值/盈亏不被挤压遮挡 */
  .pos-thead,.pos-row{grid-template-columns:8px minmax(0,1fr) 50px 88px 108px 54px;gap:6px;padding-left:8px;padding-right:8px}
  .pos-tbl th,.pos-tbl td{padding:8px 6px;font-size:12px}
  .pos-name{font-size:12px}
  .tbl-wrap{overflow-x:auto}
}

/* ══════ v98.4：收益归因条 / 占比再平衡标记 / 断供模拟器 ══════ */
.acct-attr{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border2)}
.aa-bar{display:flex;height:8px;border-radius:5px;overflow:hidden;background:var(--bg2)}
.aa-principal{background:var(--accent)}
.aa-gain{background:var(--green)}
.aa-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:7px;font-size:12px;color:var(--muted2)}
.aa-legend i.aa-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle}
.aa-dot.principal{background:var(--accent)}
.aa-dot.gain{background:var(--green)}
.aa-note{margin-top:7px;font-size:11.5px;line-height:1.55;color:var(--orange);background:rgba(255,159,10,.10);border-radius:var(--radius-xs);padding:6px 9px}

.asset-card{position:relative}
.asset-card.ac-rebal{border-left:3px solid var(--red)}
.ac-rebal-line{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}
.ac-rebal-hint{font-size:11px;color:var(--muted2)}
.ac-flag{display:inline-flex;align-items:center;font-size:10.5px;color:#fff;background:var(--red);border-radius:var(--radius-xs);padding:2px 7px;font-weight:700;flex-shrink:0}
.ac-tk-toggle{font-size:11px;color:var(--muted2);margin-top:6px}
.ac-tickers{margin-top:7px;border:1px solid var(--border);border-radius:var(--radius-xs);overflow:hidden}
.ac-tk{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:12px}
.ac-tk + .ac-tk{border-top:1px solid var(--border)}
.ac-tk-code{font-weight:600;font-variant-numeric:tabular-nums;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-tk-sub{color:var(--muted);font-size:11px;flex-shrink:0}
.ac-tk-val{font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0}

.stop-sim{margin-top:16px}
.ss-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.ss-head h3{margin:0;font-size:15px}
.ss-tag{font-size:10.5px;color:var(--muted2);background:var(--chip-bg);border-radius:var(--radius-xs);padding:1px 7px}
/* v98.46：断供模拟器改为「苹果风步进器」——自选停投月数，外观中性淡雅 */
.ss-stepper{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:12px 0 6px;padding:8px 10px;background:var(--chip-bg);border:1px solid var(--border2);border-radius:var(--radius-sm)}
.ss-step{flex:0 0 auto;width:38px;height:38px;border-radius:50%;border:1px solid var(--border2);background:var(--card2);color:var(--text);font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s,background .15s;-webkit-tap-highlight-color:transparent}
@media (hover:hover) and (pointer:fine){
.ss-step:hover{background:var(--hover-bg)}
}
.ss-step:active{transform:scale(.92)}
.ss-step:disabled{opacity:.35;cursor:not-allowed}
.ss-val{flex:1;display:flex;align-items:baseline;justify-content:center;gap:4px;font-size:13px;color:var(--muted)}
.ss-val b{font-size:22px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.ss-res{margin-top:8px}
.ss-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px dashed var(--border2);font-size:13px}
.ss-row b{font-size:14px}
.ss-amt{color:var(--red)}
.ss-note{margin-top:8px;font-size:11.5px;line-height:1.6;color:var(--muted2);background:var(--chip-bg);border-radius:var(--radius-xs);padding:7px 9px}
.ss-note b{color:var(--orange)}

/* ══════ v98.5：执行页批量录入优化 ══════ */
.exec-batch-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 13px;font-size:13px;font-weight:600;border-radius:999px;background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s,background .12s}
@media (hover:hover) and (pointer:fine){
.exec-batch-btn:hover{background:var(--border2)}
}
.exec-batch-btn:active{transform:translateY(1px) scale(.98);background:var(--border2)}
.batch-in{display:flex;gap:10px;align-items:flex-end}
.batch-in label{display:flex;flex-direction:column;gap:4px;flex:1;font-size:12px;color:var(--muted2)}
.bin-main input{font-size:16px;font-weight:700;color:var(--text);background:rgba(10,132,255,.10);border-color:rgba(10,132,255,.45)}
.bin-sub{opacity:.7}
.bin-sub input{font-size:16px;background:var(--bg2)}
@media(max-width:480px){
  .exec-batch-btn{padding:6px 12px;border-radius:999px;font-size:12.5px;gap:5px}
  .page-head.exec-page h1{font-size:20px}
}

/* ══════ v98.6：首页「本周行动」焦点卡 ══════ */
.action-focus{margin-bottom:14px;border-radius:var(--radius-lg);padding:13px 15px;border:1px solid var(--border);background:var(--card);color:var(--text)}
.action-focus.af-do{border-color:rgba(255,159,10,.45)}
.af-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.af-badge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;background:var(--chip-bg);color:var(--text)}
.af-do .af-badge{background:rgba(255,159,10,.14);color:var(--orange)}
.af-ok .af-badge{background:rgba(48,209,88,.14);color:var(--green)}
.af-title{font-size:15.5px;font-weight:700;flex:1;min-width:0}
.af-btn{font-size:13px;font-weight:700;color:#fff;background:var(--accent);border:none;border-radius:999px;padding:7px 14px;text-decoration:none;white-space:nowrap;box-shadow:none}
.af-btn:active{filter:brightness(.92);transform:scale(.97)}
.af-items{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.af-item{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--text);background:var(--hover-bg);border-radius:var(--radius-sm);padding:8px 11px}
.af-item:active{background:var(--chip-bg)}
.af-ic{font-size:15px}
.af-txt{flex:1;font-size:13px;min-width:0}
.af-go{font-size:12.5px;color:var(--accent);font-weight:600;white-space:nowrap}
.af-calm{margin-top:9px;font-size:13px;color:var(--green)}

/* ══════ v98.7：焦点卡累计缺口提示 / 导入存量开关 ══════ */
.af-note{margin-top:9px;font-size:12.5px;line-height:1.6;color:var(--orange);background:var(--hover-bg);border-radius:var(--radius-xs);padding:7px 10px}
.action-focus.af-do .af-note{color:var(--orange)}
.af-over{margin-top:9px;font-size:12.5px;line-height:1.6;color:var(--red);background:rgba(255,69,58,.08);border:1px solid rgba(255,69,58,.22);border-radius:var(--radius-xs);padding:7px 10px}
.chk-row{display:flex;align-items:flex-start;gap:8px;margin-top:9px;font-size:12.5px;color:var(--muted2,#8b949e);line-height:1.5;cursor:pointer}
.chk-row input{margin-top:2px;accent-color:var(--accent);flex:0 0 auto}
.chk-row b{color:var(--text);font-weight:700}
.sw-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}
.sw-label{font-size:13px;color:var(--text);line-height:1.4}

/* ══════ v98.21：术语「小白解释」浮层 + 首屏新手引导 ══════ */
/* 术语"?"按钮 */
.term-help{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-left:5px;font-size:12px;line-height:1;font-weight:700;color:var(--muted);background:var(--chip-bg);border:1px solid var(--chip-border);border-radius:50%;cursor:pointer;vertical-align:middle;padding:0;flex:0 0 auto;box-shadow:0 1px 2px rgba(0,0,0,.06);transition:transform .12s,background .12s,color .12s,border-color .12s}
@media (hover:hover) and (pointer:fine){
.term-help:hover{background:var(--bg);color:var(--text);border-color:var(--muted2)}
}
.term-help:active{transform:scale(.92)}
/* 底部弹层（通用 sheet） */
.sheet-mask{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;display:flex;align-items:flex-end;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s,visibility .18s}
#confirmSheet{z-index:280}   /* 确认弹窗必须浮在所有 sheet 之上（sheet 200 / assetPick 260 / ledgerTxns 265），否则被 DOM 靠后的弹窗覆盖 */
.sheet-mask.show{opacity:1;visibility:visible;pointer-events:auto}
.sheet-bottom{width:100%;max-width:560px;background:var(--bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-top:1px solid var(--border2);padding:16px 16px calc(18px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .22s ease;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;touch-action:pan-y}
.sheet-mask.show .sheet-bottom{transform:translateY(0)}
.sheet-head{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px;flex:0 0 auto;margin:-16px -16px 12px;padding:14px 16px 12px;background:var(--bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:1px solid var(--border2)}
.sheet-head span{font-size:15.5px;font-weight:700;color:var(--text)}
.sheet-x{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:none;background:var(--chip-bg);color:var(--muted);font-size:15px;cursor:pointer}
.sheet-x:active{background:var(--hover-bg)}
.sheet-body{font-size:13.5px;line-height:1.7;color:var(--text);flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
/* ── 美股渠道资讯面板 ── */
.news-sheet{padding:14px 14px calc(16px + env(safe-area-inset-bottom))}
.news-list{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}   /* v101.264 资讯列表可滚动：父容器 .sheet-bottom overflow:hidden，列表须自带滚动区（此前无定义 → 名单变长后被截断无法滑动） */
.news-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}
.news-head h3{font-size:17px;margin:0}
.news-upd{font-size:11px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums}
.news-close{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:none;background:var(--chip-bg);color:var(--muted);font-size:15px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.news-close:active{background:var(--hover-bg)}
.news-tip{display:flex;align-items:center;justify-content:center;gap:6px;margin:0 0 10px;padding:8px 12px;border-radius:999px;background:rgba(255,204,0,.14);border:1px solid rgba(255,204,0,.4);color:#a8840a;font-size:11.5px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-tip:active{background:rgba(255,204,0,.24)}
.news-sec{margin-top:14px}
.news-sec-t{font-size:13px;font-weight:700;margin-bottom:7px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.nsrc{font-size:10.5px;color:var(--muted);font-weight:500}
/* 资讯表格：table 布局保证表头与数据严格同列同宽（grid 方案中文表头+数字数据混排有字宽差，已弃用） */
.news-tbl{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.news-tbl th{color:var(--muted);font-size:10.5px;font-weight:600;text-align:left;padding:6px 5px;border-bottom:1px solid var(--border2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-tbl td{padding:7px 5px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--border2);font-weight:500}
.news-tbl tbody tr:nth-child(odd) td{background:var(--card2)}
.news-tbl.otc th:nth-child(1),.news-tbl.otc td:nth-child(1){width:14px}
.news-tbl.otc th:nth-child(3),.news-tbl.otc td:nth-child(3){width:80px}
.news-tbl.otc th:nth-child(4),.news-tbl.otc td:nth-child(4){width:60px}
.news-tbl.otc th:nth-child(5),.news-tbl.otc td:nth-child(5){width:58px}
.news-tbl.otc th:nth-child(6),.news-tbl.otc td:nth-child(6){width:96px}   /* v101.27 状态列加宽到 96px：限大额+金额可完整显示 */
.news-tbl.etf th:nth-child(1),.news-tbl.etf td:nth-child(1){width:14px}
.news-tbl.etf th:nth-child(3),.news-tbl.etf td:nth-child(3){width:54px}
.news-tbl.etf th:nth-child(4),.news-tbl.etf td:nth-child(4){width:64px}
.news-tbl .nb-c{padding:0 0 0 6px}
.news-tbl .nb{display:block;width:5px;height:16px;border-radius:2px;margin:0 auto}
.news-tbl .nb.good{background:#2ecc71}.news-tbl .nb.warn{background:#ff9f0a}.news-tbl .nb.bad{background:#ff453a}
.news-tbl .nm-c{min-width:0}
.news-tbl .nm{display:inline-flex;align-items:center;gap:5px;font-weight:600;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-tbl .nc{font-size:10px;color:var(--muted);font-weight:500;font-style:normal}
.news-tbl .nfn{display:block;font-size:9px;color:var(--muted2);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-tbl .fee{color:#2ecc71;font-weight:700}
.news-tbl .lim-c{line-height:1.35}
.news-tbl .lim-d{display:block;font-weight:600;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-tbl .lim-s{display:block;font-size:9.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news-tbl .prem{font-weight:800}
.news-tbl .prem.good{color:#2ecc71}.news-tbl .prem.warn{color:#ff9f0a}.news-tbl .prem.bad{color:#ff453a}
.news-tbl .st{font-size:10px;color:var(--muted);font-weight:600;white-space:nowrap}
.news-tbl .st .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#9aa0a6;margin-right:4px;vertical-align:middle}
.news-tbl .st.live{color:#2ecc71}.news-tbl .st.live .dot{background:#2ecc71}
.news-tbl .st.today{color:#ff9f0a}.news-tbl .st.today .dot{background:#ff9f0a}
.news-tbl .st.old{color:#ff453a}.news-tbl .st.old .dot{background:#ff453a}
.news-tbl .st.ad{color:#b8860b}.news-tbl .st.ad .dot{background:#ff9f0a}
.news-empty{padding:14px 8px;font-size:12px;color:var(--muted);text-align:center}
/* 设置页「数据参与说明」表 */
.part-tbl{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.part-tbl th{color:var(--muted);font-size:10.5px;font-weight:600;text-align:left;padding:6px 5px;border-bottom:1px solid var(--border2);white-space:nowrap}
.part-tbl td{padding:6px 5px;border-bottom:1px solid var(--border2);white-space:normal;word-break:break-word}
.part-tbl .yp{color:#2ecc71;font-weight:600}
.part-tbl .np{color:var(--muted2)}
/* 执行卡「?」展开里的数据来源统一说明 */
.ex-src{margin-top:8px;padding:7px 10px;border-radius:var(--radius-sm);background:var(--hover-bg);font-size:11px;line-height:1.6;color:var(--muted)}
.news-adv{display:flex;flex-direction:column;gap:6px;font-size:12.5px;line-height:1.55;color:var(--text)}
.news-adv p{margin:0}
.news-adv .act{font-weight:800;color:var(--accent)}
@media(max-width:860px){
  .news-tbl{font-size:11.5px}
  .news-tbl th{font-size:10px}
  .news-tbl.otc th:nth-child(3),.news-tbl.otc td:nth-child(3){width:66px}
  .news-tbl.otc th:nth-child(4),.news-tbl.otc td:nth-child(4){width:52px}
  .news-tbl.otc th:nth-child(5),.news-tbl.otc td:nth-child(5){width:48px}
  .news-tbl.otc th:nth-child(6),.news-tbl.otc td:nth-child(6){width:44px}
  .news-tbl.etf th:nth-child(3),.news-tbl.etf td:nth-child(3){width:50px}
  .news-tbl.etf th:nth-child(4),.news-tbl.etf td:nth-child(4){width:48px}
  .news-upd{font-size:10.5px}
  .nsrc{font-size:10px}
}
.sheet-body p{margin:0 0 4px}
.gl-block{margin-top:12px;background:var(--hover-bg);border-radius:var(--radius-sm);padding:10px 12px}
.gl-h{font-size:12px;font-weight:700;color:var(--accent);margin-bottom:4px}
.gl-why{color:var(--orange)}
.gl-auto{color:var(--green)}
/* 休投月份选择器弹窗 */
.pause-picker-body{display:flex;flex-direction:column;align-items:center;gap:14px;padding:8px 4px 12px}
/* 休投月已改为内联苹果滚轮 */
.pause-picker-btns{display:flex;gap:10px;width:100%}
.pause-picker-btns .btn{flex:1;min-height:46px;font-size:15px}
/* v98.46：通用确认弹窗（苹果风底部 sheet） */
.confirm-body{font-size:13.5px;line-height:1.7;color:var(--muted);margin-bottom:16px}
.confirm-actions{display:flex;gap:10px}
.confirm-actions .btn{flex:1;min-height:46px;font-size:15px}
/* 破坏性确认：仅用文字红色提示，外观仍保持中性 */
#confirmOk.danger{color:var(--red);border-color:rgba(255,69,58,.5)}
/* 通用确认弹窗（confirmModal）iOS 风格：居中图标+标题、正文、横排按钮 */
.cm-box{text-align:center;padding:26px 20px 18px}
.cm-box .cm-icon{font-size:40px;line-height:1;margin-bottom:12px}
.cm-box .modal-title{font-size:17px;font-weight:700;margin-bottom:8px;color:var(--text)}
.cm-box .modal-hint{font-size:14px;line-height:1.6;color:var(--muted);margin-bottom:22px;white-space:pre-line}
.cm-box .confirm-actions{display:flex;gap:10px}
.cm-box .confirm-actions .btn{flex:1;min-height:48px;font-size:16px;border-radius:14px}
@media (hover:hover) and (pointer:fine){
#confirmOk.danger:hover{background:rgba(255,69,58,.12)}
}
/* 首屏新手引导卡 */
.onboard-card{margin-bottom:14px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--card);color:var(--text);padding:14px 15px;animation:obIn .25s ease}
@keyframes obIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.ob-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:15px}
.ob-head b{color:var(--text)}
.ob-skip{flex:0 0 auto;background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;white-space:nowrap}
.ob-skip:active{color:var(--text)}
.ob-sub{margin-top:6px;font-size:12.5px;color:var(--muted);line-height:1.6}
.ob-steps{margin-top:12px;display:flex;flex-direction:column;gap:10px}
.ob-step{display:flex;align-items:center;gap:11px;background:transparent;border:1px solid var(--border2);border-radius:var(--radius-xs);padding:10px 12px}
.ob-num{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:var(--chip-bg);color:var(--muted);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ob-ic{flex:0 0 auto;font-size:18px;width:22px;text-align:center;filter:grayscale(.15);opacity:.85}
.ob-main{flex:1;min-width:0}
.ob-t{font-size:13.5px;font-weight:600;color:var(--text)}
.ob-d{font-size:12px;color:var(--muted);line-height:1.5;margin-top:2px}
.ob-btn{flex:0 0 auto;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--accent);background:none;border:none;padding:6px 4px;text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;gap:2px}
.ob-btn:active{color:var(--text)}

/* ═══ 浅色主题细节补强：卡片更有层次、不再灰白一片 ═══ */
[data-theme="light"] .card{background:var(--card);box-shadow:0 1px 2px rgba(17,24,39,.05),0 6px 18px rgba(17,24,39,.05)}
[data-theme="light"] .fold-card{background:var(--card);box-shadow:0 1px 2px rgba(17,24,39,.05),0 4px 12px rgba(17,24,39,.05)}
[data-theme="light"] .dash-overview .card{background:var(--card)}
[data-theme="light"] .dash-quad .quad-card{background:var(--card2)}
[data-theme="light"] .hc-asset{background:var(--card)}
[data-theme="light"] .hc-stat{background:var(--card2)}
[data-theme="light"] .dm-btn{background:var(--card2)}
[data-theme="light"] .dm-btn.danger{background:var(--card2);color:var(--text);border-color:var(--border2)}
[data-theme="light"] .ab-fold-head{background:var(--card2)}
[data-theme="light"] .action-focus{background:var(--card);color:var(--text);border-color:var(--border)}
[data-theme="light"] .action-focus.af-do{background:var(--card);border-color:rgba(255,149,0,.40)}
[data-theme="light"] .af-item{background:var(--hover-bg);color:var(--text)}
[data-theme="light"] .af-note{background:rgba(0,0,0,.04)}
[data-theme="light"] .acct-empty{background:var(--card);color:var(--text);border-color:var(--border)}
[data-theme="light"] .onboard-card{background:var(--card);color:var(--text);border-color:var(--border)}
[data-theme="light"] tbody tr:nth-child(even) td{background:rgba(0,0,0,.025)}
@media (hover:hover) and (pointer:fine){
[data-theme="light"] tr:hover td{background:rgba(0,122,255,.06)}
}
[data-theme="light"] .batch-row{background:var(--card);border-color:var(--border)}
[data-theme="light"] .bottomnav{background:var(--glass);box-shadow:0 -2px 12px rgba(0,0,0,.06)}

/* ═══ 移动端首页卡片紧凑化：减少单屏占用 ═══ */
@media(max-width:560px){
  .page-head h1{font-size:18px}
  .page-head .sub{font-size:12px}
  .onboard-card{padding:12px;margin-bottom:12px}
  .ob-head{font-size:14px}
  .ob-sub{font-size:12px;line-height:1.5}
  .ob-steps{gap:8px;margin-top:10px}
  .ob-step{padding:9px 10px;gap:9px}
  .ob-ic{font-size:17px;width:22px}
  .ob-t{font-size:13px}
  .ob-d{font-size:11px}
  .ob-btn{font-size:12px;padding:5px 8px}
  .acct-overview{padding:14px;margin-bottom:12px}
  .acct-total{font-size:26px;margin-bottom:8px}
  .acct-v{font-size:16px}
  .acct-k{font-size:11px}
  .acct-empty{padding:12px;font-size:13px;line-height:1.55}
  .grid.grid-2,.grid.grid-3{gap:8px}
  .grid-2 .stat,.grid-3 .stat{padding:10px 12px;border-radius:var(--radius-sm);background:var(--card2)}
  .grid-2 .stat .value,.grid-3 .stat .value{font-size:20px}
  .grid-2 .stat .label,.grid-3 .stat .label{font-size:10.5px;margin-bottom:5px}
  .grid-2 .stat .delta,.grid-3 .stat .delta{font-size:10px;margin-top:4px}
  .stat .value{font-size:22px}
  .stat .label{font-size:11px}
  .stat .delta{font-size:11px}
  .date-card{padding:11px 12px}
  .date-acts{gap:6px}
  .um-toggle{font-size:11px;padding:5px 9px}
  .action-focus{padding:12px;margin-bottom:12px}
  .af-title{font-size:14px}
  .af-btn{font-size:12px;padding:5px 10px}
  .af-item{padding:7px 9px}
  .af-txt{font-size:12px}
}

/* v98.72 新增：价值平均检查 / 再平衡卡 / 断供滑条 / 旧持仓导入 / 溢价警示 */
.va-window{font-size:12.5px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--chip-bg);border:1px solid var(--border2);margin-bottom:8px;line-height:1.5}
.va-window.in{border-color:var(--green);color:var(--green)}
.va-funds{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--muted);margin-bottom:12px;background:var(--chip-bg);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px}
.va-funds span{display:inline-flex;align-items:center;gap:5px;line-height:1.5}
.va-funds b{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}
.va-tbl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.va-tbl th,.va-tbl td{padding:8px 6px;border-bottom:1px solid var(--border2);font-size:12.5px;vertical-align:middle;white-space:nowrap}
.va-tbl th{color:var(--muted);font-weight:600;font-size:11px;text-align:left}
.va-tbl th.num,.va-tbl td.num{text-align:right}
.va-tbl .va-name{font-weight:600}
.va-tbl .va-tip{white-space:normal;min-width:150px;font-size:12px;color:var(--text)}
.va-tbl .va-tip .va-note{display:block;color:var(--muted2);font-size:11px;margin-top:2px}
.va-note-line{margin-top:8px;font-size:11px;color:var(--muted2);line-height:1.6}
/* 再平衡历史列表（记录本次再平衡按钮的下游展示） */
.rebal-hist{margin-top:12px;border-top:1px dashed var(--border2);padding-top:10px}
.rebal-hist-h{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted);font-weight:700;margin-bottom:6px}
.rebal-hist-tip{font-size:10.5px;font-weight:700;color:var(--accent);-webkit-tap-highlight-color:transparent}
.rebal-hist-item{border-bottom:1px solid var(--border)}
.rebal-hist-item:last-child{border-bottom:none}
.rebal-hist-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 2px;font-size:12.5px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.rebal-hist-item:first-child .rebal-hist-row{padding-top:4px}
.rebal-hist-item:active{background:var(--chip-bg);border-radius:8px}
.rebal-hist-row .rh-date{font-weight:600;color:var(--text)}
.rebal-hist-row .rh-caret{margin-left:auto;color:var(--muted);font-size:16px;transition:transform .2s;transform:rotate(0deg);flex-shrink:0}
.rebal-hist-row .rh-caret.rot{transform:rotate(90deg)}
.rh-detail{display:none;padding:2px 2px 10px}
.rebal-hist-item.open .rh-detail{display:block}
.rebal-hist-item.open .rh-caret{transform:rotate(90deg)}
.rebal-hist-item{cursor:pointer}
.rh-empty{color:var(--muted);font-size:12px;padding:2px 0}
.rh-detail-row{display:flex;align-items:center;gap:10px;padding:5px 4px;font-size:12.5px;border-top:1px dashed var(--border2)}
.rh-detail-row:first-child{border-top:none}
.rh-name{flex:1 1 auto;min-width:0;color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rh-dev{font-variant-numeric:tabular-nums;flex-shrink:0}
.rh-act{font-weight:700;white-space:nowrap;flex-shrink:0}
.va-actions{margin-top:14px;padding-top:14px;border-top:1px dashed var(--border2);display:flex;justify-content:stretch}
.va-set-link{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;font-size:13px;font-weight:600;color:var(--accent);border:1px solid var(--border2);background:var(--card2);padding:11px 14px;border-radius:var(--radius-sm);-webkit-tap-highlight-color:transparent;transition:background .15s,border-color .15s}
.va-set-link:active{background:var(--chip-bg);border-color:var(--accent);transform:scale(.99)}
/* 价值平均指令清单（底部弹窗）：每行 = 标的 + 方向 + 金额 + 原因 + 已执行按钮 */
.va-cmd-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.va-cmd{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--card2);border:1px solid var(--border);border-radius:var(--radius-sm)}
.va-cmd.done{opacity:.55;background:var(--chip-bg)}
.va-cmd.hold{background:var(--chip-bg);border-style:dashed;opacity:.75}
.va-cmd.hold .va-cmd-sub{color:var(--muted)}
.va-cmd-main{display:flex;align-items:center;gap:8px}
.va-cmd-name{font-size:14px;font-weight:700;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.va-cmd-act{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;flex:0 0 auto}
.va-cmd-act.buy{color:#fff;background:var(--accent)}
.va-cmd-act.sell{color:var(--orange);background:color-mix(in srgb,var(--orange) 14%,transparent);border:1px solid var(--orange)}
.va-cmd-amt{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;flex:0 0 auto}
.va-cmd-amt{color:var(--text)}
.va-cmd-sub{font-size:12px;color:var(--muted);line-height:1.5}
.va-cmd-sub .va-note{color:var(--muted2);font-size:11px}
.va-cmd .va-do-btn{align-self:flex-end;margin-top:6px}
.va-cmd-acts{display:flex;gap:8px;align-self:flex-end;margin-top:6px}
.va-cmd-acts .va-do-btn{align-self:auto;margin-top:0}
.va-cmd-acts .va-skip-btn{background:transparent;border:1px solid var(--border2);color:var(--muted);font-size:12px;padding:6px 10px;border-radius:8px;cursor:pointer}
.va-cmd-acts .va-skip-btn:active{background:var(--border2)}
.va-cmd.skip{opacity:.6}
.va-skip-tip{color:var(--muted);font-weight:600;font-size:12.5px}
.va-done-tip{color:var(--green);font-weight:700;font-size:12.5px}
.va-detail{margin-top:14px;border-top:1px dashed var(--border2);padding-top:12px}
.va-detail .va-toggle{display:flex;align-items:center;gap:6px;width:100%;background:none;border:0;padding:0;font-size:13px;font-weight:600;color:var(--accent);cursor:pointer;text-align:left}
.va-detail .va-toggle .va-toggle-caret{font-size:12px;margin-left:auto;color:var(--muted2)}
.va-confirm{display:flex;flex-direction:column;gap:0}
.va-confirm .vc-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--border2);font-size:13.5px}
.va-confirm .vc-row:last-child{border-bottom:none}
.va-confirm .vc-row span{color:var(--muted)}
.va-confirm .vc-row b{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
#sec-rebal .row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 0;font-size:13px}
#sec-rebal .row strong{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.ss-mkt{margin:10px 0 4px;padding:10px 12px;background:var(--chip-bg);border:1px solid var(--border2);border-radius:var(--radius-sm)}
.ss-mkt-head{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--muted)}
.ss-mkt-head b{font-size:15px;color:var(--text);font-variant-numeric:tabular-nums}
.ss-range{width:100%;margin:10px 0 2px;accent-color:var(--accent);height:28px}
.ss-range-scale{display:flex;justify-content:space-between;font-size:10px;color:var(--muted2)}
.ss-row.ss-total{border-bottom:none;border-top:1px solid var(--border2);padding-top:8px;margin-top:2px}
.ss-row.ss-total b{font-size:15px}
.legacy-grid{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.va-panel-section{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:13px;margin-bottom:8px}
.va-panel-section b{font-size:13.5px}
.va-panel-section .tiny{color:var(--muted)}
/* v98.83：提醒行（iOS 开关列表） */
.rem-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--border2)}
.rem-row:last-child{border-bottom:none}
.rem-info{min-width:0;font-size:13px}
.rem-info b{display:inline-block}
.rem-tag{font-size:10.5px;color:var(--muted);margin-left:6px}
.rem-desc{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.5}
/* v98.83：顶部日期卡滚动渐隐 */
/* 顶部栏实色吸顶由 .page-head{position:sticky;background:var(--bg)} 实现，不再做滚动淡出 */
/* v98.84：价值平均子模块一行式（左标的·右输入框） */
.va-block{border:1px solid var(--border2);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg2)}
.va-block-head{display:flex;align-items:center;gap:8px;padding:8px 11px;cursor:pointer;font-size:13.5px;font-weight:700;flex-wrap:wrap;-webkit-tap-highlight-color:transparent}
.va-block-head:active{background:var(--chip-bg)}
.va-block-caret{transition:transform .2s;color:var(--muted);margin-left:auto}
.va-block.open .va-block-caret{transform:rotate(90deg)}
.va-block-prog{font-size:11px;font-weight:600;color:var(--muted)}
.va-block-body{padding:2px 11px 10px}
.va-prog{height:4px;background:var(--bg);border-radius:999px;overflow:hidden;flex:0 0 100%;margin-top:2px}
.va-prog i{display:block;height:100%;background:var(--green);border-radius:999px}
.va-cell-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:9px 11px}
.va-cell-name{flex:1 1 auto;min-width:0;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.va-cell-side{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.va-cell-st{flex:0 0 52px;text-align:right;font-size:11px;font-weight:600;color:var(--muted);line-height:1.2}
.va-cell-st.ok{color:var(--green)}
.va-cell-in{flex:0 0 118px;width:118px;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);color:var(--text);padding:6px 8px;font-size:14px;text-align:right}
.va-cell-row .er-check{flex:0 0 100%;text-align:right;margin-top:1px;width:100%}
/* v98.83：数据健康检查「忽略提醒」 */
.hc-ignore{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:1px solid var(--border2);background:transparent;color:var(--muted);font-size:13px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-left:6px}
.hc-ignore:active{background:var(--chip-bg)}
.hc-asset.ignored{opacity:.45}
.hc-ignored-tag{font-size:11px;color:var(--muted);margin-left:6px;font-weight:600}
/* v98.83：可关闭提醒条（溢价/价值平均引导） */
.dismiss-x{flex:0 0 auto;background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;padding:4px 6px;text-decoration:underline;text-underline-offset:3px}
/* v98.89：「我的目标」内嵌压力测试折叠块 */
.goal-sim-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:6px 0}
.goal-sim-head:active{opacity:.7}
.goal-sim-head b{font-size:13.5px;flex:1 1 auto;min-width:0}
.goal-sim-hint{font-size:11.5px;color:var(--muted);flex:1 1 100%;margin-top:2px}
.goal-sim-head .caret{flex:0 0 auto;color:var(--muted);transition:transform .2s}
.goal-sim-body .stop-sim{border:none;box-shadow:none;background:transparent;padding:0;margin:0}
.goal-sim-body .stop-sim .ss-head{padding-top:0}
.legacy-row{display:flex;align-items:center;gap:10px;background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:9px 11px}
.legacy-name{flex:1 1 auto;min-width:0;font-size:13px;font-weight:700;display:flex;flex-direction:column;gap:1px}
.legacy-hint{font-size:10.5px;font-weight:500;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.legacy-in{flex:0 0 118px;width:118px;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);color:var(--text);padding:9px 10px;font-size:16px;text-align:right}
/* 价值平均「上月末市值 / 月增长目标」行：与旧持仓导入完全一致；移动端继承 legacy 堆叠全宽，不超出屏幕 */
.va-grid{display:flex;flex-direction:column;gap:6px;margin:4px 0 0}
.va-item{display:flex;flex-direction:column;gap:3px}
.legacy-hint.ok{color:#30d158;font-weight:600}
.va-check-msg{font-size:10.5px;line-height:1.35;color:var(--muted);white-space:normal;word-break:break-word;padding:0 2px}
/* v99.01：高级参数「标的修改 / 场内替代」卡统一为旧持仓导入风格（圆角卡片） */
.ov-card{border:1px solid var(--border2);border-radius:var(--radius-sm);padding:11px;margin-top:10px;background:var(--card2)}
.ov-card .ov-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ov-card .ov-code{color:var(--muted);font-size:11.5px}
.ov-card .ov-plat{font-size:10.5px;color:var(--muted2);background:var(--card);border:1px solid var(--border2);border-radius:999px;padding:1px 7px}
/* v99.01：高级参数小型数字 / 文本输入（PE 系数表、回撤加码表）统一圆角风格 */
.mini-in{box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius-xs);color:var(--text);padding:7px 8px;font-size:14px;min-height:38px;text-align:right}
.mini-in.txt{text-align:left}
@media (max-width:560px){
  .asset-card .ac-grid{grid-template-columns:1fr 1fr}
  .asset-card .ac-g-dev{grid-column:1/-1}
  /* v98.79：pos-tbl 移除去卡片化，移动端保持紧凑表格（一行一个资产，横向可滚） */
  .pos-tbl{min-width:0}
  .va-tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .legacy-row{flex-wrap:wrap}
  .legacy-in{flex:1 1 100%;width:100%;text-align:left}
}

/* v98.73 设置页年化收益联动校验提示 */
.er-check{display:block;font-size:11px;line-height:1.5;margin-top:4px;color:var(--muted)}
.er-check.ok{color:var(--green)}
.er-check.warn{color:var(--orange)}

/* v98.74 UX：执行手册模态框 / ⓘ解释 / 缺失引导 / 已执行反馈 / 新手模式 */
/* 首页「执行手册」按钮与模态框 */
.guide-btn{flex:0 0 auto;align-self:flex-start;margin-left:12px}
/* v98.80：设置页底部「执行手册」灰色文字链接 */
.guide-link{background:none;border:none;padding:10px 14px;color:var(--muted);font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;-webkit-tap-highlight-color:transparent}
.guide-link:hover{color:var(--accent)}
.guide-sheet{padding-top:0}
.guide-sheet .sheet-head{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;flex:0 0 auto;margin:0 -16px 14px;padding:14px 16px;background:var(--bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:1px solid var(--border2);font-size:16px;font-weight:700}
.guide-sheet .sheet-head .gh-title{position:absolute;left:16px;right:56px;text-align:center;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.guide-sheet .sheet-head .gh-btn{flex:0 0 auto;width:32px;height:32px;border-radius:50%;border:1px solid var(--border2);background:var(--card2);color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1;transition:background .15s}
.guide-sheet .sheet-head .gh-btn:active{background:var(--hover-bg)}
.guide-card{background:var(--card2);border:1px solid var(--border2);border-radius:var(--radius);padding:12px 14px;margin-bottom:10px;content-visibility:auto;contain-intrinsic-size:auto 220px}
.guide-t{font-size:14px;font-weight:700;margin-bottom:6px}
.guide-d{font-size:13px;line-height:1.65;color:var(--text)}
.guide-d b{color:var(--accent)}
.guide-allocs{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}
.guide-alloc{display:flex;align-items:center;gap:5px;font-size:12px;background:var(--chip-bg);border:1px solid var(--border2);border-radius:999px;padding:3px 10px}
.guide-alloc b{font-variant-numeric:tabular-nums;color:var(--accent)}
.guide-foot{margin-top:4px;font-size:11.5px;color:var(--muted2);line-height:1.5}
/* 价值平均：缺失数据引导条 */
.va-missing{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:color-mix(in srgb,var(--orange) 12%,transparent);border:1px solid var(--orange);color:var(--text);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:8px;font-size:12.5px;line-height:1.5}
.va-missing .btn{flex:0 0 auto}
/* 价值平均：已执行反馈 */
.va-do-btn{margin-left:8px;padding:4px 10px;font-size:11.5px}
.va-tbl tr.va-done td{opacity:.55;text-decoration:line-through}
.va-done-tip{color:var(--green);font-weight:700}
/* 执行确认弹窗摘要 */
.va-confirm{display:flex;flex-direction:column;gap:7px;font-size:13px}
.vc-row{display:flex;justify-content:space-between;gap:14px;align-items:center}
.vc-row span{color:var(--muted);flex-shrink:0}
.vc-row b{font-variant-numeric:tabular-nums}
/* 新手模式：关闭时隐藏解释性文字与 ⓘ */
body[data-help="off"] .hint,body[data-help="off"] .fold-hint,body[data-help="off"] .field-hint,body[data-help="off"] .fold-guide,body[data-help="off"] .term-help,body[data-help="off"] .va-note-line,body[data-help="off"] .onboard-card,body[data-help="off"] .guide-btn{display:none !important}
body[data-help="off"] .va-funds .va-note{display:none}
/* 新手模式 ⓘ 估值口径悬浮（熟练模式隐藏） */
.val-i{cursor:pointer;color:var(--muted2);font-size:10.5px;margin-left:3px;vertical-align:1px;font-style:normal}
body[data-help="off"] .val-i{display:none}
.val-pop{position:fixed;z-index:999;max-width:272px;padding:10px 12px;border-radius:10px;background:var(--card);border:1px solid var(--border2);box-shadow:var(--shadow);font-size:12px;line-height:1.65;color:var(--text)}
/* v7 回撤加码固定规则说明 */
.dd-v7 .row{display:flex;gap:8px;align-items:flex-start;margin-top:7px;font-size:12.5px}
.dd-v7 .row>span{flex:0 0 64px;color:var(--muted2);font-size:12px}

.pos-tbl td:first-child{max-width:150px;overflow:hidden;text-overflow:ellipsis}

.dash-todo .todo-items.can-scroll::after{content:"";position:absolute;right:0;top:0;bottom:0;width:26px;background:linear-gradient(to right, transparent, var(--card));pointer-events:none}

/* ══ v99.18：暂停 / 修改 / 恢复 买入（执行页） ══ */
.exec-card.paused{opacity:.55;filter:grayscale(.5);border-left-color:var(--muted2);border-style:dashed}
.exec-card.paused .exec-head strong{color:var(--muted)}
.exec-card .done-tag.paused{grid-column:2;justify-self:end;align-self:start;display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border:1px solid var(--border2);border-radius:999px;background:var(--card2);color:var(--muted);font-size:11.5px;font-weight:700;white-space:nowrap;cursor:default}
.exec-card .exec-actions{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.mini-btn{appearance:none;font-family:inherit;font-size:12.5px;font-weight:600;padding:7px 13px;border-radius:9px;border:1px solid var(--border2);background:var(--card2);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent}
.mini-btn:active{transform:scale(.97)}
.mini-btn.resume{background:rgba(48,209,88,.14);border-color:rgba(48,209,88,.5);color:var(--green)}
/* 定投打卡区（仅日投 QDII：018738/021000）：纵向堆叠，避免横向拥挤重叠 */
.exec-checkin{display:flex;flex-direction:column;align-items:stretch;gap:10px;margin-top:11px;padding:12px 12px 12px;border:1px solid var(--border2);border-radius:11px;background:linear-gradient(180deg,rgba(88,166,255,.08),rgba(88,166,255,.02))}
.exec-checkin .ck-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.exec-checkin .ck-left{display:flex;align-items:baseline;gap:8px;min-width:0}
.exec-checkin .ck-label{font-size:12px;color:var(--muted);white-space:nowrap}
.exec-checkin .ck-amt{font-size:18px;font-weight:800;color:var(--text);letter-spacing:-.2px}
.exec-checkin .ck-state{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.exec-checkin .ck-state.todo{color:var(--blue);background:rgba(88,166,255,.16)}
.exec-checkin .ck-state.done{color:var(--green);background:rgba(48,209,88,.16)}
.exec-checkin .ck-state.paused{color:var(--muted);background:rgba(139,148,158,.18)}
.exec-checkin .ck-edit{margin-top:2px}
.exec-checkin .ck-edit label{display:flex;flex-direction:column;gap:5px}
.exec-checkin .ck-edit-label{font-size:12px;color:var(--muted);font-weight:600}
.exec-checkin .ck-edit input{width:100%;box-sizing:border-box;padding:10px 11px;border:1px solid var(--border2);border-radius:var(--radius-sm);background:var(--bg2);color:var(--text);font-size:16px;font-weight:700}
.exec-checkin .ck-edit input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(10,132,255,.12)}
.exec-checkin .ck-btn{align-self:flex-start;margin-top:0}
.exec-checkin .ck-btn:disabled{opacity:.55;cursor:default;background:rgba(48,209,88,.14);border-color:rgba(48,209,88,.45);color:var(--green)}
.exec-card .es-paused{margin-top:2px}
.exec-card .es-paused .es-main{display:flex;flex-direction:column;gap:2px}
.exec-card .es-paused .es-k{font-size:11px;color:var(--muted)}
.exec-card .es-paused .es-val{font-size:15px;font-weight:700}
.exec-card .es-paused .es-val.paused{color:var(--orange)}
.exec-card .es-paused .es-month{font-size:11px;color:var(--muted)}

/* 暂停 / 修改 底部 sheet 内表单 */
.btn.ghost{background:transparent;border-color:var(--border2);color:var(--muted)}
.btn.ghost:active{background:var(--card2)}
.sheet-tip{font-size:12.5px;color:var(--muted);line-height:1.6;margin:0 0 12px}
.sheet-tip b{color:var(--text)}
.opt-group{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.opt-btn{appearance:none;font-family:inherit;text-align:left;font-size:13.5px;font-weight:600;padding:11px 13px;border-radius:11px;border:1px solid var(--border2);background:var(--card2);color:var(--text);cursor:pointer}
.opt-btn.selected{border-color:var(--accent);background:rgba(10,132,255,.10);color:var(--accent)}
.opt-btn:active{transform:scale(.98)}

/* 仪表盘：本月执行偏差卡 / 月度小结 */
.dev-card .row,.monthly-summary p{margin:2px 0}
.monthly-summary p{font-size:13.5px;line-height:1.6;color:var(--text)}
/* A. 首页「本月执行」下拉框（默认收起，点击展开） */
.dev-fold{margin-top:8px;border:1px solid var(--border2);border-radius:var(--radius-xs);overflow:hidden;background:var(--card2)}
.dev-fold-head{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 12px;background:none;border:none;font-size:13.5px;font-weight:600;color:var(--text);cursor:pointer}
.dev-fold-head:active{background:var(--card)}
.dev-fold-caret{color:var(--muted);font-size:12px}
.dev-fold-body{padding:0 12px 12px}
.dev-fold-body .bar{margin:8px 0}
.dev-summary{margin-top:8px;padding-top:8px;border-top:1px solid var(--border2);font-size:12.5px;line-height:1.6;color:var(--muted)}
.dev-actions{margin-top:10px;display:flex}
/* 本月执行 → 跳转执行日历按钮：苹果风蓝底全宽，突出可点 */
.dev-cal-btn{width:100%;justify-content:center;padding:12px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;-webkit-tap-highlight-color:transparent}
.dev-cal-btn:active{opacity:.9;transform:scale(.99)}

/* ══ 记录页：执行日历 ══ */
.exec-cal{margin-top:2px}
.cal-grid{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}
.cal-cell{flex:0 0 auto;width:48px;display:flex;flex-direction:column;align-items:center;gap:4px;padding:7px 0;border:1px solid var(--border2);border-radius:11px;background:var(--card2);cursor:pointer;-webkit-tap-highlight-color:transparent}
.cal-cell.sel{border-color:var(--accent);box-shadow:0 0 0 2px rgba(10,132,255,.25)}
.cal-ym{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.cal-bar{width:22px;height:34px;background:var(--bg);border-radius:5px;display:flex;align-items:flex-end;overflow:hidden}
.cal-bar i{display:block;width:100%;border-radius:5px}
.cal-cell.good .cal-bar i{background:linear-gradient(0deg,#30d158,#28cd41)}
.cal-cell.mid .cal-bar i{background:linear-gradient(0deg,#ffd60a,#ff9f0a)}
.cal-cell.low .cal-bar i{background:linear-gradient(0deg,#ff453a,#d70015)}
.cal-cell.none .cal-bar i{background:var(--muted2)}
.cal-pct{font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.cal-cell.none .cal-pct{color:var(--muted2)}
.cal-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:11.5px;color:var(--muted)}
.cal-legend .lg{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}
.cal-legend .lg.good{background:#30d158}.cal-legend .lg.mid{background:#ff9f0a}.cal-legend .lg.low{background:#ff453a}.cal-legend .lg.none{background:var(--muted2)}
.cal-detail{margin-top:10px;padding:10px 12px;background:var(--card2);border-radius:10px;font-size:13px}
.cal-detail .hint{color:var(--muted);font-size:12.5px}
.cal-detail-h{font-weight:700;margin-bottom:6px}

/* 估值系数分档编辑器（计划页高级参数） */
.vb{border:1px solid var(--border2);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:10px;background:var(--card2)}
.vb-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:600;margin-bottom:4px;flex-wrap:wrap}
.vb-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px}
.vb-row .mini-in{width:64px}

/* 打卡卡片：确认份额入口 */
.ck-fix{margin-top:6px;font-size:11px;line-height:1.5;color:var(--muted2)}
.ck-fix a{color:var(--accent);text-decoration:none;display:block}
.ck-fix a:active{opacity:.7}

/* 持仓代码明细卡 */
.cs-asset{margin-bottom:10px}
.cs-asset:last-child{margin-bottom:0}
.cs-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:13px;margin-bottom:6px}
.cs-head .tiny{margin-left:auto}
.cs-tbl th,.cs-tbl td{font-size:12px}
.cs-conf{color:var(--green);font-size:10px;font-weight:600;margin-left:3px}
.cs-pend{color:var(--orange);font-size:10px;font-weight:600;margin-left:3px}
/* v100.94 卖出已实现盈亏标签（记录列表 / 历史购买弹窗） */
.cs-pnl{font-size:10px;font-weight:700;margin-left:4px;padding:1px 5px;border-radius:999px;background:var(--chip-bg)}
.cs-pnl.up{color:var(--red,#e5484d)}
.cs-pnl.down{color:var(--green,#30a46c)}
.txn-pnl{display:inline-block;font-style:normal;font-size:9.5px;font-weight:700;margin-left:4px;padding:1px 5px;border-radius:999px;background:var(--chip-bg)}
.txn-pnl.up{color:var(--red,#e5484d)}
.txn-pnl.down{color:var(--green,#30a46c)}

/* ══════ 日投卡片：持续定投扣款开关 + 内嵌月历 + 记账（v99.83） ══════ */
.exec-daily{margin-top:11px;padding:12px;border:1px solid var(--border2);border-radius:12px;background:var(--card2)}
.dly-switch-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ios-switch{position:relative;display:inline-flex;width:50px;height:30px;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ios-switch input{position:absolute;opacity:0;width:0;height:0}
.ios-slider{position:absolute;inset:0;border-radius:999px;background:var(--border2);transition:background .2s}
.ios-slider::before{content:'';position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}
.ios-switch input:checked + .ios-slider{background:#34c759}
.ios-switch input:checked + .ios-slider::before{transform:translateX(20px)}
.ios-switch:active .ios-slider::before{width:28px}
.dly-switch-txt{font-size:13px;font-weight:600;color:var(--text);min-width:0;flex:1}
.dly-amt-btn{flex-shrink:0}
.dly-rec-line{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border2)}
.dly-clear-line{margin-top:6px;display:flex;justify-content:flex-end}
.dly-clear-line .btn{padding:5px 12px;font-size:11.5px}
/* 月历 */
.dc-wrap{user-select:none}
.dc-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.dc-nav{appearance:none;font-family:inherit;width:24px;height:24px;border-radius:8px;border:1px solid var(--border2);background:var(--bg2);color:var(--text);font-size:15px;font-weight:700;line-height:1;cursor:pointer;flex-shrink:0;padding:0;-webkit-tap-highlight-color:transparent}
.dc-nav:active{background:var(--chip-bg)}
.dc-ym{font-size:12.5px;font-weight:700;color:var(--text)}
.dc-market{font-size:10.5px;color:var(--muted);background:var(--bg2);padding:2px 8px;border-radius:999px;margin-left:auto}
.dc-market{font-size:10.5px;color:var(--muted);background:var(--bg2);padding:2px 8px;border-radius:999px}
.dc-wds{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:3px}
.dc-wd{text-align:center;font-size:10px;color:var(--muted2)}
.dc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.dc-cell{position:relative;min-height:44px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:4px 2px;gap:2px;overflow:hidden}
.dc-off{visibility:hidden}
.dc-hol{background:var(--bg2);opacity:.55}
.dc-hol .dc-day{color:var(--muted2)}
.dc-hol-txt{font-size:9px;color:var(--muted2);margin-top:6px}
.dc-td{background:var(--bg);border:1px solid var(--border2)}
.dc-click{cursor:pointer;transition:transform .1s,box-shadow .1s}
.dc-click:active{transform:scale(.96);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.dc-today{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent) inset}
.dc-today .dc-day{color:var(--accent);font-weight:800}
.dc-rec .dc-amt{color:var(--orange)}
.dc-rec .dc-dot{position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background:var(--orange)}
.dc-day{font-size:12px;font-weight:600;color:var(--text);line-height:1.1}
.dc-amt{font-size:9.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.dc-foot{margin-top:6px;font-size:10px;color:var(--muted2);text-align:center}
/* v100.79 记账弹窗（养基宝式记录卡片） */
/* v100.81 记账弹窗改共享底部 sheet：dl-body 占满 sheet-body（单层滚动：仅 dl-rows 内部滚，无嵌套滚动） */
.dl-body{height:100%;display:flex;flex-direction:column;min-height:0}
.dl-status{font-size:11.5px;color:var(--muted);padding:0 16px 2px;line-height:1.6}
.dl-head{padding:14px 16px 10px;border-bottom:1px solid var(--border2)}
.dl-rows{display:flex;flex-direction:column;gap:9px;padding:12px 16px;overflow-y:auto;flex:1 1 auto;min-height:60px;-webkit-overflow-scrolling:touch}
.dl-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;position:relative}
/* v101.11 我已持有：成本倒推预览 */
.ip-recap{font-size:12.5px;line-height:1.7}
.ip-recap b{font-weight:700;font-variant-numeric:tabular-nums}
.ip-recap .ip-cost{margin-top:3px;color:var(--muted);font-size:11.5px}
.ip-recap .ip-cost b{color:var(--text)}
.dl-card-head{display:flex;align-items:center;gap:6px}
.dl-card-head .dl-code{flex:1;min-width:0;background:transparent;border:1px solid var(--border2);border-radius:7px;padding:6px 8px;font-size:13px;font-weight:600;color:var(--text);min-height:30px}
.dl-card-head .dl-code:focus{outline:none;border-color:var(--accent)}
.dl-card-name{font-size:12px;color:var(--muted);background:var(--bg2);border:1px solid var(--border2);border-radius:999px;padding:2px 8px;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.dl-card-del{width:24px;height:24px;border-radius:50%;border:1px solid var(--border2);background:var(--bg2);color:var(--muted);font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;line-height:1}
.dl-card-del:active{transform:scale(.9);background:var(--chip-bg)}
.dl-card-meta{font-size:10.5px;color:var(--muted2);display:flex;justify-content:space-between;min-height:12px;line-height:1}
.dl-card-fields{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.dl-fld{display:flex;flex-direction:column;gap:3px;min-width:0}
.dl-fld span{font-size:10px;color:var(--muted);font-weight:500;letter-spacing:.02em}
.dl-fld input{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:8px;color:var(--text);padding:7px 8px;font-size:15px;font-weight:600;min-height:36px;text-align:right;font-variant-numeric:tabular-nums}
.dl-fld input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(10,132,255,.15)}
.dl-fld input::placeholder{color:var(--muted2);font-weight:400}
.dl-card-preview{font-size:11px;color:var(--muted);padding:5px 8px;background:var(--bg2);border-radius:7px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 10px;line-height:1.5}
.dl-card-preview b{color:var(--text);font-weight:700}
.dl-bottom{border-top:1px solid var(--border2);padding:10px 16px 14px;background:var(--card);border-radius:0 0 12px 12px}
.dl-bottom-sum{font-size:13px;color:var(--muted);text-align:right}
.dl-bottom-sum b{color:var(--text);font-size:16px;font-weight:700}
.dl-bottom-preview{font-size:11.5px;color:var(--muted);margin-top:4px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 10px}
.dl-bottom-preview b{color:var(--text);font-weight:600}
.dl-btns{display:flex;gap:8px;margin-top:10px}
/* v101.24 当天记录弹窗改表格行风格（资金到位明细样式）：
 * 表头 + 数据行（代码+名称两行 / 金额 / 份额 / 盈亏 / 操作），扣款与手动记录同列表，每行可直接改 / ✕ 删单条 */
.dl-grid{border:1px solid var(--border2);border-radius:10px;margin:8px 0 0;overflow-y:auto;background:var(--card);flex:1 1 auto;min-height:60px;-webkit-overflow-scrolling:touch}
.dl-grid-head{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:minmax(0,1.3fr) 0.95fr 0.95fr 1.05fr 32px;gap:6px;align-items:center;padding:8px 10px;font-size:10.5px;color:var(--muted2);background:var(--bg2);border-bottom:1px solid var(--border2);padding-top:7px;padding-bottom:7px;width:100%;box-sizing:border-box}
.dl-grid-row{display:grid;grid-template-columns:minmax(0,1.3fr) 0.95fr 0.95fr 1.05fr 32px;gap:6px;align-items:center;padding:7px 10px;border-bottom:1px solid var(--border2);font-size:13px;width:100%;box-sizing:border-box}
.dl-grid-row:last-child{border-bottom:none}
.dlg-code-w{display:flex;flex-direction:column;gap:1px;min-width:0;line-height:1.15}
.dlg-code-line{display:flex;align-items:center;min-width:0}
.dlg-code-line .dlg-code{flex:1;min-width:0;box-sizing:border-box;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text);font-size:13px;font-weight:600;padding:4px 5px;min-height:30px;width:100%}
.dlg-code-line .dlg-code:focus{outline:none;border-color:var(--accent);background:var(--bg)}
.dlg-name{font-size:10.5px;color:var(--muted2);padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-grid-row .dlg-tag{font-size:9px;color:var(--accent);background:var(--chip-bg);border-radius:4px;padding:1px 4px;margin-left:4px;vertical-align:1px;flex-shrink:0;white-space:nowrap}
.dl-grid-row .dlg-num{width:100%;box-sizing:border-box;background:var(--bg);border:1px solid var(--border2);border-radius:6px;color:var(--text);font-size:14px;font-weight:600;padding:5px 6px;min-height:30px;text-align:right;font-variant-numeric:tabular-nums}
.dl-grid-row .dlg-num:focus{outline:none;border-color:var(--accent)}
.dl-grid-row .dlg-del{width:26px;height:26px;border-radius:50%;border:1px solid var(--border2);background:var(--bg2);color:var(--muted);font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;line-height:1;justify-self:end}
.dl-grid-row .dlg-del:active{transform:scale(.9);background:var(--chip-bg);color:var(--red)}
.dl-btns .btn{flex:1;min-height:36px}
@media(max-width:480px){
  .dl-fld input{font-size:14px;padding:6px 6px}
  .dl-card-fields{gap:6px}
}
@media(max-width:390px){
  .dc-cell{min-height:40px}
  .dc-amt{font-size:9px}
}

/* ══════ 日投卡片精细改造（v99.85） ══════ */
/* 定投方式 tag（可点击菜单） */
.cad-tag{font-size:12px;font-weight:700;color:var(--text);background:var(--bg2);border:1px solid var(--border2);border-radius:999px;padding:3px 11px;cursor:pointer;flex-shrink:0;line-height:1.5;white-space:nowrap;font-variant-numeric:tabular-nums}
.cad-tag:active{transform:scale(.95)}
/* 右上角小开关 + 次日扣款额（待买入按钮位置） */
.dly-mini{display:flex;align-items:center;gap:6px;justify-content:flex-end;flex-shrink:0}
.ios-switch.sm{width:40px;height:24px}
.ios-switch.sm .ios-slider::before{width:18px;height:18px;left:3px;top:3px}
.ios-switch.sm input:checked + .ios-slider::before{transform:translateX(16px)}
.dly-amt-mini{min-height:26px;font-size:11px;padding:0 8px;border-radius:999px;background:transparent;border:1px solid var(--border2);color:var(--muted)}
.dly-amt-mini:active{background:var(--chip-bg)}
/* 日投：紧凑进度（与日历合并） */
.dly-prog{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.dly-prog-t{font-size:11.5px;color:var(--muted);white-space:nowrap;flex-shrink:0}
.dly-prog-t b{color:var(--text)}
.dly-pct.ok{color:var(--green)}.dly-pct.warn{color:var(--orange)}.dly-pct.low{color:var(--red)}
.dly-prog-track{flex:1;height:8px;border-radius:999px;background:var(--bg2);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
.dly-prog-fill{height:100%;border-radius:999px;transition:width .35s;background:linear-gradient(90deg,var(--accent),#5ac8fa);box-shadow:0 0 10px rgba(10,132,255,.3)}
.dly-prog-fill.ok{background:linear-gradient(90deg,#34c759,#30d158);box-shadow:0 0 10px rgba(52,199,89,.3)}
.dly-prog-fill.warn{background:linear-gradient(90deg,var(--accent),#5ac8fa)}
.dly-prog-fill.low{background:linear-gradient(90deg,var(--accent),#5ac8fa)}
/* 日历三态：预计（灰底）/ 自动扣款（蓝）/ 已录入实际（橙）；v100.82 无定投计划时扣款日只高亮（dc-hl，无金额） */
.dc-plan{background:var(--bg2);border:1px dashed var(--border2)}
.dc-plan .dc-amt{color:var(--muted2)}
.dc-hl{background:var(--chip-bg);border:1px solid var(--border2)}
.dc-hl .dc-day{color:var(--text);font-weight:600}
.dc-auto{background:rgba(10,132,255,.08);border:1px solid rgba(10,132,255,.35)}
.dc-auto .dc-amt{color:var(--accent);font-weight:600}
.dc-auto .dc-dot{background:var(--accent)}
.dc-rec{background:rgba(255,159,10,.1);border:1px solid rgba(255,159,10,.45)}
.dc-rec .dc-amt{color:var(--orange);font-weight:600}
.dc-rec .dc-dot{background:var(--orange)}
.dc-today{box-shadow:0 0 0 1.5px var(--accent) inset}
/* 定投方式弹出菜单 */
.cad-menu{position:absolute;top:36px;right:12px;z-index:120;min-width:132px;background:var(--card);border:1px solid var(--border2);border-radius:12px;box-shadow:0 6px 24px rgba(0,0,0,.14);overflow:hidden;padding:4px}
.cad-menu-item{padding:10px 14px;font-size:13px;color:var(--text);cursor:pointer;border-radius:8px;display:flex;align-items:center;gap:8px}
.cad-menu-item:active{background:var(--chip-bg)}

/* 溢价 ⓘ 详情入口（v99.86：替代大横幅提醒） */
.prem-info{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--bg2);border:1px solid var(--border2);color:var(--muted);font-size:10px;line-height:1;margin-left:3px;padding:0;vertical-align:middle;cursor:pointer}
.prem-info:active{transform:scale(.92);background:var(--chip-bg)}

/* ══════ 本月定投整合面板（v99.87：月目标+进度条+日历 一体，日历可折叠） ══════ */
.exec-daily{padding:0;overflow:hidden}
.dly-head{display:block;width:100%;background:transparent;border:none;padding:11px 12px;cursor:pointer;-webkit-tap-highlight-color:transparent;text-align:left}
.dly-head:active{background:var(--bg2)}
.dly-head-main{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.dly-head-t{font-size:12.5px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dly-head-t b{color:var(--text);font-weight:700}
.dly-head-pct{font-size:13px;font-weight:800;flex-shrink:0}
.dly-head-pct.ok{color:var(--green)}.dly-head-pct.warn{color:var(--orange)}.dly-head-pct.low{color:var(--red)}
.dly-head-track{display:block;height:7px;border-radius:999px;background:var(--bg2);margin-top:8px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
/* v101.83 仓位 vs 目标迷你条：超配红色延长段 */
.pos-mini{display:flex;align-items:center;gap:8px;margin:6px 2px 0;font-size:11px}
.pos-mini-t{color:var(--muted);white-space:nowrap;flex-shrink:0}
.pos-mini-track{flex:1;height:6px;border-radius:999px;background:var(--bg2);overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.35)}
.pos-mini-fill{display:inline-block;height:100%;background:linear-gradient(90deg,var(--accent),#5ac8fa);border-radius:999px}
.pos-mini-fill.over{background:linear-gradient(90deg,#ff453a,#ff9f0a);box-shadow:0 0 8px rgba(255,69,58,.35)}
.pos-mini-dev{font-weight:700;white-space:nowrap;flex-shrink:0}
.pos-mini-dev.over{color:#ff453a}
.pos-mini-dev.under{color:#0a84ff}
.pos-mini-dev.ok{color:#30d158}
.dly-head-fill{display:block;height:100%;border-radius:0;background:linear-gradient(90deg,var(--accent),#5ac8fa);transition:width .35s}
.dly-head-fill.ok{background:linear-gradient(90deg,#34c759,#30d158)}
/* v101.98 分段行（买入/存量抵扣/定投预期/超配）与计划行统一样式 */
.dly-seg-line{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--muted);line-height:1.5;margin:-2px 12px 6px;padding:0}
.dly-seg-line span{white-space:nowrap}
.dly-seg-line b{color:var(--text);font-weight:600}
.dly-seg-line i.muted2{color:var(--muted2);font-style:normal}
.dly-seg-line span{white-space:nowrap}
.dly-seg-line b{color:var(--text);font-weight:600}
.dly-seg-line .muted2{color:var(--muted2)}
.dly-head-meta{display:flex;justify-content:space-between;align-items:center;margin-top:5px}
.dly-caret{color:var(--muted);font-size:11px;transition:transform .2s}
.dly-head.open .dly-caret{transform:rotate(180deg)}
.dly-cal-fold{display:none;padding:10px 12px 12px;border-top:1px solid var(--border2)}
.dly-cal-fold.open{display:block}
/* v100.72 持仓盈亏全景 */
.pnl-tbl td{font-size:12px;padding:7px 6px;white-space:nowrap}
.pnl-tbl th{font-size:10.5px}
.pnl-tbl .tiny{font-size:10px;margin-top:1px}
/* v100.72 持仓盈亏全景 */
.pnl-tbl td{font-size:12px;padding:7px 6px;white-space:nowrap}
.pnl-tbl th{font-size:10.5px}
.pnl-tbl .tiny{font-size:10px;margin-top:1px}
/* v100.84 设置页分组小节标题 */
.set-sec{margin:18px 4px 8px;font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.04em;display:flex;align-items:center;gap:8px}
.set-sec::after{content:'';flex:1;height:1px;background:var(--border2)}

/* v101.103 系数明细（透明可解释）：逐层展示本月目标计算过程 */
.coef-detail{margin:4px 12px 2px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}
.coef-detail summary{cursor:pointer;padding:7px 10px;font-size:12px;color:var(--muted);list-style:none;display:flex;align-items:center;gap:6px}
.coef-detail summary::before{content:'▸';transition:transform .15s}
.coef-detail[open] summary::before{transform:rotate(90deg)}
.coef-detail summary:active{background:var(--bg2)}
.coef-detail-body{padding:2px 10px 8px;display:flex;flex-direction:column;gap:4px}
.cd-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);padding:3px 0;border-bottom:1px dashed var(--border)}
.cd-row b{color:var(--text);font-weight:600}
.cd-row.warn b{color:#ff9f0a}
.cd-row.total{border-bottom:none;margin-top:2px;font-weight:700;color:var(--text)}
.cd-row.total b{color:var(--text);font-size:13px}
.cd-sub{color:var(--muted2);font-size:11px;font-weight:400}
/* v101.103 免责声明（合规）：首页/设置页底部显著风险提示 */
.disclaimer{font-size:11px;color:var(--muted2);line-height:1.6;padding:10px 12px;background:var(--bg2);border-radius:10px;border:1px solid var(--border)}
/* ── v101.115 苹果风格设置页（对照 iOS 18 真实规范重做） ── */
/* 主页：大标题 + 无分组标题 + inset 分组卡片 */
.set-list{padding:0 0 36px}
.set-page-head{padding:calc(env(safe-area-inset-top,0px) + 14px) 14px 8px!important;align-items:flex-end!important}
.set-page-head h1{font-size:34px;font-weight:700;letter-spacing:.3px;margin:0;line-height:1.1}
.set-group{background:var(--card);border-radius:12px;overflow:hidden;margin:0 0 18px}
[data-theme="dark"] .set-group{background:var(--card)}
.set-row{display:flex;align-items:center;gap:13px;padding:9px 14px;min-height:44px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s;position:relative}
.set-row:active{background:rgba(120,120,128,.14)}
[data-theme="dark"] .set-row:active{background:rgba(255,255,255,.09)}
/* 分隔线：inset（从图标右侧开始，不到左/右边缘）苹果真实行为 */
.set-row + .set-row::before{content:'';position:absolute;top:0;left:57px;right:14px;height:0.5px;background:rgba(60,60,67,.22)}
[data-theme="dark"] .set-row + .set-row::before{background:rgba(255,255,255,.12)}
/* v101.115 图标：iOS 系统色板圆角方块 + 白色线稿（非透明单色，非花哨多色） */
.set-icon{width:31px;height:31px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex:0 0 31px;color:#fff}
.set-icon svg{width:19px;height:19px;display:block;stroke-width:1.7}
.set-title{flex:1;font-size:17px;color:var(--text);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.1px}
.set-value{font-size:15px;color:var(--muted);max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto}
.set-chev{color:rgba(60,60,67,.32);font-size:18px;font-weight:400;flex:0 0 auto;font-family:system-ui,-apple-system,'PingFang SC',sans-serif;margin-top:-1px;padding-left:4px}
[data-theme="dark"] .set-chev{color:rgba(255,255,255,.32)}
.set-row.danger .set-title{color:var(--red)}
/* 子页：全屏 push（右侧滑入，返回右滑出；导航栏毛玻璃）v101.115 改纯 CSS 动画，修复 iOS 打不开 */
.set-sub{position:fixed;top:0;left:0;right:0;bottom:0;z-index:90;background:var(--bg);display:flex;flex-direction:column;transform:translateX(100%);visibility:hidden;pointer-events:none;transition:transform .32s cubic-bezier(.32,.72,.32,1),visibility 0s linear .34s;touch-action:pan-y}
#view > .set-sub{animation:none!important}
.set-sub.open{transform:translateX(0);visibility:visible;pointer-events:auto;transition:transform .32s cubic-bezier(.32,.72,.32,1)}
.set-sub.is-swipe{transition:none!important}
.set-sub.is-swipe .set-sub-head{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg)}
.set-edge{position:absolute;left:0;top:0;bottom:0;width:44px;z-index:8;touch-action:none;background:transparent}

.set-sub-head{position:relative;display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top,0px) + 4px) 6px 4px;flex:0 0 auto;min-height:48px;
  -webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:rgba(242,242,247,.78)}
[data-theme="dark"] .set-sub-head{background:rgba(28,28,30,.78)}
.set-back{display:flex;align-items:center;gap:2px;background:none;border:0;color:var(--accent);font-size:16px;padding:10px 16px 10px 12px;cursor:pointer;-webkit-tap-highlight-color:transparent;flex:0 0 auto;font-family:system-ui,-apple-system,'PingFang SC',sans-serif;letter-spacing:.2px;position:relative;z-index:9}  /* v101.263 返回按钮浮到左缘 .set-edge 触控条(z-index:8)之上，避免点击被触控条拦截；加大点击目标 */
.set-back .bk-arr{font-size:26px;line-height:1;margin-top:-2px;font-weight:300;margin-right:-2px}
.set-sub-title{font-size:16px;font-weight:600;flex:0 1 auto;text-align:center;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}
.set-back-spacer{width:64px;flex:0 0 64px}
.set-sub-body{flex:1;min-height:0;overflow-y:auto;padding:14px 14px 48px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}  /* v101.256 隔离滚动链：防止子页滚动穿透到设置页（iOS 需配合 JS 边界拦截） */
.set-sub-body .card{background:var(--card)}
[data-theme="dark"] .set-sub-body .card{background:var(--card)}
.set-note{font-size:12px;color:var(--muted2);line-height:1.6;margin-top:14px;padding:0 4px}

/* v101.115 iOS 居中 alert 弹窗（通用确认） */
.ios-alert-mask{align-items:center;justify-content:center}
.ios-alert{width:270px;max-width:82vw;background:var(--card);border-radius:14px;padding:20px 16px 0;box-sizing:border-box;
  transform:scale(.88);opacity:0;transition:transform .18s cubic-bezier(.32,.72,.32,1),opacity .15s}
.ios-alert-mask.show .ios-alert{transform:scale(1);opacity:1}
.ios-alert-title{font-size:17px;font-weight:600;text-align:center;color:var(--text);line-height:1.3;margin:0 0 6px;word-break:break-word}
.ios-alert-msg{font-size:13px;line-height:1.5;color:var(--muted);text-align:center;margin:0 0 18px;word-break:break-word}
.ios-alert-actions{display:flex;margin:0 -16px;border-top:0.5px solid rgba(60,60,67,.22)}
[data-theme="dark"] .ios-alert-actions{border-color:rgba(255,255,255,.14)}
.ios-alert-btn{flex:1;height:46px;border:none;background:none;color:var(--accent);font-size:16px;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,'PingFang SC',sans-serif}
.ios-alert-btn:first-child{border-right:0.5px solid rgba(60,60,67,.22)}
[data-theme="dark"] .ios-alert-btn:first-child{border-color:rgba(255,255,255,.14)}
.ios-alert-btn:active{background:rgba(120,120,128,.1)}
.ios-alert-btn.danger{color:var(--red);font-weight:600}

/* ── v101.117 执行页「本月可投」输入条 ── */
.exec-budget-row{display:flex;align-items:center;gap:10px;margin:2px 0 10px;padding:10px 14px;background:var(--card);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap}
.exec-budget-label{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap}
.exec-budget-input{width:110px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:16px;font-weight:600;text-align:right;-webkit-appearance:none;appearance:none}
.exec-budget-save{padding:8px 16px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-size:14px;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent}
.exec-budget-save:active{opacity:.8}
.exec-budget-hint{font-size:12px;color:var(--muted2);flex:1 1 100%;line-height:1.5}

/* ── v101.117 超配提醒 ── */
.alloc-over{display:block;font-size:11.5px;color:var(--red);margin-top:2px;line-height:1.4}

/* ── v101.120 iOS Safari 标签页模式引导：添加到主屏（解决底部工具栏占位导致的导航浮起） ── */
.install-hint{position:fixed;left:14px;right:14px;bottom:calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 10px);z-index:70;background:var(--accent);color:#fff;border-radius:14px;padding:12px 14px;display:flex;align-items:center;gap:10px;box-shadow:0 6px 20px rgba(0,0,0,.18);font-size:13.5px;line-height:1.45;animation:ihIn .25s ease}
.install-hint .ih-text{flex:1;min-width:0}
.install-hint .ih-text b{font-weight:600}
.install-hint .ih-close{flex:0 0 24px;height:24px;width:24px;border:0;background:rgba(255,255,255,.18);color:#fff;border-radius:50%;font-size:14px;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;justify-content:center}
.install-hint .ih-share{margin-right:2px;font-size:18px}
@keyframes ihIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}

/* v101.125 云端计算结果条（首页顶部，服务端数据） */
.cloud-card{background:linear-gradient(135deg,#eef3ff,#edf7f1);border:1px solid #d8e0f0;border-radius:16px;padding:14px;margin:14px 0 4px;}
.cloud-head{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:#2b3340;font-weight:600;margin-bottom:10px;gap:8px;}
.cloud-head .cloud-time{font-size:11px;color:#8a94a6;font-weight:400;text-align:right;}
.cloud-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px;}
.cloud-item{background:rgba(255,255,255,.75);border-radius:12px;padding:10px;text-align:center;}
.cloud-item span{display:block;font-size:11px;color:#8a94a6;margin-bottom:4px;}
.cloud-item b{font-size:15px;color:#2b3340;}
.cloud-rows{display:flex;flex-direction:column;gap:4px;}
.cloud-row{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.75);border-radius:10px;padding:8px 10px;font-size:13px;}
.cloud-row .cloud-name{flex:1;color:#2b3340;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cloud-row b{color:#2b3340;font-variant-numeric:tabular-nums;}
.cloud-tag{font-size:11px;padding:1px 6px;border-radius:8px;flex-shrink:0;}
.cloud-tag.t-red{background:#fde8e8;color:#b3362d;}
.cloud-tag.t-orange{background:#fdf0dc;color:#96620a;}
.cloud-tag.t-green{background:#e2f4e6;color:#1d7a3d;}
.cloud-tag.t-neutral{background:#eef1f5;color:#5a6472;}
@media (max-width:420px){.cloud-item b{font-size:14px;}}

/* v101.129 data page more-hist fold */
.hist-more-btn{display:block;width:100%;margin:10px 0 2px;padding:11px;border:1px dashed var(--border2);border-radius:12px;background:transparent;color:var(--text-link);font-size:13px;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit}.hist-more-btn:active{background:var(--hover-bg)}

/* ── 📖 执行手册（设置页子页 + 首页弹窗共用，v101.132）── */
.guide-hero{background:linear-gradient(135deg,var(--accent2),var(--accent));border-radius:14px;padding:14px 16px;margin-bottom:12px;color:#fff;box-shadow:var(--shadow)}
.guide-hero-title{font-size:16px;font-weight:700;margin-bottom:4px}
.guide-hero-sub{font-size:13px;line-height:1.7;opacity:.95}
.guide-hero b{color:#fff}
.guide-note{background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--text);border-radius:10px;padding:9px 12px;font-size:12.5px;line-height:1.7;margin-bottom:10px}
.guide-ul{margin:4px 0 0;padding-left:18px;font-size:13px;line-height:1.75;color:var(--text)}
.guide-ul li{margin-bottom:5px}
.guide-ul li:last-child{margin-bottom:0}
.guide-card .part-tbl td{padding:6px 6px;font-size:12.5px;vertical-align:top}
.guide-card .part-tbl th{padding:6px;font-size:12px}

/* v101.170 手册估值卡：卡片列表一次呈现，不用表格滚动 */
.val-list{ display:flex; flex-direction:column; gap:8px; margin-top:4px; }
.val-card{ background:var(--card); border:1px solid var(--border2); border-radius:12px; padding:10px 12px; }
.val-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:5px; }
.val-name{ font-size:13.5px; font-weight:700; color:var(--text); white-space:nowrap; }
.val-method{ font-size:12.5px; color:var(--accent); font-weight:600; text-align:right; }
.val-bands{ font-size:12.5px; color:var(--text); line-height:1.7; word-break:break-word; }
.val-bands b{ font-weight:700; }

/* v101.172 全局主题切换按钮 */
.bnav-theme{ cursor:pointer; }
.bnav-theme-ico{ display:flex; align-items:center; justify-content:center; }
.bnav-theme-ico svg{ width:24px; height:24px; }
.bnav-theme .theme-label{ color:var(--muted); }
.set-sub-theme{ display:flex; align-items:center; gap:4px; background:none; border:0; color:var(--muted); font-size:12px; padding:6px 10px; cursor:pointer; -webkit-tap-highlight-color:transparent; flex:0 0 auto; }
.set-sub-theme:active{ opacity:.6; }
.set-sub-theme svg{ width:18px; height:18px; }
.set-sub-theme .theme-label{ font-size:12px; color:var(--muted); }

/* v101.176 设置页外观行直接切换分段控件 */
.theme-seg{ display:flex; background:var(--chip-bg); border-radius:999px; padding:2px; flex:0 0 auto; }
.theme-seg .seg-opt{ border:none; background:transparent; color:var(--muted); font-size:14px; font-weight:600; padding:6px 16px; border-radius:999px; cursor:pointer; -webkit-tap-highlight-color:transparent; white-space:nowrap; transition:background .18s ease,color .18s ease; }
.theme-seg .seg-opt.active{ background:var(--card); color:var(--text); box-shadow:0 1px 3px rgba(0,0,0,.12); }

/* v101.178 主页面滑动切换过渡（页面滑动样式，替代闪烁） */
#view[data-slide="next"] > *{ animation: slideInNext .3s cubic-bezier(.22,.61,.36,1) both; }
#view[data-slide="prev"] > *{ animation: slideInPrev .3s cubic-bezier(.22,.61,.36,1) both; }
@keyframes slideInNext{ from{ transform:translateX(48px) } to{ transform:translateX(0) } }
@keyframes slideInPrev{ from{ transform:translateX(-48px) } to{ transform:translateX(0) } }

/* v101.182 子页右滑跟手投影（class 控制，避免逐帧 style 卡顿） */
/* v101.183 跟手投影移除：box-shadow 逐帧重绘导致 iOS 卡顿，只保留 transform 平移 */
/* v101.194 持仓偏离与操作：单行四列，固定列宽右对齐（字段长度不影响隔壁列） */
.pb-head,.pb-row{display:grid;grid-template-columns:minmax(0,1fr) 60px 84px 90px;align-items:center;gap:5px;padding:7px 14px}
.pb-head{border-top:1px solid var(--border2);border-bottom:1px solid var(--border2);font-size:11.5px;font-weight:600;color:var(--muted)}
.pb-h{white-space:nowrap;text-align:right;overflow:hidden}
.pb-h-name{text-align:left}
.pb-row{cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s ease}
.pb-row + .pb-row{border-top:1px solid var(--border2)}
.pb-row:active{background:var(--card2)}
.pb-row.pos-off{opacity:.92}
.pb-name{display:flex;align-items:center;gap:5px;min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-val{text-align:right;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-pnl{display:flex;align-items:baseline;justify-content:flex-end;gap:5px;font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:0;overflow:hidden}
.pb-pnl.up{color:var(--red)} .pb-pnl.down{color:var(--green)}
.pb-rate{font-size:10.5px;font-weight:500;opacity:.75;font-style:normal}
.pb-op{display:flex;justify-content:flex-end;min-width:0}
.pb-none{color:var(--muted2);font-size:12px}
.pb-veto{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.pb-op .pos-sell,.pb-op .pos-buy,.pb-op .pos-liqu{font-size:10.5px;padding:4px 8px;max-width:100%;overflow:hidden;text-overflow:ellipsis}

.pos-buy{font-size:11px;font-weight:700;color:var(--success,#34c759);background:var(--chip-bg);border:1px solid var(--success,#34c759);border-radius:999px;padding:5px 12px;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.pos-buy:active{background:var(--hover-bg);transform:scale(.97)}

/* v101.193 持仓明细弹窗：对齐表格（代码 · 份额 · 市值 · 盈亏） */
.tk-sum{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:2px 0 12px;font-size:12px;color:var(--muted)}
.tk-sum b{font-size:15px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.tk-sum-r{white-space:nowrap}
.tk-sum-r .up{color:var(--red)} .tk-sum-r .down{color:var(--green)}
.tk-sum-r i{font-style:normal;font-size:11px;opacity:.75}
.tk-grid-head,.tk-row{display:grid;grid-template-columns:1.25fr .75fr .9fr 1fr;align-items:center;gap:8px;padding:9px 2px}
.tk-grid-head{font-size:11px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border2)}
.tk-grid-head span{text-align:right;white-space:nowrap}
.tk-grid-head span:first-child{text-align:left}
.tk-row + .tk-row{border-top:1px solid var(--border2)}
.tk-g-code{display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;overflow:hidden}
.tk-g-code b{font-size:13px;font-weight:600}
.tk-g-code .tk-g-name{font-size:11px;color:var(--muted);font-weight:500;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-g-code .tag{font-size:9.5px;padding:1px 5px}
.tk-g-code em{font-style:normal;font-size:10px;color:var(--muted2);flex-shrink:0}
.tk-g-sh,.tk-g-val,.tk-g-pnl{text-align:right;font-size:12.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.tk-g-val{font-weight:600}
.tk-g-pnl{font-weight:600}
.tk-g-pnl.up{color:var(--red)} .tk-g-pnl.down{color:var(--green)}
.tk-g-pnl i{font-style:normal;font-size:10.5px;font-weight:500;opacity:.75}
/* v101.196 盈亏日历（券商风格，自动累计） */
.pnl-cal .cal-nav{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 10px}
.pnl-cal .cal-nav-btn{background:none;border:none;color:var(--accent);font-size:26px;line-height:1;width:44px;height:44px;border-radius:50%;cursor:pointer;-webkit-tap-highlight-color:transparent;display:flex;align-items:center;justify-content:center;flex:0 0 44px}
.pnl-cal .cal-nav-btn:active{background:var(--border2)}
.pnl-cal .cal-nav-t{font-size:16px;font-weight:600;color:var(--text)}
.pnl-cal .cal-sum{display:flex;justify-content:space-between;gap:8px;padding:10px 12px;background:var(--card2);border-radius:12px;font-size:13px;color:var(--muted);margin-bottom:10px;font-variant-numeric:tabular-nums}
.pnl-cal .cal-sum b{font-size:15px;font-variant-numeric:tabular-nums}
.pnl-cal .cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:4px 2px;font-size:11.5px;color:var(--muted);text-align:center;font-weight:600}
.pnl-cal .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:2px}
.pnl-cal .cal-cell{min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;padding:5px 2px;border-radius:10px;background:var(--card2);border:1px solid var(--border2);cursor:pointer;-webkit-tap-highlight-color:transparent;overflow:hidden}
.pnl-cal .cal-cell:active{background:var(--border2)}
.pnl-cal .cal-cell.cal-empty{background:transparent;border:none;cursor:default}
.pnl-cal .cal-cell.cal-today{border-color:var(--accent);box-shadow:0 0 0 1.5px rgba(10,132,255,.35)}
.pnl-cal .cal-d{font-size:13px;color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}
.pnl-cal .cal-p{font-size:10px;font-variant-numeric:tabular-nums;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.pnl-cal .cal-p.up{color:var(--red)}
.pnl-cal .cal-p.down{color:var(--green)}

/* v101.208 错价份额提示横幅（顶部，不挡导航） */
.audit-banner{display:flex;align-items:center;gap:10px;margin:10px 16px 0;padding:10px 12px;background:rgba(255,149,0,.12);border:1px solid rgba(255,149,0,.4);border-radius:12px;font-size:12.5px;color:var(--text);line-height:1.5}
.audit-banner .ab-text{flex:1 1 auto;min-width:0}
.audit-banner .ab-btn{flex:0 0 auto;background:var(--orange);color:#fff;border:none;border-radius:9px;padding:7px 14px;font-size:12.5px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent}
.audit-banner .ab-btn:active{filter:brightness(.92)}

/* v101.341 总览标的详情弹窗 - 持仓代码明细 */
.ad-tickers{margin-top:14px;padding-top:12px;border-top:1px solid var(--border2)}
.ad-tickers-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px}
.ad-tickers-list{display:flex;flex-direction:column;gap:6px}
.ad-ticker-row{display:grid;grid-template-columns:1.4fr .8fr .8fr 1fr;align-items:center;gap:6px;padding:8px 4px;border-bottom:1px solid var(--border2)}
.ad-ticker-row:last-child{border-bottom:none}
.ad-ticker-code{display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;overflow:hidden}
.ad-ticker-code b{font-size:12.5px;font-weight:600}
.ad-ticker-name{font-size:11px;color:var(--muted);font-weight:500;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ad-ticker-code .tag{font-size:9px;padding:1px 4px}
.ad-ticker-shares{text-align:right;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.ad-ticker-val{text-align:right;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.ad-ticker-pnl{text-align:right;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.ad-ticker-pnl.up{color:var(--red)}
.ad-ticker-pnl.down{color:var(--green)}
.ad-ticker-pnl i{font-style:normal;font-size:10.5px;font-weight:500;opacity:.75}
