:root{
  --navy:#1c2662; --navy-2:#141b47; --gold:#daa050; --red:#bc2424;
  --orange:#ff9900; --green:#006e46; --topaz:#007289; --violet:#614295;
  --ink:#1a1a1a; --gray:#666464; --line:#e4e5ea; --bg:#f5f6f8; --card:#ffffff;
  --up:#bc2424; --down:#006e46;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:-apple-system,"PingFang SC","Microsoft YaHei","Source Han Sans SC",sans-serif;
  background:var(--bg); color:var(--ink); font-size:14px; line-height:1.5;
}
.num{font-variant-numeric:tabular-nums; font-feature-settings:"tnum"; letter-spacing:-.01em}

/* ===== 顶栏 ===== */
.topbar{background:var(--navy); color:#fff; padding:0 32px; display:flex; align-items:center; height:64px; gap:20px; flex-wrap:nowrap}
.topbar .brand{width:6px;height:28px;background:var(--gold);flex:none}
.topbar h1{font-size:19px;font-weight:700;letter-spacing:.02em;white-space:nowrap;flex:none}
.topbar .sub{font-size:12px;color:#b9bed8;white-space:nowrap;flex:none}
.topbar .spacer{flex:1;min-width:16px}
.legend{display:flex;gap:14px;font-size:12px;color:#cfd3e8;white-space:nowrap;flex:none}
.legend b{font-weight:600}
.legend .star-g{color:var(--gold)}
.topdate{font-size:11px;color:#b9bed8;text-align:right;white-space:nowrap;flex:none;line-height:1.3}
.topdate b{display:block;font-size:15px;color:#fff;font-weight:600}

/* ===== 页面导航 ===== */
.pagenav{background:#fff;border-bottom:1px solid var(--line);padding:0 32px;display:flex;gap:4px}
.pagenav a{display:block;padding:12px 24px;font-size:14px;font-weight:600;color:var(--gray);text-decoration:none;border-bottom:3px solid transparent;white-space:nowrap}
.pagenav a:hover{color:var(--navy)}
.pagenav a.active{color:var(--navy);border-bottom-color:var(--gold)}

.wrap{max-width:1440px;margin:0 auto;padding:24px 32px 64px}

/* ===== 区块标题 ===== */
.sec-head{display:flex;align-items:baseline;gap:14px;margin:28px 0 14px;flex-wrap:nowrap}
.sec-head h2{font-size:17px;font-weight:700;color:var(--navy);white-space:nowrap;flex:none}
.sec-head h2::before{content:"";display:inline-block;width:4px;height:14px;background:var(--gold);margin-right:8px;vertical-align:-1px}
.sec-head .note{font-size:12px;color:var(--gray)}

/* ===== 商机捕捉（文字结论） ===== */
.opp-brief{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--gold);padding:16px 22px}
.opp-s{font-size:13.5px;line-height:1.9;color:var(--ink);margin-bottom:6px}
.opp-s:last-child{margin-bottom:0}
.opp-s b{font-weight:700}
.opp-tag{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:2px;margin-right:10px;vertical-align:1px}
.t-market{background:#eef1f8;color:var(--navy)}
.t-up{background:#fbeaea;color:var(--red)}
.t-down{background:#e9f3ee;color:var(--green)}

/* ===== 收益竞争力（紧凑卡位表） ===== */
table.gap-table{width:100%;border-collapse:collapse;background:var(--card);font-size:13px}
.gap-table th{background:var(--navy);color:#fff;font-size:12px;font-weight:600;padding:8px 14px;text-align:left;white-space:nowrap}
.gap-table td{padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.gap-row{cursor:pointer}
.gap-row:hover{background:#f4f6fb}
.gp-line{font-weight:700;color:var(--navy)}
.gp-toggle{font-size:10px;color:var(--gray);font-weight:400;margin-left:8px}
.gap-detail td{background:#fafbfd;font-size:12px;color:var(--gray);line-height:1.9;white-space:normal}
.gp-win{color:var(--green);font-weight:700}
.gp-near{color:var(--orange);font-weight:600}
.gp-mid{color:var(--ink)}
.gp-far{color:var(--red);font-weight:600}
.gp-na{color:#a3a3a8}
.gp-note{font-size:12px;color:var(--gray);max-width:280px;white-space:normal}
.nt-peer{color:var(--red);font-weight:600}
.nt-ce{color:var(--green);font-weight:600}
.gap-note-line{font-size:11px;color:var(--gray);margin-top:8px}

/* ===== 商机捕捉 ===== */
.opp-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.opp-col{background:var(--card);border:1px solid var(--line);padding:16px 20px}
.opp-head{font-size:13px;font-weight:700;padding-bottom:8px;margin-bottom:8px;border-bottom:2px solid var(--line)}
.opp-head.up-head{color:var(--red);border-bottom-color:#eec3c3}
.opp-head.down-head{color:var(--navy);border-bottom-color:#c9cede}
.opp-item{padding:9px 0;border-bottom:1px dashed var(--line)}
.opp-item:last-child{border-bottom:none}
.opp-line{display:inline-block;font-size:11px;color:var(--topaz);font-weight:700;margin-bottom:3px}
.opp-main{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.opp-name{font-size:13px;font-weight:600}
.opp-num{font-size:22px;font-weight:700}
.opp-dim{font-size:11px;color:var(--gray)}
.opp-fact{font-size:11px;color:var(--gray);margin-top:2px}
.opp-st{font-size:11px;font-weight:700;padding:1px 7px;border-radius:2px;margin-left:auto}
.opp-st.s-breach{background:#7a0f0f;color:#fff}
.opp-st.s-warn{background:var(--red);color:#fff}
.opp-st.s-watch{background:#fdf1dc;color:#b26a00}
.opp-empty{font-size:12px;color:var(--gray);padding:14px 0}
@media(max-width:1100px){.opp-grid{grid-template-columns:1fr}}

/* ===== 收益竞争力（卡位表） ===== */
table.comp-table{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px}
.comp-table th{font-size:11px;color:var(--gray);font-weight:600;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.comp-table td{padding:8px;border-bottom:1px dashed var(--line);white-space:nowrap}
.comp-table tr:last-child td{border-bottom:none}
.ct-dim{font-weight:700;color:var(--navy);font-size:12px}
.ct-name{font-weight:600;font-size:12px}
.ct-res{color:var(--gold);font-style:normal}
.ct-ce{color:var(--gold);font-style:normal;font-size:10px;font-weight:700}
.ct-win{color:var(--green);font-weight:700;font-size:12px}
.ct-lose{color:var(--red);font-weight:600;font-size:12px}
.ct-na{color:#a3a3a8;font-size:12px}

/* ===== 收益竞争力 ===== */
.comp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.comp-card{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--navy);padding:18px 22px}
.comp-card .cc-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px;flex-wrap:wrap}
.comp-card .cc-head h3{font-size:15px;font-weight:700;white-space:nowrap}
.tag{display:inline-block;font-size:11px;padding:1px 8px;border:1px solid var(--line);color:var(--gray);border-radius:2px;white-space:nowrap}
.tag.hard{border-color:#ecd9b8;color:#9a7433;background:#fdf8ef}
.cc-body{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;margin-top:10px}
.cc-col{padding:0 16px;border-left:1px dashed var(--line);min-width:0}
.cc-col:first-child{padding-left:0;border-left:none}
.cc-col .lbl{font-size:12px;color:var(--gray);margin-bottom:2px;white-space:nowrap}
.bigrow{display:flex;align-items:baseline;gap:8px;flex-wrap:nowrap}
.bignum{font-size:30px;font-weight:700;line-height:1.15;white-space:nowrap}
.bignum.sm{font-size:22px}
.vs{font-size:11px;color:var(--gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.unit{font-size:13px;font-weight:500;color:var(--gray)}
.up{color:var(--up)} .down{color:var(--down)}
/* 数据缺失：中性灰，明确区别于 0.00% */
.na{color:#b0b0b5}
.nav-lag{color:var(--orange);font-weight:700;cursor:help}
.lead-flag{font-size:11px;font-weight:700;padding:1px 6px;border-radius:2px;white-space:nowrap}
.lead-flag.win{background:#fbeaea;color:var(--red)}
.lead-flag.lose{background:#e9f3ee;color:var(--green)}
.cc-foot{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:12px;color:var(--gray);display:flex;gap:18px;flex-wrap:wrap}
.cc-foot b{font-weight:600;color:var(--ink)}

/* ===== 回撤预警 ===== */
.alert-summary{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.chip{background:var(--card);border:1px solid var(--line);padding:8px 16px;font-size:12px;color:var(--gray);display:flex;align-items:center;gap:8px;white-space:nowrap}
.chip b{font-size:20px;font-weight:700;color:var(--ink)}
.chip .dot{width:8px;height:8px;border-radius:50%;flex:none}
.dot.safe{background:var(--green)} .dot.watch{background:var(--orange)} .dot.warn{background:var(--red)}
.dot.breach{background:#7a0f0f}
.dot.unknown{background:#b0b0b5}
.sum-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.sum-row .chip-label{padding:5px 14px}
.chip-label{background:var(--navy);color:#fff;font-weight:600}
.dd-pool-label{font-size:12px;font-weight:700;color:var(--gray);margin:10px 0 8px}
.dd-grid.compact{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.dd-empty{font-size:12px;color:#a3a3a8;padding:10px 2px}
.dd-card.small{padding:10px 14px}
.dd-card.small .dd-name{font-size:12px;padding-right:74px}
.dd-card.small .dd-line{font-size:10px;margin:1px 0 5px}
.dd-card.small .dd-cur{font-size:19px}
.dd-card.small .dd-hard{font-size:11px}
.dd-card.small .dd-hard b{font-size:12px}
.dd-card.small .dd-status{font-size:10px;padding:1px 6px;top:9px;right:10px}
.dd-card.small .dd-aux{font-size:10px;margin-top:5px}
.dd-card.s-breach{border-color:#d98a8a;background:#fceded;box-shadow:0 0 0 1px #d98a8a;animation:pulse 2.2s ease-in-out infinite}
.dd-card.s-breach .dd-status{background:#7a0f0f;color:#fff}
.dd-card.s-breach .fill{background:#7a0f0f}
.dd-card.s-breach .dd-cur{color:#7a0f0f}
.dd-line-head{display:flex;align-items:baseline;gap:10px;margin:22px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.dd-line-head h3{font-size:14px;font-weight:700;color:var(--navy);white-space:nowrap}
.dd-line-head .meta{font-size:11px;color:var(--gray)}
.dd-line-head .cnt{margin-left:auto;font-size:11px;color:var(--gray);white-space:nowrap}
.dd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.dd-card{background:var(--card);border:1px solid var(--line);padding:14px 18px;position:relative}
.dd-card .dd-name{font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px;padding-right:86px}
.dd-card .dd-line{font-size:11px;color:var(--gray);margin:2px 0 8px}
.dd-main{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}
.dd-cur{font-size:26px;font-weight:700}
.dd-hard{font-size:12px;color:var(--gray);white-space:nowrap}
.dd-hard b{color:var(--ink);font-size:14px}
.bar{height:6px;background:#eef0f3;border-radius:3px;position:relative}
.bar .fill{position:absolute;left:0;top:0;bottom:0;border-radius:3px}
.bar .tick{position:absolute;top:-2px;bottom:-2px;width:1px;background:#c9cbd2}
.bar-scale{display:flex;justify-content:space-between;font-size:10px;color:#a3a3a8;margin-top:4px}
.dd-status{position:absolute;top:12px;right:14px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:2px;white-space:nowrap}
.dd-card.s-safe .dd-status{background:#e9f3ee;color:var(--green)}
.dd-card.s-safe .fill{background:var(--green)}
.dd-card.s-unknown{border-color:#d8d8dd;background:#fafafb}
.dd-card.s-unknown .dd-status{background:#e8e8ec;color:#6b6b72}
.dd-card.s-unknown .dd-cur{color:#b0b0b5}
.dd-card.s-watch{border-color:#f3d9ae;background:#fffdf7}
.dd-card.s-watch .dd-status{background:#fdf1dc;color:#b26a00}
.dd-card.s-watch .fill{background:var(--orange)}
.dd-card.s-warn{border-color:#eec3c3;background:#fdf5f5;box-shadow:0 0 0 1px #eec3c3;animation:pulse 2.2s ease-in-out infinite}
.dd-card.s-warn .dd-status{background:var(--red);color:#fff}
.dd-card.s-warn .fill{background:var(--red)}
.dd-card.s-warn .dd-cur{color:var(--red)}
@keyframes pulse{0%,100%{box-shadow:0 0 0 1px #eec3c3}50%{box-shadow:0 0 0 4px rgba(188,36,36,.18)}}

/* ===== 明细区 ===== */
.req-bar{background:#fdf8ef;border:1px solid #ecd9b8;border-left:3px solid var(--gold);padding:9px 16px;font-size:12px;color:#7a5c22;margin:0 0 14px;white-space:nowrap;overflow-x:auto}
.req-bar b{color:#5c431a}
.req-bar.hj{background:#f0f5fa;border-color:#c7d6e8;border-left-color:var(--topaz);color:#28566b}
.req-bar.hj b{color:#17414f}
.pool-head{display:flex;align-items:baseline;gap:10px;margin:26px 0 10px}
.pool-head h3{font-size:14px;font-weight:700;color:var(--navy);white-space:nowrap}
.pool-head h3::before{content:"";display:inline-block;width:3px;height:12px;background:var(--topaz);margin-right:7px;vertical-align:-1px}
.pool-head:first-of-type{margin-top:0}
.pool-head .meta{font-size:11px;color:var(--gray)}
.tbl-scroll{overflow-x:auto}
table.detail{width:100%;border-collapse:collapse;background:var(--card);font-size:13px;min-width:1180px}
table.detail th{background:var(--navy);color:#fff;font-weight:600;font-size:12px;padding:9px 10px;text-align:right;white-space:nowrap}
table.detail th:nth-child(-n+3){text-align:left}
table.detail td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
table.detail td:nth-child(-n+3){text-align:left}
table.detail tbody tr:hover{background:#f4f6fb}
tr.ce td{background:#fdf9f1}
tr.ce td:first-child{border-left:3px solid var(--gold)}
table.detail td:first-child{border-left:3px solid transparent}
.fund-name{font-weight:600}
.fund-name .pool-star{color:var(--gold);margin-right:2px}
.fund-code{font-size:11px;color:var(--gray)}
.strat{color:var(--topaz);font-size:12px;font-weight:600}
.rank-badge{display:inline-block;min-width:20px;text-align:center;font-size:11px;font-weight:700;border-radius:2px;padding:0 4px;margin-left:6px}
.rank-1{background:var(--gold);color:#fff}
.rank-2{background:#e8dcc4;color:#7a5c22}
.rank-3{background:#f1ede4;color:var(--gray)}
.tbl-note{font-size:11px;color:var(--gray);margin-top:10px}
.dd-aux{margin-top:8px;font-size:11px;color:var(--gray)}
.dd-aux b{color:var(--ink);font-weight:600}
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{background:#2a357a}
th.sortable::after{content:"⇅";margin-left:5px;font-size:10px;opacity:.45}
th.sortable[data-dir="asc"]::after{content:"↑";opacity:1;color:var(--gold)}
th.sortable[data-dir="desc"]::after{content:"↓";opacity:1;color:var(--gold)}
.demo-flag{position:fixed;bottom:16px;right:16px;background:var(--ink);color:#fff;font-size:11px;padding:6px 12px;border-radius:3px;opacity:.75;z-index:99}

/* ===== 刷新按钮 ===== */
.refresh-btn{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);color:#cfd3e8;font-size:12px;padding:5px 14px;border-radius:4px;cursor:pointer;white-space:nowrap;flex:none;transition:all .2s}
.refresh-btn:hover{background:rgba(255,255,255,.22);color:#fff;border-color:rgba(255,255,255,.4)}
.refresh-btn:disabled{opacity:.5;cursor:not-allowed}
.refresh-btn .icon{font-size:14px;transition:transform .3s}
.refresh-btn.spinning .icon{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.refresh-toast{position:fixed;bottom:50px;right:16px;background:var(--navy);color:#fff;font-size:12px;padding:10px 18px;border-radius:6px;z-index:100;box-shadow:0 4px 16px rgba(0,0,0,.2);opacity:0;transform:translateY(10px);transition:all .3s}
.refresh-toast.show{opacity:1;transform:translateY(0)}
@media(max-width:1100px){.comp-grid{grid-template-columns:1fr}.topbar .sub{display:none}}

/* ===== 移动端适配 ===== */
@media(max-width:768px){
  .topbar{padding:0 14px;height:auto;min-height:56px;flex-wrap:wrap;gap:10px;padding-top:8px;padding-bottom:8px}
  .topbar h1{font-size:16px}
  .topbar .brand{height:22px}
  .legend{width:100%;order:3;font-size:11px;gap:10px}
  .topdate{margin-left:auto}
  .topdate b{font-size:13px}
  .pagenav{padding:0 10px;overflow-x:auto}
  .pagenav a{padding:10px 16px;font-size:13px}
  .wrap{padding:16px 12px 48px}
  .sec-head{flex-wrap:wrap;gap:6px}
  .sec-head .note{width:100%}
  .opp-brief{padding:14px 16px}
  .opp-s{font-size:13px}
  .comp-grid{grid-template-columns:1fr}
  .cc-body{grid-template-columns:1fr;gap:10px}
  .cc-col{padding:0;border-left:none}
  .bignum{font-size:24px}
  .bignum.sm{font-size:18px}
  /* 表格类横向滑动 */
  #compGrid{overflow-x:auto;-webkit-overflow-scrolling:touch}
  table.gap-table{min-width:640px;font-size:12px}
  .gap-table th{padding:7px 10px;font-size:11px}
  .gap-table td{padding:8px 10px}
  .gp-note{max-width:200px;font-size:11px}
  .gp-who{font-size:10px}
  .gap-detail td{font-size:11px;line-height:1.7;padding:10px}
  .dd-grid,.dd-grid.compact{grid-template-columns:1fr}
  .dd-card .dd-name{padding-right:80px}
  .sum-row{gap:8px}
  .chip{padding:4px 10px;font-size:11px}
  .chip b{font-size:14px}
  .req-bar{font-size:11px;padding:8px 12px}
  .tbl-note{font-size:10px}
  table.detail{font-size:12px;min-width:1080px}
  table.detail th{padding:7px 8px;font-size:11px}
  table.detail td{padding:8px}
  .dd-line-head .meta,.dd-line-head .cnt{font-size:10px}
  .pool-head h3{font-size:13px}
  .demo-flag{position:static;display:inline-block;margin:16px 12px}
}
.gp-who{font-size:11px;font-weight:400;color:var(--gray)}
