/* StockDesk terminal - charcoal matte, one warm accent, one screen on desktop */
:root{
  --bg:#111214; --card:#17181b; --raised:#1e2024; --hover:#23262b;
  --line:rgba(255,255,255,.07); --line-strong:rgba(255,255,255,.13);
  --ink:#eceae6; --ink-2:#b4b1ab; --ink-3:#7c7973;
  --accent:#d1a04a; --accent-ink:#1a1408; --accent-soft:rgba(209,160,74,.12);
  --up:#3fb67a; --down:#e0564d; --up-soft:rgba(63,182,122,.12); --down-soft:rgba(224,86,77,.12);
  --flag:#e3b341; --flag-soft:rgba(227,179,65,.12);
  --r-card:12px; --r-in:8px; --r-chip:6px;
  --sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"Geist Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  --gap:10px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:13.5px/1.45 var(--sans);-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility}
/* matte grain: breaks the digital flatness without adding colour */
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
a{color:inherit;text-decoration:none}
a.lk{color:var(--ink);border-bottom:1px solid transparent;transition:color .15s,border-color .15s}
a.lk:hover{color:var(--accent);border-bottom-color:rgba(209,160,74,.4)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.up{color:var(--up)} .down{color:var(--down)} .dim{color:var(--ink-3)} .ink2{color:var(--ink-2)}

/* ---------- app shell: exactly one screen on desktop ---------- */
.app{position:relative;z-index:2;height:100dvh;display:flex;flex-direction:column;padding:0 var(--gap) var(--gap);gap:var(--gap)}
.top{flex:0 0 auto;display:flex;align-items:center;gap:18px;height:52px;border-bottom:1px solid var(--line);margin:0 calc(var(--gap)*-1);padding:0 16px}
.brand{font-weight:700;font-size:16px;letter-spacing:-.02em;white-space:nowrap}
.brand b{color:var(--accent);font-weight:700}
.searchbtn{flex:0 1 420px;display:flex;align-items:center;gap:10px;height:34px;padding:0 10px 0 12px;border:1px solid var(--line-strong);
  border-radius:var(--r-in);background:var(--card);color:var(--ink-3);cursor:text;font:inherit;transition:border-color .15s,background .15s}
.searchbtn:hover{border-color:rgba(209,160,74,.45);background:var(--raised)}
.searchbtn span{flex:1;text-align:left}
kbd{font:500 11px var(--mono);color:var(--ink-2);background:var(--raised);border:1px solid var(--line-strong);border-radius:4px;padding:1px 6px}
.nav{display:flex;gap:2px;margin-left:auto;overflow-x:auto;scrollbar-width:none}
.nav a{padding:7px 12px;border-radius:var(--r-in);color:var(--ink-2);font-weight:500;white-space:nowrap;transition:background .15s,color .15s}
.nav a:hover{background:var(--raised);color:var(--ink)}
.nav a.on{background:var(--accent-soft);color:var(--accent)}

.strip{flex:0 0 auto;display:flex;align-items:center;gap:22px;min-height:58px;padding:8px 16px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-card);overflow-x:auto;scrollbar-width:none}
.strip .id h1{margin:0;font-size:19px;line-height:1.15;letter-spacing:-.02em;font-weight:650;white-space:nowrap;max-width:34vw;overflow:hidden;text-overflow:ellipsis}
.strip .id .sub{font-size:12px;color:var(--ink-3);white-space:nowrap}
.strip .px{font:600 22px var(--mono);letter-spacing:-.02em;white-space:nowrap}
.strip .chg{font:500 13px var(--mono);padding:2px 7px;border-radius:var(--r-chip)}
.chg.up{background:var(--up-soft)} .chg.down{background:var(--down-soft)}
.kv{display:flex;flex-direction:column;gap:1px;white-space:nowrap}
.kv .k{font-size:11px;color:var(--ink-3)} .kv .v{font:500 13.5px var(--mono);color:var(--ink)}
.chips{display:flex;gap:6px;flex-wrap:nowrap;margin-left:auto}
.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--r-chip);font-size:11.5px;font-weight:500;
  background:var(--raised);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}
.chip.flag{background:var(--flag-soft);color:var(--flag);border-color:rgba(227,179,65,.25)}
.chip.acc{background:var(--accent-soft);color:var(--accent);border-color:rgba(209,160,74,.25)}

/* ---------- grid of columns; each column stacks cards that share its height ---------- */
.grid{flex:1 1 auto;min-height:0;display:flex;gap:var(--gap)}
.col{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;gap:var(--gap)}
.col.w2{flex-grow:1.9} .col.w15{flex-grow:1.45}
.card{position:relative;flex:1 1 0;min-height:0;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-card);overflow:hidden;transition:border-color .2s,flex-grow .25s}
.card.g2{flex-grow:2} .card.g15{flex-grow:1.5} .card.g07{flex-grow:.7} .card.g05{flex-grow:.5}
.card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(209,160,74,.07),transparent 45%)}
.card:hover{border-color:var(--line-strong)} .card:hover::after{opacity:1}
.card.collapsed{flex:0 0 auto!important}
.card.collapsed .cb{display:none}
.ch{flex:0 0 auto;display:flex;align-items:center;gap:10px;min-height:42px;padding:0 8px 0 14px;border-bottom:1px solid var(--line)}
.card.collapsed .ch{border-bottom:0}
.ch h2{margin:0;font-size:13px;font-weight:600;letter-spacing:-.005em;white-space:nowrap}
.ch .note{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch .sp{flex:1}
.cb{flex:1 1 auto;min-height:0;overflow:auto;position:relative;z-index:2}
.cb.pad{padding:12px 14px}
.tog{flex:0 0 auto;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:var(--r-chip);background:transparent;color:var(--ink-3);
  cursor:pointer;transition:background .15s,color .15s,transform .15s}
.tog:hover{background:var(--raised);color:var(--ink)} .tog:active{transform:scale(.94)}
.tog svg{transition:transform .2s} .card.collapsed .tog svg{transform:rotate(-90deg)}

/* tabs / segmented buttons */
.seg{display:inline-flex;gap:2px;padding:2px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-in);overflow-x:auto;scrollbar-width:none;max-width:100%}
.seg button{border:0;background:transparent;color:var(--ink-2);font:500 12px var(--sans);padding:5px 10px;border-radius:6px;cursor:pointer;white-space:nowrap;
  transition:background .15s,color .15s,transform .1s}
.seg button:hover{color:var(--ink);background:var(--raised)}
.seg button:active{transform:scale(.97)}
.seg button.on{background:var(--raised);color:var(--accent);box-shadow:inset 0 0 0 1px rgba(209,160,74,.3)}
.seg a{color:var(--ink-2);font:500 12px var(--sans);padding:5px 10px;border-radius:6px;white-space:nowrap;transition:background .15s,color .15s}
.seg a:hover{color:var(--ink);background:var(--raised)}
.seg a.on{background:var(--raised);color:var(--accent);box-shadow:inset 0 0 0 1px rgba(209,160,74,.3)}
.pane{display:none;height:100%} .pane.on{display:block}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;height:30px;padding:0 12px;
  border:1px solid var(--line-strong);border-radius:var(--r-in);background:var(--raised);white-space:nowrap;line-height:1;
  color:var(--ink-2);font:500 12.5px var(--sans);letter-spacing:.005em;cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);transition:background .15s,color .15s,border-color .15s,transform .1s}
.btn:hover{color:var(--ink);background:var(--hover);border-color:rgba(209,160,74,.45)} .btn:active{transform:scale(.97)}
.btn.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600;box-shadow:none}
.btn.on:hover{background:#dcae5b;color:var(--accent-ink)}

/* tables */
table.t{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px}
.t th,.t td{padding:6px 10px;white-space:nowrap;border-bottom:1px solid var(--line);text-align:right}
.t th{position:sticky;top:0;z-index:3;background:var(--card);color:var(--ink-3);font-weight:500;font-size:11.5px}
.t td{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}
.t th.l,.t td.l{text-align:left;font-family:var(--sans)}
.t td.l{max-width:260px;overflow:hidden;text-overflow:ellipsis}   /* long names truncate, numbers stay visible */
.t td.first,.t th.first{position:sticky;left:0;z-index:2;background:var(--card);text-align:left;font-family:var(--sans);color:var(--ink-2)}
.t th.first{z-index:4}
.t tbody tr{transition:background .12s}
.t tbody tr:hover td{background:var(--raised)}
.t tr[data-href]{cursor:pointer}
.empty{padding:22px 14px;color:var(--ink-3);font-size:12.5px}

/* key-number tiles */
.kgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line)}
.kgrid .kv{background:var(--card);padding:9px 14px}
.kgrid .kv .v{font-size:14px}
.qline{padding:12px 14px;color:var(--ink-2);line-height:1.6}
.qline b{color:var(--ink);font-weight:600}
.bars{display:flex;align-items:flex-end;gap:4px;height:64px;padding:0 14px 10px}
.bars i{flex:1;background:var(--raised);border-radius:3px 3px 0 0;min-height:2px;position:relative;transition:background .15s}
.bars i.last{background:var(--accent)} .bars i:hover{background:var(--ink-3)}
.bars i:hover::after{content:attr(data-t);position:absolute;bottom:100%;left:50%;transform:translate(-50%,-4px);font:500 11px var(--mono);
  background:var(--raised);border:1px solid var(--line-strong);padding:2px 6px;border-radius:4px;white-space:nowrap;color:var(--ink)}

/* chart */
.chartwrap{position:relative;flex:1 1 auto;min-height:0}
#chart{position:absolute;inset:0}
.tip{position:absolute;z-index:5;left:12px;top:8px;display:flex;gap:14px;font:12px var(--mono);color:var(--ink-2);pointer-events:none;
  background:rgba(23,24,27,.86);padding:4px 8px;border-radius:6px;border:1px solid var(--line)}
.tip b{color:var(--ink);font-weight:500}
.tip:empty{display:none}
.measure{position:absolute;z-index:6;pointer-events:none;font:500 12px var(--mono);padding:5px 10px;border-radius:6px;border:1px solid var(--line-strong);
  background:var(--raised);color:var(--ink-2);transform:translateX(-50%);white-space:nowrap;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.hint{font-size:11.5px;color:var(--ink-3)}
.zone{position:absolute;z-index:4;top:0;bottom:28px;display:none;pointer-events:none;border-left:1px solid;border-right:1px solid}
.zone.up{background:rgba(63,182,122,.13);border-color:rgba(63,182,122,.6)}
.zone.down{background:rgba(224,86,77,.13);border-color:rgba(224,86,77,.6)}
.measure b{font-weight:600} .measure.up b{color:var(--up)} .measure.down b{color:var(--down)}
.chartwrap{cursor:grab;touch-action:pan-y}
.chartwrap.measuring{cursor:crosshair;touch-action:none}
.seg.ctools button{display:inline-flex;align-items:center;gap:4px}

/* compare */
.cadd{height:32px;width:260px;border:1px solid var(--line-strong);border-radius:8px;background:var(--bg);color:var(--ink);font:13px var(--sans);padding:0 10px;outline:0}
.cadd:focus{border-color:rgba(209,160,74,.6)}
.chip .x{border:0;background:transparent;color:var(--ink-3);cursor:pointer;font-size:14px;line-height:1;padding:0 0 0 4px}
.chip .x:hover{color:var(--down)} .chip a:hover{color:var(--accent)}
.t td.best{color:var(--accent);font-weight:600}
#cchart,#pchartc{position:absolute;inset:0}

/* ratio library */
.rsearch{position:sticky;top:0;z-index:5;background:var(--card);padding:8px 14px;border-bottom:1px solid var(--line)}
.rsearch input{width:100%;height:30px;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg);color:var(--ink);font:13px var(--sans);padding:0 10px;outline:0}
.rsearch input:focus{border-color:rgba(209,160,74,.6)}
.rcat{padding:10px 14px 4px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.rgroup.hide,.kv.hide{display:none}

/* mini charts (quarterly bars, shareholding lines) */
.mini{padding:4px 14px 10px}
.mlegend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;color:var(--ink-2);padding:4px 0 6px}
.mlegend i,.mtip i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:0}
.mwrap{position:relative;height:150px}
.minisvg{width:100%;height:100%;display:block;cursor:crosshair}
.mtip{position:absolute;top:4px;transform:translateX(-50%);flex-direction:column;gap:2px;font-size:11.5px;color:var(--ink-2);
  background:var(--raised);border:1px solid var(--line-strong);border-radius:6px;padding:6px 9px;white-space:nowrap;pointer-events:none;z-index:5;
  box-shadow:0 6px 18px rgba(0,0,0,.35)}
.mtip b{color:var(--ink)}
.qline{padding:10px 14px 4px}

/* stat tiles strip (home) */
.tiles{display:flex;gap:26px;align-items:center}
.tile .v{font:600 19px var(--mono);letter-spacing:-.02em}
.tile .k{font-size:11px;color:var(--ink-3)}
.breadth{height:6px;width:180px;border-radius:3px;overflow:hidden;display:flex;background:var(--raised)}
.breadth i{display:block;height:100%}

/* index tickers + sector heat */
.tick{display:flex;flex-direction:column;gap:1px;white-space:nowrap;padding:3px 10px;border-radius:8px;transition:background .15s}
.tick:hover{background:var(--raised)} .tick .k{font-size:11px;color:var(--ink-3)} .tick .v{font-size:13.5px;font-weight:500}
.heat{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:6px}
.ht{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border-radius:8px;border:1px solid var(--line);transition:transform .12s,border-color .15s}
.ht:hover{border-color:var(--line-strong);transform:translateY(-1px)}
.ht .n{font-size:12px;color:var(--ink);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ht .num{font-size:14px;font-weight:600;color:var(--ink)!important} .ht .m{font-size:11px;color:var(--ink-2)}

/* screener */
.sform{display:flex;flex-direction:column;gap:9px}
.sform label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--ink-3)}
.sform input,.sform select{height:30px;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg);color:var(--ink);font:13px var(--sans);
  padding:0 9px;outline:0;transition:border-color .15s;min-width:0}
.sform input:focus,.sform select:focus{border-color:rgba(209,160,74,.6)}
.rng{display:grid;grid-template-columns:1fr 64px 64px;gap:6px;align-items:center;font-size:12px;color:var(--ink-2)}
.rng input{font-family:var(--mono);font-size:12px;text-align:right}
.sform .chk{flex-direction:row;align-items:center;gap:8px;color:var(--ink-2);font-size:12px;margin-top:4px}
.sform .chk input{height:auto;accent-color:var(--accent)}
.qbox{width:100%;min-height:74px;resize:vertical;border:1px solid var(--line-strong);border-radius:8px;background:var(--bg);color:var(--ink);
  font:13px/1.5 var(--mono);padding:9px 11px;outline:0;transition:border-color .15s}
.qbox:focus{border-color:rgba(209,160,74,.6)} .qbox.bad{border-color:rgba(224,86,77,.7)}
.qerr{color:var(--down);font-size:12px;min-height:16px}
.row2{display:flex;gap:8px;flex-wrap:wrap} .btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.slist{display:flex;flex-direction:column;gap:2px}
.sv{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--line)} .sv a{flex:1;color:var(--ink-2);font-size:12.5px}
.sv a:hover{color:var(--accent)} .sv .tog{width:22px;height:22px}
.flist{padding:0 8px 10px}
.fld{display:flex;gap:10px;align-items:baseline;width:100%;border:0;background:transparent;color:var(--ink-2);font:12.5px var(--sans);
  padding:5px 6px;border-radius:6px;text-align:left;cursor:pointer;transition:background .12s}
.fld:hover{background:var(--raised);color:var(--ink)} .fld code{font:12px var(--mono);color:var(--accent);min-width:88px}
th.sortable{cursor:pointer;user-select:none} th.sortable:hover{color:var(--ink)} th.sortable.on{color:var(--accent)}

/* command palette */
.pal{position:fixed;inset:0;z-index:50;display:none;align-items:flex-start;justify-content:center;padding-top:12vh;background:rgba(8,8,9,.6);backdrop-filter:blur(3px)}
.pal.on{display:flex}
.pal .box{width:min(620px,92vw);background:var(--card);border:1px solid var(--line-strong);border-radius:14px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.55)}
.pal input{width:100%;height:52px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:16px var(--sans);padding:0 18px;outline:0}
.pal ul{list-style:none;margin:0;padding:6px;max-height:52vh;overflow:auto}
.pal li a{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:8px;color:var(--ink)}
.pal li a .s{font:500 12px var(--mono);color:var(--accent);min-width:92px}
.pal li a .sec{margin-left:auto;font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}
.pal li.sel a,.pal li a:hover{background:var(--raised)}
.pal .foot{display:flex;gap:14px;padding:8px 14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink-3)}

/* in-card scrollbars: thin, dark, no system chrome */
.cb,.pal ul{scrollbar-width:thin;scrollbar-color:#34373d transparent}
.cb::-webkit-scrollbar,.pal ul::-webkit-scrollbar{width:8px;height:8px}
.cb::-webkit-scrollbar-thumb,.pal ul::-webkit-scrollbar-thumb{background:#34373d;border-radius:8px;border:2px solid var(--card)}
.cb::-webkit-scrollbar-track{background:transparent}

.foot-note{flex:0 0 auto;font-size:11px;color:var(--ink-3);display:flex;gap:16px;padding:0 4px}
.foot-note a{color:var(--ink-2)} .foot-note a:hover{color:var(--accent)}

/* narrow screens: stack and let the page scroll (honest limit on phones) */
@media (max-width:1100px){
  .app{height:auto;min-height:100dvh}
  .grid{flex-direction:column}
  .col{flex:none}
  .card{flex:none;min-height:320px;max-height:78vh}
  .card.collapsed{min-height:0}
  .searchbtn{flex:1 1 auto} .searchbtn span{display:none}
  .strip{flex-wrap:nowrap}
}

/* ================= phones and small tablets ================= */
.bnav,.jump{display:none} .bnav .sm{display:none}
@media (max-width:760px){
  body{font-size:14px}
  .app{height:auto;min-height:100dvh;padding:0 10px 76px;gap:10px}
  .top{height:52px;gap:10px;padding:0 12px;position:sticky;top:0;z-index:20;background:var(--bg)}
  .nav{display:none}
  .searchbtn{flex:1 1 auto;height:36px} .searchbtn span{display:inline;font-size:13px} .searchbtn kbd{display:none}
  .bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;height:62px;background:rgba(17,18,20,.97);
    border-top:1px solid var(--line-strong);overflow-x:auto;scrollbar-width:none;padding-bottom:env(safe-area-inset-bottom);backdrop-filter:blur(8px)}
  .bnav a{flex:1 0 64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-3);font-size:10.5px;font-weight:500}
  .bnav a.on{color:var(--accent)} .bnav a:active{background:var(--raised)}
  .bnav .lg{display:none} .bnav .sm{display:inline}
  .jump{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;position:sticky;top:52px;z-index:15;background:var(--bg);padding:6px 0;margin:-4px 0}
  .jump:empty{display:none}
  .jump a{flex:0 0 auto;padding:6px 11px;border-radius:999px;border:1px solid var(--line-strong);color:var(--ink-2);font-size:12.5px;background:var(--card)}
  .jump a:active{border-color:var(--accent);color:var(--accent)}
  .strip{flex-wrap:wrap;gap:10px 16px;padding:12px 14px;overflow:visible}
  .strip .id{flex:1 0 100%} .strip .id h1{white-space:normal;max-width:none;font-size:20px}
  .strip .id .sub{white-space:normal}
  .strip .px{font-size:22px}
  .chips{margin-left:0;flex-wrap:wrap;flex:1 0 100%;min-width:0;max-width:100%}
  .chips .seg{flex-wrap:nowrap;overflow-x:auto}
  .tiles{flex-wrap:wrap;gap:12px 18px;margin-left:0!important}
  .tile .v{font-size:16px}
  .tick{padding:2px 6px}
  .grid,.col{display:flex;flex-direction:column;gap:10px}
  .card{flex:none!important;max-height:none;min-height:0}
  .ch{flex-wrap:wrap;row-gap:8px;padding:10px 6px 10px 12px;min-height:46px}
  .ch h2{font-size:14px}
  .ch .note{flex:1 1 auto;white-space:normal;font-size:11.5px}
  .ch .seg{order:10;flex:0 1 auto;max-width:100%}
  .ch .seg[data-tabs],.ch .seg[aria-label="Range"]{flex:1 0 100%}
  .cb{overflow-x:auto;overflow-y:visible;max-height:none}
  .t th,.t td{padding:7px 9px;font-size:12.5px}
  .t .hm{display:none}
  .t td.l{max-width:180px}
  tr.capped{display:none}
  .more{display:block;width:calc(100% - 24px);margin:8px 12px 12px;height:36px;border:1px solid var(--line-strong);border-radius:8px;
    background:var(--raised);color:var(--ink);font:500 13px var(--sans)}
  .chartwrap{flex:none;height:360px}
  .card[data-id="chart"] .cb,.card[data-id="ichart"] .cb,.card[data-id="cchart"] .cb,.card[data-id="pchart"] .cb{overflow:hidden}
  .tip{font-size:10.5px;gap:8px;flex-wrap:wrap;max-width:calc(100% - 74px);left:6px;top:4px;padding:3px 6px}
  .hint{font-size:11px}
  .kgrid{grid-template-columns:1fr 1fr}
  .heat{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qbox{font-size:14px}
  .rng{grid-template-columns:1fr 72px 72px}
  .cadd{width:100%}
  .foot-note{flex-direction:column;gap:4px}
  .pal{padding-top:8vh} .pal .box{width:94vw}
}
@media (min-width:761px) and (max-width:1100px){
  .card{max-height:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- portfolio ---------- */
.padd{display:flex;gap:6px;align-items:center;margin-left:auto}
.padd .cadd{width:200px} .padd .pqty{width:84px}
.pimport{flex:0 0 auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card)} .pimport[hidden]{display:none}
.pimport textarea{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-in);font:12.5px/1.5 var(--mono);padding:8px 10px;resize:vertical}
.pimport textarea:focus{outline:0;border-color:rgba(209,160,74,.6)}
.pimprow{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;margin-top:10px;font-size:12px} .pimprow #pimpmsg{flex:1 1 200px;min-width:0}
.t .pq{width:78px;height:24px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;font:12px var(--mono);text-align:right;padding:0 6px}
.t .pq:focus{outline:0;border-color:rgba(209,160,74,.6)}
.t .x{border:0;background:transparent;color:var(--ink-3);cursor:pointer;font-size:15px;line-height:1;padding:2px 4px;border-radius:4px}
.t .x:hover{color:var(--down);background:var(--down-soft)}
.mixl{display:flex;flex-direction:column;gap:7px}
.mixr{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 52px;gap:10px;align-items:center;font-size:12.5px}
.mixr .mk{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}
.mixr .mb{height:8px;background:var(--raised);border-radius:4px;overflow:hidden}
.mixr .mb i{display:block;height:100%;background:var(--accent);border-radius:4px}
.mixr .mv{text-align:right}
#prisk .kv .k:last-child{white-space:normal;font-size:10.5px;line-height:1.3}
.pmixfoot{margin-top:12px;font-size:12px} .pmixfoot b{color:var(--ink);font-weight:600}
.corr{display:grid;gap:2px;font:500 10.5px var(--mono)}
.corr .ck{color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;padding:2px 0}
.corr .ck.rk{text-align:left}
.corr .cc{display:grid;place-items:center;min-height:24px;border-radius:3px;color:var(--ink);background:var(--raised)}
@media (max-width:760px){
  .padd{flex:1 0 100%;flex-wrap:wrap;margin-left:0} .padd .cadd{flex:1 1 140px;width:auto} .padd .pqty{flex:0 0 76px}
  .bnav a{flex-basis:54px}
  .btn{height:36px;padding:0 14px;font-size:13px}
  .pimprow .btn{flex:1 1 0} .pimprow #pimpmsg{flex:1 0 100%}
  .ch .btn{height:32px;padding:0 11px}
}

/* ---------- screen backtest ---------- */
.bqrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#bq{flex:1 1 260px;min-height:0;height:34px;resize:none;padding:0 10px;font:13px var(--mono)}
.bmin{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--ink-3);white-space:nowrap}
.bmin select{height:30px;background:var(--bg);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-in);font:12.5px var(--sans);padding:0 8px}
.bpresets{margin:4px 0 0;flex-wrap:wrap} .bpresets .chip{cursor:pointer;font-family:var(--sans)}
.bpresets .chip:hover{color:var(--accent);border-color:rgba(209,160,74,.4)}
#bfields{margin-top:10px;line-height:2.1}
.bf{border:1px solid var(--line);background:transparent;color:var(--accent);font:11.5px var(--mono);padding:1px 6px;border-radius:5px;cursor:pointer}
.bf:hover{background:var(--accent-soft)}
#byrs tr[data-y]{cursor:pointer} .t tr.sel td{background:var(--accent-soft)}
.bhow{color:var(--ink-2);line-height:1.6;font-size:13px} .bhow b{color:var(--ink)} .bhow p{margin:0 0 10px}
#bchartc{position:absolute;inset:0}
@media (max-width:760px){ .card[data-id="bchart"] .cb{overflow:hidden} .bmin{flex:1 1 auto} }

/* ---------- owner research chat v2 (only rendered when unlocked) ---------- */
.cxbtn{position:fixed;right:18px;bottom:18px;z-index:40;display:flex;align-items:center;gap:6px;height:44px;padding:0 16px 0 8px;border-radius:22px;
  border:1px solid rgba(209,160,74,.5);background:var(--card);color:var(--accent);font:600 13px var(--sans);cursor:pointer;box-shadow:0 6px 24px rgba(0,0,0,.45)}
.cxbtn:hover,.cxbtn.on{border-color:var(--accent);background:var(--raised)}
.cxbtn .mascot{width:32px;height:32px}
.mascot .mb{transform-origin:20px 34px} .mascot .me{transform-origin:20px 22px;animation:mblink 5s infinite} .mascot .mk rect{transform-box:fill-box;transform-origin:bottom}
@keyframes mblink{0%,46%,50%,100%{transform:scaleY(1)}48%{transform:scaleY(.1)}}
.m-think .mascot .mp{animation:mlook 1.2s ease-in-out infinite} .m-think .mascot .mk rect{animation:mbar .7s ease-in-out infinite alternate}
.m-think .mascot .mk rect:nth-child(2){animation-delay:.15s} .m-think .mascot .mk rect:nth-child(3){animation-delay:.3s} .m-think .mascot .mk rect:nth-child(4){animation-delay:.45s}
@keyframes mlook{0%,100%{transform:translateX(-1.3px)}50%{transform:translateX(1.3px)}} @keyframes mbar{to{transform:scaleY(.35)}}
.m-done .mascot .mb{animation:mnod .5s ease-in-out 2}
@keyframes mnod{50%{transform:rotate(-6deg) translateY(1px)}}
.cx{position:fixed;right:18px;bottom:74px;z-index:41;width:min(520px,calc(100vw - 36px));height:min(740px,calc(100dvh - 100px));display:flex;flex-direction:column;
  background:var(--card);border:1px solid var(--line-strong);border-radius:var(--r-card);box-shadow:0 18px 60px rgba(0,0,0,.55);overflow:hidden}
.cx[hidden]{display:none}
.cxh{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 10px;border-bottom:1px solid var(--line)}
.cxh .mascot{width:36px;height:36px;flex:0 0 auto} .cxti{display:flex;flex-direction:column;line-height:1.2} .cxti b{font-size:14px} .cxti .dim{font-size:11px}
.cxh .x{border:0;background:transparent;color:var(--ink-3);font-size:20px;cursor:pointer;padding:0 6px;line-height:1}
.cxsel{max-width:210px;height:30px;background:var(--bg);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-in);font:12px var(--sans);padding:0 6px}
.cxtabs{display:flex;gap:2px;padding:6px 8px;border-bottom:1px solid var(--line)}
.cxtabs button{border:0;background:transparent;color:var(--ink-2);font:500 12.5px var(--sans);padding:5px 10px;border-radius:6px;cursor:pointer}
.cxtabs button.on{background:var(--raised);color:var(--accent)} .cxtabs .cxnew{color:var(--accent)}
.cxp{display:none;flex:1;min-height:0;flex-direction:column} .cxp.on{display:flex}
.cxm{flex:1;overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:12px}
.cxempty{margin:auto;text-align:center;color:var(--ink-3);max-width:300px} .cxempty .mascot{width:72px;height:72px}
.cxmsg{font-size:13px;line-height:1.55;color:var(--ink-2);max-width:100%}
.cxmsg.me{align-self:flex-end;background:var(--accent-soft);color:var(--ink);padding:8px 12px;border-radius:12px 12px 3px 12px;max-width:85%;white-space:pre-wrap}
.cxmsg.ai p{margin:0 0 8px} .cxmsg.ai h4{margin:10px 0 6px;font-size:13.5px;color:var(--ink)} .cxmsg.ai b{color:var(--ink)}
.cxmsg.ai ul,.cxmsg.ai ol{margin:0 0 8px;padding-left:18px} .cxmsg.ai li{margin:2px 0} .cxmsg.ai hr{border:0;border-top:1px solid var(--line);margin:10px 0}
.cxmsg.ai a{color:var(--accent)} .cxmsg.ai code{font:12px var(--mono);background:var(--raised);padding:1px 4px;border-radius:4px}
.cxt{overflow-x:auto;margin:4px 0 10px;border:1px solid var(--line);border-radius:8px} .cxt .t{font-size:12px} .cxt .t td{font-family:var(--sans)}
.cxchart{margin:6px 0 10px;border:1px solid var(--line);border-radius:8px;padding:6px;background:var(--bg)} .cxchart svg{width:100%;height:auto;display:block}
.cxct{fill:var(--ink-2);font:600 11px var(--sans)} .cxax{fill:var(--ink-3);font:10px var(--mono)}
.cxmeta{display:flex;align-items:center;gap:8px;margin-top:4px;font:11px var(--mono);color:var(--ink-3);flex-wrap:wrap}
.cxmeta button{border:0;background:transparent;color:var(--ink-3);cursor:pointer;font:inherit;padding:0}
.cxmeta button:hover,.cxstar.on{color:var(--accent)} .cxstar{font-size:14px!important}
.cxwait{color:var(--ink-3);font-style:italic;animation:cxp 1.4s ease-in-out infinite} @keyframes cxp{50%{opacity:.45}}
.cxs{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 8px} .cxs .chip{cursor:pointer;font-family:var(--sans)} .cxs .chip:hover{color:var(--accent)}
.cxslash{display:flex;flex-direction:column;margin:0 10px;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden;background:var(--raised)}
.cxslash[hidden]{display:none} .cxslash button{border:0;background:transparent;text-align:left;padding:6px 10px;color:var(--ink);font:12.5px var(--sans);cursor:pointer}
.cxslash button:hover{background:var(--hover)}
.cxf{display:flex;gap:8px;padding:10px 10px 4px;border-top:1px solid var(--line)}
.cxf textarea{flex:1;resize:none;background:var(--bg);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--r-in);font:13px/1.4 var(--sans);padding:8px 10px}
.cxf textarea:focus{outline:0;border-color:rgba(209,160,74,.6)} .cxf .btn{align-self:stretch;height:auto}
.cxfoot{font:11px var(--mono);padding:2px 12px 8px}
.cxbar{display:flex;gap:8px;align-items:center;padding:10px 12px} .cxbar .cadd{flex:1;width:auto}
.cxlist{flex:1;overflow:auto;padding:0 8px 8px}
.cxrow{padding:9px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent} .cxrow:hover{background:var(--raised)} .cxrow.on{border-color:rgba(209,160,74,.35)}
.cxrt{color:var(--ink);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .cxrx{font-size:12px;color:var(--ink-2);margin:3px 0}
.cxrm{display:flex;gap:8px;align-items:center;font-size:11px;margin-top:2px}
.cxrm button,.cxkey button,.cxmod button{border:1px solid var(--line);background:transparent;color:var(--ink-3);font:11px var(--sans);border-radius:5px;padding:2px 7px;cursor:pointer}
.cxrm button:hover,.cxkey button:hover,.cxmod button:hover{color:var(--accent);border-color:rgba(209,160,74,.4)}
.cxset{flex:1;overflow:auto;padding:4px 14px 14px;font-size:12.5px;color:var(--ink-2)} .cxset h5{margin:14px 0 6px;font-size:12px;color:var(--ink);text-transform:uppercase;letter-spacing:.06em}
.cxset p{margin:4px 0}
.cxkey{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;margin-bottom:5px} .cxkey.on{border-color:rgba(209,160,74,.4)}
.cxadd{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0} .cxadd select{height:32px;background:var(--bg);color:var(--ink);border:1px solid var(--line-strong);border-radius:8px}
.cxadd .cadd{flex:1 1 120px;width:auto}
.cxmods{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:8px}
.cxmod{display:flex;align-items:center;gap:8px;padding:5px 8px;border-bottom:1px solid var(--line);font-size:12px} .cxmod .cxmn{color:var(--ink);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:760px){ .cxbtn{bottom:74px;right:12px} .cx{right:0;bottom:0;width:100vw;height:100dvh;border-radius:0;z-index:50} .cxsel{max-width:140px} }
@media (prefers-reduced-motion:reduce){ .cxwait,.mascot .me,.mascot .mp,.mascot .mk rect,.mascot .mb{animation:none!important} }

.hint.fresh{padding:7px 14px;color:var(--accent);background:var(--accent-soft);border-bottom:1px solid var(--line);font-size:12px}
