
:root{--bg:#f6f7f9;--card:#fff;--ink:#16181d;--muted:#6b7280;--line:#e6e8ec;
--up:#d92d20;--down:#0f9d58;--accent:#2f6fed;--warn:#b54708;--warnbg:#fef3e6;--goodbg:#e9f7ef;}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
font-family:-apple-system,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;
line-height:1.6;padding:28px 20px 60px}
.wrap{max-width:1080px;margin:0 auto}
h1{font-size:24px;margin:0 0 4px}
.sub{color:var(--muted);font-size:13px;margin-bottom:22px}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;
background:#eef2ff;color:#3b5bdb;margin-left:8px;vertical-align:middle}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:26px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.kpi .k{font-size:12px;color:var(--muted)}
.kpi .v{font-size:22px;font-weight:650;margin-top:2px}
.section{margin:28px 0 12px;font-size:15px;font-weight:650;display:flex;justify-content:space-between;align-items:baseline}
.section small{font-weight:400;color:var(--muted);font-size:12px}
.alloc{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px}
.row{display:grid;grid-template-columns:110px 1fr 118px;gap:12px;align-items:center;font-size:13px;margin:9px 0}
.bar{height:8px;background:#eef0f4;border-radius:6px;position:relative;overflow:hidden}
.bar i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:6px}
.bar u{position:absolute;top:-3px;bottom:-3px;width:2px;background:#111;opacity:.55}
.fund{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:14px}
.fh{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.fname{font-size:16px;font-weight:650}
.fcode{color:var(--muted);font-size:12px;font-weight:400;margin-left:6px}
.tag{padding:3px 12px;border-radius:999px;font-size:13px;font-weight:600;white-space:nowrap}
.t-减仓{background:#fee4e2;color:#b42318}.t-加仓{background:#e9f7ef;color:#0f7b4f}
.t-止盈{background:#e7f0ff;color:#1d4ed8}.t-持有{background:#f1f2f6;color:#4b5563}
.t-观察{background:#fef7e0;color:#a16207}.t-别动{background:#fde8e8;color:#9f1239}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;margin:14px 0 4px}
.m{background:#fafbfc;border:1px solid #f0f1f4;border-radius:10px;padding:8px 10px}
.m .k{font-size:11px;color:var(--muted)}
.m .v{font-size:14px;font-weight:600;margin-top:1px}
.up{color:var(--up)}.down{color:var(--down)}
.why{margin-top:12px;font-size:13.5px}
.why li{margin:3px 0}
.act{margin-top:10px;font-size:13px;background:#f8fafc;border-left:3px solid var(--accent);
padding:8px 12px;border-radius:0 8px 8px 0}
.act b{color:var(--accent)}
.note{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 18px;font-size:13.5px}
.note div{padding:5px 0;border-bottom:1px dashed #eef0f4}
.note div:last-child{border:none}
.todo{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:13.5px;margin-bottom:8px}
.todo b{color:var(--accent);margin-right:6px}
.warn{color:var(--warn)}
.foot{margin-top:34px;font-size:12px;color:var(--muted);line-height:1.8}

.hero{background:linear-gradient(135deg,#1f2937,#111827);color:#f9fafb;border-radius:18px;padding:24px 26px;margin-bottom:22px}
.hero .big{font-size:34px;font-weight:700;margin:6px 0}
.hero .lbl{font-size:12px;opacity:.65;letter-spacing:.08em}
.hero .flex{display:flex;gap:36px;flex-wrap:wrap}
table{width:100%;border-collapse:collapse;font-size:13px;background:#fff;border-radius:12px;overflow:hidden}
th,td{padding:10px 12px;text-align:right;border-bottom:1px solid #f0f1f4}
th:first-child,td:first-child{text-align:left}
th{background:#fafbfc;font-weight:600;color:#4b5563;font-size:12px}
tr:last-child td{border-bottom:none}
.ok{color:#0f9d58}.bad{color:#d92d20}
.path{background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:16px 18px;margin-bottom:12px}
.path h3{margin:0 0 4px;font-size:15px}
.path p{margin:0 0 10px;font-size:13px;color:#6b7280}
.chip{display:inline-block;background:#f1f5f9;border-radius:999px;padding:3px 10px;font-size:12px;margin:3px 6px 3px 0}
.mathstrip{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 0}
.mchip{background:#fff;border:1px solid #e6e8ec;border-radius:999px;padding:6px 12px;
font-size:12.5px;color:#6b7280;white-space:nowrap}
.mchip b{color:#16181d;font-weight:650}

.chartbox{position:relative;background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:12px 14px 8px}
.ranges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.ranges button{font:inherit;font-size:12px;padding:4px 10px;border-radius:8px;border:1px solid #e2e6ec;
background:#fff;color:#4b5563;cursor:pointer}
.ranges button.on{background:#16181d;color:#fff;border-color:#16181d}
.ranges button:disabled{opacity:.45;cursor:wait}
.chsvg{width:100%;height:260px;display:block;touch-action:pan-y}
.chtip{position:absolute;display:none;background:rgba(17,24,39,.92);color:#fff;font-size:11.5px;
padding:5px 8px;border-radius:7px;pointer-events:none;white-space:nowrap;z-index:5}
.chtip b{font-size:13px}
.chart-empty{color:#9ca3af;font-size:13px;padding:40px 0;text-align:center}
.chart-hint{font-size:11.5px;color:#9ca3af;padding:4px 2px 0}
.legend{display:flex;gap:6px;flex-wrap:wrap;margin:2px 0 6px}
.legend button{font:inherit;font-size:12px;padding:3px 9px;border-radius:8px;border:1px solid #e2e6ec;
background:#fff;color:#9ca3af;cursor:pointer;display:flex;align-items:center;gap:5px}
.legend button.on{color:#374151;border-color:#cbd5e1}
.legend button i{width:9px;height:9px;border-radius:50%;display:inline-block;opacity:.3}
.legend button.on i{opacity:1}

.topbar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:22px}
.brand{font-size:15px;font-weight:700;letter-spacing:.02em}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav a{font-size:13.5px;color:#4b5563;text-decoration:none;padding:6px 12px;border-radius:999px}
.nav a:hover{background:#eef2ff}
.nav a.on{background:#16181d;color:#fff}
.nav .right{margin-left:auto;color:#9ca3af;font-size:12.5px;padding:6px 4px;display:flex;align-items:center;gap:12px}
.autolbl{display:flex;align-items:center;gap:5px;color:#6b7280;cursor:pointer;font-size:12.5px}
.autolbl input{width:auto;margin:0}
.stamp{color:#9ca3af;font-size:12px;white-space:nowrap}
.card-form{background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:16px 18px;margin-bottom:16px}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}
.grid4 label{font-size:12px;color:#6b7280;display:flex;flex-direction:column;gap:5px}
input,select{font:inherit;font-size:13px;padding:7px 9px;border:1px solid #dfe3e8;border-radius:8px;background:#fff;width:100%;color:#16181d}
input:focus,select:focus{outline:2px solid #c7d7fe;border-color:#93b4fd}
.btn{background:#2f6fed;color:#fff;border:none;border-radius:9px;padding:9px 18px;font-size:13.5px;font-weight:600;cursor:pointer}
.btn:hover{background:#255ed4}
.btn.sm{padding:6px 12px;font-size:12.5px}
.btn.danger{background:#fff;color:#b42318;border:1px solid #fbd5d5}
.btn.ghost{background:#fff;color:#374151;border:1px solid #dfe3e8}
.hold{background:#fff;border:1px solid #e6e8ec;border-radius:16px;padding:16px 18px;margin-bottom:12px;
display:grid;grid-template-columns:1fr 170px auto;gap:18px;align-items:center}
@media(max-width:780px){.hold{grid-template-columns:1fr;gap:12px}.hold-pct{text-align:left}.hold-act{justify-content:flex-start}}
.hold-t{font-size:15.5px;font-weight:650;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.hold-t .code{color:#9ca3af;font-size:12px;font-weight:400}
.chipx{background:#f1f5f9;color:#475569;border-radius:999px;padding:1px 9px;font-size:11.5px;font-weight:500}
.hold-m{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}
.hold-m .k{font-size:11px;color:#9ca3af}
.hold-m .v{font-size:13px;font-weight:600}
.hold-m .v s{color:#9ca3af;font-weight:400;font-size:11.5px;text-decoration:none}
.hold-pct{text-align:right}
.hold-pct .big{font-size:27px;font-weight:700;line-height:1.1}
.hold-pct .cap{font-size:11.5px;color:#9ca3af;margin-top:3px}
.hold-pct .prev{font-size:12px;color:#6b7280;margin-top:5px}
.hold-act{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.hold-act form{margin:0}
.hint.ok{color:#0f7b4f}
.hint.err{color:#b42318}
.holdcard{background:#fff;border:1px solid #e6e8ec;border-radius:16px;margin-bottom:12px;overflow:hidden}
.holdcard .hold{border:none;border-radius:0;margin:0;background:transparent}
.holdcard details{border-top:1px dashed #eef0f4;padding:0 18px}
.holdcard summary{padding:10px 0;font-size:12.5px;color:#2f6fed;cursor:pointer}
.holdbody{padding:0 0 14px}
.holdbody ul.why{margin:0 0 8px;padding-left:18px}
.holdbody li{margin:3px 0;font-size:13px}
.li-sell,.li-buy,.li-risk,.li-note{border-radius:7px;padding:4px 8px;margin:4px 0;list-style:none;
  border-left:3px solid transparent}
.li-sell{background:#FEF3F2;border-left-color:#D92D20;color:#912018}
.li-buy{background:#ECFDF3;border-left-color:#079455;color:#05603A}
.li-risk{background:#FFFAEB;border-left-color:#DC6803;color:#93370D}
.li-note{background:#F8FAFC;border-left-color:#CBD5E1;color:#475467}
.vd-row{display:flex;gap:6px;align-items:flex-start;padding:3px 0}
.vd-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;border-radius:4px;padding:0 5px;line-height:16px}
.vd-sell{background:#FEE4E2;color:#B42318}
.vd-buy{background:#D1FADF;color:#05603A}
.vd-risk{background:#FEF0C7;color:#B54708}
.vd-info{background:#EEF2F6;color:#475467}
.scorebar{position:relative;height:10px;background:#eef0f4;border-radius:6px;margin-top:12px;overflow:hidden}
.scorebar i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#2f6fed,#f59e0b);border-radius:6px}
.scorebar em{position:absolute;right:8px;top:-2px;font-size:11px;color:#6b7280;font-style:normal}
.scorebar.big{height:16px;margin:10px 0 4px}
.checklist{background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:4px 16px}
.checkrow{display:grid;grid-template-columns:14px 96px 96px 1fr;gap:10px;align-items:center;
font-size:13px;padding:10px 0;border-bottom:1px dashed #f1f3f6}
.checkrow:last-child{border:none}
.okdot,.baddot{width:8px;height:8px;border-radius:50%;display:inline-block}
.okdot{background:#10b981}.baddot{background:#ef4444}
.cval{color:#374151;font-weight:600}
.ctext{color:#6b7280;font-size:12.5px}
.warnbox{border-color:#fde68a;background:#fffbeb}
.warnbox .why li{color:#92400e;font-size:13px}
@media(max-width:700px){.checkrow{grid-template-columns:14px 1fr;row-gap:2px}.cval,.ctext{grid-column:2}}
.finlist{background:#fff;border:1px solid #e6e8ec;border-radius:14px;padding:2px 16px}
.finrow{display:grid;grid-template-columns:130px 170px 1fr;gap:12px;align-items:baseline;
padding:10px 0;border-bottom:1px dashed #f1f3f6;font-size:13px}
.finrow:last-child{border:none}
.finrow span{color:#6b7280}
.finrow b{font-size:14px}
.finrow small{color:#9ca3af;font-size:12px}
@media(max-width:700px){.finrow{grid-template-columns:1fr;row-gap:2px}}
@media(max-width:720px){
  .nav{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #e6e8ec;
       display:flex;flex-wrap:nowrap;justify-content:flex-start;gap:2px;padding:6px 8px;
       overflow-x:auto;z-index:60;box-shadow:0 -2px 12px rgba(0,0,0,.05);-webkit-overflow-scrolling:touch}
  .nav a{font-size:11px;padding:7px 10px;border-radius:8px;flex:0 0 auto;text-align:center;white-space:nowrap}
  .nav a.on{background:#16181d;color:#fff}
  .nav .right{display:none}
  body{padding-bottom:74px}
  .topbar{margin-bottom:16px}
}
.tblwrap td.detail{text-align:left;min-width:220px}
.tblwrap td.detail ul{padding-left:18px;margin:6px 0 0}
.tblwrap td.detail li{margin:2px 0}
.holdlink{color:inherit;text-decoration:none}
.holdlink:hover{color:#2f6fed}
.infogrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.infogrid div{font-size:13px;padding:8px 10px;background:#fafbfc;border:1px solid #f0f1f4;border-radius:9px}
.infogrid span{color:#9ca3af;font-size:11.5px;display:block}
.autofield{background:#f8fafc;color:#475569}
.tblwrap{overflow-x:auto;border:1px solid #e6e8ec;border-radius:12px;background:#fff}
.tblwrap table{border-radius:0}
.tblwrap input{min-width:64px}
.banner{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:10px;padding:9px 14px;font-size:13px;margin-bottom:16px}
.hint{font-size:12.5px;color:#6b7280;margin:8px 0 0}
.err{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:10px;padding:9px 14px;font-size:13px;margin-bottom:16px}
details summary{cursor:pointer;color:#2f6fed;font-size:12.5px}
.login{max-width:320px;margin:80px auto;background:#fff;border:1px solid #e6e8ec;border-radius:16px;padding:24px}
.loginwrap{min-height:calc(100vh - 140px);display:flex;align-items:center;justify-content:center;padding:20px}
.logincard{width:100%;max-width:420px;background:#fff;border:1px solid #E4E9F0;border-radius:18px;
  padding:36px 34px 26px;box-shadow:0 10px 40px rgba(16,24,40,.08)}
.loginlogo{font-size:22px;font-weight:700;letter-spacing:-.01em;text-align:center;color:#101828}
.loginsub{font-size:13px;color:#667085;text-align:center;margin:6px 0 22px}
.flabel{display:block;font-size:13px;color:#344054;margin-bottom:14px;font-weight:500}
.flabel input{width:100%;height:44px;margin-top:6px;font-size:15px;border-radius:10px;padding:0 12px}
.pwbox{position:relative;display:block}
.pwbox input{padding-right:64px}
.pweye{position:absolute;right:8px;top:calc(50% + 3px);transform:translateY(-50%);
  border:0;background:none;color:#517BDF;font-size:12.5px;cursor:pointer;padding:6px 8px;font-family:inherit}
.remember{display:flex;align-items:center;gap:7px;font-size:13px;color:#475467;margin:2px 0 18px;cursor:pointer}
.remember input{width:15px;height:15px;min-height:0;accent-color:#517BDF;cursor:pointer;margin:0}
.loginbtn{width:100%;height:46px;font-size:16px;font-weight:600;border-radius:10px}
.loginhelp{display:flex;gap:8px;justify-content:center;align-items:center;margin-top:18px;font-size:12.5px;color:#98A2B3}
.loginhelp a{color:#517BDF;text-decoration:none}
#lgout{font-size:12.5px}
@media(max-width:720px){
  .logincard{max-width:100%;padding:28px 22px 22px;border-radius:16px}
  .loginlogo{font-size:20px}
  .loginwrap{min-height:calc(100vh - 120px)}
}
/* 顶部加载条 */
#loadbar{position:fixed;left:0;top:0;height:3px;width:0;background:#517BDF;z-index:200;
  transition:width .25s ease;opacity:0}
#loadbar.on{opacity:1}
#loadtip{position:fixed;left:50%;top:14px;transform:translateX(-50%);background:rgba(16,24,40,.92);
  color:#fff;font-size:12.5px;padding:8px 16px;border-radius:20px;z-index:201;display:none;
  box-shadow:0 6px 20px rgba(0,0,0,.18)}
#pgover{position:fixed;inset:0;background:rgba(242,246,249,.82);backdrop-filter:blur(2px);
  z-index:190;display:none;align-items:center;justify-content:center}
#pgover.on{display:flex}
#pgbox{background:#fff;border:1px solid #E4E9F0;border-radius:16px;padding:26px 34px;
  box-shadow:0 16px 48px rgba(16,24,40,.16);text-align:center;min-width:280px}
#pgspin{width:34px;height:34px;border-radius:50%;margin:0 auto 14px;
  border:3px solid #E9EEF6;border-top-color:#517BDF;animation:pgspin .9s linear infinite}
#pgbox{text-align:left;min-width:340px;max-width:520px}
#pgtitle{text-align:center}
#pgsub{text-align:center}
.skeleton{margin-top:4px}
.sk{background:linear-gradient(90deg,#EEF1F6 25%,#F7F9FC 37%,#EEF1F6 63%);
  background-size:400% 100%;animation:skshine 1.3s ease infinite;border-radius:8px;height:14px}
@keyframes skshine{0%{background-position:100% 50%}100%{background-position:0 50%}}
.sk-title{height:22px;width:42%;margin-bottom:14px}
.sk-row{display:flex;gap:10px;margin-bottom:14px}
.sk-kpi{height:56px;flex:1}
.sk-line{margin-bottom:10px}

@keyframes pgspin{to{transform:rotate(360deg)}}
#pgtitle{font-size:15px;font-weight:600;color:#101828}
#pgsub{font-size:12.5px;color:#667085;margin-top:6px;line-height:1.6}



/* ---------- UI v2：排版与配色统一 ---------- */
:root{
  --bg:#F2F6F9; --card:#FFFFFF; --ink:#101828; --muted:#667085; --line:#E4E9F0;
  --up:#D92D20; --down:#079455; --accent:#517BDF; --accent-soft:#EEF3FE;
}
body{background:var(--bg);color:var(--ink);letter-spacing:0;-webkit-font-smoothing:antialiased;
  padding:0 20px 60px;
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
.wrap{max-width:1180px}
h1{font-size:22px;font-weight:650;letter-spacing:-.01em}
.sub{font-size:13px;color:var(--muted);margin-bottom:18px}
.section{font-size:14px;font-weight:650;letter-spacing:.01em;margin:26px 0 10px}
.pill{background:var(--accent-soft);color:#2F56C4;border-radius:22px;font-size:11.5px}
.kpi,.hold,.holdcard,.alloc,.note,.card-form,.chartbox,.finlist,.checklist,.tblwrap{
  border-color:var(--line);border-radius:15px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.kpi{padding:16px 18px}
.kpi .k{font-size:12px;color:var(--muted)}
.kpi .v{font-size:26px;font-weight:650;letter-spacing:-.02em}
.v,td,.big,.m .v,.finrow b{font-variant-numeric:tabular-nums}
.tag{border-radius:22px;font-size:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;
  height:34px;min-height:34px;padding:0 14px;line-height:1;white-space:nowrap;
  border-radius:7px;font-size:13px;font-weight:550;font-family:inherit;text-decoration:none;
  background:var(--accent);color:#fff;box-shadow:0 1px 2px rgba(16,24,40,.06)}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:#fff;border:1px solid #D0D5DD;color:#344054}
.btn.danger{background:#fff;border:1px solid #FECACA;color:#B42318}
.btn.sm{height:30px;min-height:30px;padding:0 11px;font-size:12.5px}
input,select{border-radius:7px;border-color:#D0D5DD;min-height:36px}
input:focus,select:focus{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent)}
table th{background:#F9FAFB;color:#667085;font-size:11.5px;font-weight:600;letter-spacing:.02em;
  border-bottom:1px solid var(--line)}
table td{border-bottom:1px solid #F2F4F7;font-size:13px}
table tbody tr:hover{background:#FAFBFC}
.todo{border-radius:12px;border-color:var(--line);background:#fff}
.todo b{color:var(--accent)}
.topbar{position:sticky;top:0;z-index:50;background:var(--bg);padding:12px 0;margin-bottom:18px;
  border-bottom:1px solid var(--line)}
.brand{font-size:14px;font-weight:700;letter-spacing:-.01em}
.nav a{font-size:13px;color:#475467;padding:7px 12px}
.nav a.on{background:var(--ink);color:#fff}
.nav a:hover{background:#E9EEF6}
.nav{flex:1}
.topbar{justify-content:space-between}
table th,table td{padding:9px 12px}
.hold-t{font-size:15px;letter-spacing:-.01em}
.hold-pct .big{font-size:26px}
.chipx{background:#F2F4F7;color:#475467;border-radius:22px}
.holdcard summary,.holdlink:hover{color:var(--accent)}
.act{border-left:2px solid var(--accent);background:#F8FAFD;border-radius:0 7px 7px 0}
.warnbox{background:#FFFAEB;border-color:#FEDF89}
.warnbox .why li{color:#B54708}
@media(max-width:720px){
  body{padding-bottom:calc(78px + env(safe-area-inset-bottom))}
  .nav{padding:6px 8px calc(6px + env(safe-area-inset-bottom))}
  .nav a{font-size:11.5px;padding:8px 10px}
}
/* 细节打磨：不换行、截断、滑动提示、打印 */
.kpi .v,.hold-pct .big,.m .v,.hold-m .v{white-space:nowrap}
.hold-t b{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.hold-t{min-width:0}
.tblwrap{background:
  linear-gradient(to right,#fff 30%,rgba(255,255,255,0)) left center,
  linear-gradient(to left,#fff 30%,rgba(255,255,255,0)) right center,
  radial-gradient(farthest-side at 0 50%,rgba(16,24,40,.10),transparent) left center,
  radial-gradient(farthest-side at 100% 50%,rgba(16,24,40,.10),transparent) right center;
  background-repeat:no-repeat;background-size:40px 100%,40px 100%,14px 100%,14px 100%;
  background-attachment:local,local,scroll,scroll}
@media(max-width:720px){
  .hold-t b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .hold-m{grid-template-columns:repeat(2,1fr)}
}
@media print{
  .topbar,.nav,.btn,.foot,.chartbox{display:none!important}
  body{background:#fff;padding:0}
  .kpi,.hold,.holdcard,.note,.tblwrap{box-shadow:none;break-inside:avoid}
}
/* ---------- 顶部导航 v3 ---------- */
.topbar{display:flex;align-items:center;gap:18px;height:64px;padding:0;margin:0 0 18px;
  position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid var(--line)}
a.btn,a.btn:hover,.btn{text-decoration:none}
a.holdlink{text-decoration:none}
.brand{display:inline-flex;align-items:center;height:22px;font-size:14px;font-weight:700;
  letter-spacing:-.01em;white-space:nowrap;line-height:1;color:var(--ink);
  padding-right:18px;border-right:1px solid #DDE3EC}
.nav{display:flex;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{display:inline-flex;align-items:center;justify-content:center;height:32px;
  padding:0 12px;border-radius:16px;font-size:13px;line-height:1;font-weight:500;
  color:#475467;white-space:nowrap;text-decoration:none}
.nav a:hover{background:#E9EEF6}
.nav a.on{background:#101828;color:#fff;font-weight:600}
.nav .right{margin-left:auto;display:flex;align-items:center;gap:14px;padding-left:16px;white-space:nowrap}
.nav .right a{height:auto;padding:0;border-radius:0;font-size:12.5px;color:#667085;font-weight:400}
.nav .right a:hover{background:none;color:var(--accent)}
.autolbl{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:#475467;cursor:pointer}
input[type=checkbox]{min-height:0;height:14px;width:14px;padding:0;accent-color:var(--accent);cursor:pointer}
.stamp{font-size:12px;color:#98A2B3;font-variant-numeric:tabular-nums;line-height:1;display:inline-flex;
  align-items:center;height:30px}
.topbar .right{display:flex;align-items:center;gap:14px;margin-left:auto;height:30px}
.topbar .right>*{align-self:center}
.aibtn{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 14px;
  border-radius:15px;background:#101828;color:#fff !important;font-size:13px;font-weight:600;
  text-decoration:none;letter-spacing:.02em}
.aibtn:hover{background:#000}
.rdiv{display:inline-block;width:1px;height:16px;background:#DDE3EC}
.right .refresh{color:#667085;font-size:12.5px;text-decoration:none;padding:6px 4px}
@media(max-width:720px){
  .aibtn{height:34px;padding:0 16px;font-size:13.5px;border-radius:17px}
  .rdiv{margin:0 6px}
  .right .refresh{padding:8px 6px}
}
@media(max-width:720px){
  .topbar{height:56px;margin:0 0 14px}
  .brand{border-right:none;padding-right:0}
  .nav a{height:30px;border-radius:15px;font-size:12px}
}
/* 分段切换按钮 */
.card{background:#fff;border:1px solid var(--line);border-radius:15px;
  box-shadow:0 1px 2px rgba(16,24,40,.04)}
.seg{display:inline-flex;background:#F2F4F7;border-radius:10px;padding:3px;gap:3px;margin-bottom:14px}
.seg-btn{border:none;background:transparent;font:inherit;font-size:13px;line-height:1;
  padding:7px 14px;border-radius:8px;color:#475467;cursor:pointer;white-space:nowrap}
.seg-btn:hover{color:#101828}
.seg-btn.on{background:#fff;color:#101828;font-weight:600;box-shadow:0 1px 2px rgba(16,24,40,.08)}
.seg-panel{padding-bottom:10px}
.qchip{border:1px solid #E4E9F0;background:#fff;border-radius:22px;padding:8px 14px;
  font-size:12.5px;color:#344054;cursor:pointer;line-height:1.2;font-family:inherit;
  transition:border-color .15s,background .15s}
.qchip:hover{border-color:#B9CBEE;color:#2F56C4;background:#F5F8FF}
.mini{font-size:12px;color:#667085;background:none;border:0;padding:0;cursor:pointer;
  font-family:inherit;text-decoration:none;line-height:1}
.mini:hover{color:var(--accent);text-decoration:underline}
.mini.danger{color:#B42318}
.mini.danger:hover{color:#D92D20}
table.scoretbl th:not(:first-child),table.scoretbl td:not(:first-child){
  text-align:center;vertical-align:middle;white-space:nowrap}
table.scoretbl td:first-child{vertical-align:middle}
table.scoretbl th,table.scoretbl td{padding:10px 10px}
details summary.sumrow{display:flex;align-items:center;gap:10px;list-style:none;cursor:pointer}
details summary.sumrow::-webkit-details-marker{display:none}
details summary.sumrow::before{content:"▸";color:var(--accent);font-size:11px;flex:0 0 auto}
details[open] summary.sumrow::before{content:"▾"}
details summary.sumrow .sl{flex:1;color:var(--accent);font-size:12.5px}
@media(max-width:780px){
  /* 手机：标题+指标在左，涨跌在右上，按钮整行放底下 —— 去掉中间那条空行 */
  .hold{grid-template-columns:1fr auto;align-items:start;row-gap:8px}
  .hold>div:nth-child(1){grid-column:1;grid-row:1;min-width:0}
  .hold>div:nth-child(2){grid-column:2;grid-row:1;text-align:right;margin:0}
  .hold>div:nth-child(3){grid-column:1 / -1;grid-row:2;justify-content:flex-end}
  .hold-pct .big{font-size:22px;line-height:1.15}
  .hold-pct .cap,.hold-pct .prev{margin-top:2px}
  .checkrow .cval,.checkrow .ctext{grid-column:auto}
}
@media(max-width:720px){
  .seg{display:flex;width:100%}
  .seg-btn{flex:1;padding:8px 6px;font-size:12.5px}
  .nav a.more{display:none}
  /* 底部导航：5 个标签平均分布 */
  .nav{justify-content:space-around !important;gap:0 !important;overflow-x:visible !important}
  .nav a{flex:1 1 0 !important;text-align:center;padding:8px 2px !important;font-size:11.5px}
  /* 顶部右侧控件在手机上也保留（吸顶） */
  .topbar .right{display:flex;gap:10px;font-size:11.5px}
  .topbar{height:auto;min-height:52px;padding:8px 0}
  .topbar .brand{font-size:13px}
  /* 持仓卡片：进一步压低高度 */
  .hold{padding:10px 12px;row-gap:6px !important}
  .hold-m{grid-template-columns:repeat(2,1fr);gap:2px 10px;margin-top:4px}
  .hold-m .k{font-size:10px}
  .hold-m .v{font-size:12.5px}
  .hold-pct .big{font-size:20px}
  .hold-pct .cap{font-size:10px}
  .hold-pct .prev{font-size:10.5px;margin-top:1px}
  .hold-act .btn.sm{height:26px;min-height:26px;padding:0 9px;font-size:11.5px}
  .hold-act{gap:4px !important}
  details summary.sumrow{padding:7px 0}
  .holdbody{padding-bottom:10px}
  /* 体检结果：一行一个，文字超长才省略 */
  .checkrow{grid-template-columns:12px auto auto 1fr !important;gap:8px;padding:8px 0;
    white-space:nowrap;overflow:hidden}
  .checkrow .cval{grid-column:auto !important;font-size:12.5px}
  .checkrow .ctext{grid-column:auto !important;overflow:hidden;text-overflow:ellipsis;font-size:11.5px}
  /* 评分表：第一列不被压扁 */
  table.scoretbl td:first-child,table.scoretbl th:first-child{min-width:150px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  table.scoretbl td:first-child div{white-space:normal}

/* ===== 持仓统计 4×2 ===== */
.stats4{display:grid !important;gap:8px !important}
.stats4 .m{padding:10px 12px !important;border-radius:10px !important}
.stats4 .m .k{font-size:11px !important;color:#98A2B3;line-height:1.3}
.stats4 .m .v{font-size:15px !important;font-weight:650;line-height:1.3;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
@media(max-width:720px){
  .stats4{grid-template-columns:repeat(4,minmax(0,1fr)) !important;gap:6px !important}
  .stats4 .m{padding:7px 6px !important}
  .stats4 .m .k{font-size:9.5px !important}
  .stats4 .m .v{font-size:11.5px !important}
}
/* ===== 手机端紧凑版 v3 ===== */
@media (max-width: 720px){
  body{padding:0 10px calc(72px + env(safe-area-inset-bottom)) !important;font-size:13.5px !important}
  .wrap{max-width:100% !important}
  h1{font-size:18px !important;margin:0 0 2px !important}
  .sub{font-size:12px !important;margin-bottom:10px !important}
  .section{font-size:13px !important;margin:14px 0 6px !important}

  /* 顶栏压到 46px */
  .topbar{min-height:46px !important;height:46px !important;padding:0 !important;
          margin:0 0 10px !important;gap:6px}
  .brand{font-size:12.5px !important;max-width:38vw;overflow:hidden;white-space:nowrap;
         text-overflow:ellipsis;border:none !important;padding:0 !important}
  .topbar .right{margin-left:auto !important;gap:6px !important}
  .stamp{display:none !important}
  .aibtn{height:28px !important;padding:0 10px !important;font-size:12px !important;border-radius:14px !important}
  .right .refresh{font-size:12px !important;padding:4px 2px !important}

  /* 底部导航 56px */
  .nav{position:fixed !important;left:0 !important;right:0 !important;bottom:0 !important;top:auto !important;
       background:#fff !important;border-top:1px solid #E4E9F0 !important;display:flex !important;
       justify-content:space-around !important;gap:0 !important;
       padding:4px 2px calc(4px + env(safe-area-inset-bottom)) !important;
       z-index:70 !important;overflow:visible !important;flex:none !important;
       box-shadow:0 -1px 8px rgba(16,24,40,.05) !important}
  .nav a{flex:1 1 0 !important;text-align:center !important;font-size:13px !important;
         padding:9px 2px !important;height:auto !important;border-radius:10px !important;
         line-height:1.25 !important;font-weight:500 !important}
  .nav a.on{background:#101828 !important;color:#fff !important}
  .nav .right{display:none !important}

  /* KPI：一行 2 个，压扁 */
  .cards{grid-template-columns:1fr 1fr !important;gap:6px !important;margin-bottom:12px !important}
  .kpi{padding:9px 10px !important;border-radius:10px !important}
  .kpi .k{font-size:10.5px !important;line-height:1.2}
  .kpi .v{font-size:17px !important;line-height:1.25;margin-top:1px}

  /* 持仓卡：去掉多余留白 */
  .holdcard{margin-bottom:8px !important;border-radius:12px !important}
  .hold{padding:10px 12px !important;display:block !important}
  .hold-t{font-size:14.5px !important;line-height:1.3 !important;gap:6px}
  .hold-t .code{font-size:10.5px}
  .chipx{font-size:10px !important;padding:0 7px !important}

  /* 四个指标：一行 4 列 */
  .hold-m{grid-template-columns:repeat(4,1fr) !important;gap:2px 6px !important;margin-top:8px !important}
  .hold-m .k{font-size:9.5px !important;line-height:1.2;color:#98A2B3 !important}
  .hold-m .v{font-size:12px !important;line-height:1.3;white-space:nowrap;
             overflow:hidden;text-overflow:ellipsis}
  .hold-m .v span,.hold-m .v s{font-size:9px !important}

  /* 收益率 + 当日收益 合并成一行 */
  .hold-pct{text-align:left !important;margin-top:6px !important;display:flex !important;
            align-items:baseline !important;gap:8px !important;flex-wrap:wrap !important}
  .hold-pct .big{font-size:21px !important;line-height:1.1 !important}
  .hold-pct .cap{font-size:10px !important;margin:0 !important;color:#98A2B3 !important}
  .hold-pct .prev{font-size:10px !important;margin:0 !important;color:#98A2B3 !important}

  /* 按钮行：28px，贴底 */
  .hold-act{display:flex !important;gap:6px !important;justify-content:flex-start !important;
            margin-top:8px !important;flex-direction:row !important;align-items:center !important}
  .hold-act .btn.sm{flex:1 1 0;height:28px !important;min-height:28px !important;
                    padding:0 6px !important;font-size:12px !important;border-radius:6px !important}
  .hold-act > div{gap:6px !important;font-size:11.5px !important}

  /* 折叠标题一行 */
  details summary.sumrow{padding:7px 0 !important;font-size:12px !important}
  .holdbody{padding:0 0 8px !important}
  .holdbody li{font-size:12.5px !important;line-height:1.55 !important;margin:2px 0 !important}
  .holdbody ul.why{padding-left:14px !important}

  /* 分页按钮 */
  .seg{margin-bottom:8px !important;padding:2px !important}
  .seg-btn{padding:6px 8px !important;font-size:12px !important}

  /* 说明/操作块收紧 */
  .note,.act,.card,.card-form,.alloc,.finlist,.checklist{padding:10px 12px !important;border-radius:10px !important}
  .note{font-size:12.5px !important;line-height:1.6 !important}
  .note div{padding:3px 0 !important}
  .act{font-size:12px !important;line-height:1.6 !important;margin-top:8px !important}
  .why{margin-top:6px !important}

  /* 表格：小字号 */
  .tblwrap table{min-width:520px;font-size:11.5px !important}
  .tblwrap th,.tblwrap td{padding:7px 6px !important}

  /* 表单 */
  .grid4{grid-template-columns:1fr !important;gap:8px !important;margin-bottom:10px !important}
  input,select{min-height:38px !important;font-size:14.5px !important}
  .btn{height:36px !important;min-height:36px !important;font-size:13px !important}

  /* 图表 */
  .chsvg{height:190px !important}
  .chartbox{padding:8px !important}
  .hero{padding:14px !important;border-radius:12px !important}
  .hero .big{font-size:24px !important;margin:2px 0 !important}
  .hero .flex{gap:12px !important}
}





}
.nav a.moretab{display:none}
@media(max-width:720px){ .nav a.moretab{display:inline-flex} }
