/* legacy: astock.c60e5ad5.css */
:root{color-scheme:dark;--bg-sunken:#0B0E13;--bg:#0B0E13;--surface:#141821;--surface-elevated:#1A2029;--surface-hover:#1F2733;--ink-1:#F2F4F8;--ink-2:#B9C0CC;--ink-3:#8A93A3;--ink-4:#8A93A3;--border-1:#262E38;--border-2:#333D49;--grid-line:#2B333D;--axis-line:#48525F;--up:#E06B5C;--up-tint:#33201E;--up-ink:#F0A094;--down:#4DBD82;--down-tint:#14291F;--down-ink:#86D4AB;--flat:#8A93A3;--warn:#E0AC4E;--warn-tint:#2E2415;--warn-ink:#F0C987;--info:#5B9BF0;--info-tint:#16233A;--info-ink:#A3C6FA;--ok:#46B8BD;--ok-tint:#14282A;--ok-ink:#86D6D9;--accent:#98A4F2;--accent-hover:#ADB7F7;--accent-tint:#1D2340;--accent-ink:#BCC4F8;--on-accent:#0A0D12;--viz-1:#6FB4E0;--viz-2:#57C4BD;--viz-3:#D987CF;--viz-4:#CFD166;--viz-5:#6CC6D8;--viz-6:#A99CF5;--viz-7:#64D8C6;--font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Source Sans 3",Inter,system-ui,sans-serif;--font-num:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sp-1:4px;--sp-2:6px;--sp-3:8px;--sp-4:12px;--sp-5:16px;--sp-6:20px;--sp-8:28px;--r-0:2px;--r-1:6px;--r-2:8px;--r-3:8px;--r-full:999px;--fs-xs:13px;--fs-sm:13.5px;--fs-md:15px;--fs-lg:18px;--fs-xl:20px;--fs-2xl:24px;--lh-num:1.1;--sp-half:2px;--sp-2h:7px;--sp-3h:9px;--fw-medium:500;--fw-semibold:600;--sh-1:none;--sh-2:none;--sh-3:0 2px 6px rgba(13,17,23,.08),0 16px 32px -12px rgba(13,17,23,.16);--shadow-1:var(--sh-1);--shadow-2:var(--sh-2);--shadow-up:0 -1px 3px rgba(18,22,29,.05);--appbar-h:56px;--max-w:1440px;--pad-page-x:20px;--z-sticky:100;--fs-2xs:11.5px;--fs-tbl:12.5px;--fs-lead:28px;--fw-regular:400;--lh-tight:1.2;--lh-snug:1.42;--lh-body:1.6;--lh-loose:1.65;--ls-tight:-.2px;--sp-7:24px;--sp-9:32px;--row-h-list:44px;--row-h-tbl:33px;--row-h-cond:32px;--card-pad:16px;--sec-gap:24px;--bw-1:1px;--shadow-3:var(--sh-3);--z-tblhead:2;--z-pill:6;--z-dropdown:200;--z-bottomnav:120;--z-modal:300;--z-skiplink:500;--dur-1:120ms;--dur-2:160ms;--dur-3:240ms;--dur-flash:700ms;--dur-skel:1.25s;--ease-std:cubic-bezier(.25,.1,.25,1);--ease-out:cubic-bezier(.2,.7,.3,1);--ease-in:cubic-bezier(.4,0,1,1);--ease-flash:ease-out;--icon-sm:14px;--icon-md:16px;--icon-lg:18px;--grade-on:var(--accent);--grade-off:var(--border-2);--evi-neutral-bg:var(--bg-sunken);--evi-alert-bg:var(--warn-tint);--evi-alert-ink:var(--warn-ink);--cond-idle:var(--ink-3);--cond-approach:var(--warn);--cond-triggered:var(--warn-ink);--cond-void:var(--ink-4);--acc-key:var(--accent-ink);--fs-lead-r:var(--fs-lead);--fs-num-main:var(--fs-lg);--fs-num-big:var(--fs-xl);--fs-3xs:11px;--accent-line:var(--border-2);--surface-sunken:var(--bg-sunken);--quant-mid:var(--flat)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg-sunken:#0B0E13;--bg:#0B0E13;--surface:#141821;--surface-elevated:#1A2029;--surface-hover:#1F2733;--ink-1:#F2F4F8;--ink-2:#B9C0CC;--ink-3:#8A93A3;--ink-4:#8A93A3;--border-1:#262E38;--border-2:#333D49;--grid-line:#2B333D;--axis-line:#48525F;--up:#E06B5C;--up-tint:#33201E;--up-ink:#F0A094;--down:#4DBD82;--down-tint:#14291F;--down-ink:#86D4AB;--flat:#8A93A3;--warn:#E0AC4E;--warn-tint:#2E2415;--warn-ink:#F0C987;--info:#5B9BF0;--info-tint:#16233A;--info-ink:#A3C6FA;--ok:#46B8BD;--ok-tint:#14282A;--ok-ink:#86D6D9;--accent:#98A4F2;--accent-hover:#ADB7F7;--accent-tint:#1D2340;--accent-ink:#BCC4F8;--on-accent:#0A0D12;--viz-1:#6FB4E0;--viz-2:#57C4BD;--viz-3:#D987CF;--viz-4:#CFD166;--viz-5:#6CC6D8;--viz-6:#A99CF5;--viz-7:#64D8C6;--sh-1:none;--sh-2:none;--sh-3:0 2px 6px rgba(0,0,0,.5),0 16px 32px -12px rgba(0,0,0,.7);--shadow-up:0 -1px 3px rgba(0,0,0,.4)}}[data-theme=light]{color-scheme:light;--bg-sunken:#EDEAE0;--bg:#F4F2EC;--surface:#FBFAF6;--surface-elevated:#FFFFFF;--surface-hover:#ECE8DB;--ink-1:#1C1A16;--ink-2:#4A463C;--ink-3:#6B665A;--ink-4:#6B665A;--border-1:#E2DDCF;--border-2:#CBC3AE;--grid-line:#ECE8DB;--axis-line:#D5CFC0;--up:#C0392B;--up-tint:#FBECEB;--up-ink:#9E2B1F;--down:#0D7A45;--down-tint:#E7F4EC;--down-ink:#0A5F37;--flat:#6B665A;--warn:#92600A;--warn-tint:#FDF2E0;--warn-ink:#7E4A00;--info:#1A63D8;--info-tint:#E9F1FE;--info-ink:#14509F;--ok:#0A7276;--ok-tint:#E2F3F4;--ok-ink:#07676A;--accent:#3B49B4;--accent-hover:#303C99;--accent-tint:#EEF0FC;--accent-ink:#2C3787;--on-accent:#FFFFFF;--viz-1:#033C60;--viz-2:#04504E;--viz-3:#971790;--viz-4:#656904;--viz-5:#017F97;--viz-6:#6455DB;--viz-7:#09766D;--sh-1:none;--sh-2:none;--sh-3:0 2px 6px rgba(13,17,23,.08),0 16px 32px -12px rgba(13,17,23,.16);--shadow-up:0 -1px 3px rgba(18,22,29,.05)}[data-theme=dark]{color-scheme:dark;--bg-sunken:#0B0E13;--bg:#0B0E13;--surface:#141821;--surface-elevated:#1A2029;--surface-hover:#1F2733;--ink-1:#F2F4F8;--ink-2:#B9C0CC;--ink-3:#8A93A3;--ink-4:#8A93A3;--border-1:#262E38;--border-2:#333D49;--grid-line:#2B333D;--axis-line:#48525F;--up:#E06B5C;--up-tint:#33201E;--up-ink:#F0A094;--down:#4DBD82;--down-tint:#14291F;--down-ink:#86D4AB;--flat:#8A93A3;--warn:#E0AC4E;--warn-tint:#2E2415;--warn-ink:#F0C987;--info:#5B9BF0;--info-tint:#16233A;--info-ink:#A3C6FA;--ok:#46B8BD;--ok-tint:#14282A;--ok-ink:#86D6D9;--accent:#98A4F2;--accent-hover:#ADB7F7;--accent-tint:#1D2340;--accent-ink:#BCC4F8;--on-accent:#0A0D12;--viz-1:#6FB4E0;--viz-2:#57C4BD;--viz-3:#D987CF;--viz-4:#CFD166;--viz-5:#6CC6D8;--viz-6:#A99CF5;--viz-7:#64D8C6;--sh-1:none;--sh-2:none;--sh-3:0 2px 6px rgba(0,0,0,.5),0 16px 32px -12px rgba(0,0,0,.7);--shadow-up:0 -1px 3px rgba(0,0,0,.4)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0}body{font:var(--fs-sm)/1.55 var(--font-sans);color:var(--ink-1);-webkit-font-smoothing:antialiased;background:var(--bg-sunken)}button,input,select{font:inherit;color:inherit}a{color:var(--info);text-decoration:none}a:hover{text-decoration:underline}.tnum{font-family:var(--font-num);font-variant-numeric:tabular-nums}::selection{background:var(--accent-tint)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:var(--r-1)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:var(--r-full);border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--ink-4);background-clip:content-box}::-webkit-scrollbar-track{background:0 0}header.appbar{position:sticky;top:0;z-index:var(--z-sticky);height:var(--appbar-h);display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--pad-page-x);background:var(--surface);border-bottom:1px solid var(--border-1)}.brand{display:inline-flex;align-items:center;gap:var(--sp-2);flex:0 0 auto;padding:var(--sp-1) var(--sp-4);background:var(--accent);color:var(--on-accent);border-radius:var(--r-2);text-decoration:none;transition:background-color var(--dur-1) var(--ease-std)}.brand:hover{text-decoration:none;background:var(--accent-hover)}.brand .blogo{width:22px;height:22px;flex:0 0 22px;display:block}.brand .blogo svg{width:100%;height:100%;display:block}.brand .bname{font-size:var(--fs-lg);font-weight:var(--fw-semibold);letter-spacing:.3px;color:var(--on-accent)}.tp-layer{margin-top:var(--sp-4)}.tp-lh{display:flex;align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-2)}.tp-lh .nm{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--ink-2)}.tp-lh .wt{font-size:var(--fs-2xs);color:var(--ink-3)}.grp>.gh .wt{font-size:var(--fs-2xs);color:var(--ink-4)}.tp-row{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:3px}.tp-row .fn{flex:0 0 96px;font-size:var(--fs-2xs);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tp-row .bar{flex:1 1 auto;height:7px;border-radius:var(--r-full);background:var(--bg-sunken);overflow:hidden;min-width:60px}.tp-row .bar i{display:block;height:100%;border-radius:var(--r-full);transition:width var(--dur-3) var(--ease-out)}.tp-row .fv{flex:0 0 26px;text-align:right;font-size:var(--fs-2xs);color:var(--ink-3)}@media(max-width:420px){.tp-row .fn{flex-basis:80px}}.alarm-pill{display:inline-flex;align-items:center;gap:4px;background:var(--warn-tint);border:1px solid var(--warn);color:var(--warn-ink);padding:2px 8px;border-radius:var(--r-full);font-size:var(--fs-xs);cursor:pointer;font-weight:var(--fw-semibold);transition:all var(--dur-1) var(--ease-std)}.alarm-pill.pulse{animation:pulse-glow 2s infinite}@keyframes pulse-glow{0%{box-shadow:0 0 0 0 var(--warn)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}.anomaly-modal,.dual-pane-modal{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}.anomaly-dialog{background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);width:min(640px,92vw);max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 40px rgba(0,0,0,.4)}.modal-header{padding:12px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-1)}.modal-body{padding:16px;overflow-y:auto}.ano-item{padding:10px 12px;border-radius:var(--r-1);background:var(--bg-sunken);margin-bottom:8px;border-left:3px solid var(--accent)}.ano-item.pulse-red{border-left-color:var(--warn)}.ano-item.pulse-gold{border-left-color:var(--warn)}.ano-item.pulse-green{border-left-color:var(--ok)}.ano-item.pulse-blue{border-left-color:var(--info)}body.is-embed #appbar,body.is-embed #bnav,body.is-embed .appbar,body.is-embed .bnav,body.is-embed .pgf-wrap,body.is-embed .wab-fab,html.is-embed #appbar,html.is-embed #bnav,html.is-embed .appbar,html.is-embed .bnav,html.is-embed .pgf-wrap,html.is-embed .wab-fab{display:none!important}body.is-embed #view,body.is-embed main,html.is-embed #view,html.is-embed main{padding-top:4px!important;padding-bottom:4px!important}.anomaly-modal,.dual-pane-modal{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(5px)}.dual-pane-container{width:98vw;height:96vh;background:var(--bg);border:1px solid var(--border-1);border-radius:var(--r-2);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 50px -12px rgba(0,0,0,.5)}.dual-pane-toolbar{min-height:46px;display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:var(--surface);border-bottom:1px solid var(--border-1);flex-wrap:wrap;gap:8px;z-index:10}.dual-tb-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dual-tb-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}.dual-title{color:var(--accent-ink);font-weight:var(--fw-semibold);font-size:13px;display:flex;align-items:center;gap:4px}.dual-sel{background:var(--bg-sunken);color:var(--ink-1);border:1px solid var(--border-1);padding:4px 8px;border-radius:var(--r-1);font-size:12px;max-width:260px}.dual-custom-box{display:flex;align-items:center;gap:4px}.dual-ipt{width:90px;padding:3px 6px;font-size:11px;background:var(--bg-sunken);color:var(--ink-1);border:1px solid var(--border-1);border-radius:var(--r-1);text-transform:uppercase}.dual-pane-frames{flex:1;display:flex;width:100%;height:calc(100% - 46px);position:relative}.dual-pane-frames.dir-col{flex-direction:column}.dual-pane-frame-box{flex:1;height:100%;position:relative;min-width:120px;min-height:120px;overflow:hidden}.dual-pane-frames.dir-col .dual-pane-frame-box{width:100%}.dual-pane-frame-box iframe{width:100%;height:100%;border:none;background:var(--bg);display:block}.pane-badge{position:absolute;top:8px;left:8px;background:rgba(0,0,0,.6);color:#fff;padding:2px 8px;border-radius:var(--r-1);font-size:10px;pointer-events:none;z-index:5;backdrop-filter:blur(3px);border:1px solid rgba(255,255,255,.15)}.dual-pane-sep{width:6px;height:100%;background:var(--border-1);cursor:col-resize;transition:background .15s ease;position:relative;z-index:8;flex:none}.dual-pane-frames.dir-col .dual-pane-sep{width:100%;height:6px;cursor:row-resize}.dual-pane-sep.is-dragging,.dual-pane-sep:hover{background:var(--accent)}@media (max-width:768px){.dual-pane-container{width:100vw;height:100vh;border-radius:0}.dual-pane-toolbar{padding:4px 8px;gap:4px;min-height:60px;flex-direction:column;align-items:stretch}.dual-tb-left{width:100%;display:flex;justify-content:space-between;align-items:center;gap:6px}.dual-tb-right{width:100%;display:flex;justify-content:space-between;align-items:center;gap:4px;margin-left:0}.dual-sel{flex:1;max-width:none;font-size:11px;padding:3px 6px}.dual-tb-right .cpbtn,.dual-tb-right .xbtn{padding:2px 6px!important;font-size:11px!important;flex:1;text-align:center}.dual-title{display:none}.dual-custom-box{display:none}.dual-pane-frames{flex-direction:column!important}.dual-pane-sep{width:100%!important;height:6px!important;cursor:row-resize!important}}.card-fold-btn{background:0 0;border:1px solid var(--border-1);color:var(--ink-3);font-size:var(--fs-2xs);padding:2px 8px;border-radius:var(--r-full);cursor:pointer;margin-left:auto;line-height:1.2;transition:all var(--dur-1) var(--ease-std)}.card-fold-btn:hover{color:var(--accent-ink);border-color:var(--accent);background:var(--surface-hover)}.card.collapsed>:not(h2){display:none!important}.card.collapsed{padding-bottom:var(--sp-2)!important;margin-bottom:var(--sp-2)!important}.minimal-view-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;margin-bottom:12px;background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-1);font-size:var(--fs-xs);color:var(--ink-2)}.minimal-view-bar .mode-pill{padding:3px 10px;border-radius:var(--r-full);cursor:pointer;border:1px solid var(--border-1);background:var(--bg-sunken);color:var(--ink-2)}.minimal-view-bar .mode-pill.active{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-ink);font-weight:var(--fw-semibold)}@media (max-width:768px){.tw table td:first-child,.tw table th:first-child,table.ftbl td:first-child,table.ftbl th:first-child{position:sticky!important;left:0!important;z-index:2!important;background:var(--surface)!important;box-shadow:2px 0 4px rgba(0,0,0,.12)!important}.tw table th:first-child,table.ftbl th:first-child{z-index:3!important;background:var(--bg-sunken)!important}.tw table tbody tr:nth-child(2n) td:first-child,table.ftbl tbody tr:nth-child(2n) td:first-child{background:var(--bg-sunken)!important}}.tw table td.stk-l,.tw table th.stk-l{position:sticky;left:0;z-index:2;background:var(--surface);box-shadow:1px 0 0 var(--border-1)}.tw table th.stk-l{z-index:3;background:var(--bg-sunken)}.tw table tbody tr:nth-child(2n) td.stk-l{background:var(--bg-sunken)}.tbl-tools{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-1)}.cpbtn{border:1px solid var(--border-1);background:var(--surface);color:var(--ink-3);font-size:var(--fs-2xs);padding:2px var(--sp-3);border-radius:var(--r-1);cursor:pointer;font-family:inherit;transition:color var(--dur-1) var(--ease-std),border-color var(--dur-1) var(--ease-std)}.cpbtn:hover{color:var(--accent-ink);border-color:var(--accent)}.cpbtn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.feeddup{margin:var(--sp-2) 0 0;font-size:var(--fs-2xs);color:var(--ink-4);text-align:center}.gday{margin:var(--sp-4) 0 var(--sp-2);padding-bottom:var(--sp-1);border-bottom:1px dashed var(--border-1);font-size:var(--fs-2xs);color:var(--ink-4);font-family:var(--font-num);font-variant-numeric:tabular-nums}.feed .gday:first-child{margin-top:0}.feedmore{display:block;margin:var(--sp-3) auto 0;padding:5px 16px;border:1px solid var(--border-2);background:var(--surface);color:var(--ink-3);font-size:var(--fs-xs);border-radius:var(--r-1);cursor:pointer;font-family:inherit;transition:color var(--dur-1) var(--ease-std),border-color var(--dur-1) var(--ease-std)}.feedmore:hover{color:var(--accent-ink);border-color:var(--accent)}.feedmore:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.leadline{font-size:var(--fs-xs);color:var(--ink-3);line-height:var(--lh-body);margin:0 0 var(--sp-3);padding-left:var(--sp-3);border-left:2px solid var(--accent)}.pnav{display:flex;align-items:center;gap:2px;flex:0 0 auto;padding:3px;border-radius:var(--r-full);background:var(--accent-tint);border:1px solid var(--border-2)}.pn{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 var(--sp-5);border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--accent-ink);text-decoration:none;white-space:nowrap;transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.pn:hover{background:var(--surface);text-decoration:none}.pn[aria-current=page]{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-1)}.pn[aria-current=page]:hover{background:var(--accent-hover);color:var(--on-accent)}.nsep{width:1px;height:20px;background:var(--border-2);flex:0 0 auto}nav.tablist{position:relative;display:flex;gap:2px;flex:1 1 auto;overflow-x:auto;scrollbar-width:none;height:100%}nav.tablist::-webkit-scrollbar{display:none}nav.tablist::after{content:"";display:none}nav.tablist.at-end::after{display:none}nav.tablist button{position:relative;padding:0 var(--sp-4);border:0;background:0 0;cursor:pointer;height:100%;color:var(--ink-2);font-weight:var(--fw-medium);white-space:nowrap;font-size:var(--fs-sm);flex:0 0 auto;transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}nav.tablist button:hover{color:var(--ink-1);background:var(--surface-hover)}nav.tablist button[aria-selected=true]{color:var(--accent);font-weight:var(--fw-semibold)}nav.tablist button[aria-selected=true]::after{content:"";position:absolute;left:var(--sp-3);right:var(--sp-3);bottom:0;height:2px;border-radius:var(--r-0) var(--r-0) 0 0;background:var(--accent)}.themebtn{display:flex;align-items:center;justify-content:center;width:40px;height:100%;background:0 0;border:0;border-left:1px solid var(--border-1);color:var(--ink-3);font-size:var(--fs-md);cursor:pointer;flex:0 0 auto}.themebtn:hover{color:var(--ink-1);background:var(--surface-hover)}.gsearch{position:relative;flex:0 0 250px;max-width:250px}.gsearch input{width:100%;padding:6px 11px 6px 30px;border:1px solid var(--border-1);border-radius:var(--r-1);background:var(--surface);outline:0;color:var(--ink-1);transition:border-color var(--dur-2) var(--ease-std);font-size:var(--fs-xs)}.gsearch input::placeholder{color:var(--ink-4)}.gsearch input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.gsearch::before{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:11px;height:11px;border:1.6px solid var(--ink-3);border-radius:50%;pointer-events:none}.gsearch::after{content:"";position:absolute;left:19px;top:calc(50% + 4px);width:5px;height:1.6px;background:var(--ink-3);transform:rotate(45deg);pointer-events:none}.sug{position:absolute;top:calc(100% + 5px);left:0;right:0;background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);box-shadow:var(--shadow-2);max-height:330px;overflow:auto;display:none;z-index:var(--z-dropdown);padding:var(--sp-1)}.sug.on{display:block}.sug div{padding:var(--sp-2h) 10px;cursor:pointer;display:flex;gap:10px;align-items:baseline;border-radius:var(--r-1)}.sug div.cur,.sug div:hover{background:var(--surface-hover)}.sug .c{color:var(--ink-3);font-size:var(--fs-xs);width:54px;flex:0 0 54px}.sug .n{font-weight:var(--fw-medium)}main.wrap{max-width:var(--max-w);margin:0 auto;padding:var(--sp-5) var(--pad-page-x) 60px}.card{background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);margin-bottom:var(--sec-gap);overflow:hidden;overflow:clip}.card>h2{position:relative;margin:0;padding:var(--sp-4) var(--sp-5);font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--ink-1);border-bottom:1px solid var(--border-1);background:var(--surface);display:flex;align-items:center;gap:var(--sp-3)}.card>h2::before{content:"";width:3px;height:1.05em;border-radius:2px;background:var(--accent);flex:none}.card>h2 .tag{margin-left:auto;font-weight:var(--fw-medium);font-size:var(--fs-xs);color:var(--ink-3);font-family:var(--font-num)}.sec-hint{margin-left:auto;font-size:11px;color:var(--ink-3);font-weight:var(--fw-medium)}.bd>.bd,.card>.bd{padding:var(--sp-4)}.bd>.bd.flat,.card>.bd.flat{padding:0}.bd>.bd.flat,.card>.bd.flat{color:var(--ink-1)}.grid{display:grid;gap:var(--sp-3)}.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.g4{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.pill{display:inline-block;padding:1px 8px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:var(--fw-semibold)}.pill.ok{background:var(--ok-tint);color:var(--ok-ink)}.pill.err{background:var(--warn-tint);color:var(--warn-ink)}.pill.warn{background:var(--warn-tint);color:var(--warn-ink)}.pill.info{background:var(--info-tint);color:var(--info-ink)}.pill.gray{background:var(--bg-sunken);color:var(--ink-2)}.newpill{position:sticky;top:calc(var(--appbar-h) + 6px);z-index:var(--z-pill);display:block;margin:0 auto 8px;width:fit-content;padding:5px 14px;border-radius:var(--r-full);background:var(--accent);color:var(--on-accent);font-size:var(--fs-2xs);font-weight:var(--fw-medium);cursor:pointer;border:0;box-shadow:var(--shadow-2)}.newpill:hover{background:var(--accent-hover);border-color:transparent}.bottomnav{display:none}@media(max-width:820px){nav.tablist{display:none}.bottomnav{display:flex;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;position:fixed;left:0;right:0;bottom:0;z-index:var(--z-bottomnav);background:var(--surface);border-top:1px solid var(--border-1);padding-left:4px;padding-right:20px;padding-bottom:env(safe-area-inset-bottom,0);box-shadow:var(--shadow-up);overscroll-behavior-x:contain;touch-action:pan-x;scroll-snap-type:x proximity}.bottomnav::-webkit-scrollbar{display:none}.bottomnav::after,.bottomnav::before{content:"";position:absolute;top:0;bottom:0;width:24px;pointer-events:none;z-index:1;display:none}.bottomnav::before{left:0;background:linear-gradient(to right,var(--surface),var(--surface) 30%,transparent)}.bottomnav::after{right:0;background:linear-gradient(to left,var(--surface),var(--surface) 30%,transparent)}.bottomnav.at-start::before{display:none}.bottomnav:not(.at-start)::before{display:block}.bottomnav.at-end::after{display:none}.bottomnav:not(.at-end)::after{display:block}.bottomnav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;min-width:58px;flex:0 0 auto;padding:6px 4px;color:var(--ink-3);font-size:var(--fs-2xs);line-height:1.2;text-align:center;position:relative;border:0;background:0 0;white-space:nowrap;box-sizing:border-box;user-select:none;-webkit-tap-highlight-color:transparent;scroll-snap-align:center}.bottomnav button[aria-selected=true]{color:var(--accent);font-weight:var(--fw-semibold)}.bottomnav button[aria-selected=true]::before{content:"";position:absolute;top:0;left:18%;right:18%;height:2px;background:var(--accent);border-radius:0 0 var(--r-0) var(--r-0)}.bottomnav button .ic{display:block;width:19px;height:19px;margin:0 auto;flex:none;background-color:currentColor;opacity:.9;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}.bottomnav button[data-v=market] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><rect x='3' y='3' width='7.5' height='8.5' rx='1.6'/><rect x='13.5' y='3' width='7.5' height='5' rx='1.6'/><rect x='13.5' y='11.5' width='7.5' height='9.5' rx='1.6'/><rect x='3' y='15.5' width='7.5' height='5.5' rx='1.6'/></svg>")}.bottomnav button[data-v=review] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><circle cx='12' cy='12' r='8.5'/><path d='M12 7.2V12l3.4 2'/></svg>")}.bottomnav button[data-v=stock] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><path d='M7 3.5v3M7 15v5.5'/><rect x='4' y='6.5' width='6' height='8.5' rx='1.3'/><path d='M17 3.5V9M17 20.5V15'/><rect x='14' y='9' width='6' height='6' rx='1.3'/></svg>")}.bottomnav button[data-v=sector] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><path d='M4 20V10M10 20V4M16 20v-7M22 20H2'/></svg>")}.bottomnav button[data-v=news] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><rect x='3.5' y='4.5' width='17' height='15' rx='2'/><path d='M7 9h10M7 12.5h10M7 16h6'/></svg>")}.bottomnav button[data-v=macro] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><path d='M6 18L18 6'/><circle cx='7.5' cy='7.5' r='2.6'/><circle cx='16.5' cy='16.5' r='2.6'/></svg>")}.bottomnav button[data-v=event] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'><path d='M12 3.5l2.3 5.2 5.2 2.3-5.2 2.3L12 18.5l-2.3-5.2L4.5 11l5.2-2.3z'/></svg>")}.bottomnav button[data-v=senti] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20.5 12c0 4.1-3.8 7.4-8.5 7.4-1 0-2-.15-2.9-.42L4.5 20.5l1.2-3.5C4.4 15.7 3.5 13.9 3.5 12c0-4.1 3.8-7.4 8.5-7.4s8.5 3.3 8.5 7.4z'/></svg>")}.bottomnav button[data-v=deriv] .ic{--ic:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M4 8.5h13l-3.4-3.4M20 15.5H7l3.4 3.4'/></svg>")}.bottomnav button{min-height:56px}body{padding-bottom:calc(60px + env(safe-area-inset-bottom,0px))}main{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}footer.pgf{margin-bottom:calc(60px + env(safe-area-inset-bottom,0px))}#helpbtn{display:none}}@media(max-width:420px){.bottomnav{padding-right:26px}.bottomnav button{min-width:56px;padding:6px 2px;font-size:11px;gap:2px}.bottomnav button .ic{width:18px;height:18px;margin-bottom:1px}.bottomnav button[aria-selected=true]::before{left:15%;right:15%}}@media(max-width:820px) and (display-mode:standalone){.bottomnav{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 2px)}}.skel{padding:var(--sp-4)}.skel .bar{height:12px;border-radius:var(--r-1);background:var(--bg-sunken);margin-bottom:var(--sp-3);position:relative;overflow:hidden}.skel .bar::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--surface-hover),transparent);animation:skelSweep var(--dur-skel) ease-in-out infinite}.skel .bar.w40{width:40%}.skel .bar.w60{width:60%}.skel .bar.w80{width:80%}.skel .row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--sp-3)}.skel .box{height:54px;border-radius:var(--r-2);background:var(--bg-sunken);position:relative;overflow:hidden}.skel .box::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--surface-hover),transparent);animation:skelSweep var(--dur-skel) ease-in-out infinite}@keyframes skelSweep{100%{transform:translateX(100%)}}@media(prefers-reduced-motion:reduce){.skel .bar::after,.skel .box::after{animation:none}}.skiplink{position:absolute;left:8px;top:-60px;z-index:var(--z-skiplink);padding:8px 14px;background:var(--accent);color:var(--on-accent);border-radius:var(--r-2);font-size:var(--fs-xs);text-decoration:none;transition:top var(--dur-2) var(--ease-out)}.skiplink:focus{top:8px}@media(prefers-reduced-motion:reduce){.skiplink{transition:none}}.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}#app:focus{outline:0}#app[aria-busy=true]{min-height:calc(100vh - var(--appbar-h))}#app.view-in{animation:viewIn var(--dur-1) var(--ease-out)}@keyframes viewIn{from{opacity:0}to{opacity:1}}.keys{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:var(--fs-xs);align-items:center}.keys kbd{font-family:var(--font-num);font-size:var(--fs-tbl);padding:2px var(--sp-2h);border-radius:var(--r-1);border:1px solid var(--border-2);background:var(--bg-sunken);color:var(--ink-2);white-space:nowrap;justify-self:start}.keys span{color:var(--ink-2)}.pgtools{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.pgtools .crumb{font-size:var(--fs-xs);color:var(--ink-3);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46%}.pgtools .star.on{color:var(--warn-ink);border-color:var(--warn);background:var(--warn-tint)}@media(max-width:820px){.pgtools{gap:6px}.pgtools .crumb{max-width:100%;order:3;margin-left:0}}.ov{position:fixed;inset:0;background:rgba(18,22,29,.5);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:18px;backdrop-filter:blur(2px)}.ov[hidden]{display:none}.ovc{background:var(--surface);border-radius:var(--r-3);width:100%;max-width:980px;max-height:84vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-3)}.ovh{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border-1)}.ovh h3{margin:0;font-size:var(--fs-md);font-weight:var(--fw-semibold)}.ovh .sub{font-size:var(--fs-xs);color:var(--ink-3)}.ovh .x{margin-left:auto;width:28px;height:28px;flex:0 0 28px;border:1px solid var(--border-1);border-radius:var(--r-1);display:grid;place-items:center;color:var(--ink-2);font-size:var(--fs-xs);transition:background-color var(--dur-1) var(--ease-std),border-color var(--dur-1) var(--ease-std)}.ovh .x:hover{background:var(--surface-hover);border-color:var(--border-2);color:var(--ink-1)}.ovb{overflow:auto;flex:1 1 auto}.ovf{padding:var(--sp-3h) 16px;border-top:1px solid var(--border-1);font-size:var(--fs-xs);color:var(--ink-3)}@media(max-width:820px){.ov{padding:0;align-items:flex-end}.ovc{max-width:none;max-height:88vh;border-radius:var(--r-3) var(--r-3) 0 0}}.kpi.tap{cursor:pointer;position:relative;transition:background-color var(--dur-1) var(--ease-std)}.kpi.tap:hover{background:var(--surface-hover)}.kpi.tap::after{content:"›";position:absolute;right:10px;top:8px;font-size:var(--fs-xs);color:var(--ink-3);line-height:1}.kpi.tap:hover::after{color:var(--ink-1)}.kpi .k{padding-right:12px}.kpi .kk{font-size:var(--fs-2xs);color:var(--ink-3);margin-top:2px}@media(max-width:820px){.kpi.tap::after{font-size:var(--fs-md);right:10px}}@keyframes rtUp{0%{background-color:var(--up-tint)}70%{background-color:var(--up-tint)}100%{background-color:transparent}}@keyframes rtDown{0%{background-color:var(--down-tint)}70%{background-color:var(--down-tint)}100%{background-color:transparent}}.rt-up{animation:rtUp var(--dur-flash) var(--ease-flash) 1;border-radius:var(--r-1)}.rt-down{animation:rtDown var(--dur-flash) var(--ease-flash) 1;border-radius:var(--r-1)}.down,.flat,.up{transition:none}@media(prefers-reduced-motion:reduce){.rt-down,.rt-up{animation:none}}.livetag{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-full);font-size:var(--fs-2xs);border:1px solid var(--border-1);color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}.livetag i{width:6px;height:6px;border-radius:50%;background:var(--border-2);flex:0 0 6px}.livetag.on i{background:var(--ok);animation:rtPulse 1.6s ease-in-out infinite}.livetag.on{color:var(--ink-2);border-color:var(--border-2)}.livetag.err i{background:var(--warn)}.livetag.off i{background:var(--ink-4)}@keyframes rtPulse{0%,100%{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.livetag.on i{animation:none}}.verdict{background:var(--surface);border:1px solid var(--border-1);border-left:3px solid var(--accent);border-radius:var(--r-2);padding:var(--sp-5) var(--sp-5);margin-bottom:var(--sec-gap)}.verdict .eyebrow{font-size:var(--fs-xs);color:var(--ink-3);display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);flex-wrap:wrap}.verdict .eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--ok);flex:0 0 6px}.verdict .eyebrow .dot.warn{background:var(--warn)}.verdict .headline{margin:0 0 var(--sp-4);font-size:var(--fs-lead-r);font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);line-height:var(--lh-snug)}.verdict .stance{display:flex;align-items:center;gap:8px;margin:0 0 var(--sp-3);padding:10px 14px;border-radius:var(--r-1);background:var(--evi-neutral-bg);border-left:3px solid var(--warn);font-size:13px;font-weight:600;color:var(--ink-1)}.verdict .stance.ok{border-left-color:var(--ok)}.verdict .stance.info{border-left-color:var(--info)}.verdict .stance.warn{border-left-color:var(--warn)}.verdict-hero{background:var(--surface-elevated);border:1px solid var(--border-2);border-left:4px solid var(--accent);border-radius:var(--r-2);padding:var(--sp-6) var(--sp-5);margin-bottom:var(--sec-gap)}.verdict-hero .eyebrow{font-size:var(--fs-xs);color:var(--ink-2);display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);flex-wrap:wrap}.verdict-hero .headline{margin:0 0 var(--sp-4);font-size:28px;font-weight:700;letter-spacing:var(--ls-tight);line-height:var(--lh-snug);color:var(--ink-1)}@media(max-width:1000px){.verdict-hero .headline{font-size:24px}}@media(max-width:820px){.verdict-hero .headline{font-size:22px;line-height:1.35;margin-bottom:8px;word-break:keep-all}}.verdict-hero .headline em{font-style:normal;color:var(--acc-key)}.verdict-hero .stance{display:flex;align-items:center;gap:8px;margin:0 0 var(--sp-3);padding:10px 14px;border-radius:var(--r-1);background:var(--surface-hover);border-left:3px solid var(--warn);font-size:13px;font-weight:600;color:var(--ink-1)}.verdict-hero .stance.ok{border-left-color:var(--ok)}.verdict-hero .stance.info{border-left-color:var(--info)}.verdict-hero .stance.warn{border-left-color:var(--warn)}.verdict .headline em{font-style:normal;color:var(--acc-key)}.evi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-4)}.evi>div{background:var(--bg-sunken);border-radius:var(--r-1);padding:var(--sp-3h) 11px;min-width:0}.evi .k{font-size:11px;color:var(--ink-3);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.evi .v{font-size:24px;font-weight:800;letter-spacing:var(--ls-tight);line-height:var(--lh-tight);font-family:var(--font-num);font-variant-numeric:tabular-nums}.evi .v span{font-size:24px;font-weight:800}.evi .d{font-size:11px;color:var(--ink-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-num);font-variant-numeric:tabular-nums}.vmeta{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;padding-top:var(--sp-4);border-top:1px solid var(--border-1);font-size:var(--fs-xs);color:var(--ink-3)}.vmeta b{font-weight:var(--fw-medium);color:var(--ink-2)}.vsep{color:var(--ink-4)}.grade-badge{display:inline-flex;align-items:center;gap:var(--sp-2);padding:3px var(--sp-3);margin-bottom:var(--sp-2);border-radius:var(--r-full);background:var(--accent-tint);color:var(--accent-ink);font-size:var(--fs-xs);white-space:nowrap}.grade-badge .lb{color:var(--accent-ink);opacity:.85}.grade-badge b{font-weight:var(--fw-semibold)}.grade-badge .grade i{box-shadow:inset 0 0 0 1px var(--accent-ink)}.grade{display:inline-flex;align-items:center;gap:6px}.grade i{width:5px;height:5px;border-radius:50%;background:var(--grade-off);display:inline-block}.grade i.f{background:var(--grade-on)}.counter{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:8px 11px;background:var(--evi-neutral-bg);border-radius:var(--r-1);font-size:var(--fs-xs);color:var(--ink-2);line-height:var(--lh-body);max-width:820px}.counter .lb{flex:0 0 auto;font-weight:var(--fw-medium);color:var(--ink-3)}.invalid{display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:8px 11px;background:var(--evi-alert-bg);border-radius:var(--r-1);font-size:var(--fs-xs);color:var(--evi-alert-ink);line-height:var(--lh-body);max-width:820px}.invalid .lb{flex:0 0 auto;font-weight:var(--fw-medium);opacity:.9}.invalid b{font-weight:var(--fw-medium)}.spark{display:block;flex:0 0 auto}.spark.fill{flex:1 1 auto;width:100%}.wlhd{display:grid;grid-template-columns:minmax(0,1fr) 68px 92px 78px;gap:var(--sp-4);padding:var(--sp-2h) 15px;font-size:var(--fs-xs);color:var(--ink-3);background:var(--bg-sunken);border-bottom:1px solid var(--border-1)}.wlhd span:nth-child(n+2){text-align:right}.wl .r{display:grid;grid-template-columns:minmax(0,1fr) 68px 92px 78px;gap:var(--sp-4);align-items:center;padding:var(--sp-3h) 15px;border-bottom:1px solid var(--border-1);cursor:pointer;transition:background-color var(--dur-1) var(--ease-std)}.wl .r:last-child{border-bottom:0}.wl .r:hover{background:var(--surface-hover)}.wl .nm{min-width:0}.wl .nm b{display:block;font-weight:var(--fw-semibold);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wl .nm span{font-size:var(--fs-xs);color:var(--ink-3);font-family:var(--font-num)}.wl .px{text-align:right;font-weight:var(--fw-semibold);font-size:var(--fs-sm);font-family:var(--font-num);font-variant-numeric:tabular-nums}.wl .ch{text-align:right;font-size:var(--fs-xs);font-weight:var(--fw-medium);font-family:var(--font-num);font-variant-numeric:tabular-nums}.wl .ch small{display:block;color:var(--ink-3);font-weight:400}.wl .rm{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:20px;height:20px;border-radius:var(--r-1);display:none;place-items:center;font-size:var(--fs-2xs);color:var(--ink-4);background:var(--surface);border:1px solid var(--border-1)}.wl .r{position:relative}.wl .r:hover .rm{display:grid}.wl .rm:hover{background:var(--surface-hover);color:var(--ink-1);border-color:var(--border-2)}.idx{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;border:1px solid var(--border-1);border-radius:var(--r-1);overflow:hidden}.idx .it{display:flex;align-items:baseline;gap:var(--sp-2);position:relative;padding:var(--sp-3);min-width:0}.idx .ft{white-space:nowrap;overflow:hidden}.idx .it:hover{background:var(--surface-hover)}.idx .it::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--border-2)}.idx .it.up::before{background:var(--up)}.idx .it.down::before{background:var(--down)}.idx .nm{font-size:var(--fs-xs);color:var(--ink-3);white-space:nowrap;flex:0 0 auto}.idx .vv{font-size:var(--fs-num-main);font-weight:var(--fw-semibold);font-family:var(--font-num);font-variant-numeric:tabular-nums;flex:0 0 auto;margin-left:auto}.idx .ft{font-size:var(--fs-xs);font-family:var(--font-num);flex:0 0 auto}.idx .it .ft.err{color:var(--warn)}.bh{display:flex;gap:2px;align-items:flex-end;height:130px;padding:var(--sp-2) 0 0}.bhc{flex:1;min-height:2px;background:var(--flat);border-radius:var(--r-0) var(--r-0) 0 0;opacity:.85}.bhc.up{background:var(--up)}.bhc.down{background:var(--down)}.bhx{display:flex;justify-content:space-between;margin-top:var(--sp-1);font-size:var(--fs-2xs);color:var(--ink-3)}.bhsum{display:flex;gap:var(--sp-5);margin-top:var(--sp-3);font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap}.bhsum b{font-family:var(--font-num);font-weight:var(--fw-semibold)}.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--flat)}.kpi{background:var(--bg-sunken);border:0;border-radius:var(--r-1);padding:var(--sp-3) var(--sp-4);position:relative;overflow:hidden;min-height:64px;box-sizing:border-box}.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--border-2)}.kpi.up::before{background:var(--up)}.kpi.down::before{background:var(--down)}.kpi.warn::before{background:var(--warn)}.kpi .k{font-size:var(--fs-xs);color:var(--ink-3);margin-bottom:var(--sp-2)}.kpi .v{font-size:var(--fs-num-big);font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);font-family:var(--font-num);font-variant-numeric:tabular-nums;line-height:var(--lh-num)}.kpi .v .unc{font-size:var(--fs-xs);font-weight:var(--fw-regular);color:var(--ink-3);margin-left:5px;letter-spacing:0;cursor:help}.kpi .v.miss{color:var(--ink-3)}.kpi .s{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.tw{background:var(--bg-sunken);border-radius:var(--r-1);overflow:auto;max-height:600px;-webkit-overflow-scrolling:touch}table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-xs);font-family:var(--font-num);font-variant-numeric:tabular-nums}td,th{padding:var(--sp-2) var(--sp-3);text-align:left;border-bottom:1px solid var(--border-1);white-space:nowrap}th{position:sticky;top:0;background:var(--bg-sunken);z-index:var(--z-tblhead);font-weight:var(--fw-medium);font-size:11px;color:var(--ink-3);border-bottom:1px solid var(--border-2);cursor:pointer;user-select:none;font-family:var(--font-sans)}th:hover{color:var(--ink-1)}th .si{font-size:var(--fs-2xs);color:var(--ink-1);margin-left:3px}th.num .si{position:absolute;right:2px;top:50%;transform:translateY(-50%);margin-left:0}tbody tr:nth-child(2n){background:0 0}[data-theme=dark] tbody tr:nth-child(2n){background:0 0}tbody tr:hover{background:var(--surface-hover)}tbody tr:last-child td{border-bottom:0}td.num,th.num{text-align:right}.tnum,td.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum";letter-spacing:-.01em}td.mono{font-family:var(--font-num)}tbody tr td:first-child{font-weight:var(--fw-medium);font-family:var(--font-sans)}.tw table.fx td,.tw table.fx th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.is-card-list td{overflow:visible;white-space:normal}.pager{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-xs);color:var(--ink-2);border-top:1px solid var(--border-1);background:var(--bg-sunken);flex-wrap:wrap;font-family:var(--font-num)}.pager button{padding:3px 10px;border:1px solid var(--border-1);background:var(--surface);border-radius:var(--r-1);cursor:pointer;font-size:var(--fs-xs);transition:background-color var(--dur-1) var(--ease-std),border-color var(--dur-1) var(--ease-std);font-family:var(--font-sans)}.pager button:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-2)}.pager button:disabled{opacity:.4;cursor:not-allowed}.pager select{padding:2px var(--sp-2h);border:1px solid var(--border-1);border-radius:var(--r-1);background:var(--surface)}select.dsel{padding:4px 8px;border:1px solid var(--border-2);border-radius:var(--r-1);background:var(--surface);color:var(--ink-1);cursor:pointer;font-size:var(--fs-xs);font-weight:var(--fw-medium);font-family:var(--font-sans);max-width:190px}select.dsel:hover{background:var(--surface-hover);border-color:var(--ink-4)}select.dsel:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}select.dsel.pri,select.dsel.pri:hover{background:var(--ink-1);border-color:var(--ink-1);color:var(--surface)}select.dsel optgroup,select.dsel option{background:var(--surface);color:var(--ink-1)}.btn{padding:var(--sp-2h) 14px;border-radius:var(--r-1);border:1px solid var(--border-2);background:var(--surface);cursor:pointer;font-weight:var(--fw-medium);transition:background-color var(--dur-1) var(--ease-std),border-color var(--dur-1) var(--ease-std);color:var(--ink-1);font-size:var(--fs-xs)}.btn:hover{background:var(--surface-hover);border-color:var(--ink-4)}.btn.pri{background:var(--ink-1);border-color:var(--ink-1);color:var(--surface)}.btn.pri:hover{background:var(--ink-2);border-color:var(--ink-2);color:var(--surface)}.btn.sm{padding:4px 11px;font-size:var(--fs-xs)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.xs{padding:2px var(--sp-3h);font-size:var(--fs-xs);border-radius:var(--r-1)}.btn.ghost{border-color:transparent;background:var(--bg-sunken)}input.f,select.f{width:100%;padding:var(--sp-2h) 11px;border:1px solid var(--border-1);border-radius:var(--r-1);background:var(--surface);outline:0;color:var(--ink-1);transition:border-color var(--dur-2) var(--ease-std)}input.f::placeholder{color:var(--ink-4)}input.f:focus,select.f:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.field label{display:block;font-size:var(--fs-xs);color:var(--ink-2);margin-bottom:var(--sp-1);font-weight:var(--fw-medium)}.field label .rq{color:var(--warn)}.field .hint{font-size:var(--fs-xs);color:var(--ink-3);margin-top:var(--sp-1);line-height:var(--lh-snug)}.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--sp-4)}.row{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}.empty{padding:var(--sp-8) var(--sp-5);text-align:center;color:var(--ink-3);font-size:var(--fs-sm);line-height:1.85}.empty::before{content:"◎";display:block;font-size:var(--fs-xl);color:var(--accent);opacity:.45;margin-bottom:var(--sp-2)}.empty b{color:var(--ink-2)}.err{padding:var(--sp-3) var(--sp-4);background:var(--warn-tint);border-left:3px solid var(--warn);color:var(--warn-ink);font-size:var(--fs-xs);white-space:pre-wrap;word-break:break-word;line-height:var(--lh-body)}.err details{margin-top:var(--sp-2)}.err summary{cursor:pointer;color:var(--warn-ink);font-size:var(--fs-xs);user-select:none}.err a{color:var(--warn-ink);text-decoration:underline}.load{padding:var(--sp-6);text-align:center;color:var(--ink-3);font-size:var(--fs-sm)}.spin{display:inline-block;width:12px;height:12px;border:2px solid var(--border-2);border-top-color:var(--ink-3);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:7px}@keyframes sp{to{transform:rotate(360deg)}}.tip{font-size:var(--fs-xs);color:var(--ink-3);line-height:var(--lh-loose)}.toolbar{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;padding:var(--sp-3) var(--sp-4);border-bottom:var(--bw-1) solid var(--border-1)}.notice{padding:var(--sp-3) var(--sp-4);background:var(--warn-tint);border-left:3px solid var(--warn);font-size:var(--fs-xs);color:var(--warn-ink);border-radius:0 var(--r-1) var(--r-1) 0;margin-bottom:var(--sec-gap);line-height:var(--lh-body)}.notice.info{background:var(--info-tint);border-left-color:var(--info);color:var(--info-ink)}.feed{max-height:660px;overflow:auto}.feed .fi{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-1);display:flex;gap:var(--sp-4)}.feed .fi:last-child{border-bottom:0}.feed .fi:hover{background:var(--surface-hover)}.feed .tm{flex:0 0 58px;color:var(--ink-3);font-size:var(--fs-xs);padding-top:2px;font-family:var(--font-num)}.feed .tx{flex:1;min-width:0}.feed .ti{font-weight:var(--fw-medium);line-height:var(--lh-snug);word-break:break-word;color:var(--ink-1)}.feed .bd{color:var(--ink-2);font-size:var(--fs-xs);line-height:var(--lh-body);margin-top:3px;word-break:break-word;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}.ntags{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}.ntag{display:inline-flex;align-items:center;height:17px;padding:0 var(--sp-2h);border-radius:var(--r-0);font-size:var(--fs-2xs);line-height:1;background:var(--bg-sunken);color:var(--ink-2);border:1px solid var(--border-1);white-space:nowrap}.ntag.up{color:var(--up-ink);background:var(--up-tint);border-color:var(--up)}.ntag.down{color:var(--down-ink);background:var(--down-tint);border-color:var(--down)}.ntag.con{color:var(--accent-ink);background:var(--accent-tint);border-color:var(--accent)}.ntag.blue{color:var(--info-ink);background:var(--info-tint);border-color:var(--info)}.ntag.tech{color:var(--accent-ink);background:var(--accent-tint);border-color:var(--accent)}.ntag.warn{color:var(--warn-ink);background:var(--warn-tint);border-color:var(--warn)}.ntag.imp{color:var(--warn-ink);background:var(--warn-tint);border-color:var(--warn);font-weight:var(--fw-semibold)}.ntag.sect{color:var(--ok-ink);background:var(--ok-tint);border-color:var(--ok)}.feed .fi.imp .ti::before{content:"★ ";color:var(--warn);font-size:var(--fs-xs)}.feed .bd .nv{font-weight:var(--fw-semibold);color:var(--ink-1);font-variant-numeric:tabular-nums}.feed .fi.hot .ti{color:var(--ink-1);font-weight:var(--fw-semibold)}.qhead{display:flex;align-items:flex-start;gap:var(--sp-5);flex-wrap:wrap;padding:var(--sp-4) var(--sp-5)}.qhead .nm{font-size:var(--fs-num-big);font-weight:var(--fw-semibold);display:flex;align-items:baseline;gap:var(--sp-2);letter-spacing:var(--ls-tight)}.qhead .cd{font-size:var(--fs-xs);color:var(--ink-3);font-weight:var(--fw-medium);font-family:var(--font-num)}.qhead .px{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);line-height:var(--lh-num);letter-spacing:-.5px;font-family:var(--font-num);margin-top:var(--sp-1)}.qhead .ch{font-size:var(--fs-sm);margin-top:2px;font-weight:var(--fw-medium);font-family:var(--font-num)}.qstat{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:3px var(--sp-4);flex:1;min-width:280px;padding-top:3px}.qstat .s{font-size:var(--fs-xs);color:var(--ink-3)}.qstat .s b{display:block;color:var(--ink-1);font-size:var(--fs-sm);font-weight:var(--fw-semibold);margin-top:1px;font-family:var(--font-num)}#kline{height:390px;width:100%}.tags{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.tagb{padding:1px 8px;border-radius:var(--r-1);font-size:var(--fs-xs);background:var(--bg-sunken);border:1px solid var(--border-1);color:var(--ink-2);transition:background-color var(--dur-1) var(--ease-std),border-color var(--dur-1) var(--ease-std)}.tagb:hover{border-color:var(--border-2);color:var(--ink-1)}.tagb.up{background:var(--up-tint);border-color:transparent;color:var(--up-ink)}.tagb.down{background:var(--down-tint);border-color:transparent;color:var(--down-ink)}.apilay{display:flex;gap:var(--sp-4);align-items:flex-start}.apiside{flex:0 0 262px;background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);max-height:calc(100vh - var(--appbar-h) - 24px);display:flex;flex-direction:column;overflow:hidden;position:sticky;top:calc(var(--appbar-h) + var(--sp-3))}.apiside .sh{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-1)}.apiside .sl{flex:1;overflow:auto;padding:var(--sp-2)}.apimain{flex:1;min-width:0}.dh{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--ink-1);margin-bottom:var(--sp-2)}.sh2{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--ink-1);margin:var(--sp-5) 0 var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-1)}.dmeta{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-3) 0 var(--sp-4)}.dmeta span{font-size:var(--fs-2xs);padding:2px var(--sp-3h);border-radius:var(--r-full);background:var(--bg-sunken);border:1px solid var(--border-1);color:var(--ink-2)}.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp-2);margin-top:var(--sp-3)}.dcard{padding:var(--sp-3) var(--sp-4);border:1px solid var(--border-1);border-radius:var(--r-2);background:var(--surface);cursor:pointer}.dcard:hover{border-color:var(--accent);background:var(--surface-hover)}.dct{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--ink-1)}.dcn{font-size:var(--fs-2xs);color:var(--ink-3);margin-top:2px}.dtag{margin-left:auto;font-size:10px;font-family:var(--font-num);color:var(--ink-3);background:var(--bg-sunken);border:1px solid var(--border-1);border-radius:var(--r-1);padding:0 5px;line-height:15px;flex:0 0 auto}table.ftbl{width:100%;border-collapse:collapse;font-size:var(--fs-2xs)}table.ftbl td,table.ftbl th{padding:5px 10px;border-bottom:1px solid var(--border-1);text-align:left;vertical-align:top}table.ftbl th{color:var(--ink-3);font-weight:var(--fw-medium);font-size:11px;background:var(--bg-sunken);position:sticky;top:0;z-index:1;white-space:nowrap}table.ftbl tr:last-child td{border-bottom:0}table.ftbl tr:hover td{background:var(--surface-hover)}.tw table tbody tr:nth-child(2n) td,table.ftbl tbody tr:nth-child(2n) td{background:0 0}.tw table tbody tr:nth-child(2n):hover td,table.ftbl tbody tr:nth-child(2n):hover td{background:var(--surface-hover)}:root[data-theme=dark] .tw table tbody tr:nth-child(2n) td,:root[data-theme=dark] table.ftbl tbody tr:nth-child(2n) td{background:0 0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .tw table tbody tr:nth-child(2n) td,:root:not([data-theme=light]) table.ftbl tbody tr:nth-child(2n) td{background:0 0}}td.heat-up,th.heat-up{background:var(--up-tint)}td.heat-warn,th.heat-warn{background:var(--warn-tint)}td.fn{font-family:var(--font-num);color:var(--ink-1);white-space:nowrap}td.fty{font-family:var(--font-num);font-size:11px;color:var(--ink-3);white-space:nowrap}td.fm{color:var(--ink-2);min-width:72px}td.fs{font-family:var(--font-num);color:var(--ink-3);word-break:break-all;max-width:230px}td.fnul{text-align:center;color:var(--warn-ink);white-space:nowrap}pre.code{margin:0;padding:var(--sp-3) var(--sp-4);background:var(--bg-sunken);border:1px solid var(--border-1);border-radius:var(--r-1);overflow-x:auto;font-family:var(--font-num);font-size:var(--fs-2xs);color:var(--ink-1);line-height:var(--lh-body)}.grp{margin-bottom:2px}.grp>.gh{display:flex;justify-content:space-between;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--ink-2);cursor:pointer;border-radius:var(--r-1)}.grp>.gh:hover{background:var(--surface-hover)}.grp .ar{font-size:var(--fs-2xs);color:var(--ink-4);margin-right:5px;transition:transform var(--dur-2) var(--ease-out);display:inline-block}.grp.collapsed .ar{transform:rotate(-90deg)}.grp.collapsed .gi{display:none}.ep{display:flex;gap:var(--sp-2);align-items:center;padding:4px var(--sp-3h);border-radius:var(--r-1);cursor:pointer;font-size:var(--fs-xs)}.ep:hover{background:var(--surface-hover)}.ep.on{background:var(--accent-tint);color:var(--accent-ink);font-weight:var(--fw-medium)}.ep .dt{width:6px;height:6px;border-radius:50%;flex:0 0 6px;background:var(--border-2)}.ep .dt.ok{background:var(--ok)}.ep .dt.err{background:var(--warn)}.ep .dt.local{background:var(--info)}.ep .dt.key{background:var(--warn)}.ep .en{flex:1;word-break:break-all;font-family:var(--font-num)}.ep .etag{flex:0 0 auto;font-size:var(--fs-2xs);line-height:16px;padding:0 6px;border-radius:var(--r-full);font-family:var(--font-sans)}.ep .etag.err{background:var(--warn-tint);color:var(--warn-ink)}.ep .etag.key{background:var(--warn-tint);color:var(--warn-ink)}.more{border:0;background:0 0;padding:2px 4px;border-radius:var(--r-1);color:var(--info-ink);font:inherit;font-size:var(--fs-xs);cursor:pointer;transition:background-color var(--dur-1) var(--ease-std),color var(--dur-1) var(--ease-std)}.more:hover{background:var(--info-tint);color:var(--info)}.more:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dl{display:grid;grid-template-columns:auto 1fr;gap:4px var(--sp-4);font-size:var(--fs-xs)}.dl dt{color:var(--ink-3)}.dl dd{margin:0;word-break:break-word;color:var(--ink-1)}pre.js{margin:0;padding:var(--sp-4);background:var(--bg-sunken);font-size:var(--fs-xs);line-height:var(--lh-body);overflow:auto;max-height:600px;font-family:var(--font-num);color:var(--ink-1);border-top:1px solid var(--border-1)}#app{min-height:calc(100vh - var(--appbar-h))}footer.pgf{max-width:var(--max-w);margin:0 auto;padding:var(--sp-4) var(--pad-page-x) var(--sp-8);color:var(--ink-3);font-size:var(--fs-xs);line-height:var(--lh-loose);border-top:1px solid var(--border-1)}footer.pgf .devlink a{text-decoration:underline}@media(max-width:1000px){:root{--fs-lead-r:24px}/* 结论标题桌面 28→24（窄屏可读优先） */ /* 深色令牌被 tokens.css 的 :root[data-theme]（0,2,0）锁死，此处用双 :root 提权同步降档 */ :root:root{--fs-lead-r:24px}}@media(max-width:1200px) and (min-width:821px){header.appbar{height:auto;flex-wrap:wrap;padding:var(--sp-2) var(--sp-4);gap:var(--sp-2)}nav.tablist{order:9;flex:1 1 100%;height:auto;gap:2px;padding-bottom:2px}nav.tablist button{height:34px}.gsearch{margin-left:auto}}@media(max-width:820px){:root{--sec-gap:16px;--card-pad:12px;--row-h-cond:44px;--row-h-list:56px;--fs-lead-r:22px}/* 深色令牌被 tokens.css 锁死，双 :root 提权同步（见 1000 档注释） */ :root:root{--sec-gap:16px;--card-pad:12px;--row-h-cond:44px;--row-h-list:56px;--fs-lead-r:22px}/* 证据格窄屏紧凑：值 24→20px，标签压单行，间距收半档 */ .evi{gap:var(--sp-2)}.evi .v,.evi .v span{font-size:20px}header.appbar{height:auto;flex-wrap:wrap;padding:8px 10px;gap:6px;box-sizing:border-box}.brand{order:1;margin-right:2px}.pnav{order:2;margin-right:4px}.nsep{display:none}.alarm-pill{order:3;margin-left:4px;padding:3px 6px!important;font-size:11px!important;white-space:nowrap}#dualPaneBtn{display:none!important}#helpbtn{display:none!important}#colorModeBtn{order:4;margin-left:auto;width:28px!important;height:28px!important;font-size:14px!important;padding:0!important;display:inline-flex;align-items:center;justify-content:center;border-left:0}#themeBtn{order:5;width:28px!important;height:28px!important;font-size:14px!important;padding:0!important;display:inline-flex;align-items:center;justify-content:center;border-left:0}.gsearch{order:6;flex:1 1 0!important;min-width:0!important;max-width:none!important;margin:0!important}.livetag{order:7;flex:0 0 auto!important;margin-left:2px!important;font-size:11px!important;padding:3px 6px!important}nav.tablist{order:8;flex:1 1 100%;gap:2px;height:auto}.verdict{padding:var(--sp-4)}.verdict .headline{font-size:var(--fs-lead-r);line-height:1.35;margin-bottom:8px;word-break:keep-all}.evi{gap:var(--sp-2)}.wlhd{display:none}.wl .r{grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:11px 15px;min-height:var(--row-h-list)}.wl .r>.spark{display:none}.wl .ch,.wl .px{text-align:right;grid-column:2}nav.tablist button{padding:6px 11px;font-size:var(--fs-xs);height:auto}nav.tablist button[aria-selected=true]::after{left:8px;right:8px}.tw{max-height:none;overflow-x:auto!important;overflow-y:hidden;background:var(--bg-sunken);-webkit-overflow-scrolling:touch;width:100%}.tw table{min-width:540px!important;border-collapse:separate}table td,table th{white-space:nowrap}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch;width:100%}.is-card-list thead{display:none}.is-card-list table,.is-card-list tbody,.is-card-list td{display:block;width:100%}.is-card-list tbody tr{display:block;width:auto;border:0;border-bottom:1px solid var(--border-1);border-radius:0;margin:0;padding:var(--sp-4) var(--sp-4);background:0 0}.is-card-list td{border:0;padding:3px 0;display:flex;justify-content:space-between;gap:14px;white-space:normal;text-align:right}.is-card-list td::before{content:attr(data-l);color:var(--ink-3);font-size:var(--fs-xs);text-align:left;flex:0 0 auto;font-weight:var(--fw-medium);font-family:var(--font-sans)}.idx{grid-template-columns:repeat(2,1fr)}.grid.g3,.grid.g4{grid-template-columns:repeat(2,1fr)}.minimal-view-bar{flex-wrap:wrap;gap:8px;padding:8px 10px}.minimal-view-bar>div:first-child{font-size:12px;display:flex;align-items:center}.minimal-view-bar>div:first-child .hint{display:none}.mode-pill{padding:4px 8px;font-size:11px}.apilay{flex-direction:column}.apiside{display:flex;flex:0 0 auto;width:100%;max-height:44vh}.apimain{width:100%}main.wrap{padding:var(--sp-4) var(--sp-3) 60px}footer.pgf{padding:var(--sp-4) var(--sp-3) var(--sp-6)}.qhead{padding:var(--sp-4)}.qhead .px{font-size:var(--fs-xl)}#kline{height:300px}.feed .tm{flex:0 0 48px;font-size:var(--fs-xs)}}@media(max-width:420px){:root{--sec-gap:12px;--fs-num-main:16px;--fs-num-big:18px;--fs-lead-r:22px}:root:root{--sec-gap:12px;--fs-num-main:16px;--fs-num-big:18px;--fs-lead-r:22px}.idx .vv{font-size:var(--fs-num-main)}.qhead .nm{font-size:var(--fs-lg)}.qhead .px{font-size:var(--fs-num-main)}.chip.sm,.cpbtn,.export-afloat,.optcode{min-height:44px}.cpbtn{padding:10px 12px}.export-afloat{padding:10px 16px;right:10px;max-width:calc(100vw - 20px)}.export-afloat:active{opacity:.85}main.wrap{padding-bottom:88px}.wab-toast{bottom:128px}.evi{grid-template-columns:repeat(2,1fr)}.evi .v,.evi .v span{font-size:20px}.evi .d,.evi .k{font-size:10.5px}}@media(max-width:430px){.idx{grid-template-columns:repeat(2,1fr)}.idx .it{flex-wrap:wrap;row-gap:2px}.idx .nm{flex:1 0 100%}.idx .it:nth-child(n+3){border-top:1px solid var(--border-1)}}@media (prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition-duration:1ms!important}}.cond{margin-top:var(--sp-4);max-width:820px;background:var(--evi-neutral-bg);border-radius:var(--r-1);padding:var(--sp-3) var(--sp-4)}.cond.alert{background:var(--evi-alert-bg)}.cond-hd{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;font-size:var(--fs-2xs);color:var(--ink-3)}.cond-hd .tt{color:var(--ink-2);font-weight:var(--fw-medium)}.cond-hd .sum{color:var(--ink-2)}.cond-hd .acts{margin-left:auto;display:flex;align-items:center;gap:var(--sp-3)}.cond-hd button{display:inline-flex;align-items:center;gap:3px;padding:0 4px;border:0;background:0 0;cursor:pointer;font-size:var(--fs-2xs);color:var(--info);min-height:32px;transition:color var(--dur-1) var(--ease-std)}.cond-hd button:hover{color:var(--info-ink);text-decoration:underline}.cond-list{list-style:none;margin:var(--sp-2) 0 0;padding:0}.cond-row{display:grid;grid-template-columns:var(--icon-sm) minmax(0,1fr) auto 88px 88px;align-items:center;gap:var(--sp-3);min-height:var(--row-h-cond);border-bottom:var(--bw-1) solid var(--border-1);font-size:var(--fs-xs);padding:0 var(--sp-1)}.cond-row:last-child{border-bottom:0}.cond-row .ic{color:var(--cond-idle);display:inline-flex}.cond-row .ic svg{width:var(--icon-sm);height:var(--icon-sm);display:block}.cond-row .pred{color:var(--ink-2);min-width:0}.cond-row .st{font-size:var(--fs-2xs);color:var(--cond-idle);white-space:nowrap}.cond-row .cur{font-size:var(--fs-tbl);text-align:right;color:var(--ink-1);white-space:nowrap}.cond-row .gap{font-size:var(--fs-2xs);text-align:right;color:var(--ink-3);white-space:nowrap}.cond-row.approach{background:var(--evi-alert-bg)}.cond-row.approach .ic,.cond-row.approach .st{color:var(--cond-approach)}.cond-row.triggered{background:var(--evi-alert-bg);box-shadow:inset 2px 0 0 var(--warn)}.cond-row.triggered .ic,.cond-row.triggered .st{color:var(--cond-triggered)}.cond-row.triggered .st{font-weight:var(--fw-medium)}.cond-row.void{background-image:repeating-linear-gradient(45deg,var(--border-1) 0 1px,transparent 1px 5px)}.cond-row.void .ic{color:var(--cond-void)}.cond-row.void .cur,.cond-row.void .st{color:var(--ink-3)}.cond-row .cbar{grid-column:1/-1;height:3px;border-radius:var(--r-full);background:var(--border-1);overflow:hidden;margin:2px 0 1px}.cond-row .cbar i{display:block;height:100%;width:0;border-radius:inherit;background:var(--ink-3);transition:width var(--dur-2) var(--ease-std)}.cond-row.approach .cbar{background:var(--warn-tint)}.cond-row.approach .cbar i{background:var(--warn)}.cond-row.triggered .cbar{background:var(--warn-tint)}.cond-row.triggered .cbar i{background:var(--warn-ink)}.cond-row[hidden]{display:none}.badge-new{display:inline-block;padding:0 4px;border-radius:var(--r-1);background:var(--ink-1);color:var(--surface);font-size:var(--fs-2xs);font-weight:var(--fw-medium);line-height:var(--lh-body);vertical-align:1px}.track{list-style:none;margin:0;padding:0}.track-row{display:grid;align-items:center;gap:var(--sp-3);grid-template-columns:var(--icon-sm) minmax(110px,auto) minmax(0,1fr) 84px 104px 140px 40px;min-height:var(--row-h-list);border-bottom:var(--bw-1) solid var(--border-1);font-size:var(--fs-sm);padding:0 var(--sp-1)}.track-row:last-child{border-bottom:0}.track-row .ic svg{width:var(--icon-sm);height:var(--icon-sm);display:block}.track-row .nm{min-width:0}.track-row .nm b{font-weight:var(--fw-semibold);font-size:var(--fs-sm)}.track-row .nm span{color:var(--ink-3);font-size:var(--fs-2xs);margin-left:5px}.track-row .pred{color:var(--ink-2);font-size:var(--fs-xs);min-width:0}.track-row .cur{text-align:right;font-size:var(--fs-tbl);font-family:var(--font-num);font-variant-numeric:tabular-nums}.track-row .gap{text-align:right;font-size:var(--fs-2xs);color:var(--ink-3)}.track-row .rm{width:30px;height:30px;border:0;background:0 0;cursor:pointer;color:var(--ink-3);border-radius:var(--r-1);position:relative;justify-self:end;transition:background-color var(--dur-1) var(--ease-std)}.track-row .rm:hover{background:var(--surface-hover);color:var(--ink-1)}.track-row .rm::after{content:"";position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.track-row .mbar{height:4px;border-radius:var(--r-full);background:var(--border-1);overflow:hidden}.track-row .mbar i{display:block;height:100%;background:var(--ink-3)}.track-row.approach .mbar i{background:var(--warn)}.track-row.triggered .mbar i{background:var(--warn-ink)}.asof{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-2xs);color:var(--ink-3);font-family:var(--font-num)}.card>h2 .asof{margin-left:auto;font-weight:var(--fw-medium)}.card>h2 .pill{margin-left:auto}.asof .dot{width:6px;height:6px;border-radius:50%;background:var(--ok);flex:0 0 6px}.asof.loading .dot{background:var(--border-2);animation:rtPulse 1.4s ease-in-out infinite}.asof.wait .dot{background:var(--warn)}.asof.err .dot{background:var(--warn)}.asof.loading,.asof.wait{color:var(--ink-2)}.ph{display:grid;gap:var(--sp-3);padding:var(--sp-2) 0}.verdict>.ph{min-height:382px}.ph .bar{height:12px;border-radius:var(--r-1);background:var(--bg-sunken);position:relative;overflow:hidden}.ph .bar::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--surface-hover),transparent);animation:skelSweep var(--dur-skel) ease-in-out infinite}.ph .bar.w40{width:40%}.ph .bar.w60{width:60%}.ph .bar.w80{width:80%}.awaiting{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-sunken);border-radius:var(--r-1);font-size:var(--fs-2xs);color:var(--ink-2);line-height:var(--lh-body)}.awaiting .ic{color:var(--warn);display:inline-flex;flex:0 0 auto;margin-top:1px}.awaiting .ic svg{width:var(--icon-sm);height:var(--icon-sm);display:block}.awaiting code{font-family:var(--font-num);font-size:var(--fs-2xs);background:var(--surface);padding:0 4px;border-radius:var(--r-1)}.emptybox{padding:var(--sp-6) var(--sp-4);background:var(--bg-sunken);border-radius:var(--r-1);text-align:center}.emptybox .et{font-size:var(--fs-sm);color:var(--ink-2);font-weight:var(--fw-medium)}.emptybox .ed{font-size:var(--fs-2xs);color:var(--ink-3);line-height:var(--lh-loose);margin:var(--sp-2) auto 0;max-width:520px}.emptybox .ea{margin-top:var(--sp-4)}.news-lay{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sec-gap)}.news-side{display:none}@media(min-width:1100px){.news-lay{grid-template-columns:minmax(0,1fr) 280px;align-items:start}.news-side{display:block;position:sticky;top:calc(var(--appbar-h) + var(--sp-3))}}.stock-guide-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4)}.stock-guide-item{background:var(--bg-sunken);border:1px solid var(--border-1);border-radius:var(--r-2);padding:var(--sp-4);transition:transform .15s ease,border-color .15s ease}.stock-guide-item:hover{border-color:var(--accent);transform:translateY(-1px)}.sgi-icon{font-size:var(--fs-lg);margin-bottom:var(--sp-2)}.sgi-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--ink-1);margin-bottom:4px}.sgi-desc{font-size:var(--fs-2xs);color:var(--ink-3);line-height:var(--lh-normal)}.empty-hint{font-size:var(--fs-xs);color:var(--ink-2);margin:var(--sp-3) 0 var(--sp-2);display:flex;align-items:center;flex-wrap:wrap;gap:6px}kbd.kbd{display:inline-block;padding:1px 5px;font-family:var(--font-mono, monospace);font-size:11px;background:var(--surface);border:1px solid var(--border-2);border-radius:3px;color:var(--ink-1)}.news-guide-card{margin-top:var(--sp-4);background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);padding:var(--sp-4)}.ngc-title{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--ink-1);margin-bottom:var(--sp-2);display:flex;align-items:center;gap:6px}.ngc-list{list-style:none;margin:0;padding:0;font-size:var(--fs-2xs);color:var(--ink-3);display:flex;flex-direction:column;gap:6px}.ngc-list li{display:flex;align-items:baseline;gap:6px}.ngc-badge{flex:none;display:inline-block;padding:1px 4px;border-radius:2px;font-size:10px}@media(max-width:1000px){.cond-row{grid-template-columns:var(--icon-sm) minmax(0,1fr) auto 80px 80px}.track-row{grid-template-columns:var(--icon-sm) minmax(96px,auto) minmax(0,1fr) 76px 84px 140px 40px}}@media(max-width:820px){.cond{padding:var(--sp-3)}.cond-row{grid-template-columns:var(--icon-sm) minmax(0,1fr) 84px;row-gap:0;padding:var(--sp-2) var(--sp-1)}.cond-row .st{grid-column:2/4;text-align:right}.cond-row .cur{grid-column:3;grid-row:1}.cond-row .gap{grid-column:2/4;text-align:right}.track-row{grid-template-columns:var(--icon-sm) minmax(0,1fr) 140px;grid-auto-rows:auto;row-gap:2px;padding:var(--sp-3) var(--sp-1);min-height:var(--row-h-list)}.track-row .pred{grid-column:2/4}.track-row .cur{grid-column:2/4;grid-row:3;text-align:right}.track-row .mbar{grid-column:2;grid-row:4;margin-top:4px}.track-row .gap{grid-column:3;grid-row:4;text-align:right}.track-row .rm{grid-column:3;grid-row:1}.btn,.card-fold-btn,.cond-hd button,.emptybox .ea,.gsearch input,.pager button,.sug button,select.dsel{min-height:44px}.track-row .rm{width:36px;height:36px}}@media(max-width:420px){.cond-row{grid-template-columns:var(--icon-sm) minmax(0,1fr) 72px}}@media(prefers-reduced-motion:reduce){.ph .bar::after{animation:none}.asof.loading .dot{animation:none}}.news-pick{display:flex;flex-direction:column;max-height:min(56vh,420px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.news-pick::-webkit-scrollbar{width:6px}.news-pick::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.np-it{display:flex;gap:9px;padding:8px 0;border-top:1px solid var(--border);cursor:pointer}.np-it:first-child{border-top:0;padding-top:2px}.np-tm{flex:0 0 auto;font-size:var(--fs-2xs);color:var(--muted-foreground);padding-top:2px;letter-spacing:.02em}.np-bd{flex:1;min-width:0}.np-tt{font-size:var(--fs-sm);line-height:var(--lh-snug);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.np-tags{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}.np-tags .ntag{font-size:var(--fs-2xs);padding:1px 6px;border-radius:4px}.np-empty{color:var(--muted-foreground);font-size:var(--fs-sm);padding:6px 0}.rv-ai-stat{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--sp-2)}.rv-ai-pt{display:flex;gap:8px;padding:7px 0 3px}.rv-ai-no{flex:0 0 auto;min-width:12px;color:var(--ink-4);font-family:var(--font-num);font-variant-numeric:tabular-nums;font-size:var(--fs-2xs);padding-top:3px}.rv-ai-tx{flex:1;min-width:0;font-size:var(--fs-sm);line-height:var(--lh-snug)}.rv-ai-src{margin-top:2px}.rv-ai-src .np-it{padding:5px 0}.rv-ai-foot{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-top:var(--sp-3);padding-top:var(--sp-2);border-top:1px dashed var(--border-1)}.rv-ai-foot .asof{margin-left:auto}.pnl-fold{display:flex;align-items:center;gap:var(--sp-2);width:100%;text-align:left;padding:var(--sp-3);border:0;border-radius:var(--r-1);background:var(--bg-sunken);font:inherit;font-size:var(--fs-sm);color:var(--ink-2);cursor:pointer;min-height:44px;transition:background-color var(--dur-1) var(--ease-std)}.pnl-fold:hover{background:var(--surface-hover)}.pnl-fold:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.pnl-fold .pnl-fold-t{font-weight:var(--fw-medium);color:var(--ink-1)}.pnl-fold .pnl-fold-a{margin-left:auto;font-size:var(--fs-xs);color:var(--info-ink);white-space:nowrap}.pnl-fold .pnl-fold-a::after{content:" ›"}.pnl-guide{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--sp-3);margin:var(--sp-3) 0 var(--sp-2)}.pnl-guide-i{padding:var(--sp-3);border:1px solid var(--border-1);border-radius:var(--r-1);background:var(--bg-sunken)}.pnl-guide-t{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--ink-1);margin-bottom:2px}.pnl-guide-d{font-size:var(--fs-2xs);color:var(--ink-2);line-height:var(--lh-snug)}.pnl-guide-s{font-size:var(--fs-2xs);color:var(--ink-3);margin-top:var(--sp-2);padding-top:var(--sp-2);border-top:1px dashed var(--border-1);line-height:var(--lh-snug)}.opt-tools{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-3) var(--sp-4) var(--sp-2)}.opt-cur{font-size:var(--fs-2xs);color:var(--ink-3);padding:2px var(--sp-3h);border-radius:var(--r-full);background:var(--bg-sunken);border:1px solid var(--border-1)}.opt-tools .more{margin-left:auto}tr.optm td{padding:var(--sp-3) var(--sp-4)!important;background:var(--bg-sunken);border-bottom:1px solid var(--border-1)}.optm-t{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--ink-1);margin-right:var(--sp-3)}.optm-c{font-size:var(--fs-2xs);color:var(--ink-3);margin-right:var(--sp-3)}tr.optm td .more{margin-left:auto}.optcode{font:inherit;font-family:var(--font-num);font-size:var(--fs-xs);padding:2px var(--sp-3h);border:1px solid var(--border-1);border-radius:var(--r-1);background:var(--surface);color:var(--ink-1);cursor:pointer;min-height:26px;transition:border-color var(--dur-1) var(--ease-std),color var(--dur-1) var(--ease-std)}.optcode:hover{border-color:var(--accent);color:var(--accent-ink)}.optcode:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.optcode.pri{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-ink);font-weight:var(--fw-semibold)}.optdir{white-space:nowrap;color:var(--ink-2)}.opttym{white-space:nowrap;color:var(--ink-3);font-size:var(--fs-2xs)}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}}.wab-fab{position:fixed;right:14px;bottom:calc(74px + env(safe-area-inset-bottom,0px));width:44px;height:44px;border-radius:50%;border:1px solid var(--border-1);background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:130;font-size:19px;box-shadow:var(--shadow-2);touch-action:none;-webkit-user-select:none;user-select:none;transition:left .18s ease,top .18s ease,background-color .18s ease,opacity .18s ease}.wab-fab.is-drag{transition:none;cursor:grabbing}.wab-fab.is-mini{background:0 0;border-color:transparent;box-shadow:none;font-size:0}.wab-fab.is-mini .wab-badge{display:none}@media(max-width:820px){.wab-fab.is-mini{width:14px}}.wab-fab.is-mini::after{content:"";position:absolute;top:50%;transform:translateY(-50%);width:10px;height:44px;border-radius:5px;background:var(--accent);opacity:.5;transition:opacity .15s ease}.wab-fab.is-mini[data-side=left]::after{left:0}.wab-fab.is-mini[data-side=right]::after{right:0}.wab-fab.is-mini:focus-visible::after,.wab-fab.is-mini:hover::after{opacity:.9}.wab-fab .wab-badge{position:absolute;top:-4px;right:-4px;min-width:17px;height:17px;border-radius:9px;background:var(--warn);color:var(--warn-ink);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;border:1.5px solid var(--surface)}.wab-panel{position:fixed;right:10px;bottom:calc(74px + env(safe-area-inset-bottom,0px) + 64px);width:min(370px,calc(100vw - 20px));max-height:min(72vh,580px);overflow:auto;background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);box-shadow:var(--shadow-2);z-index:140;padding:var(--sp-3)}.wab-panel[hidden]{display:none}.wab-hd{display:flex;align-items:center;gap:6px;margin-bottom:var(--sp-2)}.wab-hd b{font-size:var(--fs-sm)}.wab-hd .x{margin-left:auto}.wab-row{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:1px solid var(--border-1)}.wab-row:last-child{border-bottom:0}.wab-row .nm{font-size:var(--fs-xs);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wab-row .st{font-size:var(--fs-2xs);color:var(--ink-3);white-space:nowrap}.wab-row .btn{flex:none}.wab-empty{padding:var(--sp-3);text-align:center;color:var(--ink-3);font-size:var(--fs-xs)}.wab-form{display:grid;grid-template-columns:minmax(0,1fr) 84px auto auto;gap:6px;margin-top:var(--sp-2);align-items:center}.wab-form input{padding:6px 8px;border:1px solid var(--border-1);border-radius:var(--r-1);background:var(--bg-sunken);color:var(--ink-1);font-size:var(--fs-xs);min-width:0}.wab-form .dirs{display:flex;gap:4px}.wab-note{font-size:var(--fs-2xs);color:var(--ink-3);margin-top:var(--sp-2);line-height:1.5}.wab-fired{color:var(--warn)}.wab-toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:150;background:var(--ink-1);color:var(--surface);padding:10px 16px;border-radius:var(--r-2);font-size:var(--fs-xs);box-shadow:0 6px 24px rgba(0,0,0,.25);max-width:90vw}[data-theme=dark] .wab-toast{background:var(--surface);color:var(--ink-1);border:1px solid var(--border-1)}@media (prefers-color-scheme:dark){}@media (prefers-color-scheme:dark){}.livetag i{position:relative;background:var(--ok);box-shadow:0 0 6px var(--ok)}.livetag i::after{content:'';position:absolute;inset:-3px;border-radius:50%;border:1px solid var(--ok);animation:astockPulseRing 2s cubic-bezier(.24,0,.38,1) infinite}@keyframes astockPulseRing{0%{transform:scale(.8);opacity:.9}100%{transform:scale(2.4);opacity:0}}.cr-tabs{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}.cr-tab{padding:4px 12px;border-radius:var(--r-full);border:1px solid var(--border-1);background:var(--bg-sunken);color:var(--ink-2);font-size:var(--fs-xs);font-weight:var(--fw-medium);cursor:pointer;transition:all var(--dur-2)}.cr-tab:hover{background:var(--surface-hover);color:var(--ink-1)}.cr-tab.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:var(--fw-semibold)}.cr-group{margin-bottom:var(--sp-4);border:1px solid var(--border-1);border-radius:var(--r-1);padding:var(--sp-3);background:var(--surface)}.cr-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px dashed var(--border-1)}.cr-title{font-weight:var(--fw-semibold);font-size:var(--fs-sm);display:flex;align-items:center;gap:var(--sp-2)}.cr-quote{font-family:var(--font-num);font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.cr-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--sp-3)}.cr-col-box{background:var(--bg-sunken);border-radius:var(--r-1);padding:var(--sp-3);border-left:3px solid transparent}.cr-col-box.beneficiary{border-left-color:var(--ok)}.cr-col-box.cost_squeeze{border-left-color:var(--warn)}.cr-col-hd{font-size:var(--fs-xs);font-weight:var(--fw-semibold);margin-bottom:var(--sp-2);display:flex;justify-content:space-between;align-items:center}.cr-stock-item{display:flex;flex-direction:column;gap:4px;padding:var(--sp-2) 0;border-bottom:1px solid var(--border-1);cursor:pointer}.cr-stock-item:last-child{border-bottom:none}.cr-stock-item:hover{background:var(--surface-hover);border-radius:var(--r-1);padding-left:4px}.cr-stock-hd{display:flex;justify-content:space-between;align-items:baseline}.cr-stock-nm{font-weight:var(--fw-semibold);font-size:var(--fs-sm)}.cr-stock-cd{font-size:var(--fs-xs);color:var(--ink-3);margin-left:4px}.cr-stock-pr{font-family:var(--font-num);font-weight:var(--fw-medium)}.cr-stock-desc{font-size:var(--fs-xs);color:var(--ink-2);line-height:1.4}.cr-stock-meta{font-size:11px;color:var(--ink-3);display:flex;gap:var(--sp-3);margin-top:2px}.ps-presets{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-3)}.ps-btn{padding:4px 10px;border-radius:var(--r-1);border:1px solid var(--border-1);background:var(--surface);color:var(--ink-2);font-size:var(--fs-xs);cursor:pointer}.ps-btn:hover{background:var(--surface-hover)}.ps-btn.active{background:var(--accent-tint);color:var(--accent);border-color:var(--accent);font-weight:var(--fw-semibold)}.ps-info-bar{background:var(--bg-sunken);padding:var(--sp-3);border-radius:var(--r-1);font-size:var(--fs-xs);color:var(--ink-2);line-height:1.5;margin-bottom:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-4)}.ps-slider-box{background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-1);padding:var(--sp-3);margin-bottom:var(--sp-3)}.ps-slider-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-2)}.ps-slider-val{font-family:var(--font-num);font-size:var(--fs-md);font-weight:var(--fw-semibold)}.ps-range{width:100%;height:6px;border-radius:3px;accent-color:var(--accent);cursor:pointer}.ps-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:var(--sp-2);margin-bottom:var(--sp-3)}.ps-kpi-card{background:var(--bg-sunken);border-radius:var(--r-1);padding:var(--sp-2h);text-align:center}.ps-kpi-lbl{font-size:11px;color:var(--ink-3);margin-bottom:2px}.ps-kpi-num{font-family:var(--font-num);font-size:var(--fs-md);font-weight:var(--fw-semibold)}.ps-matrix-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-xs);margin-top:var(--sp-2);font-family:var(--font-num)}.ps-matrix-tbl td,.ps-matrix-tbl th{padding:6px 8px;text-align:right;border-bottom:1px solid var(--border-1)}.ps-matrix-tbl td:first-child,.ps-matrix-tbl th:first-child{text-align:left}.ps-formula-box{font-size:11px;color:var(--ink-3);margin-top:var(--sp-2);background:var(--bg-sunken);padding:var(--sp-2);border-radius:var(--r-1);line-height:1.4}.erp-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--sp-3)}.erp-card{background:var(--bg-sunken);border-radius:var(--r-1);padding:var(--sp-3)}.erp-hd{font-weight:var(--fw-semibold);font-size:var(--fs-sm);margin-bottom:var(--sp-3);display:flex;justify-content:space-between;align-items:center}.erp-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-xs);font-family:var(--font-num)}.erp-tbl td,.erp-tbl th{padding:6px 8px;text-align:right;border-bottom:1px solid var(--border-1)}.erp-tbl td:first-child,.erp-tbl th:first-child{text-align:left}.pb-bar-bg{width:100%;height:6px;background:var(--border-1);border-radius:3px;overflow:hidden;margin-top:4px}.pb-bar-fg{height:100%;background:var(--accent);border-radius:3px}.sclk-banner{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3);border-radius:var(--r-1);background:var(--accent-tint);margin-bottom:var(--sp-3);flex-wrap:wrap;gap:var(--sp-2)}.sclk-phase-badge{font-weight:var(--fw-bold);font-size:var(--fs-md);display:flex;align-items:center;gap:var(--sp-2)}.sclk-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(95px,1fr));gap:var(--sp-2);margin-bottom:var(--sp-3)}.sclk-kpi-box{background:var(--bg-sunken);border-radius:var(--r-1);padding:var(--sp-2);text-align:center}.sclk-kpi-k{font-size:11px;color:var(--ink-3)}.sclk-kpi-v{font-family:var(--font-num);font-size:var(--fs-md);font-weight:var(--fw-semibold)}.sclk-kpi-v.warn{color:var(--warn)}.sclk-ladder-box{background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-1);padding:var(--sp-3)}.sclk-ladder-item{display:flex;align-items:baseline;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border-1);font-size:var(--fs-xs)}.sclk-ladder-item:last-child{border-bottom:none}.sclk-ladder-lvl{font-weight:var(--fw-bold);color:var(--ink-1);width:100px;flex:0 0 100px}.cd-banner{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3);border-radius:var(--r-1);background:var(--bg-sunken);margin-bottom:var(--sp-3);flex-wrap:wrap;gap:var(--sp-3)}.cd-gap-box{text-align:center;padding:var(--sp-2) var(--sp-4);background:var(--surface);border-radius:var(--r-1);border:1px solid var(--border-1)}.cd-gap-lbl{font-size:11px;color:var(--ink-3)}.cd-gap-num{font-family:var(--font-num);font-size:var(--fs-lg);font-weight:var(--fw-bold)}.cd-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:var(--sp-2);margin-bottom:var(--sp-3)}.lhb-card-item{border:1px solid var(--border-1);border-radius:var(--r-1);padding:var(--sp-3);margin-bottom:var(--sp-3);background:var(--surface)}.lhb-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-2);border-bottom:1px solid var(--border-1);padding-bottom:var(--sp-2)}.lhb-nm{font-weight:var(--fw-semibold);font-size:var(--fs-sm);display:flex;align-items:center;gap:6px}.lhb-judg{padding:var(--sp-2) var(--sp-3);background:var(--accent-tint);border-radius:var(--r-1);font-size:var(--fs-xs);color:var(--ink-1);margin-bottom:var(--sp-2);line-height:1.4}.lhb-seat-tbl{width:100%;border-collapse:collapse;font-size:11px;font-family:var(--font-num)}.lhb-seat-tbl td,.lhb-seat-tbl th{padding:4px 6px;text-align:right;border-bottom:1px solid var(--border-1)}.lhb-seat-tbl td:first-child,.lhb-seat-tbl th:first-child{text-align:left}.fa-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-3)}.fa-item{border:1px solid var(--border-1);border-radius:var(--r-1);padding:var(--sp-3);background:var(--bg-sunken)}.fa-item.danger{border-left:4px solid var(--warn);background:var(--warn-tint)}.fa-item.safe{border-left:4px solid var(--ok)}.fa-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-2)}.fa-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;font-size:11px;font-family:var(--font-num);margin-bottom:var(--sp-2)}.fa-desc{font-size:var(--fs-xs);color:var(--ink-2);line-height:1.4}.soe-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-xs);font-family:var(--font-num)}.soe-tbl td,.soe-tbl th{padding:6px 8px;text-align:right;border-bottom:1px solid var(--border-1)}.soe-tbl td:first-child,.soe-tbl th:first-child{text-align:left}.ca-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--sp-3)}.ca-events-list{display:flex;flex-direction:column;gap:6px}.ca-ev-item{display:flex;align-items:baseline;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-1);font-size:var(--fs-xs)}.ca-ev-time{font-family:var(--font-num);font-size:11px;color:var(--ink-3);width:55px;flex:0 0 55px}.pairs-box{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--sp-3)}.pair-item{border:1px solid var(--border-1);border-radius:var(--r-1);padding:var(--sp-3);background:var(--surface)}.pair-hd{font-weight:var(--fw-semibold);font-size:var(--fs-sm);margin-bottom:var(--sp-2);display:flex;justify-content:space-between;align-items:center}.lhb-seat-tbl,.soe-tbl{min-width:460px!important}@media (max-width:640px){.ca-card-hd,.fa-hd,.lhb-hd,.pair-hd{flex-direction:column!important;align-items:flex-start!important;gap:4px!important}.lhb-nm{flex-wrap:wrap!important}.lhb-hd>div:last-child{font-size:11px!important;margin-top:2px!important}.sclk-ladder-item{flex-direction:column!important;align-items:flex-start!important;gap:4px!important;padding:8px 0!important}.sclk-ladder-lvl{width:auto!important;flex:none!important;font-size:12px!important}.sclk-kpis{grid-template-columns:repeat(3,1fr)!important;gap:4px!important}.sclk-kpi-box{padding:6px 2px!important}.sclk-kpi-k{font-size:10px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.sclk-kpi-v{font-size:13px!important}.ca-grid{grid-template-columns:1fr!important}.ca-ev-item{font-size:11px!important;line-height:1.4!important}.fa-grid{grid-template-columns:1fr!important}}@media (max-width:768px){#dualPaneBtn{display:none!important}#alarmBtn{padding:2px 6px!important;font-size:11px!important}}.card{background:var(--surface)!important;border:1px solid var(--border-1)!important;border-radius:var(--r-2)!important;box-shadow:var(--sh-1)!important;margin-bottom:var(--sec-gap)!important;overflow:clip!important;transition:border-color .15s ease,box-shadow .15s ease}.kpi-futures{margin:0 0 var(--sp-6)}.kpi-futures .kpi-inner{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.kpi-futures .kpi-t{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);padding:var(--sp-4) var(--sp-5);box-shadow:var(--sh-1);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.kpi-futures .kpi-t:hover{transform:none;box-shadow:none;border-color:var(--accent-line)}.kpi-futures .kpi-t>em{display:block;font-style:normal;font-size:var(--fs-3xs);color:var(--ink-3);letter-spacing:.04em;margin-bottom:4px}.kpi-futures .kpi-t>b{display:block;font-size:var(--fs-xl);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;font-family:var(--font-num);line-height:1.15}.kpi-futures .kpi-t>span{display:block;font-size:var(--fs-2xs);color:var(--ink-3);margin-top:4px}.kpi-futures .kpi-bar{display:flex;height:5px;border-radius:3px;overflow:hidden;background:var(--bg-sunken);margin-top:var(--sp-3)}.kpi-futures .kpi-bar i{display:block;height:100%}.kpi-futures .kpi-bar i.u{background:var(--up)}.kpi-futures .kpi-bar i.d{background:var(--down)}.kpi-futures .kpi-bar i.f{background:var(--quant-mid)}.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-3)}.card-item{position:relative;text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--border-1);border-radius:var(--r-2);padding:var(--sp-4) var(--sp-4) var(--sp-3);box-shadow:var(--sh-1);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;display:block;width:100%;box-sizing:border-box;text-decoration:none}.card-item:hover{border-color:var(--accent-line);box-shadow:var(--sh-2);transform:translateY(-1px)}.card-item:active{transform:translateY(0)}.card-item::before{content:"";position:absolute;left:0;top:var(--sp-4);bottom:var(--sp-4);width:3px;border-radius:0 2px 2px 0;background:var(--border-2);opacity:0}.card-item.up::before,.card-item:has(.c.up)::before{background:var(--up);opacity:1}.card-item.down::before,.card-item:has(.c.down)::before{background:var(--down);opacity:1}.card-item .nm{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2)}.card-item .nm b{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--ink-1)}.card-item .nm i{font-style:normal;font-size:var(--fs-3xs);font-weight:var(--fw-medium);color:var(--ink-3);font-family:var(--font-num);letter-spacing:.03em;background:var(--surface-sunken);border:1px solid var(--border-1);padding:1px 5px;border-radius:var(--r-1)}.card-item .px{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-top:var(--sp-3)}.card-item .px .v{font-size:var(--fs-xl);font-weight:var(--fw-semibold);line-height:1.15;font-variant-numeric:tabular-nums;font-family:var(--font-num);letter-spacing:-.01em}.card-item .px .c{font-size:var(--fs-xs);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;font-family:var(--font-num)}.card-item .hint{display:block;margin-top:4px;font-size:var(--fs-3xs);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4)}.chip{height:30px;padding:0 var(--sp-4);display:inline-flex;align-items:center;gap:var(--sp-2);border-radius:var(--r-full);background:var(--surface);border:1px solid var(--border-2);color:var(--ink-3);font:inherit;font-size:var(--fs-xs);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;text-decoration:none;transition:color .15s,background-color .15s,border-color .15s}.chip:hover{color:var(--ink-1);border-color:var(--ink-4)}.chip.active,.chip[aria-pressed=true]{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-ink);font-weight:var(--fw-semibold)}.chip.active::before,.chip[aria-pressed=true]::before{content:"✓";font-size:11px}.chip.sm{height:24px;padding:0 8px;font-size:11px}.tbl-scroll{position:relative;overflow-x:auto;overflow-y:auto;max-height:72vh;overscroll-behavior-x:contain;border:1px solid var(--border-1);border-radius:var(--r-2);background:var(--surface);box-shadow:var(--sh-1);-webkit-overflow-scrolling:touch;max-width:100%;width:100%;box-sizing:border-box}.tbl-scroll.can-scroll::after,.tbl-scroll.can-scroll::before{content:"";position:absolute;top:0;bottom:0;width:26px;pointer-events:none;z-index:4}.tbl-scroll.can-scroll::after{right:0;background:linear-gradient(90deg,transparent,var(--surface))}.tbl-scroll.can-scroll::before{left:0;background:linear-gradient(270deg,transparent,var(--surface));opacity:0;transition:opacity .15s}.tbl-scroll.scrolled-x::before{opacity:1}.tw table,table.tbl{width:100%;border-collapse:separate!important;border-spacing:0!important;font-size:var(--fs-xs)!important;font-family:var(--font-num)!important;font-variant-numeric:tabular-nums!important}.tw table th,table.tbl th{position:sticky!important;top:0!important;z-index:3!important;background:var(--surface-sunken)!important;color:var(--ink-3)!important;font-weight:var(--fw-medium)!important;font-size:var(--fs-2xs)!important;font-family:var(--font-sans)!important;padding:8px 12px!important;border-bottom:1px solid var(--border-1)!important;text-align:left!important}.tw table td,table.tbl td{padding:8px 12px!important;height:34px!important;border-bottom:1px solid var(--border-1)!important;font-size:var(--fs-xs)!important}.tw table tbody tr:hover td,table.tbl tbody tr:hover td{background:var(--surface-hover)!important}.cr-col-box{background:var(--surface)!important;border:1px solid var(--border-1)!important;border-radius:var(--r-2)!important;padding:var(--sp-4)!important;box-shadow:var(--sh-1)!important;border-left:3px solid var(--border-2)!important;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease!important}.cr-col-box:hover{transform:translateY(-1px)!important;box-shadow:var(--sh-2)!important;border-color:var(--accent-line)!important}.cr-col-box.phase-destock-p{border-left-color:var(--up)!important}.cr-col-box.phase-destock-a{border-left-color:var(--ok)!important}.cr-col-box.phase-restock-p{border-left-color:var(--warn)!important}.cr-col-box.phase-restock-a{border-left-color:var(--info)!important}.pair-item{border:1px solid var(--border-1)!important;border-radius:var(--r-2)!important;padding:var(--sp-4)!important;background:var(--surface)!important;box-shadow:var(--sh-1)!important;transition:transform .15s ease,box-shadow .15s ease!important}.pair-item:hover{transform:translateY(-1px)!important;box-shadow:var(--sh-2)!important;border-color:var(--accent-line)!important}.pair-hd{font-weight:var(--fw-semibold)!important;font-size:var(--fs-md)!important;margin-bottom:var(--sp-3)!important;display:flex!important;justify-content:space-between!important;align-items:center!important;border-bottom:1px solid var(--border-1)!important;padding-bottom:var(--sp-2)!important;color:var(--ink-1)!important}.sclk-ladder-box{background:var(--surface)!important;border:1px solid var(--border-1)!important;border-radius:var(--r-2)!important;padding:var(--sp-4)!important;box-shadow:var(--sh-1)!important}.dual-rank-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));border:1px solid var(--border-1);border-radius:var(--r-2);background:var(--surface);box-shadow:var(--sh-1);overflow:hidden}.dual-rank-col{padding:var(--sp-4);box-sizing:border-box}.dual-rank-col:first-child{border-right:1px solid var(--border-1)}@media (max-width:640px){.dual-rank-col:first-child{border-right:none;border-bottom:1px solid var(--border-1)}}.dual-rank-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border-1)}.dual-rank-hd b{font-size:var(--fs-sm)}.dual-rank-tbl{width:100%;border-collapse:collapse;font-size:var(--fs-xs);font-family:var(--font-num)}.dual-rank-tbl td,.dual-rank-tbl th{padding:6px 8px;text-align:right;border-bottom:1px solid var(--border-1)}.dual-rank-tbl td:first-child,.dual-rank-tbl th:first-child{text-align:left}.dual-rank-tbl tr:last-child td{border-bottom:none}.dual-rank-tbl tbody tr:hover td{background:var(--surface-hover)}@keyframes rowHighlightFlash{0%{background-color:var(--accent-tint)}100%{background-color:transparent}}.row-highlight-flash{animation:rowHighlightFlash 1.8s ease-out}@media print{#helpbtn,#live-region,#themeBtn,.appbar,.bottomnav,.btn,.card-fold-btn,.cond-hd .acts,.drawer,.gsearch,.icobtn,.minimal-view-bar,.mode-pill,.newpill,.ovl,.pager button,.pgtools,.ph,.route-hint,.skel,.skiplink,.sug,.wab-fab,.wab-panel,.wab-toast{display:none!important}:root,:root[data-theme=dark]{--ink-1:#000;--ink-2:#222;--ink-3:#444;--ink-4:#666;--up:#b3271e;--down:#0f7a43;--flat:#444;--warn:#8a5a00;--warn-ink:#5c3d00;--accent:#1f2a6b;--accent-ink:#1f2a6b;--accent-tint:#eef0fa;--surface:#fff;--bg:#fff;--bg-sunken:#fff;--surface-hover:#fff;--border-1:#999;--border-2:#bbb}body,html{background:#fff!important;color:#000!important}.card,.cond,.cond-row,.counter,.dual-rank-tbl,.emptybox,.evi>div,.feed,.ftbl,.idx,.invalid,.kpi,.news-guide-card,.notice,.tbl,.track-row,.verdict,.wl{background:#fff!important;color:#000!important;border-color:#bbb!important;box-shadow:none!important;break-inside:avoid;page-break-inside:avoid}.collapsed{display:block!important}table,td,th{border-color:#bbb!important}a{color:#000!important;text-decoration:none}body,footer.pgf,main{padding-bottom:0!important;margin-bottom:0!important}}.wab-fab,.wab-panel{display:none!important}.export-afloat{position:fixed;right:14px;bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:var(--z-bottomnav,120);display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--r-full,999px);cursor:pointer;border:1px solid var(--border-1);background:var(--surface);color:var(--ink-2);font-size:var(--fs-xs,13px);box-shadow:var(--sh-2,0 2px 8px rgba(0,0,0,.1))}.export-afloat:hover{border-color:var(--accent);color:var(--accent-ink)}@media print{.export-afloat{display:none!important}}@media(max-width:820px){.export-afloat{right:10px;bottom:calc(66px + env(safe-area-inset-bottom,0px));width:44px;height:44px;padding:0;justify-content:center;font-size:0;gap:0;border-radius:50%}.export-afloat svg{width:16px;height:16px}}

/* mive content */
/* ============================================================================
   股票（A股）工作台 · 内容层（mive 审美）
   与期货站共用 shell.css；这里只覆盖 astock.src.css 的业务组件。
   ========================================================================== */

/* ---------- 顶栏控件（搜索 / 主题 / 帮助 / 实时标签） ---------- */
.ws .gsearch {
  position: relative;
  flex: 0 1 250px !important;
  max-width: 250px !important;
  margin-left: auto !important;
}
.ws .gsearch input {
  width: 100%;
  height: 30px;
  padding: 0 11px 0 30px;
  border-radius: var(--r-2);
  border: 1px solid var(--border-1);
  background-color: var(--surface-sunken);
  color: var(--ink-1);
  font-size: var(--fs-xs);
}
.ws .gsearch input::placeholder {
  color: var(--ink-4);
}
.ws .gsearch input:focus {
  border-color: var(--accent);
  background-color: var(--surface);
  box-shadow: 0 0 0 3px var(--accent-tint);
}
.ws .gsearch .sug {
  position: absolute;
  top: 34px;
  left: 0;
  right: 0;
  z-index: var(--z-dropdown);
  max-height: 320px;
  overflow: auto;
  background: var(--surface);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
  box-shadow: var(--sh-3);
}
.ws .themebtn,
.ws .icobtn {
  width: 28px;
  height: 28px;
  padding: 0;
  flex: 0 0 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-left: 0;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-3);
  font-size: var(--fs-sm);
  line-height: 1;
}
.ws .themebtn:hover,
.ws .icobtn:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws .livetag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 7px;
  height: 22px;
  border-radius: var(--r-full);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-family: var(--font-num);
  font-size: 11px;
  white-space: nowrap;
}
.ws .livetag i {
  width: 6px;
  height: 6px;
  flex: 0 0 6px;
  border-radius: 50%;
  background: var(--ink-4);
}
.ws .livetag.on i {
  background: var(--ok);
  animation: rtPulse 1.6s ease-in-out infinite;
}
.ws .livetag.on {
  color: var(--ink-2);
}
@keyframes rtPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .35; }
}

/* ---------- 页面基调 ---------- */
.page-main {
  width: 100%;
}
.page-main > div {
  min-width: 0;
}
.leadline {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 2px 10px;
  color: var(--ink-3);
  font-size: var(--fs-xs);
  line-height: 1.5;
}
.leadline::before {
  content: "";
  width: 3px;
  height: 12px;
  border-radius: var(--r-0);
  background: var(--accent);
  flex: 0 0 3px;
}

/* ---------- 卡片头 / 内容 ---------- */
.card {
  padding: 0 !important;
}
.card > h2 {
  min-height: 34px;
  padding: 6px 12px !important;
  font-size: var(--fs-xs) !important;
  font-weight: var(--fw-semibold) !important;
  letter-spacing: 0 !important;
  line-height: 18px;
  background: transparent !important;
}
.card > h2::before {
  content: none !important;
  display: none !important;
}
.card > h2 .tag,
.card > h2 .sec-hint {
  font-family: var(--font-num);
  font-size: 11px;
  font-weight: var(--fw-regular);
  color: var(--ink-3);
}
.card > .bd,
.card > .card-body {
  padding: 12px !important;
}
.card > .bd > .bd {
  padding: 0;
}
.card > .bd:last-child {
  padding-bottom: 12px;
}
.card.collapsed > :not(h2) {
  display: none !important;
}
.card-fold-btn {
  height: 22px;
  padding: 0 8px;
  border-radius: var(--r-full);
  border: 1px solid var(--border-1);
  background: transparent;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-medium);
}
.card-fold-btn:hover {
  background: var(--surface-hover);
  color: var(--accent-ink);
  border-color: var(--accent-line);
}

/* ---------- 页面头：结论卡 ---------- */
.verdict {
  background: var(--surface) !important;
  border: 1px solid var(--border-1) !important;
  border-radius: var(--r-2) !important;
  box-shadow: none !important;
  padding: 14px !important;
  margin-bottom: 10px !important;
  overflow: hidden;
}
.verdict .eyebrow {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 4px;
  font-family: var(--font-num);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--accent-ink);
}
.verdict .headline {
  margin: 0;
  font-size: 20px;
  font-weight: var(--fw-semibold);
  line-height: 1.35;
  letter-spacing: -.015em;
  color: var(--ink-1);
}
.verdict .headline b,
.verdict .headline strong {
  color: var(--ink-1);
  font-weight: var(--fw-semibold);
}
.grade-badge,
.conf-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 0 7px;
  border-radius: var(--r-full);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-size: 11px;
  line-height: 19px;
}
.evi {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 1px !important;
  margin-top: 10px;
  background: var(--border-1);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
  overflow: hidden;
}
.evi > * {
  background: var(--surface);
  padding: 8px 10px !important;
  min-width: 0;
}
.evi .v,
.evi b {
  font-family: var(--font-num);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--ink-1);
}
.evi .k,
.evi span {
  font-size: 11px;
  color: var(--ink-3);
}

/* ---------- 失效条件 ---------- */
.cond {
  border-top: 1px solid var(--border-1);
  margin-top: 10px;
  padding-top: 10px;
}
.cond-hd {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  color: var(--ink-2);
  font-size: 11px;
  font-weight: var(--fw-semibold);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.cond-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--border-1);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
  overflow: hidden;
}
.cond-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px !important;
  background: var(--surface);
  color: var(--ink-2);
  font-size: var(--fs-2xs);
}
.cond-row .pred {
  color: var(--ink-2);
  font-weight: var(--fw-medium);
}
.cond-row .cur {
  margin-left: auto;
  font-family: var(--font-num);
  color: var(--ink-1);
}
.cond-row .gap {
  font-family: var(--font-num);
  color: var(--ink-3);
  font-size: 11px;
}
.cond-row.idle {
  background: var(--surface);
}
.cond-row.warn {
  background: var(--warn-tint);
}
.cond-row.triggered {
  background: var(--up-tint);
}

/* ---------- 温度 / KPI ---------- */
.minimal-view-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  padding: 8px 12px;
  margin-bottom: 10px;
  background: var(--surface);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
  color: var(--ink-3);
  font-size: var(--fs-2xs);
}
.minimal-view-bar .hint {
  font-size: 11px;
}
.mode-pill {
  height: 26px;
  padding: 0 9px;
  border-radius: var(--r-2);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-2);
  font-size: 11px;
  font-weight: var(--fw-medium);
}
.mode-pill:hover {
  border-color: var(--border-2);
  color: var(--ink-1);
}
.mode-pill.active {
  background: var(--accent-tint);
  border-color: var(--accent-line);
  color: var(--accent-ink);
}
.grid {
  gap: 1px !important;
}
.g4 {
  grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)) !important;
}
.g3 {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
}
.g2 {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
}
.kpi,
.kpi.tap {
  min-height: 76px;
  padding: 9px 12px !important;
  background: var(--surface) !important;
  border: 1px solid var(--border-1) !important;
  border-radius: var(--r-2) !important;
  box-shadow: none !important;
  overflow: hidden;
}
.kpi::before {
  width: 2px !important;
  background: var(--border-2) !important;
}
.kpi .k {
  padding-right: 10px;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.4;
}
.kpi .v {
  margin-top: 2px;
  font-family: var(--font-num);
  font-size: 19px;
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -.01em;
  color: var(--ink-1);
}
.kpi .kk {
  margin-top: 2px;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.4;
}
.kpi .v.up,
.kpi .rt-up {
  color: var(--up);
}
.kpi .v.down,
.kpi .rt-down {
  color: var(--down);
}
.row {
  gap: 6px !important;
}
.row .xs,
.row button.xs {
  height: 24px;
  padding: 0 8px;
  border-radius: var(--r-1);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-size: 11px;
}
.row .xs.active,
.row button.xs.active {
  background: var(--accent-tint);
  border-color: var(--accent-line);
  color: var(--accent-ink);
}
.tnum,
.vv,
.ft,
.bhsum,
.idx {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
}
.idx {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  font-size: var(--fs-2xs);
  color: var(--ink-2);
}
.idx b {
  font-weight: var(--fw-medium);
  color: var(--ink-1);
}

/* ---------- 温度构成 ---------- */
.tp-layer {
  border-top: 1px solid var(--border-1);
  padding: 8px 12px;
}
.tp-lh {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
  color: var(--ink-2);
  font-size: 11px;
  font-weight: var(--fw-semibold);
}
.tp-lh .nm {
  color: var(--ink-2);
}
.tp-lh .wt {
  color: var(--ink-4);
  font-family: var(--font-num);
  font-size: 11px;
  font-weight: var(--fw-regular);
}
.tp-row {
  display: flex;
  align-items: center;
  gap: 8px;
  height: auto !important;
  min-height: 18px;
  padding: 2px 0;
  font-size: 11px;
  color: var(--ink-3);
}
.tp-row .fn {
  min-width: 92px;
  color: var(--ink-3);
}
.tp-row .bar,
.tp-row .pbar {
  flex: 1;
  height: 3px;
  border-radius: var(--r-full);
  background: var(--surface-sunken);
  overflow: hidden;
}
.tp-row .bar i,
.tp-row .pbar i {
  display: block;
  height: 100%;
  background: var(--accent);
}
.tp-row .tv {
  width: 22px;
  text-align: right;
  font-family: var(--font-num);
  color: var(--ink-2);
}
.temp-ai {
  padding: 10px 12px;
  border-top: 1px solid var(--border-1);
  color: var(--ink-2);
  font-size: var(--fs-2xs);
  line-height: 1.65;
}
.temp-ai .gday {
  margin-bottom: 4px;
  color: var(--ink-1);
  font-weight: var(--fw-semibold);
}
.ntags,
.tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 6px;
}
.ntag,
.tagb {
  padding: 0 6px;
  border-radius: var(--r-1);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-family: var(--font-num);
  font-size: 11px;
  line-height: 17px;
}
.tagb {
  cursor: pointer;
  color: var(--ink-2);
}
.tagb:hover {
  border-color: var(--accent-line);
  color: var(--accent-ink);
}
.grp {
  border-top: 1px solid var(--border-1);
  color: var(--ink-3);
  font-size: 11px;
}
.grp .gh {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  cursor: pointer;
  color: var(--ink-3);
}
.grp .gh:hover {
  color: var(--ink-1);
}
.grp.collapsed .gb {
  display: none;
}

/* ---------- 新闻 / 板块 / 列表 ---------- */
.np-it,
.news-item,
.li,
.list-row {
  border-top: 1px solid var(--border-1);
  padding: 8px 12px;
}
.np-it:first-child,
.news-item:first-child,
.li:first-child {
  border-top: 0;
}
.np-it:hover,
.news-item:hover,
.li:hover {
  background: color-mix(in srgb, var(--surface-hover) 60%, transparent);
}
.np-tt {
  color: var(--ink-1);
  font-size: var(--fs-2xs);
  font-weight: var(--fw-medium);
  line-height: 1.55;
}
.np-bd {
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.55;
}
.np-meta {
  color: var(--ink-4);
  font-size: 11px;
}

/* ---------- 表格 ---------- */
.tw {
  border-top: 1px solid var(--border-1);
  overflow-x: auto;
}
.tbl.ftbl {
  font-size: var(--fs-2xs);
}
.tbl.ftbl th {
  font-size: 11px;
}
.tbl.ftbl td {
  font-size: var(--fs-2xs);
}
.tbl .hint {
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-regular);
}

/* ---------- 折叠/展开与空态 ---------- */
.emptybox {
  padding: 22px 16px;
  text-align: center;
  border: 1px dashed var(--border-2);
  border-radius: var(--r-2);
  background: var(--surface-sunken);
  color: var(--ink-3);
}
.emptybox .et {
  margin-bottom: 4px;
  color: var(--ink-2);
  font-size: var(--fs-2xs);
  font-weight: var(--fw-medium);
}
.emptybox .ed {
  max-width: 540px;
  margin: 0 auto 8px;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.6;
}
.emptybox .ea {
  height: 28px;
  padding: 0 10px;
  border-radius: var(--r-2);
  border: 1px solid var(--border-1);
  background: var(--surface);
  color: var(--ink-2);
  font-size: 11px;
}
.empty {
  padding: 26px 16px;
  color: var(--ink-3);
  font-size: var(--fs-2xs);
}
.empty::before {
  content: "◎";
  color: var(--ink-4);
}
.wl {
  padding: 8px 0;
}
.loading {
  color: var(--ink-3);
  font-size: 11px;
}
.loading::before {
  content: "";
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-right: 6px;
  vertical-align: -1px;
  border: 2px solid var(--border-2);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: wsSpin .8s linear infinite;
}

/* ---------- 分段控件 / 开关 ---------- */
.seg {
  display: inline-flex;
  padding: 2px;
  gap: 2px;
  border-radius: var(--r-2);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
}
.seg button,
.seg .seg-btn {
  height: 24px;
  padding: 0 9px;
  border: 0;
  border-radius: var(--r-1);
  background: transparent;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-medium);
}
.seg button.active,
.seg .seg-btn.active,
.seg button[aria-pressed=true] {
  background: var(--surface);
  color: var(--ink-1);
  box-shadow: var(--sh-1);
}
.switch {
  position: relative;
  width: 30px;
  height: 17px;
  border-radius: var(--r-full);
  background: var(--border-2);
  border: 0;
}
.switch.on {
  background: var(--accent);
}
.switch::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: #fff;
  transition: transform var(--dur-1) var(--ease-std);
}
.switch.on::after {
  transform: translateX(13px);
}

/* ---------- 侧栏 / 浮层 ---------- */
.drawer,
.sheet,
.modal,
.panel-pop {
  background: var(--surface) !important;
  border: 1px solid var(--border-1) !important;
  border-radius: var(--r-2) !important;
  box-shadow: var(--sh-3) !important;
  color: var(--ink-1);
}
.drawer h2,
.sheet h2,
.modal h2,
.panel-pop h2 {
  border-bottom: 1px solid var(--border-1);
  font-size: var(--fs-sm);
}

/* ---------- 小屏补排 ---------- */
@media (max-width: 900px) {
  .page-main {
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }
  .verdict {
    padding: 12px !important;
  }
  .verdict .headline {
    font-size: 18px;
  }
  .minimal-view-bar {
    padding: 8px 10px;
  }
}
@media (max-width: 640px) {
  .kpi,
  .kpi.tap {
    min-height: 70px;
    padding: 8px 10px !important;
  }
  .kpi .v {
    font-size: 17px;
  }
  .tp-row .fn {
    min-width: 78px;
  }
  .g4 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .g3,
  .g2 {
    grid-template-columns: 1fr !important;
  }
  .evi {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .cond-row {
    flex-wrap: wrap;
    row-gap: 2px;
  }
  .cond-row .cur {
    margin-left: 0;
  }
  .card > h2 {
    padding: 6px 10px !important;
  }
  .card > .bd,
  .card > .card-body {
    padding: 10px !important;
  }
}


/* ============================================================================
   V2 · 股票工作台视觉升级
   ========================================================================== */

/* 结论卡：三层信息结构，不再把判断染成橙色 */
.ws .verdict {
  padding: 20px 22px !important;
  border-radius: var(--r-3) !important;
  border-color: var(--border-1) !important;
}
.verdict .eyebrow {
  margin-bottom: 8px;
  padding: 0;
  border: 0;
  font-family: var(--font-num);
  font-size: 11px;
  letter-spacing: .08em;
  color: var(--ink-3);
}
.verdict .headline {
  font-size: 16px !important;
  font-weight: 400 !important;
  line-height: 1.5 !important;
  color: var(--ink-2) !important;
  letter-spacing: 0 !important;
}
.verdict .headline em {
  display: inline-block;
  margin: 0 5px;
  font-style: normal;
  font-size: 28px;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.02em;
  color: var(--ink-1) !important;
  vertical-align: -2px;
}
.verdict .headline em::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: 8px;
  border-radius: 50%;
  background: var(--warn);
  vertical-align: 7px;
}
.verdict .headline em.up::before { background: var(--up); }
.verdict .headline em.down::before { background: var(--down); }
.verdict .headline em.flat::before { background: var(--ink-3); }
.verdict .headline b,
.verdict .headline strong,
.verdict .headline span { color: inherit !important; font-weight: inherit !important; }

/* 指标：去掉重复的上证点位，三列等宽 */
.verdict .evi {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 1px !important;
  margin-top: 16px !important;
  border-radius: var(--r-3) !important;
  border-color: var(--border-1) !important;
  background: var(--border-1) !important;
}
.verdict .evi > :first-child { display: none !important; }
.verdict .evi > div {
  padding: 12px 14px !important;
  background: var(--surface-sunken) !important;
}
.verdict .evi .k { font-size: 11px !important; color: var(--ink-2) !important; }
.verdict .evi .v { font-size: 22px !important; font-weight: 600 !important; line-height: 1.2 !important; }
.verdict .evi .d { font-size: 11px !important; color: var(--ink-3) !important; line-height: 1.45; }
.verdict .evi .v .up { color: var(--up) !important; }
.verdict .evi .v .down { color: var(--down) !important; }

/* 失效条件：整行铺满，左侧状态条替代单选圆圈 */
.verdict .cond {
  width: 100% !important;
  max-width: none !important;
  margin-top: 16px !important;
  padding-top: 14px !important;
}
.verdict .cond-list {
  gap: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
}
.cond-row {
  position: relative;
  padding: 9px 0 9px 12px !important;
  background: transparent !important;
  border-bottom: 1px solid var(--border-1);
  border-radius: 0 !important;
}
.cond-row:last-child { border-bottom: 0; }
.cond-row::before {
  content: "";
  position: absolute;
  left: 0;
  top: 11px;
  bottom: 11px;
  width: 2px;
  border-radius: var(--r-0);
  background: var(--ink-4);
}
.cond-row.idle::before { background: var(--ok); }
.cond-row.warn::before { background: var(--warn); }
.cond-row.triggered::before { background: var(--up); }
.cond-row .ic { display: none !important; }
.cond-row .st { display: none !important; }
.cond-row .cbar { width: 56px !important; opacity: .8; }
.cond-hd > span:not(.tt):not(.sum) { display: none !important; }

/* 置信度：点阵改为 3 段小条 */
.grade-badge {
  border: 0 !important;
  background: transparent !important;
  padding: 0 !important;
  font-size: 11px !important;
}
.grade-badge .grade {
  display: inline-flex !important;
  gap: 2px !important;
  align-items: center;
}
.grade-badge .grade i {
  width: 14px !important;
  height: 4px !important;
  border-radius: var(--r-0) !important;
  background: var(--surface-hover) !important;
}
.grade-badge .grade i.f { background: var(--accent) !important; }
.grade-badge b {
  font-size: 11px !important;
  font-weight: 500 !important;
  color: var(--ink-2) !important;
}

/* 市场温度：去掉六枚箭头，内层抬升到 surface-2 */
.kpi.tap::after { content: none !important; display: none !important; }
.card .kpi,
.card .kpi.tap {
  background: var(--surface-sunken) !important;
  border: 0 !important;
  border-radius: var(--r-2) !important;
}
.card .kpi::before { display: none !important; }
.card .kpi .v { font-size: 20px !important; font-weight: 600 !important; }

/* 空态：从 270px 虚线盒改为一行式 */
.emptybox {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 12px 14px !important;
  min-height: 0 !important;
  text-align: left !important;
  background: var(--surface-sunken) !important;
  border: 0 !important;
  border-radius: var(--r-3) !important;
}
.emptybox .et { margin: 0 !important; font-size: 12px !important; flex: none; }
.emptybox .ed { flex: 1 !important; margin: 0 !important; max-width: none !important; font-size: 11px !important; }
.emptybox .ea { flex: none !important; }

/* 移除界面里的说明性长句 */
.leadline { display: none !important; }
.tip { display: none !important; }
.minimal-view-bar { padding: 6px 10px !important; }
.minimal-view-bar > div:first-child > span { display: none !important; }
.minimal-view-bar > div:first-child { display: flex; align-items: center; }
.minimal-view-bar .hint { display: none !important; }

/* 卡片内部层级：内层永远比外层亮一档 */
.card .bd .card,
.card .bd > .box,
.card .bd > .subcard {
  background: var(--surface-sunken) !important;
  border-color: var(--border-1) !important;
  border-radius: var(--r-3) !important;
}


/* ============================================================================
   V2.1 · 股票页回归修复
   ========================================================================== */

/* 结论卡三层堆叠（JS 会重排 headline） */
.verdict .headline {
  display: flex !important;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
}
.vh-label { font-size: 16px; font-weight: 400; line-height: 1.4; color: var(--ink-2); }
.vh-verdict {
  display: inline-flex; align-items: center; gap: 10px;
  font-size: 32px; font-weight: 600; line-height: 1.15;
  letter-spacing: -.02em; color: var(--ink-1);
}
.vh-verdict i { width: 8px; height: 8px; border-radius: 50%; background: var(--warn); flex: none; }
.vh-verdict[data-tone=up] i { background: var(--up); }
.vh-verdict[data-tone=down] i { background: var(--down); }
.vh-verdict[data-tone=flat] i { background: var(--ink-3); }
.vh-mood { font-size: 18px; font-weight: 500; line-height: 1.4; color: var(--ink-2); }

/* 指标说明允许两行，不再把数据截成「15–…」 */
.verdict .evi .d {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none !important;
}

/* 失效条件：去掉右边那条像未填满进度条的 40px 虚线 */
.cond-row .cbar { display: none !important; }

/* 置信度：只留 3 段，避免像骨架加载 */
.grade-badge .grade i:last-child { display: none !important; }

/* 市场温度构成：6px 轨道 + 320px 上限 + 数值紧跟 */
.tp-layer { padding: 10px 0 !important; }
.tp-lh { margin-bottom: 6px !important; font-size: 12px !important; }
.tp-row {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  height: 30px !important;
  padding: 0 !important;
}
.tp-row .fn { flex: 0 0 132px !important; min-width: 132px !important; font-size: 11.5px !important; }
.tp-row .bar {
  display: block !important;
  flex: 0 0 260px !important;
  width: 260px !important;
  height: 6px !important;
  border-radius: var(--r-0) !important;
  background: var(--surface-hover) !important;
  overflow: hidden !important;
}
.tp-row .bar i { height: 100% !important; border-radius: var(--r-0) !important; background: var(--ink-3) !important; }
.tp-row .bar i[style*="--up"] { background: var(--up) !important; }
.tp-row .bar i[style*="--info"] { background: var(--accent) !important; }
.tp-row .bar i[style*="--flat"] { background: var(--ink-3) !important; }
.tp-row .fv {
  flex: 0 0 34px !important;
  margin-left: 0 !important;
  text-align: right;
  font-family: var(--font-num);
  font-size: 12px !important;
  color: var(--ink-2) !important;
}

/* 温度卡：只留标签 + 数值，移除 10px 解释句 */
.card .kpi .kk { display: none !important; }
.temp-ai { display: none !important; }

/* 顶部控制条从整条空槽改为右对齐小工具条 */
.page-main .minimal-view-bar {
  width: max-content !important;
  max-width: 100% !important;
  min-height: 0 !important;
  margin: 0 0 10px auto !important;
  padding: 0 !important;
  gap: 6px !important;
  background: transparent !important;
  border: 0 !important;
  justify-content: flex-end !important;
}

@media (max-width: 640px) {
  .vh-verdict { font-size: 28px; }
  .vh-mood { font-size: 16px; }
  .tp-row .fn { flex: 0 0 104px !important; min-width: 104px !important; }
  .tp-row .bar { flex: 1 1 auto !important; width: auto !important; max-width: 150px !important; }
}


/* 温度构成：四层因子排成 2×2，面板高度减半 */
.card > .bd:has(.tp-layer) {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  column-gap: 28px !important;
  align-items: start;
}
.card > .bd:has(.tp-layer) > p,
.card > .bd:has(.tp-layer) > .hint,
.card > .bd:has(.tp-layer) > .note {
  grid-column: 1 / -1;
}
@media (max-width: 1000px) {
  .card > .bd:has(.tp-layer) { grid-template-columns: 1fr !important; }
}


/* V2.4 · 结论卡左右分栏（桌面） */
@media (min-width: 1001px) {
  .ws .verdict {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 360px !important;
    column-gap: 28px !important;
    align-items: start;
  }
  .verdict .eyebrow { grid-column: 1; grid-row: 1; }
  .verdict .headline { grid-column: 1; grid-row: 2; }
  .verdict .evi {
    grid-column: 2;
    grid-row: 1 / span 2;
    grid-template-columns: 1fr !important;
    align-self: start;
    margin-top: 0 !important;
  }
  .verdict .evi > div { padding: 11px 14px !important; }
  .verdict .cond { grid-column: 1 / -1; grid-row: 3; }
}

/* 失效条件：桌面与移动都给明确栏距 */
.cond-row { gap: 10px !important; }
.cond-row .pred { flex: 1 1 auto; min-width: 0; }
.cond-row .cur, .cond-row .gap { flex: 0 0 auto; }
@media (max-width: 640px) {
  .cond-row { flex-wrap: wrap !important; gap: 3px 10px !important; }
  .cond-row .pred { flex: 1 1 100%; }
}

/* 温度因子条：只保留「红=高位 / 灰=中性」两种颜色 */
.tp-row .bar i { background: var(--ink-3) !important; min-width: 0 !important; }
.tp-row .bar i[style*="--up"] { background: var(--up) !important; }
.tp-row .bar i[style*="--info"] { background: var(--ink-3) !important; }
.tp-row .bar i[style*="--flat"] { background: var(--ink-3) !important; }


/* V2.5 · 结论卡构图收口 */
/* 涨跌停分布条 */
.vh-breadth { margin-top: 16px; width: min(100%, 460px); }
.vh-breadth-head {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 7px; font-size: 11px; color: var(--ink-3);
}
.vh-breadth-head .tnum { font-family: var(--font-num); font-size: 11px; }
.vh-breadth-bar {
  display: flex; gap: 2px; height: 10px;
  border-radius: var(--r-full); background: var(--surface-hover); overflow: hidden;
}
.vh-breadth-bar i { display: block; height: 100%; min-width: 0; }
.vh-breadth-bar .zt { background: var(--up); }
.vh-breadth-bar .zb { background: var(--warn); }
.vh-breadth-bar .dt { background: var(--down); }
.vh-breadth-legend {
  display: flex; flex-wrap: wrap; gap: 4px 16px;
  margin-top: 7px; font-size: 11px; color: var(--ink-3);
}
.vh-breadth-legend span::before {
  content: ""; display: inline-block; width: 6px; height: 6px;
  margin-right: 5px; border-radius: var(--r-0); vertical-align: 0;
}
.vh-breadth-legend .zt::before { background: var(--up); }
.vh-breadth-legend .zb::before { background: var(--warn); }
.vh-breadth-legend .dt::before { background: var(--down); }

/* 置信度作为指标栏第 4 格 */
.evi-grade {
  display: flex; align-items: center;
  padding: 11px 14px;
  background: var(--surface-sunken);
  grid-column: 1 / -1;
}
.evi-grade .grade-badge {
  width: 100%;
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.evi-grade .grade-badge .lb { font-size: 11px; color: var(--ink-2); }

@media (min-width: 1001px) {
  .ws .verdict .evi { grid-row: 1 / span 3 !important; }
  .ws .verdict .vh-breadth { grid-column: 1; grid-row: 3; align-self: start; }
  .ws .verdict .cond { grid-row: 4 !important; }
}
@media (max-width: 1000px) {
  .vh-breadth { width: 100%; margin-top: 14px; }
}


/* shared shell */
/* ============================================================================
   盘鉴工作台 · 表现层样式（2026-11-04 重构）
   ----------------------------------------------------------------------------
   ## 这次做了什么

   1. **同选择器同属性去重**：旧版 3,845 行里同一 (选择器, 属性) 被写了多次，
      共 216 组重复、114 组值不相同。这些值没有对错，只能靠文件顺序决胜负，
      导致谁都不敢删。折叠后每组只留最后一次赋值 —— 这正是浏览器原本的结论。
   2. **补文档与纪律**（见文件末尾「维护约定」）。
   3. **统一圆角**：8 种裸 px 收敛到 5 档令牌。
   4. **移除误导**：删掉 75 个自动生成的分节标题 —— 九层补丁是交织的，
      按语义分层拆分只会得到 74 次层切换，比不拆更难读。

   ## 为什么没有按「基础/布局/组件」拆成多个文件

   试过，并量化了：按语义给每条规则打标签后，整份文件层切换 74 次。
   而 CSS 的顺序会影响同特异性选择器的胜负（实测 5 对），
   重排顺序就无法再证明「与旧版等价」。**可证明的等价 > 好看的目录结构**。
   语义通过选择器命名与注释表达，不通过文件划分。

   ## 可验证的等价性

   改动前后用两个脚本证明没有行为变化：
     python3 audit/verify-css-equivalence.py   # 每选择器最终属性集逐一比对
     node audit/style-fingerprint.cjs compare   # 真机计算样式（48 个组合）
   前者对 614 个「媒体上下文 × 选择器」组合比对通过，0 差异。
   ========================================================================== */

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}
html, body {
  max-width: 100vw;
  overflow-x: hidden;
}
body {
  margin: 0;
  min-height: 100dvh;
  background: var(--bg);
  color: var(--ink-1);
  font: var(--fw-regular) var(--fs-sm) / var(--lh-body) var(--font-sans);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
::selection {
  background: var(--accent-tint);
  color: var(--ink-1);
}

a {
  color: var(--accent-ink);
  text-decoration: none;
}
a:hover {
  color: var(--accent);
}
:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
  border-radius: var(--r-1);
}
button, input, select, textarea {
  font: inherit;
  color: inherit;
}
button {
  cursor: pointer;
}
hr {
  border: 0;
  border-top: 1px solid var(--border-1);
  margin: 12px 0;
}

.sr-only, .vh {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.skip, .skiplink {
  position: fixed;
  top: -100px;
  left: 16px;
  z-index: var(--z-skiplink);
  padding: 8px 14px;
  border-radius: var(--r-2);
  background: var(--surface);
  border: 1px solid var(--border-1);
  color: var(--ink-1);
  font-size: var(--fs-xs);
}
.skip:focus, .skiplink:focus {
  top: 10px;
}
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: transparent;
}
::-webkit-scrollbar-thumb {
  background: var(--border-2);
  border-radius: var(--r-full);
  border: 3px solid var(--bg);
}
::-webkit-scrollbar-thumb:hover {
  background: var(--ink-4);
}
.ws {
  display: flex;
  align-items: stretch;
  min-height: 100dvh;
}

/* 圆角体系（2026-11-04 统一）
   ----------------------------------------------------------------------------
   原来 8 种圆角并存（2/3/4/5/6/7/14/999），其中 6px 用得最多却没有令牌，
   同一界面里标签 4、按钮 5、tab 6、品牌 7 并排，说不出哪里不对但不整齐。
   现收敛为 5 档，全部走令牌：
     --r-0    3px   极小装饰件、滚动条
     --r-1    5px   小标签、小按钮、进度条
     --r-2    8px   面板与控件（主力档）
     --r-3   10px   大面板、浮层、抽屉
     --r-full 999px 胶囊
   新增元素请选最接近的一档，不要再写裸 px。 */

.ws-sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 60;
  width: var(--ws-sidebar-w);
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border-right: 1px solid var(--border-1);
  color: var(--ink-1);
}
.ws-main {
  flex: 1 1 auto;
  min-width: 0;
  margin-left: var(--ws-sidebar-w);
  display: flex;
  flex-direction: column;
  min-height: 100dvh;
}
.ws-brandrow {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 14px 16px 8px;
}
.ws .brand, .ws-sidebar .brand {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0;
  background: none !important;
  color: var(--ink-1) !important;
  border-radius: 0;
  font-size: 15px;
  font-weight: var(--fw-semibold);
  letter-spacing: -.01em;
  line-height: 24px;
  text-decoration: none;
  white-space: nowrap;
}
.ws .brand:hover {
  color: var(--ink-1);
}
.ws .brand .bname {
  color: var(--ink-1) !important;
}
.ws .brand .blogo, .ws-logo {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-2);
  background: var(--accent);
  color: var(--on-accent);
  font-size: 13px;
  font-weight: var(--fw-semibold);
  line-height: 1;
}
.ws-brand-sub {
  padding-left: 33px;
  font-size: var(--fs-3xs);
  line-height: 1.45;
  color: var(--ink-3);
  letter-spacing: .01em;
}
.ws-brand-sub b {
  color: var(--ink-2);
  font-weight: var(--fw-medium);
}
.ws-sidebar .pnav {
  order: 0;
  margin: 6px 12px 4px;
  padding: 3px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
  background: var(--surface-sunken);
}
.ws-sidebar .pnav .pn {
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-2);
  color: var(--ink-2);
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: .01em;
  transition: background-color var(--dur-1) var(--ease-std), color var(--dur-1) var(--ease-std);
}
.ws-sidebar .pnav .pn:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws-sidebar .pnav .pn[aria-current=page] {
  background: var(--accent);
  color: var(--on-accent);
  box-shadow: none;
}
.ws-navlabel {
  padding: 10px 16px 5px;
  font-family: var(--font-num);
  font-size: 11px;
  line-height: 1.2;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-4);
}
.ws-sidebar .tablist {
  position: static;
  order: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1px;
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  padding: 2px 8px 10px;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: thin;
  border: 0;
  background: transparent;
}
.ws-sidebar .tablist::after, .ws-sidebar .tablist::before {
  display: none;
}
.ws-sidebar .tab {
  position: relative;
  width: 100%;
  height: 32px;
  min-height: 32px;
  padding: 0 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  border: 0;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-2);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  letter-spacing: 0;
  text-align: left;
  transition: background-color var(--dur-1) var(--ease-std), color var(--dur-1) var(--ease-std);
}
.ws-sidebar .tab:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws-sidebar .tab[aria-selected=true] {
  background: var(--surface-hover);
  color: var(--ink-1);
  box-shadow: inset 2px 0 var(--accent);
}
.ws-sidebar .tab::after {
  display: none;
}
.ws-sidebar .tab .ic, .ws-sidebar .tab > svg {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  color: var(--ink-3);
  opacity: .95;
}
.ws-sidebar .tab:hover .ic, .ws-sidebar .tab:hover > svg {
  color: var(--ink-2);
}
.ws-sidebar .tab[aria-selected=true] .ic, .ws-sidebar .tab[aria-selected=true] > svg {
  color: var(--accent);
}
.ws-sidebar .tab .tab-count {
  margin-left: auto;
  font-family: var(--font-num);
  font-size: 11px;
  color: var(--ink-3);
}
.ws-sidebar .tablist > button {
  position: relative;
  width: 100%;
  height: 32px;
  min-height: 32px;
  max-height: 32px;
  padding: 0 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  border: 0;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-2);
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  line-height: 1.2;
  text-align: left;
  white-space: nowrap;
  transition: background-color var(--dur-1) var(--ease-std), color var(--dur-1) var(--ease-std);
}
.ws-sidebar .tablist > button:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws-sidebar .tablist > button[aria-selected=true] {
  background: var(--surface-hover);
  color: var(--ink-1);
  box-shadow: inset 2px 0 var(--accent);
}
.ws-sidebar .tablist > button::after {
  display: none;
}
.ws-sidebar .tablist > button .ic, .ws-sidebar .tablist > button > svg {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  color: var(--ink-3);
}
.ws-sidebar .tablist > button[aria-selected=true] .ic, .ws-sidebar .tablist > button[aria-selected=true] > svg {
  color: var(--accent);
}
.ws-sidefoot {
  margin-top: auto;
  padding: 12px 16px 14px;
  border-top: 1px solid var(--border-1);
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: var(--fs-3xs);
  color: var(--ink-3);
}
.ws-sidefoot .ws-live {
  display: flex;
  align-items: center;
  gap: 7px;
}
.ws-sidefoot .ws-sidehint {
  line-height: 1.5;
  color: var(--ink-4);
}
.ws-sidefoot a {
  color: var(--ink-3);
}
.ws-sidefoot a:hover {
  color: var(--accent-ink);
}
.ws-main > .appbar, .ws-main .appbar {
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  height: var(--appbar-h);
  min-height: var(--appbar-h);
  padding: 0;
  display: block;
  flex-wrap: nowrap;
  background: color-mix(in srgb, var(--bg) 92%, transparent);
  -webkit-backdrop-filter: saturate(160%) blur(12px);
  backdrop-filter: saturate(160%) blur(12px);
  border-bottom: 1px solid var(--border-1);
  box-shadow: none;
}
.ws-main > .appbar.is-stuck {
  box-shadow: none;
  border-bottom-color: var(--border-1);
}
.ws .appbar-inner {
  max-width: none;
  width: 100%;
  height: var(--appbar-h);
  min-height: var(--appbar-h);
  margin: 0;
  padding: 0 18px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.ws-crumb {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  font-size: var(--fs-xs);
  color: var(--ink-3);
  white-space: nowrap;
}
.ws-crumb .sep {
  color: var(--ink-4);
}
.ws-crumb b {
  color: var(--ink-1);
  font-weight: var(--fw-medium);
  overflow: hidden;
  text-overflow: ellipsis;
}
.ws-menu {
  display: none;
  width: 28px;
  height: 28px;
  padding: 0;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-2);
}
.ws-menu:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws-menu svg {
  width: 18px;
  height: 18px;
}
.ws .appbar-inner > * {
  order: 0 !important;
}
.ws .appbar-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 2px;
}
.ws .gsearch {
  margin-left: auto;
}
.ws .xbtn {
  width: 28px;
  height: 28px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-3);
  font-size: var(--fs-xs);
  line-height: 1;
  transition: background-color var(--dur-1) var(--ease-std), color var(--dur-1) var(--ease-std), border-color var(--dur-1) var(--ease-std);
}
.ws .xbtn:hover {
  background: var(--surface-hover);
  border-color: var(--border-1);
  color: var(--ink-1);
}
.ws .xbtn svg {
  width: 16px;
  height: 16px;
}
.ws .xbtn--txt {
  width: auto;
  padding: 0 8px;
  gap: 5px;
  font-size: var(--fs-2xs);
}
.ws .xbtn-t {
  display: inline;
}
.ws .appmore {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.ws .appmore > summary {
  list-style: none;
  cursor: pointer;
}
.ws .appmore > summary::-webkit-details-marker {
  display: none;
}
.ws .appmore .amore-sum {
  display: none;
  width: 28px;
  height: 28px;
  align-items: center;
  justify-content: center;
  border-radius: var(--r-2);
  color: var(--ink-3);
}
.ws .appmore .amore-sum:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws .appmore .amore-sum svg {
  width: 16px;
  height: 16px;
}
.ws .live-pulse-container {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0 8px;
  height: 24px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-full);
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-family: var(--font-num);
  font-size: 11px;
  letter-spacing: .08em;
  white-space: nowrap;
}
.ws .live-pulse-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ok);
  flex: 0 0 6px;
}
.ws .live-pulse-text {
  color: var(--ink-3);
}
.ws .live-pulse-container.is-offline .live-pulse-dot {
  background: var(--ink-4);
}
.ws .rt-dot {
  margin-left: 0 !important;
}
.ws .scroll-progress {
  height: 2px;
  background: var(--accent);
}
.ws .wl-count-badge {
  position: absolute;
  top: 2px;
  right: 1px;
  min-width: 13px;
  height: 13px;
  padding: 0 3px;
  border-radius: var(--r-full);
  background: var(--accent);
  color: var(--on-accent);
  font-family: var(--font-num);
  font-size: 11px;
  line-height: 13px;
  text-align: center;
}
.ws .wrap, .ws .page-main {
  width: 100%;
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 14px 18px 24px;
  box-sizing: border-box;
  min-width: 0;
}
.ws .wrap > h1, .ws .page-main > h1 {
  margin: 0;
}
.ws-pagehead {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px;
  padding: 0 2px;
}
.ws-pagehead .ws-kicker {
  font-family: var(--font-num);
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent-ink);
}
.ws-pagehead h1 {
  margin: 2px 0 0;
  font-size: var(--fs-xl);
  font-weight: var(--fw-semibold);
  letter-spacing: -.015em;
  line-height: 1.25;
  color: var(--ink-1);
}
.ws-pagehead p {
  margin: 3px 0 0;
  font-size: var(--fs-xs);
  color: var(--ink-3);
}
.ws-pagehead .ws-headmeta {
  font-family: var(--font-num);
  font-size: var(--fs-2xs);
  color: var(--ink-3);
  white-space: nowrap;
}

.glass, .blk, .card {
  background: var(--surface);
  border: 1px solid var(--border-1);
  border-radius: var(--r-3);
  box-shadow: none;
  margin: 0 0 10px;
  overflow: hidden;
}
.blk > h2, .card > h2 {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: var(--panel-head-h);
  margin: 0;
  padding: 0 14px;
  border: 0;
  border-bottom: 1px solid var(--border-1);
  background: transparent;
  color: var(--ink-1);
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  line-height: var(--panel-head-h);
  letter-spacing: 0;
  text-transform: none;
}
.blk > h2::before, .card > h2::before {
  content: none !important;
  display: none !important;
}
.blk > h2 .hint, .card > h2 .hint {
  color: var(--ink-3);
  font-weight: var(--fw-regular);
  font-size: var(--fs-2xs);
}
.blk > h2 .tag, .card > h2 .tag {
  margin-left: auto;
  font-family: var(--font-num);
  font-size: 11px;
  color: var(--ink-3);
  font-weight: var(--fw-regular);
  white-space: nowrap;
}

.ws-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 34px;
  padding: 6px 12px;
  border-bottom: 1px solid var(--border-1);
  color: var(--ink-1);
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  line-height: 18px;
}
.ws-panel-head .ws-panel-sub {
  margin-left: auto;
  font-family: var(--font-num);
  font-size: 11px;
  font-weight: var(--fw-regular);
  color: var(--ink-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ws-panel-body {
  padding: 12px;
}

.tbl-scroll {
  position: relative;
  max-width: 100%;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: auto;
}
.blk > .tbl-scroll, .card > .tbl-scroll {
  border-top: 0;
}
.tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-xs);
  font-variant-numeric: tabular-nums;
  background: transparent;
}
.tbl th, .tbl thead th {
  position: sticky;
  top: 0;
  z-index: var(--z-tblhead);
  padding: 6px 12px;
  background: var(--surface-sunken);
  border: 0;
  border-bottom: 1px solid var(--border-1);
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-medium);
  text-align: left;
  white-space: nowrap;
  letter-spacing: 0;
}
.tbl td {
  padding: 6px 12px;
  border: 0;
  border-bottom: 1px solid var(--border-1);
  color: var(--ink-1);
  font-size: var(--fs-xs);
  vertical-align: middle;
  background: transparent;
}
.tbl tbody tr:last-child td {
  border-bottom: 0;
}
.tbl tbody tr:hover td {
  background: color-mix(in srgb, var(--surface-hover) 70%, transparent);
}
.tbl td.num, .tbl th.num, .tbl .num {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.tbl td.up, .tbl .up {
  color: var(--up) !important;
}
.tbl td.down, .tbl .down {
  color: var(--down) !important;
}
.tbl td.flat, .tbl .flat {
  color: var(--flat) !important;
}
.tbl tr[data-sym]:hover td:first-child {
  color: var(--accent-ink);
}
.chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sp-2);
  margin: 0 0 10px;
}
.blk > .chips, .card > .chips {
  padding: 10px 12px 0;
  margin: 0;
}
.chip {
  height: 28px;
  padding: 0 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: var(--r-2);
  background: var(--surface-sunken);
  border: 1px solid var(--border-1);
  color: var(--ink-2);
  font: inherit;
  font-size: var(--fs-2xs);
  font-weight: var(--fw-medium);
  white-space: nowrap;
  transition: background-color var(--dur-1) var(--ease-std), border-color var(--dur-1) var(--ease-std), color var(--dur-1) var(--ease-std);
}
.chip:hover {
  border-color: var(--border-2);
  color: var(--ink-1);
}
.chip.active, .chip[aria-pressed=true], .chip.on, .chip.is-on {
  background: var(--accent-tint);
  border-color: var(--accent-line);
  color: var(--accent-ink);
}
.chip .badge {
  height: 16px;
  min-width: 16px;
  padding: 0 4px;
  font-size: 11px;
  line-height: 16px;
}
.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 17px;
  padding: 0 6px;
  border-radius: var(--r-full);
  font-family: var(--font-num);
  font-size: 11px;
  font-weight: var(--fw-medium);
  line-height: 17px;
  white-space: nowrap;
}
.badge.up {
  background: var(--up-tint);
  color: var(--up-ink);
  border: 1px solid color-mix(in srgb, var(--up) 45%, transparent);
}
.badge.down {
  background: var(--down-tint);
  color: var(--down-ink);
  border: 1px solid color-mix(in srgb, var(--down) 45%, transparent);
}
.badge.flat {
  background: var(--surface-sunken);
  color: var(--ink-3);
  border: 1px solid var(--border-1);
}
.pill {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  border-radius: var(--r-full);
  font-size: 11px;
  font-weight: var(--fw-medium);
  line-height: 17px;
}
.pill.ok {
  background: var(--ok-tint);
  color: var(--ok-ink);
}
.pill.err {
  background: var(--up-tint);
  color: var(--up-ink);
}
.pill.warn {
  background: var(--warn-tint);
  color: var(--warn-ink);
}
.pill.info {
  background: var(--info-tint);
  color: var(--info-ink);
}
.btn {
  min-height: 30px;
  padding: 4px 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border-radius: var(--r-2);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-2);
  font-size: var(--fs-2xs);
  font-weight: var(--fw-medium);
  line-height: 1.3;
  transition: background-color var(--dur-1) var(--ease-std), border-color var(--dur-1) var(--ease-std), color var(--dur-1) var(--ease-std);
}
.btn:hover {
  background: var(--surface-hover);
  border-color: var(--border-2);
  color: var(--ink-1);
}
.btn.pri {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--on-accent);
}
.btn.pri:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
  color: var(--on-accent);
}
.search, .gsearch input {
  height: 30px;
  padding: 0 11px 0 30px;
  border-radius: var(--r-2);
  border: 1px solid var(--border-1);
  background-color: var(--surface-sunken);
  color: var(--ink-1);
  font-size: var(--fs-xs);
  outline: 0;
  transition: border-color var(--dur-1) var(--ease-std), background-color var(--dur-1) var(--ease-std);
}
.search::placeholder, .gsearch input::placeholder {
  color: var(--ink-4);
}
.search:focus, .gsearch input:focus {
  border-color: var(--accent);
  background-color: var(--surface);
  box-shadow: 0 0 0 3px var(--accent-tint);
}
select.btn, select {
  background-color: var(--surface-sunken);
  color: var(--ink-1);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
}
.hint {
  color: var(--ink-3);
  font-size: var(--fs-2xs);
  line-height: 1.55;
}
.blk > p.hint, .card > p.hint {
  padding: 10px 12px;
  margin: 0;
}
.empty {
  padding: 36px 16px;
  text-align: center;
  color: var(--ink-3);
  font-size: var(--fs-xs);
  line-height: 1.8;
}
.empty::before {
  display: block;
  margin-bottom: 6px;
  color: var(--ink-4);
  font-size: 22px;
  content: "◎";
}
.err {
  padding: 10px 12px;
  border-left: 2px solid var(--up);
  background: var(--up-tint);
  color: var(--up-ink);
  font-size: var(--fs-xs);
  border-radius: 0 var(--r-1) var(--r-1) 0;
}
.bar, .skel .bar {
  height: 12px;
  border-radius: var(--r-1);
  background: linear-gradient(90deg, var(--surface-sunken), var(--surface-hover), var(--surface-sunken));
  background-size: 200% 100%;
  animation: wsSkel var(--dur-skel) ease-in-out infinite;
}

@keyframes wsSkel {
0% {
  background-position: 100% 0;
}
100% {
  background-position: -100% 0;
}
}

.spin {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid var(--border-2);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: wsSpin .8s linear infinite;
}

@keyframes wsSpin {
to {
  transform: rotate(360deg);
}
}

.kpi {
  margin: 0 0 10px;
  background: var(--surface);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
  overflow: hidden;
}
.kpi-inner {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) 148px;
  gap: 1px;
  background: var(--border-1);
  padding: 0;
  margin: 0;
  overflow: visible;
}
.kpi-t {
  position: relative;
  overflow: hidden;
  min-height: 72px;
  padding: 10px 14px;
  background: var(--surface);
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.kpi-t em {
  display: block;
  font-family: var(--font-sans);
  font-size: 11px;
  font-style: normal;
  font-weight: var(--fw-regular);
  line-height: 1.4;
  color: var(--ink-3);
}
.kpi-t b {
  display: block;
  margin-top: 2px;
  font-family: var(--font-sans);
  font-size: 22px;
  font-weight: var(--fw-semibold);
  line-height: 26px;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
  color: var(--ink-0);
}
.kpi-t b.up {
  color: var(--up);
}
.kpi-t b.down {
  color: var(--down);
}
.kpi-t > span {
  display: block;
  margin-top: 1px;
  font-size: 11px;
  line-height: 1.45;
  color: var(--ink-4);
}
.kpi-t b span {
  display: inline;
  margin: 0;
  font-size: inherit;
  line-height: inherit;
  color: inherit;
}
.kpi-bar {
  margin-top: 7px;
  height: 3px;
  border-radius: var(--r-full);
  overflow: hidden;
  background: var(--surface-sunken);
  display: flex;
}
.kpi-bar i {
  display: block;
  height: 100%;
}
.kpi-bar .u {
  background: var(--up);
}
.kpi-bar .f {
  background: var(--ink-4);
}
.kpi-bar .d {
  background: var(--down);
}
.grid-cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  padding: 0;
  margin: 0;
  background: var(--border-1);
}
.card-item {
  position: relative;
  min-width: 0;
  text-align: left;
  font: inherit;
  color: inherit;
  cursor: pointer;
  background: var(--surface);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 12px 14px;
  transition: background-color var(--dur-1) var(--ease-std);
}
.card-item:hover {
  background: var(--surface-hover);
  transform: none !important;
  box-shadow: none !important;
}
.card-item:active {
  transform: none !important;
}
.card-item .nm {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}
.card-item .nm b {
  font-size: var(--fs-xs);
  font-weight: var(--fw-medium);
  color: var(--ink-1);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.card-item .nm i {
  margin-left: auto;
  font-family: var(--font-num);
  font-size: 11px;
  font-style: normal;
  color: var(--ink-4);
  flex: none;
}
.card-item .px {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin-top: 4px;
  min-width: 0;
}
.card-item .px .v {
  font-family: var(--font-sans);
  font-size: 18px;
  font-weight: var(--fw-semibold);
  line-height: 1.2;
  letter-spacing: -.02em;
  color: var(--ink-0);
  font-variant-numeric: tabular-nums;
}

.card-item .px .v.up, .ws .card-item .px .v.up {
  color: var(--up);
}
.card-item .px .v.down, .ws .card-item .px .v.down {
  color: var(--down);
}
.card-item .px .v.flat, .ws .card-item .px .v.flat {
  color: var(--flat);
}
.ws .card-item-cta .px .v.up {
  color: var(--up);
}
.ws .card-item-cta .px .v.down {
  color: var(--down);
}
.ws .card-item-cta .px .v.flat {
  color: var(--flat);
}

.card-item .px .c {
  font-family: var(--font-num);
  font-size: 11px;
  font-weight: var(--fw-medium);
  white-space: nowrap;
}
.card-item .px .c.up {
  color: var(--up);
}
.card-item .px .c.down {
  color: var(--down);
}
.card-item .px .c.flat {
  color: var(--flat);
}
.card-item .hint {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  color: var(--ink-4);
  line-height: 1.4;
}
.card-item .min-dot {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--accent);
}

.pgf {
  margin: 24px 0 0;
  border-top: 1px solid var(--border-1);
  background: transparent;
  color: var(--ink-3);
  font-size: var(--fs-2xs);
}
.pgf-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 18px 18px 16px;
  display: grid;
  gap: 18px;
  grid-template-columns: 1.5fr 1fr 1fr 1.3fr 1.2fr;
}
.pgf-col > h3, .pgf-col > h4 {
  margin: 0 0 8px;
  font-size: 11px;
  font-weight: var(--fw-semibold);
  color: var(--ink-2);
  letter-spacing: .06em;
  text-transform: uppercase;
}
.pgf-logo {
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  color: var(--ink-1);
  margin-bottom: 6px;
  letter-spacing: -.01em;
}
.pgf p {
  margin: 0 0 7px;
  line-height: 1.65;
  color: var(--ink-3);
}
.pgf ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.pgf li, .pgf a {
  color: var(--ink-3);
  font-size: var(--fs-2xs);
}
.pgf a:hover {
  color: var(--accent-ink);
}
.pgf-fresh {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 7px;
  font-family: var(--font-num);
  font-size: 11px;
  color: var(--ink-3);
}
.pgf-fresh .live-pulse {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ok);
  flex: 0 0 6px;
}

.taglist {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 8px;
}
.taglist span {
  padding: 1px 6px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-1);
  font-size: 11px;
  color: var(--ink-3);
  background: var(--surface-sunken);
}

.pgf-bar {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 10px 18px 16px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  border-top: 1px solid var(--border-1);
  color: var(--ink-4);
  font-size: 11px;
  line-height: 1.55;
}
.pgf-bar .src, .pgf-bar .disclaimer {
  color: var(--ink-4);
}
.pgf-bar .disclaimer {
  flex-basis: 100%;
}
.pgf-bar a {
  color: var(--ink-3);
}
.bnav, .bottomnav {
  display: none;
}
.ws-scrim {
  display: none;
}

.chart {
  background: var(--surface);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
}
.q-meta, .kv, .tt-row {
  border-color: var(--border-1);
}
.q-name {
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
}
.q-price {
  font-family: var(--font-num);
  font-variant-numeric: tabular-nums;
}
.q-chg.up, .up {
  color: var(--up);
}
.q-chg.down, .down {
  color: var(--down);
}
.flat {
  color: var(--flat);
}
span.up, b.up, em.up, td.up {
  color: var(--up);
}
span.down, b.down, em.down, td.down {
  color: var(--down);
}
.pan-header, .pan-kpi-card, .pan-controls {
  border-color: var(--border-1);
}
.pan-title {
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
}
.pan-kpi-card {
  background: var(--surface-sunken);
  border: 1px solid var(--border-1);
  border-radius: var(--r-2);
}

@media (max-width: 1280px) {
.ws .xbtn-t {
  display: none;
}
.pgf-inner {
  grid-template-columns: 1.4fr 1fr 1fr 1.3fr;
}
}
@media (max-width: 1024px) {
:root {
  --ws-sidebar-w: 208px;
}
.kpi-inner {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.kpi-t:nth-child(4), .kpi-t:nth-child(5) {
  grid-column: auto;
}
.grid-cards {
  grid-template-columns: repeat(auto-fill, minmax(146px, 1fr));
}
}
@media (max-width: 900px) {
.ws-sidebar {
  transform: translateX(-100%);
  transition: transform var(--dur-2) var(--ease-out);
  box-shadow: none;
  width: 248px;
}
.ws-sidebar.is-open {
  transform: translateX(0);
  box-shadow: 0 18px 48px rgba(0, 0, 0, .5);
}
.ws-main {
  margin-left: 0;
}
.ws-menu {
  display: inline-flex;
}
.ws-scrim {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 55;
  background: rgba(0, 0, 0, .56);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-2) var(--ease-std);
}
.ws-scrim.is-open {
  opacity: 1;
  pointer-events: auto;
}
.ws .appbar-inner {
  padding: 0 12px;
}
.ws .wrap, .ws .page-main {
  padding: 12px 12px 20px;
}
.pgf-inner {
  grid-template-columns: 1fr 1fr;
  padding: 16px 12px 14px;
}
.pgf-bar {
  padding: 10px 12px 14px;
}
.bnav, .bottomnav {
  display: flex;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-bottomnav);
  height: calc(52px + env(safe-area-inset-bottom, 0px));
  padding: 0 4px env(safe-area-inset-bottom, 0px);
  background: color-mix(in srgb, var(--surface) 96%, transparent);
  -webkit-backdrop-filter: saturate(160%) blur(12px);
  backdrop-filter: saturate(160%) blur(12px);
  border-top: 1px solid var(--border-1);
  overflow-x: auto;
  scrollbar-width: none;
}
.bnav::-webkit-scrollbar, .bottomnav::-webkit-scrollbar {
  display: none;
}
.bnav .tab, .bottomnav button {
  flex: 1 0 auto;
  min-width: 54px;
  height: 52px;
  padding: 5px 6px 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  border: 0;
  background: transparent;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-medium);
  line-height: 1.2;
}
.bnav .tab .ic, .bottomnav button .ic {
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-3);
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
}
.bnav .tab .ic svg, .bottomnav button .ic svg {
  width: 18px;
  height: 18px;
}
.bnav .tab[aria-selected=true], .bottomnav button[aria-selected=true] {
  color: var(--accent-ink);
}
.bnav .tab[aria-selected=true] .ic, .bottomnav button[aria-selected=true] .ic, .bnav .tab[aria-selected=true] .ic svg, .bottomnav button[aria-selected=true] .ic svg {
  color: var(--accent);
}
.bnav .tab::after, .bottomnav button::after {
  display: none;
}
body {
  padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px));
}
.ws .pgf {
  margin-top: 12px;
}
}
@media (max-width: 640px) {
.ws .appbar-actions {
  gap: 0;
}
.ws .xbtn#colorModeBtn, .ws .xbtn#densityBtn, .ws .appmore {
  display: none;
}
.ws .live-pulse-text {
  display: none;
}
.ws .live-pulse-container {
  padding: 0 6px;
}
.ws-crumb {
  max-width: 42vw;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ws-pagehead {
  align-items: flex-start;
  flex-direction: column;
  gap: 4px;
}
.kpi-inner {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
.kpi-t {
  min-height: 70px;
  padding: 8px 10px !important;
}
.kpi-t b {
  font-size: 16px !important;
}
.grid-cards {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pgf-inner {
  grid-template-columns: 1fr;
  gap: 14px;
}
.tbl th, .tbl td {
  padding: 6px 9px;
}
.blk > .chips, .card > .chips {
  padding: 8px 10px 0;
}
.blk > h2, .card > h2 {
  padding: 6px 10px !important;
}
}
@media (max-width: 420px) {
.kpi-inner {
  grid-template-columns: 1fr 1fr !important;
}
.kpi-t:nth-child(5) {
  grid-column: 1 / -1;
}
.bnav .tab, .bottomnav button {
  min-width: 40px;
  padding-left: 2px;
  padding-right: 2px;
  font-size: 11px;
}
.bottomnav button {
  min-width: 40px;
}
.ws-crumb .ws-crumb-path {
  display: none;
}
}
@media print {
.ws-sidebar, .appbar, .bnav, .bottomnav, .ws-scrim, .pgf {
  display: none !important;
}
.ws-main {
  margin-left: 0;
}
}

body {
  font-size: var(--fs-sm);
  font-variant-numeric: tabular-nums;
}

.ws .wrap, .ws .page-main {
  padding: 16px 20px 28px;
}
.ws .appbar-inner {
  padding: 0 20px;
}
.ws-main > .appbar, .ws-main .appbar, .ws .appbar-inner {
  height: var(--appbar-h);
  min-height: var(--appbar-h);
}
.ws .kpi-t b, .ws .card-item .px .v, .ws .ratio-val, .ws .q-price {
  font-family: var(--font-sans);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.02em;
}
.ws-sidebar {
  width: var(--ws-sidebar-w);
  background: var(--surface);
}
.ws-brandrow {
  padding: 12px 14px 6px;
  gap: 2px;
}
.ws .brand, .ws-sidebar .brand {
  font-size: 14px;
  gap: 8px;
}
.ws .brand .blogo, .ws-logo {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  border-radius: var(--r-2);
  font-size: 12px;
}
.ws-brand-sub {
  padding-left: 30px;
  font-size: 11px;
  color: var(--ink-4);
}
.ws-sidebar .pnav {
  margin: 8px 10px 2px;
  padding: 2px;
  gap: 2px;
  border-radius: var(--r-1);
}
.ws-sidebar .pnav .pn {
  height: 26px;
  border-radius: var(--r-1);
  font-size: var(--fs-xs);
}
.ws-navlabel {
  padding: 12px 14px 4px;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: var(--fw-semibold);
  letter-spacing: .08em;
  color: var(--ink-4);
}
.ws-sidebar .tablist {
  padding: 2px 8px 8px;
  gap: 2px;
}
.ws-sidebar .tab, .ws-sidebar .tablist > button {
  height: 30px;
  min-height: 30px;
  max-height: 30px;
  padding: 0 9px;
  gap: 9px;
  border-radius: var(--r-1);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
}
.ws-sidebar .tab[aria-selected=true], .ws-sidebar .tablist > button[aria-selected=true] {
  background: var(--surface-hover);
  color: var(--ink-1);
  box-shadow: inset 2px 0 var(--accent);
}
.ws-sidebar .tab .ic, .ws-sidebar .tab > svg, .ws-sidebar .tablist > button .ic, .ws-sidebar .tablist > button > svg {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  stroke-width: 1.8;
  color: var(--ink-3);
}
.ws-sidebar .tab[aria-selected=true] .ic, .ws-sidebar .tab[aria-selected=true] > svg, .ws-sidebar .tablist > button[aria-selected=true] .ic, .ws-sidebar .tablist > button[aria-selected=true] > svg {
  color: var(--ink-2);
}
.ws-pulse {
  margin: 6px 10px 4px;
  padding: 9px 10px 8px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-1);
  background: var(--surface-sunken);
}
.ws-pulse[hidden] {
  display: none;
}
.ws-pulse-t {
  margin-bottom: 6px;
  font-size: 11px;
  font-weight: var(--fw-semibold);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-4);
}
.ws-pulse-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding: 2.5px 0;
  font-size: 11px;
  color: var(--ink-3);
  white-space: nowrap;
}
.ws-pulse-row b {
  font-weight: var(--fw-medium);
  color: var(--ink-1);
  font-variant-numeric: tabular-nums;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ws-pulse-row b.up {
  color: var(--up);
}
.ws-pulse-row b.down {
  color: var(--down);
}
.ws-pulse-row b.ai {
  color: var(--ai-ink);
}
.ws-sidefoot {
  padding: 10px 14px 12px;
  gap: 6px;
}
.ws-sidefoot .ws-live {
  gap: 6px;
}
.ws .live-pulse-container {
  height: 20px;
  padding: 0 7px;
  border: 0;
  background: transparent;
  font-size: 11px;
  color: var(--ink-4);
}
.ws .live-pulse-dot {
  width: 5px;
  height: 5px;
  flex: 0 0 5px;
}
.ws-sidefoot .ws-sidehint {
  font-size: 11px;
  line-height: 1.5;
  color: var(--ink-4);
}
.ws-crumb {
  gap: 8px;
  font-size: var(--fs-sm);
}
.ws-crumb .ws-crumb-path, .ws-crumb .sep {
  display: none;
}
.ws-crumb b {
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--ink-1);
}
.ws-crumb-date {
  font-family: var(--font-sans);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  color: var(--ink-4);
  white-space: nowrap;
}
.ws .appbar-actions {
  gap: 0;
}
.ws-agroup {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 0 7px;
  border-right: 1px solid var(--border-1);
}
.ws-agroup:last-child {
  border-right: 0;
  padding-right: 0;
}
.ws .xbtn {
  width: 28px;
  height: 28px;
  border-radius: var(--r-1);
  color: var(--ink-3);
}
.ws .xbtn:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.ws .xbtn-t {
  display: none;
}

@media (min-width: 1440px) {
.ws .xbtn--txt .xbtn-t {
  display: inline;
  font-size: 11px;
  color: inherit;
}
}

.ws .rt-dot {
  border: 0;
  background: transparent;
  padding: 0 4px;
  height: 20px;
  font-size: 11px;
  font-weight: var(--fw-medium);
  color: var(--ink-4);
  gap: 6px;
}
.ws .rt-dot::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--ink-4);
  display: inline-block;
  flex: none;
}
.ws .rt-dot[data-s=open]::before, .ws .rt-dot[data-s=trading]::before {
  background: var(--ok);
}
.ws .scroll-progress {
  height: 2px;
  background: var(--accent);
  opacity: .8;
}
.ws .glass, .ws .blk, .ws .card {
  border-radius: var(--r-3);
  border-color: var(--border-1);
  background: var(--surface);
  margin-bottom: 10px;
}
.ws .blk > h2, .ws .card > h2 {
  min-height: var(--panel-head-h);
  padding: 0 14px;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  line-height: var(--panel-head-h);
  border-bottom-color: var(--border-1);
}

.blk > h2 .hint, .card > h2 .hint {
  font-size: 11px;
  font-weight: var(--fw-regular);
  color: var(--ink-4);
}
.blk > h2 .tag, .card > h2 .tag {
  font-size: 11px;
  color: var(--ink-4);
}

.ws-panel-head {
  min-height: var(--panel-head-h);
  padding: 0 14px;
  font-size: var(--fs-sm);
}
.ws .blk .blk, .ws .card .blk {
  background: transparent;
  border: 0;
  border-radius: 0;
  margin: 0;
  box-shadow: none;
  overflow: visible;
}
.ws .blk .blk > h2 {
  position: static;
  top: auto;
  min-height: var(--group-row-h);
  padding: 0 14px;
  background: var(--surface-sunken);
  font-size: 11.5px;
  font-weight: var(--fw-semibold);
  line-height: var(--group-row-h);
  color: var(--ink-2);
  border-bottom: 1px solid var(--border-1);
}
.ws .blk .blk > h2 .hint {
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: var(--r-1);
  background: var(--surface-hover);
  color: var(--ink-3);
  font-size: 11px;
  line-height: 16px;
  font-weight: var(--fw-medium);
}

.grp-toggle {
  margin-left: auto;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 0;
  border-radius: var(--r-1);
  background: transparent;
  color: var(--ink-4);
  font-size: 11px;
  line-height: 1;
}
.grp-toggle:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.blk.is-collapsed > *:not(h2) {
  display: none;
}
.blk.is-collapsed > h2 {
  border-bottom-color: transparent;
}

.ws-pagehead {
  align-items: flex-end;
  gap: 16px;
  margin: 0 0 12px;
  padding: 2px 2px 0;
}
.ws-kicker {
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: var(--fw-semibold);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--accent-ink);
}
.ws-page-title {
  margin: 2px 0 0;
  font-size: 22px;
  font-weight: var(--fw-semibold);
  line-height: 1.25;
  letter-spacing: -.02em;
  color: var(--ink-0);
}
.ws-page-sub {
  margin: 3px 0 0;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--ink-3);
}
.ws-pagehead-actions {
  gap: 10px;
  padding-bottom: 2px;
}
.ws-data-status {
  font-family: var(--font-sans);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  color: var(--ink-4);
}
.ws-export {
  height: 28px;
  padding: 0 10px;
  border-radius: var(--r-1);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-2);
  font-size: 11.5px;
  font-weight: var(--fw-medium);
}
.ws-export:hover {
  background: var(--surface-hover);
  border-color: var(--border-2);
  color: var(--ink-1);
}
.ws-hide {
  display: none !important;
}
.ws-col-hide {
  display: none !important;
}
.ws .tbl th, .ws .tbl thead th {
  height: var(--tbl-head-h);
  min-height: var(--tbl-head-h);
  padding: 0 12px;
  background: var(--surface-sunken);
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-medium);
  letter-spacing: .02em;
}
.ws .tbl th::after {
  content: none;
  display: none;
}
.ws .tbl td {
  padding: var(--cell-pad-y) 12px;
  font-size: var(--fs-sm);
  height: var(--row-h-tbl);
}
.ws .tbl td.num, .ws .tbl th.num {
  padding-right: 12px;
}
.ws .tbl tbody tr:hover td {
  background: var(--surface-hover);
}
.ws .tbl tbody tr:hover td:first-child {
  box-shadow: inset 2px 0 var(--accent);
}
.ws .tbl tr[data-sym]:hover td:first-child {
  color: var(--ink-1);
}
.ws .tbl td.col-ai {
  color: var(--ai-ink);
  font-variant-numeric: tabular-nums;
}
.ws .tbl td.col-ai * {
  color: inherit;
}
.ws .tbl td.col-ai span {
  display: none;
}
.ws .tbl td.col-ai::before {
  content: "";
  display: inline-block;
  width: 5px;
  height: 5px;
  margin-right: 6px;
  border-radius: 50%;
  background: var(--ai);
  vertical-align: 2px;
}
.ws .tbl td.col-ai.ai-zero, .ws .tbl td.col-ai[data-sign=zero] {
  color: var(--ink-3);
}
.ws .tbl td.col-ai.ai-zero::before, .ws .tbl td.col-ai[data-sign=zero]::before {
  background: var(--ink-4);
}
.ws .tbl td.col-tech {
  color: var(--ink-2);
}
.ws .tbl td.chg-cell {
  position: relative;
}
.ws .tbl td.chg-cell::after {
  content: "";
  position: absolute;
  right: 12px;
  bottom: 4px;
  height: 2px;
  width: calc(var(--mag, 0) * 84px);
  border-radius: var(--r-0);
  background: currentColor;
  opacity: .2;
  pointer-events: none;
}
.ws-table-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  padding: 7px 14px;
  border-bottom: 1px solid var(--border-1);
  background: var(--surface);
  color: var(--ink-4);
  font-size: 11px;
  line-height: 1.4;
}
.ws-table-legend b {
  color: var(--ink-3);
  font-weight: var(--fw-medium);
}
.ws-table-legend span:first-child b {
  color: var(--ai-ink);
}
.ws .tw, .ws .tbl-scroll, .ws-table-scroll {
  position: relative;
  max-width: 100%;
  overflow-x: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--border-2) transparent;
}
.ws-table-scroll {
  overflow-y: hidden;
  padding-bottom: 2px;
}
.ws-table-scroll > table {
  min-width: 100%;
}
.ws .tw::-webkit-scrollbar, .ws .tbl-scroll::-webkit-scrollbar, .ws-table-scroll::-webkit-scrollbar {
  height: 6px;
}
.ws .tw::-webkit-scrollbar-track, .ws .tbl-scroll::-webkit-scrollbar-track, .ws-table-scroll::-webkit-scrollbar-track {
  background: transparent;
}
.ws .tw::-webkit-scrollbar-thumb, .ws .tbl-scroll::-webkit-scrollbar-thumb, .ws-table-scroll::-webkit-scrollbar-thumb {
  background: var(--border-2);
  border-radius: var(--r-0);
}

.tw::after {
  content: "";
  position: sticky;
  right: 0;
  top: 0;
  float: right;
  width: 24px;
  height: 100%;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, var(--surface));
}

.ws-pager {
  position: static;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  min-height: 40px;
  padding: 6px 12px;
  background: var(--surface);
  border-top: 1px solid var(--border-1);
}
.card:has(.ws-pager) .bd {
  padding-bottom: 8px;
}

.empty {
  padding: 20px 16px;
  text-align: center;
  color: var(--ink-3);
  font-size: var(--fs-xs);
  line-height: 1.7;
}
.empty::before {
  display: block;
  width: 26px;
  height: 26px;
  margin: 0 auto 8px;
  border: 1px dashed var(--border-2);
  border-radius: 50%;
  color: transparent;
  font-size: 0;
  content: "";
}

.ws-empty-panel {
  max-height: 132px;
  min-height: var(--empty-h);
  overflow: hidden;
  position: relative;
}
.ws-empty-panel > *:not(h2) {
  display: none;
}
.ws-empty-panel::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  margin: 16px auto 0;
  border: 1px dashed var(--border-2);
  border-radius: 50%;
}
.ws-empty-panel::after {
  content: "暂无数据 · 数据源稍后重试";
  display: block;
  padding: 7px 16px 16px;
  text-align: center;
  font-size: 11px;
  color: var(--ink-4);
}
.ws-loading-compact {
  max-height: 132px;
  overflow: hidden;
}
.ws-loading-compact > *:not(h2) {
  display: none;
}
.ws-loading-compact::before {
  content: "";
  display: block;
  width: 56%;
  height: 10px;
  margin: 22px auto 0;
  border-radius: var(--r-1);
  background: linear-gradient(90deg, var(--skel-base), var(--skel-sheen), var(--skel-base));
  background-size: 200% 100%;
  animation: wsSkel var(--dur-skel) ease-in-out infinite;
}
.ws-loading-compact::after {
  content: "取数中 · 可先浏览其他模块";
  display: block;
  padding: 9px 16px 16px;
  text-align: center;
  font-size: 11px;
  color: var(--ink-4);
}

.bar, .skel .bar {
  height: 10px;
  border-radius: var(--r-1);
  background: linear-gradient(90deg, var(--skel-base), var(--skel-sheen), var(--skel-base));
  background-size: 200% 100%;
  animation: wsSkel var(--dur-skel) ease-in-out infinite;
}
.rt-up, .rt-down {
  animation: none;
}
.tbl .rt-up, .tbl .rt-down, .tbl tr.rt-up, .tbl tr.rt-down, .tbl td.rt-up, .tbl td.rt-down, .card-item .rt-up, .card-item .rt-down {
  background-color: transparent;
}

.ws .kpi {
  border-radius: var(--r-3);
  margin-bottom: 10px;
}
.ws .kpi-inner {
  grid-template-columns: repeat(4, minmax(0, 1fr)) 148px;
}
.ws .kpi-t {
  min-height: 72px;
  padding: 10px 14px;
}
.ws .kpi-t em {
  font-size: 11px;
  color: var(--ink-3);
}
.ws .kpi-t b {
  font-size: 22px;
  line-height: 26px;
  font-weight: var(--fw-semibold);
  /* 这里原写 color: var(--ink-0)，特异性 0,2,1，压过了更早的
     .kpi-t b.up / .kpi-t b.down —— 结果 KPI 卡里的涨跌数字（领涨板块、
     涨跌家数、涨跌幅）全部渲染成正文色，红涨绿跌在首屏失效。
     保留 var(--ink-0) 作为「无 up/down 类时」的默认色，
     涨跌色由下面两条更高特异性的规则接管。 */
  color: var(--ink-0);
}
/* 与基础层的 .kpi-t b.up/.down 对齐，但特异性（0,3,1）足以赢过上面的
   .ws .kpi-t b { color: var(--ink-0) }（0,2,1）。
   不加 !important：这是正常的层内覆盖，加感叹号只会掩盖真正的问题。 */
.ws .kpi-t b.up,
.ws .kpi-t span.up { color: var(--up); }
.ws .kpi-t b.down,
.ws .kpi-t span.down { color: var(--down); }
.ws .kpi-t > span {
  font-size: 11px;
  color: var(--ink-4);
}
.ws .kpi-t:last-child {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1px;
  background: var(--surface-sunken);
}
.ws .kpi-t:last-child b {
  font-size: 15px;
  line-height: 20px;
  color: var(--ink-1);
}
.ws .kpi-bar {
  width: 100%;
  height: 2px;
  margin-top: 8px;
  border-radius: var(--r-full);
  background: var(--border-1);
}
.ws .kpi-t::after {
  display: none;
  content: none;
}
.ws .grid-cards {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  background: var(--surface);
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+1) {
  grid-column: span 4;
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+2) {
  grid-column: span 3;
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+3) {
  grid-column: span 2;
}
.ws .card-item {
  padding: 12px 14px;
  background: var(--surface);
  box-shadow: inset -1px 0 0 var(--border-1), inset 0 -1px 0 var(--border-1);
}
.ws .card-item::before {
  content: none;
  display: none;
}
.ws .card-item:hover {
  background: var(--surface-hover);
  transform: none;
}
.ws .card-item .nm b {
  font-size: 11.5px;
  font-weight: var(--fw-medium);
  color: var(--ink-2);
}
.ws .card-item .nm i {
  font-size: 11px;
  color: var(--ink-4);
}
.ws .card-item .px {
  margin-top: 5px;
}
.ws .card-item .px .v {
  font-size: 19px;
  line-height: 1.25;
}
.ws .card-item .px .c {
  font-size: 11px;
}
.ws .card-item .hint {
  font-size: 11px;
  color: var(--ink-4);
}
.ws .card-item-cta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 3px;
  background: var(--surface);
  border: 0;
  box-shadow: inset -1px 0 0 var(--border-1), inset 0 -1px 0 var(--border-1);
  cursor: pointer;
}
.ws .card-item-cta:hover {
  background: var(--accent-tint);
}
.ws .card-item-cta .nm b {
  color: var(--ink-2);
}
.ws .card-item-cta .px .v {
  color: var(--accent-ink);
  font-size: 19px;
}
.ws .card-item-cta .hint {
  color: var(--ink-4);
}
.ws .card-item-cta:hover .hint {
  color: var(--accent-ink);
}
.ws .chip {
  height: var(--chip-h);
  padding: 0 9px;
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  border-color: var(--border-1);
  color: var(--ink-2);
  font-size: 11.5px;
  font-weight: var(--fw-medium);
}
.ws .chip:hover {
  border-color: var(--border-2);
  color: var(--ink-1);
}
.ws .chip.active, .ws .chip[aria-pressed=true], .ws .chip.on, .ws .chip.is-on {
  background: var(--accent-tint);
  border-color: var(--accent-line);
  color: var(--accent-ink);
}
.ws .btn {
  min-height: 28px;
  padding: 3px 10px;
  border-radius: var(--r-1);
  font-size: 11.5px;
}

.badge {
  min-height: 16px;
  font-size: 11px;
  line-height: 16px;
}

.ws .pgf-inner {
  display: none;
}
.ws .pgf {
  margin-top: 16px;
  background: transparent;
}
.ws .pgf-bar {
  padding: 10px 20px 14px;
  border-top: 1px solid var(--border-1);
  gap: 10px;
  font-size: 11px;
}
.ws .pgf-bar .disclaimer {
  display: none;
}
.ws-toolbar {
  position: static;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 8px 14px;
  background: var(--surface);
  border-bottom: 1px solid var(--border-1);
  overflow-x: auto;
  scrollbar-width: none;
}
.ws-toolbar::-webkit-scrollbar {
  display: none;
}
.ws-toolbar .chips {
  margin: 0;
  padding: 0;
  border: 0;
  flex-wrap: nowrap;
  gap: 6px;
  overflow: visible;
}
.ws-toolbar .chips + .chips {
  margin-left: auto;
}
.ws-toolbar .search {
  flex: 0 0 220px;
}
.ws-heat-legend {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0 0;
  font-size: 11px;
  color: var(--ink-4);
}
.ws-heat-legend .ws-heat-scale {
  display: block;
  width: 110px;
  height: 5px;
  border-radius: var(--r-0);
  background: linear-gradient(90deg, var(--down) 0%, var(--surface-hover) 50%, var(--up) 100%);
}
.ws-heat-legend .ws-heat-note {
  margin-left: auto;
  color: var(--ink-4);
}

.heat-c {
  height: 32px;
  font-size: 11px;
}
.chain-nodes-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
}

.ws .chain-insight-box {
  display: block;
  padding: 12px 0 0;
  border: 0;
  border-top: 1px solid var(--border-1);
  border-radius: 0;
  background: transparent;
}
.ws .chain-insight-box > h4 {
  display: block;
  margin: 0 0 8px;
  font-size: 12.5px;
  font-weight: var(--fw-semibold);
  color: var(--ink-1);
}
.ws .chain-insight-box .chain-insight-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.ws .chain-insight-box .chain-insight-item {
  background: var(--surface-sunken);
  border: 1px solid var(--border-1);
  border-radius: var(--r-1);
  padding: 10px 12px;
}

.compare-page .cmp-pairs-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px;
  max-height: 44px;
  padding: 6px 12px;
  overflow-x: auto;
  overflow-y: hidden;
  background: var(--surface-sunken);
  border-top: 1px solid var(--border-1);
  border-bottom: 1px solid var(--border-1);
  scrollbar-width: none;
}
.compare-page .cmp-pairs-row::-webkit-scrollbar {
  display: none;
}
.compare-page .chips {
  align-items: center;
}
.compare-page .chips::before {
  content: "联动窗口";
  margin-right: auto;
  font-size: 11px;
  letter-spacing: .02em;
  color: var(--ink-4);
}

.ws-period {
  color: var(--ink-2);
}
.ws-range {
  height: 24px;
  font-size: 11px;
  color: var(--ink-3);
  background: transparent;
  border-color: transparent;
}
.ws-range.active, .ws-range[aria-pressed=true] {
  background: var(--surface-hover);
  border-color: var(--border-1);
  color: var(--ink-1);
}
.ws-range-first {
  margin-left: 12px;
}
.ws .page-main {
  padding: 14px 18px 24px;
}
.ws #app .card {
  margin-bottom: 8px;
}
.ws #app .card > h2 {
  min-height: 34px;
  padding: 0 12px;
  line-height: 34px;
}
.ws-metric-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 8px;
}
.ws-metric-grid > .card {
  margin: 0;
  height: 100%;
}
.ws-loading-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 8px;
}
.ws-loading-grid > .card {
  margin: 0;
}
.ws-loading-grid > :last-child:nth-child(2n+1) {
  grid-column: 1 / -1;
}
.ws-compact-card {
  padding: 0;
}
.ws-compact-card > h2 {
  display: none;
}
.ws-compact-card > .bd {
  padding: 8px 12px;
}
.ws-compact-card .toolbar {
  min-height: 0;
  padding: 0;
  gap: 8px;
}
.ws-compact-filters {
  padding: 0;
}
.ws-compact-filters > h2 {
  min-height: 34px;
  padding: 0 12px;
  line-height: 34px;
}
.ws-compact-filters > .bd, .ws-compact-filters .bd {
  padding: 8px 12px;
}
.ws-compact-filters .chips {
  flex-wrap: nowrap;
  overflow-x: auto;
  padding-bottom: 2px;
  scrollbar-width: none;
}

.ratio-card-cta {
  display: flex;
  flex-direction: column;
  text-align: left;
  background: var(--surface-sunken);
  border: 1px solid var(--border-1);
  cursor: pointer;
  padding: 0;
}
.ratio-card-cta:hover {
  border-color: var(--accent-line);
  background: var(--accent-tint);
}
.ratio-card-cta .ratio-card-h {
  color: var(--ink-2);
}
.ratio-card-cta-t {
  font-size: 12.5px;
  font-weight: var(--fw-semibold);
  color: var(--ink-1);
}
.ratio-card-cta-s {
  margin-top: 4px;
  font-size: 11px;
  color: var(--accent-ink);
}
.ratio-card-lio {
  position: relative;
}
.ratio-card-lio .ratio-card-body {
  padding: 0;
}
.ratio-card-lio .ratio-val {
  font-size: inherit;
}
.ratio-card-lio .ratio-lio-spark {
  display: none;
}
.ratio-card-lio .ratio-card-footer {
  cursor: pointer;
}
.ratio-card-lio.is-loading {
  opacity: .75;
}
.ratio-card-lio .ratio-lio-chg {
  display: none;
}
.ratio-card-lio .ratio-lio-range {
  display: none;
}

.ws-modal {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(0, 0, 0, .58);
}
.ws-modal.is-open {
  display: flex;
}
.ws-modal-panel {
  width: min(760px, 100%);
  max-height: 80dvh;
  overflow: auto;
  background: var(--surface);
  border: 1px solid var(--border-1);
  border-radius: var(--r-3);
  box-shadow: var(--sh-3);
}
.ws-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border-1);
  font-size: 13px;
  font-weight: var(--fw-semibold);
}
.ws-modal-close {
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-3);
  font-size: 17px;
}
.ws-modal-body {
  padding: 14px 16px 16px;
}
.ws-modal-body canvas {
  display: block;
  width: 100%;
  height: 300px;
}
.ws-modal-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-top: 10px;
  font-family: var(--font-sans);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  color: var(--ink-3);
}
.ws-sheet {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: none;
}
.ws-sheet.is-open {
  display: block;
}
.ws-sheet-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .58);
}
.ws-sheet-panel {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  max-height: 78dvh;
  overflow: auto;
  padding: 12px 12px calc(16px + env(safe-area-inset-bottom, 0px));
  background: var(--surface);
  border-top: 1px solid var(--border-1);
  border-radius: 14px 14px 0 0;
  box-shadow: 0 -18px 48px rgba(0, 0, 0, .55);
}
.ws-sheet-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 4px 6px 10px;
  color: var(--ink-1);
  font-size: 13px;
  font-weight: var(--fw-semibold);
}
.ws-sheet-close {
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: var(--r-2);
  background: transparent;
  color: var(--ink-3);
  font-size: 17px;
}
.ws-sheet-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}
.ws-sheet-item {
  display: flex;
  align-items: center;
  gap: 10px;
  height: 44px;
  padding: 0 12px;
  border-radius: var(--r-1);
  border: 1px solid var(--border-1);
  background: var(--surface-sunken);
  color: var(--ink-2);
  font-size: 12.5px;
  font-weight: var(--fw-medium);
  text-align: left;
}
.ws-sheet-item.is-active {
  background: var(--accent-tint);
  border-color: var(--accent-line);
  color: var(--accent-ink);
}
.ws-sheet-item .ic {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

@media (min-width: 901px) and (max-width: 1280px) {
:root {
  --ws-sidebar-w: var(--rail-w);
}
.ws-brandrow {
  align-items: center;
  padding: 12px 0 8px;
}
.ws-brand-sub, .ws-navlabel, .ws-pulse, .ws-sidefoot .ws-sidehint {
  display: none;
}
.ws .brand {
  justify-content: center;
}
.ws-sidebar .pnav {
  grid-template-columns: 1fr;
  margin: 6px 8px 2px;
}
.ws-sidebar .pnav .pn {
  font-size: 11px;
  padding: 0;
}
.ws-sidebar .tablist {
  padding: 2px 6px 8px;
}
.ws-sidebar .tab, .ws-sidebar .tablist > button {
  justify-content: center;
  padding: 0;
  gap: 0;
}
.ws-sidebar .tab .tab-label, .ws-sidebar .tablist > button .tab-label, .ws-sidebar .tab .tab-count, .ws-sidebar .tablist > button .tab-count {
  display: none;
}
.ws-sidefoot {
  padding: 8px 6px;
  align-items: center;
}
.ws .grid-cards {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ws .grid-cards > .card-item:last-child:nth-child(3n+1) {
  grid-column: span 3;
}
.ws .grid-cards > .card-item:last-child:nth-child(3n+2) {
  grid-column: span 2;
}
.ws .kpi-inner {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.ws .kpi-t:last-child {
  grid-column: 1 / -1;
  flex-direction: row;
  align-items: baseline;
  gap: 8px;
}
}
@media (max-width: 1024px) {
.pgf-inner {
  grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 900px) {
:root {
  --ws-sidebar-w: 248px;
}
.ws-sidebar {
  transform: translateX(-100%);
  transition: transform var(--dur-2) var(--ease-out);
}
.ws-sidebar.is-open {
  transform: translateX(0);
  box-shadow: 0 18px 48px rgba(0, 0, 0, .5);
}
.ws-brand-sub, .ws-navlabel, .ws-pulse, .ws-sidefoot .ws-sidehint {
  display: block;
}
.ws .brand {
  justify-content: flex-start;
}
.ws-sidebar .pnav {
  grid-template-columns: 1fr 1fr;
}
.ws-sidebar .tab, .ws-sidebar .tablist > button {
  justify-content: flex-start;
  padding: 0 10px;
  gap: 10px;
}
.ws-sidebar .tab .tab-label, .ws-sidebar .tablist > button .tab-label, .ws-sidebar .tab .tab-count, .ws-sidebar .tablist > button .tab-count {
  display: inline;
}
.ws-main {
  margin-left: 0;
}
.ws-menu {
  display: inline-flex;
}
.ws-scrim {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 55;
  background: rgba(0, 0, 0, .56);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-2) var(--ease-std);
}
.ws-scrim.is-open {
  opacity: 1;
  pointer-events: auto;
}
.ws .appbar-inner {
  padding: 0 12px;
}
.ws .wrap, .ws .page-main {
  padding: 14px 14px calc(96px + env(safe-area-inset-bottom, 0px));
}
body {
  padding-bottom: 0;
}
.ws-crumb b {
  font-size: 14px;
}
.ws-crumb-date {
  display: none;
}
.ws-pagehead {
  align-items: flex-start;
  flex-direction: column;
  gap: 4px;
  margin: 0 0 10px;
  padding: 0;
}
.ws-page-title {
  font-size: 19px;
}
.ws-page-sub {
  font-size: 11px;
}
.ws-pagehead-actions {
  display: none;
}
.ws-toolbar {
  padding: 6px 12px;
  gap: 8px;
}
.ws-toolbar .search {
  flex: 0 0 170px;
}
.ws .kpi-inner {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
}
.ws .kpi-t {
  min-height: 66px;
  padding: 9px 12px;
}
.ws .kpi-t b {
  font-size: 18px;
  line-height: 22px;
}
.ws .kpi-t:last-child {
  grid-column: 1 / -1;
  flex-direction: row;
  align-items: baseline;
  gap: 8px;
}
.ws .grid-cards {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ws .grid-cards > .card-item:last-child:nth-child(2n+1) {
  grid-column: span 2;
}
.ws .grid-cards > .card-item {
  padding: 11px 12px;
  min-height: 76px;
}
.ws .grid-cards > .card-item .px .v {
  font-size: 17px;
}
.ws .grid-cards > .card-item .hint {
  display: inline;
  margin-left: 4px;
}
.blk > h2, .card > h2 {
  min-height: 34px;
  padding: 0 12px;
  line-height: 34px;
  font-size: 12.5px;
}
.ws .blk .blk > h2 {
  padding: 0 12px;
  font-size: 11px;
}
.ws .tbl th, .ws .tbl td {
  padding-left: 9px;
  padding-right: 9px;
}
.ws .tbl td.chg-cell::after {
  width: calc(var(--mag, 0) * 48px);
  right: 9px;
}
.blk > .chips, .card > .chips {
  padding: 8px 10px 0;
}
.ws-metric-grid {
  grid-template-columns: 1fr 1fr;
}
.ws-loading-grid {
  grid-template-columns: 1fr;
}
.chain-nodes-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pgf-inner {
  grid-template-columns: 1fr 1fr;
  padding: 16px 12px 14px;
}
.pgf-bar {
  padding: 10px 12px 14px;
}
.ws .pgf {
  margin-top: 12px;
}
.bnav, .bottomnav {
  display: flex;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-bottomnav);
  height: calc(54px + env(safe-area-inset-bottom, 0px));
  padding: 0 4px env(safe-area-inset-bottom, 0px);
  background: var(--surface);
  border-top: 1px solid var(--border-1);
  overflow-x: auto;
  scrollbar-width: none;
}
.bnav::-webkit-scrollbar, .bottomnav::-webkit-scrollbar {
  display: none;
}
.bnav .tab, .bottomnav button {
  height: 54px;
  min-width: 0;
  flex: 1 1 0;
  padding: 4px 2px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  border: 0;
  background: transparent;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: var(--fw-medium);
  line-height: 1.2;
  position: relative;
}
.bnav .tab .ic, .bottomnav button .ic {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-3);
  background: none;
  -webkit-mask: none;
  mask: none;
}
.bnav .tab .ic svg, .bottomnav button .ic svg {
  width: 20px;
  height: 20px;
}
.bnav .tab[aria-selected=true], .bottomnav button[aria-selected=true] {
  color: var(--accent-ink);
}
.bnav .tab[aria-selected=true] .ic, .bottomnav button[aria-selected=true] .ic, .bnav .tab[aria-selected=true] .ic svg, .bottomnav button[aria-selected=true] .ic svg {
  color: var(--accent);
}
.bnav .tab[aria-selected=true]::before, .bottomnav button[aria-selected=true]::before {
  content: "";
  position: absolute;
  top: 0;
  left: 26%;
  right: 26%;
  height: 2px;
  border-radius: 0 0 2px 2px;
  background: var(--accent);
}
.bnav .tab.bn-hide, .bottomnav button.bn-hide {
  display: none;
}
.bnav .tab.bn-more, .bottomnav button.bn-more {
  display: flex;
}
}
@media (max-width: 640px) {
.ws .appbar-actions {
  gap: 0;
}
.ws .xbtn#colorModeBtn, .ws .xbtn#densityBtn, .ws .appmore {
  display: none;
}
.ws-agroup {
  padding: 0 4px;
}
.ws .live-pulse-text {
  display: none;
}
.ws .live-pulse-container {
  padding: 0 5px;
}
.chain-nodes-grid {
  grid-template-columns: 1fr;
}
}
@media (max-width: 420px) {
.ws .kpi-inner {
  grid-template-columns: 1fr 1fr;
}
.bnav .tab, .bottomnav button {
  min-width: 40px;
  padding-left: 2px;
  padding-right: 2px;
  font-size: 11px;
}
}
@media print {
.ws-sidebar, .appbar, .bnav, .bottomnav, .ws-scrim, .pgf {
  display: none !important;
}
.ws-main {
  margin-left: 0;
}
}

.ws-sidebar .tab::before, .ws-sidebar .pn::before, .bnav .tab::before, .bottomnav button::before {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  -webkit-mask: none !important;
  mask: none !important;
}
.ws-sidebar .tab, .ws-sidebar .pn, .bnav .tab, .bottomnav button {
  padding-left: 10px;
}
.ws-pulse {
  margin: 10px 10px 4px;
  padding: 8px 10px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ws-pulse-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  line-height: 1.2;
}
.ws-pulse-k {
  color: var(--ink-3);
  letter-spacing: .06em;
}
.ws-pulse-v {
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 70%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ws-pulse-v b {
  font-weight: var(--fw-semibold);
}
.ws-pulse-v .is-up, .ws-pulse-v.is-up, .ws-pulse-v b.is-up {
  color: var(--up);
}
.ws-pulse-v .is-down, .ws-pulse-v.is-down, .ws-pulse-v b.is-down {
  color: var(--down);
}
.ws-pulse-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--up);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--up) 22%, transparent);
  flex: none;
}

.tbl .rt-up, .tbl .rt-down, .tbl tr.rt-up, .tbl tr.rt-down, .tbl td.rt-up, .tbl td.rt-down, .tbl span.rt-up, .tbl span.rt-down, .card-item .rt-up, .card-item .rt-down {
  animation: none !important;
  background: transparent !important;
  background-color: transparent !important;
  border-radius: 0 !important;
}

.ws-sidebar .tablist {
  flex: 0 0 auto;
  overflow: visible;
}
.ws-sidebar {
  overflow-y: auto;
  scrollbar-width: thin;
}

.verdict {
  grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
  align-items: stretch;
  gap: 14px;
  padding: 14px 16px;
}
.verdict .headline {
  font-size: 26px;
  line-height: 1.2;
}
.verdict .vh-breadth {
  align-self: end;
  margin-top: 10px;
}
.verdict .evi {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  align-content: start;
}
.verdict .evi > * {
  min-height: 0;
  padding: 10px 12px;
}
.cond-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.cond-list li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  min-height: 30px;
  padding: 4px 10px;
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  font-size: 11.5px;
}
.idx {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.idx .it {
  min-width: 0;
  padding: 8px 10px;
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  border-left: 2px solid var(--border-2);
}
.idx .it.up {
  border-left-color: var(--up);
}
.idx .it.down {
  border-left-color: var(--down);
}

@media (max-width: 900px) {
.verdict {
  grid-template-columns: 1fr;
}
.cond-list {
  grid-template-columns: 1fr;
}
.idx {
  grid-template-columns: 1fr 1fr;
}
}

body[data-ws-page=home] .kpi-t:last-child {
  border-left: 1px solid var(--border-1);
}
body[data-ws-page=home] .grid-cards .card-item {
  min-height: 84px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
body[data-ws-page=ratio] .ratio-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 148px;
  padding: 12px 14px;
}
body[data-ws-page=ratio] .ratio-card.is-active, body[data-ws-page=ratio] .ratio-card[aria-pressed=true] {
  border: 1px solid var(--accent-line);
  box-shadow: inset 3px 0 0 var(--accent);
  outline: none;
}
body[data-ws-page=ratio] .ratio-card-footer {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  color: var(--ink-4);
}

.verdict .evi {
  display: grid;
  grid-template-columns: 1fr 1fr !important;
  gap: 8px !important;
  align-content: start;
  align-self: start;
}
.verdict .evi > * {
  min-height: 0;
  padding: 10px 12px;
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  border: 1px solid var(--border-1);
}
.verdict .evi .evi-grade {
  grid-column: 1 / -1;
}
.verdict .vh-breadth {
  align-self: start;
  margin-top: 8px;
}
.verdict {
  align-items: start;
}

.ws-load-rows {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 2px 0;
}
.ws-load-rows .bar {
  height: 10px;
  border-radius: var(--r-1);
}
.ws-load-rows .bar:nth-child(2) {
  width: 82%;
}
.ws-load-rows .bar:nth-child(3) {
  width: 64%;
}
.ws-load-cap {
  margin: 8px 0 2px;
  font-size: 11px;
  color: var(--ink-4);
}
.ws .blk, .ws .card {
  margin-bottom: 8px;
}
.ws .wrap, .ws .page-main {
  padding: 14px 18px 24px;
}
.ws-pagehead {
  margin-bottom: 10px;
}

.chain-page .pan-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.chain-page .pan-header .chips {
  flex-basis: 100%;
  justify-content: flex-start;
  margin: 2px 0 0;
}
.chain-page .pan-kpi-grid {
  gap: 8px;
  margin: 8px 0;
}
.chain-flow-tree > * + * {
  margin-top: 8px;
}

.ws-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  min-height: 38px;
  padding: 6px 12px;
  border-top: 1px solid var(--border-1);
  background: var(--surface);
  font-size: 11.5px;
  color: var(--ink-3);
}
.ws-pager button, .ws-pager a {
  min-height: 26px;
  padding: 0 10px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  color: var(--ink-2);
  font-size: 11.5px;
}
.ws-pager button:hover, .ws-pager a:hover {
  background: var(--surface-hover);
  color: var(--ink-1);
}
.tw > table, .tbl-scroll > table, .ws-table-scroll > table {
  width: 100%;
}

.verdict .cond, .card > .bd > .cond, .cond {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
}
.cond-list li {
  border-left: 2px solid var(--ink-4);
}
.cond-list li.is-approach, .cond-list li[data-s=approach] {
  border-left-color: var(--warn);
}
.cond-list li.is-triggered, .cond-list li[data-s=triggered] {
  border-left-color: var(--warn-ink);
}
.ratio-card.active, .ratio-card.is-active, .ratio-card[aria-pressed=true] {
  border: 1px solid var(--accent-line) !important;
  box-shadow: inset 3px 0 0 var(--accent) !important;
  outline: none !important;
}
.heat {
  gap: 4px 6px;
  align-items: center;
}
.heat .heat-h {
  font-size: 11px;
  color: var(--ink-3);
  text-align: center;
  white-space: nowrap;
}
.heat .heat-c {
  width: 100%;
  min-width: 0;
  height: 30px;
  font-size: 11px;
  border-radius: var(--r-0);
}
.heat-wrap {
  overflow-x: auto;
}
.ratio-card-footer {
  flex-wrap: nowrap;
  min-width: 0;
}
.ratio-card-footer > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ratio-card-footer > .hint {
  flex: none;
  white-space: nowrap;
}

.ws-stub-note {
  color: var(--warn-ink) !important;
  background: var(--warn-tint);
  border-radius: var(--r-0);
  padding: 1px 6px;
}
.ws-stub-banner {
  display: block;
  margin: 8px 0;
  padding: 8px 12px;
  border-left: 2px solid var(--warn);
  font-size: 11.5px;
  line-height: 1.6;
}
.ws-export, #wsExport, .export-afloat, .export-bar {
  display: none !important;
}

@media (min-width: 901px) and (max-width: 1280px) {
.ws .kpi-inner {
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}
.ws .kpi-t:last-child {
  grid-column: auto !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 0 !important;
  background: var(--surface) !important;
  border-left: 1px solid var(--border-1);
}
.ws .grid-cards {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+1) {
  grid-column: span 4;
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+2) {
  grid-column: span 3;
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+3) {
  grid-column: span 2;
}
}
@media (min-width: 641px) and (max-width: 900px) {
.ws .kpi-inner {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
.ws .kpi-t:last-child {
  grid-column: 1 / -1 !important;
}
}

.ws .xbtn .cm-label, .ws .cm-label {
  display: none !important;
}
.ws .grid-cards > .card-item:last-child:nth-child(4n+1), .ws .grid-cards > .card-item:last-child:nth-child(4n+2), .ws .grid-cards > .card-item:last-child:nth-child(4n+3), .ws .grid-cards > .card-item:last-child:nth-child(3n+1), .ws .grid-cards > .card-item:last-child:nth-child(3n+2), .ws .grid-cards > .card-item:last-child:nth-child(2n+1) {
  grid-column: auto !important;
}

.cond-row.void, .cond-row[data-s=void], .cond-list li.void, [class*=cond][class*=void] {
  background-image: none !important;
  background-color: var(--surface-sunken) !important;
}

.ws .kpi-t:last-child {
  min-height: 72px !important;
}
.ws .kpi-t:last-child b {
  font-size: 14px !important;
  line-height: 18px !important;
  white-space: nowrap;
}
.ws .kpi-t:last-child > span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.xpair-blk .xpair-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 10px 12px 12px;
}
.xpair-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px;
  border: 1px solid var(--border-1);
  border-radius: var(--r-1);
  background: var(--surface-sunken);
  min-width: 0;
}
.xpair-h {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  color: var(--ink-2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.xpair-h b {
  color: var(--ink-1);
  font-weight: var(--fw-semibold);
}
.xpair-z {
  margin-left: auto;
  padding: 1px 6px;
  border-radius: var(--r-full);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  background: var(--surface-hover);
  color: var(--ink-2);
  flex: none;
}
.xpair-z.is-hi {
  background: var(--up-tint);
  color: var(--up-ink);
}
.xpair-z.is-lo {
  background: var(--down-tint);
  color: var(--down-ink);
}
.xpair-canvas {
  display: block;
  width: 100%;
  height: 96px;
}
.xpair-meta {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  color: var(--ink-4);
  font-variant-numeric: tabular-nums;
}

@media (max-width: 1200px) {
.xpair-blk .xpair-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 700px) {
.xpair-blk .xpair-grid {
  grid-template-columns: 1fr;
}
}

.verdict .cond {
  padding: 10px 12px 12px !important;
}
.cond-list {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 8px !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
.cond-row {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto auto auto;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 8px 10px 8px 12px !important;
  border: 1px solid var(--border-1) !important;
  border-left: 3px solid var(--ink-4) !important;
  border-radius: var(--r-1) !important;
  background: var(--surface-sunken) !important;
}
.cond-row .ic, .cond-row .cbar {
  display: none !important;
}
.cond-row .pred {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--fs-xs);
  color: var(--ink-1);
}
.cond-row .st {
  flex: none;
  padding: 1px 7px;
  border-radius: var(--r-full);
  background: var(--surface-hover);
  color: var(--ink-3);
  font-size: 11px;
  line-height: 16px;
  white-space: nowrap;
}
.cond-row .cur {
  font-variant-numeric: tabular-nums;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--ink-0);
  white-space: nowrap;
}
.cond-row .gap {
  font-variant-numeric: tabular-nums;
  font-size: 11px;
  color: var(--ink-4);
  white-space: nowrap;
}
.cond-row.approach {
  border-left-color: var(--warn) !important;
}
.cond-row.approach .st {
  background: var(--warn-tint);
  color: var(--warn-ink);
}
.cond-row.triggered {
  border-left-color: var(--up) !important;
  background: color-mix(in srgb, var(--up-tint) 55%, var(--surface-sunken)) !important;
}
.cond-row.triggered .st {
  background: var(--up-tint);
  color: var(--up-ink);
}
.cond-row.void {
  border-left-style: dashed !important;
  border-left-color: var(--border-2) !important;
  opacity: .82;
}

@media (max-width: 760px) {
.cond-list {
  grid-template-columns: 1fr;
}
}

.cond-list {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}
.cond-row {
  display: flex !important;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 6px;
  min-height: 74px;
  padding: 10px 12px !important;
  position: relative;
}
.cond-row .pred {
  flex: 0 0 100%;
  padding-right: 54px;
  font-size: 11px;
  color: var(--ink-2);
  line-height: 1.4;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.cond-row .st {
  position: absolute;
  top: 8px;
  right: 8px;
}
.cond-row .cur {
  order: 3;
  font-size: 19px;
  line-height: 1.15;
}
.cond-row .gap {
  order: 4;
  align-self: center;
}

@media (max-width: 1280px) {
.cond-list {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
}
@media (max-width: 700px) {
.cond-list {
  grid-template-columns: 1fr !important;
}
}

.cond-row .st {
  display: inline-block !important;
}
.ratio-card-footer {
  align-items: flex-start;
}
.ratio-card-footer > span:first-child {
  white-space: normal !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-height: 1.4;
}
.kpi-t > span {
  white-space: normal !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-height: 1.35;
}

.ws .kpi-t:last-child > span {
  display: block !important;
  -webkit-line-clamp: initial;
  white-space: nowrap !important;
}

.card:has(> .bd > .grid.g4 > .kpi.tap) .bd {
  padding: 9px 12px !important;
}
.card:has(> .bd > .grid.g4 > .kpi.tap) .grid.g4 {
  display: flex !important;
  align-items: baseline;
  gap: 14px;
  grid-template-columns: none !important;
}
.card:has(> .bd > .grid.g4 > .kpi.tap) .kpi.tap {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  min-height: 0 !important;
}
.card:has(> .bd > .grid.g4 > .kpi.tap) .kpi.tap .k {
  font-size: 11.5px;
  color: var(--ink-3);
  white-space: nowrap;
}
.card:has(> .bd > .grid.g4 > .kpi.tap) .kpi.tap .v {
  font-size: 24px;
  line-height: 1;
  letter-spacing: -.02em;
}
.card:has(> .bd > .grid.g4 > .kpi.tap) .kpi.tap .kk {
  font-size: 11px;
  color: var(--ink-4);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 46ch;
}
table th.th-right, .tbl th.th-right {
  text-align: right !important;
}

@media (max-width: 640px) {
table.tbl td[data-pr], table.tbl th[data-pr] {
  display: table-cell;
}
table.tbl.tbl-ratio td[data-pr="4"], table.tbl.tbl-ratio th[data-pr="4"], table.tbl.tbl-ratio td[data-pr="5"], table.tbl.tbl-ratio th[data-pr="5"] {
  display: table-cell;
}
.tbl-scroll > table.tbl, .ws-table-scroll > table.tbl {
  min-width: 620px;
}
.tbl-scroll > table.tbl.tbl-ratio, .ws-table-scroll > table.tbl.tbl-ratio {
  min-width: 760px;
}
.tbl td.num, .tbl th.num {
  white-space: nowrap;
}
.tbl td, .tbl th {
  white-space: nowrap;
}
.tbl-scroll > table.tbl > thead > tr > th:first-child, .ws-table-scroll > table.tbl > thead > tr > th:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface-sunken);
  box-shadow: inset -1px 0 0 var(--border-1);
}
.tbl-scroll > table.tbl > tbody > tr > td:first-child, .ws-table-scroll > table.tbl > tbody > tr > td:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: var(--surface);
  box-shadow: inset -1px 0 0 var(--border-1);
}
}

.ws-demo-banner {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 10px;
  padding: 9px 12px;
  border: 1px solid var(--warn);
  border-left-width: 3px;
  border-radius: var(--r-1);
  background: var(--warn-tint);
  color: var(--warn-ink);
  font-size: var(--fs-xs);
  line-height: 1.55;
}
.ws-demo-banner b {
  flex: none;
  font-weight: var(--fw-semibold);
  letter-spacing: .02em;
}
.ws-demo-banner span {
  min-width: 0;
}

@media (max-width: 640px) {
.ws-demo-banner {
  flex-direction: column;
  gap: 2px;
  padding: 8px 10px;
}
}

#app [style*="font-size:10px"], #view [style*="font-size:10px"], #app [style*="font-size: 10px"], #view [style*="font-size: 10px"], #app [style*="font-size:9.5px"], #view [style*="font-size:9.5px"] {
  font-size: 11px !important;
}
#view span.hint[style*="--border-2"] {
  color: var(--ink-4) !important;
}
#view span.hint[style*="--border-2"], #app span.hint[style*="--border-2"] {
  color: var(--ink-4) !important;
}
.tbl tbody tr[data-kb="1"]:focus-visible {
  outline: 2px solid var(--focus-color, var(--accent));
  outline-offset: -2px;
}
.tbl tbody tr[data-kb="1"] {
  cursor: pointer;
}

.ws-search-empty {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  margin: 12px 0 0;
  padding: 16px;
  border: 1px dashed var(--border-2);
  border-radius: var(--r-2, 8px);
  background: var(--surface-sunken);
}
.ws-search-empty p {
  margin: 0;
  color: var(--ink-1);
  font-size: var(--fs-sm);
}
.ws-search-empty-hint {
  color: var(--ink-3) !important;
  font-size: var(--fs-xs) !important;
}
.ws-search-empty .btn.xs {
  margin-top: 4px;
}

.tbl {
  table-layout: fixed;
}
.tbl td, .tbl th {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (min-width: 641px) {
table.tbl td:first-child, table.tbl th:first-child, .ws table.tbl td:first-child, .ws table.tbl th:first-child {
  position: static;
  box-shadow: none;
}
}

.tbl td.num, .tbl th.num, .tbl .q-price, .tbl .q-chg {
  border-radius: 0 !important;
}
.tbl > colgroup > col:first-child {
  min-width: 96px;
}


/* ============================================================================
   V14 · 视觉与可用性改进（2026-11-04）
   ----------------------------------------------------------------------------
   三条依据都来自线上真机实测，不是审美偏好：

   1) 可点击目标 < 24px（WCAG 2.5.8 建议下限）
      实测：grp-toggle 22×22、股票站 card-fold-btn 48×22、页脚链接高 17px。
      用「外扩热区」而不是放大图标：图标视觉尺寸不变，只把 padding 撑到 24，
      并对负 margin 做补偿，避免撑开布局。
   2) 首屏同一句「数据日期 … 生成于 …」出现 3 次（页头右 / KPI 第 5 格 / 页脚）。
      页头那句与 KPI 格完全重复 —— 隐藏页头那句，信息不丢（KPI 与页脚仍有）。
   3) 页脚链接行高过小，点不中；同时缺少 hover 反馈。
   ========================================================================== */

/* ---- 1. 可点击目标：视觉不变，热区补到 24×24 ---- */

/* 分组折叠按钮（首页/品种页的板块标题右侧） */
.grp-toggle {
  position: relative;
  min-width: 24px;
  min-height: 24px;
}

/* 分组折叠按钮的点击热区向外扩，不改变图标位置 */
.grp-toggle::after {
  content: "";
  position: absolute;
  inset: -1px;
  /* 只扩热区，不参与渲染 */
  pointer-events: auto;
}

/* 股票站的卡片折叠按钮（「收起 ▾」） */
.card-fold-btn {
  min-height: 24px;
  padding-top: 2px;
  padding-bottom: 2px;
}

/* 页脚与功能性链接：补垂直内边距，让热区达到 24 */
.pgf a,
.pgf-bar a {
  display: inline-block;
  /* 13px 文本 + 上下各 4px = 24px 热区（实测 23 差 1px，补到 4px） */
  padding: 4px 2px;
  min-height: 24px;
  /* 「支持」这类两字链接宽度只有 22px，补到 24 */
  min-width: 24px;
  line-height: 1.55;
}

/* 侧栏与底栏的图标按钮（28px 已达标，这里只统一最小尺寸，防回退） */
.ws .xbtn {
  min-width: 28px;
  min-height: 28px;
}

/* ---- 2. 信息去重：隐藏页头右侧与 KPI 完全重复的数据日期 ---- */

/* 页头右上角的 #wsDataStatus 与页脚 #fresh 文本完全相同（实测都是
   「数据日期 2026-11-03 · 生成于 11-03 19:28」），而 KPI 第 5 格又单独
   显示了「数据日期 / 2026-11-03 / 生成于 …」三段。三处重复。
   保留 KPI（信息最完整）+ 页脚（随页面到底可见），隐藏页头这一条。 */
#wsDataStatus.ws-data-status {
  display: none;
}

/* ---- 3. 页脚链接可见反馈 ---- */

.pgf a:hover,
.pgf-bar a:hover {
  color: var(--accent);
  text-decoration: underline;
}

/* ---- 4. 表格内的按钮与徽标：保证热区 ---- */

.chip,
.ws .chip {
  min-height: 24px;
}

/* 6) 移动端底部导航：命中区本来就大，只保证不被压扁 */
@media (max-width: 640px) {
  .bnav .tab,
  .bottomnav button {
    min-height: 44px;
  }
}

/* ============================================================================
   维护约定（新增样式前请读）
   ----------------------------------------------------------------------------
   1. 同一选择器同一属性只写一次。要改就改原处，不要在文件末尾追加补丁段。
      历史教训：九层补丁里 114 组属性被写了不同值，最后没人敢删。
   2. 特异性上限 30（约 3 个类）。超过说明选择器在替结构擦屁股，
      应该加语义类或改结构。
   3. !important 只允许两种用途：压过业务 bundle 的内联样式（bundle 改不动）、
      以及 .sr-only 这类必须赢的工具类。其余一律不加。
   4. 颜色/间距/字号/圆角一律走 tokens.css 的令牌，不写裸值。
      圆角只允许 --r-0 / --r-1 / --r-2 / --r-3 / --r-full 五档。
   5. 改完必须跑：
        python3 audit/verify-css-equivalence.py     # 静态等价（改动前先备份）
        node audit/live/live-regression.cjs         # 真机对比度/字号/溢出
   ========================================================================== */


/* tokens (last so they win) */
/* ============================================================================
   盘鉴 · 统一设计令牌 —— V5「深色终端精修」
   深色为基座；浅色为可选覆盖。所有旧变量名保持不变，只改取值，
   避免 app.js / astock 业务脚本里对 CSS 变量的硬依赖失效。

   V5 三条原则：
   1) 一屏一主角：首屏只允许一个视觉主角，其余降级。
   2) 密度即专业：行高 30px、正文 12.5px、tabular-nums，取消宽字距等宽。
   3) 色彩纪律：仅 accent（交互）/ up·down（数据方向）/ ai（AI 列）三类发声色，
      其余全部中性灰阶；涨跌色降饱和去霓虹感。
   ========================================================================== */
:root,
:root[data-theme=dark] {
  color-scheme: dark;

  /* 底色与面：四级面阶，层级靠「面阶 + 1px 边」表达，不靠阴影 */
  --bg-sunken: #07080A;
  --bg: #0A0C0F;
  --surface: #101317;
  --surface-elevated: #151920;
  --surface-hover: #1A1F26;
  --surface-sunken: #14181D;

  /* 文字：四级灰阶，四级全部 ≥ 4.5:1（2026-11-04 修：ink-4 原 #6E7784
     在 surface #101317 上仅 3.93:1，单位/脚注/图例全不达标，上调到 #7C8694 = 4.83:1） */
  --ink-0: #F7F8FA;
  --ink-1: #E8EAEE;
  --ink-2: #A8B0BC;
  --ink-3: #8B94A1;
  --ink-4: #7C8694;

  /* 线 */
  --border-1: rgba(255, 255, 255, .06);
  --border-2: rgba(255, 255, 255, .11);
  --grid-line: rgba(255, 255, 255, .045);
  --axis-line: rgba(255, 255, 255, .12);

  /* 量化刻度 */
  --quant-track: #2E3238;
  --quant-mid: #4E545E;
  --quant-marker: #E8EAEE;

  /* 涨跌：全站固定「红涨绿跌」，不再提供其它色彩模式。
     深色值原为 #E5484D / #2FA36B：红在 #0E0F11 上只有 4.9:1，勉强及格，
     且与浅色原值（#B42323/#087443）相差过大，切换主题时观感跳变。
     统一为 #F0736A(6.73:1) / #45C98A(9.11:1)。 */
  --up: #F0736A;
  --up-tint: rgba(240, 115, 106, .14);
  --up-ink: #FF9E9E;
  --down: #45C98A;
  --down-tint: rgba(69, 201, 138, .14);
  --down-ink: #7ADCA8;
  --flat: #8A909B;

  /* 语义色 */
  --warn: #E3920A;
  --warn-tint: rgba(227, 146, 10, .12);
  --warn-ink: #F2BC60;
  --info: #4C8DFF;
  --info-tint: rgba(76, 141, 255, .13);
  --info-ink: #9DBEFF;
  --ok: #2FA36B;
  --ok-tint: rgba(47, 163, 107, .12);
  --ok-ink: #7ADCA8;

  /* 品牌 / 交互主色：仅用于交互与品牌时刻 */
  --accent: #FF5A1F;
  --accent-hover: #FF7A45;
  --accent-tint: rgba(255, 90, 31, .12);
  --accent-ink: #FFA37A;
  --accent-line: rgba(255, 90, 31, .30);
  --on-accent: #0A0C0F;

  /* AI 语义色：与涨跌方向解耦 */
  --ai: #8B5CF6;
  --ai-tint: rgba(139, 92, 246, .13);
  --ai-ink: #B4A3FF;

  /* 图表序列 */
  --viz-1: #FF6B35;
  --viz-2: #4C8DFF;
  --viz-3: #2FA36B;
  --viz-4: #8B5CF6;
  --viz-5: #E3920A;
  --viz-6: #22B8CF;
  --viz-7: #E85D75;

  /* 热力（橙红温度阶） */
  --heat-0: #241511;
  --heat-1: #432115;
  --heat-2: #6E2F18;
  --heat-3: #B4441C;
  --heat-4: #FF5A1F;
  --heat-0-fg: #E8EAEE;
  --heat-1-fg: #F3D9CE;
  --heat-2-fg: #FBE6DD;
  --heat-3-fg: #FFFFFF;
  --heat-4-fg: #141417;

  /* 字体：正文系统无衬线 + tabular-nums；仅 KPI 大数字用等宽 */
  --font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", system-ui, sans-serif;
  --font-num: SFMono-Regular, "JetBrains Mono", Consolas, ui-monospace, Menlo, monospace;
  --font-mono: var(--font-num);

  /* 字号 / 字重：V5 正文 12.5，表格 12.5，标签 10.5 */
  --fs-3xs: 11px;
  --fs-2xs: 11px;
  --fs-xs: 11.5px;
  --fs-sm: 12.5px;
  --fs-md: 13.5px;
  --fs-lg: 15px;
  --fs-xl: 19px;
  --fs-2xl: 24px;
  --fs-3xl: 30px;
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;
  --lh-tight: 1.25;
  --lh-snug: 1.42;
  --lh-body: 1.55;
  --lh-loose: 1.7;

  /* 间距 */
  --sp-1: 4px;
  --sp-2: 6px;
  --sp-3: 8px;
  --sp-4: 10px;
  --sp-5: 12px;
  --sp-6: 16px;
  --sp-7: 20px;
  --sp-8: 24px;
  --sp-9: 28px;
  --sp-10: 36px;
  --sp-half: 2px;
  --sp-2h: 7px;
  --sp-3h: 9px;

  /* 圆角：面板 10 / 控件 7 / 小标签 4 */
  --r-0: 3px;
  --r-1: 5px;
  --r-2: 8px;
  --r-3: 10px;
  --r-full: 999px;
  --rad: var(--r-2);

  /* 阴影：极克制，仅浮层用 */
  --sh-1: 0 1px 2px rgba(0, 0, 0, .28);
  --sh-2: 0 6px 18px -8px rgba(0, 0, 0, .55);
  --sh-3: 0 18px 48px -12px rgba(0, 0, 0, .72);
  --shadow-1: var(--sh-1);
  --shadow-2: var(--sh-2);
  --shadow-3: var(--sh-3);
  --shadow-up: 0 -1px 3px rgba(0, 0, 0, .4);

  /* 别名（旧代码直接引用） */
  --text-1: var(--ink-1);
  --text-2: var(--ink-2);
  --text-3: var(--ink-3);
  --text-dim: var(--ink-3);
  --text-primary: var(--ink-1);
  --surface-2: var(--surface-sunken);
  --bg-card: var(--surface);
  --border: var(--border-1);
  --grade-on: var(--accent);
  --grade-off: var(--border-2);
  --evi-neutral-bg: var(--bg-sunken);
  --evi-alert-bg: var(--warn-tint);
  --evi-alert-ink: var(--warn-ink);
  --cond-idle: var(--ink-3);
  --cond-approach: var(--warn);
  --cond-triggered: var(--warn-ink);
  --cond-void: var(--ink-4);
  --acc-key: var(--accent-ink);
  --fs-lead: 28px;
  --fs-lead-r: var(--fs-lead);
  --fs-num-main: var(--fs-lg);
  --fs-num-big: var(--fs-xl);

  /* 布局：V5 侧栏 232 / 窄屏图标轨 64 / 行高 30 */
  --row-h: 30px;
  --row-h-list: 40px;
  --row-h-tbl: 30px;
  --row-h-cond: 30px;
  --cell-pad-x: 12px;
  --cell-pad-y: 5px;
  --card-pad: 12px;
  --sec-gap: 10px;
  --max-w: 1680px;
  --pad-page-x: 24px;
  --appbar-h: 46px;
  --ws-sidebar-w: 232px;

  /* V5 新增令牌 */
  --rail-w: 64px;
  --panel-head-h: 36px;
  --tbl-head-h: 30px;
  --group-row-h: 30px;
  --btn-h: 28px;
  --chip-h: 26px;
  --empty-h: 96px;
  --hero-num: 30px;
  --gap-grid: 10px;
  --skel-base: var(--surface-sunken);
  --skel-sheen: rgba(255, 255, 255, .05);

  /* 动效 */
  --dur-1: 120ms;
  --dur-2: 160ms;
  --dur-3: 240ms;
  --dur-flash: 700ms;
  --dur-skel: 1.25s;
  --ease-std: cubic-bezier(.25, .1, .25, 1);
  --ease-out: cubic-bezier(.2, .7, .3, 1);
  --ease-in: cubic-bezier(.4, 0, 1, 1);
  --ease-flash: ease-out;

  /* 聚焦与层级 */
  --focus-width: 2px;
  --focus-offset: 2px;
  --focus-color: var(--accent);
  --z-tblhead: 2;
  --z-pill: 6;
  --z-raised: 10;
  --z-sticky: 100;
  --z-bottomnav: 120;
  --z-dropdown: 200;
  --z-modal: 300;
  --z-top: 400;
  --z-skiplink: 500;

  /* 图标 */
  --icon-sm: 14px;
  --icon-md: 16px;
  --icon-lg: 18px;
  --bw-1: 1px;
  --ls-tight: -.01em;
  --lh-num: 1.05;
}

/* 密度：V5 标准 30 / 紧凑 26 / 舒适 38 */
:root[data-density=compact] {
  --row-h: 26px;
  --row-h-tbl: 26px;
  --cell-pad-y: 3px;
  --cell-pad-x: 10px;
}
:root[data-density=standard] {
  --row-h: 30px;
  --row-h-tbl: 30px;
  --cell-pad-y: 5px;
  --cell-pad-x: 12px;
}
:root[data-density=comfortable] {
  --row-h: 38px;
  --row-h-tbl: 38px;
  --cell-pad-y: 9px;
  --cell-pad-x: 14px;
}

/* 显式浅色：V5 对比度真修（正文 ≥ 4.5:1） */
:root[data-theme=light] {
  color-scheme: light;
  --bg-sunken: #ECEEF1;
  --bg: #F5F6F8;
  --surface: #FFFFFF;
  --surface-elevated: #FFFFFF;
  --surface-hover: #F2F4F6;
  --surface-sunken: #F6F7F9;

  /* 浅色文字阶：四级全部 ≥ 4.5:1（白 / #F6F7F9 / #F5F6F8 / #ECEEF1 四种面都已验算）
     ink-4 原 #94A3B8 在白底只有 2.56:1 —— 单位、脚注、图例、副标题全用它，实测 249 处不达标。 */
  --ink-0: #0B0C0E;
  --ink-1: #16181B;
  --ink-2: #4B5563;
  --ink-3: #4E5967;
  --ink-4: #5F6979;

  --border-1: rgba(15, 23, 42, .10);
  --border-2: rgba(15, 23, 42, .16);
  --grid-line: rgba(15, 23, 42, .06);
  --axis-line: rgba(15, 23, 42, .16);

  --quant-track: #E2E4E8;
  --quant-mid: #C2C6CD;
  --quant-marker: #18181B;

  --up: #B42323;
  --up-tint: #FCEAEA;
  --up-ink: #8F1B1B;
  --down: #087443;
  --down-tint: #E5F4EC;
  --down-ink: #065C36;
  --flat: #5F6979;

  --warn: #8A5A06;
  --warn-tint: #FCF3E1;
  --warn-ink: #6F4905;
  --info: #1A5FD0;
  --info-tint: #E9F1FE;
  --info-ink: #14509F;
  --ok: #08744A;
  --ok-tint: #E2F2EA;
  --ok-ink: #065C3B;

  --accent: #B93A08;
  --accent-hover: #96300A;
  --accent-tint: #FCEEE7;
  --accent-ink: #8A2C06;
  --accent-line: #F0CDBB;
  --on-accent: #FFFFFF;

  /* AI 语义色：浅色缺这组会继承深色的 #B4A3FF —— 白底上只有 2.18:1，
     AI 方向分整列不可读（2026-11-04 实测）。改深紫 #6D28D9 = 7.1:1。 */
  --ai: #6D28D9;
  --ai-tint: #F1EAFE;
  --ai-ink: #6D28D9;

  --viz-1: #B93A08;
  --viz-2: #1A5FD0;
  --viz-3: #087443;
  --viz-4: #6D4AC7;
  --viz-5: #8A5A06;
  --viz-6: #0A7276;
  --viz-7: #B83B55;

  --heat-0: #FFF3EC;
  --heat-1: #FDDCCC;
  --heat-2: #F9B694;
  --heat-3: #F27C4A;
  --heat-4: #B93A08;
  --heat-0-fg: #18181B;
  --heat-1-fg: #18181B;
  --heat-2-fg: #18181B;
  --heat-3-fg: #FFFFFF;
  --heat-4-fg: #FFFFFF;

  --skel-base: var(--surface-sunken);
  --skel-sheen: rgba(15, 23, 42, .05);

  --sh-1: 0 1px 2px rgba(24, 24, 27, .05);
  --sh-2: 0 6px 18px -8px rgba(24, 24, 27, .16);
  --sh-3: 0 18px 48px -12px rgba(24, 24, 27, .22);
  --shadow-1: var(--sh-1);
  --shadow-2: var(--sh-2);
  --shadow-3: var(--sh-3);
  --shadow-up: 0 -1px 3px rgba(24, 24, 27, .05);
}
