/* =====================================================================
   RY 金融终端 v3 — Wind(万得)-style palette, Chinese convention
   红涨 #ff3b3b · 绿跌 #1fc05a · 白=平/数值 · 灰=标签 · 黄=重点线/均线 · 蓝=链接
   深炭灰底、细灰线、无圆角、无光晕、无渐变。
   ===================================================================== */
:root{
  --bg0:#0c0c0c; --bg:#141414; --bg1:#1b1b1b; --bg2:#222; --bg3:#2c2c2c; --sel:#383838;
  --line:#2a2a2a; --line2:#3a3a3a; --line3:#4a4a4a;
  --text:#e4e4e4; --white:#fff; --grey:#9a9a9a; --dim:#6c6c6c;
  --up:#ff3b3b; --dn:#1fc05a; --y:#f5c400; --blue:#4a9eff; --brand:#d6202a;
  --sans:Arial,"Helvetica Neue","Liberation Sans","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --mono:"Roboto Mono",Consolas,"Liberation Mono",Menlo,"Noto Sans SC","Microsoft YaHei",monospace;
  --zh:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box;border-radius:0}
html,body{margin:0;background:var(--bg0);color:var(--text);height:100%}
body{font:400 12px/18px var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0;padding:0}
ul,ol{list-style:none}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
kbd{font:500 10px/1 var(--mono)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:0;z-index:200;background:var(--brand);color:#fff;padding:2px 8px}
.skip:focus{left:0}
:focus-visible{outline:1px solid var(--y);outline-offset:-1px}
.dim{color:var(--grey)} .en{font-family:var(--sans);color:var(--grey);font-weight:400;letter-spacing:.02em}
.up{color:var(--up)} .down{color:var(--dn)} .warn{color:var(--y)}
.inv{background:var(--brand);color:#fff;padding:0 5px}
.ph{color:var(--grey)}
.kv .ph::after{content:" ◂ 待补充占位";font-size:10px;color:var(--dim)}
html.booting .term{visibility:hidden}

/* ---------------- shell ---------------- */
.term{display:grid;grid-template-rows:30px 26px minmax(0,1fr) 22px 24px;height:100vh;height:100dvh;overflow:hidden;background:var(--bg0)}

/* ---------------- app bar (window tabs + function buttons) ---------------- */
.appbar{display:flex;align-items:stretch;background:var(--bg2);border-bottom:1px solid #0a0a0a;min-width:0}
.logo{display:flex;align-items:center;justify-content:center;width:30px;flex:0 0 30px;background:var(--brand);color:#fff;font:700 13px/1 var(--sans);letter-spacing:-.02em;text-decoration:none!important}
.wintabs{display:flex;align-items:stretch;min-width:0;overflow:hidden}
.wintab{display:flex;align-items:center;padding:0 14px;color:#bdbdbd;border-right:1px solid #161616;white-space:nowrap;font-size:12px;text-decoration:none!important}
.wintab:hover{color:#fff;background:var(--bg3)}
.wintab.is-on{background:#3a3a3a;color:#fff}
.wintab--doc{max-width:320px;overflow:hidden;text-overflow:ellipsis;display:block;line-height:30px}
.fnbtns{display:flex;align-items:center;gap:4px;margin-left:auto;padding:0 6px;white-space:nowrap}
.langpick{display:flex;align-items:stretch;flex:0 0 auto;border-left:1px solid #161616}
.langpick a{display:flex;align-items:center;padding:0 12px;color:#9a9a9a;text-decoration:none!important;font:500 12px/1 var(--sans)}
.langpick a.is-on{background:#3a3a3a;color:#fff}
.langpick a:hover{color:#fff;background:var(--bg3)}
.fnbtns a{display:flex;align-items:center;gap:5px;height:20px;padding:0 8px;border:1px solid var(--line3);background:#2a2a2a;color:#d6d6d6;font-size:12px;text-decoration:none!important}
.fnbtns a b{color:#fff;font-weight:700;font-size:11px}
.fnbtns a:hover{background:#3a3a3a;color:#fff}
.fnbtns a.is-on{border-color:var(--brand);color:#fff}

/* ---------------- sub bar (red active tab + command line + summary) ---------------- */
.subbar{display:flex;align-items:stretch;background:var(--bg1);border-bottom:1px solid var(--line);min-width:0;position:relative;z-index:20}
.subbar__tab{display:flex;align-items:center;padding:0 14px;background:var(--brand);color:#fff;font-size:12px;white-space:nowrap}
.subbar__crumb{display:flex;align-items:center;gap:6px;padding:0 10px;color:var(--grey);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46%}
.subbar__crumb a{color:#cfcfcf}
.subbar__palette{display:none}
.cmd{flex:0 1 44%;display:flex;align-items:center;gap:6px;padding:0 8px;position:relative;min-width:0;border-right:1px solid var(--line)}
.cmd__prompt{color:var(--grey);font:600 12px var(--mono)}
.cmd__field{position:relative;flex:1;height:100%;min-width:0}
.cmd input{position:absolute;inset:0;width:100%;background:transparent;border:0;outline:0;color:#fff;font:500 12.5px/26px var(--mono);caret-color:transparent;padding:0}
.cmd input::placeholder{color:transparent}
.cmd input.caret-mid{caret-color:#fff}
.cmd__ghost{position:absolute;inset:0;pointer-events:none;font:500 12.5px/26px var(--mono);white-space:pre;overflow:hidden;display:flex;align-items:center}
.cmd__typed{order:1;color:transparent}.cmd__cursor{order:2}.cmd__hint{order:3;color:var(--dim)}
.cmd__ghost.is-empty .cmd__hint{order:2;color:#d0d0d0}.cmd__ghost.is-empty .cmd__cursor{order:3;margin-left:6px}
.cmd__cursor{display:inline-block;width:7px;height:14px;background:#e4e4e4;animation:blink 1.06s steps(1) infinite}
.caret-mid~.cmd__ghost .cmd__cursor{display:none}
@keyframes blink{50%{opacity:0}}
.key{font:700 11px/18px var(--sans);padding:0 10px;height:18px;border:1px solid var(--line3);background:#2e2e2e;color:#fff}
.key--go:hover{background:var(--brand);border-color:var(--brand)}
.cmd:focus-within{box-shadow:inset 0 -2px 0 var(--y)}
.cmd__ac{position:absolute;left:8px;top:25px;min-width:min(520px,92vw);max-height:min(320px,52vh);overflow:auto;background:var(--bg1);border:1px solid var(--line3);z-index:40;padding:2px 0;box-shadow:0 6px 16px rgba(0,0,0,.6)}
.cmd__ac li{display:grid;grid-template-columns:8ch 5.5em minmax(0,1fr);gap:8px;padding:5px 10px;cursor:pointer;color:var(--text);align-items:center}
.cmd__ac li b{color:#fff;font:600 12px var(--mono)}
.cmd__ac li i{font-style:normal;color:#d0d0d0}
.cmd__ac li span{color:var(--grey);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmd__ac li[aria-selected="true"]{background:var(--sel)}
.cmd__ac li[aria-selected="true"] b{color:var(--y)}
.summary{display:flex;align-items:stretch;flex:1;min-width:0;overflow:hidden;white-space:nowrap}
.summary>div{display:flex;align-items:center;gap:6px;padding:0 12px;border-right:1px solid var(--line)}
.summary dt{color:var(--grey)} .summary dd{color:#fff}
.summary dd a{color:#fff;text-decoration:none!important}
.summary dd a:hover{color:var(--y)}

/* ---------------- panel grid ---------------- */
.grid{display:grid;grid-template-columns:minmax(0,2.25fr) minmax(300px,.92fr);grid-template-rows:minmax(0,1.72fr) minmax(0,1fr);gap:1px;background:#050505;position:relative;min-height:0}
#p-quant{grid-column:1;grid-row:1;min-height:0}
.stage-foot{grid-column:1;grid-row:2;display:flex;flex-direction:column;min-height:0;min-width:0}
.stage-foot>.panel{flex:1;min-height:0}
.rail{grid-column:2;grid-row:1/3;display:flex;min-height:0;min-width:0}
.rail>.panel{flex:1;min-width:0}

.panel{background:var(--bg);display:flex;flex-direction:column;min-height:0;min-width:0;position:relative;outline:0}
.panel__head{display:flex;align-items:stretch;height:22px;flex:0 0 22px;background:var(--bg1);border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden}
.panel__tab{display:flex;align-items:center;gap:6px;padding:0 10px 0 8px;background:#2c2c2c;border-right:1px solid var(--line)}
.panel__no{color:var(--dim);font:500 11px var(--mono)}
.panel__title{font:400 12px/1 var(--sans);color:#fff;overflow:hidden;text-overflow:ellipsis}
.panel__title .en{font-size:11px;margin-left:2px}
.panel__subtab{display:flex;align-items:center;padding:0 10px;color:var(--grey);border-right:1px solid var(--line);font-size:12px;text-decoration:none!important}
.panel__subtab:hover{color:#fff;background:var(--bg3)}
.panel__subtab.is-on{background:#2c2c2c;color:#fff}
.quote__tabs{display:flex}
.panel__code{margin-left:auto;align-self:center;font-size:11px;color:var(--dim);padding:0 6px}
.panel__max{align-self:center;font:400 10px/14px var(--sans);color:var(--grey);border:1px solid var(--line3);padding:0 5px;height:16px;margin-right:3px}
.panel__max:hover{color:#fff;border-color:#888}
.panel.is-focus .panel__tab{background:#3a3a3a;box-shadow:inset 0 2px 0 var(--brand)}
.panel.is-focus .panel__no{color:var(--grey)}
.panel.is-max{position:absolute;inset:0;z-index:10}
.panel.is-flash .panel__tab{animation:flash .5s steps(2) 2}
@keyframes flash{50%{background:var(--brand)}}
.panel__body{flex:1;min-height:0;overflow:auto;padding:6px 8px 10px;scrollbar-width:thin;scrollbar-color:#444 transparent}
.panel__body::-webkit-scrollbar{width:7px;height:7px}
.panel__body::-webkit-scrollbar-thumb{background:#444}
.sub{font:400 12px/20px var(--sans);color:var(--grey);border-bottom:1px solid var(--line);margin:10px 0 4px}
.sub .en{font-size:11px;margin-left:4px;color:var(--dim)}
.note{font-size:11px;color:var(--dim);margin-top:6px;font-family:var(--zh)}
.prose{font:400 12.5px/21px var(--zh);color:#d8d8d8;text-align:justify}

/* ---------------- tables / kv (Wind grid) ---------------- */
.tbl{width:100%;border-collapse:collapse}
.tbl th{font:400 12px/20px var(--sans);color:var(--grey);text-align:left;background:var(--bg1);border-bottom:1px solid var(--line);padding:0 8px 0 4px;white-space:nowrap;position:sticky;top:-6px;z-index:1}
.tbl th.r,.tbl td.r{text-align:right}
.tbl td{padding:2px 8px 2px 4px;color:var(--text);vertical-align:baseline;font-family:var(--zh);font-size:12px;line-height:18px}
.tbl td:first-child{font-family:var(--sans);color:#fff}
.tbl tbody tr:hover>td{background:#242424}
.tbl tbody tr.is-hot>td{background:var(--sel)}
.kv>div{display:grid;grid-template-columns:7em 1fr;gap:8px;padding:1px 4px}
.kv dt{color:var(--grey)}
.kv dd{color:#fff;font-family:var(--zh);min-width:0;overflow-wrap:anywhere}
.kv>div:hover{background:#242424}
.kv__name{font:inherit;color:inherit}

/* ---------------- LOOP ---------------- */
.loop{display:flex;flex-direction:column;gap:6px}
.loop__svg{width:100%;height:auto;max-height:200px;flex:0 0 auto;overflow:visible}
#p-loop .loop__svg{cursor:pointer}
.dossier section+section{margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}
.dossier__h{display:flex;align-items:baseline;gap:6px;font:400 12px/20px var(--sans);color:#fff;margin:0 0 6px}
.dossier__h>span:first-child{color:var(--dim);font:500 11px var(--mono)}
.dossier__go{margin-left:auto;color:var(--grey);font-size:12px;text-decoration:none!important}
.dossier__go:hover{color:#fff}
a.gantt:hover{background:#242424}
.sheet-tabs{display:flex;align-items:stretch;min-width:0}
.sheet-tab{display:flex;align-items:center;padding:0 14px;color:#bdbdbd;border-right:1px solid var(--line);font-size:12px}
.sheet-tab.is-on{background:#2c2c2c;color:#fff;box-shadow:inset 0 2px 0 var(--brand)}
.sheet-tab:hover{color:#fff;background:var(--bg3)}
.sheet[hidden],.panel__head [hidden]{display:none!important}
.sheet__links{display:flex;align-items:stretch;margin:0 0 4px;border-bottom:1px solid var(--line)}
.sheet__links a{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;color:var(--grey);font-size:12px;border-right:1px solid var(--line);text-decoration:none!important}
.sheet__links a span{color:var(--dim);font-family:var(--mono);font-size:11px}
.sheet__links a:hover{color:#fff;background:var(--bg3)}
.is-max .loop__svg{max-height:min(40vh,300px)}
.loop__edge{fill:none;stroke:#555;stroke-width:1}
.loop__lbl text{fill:var(--grey);font:10px var(--zh)}
.loop__node{cursor:pointer;outline:0}
.loop__node rect{fill:#1b1b1b;stroke:#4a4a4a;stroke-width:1}
.loop__node rect.acc{fill:transparent;stroke:none}
.loop__node text{fill:#fff;font:12px var(--zh)}
.loop__node text.n{fill:var(--grey);font:500 10px var(--mono)}
.loop__node:hover rect,.loop__node.is-on rect,.loop__node:focus-visible rect{fill:#333;stroke:#777}
.loop__node:hover rect.acc,.loop__node.is-on rect.acc{fill:var(--brand);stroke:none}
.loop__core{fill:#fff;font:500 12px var(--zh)}
.loop__core.dim{fill:var(--dim);font:500 9.5px var(--mono);letter-spacing:.2em}
#packets rect{fill:#fff}
#packets rect.tr{fill:var(--y)}
.loop__tbl tr:target>td{background:var(--sel)}
.loop__tbl td:nth-child(2){white-space:nowrap}
.loop__tbl td:nth-child(4){color:var(--y);white-space:nowrap}
.is-max .loop__tbl{max-width:1100px;margin:0 auto}

/* ---------------- NEWS wire (Wind 财经要闻) ---------------- */
.wire li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:0 8px;padding:3px 4px}
.wire li:hover{background:#242424}
.wire__t{color:#cfcfcf;font-size:12px}
.wire__src{color:var(--grey);font-size:11px}
.wire h3{font:400 12.5px/18px var(--zh);color:#fff}
.wire h3 a{color:#fff}
.wire p{font:11.5px/17px var(--zh);color:var(--grey)}
.wire li.is-new{animation:newrow 1.2s steps(3)}
@keyframes newrow{0%,66%{background:#2a1a1a}}
.wire__more{padding:6px 4px 0;font-size:12px}
#p-news{overflow-y:scroll}
#p-desk:not(.is-max) #p-news .wire p{display:none}
#p-desk:not(.is-max) #p-news .wire li{padding:1px 4px}
#p-loop .panel__body,#p-career .panel__body,#p-stack .panel__body,#p-bio .panel__body{padding:4px 6px 6px}

/* ---------------- CAREER ---------------- */
.gantt{display:grid;grid-template-columns:8.2em minmax(0,1fr);gap:6px 10px;align-items:center;margin:0 0 8px;min-width:0;color:var(--grey);text-decoration:none!important;font:12px/16px var(--mono)}
.gantt__scale{grid-column:2;display:flex;justify-content:space-between;border-top:1px solid #6a6a6a;padding-top:4px;color:var(--dim);font-style:normal}
.gantt__scale i{position:relative;font-style:normal}
.gantt__scale i::before{content:"";position:absolute;top:-8px;left:0;width:1px;height:6px;background:#6a6a6a}
.gantt__scale i:last-child::before{left:auto;right:0}
.gantt__row{display:contents}
.gantt__name{display:flex;flex-direction:column;line-height:1.15;min-width:0;white-space:nowrap}
.gantt__name b{color:#fff;font-weight:500}
.gantt__name i{color:var(--dim);font:10px/14px var(--mono);font-style:normal}
.gantt__lane{position:relative;height:10px;margin-right:8px}
.gantt__lane .bar{position:absolute;top:0;height:10px;background:#6c6c6c}
.gantt__lane .bar.up{background:var(--up)}
.gantt__lane .bar.up::after{content:"";position:absolute;right:-6px;top:-2px;border-width:7px 0 7px 7px;border-style:solid;border-color:transparent transparent transparent var(--up)}
.gantt__note{grid-column:1 / -1;color:var(--dim);font:11px/16px var(--zh)}
.hist h2,.hist h3{font:400 12px/18px var(--zh);color:#fff;margin:0;white-space:nowrap}
.hist td:first-child{white-space:nowrap;font-size:11.5px}
.hist td:nth-child(4){color:#cfcfcf}
.is-max .loop__tbl td,.is-max .hist td{padding-top:4px;padding-bottom:4px}

/* ---------------- QUANT ---------------- */
.quant{display:flex;flex-direction:column;gap:5px;overflow:hidden}
.quote{display:flex;align-items:center;gap:2px 12px;flex-wrap:wrap;font-size:12px;color:var(--grey);padding:0 2px}
.quote__sym{color:#fff}
.val{color:#fff;font:700 14px var(--sans)}
.quote__warn{color:var(--y);border:1px solid rgba(245,196,0,.55);font:11px/16px var(--zh);padding:0 6px;margin-left:auto}
.quant__stage{position:relative;flex:1;min-height:90px;display:flex}
#quantCanvas{flex:1;min-height:90px;width:100%;display:block;background:var(--bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);cursor:crosshair;touch-action:none}
.qtip{position:absolute;z-index:2;top:22px;left:8px;min-width:148px;max-width:min(260px,78%);padding:4px 7px;background:rgba(20,20,20,.94);border:1px solid #5a5a5a;color:#d0d0d0;font:11px/16px var(--zh);pointer-events:none}
.qtip b{color:#fff;font-weight:600}
.qtip .up{color:var(--up)}
.qtip .down{color:var(--dn)}
.qtip__d{color:#fff;margin-bottom:1px}
.pipe{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);font-size:11px}
.pipe li{background:var(--bg1);text-align:center;color:var(--grey);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:1px 2px}
.pipe li.is-lit{background:#333;color:#fff;box-shadow:inset 0 2px 0 var(--brand)}
.quant .note{margin-top:0}

/* ---------------- STACK watchlist ---------------- */
.watch th button{font:inherit;color:inherit}
.watch th button:hover{color:#fff}
.watch th[aria-sort="ascending"] button::after{content:" ▲";color:var(--up)}
.watch th[aria-sort="descending"] button::after{content:" ▼";color:var(--dn)}
.watch td:first-child{font-weight:700;width:6ch;color:#fff}
.watch td:nth-child(3){font:11px var(--sans);color:var(--grey)}
.watch td.lvl{font-family:var(--mono);white-space:nowrap;color:var(--up);letter-spacing:-1px}
.watch td.lvl .tbd{color:#4a4a4a}
.watch td.lvl .n{color:var(--grey);letter-spacing:0;margin-left:6px;font-size:11px}

/* ---------------- ASK ---------------- */
.ask{display:flex;flex-direction:column;padding-bottom:0}
.ask__log{flex:1;overflow:auto;font-family:var(--zh);font-size:12px;scrollbar-width:thin;scrollbar-color:#444 transparent;padding:0 4px}
.ask__log p{margin-bottom:2px}
.ask__sugg button{color:var(--blue);text-align:left;font-family:var(--zh)}
.ask__sugg button:hover{text-decoration:underline}
.ask__q{color:#fff;margin-top:8px}
.ask__q::before{content:"问> ";font-family:var(--mono);color:var(--grey)}
.ask__a{color:#d8d8d8;padding-left:4.5ch;text-indent:-4.5ch}
.ask__a::before{content:"RY> ";font-family:var(--mono);color:var(--up)}
.ask__a.typing::after{content:"";display:inline-block;width:7px;height:13px;vertical-align:-2px;background:#e4e4e4;animation:blink 1s steps(1) infinite}
.is-max .ask__log{font-size:13.5px;line-height:22px}
.is-max .ask__log>*{max-width:120ch}
.ask__form{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);height:28px;flex:0 0 28px;margin:0 -8px;padding:0 8px;background:var(--bg1)}
.ask__prompt{color:var(--grey);font:600 12px var(--mono)}
.ask__form input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:#fff;font:12.5px var(--zh);caret-color:#fff}

/* ---------------- FAQ / COLLAB / CONTACT ---------------- */
.faq__item{padding:3px 4px 6px;border-bottom:1px solid #1f1f1f}
.faq h3{font:400 12.5px/18px var(--zh);color:#fff}
.faq__q{display:inline-block;background:var(--brand);color:#fff;font:600 10.5px/15px var(--sans);padding:0 4px;margin-right:6px}
.faq p{font:12px/18px var(--zh);color:#b8b8b8;padding-left:30px}
.collab td:first-child{width:2ch;color:var(--up);font-weight:700}
.collab h3{font:400 12.5px/18px var(--zh);color:#fff}
.collab p{font-size:11.5px;color:var(--grey)}
.socialdock{display:flex;align-items:center;height:100%}
.socialdock a,.socialdock button{width:26px;height:22px;display:flex;align-items:center;justify-content:center;color:#8a8a8a;border-radius:6px;text-decoration:none!important}
.socialdock a:hover,.socialdock button:hover,.socialdock a:focus-visible,.socialdock button:focus-visible,.socialdock.is-on a,.socialdock.is-on button{background:#ececec;color:#1a1a1a}
.socialdock svg{width:15px;height:15px;display:block}
.wxqr{position:fixed;z-index:80;background:#fff;border:1px solid var(--line3);box-shadow:0 8px 24px rgba(0,0,0,.55)}
.wxqr[hidden]{display:none!important}
.wxqr img{display:block;width:min(280px,72vw);height:auto;max-height:min(68dvh,560px);object-fit:contain}
.is-max .faq,.is-max .wire,.is-max .collab,.is-max .kv{max-width:120ch}
.is-max .prose{font-size:14px;line-height:24px;max-width:80ch}

/* ---------------- bottom: ticker tape + status bar ---------------- */
.tape{overflow:hidden;background:var(--bg1);border-top:1px solid var(--line);white-space:nowrap;position:relative}
.tape__track{display:inline-flex;height:21px;align-items:center;will-change:transform}
.tape.is-running .tape__track{animation:tape var(--tape-dur,80s) linear infinite}
.tape:hover .tape__track{animation-play-state:paused}
@keyframes tape{to{transform:translateX(-50%)}}
.tape li{padding:0 14px;color:#fff;display:flex;gap:6px;align-items:center}
.tape li b{color:#cfcfcf;font-weight:400}
.tape li b::after{content:":"}
.tape li i{font-style:normal;color:var(--grey);font-size:11px}
.tape li em{font-style:normal;color:#fff}
.tape .tape__news b{color:var(--up)}
.tape .tape__news a{color:#fff}
.statusbar{display:flex;align-items:stretch;background:var(--bg2);border-top:1px solid #0a0a0a;font-size:12px;white-space:nowrap;overflow:hidden}
.fkeys{display:flex;align-items:stretch}
.fkeys a{display:flex;align-items:center;gap:5px;padding:0 9px 0 4px;color:#cfcfcf;border-right:1px solid #1a1a1a;text-decoration:none!important}
.fkeys kbd{background:#3a3a3a;color:#fff;border:1px solid #555;padding:2px 4px 1px;min-width:26px;text-align:center}
.fkeys a:hover{background:var(--bg3);color:#fff}
.fkeys a.is-on{color:#fff;background:#333}
.fkeys a.is-on kbd{background:var(--brand);border-color:var(--brand)}
.statusbar__msg{flex:1;min-width:0;display:flex;align-items:center;padding:0 10px;color:var(--grey);overflow:hidden;text-overflow:ellipsis}
.statusbar__msg.err{color:var(--up)}
.statusbar__r{display:flex;align-items:center;margin-left:auto;padding:0 6px;border-left:1px solid #1a1a1a}

/* ---------------- help overlay ---------------- */
.help{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:16px}
.help[hidden]{display:none}
.help__box{width:min(940px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--line3);box-shadow:0 10px 40px rgba(0,0,0,.7)}
.help__box .panel__tab{box-shadow:inset 0 2px 0 var(--brand);background:#3a3a3a}
.help__close{margin-left:auto}
.help__body{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;padding:8px 12px 12px;overflow:auto}
.help__cmds td:first-child{white-space:nowrap}
.help__cmds td:first-child button{color:#fff;font:600 12px var(--mono);text-align:left}
.help__cmds td:nth-child(2){font:11px var(--mono);color:var(--y);white-space:nowrap}
.help kbd{display:inline-block;background:#3a3a3a;color:#fff;border:1px solid #555;padding:2px 4px 1px;margin-right:2px}
.help__cmds tbody tr{cursor:pointer}

/* ---------------- boot ---------------- */
.boot{position:fixed;inset:0;z-index:150;background:var(--bg);color:#cfcfcf;font:12px/19px var(--mono);padding:28px 30px;white-space:pre-wrap;cursor:pointer}
.boot b{color:#fff;font-weight:500} .boot .ok{color:#fff;font-weight:600} .boot .y{color:var(--y)}
.boot__logo{display:inline-block;background:var(--brand);color:#fff;font:700 20px/1 var(--sans);padding:7px 8px;margin-bottom:12px;vertical-align:middle}
.boot__name{font:700 16px var(--sans);margin-left:8px;vertical-align:middle}

.flick{animation:flick .5s steps(1)} .flick-up{animation:flickup .5s steps(1)} .flick-dn{animation:flickdn .5s steps(1)}
@keyframes flick{0%{background:rgba(255,255,255,.18)}50%,100%{background:transparent}}
@keyframes flickup{0%{background:rgba(255,59,59,.35)}50%,100%{background:transparent}}
@keyframes flickdn{0%{background:rgba(31,192,90,.35)}50%,100%{background:transparent}}

/* =====================================================================
   POSTS — Wind 新闻阅读器
   ===================================================================== */
.reader{display:grid;grid-template-columns:minmax(300px,30%) 1fr;gap:1px;background:#050505;min-height:0}
.reader>.panel{min-height:0}
.reader__side{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:1px;background:#050505;min-height:0}
.reader__side>.panel{min-height:0}
.reader--idx{grid-template-columns:1fr 300px}
.reader--doc{grid-template-columns:minmax(0,1fr)}
.side__body{padding:6px 8px 10px}
.side__body .tbl td.r{font-family:var(--sans);color:#fff}
.newslist li a{display:grid;grid-template-columns:78px minmax(0,1fr);gap:0 8px;padding:4px 6px;color:var(--text);text-decoration:none;border-bottom:1px solid #1d1d1d}
.newslist li a:hover{background:#242424}
.newslist li a[aria-current="page"]{background:var(--sel);box-shadow:inset 2px 0 0 var(--brand)}
.newslist .t{color:#cfcfcf} .newslist .s{color:var(--grey);font-size:11px} .newslist .h{color:#fff;font-family:var(--zh)}
.story{max-width:860px;margin:0 auto;padding:14px 18px 40px}
.story__crumb{font-size:12px;color:var(--grey);margin-bottom:10px}
.story__crumb a{color:#cfcfcf}
.story__crumb span{margin:0 5px;color:var(--dim)}
.story__title{font:700 22px/1.45 var(--zh);color:#fff;margin-bottom:8px}
.story__meta{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--grey);padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:6px}
.story__meta b{color:#fff;font-weight:400}
.story__tags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 14px}
.story__tags a,.tagchip{font-size:11px;color:#cfcfcf;border:1px solid var(--line3);padding:0 6px;line-height:18px;text-decoration:none!important}
.story__tags a:hover{border-color:#888;color:#fff}
.story__sample{border:1px solid rgba(245,196,0,.55);color:var(--y);padding:4px 10px;margin:8px 0 14px;font-family:var(--zh);font-size:12.5px}
.story__summary{color:#cfcfcf;background:var(--bg1);border-left:2px solid var(--brand);padding:8px 12px;margin:0 0 16px;font:13px/22px var(--zh)}
.md{font:15px/1.95 var(--zh);color:#dcdcdc}
.md>*+*{margin-top:.9em}
.md h2{font:700 17px/1.5 var(--zh);color:#fff;margin-top:1.6em;padding-bottom:4px;border-bottom:1px solid var(--line)}
.md h3{font:700 15.5px/1.5 var(--zh);color:#fff;margin-top:1.3em}
.md ul{list-style:disc;padding-left:1.4em} .md ol{list-style:decimal;padding-left:1.6em}
.md li+li{margin-top:.25em}
.md strong{color:#fff}
.md a{color:var(--blue)}
.md blockquote{margin:0;padding:4px 14px;border-left:2px solid var(--line3);color:var(--grey)}
.md code{font:13px var(--mono);background:#222;padding:1px 5px;color:#f0f0f0}
.md pre{background:#101010!important;border:1px solid var(--line);padding:10px 12px;overflow:auto;line-height:1.6}
.md pre code{background:none;padding:0;font-size:12.5px}
.md table{border-collapse:collapse;font-size:13px}
.md th,.md td{border:1px solid var(--line2);padding:3px 10px}
.md th{background:var(--bg1);color:var(--grey);font-weight:400}
.md img{max-width:100%;height:auto}
.md hr{border:0;border-top:1px solid var(--line)}
.story__foot{margin-top:28px;padding-top:10px;border-top:1px solid var(--line);font-size:12px;color:var(--grey);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.story__foot a{color:#cfcfcf}
.postidx .tbl td{font-size:12.5px;padding-top:4px;padding-bottom:4px}
.postidx .tbl td:first-child{color:#cfcfcf;white-space:nowrap}
.postidx h2{font:400 12.5px/18px var(--zh);display:inline}
.postidx h2 a{color:#fff}
.postidx .sum{display:block;color:var(--grey);font-size:12px}
.postidx .src{color:var(--grey);white-space:nowrap}

/* ---------------- small screens: stacked panels ---------------- */
@media (max-width:980px),(max-height:620px){
  html,body{height:auto}
  .term{display:block;height:auto;overflow:visible;padding-bottom:calc(68px + env(safe-area-inset-bottom))}
  .appbar{height:34px}
  .logo{width:34px;flex-basis:34px;font-size:14px}
  .fnbtns{display:none}
  .langpick{margin-left:auto}
  .langpick a{padding:0 14px;font-size:13px}
  .wintab{padding:0 10px}
  .wintab--doc{max-width:40vw;line-height:34px}
  .subbar{position:sticky;top:0;height:40px;z-index:30}
  .subbar__tab,.summary{display:none}
  .subbar__crumb{display:none}
  .cmd{flex:1;border-right:0}
  .cmd input,.cmd__ghost{font-size:14px;line-height:40px}
  .cmd__ac{top:39px;left:0;right:0;min-width:0}
  .cmd__ac li{grid-template-columns:9ch 1fr}
  .cmd__ac li span{display:none}
  .key--go{display:none}
  .subbar__palette{display:block;font:700 12px/1 var(--sans);color:#fff;background:var(--brand);padding:0 14px}
  .grid{display:flex;flex-direction:column;background:#050505}
  .stage-foot,.rail{display:contents}
  #p-quant{order:1}#p-desk{order:2}#p-file{order:3}
  #p-desk #p-news .wire p{display:block}
  .socialdock a,.socialdock button{width:34px;height:34px;border-radius:8px}
  .socialdock svg{width:18px;height:18px}
  .panel{scroll-margin-top:44px}
  .panel__head{height:30px;flex-basis:30px}
  .panel__title{font-size:13.5px}
  .panel__code{display:none}
  .panel__max{margin-left:auto;height:22px;line-height:20px;padding:0 10px}
  .panel__subtab{padding:0 10px}
  .panel__body{overflow:visible;padding:8px 12px 12px}
  #p-news{overflow:visible}
  .panel.is-max{position:fixed;inset:40px 0 calc(68px + env(safe-area-inset-bottom)) 0;z-index:30}
  .panel.is-max .panel__body{overflow:auto}
  .quant__stage{flex:0 0 240px;height:240px;min-height:240px}
  #quantCanvas{height:240px;flex:1 1 auto}
  .quote__warn{margin-left:0}
  .pipe{grid-template-columns:repeat(3,1fr)}
  .prose,.wire h3,.faq h3{font-size:14.5px;line-height:23px}
  .faq p,.tbl td,.kv dd,.kv dt{font-size:13.5px;line-height:21px}
  .faq p{padding-left:0}
  .wire li{grid-template-columns:44px minmax(0,1fr)}
  .wire article{grid-column:1/-1}
  .gantt{font-size:12px}
  .help__body{grid-template-columns:1fr}
  .tape{position:fixed;left:0;right:0;bottom:calc(46px + env(safe-area-inset-bottom));z-index:25;height:22px}
  .statusbar{position:fixed;left:0;right:0;bottom:0;z-index:25;height:calc(46px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
  .statusbar__msg{display:none}
  .fkeys{flex:1;overflow-x:auto;scrollbar-width:none}
  .fkeys::-webkit-scrollbar{display:none}
  .fkeys a{flex-direction:column;justify-content:center;gap:4px;padding:0 10px;min-width:58px;font-size:12px}
  .reader{display:flex;flex-direction:column}
  .reader .panel--list,.reader__side{order:2}
  .reader__side{display:flex;flex-direction:column}
  .story{padding:12px 14px 30px}
  .story__title{font-size:20px}
  .md{font-size:15.5px}
  .newslist li a{grid-template-columns:78px minmax(0,1fr)}
  .page-posts .panel__body,.page-post .panel__body{overflow:visible}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .tape{overflow-x:auto}
}
