/* 从硅到应用 · 移动优先
   基准是 390px 竖屏手机；≥900px 才启用桌面增强。 */
:root{
  --bg:#0b0e13; --bg2:#11151d; --bg3:#171c26; --bg4:#1e2531;
  --line:#232b38; --line2:#333d4e;
  --tx:#e8edf4; --tx2:#98a4b6; --tx3:#67748a;
  --SEMI:#f0a833; --IN:#25b3cf; --APP:#ef5f95; --BASE:#5cc9b8; --DISP:#7f8a9a;
  --S:#f0a833; --I:#25b3cf; --E:#9b7bf0; --N:#4fc978; --F:#4d9ff7; --A:#ef5f95; --X:#7f8a9a;
  --hist:#c9a86c; --pos:#4fc978; --neg:#f0605f; --warn:#f0a833; --acc:#25b3cf;
  --mono:ui-monospace,"SF Mono",Menlo,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  --nav:58px; --top:52px;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
}
:root[data-theme="light"]{
  --bg:#f6f7f9; --bg2:#fff; --bg3:#eef1f5; --bg4:#e3e8ef;
  --line:#e1e5ec; --line2:#c8cfda;
  --tx:#151a21; --tx2:#55606f; --tx3:#8a94a4;
  --SEMI:#b8760c; --IN:#0b8399; --APP:#cc3369; --BASE:#1e9184; --DISP:#5f6976;
  --S:#b8760c; --I:#0b8399; --E:#6845c9; --N:#25904a; --F:#2172c9; --A:#cc3369; --X:#5f6976;
  --hist:#8d6f3f; --pos:#25904a; --neg:#cf3634; --acc:#0b8399;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%;overflow-x:hidden;overflow-y:scroll;
     scrollbar-gutter:stable;scrollbar-width:thin;
     scrollbar-color:var(--line2) var(--bg)}
body{background:var(--bg);color:var(--tx);font-family:var(--sans);font-size:15px;line-height:1.6;
     -webkit-font-smoothing:antialiased;overscroll-behavior-y:none;
     overflow-x:hidden;overflow-y:auto;width:100%;max-width:100vw;min-height:100vh}
b,strong{font-weight:650}
:root:not([data-theme="light"]) .prose b{color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--line2);border:2px solid var(--bg);border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:var(--tx3)}

/* ══════ 顶栏 ══════ */
#top{position:fixed;top:0;left:0;right:0;height:calc(var(--top) + var(--sat));
     padding-top:var(--sat);background:var(--bg2);border-bottom:1px solid var(--line);
     display:flex;align-items:center;gap:10px;padding-left:14px;padding-right:10px;z-index:50}
#back{width:38px;height:38px;margin-left:-8px;border:0;background:transparent;color:var(--tx2);
      font-size:22px;display:none;place-items:center;cursor:pointer;flex:0 0 auto}
#back.on{display:grid}
#ttl{font-size:16px;font-weight:700;flex:1;min-width:0;overflow:hidden;
     text-overflow:ellipsis;white-space:nowrap}
#ttl small{display:block;font-size:10px;font-weight:400;color:var(--tx3);
           letter-spacing:.6px;margin-top:-2px;overflow:hidden;text-overflow:ellipsis}
.ticon{width:38px;height:38px;border:0;background:transparent;color:var(--tx2);font-size:17px;
       display:grid;place-items:center;cursor:pointer;flex:0 0 auto;border-radius:10px}
.ticon:active{background:var(--bg3)}

/* ══════ 内容 ══════ */
#app{padding-top:calc(var(--top) + var(--sat));
     padding-bottom:calc(var(--nav) + var(--sab) + 16px);min-height:100vh;
     width:100%;max-width:100vw;overflow-x:hidden}
.pg{padding:16px 14px 8px}
.pg h1{font-size:22px;font-weight:750;letter-spacing:-.2px;line-height:1.25}
.pg .lead{color:var(--tx2);font-size:13.5px;line-height:1.72;margin-top:8px}
.sect{padding:0 14px;margin-top:22px}
.sect > h2{font-size:15px;font-weight:700;margin-bottom:10px;display:flex;
           align-items:center;gap:8px}
.sect > h2:after{content:"";flex:1;height:1px;background:var(--line)}
.prose{font-size:14px;line-height:1.78;color:var(--tx2);overflow-wrap:anywhere}
.note{background:var(--bg2);border:1px solid var(--line);border-left:3px solid var(--warn);
      border-radius:10px;padding:12px 14px;font-size:13px;color:var(--tx2);line-height:1.7;margin:12px 0}

/* ══════ 底部标签栏 ══════ */
#nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav) + var(--sab));
     padding-bottom:var(--sab);background:var(--bg2);border-top:1px solid var(--line);
     display:flex;z-index:50}
#nav a{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
       gap:3px;color:var(--tx3);font-size:10.5px;text-decoration:none;cursor:pointer;
       -webkit-user-select:none;user-select:none}
#nav a svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.9;
           stroke-linecap:round;stroke-linejoin:round}
#nav a.on{color:var(--acc)}
#nav a:active{background:var(--bg3)}

/* ══════ 卡片 ══════ */
.card{background:var(--bg2);border:1px solid var(--line);border-radius:13px;
      padding:14px;margin-bottom:10px}
.tap{cursor:pointer;position:relative;transition:background .12s}
.tap:active{background:var(--bg3)}
.tap::after{content:"›";position:absolute;right:12px;top:50%;transform:translateY(-50%);
            color:var(--tx3);font-size:20px;line-height:1}
.tap.nochev::after{display:none}
.rowlist .tap{padding-right:30px}

/* 公司卡 */
.co{display:flex;align-items:center;gap:11px;padding:12px 14px;border-bottom:1px solid var(--line);
    cursor:pointer;position:relative;max-width:100%;overflow:hidden}
.co:active{background:var(--bg3)}
.co:last-child{border-bottom:0}
.co .dot{width:9px;height:9px;border-radius:3px;flex:0 0 auto}
.co .mid{flex:1 1 auto;min-width:0;overflow:hidden}
.co .sy{font-family:var(--mono);font-weight:650;font-size:14.5px;display:flex;
        align-items:center;gap:6px;min-width:0}
.co .sy > span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.co .sy .tag{font-size:9.5px;padding:1px 5px;border-radius:4px;background:var(--bg4);
             color:var(--tx3);font-family:var(--sans);font-weight:500}
.co .sy .tag.core{color:var(--acc)}
.co .nm{font-size:11.8px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;
        white-space:nowrap;margin-top:1px}
.co .rt{text-align:right;flex:0 0 auto;font-family:var(--mono);white-space:nowrap;min-width:62px}
.co .rt b{display:block;font-size:14px;font-weight:650}
.co .rt span{display:block;font-size:10.5px;color:var(--tx3);margin-top:1px}
.pos{color:var(--pos)} .neg{color:var(--neg)} .dim{color:var(--tx3)}

/* 指标格 */
.mets{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:6px;margin:12px 0}
.mx{background:var(--bg3);border:1px solid var(--line);border-radius:9px;padding:7px 9px;min-width:0}
.mx span{display:block;font-size:9.6px;color:var(--tx3);white-space:nowrap;
         overflow:hidden;text-overflow:ellipsis}
.mx b{display:block;font-family:var(--mono);font-size:14px;font-weight:650;margin-top:2px}
.metric-method{display:grid;gap:4px;margin-top:8px;font-size:11px;line-height:1.65;color:var(--tx3);overflow-wrap:anywhere}
.metric-method b{color:var(--tx2);font-weight:700}

/* ══════ 底部抽屉（筛选 / 控件） ══════ */
#sheet{position:fixed;inset:0;z-index:80;display:none}
#sheet.on{display:block}
#sheet .mask{position:absolute;inset:0;background:rgba(0,0,0,.55);animation:fade .2s}
#sheet .box{position:absolute;left:0;right:0;bottom:0;background:var(--bg2);
            border-radius:18px 18px 0 0;max-height:82vh;overflow-y:auto;
            padding:8px 0 calc(20px + var(--sab));animation:up .24s cubic-bezier(.3,1,.4,1)}
@keyframes fade{from{opacity:0}} @keyframes up{from{transform:translateY(100%)}}
#sheet .grab{width:38px;height:4px;border-radius:3px;background:var(--line2);margin:6px auto 12px}
#sheet h3{font-size:15px;font-weight:700;padding:0 16px 10px}
.sheet-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px 10px}
.sheet-title h3{padding:0;min-width:0}
.sheet-head-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.sheet-detail{flex:0 0 auto;border:1px solid var(--acc);background:transparent;color:var(--acc);
              border-radius:8px;padding:6px 11px;font-family:var(--sans);font-size:12.5px;
              font-weight:650;cursor:pointer}
.sheet-detail:active{transform:scale(.96)}
.sheet-close{width:32px;height:32px;display:grid;place-items:center;flex:0 0 auto;padding:0;
             border:1px solid var(--line2);border-radius:9px;background:var(--bg3);color:var(--tx2);
             font:400 22px/1 var(--sans);cursor:pointer}
.sheet-close:active{transform:scale(.94);background:var(--bg4)}
.fgrp{padding:10px 16px;border-top:1px solid var(--line)}
.fgrp > label{display:block;font-size:10.5px;letter-spacing:1px;color:var(--tx3);
              text-transform:uppercase;font-weight:700;margin-bottom:8px}
.opts{display:flex;flex-wrap:wrap;gap:7px}
.opt{padding:8px 13px;border-radius:9px;border:1px solid var(--line2);background:transparent;
     color:var(--tx2);font-size:13px;cursor:pointer;font-family:var(--sans);min-height:36px}
.opt.on{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.opt:active{transform:scale(.97)}
.opt.rel-opt{border-color:var(--relc);color:var(--relc)}
.opt.rel-opt.on{background:var(--relc);border-color:var(--relc);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.opt.layer-opt{border-color:var(--layerc);color:var(--layerc)}
.opt.layer-opt.on{background:var(--layerc);border-color:var(--layerc);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.graph-filter-note{font-size:10.5px;color:var(--tx3);line-height:1.55;margin-top:9px}
.sheetbar{display:flex;gap:9px;padding:14px 16px 0;border-top:1px solid var(--line);margin-top:10px}
.sheetbar button{flex:1;padding:13px;border-radius:11px;font-size:14.5px;font-weight:650;
                 cursor:pointer;border:1px solid var(--line2);background:var(--bg3);color:var(--tx)}
.sheetbar button.primary{background:var(--acc);border-color:var(--acc);color:#fff}
.filter-body{max-height:calc(82vh - 132px);overflow-y:auto;overscroll-behavior:contain;
             scrollbar-width:thin;border-top:1px solid var(--line)}
.filter-body .fgrp:first-child{border-top:0}

/* 工具条 */
.tbar{position:sticky;top:calc(var(--top) + var(--sat));z-index:20;background:var(--bg);
      padding:9px 12px;display:flex;gap:7px;align-items:center;border-bottom:1px solid var(--line);
      max-width:100vw;overflow:hidden}
/* iOS Safari 会把移动端吸顶工具条推离原占位并盖住首行；移动端随列表正常滚动。 */
.cos-tbar{position:relative;top:auto}
.tbar input{flex:1;min-width:0;padding:9px 12px;background:var(--bg3);border:1px solid var(--line);
            border-radius:10px;color:var(--tx);font-size:14px;font-family:var(--sans);outline:none}
.tbar input:focus{border-color:var(--line2)}
.tbar button{padding:9px 11px;border-radius:10px;border:1px solid var(--line2);background:var(--bg3);
             color:var(--tx2);font-size:12.5px;cursor:pointer;white-space:nowrap;flex:0 0 auto}
.tbar button.act{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.cnt{font-size:11.5px;color:var(--tx3);padding:8px 14px 0}

/* ══════ 详情页 ══════ */
.dhero{padding:16px 14px 12px;border-bottom:1px solid var(--line)}
.dhero .kd{font-size:10px;letter-spacing:1.3px;font-weight:700;text-transform:uppercase;margin-bottom:5px}
.dhero h1{font-size:21px;font-weight:750;line-height:1.25}
.dhero .sub{font-size:12.5px;color:var(--tx2);margin-top:5px}
.sec{padding:16px 14px;border-bottom:1px solid var(--line)}
.sec:last-child{border-bottom:0}
.sec > h3{font-size:11px;letter-spacing:1.1px;color:var(--tx3);font-weight:700;
          text-transform:uppercase;margin-bottom:9px;display:flex;align-items:center;gap:8px}
.sec > h3 .n{background:var(--bg4);color:var(--tx2);border-radius:5px;padding:2px 6px;
             font-family:var(--mono);font-size:9.5px}
.sec p{font-size:14px;line-height:1.78;color:var(--tx2);overflow-wrap:anywhere}
.sec p + p{margin-top:8px}
.sec-fold{padding:0}
.sec-fold>summary{display:flex;align-items:center;gap:8px;padding:16px 14px;cursor:pointer;
                  list-style:none;font-size:11px;letter-spacing:1.1px;color:var(--tx3);font-weight:700}
.sec-fold>summary::-webkit-details-marker{display:none}
.sec-fold>summary .n{background:var(--bg4);color:var(--tx2);border-radius:5px;padding:2px 6px;
                    font-family:var(--mono);font-size:9.5px}
.sec-fold>summary i{margin-left:auto;font-style:normal;font-size:16px;transition:transform .2s}
.sec-fold[open]>summary i{transform:rotate(180deg)}
.sec-fold>.profile-block{padding:0 14px 16px}
.sec-fold>.sec-fold-content{padding:0 14px 16px}

/* 折叠 */
.acc{border:1px solid var(--line);border-radius:12px;margin-bottom:9px;overflow:hidden;background:var(--bg2)}
.acc > .hd{padding:13px 14px;display:flex;align-items:center;gap:11px;cursor:pointer;
           border-left:4px solid var(--line2)}
.acc > .hd:active{background:var(--bg3)}
.acc > .hd .cv{color:var(--tx3);font-size:17px;transition:transform .2s;flex:0 0 auto}
.acc.on > .hd .cv{transform:rotate(90deg)}
.acc > .bd{display:none;padding:2px 14px 15px;border-top:1px solid var(--line)}
.acc.on > .bd{display:block}

/* 三情景 */
.scen{display:grid;gap:9px}
.sc{border-radius:11px;padding:12px 13px;border:1px solid var(--line);background:var(--bg3);
    border-left-width:3px}
.sc.u{border-left-color:var(--pos)} .sc.m{border-left-color:var(--tx3)} .sc.d{border-left-color:var(--neg)}
.sc h4{font-size:12px;font-weight:700;margin-bottom:5px}
.sc.u h4{color:var(--pos)} .sc.m h4{color:var(--tx2)} .sc.d h4{color:var(--neg)}
.sc p{font-size:13.2px;line-height:1.7;color:var(--tx2)}

/* 跟踪 / 触发：手机上用卡片而不是表格 */
.kv{border:1px solid var(--line);border-radius:11px;padding:11px 13px;margin-bottom:8px;background:var(--bg2)}
.kv .k{font-size:13.5px;font-weight:650;color:var(--tx);line-height:1.45}
.kv .src{font-size:11px;color:var(--tx3);margin-top:3px;font-family:var(--mono)}
.kv .v{font-size:12.8px;color:var(--tx2);line-height:1.68;margin-top:7px;
       padding-top:7px;border-top:1px dashed var(--line)}
.kv.trg{border-left:3px solid var(--warn)}
.kv.trg .k:before{content:"触发 · ";color:var(--warn);font-weight:700;font-size:11px}
.kv.trg .v:before{content:"操作 · ";color:var(--tx3);font-weight:700;font-size:11px}

/* 公司档案：FMP 介绍、业务/产品、关键日期、联系与证券字段 */
.profile-block{display:grid;gap:10px}
.profile-summary{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.profile-summary>div{border:1px solid var(--line);border-radius:11px;background:var(--bg2);padding:12px 13px;min-width:0}
.profile-summary h4{font-size:10.5px;letter-spacing:.8px;color:var(--tx3);margin-bottom:6px;text-transform:uppercase}
.profile-summary p{font-size:13.2px;line-height:1.7;color:var(--tx2)}
.profile-analysis{margin:0;border-left-color:var(--acc)}
.profile-analysis>b{display:block;font-size:12px;color:var(--tx);margin-bottom:5px}
.profile-analysis p{font-size:12.8px;line-height:1.7;color:var(--tx2)}
.profile-analysis-sources{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.profile-analysis-sources a{border:1px solid var(--line2);border-radius:999px;padding:5px 8px;
  color:var(--acc);font-size:10.5px;text-decoration:none;background:var(--bg3)}
.profile-niche{display:inline-flex;border:1px solid color-mix(in srgb,var(--acc) 42%,var(--line));
  color:var(--acc);border-radius:99px;padding:3px 8px;font-size:11px;font-weight:650;margin-bottom:7px}
.profile-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:7px}
.profile-fact{border:1px solid var(--line);border-radius:10px;background:var(--bg3);padding:9px 10px;min-width:0}
.profile-fact.wide{grid-column:span 2}
.profile-fact>span,.profile-more-grid span{display:block;color:var(--tx3);font-size:9.8px;margin-bottom:3px}
.profile-fact>b{display:block;font-size:12.5px;line-height:1.45;font-weight:650;overflow-wrap:anywhere}
.profile-fact small{display:block;color:var(--tx3);font-size:9.6px;line-height:1.4;margin-top:3px}
.profile-fact a{color:var(--acc);text-decoration:none;overflow-wrap:anywhere}
.profile-miss{color:var(--tx3);font-weight:500}
.profile-intro,.profile-more{border:1px solid var(--line);border-radius:10px;background:var(--bg2);overflow:hidden}
.profile-intro h4{padding:10px 12px;font-size:12px;font-weight:650;color:var(--tx2)}
.profile-intro h4 span{float:right;color:var(--tx3);font-family:var(--mono);font-size:9.5px;font-weight:500;margin-top:2px}
.profile-more summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:12px;font-weight:650;color:var(--tx2)}
.profile-more summary::-webkit-details-marker{display:none}
.profile-more summary:before{content:"›";display:inline-block;color:var(--tx3);font-size:16px;
  line-height:1;margin-right:7px;transition:transform .18s}
.profile-more[open] summary:before{transform:rotate(90deg)}
.profile-intro p{border-top:1px solid var(--line);padding:12px 13px;font-size:12.8px;line-height:1.75;color:var(--tx2)}
.profile-more-grid{border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0}
.profile-more-grid>div{padding:9px 11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}
.profile-more-grid b{display:block;font-family:var(--mono);font-size:11px;color:var(--tx2);font-weight:550;overflow-wrap:anywhere}
.profile-source{font-size:10.5px;color:var(--tx3);line-height:1.6;padding:0 2px}
@media(max-width:620px){.profile-summary{grid-template-columns:1fr}.profile-fact.wide{grid-column:span 1}}

/* 供应链：把关系、比例口径、替代难度和盈利传导放在同一张卡里 */
.chain-method{border:1px solid color-mix(in srgb,var(--acc) 42%,var(--line));border-left:3px solid var(--acc);
  border-radius:11px;background:var(--bg2);padding:12px 13px;font-size:12.8px;color:var(--tx2);line-height:1.7;margin-bottom:14px}
.chain-grp{margin:12px 0 15px}.chain-grp>h4{font-size:12px;color:var(--tx3);margin:0 0 8px;font-weight:700}
.chain-card{border:1px solid var(--line);border-radius:12px;background:var(--bg2);padding:12px 13px;margin-bottom:9px}
.chain-card.sup{border-left:3px solid var(--warn)}.chain-card.cus{border-left:3px solid var(--acc)}
.chain-head{display:flex;align-items:center;gap:8px;margin-bottom:9px}.chain-name{font-size:14px;font-weight:700;flex:1;min-width:0}
.chain-name[onclick]{cursor:pointer}.chain-name span{color:var(--acc);margin-left:6px}
.sub-tag{font-size:10.5px;border:1px solid var(--line);border-radius:99px;padding:3px 7px;white-space:nowrap}
.sub-tag.s-lo{color:var(--neg);border-color:color-mix(in srgb,var(--neg) 38%,var(--line))}
.sub-tag.s-mid{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 38%,var(--line))}
.sub-tag.s-hi{color:var(--pos);border-color:color-mix(in srgb,var(--pos) 38%,var(--line))}
.sub-tag.s-na{color:var(--tx3)}
.chain-product{font-size:12.8px;color:var(--tx2);line-height:1.55;margin-bottom:9px}.chain-product b,
.chain-facts b,.chain-impact b{display:block;color:var(--tx3);font-size:10.5px;font-weight:650;margin-bottom:2px}
.chain-basis{display:block;color:var(--tx3);font-size:10.5px;margin-top:4px;font-family:var(--mono)}
.chain-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}.chain-facts>div{background:var(--bg3);border-radius:8px;
  padding:8px 9px;font-size:11.8px;color:var(--tx2);line-height:1.5}
.chain-impact{font-size:12px;color:var(--tx2);line-height:1.58;border-top:1px dashed var(--line);padding-top:8px;margin-top:9px}
.chain-caveat,.chain-empty{font-size:11px;color:var(--tx3);line-height:1.6}.chain-caveat{padding:0 2px}
@media(max-width:620px){.chain-facts{grid-template-columns:1fr}.chain-card{padding:11px}.chain-head{align-items:flex-start}}

/* 历史卡 */
.hc{border:1px solid var(--line);border-radius:12px;padding:12px 13px;background:var(--bg2);
    margin-bottom:9px;cursor:pointer;position:relative}
.hc:active{background:var(--bg3)}
.hc .t{display:flex;align-items:baseline;gap:9px;padding-right:20px}
.hc .t b{font-size:14.5px;color:var(--hist);line-height:1.3}
.hc .t i{font-style:normal;font-family:var(--mono);font-size:10.5px;color:var(--tx3);
         flex:0 0 auto;margin-left:auto}
.hc .w{font-size:12.8px;color:var(--tx2);line-height:1.66;margin-top:8px;
       padding-left:9px;border-left:2px solid var(--line2)}
.hc::after{content:"›";position:absolute;right:12px;top:13px;color:var(--tx3);font-size:19px}
.hist-ref{font-size:11px;color:var(--tx3);margin-top:5px}
.rel-sub{font-size:10.5px;color:var(--tx3);line-height:1.45;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 历史页：按周期分组 */
.hist-eras{margin-top:10px}
.hist-mode{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:14px 0 10px;padding:4px;
  background:var(--bg2);border:1px solid var(--line);border-radius:12px}
.hist-mode button{min-height:38px;border:0;border-radius:9px;background:transparent;color:var(--tx3);
  font:650 12.5px var(--sans);cursor:pointer}.hist-mode button.act{background:var(--hist);color:#111}
.hist-lesson>.hd{border-left-color:var(--acc)}.hist-lesson .hist-era-name{color:var(--acc)}
.hist-lesson .hist-era-period b{color:var(--acc)}.hist-lesson .hist-era-note{border-left-color:var(--acc)}
.hist-layer>.hd{border-left-width:3px}.hist-layer>.bd{background:var(--bg)}
.hist-era{margin-bottom:11px}
.hist-era > .hd{min-height:76px;border-left-color:var(--hist);align-items:center}
.hist-era-main{flex:1;min-width:0}
.hist-era-name{font-size:16px;font-weight:720;color:var(--hist);line-height:1.35}
.hist-era-focus{font-size:11.5px;color:var(--tx3);line-height:1.45;margin-top:3px;
                 overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist-era-meta{flex:0 0 auto;text-align:right;font-family:var(--mono);padding-left:8px}
.hist-era-meta b{display:block;color:var(--tx2);font-size:11px;font-weight:600}
.hist-era-meta span{display:block;color:var(--tx3);font-size:10px;margin-top:2px}
.hist-era > .bd{padding:0}
.hist-era-intro{padding:15px 14px 5px}
.hist-era-period{display:flex;align-items:center;justify-content:space-between;gap:12px;
                  border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px}
.hist-era-period span{font-size:10px;letter-spacing:1px;color:var(--tx3);font-weight:700}
.hist-era-period b{font-family:var(--mono);font-size:12px;color:var(--hist)}
.hist-era-note{border-left-color:var(--hist);margin-bottom:10px}
.hist-era-list{padding:5px 14px 6px;border-top:1px solid var(--line)}
.hist-era-list h3{font-size:11px;letter-spacing:.7px;color:var(--tx3);font-weight:700;
                   margin:12px 0 10px;text-transform:uppercase}
.hist-era-list h3 span{font-family:var(--mono);background:var(--bg4);color:var(--tx2);
                        border-radius:5px;padding:2px 6px;margin-right:7px}
.hist-era-list .empty{padding:20px 10px}
.hist-dir-badge{flex:0 0 auto;border-radius:999px;padding:2px 7px;font:700 9px var(--mono);line-height:1.4}
.hist-dir-badge.negative{color:var(--neg);background:color-mix(in srgb,var(--neg) 12%,transparent);border:1px solid color-mix(in srgb,var(--neg) 36%,transparent)}
.hist-dir-badge.positive{color:var(--pos);background:color-mix(in srgb,var(--pos) 12%,transparent);border:1px solid color-mix(in srgb,var(--pos) 36%,transparent)}
.hist-direction-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 8px;
  padding:8px 10px;border-radius:8px;font-size:11px;letter-spacing:.4px}
.hist-direction-head b{font:700 11px var(--mono)}
.hist-direction-head.negative{color:var(--neg);background:color-mix(in srgb,var(--neg) 8%,var(--bg2));border-left:3px solid var(--neg)}
.hist-direction-head.positive{color:var(--pos);background:color-mix(in srgb,var(--pos) 8%,var(--bg2));border-left:3px solid var(--pos)}
.hist-opportunity.negative>.hd{border-left-color:var(--neg)}
.hist-opportunity.negative .hist-era-name,.hist-opportunity.negative .hist-era-period b{color:var(--neg)}
.hist-opportunity.positive>.hd{border-left-color:var(--pos)}
.hist-opportunity.positive .hist-era-name,.hist-opportunity.positive .hist-era-period b{color:var(--pos)}
.hist-era-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}
.hist-era-stats span{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:7px 8px;
  color:var(--tx3);font-size:10px;text-align:center}.hist-era-stats b{display:block;color:var(--tx);font:700 14px var(--mono);margin-bottom:2px}
.hist-era-stats .risk b{color:var(--neg)}.hist-era-stats .opportunity b{color:var(--pos)}
.hist-era-comps{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:thin}
.hist-era-comps button{flex:0 0 auto;border:1px solid var(--line2);border-radius:7px;background:var(--bg3);color:var(--tx2);
  font:650 10.5px var(--mono);padding:6px 8px;cursor:pointer}.hist-era-comps button:hover{border-color:var(--acc);color:var(--acc)}

/* 历史案例：量化证据、当前公司对照、原始来源 */
.hist-data-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:7px}
.hist-data-grid>div{background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:9px 10px;min-width:0}
.hist-data-grid span{display:block;color:var(--tx3);font-size:10px;line-height:1.4}.hist-data-grid b{display:block;color:var(--hist);
  font:700 14px var(--mono);line-height:1.45;margin-top:3px}.hist-data-grid p{color:var(--tx2);font-size:10.5px;line-height:1.5;margin-top:4px}
.hist-compare-note{border-left-color:var(--hist);margin-bottom:9px}
.hist-comp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px}
.hist-comp{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px;cursor:pointer}
.hist-comp:hover{border-color:var(--acc)}.hist-comp-head{display:flex;align-items:baseline;gap:7px;min-width:0}
.hist-comp-head>b{font:700 13px var(--mono);color:var(--tx)}.hist-comp-head>span{flex:1;min-width:0;color:var(--tx3);font-size:10.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hist-comp-head>i{font-style:normal;color:var(--acc);font-size:10px}
.hist-comp-role{font-size:10.5px;color:var(--tx3);margin:4px 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist-comp-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.hist-comp-kpis span{background:var(--bg3);border-radius:6px;
  color:var(--tx3);font-size:9px;padding:5px 6px}.hist-comp-kpis b{display:block;color:var(--tx2);font:650 10.5px var(--mono);margin-top:2px}
.hist-sources{display:grid;gap:7px}.hist-sources a{display:flex;align-items:center;gap:10px;text-decoration:none;background:var(--bg2);
  border:1px solid var(--line);border-radius:9px;padding:10px 11px}.hist-sources a:hover{border-color:var(--acc)}
.hist-sources b{flex:1;color:var(--tx2);font-size:12px;line-height:1.45}.hist-sources span{flex:0 0 auto;color:var(--acc);font-size:10px}

/* 历史案例的发展时间线：把当时市值、经营指标与事件含义放在同一时间节点 */
.hist-timeline{position:relative;margin-top:15px;padding-left:17px;display:grid;gap:10px}
.hist-timeline:before{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:1px;background:var(--line2)}
.hist-time-row{position:relative;background:var(--bg2);border:1px solid var(--line);border-radius:11px;padding:11px 12px}
.hist-time-row:before{content:"";position:absolute;left:-18px;top:18px;width:9px;height:9px;border-radius:50%;
  background:var(--hist);box-shadow:0 0 0 4px var(--bg)}
.hist-time-head{display:flex;align-items:flex-start;gap:10px}.hist-time-head time{flex:0 0 42px;color:var(--hist);
  font:750 12px var(--mono);padding-top:1px}.hist-time-head>div{min-width:0;flex:1}
.hist-time-head>div>b{display:block;color:var(--tx);font-size:12.5px;line-height:1.5}
.hist-time-head>div>span{display:block;color:var(--tx3);font-size:10.5px;margin-top:3px}
.hist-time-head strong{color:var(--hist);font:750 12px var(--mono);margin-left:4px}
.hist-time-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-top:9px}
.hist-time-metrics span{background:var(--bg3);border-radius:6px;color:var(--tx3);font-size:9px;padding:6px;min-width:0}
.hist-time-metrics b{display:block;color:var(--tx2);font:650 10px var(--mono);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hist-time-row>p{color:var(--tx2);font-size:11.5px;line-height:1.75;margin-top:9px}
.hist-time-note{margin:10px 0 0 17px;color:var(--tx3);font-size:10px;line-height:1.65;border-left:2px solid var(--hist);padding-left:9px}
.hist-time-note b{color:var(--hist);margin-right:6px}
@media(max-width:620px){.hist-comp-grid{grid-template-columns:1fr}.hist-data-grid{grid-template-columns:1fr 1fr}
  .hist-mode{grid-template-columns:1fr 1fr}
  .hist-era-stats{grid-template-columns:1fr 1fr}
  .hist-time-metrics{grid-template-columns:1fr 1fr}
  .hist-sources a{align-items:flex-start}.hist-sources span{font-size:0}.hist-sources span:after{content:'↗';font-size:13px}}

/* 徽章行 */
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{font-size:12.5px;font-family:var(--mono);padding:7px 11px;border-radius:9px;
      background:var(--bg3);border:1px solid var(--line);cursor:pointer;
      display:inline-flex;align-items:center;gap:6px;min-height:34px}
.chip:active{background:var(--bg4)}
.chip i{font-style:normal;font-size:11px}

/* ══════ 图谱 ══════ */
#gwrap{position:fixed;top:calc(var(--top) + var(--sat));left:0;right:0;
       bottom:calc(var(--nav) + var(--sab));display:none}
#gwrap.on{display:block}
#gcv{width:100%;height:100%;display:block;touch-action:none}
#gbar{position:absolute;left:10px;right:10px;bottom:10px;display:flex;gap:7px;align-items:center}
#gbar button{flex:1;padding:10px 8px;border-radius:11px;border:1px solid var(--line2);
             background:rgba(17,21,29,.94);color:var(--tx2);font-size:12.5px;cursor:pointer;
             backdrop-filter:blur(8px);min-height:40px}
:root[data-theme="light"] #gbar button{background:rgba(255,255,255,.94)}
#gbar button.act{color:var(--tx);border-color:var(--acc)}
#gbar #gFilter{flex:1.6}
#ginfo{position:absolute;top:10px;left:10px;right:10px;font-size:11.5px;color:var(--tx2);
       background:rgba(17,21,29,.9);border:1px solid var(--line);border-radius:10px;
       padding:7px 11px;backdrop-filter:blur(8px);text-align:center}
:root[data-theme="light"] #ginfo{background:rgba(255,255,255,.92)}
#ginfo b{color:var(--tx);font-family:var(--mono)}

/* 图谱节点抽屉：三套数据严格分源展示 */
.node-overview{padding:0 16px 10px}.node-sources{border-top:1px solid var(--line)}
.node-source{border-bottom:1px solid var(--line);background:var(--bg2)}
.node-source summary{list-style:none;cursor:pointer;padding:11px 16px;color:var(--tx2);font-size:12px}
.node-source summary::-webkit-details-marker{display:none}.node-source summary:before{content:"›";display:inline-block;
  color:var(--tx3);font-size:16px;line-height:1;margin-right:7px;transition:transform .18s}
.node-source[open] summary:before{transform:rotate(90deg)}.node-source summary b{color:var(--tx);margin-right:5px}
.node-source-body{border-top:1px solid var(--line);padding:11px 16px 13px}
.node-source-body h4{font-size:10px;letter-spacing:.7px;color:var(--tx3);margin:10px 0 4px;text-transform:uppercase}
.node-source-body>p{font-size:12.5px;color:var(--tx2);line-height:1.65}
.node-kpis,.node-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:6px}
.node-kpis span,.node-meta span{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:7px 8px;
  color:var(--tx3);font-size:9.5px;min-width:0}.node-kpis b,.node-meta b{display:block;color:var(--tx2);
  font-family:var(--mono);font-size:11px;line-height:1.4;margin-top:2px;overflow-wrap:anywhere}
.node-rel{border:1px solid var(--line);border-radius:9px;padding:8px 9px;margin-bottom:7px;background:var(--bg3)}
.node-rel>div{display:flex;gap:8px;align-items:baseline}.node-rel>div b{font-size:12px;flex:1;min-width:0}
.node-rel>div span{font-family:var(--mono);font-size:9.5px;color:var(--tx3)}
.node-rel p{font-size:11.5px;color:var(--tx2);line-height:1.5;margin-top:3px}.node-rel small{display:block;color:var(--tx3);font-size:9.5px;margin-top:3px}
.node-web{display:inline-block;color:var(--acc);text-decoration:none;font-size:12px;font-weight:650;margin-top:10px}
.node-caveat,.node-more{font-size:10px;color:var(--tx3);line-height:1.55;margin-top:8px}.node-empty{color:var(--tx3)!important}

/* ══════ 图表 ══════ */
.cmp-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:14px;padding:4px;
          background:var(--bg2);border:1px solid var(--line);border-radius:12px}
.cmp-tabs button{border:0;border-radius:8px;padding:9px 12px;background:transparent;color:var(--tx3);
                 font-family:var(--sans);font-size:13px;font-weight:650;cursor:pointer}
.cmp-tabs button.act{background:var(--acc);color:#fff}
.cmp-tabs.two{grid-template-columns:repeat(2,1fr)}
.cmp-tabs small{font-family:var(--mono);font-size:9.5px;opacity:.72;margin-left:3px}
.chartbox{border:1px solid var(--line);border-radius:13px;background:var(--bg2);padding:11px;
           margin:0 14px;max-width:calc(100vw - 28px);overflow:hidden}
.chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px;min-height:34px}
.cmp-model{display:inline-flex;gap:3px;padding:3px;background:var(--bg3);border:1px solid var(--line);border-radius:9px}
.cmp-model button{border:0;border-radius:6px;background:transparent;color:var(--tx3);font:650 11.5px var(--sans);
                  padding:6px 10px;cursor:pointer;white-space:nowrap}
.cmp-model button.act{background:var(--acc);color:#fff}
.chart-kind{font-size:11.5px;color:var(--tx3)}
.chart-full-btn{margin-left:auto;border:1px solid var(--line2);border-radius:8px;background:var(--bg3);color:var(--tx2);
                min-height:32px;padding:5px 9px;display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-family:var(--sans)}
.chart-full-btn span{font-size:16px;line-height:1}.chart-full-btn em{font-size:11px;font-style:normal}
.chart-full-btn:hover{border-color:var(--acc);color:var(--tx)}
body.cmp-full,body.cp-full{overflow:hidden}
.chartbox.is-full{position:fixed;z-index:49;top:calc(var(--top) + var(--sat));left:0;right:0;
                  bottom:calc(var(--nav) + var(--sab));margin:0;max-width:none;border-radius:0;padding:10px 14px;
                  display:flex;flex-direction:column}
.chartbox.is-full #plot{flex:1;min-height:0}
.chartbox.is-full .lgd{flex:0 0 auto}
#plot{width:100%;display:block;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.chartbox.is-full #plot{touch-action:none;cursor:grab}
.chartbox.is-full #plot:active{cursor:grabbing}
.cmp-preset-list{border-top:1px solid var(--line);max-height:calc(82vh - 68px);overflow-y:auto;
                 overscroll-behavior:contain;padding-bottom:calc(10px + var(--sab))}
.cmp-preset{width:100%;display:grid;grid-template-columns:31px minmax(0,1fr) 18px;gap:8px;
            align-items:start;text-align:left;border:0;border-bottom:1px solid var(--line);
            background:var(--bg2);color:var(--tx);padding:12px 14px;cursor:pointer;font-family:var(--sans)}
.cmp-preset>span{font-family:var(--mono);font-size:10px;color:var(--acc);padding-top:2px}
.cmp-preset b{display:block;font-size:13.5px;line-height:1.4}.cmp-preset small{display:block;color:var(--tx3);
            font-size:10.5px;margin-top:2px}.cmp-preset p{font-size:11.8px;color:var(--tx2);line-height:1.5;margin-top:5px}
.cmp-preset>i{font-style:normal;color:var(--tx3);font-size:20px;align-self:center}
.cmp-preset.on{background:var(--bg4)}.cmp-preset:active{background:var(--bg3)}
.cmp-empty{padding:26px 18px;text-align:center;color:var(--tx2)}
.cmp-empty b{display:block;color:var(--tx);font-size:14px}.cmp-empty p{font-size:11.8px;line-height:1.65;margin-top:7px}
.lgd{display:flex;flex-wrap:wrap;gap:9px;margin-top:9px;font-size:11.2px;color:var(--tx2);padding:0 2px}
.lgd i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:4px}
.rho{display:grid;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:6px;margin:12px 14px}
.rho .b{background:var(--bg3);border:1px solid var(--line);border-radius:10px;padding:8px 9px}
.rho .b span{display:block;font-size:9.4px;color:var(--tx3)}
.rho .b b{display:block;font-family:var(--mono);font-size:17px;font-weight:700;margin-top:2px}
.terc{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:0 14px}
.terc div{background:var(--bg3);border:1px solid var(--line);border-radius:10px;
          padding:9px;text-align:center}
.terc span{display:block;font-size:9.6px;color:var(--tx3)}
.terc b{display:block;font-family:var(--mono);font-size:15px;margin-top:2px}
.quad-terc{grid-template-columns:repeat(2,1fr)}
.method-note{margin:10px 0 0;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--hist);
             border-radius:10px;background:var(--bg2);color:var(--tx2);font-size:11.7px;line-height:1.65}
.research-card{margin:12px 0 0;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:var(--bg2)}
.research-card h3{font-size:13.5px;margin-bottom:8px}.research-card p{font-size:12.3px;color:var(--tx2);line-height:1.65;margin:5px 0}
.research-card p b{color:var(--tx)}.research-caveat{border-left:2px solid var(--neg);padding-left:9px}
.research-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.research-links a{font-size:10.8px;color:var(--acc);
                border:1px solid var(--line2);border-radius:999px;padding:5px 8px;text-decoration:none}
.tri-all{padding-bottom:8px}
.tri-card{cursor:pointer;border-left:3px solid var(--acc)}
.tri-card.pair-card{border-left-color:var(--hist)}
.tri-card:active{background:var(--bg3)}
.tri-no{font-size:10.5px;color:var(--acc);font-family:var(--mono);font-weight:700}
.tri-vars{font-size:10.5px;color:var(--tx3);font-family:var(--mono);margin-top:3px}
.tri-head{font-size:14.5px;font-weight:700;line-height:1.5;margin:8px 0 6px}

/* 搜索浮层 */
#srch{position:fixed;inset:0;z-index:90;background:var(--bg);display:none;flex-direction:column}
#srch.on{display:flex}
#srch .hd{display:flex;gap:9px;padding:calc(10px + var(--sat)) 12px 10px;
          border-bottom:1px solid var(--line);align-items:center}
#srch input{flex:1;padding:11px 13px;background:var(--bg3);border:1px solid var(--line2);
            border-radius:11px;color:var(--tx);font-size:16px;outline:none;font-family:var(--sans)}
#srch .cancel{background:none;border:0;color:var(--acc);font-size:15px;cursor:pointer;padding:8px}
#sres{flex:1;overflow-y:auto;padding-bottom:20px}
.sr{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;
    gap:10px;cursor:pointer}
.sr:active{background:var(--bg3)}
.sr .d{width:9px;height:9px;border-radius:3px;flex:0 0 auto}
.sr .m{flex:1;min-width:0}
.sr .m b{font-size:14px;font-family:var(--mono);display:block}
.sr .m span{font-size:11.5px;color:var(--tx3);display:block;overflow:hidden;
            text-overflow:ellipsis;white-space:nowrap}
.sr .kd{font-size:10.5px;color:var(--tx3);flex:0 0 auto}

.empty{text-align:center;color:var(--tx3);font-size:13.5px;padding:44px 20px}

/* ══════ ≥900px 桌面增强 ══════ */
@media (min-width:900px){
  :root{--nav:0px}
  body{font-size:14px;overscroll-behavior-y:auto}
  #plot{cursor:grab}
  #plot:active{cursor:grabbing}
  #nav{position:fixed;top:calc(var(--top) + var(--sat));bottom:0;left:0;right:auto;width:78px;
       height:auto;flex-direction:column;border-top:0;border-right:1px solid var(--line);
       padding-top:12px;gap:2px}
  #nav a{flex:0 0 auto;height:62px;font-size:11px;border-radius:11px;margin:0 8px}
  #nav a.on{background:var(--bg3)}
  #app{padding-left:78px;padding-bottom:40px;max-width:1240px}
  #top{padding-left:20px}
  .pg,.sect,.tbar,.chartbox,.rho,.terc{padding-left:24px;padding-right:24px}
  /* 公司列表的搜索栏必须保留在文档流中，否则桌面端首排卡片会被吸顶层遮住。 */
  .cos-tbar{position:relative;top:auto}
  .chartbox,.rho,.terc{margin-left:24px;margin-right:24px}
  .quad-terc{grid-template-columns:repeat(4,1fr)}
  .chartbox.is-full{left:78px;right:0;bottom:0;margin:0;max-width:none;padding-left:18px;padding-right:18px}
  .pg h1{font-size:27px}
  .sec{padding:18px 24px}
  .sec-fold{padding:0}
  .sec-fold>summary{padding:18px 24px}
  .sec-fold>.profile-block{padding:0 24px 18px}
  .sec-fold>.sec-fold-content{padding:0 24px 18px}
  .dhero{padding:20px 24px 14px}
  .dhero h1{font-size:24px}
  #gwrap{left:78px}
  #gbar{left:auto;right:16px;bottom:16px;width:390px;flex-wrap:nowrap}
  #gbar button{flex:1 1 0}
  #gbar #gFilter{flex:1.7 1 0}
  #ginfo{left:auto;right:16px;top:16px;width:330px}
  .rowlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:0 14px}
  .co{border:1px solid var(--line);border-radius:12px;margin-bottom:9px;background:var(--bg2)}
  .co:hover{border-color:var(--line2)}
  .hc:hover{border-color:var(--hist)}
  .hist-era > .hd:hover{background:var(--bg3)}
  .tap:hover{background:var(--bg3)}
}
.metric-group{margin:9px 0 12px}.metric-group h4{margin:0 0 7px;font-size:11px;color:var(--tx2);font-weight:700}
.macro-strip{display:grid;grid-template-columns:minmax(180px,1.2fr) repeat(3,minmax(130px,1fr));gap:8px;margin-top:10px}
.macro-strip>div,.macro-strip>a{border:1px solid var(--line);border-radius:10px;padding:9px 11px;color:var(--tx2);text-decoration:none;background:var(--card)}
.macro-strip>div b{display:block;color:var(--tx);font-size:12px}.macro-strip>div small{display:block;margin-top:3px;line-height:1.45}
.macro-strip>a span,.macro-strip>a small{display:block;font-size:10px;color:var(--tx3)}.macro-strip>a b{display:block;margin:3px 0;color:var(--tx);font:700 16px var(--mono)}
@media(max-width:720px){.macro-strip{grid-template-columns:1fr 1fr}.macro-strip>div{grid-column:1/-1}}

/* 价格日线 + Change Point 归因 */
.cpwrap{display:flex;flex-direction:column;gap:10px}
.cp-tierbar{display:flex;flex-wrap:wrap;gap:8px 16px;padding:9px;border:1px solid var(--line);border-radius:11px;background:var(--bg2)}
.cp-seg{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.cp-seg-k{font-size:10.5px;color:var(--tx3);margin-right:2px}
.cp-tierbar .opt{font-size:11px;padding:6px 9px}.cp-tierbar .opt.act{border-color:var(--acc);color:var(--acc);background:color-mix(in srgb,var(--acc) 12%,var(--bg3))}
.cp-summary{border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:var(--bg2);font-size:11.5px;color:var(--tx2)}
.cp-sum-row{display:grid;grid-template-columns:92px 1fr;gap:8px;padding:2px 0}.cp-sum-row b{color:var(--tx)}
.cp-sum-note{margin-top:7px;padding-top:7px;border-top:1px solid var(--line);color:var(--tx3);line-height:1.55}
.cp-filters{display:flex;flex-wrap:wrap;gap:7px}
.cp-filters select.cpf,.cp-filters input.cpf{padding:7px 9px;border-radius:9px;border:1px solid var(--line2);
  background:var(--bg3);color:var(--tx2);font-size:11.8px;font-family:var(--sans);min-height:32px}
.cp-filters button.cp-tog{font-size:11.8px;padding:7px 11px;min-height:32px}
.cpchartbox{position:relative;border:1px solid var(--line);border-radius:13px;background:var(--bg2);
  padding:11px;overflow:hidden}
#cpchart{position:relative;width:100%;height:clamp(260px,52vw,430px);touch-action:pan-y}
.cp-full-btn{position:absolute;right:12px;top:12px;z-index:8;border:1px solid var(--line2);border-radius:8px;
  background:color-mix(in srgb,var(--bg3) 92%,transparent);color:var(--tx2);min-height:29px;padding:4px 8px;
  display:inline-flex;align-items:center;gap:4px;font:650 10.5px var(--sans);cursor:pointer;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.cp-full-btn span{font-size:15px;line-height:1}.cp-full-btn em{font-style:normal}.cp-full-btn:hover,.cp-full-btn:focus-visible{border-color:var(--acc);color:var(--tx);outline:none}
.cpchartbox.is-full{position:fixed;z-index:49;top:calc(var(--top) + var(--sat));left:0;right:0;
  bottom:calc(var(--nav) + var(--sab));margin:0;max-width:none;border-radius:0;padding:10px 14px;
  display:flex;flex-direction:column}
.cpchartbox.is-full #cpchart{flex:1;min-height:0;height:auto;touch-action:none}
.cpchartbox.is-full .cp-marker-layer{overflow:hidden}
.cpchartbox.is-full .cp-full-btn{right:16px;top:13px}
.cpchartbox.is-full .cp-event-key{right:122px;top:13px}
.cp-marker-layer{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden}
.cp-marker-btn{position:absolute;pointer-events:auto;min-width:38px;min-height:27px;padding:4px 8px;
  border-radius:999px;font:700 10px var(--sans);line-height:1;white-space:nowrap;cursor:pointer;
  max-width:min(320px,calc(100% - 10px));overflow:hidden;text-overflow:ellipsis;
  box-shadow:0 3px 9px rgba(0,0,0,.28);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:filter .12s ease,box-shadow .12s ease}
.cp-marker-btn.up{color:var(--pos);border:1px solid color-mix(in srgb,var(--pos) 72%,white);
  background:color-mix(in srgb,var(--pos) 18%,var(--bg2))}
.cp-marker-btn.down{color:var(--neg);border:1px solid color-mix(in srgb,var(--neg) 72%,white);
  background:color-mix(in srgb,var(--neg) 18%,var(--bg2))}
.cp-marker-btn.pre{border-style:dashed;opacity:.88}
.cp-marker-btn.unknown{color:var(--warn);border:1px dashed color-mix(in srgb,var(--warn) 72%,white);
  background:color-mix(in srgb,var(--warn) 15%,var(--bg2))}
.cp-marker-btn.candidate{color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 78%,white);
  background:color-mix(in srgb,var(--warn) 20%,var(--bg2))}
.cp-marker-btn.event-title{font-weight:650}
.cp-marker-btn:hover,.cp-marker-btn:focus-visible{filter:brightness(1.16);box-shadow:0 4px 12px rgba(0,0,0,.38);outline:2px solid var(--acc);outline-offset:2px}
.cp-marker-btn:active{filter:brightness(1.35);box-shadow:0 1px 4px rgba(0,0,0,.25)}
.cp-ohlc{position:absolute;left:19px;top:15px;z-index:3;pointer-events:none;padding:4px 7px;border-radius:6px;
  background:color-mix(in srgb,var(--bg2) 86%,transparent);color:var(--tx2);font:10.5px var(--mono)}
.cp-tip{position:absolute;pointer-events:none;background:var(--bg4);border:1px solid var(--line2);
  border-radius:9px;padding:7px 9px;font-size:11px;line-height:1.55;color:var(--tx2);max-width:190px;
  box-shadow:0 6px 18px rgba(0,0,0,.28);z-index:5}
.cp-legend{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:11px;color:var(--tx2);padding:0 2px}
.cp-legend .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}
.cp-legend .dot.ring{background:transparent;border:1.5px solid var(--acc)}
.cp-legend .dot.cp-candidate{background:var(--warn)}
.cp-legend .dot.cp-gray{background:var(--tx3)}
.cp-legend .dim{color:var(--tx3)}
.cp-tv{margin-left:auto;color:var(--tx3);text-decoration:none}.cp-tv:hover{color:var(--acc)}
.cp-detail{border:1px solid var(--line2);border-left:3px solid var(--acc);border-radius:12px;
  padding:12px 14px;background:var(--bg2);color:var(--tx2);font-size:12px;line-height:1.6;
  box-shadow:0 8px 22px rgba(0,0,0,.12)}
.cp-detail[hidden]{display:none}
.cp-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:9px;
  margin-bottom:9px;border-bottom:1px solid var(--line)}
.cp-detail-head>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cp-detail-head b{font-size:14px}
.cp-reason-pill{display:inline-flex;padding:2px 9px;border-radius:999px;background:color-mix(in srgb,var(--acc) 16%,var(--bg4));
  color:var(--acc);font-size:11px;font-weight:700}
.cp-detail-close{border:1px solid var(--line2);border-radius:8px;background:var(--bg3);color:var(--tx2);
  padding:5px 10px;font:11px var(--sans);cursor:pointer}.cp-detail-close:hover{border-color:var(--acc);color:var(--acc)}
.cp-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}.cp-detail-grid>div{min-width:0}
.cp-detail-main,.cp-detail-warn{grid-column:1/-1}.cp-detail-k{color:var(--tx3);font-size:10.5px;font-weight:700;margin-bottom:2px}
.cp-detail a{color:var(--acc);text-decoration:none}.cp-detail a:hover{text-decoration:underline}
.cp-detail-warn{padding:8px 10px;border-radius:9px;background:color-mix(in srgb,var(--warn) 8%,var(--bg3));
  border:1px dashed color-mix(in srgb,var(--warn) 45%,var(--line))}
.cp-detail-candidate{border-left-color:var(--warn)}.cp-candidate-tone{color:var(--warn)}
.cp-detail-candidate .cp-reason-pill{color:var(--warn);background:color-mix(in srgb,var(--warn) 16%,var(--bg4))}
.cp-candidate-events{margin-top:12px}.cp-candidate-event{padding:9px 10px;margin-top:7px;border:1px solid var(--line);
  border-radius:9px;background:var(--bg3)}.cp-candidate-event-head{display:flex;justify-content:space-between;gap:10px;
  color:var(--tx3);font-size:10px}.cp-candidate-event-head b{color:var(--warn)}
.cp-candidate-event-title{margin-top:4px;color:var(--tx);font-weight:700}.cp-candidate-source-title{margin-top:3px;color:var(--tx2);font-size:11px}
.cp-badge{display:inline-block;font-size:10px;font-weight:650;padding:2px 7px;border-radius:999px;
  background:var(--bg4);color:var(--tx2);white-space:nowrap}
.cp-badge.cp-hi{background:color-mix(in srgb,var(--pos) 22%,var(--bg4));color:var(--pos)}
.cp-badge.cp-md{background:color-mix(in srgb,var(--warn) 22%,var(--bg4));color:var(--warn)}
.cp-badge.cp-lo{background:var(--bg4);color:var(--tx3)}
.cp-badge.cp-un{background:color-mix(in srgb,var(--neg) 16%,var(--bg4));color:var(--tx3)}
.cp-badge.cp-cat{background:var(--bg3);color:var(--tx3)}
.cp-badge.cp-corp{background:color-mix(in srgb,var(--acc) 20%,var(--bg4));color:var(--acc)}
.cp-badge.cp-posthoc{background:transparent;border:1px dashed var(--line2);color:var(--tx3)}
.cp-badge.cp-new{background:transparent;border:1px solid var(--acc);color:var(--acc)}
.cp-badge.cp-base{background:var(--bg3);color:var(--tx3)}
.cp-badge.cp-oos{background:transparent;border:1px dashed var(--warn);color:var(--warn)}
.cp-th{margin:9px 0 2px;padding:9px 10px;border:1px solid color-mix(in srgb,var(--acc) 35%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--acc) 6%,var(--bg2))}
.cp-th-hd{font-size:11px;font-weight:750;color:var(--acc);margin-bottom:5px}
@media(max-width:480px){.cp-filters select.cpf,.cp-filters input.cpf{flex:1 1 auto;min-width:44%}.cp-sum-row{grid-template-columns:1fr}.cp-tv{margin-left:0}.cp-detail-grid{grid-template-columns:1fr}.cp-detail-main,.cp-detail-warn{grid-column:auto}.cp-detail{padding:11px}}

/* 图内公司事件图例 + 点击后底部详情 */
.cp-event-key{position:absolute;right:108px;top:12px;z-index:4;display:flex;align-items:center;gap:6px;
  max-width:calc(100% - 250px);padding:5px 8px;border:1px solid var(--line2);border-radius:9px;
  background:color-mix(in srgb,var(--bg2) 88%,transparent);box-shadow:0 3px 10px rgba(0,0,0,.18);
  color:var(--tx3);font:750 9.5px var(--mono);pointer-events:none;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.cp-event-key b{font:700 9.5px var(--sans);color:var(--tx2)}.cp-event-key .up{color:var(--pos)}
.cp-event-key .down{color:var(--neg)}.cp-event-key .pre{color:var(--tx2)}.cp-event-key .uncertain{color:var(--warn)}
body.event-sheet-open{overflow:hidden}.event-sheet[hidden]{display:none}.event-sheet{position:fixed;inset:0;z-index:1200}
.event-sheet-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(2,6,13,.67);
  -webkit-tap-highlight-color:transparent}.event-sheet-panel{position:absolute;left:0;right:0;bottom:0;max-height:min(72vh,720px);
  overflow:auto;overscroll-behavior:contain;padding:8px 14px calc(84px + env(safe-area-inset-bottom));
  border:1px solid var(--line2);border-bottom:0;border-radius:20px 20px 0 0;background:var(--bg);
  box-shadow:0 -18px 48px rgba(0,0,0,.42);animation:event-sheet-up .18s ease-out}
.event-sheet-grab{position:sticky;top:0;z-index:3;width:42px;height:4px;margin:2px auto 9px;border-radius:99px;background:var(--line2)}
.event-sheet-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:0 -2px 10px;padding:5px 2px 10px;border-bottom:1px solid var(--line);background:var(--bg)}
.event-sheet-head>div{display:flex;align-items:baseline;gap:8px;min-width:0}.event-sheet-head b{font:800 16px var(--mono);color:var(--tx)}
.event-sheet-head span{font-size:11px;color:var(--tx3)}.event-sheet-close{flex:0 0 auto;min-width:44px;min-height:36px;
  border:1px solid var(--line2);border-radius:10px;background:var(--bg3);color:var(--tx2);font:650 12px var(--sans);cursor:pointer;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation}.event-sheet-close:active{background:var(--bg4);color:var(--tx)}
.day-cause-summary{margin:0 0 10px;padding:12px 14px;border:1px solid var(--line2);border-left:4px solid var(--warn);
  border-radius:12px;background:var(--bg2)}
.day-cause-summary.up{border-left-color:var(--pos);background:color-mix(in srgb,var(--pos) 6%,var(--bg2))}
.day-cause-summary.down{border-left-color:var(--neg);background:color-mix(in srgb,var(--neg) 6%,var(--bg2))}
.day-cause-summary.candidate{border-left-color:var(--warn);background:color-mix(in srgb,var(--warn) 7%,var(--bg2))}
.day-cause-k{font:700 10px var(--mono);color:var(--tx3);margin-bottom:5px}.day-cause-summary h3{margin:0;color:var(--tx);font-size:15px;line-height:1.4}
.day-cause-summary.up h3{color:var(--pos)}.day-cause-summary.down h3{color:var(--neg)}
.day-cause-summary.candidate h3{color:var(--warn)}
.day-cause-summary p{margin:6px 0 0;color:var(--tx2);font-size:11.5px;line-height:1.6}
.event-sheet-list{display:flex;flex-direction:column;gap:9px}.event-sheet .cp-detail{margin:0;box-shadow:none}
.event-sheet .ke-row{background:var(--bg2)}
@keyframes event-sheet-up{from{transform:translateY(24px);opacity:.55}to{transform:translateY(0);opacity:1}}
@keyframes event-sheet-pop{from{transform:translateY(12px) scale(.985);opacity:.55}to{transform:translateY(0) scale(1);opacity:1}}
@media(min-width:900px){
  .event-sheet{display:flex;align-items:center;justify-content:center;padding:clamp(24px,4vh,48px) 44px}
  .event-sheet-panel{position:relative;left:auto;right:auto;bottom:auto;width:min(1180px,calc(100vw - 88px));
    height:min(86vh,980px);max-height:min(86vh,980px);padding:16px 20px 22px;border:1px solid var(--line2);
    border-radius:18px;box-shadow:0 24px 72px rgba(0,0,0,.56);animation:event-sheet-pop .18s ease-out}
  .event-sheet-grab{display:none}
  .event-sheet-head{padding-top:0}
}
@media(max-width:480px){.cp-full-btn{right:8px;top:9px;min-height:27px;padding:3px 6px}.cp-full-btn em{display:none}
  .cpchartbox.is-full .cp-full-btn{right:10px;top:10px}.cp-event-key{right:47px;top:9px;max-width:calc(100% - 145px);gap:4px;padding:4px 6px;font-size:8.5px}
  .cpchartbox.is-full .cp-event-key{right:47px;top:10px;max-width:calc(100% - 145px)}
  .cp-event-key b{font-size:8.5px}.event-sheet-panel{max-height:76vh;padding-left:10px;padding-right:10px}.event-sheet-head b{font-size:14px}}

/* Capital IQ 公司事件 × 价格反应 */
.kewrap{display:flex;flex-direction:column;gap:11px}.ke-rule{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--bg2)}
.ke-rule>b{display:block;margin-bottom:8px;font-size:12px;color:var(--tx)}.ke-rule-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 14px}
.ke-rule-grid span{display:flex;align-items:flex-start;gap:7px;font-size:11px;line-height:1.45;color:var(--tx2)}
.ke-rule-grid i{flex:0 0 33px;font:800 13px var(--mono);font-style:normal}.ke-rule-grid .ke-up i,.ke-rule-grid .ke-pre_up i{color:var(--pos)}
.ke-rule-grid .ke-down i,.ke-rule-grid .ke-pre_down i{color:var(--neg)}.ke-rule-grid .ke-flat i{color:var(--tx2)}.ke-rule-grid .ke-uncertain i{color:var(--warn)}
.ke-rule p{margin:9px 0 0;padding-top:8px;border-top:1px solid var(--line);font-size:10.8px;line-height:1.55;color:var(--tx3)}
.ke-summary{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:var(--bg2);font-size:11px;color:var(--tx2)}
.ke-summary b{color:var(--tx);font:750 12px var(--mono)}.ke-filters{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(125px,.8fr) minmax(125px,.8fr) minmax(220px,1.6fr);gap:7px}
.ke-filters select,.ke-filters input{width:100%;min-height:36px;border:1px solid var(--line2);border-radius:9px;background:var(--bg3);color:var(--tx2);padding:7px 9px;font:11.5px var(--sans)}
.ke-count{font-size:10.8px;color:var(--tx3)}.ke-list{display:flex;flex-direction:column;gap:8px}
.ke-row{position:relative;padding:12px 13px 11px 16px;border:1px solid var(--line);border-left:4px solid var(--tx3);border-radius:12px;background:var(--bg2);overflow:hidden}
.ke-row.ke-up,.ke-row.ke-pre_up{border-left-color:var(--pos)}.ke-row.ke-down,.ke-row.ke-pre_down{border-left-color:var(--neg)}.ke-row.ke-uncertain{border-left-color:var(--warn)}
.ke-head{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-bottom:7px}.ke-symbol{min-width:35px;font:850 16px var(--mono);color:var(--tx2)}
.ke-up .ke-symbol,.ke-pre_up .ke-symbol{color:var(--pos)}.ke-down .ke-symbol,.ke-pre_down .ke-symbol{color:var(--neg)}.ke-uncertain .ke-symbol{color:var(--warn)}
.ke-head time{font:750 12px var(--mono);color:var(--tx)}.ke-type{display:inline-flex;padding:2px 7px;border-radius:999px;background:var(--bg4);color:var(--tx3);font-size:10px}
.ke-title{font-size:12.5px;font-weight:650;line-height:1.55;color:var(--tx)}.ke-basis{margin-top:5px;font-size:11px;color:var(--tx2)}
.ke-metrics{margin-top:5px;font:10.5px var(--mono);color:var(--tx3)}.ke-detail{margin-top:8px;border-top:1px solid var(--line);padding-top:7px}
.ke-detail summary{cursor:pointer;min-height:31px;display:flex;align-items:center;color:var(--acc);font-size:11px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.ke-detail p{margin:7px 0 5px;font-size:11.5px;line-height:1.65;color:var(--tx2);white-space:pre-wrap}.ke-detail>div{font-size:10.5px;color:var(--tx3)}
.ke-more{align-self:center;min-width:180px;min-height:40px;border:1px solid var(--line2);border-radius:10px;background:var(--bg3);color:var(--acc);font:650 12px var(--sans);cursor:pointer}
.ke-more:hover,.ke-more:focus-visible{border-color:var(--acc);outline:none}
@media(max-width:680px){.ke-rule-grid{grid-template-columns:1fr}.ke-filters{grid-template-columns:1fr 1fr}.ke-filters [data-k="status"],.ke-filters [data-k="q"]{grid-column:1/-1}.ke-row{padding:11px 11px 10px 13px}.ke-title{font-size:12px}}
