/* ViiSync Console — "ViiSync Database" IDE design (dark, refined). */
:root{
  /* Palette matched 1:1 to the "ViiSync WASM Client" design (near-black #0c0c0e family). */
  --bg:#0c0c0e; --bg2:#0e0e10; --panel:#101013; --titlebar:#0a0a0c; --hover:#1a1a1e;
  --border:#242428; --border2:#2c2c31; --border-tb:#1d1d20; --border-soft:#161619;
  --sel:rgba(206,210,224,0.10);
  /* Semantic surfaces / borders / text used by inline styles — dark values here, light overrides below. */
  --surf0:#131316; --surf1:#161619; --surf2:#1b1b1f; --chip:#26262a;
  --border3:#3a3a40; --border4:#4c4c52;
  --tx2:#c8c8ce; --tx-dim2:#8a8a90; --tx-faint2:#5c5c62;
  --fg:#d6d6da; --fg2:#e8e8ec; --fg-dim:#9a9aa0; --fg-faint:#6e6e75;
  --accent:#c6c9d2; --accent2:#94969f;
  --green:#3fb950; --green2:#2ea043; --gray:#6e7681; --yellow:#d29922; --red:#f06a6a;
  --chart-read:#c2c5cf; --chart-write:#8e9099; --chart-clients:#6c6e76;
  /* Monochrome brand: silver sheen, no hue. The logo is the theme. */
  --grad:linear-gradient(135deg,#eef0f4,#b4b6bd 52%,#7c7e85);
  --logo-ink:#9b9ea8; --logo-glow:rgba(190,196,212,0.16);
  --glow:rgba(226,229,239,0.45);
  --mono:"IBM Plex Mono","SF Mono",ui-monospace,Consolas,"Courier New",monospace;
}
html[data-theme="light"]{
  /* Soft, smooth light palette — gentle off-whites + low-contrast cool-neutral borders. */
  --bg:#fbfbfd; --bg2:#f3f4f7; --panel:#f7f8fb; --titlebar:#eef0f4; --hover:#edeff3; --sel:#e9ecf2;
  --border:#eceef3; --border2:#e3e6ec; --border-tb:#e7eaf0; --border-soft:#f0f1f5;
  --surf0:#f0f1f5; --surf1:#eef1f5; --surf2:#e9ecf2; --chip:#e0e3ea;
  --border3:#d6dae1; --border4:#c8ccd4;
  --tx2:#3b3f46; --tx-dim2:#767c86; --tx-faint2:#a8aeb8;
  --fg:#2a2d34; --fg2:#1f2228; --fg-dim:#646973; --fg-faint:#9aa0aa;
  --accent:#565b64; --accent2:#7c818b; --gray:#9aa0a6;
  --chart-read:#454a53; --chart-write:#71767f; --chart-clients:#a0a5af;
  --grad:linear-gradient(135deg,#7c818b,#a3a7b0 52%,#cdd0d7);
  /* Logo is faded, not shiny, in light. */
  --logo-ink:#bcc0c9; --logo-glow:transparent;
  --glow:rgba(124,132,148,0.14);
}
html[data-theme="light"] .logo{filter:none}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font-family:"IBM Plex Sans",system-ui,sans-serif;background:var(--bg);color:var(--fg);font-size:13px;line-height:normal;overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
.mono{font-family:var(--mono)}
button{font-family:inherit;cursor:pointer}

.app{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg);color:var(--fg)}

/* ── title bar ── */
.titlebar{display:flex;align-items:center;height:36px;flex:0 0 36px;background:var(--titlebar);border-bottom:1px solid var(--border-tb);padding:0 8px;gap:2px;z-index:6}
.tb-icons{display:flex;align-items:center;gap:2px;flex:0 0 auto}
.logo{width:20px;height:20px;margin:0 8px 0 2px;color:var(--logo-ink);display:block;flex:0 0 auto}
.logo > svg{display:block;width:100%;height:100%}
.iconbtn{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--fg-dim);border-radius:6px}
.iconbtn:hover{background:var(--hover);color:var(--fg)}
.iconbtn.on{color:var(--fg)}
.tb-tabs{display:flex;align-items:flex-end;flex:1;min-width:0;overflow-x:auto;height:100%;padding-left:0}
.tab{position:relative;display:flex;align-items:center;gap:8px;padding:0 7px 0 11px;height:30px;font-size:12px;color:var(--fg-dim);max-width:220px;white-space:nowrap;background:transparent;border-left:1px solid transparent;border-right:1px solid var(--border);transition:background .28s ease,color .2s ease}
.tab:hover{color:var(--fg);background:var(--hover)}
.tab.active{color:var(--fg);background:linear-gradient(180deg,var(--hover),var(--bg) 70%);border-left-color:var(--border);border-right-color:var(--border)}
/* soft fade-in accent: always present but transparent, eases in when the tab becomes active */
.tab::before{content:"";position:absolute;left:7px;right:7px;top:0;height:2px;border-radius:0 0 3px 3px;background:var(--grad);box-shadow:0 1px 9px var(--glow),0 0 3px var(--glow);opacity:0;transition:opacity .3s ease}
.tab.active::before{opacity:1}
/* workspace/overview root tab — compact icon-only button */
.tab.tab-ws{padding:0 12px;justify-content:center;flex:0 0 auto}
.tab.tab-ws .ti{opacity:.85}
.tab.tab-ws.active .ti,.tab.tab-ws:hover .ti{opacity:1}
.tab .ti{opacity:.8;display:inline-flex;color:var(--fg-dim)}
.tab.active .ti{opacity:1}
.tab .tx{overflow:hidden;text-overflow:ellipsis}
.tab .tc{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;color:var(--fg-faint);font-size:15px;line-height:1;margin-left:2px}
.tab .tc:hover{background:var(--chip);color:var(--fg)}
.tb-right{display:flex;align-items:center;gap:2px;flex:0 0 auto;padding-left:8px}
.rolepill{display:inline-flex;align-items:center;gap:7px;height:24px;border:1px solid var(--chip);border-radius:7px;padding:0 8px 0 10px;font-size:11.5px;font-family:var(--mono);color:var(--tx2);background:var(--surf1);margin-right:6px}
.rolepill:hover{background:var(--surf2)}
.rolepill .rdot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.tb-div{width:1px;height:18px;background:var(--chip);margin:0 4px;flex:0 0 1px}

/* ── body split ── */
.body{display:flex;flex:1;min-height:0}
.sidebar{width:300px;min-width:230px;max-width:520px;background:var(--bg);border-right:1px solid var(--border-soft);display:flex;flex-direction:column;resize:horizontal;overflow:auto}
.side-head{display:flex;align-items:center;justify-content:space-between;height:34px;flex:0 0 34px;padding:0 10px 0 16px}
.side-head .t{font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--fg-faint);font-weight:600;font-family:var(--mono)}
.side-add{width:22px;height:22px;border-radius:6px;border:none;background:transparent;color:var(--fg-dim);font-size:15px}
.side-add:hover{background:var(--hover);color:var(--fg)}
.tree{flex:1;overflow:auto;padding:2px 0 18px}
/* VS Code-style search panel hosted in the sidebar */
.side-search{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.ssr-box{display:flex;align-items:center;gap:6px;margin:0 12px 8px;height:30px;padding:0 8px;background:var(--bg);border:1px solid var(--border2);border-radius:7px}
.ssr-box:focus-within{border-color:var(--accent)}
.ssr-ic{display:inline-flex;color:var(--fg-faint);flex:0 0 auto}
.ssr-box input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--fg);font-size:12.5px}
.ssr-box input::placeholder{color:var(--fg-faint)}
.ssr-clear{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--fg-dim);border-radius:5px;cursor:pointer}
.ssr-clear:hover{background:var(--hover);color:var(--fg)}
.ssr-msg{padding:4px 16px;color:var(--fg-faint);font-size:12px;line-height:1.5}
.ssr-sum{padding:2px 16px 6px;color:var(--fg-dim);font-size:11px;font-family:var(--mono)}
.ssr-results{flex:1;overflow:auto;padding-bottom:14px}
.ssr-grp{display:flex;align-items:center;gap:6px;padding:8px 16px 3px;color:var(--fg-faint);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;font-family:var(--mono)}
.ssr-cnt{color:var(--fg-faint);font-variant-numeric:tabular-nums}
.ssr-hit .nicon{color:var(--fg-dim)}
.ssr-sub{color:var(--fg-faint)}
.node{position:relative;display:flex;align-items:center;gap:8px;height:23px;padding:0 12px;color:var(--fg);font-size:12.5px;cursor:pointer;white-space:nowrap}
.node:hover{background:var(--hover)}
.node.sel{background:var(--sel)}
.node.sel::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:2px;border-radius:2px;background:var(--grad);box-shadow:0 0 5px var(--glow)}
.node .chev{width:13px;height:13px;color:var(--fg-faint);flex:0 0 13px;display:inline-flex;align-items:center;justify-content:center}
.node .nicon{width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;color:var(--tx-dim2);flex:0 0 15px}
.node .nlabel{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.node .badge{margin-left:auto;color:var(--fg-faint);font-size:11px;font-family:var(--mono);font-variant-numeric:tabular-nums}
.node-sub{padding:0 12px 4px 38px;color:var(--fg-faint);font-size:11px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.indent-1{padding-left:25px}.indent-2{padding-left:38px}.indent-3{padding-left:51px}
.conn-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 8px}
.dot-on{background:var(--green)}.dot-off{background:var(--gray)}.dot-warn{background:var(--yellow)}

/* ── main ── */
.main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg)}
.crumbs{display:flex;align-items:center;gap:8px;height:34px;flex:0 0 34px;padding:0 22px;color:var(--fg-dim);font-size:12px;border-bottom:1px solid var(--border-soft);overflow:hidden}
.crumbs .sep{color:var(--fg-faint)}
.crumbs .cur{color:var(--fg2)}
.crumbs .lnk{cursor:pointer;transition:color .12s ease}
.crumbs .lnk:hover{color:var(--fg2);text-decoration:underline}
.content{flex:1;overflow:auto;padding:24px 28px 40px 34px}
.view-label{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-faint);font-weight:600;font-family:var(--mono);margin-bottom:6px}
.view-title{font-size:20px;font-weight:600;color:var(--fg2);margin:0 0 18px;letter-spacing:-.2px}
.view-title .muted{color:var(--fg-dim);font-weight:600}

/* ── Overview / Workspace (design 1:1) ── */
.ws-title{font-size:20px;font-weight:600;color:var(--fg2);margin:0 0 20px}
.ws-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px;max-width:760px}
.ws-card{border:1px solid var(--border);border-radius:10px;padding:14px 15px;background:var(--panel)}
.ws-card .k{font-size:10px;font-weight:500;letter-spacing:.8px;color:var(--fg-faint);font-family:var(--mono);margin-bottom:9px;text-transform:uppercase}
.ws-card .v{font-family:var(--mono);font-size:23px;font-weight:600;color:var(--fg2)}
.ws-seclabel{font-size:10.5px;font-weight:600;letter-spacing:1px;color:var(--fg-faint);font-family:var(--mono);margin-bottom:11px;text-transform:uppercase}
.ws-sinks{max-width:760px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.ws-sinks .h{display:flex;align-items:center;height:30px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);letter-spacing:.3px}
.ws-sinks .r{display:flex;align-items:center;height:29px;padding:0 16px;font-family:var(--mono);font-size:12px;color:var(--tx2);cursor:pointer;border-top:1px solid var(--border-soft)}
.ws-sinks .r:hover{background:var(--surf0)}
.ws-sinks .c-coll{flex:1;color:var(--fg)}
.ws-sinks .c-rec{flex:0 0 90px}
.ws-sinks .c-brec{flex:0 0 80px}
.ws-sinks .c-size{flex:0 0 100px}
.ws-sinks .empty-row{padding:18px 16px;text-align:center;font-family:var(--mono);font-size:12px;color:var(--tx-faint2);border-top:1px solid var(--border-soft)}

/* info key/value table */
.kv{max-width:760px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.kv-row{display:grid;grid-template-columns:210px 1fr}
.kv-row:nth-child(even){background:var(--bg2)}
.kv-k{padding:13px 18px;color:var(--fg-dim);font-family:var(--mono);font-size:12.5px;border-right:1px solid var(--border)}
.kv-v{padding:13px 18px;color:var(--fg);font-family:var(--mono);font-size:12.5px}

/* data tables */
.dtable{width:100%;border-collapse:collapse;font-size:12.5px;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.dtable thead th{text-align:left;color:var(--fg-faint);font-weight:600;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;padding:11px 16px;border-bottom:1px solid var(--border)}
.dtable td{padding:11px 16px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:12.5px;color:var(--fg)}
.dtable tbody tr:last-child td{border-bottom:none}
.dtable tbody tr:hover td{background:var(--bg2)}
.st-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px;vertical-align:middle}
.act-link{background:none;border:none;color:var(--accent);font-size:12px;padding:0}
.act-link:hover{text-decoration:underline}
.act-link.danger{color:var(--red)}

/* ── user/data tables (flex, design 1:1) ── */
.utable{max-width:820px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.utable .uhead{display:flex;align-items:center;height:28px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);letter-spacing:.3px}
.utable .urow{display:flex;align-items:center;height:31px;padding:0 16px;font-family:var(--mono);font-size:12.5px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.utable .urow:hover{background:var(--surf0)}
.utable .c-login{flex:0 0 150px;color:var(--fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.utable .c-role{flex:0 0 110px;color:var(--fg-dim)}
.utable .c-status{flex:0 0 130px;display:flex;align-items:center;gap:7px}
.utable .c-hz{flex:0 0 60px;color:var(--tx-dim2)}
.utable .c-created{flex:0 0 120px;color:var(--tx-dim2)}
.utable .c-demo{flex:0 0 68px}
.utable .c-act{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:8px}
.demopill{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 7px;border-radius:10px;background:rgba(210,153,34,.16);color:var(--yellow);border:1px solid rgba(210,153,34,.4)}
.demopill.real{background:rgba(63,185,80,.14);color:var(--green);border-color:rgba(63,185,80,.4)}
.utable .udot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 8px}
.utable .uact{background:none;border:none;padding:0;display:inline-flex;align-items:center;color:var(--fg-dim);cursor:pointer}
.utable .uact:hover{color:var(--fg)}
.utable .uact.danger{color:var(--red)}
.utable .uact.danger:hover{color:#e2607a}
.utable .uempty{padding:22px 16px;text-align:center;font-family:var(--mono);font-size:12px;color:var(--tx-faint2);border-top:1px solid var(--border-soft)}

/* Create group row */
.grp-create{display:flex;gap:9px;max-width:520px;margin-bottom:16px}
.grp-create input{flex:1;height:34px;padding:0 12px;background:var(--surf2);border:1px solid var(--border2);border-radius:8px;font-size:13px;color:var(--fg);outline:none}
.grp-create input:focus{border-color:var(--accent)}
.grp-create .btn-add{height:34px;padding:0 15px}

/* Add account button — monochrome silver CTA */
.btn-add{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 13px;background:var(--grad);border:none;border-radius:8px;color:#15151a;font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:0 0 10px var(--glow)}
.btn-add:hover{filter:brightness(1.06)}

/* No focus rings on chrome controls (design has none) */
.iconbtn:focus,.iconbtn:focus-visible,.rolepill:focus,.rolepill:focus-visible,.addbtn:focus,.addbtn:focus-visible,
.tab:focus,.tab:focus-visible,.side-add:focus,.side-add:focus-visible,.btn-add:focus,.btn-add:focus-visible{outline:none;box-shadow:none}

/* ── metrics (compact, design 1:1) ── */
.m-statusrow{display:flex;align-items:center;gap:11px;margin-bottom:4px}
.m-statusrow .ws-title{margin:0}
.m-live{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:#7ef0a6}
.m-pulse{width:7px;height:7px;border-radius:50%;background:#7ef0a6;display:inline-block}
.m-sub{font-size:11.5px;color:var(--fg-faint);font-family:var(--mono);margin-bottom:20px}
.m-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:760px;margin-bottom:24px}
.m-charts{display:flex;flex-direction:column;gap:14px;max-width:760px}
.m-chart{border:1px solid var(--border);border-radius:11px;background:var(--bg2);overflow:hidden}
.m-chead{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 0}
.m-chead .l{font-size:10.5px;font-weight:600;letter-spacing:.8px;color:var(--tx-dim2);font-family:var(--mono)}
.m-chead .v{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums}
.m-svg{padding-top:2px}
.m-svg svg{display:block;width:100%;height:88px}

/* metrics */
.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:980px;margin-bottom:18px}
.stat{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px 18px}
.stat .l{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);font-weight:700}
.stat .n{font-size:30px;font-weight:700;margin-top:8px;font-variant-numeric:tabular-nums}
.chartcard{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px;max-width:980px;margin-bottom:14px}
.chart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.chart-head .l{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);font-weight:700}
.chart-head .v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.chart svg{display:block;width:100%;height:110px}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block;margin:0 5px}

/* code (settings) */
.codefile{font-size:10.5px;letter-spacing:1px;color:var(--fg-faint);font-weight:600;font-family:var(--mono);margin-bottom:10px}
.codeview{font-family:var(--mono);font-size:12.5px;line-height:1.6;border:1px solid var(--border);border-radius:10px;overflow:auto;background:var(--panel)}
.cline{display:flex}
.cline .ln{width:46px;flex:0 0 46px;text-align:right;padding-right:14px;color:var(--fg-faint);user-select:none}
.cline .ct{white-space:pre;color:var(--fg)}

/* footer */
.statusbar{display:flex;align-items:center;justify-content:space-between;height:24px;flex:0 0 24px;background:var(--titlebar);border-top:1px solid var(--border-tb);padding:0 14px;font-size:11px;font-family:var(--mono);color:var(--fg-faint)}
.statusbar .sb-left,.statusbar .sb-right{display:flex;align-items:center;gap:16px}
.statusbar .sb-brand{display:flex;align-items:center;gap:6px;color:var(--fg-dim)}
.statusbar .sb-role{color:var(--tx-dim2)}
.sb-theme{display:inline-flex;align-items:center;justify-content:center;width:20px;height:18px;padding:0;border:none;background:transparent;color:var(--fg-faint);border-radius:5px;cursor:pointer}
.sb-theme:hover{background:var(--hover);color:var(--fg);box-shadow:0 0 6px var(--glow)}
.statusbar .gdot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block}

/* popover (add connection) */
.pop-wrap{position:absolute;top:46px;right:14px;z-index:50}
.popover{width:340px;background:var(--panel);border:1px solid var(--border2);border-radius:12px;box-shadow:0 16px 48px rgba(0,0,0,.5);padding:16px}
.popover h3{margin:0 0 12px;font-size:14px}
.field label{display:block;font-size:11px;color:var(--fg-dim);margin-bottom:4px}
.field input,.field select,.modal .field input,.modal .field select{width:100%;background:var(--bg);border:1px solid var(--border2);color:var(--fg);border-radius:7px;padding:7px 10px;font-size:12.5px;outline:none}
.field input:focus,.field select:focus{border-color:var(--accent)}
.field{margin-bottom:10px}
.field.mono input{font-family:var(--mono)}
.pop-row{display:grid;grid-template-columns:1fr 110px;gap:10px}
.pop-actions{display:flex;align-items:center;gap:10px;margin-top:6px}
.btn{border:1px solid var(--border2);background:var(--bg2);color:var(--fg);border-radius:7px;padding:7px 14px;font-size:12.5px}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--grad);border:none;color:#15151a;font-weight:600}
.btn.primary:hover{filter:brightness(1.06)}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.btn-green{background:var(--grad);border:none;color:#15151a;border-radius:7px;padding:7px 16px;font-size:12.5px;font-weight:600;margin-left:auto;box-shadow:0 0 10px var(--glow)}
.btn-green:hover{filter:brightness(1.06)}
.ok{color:var(--green);font-size:12px}

/* modal (add account) */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:100}
.modal{width:760px;max-width:94vw;max-height:90vh;background:var(--panel);border:1px solid var(--border2);border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.6);display:flex;flex-direction:column;overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.modal-head h3{margin:0;font-size:16px}
.modal-head .x{background:none;border:none;color:var(--fg-dim);font-size:18px}
.modal-body{padding:18px 20px;overflow:auto}
.section-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-faint);font-weight:700;margin:18px 0 10px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field .hint{color:var(--fg-faint);font-weight:400;text-transform:none;letter-spacing:0}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}
.sym-chk{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--fg2);margin-bottom:10px;cursor:pointer}
.sym-chk input{width:14px;height:14px;accent-color:var(--accent)}
.modal-err{margin-top:10px;color:#e06a6a;font-size:12px;background:rgba(224,106,106,.08);border:1px solid rgba(224,106,106,.3);border-radius:7px;padding:7px 10px}
/* feed dialog: symbol-mapping rows (upstream → internal) */
.fd-map{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}
.fd-map-row{display:flex;align-items:center;gap:8px}
.fd-map-row input{flex:1;min-width:0}
.fd-map-row select{flex:1;min-width:0;background:var(--bg);border:1px solid var(--border2);color:var(--fg-dim);border-radius:7px;padding:7px 10px;font-size:12.5px;outline:none}
.fd-map-row select.on{border-color:#9b7cff;color:#cbb6ff}
.fd-map-row select:focus{border-color:var(--accent)}
.fd-arrow{color:#9b7cff;font-family:var(--mono)}
.fd-map-row .lnk{background:none;border:none;color:var(--tx-dim2);font-size:16px;cursor:pointer;width:24px}
.fd-map-row .lnk.danger:hover{color:#e06a6a}
.fd-addmap{align-self:flex-start;display:inline-flex;align-items:center;gap:6px}
.btn-grad{border:none;color:#15151a;border-radius:8px;padding:8px 20px;font-size:13px;font-weight:600;background:var(--grad);box-shadow:0 0 12px var(--glow)}
.btn-grad:hover{filter:brightness(1.08)}
.empty{color:var(--fg-dim);font-size:13px;margin:40px auto;text-align:center}

/* chat */
.chatwrap{display:flex;flex-direction:column;height:calc(100vh - 220px);min-height:280px}
.chatlog{flex:1;overflow:auto;border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--panel)}
.chatline{font-size:12.5px;line-height:1.6;margin-bottom:3px}
.chatmeta{color:var(--fg-faint);font-size:10.5px}
.chatrow{display:flex;gap:8px;margin-top:10px}
.chatrow input{flex:1;background:var(--bg);border:1px solid var(--border2);color:var(--fg);border-radius:8px;padding:8px 11px;font-size:13px}
.vinput{flex:1;background:var(--bg);border:1px solid var(--border2);color:var(--fg);border-radius:7px;padding:7px 10px;font-size:12.5px}

/* Blazor's unhandled-error bar: hidden by default, shown (inline display:block) only when the
   runtime hits a real error. This app replaced the template app.css, so the rule lived nowhere. */
#blazor-error-ui{display:none;position:fixed;left:0;right:0;bottom:0;z-index:1000;padding:9px 18px;font-size:13px;background:#b3261e;color:#fff;box-shadow:0 -1px 4px rgba(0,0,0,.35)}
#blazor-error-ui .reload{color:#fff;text-decoration:underline;margin-left:10px}

/* ════════ v2 design migration ════════ */

/* titlebar — brighter logo + green role pill */
.logo{width:24px;height:24px;filter:drop-shadow(0 0 5px var(--logo-glow)) drop-shadow(0 0 1px var(--logo-glow))}
.rolepill.green{color:#7ee0a0;border-color:rgba(63,185,80,.35);background:rgba(63,185,80,.10)}
.rolepill.green:hover{background:rgba(63,185,80,.16)}
.rolepill.green .rdot{background:var(--green)}

/* ── bottom dock (TERMINAL / LOGS + SCOPE) ── */
.dock{display:flex;flex-direction:column;flex:0 0 228px;height:228px;min-height:0;background:var(--bg);border-top:1px solid var(--surf2)}
.dock-head{display:flex;align-items:center;justify-content:space-between;height:34px;flex:0 0 34px;padding:0 8px 0 16px;border-bottom:1px solid var(--surf1)}
.dock-tabs{display:flex;align-items:center;gap:2px;height:100%}
.dock-tab{position:relative;display:inline-flex;align-items:center;gap:7px;height:100%;padding:0 10px;border:none;background:transparent;color:var(--fg-faint);font-size:11px;font-weight:600;letter-spacing:.7px;font-family:var(--mono)}
.dock-tab .dt-i{display:inline-flex;color:var(--fg-faint)}
.dock-tab:hover{color:var(--fg-dim)}
.dock-tab.active{color:var(--fg2)}
.dock-tab.active .dt-i{color:var(--fg2)}
.dock-tab.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--grad)}
.dock-actions{display:flex;align-items:center;gap:2px}
.dock-actions .iconbtn{width:24px;height:24px}
.dock-body{flex:1;display:flex;min-height:0;overflow:hidden}
.dock-logs{flex:1;overflow-y:auto;padding:8px 16px;min-width:0}
.logline{font-family:var(--mono);font-size:11.5px;line-height:1.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.logline .lt{color:var(--fg-faint)}
.logline .ll{font-weight:700}
.logline .ll-info{color:#3fb950}
.logline .ll-warn{color:var(--yellow)}
.logline .ll-err{color:var(--red)}
.logline .ll-dbg{color:var(--gray)}
.logline .lsrc{color:var(--accent)}
.logline .lmsg{color:var(--tx2)}
.dock-scope{flex:0 0 188px;border-left:1px solid var(--surf2);padding:8px 0;overflow-y:auto}
.scope-h{font-size:9.5px;font-weight:600;letter-spacing:1.2px;color:var(--tx-faint2);font-family:var(--mono);padding:2px 16px 8px}
.scope-row{position:relative;display:flex;align-items:center;gap:9px;height:27px;padding:0 16px;font-size:12px;color:var(--fg-dim);font-family:var(--mono);cursor:pointer}
.scope-row:hover{background:var(--hover)}
.scope-row.active{background:var(--sel);color:var(--fg2)}
.scope-row.active::before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:2px;border-radius:2px;background:var(--grad)}
.scope-row .sdot{width:7px;height:7px;border-radius:50%;flex:0 0 7px}
.dock-term{flex:1;overflow-y:auto;padding:10px 16px;font-family:var(--mono);font-size:12px;line-height:1.7;color:var(--fg)}
.dock-term .tprompt{display:flex;align-items:center;gap:8px}
.dock-term .tcar{width:7px;height:14px;background:var(--fg);display:inline-block;animation:vs-blink 1.1s step-end infinite}
.dock-term .term-line{white-space:pre-wrap;word-break:break-word;color:var(--fg)}
.dock-term .term-in{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--fg);font-family:var(--mono);font-size:12px;caret-color:var(--accent);padding:0}
.dock-term .term-in::placeholder{color:var(--fg-dim)}
.dock-term .term-in:disabled{color:var(--fg-dim);cursor:not-allowed}
@keyframes vs-blink{50%{opacity:0}}

/* ── Per-connection lifecycle controls (sidebar) ── */
.conn-act{display:flex;gap:6px;flex-wrap:wrap;padding:5px 10px 8px 30px}
.ca-btn{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:6px;background:var(--panel);border:1px solid var(--border);color:var(--fg-dim);font-size:11.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.ca-btn:hover{background:var(--surf2);color:var(--fg2)}
.ca-start{color:#7ee0a0;border-color:rgba(63,185,80,.4)}
.ca-start:hover{background:rgba(63,185,80,.12);color:#8fe7ad}
.ca-stop{color:#e0a06a;border-color:rgba(196,120,60,.45)}
.ca-stop:hover{background:rgba(196,120,60,.14);color:#eab27e}
.ca-del{color:#e08a86;border-color:rgba(181,72,68,.45)}
.ca-del:hover{background:rgba(181,72,68,.14);color:#ec9b97}

/* ── Me identity card + notification settings ── */
.statline{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-faint);font-family:var(--mono);font-weight:600;margin-bottom:6px}
.statline .live{display:inline-flex;align-items:center;gap:5px;color:#7ef0a6;text-transform:none;letter-spacing:.3px}
.statline .live .d{width:6px;height:6px;border-radius:50%;background:#7ef0a6;display:inline-block}
.statline .sub{color:var(--fg-faint);text-transform:none;letter-spacing:.2px}
.id-card{display:flex;align-items:center;gap:16px;border:1px solid var(--border);border-radius:14px;background:var(--panel);padding:18px 22px 18px 20px;max-width:560px}
.id-stop{margin-left:auto;display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 13px;border-radius:8px;background:rgb(181,72,68);border:1px solid rgb(196,86,82);color:#fff;font-size:13px;font-weight:600;white-space:nowrap}
.id-avatar{width:52px;height:52px;border-radius:14px;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff;flex:0 0 52px}
.id-main{display:flex;flex-direction:column;gap:9px;min-width:0}
.id-uid{font-size:24px;font-weight:700;color:var(--fg2);font-family:var(--mono);letter-spacing:-.5px;line-height:1}
.id-meta{display:flex;align-items:center;gap:12px}
.id-pill{display:inline-flex;align-items:center;height:22px;padding:0 11px;border-radius:7px;background:rgba(63,185,80,.12);border:1px solid rgba(63,185,80,.35);color:#7ee0a0;font-size:12px;font-weight:600}
.id-conn{display:inline-flex;align-items:center;gap:8px;color:var(--fg-dim);font-size:13px}
.id-cdot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.id-note{display:flex;align-items:center;gap:8px;color:var(--fg-faint);font-size:12px;margin-top:14px;font-family:var(--mono)}
.id-kv{max-width:560px;margin-top:10px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.id-kv-h{padding:16px 16px 7px;font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:1px;color:var(--tx-faint2);background:var(--bg);border-top:1px solid var(--border-tb)}
.id-kv-h.first{padding-top:10px;border-top:none}
.id-kv-row{display:flex;border-top:1px solid var(--border-tb)}
.id-kv-row.afterhead{border-top:none}
.id-kv-k{flex:0 0 180px;padding:11px 16px;font-family:var(--mono);font-size:12px;color:var(--fg-faint);background:var(--panel);border-right:1px solid var(--border)}
.id-kv-v{flex:1;padding:11px 16px;font-family:var(--mono);font-size:12.5px;color:var(--fg)}

/* ── Heartbeat → Ping latency ── */
.pl-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;max-width:760px;margin-bottom:16px}
.pl-card{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:16px 18px}
.pl-card .k{font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint);font-family:var(--mono);margin-bottom:12px}
.pl-card .v{font-family:var(--mono);font-size:26px;font-weight:600;color:var(--fg2)}
.pl-card .v .u{font-size:14px;color:var(--fg-dim);margin-left:4px}
.pl-chart{border:1px solid var(--border);border-radius:12px;background:var(--panel);max-width:760px;overflow:hidden}
.pl-chead{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 4px}
.pl-chead .l{font-size:10.5px;letter-spacing:.8px;color:var(--tx-dim2);font-family:var(--mono);font-weight:600}
.pl-chead .v{font-family:var(--mono);font-size:13px;color:var(--green)}
.pl-svg svg{display:block;width:100%;height:120px}

/* ── Group messaging: view toggles, chat composer, mailbox ── */
.gv-head{display:flex;align-items:flex-start;justify-content:space-between;max-width:840px}
.viewtoggle{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--border2);border-radius:9px;padding:3px;background:var(--panel)}
.viewtoggle button{width:32px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--fg-dim);border-radius:6px}
.viewtoggle button:hover{color:var(--fg);background:var(--hover)}
.viewtoggle button.active{background:var(--sel);color:var(--fg2)}
/* v3 group ROOM (members) — role-grouped presence pills */
.gv-room{max-width:720px;margin-top:18px}
.gv-presence{display:flex;align-items:center;gap:6px;margin-bottom:18px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim2)}
.gv-pdot{width:7px;height:7px;border-radius:50%;background:#3fb950;flex:0 0 7px}
.gv-rsec{margin-bottom:20px}
.gv-rlabel{font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:1px;color:var(--tx-faint2);margin-bottom:9px}
.gv-pills{display:flex;flex-wrap:wrap;gap:6px}
.gv-pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:6px;font-family:var(--mono);font-size:11px;font-weight:500;background:transparent;border:1px solid var(--chip);color:var(--tx-faint2)}
.gv-pill.on{border-color:rgba(63,185,80,.45);color:#cfe9d6}
.gv-dot{width:5px;height:5px;border-radius:50%;flex:0 0 auto;background:var(--border3)}
.gv-pill.on .gv-dot{background:#3fb950}
.gv-none{font-family:var(--mono);font-size:11px;color:var(--border4)}
/* v3 group DIRECT messages — two-pane (clients list + thread) */
.gv-direct{max-width:980px;display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;height:62vh;min-height:320px;background:var(--bg2);margin-top:14px}
.gv-direct .gd-list{flex:0 0 200px;border-right:1px solid var(--border-tb);display:flex;flex-direction:column;overflow:hidden}
.gv-direct .gd-lh{flex:0 0 auto;padding:11px 13px;font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:1px;color:var(--tx-faint2);border-bottom:1px solid var(--border-tb)}
.gv-direct .gd-lbody{flex:1;overflow-y:auto}
.gv-direct .gd-urow{display:flex;align-items:center;gap:8px;padding:9px 13px;cursor:pointer}
.gv-direct .gd-urow:hover{background:var(--hover)}
.gv-direct .gd-urow.sel{background:var(--surf1)}
.gv-direct .gd-udot{width:6px;height:6px;border-radius:50%;background:#3fb950;flex:0 0 auto}
.gv-direct .gd-ulogin{font-family:var(--mono);font-size:12px;color:var(--fg)}
.gv-direct .gd-empty{padding:16px 13px;font-family:var(--mono);font-size:11px;color:var(--tx-faint2)}
.gv-direct .gd-thread{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.gv-direct .gd-th-head{flex:0 0 auto;padding:11px 15px;border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:12px;color:var(--fg)}
.gv-direct .gd-th-user{color:#9b7cff;font-weight:600}
.gv-direct .gd-th-body{flex:1;overflow-y:auto;padding:14px 15px;display:flex;flex-direction:column;gap:11px;min-height:0}
.gv-direct .gd-th-empty{margin:auto;font-family:var(--mono);font-size:11px;color:var(--tx-faint2)}
.gv-direct .gd-bubble{display:inline-block;max-width:80%;padding:8px 11px;background:var(--surf2);border:1px solid var(--border2);border-radius:8px;font-size:12.5px;color:var(--fg)}
.gv-direct .gd-compose{flex:0 0 auto;padding:10px 14px;border-top:1px solid var(--border-tb);display:flex;align-items:center;gap:9px}
.gv-direct .gd-compose input{flex:1;height:38px;padding:0 11px;background:var(--surf2);border:1px solid var(--border2);border-radius:8px;font-family:var(--mono);font-size:12.5px;color:var(--fg)}
.gchat{display:flex;flex-direction:column;max-width:840px}
.gchat-hd{border:1px solid var(--border);border-radius:10px;background:var(--panel);padding:13px 16px;margin-bottom:10px}
.gchat-hd .t{font-size:11px;letter-spacing:1px;color:var(--fg-faint);font-family:var(--mono);font-weight:600}
.gchat-hd .s{color:var(--fg-dim);font-weight:400;letter-spacing:0;text-transform:none;font-family:var(--mono)}
.vs-chat-scroll{flex:1;min-height:90px;border:1px solid var(--border);border-radius:10px;background:var(--panel);padding:14px 16px;overflow-y:auto}
.vsm-empty{color:var(--fg-faint);font-size:12px;font-family:var(--mono)}
.vsm-line{font-size:12.5px;line-height:1.6;margin-bottom:4px}
.vsm-line .who{font-weight:700;color:var(--accent)}
.vsm-line .meta{color:var(--fg-faint);font-size:10.5px;font-family:var(--mono)}
.vsm-bar{display:flex;align-items:center;gap:10px;margin-top:10px}
.vsm-bar input{flex:1;height:40px;background:var(--bg);border:1px solid var(--border2);color:var(--fg);border-radius:10px;padding:0 14px;font-size:13px;outline:none}
.vsm-bar input:focus{border-color:var(--accent)}
.vsm-cta{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 18px;border:none;border-radius:10px;background:var(--grad);color:#15151a;font-size:13px;font-weight:600;box-shadow:0 0 12px var(--glow)}
.mb-top{display:flex;align-items:center;justify-content:flex-end;max-width:840px;margin-bottom:10px}
.mb-new{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;background:#238636;border:1px solid #2ea043;border-radius:8px;color:#fff;font-size:12.5px;font-weight:600}
.mbtable{max-width:840px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.mbtable .mh{display:flex;height:30px;align-items:center;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);letter-spacing:.3px}
.mbtable .mr{display:flex;height:38px;align-items:center;padding:0 16px;font-size:12.5px;border-top:1px solid var(--border-soft);cursor:pointer}
.mbtable .mr:hover{background:var(--surf0)}
.mb-from{flex:0 0 90px;color:var(--fg2);font-family:var(--mono)}
.mb-time{flex:0 0 90px;color:var(--tx-dim2);font-family:var(--mono)}
.mb-subj{flex:1;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-type{flex:0 0 80px;color:var(--fg-dim);font-family:var(--mono)}
.mb-act{flex:0 0 110px;display:flex;justify-content:flex-end;gap:12px}
.mb-act .uact{background:none;border:none;color:var(--fg-dim);cursor:pointer;display:inline-flex}
.mb-act .uact:hover{color:var(--fg)}
.mb-act .uact.danger:hover{color:var(--red)}
.mb-empty{padding:22px 16px;text-align:center;color:var(--tx-faint2);font-family:var(--mono);font-size:12px;border-top:1px solid var(--border-soft)}
.mbd-sub{color:var(--fg-dim);font-family:var(--mono);font-size:12px;margin:2px 0 14px}
.mbd-body{color:var(--fg);font-size:13px;line-height:1.6}

/* ════════ v3 design migration ════════ */

/* ── Wallet ── */
.wl-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:16px}
.wl-head .view-title{margin:0 0 8px}
.wl-sub{font-family:var(--mono);font-size:13px;color:var(--fg-dim)}
.wl-sub .wl-bal{color:var(--green);font-weight:600}
.wl-pathrow{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.wl-path{display:inline-flex;align-items:center;height:26px;padding:0 11px;border:1px solid var(--border);border-radius:7px;background:var(--panel);font-family:var(--mono);font-size:12.5px;font-weight:600;letter-spacing:.4px;color:var(--fg2)}
.wl-iconbtn{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--fg-dim);cursor:pointer}
.wl-iconbtn:hover{color:var(--fg);background:var(--hover);border-color:var(--accent)}
.wl-tabs{display:inline-flex;align-items:center;gap:3px;flex:0 0 auto}
.wl-tabs button{height:30px;padding:0 11px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--fg-dim);font-size:12.5px;font-weight:500}
.wl-tabs button:hover{color:var(--fg);background:var(--hover)}
.wl-tabs button.active{background:var(--grad);color:#15151a;font-weight:600;border-color:transparent;box-shadow:0 0 8px var(--glow)}
.wl-table{max-width:none;border:none;border-radius:0;overflow:hidden}
.wl-table .wl-h{display:flex;align-items:center;height:28px;padding:0 16px 0 34px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:11px;color:var(--fg-faint);letter-spacing:.3px}
.wl-table .wl-r{position:relative;display:flex;align-items:center;min-height:28px;padding:0 16px 0 34px;font-family:var(--mono);font-size:12.5px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.wl-table .c-time{flex:0 0 148px;color:var(--fg);white-space:nowrap}
.wl-table .c-deal{flex:0 0 70px;color:var(--fg-dim)}
.wl-table .c-type{flex:0 0 200px;color:var(--fg)}
.wl-table .c-amt{flex:1;text-align:right;font-variant-numeric:tabular-nums}
.wl-table .c-amt.pos{color:var(--green)}
.wl-table .c-amt.neg{color:var(--red)}
.wl-sign{position:absolute;left:14px;width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.wl-sign.pos{background:rgba(63,185,80,.85)}
.wl-sign.neg{background:rgba(240,106,106,.85)}
.wl-empty{padding:22px 16px;text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--fg-faint);border-top:1px solid var(--border-soft)}
.wl-foot{display:flex;align-items:center;gap:9px;height:40px;padding:0 16px;font-family:var(--mono);font-size:12px;color:var(--fg-dim);border-top:1px solid var(--border)}
.wl-fdot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:0 0 7px}
/* Transfers view (internal account↔person transfer ledger) */
.tf-table{border:none}
.tf-h,.tf-r{display:grid;grid-template-columns:150px 130px 150px 1fr 1fr 130px 1fr;gap:12px;align-items:center;padding:0 16px;font-family:var(--mono);font-size:12.5px}
.tf-h{height:28px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:11px;color:var(--fg-faint);letter-spacing:.3px}
.tf-r{min-height:30px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.tf-r:hover{background:var(--hover)}
.tf-r .c-time{color:var(--fg);white-space:nowrap}
.tf-r .c-actor{color:var(--fg)}
.tf-r .c-dir{color:var(--fg-dim)}
.tf-r .c-from,.tf-r .c-to{color:var(--fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tf-r .c-amt{text-align:right;font-variant-numeric:tabular-nums}
.tf-r .c-amt.pos{color:var(--green)}
.tf-r .c-note{color:var(--fg-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Search multi-select combined-transactions table */
.mw-table{border:none}
.mw-h,.mw-r{display:grid;grid-template-columns:minmax(180px,1.4fr) 150px 90px 200px 1fr;gap:12px;align-items:center;padding:0 16px;font-family:var(--mono);font-size:12.5px}
.mw-h{height:28px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:11px;color:var(--fg-faint);letter-spacing:.3px}
.mw-r{min-height:30px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.mw-r:hover{background:var(--hover)}
.mw-r .c-wallet{color:var(--fg2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mw-r .c-time{color:var(--fg);white-space:nowrap}
.mw-r .c-deal{color:var(--fg-dim)}
.mw-r .c-type{color:var(--fg)}
.mw-r .c-amt{text-align:right;font-variant-numeric:tabular-nums}
.mw-r .c-amt.pos{color:var(--green)}
.mw-r .c-amt.neg{color:var(--red)}
.wb-selinfo{margin-right:auto;font-size:12px;color:var(--fg-faint)}

/* ── Wallet Analysis (walletflow — Admin/Service money-flow dashboard) ── */
.wf-titlerow{display:flex;align-items:center;gap:14px}
.wf-titlerow .view-title{margin:0 0 8px}
.wf-range{display:flex;gap:2px;font-family:var(--mono);font-size:10.5px;margin-left:auto}
.wf-range span{padding:3px 10px;border:1px solid var(--border);border-radius:6px;color:var(--fg-dim);cursor:pointer;user-select:none}
.wf-range span:hover{color:var(--fg);background:var(--hover)}
.wf-range span.on{color:var(--fg2);background:var(--surf2);border-color:var(--border2)}
.wf-statline{font-family:var(--mono);font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--fg-faint);display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.wf-statline b{color:var(--fg)}
.wf-statline .sep{color:var(--border2)}
.wf-statline .gn{color:var(--green)}.wf-statline .rd{color:var(--red)}
.wf-statline .yl{color:var(--yellow)}.wf-statline .aq{color:#5ad0c8}
.wf-tabs{display:flex;gap:2px;margin:6px 0 14px;border-bottom:1px solid var(--border);padding:0 2px}
.wf-tab{font-family:var(--mono);font-size:12px;color:var(--fg-dim);padding:7px 14px;border-radius:6px 6px 0 0;cursor:pointer;display:flex;gap:7px;align-items:center;user-select:none}
.wf-tab:hover{color:var(--fg);background:var(--hover)}
.wf-tab.act{color:var(--fg2);background:var(--panel);box-shadow:inset 0 -2px 0 var(--accent2);border:1px solid var(--border);border-bottom:none}
.wf-tab .n{font-size:10px;color:var(--fg-faint);background:var(--surf2);border-radius:8px;padding:0 6px}
.wf-tab .n.hot{color:var(--red);background:rgba(240,106,106,.12)}
.wf-click{cursor:pointer}
/* KPI tiles */
.wf-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.wf-tile{background:var(--surf0);border:1px solid var(--border);border-radius:9px;padding:11px 13px}
.wf-tile.wf-click:hover{background:var(--hover);border-color:var(--border2)}
.wf-tile .l{font-family:var(--mono);font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint)}
.wf-tile .v{font-family:var(--mono);font-size:17px;color:var(--fg2);font-weight:600;margin-top:3px;font-variant-numeric:tabular-nums}
.wf-tile .d{font-family:var(--mono);font-size:10px;margin-top:3px;color:var(--fg-faint)}
.wf-tile .v.gn{color:var(--green)}.wf-tile .v.rd{color:var(--red)}.wf-tile .v.yl{color:var(--yellow)}
/* panes + pool bar */
.wf-pane{background:var(--surf0);border:1px solid var(--border);border-radius:9px;padding:10px 12px;margin-bottom:12px}
.wf-pane .pt{font-family:var(--mono);font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint);margin-bottom:8px}
.wf-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wf-poolbar{display:flex;height:26px;border-radius:6px;overflow:hidden;border:1px solid var(--border2);margin:6px 0 8px;font-family:var(--mono);font-size:9.5px}
.wf-poolbar span{display:flex;align-items:center;justify-content:center;color:#000;font-weight:700;white-space:nowrap;overflow:hidden}
.wf-poollegend{display:flex;gap:16px;font-family:var(--mono);font-size:10px;color:var(--fg-faint);flex-wrap:wrap}
.wf-poollegend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}
.wf-bars{width:100%;height:70px;display:block}
.wf-barlabels{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9.5px;color:var(--fg-faint);margin-top:2px}
/* flow map */
.wf-flowmap{display:grid;grid-template-columns:1fr 52px 1.25fr 62px 1fr;gap:8px;align-items:stretch}
.wf-col{display:flex;flex-direction:column;gap:8px}
.wf-colhead{font-family:var(--mono);font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint);text-align:center}
.wf-node{background:var(--surf1);border:1px solid var(--border2);border-radius:8px;padding:8px 10px}
.wf-node.wf-click:hover{background:var(--hover)}
.wf-node .nl{font-family:var(--mono);font-size:10px;color:var(--fg);font-weight:600}
.wf-node .nv{font-family:var(--mono);font-size:13px;color:var(--fg2);font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums}
.wf-node .nv.gn{color:var(--green)}.wf-node .nv.rd{color:var(--red)}.wf-node .nv.yl{color:var(--yellow)}
.wf-node .nd{font-family:var(--mono);font-size:9px;color:var(--fg-faint);margin-top:2px;line-height:1.5}
.wf-node.ext{border-style:dashed;background:var(--surf0)}
.wf-node.house{border-color:rgba(210,153,34,.45)}
.wf-node.house .nl{color:var(--yellow)}
.wf-arrows{display:flex;flex-direction:column;justify-content:center;gap:12px;font-family:var(--mono);font-size:9px;color:var(--fg-faint);text-align:center}
.wf-arrows .a{line-height:1.35;white-space:nowrap}
.wf-arrows .gn{color:var(--green)}.wf-arrows .rd{color:var(--red)}.wf-arrows .yl{color:var(--yellow)}
/* filter strip */
.wf-filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px;font-family:var(--mono);font-size:10.5px}
.wf-filters > span{border:1px solid var(--border);border-radius:6px;padding:3px 10px;color:var(--fg-dim);cursor:pointer;user-select:none}
.wf-filters > span:hover{color:var(--fg);background:var(--hover)}
.wf-filters > span.on{color:var(--fg2);background:var(--surf2);border-color:var(--border2)}
.wf-filters > span.x{color:#5ad0c8;border-color:rgba(90,208,200,.35)}
.wf-filters .wf-search{height:24px;padding:0 9px;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--fg);font-family:var(--mono);font-size:10.5px;min-width:210px}
.wf-filters .wf-sum{margin-left:auto;border:none;padding:0;cursor:default;color:var(--fg-faint)}
.wf-filters .wf-sum:hover{background:transparent;color:var(--fg-faint)}
.wf-filters .wf-sum b{color:var(--fg)}
.wf-filters .wf-sum b.pos,.wf-filters .wf-sum .pos{color:var(--green)}
.wf-filters .wf-sum b.neg,.wf-filters .wf-sum .neg{color:var(--red)}
.wf-filters .wf-sum b.yl{color:var(--yellow)}
/* generic analysis table (flex rows like wl-/tf-) */
.wf-table{border:none}
.wf-th,.wf-tr{display:flex;align-items:center;gap:12px;padding:0 12px;font-family:var(--mono);font-size:11.5px}
.wf-th{height:28px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:10px;color:var(--fg-faint);letter-spacing:.4px;text-transform:uppercase}
.wf-tr{min-height:28px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.wf-tr.wf-click:hover{background:var(--hover)}
.wf-table .pos{color:var(--green)}
.wf-table .neg{color:var(--red)}
.wf-table .dim{color:var(--fg-faint)}
.wf-table .yl{color:var(--yellow)}
.wf-table .aq{color:#5ad0c8}
.wf-table .c-t{flex:0 0 160px;color:var(--fg)}
.wf-table .c-n{flex:0 0 64px;text-align:right;color:var(--fg-dim)}
.wf-table .c-in,.wf-table .c-out,.wf-table .c-net,.wf-table .c-vol{flex:1;text-align:right;font-variant-numeric:tabular-nums}
.wf-table .c-from,.wf-table .c-to{flex:1.1;color:var(--fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-table .c-trend{flex:0 0 76px;text-align:right}
.wf-table .c-edge{flex:0 0 118px;text-align:right}
.wf-table .c-time{flex:0 0 132px;color:var(--fg);white-space:nowrap}
.wf-table .c-path{flex:1.2;color:var(--fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-table .c-owner{flex:1;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-table .c-kind{flex:0 0 66px}
.wf-table .c-type{flex:0 0 130px;color:var(--fg)}
.wf-table .c-deal{flex:1;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-table .c-amt{flex:0 0 120px;text-align:right;font-variant-numeric:tabular-nums}
.wf-table .c-rank{flex:0 0 28px}
.wf-table .c-share{flex:0 0 60px;text-align:right;color:var(--fg-dim)}
.wf-table .c-net{flex:0 0 110px;text-align:right}
.wf-table .c-spark{flex:0 0 78px;display:inline-flex;align-items:center}
.wf-table .c-last{flex:0 0 70px;text-align:right}

/* ── Wallet browse picker ── */
.wbm-body{display:flex;flex-direction:column;min-height:0;flex:1 1 auto;overflow:hidden}
.wb-count{font-size:12px;color:var(--fg-faint);font-weight:400}
.wbm-kinds{display:inline-flex;gap:3px;margin-bottom:10px;flex:0 0 auto}
.wbm-kinds button{height:28px;padding:0 13px;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--fg-dim);font-size:12.5px}
.wbm-kinds button:hover{color:var(--fg);background:var(--hover)}
.wbm-kinds button.active{background:var(--grad);color:#15151a;font-weight:600;border-color:transparent}
.wbm-search{position:relative;margin-bottom:12px;flex:0 0 auto}
.wbm-search input{width:100%;padding-left:32px}
.wbm-sicon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--fg-faint);display:inline-flex}
.wb-table{border:1px solid var(--border);border-radius:9px;overflow:hidden;display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.wb-h,.wb-r{display:grid;grid-template-columns:26px 1.1fr 1.2fr 90px 130px 70px;gap:10px;align-items:center;padding:0 14px;font-family:var(--mono);font-size:12.5px}
.wb-check{display:inline-flex;align-items:center;justify-content:center}
.wb-check input{width:14px;height:14px;margin:0;cursor:pointer;accent-color:#6aa9e0}
.wb-r.sel .wb-check input{accent-color:#15151a}
.wb-h{height:32px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:11px;color:var(--fg-faint);letter-spacing:.3px;flex:0 0 auto}
.wb-scroll{overflow-y:auto;min-height:0;flex:1 1 auto}
.wb-r{height:34px;color:var(--tx2);border-top:1px solid var(--border-soft);cursor:pointer}
.wb-r:hover{background:var(--hover)}
.wb-r.sel{background:var(--grad);color:#15151a}
.wb-r.sel .wb-path,.wb-r.sel .wb-login,.wb-r.sel .wb-role,.wb-r.sel .wb-bal,.wb-r.sel .wb-id,.wb-r.sel .wb-cur{color:#15151a}
.wb-path{color:var(--fg2);font-weight:600}
.wb-login{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-role{color:var(--fg-dim)}
.wb-bal{text-align:right;color:var(--fg2);font-variant-numeric:tabular-nums}
.wb-cur{color:var(--fg-faint);font-size:10.5px;margin-left:2px}
.wb-id{color:var(--fg-faint);text-align:right}
.wb-empty{padding:22px 16px;text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--fg-faint)}

/* ── Wallet operations dialog (MT5-style) ── */
.wop-path{font-family:var(--mono);font-size:12.5px;font-weight:600;color:var(--accent);margin-left:8px}
.wop-who{font-size:12px;color:var(--fg-faint);font-weight:400;margin-left:6px}
.wop-body{display:flex;flex-direction:column;min-height:0;flex:1 1 auto;overflow:hidden}
.wop-form{display:flex;flex-direction:column;gap:11px;padding-bottom:14px;border-bottom:1px solid var(--border-soft)}
.wop-frow{display:grid;grid-template-columns:96px 240px 1fr;align-items:center;gap:12px}
.wop-frow>label{font-size:12.5px;color:var(--fg-dim);text-align:right}
.wop-frow select,.wop-frow input{height:32px}
.wop-amt{font-family:var(--mono);font-size:13px;color:var(--fg2);font-weight:600}
.wop-check{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--fg-dim);margin-left:108px;cursor:pointer}
.wop-check input{width:15px;height:15px;flex:0 0 15px}
.wop-actions{display:flex;gap:10px;margin-left:108px;margin-top:3px}
.wop-in,.wop-out{height:34px;min-width:130px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid transparent;cursor:pointer}
.wop-in{background:linear-gradient(180deg,#3f7fd6,#3168b8);color:#fff;box-shadow:0 0 8px rgba(63,127,214,.35)}
.wop-in:hover{filter:brightness(1.1)}
.wop-out{background:linear-gradient(180deg,#d66a6a,#b84f4f);color:#fff;box-shadow:0 0 8px rgba(214,106,106,.3)}
.wop-out:hover{filter:brightness(1.1)}
.wop-foot{display:flex;align-items:center;gap:9px;height:40px;font-family:var(--mono);font-size:12px;color:var(--fg-dim)}
.wop-foot b{color:var(--fg2);font-weight:600;margin-right:6px}
.wop-tabhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:6px 0 8px}
.wop-tlabel{font-size:11px;font-weight:600;letter-spacing:.6px;color:var(--fg-faint);font-family:var(--mono);text-transform:uppercase}
.wop-tsub{font-weight:400;letter-spacing:0;text-transform:none;color:var(--fg-faint);opacity:.8}
.wop-clear{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border:1px solid var(--border);border-radius:7px;background:transparent;color:#d66a6a;font-size:12px;cursor:pointer}
.wop-clear:hover{background:rgba(214,106,106,.12);border-color:#d66a6a}
.wop-confirm{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--fg-dim);font-family:var(--mono)}
.wop-out.sm,.btn.sm{height:26px;min-width:0;padding:0 12px;font-size:12px}
.wop-table{border:1px solid var(--border);border-radius:9px;overflow:hidden;display:flex;flex-direction:column;min-height:0;flex:1 1 auto}
.wop-h,.wop-r{display:grid;grid-template-columns:160px 120px 1fr 140px;gap:8px;align-items:center;padding:0 14px;font-family:var(--mono);font-size:12.5px}
.wop-h{height:30px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:11px;color:var(--fg-faint);letter-spacing:.3px;flex:0 0 auto}
.wop-h .c-amt{text-align:right}
.wop-scroll{overflow-y:auto;min-height:120px;flex:1 1 auto}
.wop-r{height:30px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.wop-r .c-amt{text-align:right;font-variant-numeric:tabular-nums}
.wop-r .c-amt.pos{color:var(--green)}
.wop-r .c-amt.neg{color:var(--red)}
.wop-empty{padding:22px 16px;text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--fg-faint)}

/* ── Persons (KYC) ── */
.pp-sub{font-size:12px;font-weight:400;color:var(--fg-faint);font-family:var(--mono);margin-left:10px;letter-spacing:0}
.pp-count{font-family:var(--mono);font-size:11.5px;color:var(--fg-faint);margin:-15px 0 16px}
.pp-table{width:744px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.pp-table .pp-h{display:flex;align-items:center;height:30px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);letter-spacing:.4px}
.pp-table .pp-r{display:flex;align-items:center;height:39px;padding:0 16px;font-size:12.5px;color:var(--tx2);border-top:1px solid var(--border-soft);cursor:pointer}
.pp-table .pp-r:hover{background:var(--surf0)}
.pp-table .c-person{flex:0 0 240px;display:flex;align-items:center;gap:8px;min-width:0}
.pp-table .c-email{flex:0 0 0;color:var(--fg-dim);font-family:var(--mono);overflow:hidden;white-space:nowrap}
.pp-table .c-country{flex:0 0 130px;color:var(--fg)}
.pp-table .c-reg{flex:0 0 96px;color:var(--fg-dim);font-family:var(--mono)}
.pp-table .c-kyc{flex:0 0 96px}
.pp-table .c-kyc.ok{color:var(--green)}
.pp-table .c-kyc.pend{color:var(--yellow)}
.pp-table .c-kyc.rej{color:var(--red)}
.pp-table .c-acc{flex:0 0 150px;color:var(--fg-dim);font-family:var(--mono);white-space:nowrap}
.pp-av{width:28px;height:28px;border-radius:50%;background:var(--grad);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:10.5px;font-weight:700;font-family:var(--mono);flex:0 0 28px}
.pp-name{font-weight:600;color:var(--fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Person detail dialog ── */
.pp-dialog{width:760px;max-width:94vw;max-height:90vh;background:var(--panel);border:1px solid var(--border2);border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.6);display:flex;flex-direction:column;overflow:hidden}
.pp-d-head{display:flex;align-items:center;gap:14px;padding:16px 20px;border-bottom:1px solid var(--border)}
.pp-d-av{width:44px;height:44px;border-radius:50%;background:var(--grad);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:15px;font-weight:700;font-family:var(--mono);flex:0 0 44px}
.pp-d-id h3{margin:0;font-size:17px;color:var(--fg2)}
.pp-d-sub{font-family:var(--mono);font-size:12px;color:var(--fg-dim);margin-top:3px}
.pp-d-head .x{margin-left:auto;background:none;border:none;color:var(--fg-dim);font-size:18px;align-self:flex-start}
.pp-d-body{display:flex;min-height:360px}
.pp-d-nav{flex:0 0 168px;border-right:1px solid var(--border);padding:14px 12px;display:flex;flex-direction:column;gap:2px}
.pp-d-nav button{position:relative;text-align:left;height:30px;padding:0 12px;border:none;background:transparent;color:var(--fg-dim);font-size:13px;border-radius:7px}
.pp-d-nav button:hover{background:var(--hover);color:var(--fg)}
.pp-d-nav button.active{background:var(--sel);color:var(--fg2);font-weight:600}
.pp-d-nav button.active::before{content:"";position:absolute;left:0;top:5px;bottom:5px;width:2px;border-radius:2px;background:var(--grad)}
.pp-d-main{flex:1;padding:8px 4px}
.pp-d-row{display:flex;align-items:center;min-height:35px;padding:0 22px}
.pp-d-k{flex:0 0 170px;color:var(--fg-dim);font-size:13px}
.pp-d-v{flex:1;color:var(--fg2);font-size:13px}
.pp-d-foot{display:flex;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--border)}

/* ── Terminal-style chat (role + group) ── */
.vt{display:flex;flex-direction:column;max-width:872px;overflow:hidden;height:calc(100% - 2px)}
.vt-head{display:flex;align-items:center;gap:9px;height:40px;flex:0 0 40px;padding:0 16px 0 2px;border-bottom:1px solid var(--border-soft);font-family:var(--mono)}
.vt-dot{width:9px;height:9px;border-radius:2px;background:#e0608c;flex:0 0 9px}
.vt-title{font-size:13px;color:var(--fg2);font-weight:600}
.vt-dur{font-size:12px;color:var(--fg-faint)}
.vt-clear{margin-left:auto;background:none;border:none;color:var(--fg-faint);font-family:var(--mono);font-size:12px}
.vt-clear:hover{color:var(--fg-dim)}
.vt-compose{display:flex;align-items:center;gap:10px;height:44px;flex:0 0 44px;padding:0 16px 0 2px;border-bottom:1px solid var(--border-soft);font-family:var(--mono)}
.vt-prompt{color:var(--accent);font-size:14px}
.vt-compose input{flex:1;background:transparent;border:none;outline:none;color:var(--fg);font-family:var(--mono);font-size:13px}
.vt-compose input::placeholder{color:var(--fg-faint)}
.vt-send{background:none;border:none;color:var(--fg-faint);font-family:var(--mono);font-size:12px}
.vt-send:hover{color:var(--fg-dim)}
.vt-you{padding:8px 16px 8px 2px;font-family:var(--mono);font-size:11px;color:var(--fg-faint);border-bottom:1px solid var(--border-soft)}
.vt-msgs{flex:1;overflow-y:auto;padding:12px 16px 12px 2px;font-family:var(--mono);min-height:80px}
.vt-msg{margin-bottom:12px}
.vt-line{display:flex;align-items:center;gap:8px;font-size:12.5px;line-height:1.5}
.vt-when{color:var(--fg-faint)}
.vt-uid{color:#d8b24a;font-weight:700}
.vt-role{color:var(--fg-dim)}
.vt-text{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vt-x{margin-left:auto;color:var(--fg-faint);font-size:11px;cursor:pointer;flex:0 0 auto}
.vt-meta{margin-top:2px;font-size:11px;color:var(--tx-faint2)}
.vt-empty{color:var(--fg-faint);font-size:12.5px;font-family:var(--mono);padding:6px 0}

/* ════════ v4 design migration ════════ */

/* shared section header (eyebrow + title + right action) */
.sy-head,.sy-dhead{display:flex;align-items:flex-start;justify-content:space-between;max-width:880px;margin-bottom:6px}
.sy-head .btn-add{flex:0 0 auto}
.df-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
/* segmented toggle (Selected/Available, Time/Holidays) */
.seg{display:flex;align-items:center;gap:3px;background:var(--surf1);border:1px solid var(--chip);border-radius:9px;padding:2px}
.seg button{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border:none;background:transparent;color:var(--fg-dim);border-radius:7px;font-size:12px}
.seg button:hover{color:var(--fg)}
.seg button.active{background:var(--bg2);color:var(--fg2);border:1px solid var(--border2);font-weight:600}

/* ── Symbols list ── */
.sy-count{font-family:var(--mono);font-size:11.5px;color:var(--fg-faint);margin:6px 0 16px}
.sy-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:880px}
.sy-h{display:flex;align-items:center;height:30px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.3px;text-transform:uppercase}
.sy-r{display:flex;align-items:center;height:34px;padding:0 14px;font-size:12px;color:var(--tx2);border-top:1px solid var(--border-soft);cursor:pointer}
.sy-r:hover{background:var(--surf1)}
.sy-h .c-sym,.sy-r .c-sym{flex:0 0 128px;display:flex;align-items:center;gap:8px;min-width:0}
.sy-h .c-desc,.sy-r .c-desc{flex:1;min-width:130px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sy-h .c-dig,.sy-r .c-dig{flex:0 0 56px;text-align:right;font-family:var(--mono)}
.sy-h .c-typ,.sy-r .c-typ{flex:0 0 72px;padding-left:16px;font-family:var(--mono);color:var(--fg-dim)}
.sy-h .c-exec,.sy-r .c-exec{flex:0 0 90px;font-family:var(--mono);color:var(--fg-dim)}
.sy-h .c-exp,.sy-r .c-exp{flex:0 0 96px;font-family:var(--mono);color:var(--fg-faint)}
.sy-h .c-grp,.sy-r .c-grp{flex:0 0 160px;display:flex;align-items:center;gap:5px;overflow:hidden}
.sy-h .c-bg,.sy-r .c-bg{flex:0 0 92px;display:flex;align-items:center;gap:7px;font-family:var(--mono);color:var(--fg-dim)}
.sy-ic{display:inline-flex;color:#d8b24a;flex:0 0 auto}
.sy-name{font-family:var(--mono);color:var(--fg2);font-weight:600}
.sy-pill{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:5px;font-size:10.5px;background:rgba(63,185,80,.10);border:1px solid rgba(63,185,80,.30);color:#7ee0a0;white-space:nowrap}
.sy-swatch{width:11px;height:11px;border-radius:3px;background:var(--fg2);border:1px solid var(--border3);flex:0 0 11px}

/* ── Multi-group picker (account modal · managers) ── */
.grp-multi{display:flex;flex-wrap:wrap;gap:6px;padding:6px 2px}
.grp-chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:6px;font-size:11.5px;cursor:pointer;background:var(--bg3);border:1px solid var(--border3);color:var(--fg-dim);user-select:none}
.grp-chip:hover{border-color:var(--fg-faint)}
.grp-chip .grp-dot{width:8px;height:8px;border-radius:50%;background:var(--border3)}
.grp-chip.on{background:rgba(63,185,80,.12);border-color:rgba(63,185,80,.35);color:#7ee0a0}
.grp-chip.on .grp-dot{background:#3fb950}
.grp-none{font-size:11px;color:var(--fg-faint);font-style:italic}
.sy-note{font-family:var(--mono);font-size:11px;color:var(--fg-faint);margin-top:12px}

/* ── Symbol detail ── */
.sy-ddesc{font-size:12.5px;color:var(--fg-dim);margin-top:2px}
.sy-dgroups{display:flex;align-items:center;gap:7px;margin:14px 0;font-family:var(--mono)}
.sy-glabel{font-size:10px;font-weight:600;letter-spacing:1px;color:var(--fg-faint);margin-right:4px}
.sy-pill.on{height:22px;padding:0 10px;background:rgba(63,185,80,.12);border-color:rgba(63,185,80,.35);font-size:11.5px}
.sy-dtabs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:14px}
.sy-dtabs button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border:none;background:transparent;color:var(--fg-dim);border-radius:7px;font-size:12.5px;white-space:nowrap}
.sy-dtabs button svg{flex:0 0 auto}
.sy-dtabs button:hover{color:var(--fg);background:var(--hover)}
.sy-dtabs button.active{background:var(--surf2);color:var(--fg2);border:1px solid var(--border2);font-weight:600}
.sy-dkv{max-width:880px}
.sy-dkv-row{display:grid;grid-template-columns:150px 1fr 150px 1fr;align-items:center;min-height:36px;border-top:1px solid var(--border-soft)}
.sy-dk{color:var(--fg-dim);font-size:12.5px;padding:8px 0}
.sy-dv{color:var(--fg2);font-size:12.5px;font-family:var(--mono);text-align:right;padding:8px 24px 8px 0}

/* ── Data Feeds ── */
.df-intro{font-size:12px;color:var(--fg-faint);max-width:760px;margin-bottom:16px}
.df-ro{display:flex;align-items:center;gap:7px;margin-bottom:16px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}
.df-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:880px}
.df-h{display:flex;align-items:center;height:32px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.3px}
.df-r{display:flex;align-items:center;min-height:48px;padding:0 16px;font-family:var(--mono);font-size:12.5px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.df-h .c-name,.df-r .c-name{flex:1;min-width:200px;display:flex;align-items:center;gap:9px;color:var(--fg2)}
.df-h .c-src,.df-r .c-src{flex:0 0 70px;color:var(--fg-dim)}
.df-h .c-srv,.df-r .c-srv{flex:0 0 200px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.df-h .c-syms,.df-r .c-syms{flex:0 0 90px;color:#9b7cff;text-align:right}
.df-ic{display:inline-flex;color:#6aa9e0}
.df-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:880px}
.df-card{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:16px 18px}
.df-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.df-card-ic{display:inline-flex;color:#6aa9e0}
.df-badge{font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.5px;color:var(--fg-dim);background:var(--surf2);border:1px solid var(--border2);border-radius:5px;padding:3px 6px}
.df-card-name{font-size:14px;font-weight:600;color:var(--fg2);margin-bottom:7px}
.df-card-desc{font-size:12px;color:var(--fg-dim);line-height:1.45;margin-bottom:14px}
.df-card-build{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}
.feed-status{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--fg-faint)}

/* v5 live data-feed runtime: wider table (status/rate/actions), status pills, live-ticks terminal */
.df-table{max-width:1080px}
.df-h .c-srv,.df-r .c-srv{flex:0 0 150px}
.df-h .c-rate,.df-r .c-rate{flex:0 0 64px;color:var(--fg-dim);text-align:right}
.df-h .c-stat,.df-r .c-stat{flex:0 0 96px;display:flex;justify-content:center}
.df-h .c-act,.df-r .c-act{flex:0 0 200px;display:flex;gap:10px;justify-content:flex-end;align-items:center}
.feed-pill{font-family:var(--mono);font-size:10px;letter-spacing:.4px;border:1px solid var(--border2);border-radius:999px;padding:2px 9px}
.df-r .lnk{background:none;border:none;color:var(--fg-dim);font-size:11.5px;padding:0;cursor:pointer}
.df-r .lnk:hover{color:var(--fg2)}
.df-r .lnk.on{color:var(--green)}
.df-r .lnk.danger:hover{color:#e06a6a}
.tk-meta{display:flex;align-items:center;gap:14px;margin-top:6px;font-family:var(--mono);font-size:11px;color:var(--fg-dim)}
.tk-meta .tk-rate{color:var(--green)}
.tk-meta .tk-src{color:var(--fg-faint)}
.tk-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:880px;background:var(--bg)}
.tk-h{display:flex;align-items:center;height:30px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.3px}
.tk-r{display:flex;align-items:center;height:26px;padding:0 16px;font-family:var(--mono);font-size:12px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.tk-h .c-sym,.tk-r .c-sym{flex:1;min-width:120px;color:var(--fg2)}
.tk-h .c-bid,.tk-r .c-bid,.tk-h .c-ask,.tk-r .c-ask,.tk-h .c-last,.tk-r .c-last{flex:0 0 110px;text-align:right}
.tk-r .c-bid{color:#e0a24a}
.tk-r .c-ask{color:#6aa9e0}
.tk-h .c-vol,.tk-r .c-vol{flex:0 0 80px;text-align:right;color:var(--fg-dim)}
.tk-h .c-dir,.tk-r .c-dir{flex:0 0 40px;text-align:center}
.tk-h .c-time,.tk-r .c-time{flex:0 0 80px;text-align:right;color:var(--fg-faint)}
.tk-map{margin-left:8px;color:#9b7cff;font-size:11px}
.tk-meta .tk-mapped{color:#9b7cff}

/* Market Depth (DOM) — order-book ladder */
.dom{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg)}
.dom-bar{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding:14px 22px;border-bottom:1px solid var(--border-soft)}
.dom-pick{display:flex;align-items:center;gap:8px}
.dom-pick label{font-family:var(--mono);font-size:10px;letter-spacing:.4px;color:var(--fg-faint);text-transform:uppercase}
.dom-pick select{background:var(--panel);color:var(--fg2);border:1px solid var(--border2);border-radius:7px;padding:5px 9px;font-size:12px;font-family:var(--mono);min-width:150px;max-width:340px}
.dom-pick select:disabled{opacity:.5}
.dom-summary{display:flex;align-items:center;gap:8px;margin-left:auto;font-family:var(--mono);font-size:12px}
.dom-s-lbl{font-size:10px;letter-spacing:.4px;color:var(--fg-faint)}
.dom-s-bid{color:var(--green);font-weight:600}
.dom-s-ask{color:var(--red);font-weight:600}
.dom-s-spr{color:var(--fg2)}
.dom-s-time{margin-left:10px;color:var(--fg-faint)}
.dom-body{flex:1;min-height:0;overflow:auto;padding:16px 22px}
.dom-empty{color:var(--fg-dim);font-size:13px;padding:26px 4px}
.dom-empty b{color:var(--fg2)}
.dom-hint{margin-top:8px;color:var(--fg-faint);font-size:12px;max-width:520px}
.dom-ladder{max-width:520px;border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--bg)}
.dom-lh,.dom-row{display:flex;align-items:center;height:26px;padding:0 14px;font-family:var(--mono);font-size:12px}
.dom-lh{height:28px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:10px;letter-spacing:.3px;color:var(--fg-faint)}
.dom-row{border-top:1px solid var(--border-soft);position:relative}
.dom-c-vol{flex:0 0 90px;text-align:right;color:var(--fg-dim)}
.dom-c-px{flex:0 0 110px;text-align:right;font-weight:600}
.dom-c-bar{flex:1;min-width:60px;margin-left:12px;height:12px;position:relative}
.dom-fill{position:absolute;top:0;right:0;height:100%;border-radius:3px 0 0 3px;opacity:.55}
.dom-row.ask .dom-c-px{color:var(--red)}
.dom-row.bid .dom-c-px{color:var(--green)}
.dom-fill.ask{background:var(--red)}
.dom-fill.bid{background:var(--green)}
.dom-mid{display:flex;align-items:center;justify-content:center;height:24px;background:var(--panel);border-top:1px solid var(--border-tb);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:11px;color:var(--fg-dim)}
.dom-mid span::before{content:"spread ";color:var(--fg-faint)}

/* ── Feed detail (institutional) — header stat chips ───────────────────────── */
.fhx-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.fhx-chip{display:flex;flex-direction:column;gap:3px;padding:7px 12px;border:1px solid var(--border);border-radius:9px;background:var(--panel);min-width:80px}
.fhx-chip.fhx-wide{min-width:0;flex:1 1 auto;max-width:440px}
.fhx-k{font-family:var(--mono);font-size:9px;letter-spacing:.6px;color:var(--fg-faint);text-transform:uppercase}
.fhx-v{font-size:14px;font-weight:600;color:var(--fg2);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fhx-v.fhx-live{color:var(--green)}
.fhx-sub{color:var(--fg-faint);font-weight:400;font-size:11px}

/* Feed detail — toolbar (search / count / legend) */
.fdx-tools{display:flex;align-items:center;gap:14px;margin:14px 0 8px;flex-wrap:wrap}
.fdx-search{display:flex;align-items:center;gap:7px;padding:0 10px;height:30px;border:1px solid var(--border2);border-radius:8px;background:var(--panel);color:var(--fg-dim);min-width:230px}
.fdx-search input{background:transparent;border:0;outline:0;color:var(--fg2);font-size:12px;font-family:var(--mono);flex:1;min-width:0}
.fdx-search .fdx-x{background:transparent;border:0;color:var(--fg-faint);cursor:pointer;font-size:12px;padding:0}
.fdx-depthsel{background:transparent;border:0;outline:0;color:var(--fg2);font-family:var(--mono);font-size:12px;min-width:180px;cursor:pointer}
.fdx-count{font-size:12px;color:var(--fg2)}
.fdx-count b{color:var(--fg2);font-weight:600}
/* Mappings toolbar — segmented show-filter + toggle chips + reset */
.fdx-seg{display:inline-flex;align-items:center;border:1px solid var(--border2);border-radius:8px;overflow:hidden;background:var(--panel)}
.fdx-seg button{height:30px;padding:0 12px;border:0;background:transparent;color:var(--fg-dim);font-size:11.5px;font-family:var(--mono);cursor:pointer;border-left:1px solid var(--border2)}
.fdx-seg button:first-child{border-left:0}
.fdx-seg button:hover{color:var(--fg2);background:var(--hover)}
.fdx-seg button.on{background:var(--surf2);color:var(--fg2);font-weight:600}
.fdx-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border:1px solid var(--border2);border-radius:8px;background:var(--panel);color:var(--fg-dim);font-size:11.5px;font-family:var(--mono);cursor:pointer}
.fdx-chip:hover{color:var(--fg2);background:var(--hover)}
.fdx-chip.on{border-color:#9b7cff;color:#cbb6ff;background:rgba(155,124,255,.1)}
.fdx-chip svg{flex:0 0 auto}
.fdx-reset{background:transparent;border:0;color:var(--fg-faint);cursor:pointer;font-size:11.5px;font-family:var(--mono);text-decoration:underline;padding:0}
.fdx-reset:hover{color:var(--fg2)}
/* Sortable column headers in the mappings table */
.fs-h .srt{display:inline-flex;align-items:center;gap:3px;cursor:pointer;user-select:none;color:inherit}
.fs-h .srt:hover{color:var(--fg2)}
.fs-h .srt.on{color:var(--fg2)}
.fs-h .srt .car{font-size:8px;opacity:.85;width:7px;display:inline-block}
.fdx-legend{margin-left:auto;display:flex;align-items:center;gap:4px;font-size:11px;color:var(--fg-faint);font-family:var(--mono)}
.fdx-dot{width:9px;height:9px;border-radius:2px;display:inline-block;margin-left:8px}
.fdx-dot.bid{background:var(--green)}.fdx-dot.ask{background:#e06a6a}
.tk-table.fdx-window{max-width:none}

/* Feed detail — Market Depth tab: order-book ladder + rolling depth tape */
.fdx-depthgrid{display:grid;grid-template-columns:minmax(360px,520px) 1fr;gap:16px;align-items:start}
.fdx-depthgrid .dom-ladder{max-width:none}
.dtape{border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--bg);min-width:0}
.dtape-h{display:flex;align-items:center;gap:7px;height:30px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;letter-spacing:.4px;color:var(--fg-faint)}
.dtape-tbl{max-height:560px;overflow:auto}
.dtape-hr,.dtape-r{display:flex;align-items:center;height:24px;padding:0 14px;font-family:var(--mono);font-size:11px}
.dtape-hr{height:26px;background:var(--bg2);border-bottom:1px solid var(--border-soft);color:var(--fg-faint);font-size:9px;letter-spacing:.3px;position:sticky;top:0}
.dtape-r{border-top:1px solid var(--border-soft);color:var(--fg-dim)}
.dtape-r:hover{background:var(--hover)}
.dtape .c-t{flex:0 0 92px}
.dtape .c-b{flex:0 0 82px;text-align:right;color:var(--green)}
.dtape .c-a{flex:0 0 82px;text-align:right;color:#e06a6a}
.dtape .c-s{flex:0 0 78px;text-align:right;color:var(--fg2)}
.dtape .c-l{flex:0 0 62px;text-align:right}
.dtape .c-v{flex:1;text-align:right;min-width:90px}
@media (max-width:1180px){.fdx-depthgrid{grid-template-columns:1fr}}

/* ── Feed detail — full-height layout + virtualization (2000+ symbols) ─────── */
/* The feedpage fills the viewport as a flex column; the active tab's table/window takes the remaining
   height and scrolls internally (Blazor <Virtualize> renders only the visible rows). */
.content.feedfull{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:18px 24px 16px 30px}
.content.feedfull .sy-head{max-width:none;margin-bottom:10px;flex:0 0 auto}
.content.feedfull .sy-dtabs{margin-bottom:12px;flex:0 0 auto}
.feedbody{flex:1;min-height:0;display:flex;flex-direction:column}
.feedbody .fdx-tools{flex:0 0 auto}
.feedbody .df-actions,.feedbody .df-ro,.feedbody .fl-label{flex:0 0 auto}
/* table wrappers that stretch to fill and host an internal scroll region */
.fdx-fill,.fs-fill{flex:1;min-height:0;display:flex;flex-direction:column;max-width:none}
.fdx-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}
.fdx-fill .tk-h,.fs-fill .fs-h{flex:0 0 auto}
/* Logs / settings also fill the available space */
.feedbody .fl-window{flex:1;min-height:0;height:auto;max-width:none}
.feedbody .fset-window{flex:1;min-height:0;overflow:auto;max-width:680px}
/* Market Depth tab fills height; ladder + tape each scroll independently */
.feedbody .fdx-depthgrid{flex:1;min-height:0}
.feedbody .fdx-depthgrid .dom-ladder{max-height:100%;overflow-y:auto;overflow-x:hidden}
.feedbody .fdx-depthgrid .dom-ladder .dom-lh{position:sticky;top:0;z-index:1}
.feedbody .fdx-depthgrid .dtape{display:flex;flex-direction:column;max-height:100%}
.feedbody .fdx-depthgrid .dtape-tbl{flex:1;min-height:0;max-height:none}
/* feed Symbols page: unique upstream symbols, counters, upstream→internal mapping */
.fs-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:760px}
.fs-h{display:flex;align-items:center;height:32px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.3px}
.fs-r{display:flex;align-items:center;min-height:38px;padding:0 16px;font-family:var(--mono);font-size:12.5px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.fs-h .c-fsym,.fs-r .c-fsym{flex:1;min-width:140px;color:var(--fg2)}
.fs-h .c-fmap,.fs-r .c-fmap{flex:0 0 220px}
.fs-h .c-frcv,.fs-r .c-frcv{flex:0 0 90px;text-align:right;color:var(--fg-dim)}
.fs-h .c-fps,.fs-r .c-fps{flex:0 0 70px;text-align:right;color:var(--green)}
/* Symbol detail · Source tab (reverse feed/LP → internal-symbol map) */
.sy-src{max-width:920px}
.sy-src-intro{font-size:12.5px;color:var(--fg-dim);line-height:1.55;margin-bottom:12px;max-width:820px}
.sy-src-intro .mono{color:var(--fg2)}
.sy-src-count{font-size:11px;color:var(--fg-dim);margin-bottom:8px}
.sy-src-table{max-width:920px}
.sy-src-r{cursor:pointer}
.sy-src-r:hover{background:var(--hover)}
.sy-src-table .c-ssrc{flex:1;min-width:200px;color:var(--fg2);display:flex;align-items:center;gap:7px}
.sy-src-table .c-ssrc svg{flex:0 0 auto;color:var(--fg-faint)}
.sy-src-name{color:var(--fg2)}
.sy-src-table .c-ssrc .fhx-sub{font-family:var(--mono)}
.sy-src-table .c-skind{flex:0 0 150px;color:var(--fg-dim);font-family:var(--sans)}
.sy-src-table .c-sid{flex:0 0 70px;color:var(--fg-dim)}
.sy-src-table .c-smap{flex:0 0 230px;color:var(--fg2)}
.sy-src-table .c-sstat{flex:0 0 110px;display:flex;align-items:center;gap:7px;font-family:var(--sans)}
.sy-src-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.fs-sel{width:200px;background:var(--bg);border:1px solid var(--border2);color:var(--fg-dim);border-radius:6px;padding:4px 8px;font-size:12px;font-family:var(--mono);outline:none}
.fs-sel.on{border-color:#9b7cff;color:#cbb6ff}
.fs-sel:focus{border-color:var(--accent)}
/* watchlist edit affordances + symbol picker */
.wl-ic:hover{background:var(--hover);color:var(--fg2)}
.wl-ic.danger:hover{color:#e06a6a}
.wl-symx{cursor:pointer}
.wl-symx:hover{color:#e06a6a;background:rgba(224,106,106,.12)}
.wl-picker{margin:0 15px 14px;border:1px solid var(--border2);border-radius:9px;background:var(--bg);overflow:hidden}
.wl-picker .wl-input{width:calc(100% - 24px);margin:10px 12px;height:30px}
.wl-picker-list{max-height:220px;overflow:auto;border-top:1px solid var(--border-soft)}
.wl-cand{display:flex;align-items:center;justify-content:space-between;padding:7px 14px;font-size:12.5px;color:var(--tx2);cursor:pointer;border-top:1px solid var(--border-soft)}
.wl-cand:first-child{border-top:none}
.wl-cand:hover{background:var(--hover);color:var(--fg2)}
/* feed page: two rolling-window displays (live data + last-100 log) */
.fl-label{display:flex;align-items:center;gap:7px;margin:16px 0 8px;font-family:var(--mono);font-size:10px;letter-spacing:.4px;color:var(--fg-faint)}
.fset-window{max-width:720px;border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--bg)}
.fset-box{max-width:760px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.fset-row{display:flex;gap:14px;align-items:baseline;padding:9px 16px;border-bottom:1px solid var(--border-tb);font-size:12.5px}
.fset-row:last-child{border-bottom:none}
.fset-k{flex:0 0 200px;color:var(--fg-faint);font-family:var(--mono);font-size:11px;letter-spacing:.2px}
.fset-v{flex:1;color:var(--fg2);display:flex;align-items:center;gap:8px;word-break:break-word}
.tk-window{max-height:46vh;overflow:auto}
.fl-window{max-width:880px;height:200px;overflow:auto;border:1px solid var(--border);border-radius:11px;background:var(--bg);padding:8px 0}
.fl-line{display:flex;gap:12px;padding:2px 16px;font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--tx2)}
.fl-line:hover{background:var(--hover)}
.fl-t{color:var(--fg-faint);flex:0 0 64px}
.fl-m{color:var(--tx2);white-space:pre-wrap}
.fl-window-tall{height:62vh}
/* Liquidity-provider detail — message channels */
.mc-note{max-width:820px;font-size:12px;color:var(--fg-dim);margin:2px 0 16px;line-height:1.6}
.mc-grid{display:flex;gap:18px;flex-wrap:wrap;max-width:900px}
.mc-col{flex:1 1 340px;min-width:300px;border:1px solid var(--border);border-radius:11px;padding:12px 14px 14px;background:var(--panel)}
.mc-h{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;letter-spacing:.4px;color:var(--fg-faint);margin-bottom:12px}
.mc-h .mc-tot{margin-left:auto;color:var(--fg2);font-size:12px}
.mc-row{display:flex;align-items:center;gap:10px;height:26px}
.mc-name{flex:0 0 74px;font-size:12px;color:var(--fg2)}
.mc-bar{flex:1;height:8px;border-radius:4px;background:var(--surf1);overflow:hidden}
.mc-fill{display:block;height:100%;border-radius:4px;min-width:2px;transition:width .3s ease}
.mc-n{flex:0 0 64px;text-align:right;font-size:12px;color:var(--fg2)}
.mc-tick{display:flex;align-items:center;gap:8px;max-width:900px;margin-top:14px;padding:10px 14px;border:1px solid var(--border);border-radius:10px;background:var(--panel);font-size:12px;color:var(--fg-dim)}
/* Liquidity-provider detail — orders table */
.lp-otable{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:1040px}
.lp-oh,.lp-or{display:flex;align-items:center;padding:0 14px;font-family:var(--mono)}
.lp-oh{height:32px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-size:10px;color:var(--fg-faint);letter-spacing:.3px}
.lp-or{min-height:34px;font-size:11.5px;color:var(--tx2);border-top:1px solid var(--border-soft)}
.lp-or:hover{background:var(--hover)}
.lp-otable .o-t{flex:0 0 82px}.lp-otable .o-k{flex:0 0 60px}.lp-otable .o-sym{flex:0 0 92px;color:var(--fg2)}
.lp-otable .o-sd{flex:0 0 46px}.lp-otable .o-vol{flex:0 0 66px;text-align:right}.lp-otable .o-px{flex:0 0 86px;text-align:right}
.lp-otable .o-id{flex:0 0 70px;text-align:right;color:var(--fg-dim)}.lp-otable .o-st{flex:0 0 92px;padding-left:10px}
.lp-otable .o-rsp{flex:1;min-width:120px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lp-stat{display:inline-block;padding:1px 7px;border:1px solid;border-radius:5px;font-size:10px;text-transform:capitalize}
/* gateway detail — Ticks-in table columns (reuses .lp-otable / .lp-oh / .lp-or) */
.gw-ttable .t-sym{flex:0 0 96px;color:var(--fg2)}.gw-ttable .t-bid{flex:1;min-width:70px;text-align:right}.gw-ttable .t-ask{flex:1;min-width:70px;text-align:right}
.gw-ttable .t-last{flex:1;min-width:70px;text-align:right;color:var(--tx2)}.gw-ttable .t-vol{flex:0 0 66px;text-align:right;color:var(--fg-dim)}
.gw-ttable .t-dir{flex:0 0 40px;text-align:center}.gw-ttable .t-time{flex:0 0 84px;text-align:right;color:var(--fg-faint)}
.fs-window{max-height:60vh;overflow:auto}
/* watchlist live-ticks SOURCE column (upstream feed symbol that streams the quote) */
.tk-h .c-src,.tk-r .c-src{flex:0 0 120px;color:#9b7cff;text-align:left}

/* ── Time & Holidays ── */
.th-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:880px}
.th-h{display:flex;align-items:center;height:30px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.3px}
.th-h .th-prop{flex:1}.th-h .th-val{flex:0 0 320px}
.th-sec{display:flex;align-items:center;height:28px;padding:0 16px;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--tx2);background:var(--surf0);border-top:1px solid var(--surf1)}
.th-r{display:flex;align-items:center;min-height:40px;padding:5px 16px;font-size:12.5px;border-top:1px solid var(--surf1)}
.th-r.odd{background:var(--bg2)}
.th-prop{flex:1;display:flex;align-items:center;gap:9px;color:var(--tx2)}
.th-clk{display:inline-flex;color:var(--fg-faint)}
.th-val{flex:0 0 320px;display:flex}
.th-box{display:flex;align-items:center;width:100%;height:30px;padding:0 9px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg)}
.th-box.range{color:var(--fg)}
.th-top{display:flex;justify-content:flex-end;max-width:880px;margin-bottom:10px}

/* ── Orders & Deals (trade tables) ── */
.td-sub{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11.5px;color:var(--fg-faint);margin-bottom:16px}
.td-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:880px}
.td-h{display:flex;align-items:center;height:30px;padding:0 8px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:9.5px;color:var(--fg-faint);letter-spacing:.3px;text-transform:uppercase}
.td-r{display:flex;align-items:center;height:27px;padding:0 8px;font-family:var(--mono);font-size:11.5px;color:var(--tx2);border-top:1px solid var(--surf0)}
.td-r.odd{background:var(--bg2)}
.td-h .c-time,.td-r .c-time{flex:0 0 158px;padding:0 6px;color:var(--fg-dim)}
.td-h .c-login,.td-r .c-login{flex:0 0 58px;padding:0 6px}
.td-h .c-tick,.td-r .c-tick{flex:0 0 72px;padding:0 6px;text-align:right}
.td-h .c-id,.td-r .c-id{flex:0 0 50px;padding:0 6px;text-align:right;color:var(--fg-faint)}
.td-h .c-sym,.td-r .c-sym{flex:0 0 100px;padding:0 6px;color:#d8b24a}
.td-h .c-type,.td-r .c-type{flex:0 0 52px;padding:0 6px}
.td-h .c-vol,.td-r .c-vol{flex:0 0 72px;padding:0 6px;text-align:right}
/* P07 gen4: per-position margin + profit columns (positions view only) */
.td-h .c-margin,.td-r .c-margin{flex:0 0 84px;padding:0 6px;text-align:right;color:#c8a24a}
.td-h .c-profit,.td-r .c-profit{flex:0 0 84px;padding:0 6px;text-align:right;color:#c8c8ce}
.td-r .c-type.buy,.td-r .c-profit.buy{color:#3fb950}
.td-r .c-type.sell,.td-r .c-profit.sell{color:#e2607a}

/* grid views (charts / positions / orders / deals) wrapper — no box (alignment handled by .content). */
.gridview{display:contents}

/* ── Charts (1 Minute History) ── */
.ch-bar{display:flex;align-items:center;gap:10px;max-width:880px;margin-bottom:14px}
.ch-sel{display:inline-flex;align-items:center;gap:10px;height:32px;padding:0 11px;background:var(--surf1);border:1px solid var(--chip);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg)}
.ch-cv{color:var(--fg-faint)}
.ch-range{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim2);padding:0 4px}
.ch-arr{color:var(--tx-faint2)}
.ch-req{display:inline-flex;align-items:center;height:30px;padding:0 14px;background:#238636;border:1px solid #2ea043;border-radius:7px;color:#fff;font-size:12px;font-weight:600}
.ch-dl{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 13px;background:var(--surf1);border:1px solid var(--border2);border-radius:7px;color:var(--tx2);font-size:12px;font-weight:500}
.ch-dli{font-size:13px;line-height:1}
.ch-bars{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--fg-faint)}
.ch-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;max-width:880px}
.ch-h{display:flex;align-items:center;height:30px;padding:0 8px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:9.5px;color:var(--fg-faint);letter-spacing:.3px;text-transform:uppercase}
.ch-r{display:flex;align-items:center;height:26px;padding:0 8px;font-family:var(--mono);font-size:11.5px;color:var(--tx2);border-top:1px solid var(--surf0)}
.ch-r.odd{background:var(--bg2)}
.ch-h span,.ch-r span{padding:0 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-h .c-date,.ch-r .c-date{flex:0 0 168px;color:var(--fg-dim)}
.ch-h .c-o,.ch-r .c-o{flex:0 0 112px;text-align:right;color:var(--fg)}
.ch-h .c-hi,.ch-r .c-hi{flex:0 0 112px;text-align:right}
.ch-h .c-lo,.ch-r .c-lo{flex:0 0 112px;text-align:right}
.ch-h .c-cl,.ch-r .c-cl{flex:0 0 112px;text-align:right;color:var(--fg)}
.ch-r .c-hi{color:#5fbf86}
.ch-r .c-lo{color:#e2607a}

/* ── tab context menu ── */
.tabmenu{position:absolute;z-index:120;min-width:210px;background:var(--surf1);border:1px solid var(--border2);border-radius:9px;box-shadow:0 16px 48px rgba(0,0,0,.55);padding:5px}
.tm-item{display:flex;align-items:center;justify-content:space-between;width:100%;height:28px;padding:0 10px;border:none;background:transparent;color:var(--fg);font-size:12.5px;border-radius:6px;text-align:left}
.tm-item:hover{background:var(--hover)}
.tm-item>span{display:inline-flex;align-items:center;gap:8px}
.tm-item.dis{color:var(--fg-faint);cursor:default}
.tm-item.dis:hover{background:transparent}
.tm-key{font-family:var(--mono);font-size:11px;color:var(--fg-faint)}

/* holiday dialog tabs */
.hd-tabs{display:flex;gap:2px;padding:0 20px;border-bottom:1px solid var(--border)}
.hd-tabs button{height:36px;padding:0 14px;border:none;background:transparent;color:var(--fg-dim);font-size:13px;position:relative}
.hd-tabs button.active{color:var(--fg2);font-weight:600}
.hd-tabs button.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--grad)}
.hd-intro{font-size:12.5px;color:var(--fg-dim);line-height:1.5;margin-bottom:16px}
.hd-checks{display:flex;gap:26px;margin-bottom:16px}
.hd-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--fg)}

/* feed-status pill in sidebar */
.node .feed-status{margin-left:auto}

/* ── Daily summary panel ── */
.ds-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:760px}
.ds-card{border:1px solid var(--border);border-radius:12px;background:var(--panel);padding:16px 18px}
.ds-card .k{font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint);font-family:var(--mono);margin-bottom:12px}
.ds-card .v{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--fg2)}
.vsm-spark{display:block;width:100%;height:46px;margin-top:6px}

/* ════════ v5 — Watchlists / Subscriptions / Ticks / Data-feed modal ════════ */
/* Watchlists list view */
.wl-title{display:flex;align-items:center;gap:10px;margin-bottom:4px;font-size:20px;font-weight:600;color:var(--fg2)}
.wl-star{color:#d8b24a;display:inline-flex}
.wl-sub{font-size:11.5px;color:var(--fg-faint);font-family:var(--mono);margin-bottom:16px}
.wl-of{font-family:var(--mono);font-size:10px;letter-spacing:.6px;color:var(--tx-faint2);margin-bottom:8px}
.wl-pills{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:18px}
.wl-pill{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border-radius:8px;font-size:12px;font-weight:500;font-family:var(--mono);white-space:nowrap;border:1px solid var(--border);background:var(--surf1);color:var(--fg-dim)}
.wl-pill.active{border-color:#3a3550;background:#1e1b2e;color:var(--fg2)}
.wl-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.wl-plogin{color:var(--tx-faint2)}
.wl-pyou{color:var(--accent)}
.wl-create{display:flex;gap:8px;align-items:center;margin-bottom:18px;max-width:460px}
.wl-input{flex:1;height:34px;padding:0 12px;background:var(--surf1);border:1px solid var(--border2);border-radius:8px;font-size:12.5px;color:var(--fg);outline:none}
.wl-createbtn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;background:#238636;border:1px solid #2ea043;border-radius:8px;color:#fff;font-size:12.5px;font-weight:600;cursor:pointer;flex:0 0 auto}
.wl-cards{display:flex;flex-direction:column;gap:14px}
.wl-card{border:1px solid var(--border);border-radius:12px;background:var(--surf0);overflow:hidden}
.wl-card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;border-bottom:1px solid var(--border-tb)}
.wl-card-name{display:flex;align-items:center;gap:10px;min-width:0}
.wl-cn{font-size:14px;font-weight:600;color:var(--fg2)}
.wl-card-count{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);flex:0 0 auto}
.wl-card-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.wl-ic{color:var(--tx-dim2);display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:5px;cursor:pointer}
.wl-card-b{padding:13px 15px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.wl-sym{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 6px 0 11px;background:var(--surf2);border:1px solid var(--border2);border-radius:8px;font-family:var(--mono);font-size:12px;color:var(--fg2)}
.wl-symx{color:var(--tx-dim2);display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:4px}
.wl-add{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 11px;background:transparent;border:1px dashed var(--border3);border-radius:8px;font-family:var(--mono);font-size:11.5px;color:var(--fg-dim);cursor:pointer}

/* Subscriptions view */
.su-intro{font-size:11.5px;color:var(--fg-faint);font-family:var(--mono);margin-bottom:18px}
.su-stats{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}
.su-stat{display:flex;flex-direction:column;gap:3px;min-width:120px;padding:11px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surf0)}
.su-sk{font-family:var(--mono);font-size:9.5px;letter-spacing:.6px;color:var(--tx-faint2)}
.su-sv{font-size:21px;font-weight:600;color:var(--fg2);font-family:var(--mono)}
.su-sv.green{color:#3fb950}
.su-sv.teal{color:#5ad0c8}
.su-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px}
.su-search{display:flex;align-items:center;gap:8px;flex:1;min-width:240px;max-width:420px;height:34px;padding:0 12px;background:var(--surf1);border:1px solid var(--border2);border-radius:8px}
.su-search input{flex:1;background:transparent;border:none;outline:none;font-size:12.5px;color:var(--fg)}
.su-si{color:var(--fg-faint);display:inline-flex}
.su-check{display:flex;align-items:center;gap:7px;cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--fg-dim)}
.su-cb{width:15px;height:15px;border:1px solid var(--border2);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.su-cb.on{background:#238636;border-color:#2ea043}
.su-groupby{display:flex;align-items:center;gap:6px;margin-left:auto}
.su-gl{font-family:var(--mono);font-size:10px;letter-spacing:.6px;color:var(--tx-faint2)}
.su-gtab{display:inline-flex;align-items:center;height:26px;padding:0 11px;border-radius:7px;cursor:pointer;font-size:11px;font-weight:500;font-family:var(--mono);border:1px solid var(--border);background:var(--surf1);color:var(--fg-dim)}
.su-gtab.active{border-color:#2a4d4a;background:#16302e;color:#7fd9d0}
.su-table{border:1px solid var(--border);border-radius:12px;background:var(--surf0);overflow:hidden}
.su-h{display:grid;grid-template-columns:1.6fr 1fr 1.3fr 1.1fr 1fr;padding:9px 16px;border-bottom:1px solid var(--border);background:var(--surf1);font-family:var(--mono);font-size:10px;letter-spacing:.6px;color:var(--fg-faint)}
.su-tbody{max-height:calc(100vh - 360px);overflow-y:auto}
.su-r{display:grid;grid-template-columns:1.6fr 1fr 1.3fr 1.1fr 1fr;align-items:center;padding:8px 16px;border-top:1px solid var(--surf2)}
.su-user{display:flex;align-items:center;gap:8px;min-width:0}
.su-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.su-uname{font-size:12.5px;color:var(--fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.su-ulogin{font-family:var(--mono);font-size:10.5px;color:var(--tx-faint2)}
.su-group{font-family:var(--mono);font-size:11.5px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.su-wl{font-size:12px;color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.su-sym{font-family:var(--mono);font-size:12px;color:var(--fg2)}
.su-status{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:10.5px}
.su-status.conn{color:#5f9d77}
.su-status.off{color:var(--fg-faint)}
.su-sdot{width:6px;height:6px;border-radius:50%}
.su-status.conn .su-sdot{background:#3fb950}
.su-status.off .su-sdot{background:var(--tx-faint2)}
.su-foot{font-family:var(--mono);font-size:10.5px;color:var(--tx-faint2);margin-top:12px}

/* Watchlist live quotes — edge-to-edge real-time terminal (no card, fills the panel).
   Scoped under .content.flush so the shared .tk-* feed-page table (line ~607) is untouched
   and the bare .tk-table max-width:880 there is overridden here on specificity. */
.content.flush{padding:0;overflow:hidden}

/* ── Order Flow (twin-disruptor) · full-bleed two-pane resizable browser ── */
.content.flush .flowpage{height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--bg);font-family:var(--mono)}
.content.flush .flow-topbar{flex:0 0 auto;border-bottom:1px solid var(--border);padding:12px 18px 10px;display:flex;flex-direction:column;gap:9px}
.content.flush .flow-tb-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.content.flush .flow-split{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.content.flush .flow-pane{min-height:0;display:flex;flex-direction:column;overflow:hidden}
.content.flush .flow-pane-scroll{flex:1 1 auto;min-height:0;overflow:auto}
.content.flush .flow-sticky{position:sticky;top:0;z-index:4;background:var(--bg)}
.content.flush .flow-seclabel{font:700 11px var(--mono);letter-spacing:.09em;text-transform:uppercase;padding:8px 12px 5px;display:flex;align-items:center;gap:8px}
.content.flush .flow-seclabel.req{color:#6aa9e0}
.content.flush .flow-seclabel.resp{color:#5fbf86}
.content.flush .flow-secn{font-weight:600;color:var(--tx-faint2);background:var(--bg3);border:1px solid var(--border);border-radius:9px;padding:0 7px;font-size:10px}
.content.flush .flow-divider{flex:0 0 8px;cursor:row-resize;background:var(--bg3);border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center;transition:background .12s;touch-action:none}
.content.flush .flow-divider:hover{background:var(--accent)}
.content.flush .flow-grip{width:44px;height:3px;border-radius:2px;background:var(--fg-faint);pointer-events:none}
.content.flush .flow-divider:hover .flow-grip{background:#fff}

/* Order-Flow twin-pane split reused inside the Venue detail (feedfull) → Order Flow tab, 1:1 with the global page */
.content.feedfull .flowpage{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--bg);font-family:var(--mono)}
.content.feedfull .flow-split{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.content.feedfull .flow-pane{min-height:0;display:flex;flex-direction:column;overflow:hidden}
.content.feedfull .flow-pane-scroll{flex:1 1 auto;min-height:0;overflow:auto}
.content.feedfull .flow-sticky{position:sticky;top:0;z-index:4;background:var(--bg)}
.content.feedfull .flow-seclabel{font:700 11px var(--mono);letter-spacing:.09em;text-transform:uppercase;padding:8px 12px 5px;display:flex;align-items:center;gap:8px}
.content.feedfull .flow-seclabel.req{color:#6aa9e0}
.content.feedfull .flow-seclabel.resp{color:#5fbf86}
.content.feedfull .flow-secn{font-weight:600;color:var(--tx-faint2);background:var(--bg3);border:1px solid var(--border);border-radius:9px;padding:0 7px;font-size:10px}
.content.feedfull .flow-divider{flex:0 0 8px;cursor:row-resize;background:var(--bg3);border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center;transition:background .12s;touch-action:none}
.content.feedfull .flow-divider:hover{background:var(--accent)}
.content.feedfull .flow-grip{width:44px;height:3px;border-radius:2px;background:var(--fg-faint);pointer-events:none}
.content.feedfull .flow-divider:hover .flow-grip{background:#fff}

.content.flush .tk-view{height:100%;display:flex;flex-direction:column;background:var(--bg);font-family:var(--mono);overflow:hidden}
/* thin flush status bar — one separator line, no card chrome */
.content.flush .tk-head{display:flex;align-items:baseline;gap:10px;padding:13px 18px 0}
.content.flush .tk-name{font-size:15px;font-weight:700;color:var(--fg2);letter-spacing:.4px}
.content.flush .tk-sub{font-size:10px;color:var(--tx-faint2);letter-spacing:1px}
.content.flush .tk-meta{display:flex;align-items:center;gap:16px;margin:0;font-size:10px;color:var(--fg-faint);letter-spacing:.5px;padding:6px 18px 11px;border-bottom:1px solid var(--border)}
.content.flush .tk-feed{display:inline-flex;align-items:center;gap:6px}
.content.flush .tk-fdot{width:6px;height:6px;border-radius:50%;background:var(--fg-faint)}
.content.flush .tk-fdot.on{background:var(--green);box-shadow:0 0 6px var(--green)}
.content.flush .tk-fname{color:var(--tx-dim2);text-transform:uppercase;letter-spacing:.6px}
.content.flush .tk-live{color:var(--green);font-weight:600}
.content.flush .tk-cad{color:var(--tx-faint2)}
.content.flush .tk-owner{color:var(--border4);margin-left:auto}
/* table fills remaining height + width, scrolls vertically, sticky column header */
.content.flush .tk-table{flex:1;min-height:0;width:100%;max-width:none;border:none;border-radius:0;align-self:stretch;overflow-y:auto;overflow-x:hidden;background:var(--bg)}
.content.flush .tk-h,.content.flush .tk-r{display:grid;grid-template-columns:minmax(96px,1.4fr) 100px 92px 92px 100px 66px 46px minmax(104px,1fr) 66px minmax(110px,1.1fr);align-items:center;width:100%;height:auto}
/* Tick-tape detail: 7-column layout (#, TIME, BID, ASK, LAST, VOL, DIR) */
.content.flush .tk-tape .tk-h,.content.flush .tk-tape .tk-r{grid-template-columns:64px minmax(120px,1.2fr) 1fr 1fr 1fr 90px 56px}
.content.flush .tk-tape .tk-r{cursor:default}
.content.flush .tk-tape .tk-r .c-sym{color:var(--fg-faint);font-variant-numeric:tabular-nums}
.content.flush .tk-r.tk-clickable{cursor:pointer}
.content.flush .tk-r.tk-clickable:hover{background:var(--surf1,rgba(255,255,255,.035))}
/* Ticks/OHLC toggle in the detail tape header */
.tape-tabs{display:inline-flex;gap:2px;padding:2px;border-radius:7px;background:var(--surf0,rgba(255,255,255,.04));border:1px solid var(--border)}
.tape-tab{appearance:none;border:none;background:transparent;color:var(--fg-faint);font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.4px;padding:3px 10px;border-radius:5px;cursor:pointer}
.tape-tab:hover{color:var(--tx2)}
.tape-tab.on{background:var(--accent,#3a6df0);color:#fff}
.content.flush .tk-h{position:sticky;top:0;z-index:2;padding:8px 18px;background:var(--surf0);border-bottom:1px solid var(--border);font-size:9px;letter-spacing:1px;color:var(--fg-faint);font-weight:600}
.content.flush .tk-h .c-bid,.content.flush .tk-h .c-ask,.content.flush .tk-h .c-last,.content.flush .tk-h .c-vol,.content.flush .tk-h .c-tps,.content.flush .tk-h .c-tk{text-align:right;flex:none}
.content.flush .tk-h .c-dir{text-align:center;flex:none}
.content.flush .tk-r{padding:6px 18px;border-top:none;border-bottom:1px solid var(--border-soft);color:var(--tx2)}
.content.flush .tk-r:hover{background:var(--hover)}
.content.flush .tk-r .c-tps{text-align:right;font-size:11px;font-weight:700;color:var(--green);font-variant-numeric:tabular-nums;flex:none}
.content.flush .tk-r .c-tps.zero{color:var(--tx-faint2);font-weight:400}
.content.flush .tk-r .c-sym{font-size:12px;color:var(--fg2);font-weight:700;letter-spacing:.3px;flex:none;min-width:0}
.content.flush .tk-r .c-date,.content.flush .tk-r .c-time{font-size:10.5px;color:var(--fg-faint);font-variant-numeric:tabular-nums;flex:none;text-align:left}
.content.flush .tk-r .c-bid,.content.flush .tk-r .c-ask{text-align:right;font-size:11.5px;color:var(--tx-dim2);font-variant-numeric:tabular-nums;flex:none}
.content.flush .tk-r .c-last{text-align:right;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;flex:none}
.content.flush .tk-r .c-vol{text-align:right;font-size:10.5px;color:var(--fg-faint);font-variant-numeric:tabular-nums;flex:none}
.content.flush .tk-r .c-dir{text-align:center;font-size:9px;flex:none}
.content.flush .tk-r .c-df,.content.flush .tk-r .c-src{font-size:10px;color:var(--accent2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none;min-width:0;text-align:left}
.content.flush .tk-r .c-tk{display:flex;justify-content:flex-end;flex:none}
.content.flush .tk-r .c-tk .tk-warm{font-size:9.5px;color:var(--tx-faint2);font-style:italic;letter-spacing:.2px}
.content.flush .tk-note{font-size:9.5px;color:var(--tx-faint2);letter-spacing:.3px;padding:9px 18px;border-top:1px solid var(--border)}

/* New data feed modal (fixed 640x600 to match the design) */
.fm-overlay{position:absolute;inset:0;background:rgba(6,6,8,.62);z-index:40;display:flex;align-items:center;justify-content:center}
.fmodal{width:640px;height:600px;max-height:90vh;display:flex;flex-direction:column;background:var(--surf1);border:1px solid var(--border2);border-radius:13px;box-shadow:0 24px 70px rgba(0,0,0,.6);overflow:hidden}
.fm-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.fm-title{font-size:14px;font-weight:600;color:var(--fg2)}
.fm-x{font-size:18px;line-height:1;color:var(--tx-dim2);cursor:pointer}
.fm-tabs{flex:0 0 auto;display:flex;gap:2px;flex-wrap:wrap;padding:11px 16px 0;border-bottom:1px solid var(--border)}
.fm-tab{padding:6px 13px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:500;color:var(--fg-dim);background:transparent}
.fm-tab.active{color:#fff;background:var(--chip)}
.fm-body{flex:1;overflow-y:auto;padding:18px 20px}
.fm-intro{font-size:12px;color:var(--tx-dim2);margin-bottom:16px;line-height:1.5}
.fm-enable{display:flex;align-items:center;gap:9px;cursor:pointer;margin-bottom:16px}
.fm-cb{width:17px;height:17px;border-radius:5px;border:1px solid var(--border3);background:var(--surf2);flex:0 0 auto}
.fm-cb.on{background:var(--grad);border-color:transparent;box-shadow:0 0 6px var(--glow)}
.fm-en-t{font-size:12.5px;color:var(--tx2)}
.fm-fld{margin-bottom:13px}
.fm-lbl{font-size:10.5px;color:var(--tx-dim2);margin-bottom:5px}
.fm-input{width:100%;height:32px;padding:0 11px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-family:var(--mono);font-size:12.5px;color:var(--fg);outline:none}
.fm-info{padding:12px 14px;background:rgba(198,201,210,.06);border:1px solid rgba(198,201,210,.18);border-radius:9px;font-size:12px;color:var(--tx2);line-height:1.55}
.fm-foot{flex:0 0 auto;display:flex;align-items:center;gap:10px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--border)}
.fm-cancel{height:33px;padding:0 16px;background:var(--surf2);border:1px solid var(--border2);border-radius:8px;color:var(--tx2);font-size:12.5px;font-weight:500;cursor:pointer}
.fm-create{height:33px;padding:0 18px;background:var(--grad);border:none;border-radius:8px;color:#15151a;font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:0 0 10px var(--glow)}

/* ──────────────────────────────────────────────────────────────────────────
   v6 — Open Order ticket / Opened Positions close-X / room symbols+watchlists /
   group chat roster / Add account PERSON(KYC) + Wallet currency/type
   ────────────────────────────────────────────────────────────────────────── */
/* T1 Open Order — two-column Trade Order (chart panel + order panel) */
.oo-view{padding-top:2px}
.oo-grid{display:grid;grid-template-columns:1fr 290px;gap:0;margin-top:14px;border-top:1px solid var(--border);min-height:460px}
.oo-chart{padding:14px 20px 0 4px;border-right:1px solid var(--border)}
.oo-ch-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.oo-sym{font-family:var(--mono);font-size:17px;font-weight:600;letter-spacing:.5px;color:var(--fg2)}
.oo-cv{color:var(--fg-dim);font-size:13px}
.oo-live{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.6px;color:#3fb950}
.oo-livedot{width:6px;height:6px;border-radius:50%;background:#3fb950}
.oo-stats{display:flex;gap:0;margin-bottom:10px}
.oo-stat{flex:0 0 70px;display:flex;flex-direction:column;gap:4px;padding-right:14px}
.oo-sl{font-family:var(--mono);font-size:8.5px;font-weight:600;letter-spacing:.7px;color:var(--tx-faint2)}
.oo-sv{font-family:var(--mono);font-size:12.5px;color:var(--fg)}
.oo-sv.buy{color:#3fb950}
.oo-sv.sell{color:#e2607a}
.oo-sv.dim{color:var(--fg-dim);font-size:11px}
.oo-canvas{height:150px;margin-bottom:18px}
.oo-spark{width:100%;height:100%}
.oo-spark polyline{fill:none;stroke:#3f7bd6;stroke-width:1.2;vector-effect:non-scaling-stroke}
.oo-pos-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.7px;color:var(--fg-faint);margin-bottom:10px}
.oo-pos-n{color:var(--tx-faint2);letter-spacing:.3px}
.oo-pos-h{display:flex;align-items:center;height:24px;font-family:var(--mono);font-size:8.5px;letter-spacing:.4px;color:var(--tx-faint2);border-bottom:1px solid var(--border-soft)}
.oo-pos-r{display:flex;align-items:center;height:28px;font-family:var(--mono);font-size:11px;color:var(--tx2);border-bottom:1px solid var(--surf0)}
.oo-pos-h .c-tk,.oo-pos-r .c-tk{flex:0 0 56px}
.oo-pos-h .c-lg,.oo-pos-r .c-lg{flex:0 0 50px}
.oo-pos-h .c-sd,.oo-pos-r .c-sd{flex:0 0 46px}
.oo-pos-r .c-sd.buy{color:#3fb950}
.oo-pos-r .c-sd.sell{color:#e2607a}
.oo-pos-h .c-vl,.oo-pos-r .c-vl{flex:0 0 90px}
.oo-pos-h .c-ol,.oo-pos-r .c-ol{flex:1;color:var(--fg-dim)}
/* right order panel */
.oo-form{padding:14px 4px 0 20px}
.oo-fl{font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.8px;color:var(--tx-faint2);margin:0 0 8px}
.oo-form .oo-fl:not(:first-child){margin-top:21px}
.oo-otype{display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(110,140,255,.35);background:rgba(110,140,255,.08);border-radius:8px;padding:8px 13px;color:#8aa0ff;font-size:13px;font-weight:600}
.oo-otype-cv{color:#5a6aa0;font-size:14px}
.oo-lots{display:flex;align-items:center;gap:4px}
.oo-lb{flex:0 0 auto;border:1px solid var(--border2);border-radius:7px;padding:8px 8px;font-family:var(--mono);font-size:11px;background:transparent;cursor:pointer}
.oo-lb.minus{color:#e2607a;border-color:rgba(226,96,122,.32)}
.oo-lb.plus{color:#6aa0ff;border-color:rgba(106,160,255,.32)}
.oo-lv{flex:1;text-align:center;font-family:var(--mono);font-size:15px;font-weight:700;color:#fff;border:1px solid var(--border2);border-radius:7px;padding:6px 0;background:var(--bg)}
.oo-step{display:flex;align-items:center;gap:4px}
.oo-sb{flex:0 0 34px;border:1px solid var(--border2);border-radius:8px;padding:8px 0;font-size:15px;color:var(--fg-dim);background:transparent;cursor:pointer}
.oo-sv2{flex:1;text-align:center;font-family:var(--mono);font-size:14px;color:var(--fg2);border:1px solid var(--border2);border-radius:8px;padding:8px 0;background:var(--bg)}
.oo-sv2.muted{color:var(--fg-faint)}
.oo-tif select{width:100%;background:var(--bg);border:1px solid var(--border2);color:var(--fg);border-radius:8px;padding:9px 11px;font-size:12.5px;outline:none}

/* T2 Opened Positions — leading close-X column (client view) */
.td-table.has-x .td-h .c-x,.td-table.has-x .td-r .c-x{flex:0 0 30px;display:flex;align-items:center;justify-content:center}
.td-closex{background:none;border:none;color:#e2607a;font-size:15px;line-height:1;cursor:pointer;padding:0}
.td-closex:hover{color:#ff7a93}

/* T4 room (members) — SYMBOLS attach/detach + watchlist pills */
.gv-attach{margin-left:8px;color:var(--accent);font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.2px;cursor:pointer}
.gv-pill.sym{border-color:var(--border2);color:var(--fg)}
.gv-symic{display:inline-flex;align-items:center;color:#d8b24a}
.gv-dot.off{background:var(--border3)}

/* T4 group chat — MEMBERS roster + chat panel */
.gv-chat{display:flex;gap:16px;margin-top:16px;max-width:880px;height:calc(100vh - 200px);min-height:340px}
.gc-roster{flex:0 0 252px;border:1px solid var(--border);border-radius:11px;overflow:hidden;display:flex;flex-direction:column}
.gc-rhead{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:1px;color:var(--tx-faint2)}
.gc-ronline{color:#3fb950;letter-spacing:.3px}
.gc-rbody{flex:1;overflow:auto;padding:4px 0}
.gc-member{display:flex;align-items:center;gap:11px;padding:9px 14px}
.gc-avatar{flex:0 0 34px;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:700;color:#fff;letter-spacing:.3px}
.gc-minfo{min-width:0}
.gc-mname{font-size:13px;font-weight:600;color:var(--fg2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gc-mmeta{display:flex;align-items:center;gap:7px;margin-top:3px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}
.gc-mdot{width:6px;height:6px;border-radius:50%;background:#3fb950;flex:0 0 6px}
.gc-mdot.off{background:var(--border4)}
.gc-mrole{border:1px solid var(--border2);border-radius:4px;padding:1px 5px;font-size:8.5px;letter-spacing:.5px;color:var(--tx-dim2)}
.gc-rempty{padding:18px 14px;font-family:var(--mono);font-size:11px;color:var(--tx-faint2)}
.gc-panel{flex:1;border:1px solid var(--border);border-radius:11px;display:flex;flex-direction:column;overflow:hidden}
.gc-phead{padding:13px 16px;border-bottom:1px solid var(--border-tb)}
.gc-pname{font-size:14px;font-weight:600;color:var(--fg2)}
.gc-psub{margin-top:3px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}
.gc-pbody{flex:1;display:flex;flex-direction:column;overflow:auto;padding:14px 16px}
.gc-empty{margin:auto;text-align:center;font-size:12.5px;color:var(--tx-faint2);max-width:220px;line-height:1.5}
.gc-msg{display:flex;gap:8px;margin-bottom:7px;font-size:12.5px}
.gc-msg-who{font-family:var(--mono);color:var(--accent)}
.gc-msg-txt{color:var(--fg)}
.gc-compose{display:flex;gap:8px;padding:11px 14px;border-top:1px solid var(--border-tb)}
.gc-compose input{flex:1;background:var(--bg);border:1px solid var(--border2);border-radius:8px;padding:8px 11px;font-size:12.5px;color:var(--fg);outline:none}

/* T5 Add account — PERSON(KYC) bar + New person|Existing toggle + wider shell, tightened rhythm */
.acct-modal{width:660px;max-height:475px}
.acct-modal .modal-head{padding-top:12px;padding-bottom:12px}
.acct-modal .section-label{margin:5px 0 9px}
.acct-modal .grid3{grid-template-columns:140px 1fr 150px;gap:14px}
.acct-modal .grid2{gap:14px}
.acct-modal .field{margin-bottom:8px}
.kyc-bar{border:1px solid var(--border2);border-radius:11px;padding:13px 16px;margin-bottom:11px;background:var(--panel)}
.kyc-top{display:flex;align-items:center;justify-content:space-between}
.kyc-title{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:1px;color:var(--tx-dim2)}
.kyc-toggle{display:inline-flex;border:1px solid var(--border2);border-radius:8px;overflow:hidden}
.kyc-seg{background:transparent;border:none;padding:6px 14px;font-size:12px;color:var(--fg-dim);cursor:pointer}
.kyc-seg.on{background:var(--grad);color:#15151a;font-weight:600;box-shadow:0 0 8px var(--glow)}
.kyc-sub{margin-top:9px;font-size:12px;color:var(--fg-dim);line-height:1.5}

/* ── Charts & Ticks + Routing (v6) ── */
.md-view{padding:24px 28px 40px;height:100%;display:flex;flex-direction:column;overflow:hidden}
.md-kicker{flex:0 0 auto;font-size:11px;font-weight:600;letter-spacing:1px;color:var(--fg-faint);font-family:var(--mono);margin-bottom:6px}
.md-title{font-size:20px;font-weight:600;color:var(--fg2)}
.md-sub{font-size:12.5px;color:var(--tx-dim2);margin-top:5px}
.md-bar{flex:0 0 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0}
.md-filter{height:30px;width:240px;padding:0 11px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg);outline:none}
.md-stream{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim2)}
.md-stream .d{width:7px;height:7px;border-radius:50%;background:#5fbf86;box-shadow:0 0 0 3px rgba(95,191,134,.14)}
.md-count{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--fg-faint)}
.md-frame{flex:1;min-height:0;border:1px solid var(--border);border-radius:11px;overflow:hidden;display:flex;flex-direction:column}
.md-scroll{flex:1;min-height:0;overflow:auto}
.md-ghead{display:flex;align-items:center;height:30px;padding:0 8px;background:var(--panel);border-bottom:1px solid var(--border-tb);position:sticky;top:0;z-index:1}
.md-grow{display:flex;align-items:center;height:26px;padding:0 8px;border-top:1px solid var(--surf0);font-size:11.5px}
.md-grow.odd{background:var(--bg2)}
.md-grow:hover,.md-lrow:hover{background:var(--surf1)}
.md-lhead{display:flex;align-items:center;height:30px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border-tb);position:sticky;top:0;z-index:1;font-family:var(--mono);font-size:9.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--fg-faint)}
.md-lhead span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-lrow{display:flex;align-items:center;height:42px;padding:0 14px;border-top:1px solid var(--surf0);font-size:12px}
.md-lrow.odd{background:var(--bg2)}
.md-symcell{flex:0 0 196px;display:flex;align-items:center;gap:8px;cursor:pointer;min-width:0}
.md-symcell:hover{opacity:.85}
.md-symcol{display:flex;flex-direction:column;min-width:0}
.md-sym{font-family:var(--mono);font-size:12.5px;font-weight:600;color:#7eb6ff}
.md-symdesc{font-size:10px;color:var(--fg-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-cpath{flex:0 0 196px;font-family:var(--mono);font-size:11.5px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-cold{flex:0 0 168px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim2)}
.md-cnew{flex:0 0 168px;font-family:var(--mono);font-size:11.5px}
.md-crec{flex:0 0 132px;text-align:right;font-family:var(--mono);font-size:11.5px}
.md-csize{flex:0 0 92px;text-align:right;font-family:var(--mono);font-size:11.5px;color:var(--fg-dim)}
.md-cclear{flex:0 0 66px;display:flex;justify-content:center}
.md-clr{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border2);border-radius:6px;color:var(--fg-faint);cursor:pointer;padding:0}
.md-clr:hover{border-color:#e2607a;color:#e2607a;background:rgba(226,96,122,.08)}
.md-clrall{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;background:transparent;border:1px solid var(--border2);border-radius:7px;color:var(--fg-dim);font-size:11.5px;font-family:var(--mono);cursor:pointer}
.md-clrall:hover{border-color:#e2607a;color:#e2607a;background:rgba(226,96,122,.08)}
.md-cttl{flex:0 0 110px;display:flex;justify-content:center;font-family:var(--mono);font-size:11px;color:var(--tx-dim2)}
.md-cupd{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:7px;font-family:var(--mono);font-size:11.5px;color:var(--fg-dim)}
.md-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.md-dot.sm{width:6px;height:6px}
.md-back{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px 0 7px;margin-bottom:9px;background:var(--surf1);border:1px solid var(--border2);border-radius:6px;color:var(--fg-dim);font-size:11.5px;font-weight:500;cursor:pointer}
.md-back:hover{background:var(--surf2);color:var(--fg)}
.md-cssel{height:30px;min-width:118px;padding:0 8px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg);cursor:pointer}
.md-mrange{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim2);padding:0 4px}
.md-mrange .arr{color:var(--tx-faint2)}
.md-req{display:inline-flex;align-items:center;height:30px;padding:0 14px;background:#238636;border:1px solid #2ea043;border-radius:7px;color:#fff;font-size:12px;font-weight:600;cursor:pointer}
.md-dl{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 13px;background:var(--surf1);border:1px solid var(--border2);border-radius:7px;color:var(--tx2);font-size:12px;font-weight:500;cursor:pointer}
.md-dl:hover{background:var(--surf2);border-color:var(--border3)}
.md-ttl{width:62px;height:26px;text-align:center;background:var(--surf2);border:1px solid var(--border2);border-radius:6px;font-family:var(--mono);font-size:11.5px;color:var(--fg);outline:none}

/* routing order-bus */
.rt-toggle{display:flex;background:var(--surf1);border:1px solid var(--border2);border-radius:8px;padding:2px}
.rt-tbtn{height:26px;padding:0 14px;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;background:transparent;color:var(--tx-dim2)}
.rt-tbtn.on{background:var(--surf2);color:var(--fg2)}
.rt-tbtn .d{width:7px;height:7px;border-radius:50%;background:#5fbf86}
.rt-date{height:30px;padding:0 9px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg);outline:none}

/* routing analytics dashboard */
.rg-view{height:100%;overflow:auto}
.rg-pad{padding:24px 28px 40px}
.rg-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.rg-title{font-size:22px;font-weight:600;color:var(--fg2)}
.rg-win{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;color:var(--tx-dim2)}
.rg-win .d{width:8px;height:8px;border-radius:50%;background:#5fbf86;box-shadow:0 0 0 3px rgba(95,191,134,.14)}
.rg-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px}
.rg-tile{background:var(--surf0);border:1px solid var(--border);border-radius:12px;padding:15px 16px}
.rg-tlabel{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;letter-spacing:.4px;text-transform:uppercase;color:var(--tx-dim2)}
.rg-tlabel .d{width:7px;height:7px;border-radius:2px;flex:0 0 auto}
.rg-tval{font-size:27px;font-weight:600;color:var(--fg2);margin-top:8px;font-family:var(--mono);letter-spacing:-.5px}
.rg-tbar{height:2px;border-radius:2px;margin-top:12px;opacity:.5}
.rg-tsub{font-size:11px;color:var(--fg-faint);margin-top:7px}
.rg-heatwrap{overflow-x:auto}
.rg-htoolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.rg-hleft{display:flex;align-items:center;gap:10px}
.rg-hlabel{font-family:var(--mono);font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--fg-dim)}
.rg-hmax{font-family:var(--mono);font-size:10.5px;color:var(--tx-faint2)}
.rg-hright{display:flex;align-items:center;gap:16px}
.rg-legend{display:flex;align-items:center;gap:5px;font-family:var(--mono);font-size:9.5px;color:var(--tx-faint2)}
.rg-legend i{width:11px;height:11px;border-radius:2px;display:inline-block}
.rg-mtoggle{display:flex;background:var(--surf1);border:1px solid var(--border2);border-radius:8px;padding:2px}
.rg-mbtn{height:26px;padding:0 13px;border:none;border-radius:6px;font-size:11.5px;font-weight:600;cursor:pointer;background:transparent;color:var(--tx-dim2)}
.rg-mbtn.on{background:var(--surf2);color:var(--fg2)}
.rg-sec{margin-bottom:16px}
.rg-stitle{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.4px;text-transform:uppercase;color:var(--tx-dim2);margin-bottom:8px}
.rg-stitle .d{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.rg-rows{display:flex;flex-direction:column;gap:2px}
.rg-row{display:flex;align-items:center}
.rg-rlabel{flex:0 0 178px;display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding-right:14px}
.rg-rlabel .l{font-size:11px;color:var(--tx2);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rg-rlabel .t{flex:0 0 auto;font-family:var(--mono);font-size:11px;color:var(--fg2);font-weight:600}
.rg-cells{display:flex;gap:1px}
.rg-cell{width:6px;height:15px;border-radius:2px;flex:0 0 auto}
.rg-axis{display:flex;align-items:center;margin-top:2px}
.rg-axis .sp{flex:0 0 178px}
.rg-axis .labels{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9.5px;color:var(--tx-faint2)}

/* synchronization */
.sy-view{padding:24px 28px 40px}
/* v7 Gateway / Exchanges / Synchronizators — neutralize .content padding, apply design's 24/28/40 */
.v7-page{margin:-24px -28px -40px -34px;padding:24px 28px 40px}
.v7-act{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;cursor:pointer}
.sy-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
.sy-actions{display:flex;gap:9px;flex:0 0 auto}
.sy-add{height:34px;padding:0 14px;background:var(--surf1);border:1px solid var(--border2);border-radius:8px;color:var(--tx2);font-size:12.5px;font-weight:500;cursor:pointer}
.sy-syncbtn{height:34px;padding:0 15px;background:#238636;border:1px solid #2ea043;border-radius:8px;color:#fff;font-size:12.5px;font-weight:600;cursor:pointer}
.sy-card{max-width:920px;border:1px solid var(--border);border-radius:11px;overflow:hidden}
.sy-hrow{display:flex;align-items:center;height:30px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.5px;text-transform:uppercase}
.sy-row{display:flex;align-items:center;height:38px;padding:0 14px;font-family:var(--mono);font-size:12.5px;color:var(--tx2);border-top:1px solid var(--surf1)}
.sy-row:hover{background:var(--surf1)}
.sy-srv{flex:1;display:flex;align-items:center;gap:9px;color:var(--fg2);cursor:pointer}
.sy-srv:hover{color:#fff}
.sy-srv .d{display:inline-block;width:8px;height:8px;border-radius:2px;background:#5fbf86}
.sy-del{cursor:pointer;color:#8a5a5e;font-size:15px;line-height:1}
.sy-del:hover{color:#e2607a}
.sy-empty{padding:18px 14px;font-family:var(--mono);font-size:12px;color:var(--tx-faint2)}
.sy-modal-ov{position:absolute;inset:0;background:rgba(6,6,8,.62);z-index:42;display:flex;align-items:center;justify-content:center}
.sy-modal{width:620px;max-width:94vw;max-height:92vh;display:flex;flex-direction:column;background:var(--surf1);border:1px solid var(--border2);border-radius:13px;box-shadow:0 24px 70px rgba(0,0,0,.6);overflow:hidden}
.sy-mhead{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}
.sy-mtitle{display:flex;align-items:center;gap:10px}
.sy-mtitle .d{width:9px;height:9px;border-radius:50%;background:#5fbf86}
.sy-mtitle .t{font-size:13.5px;font-weight:600;color:var(--fg2)}
.sy-mx{font-size:18px;line-height:1;color:var(--tx-dim2);cursor:pointer}
.sy-mx:hover{color:var(--fg)}
.sy-tabs{flex:0 0 auto;display:flex;gap:2px;padding:0 16px;border-bottom:1px solid var(--border)}
.sy-tab{padding:9px 13px;cursor:pointer;font-size:12.5px;font-weight:500;border-bottom:2px solid transparent;color:var(--tx-dim2)}
.sy-tab.on{border-bottom-color:var(--accent);color:var(--fg2)}
.sy-mbody{flex:1;min-height:0;overflow-y:auto;padding:20px 22px}
.sy-mtext{font-size:12px;color:var(--fg-dim);line-height:1.5;margin-bottom:18px;max-width:520px}
.sy-check{display:flex;align-items:center;gap:9px;cursor:pointer}
.sy-check .box{width:16px;height:16px;border-radius:4px;border:1px solid var(--border3);background:var(--surf2);display:flex;align-items:center;justify-content:center;color:#7ef0a6;font-size:11px}
.sy-check .lbl{font-size:12.5px;color:var(--fg)}
.sy-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;max-width:560px}
.sy-fl{font-size:10.5px;color:var(--tx-dim2);margin-bottom:5px}
.sy-in{width:100%;height:31px;padding:0 11px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg)}
.sy-selin{width:100%;height:31px;padding:0 8px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;font-size:12px;color:var(--fg);cursor:pointer}
.sy-ro{height:31px;display:flex;align-items:center;padding:0 11px;background:var(--surf0);border:1px solid var(--border);border-radius:7px;font-family:var(--mono);font-size:12px;color:var(--fg-faint)}
.sy-symwrap{display:flex;gap:14px}
.sy-symcol{flex:0 0 96px;display:flex;flex-direction:column;gap:8px}
.sy-symbtn{height:30px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;color:var(--tx2);font-size:12px;cursor:pointer}
.sy-symlist{flex:1;min-height:180px;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.sy-symrow{display:flex;align-items:center;gap:8px;height:26px;padding:0 10px;font-family:var(--mono);font-size:12px;cursor:pointer;color:var(--tx2)}
.sy-symrow.on{color:var(--fg2);background:var(--sel)}
.sy-symrow .d{display:inline-block;width:8px;height:8px;border-radius:2px;background:#d8b24a}
.sy-mfoot{flex:0 0 auto;display:flex;justify-content:flex-end;gap:9px;padding:13px 18px;border-top:1px solid var(--border)}
.sy-cancel{height:32px;padding:0 16px;background:var(--surf2);border:1px solid var(--border2);border-radius:7px;color:var(--tx2);font-size:12.5px;cursor:pointer}
.sy-ok{height:32px;padding:0 18px;background:#238636;border:1px solid #2ea043;border-radius:7px;color:#fff;font-size:12.5px;font-weight:600;cursor:pointer}

/* ── market data panel (3rd sidebar) ─────────────────────────────────────────
   Right-edge region toggled from the titlebar; direction:rtl puts the native CSS
   resize handle on the LEFT edge (inner .mdp flips back to ltr). */
.rightpanel{width:340px;min-width:280px;max-width:560px;background:var(--bg);border-left:1px solid var(--border-soft);resize:horizontal;overflow:auto;direction:rtl;display:flex;flex-direction:column}
.mdp{direction:ltr;display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}
.mdp-head{height:34px;flex:0 0 34px;display:flex;align-items:center;justify-content:space-between;padding:0 8px 0 14px;border-bottom:1px solid var(--border-soft)}
.mdp-title{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:1px;color:var(--fg-faint);text-transform:uppercase}
.mdp-title .live{color:var(--green)}
.mdp-actions{display:flex;gap:2px}
.mdp-search{margin:8px 10px;display:flex;align-items:center;gap:7px;background:var(--surf1);border:1px solid var(--border-soft);border-radius:7px;padding:4px 9px;color:var(--fg-faint)}
.mdp-search input{flex:1;background:transparent;border:none;outline:none;color:var(--fg);font-size:12px;font-family:inherit;min-width:0}
.mdp-search input::placeholder{color:var(--fg-faint)}
.mdp-clear{background:transparent;border:none;color:var(--fg-faint);cursor:pointer;font-size:11px;padding:0}
.mdp-clear:hover{color:var(--fg)}
.mdp-scroll{flex:1;overflow-y:auto;min-height:0}
.mdp-empty{padding:18px 14px;color:var(--fg-faint);font-size:12px}
.mdp-acct{border-bottom:1px solid var(--border-soft)}
.mdp-acct-h{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--surf0);cursor:pointer;position:sticky;top:0;z-index:2}
.mdp-acct-h .chev{color:var(--fg-faint);font-size:9px;width:10px;flex-shrink:0}
.mdp-acct-h .dot{width:7px;height:7px;border-radius:50%;background:var(--gray);flex-shrink:0}
.mdp-acct-h .dot.on{background:var(--green)}
.mdp-acct-h .aid{font-family:var(--mono);font-size:11.5px;color:var(--fg2);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdp-acct-h .arole{font-size:10px;color:var(--fg-faint);background:var(--chip);border-radius:9px;padding:1px 8px;flex-shrink:0}
.mdp-acct-h .acount{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--fg-faint);flex-shrink:0}
.mdp-wl{margin:2px 0}
.mdp-wl-h{display:flex;align-items:center;gap:7px;padding:5px 12px 5px 18px;color:var(--fg-dim);cursor:pointer;font-size:11.5px;font-weight:500}
.mdp-wl-h:hover{background:var(--hover)}
.mdp-wl-h .chev{color:var(--fg-faint);font-size:9px;width:10px;flex-shrink:0}
.mdp-wl-h .star{color:var(--yellow);display:inline-flex;flex-shrink:0}
.mdp-wl-h .wlname{color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdp-wl-h .wlcount{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--fg-faint);flex-shrink:0}
.mdp-th{display:flex;padding:3px 14px 3px 28px;font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--fg-faint);border-bottom:1px solid var(--border-soft)}
.mdp-r{display:flex;align-items:center;padding:3px 14px 3px 28px;font-family:var(--mono);font-size:11.5px;cursor:pointer;border-left:2px solid transparent;user-select:none}
.mdp-r:hover{background:var(--hover)}
.mdp-r.sel{background:var(--sel);border-left-color:var(--accent)}
.mdp-r.flash{background:rgba(31,207,109,.06)}
.mdp-th .c-sym,.mdp-r .c-sym{flex:1.5;min-width:0;color:var(--fg);display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdp-th .c-bid,.mdp-r .c-bid,.mdp-th .c-ask,.mdp-r .c-ask{flex:1;text-align:right;white-space:nowrap;justify-content:flex-end}
.mdp-th .c-bid,.mdp-th .c-ask,.mdp-th .c-spr{color:var(--fg-faint)}
.mdp-r .c-bid{color:#e0a24a}
.mdp-r .c-ask{color:#6aa9e0}
.mdp-th .c-spr,.mdp-r .c-spr{flex:0 0 44px;text-align:right;color:var(--fg-faint);font-size:10.5px;white-space:nowrap}
.mdp-r .stale{opacity:.45}
.mdp-r .dirchip{width:10px;font-size:9px;color:var(--fg-faint);flex-shrink:0}
.mdp-r .dirchip.up{color:#1fcf6d}
.mdp-r .dirchip.dn{color:#ff4d5e}
.mdp-none{padding:4px 28px 6px;color:var(--fg-faint);font-size:11px}
.mdp-foot{height:24px;flex:0 0 24px;border-top:1px solid var(--border-soft);display:flex;align-items:center;gap:14px;padding:0 14px;font-family:var(--mono);font-size:10px;color:var(--fg-faint)}
.mdp-foot .g{color:var(--green)}

/* market data panel · filter popover (accounts / watchlists in-out) */
.mdp-pop{position:absolute;top:28px;right:0;width:250px;padding:12px;z-index:30;max-height:420px;overflow-y:auto}
.mdp-pop h3{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--fg-faint);margin:0 0 8px}
.mdp-f-acct,.mdp-f-wl{display:flex;align-items:center;gap:7px;padding:4px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--fg)}
.mdp-f-acct:hover,.mdp-f-wl:hover{background:var(--hover)}
.mdp-f-acct input,.mdp-f-wl input{accent-color:var(--accent);margin:0;flex-shrink:0}
.mdp-f-acct .dot{width:7px;height:7px;border-radius:50%;background:var(--gray);flex-shrink:0}
.mdp-f-acct .dot.on{background:var(--green)}
.mdp-f-acct .fa-label{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--fg2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdp-f-acct .fa-role{margin-left:auto;font-size:10px;color:var(--fg-faint);background:var(--chip);border-radius:9px;padding:1px 7px;flex-shrink:0}
.mdp-f-wl{padding-left:24px;color:var(--fg-dim)}
.mdp-f-wl.dis{opacity:.45;pointer-events:none}
.mdp-f-wl .star{color:var(--yellow);display:inline-flex;flex-shrink:0}
.mdp-f-wl .fw-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mdp-f-wl .fw-count{margin-left:auto;font-family:var(--mono);font-size:10px;color:var(--fg-faint)}
.mdp-f-reset{margin-top:8px;width:100%;height:26px;background:var(--surf2);border:1px solid var(--border2);border-radius:6px;color:var(--fg);font-size:11.5px;cursor:pointer}
.mdp-f-reset:hover{background:var(--hover)}
.mdp-foot .hid{margin-left:auto;color:var(--yellow)}

/* ── symbols page v10: toolbar + virtualized folder-tree table ── */
.sy-toolbar{display:flex;align-items:center;gap:12px;max-width:880px;margin:6px 0 12px}
.sy-search{flex:1;max-width:340px;display:flex;align-items:center;gap:7px;background:var(--surf1);border:1px solid var(--border-soft);border-radius:7px;padding:5px 10px;color:var(--fg-faint)}
.sy-search input{flex:1;background:transparent;border:none;outline:none;color:var(--fg);font-size:12px;font-family:inherit;min-width:0}
.sy-search input::placeholder{color:var(--fg-faint)}
.sy-viewtog{display:flex;background:var(--surf1);border:1px solid var(--border-soft);border-radius:7px;overflow:hidden}
.sy-viewtog button{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 11px;background:transparent;border:none;color:var(--fg-dim);font-size:11.5px;cursor:pointer}
.sy-viewtog button.on{background:var(--chip);color:var(--fg2)}
.act-link{color:var(--accent);cursor:pointer;font-size:11.5px}
.act-link:hover{text-decoration:underline}
.sy-virt{display:flex;flex-direction:column}
.sy-virt .sy-tbody{max-height:calc(100vh - 320px);min-height:200px;overflow-y:auto}
.sy-virt .sy-r{height:30px;border-top:none;border-bottom:1px solid var(--border-soft)}
.sy-folder{gap:7px;background:var(--surf0)}
.sy-folder:hover{background:var(--hover)}
.sy-fchev{color:var(--fg-faint);display:inline-flex;flex-shrink:0}
.sy-fico{color:#d8b24a;display:inline-flex;flex-shrink:0}
.sy-fname{color:var(--fg);font-weight:500}
.sy-fcount{font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}

/* ── watchlists page v10: master-detail ── */
.wl2-split{display:flex;gap:16px;margin-top:16px;align-items:flex-start}
.wl2-list{flex:0 0 280px;border:1px solid var(--border);border-radius:11px;background:var(--surf0);overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 330px)}
.wl2-create{display:flex;gap:7px;padding:10px;border-bottom:1px solid var(--border-tb)}
.wl2-create .wl-input{height:30px;min-width:0}
.wl2-create .wl-createbtn{height:30px;padding:0 11px}
.wl2-item{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;cursor:pointer;border-left:2px solid transparent;overflow-y:visible;flex-shrink:0}
.wl2-item:hover{background:var(--hover)}
.wl2-item.sel{background:var(--sel);border-left-color:var(--accent)}
.wl2-star{color:var(--yellow);display:inline-flex;flex-shrink:0}
.wl2-name{color:var(--fg);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl2-count{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint);flex-shrink:0}
.wl2-acts{display:none;align-items:center;gap:2px;flex-shrink:0}
.wl2-item:hover .wl2-acts{display:flex}
.wl2-detail{flex:1;min-width:0}
.wl2-dhead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.wl2-dname{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:600;color:var(--fg2)}
.wl2-dsub{font-family:var(--mono);font-size:11px;color:var(--fg-faint);margin-top:3px}
.wl2-table{border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--bg)}
.wl2-h{display:flex;align-items:center;height:30px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--border-tb);font-family:var(--mono);font-size:10px;color:var(--fg-faint);letter-spacing:.3px;text-transform:uppercase}
.wl2-tbody{max-height:calc(100vh - 430px);min-height:160px;overflow-y:auto}
.wl2-r{display:flex;align-items:center;height:28px;padding:0 14px;font-size:12px;color:var(--tx2);border-bottom:1px solid var(--border-soft)}
.wl2-r:hover{background:var(--surf1)}
.wl2-h .c-sym,.wl2-r .c-sym{flex:0 0 130px;color:var(--fg2)}
.wl2-h .c-desc,.wl2-r .c-desc{flex:1;min-width:120px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl2-h .c-path,.wl2-r .c-path{flex:0 0 220px;color:var(--fg-faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl2-h .c-x,.wl2-r .c-x{flex:0 0 30px;display:flex;justify-content:flex-end}

/* add-symbols dialog rows */
.wl2-cand{display:flex;align-items:center;gap:8px;height:28px;padding-right:10px;border-bottom:1px solid var(--border-soft);cursor:pointer}
.wl2-cand:hover{background:var(--hover)}
.wl2-cand.folder{background:var(--surf0)}
.wl2-cand.folder:hover{background:var(--hover)}
.wl2-cand.dim{opacity:.5;cursor:default}
.wl2-cand input{accent-color:var(--accent);margin:0;flex-shrink:0}
.wl2-cname{color:var(--fg);font-weight:500}

/* ── bottom-dock trading terminal (TerminalDock) ─────────────────────────────
   The dock grows when a trading tab is active; inside: toolbar + merged blotter
   (left) and the ACCOUNTS scope rail (right, LOGS-rail idiom) + totals footer. */
.dock.trade{flex:0 0 380px;height:380px}
.dock-tabsep{width:1px;height:14px;background:var(--surf2);margin:0 8px;flex:0 0 1px}
.dock-tab .dt-n{color:var(--yellow);font-size:10px;margin-left:5px}
.tdk{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.tdk-body{flex:1;display:flex;min-height:0;overflow:hidden}
.tdk-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
.tdk-toolbar{display:flex;align-items:center;gap:10px;height:32px;flex:0 0 32px;padding:0 10px;border-bottom:1px solid var(--surf1)}
.tdk-search{display:flex;align-items:center;gap:7px;background:var(--surf1);border:1px solid var(--surf2);border-radius:7px;padding:3px 9px;color:var(--fg-faint);min-width:230px}
.tdk-search input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--fg);font-family:var(--mono);font-size:11px}
.tdk-search input::placeholder{color:var(--fg-faint)}
.tdk-clear{background:transparent;border:0;color:var(--fg-faint);cursor:pointer;font-size:10px;padding:0}
.tdk-mode{display:flex;border:1px solid var(--surf2);border-radius:7px;overflow:hidden}
.tdk-mode button{border:0;background:transparent;color:var(--fg-faint);font-family:var(--mono);font-size:9.5px;letter-spacing:.6px;padding:4px 10px;cursor:pointer}
.tdk-mode button.on{background:var(--chip);color:var(--fg2)}
.tdk-note{font-family:var(--mono);font-size:9.5px;color:var(--fg-faint)}
.tdk-scroll{flex:1;min-height:0;overflow:auto}
.tdk-hrow{display:flex;align-items:center;height:28px;padding:0 8px;background:var(--panel);border-bottom:1px solid var(--border-tb);position:sticky;top:0;z-index:2}
.tdk-row{display:flex;align-items:center;height:27px;padding:0 8px;border-top:1px solid var(--surf0);font-size:11.5px}
.tdk-row:hover{background:var(--hover)!important}
.tdk-adot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px;vertical-align:1px}
.tdk-empty{padding:22px 16px;font-family:var(--mono);font-size:12px;color:var(--tx-faint2)}
.tdk-none{padding:6px 24px;font-family:var(--mono);font-size:10.5px;color:var(--tx-faint2)}
.tdk-grp{display:flex;align-items:center;gap:8px;height:29px;padding:0 12px;background:var(--surf0);border-top:1px solid var(--surf2);cursor:pointer;position:sticky;top:28px;z-index:1;font-family:var(--mono)}
.tdk-grp .chev{color:var(--fg-faint);font-size:9px;flex:0 0 auto}
.tdk-grp .dot{width:7px;height:7px;border-radius:50%;background:var(--gray);flex:0 0 7px}
.tdk-grp .dot.on{background:var(--green)}
.tdk-grp .gname{color:var(--fg2);font-size:11px;font-weight:600;white-space:nowrap}
.tdk-grp .gsub{color:var(--fg-faint);font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tdk-grp .gpnl{margin-left:auto;font-size:11px;font-weight:600;padding-right:4px}
.tdk-symrow{cursor:pointer}
.tdk-subrow{background:var(--bg2);opacity:.92}
.tdk-xp{position:relative;display:inline-block;width:150px;height:7px;border-radius:3px;background:var(--chip);overflow:hidden}
.tdk-xp i{position:absolute;top:0;bottom:0}
.tdk-xp i.l{background:#5fbf86;opacity:.8}
.tdk-xp i.s{background:#e2607a;opacity:.8}
/* ACCOUNTS rail — same geometry as the LOGS scope rail */
.tdk-rail{flex:0 0 236px;display:flex;flex-direction:column;border-left:1px solid var(--surf2);padding:8px 0 0;overflow-y:auto;font-family:var(--mono)}
.tdk-rail-h{font-size:9.5px;font-weight:600;letter-spacing:1.2px;color:var(--tx-faint2);padding:2px 16px 8px}
.tdk-rail-div{height:1px;background:var(--surf1);margin:5px 10px}
.tdk-rail .scope-row{height:29px}
.tdk-rail .rnm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}
.tdk-rail .rpnl{margin-left:auto;font-size:10.5px;flex:0 0 auto;padding-left:8px}
.tdk-rail .scope-row .rpnl{margin-left:auto}
.tdk-acct.off{opacity:.42}
.tdk-acct.dim .rnm{color:var(--fg-faint)}
.rscope{flex:0 0 auto;border:1px solid var(--surf2);background:transparent;color:var(--fg-faint);font-family:var(--mono);font-size:8px;letter-spacing:.5px;border-radius:8px;padding:1px 7px;cursor:pointer;margin-left:6px}
.rscope.all{color:var(--yellow);border-color:rgba(210,153,34,.4)}
.tdk-rail-sub{padding:0 16px 4px 32px;font-size:9px;color:var(--fg-faint);margin-top:-3px}
.tdk-rail-sub.dim{opacity:.55}
.tdk-rail-total{margin-top:auto;border-top:1px solid var(--surf1);padding:9px 16px 10px}
.tdk-rail-total .t{font-size:8.5px;letter-spacing:1px;color:var(--tx-faint2)}
.tdk-rail-total .big{font-size:17px;font-weight:600;margin-top:2px}
.tdk-rail-total .s2{font-size:9px;color:var(--fg-faint);margin-top:3px}
.tdk-foot{display:flex;align-items:center;gap:16px;height:26px;flex:0 0 26px;border-top:1px solid var(--surf1);padding:0 12px;font-family:var(--mono);font-size:10px;color:var(--fg-faint);background:var(--bg2)}
/* dock top-edge drag-resize handle */
.dock-resize{flex:0 0 5px;height:5px;margin-bottom:-2px;cursor:row-resize;touch-action:none;position:relative;z-index:6;background:transparent}
.dock-resize:hover,.dock-resize:active{background:var(--accent2);opacity:.45}

/* ── Group Desk (group-page redesign v2) — institutional dealer console ────── */
.gd2-shell{display:flex;flex-direction:column;border:1px solid var(--border2);border-radius:10px;overflow:hidden;background:var(--panel);min-height:520px}
.gd2-titlebar{height:32px;background:var(--titlebar);border-bottom:1px solid var(--border-tb);display:flex;align-items:center;padding:0 12px;gap:14px;font-family:var(--mono);font-size:10px;color:var(--fg-faint);white-space:nowrap;overflow:hidden}
.gd2-titlebar b{color:var(--fg2);font-weight:700;letter-spacing:.5px}
.gd2-status{height:26px;background:var(--titlebar);border-top:1px solid var(--border-tb);display:flex;align-items:center;padding:0 12px;gap:16px;font-family:var(--mono);font-size:9px;color:var(--fg-faint);letter-spacing:.3px;white-space:nowrap;overflow:hidden}
.gd2-titlebar .gn,.gd2-status .gn,.gd2-bt .gn,.gd2-stat .v.gn,.gd2-walp .v.gn{color:var(--green)}
.gd2-titlebar .rd,.gd2-status .rd,.gd2-bt .rd,.gd2-stat .v.rd,.gd2-walp .v.rd{color:var(--red)}
.gd2-titlebar .yl,.gd2-status .yl,.gd2-bt .yl,.gd2-stat .v.yl,.gd2-walp .v.yl{color:var(--yellow)}
.gd2-titlebar .am,.gd2-status .am,.gd2-bt .am,.gd2-stat .v.am,.gd2-walp .v.am{color:var(--bid)}
.gd2-bt .dm,.gd2-walp .v.dm{color:var(--fg-faint)}
.gd2-sp{margin-left:auto}
.gd2-tabs{display:flex;background:var(--titlebar);border-bottom:1px solid var(--border);height:30px;font-family:var(--mono);font-size:10px;overflow-x:auto}
.gd2-tab{padding:0 13px;display:flex;align-items:center;gap:7px;color:var(--fg-dim);cursor:pointer;border-right:1px solid var(--border-soft);white-space:nowrap;user-select:none}
.gd2-tab:hover{background:var(--hover)}
.gd2-tab.act{color:var(--fg2);background:var(--panel);box-shadow:inset 0 -2px 0 var(--accent2)}
.gd2-tab .b{font-size:8.5px;padding:0 5px;border-radius:7px;background:var(--chip);color:var(--fg-faint)}
.gd2-tab .b.rd{background:rgba(240,106,106,.18);color:var(--red)}
.gd2-tab .b.yl{background:rgba(210,153,34,.18);color:var(--yellow)}
.gd2-body{flex:1;background:var(--panel);overflow:auto}
.gd2-sech{height:22px;background:var(--surf0);border-bottom:1px solid var(--border-soft);border-top:1px solid var(--border-soft);display:flex;align-items:center;gap:12px;padding:0 10px;font-family:var(--mono);font-size:8.5px;letter-spacing:1px;text-transform:uppercase;color:var(--fg-faint)}
.gd2-sech .r{margin-left:auto;display:flex;gap:12px;align-items:center;letter-spacing:.3px;text-transform:none}
.gd2-sech .lnk{color:var(--accent);cursor:pointer}
.gd2-banner{display:flex;gap:10px;align-items:center;padding:5px 10px;font-family:var(--mono);font-size:9.5px;border-bottom:1px solid var(--border-soft);flex-wrap:wrap}
.gd2-banner.rd{background:rgba(240,106,106,.08);color:var(--red)}
.gd2-banner.yl{background:rgba(210,153,34,.07);color:var(--yellow)}
.gd2-banner .act{color:var(--accent);border:1px solid var(--border2);border-radius:4px;padding:0 8px;cursor:pointer}
.gd2-stats{display:flex;border-bottom:1px solid var(--border-soft);background:var(--surf0);overflow-x:auto}
.gd2-stat{flex:1;min-width:110px;padding:6px 10px;border-right:1px solid var(--border-soft);font-family:var(--mono);cursor:pointer}
.gd2-stat:hover{background:var(--hover)}
.gd2-stat .l{font-size:7.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--fg-faint)}
.gd2-stat .v{font-size:13px;color:var(--fg2);margin-top:1px;font-weight:600}
.gd2-stat .v small{font-size:9.5px;font-weight:400;color:var(--fg-dim)}
.gd2-bt{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:10.5px}
.gd2-bt th{text-align:left;font-size:7.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--fg-faint);padding:4px 8px;border-bottom:1px solid var(--border2);font-weight:600;background:var(--surf0);white-space:nowrap;position:sticky;top:0}
.gd2-bt td{padding:3px 8px;border-bottom:1px solid var(--border-soft);color:var(--fg-dim);white-space:nowrap}
.gd2-bt th.r,.gd2-bt td.r{text-align:right}
.gd2-bt tr:hover td{background:var(--hover)}
.gd2-bt tr.selrow td{background:var(--sel);box-shadow:inset 2px 0 0 var(--accent)}
.gd2-bt tr.dim td{opacity:.45}
.gd2-bt .sym{color:var(--sym,#d8b24a);font-weight:600}
.gd2-bt .lg{color:var(--fg2)}
.gd2-bt .buy{color:#5fbf86;font-weight:600}
.gd2-bt .sell{color:#e2607a;font-weight:600}
.gd2-bt .venc{color:#5fb0c8}
.gd2-bt .flowc{color:#9b8cff}
.gd2-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--green)}
.gd2-dot.off{background:var(--gray,#6e7681)}
.gd2-tb{display:flex;gap:6px;align-items:center;padding:5px 8px;border-bottom:1px solid var(--border-soft);background:var(--surf0);font-family:var(--mono);font-size:9.5px;flex-wrap:wrap}
.gd2-tb .in{background:var(--surf1);border:1px solid var(--border);border-radius:4px;padding:2px 8px;color:var(--fg);min-width:150px;font-family:var(--mono);font-size:9.5px;outline:none}
.gd2-tb .f{border:1px solid var(--border2);border-radius:4px;padding:2px 8px;color:var(--fg-dim);cursor:pointer;background:var(--panel);user-select:none;display:inline-flex;gap:4px;align-items:center}
.gd2-tb .f.on{color:var(--fg2);border-color:var(--accent2)}
.gd2-tb .btn{border:1px solid var(--border2);border-radius:4px;padding:2px 10px;cursor:pointer;background:var(--surf2);color:var(--fg);user-select:none}
.gd2-tb .btn.pri{background:rgba(63,185,80,.14);border-color:rgba(63,185,80,.4);color:var(--green)}
.gd2-sel{background:var(--surf1);border:1px solid var(--border2);border-radius:4px;color:var(--fg);font-family:var(--mono);font-size:9.5px;padding:1px 4px;max-width:170px}
.gd2-sel.none{color:var(--red);border-color:rgba(240,106,106,.4)}
.gd2-wal3{display:grid;grid-template-columns:1fr 1fr 1fr;border-bottom:1px solid var(--border-soft)}
.gd2-walp{border-right:1px solid var(--border-soft);font-family:var(--mono);min-width:0}
.gd2-walp:last-child{border-right:none}
.gd2-walp .wh{padding:4px 10px;font-size:7.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--fg-faint);background:var(--surf0);border-bottom:1px solid var(--border-soft);display:flex;justify-content:space-between;gap:8px}
.gd2-walp .wh .yl{color:var(--yellow)}
.gd2-walp .kv{display:flex;justify-content:space-between;gap:10px;padding:2px 10px;font-size:10px}
.gd2-walp .kv .k{color:var(--fg-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gd2-walp .kv .v{color:var(--fg);white-space:nowrap}
.gd2-split{display:grid;grid-template-columns:1.25fr 1fr}
.gd2-split>div{border-right:1px solid var(--border-soft);min-width:0}
.gd2-split>div:last-child{border-right:none}
.gd2-memsplit{display:grid;grid-template-columns:1fr 250px;align-items:start}
.gd2-drawer{border-left:1px solid var(--border-soft);font-family:var(--mono);padding:10px;position:sticky;top:0}
.gd2-drawer .dh{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.gd2-drawer .ava{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#0c0c0e}
.gd2-drawer .dn{font-size:11px;font-weight:600;color:var(--fg2)}
.gd2-drawer .dr{font-size:8.5px;color:var(--fg-faint);text-transform:uppercase;letter-spacing:.6px}
.gd2-drawer .kvrow{display:flex;justify-content:space-between;gap:10px;font-size:9.5px;padding:4px 0;border-bottom:1px solid var(--border-soft)}
.gd2-drawer .kvrow .k{color:var(--fg-faint)}
.gd2-drawer .kvrow .v{color:var(--fg);text-align:right}
.gd2-drawer .kvrow .v.gn{color:var(--green)} .gd2-drawer .kvrow .v.am{color:var(--bid)} .gd2-drawer .kvrow .v.dm{color:var(--fg-faint)}
.gd2-drawer .dbtns{display:flex;gap:5px;margin-top:10px;flex-wrap:wrap}
.gd2-drawer .btn{border:1px solid var(--border2);border-radius:4px;padding:2px 9px;cursor:pointer;background:var(--surf2);color:var(--fg);font-size:9.5px;user-select:none}
.gd2-addbox{padding:8px 10px;border-bottom:1px solid var(--border-soft);background:var(--surf0)}
.gd2-addbox .in{background:var(--surf1);border:1px solid var(--border);border-radius:4px;padding:3px 8px;color:var(--fg);font-family:var(--mono);font-size:10px;min-width:220px;outline:none}
.gd2-addbox .cands{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.gd2-addbox .cand{font-family:var(--mono);font-size:9.5px;border:1px dashed var(--border2);border-radius:4px;padding:2px 8px;cursor:pointer;color:var(--green)}
.gd2-addbox .cand .dm{color:var(--fg-faint)}
.gd2-addbox .cand:hover{background:var(--hover)}
.gd2-addbox .act{color:var(--accent);cursor:pointer;text-decoration:underline}
/* group desk · routing folder tree (virtualized, reuses the sy- tree row chrome) */
.gdrt{max-width:none;margin-top:2px}
.gdrt .sy-tbody{max-height:calc(100vh - 420px)}
.gdrt .sy-h,.gdrt .sy-r{font-family:var(--mono);font-size:10.5px}
.gdrt .gdrt-sym{flex:0 0 150px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gdrt .gdrt-sym.sym{color:var(--fg)}
.gdrt .gdrt-flow{flex:0 0 190px;min-width:0}
.gdrt .gdrt-mod{flex:0 0 90px}
.gdrt .gdrt-route{flex:1;min-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-dim)}
.gdrt .gdrt-n{flex:0 0 64px;text-align:right;padding-right:8px}
.gdrt .gdrt-st{flex:0 0 110px}
.gdrt .gdrt-act{flex:0 0 34px;display:flex;justify-content:flex-end}
.gdrt .sy-folder .gd2-sel{max-width:150px}
.gdrt .gn{color:var(--green)} .gdrt .rd{color:var(--red)} .gdrt .yl{color:var(--yellow)} .gdrt .dm{color:var(--fg-faint)}
.gdrt .buy{color:var(--green)} .gdrt .sell{color:var(--red)}
.gd2-pickbox{border-bottom:1px solid var(--border-soft);padding:9px 10px;background:var(--surf0)}
.gd2-pickbox .ph{font-family:var(--mono);font-size:8.5px;letter-spacing:.6px;color:var(--fg-faint);margin-bottom:8px}
.gd2-pickbox .pr{display:flex;flex-wrap:wrap;gap:6px}
.gd2-comms{display:grid;grid-template-columns:190px 1fr;min-height:300px}
.gd2-roster{border-right:1px solid var(--border-soft);font-family:var(--mono);font-size:10px;padding:6px;overflow:auto}
.gd2-roster .rh{font-size:7.5px;letter-spacing:.9px;color:var(--fg-faint);padding:3px 6px 7px}
.gd2-roster .rrow{display:flex;gap:7px;align-items:center;padding:4px 6px;border-radius:5px;color:var(--fg-dim);cursor:pointer;user-select:none}
.gd2-roster .rrow:hover{background:var(--hover)}
.gd2-roster .rrow.sel{background:var(--sel);box-shadow:inset 2px 0 0 var(--accent);color:var(--fg)}
.gd2-roster .rrow.off{opacity:.55}
.gd2-roster .ava{width:18px;height:18px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:7.5px;font-weight:700;color:#0c0c0e;flex:0 0 auto}
.gd2-thread{display:flex;flex-direction:column;min-width:0}
.gd2-thread .th{height:24px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;gap:10px;padding:0 10px;font-family:var(--mono);font-size:8.5px;letter-spacing:.8px;color:var(--fg-faint)}
.gd2-thread .th .r{margin-left:auto}
.gd2-thread .th .gn{color:var(--green)}
.gd2-thread .msgs{flex:1;overflow:auto;padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.gd2-thread .msg{font-size:11.5px;display:flex;gap:8px;align-items:baseline}
.gd2-thread .msg .who{font-family:var(--mono);font-size:9px;color:var(--fg-faint);flex:0 0 auto}
.gd2-thread .msg .txt{color:var(--fg)}
.gd2-thread .compose{display:flex;gap:8px;padding:8px 10px;border-top:1px solid var(--border-soft)}
.gd2-thread .compose input{flex:1;background:var(--surf1);border:1px solid var(--border);border-radius:5px;padding:5px 10px;color:var(--fg);font-family:var(--mono);font-size:10.5px;outline:none}
@media(max-width:1100px){.gd2-wal3{grid-template-columns:1fr}.gd2-split{grid-template-columns:1fr}.gd2-memsplit{grid-template-columns:1fr}}

/* ══════════ Routing v2 · workspace (Live Flow / Load Map / Filters) ══════════ */
/* workspace shell */
.rt2-head{padding:10px 16px 0;background:var(--bg2);flex:0 0 auto}
.rt2-statline{font-family:var(--mono);font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint);display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.rt2-statline .gn{color:#3fb950}.rt2-statline .yl{color:#d29922}.rt2-statline .rd{color:#f06a6a}.rt2-statline .aq{color:#5ad0c8}
.rt2-titlerow{display:flex;align-items:center;gap:12px;margin:5px 0 2px}
.rt2-titlerow h4{font-size:17px;font-weight:700;color:var(--fg2);letter-spacing:-.2px;margin:0;font-family:var(--mono)}
.rt2-ticketbtn{font-family:var(--mono);font-size:10px;border:1px solid rgba(63,185,80,.4);border-radius:7px;padding:4px 12px;color:#3fb950;cursor:pointer;background:rgba(63,185,80,.1)}
.rt2-tabs{display:flex;gap:2px;margin-top:8px;border-bottom:1px solid var(--border);padding:0 2px}
.rt2-tab{font-family:var(--mono);font-size:11px;color:var(--fg-dim);padding:6px 14px;border-radius:6px 6px 0 0;cursor:pointer;display:flex;gap:7px;align-items:center;background:transparent;border:1px solid transparent;border-bottom:none}
.rt2-tab .n{font-size:9px;color:var(--fg-faint);background:var(--chip,#26262a);border-radius:8px;padding:0 6px}
.rt2-tab .n.hot{color:#f06a6a;background:rgba(240,106,106,.12)}
.rt2-tab.act{color:var(--fg2);background:var(--panel);box-shadow:inset 0 -2px 0 var(--accent2);border-color:var(--border)}
.rt2-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.rt2-scrollbody{flex:1 1 auto;min-height:0;overflow:auto;padding:14px 16px 22px}
/* collapsible test-order ticket */
.rt2-ticket{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--surf0)}
/* OrderFlowStreams · compact institutional twin streams */
.ofs-toolbar{display:flex;gap:6px;align-items:center;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--bg2);flex:0 0 auto;flex-wrap:wrap}
.ofs-search{min-width:240px;max-width:320px;background:var(--surf1);border:1px solid var(--border);border-radius:7px;padding:4px 11px;font-family:var(--mono);font-size:10.5px;color:var(--fg)}
.ofs-search::placeholder{color:var(--fg-faint)}
.ofs-pill{font-family:var(--mono);font-size:10px;padding:3px 11px;border-radius:14px;border:1px solid var(--border2);color:var(--fg-dim);cursor:pointer;background:var(--surf0);display:inline-flex;gap:6px;align-items:center}
.ofs-pill .n{font-size:9px;color:var(--fg-faint)}
.ofs-pill.on{background:var(--surf2);color:var(--fg2);border-color:var(--accent2)}
.ofs-pill.rej{color:#f06a6a}
.ofs-pill.rej.on{border-color:rgba(240,106,106,.5);background:rgba(240,106,106,.08)}
.ofs-pill.live{color:#3fb950;border-color:rgba(63,185,80,.4)}
.ofs-pill.paused{color:#d29922;border-color:rgba(210,153,34,.5);background:rgba(210,153,34,.08)}
.ofs-hstat{font:600 9px var(--mono);letter-spacing:.4px;color:var(--fg-faint);text-transform:none;margin-left:12px}
.ofs-hstat b{font-weight:700}
.ofs-bands{display:flex;font:700 7.5px var(--mono);letter-spacing:.6px;padding:0;background:var(--surf0);border-bottom:1px solid var(--border-soft,#161619);overflow:hidden}
.ofs-bands span{padding:2px 6px;overflow:hidden;white-space:nowrap;text-overflow:clip;border-right:1px solid rgba(255,255,255,.03)}
.ofs-row{display:flex;align-items:center;height:19px;background:#121215;border-bottom:1px solid rgba(255,255,255,.025);cursor:default}
.ofs-row.odd{background:#16161a}
.ofs-row:hover{background:#1c1c21}
.ofs-row.sel{background:rgba(206,210,224,.10);box-shadow:inset 2px 0 0 var(--accent)}
.ofs-stick{position:sticky;z-index:2;background:inherit}
.ofs-blockstrip{display:flex;gap:8px;align-items:center;padding:5px 12px;background:rgba(240,106,106,.06);border-top:1px solid rgba(240,106,106,.25);border-bottom:1px solid rgba(240,106,106,.25);flex:0 0 auto;flex-wrap:wrap}
.ofs-blockstrip .lbl{font:600 10px var(--mono);color:var(--fg-dim)}
.ofs-blockbtn{font-family:var(--mono);font-size:9.5px;border:1px solid rgba(240,106,106,.4);border-radius:6px;padding:2px 9px;color:#f06a6a;cursor:pointer;background:rgba(240,106,106,.10)}
.ofs-blockbtn:hover{background:rgba(240,106,106,.2)}
.ofs-blockbtn.dismiss{border-color:var(--border2);color:var(--fg-faint);background:transparent}
/* Filters tab · the wall */
.wall-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.wall-tile{background:var(--surf0);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.wall-tile .kl{font-family:var(--mono);font-size:8px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint)}
.wall-tile .kv{font-family:var(--mono);font-size:17px;font-weight:600;color:var(--fg2);margin-top:3px}
.wall-tile .kv small{font-size:10px;color:var(--fg-dim);font-weight:400}
.wall-tile .ks{font-family:var(--mono);font-size:9px;margin-top:2px;color:var(--fg-dim)}
.wall-tile.bad .kv{color:#f06a6a}
.wall-list{border:1px solid var(--border);border-radius:10px;background:var(--surf0);overflow:hidden}
.wall-listhead{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--border-soft,#161619);font-family:var(--mono);font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint)}
.wall-listhead b{color:#f06a6a}
.wall-rule{display:flex;gap:12px;align-items:center;padding:7px 14px;border-bottom:1px solid var(--border-soft,#161619);font-family:var(--mono);font-size:10.5px;border-left:3px solid #e05555}
.wall-rule:hover{background:var(--hover,#1a1a1e)}
.wall-rule.off{border-left-color:#6e7681;opacity:.55}
.wall-rule .idx{color:var(--fg-faint);font-size:9px;flex:0 0 26px}
.wall-rule .act{color:#f06a6a;font-weight:700;font-size:9px;letter-spacing:.5px;flex:0 0 42px}
.wall-rule.off .act{color:#6e7681}
.wall-rule .fld{color:#5ad0c8}
.wall-rule .op{color:var(--fg-faint);padding:0 4px}
.wall-rule .val{color:var(--fg2);font-weight:600}
.wall-rule .hits{margin-left:auto;color:var(--fg-dim);font-size:9.5px;white-space:nowrap}
.wall-rule .hits b{color:#f06a6a}
.wall-rule .meta{color:var(--fg-faint);font-size:9px;white-space:nowrap}
.wall-tgl{width:26px;height:14px;border-radius:8px;background:rgba(63,185,80,.3);border:1px solid rgba(63,185,80,.5);position:relative;cursor:pointer;flex:0 0 26px}
.wall-tgl::after{content:"";position:absolute;right:1px;top:1px;width:10px;height:10px;border-radius:50%;background:#3fb950}
.wall-rule.off .wall-tgl{background:var(--surf2);border-color:var(--border2)}
.wall-rule.off .wall-tgl::after{left:1px;right:auto;background:#6e7681}
.wall-del{color:var(--fg-faint);cursor:pointer;font-size:11px;padding:0 2px}
.wall-del:hover{color:#f06a6a}
.wall-addbar{display:flex;gap:8px;align-items:center;padding:9px 14px;font-family:var(--mono);font-size:10.5px;background:var(--surf1)}
.wall-addbar select,.wall-addbar input{background:var(--surf2);border:1px solid var(--border2);border-radius:6px;padding:5px 10px;font-family:var(--mono);font-size:10.5px;color:var(--fg)}
.wall-addbtn{background:rgba(240,106,106,.12);border:1px solid rgba(240,106,106,.4);color:#f06a6a;border-radius:7px;padding:5px 14px;cursor:pointer;margin-left:auto;font-family:var(--mono);font-size:10.5px}
.wall-addbtn:disabled{opacity:.4;cursor:default}
/* Load Map tab */
.lm-tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}
.lm-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.lm-grid{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.lm-row{display:flex;gap:6px;align-items:center;font-family:var(--mono);font-size:10px}
.lm-row .hk{flex:0 0 110px;color:var(--fg-dim);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-row .hn{flex:0 0 52px;color:var(--fg-faint);font-size:9px;text-align:right}
.lm-cells{display:flex;gap:1px;flex:1;min-width:0}
.lm-cell{flex:1;height:15px;border-radius:1px;background:var(--surf1);min-width:2px}
.lm-cell:hover{outline:1px solid #5ad0c8}
.lm-axis{display:flex;gap:6px;font-family:var(--mono);font-size:8px;color:var(--fg-faint);margin-top:4px}
.lm-axis .hk{flex:0 0 110px}.lm-axis .hn{flex:0 0 52px}
.lm-axis .ticks{flex:1;display:flex;justify-content:space-between;border-top:1px solid var(--border2);padding-top:3px}
.lm-sectitle{font:700 9px var(--mono);letter-spacing:.8px;text-transform:uppercase;color:var(--fg-faint);margin:14px 0 4px}

/* ── Venue Watchlists (venue-watchlist-plan.html Phase 1): venue section headers + bid/ask grid ── */
.vwl-vhead{display:flex;align-items:center;gap:10px;background:var(--surf1);border:1px solid var(--border);border-radius:6px;padding:6px 12px;margin:12px 0 4px;font-size:12px}
.vwl-vhead .vwl-vname{font-weight:600;color:var(--fg2)}
.vwl-vhead .vwl-vmod{font-family:var(--mono);font-size:9.5px;color:var(--fg-faint);border:1px solid var(--border2);border-radius:4px;padding:1px 6px}
.vwl-vhead .vwl-vcount{font-family:var(--mono);font-size:10px;color:var(--fg-faint)}
.vwl-vhead .vwl-vstat{margin-left:auto;font-family:var(--mono);font-size:9.5px;letter-spacing:.4px}
.vwl-vhead .vwl-vstat.on{color:#3fb950}
.vwl-vhead .vwl-vstat.off{color:#f06a6a}
.vwl-table{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin:0 0 8px;font-size:12px}
.vwl-h,.vwl-r{display:grid;grid-template-columns:minmax(110px,1.4fr) 1fr 1fr 1fr 44px 100px 96px;gap:0 10px;align-items:center;padding:5px 10px}
.vwl-h{font-family:var(--mono);font-size:9.5px;letter-spacing:.6px;color:var(--fg-faint);background:var(--surf1);border-bottom:1px solid var(--border2)}
.vwl-r{border-top:1px solid var(--border-tb)}
.vwl-r:first-of-type{border-top:none}
.vwl-r:hover{background:var(--hover)}
.vwl-h .num,.vwl-r .num{text-align:right}
.vwl-r .vwl-sym{color:#d8b24a}
.vwl-r .vwl-bid{color:#3fb950}
.vwl-r .vwl-ask{color:#f06a6a}
.vwl-r .vwl-time{color:var(--fg-faint);font-size:11px}
.vwl-dlg-venue{display:flex;align-items:center;gap:8px;padding:6px 12px;cursor:pointer;border-left:2px solid transparent}
.vwl-dlg-venue:hover{background:var(--hover)}
.vwl-dlg-venue.sel{background:var(--hover);border-left-color:#7fd9d0;color:var(--fg2)}
.mdp-vhead{padding:2px 10px 1px 22px;font:600 8.5px var(--mono);letter-spacing:.7px;text-transform:uppercase;color:#7fd9d0;opacity:.85}
.vwl-sym .vwl-native{margin-left:6px;font:600 8px var(--mono);letter-spacing:.5px;color:#7fd9d0;border:1px solid rgba(127,217,208,.35);border-radius:3px;padding:0 4px;vertical-align:1px}

/* ── Venue-direct trading + venue wallet (venue-trading-plan.html) ── */
.vwl-acts{display:flex;gap:6px;align-items:center;justify-content:flex-end}
.vwl-tbtn{font:600 9.5px var(--mono);letter-spacing:.4px;border-radius:4px;padding:1px 7px;cursor:pointer;border:1px solid var(--border2);color:var(--fg-dim)}
.vwl-tbtn.buy{color:#3fb950;border-color:#1f4428}
.vwl-tbtn.buy:hover{background:rgba(63,185,80,.12)}
.vwl-tbtn.sell{color:#f06a6a;border-color:#4a2020}
.vwl-tbtn.sell:hover{background:rgba(240,106,106,.12)}
.vwx-card{background:var(--surf0);border:1px solid var(--border);border-radius:8px;padding:10px 16px;min-width:120px}
.vwx-card .k{font:500 9.5px var(--mono);letter-spacing:.6px;color:var(--fg-faint);margin-bottom:4px}
.vwx-card .v{font:700 17px var(--mono);color:var(--fg2)}
.vwx-card .v.pos{color:#3fb950}
.vwx-card .v.neg{color:#f06a6a}
.vwx-tx{width:100%;border-collapse:collapse;font-size:12px}
.vwx-tx th{font:500 9.5px var(--mono);letter-spacing:.6px;color:var(--fg-faint);text-align:left;padding:7px 12px;border-bottom:1px solid var(--border2);background:var(--panel);position:sticky;top:0}
.vwx-tx th.r,.vwx-tx td.r{text-align:right}
.vwx-tx td{padding:6px 12px;border-top:1px solid var(--surf0)}
.vwx-tx td.t{color:var(--fg-faint);font-size:11px}

/* ── Gateway CONNECTIONS tab (fix-gateway-monitoring-plan.html §09 SCR-1): KPI strip + session table ── */
.gwc-meta{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-family:var(--mono);font-size:10.5px;color:var(--fg-faint)}
.gwc-kpis{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.gwc-kpi{background:var(--surf0);border:1px solid var(--border);border-radius:8px;padding:9px 14px;min-width:112px}
.gwc-kpi .gwc-k{display:block;font:500 9.5px var(--mono);letter-spacing:.6px;color:var(--fg-faint);margin-bottom:4px}
.gwc-kpi .gwc-v{display:flex;align-items:center;gap:7px;font:700 16px var(--mono);color:var(--fg2)}
.gwc-kpi .gwc-u{font:500 10px var(--mono);color:var(--fg-faint);margin-left:1px}
.gwc-gn{color:var(--green)!important}
.gwc-yl{color:var(--yellow)!important}
.gwc-rd{color:var(--red)!important}
.gwc-badge{font:600 8.5px var(--mono);letter-spacing:.6px;border-radius:4px;padding:1px 6px;border:1px solid}
.gwc-badge.live{color:var(--green);border-color:rgba(63,185,80,.4);background:rgba(63,185,80,.08)}
.gwc-badge.stale{color:var(--yellow);border-color:rgba(210,153,34,.4);background:rgba(210,153,34,.08)}
.gwc-badge.quiet{color:var(--fg-faint);border-color:var(--border2);background:var(--surf1)}
.gwc-wrap{border:1px solid var(--border);border-radius:9px;overflow:auto}
.gwc-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11px}
.gwc-table th{font:500 9.5px var(--mono);letter-spacing:.6px;color:var(--fg-faint);text-align:left;padding:6px 10px;border-bottom:1px solid var(--border2);background:var(--panel);position:sticky;top:0;white-space:nowrap}
.gwc-table td{padding:5px 10px;border-top:1px solid var(--surf0);color:var(--tx2);white-space:nowrap}
.gwc-table th.r,.gwc-table td.r{text-align:right}
.gwc-table .gwc-login{color:#d8b24a}
.gwc-table .gwc-comp{color:#7aa2e0}
.gwc-na{padding:26px 16px;font-family:var(--mono);font-size:11.5px;color:var(--fg-faint)}
.gwc-empty{padding:22px 16px;color:var(--fg-faint)}
