/* Geist (Vercel, SIL OFL 1.1 — assets/fonts/OFL-Geist.txt), a self-hosted variable font; the one family on every view.
   Figures use tabular-nums instead of a mono face. */
@font-face{font-family:"Geist";font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/geist-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Geist";font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/geist-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--bg:#0a0a0c;--panel:#0d0d10;--surface:#111114;--raised:#16161a;--border:#232329;--border-strong:#2e2e36;--text:#e8e8ec;--text-secondary:#83838f;--text-muted:#858591;--accent:#ff6a1f;--gold:#ffb020;--positive:#2ecc8f;--negative:#ff4d5e;--info:#5b9dff;--sans:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--row-h:48px;
  /* Type scale (UX phase 0, 23 Sep 2026): six sizes and three weights (400 · 500 · 600) for every view.
     11 labels and captions · 12 table text · 13 body and figures · 15 headings · 19 KPI figures · 24 hero figures. */
  --fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-lg:15px;--fs-xl:19px;--fs-2xl:24px}
.expand-icon{flex:none;display:grid;place-items:center;width:18px;height:28px;padding:0;border:0;background:transparent;color:var(--text-secondary);cursor:pointer}
.expand-icon svg{width:14px;height:14px;transition:transform .15s ease}.expand-icon[aria-expanded="true"] svg{transform:rotate(90deg)}
/* Pair picker (owner, 25 Sep 2026, VOOI): an open coin lists every pair under it, both directions, widest first. */
.pair-options{background:#0c0c0f;border-bottom:1px solid var(--border-strong);box-shadow:inset 3px 0 var(--accent)}
.pair-option{border-bottom-color:#141418}.pair-option-asset{padding-left:26px}
.pair-option.reverse .cell,.pair-option.reverse .cell span{color:var(--text-muted)}.pair-option.reverse .apr-cell{color:var(--negative)}
.pair-option.reverse .venue-line img,.pair-option.reverse .points-chip,.pair-option.reverse .impact-chip{opacity:.55}
.trade-button.view{border-color:var(--border-strong);background:var(--raised);color:var(--text-secondary)}.trade-button.view:hover{border-color:var(--text-secondary);color:var(--text)}
.trade-button:disabled{opacity:.45;cursor:not-allowed}
.pair-leg-table:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);container:desk/inline-size}body{font:400 var(--fs-sm)/1.45 var(--sans);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a{outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent)}button{color:inherit}a{color:inherit;text-decoration:none}button:disabled{cursor:not-allowed!important;opacity:.42}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}::-webkit-scrollbar-track{background:var(--bg)}
.desk-header{height:56px;display:flex;align-items:center;gap:14px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--panel);position:sticky;top:0;z-index:50;white-space:nowrap}.desk-brand{display:flex;align-items:center;gap:8px}.desk-brand img{border-radius:50%}.desk-brand strong{font-size:var(--fs-lg);letter-spacing:.14em}.points-button,.wallet-badge{height:32px;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border-strong);border-radius:8px;background:var(--raised);padding:0 11px}.product-switcher{height:32px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border-strong);border-radius:8px;background:var(--raised);padding:0 12px;font:500 var(--fs-sm)/1 var(--sans);color:var(--text);cursor:pointer}.product-switcher span{color:var(--text-muted);font-size:var(--fs-xs);display:inline-flex;align-items:center;margin-top:-1px}.primary-nav{display:flex;align-items:center;gap:2px}.primary-nav a,.primary-nav button{height:30px;border:0;border-radius:6px;background:transparent;color:var(--text-secondary);padding:0 10px;font-size:var(--fs-sm);cursor:pointer}.primary-nav a:hover,.primary-nav button:hover{color:var(--text)}.primary-nav button.active{background:var(--raised);color:var(--text);font-weight:600}.account-strip{margin-left:auto;display:flex;align-items:center;gap:11px}.points-button{border-color:#4b3924;color:var(--gold);font-size:var(--fs-xs)}.avatar-stack{display:flex;align-items:center}.avatar-stack i{width:20px;height:20px;border:1px solid var(--border-strong);border-radius:50%;background:linear-gradient(135deg,#282831,#101014);margin-left:-5px}.avatar-stack i:first-child{margin-left:0}.avatar-stack span{font:400 var(--fs-xs) var(--sans);color:var(--text-muted);margin-left:5px}.balance-block{text-align:right;line-height:1.15}.balance-block small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}.balance-block strong{font:600 var(--fs-sm) var(--sans)}.wallet-badge{border-radius:999px;font:400 var(--fs-xs) var(--sans)}.wallet-badge i{width:7px;height:7px;border-radius:50%;background:var(--text-muted)}.wallet-badge.ready i{background:var(--positive)}
.status-banner{margin:8px 16px 0;padding:9px 12px;border-radius:8px;font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em}.status-banner.danger{border:1px solid rgba(255,77,94,.5);background:rgba(255,77,94,.09);color:var(--negative)}.status-banner.demo{border:1px solid rgba(255,176,32,.45);background:rgba(255,176,32,.08);color:var(--gold)}
body:has(.status-banner:not([hidden])) #view-scanner.active{height:calc(calc(100vh / var(--desk-zoom, 1)) - 56px - var(--banners-h,44px))}
.desk-view{display:none}.desk-view.active{display:block}#view-scanner.active{display:flex;flex-direction:column;height:calc(calc(100vh / var(--desk-zoom, 1)) - 56px);overflow:hidden}.scanner-titlebar,.section-heading{min-height:54px;padding:16px 18px 12px;display:flex;align-items:baseline;justify-content:space-between}.scanner-titlebar>div:first-child,.section-heading>div{display:flex;align-items:baseline;gap:14px}.scanner-titlebar h1,.section-heading h1{font:600 var(--fs-xl)/1.1 var(--sans);margin:0;letter-spacing:-.01em}.scanner-titlebar p,.section-heading p{margin:0;color:var(--text-secondary);font:400 var(--fs-sm) var(--sans)}.title-links{display:flex;align-items:center;gap:16px;color:var(--text-secondary);font:400 var(--fs-sm) var(--sans)}.title-links a:hover{color:var(--accent)}#sync-status{display:flex;align-items:center;gap:6px;font:400 var(--fs-xs) var(--sans);color:var(--gold)}#sync-status i{width:6px;height:6px;border-radius:50%;background:currentColor}.filter-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:0 18px 12px;background:transparent;border:0;height:auto;margin:0}.search-control{height:34px;width:220px;display:flex;align-items:center;gap:7px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-muted)}.search-control input{width:100%;border:0;outline:0;background:transparent;color:var(--text);font:400 var(--fs-sm) var(--sans)}.search-control input::placeholder{color:var(--text-muted)}.venue-filter{display:flex;align-items:center;gap:5px;padding:4px;border:1px solid var(--border);border-radius:8px;background:var(--surface);height:auto}.venue-filter button{height:26px;border:1px solid transparent;border-radius:6px;background:var(--raised);cursor:pointer}.venue-filter #venue-all{padding:4px 11px;border:0;border-radius:6px;background:var(--raised);color:var(--text-secondary);font:600 var(--fs-xs) var(--sans);cursor:pointer}.venue-filter #venue-all.active{background:var(--accent);color:#0a0a0c;border:0}.venue-chip{width:26px;height:26px;padding:0;border:1px solid var(--border-strong);border-radius:7px;background:var(--raised);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:.5}.venue-chip img{width:14px;height:14px;border-radius:3px;object-fit:cover}.venue-chip.active{opacity:1;border-color:var(--accent)}.select-control{height:34px;display:inline-flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-secondary);font:400 var(--fs-sm) var(--sans)}.select-control select{border:0;background:transparent;color:var(--text);outline:0;font:inherit}.strategy-count{margin-left:auto;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.control-button,.icon-button{height:34px;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer;color:var(--text)}.control-button{padding:0 12px;font:400 var(--fs-sm) var(--sans)}.control-button b{margin-left:6px;padding:2px 6px;border-radius:20px;background:var(--accent);color:#0a0a0c;font:600 var(--fs-xs) var(--sans)}.icon-button{width:34px;color:var(--text-secondary);font:400 var(--fs-sm) var(--sans)}.icon-button:hover,.control-button:hover{border-color:var(--accent);color:var(--accent)}.popover-wrap{position:relative}.desk-popover{position:absolute;right:0;top:40px;z-index:70;min-width:220px;padding:10px;border:1px solid var(--border-strong);border-radius:9px;background:var(--raised);box-shadow:0 16px 40px rgba(0,0,0,.45)}.desk-popover label{display:flex;align-items:center;gap:8px;padding:6px;font-size:var(--fs-xs)}.desk-popover input{accent-color:var(--accent)}.settings-popover{display:grid;grid-template-columns:1fr 1fr;gap:5px}.settings-popover span{grid-column:1/-1;color:var(--text-muted);font-size:var(--fs-xs);margin-top:4px}.settings-popover button{border:1px solid var(--border);border-radius:6px;background:var(--surface);padding:6px;color:var(--text-secondary)}.settings-popover button.active{border-color:var(--accent);color:var(--accent)}
.scanner-stage{display:flex;flex:1 1 auto;min-height:0;overflow:hidden;position:relative}
.scanner-stage .scanner-shell{flex:1 1 auto;min-width:0}
.scanner-inspector{flex:0 0 450px;width:450px;max-width:35vw;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;z-index:25;box-shadow:-10px 0 30px rgba(0,0,0,.4)}
.scanner-inspector[hidden]{display:none!important}
.inspector-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);background:var(--panel)}
.inspector-token-brand{display:flex;align-items:center;gap:10px}
.inspector-scroll{flex:1 1 auto;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.inspector-card{border:1px solid var(--border);border-radius:9px;background:var(--panel);padding:12px}
.inspector-actions{display:grid;grid-template-columns:.75fr 1.25fr;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--panel)}
.scanner-row.inspector-selected{background:rgba(255,106,31,.08)!important;box-shadow:inset 3px 0 var(--accent)}
#inspector-toggle.active{background:var(--accent);color:#0a0a0c;border-color:var(--accent);font-weight:600}
.scanner-shell{flex:1 1 auto;overflow:auto;min-height:0;border-top:1px solid var(--border);border-bottom:0}.scanner-canvas{width:100%;min-width:1400px}.scanner-grid{display:grid;width:100%;grid-template-columns:minmax(140px,1.1fr) minmax(132px,.9fr) minmax(56px,.4fr) minmax(88px,.65fr) minmax(68px,.5fr) minmax(86px,.65fr) minmax(132px,1fr) minmax(86px,.65fr) minmax(100px,.72fr) minmax(86px,.65fr) minmax(92px,.66fr) minmax(80px,.6fr) minmax(80px,.6fr) minmax(86px,.65fr) minmax(76px,.55fr);align-items:center;gap:0}.scanner-head{position:sticky;top:0;z-index:20;padding:9px 12px;background:var(--panel);box-shadow:inset 0 -1px 0 var(--border);color:var(--text-muted);font:500 var(--fs-xs)/1.3 var(--sans);height:auto}.scanner-head>div{padding:0 7px;white-space:nowrap}.scanner-head>div.col-ink{color:var(--text)}.scanner-head>div.col-ink2{color:var(--text-secondary)}.scanner-head>div:nth-child(n+6){text-align:right}.scanner-row{min-height:var(--row-h);padding:6px 12px;border-bottom:1px solid #17171b;cursor:pointer;background:transparent}.scanner-row:hover,.scanner-row.expanded{background:#131317}.cell{min-width:0;padding:0 7px}.numeric{font-family:var(--sans);font-variant-numeric:tabular-nums;text-align:right;font-size:var(--fs-sm);color:var(--text)}.stack{display:flex;flex-direction:column;gap:5px}.align-end{align-items:flex-end}.dim{color:var(--text-secondary)}.muted{color:var(--text-muted)}.positive{color:var(--positive)}.negative{color:var(--negative)}.warning{color:var(--gold)}.asset-cell{display:flex;align-items:center;gap:8px}.token-logo{width:22px;height:22px;flex:0 0 22px;border-radius:50%;overflow:hidden;background:var(--raised);display:grid;place-items:center;font:600 var(--fs-xs) var(--sans)}.token-logo img{width:100%;height:100%;object-fit:cover}.asset-name{font-size:var(--fs-md);font-weight:600;line-height:1.2;color:var(--text)}.mini-tags{display:flex;gap:4px;margin-top:3px;white-space:nowrap}.mini-tag{font:500 var(--fs-xs)/1 var(--sans);color:var(--text-secondary);background:var(--raised);border:1px solid var(--border);border-radius:4px;padding:2px 5px}.mini-tag.exc{color:var(--text-muted)}.venue-line{display:inline-flex;align-items:center;gap:5px;color:var(--scan-secondary);font:400 var(--fs-sm)/1.3 var(--sans);white-space:nowrap}.venue-line img{width:12px;height:12px;border-radius:50%}.apr-cell{font:600 var(--fs-lg) var(--sans);font-variant-numeric:tabular-nums;color:var(--positive);text-decoration:underline;text-decoration-color:#233a30;text-underline-offset:3px}.trade-button{padding:5px 12px;border:1px solid #4a3418;border-radius:6px;background:#241a0d;color:var(--gold);font:600 var(--fs-sm) var(--sans);cursor:pointer}.trade-button:hover{border-color:var(--accent);color:var(--accent)}.countdown{color:var(--text-muted);font-size:var(--fs-xs);font-family:var(--sans);margin-left:6px;display:inline-block;width:52px;text-align:right}.impact-chip{min-width:48px;padding:1px 6px;border-radius:5px;text-align:right;font:500 var(--fs-xs) var(--sans);font-variant-numeric:tabular-nums;display:inline-block}.impact-chip.good{background:rgba(46,204,143,.10);color:var(--positive)}.impact-chip.warn{background:rgba(255,176,32,.12);color:var(--gold)}.impact-chip.bad{background:rgba(255,77,94,.12);color:var(--negative)}.impact-chip.unknown{background:var(--raised);color:var(--text-muted)}.demo-watermark{display:inline-block;margin-left:5px;padding:2px 4px;border:1px solid #654a24;border-radius:3px;color:var(--gold);font-size:var(--fs-xs);vertical-align:middle}.empty-row{padding:44px 18px;text-align:center;color:var(--text-secondary)}.scanner-footnotes{display:flex;gap:18px;flex-wrap:wrap;padding:13px 18px 24px;font:400 var(--fs-xs) var(--sans);color:var(--text-muted);border:0}.scanner-bottom-tabs{flex:0 0 auto;display:flex;gap:2px;padding:8px 18px 10px;background:var(--panel);border-top:1px solid var(--border);z-index:10}.scanner-bottom-tabs button{padding:6px 12px;border:0;border-radius:6px;background:transparent;color:var(--text-secondary);font:500 var(--fs-sm) var(--sans);cursor:pointer}.scanner-bottom-tabs button.active{background:var(--raised);color:var(--text)}.scanner-bottom-tabs button:hover{color:var(--text)}
.card-label{display:flex;justify-content:space-between;color:var(--text-muted);font-size:var(--fs-xs);font-weight:600;letter-spacing:.09em;text-transform:uppercase}.strategy-legs{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin-top:9px}.leg-card{padding:9px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface)}.leg-card.short{border-color:rgba(46,204,143,.38)}.leg-card.long{border-color:rgba(255,77,94,.38)}.leg-card small{color:var(--text-muted);font-size:var(--fs-xs);text-transform:uppercase}.leg-card strong{display:flex;align-items:center;gap:5px;margin-top:3px;font:600 var(--fs-xs) var(--sans)}.leg-card span{display:block;margin-top:3px;font:400 var(--fs-xs) var(--sans)}.leg-divider{color:var(--accent);font:600 var(--fs-xs) var(--sans)}.card-note{margin:8px 0 0;color:var(--text-muted);font-size:var(--fs-xs)}.trail-chart{height:116px;margin-top:4px}.desk-chart{display:block;width:100%;height:100%;overflow:visible}.chart-grid{stroke:#202026;stroke-width:1}.chart-zero{stroke:#63636f;stroke-width:1;stroke-dasharray:3 4}.chart-axis{fill:#696974;font:400 var(--fs-xs) var(--sans)}.trail-stats{display:flex;justify-content:space-between;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.pretrade-list>div,.metric-row{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px solid #1c1c21;color:var(--text-secondary);font-size:var(--fs-xs)}.pretrade-list strong,.metric-row strong{font-family:var(--sans);color:var(--text)}.secondary-button,.primary-button{height:34px;border-radius:7px;font-weight:600;cursor:pointer}.secondary-button{border:1px solid var(--border-strong);background:var(--raised);color:var(--text-secondary)}.primary-button{border:1px solid var(--accent);background:var(--accent);color:#0a0a0c;font-size:var(--fs-xs);letter-spacing:.04em}.chart-empty,.empty-state{display:grid;place-items:center;min-height:110px;color:var(--text-muted);text-align:center}
.pair-toolbar{height:52px;display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid var(--border);background:#0d0d10}.pair-toolbar>button{padding:6px 13px;border:1px solid #2e2e36;border-radius:8px;background:#16161a;color:#e8e8ec;font:500 var(--fs-sm) var(--sans);cursor:pointer}.pair-toolbar>button:hover{border-color:#ff6a1f;color:#ff6a1f}.pair-title{display:flex;align-items:center;gap:7px;font:600 var(--fs-lg) var(--sans)}.pair-badges{display:flex;gap:8px}.pair-venue-pill{display:flex;align-items:center;gap:8px;padding:5px 11px;border:1px solid #232329;border-radius:8px;background:#111114}.pair-venue-pill img{width:16px;height:16px;border-radius:50%}.pill-kicker{font:400 var(--fs-xs) var(--sans);text-transform:uppercase;letter-spacing:.09em;display:block}.pill-kicker.long{color:#2ecc8f}.pill-kicker.short{color:#ff4d5e}.pill-mkt{font:500 var(--fs-sm) var(--sans);display:block}.pill-caret{color:var(--text-muted);font-size:var(--fs-xs)}.pair-docs{margin-left:auto;display:flex;gap:16px;color:#83838f;font:400 var(--fs-sm) var(--sans)}.pair-workspace{display:grid;grid-template-columns:minmax(0,1fr) 560px;min-height:calc(calc(100vh / var(--desk-zoom, 1)) - 106px)}.pair-analysis{min-width:0;padding:0;border-right:1px solid var(--border);background:#0a0a0c}.pair-summary{display:flex;align-items:flex-start;gap:0;padding:12px 16px;border-bottom:1px solid var(--border);background:#0d0d10}.spread-stack{flex:0 0 130px;display:flex;flex-direction:column;gap:8px;padding-right:14px;border-right:1px solid var(--border)}.spread-tile{border:1px solid #232329;border-radius:8px;background:#111114;padding:9px 11px}.spread-tile small{display:block;font:400 var(--fs-xs) var(--sans);color:var(--text-muted);letter-spacing:.06em}.spread-tile strong{font:600 var(--fs-lg)/1.2 var(--sans);font-variant-numeric:tabular-nums;margin-top:4px;display:block}.pair-leg-table{flex:1 1 auto;min-width:0;padding-left:14px;overflow-x:auto;display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(88px,1fr) minmax(84px,.9fr) minmax(84px,.9fr) minmax(150px,1.5fr) minmax(64px,.7fr) minmax(64px,.7fr);align-items:center}.pair-leg-table .head{font:400 var(--fs-xs) var(--sans);color:#83838f;padding:0 6px 8px;border-bottom:1px solid #1f1f25}.pair-leg-table>*:not(.head){padding:9px 6px;border-bottom:1px solid #17171b;font:400 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums}.venue-cell{display:flex;align-items:center;gap:8px}.caret-box{width:20px;height:20px;border:1px solid #2e2e36;border-radius:6px;background:#16161a;font:400 var(--fs-xs)/18px var(--sans);text-align:center;flex:0 0 auto}.caret-box.positive{color:#2ecc8f}.caret-box.negative{color:#ff4d5e}.venue-cell img{width:16px;height:16px;border-radius:50%;flex:0 0 auto}.quote-text{font:500 var(--fs-sm) var(--sans);white-space:nowrap}.ext-link{color:var(--text-muted);font-size:var(--fs-xs)}.factual-cell{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.interval-tag{font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}.countdown-tag{font:400 var(--fs-xs) var(--sans);color:#83838f;margin-left:auto}.chart-card,.activity-panel,.side-card,.data-panel{border:1px solid var(--border);border-radius:10px;background:var(--surface)}.pair-chart-card{margin:0;padding:14px 16px 6px;border:0;border-radius:0;border-bottom:1px solid var(--border);background:transparent}.chart-tabs{display:flex;gap:9px;padding:13px 16px 0;border-bottom:0}.chart-tabs button{padding:8px 15px;border:1px solid #232329;border-radius:8px;background:#111114;color:#83838f;font:500 var(--fs-sm) var(--sans);cursor:pointer}.chart-tabs button.active{border-color:#ff6a1f;background:rgba(255,106,31,.10);color:#ff6a1f}.chart-heading{display:flex;align-items:center;gap:9px;margin-top:14px;padding:0;border:0}.chart-heading h2{margin:0;font:500 var(--fs-lg) var(--sans);color:#e8e8ec}.timeframe-pill{margin-left:auto;display:flex;align-items:center;gap:7px;padding:5px 11px;border:1px solid #232329;border-radius:8px;background:#111114;font:400 var(--fs-xs) var(--sans);color:#e8e8ec}.chart-legend{display:flex;align-items:center;gap:18px;margin-top:9px;flex-wrap:wrap}.chart-legend-item{display:inline-flex;align-items:baseline;gap:7px;font:400 var(--fs-xs) var(--sans);color:#83838f}.chart-legend-item i{width:7px;height:7px;border-radius:50%;display:inline-block;align-self:center}.chart-legend-item b{font:600 var(--fs-xs) var(--sans);color:#e8e8ec}.chart-legend-item span{font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}.pair-chart{height:auto;min-height:300px;margin-top:10px;position:relative}.chart-footer{display:flex;gap:20px;margin-top:8px;font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}.activity-panel{margin:0;padding:14px 16px;border:0;border-radius:0;background:transparent}.activity-tabs{display:flex;gap:7px;flex-wrap:wrap}.activity-tabs button{padding:8px 14px;border:1px solid #232329;border-radius:8px;background:#111114;color:#83838f;font:500 var(--fs-sm) var(--sans);cursor:pointer}.activity-tabs button.active{border-color:#ff6a1f;background:rgba(255,106,31,.10);color:#ff6a1f}.pair-side{flex:0 0 560px;border-left:1px solid var(--border);background:#0d0d10;min-height:calc(calc(100vh / var(--desk-zoom, 1)) - 56px);padding:0}.pair-venue-heads{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--border)}.pair-venue-head{display:flex;align-items:center;gap:9px;padding:11px 14px}.pair-venue-head:first-child{border-right:1px solid var(--border)}.pair-venue-head img{width:20px;height:20px;border-radius:50%}.venue-head-name{font:400 var(--fs-xs) var(--sans);color:#83838f}.venue-head-bal{font:500 var(--fs-sm) var(--sans);color:#e8e8ec}.venue-connect-btn{margin-left:auto;padding:6px 12px;border:1px solid #2e2e36;border-radius:8px;background:#16161a;color:#e8e8ec;font:500 var(--fs-xs) var(--sans);cursor:pointer}.venue-connect-btn:hover{border-color:#ff6a1f;color:#ff6a1f}.pair-order-panel{padding:13px 14px}.pair-order-hero{display:flex;align-items:flex-start;gap:10px}.pair-order-hero img{width:18px;height:18px;border-radius:50%;margin-top:2px}.order-hero-sub{font:400 var(--fs-xs) var(--sans);color:#83838f}.order-hero-price{font:600 var(--fs-lg) var(--sans);font-variant-numeric:tabular-nums;margin-top:2px;color:#e8e8ec}.order-type-pill{margin-left:auto;display:flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid #232329;border-radius:8px;background:#111114;font:400 var(--fs-xs) var(--sans);color:#e8e8ec}.pair-order-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.pair-order-col{display:flex;flex-direction:column;gap:9px}.pair-select-row{display:grid;grid-template-columns:1fr 1.2fr;gap:8px}.pair-pill-select{display:flex;align-items:center;padding:8px 11px;border:1px solid #232329;border-radius:8px;background:#111114;font:400 var(--fs-sm) var(--sans);color:#e8e8ec}.pair-size-box{display:flex;align-items:center;padding:9px 11px;border:1px solid #232329;border-radius:8px;background:#111114;font:400 var(--fs-sm) var(--sans)}.pair-slider-wrap{width:100%}.pair-slider-wrap input[type=range]{width:100%;accent-color:#ff6a1f;cursor:pointer}.pair-slider-labels{display:flex;justify-content:space-between;font:400 var(--fs-xs) var(--sans);color:var(--text-muted);margin-top:2px}.pair-copy-btn{padding:9px;border:1px solid #232329;border-radius:8px;background:#111114;color:#83838f;font:500 var(--fs-xs) var(--sans);cursor:pointer;text-align:center}.pair-copy-btn:hover{border-color:#ff6a1f;color:#ff6a1f}.pair-leg-tag{display:flex;align-items:center;gap:8px}.pair-leg-tag img{width:16px;height:16px;border-radius:50%}.leg-name{font:500 var(--fs-sm) var(--sans);color:#e8e8ec}.pair-side-badge{font:600 var(--fs-xs) var(--sans);border-radius:4px;padding:3px 7px;text-transform:uppercase}.pair-side-badge.long{color:#2ecc8f;background:rgba(46,204,143,.12)}.pair-side-badge.short{color:#ff4d5e;background:rgba(255,77,94,.12)}.pair-checkbox-label{display:flex;align-items:center;gap:8px;font:400 var(--fs-xs) var(--sans);color:#83838f;cursor:pointer}.pair-checkbox-label input{width:14px;height:14px;accent-color:#ff6a1f}.pair-form-metrics{margin-top:14px}.pair-metric-line{display:grid;grid-template-columns:1fr auto 1fr auto;gap:8px;padding:5px 0;align-items:baseline}.pair-metric-line>span:nth-child(odd){font:400 var(--fs-xs) var(--sans);color:#83838f}.pair-metric-line>span:nth-child(even){font:500 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums}.pair-submit-btn{width:100%;margin-top:14px;padding:12px;border:1px solid #ff6a1f;border-radius:9px;background:#ff6a1f;color:#0a0a0c;font:600 var(--fs-md) var(--sans);cursor:pointer;text-align:center}.pair-submit-btn:hover{filter:brightness(1.1)}.pair-dual-book{padding:0 14px 20px}.pair-spread-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.pair-spread-card{border:1px solid #232329;border-radius:9px;background:#111114;padding:10px 12px}.pair-spread-card small{font:400 var(--fs-xs) var(--sans);color:var(--text-muted);display:block}.pair-spread-card strong{font:600 var(--fs-lg) var(--sans);margin-top:3px;display:block}.dual-orderbook{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}.orderbook-col{display:flex;flex-direction:column}.orderbook-head{display:flex;align-items:center;gap:7px}.orderbook-head img{width:16px;height:16px;border-radius:50%}.tick-sel{font:400 var(--fs-xs) var(--sans);color:#83838f}.orderbook-subhead{display:grid;grid-template-columns:1fr .9fr .9fr;gap:4px;margin-top:9px;padding-bottom:5px;font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}.orderbook-row{position:relative;display:grid;grid-template-columns:1fr .9fr .9fr;gap:4px;padding:3px 0;font:400 var(--fs-xs) var(--sans);font-variant-numeric:tabular-nums}.orderbook-row .book-bar{position:absolute;inset:0 auto 0 0;border-radius:3px;display:block}.orderbook-row .book-bar.ask{background:rgba(255,77,94,.13)}.orderbook-row .book-bar.bid{background:rgba(46,204,143,.12)}.orderbook-row>span{position:relative}.orderbook-footer{display:flex;align-items:baseline;gap:9px;margin-top:9px;padding-top:9px;border-top:1px solid #1f1f25}.mid-px{font:600 var(--fs-lg) var(--sans);color:#e8e8ec}.book-spread{font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}
.secondary-view{padding:0 18px 40px}.secondary-view .section-heading{padding-left:0;padding-right:0}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.kpi-card{padding:13px 14px;border:1px solid var(--border);border-radius:9px;background:var(--surface)}.kpi-card small{color:var(--text-muted);font-size:var(--fs-xs)}.kpi-card strong{display:block;margin-top:6px;font:600 var(--fs-xl) var(--sans)}.kpi-card p{margin:4px 0 0;color:var(--text-secondary);font:400 var(--fs-xs) var(--sans)}.data-panel{padding:13px}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.panel-title h2{margin:0;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em}.panel-title span{color:var(--text-secondary);font:400 var(--fs-xs) var(--sans)}.wide-table{overflow:auto}.table-grid{min-width:1080px;display:grid;grid-template-columns:120px 220px repeat(6,120px);align-items:center}.table-grid>*{padding:8px;border-bottom:1px solid var(--border);font-size:var(--fs-xs)}.table-grid .th{color:var(--text-muted);font-size:var(--fs-xs)}.venue-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.venue-card{padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.venue-card-head{display:flex;align-items:center;gap:9px}.venue-card-head img{width:28px;height:28px;border-radius:50%}.venue-card-head h2{margin:0;font-size:var(--fs-lg)}.venue-card-head span{margin-left:auto;font:400 var(--fs-xs) var(--sans)}.venue-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:13px}.venue-metrics small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}.venue-metrics strong{display:block;margin-top:4px;font:600 var(--fs-lg) var(--sans)}
.leg-card strong img,.book-side h3 img{width:14px;height:14px;flex:0 0 14px;border-radius:50%;object-fit:cover}
.provenance-badge{display:inline-flex;align-items:center;width:max-content;padding:3px 7px;border:1px solid #34343d;border-radius:5px;background:#17171c;color:#aaaab4;font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.045em;white-space:nowrap}.provenance-badge.live{border-color:rgba(46,204,143,.38);background:rgba(46,204,143,.08);color:#68d7ad}.provenance-badge.estimated{border-color:rgba(255,176,32,.42);background:rgba(255,176,32,.08);color:#e7b65e}.provenance-badge.unavailable{border-color:#35353e;background:#18181d;color:#8d8d98}.chart-empty-rich{min-height:300px;align-content:center;gap:7px;border:1px dashed #25252d;border-radius:9px;background:radial-gradient(circle at 50% 45%,rgba(255,106,31,.05),transparent 38%)}.chart-empty-rich strong{color:#b9b9c2;font:500 var(--fs-md) var(--sans)}.chart-empty-rich small{max-width:420px;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.empty-orbit{width:30px;height:30px;margin-bottom:3px;border:1px solid #34343e;border-radius:50%;box-shadow:inset 0 0 0 7px #121216}.pair-pill-select{width:100%;appearance:none;outline:0;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,#676773 50%),linear-gradient(135deg,#676773 50%,transparent 50%);background-position:calc(100% - 13px) 50%,calc(100% - 9px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat}.pair-capability-note{display:flex;align-items:center;gap:8px;margin-top:12px;padding:9px 10px;border:1px solid #2b2b32;border-radius:8px;background:#121216;color:#8d8d98;font:400 var(--fs-xs)/1.4 var(--sans)}.book-side-label{margin-left:auto;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.book-provenance{display:flex;align-items:center;gap:7px;min-height:27px;margin-top:8px;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.tob-only-grid{display:grid;grid-template-columns:1fr auto;gap:7px 12px;margin-top:8px;padding:11px;border:1px solid #24242b;border-radius:8px;background:#111114;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.tob-only-grid strong{font:500 var(--fs-xs) var(--sans)}[hidden]{display:none!important}body.comfortable{--row-h:60px}
@container desk (max-width:1180px){.primary-nav a,.points-button,.avatar-stack,.balance-block{display:none}.pair-workspace{grid-template-columns:minmax(0,1fr)}.pair-side{display:block}.venue-grid{grid-template-columns:repeat(2,1fr)}}
@container desk (max-width:760px){.desk-header{padding:0 10px}.product-switcher{display:none}.primary-nav button{padding:0 7px;font-size:var(--fs-xs)}.primary-nav button[data-view="orders"],.primary-nav button[data-view="venues"]{display:none}.wallet-badge span{display:none}.scanner-titlebar{align-items:flex-start}.scanner-titlebar>div:first-child{display:block}.scanner-titlebar p{margin-top:4px}.title-links a{display:none}.filter-bar{height:auto;flex-wrap:wrap}.search-control{width:100%}.strategy-count{margin-left:0}.scanner-shell{max-height:calc(calc(100vh / var(--desk-zoom, 1)) - 244px)}.pair-side{grid-template-columns:1fr}.pair-chart{height:260px}.kpi-grid,.venue-grid{grid-template-columns:1fr}.secondary-view{padding:0 10px}}

.scanner-head>div{display:flex}
.scanner-head>div:nth-child(n+6){justify-content:flex-end}
.sort-th{display:inline-flex;align-items:center;gap:3px;max-width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:inherit;white-space:nowrap;cursor:pointer;border-radius:3px}
.sort-th:hover{color:var(--text)}
.sort-th:focus-visible{outline:1px solid var(--accent,#e8a33d);outline-offset:2px}
.sort-th .sort-caret{opacity:.35;font-size:var(--fs-xs);line-height:1}
.sort-th:hover .sort-caret{opacity:.7}
.sort-th.sorted{color:var(--text)}
.sort-th.sorted .sort-caret{opacity:1;color:var(--accent,#e8a33d)}
.mock-preview-banner{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px;padding:14px 18px;border:0;border-radius:12px;background:#211a10;box-shadow:none}
.mock-preview-banner div{min-width:0}.mock-preview-banner span{display:block;color:var(--gold);font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.08em}.mock-preview-banner strong{display:block;margin-top:4px;color:var(--text);font:600 var(--fs-lg)/1.3 var(--sans)}.mock-preview-banner p{margin:3px 0 0;color:#a39784;font:400 var(--fs-sm)/1.4 var(--sans)}.mock-preview-banner a{flex:0 0 auto;padding:8px 14px;border:0;border-radius:8px;background:#342717;color:var(--gold);font:600 var(--fs-sm) var(--sans);text-decoration:none}.mock-preview-banner a:hover{background:#42311b}
.wallet-badge.mock{border-color:#4b3924;color:var(--gold)}.wallet-badge.mock i{background:var(--gold)}
.mock-kpi{position:relative;overflow:hidden;padding:16px 18px;border:0;border-radius:12px;background:#131419}
.mock-kpi small{color:#858896;font-size:var(--fs-xs);letter-spacing:.02em}
.mock-kpi strong{margin-top:8px;font:600 var(--fs-2xl)/1.1 var(--sans)}
.mock-kpi p{margin-top:6px;color:#858896;font:400 var(--fs-xs) var(--sans)}
.mock-kpi:after{content:'MOCK';position:absolute;top:12px;right:14px;color:#6d5c40;font:600 var(--fs-xs) var(--sans);letter-spacing:.08em}
.mock-count{color:var(--gold);font:600 var(--fs-sm) var(--sans)}
.mock-terminal-table{width:100%;border-collapse:collapse;font-size:var(--fs-md);text-align:left}
.mock-terminal-table th{padding:14px 16px;color:#848796;font:600 var(--fs-xs)/1.2 var(--sans);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid rgba(255,255,255,.07);white-space:nowrap}
.mock-terminal-table td{padding:16px 16px;border-bottom:1px solid rgba(255,255,255,.03);vertical-align:middle;color:#d5d7e0}
.mock-terminal-table tbody tr:hover td{background:rgba(255,255,255,.018)}
.mock-terminal-table .numeric{font-family:var(--sans);font-variant-numeric:tabular-nums;text-align:left}
.mock-asset-cell{display:flex;align-items:center;gap:12px}
.mock-asset-cell .token-logo{width:32px;height:32px;flex:0 0 32px;border-radius:50%;overflow:hidden;background:#181920}
.mock-asset-cell strong{display:block;color:var(--text);font:600 var(--fs-lg)/1.2 var(--sans)}
.mock-asset-cell small{display:block;margin-top:3px;color:#828594;font:600 var(--fs-xs)/1 var(--sans);letter-spacing:.04em}
.mock-priced-route{display:flex;flex-direction:column;gap:5px}
.mock-route-leg{display:flex;align-items:center;gap:8px;font:400 var(--fs-md)/1.2 var(--sans);color:#a6a8b4}
.mock-route-leg strong{color:var(--text);font-weight:600;font-size:var(--fs-md)}
.mock-route{display:flex;flex-direction:column;gap:5px}
.mock-route>span{display:flex;align-items:center;gap:8px;color:#a6a8b4;font:400 var(--fs-md)/1.2 var(--sans)}
.mock-side{display:inline-block;min-width:52px;padding:2px 4px;border-radius:4px;text-align:center;font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.04em;box-sizing:border-box}
.mock-side.short{color:var(--negative);background:rgba(255,77,94,.12);border:1px solid rgba(255,77,94,.22)}
.mock-side.long{color:var(--positive);background:rgba(46,204,143,.12);border:1px solid rgba(46,204,143,.22)}
.mock-basis-pill{display:inline-flex;align-items:center;padding:3px 8px;border-radius:5px;background:#241d13;color:var(--gold);border:1px solid rgba(255,176,32,.25);font:600 var(--fs-sm)/1 var(--sans)}
.mock-maker-fee-pill{display:inline-flex;align-items:center;padding:3px 8px;border-radius:5px;background:rgba(255,176,32,.09);color:var(--gold);border:1px solid rgba(255,176,32,.22);font:600 var(--fs-sm)/1 var(--sans);letter-spacing:.01em}
.mock-spread-cell{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left}
.mock-spread-flow{display:flex;align-items:center;gap:6px}
.mock-flow-arrow{display:inline-block;color:#626575;font-size:var(--fs-xs);margin:0 4px;user-select:none}
.mock-val-primary{display:inline-block;color:var(--text);font:600 var(--fs-md)/1.2 var(--sans)}
.mock-val-sub{display:block;margin-top:3px;color:#828594;font:400 var(--fs-xs)/1.2 var(--sans);letter-spacing:.01em}
.mock-spread-cell .mock-gap-move{white-space:nowrap}
.mock-gap-move{margin-top:2px;font-weight:600}
.mock-gap-move.positive{color:var(--positive)}
.mock-gap-move.negative{color:var(--negative)}
.mock-pnl-headline{display:block;font:600 var(--fs-lg)/1.2 var(--sans);text-align:left}
.mock-pnl-breakdown{display:flex;flex-direction:column;align-items:flex-start;gap:2px;font:400 var(--fs-sm)/1.3 var(--sans);text-align:left}
.mock-pnl-breakdown span{text-align:left}
.mock-pnl-breakdown small{color:#828594;font-size:var(--fs-xs)}
.mock-progress-line{display:flex;align-items:baseline;gap:6px;font-size:var(--fs-md)}
.mock-progress-line strong{font:600 var(--fs-md)/1.2 var(--sans);color:var(--text)}
.mock-progress-line small{font:400 var(--fs-xs)/1.2 var(--sans);color:#828594}
.mock-progress-mini{width:90px;height:5px;border-radius:4px;background:#20222c;overflow:hidden;margin-top:6px}
.mock-progress-mini i{display:block;height:100%;border-radius:4px;background:#77a7ff}
.mock-terminal-table tr:has(.mock-status.good) .mock-progress-mini i{background:var(--positive)}
.mock-terminal-table tr:has(.mock-status.warn) .mock-progress-mini i{background:var(--gold)}
.mock-status{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font:600 var(--fs-sm)/1 var(--sans);white-space:nowrap;border:1px solid transparent}
.mock-status i{width:6px;height:6px;border-radius:50%;background:var(--text-muted)}
.mock-status.good{color:var(--positive);background:rgba(46,204,143,.08);border-color:rgba(46,204,143,.2)}
.mock-status.good i{background:var(--positive)}
.mock-status.warn{color:var(--gold);background:rgba(255,176,32,.08);border-color:rgba(255,176,32,.2)}
.mock-status.warn i{background:var(--gold)}
.mock-status.working{color:#77a7ff;background:rgba(119,167,255,.08);border-color:rgba(119,167,255,.2)}
.mock-status.working i{background:#77a7ff;box-shadow:0 0 0 2px rgba(119,167,255,.15)}
.mock-status.risk{color:var(--negative);background:rgba(255,77,94,.08);border-color:rgba(255,77,94,.2)}
.mock-status.risk i{background:var(--negative)}
.mock-order-side{display:inline-block;font:600 var(--fs-sm)/1.2 var(--sans);text-transform:uppercase;letter-spacing:.04em}
.mock-order-side.long{color:var(--positive)}
.mock-order-side.short{color:var(--negative)}
/* Cell sizes that used to be inline; the Orders view rescales them below. */
.mock-cell-time{font-size:var(--fs-md)}
.mock-cell-strong{font-size:var(--fs-md);font-weight:600}
.mock-cell-note{font-size:var(--fs-md);color:var(--text-secondary)}
/* Orders: the Arbitrage desk's scale (12px mono rows, 10.5px heads, 22px logos) and even columns. */
#view-orders .mock-terminal-table{table-layout:fixed;font-size:var(--fs-sm)}
#view-orders .mock-terminal-table th{padding:10px 12px;font:500 var(--fs-xs)/1.3 var(--sans);letter-spacing:.04em}
#view-orders .mock-terminal-table td{padding:9px 12px;overflow:hidden;text-overflow:ellipsis}
#view-orders .mock-terminal-table th:first-child,#view-orders .mock-terminal-table td:first-child{padding-left:16px}
#view-orders .mock-asset-cell{gap:9px}
#view-orders .mock-asset-cell .token-logo{width:22px;height:22px;flex-basis:22px}
#view-orders .mock-asset-cell strong{font-size:var(--fs-md)}
#view-orders .mock-asset-cell small{margin-top:2px;font-size:var(--fs-xs)}
#view-orders .mock-priced-route,#view-orders .mock-route{gap:4px}
#view-orders .mock-route-leg,#view-orders .mock-route>span{gap:7px;font-size:var(--fs-sm);white-space:nowrap}
#view-orders .mock-route-leg strong{font-size:var(--fs-sm)}
#view-orders .mock-route-venue{display:inline-block;width:82px;overflow:hidden;text-overflow:ellipsis}
#view-orders .mock-side{width:40px;font-size:var(--fs-xs);padding:2px 3px}
#view-orders .mock-basis-pill,#view-orders .mock-maker-fee-pill{padding:2px 6px;font-size:var(--fs-xs)}
#view-orders .mock-val-primary,#view-orders .mock-cell-strong,#view-orders .mock-progress-line strong,#view-orders .mock-pnl-headline{font-size:var(--fs-sm)}
#view-orders .mock-cell-time,#view-orders .mock-cell-note{font-size:var(--fs-sm)}
#view-orders .mock-val-sub,#view-orders .mock-progress-line small{margin-top:2px;font-size:var(--fs-xs)}
#view-orders .mock-progress-line{flex-wrap:wrap;column-gap:6px;row-gap:1px;font-size:var(--fs-sm);white-space:nowrap}
#view-orders .mock-progress-line small{flex-basis:100%;overflow:hidden;text-overflow:ellipsis}
#view-orders .mock-progress-mini{width:72px;height:4px;margin-top:5px}
#view-orders .mock-status{padding:3px 8px;font-size:var(--fs-xs);gap:5px}
#view-orders .mock-status i{width:5px;height:5px}
/* Column shares (sum 100%): Created · Asset · Route · Spread · Notional · Legs · APR · Fees · Status. */
#view-orders .mock-arb-orders-table th:nth-child(1){width:10%}
#view-orders .mock-arb-orders-table th:nth-child(2){width:9%}
#view-orders .mock-arb-orders-table th:nth-child(3){width:19%}
#view-orders .mock-arb-orders-table th:nth-child(4){width:11%}
#view-orders .mock-arb-orders-table th:nth-child(5){width:8%}
#view-orders .mock-arb-orders-table th:nth-child(6){width:14%}
#view-orders .mock-arb-orders-table th:nth-child(7){width:10%}
#view-orders .mock-arb-orders-table th:nth-child(8){width:9%}
#view-orders .mock-arb-orders-table th:nth-child(9){width:10%}
@container desk (max-width:1000px){.mock-terminal-table{min-width:980px}}
@container desk (max-width:760px){.mock-preview-banner{align-items:flex-start}.mock-preview-banner p{display:none}.mock-preview-banner a{padding:6px 10px}.mock-kpi:after{top:10px}}
.venue-card.watchlist{border-style:dashed;background:transparent}
.venue-card.watchlist .venue-metrics strong,.venue-card.watchlist h2{color:var(--text-secondary)}
.venue-card-head .pending{color:var(--gold)}
.venue-monogram{font-style:normal;flex:0 0 28px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px dashed var(--border-strong);border-radius:50%;color:var(--text);font:600 var(--fs-xs)/1 var(--sans);letter-spacing:.04em}
.venue-metrics{grid-template-columns:repeat(4,minmax(0,150px));justify-content:start}

/* Preserve all navigation actions at narrow widths and enlarged text. */
@container desk (max-width:760px){
  .desk-header{height:auto;min-height:56px;flex-wrap:wrap;padding-top:8px;gap:8px}
  .primary-nav{order:3;flex:0 0 100%;overflow-x:auto;padding-bottom:8px}
  .primary-nav button[data-view="orders"],.primary-nav button[data-view="venues"]{display:inline-flex;align-items:center}
  .wallet-badge span{display:inline}
  .pair-toolbar{height:auto;min-height:52px;flex-wrap:wrap;padding:10px}
}
/* Header: every control in the account strip is a 32px pill, same radius, same gap. */
.desk-header{gap:12px}.account-strip{gap:8px}
.points-button,.avatar-stack,.account-button{height:32px;border:1px solid var(--border-strong);border-radius:8px;background:var(--raised);padding:0 11px;cursor:pointer;color:var(--text)}
.product-switcher:hover,.points-button:hover,.avatar-stack:hover,.account-button:hover{border-color:var(--accent)}
.product-menu{left:0;right:auto;min-width:200px;padding:6px}.product-menu button{display:block;width:100%;text-align:left;border:0;border-radius:7px;background:transparent;color:var(--text);padding:8px 10px;font-size:var(--fs-sm);cursor:pointer}.product-menu button:hover,.product-menu button.active{background:var(--surface)}.product-menu button small{display:none}
.points-button{border-color:#4b3924;color:var(--gold);font-size:var(--fs-xs);gap:7px}
.avatar-stack{display:inline-flex;align-items:center;padding:0 10px 0 8px;background:transparent}
.avatar-stack i{width:20px;height:20px;border:1.5px solid var(--raised);border-radius:50%;background:#16161a;margin-left:-6px;overflow:hidden;opacity:.85}.avatar-stack i:first-child{margin-left:0}.avatar-stack i.linked{opacity:1;filter:none;border-color:var(--positive)}.avatar-stack i img{width:100%;height:100%;object-fit:cover;display:block}
.account-button{display:inline-flex;align-items:center;gap:10px;padding:0 4px 0 12px}
.account-button .balance-block{display:flex;align-items:baseline;gap:7px;line-height:1}.account-button .balance-block small{display:inline;font-size:var(--fs-xs);color:var(--text-muted)}.account-button .balance-block strong{font:600 var(--fs-sm) var(--sans)}
.account-button .wallet-badge{height:24px;padding:0 9px;border-color:transparent;background:var(--surface)}
.points-cell{padding:0 7px}.points-chip{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px 0 4px;border-radius:20px;border:1px solid #4b3924;color:var(--gold);font:600 var(--fs-xs) var(--sans)}.points-chip img{width:12px;height:12px;border-radius:50%;margin-right:-2px}.points-chip b{font-weight:600}.points-cell[data-points="1"] .points-chip{border-color:var(--border-strong);color:var(--text-secondary)}
.points-badge{display:inline-block;padding:2px 7px;border-radius:6px;font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.02em;border:1px solid #4b3924;color:var(--gold)}.points-badge.ending{color:var(--accent);border-color:rgba(255,106,31,.45)}
.points-bm-btn{display:inline-flex;align-items:center;gap:3px;height:19px;padding:0 6px;border-radius:4px;border:1px solid #3d2e1b;background:rgba(255,176,32,.08);color:var(--gold);font:500 var(--fs-xs)/1 var(--sans);cursor:pointer;transition:all .15s ease}
.points-bm-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,106,31,.14)}
.points-popover{width:min(420px,calc(100vw - 32px));padding:0;overflow:hidden}.points-head{padding:14px 16px 8px;font:600 var(--fs-xs)/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}
.points-list{list-style:none;margin:0;padding:0 6px 6px}.points-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px;align-items:center;padding:9px 10px;border-radius:10px}.points-row:hover{background:var(--surface)}.points-row>img{width:32px;height:32px;border-radius:50%;object-fit:cover}
.points-title{display:flex;align-items:center;gap:7px;font:600 var(--fs-md)/1.2 var(--sans);color:var(--text)}.points-body small{display:block;margin-top:3px;font:400 var(--fs-xs)/1.3 var(--sans);color:var(--text-muted)}.points-body small a{color:var(--text-muted);text-decoration:none;margin-left:2px}.points-body small a:hover{color:var(--accent)}
.points-value{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:3px;min-width:110px;line-height:1.2}.points-value strong{font:600 var(--fs-lg)/1.2 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--text);padding-right:4px}.points-row[data-sync="stale"] .points-value strong{color:var(--text-secondary)}.points-value input{box-sizing:border-box;width:110px;height:26px;margin:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);padding:0 4px;font:600 var(--fs-lg)/1.2 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-align:right;-moz-appearance:textfield}.points-value input::-webkit-outer-spin-button,.points-value input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.points-value input::placeholder{color:var(--text-muted)}.points-value input:hover{border-color:var(--border-strong)}.points-value input:focus{outline:0;border-color:var(--accent);background:var(--surface)}.points-value span{padding-right:4px;font:500 var(--fs-xs)/1 var(--sans);color:var(--text-muted);letter-spacing:.01em}.points-row[data-sync="live"] .points-value span{color:var(--positive)}
.points-foot{margin:0;padding:10px 16px 12px;border-top:1px solid var(--border);font:400 var(--fs-xs)/1.4 var(--sans);color:var(--text-muted);white-space:normal}
.venue-points{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:var(--fs-xs)}.venue-points small{margin-left:auto;font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}
@container desk (max-width:1180px){.account-button{display:none}}
.app-update{position:fixed;left:18px;bottom:18px;z-index:70;height:32px;padding:0 14px;border:1px solid var(--accent);border-radius:999px;background:rgba(255,106,31,.12);color:var(--accent);font:600 var(--fs-sm) var(--sans);cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.45);animation:app-update-in .3s ease-out}.app-update:hover{background:rgba(255,106,31,.2)}
@keyframes app-update-in{from{opacity:0;transform:translateY(8px)}}
.kpi-grid.kpi-5{grid-template-columns:repeat(5,minmax(0,1fr))}.kpi-grid.kpi-6{grid-template-columns:repeat(6,minmax(0,1fr))}
.accounts-panel{margin-bottom:12px}.manual-panel{margin-top:12px}.account-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
/* A venue not connected reads quieter without fading its text below AA contrast (UX phase 3). */
.account-card.offline .account-equity strong{color:var(--text-secondary)}.account-card.offline .account-share i{opacity:.4}.account-card.offline header img{opacity:.6}
.account-card{padding:13px 14px;border:1px solid var(--border);border-radius:9px;background:var(--raised)}
.account-card header{display:flex;align-items:center;gap:10px}.account-card header img{width:22px;height:22px;border-radius:50%}.account-card header strong{display:block;font-size:var(--fs-md)}.account-card header small{color:var(--text-muted);font-size:var(--fs-xs)}.account-card header>span{margin-left:auto;color:var(--text-secondary);font:600 var(--fs-xs) var(--sans)}
.account-equity{margin-top:12px}.account-equity small{color:var(--text-muted);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em}.account-equity strong{display:block;margin-top:4px;text-align:left;font:600 var(--fs-2xl) var(--sans);letter-spacing:-.01em}
.account-share{display:block;height:4px;margin:10px 0 8px;border-radius:3px;background:#20222c;overflow:hidden}.account-share i{display:block;height:100%;border-radius:3px;background:var(--accent)}
.account-rows>div{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-top:1px solid #1c1c21;font-size:var(--fs-xs)}.account-rows span{color:var(--text-secondary)}.account-rows b{font:500 var(--fs-xs) var(--sans);text-align:right}
.accounts-title-group{display:flex;align-items:center;gap:12px}.account-sort-group{display:inline-flex;align-items:center;background:#141418;border:1px solid #232329;border-radius:6px;padding:2px;gap:2px}.account-sort-pill{padding:3px 8px;border:0;border-radius:4px;background:transparent;color:#83838f;font:500 var(--fs-xs) var(--sans);cursor:pointer;transition:background .15s,color .15s}.account-sort-pill:hover{color:#e8e8ec}.account-sort-pill.active{background:#1f1f26;color:var(--accent);font-weight:600}@container desk (max-width:640px){.accounts-panel-title{flex-direction:column;align-items:flex-start;gap:8px}.accounts-title-group{width:100%;justify-content:space-between}}
@container desk (max-width:1180px){.kpi-grid.kpi-5,.kpi-grid.kpi-6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@container desk (max-width:760px){.kpi-grid.kpi-5,.kpi-grid.kpi-6{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* A countdown projected from the settlement cadence (the venue publishes no next time) is dotted; its title says why. */
.countdown[data-estimated="1"],.countdown-tag[data-estimated="1"]{text-decoration:underline dotted;text-underline-offset:2px}
/* An account the executor could not read: say so and why, never a $0 figure. */
.account-rows>.account-unreadable{flex-direction:column;align-items:flex-start;gap:3px}.account-unreadable span{color:var(--negative)!important;font-weight:600}.account-unreadable small{color:var(--text-muted);font-size:var(--fs-xs);line-height:1.4}

.venue-lookalikes{margin:24px 18px 32px;padding:16px 18px;border:1px solid var(--border);border-radius:10px;background:var(--panel)}.venue-lookalikes h2{margin:0 0 6px;font:600 var(--fs-md) var(--sans);color:var(--text)}
/* Manual hedges: two hand-opened positions the owner grouped so the desk tracks the spread,
   the carry and the combined P&L. The bot never trades one, so there is no Close here. */
.manual-group-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-dim)}
.manual-pick{border:1px solid var(--border);background:transparent;color:var(--text-dim);border-radius:6px;padding:3px 10px;font:inherit;font-size:var(--fs-xs);cursor:pointer}
.manual-pick:hover{color:var(--text);border-color:var(--text-dim)}
.manual-pick.picked{background:var(--accent-soft,rgba(255,106,26,.15));border-color:var(--accent,#ff6a1a);color:var(--accent,#ff6a1a)}
.hedge-card{border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:10px}
.hedge-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.hedge-card-head small{display:block;color:var(--text-dim);font-size:var(--fs-xs);margin-top:3px}
.hedge-card-actions{display:flex;align-items:center;gap:8px}
.hedge-chip{font-size:var(--fs-xs);color:var(--text-dim);border:1px solid var(--border);border-radius:999px;padding:3px 10px}
.hedge-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.hedge-stats > div{background:var(--surface-2,rgba(255,255,255,.03));border-radius:8px;padding:9px 11px;display:flex;flex-direction:column;gap:2px}
.hedge-stats span{font-size:var(--fs-xs);color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}
.hedge-stats strong{font-size:var(--fs-lg)}
.hedge-stats small{font-size:var(--fs-xs);color:var(--text-dim)}
@container desk (max-width:640px){.hedge-stats{grid-template-columns:repeat(2,1fr)}.hedge-card-head{flex-direction:column}}

/* Portfolio KPI row without its caption lines (19 Sep 2026): the cards lose the third line, so they
   get shorter and the numbers get bigger. The caption survives as the card's tooltip. */
.kpi-grid.kpi-compact .kpi-card{padding:11px 13px;display:flex;flex-direction:column;justify-content:center;min-height:62px}
.kpi-grid.kpi-compact .kpi-card small{font-size:var(--fs-xs);letter-spacing:.04em}
.kpi-grid.kpi-compact .kpi-card strong{margin-top:5px;font-size:var(--fs-2xl);line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@container desk (max-width:1400px){.kpi-grid.kpi-compact .kpi-card strong{font-size:var(--fs-xl)}}
@container desk (max-width:1180px){.kpi-grid.kpi-compact .kpi-card strong{font-size:var(--fs-xl)}}
/* Pair ticket (22 Sep 2026): the order form sends through the executor; every figure is real or a dash with a reason. */
.venue-head-lev{font:400 var(--fs-xs) var(--sans);color:#83838f;margin-top:2px}.venue-head-name .pair-side-badge{margin-left:4px;vertical-align:1px}.venue-session-btn{margin-left:auto;padding:6px 12px;border:1px solid #ff6a1f;border-radius:8px;background:rgba(255,106,31,.1);color:#ff6a1f;font:500 var(--fs-xs) var(--sans);cursor:pointer}.venue-session-tag{margin-left:auto;padding:4px 9px;border-radius:6px;font:500 var(--fs-xs) var(--sans);color:#83838f;background:#16161a;border:1px solid #232329;white-space:nowrap}.venue-session-tag[data-state=ready]{color:#2ecc8f;border-color:rgba(46,204,143,.35)}.venue-session-tag[data-state=view-only],.venue-session-tag[data-state=stale],.venue-session-tag[data-state=unavailable]{color:#f5b041;border-color:rgba(245,176,65,.35)}
.pair-order-hero .order-type-pill{white-space:nowrap}.pair-order-hero .order-hero-price.muted{color:#83838f;font-size:var(--fs-lg)}.pt-size{display:grid;grid-template-columns:1fr 150px;gap:9px 10px;margin-top:14px}.pt-field{display:flex;flex-direction:column;gap:5px;font:400 var(--fs-xs) var(--sans);color:#83838f}.pt-field input,.pt-field select{padding:9px 11px;border:1px solid #232329;border-radius:8px;background:#111114;color:#e8e8ec;font:500 var(--fs-md) var(--sans);min-width:0}.pt-field input:focus,.pt-field select:focus{outline:none;border-color:#ff6a1f}.pt-presets{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}.pt-presets button{flex:1 1 0;padding:7px 8px;border:1px solid #232329;border-radius:7px;background:#111114;color:#b4b4bd;font:500 var(--fs-xs) var(--sans);cursor:pointer}.pt-presets button[aria-pressed=true]{border-color:#ff6a1f;color:#ff6a1f}.pt-presets button:disabled{opacity:.45;cursor:not-allowed}#pair-size-slider{grid-column:1/-1;width:100%;accent-color:#ff6a1f}#pair-size-slider:disabled{opacity:.4}
.pt-metric-head{padding-bottom:6px;border-bottom:1px solid #1f1f25}.pt-metric-head .pair-side-badge{justify-self:start;text-transform:none}.pt-econ{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.pt-econ>div{border:1px solid #232329;border-radius:8px;background:#111114;padding:8px 9px}.pt-econ span{display:block;font:400 var(--fs-xs) var(--sans);color:#83838f}.pt-econ strong{display:block;margin-top:3px;font:600 var(--fs-md) var(--sans);font-variant-numeric:tabular-nums}.pt-econ strong.muted{color:#83838f;font-weight:400}
.pt-message{margin-top:12px;padding:9px 11px;border-radius:8px;border:1px solid #2e2e36;background:#111114;font:400 var(--fs-sm)/1.45 var(--sans);color:#e8e8ec}.pt-message[data-tone=error]{border-color:rgba(255,77,94,.45);color:#ff8b96}.pt-message[data-tone=success]{border-color:rgba(46,204,143,.45);color:#7bdcb5}
.pt-actions{display:grid;grid-template-columns:150px 1fr;gap:8px;margin-top:12px}.pt-actions .pair-submit-btn{margin-top:0}.pair-submit-btn:disabled{opacity:1;background:#18181c;border-color:#26262d;color:#8a8a96;cursor:not-allowed;filter:none}.pair-submit-btn[data-armed=true]{background:#ff4d5e;border-color:#ff4d5e;color:#0a0a0c}.pair-copy-btn:disabled{opacity:.45;cursor:not-allowed}.pt-ack{width:100%;margin-top:8px}.pt-foot{margin:8px 0 0;font:400 var(--fs-xs)/1.45 var(--sans);color:#83838f}.spread-sub{margin-top:3px;font:400 var(--fs-xs) var(--sans)!important;color:#8d8d99!important;letter-spacing:0!important}
.pair-dialog{border:1px solid #2e2e36;border-radius:12px;background:#111114;color:#e8e8ec;padding:18px;width:min(380px,calc(100vw - 32px))}.pair-dialog::backdrop{background:rgba(0,0,0,.6)}.pair-dialog h2{margin:0 0 8px;font:600 var(--fs-lg) var(--sans)}.pair-dialog p{margin:0 0 12px;font:400 var(--fs-sm)/1.5 var(--sans);color:#b4b4bd}.pt-remember{display:flex;align-items:center;gap:7px;margin:10px 0;font:400 var(--fs-sm) var(--sans);color:#b4b4bd}.pt-error{color:#ff8b96!important}.pt-dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}.pt-dialog-actions .pair-submit-btn{margin-top:0}
.venue-lev-set{display:flex;align-items:center;gap:5px;margin-top:5px}.venue-lev-set select{padding:3px 6px;border:1px solid #2e2e36;border-radius:6px;background:#16161a;color:#e8e8ec;font:500 var(--fs-xs) var(--sans)}.venue-lev-btn{padding:3px 9px;border:1px solid #ff6a1f;border-radius:6px;background:transparent;color:#ff6a1f;font:500 var(--fs-xs) var(--sans);cursor:pointer}.venue-lev-btn:disabled{opacity:.4;border-color:#2e2e36;color:#83838f;cursor:not-allowed}
/* Scanner type scale (22 Sep 2026): four sizes — 11 secondary, 12.5 figures, 13.5 symbol, 15 APR — nothing under 11px,
   Geist with tabular figures instead of mono so columns line up without the width, and two-line rows at 48px. */
:root{--scan-secondary:#9d9da8}
.scanner-row .numeric{font-family:var(--sans);font-size:var(--fs-md)}
.scanner-row .stack{gap:2px;line-height:1.3}
.scanner-row .countdown{color:var(--scan-secondary);font-size:var(--fs-xs);font-family:var(--sans);font-variant-numeric:tabular-nums;width:50px}
.scanner-head>div.col-ink2{color:var(--scan-secondary)}
.scanner-head>div.head-pair{display:flex;flex-wrap:wrap;justify-content:flex-end;column-gap:8px;row-gap:1px}
.head-pair-label{flex:0 0 100%;text-align:right}

.scanner-pager{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:8px 18px;border-top:1px solid var(--border);background:var(--panel);font:400 var(--fs-sm) var(--sans);color:var(--scan-secondary)}
.pager-range{font-variant-numeric:tabular-nums;min-width:110px}
.pager-pages{display:flex;align-items:center;gap:4px;margin:0 auto}
.pager-button{min-width:30px;height:28px;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:500 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums;cursor:pointer}
.pager-button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.pager-button.active{background:var(--accent);border-color:var(--accent);color:#0a0a0c;font-weight:600}
.pager-button:disabled{opacity:.35;cursor:default}
.pager-gap{padding:0 4px;color:var(--text-muted)}
.pager-size{display:flex;align-items:center;gap:8px}
.pager-size select{height:28px;padding:0 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:500 var(--fs-sm) var(--sans)}
@container desk (max-width:760px){.scanner-pager{flex-wrap:wrap;justify-content:space-between;gap:8px;padding:8px 10px}.pager-range{min-width:0}.pager-pages{order:3;flex:0 0 100%;justify-content:center;margin:0}.pager-button{min-width:28px;padding:0 6px}}
/* Pair chart axis (23 Sep 2026): the time labels thin out on a narrow plot so they never overlap. */
.pair-chart-plot{container-type:inline-size}
@container (max-width: 900px){.chart-x-label.minor{display:none}}
.venue-lookalikes summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none}.venue-lookalikes summary::-webkit-details-marker{display:none}
.venue-lookalikes summary::before{content:'▸';color:var(--text-muted);font-size:var(--fs-xs)}.venue-lookalikes details[open] summary::before{content:'▾'}
.venue-lookalikes summary h2{margin:0}.venue-lookalikes details[open] summary{margin-bottom:8px}.venue-lookalikes summary h2 .muted{margin-left:4px;font-weight:500}
.orders-pager{margin-top:4px;border-radius:0 0 10px 10px}
/* One type system across every view (23 Sep 2026, UX round 2): the scanner's rules from 22 Sep — Geist with
   tabular figures instead of mono, nothing under 11px — now apply to Pair, Executor, Portfolio, Orders and Venues. */
body{font-variant-numeric:tabular-nums}
small{font-size:max(11px,.83em)}
/* Header (23 Sep 2026, UX round 3): the "Trading Desk" menu repeated three tabs of the nav and is gone. Below
   1180px the balance stays in the header (it used to disappear) and the venue marks give way to it. */
.avatar-stack span{font:500 var(--fs-xs) var(--sans);color:var(--scan-secondary);margin-left:6px;white-space:nowrap}
.avatar-stack i+span{margin-left:8px}
@container desk (max-width:1180px){.account-button{display:inline-flex;align-items:center;gap:10px}.balance-block{display:flex}.avatar-stack{display:none}}
@container desk (max-width:760px){.account-button{padding:0 10px;gap:8px}.balance-block small,.wallet-badge span{display:none}.account-strip{margin-left:auto}}
/* Scanner on a phone (23 Sep 2026, UX round 3): each strategy is a two-line card — asset, APR and Trade on
   top, the two legs under it — instead of a 1400px table whose Trade button sat off screen. The full
   metrics are one tap away (expand, or Trade → Pair). */
@container desk (max-width:760px){
  .scanner-canvas{min-width:0}
  #view-scanner>*:not(.scanner-shell){flex-shrink:0}
  .scanner-head{display:none}
  .scanner-row{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"asset apr trade" "legs legs trade";column-gap:12px;row-gap:4px;align-items:center;padding:10px 12px}
  .scanner-row>.cell{padding:0}
  .scanner-row>.cell:nth-child(1){grid-area:asset;min-width:0}
  .scanner-row>.cell:nth-child(2){grid-area:legs;flex-direction:row;flex-wrap:wrap;gap:2px 12px}
  .scanner-row>.cell:nth-child(4){grid-area:apr;justify-content:flex-end}
  .scanner-row>.cell:nth-child(5){grid-area:trade;align-self:center}
  .scanner-row>.cell:nth-child(3),.scanner-row>.cell:nth-child(n+6){display:none}
}
/* Pair route (23 Sep 2026): the asset and both venues are chosen on the Pair page itself. */
@container (max-width: 420px){.chart-x-label.mid{display:none}}
/* A phone opens the ticket first: the Pair page is where a hedge is sent, the chart is context. */
@container desk (max-width:760px){.pair-side{order:-1;min-height:0;border-left:0;border-bottom:1px solid var(--border)}.pair-venue-heads{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pair-venue-head{min-width:0;flex-wrap:wrap;padding:10px}}
.pair-asset-field input{width:92px;height:30px;padding:0 8px;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--text);font:600 var(--fs-lg) var(--sans);text-transform:uppercase}
.pair-asset-field input:hover,.pair-asset-field input:focus{border-color:var(--border-strong);background:#111114;outline:0}
.pair-venue-pill{position:relative;cursor:pointer}.pair-venue-pill:hover,.pair-venue-pill:focus-within{border-color:var(--accent)}
.pair-venue-select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.pair-swap{width:30px;height:30px;border:1px solid var(--border-strong);border-radius:50%;background:#16161a;color:var(--text-secondary);cursor:pointer}
.pair-swap:hover{border-color:var(--accent);color:var(--accent)}
.pair-badges{align-items:center}
.pt-econ-more{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:9px;color:#83838f;font:400 var(--fs-xs) var(--sans)}
.pt-econ-more b{margin-left:4px;color:var(--text);font-weight:600}.pt-econ-more b.negative{color:var(--negative)}.pt-econ-more b.positive{color:var(--positive)}.pt-econ-more b.warn{color:var(--gold)}
/* Airy pass (UX phase 0, 23 Sep 2026, owner picked the VOOI-like column): controls and cards are told apart by
   their fill, not by an outline; an accent border is kept only where it marks the active choice or a hover.
   Values read at regular weight, bold (600, never heavier) is kept for headline figures, and rows get more air. */
:root{--fill:#16161b;--fill-hover:#1c1c22}
/* The browser's bold is 700, outside the three weights; every element it would embolden stops at 600. */
b,strong,h1,h2,h3,h4,h5,h6,th{font-weight:600}
.search-control,.venue-filter,.select-control,.control-button,.icon-button,.pager-button:not(.active),.pager-size select,.chart-tabs button:not(.active),.activity-tabs button:not(.active),.timeframe-pill,.pair-venue-pill,.pair-toolbar>button,.pt-field input,.pt-field select,.pt-presets button:not([aria-pressed=true]),.pair-copy-btn,.order-type-pill,.pair-pill-select,.pair-size-box,.account-sort-group,.caret-box,.settings-popover button:not(.active),.secondary-button,.venue-connect-btn,.pair-swap,.venue-lev-set select,.pair-asset-field input,.venue-session-tag:not([data-state]){border-color:transparent;background-color:var(--fill)}
.chart-tabs button:not(.active):hover,.activity-tabs button:not(.active):hover,.pt-presets button:not([aria-pressed=true]):not(:disabled):hover,.settings-popover button:not(.active):hover{background-color:var(--fill-hover);color:var(--text)}
.kpi-card,.data-panel,.account-card,.venue-card:not(.watchlist),.spread-tile,.pair-spread-card,.pt-econ>div,.inspector-card,.tob-only-grid,.pair-capability-note,.venue-lookalikes{border-color:transparent}
.pair-metric-line{padding:7px 0}.pair-metric-line>span:nth-child(even){font-weight:400}
.account-rows>div{padding:6px 0}.account-rows b{font-weight:400}
.pretrade-list>div,.metric-row{padding:6px 0}
.pt-econ strong{font-weight:500}
.orderbook-row{padding:4px 0}
/* The "US closed" tag rides on the symbol line (23 Sep 2026): as a third tag under it, it ran into the Exchange column. */
.asset-cell>div{min-width:0;overflow:hidden}.asset-name{display:flex;align-items:center;gap:6px;white-space:nowrap}.mini-tag.session-tag{color:var(--gold);border-color:rgba(255,176,32,.35);font-weight:500}.mini-tags{overflow:hidden}
/* UX phase 1 (23 Sep 2026). Needs attention: one banner under the header on every view. */
.attention-banner{display:flex;align-items:flex-start;gap:14px;padding:8px 12px;border:1px solid rgba(255,176,32,.45);background:rgba(255,176,32,.07);color:var(--text);font:400 var(--fs-sm)/1.5 var(--sans);letter-spacing:0}
.attention-banner[data-tone=info]{border-color:var(--border-strong);background:var(--fill)}
.attention-title{flex:0 0 auto;padding-top:3px;color:var(--gold);font:600 var(--fs-xs) var(--sans);letter-spacing:.06em;text-transform:uppercase}
.attention-banner[data-tone=info] .attention-title{color:var(--text-secondary)}
.attention-lines{flex:1 1 auto;display:flex;flex-direction:column;gap:4px;min-width:0}
.attention-lines p{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0}.attention-lines span{color:var(--text-secondary)}
.attention-working b{color:var(--text-secondary)}.attention-working span{animation:attention-pulse 1.6s ease-in-out infinite}
@keyframes attention-pulse{50%{opacity:.45}}
.attention-btn{margin-left:auto;padding:4px 11px;border:1px solid rgba(255,176,32,.6);border-radius:7px;background:rgba(255,176,32,.08);color:var(--gold);font:500 var(--fs-xs) var(--sans);cursor:pointer;white-space:nowrap}
.attention-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.attention-btn+.attention-btn{margin-left:6px}
.attention-msg{flex:0 1 360px;align-self:center;color:var(--text-secondary);font-size:var(--fs-xs)}.attention-msg[data-tone=error]{color:var(--negative)}.attention-msg[data-tone=success]{color:var(--positive)}
/* Account cards fold to header, equity, share bar and open legs; the details unfold for every card at once. */
.accounts-title-meta{display:inline-flex;align-items:center;gap:12px}
.accounts-details-toggle{padding:3px 9px;border:0;border-radius:6px;background:var(--fill);color:var(--text-secondary);font:500 var(--fs-xs) var(--sans);cursor:pointer}.accounts-details-toggle:hover{color:var(--text)}
.account-legs{display:flex;align-items:center;gap:8px;width:100%;margin:0;padding:9px 0 0;border:0;border-top:1px solid #1c1c21;background:none;color:var(--text);font:400 var(--fs-sm) var(--sans);text-align:left;cursor:pointer}
.account-legs small{color:var(--text-muted);font-size:var(--fs-xs)}.account-legs b{font-weight:600}
.account-legs:hover .account-caret{color:var(--text)}
.legs-stack{display:flex;align-items:center}.legs-stack .token-logo{width:18px;height:18px;flex:0 0 18px;margin-left:-6px;border:2px solid var(--raised)}.legs-stack .token-logo:first-child{margin-left:0}
.legs-more{display:inline-grid;place-items:center;height:18px;min-width:18px;margin-left:-4px;padding:0 4px;border:2px solid var(--raised);border-radius:9px;background:#2a2a31;color:var(--text);font:600 var(--fs-xs)/1 var(--sans)}
.account-caret{margin-left:auto;color:var(--text-muted);font-size:var(--fs-md);line-height:1;transition:transform .15s ease}
.account-grid.details-open .account-caret{transform:rotate(180deg)}
.account-grid:not(.details-open) .account-rows{display:none}
.account-rows{margin-top:6px}.account-rows>div:first-child{border-top:0}
.account-card>.account-unreadable{display:flex;flex-direction:column;gap:3px;margin:0 0 8px}
/* ── UX phase 2 (23 Sep 2026): Pair page in the VOOI layout ───────────────────────────────────────────── */
@container desk (min-width:1181px){.pair-workspace{grid-template-columns:minmax(0,1fr) 520px}.pair-side{flex-basis:520px}}
.pair-side{background:var(--bg)}
/* Balances: two quiet chips. */
.pair-venue-heads{gap:10px;padding:12px 14px 0;border-bottom:0}
.pair-venue-head{padding:9px 11px;border-radius:9px;background:var(--surface)}.pair-venue-head:first-child{border-right:0}
.pair-venue-head>div{min-width:0}.venue-head-name{font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.venue-head-bal{font-weight:600;white-space:nowrap}
.pair-venue-head .venue-session-tag,.pair-venue-head .venue-session-btn{padding:3px 8px}
/* Ticket: one card, header then two leg columns. */
.pair-order-panel{margin:12px 14px 0;padding:14px;border-radius:10px;background:var(--surface)}
.pair-order-hero .order-type-pill{border-color:transparent;background:var(--fill);color:var(--text-secondary)}
.pt-legs{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px}
.pt-leg{min-width:0}
.pt-leg-controls{display:grid;grid-template-columns:1fr 1.15fr;gap:6px;margin-bottom:8px}
.pt-lev,.pt-type{display:flex;align-items:center;justify-content:space-between;gap:6px;height:36px;padding:0 11px;border:1px solid transparent;border-radius:8px;background:var(--fill);color:var(--text);font:500 var(--fs-sm) var(--sans);white-space:nowrap;overflow:hidden}
.pt-lev{cursor:pointer}.pt-lev:hover{border-color:var(--accent)}.pt-lev i,.pt-type i{font-style:normal;color:var(--text-muted);font-size:var(--fs-xs)}
.pt-lev span{overflow:hidden;text-overflow:ellipsis}.pt-type{color:var(--text-secondary);cursor:default}
.pt-size-field{display:flex;align-items:center;height:40px;padding:0 12px;border-radius:8px;background:var(--fill)}
.pt-size-field:focus-within{box-shadow:inset 0 0 0 1px var(--accent)}
.pt-size-field input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:500 var(--fs-md) var(--sans);-moz-appearance:textfield}
.pt-size-field input::-webkit-outer-spin-button,.pt-size-field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.pt-size-field>span:last-child{color:var(--text-muted);font-size:var(--fs-xs)}
/* Size unit (29 Sep 2026): USD or the pair's coin, one click switches both leg columns. */
.pt-unit{display:inline-flex;align-items:center;gap:3px;border:0;padding:4px 0 4px 8px;background:transparent;color:var(--text-muted);font:500 var(--fs-xs) var(--sans);cursor:pointer;white-space:nowrap}
.pt-unit::after{content:"⇄";font-size:var(--fs-xs);opacity:.6}.pt-unit:hover{color:var(--text)}.pt-unit:focus-visible{outline:1px solid var(--accent);outline-offset:2px;border-radius:4px}
.pt-size-field[data-invalid="true"]{box-shadow:inset 0 0 0 1px var(--negative)}
/* A TP/SL that cannot see its pair's net (29 Sep 2026). */
.pair-row-tpsl[data-blind="true"],.m-btn[data-blind="true"]{color:var(--gold);border-color:rgba(255,176,32,.45)}
/* A pair kept from an earlier snapshot (29 Sep 2026) and the US-session tag on the ticket / sheet head. */
.mini-tag.stale-tag{color:var(--gold);border-color:rgba(255,176,32,.35);font-weight:500;align-self:center}
.order-hero-sub .mini-tag,.m-grow>.mini-tag{margin-left:6px;vertical-align:1px}
/* Exchange: a venue's other fee schedules (29 Sep 2026), taker / maker bp from the rows' own fee; detail in the title. */
.venue-fees{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-top:10px;padding-top:9px;border-top:1px solid var(--border);font:400 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums;color:var(--text);cursor:help}
.venue-fees small{color:var(--text-muted);font-size:var(--fs-xs)}.venue-fees b{font-weight:500;color:var(--text-secondary)}
/* A dollar size floored to the shared lot by more than 1% (29 Sep 2026): the shortfall beside the field, detail in its title. */
.pt-floor{flex:0 0 auto;padding:1px 5px;border-radius:4px;background:rgba(255,176,32,.12);color:var(--gold);font:600 var(--fs-xs) var(--sans);font-style:normal;font-variant-numeric:tabular-nums;white-space:nowrap;cursor:help}
/* Size slider (owner, 28 Sep 2026): the track, its fill and the 0/25/50/75/100% marks are drawn under a native range
   whose own track is transparent; the thumb is 18px, so a mark at p sits at 9px + (100% − 18px) × p. */
.pt-slider-wrap{position:relative;height:18px;margin:12px 0 4px;--fill:0%}.pt-slider-wrap:has(.pt-slider:disabled){opacity:.4}
.pt-track{position:absolute;left:9px;right:9px;top:50%;height:6px;margin-top:-3px;border-radius:3px;background:#3a3a44;pointer-events:none}
.pt-track b{position:absolute;left:0;top:0;bottom:0;width:var(--fill);border-radius:3px;background:var(--accent)}
.pt-track i{position:absolute;top:50%;left:calc(var(--at) * 1%);width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#16161a;border:2px solid #55555f;box-sizing:border-box}.pt-track i.on{border-color:var(--accent);background:var(--accent)}
.pt-slider{position:absolute;inset:0;width:100%;height:18px;margin:0;background:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}
.pt-slider::-webkit-slider-runnable-track{height:18px;background:transparent}.pt-slider::-moz-range-track{height:18px;background:transparent}
.pt-slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);border:0;box-shadow:0 0 0 3px rgba(255,106,31,.18)}
.pt-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--accent);border:0}
.pt-slider:focus-visible{outline:none}.pt-slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px rgba(255,106,31,.45)}.pt-slider:disabled{cursor:default}
.pt-ticks{position:relative;height:16px;margin:0 9px;color:var(--text-muted);font-size:var(--fs-xs)}.pt-ticks span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}.pt-ticks span:nth-child(1){left:0}.pt-ticks span:nth-child(2){left:25%}.pt-ticks span:nth-child(3){left:50%}.pt-ticks span:nth-child(4){left:75%}.pt-ticks span:nth-child(5){left:100%}
.pt-leg-name{display:flex;align-items:center;gap:7px;margin:16px 0 8px;font:500 var(--fs-md) var(--sans)}
.pt-leg-name img{width:16px;height:16px;border-radius:50%}.pt-leg-name:after{content:"";flex:1;height:1px;background:var(--border)}
.pt-stats{display:flex;flex-direction:column}
.pt-stat{display:flex;justify-content:space-between;gap:8px;padding:5px 0;font-size:var(--fs-sm)}
.pt-stat span{color:var(--text-secondary)}.pt-stat b{font-weight:400;text-align:right}
.pt-presets{display:flex;gap:6px;margin-top:10px}.pt-presets button{flex:1 1 0;padding:7px 8px;border-radius:7px;font:500 var(--fs-xs) var(--sans);cursor:pointer}
.pt-actions{grid-template-columns:132px 1fr;margin-top:14px}
.pt-actions .pair-submit-btn{padding:12px;font-size:var(--fs-md)}
.pt-actions .pair-copy-btn{font-size:var(--fs-xs)}
/* Books: asks over the mid, bids under it; the entry side's prices carry the colour. */
.pair-dual-book{padding:12px 14px 0}.dual-orderbook{margin-top:0;gap:10px}
.orderbook-col{padding:10px 10px 8px;border-radius:10px;background:var(--surface)}
.orderbook-head{margin-bottom:4px}.orderbook-head .book-age{margin-left:auto;color:var(--text-muted);font:400 var(--fs-xs) var(--sans);font-variant-numeric:tabular-nums}.orderbook-head .book-age[data-stale=true]{color:#f5b041}
.book-half{display:flex;flex-direction:column}
.orderbook-row{padding:3px 4px}.orderbook-row .book-bar{border-radius:2px}
.orderbook-row.ask .book-px{color:var(--negative)}.orderbook-row.bid .book-px{color:var(--positive)}
.orderbook-row:not(.entry) .book-px{opacity:.75}
.orderbook-row .book-bar.ask{background:rgba(255,77,94,.09)}.orderbook-row .book-bar.bid{background:rgba(46,204,143,.09)}
.book-mid{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:6px 0;padding:8px 4px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.book-mid b{font:600 var(--fs-lg) var(--sans)}.book-mid small{color:var(--text-muted);font-size:var(--fs-xs)}
/* Entry Economics */
.pair-econ{margin:12px 14px 24px;padding:14px;border-radius:10px;background:var(--surface)}
.econ-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.econ-head h3{margin:0;font:600 var(--fs-md) var(--sans)}
.econ-hold{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:var(--fs-xs)}
.econ-hold select{height:28px;padding:0 8px;border:0;border-radius:6px;background:var(--fill);color:var(--text);font:500 var(--fs-xs) var(--sans)}
.econ-rows>div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;font-size:var(--fs-sm)}
.econ-rows span{color:var(--text-secondary);text-decoration:underline dotted #4a4a55;text-underline-offset:3px}
.econ-rows b{font-weight:400}.econ-rows>div:first-child b{font-weight:600;font-size:var(--fs-md)}
.econ-rows .warning{color:var(--gold)}
/* Confirm and leverage windows */
.pair-modal{width:min(420px,calc(100vw - 32px));padding:18px 18px 16px}
.pair-modal h2{text-align:center;margin-bottom:12px}
.confirm-lead{margin:0 0 10px!important;color:var(--text)!important}
.confirm-leg{margin-top:8px;padding:11px 12px;border-radius:10px;background:var(--surface)}
.confirm-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.confirm-top>div:first-child{display:flex;align-items:center;gap:6px}.confirm-top img{width:16px;height:16px;border-radius:50%}
.confirm-qty{text-align:right}.confirm-qty small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}
.confirm-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:9px}
.confirm-grid small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}.confirm-grid b{font-weight:400;font-size:var(--fs-sm)}
.confirm-fee{display:flex;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-secondary)}
.confirm-fee b{font-weight:400;color:var(--text)}
.confirm-warn{margin:10px 0 0!important;color:var(--gold)!important;font-size:var(--fs-xs)!important}.confirm-warn[data-tone=error]{color:var(--negative)!important}
.confirm-fine{margin:10px 0 4px!important;color:var(--text-muted)!important;font-size:var(--fs-xs)!important}
#pair-confirm-send[data-armed=false]{background:var(--fill);border-color:var(--border-strong);color:var(--text)}
.lev-value{margin:6px 0 14px;text-align:center;font:600 var(--fs-2xl) var(--sans)}.lev-value small{color:var(--text-muted);font-size:var(--fs-sm)}
.lev-range{width:100%;accent-color:var(--accent)}
.lev-ticks{display:flex;justify-content:space-between;gap:2px;margin-top:6px}
.lev-ticks button{padding:2px 4px;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font:500 var(--fs-xs) var(--sans);cursor:pointer}
.lev-ticks button.active,.lev-ticks button:hover{color:var(--text);background:var(--fill)}
.lev-mode{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:14px;padding:3px;border-radius:8px;background:var(--fill)}
.lev-mode button{padding:7px;border:0;border-radius:6px;background:transparent;color:var(--text-secondary);font:500 var(--fs-sm) var(--sans);cursor:pointer}
.lev-mode button[aria-checked=true]{background:var(--raised);color:var(--text)}
.lev-note{margin:14px 0 6px!important;font-size:var(--fs-xs)!important;color:var(--text-secondary)!important}.lev-note b{color:var(--text)}
/* Positions and orders under the chart */
.pair-activity{padding:14px 16px 32px}
.pair-tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}.pair-tablist{display:flex;gap:6px;flex-wrap:wrap}
.pair-tabs [role=tab]{padding:6px 10px;border:1px solid transparent;border-radius:8px;background:var(--fill);color:var(--text-secondary);font:500 var(--fs-xs) var(--sans);cursor:pointer;white-space:nowrap}
.pair-tabs [role=tab]:hover{color:var(--text)}
.pair-tabs [role=tab].on{border-color:var(--accent);background:rgba(255,106,31,.08);color:var(--accent)}
.pair-tabs-sp{flex:1}
.pair-side-filter{display:inline-flex;gap:2px;padding:2px;border-radius:7px;background:var(--fill)}
.pair-side-filter button{padding:4px 8px;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font:500 var(--fs-xs) var(--sans);cursor:pointer}
.pair-side-filter button[aria-pressed=true]{background:var(--raised);color:var(--text)}
.pair-venue-filter select{height:28px;padding:0 8px;border:0;border-radius:7px;background:var(--fill);color:var(--text-secondary);font:500 var(--fs-xs) var(--sans)}
.pair-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.pair-table th{padding:8px 6px;text-align:left;color:var(--text-muted);font:500 var(--fs-xs) var(--sans);border-bottom:1px solid var(--border);white-space:nowrap}
.pair-table td{padding:9px 6px;border-bottom:1px solid #18181d;vertical-align:middle;white-space:nowrap}
.pair-table td small{display:block;margin-top:2px;color:var(--text-muted);font-size:var(--fs-xs)}
.pair-table td b{font-weight:600}
.pair-table tr.here td{background:rgba(255,106,31,.05)}
.pair-table tr.leg-row td{background:#0c0c0f}.pair-table tr.leg-row td:first-child{padding-left:34px}
.pair-asset{display:flex;align-items:center;gap:8px}.pair-asset img{width:16px;height:16px;border-radius:50%}.pair-asset .token-logo img{width:100%;height:100%}
.pair-asset small{display:flex!important;align-items:center;gap:4px}
.pair-expand{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:var(--fill);color:var(--text-secondary);cursor:pointer}
.here-tag{margin-left:6px;padding:1px 6px;border-radius:5px;background:rgba(255,106,31,.12);color:var(--accent);font:600 var(--fs-xs) var(--sans)}
.pair-row-close{padding:5px 12px}
.pair-empty{min-height:120px}.pair-empty p{margin:0 0 10px}
@container desk (max-width:760px){.pt-legs{grid-template-columns:1fr}}
/* ── UX phase 3 (23 Sep 2026): close window, Close all, messages, Orders activity ───────────────────── */
.ex-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.close-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.open-mode{margin-bottom:10px}.open-mode button{flex:0 0 auto;padding:6px 11px}.close-head .close-mode{margin-left:auto;flex:0 0 auto;flex-wrap:nowrap}.close-head .close-mode button{flex:0 0 auto;padding:6px 11px}.close-head small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}.close-head b{font-weight:600}
.close-head .order-type-pill{margin-left:auto;border-color:transparent;background:var(--fill);color:var(--text-secondary)}
.close-leg .pt-type{margin-bottom:6px}.close-leg .pt-leg-name{margin:0 0 8px}
.close-rows{margin-top:12px}
.close-total{display:flex;justify-content:space-between;align-items:baseline;margin-top:10px;padding:12px;border-radius:9px;background:var(--surface)}
.close-total span{color:var(--text-secondary)}.close-total strong{font:600 var(--fs-xl) var(--sans)}
#close-note:empty{display:none}
#close-confirm:not(:disabled){background:var(--negative);border-color:var(--negative);color:#0a0a0c}
.close-all-list{display:flex;flex-direction:column;gap:4px;margin-top:10px;max-height:320px;overflow:auto}
.close-all-row{display:grid;grid-template-columns:22px 60px 1fr auto auto;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:var(--surface);font-size:var(--fs-sm)}
.close-all-row small{display:flex;align-items:center;gap:4px;color:var(--text-muted)}.close-all-row small img{width:14px;height:14px;border-radius:50%}
#close-all-confirm[data-armed=true]{background:var(--negative);border-color:var(--negative);color:#0a0a0c}
.pair-tab-actions{display:flex;justify-content:flex-end;margin-bottom:6px}
.close-all-btn{padding:5px 12px;font-size:var(--fs-xs)}
.desk-toast{position:fixed;right:18px;bottom:18px;z-index:300;max-width:420px;padding:11px 14px;border:1px solid var(--border-strong);border-radius:10px;background:var(--raised);color:var(--text);font-size:var(--fs-sm);box-shadow:0 12px 32px rgba(0,0,0,.5);cursor:pointer}
.desk-toast[data-tone=success]{border-color:rgba(46,204,143,.5)}.desk-toast[data-tone=error]{border-color:rgba(255,77,94,.6);color:#ff8b96}
.activity-toolbar{display:flex;align-items:center;justify-content:space-between;margin:4px 0 8px;color:var(--text-secondary);font-size:var(--fs-xs)}
/* Charts (UX phase 4): timeframe select, crosshair and the values under the pointer. */
.timeframe-pill{padding:0}.timeframe-pill select{height:28px;padding:0 24px 0 10px;border:0;border-radius:8px;background:var(--fill) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%2383838f'/%3E%3C/svg%3E") no-repeat right 9px center;color:var(--text);font:500 var(--fs-xs) var(--sans);appearance:none;cursor:pointer}
.chart-crosshair{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed #5a5a66;pointer-events:none}
.chart-tooltip{position:absolute;top:8px;z-index:5;min-width:170px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;background:rgba(22,22,26,.96);font-size:var(--fs-xs);pointer-events:none;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.chart-tooltip time{display:block;margin-bottom:4px;color:var(--text-secondary)}
.chart-tooltip span{display:flex;align-items:center;gap:6px;padding:1px 0;color:var(--text-secondary)}.chart-tooltip i{width:7px;height:7px;border-radius:50%}
.chart-tooltip b{margin-left:auto;padding-left:12px;color:var(--text);font-weight:500}
/* Venue menus on the Pair route pills */
.pair-venue-pill{padding:0}.pair-venue-select{pointer-events:none}
.pair-venue-trigger{display:flex;align-items:center;gap:8px;padding:5px 11px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
.pair-venue-trigger img{width:16px;height:16px;border-radius:50%}
.route-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:80;min-width:240px;max-height:360px;overflow:auto;padding:6px;border:1px solid var(--border-strong);border-radius:10px;background:var(--raised);box-shadow:0 16px 40px rgba(0,0,0,.5)}
.route-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;border-radius:7px;background:transparent;color:var(--text);font:400 var(--fs-sm) var(--sans);text-align:left;cursor:pointer}
.route-item img{width:16px;height:16px;border-radius:50%}.route-item small{color:var(--text-muted);margin-left:1px}
.route-item:hover,.route-item:focus-visible{background:var(--fill-hover);outline:0}
.route-item[aria-selected=true]{background:rgba(255,106,31,.1);color:var(--accent)}
.route-item i{margin-left:auto;font-style:normal;color:var(--accent)}.route-item .pair-side-badge{margin-left:auto}.route-item .pair-side-badge+i{margin-left:6px}
/* Positions and orders drawer under the scanner */
.scanner-activity{flex:0 0 auto;padding:8px 18px 10px;border-top:1px solid var(--border);background:var(--panel)}
.scanner-activity .pair-tabs{margin-bottom:0}
.scanner-activity[data-open=true]{max-height:calc(42vh / var(--desk-zoom, 1));overflow:auto}
.scanner-activity[data-open=true] .pair-tabs{margin-bottom:8px}
.scanner-activity[data-open=false] .pair-side-filter,.scanner-activity[data-open=false] .pair-venue-filter{display:none}
.drawer-hide{padding:5px 10px;font-size:var(--fs-xs)}
.activity-table td.activity-text{white-space:normal;color:var(--text)}.activity-table td:first-child{width:130px;color:var(--text-secondary)}.activity-table td:nth-child(2){width:120px}
/* UX phase 5 (23 Sep 2026): venue-wide Orders / Orders History / Trade History. */
.vo-notes{display:flex;flex-direction:column;gap:4px;margin:0 0 8px}.vo-note{font:400 var(--fs-xs)/1.45 var(--sans);color:var(--text-secondary)}.vo-note small{color:var(--text-muted)}.vo-note.warn{color:var(--gold)}
.vo-flag{display:inline-block;margin-right:4px;padding:1px 6px;border-radius:5px;background:var(--fill);color:var(--text-secondary);font:500 var(--fs-xs) var(--sans);white-space:nowrap}.vo-flag.risk{background:rgba(255,77,94,.12);color:var(--negative)}
.vo-status{font:500 var(--fs-xs) var(--sans);color:var(--text-secondary)}.vo-status[data-status=filled]{color:var(--positive)}.vo-status[data-status=open],.vo-status[data-status=untriggered]{color:var(--accent)}.vo-status[data-status=rejected],.vo-status[data-status=expired]{color:var(--negative)}
.vo-table td{white-space:nowrap}
.vo-scroll{max-height:440px;overflow:auto}.vo-scroll thead th{position:sticky;top:0;z-index:1;background:var(--bg)}
/* UX phase 6 (23 Sep 2026): pair TP/SL and partial close. */
.pt-tpsl{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:center;margin-top:10px}.pt-tpsl.dialog{grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin:10px 0}.pt-tpsl>label{min-width:0}.pt-tpsl input{min-width:0;width:100%}.pt-tpsl-label{font:500 var(--fs-xs) var(--sans);color:var(--text-secondary);white-space:nowrap}.close-size{margin:4px 0 12px}.close-size-head{display:flex;justify-content:space-between;align-items:baseline;font:400 var(--fs-xs) var(--sans);color:var(--text-secondary)}.close-size-head b{font:600 var(--fs-md) var(--sans);color:var(--text)}.close-size input[type=range]{width:100%;accent-color:var(--accent);margin:8px 0}.close-size [aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.pair-row-actions{display:flex;gap:6px;justify-content:flex-end}.pair-row-tpsl{padding:5px 10px;white-space:nowrap}
/* Data audit (24 Sep 2026): Variational's open interest by side. */
.metric-cell .oi-side{display:block;font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}.mid-px small{font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}
/* Earn points as VOOI draws it (24 Sep 2026, read from ultra.vooi.io): a warm gold tint over the header, not grey —
   gold at 8% fill, 25% border, the text and the outlined trophy in #ecbd75. */
.points-button{border-color:rgba(236,189,117,.25);background:rgba(236,189,117,.08);color:#ecbd75;border-radius:10px;gap:8px;font-weight:500}.points-button:hover{border-color:rgba(236,189,117,.45);background:rgba(236,189,117,.12)}.points-trophy{flex:0 0 auto}
/* Points popover as VOOI draws it (24 Sep 2026): each venue on a rounded tile, filled gold badges, the figure
   over a quiet "points" label (whether it was synced is in the tooltip, not on screen). */
.points-row{grid-template-columns:40px minmax(0,1fr) auto;gap:14px;padding:10px}
.points-title{font-weight:500}.points-badge{border-color:transparent;background:rgba(236,189,117,.18);color:#ecbd75;font-weight:500}.points-badge.ending{border-color:transparent;background:rgba(255,106,31,.16);color:var(--accent)}
.points-row[data-sync="live"] .points-value span{color:var(--text-muted)}.points-body small a{display:inline-flex;vertical-align:-1px;margin-left:3px}
/* Colour as VOOI plays it (24 Sep 2026): each logo on a tile washed in the venue's own colour (deeper at the top
   left), the season badges in VOOI's gold → amber pill with a gold ring, and the popover's 20px corners. */
.points-popover{border-radius:20px;border-color:rgba(255,255,255,.1);background:#1c1c21}
.points-tile{width:40px;height:40px;display:grid;place-items:center;border-radius:10px;border:1px solid color-mix(in srgb,var(--brand) 22%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--brand) 28%,transparent),color-mix(in srgb,var(--brand) 6%,transparent))}.points-tile>img{width:24px;height:24px;border-radius:6px;object-fit:cover}
.points-badge,.points-badge.ending{border:0;border-radius:999px;padding:2px 8px;background:linear-gradient(to right,rgba(236,189,117,.22),rgba(255,179,117,.15));box-shadow:inset 0 0 0 1px rgba(236,189,117,.28);color:#ecbd75}.points-badge.ending{background:linear-gradient(to right,rgba(255,106,31,.24),rgba(255,77,94,.14));box-shadow:inset 0 0 0 1px rgba(255,106,31,.35);color:var(--accent)}
/* Points popover on VOOI's grid (25 Sep 2026, measured on ultra.vooi.io): a 380px card with 16px padding centred under
   the button 8px below it, sections 16px apart split by a 3% hairline, rows 12px apart, a 32px tile at a 10% wash of
   the venue colour with the mark alone on it, name 15/500 over a 12px grey line, flat dark-gold badges (VOOI's #73582f, a shade deeper for 4.5:1 text contrast). */
.points-popover{width:min(380px,calc(100vw - 32px));padding:16px;left:50%;right:auto;top:calc(100% + 8px);transform:translateX(-50%);background:#1d1d21;border-color:rgba(255,255,255,.1);box-shadow:0 16px 40px rgba(0,0,0,.5);overflow:visible}
.points-section{display:flex;flex-direction:column;gap:12px}.points-divider{height:1px;margin:16px 0;background:rgba(255,255,255,.05)}
.points-head{padding:0;font:500 var(--fs-xs)/14px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:#a9aebb}.points-head span{color:#8e93a0}
.points-list{padding:0;display:flex;flex-direction:column;gap:12px}
.points-row{grid-template-columns:32px minmax(0,1fr) auto;gap:12px;padding:0;border-radius:0;min-height:38px}.points-row:hover{background:transparent}
.points-tile{width:32px;height:32px;border:0;border-radius:10px;background:color-mix(in srgb,var(--brand) 10%,transparent)}.points-tile>img{width:20px;height:20px;border-radius:5px}
.points-title{gap:6px;font:500 var(--fs-lg)/20px var(--sans);color:#f5f5f5}.points-body small{margin-top:2px;font:400 var(--fs-sm)/16px var(--sans);color:#a9aebb}.points-body small a{color:#a9aebb}
.points-popover .points-badge{padding:0 6px;border-radius:12px;font:500 var(--fs-xs)/15px var(--sans);letter-spacing:0;background:#5f4827;box-shadow:none;color:#ecbd75}.points-popover .points-badge.ending{background:#62301a;color:#ff9a5c}
.points-value{min-width:0;gap:2px;line-height:1}.points-value strong{padding-right:0;font:500 var(--fs-lg)/20px var(--sans);letter-spacing:0;color:#f5f5f5}.points-value span{padding-right:0;font:400 var(--fs-sm)/16px var(--sans);color:#a9aebb;letter-spacing:0}
.points-value input{width:96px;height:20px;padding:0;border-radius:4px;font:500 var(--fs-lg)/20px var(--sans);letter-spacing:0}.points-value input:hover,.points-value input:focus{padding:0 4px}
.points-foot{padding:0;border:0;font:400 var(--fs-sm)/16px var(--sans);color:#a9aebb}
.points-daily{width:100%;border-collapse:collapse;table-layout:fixed;font:400 var(--fs-xs)/1 var(--sans);font-variant-numeric:tabular-nums}.points-daily th,.points-daily td{height:22px;padding:0 2px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.points-daily thead th{height:28px;vertical-align:top}.points-daily thead th:first-child,.points-daily tbody th{width:46px;padding:0;text-align:left}.points-daily tbody th{font-weight:400;color:#a9aebb}.points-daily tbody tr:first-child th{color:#f5f5f5}
.points-daily-logo{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#26262b;box-shadow:0 0 0 2px #1d1d21}.points-daily-logo img{width:14px;height:14px;border-radius:50%;object-fit:cover}
.points-daily td{color:#f5f5f5}.points-daily td[data-change="up"]{color:var(--positive)}.points-daily td[data-change="down"]{color:var(--negative)}.points-daily td[data-change="flat"],.points-daily td[data-change="none"]{color:var(--text-muted)}.points-daily tbody tr+tr>*{border-top:1px solid rgba(255,255,255,.03)}
/* Scanner filter bar as VOOI draws it (24 Sep 2026, read from ultra.vooi.io/arbitrage-desk): every control 36px tall,
   10px corners, a faint white border on the darkest fill; the chosen one lifts and takes a gold border. Venue buttons
   are 38px squares with the logo alone; Asset class opens a panel of pills instead of a native select. */
.filter-bar{gap:8px}
.search-control,.venue-filter #venue-all,.venue-chip,.asset-class-button{height:36px;border:1px solid rgba(255,255,255,.1);border-radius:10px;background-color:#0e0e10}
.search-control{width:220px;padding:0 12px;gap:8px}.search-control input{font-size:var(--fs-sm)}
.venue-filter{gap:8px;padding:0;border:0;background:transparent}
.venue-filter #venue-all{padding:0 12px;color:var(--text);font:500 var(--fs-sm) var(--sans)}
.venue-filter #venue-all.active{background:#1f1f21;border:1px solid rgba(236,189,117,.6);color:var(--text)}
.venue-filter .venue-chip{width:38px;height:36px;opacity:.45}.venue-filter #venue-all{height:36px}.venue-chip img{width:20px;height:20px;border-radius:5px}
.venue-chip:hover,.venue-filter #venue-all:hover,.asset-class-button:hover{background-color:#1f1f21}
.venue-filter.all-venues .venue-chip{opacity:1;border-color:rgba(255,255,255,.1)}
.venue-filter:not(.all-venues) .venue-chip.active{opacity:1;background:#1f1f21;border-color:rgba(236,189,117,.6)}
.asset-class-wrap{position:relative}
.asset-class-button{display:inline-flex;align-items:center;gap:8px;min-width:150px;padding:0 12px;color:var(--text);font:500 var(--fs-sm) var(--sans);cursor:pointer}
.asset-class-button span{color:#adb8c9}.asset-class-button b{font-weight:500}.asset-class-caret{margin-left:auto;color:#adb8c9;transition:transform .15s ease}
.asset-class-button[aria-expanded=true] .asset-class-caret{transform:rotate(180deg)}
.asset-class-popover{left:0;right:auto;top:42px;width:285px;padding:12px;border:1px solid rgba(255,255,255,.1);border-radius:16px;background:#1b1b1d}
.asset-class-pills{display:flex;flex-wrap:wrap;gap:8px}
.asset-class-pills button{height:34px;padding:0 12px;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:#0e0e10;color:var(--text);font:500 var(--fs-sm) var(--sans);cursor:pointer}
.asset-class-pills button:hover{background:#1f1f21}.asset-class-pills button[aria-pressed=true]{background:#1f1f21;border-color:rgba(236,189,117,.6)}
/* Portfolio: equity line + accounts in short (28 Sep 2026) */
.eq-range{display:flex;gap:6px;margin:-4px 0}.eq-range button{height:30px;padding:0 13px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-secondary);font:500 var(--fs-sm) var(--sans);cursor:pointer}.eq-range button:hover{color:var(--text)}.eq-range button.active{border-color:var(--accent);background:rgba(255,106,31,.10);color:var(--accent)}
.eq-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:10px;align-items:stretch}
.eq-chart-panel{padding:14px 16px 16px;display:flex;flex-direction:column;min-width:0}.eq-chart-panel>.chart-empty{flex:1}.eq-chart-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.eq-chart-head b{font:500 var(--fs-lg) var(--sans)}.eq-clear{padding:5px 9px}.eq-since{margin-left:auto;color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}
/* Side by side, the plot fills the panel down to the Accounts list's height (owner, 28 Sep 2026: no black gap). */
.eq-plot{position:relative;flex:1 1 auto;min-height:220px;margin:0 62px 24px 0}.eq-plot svg{display:block;width:100%;height:100%;overflow:visible}
.eq-y{position:absolute;left:calc(100% + 8px);transform:translateY(-50%);color:var(--text-muted);font:400 var(--fs-xs) var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.eq-x{position:absolute;top:calc(100% + 6px);color:var(--text-muted);font:400 var(--fs-xs) var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.eq-cross{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed #3a3a44;pointer-events:none}.eq-dot{position:absolute;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border:2px solid var(--accent);border-radius:50%;background:var(--bg);pointer-events:none}
.eq-tip{position:absolute;top:-4px;display:flex;flex-direction:column;gap:2px;padding:6px 9px;border:1px solid var(--border-strong);border-radius:7px;background:var(--raised);pointer-events:none;white-space:nowrap;z-index:2}.eq-tip small{color:var(--text-muted);font:400 var(--fs-xs) var(--sans)}.eq-tip b{font:600 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums}
.eq-accounts-panel{padding:13px 10px}.eq-accounts-panel .panel-title{padding:0 4px}.eq-accounts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.eq-account{position:relative;width:100%;display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text);text-align:left;cursor:pointer}
.eq-account:hover{background:var(--raised)}.eq-account.on{border-color:rgba(255,106,31,.5);background:rgba(255,106,31,.06)}
.eq-account img,.eq-account .venue-monogram,.eq-all{width:22px;height:22px;border-radius:50%}.eq-all{display:grid;place-items:center;background:var(--raised);color:var(--accent);font:600 var(--fs-sm) var(--sans)}
.eq-name{font:500 var(--fs-sm) var(--sans);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eq-val{display:flex;flex-direction:column;align-items:flex-end;font:600 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums}.eq-val small{font:400 var(--fs-xs) var(--sans)}
.eq-share{position:absolute;left:40px;right:8px;bottom:4px;height:2px;border-radius:2px;background:var(--border)}.eq-share::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--share);border-radius:2px;background:var(--accent);opacity:.7}
@container desk (max-width:1180px){.eq-layout{grid-template-columns:1fr}.eq-plot{flex:none;height:300px}}
@container desk (max-width:760px){.eq-plot{height:220px}.section-heading:has(.eq-range){flex-wrap:wrap;gap:8px}}
/* Every page keeps the scrollbar's room even when it does not scroll, so switching pages never shifts the header or the
   content sideways (owner, 28 Sep 2026: Portfolio ↔ Positions moved by the scrollbar's width). */
html{scrollbar-gutter:stable}
.eq-activity{margin-top:10px;padding:13px 16px 20px}
/* One table standard in the positions/orders panel and on the Orders page (owner, 28 Sep 2026): Arbitrage Orders and History take the metrics of
   Arbitrage Positions and Positions (.pair-table) — sentence-case 11px heads, 12px cells, 22px logos, the same padding. */
:is(.pair-activity,#view-orders) .mock-terminal-table{min-width:0;table-layout:auto;font-size:var(--fs-sm)}
:is(.pair-activity,#view-orders) .mock-terminal-table th,:is(.pair-activity,#view-orders) .mock-terminal-table th:first-child{padding:8px 6px;color:var(--text-muted);font:500 var(--fs-xs) var(--sans);text-transform:none;letter-spacing:normal;border-bottom:1px solid var(--border)}
:is(.pair-activity,#view-orders) .mock-terminal-table td,:is(.pair-activity,#view-orders) .mock-terminal-table td:first-child{padding:9px 6px;border-bottom:1px solid #18181d;color:var(--text);white-space:nowrap}
:is(.pair-activity,#view-orders) .mock-asset-cell{gap:8px}:is(.pair-activity,#view-orders) .mock-asset-cell .token-logo{width:22px;height:22px;flex:0 0 22px}
:is(.pair-activity,#view-orders) .mock-asset-cell strong,:is(.pair-activity,#view-orders) .mock-route>span,:is(.pair-activity,#view-orders) .mock-route-leg,:is(.pair-activity,#view-orders) .mock-route-leg strong,:is(.pair-activity,#view-orders) .mock-val-primary,:is(.pair-activity,#view-orders) .mock-cell-strong,:is(.pair-activity,#view-orders) .mock-pnl-headline,:is(.pair-activity,#view-orders) .mock-cell-time,:is(.pair-activity,#view-orders) .mock-progress-line strong{font-size:var(--fs-sm);line-height:1.3}
:is(.pair-activity,#view-orders) .mock-asset-cell small,:is(.pair-activity,#view-orders) .mock-val-sub,:is(.pair-activity,#view-orders) .mock-progress-line small{margin-top:2px;font:400 var(--fs-xs)/1.3 var(--sans);letter-spacing:normal;color:var(--text-muted)}
:is(.pair-activity,#view-orders) .mock-route{gap:2px}:is(.pair-activity,#view-orders) .mock-route>span{line-height:1.2}:is(.pair-activity,#view-orders) .mock-side{min-width:0;padding:3px 7px;border-color:transparent;font:600 var(--fs-xs)/1.2 var(--sans)}
:is(.pair-activity,#view-orders) .mock-status{padding:3px 8px;font:600 var(--fs-xs)/1.2 var(--sans)}:is(.pair-activity,#view-orders) .mock-basis-pill{font-size:var(--fs-xs)}
.pair-tabs .close-all-btn{padding:6px 10px}
:is(.pair-activity,#view-orders) .mock-priced-route{gap:2px}:is(.pair-activity,#view-orders) .mock-route .mock-side,:is(.pair-activity,#view-orders) .mock-priced-route .mock-side{padding:1px 6px}:is(.pair-activity,#view-orders) .mock-priced-route>*{line-height:1.2}
.pair-activity .pair-table tbody tr:not(.leg-row),:is(.pair-activity,#view-orders) .mock-terminal-table tbody tr{height:58px}
/* ── Layout stability (owner, 28 Sep 2026): every block that fills in after a read keeps its final size from the first
   paint, so nothing is pushed when the data lands. Sizes are the loaded ones at the design width. ── */
/* 1. Header: the linked count, the balance and the session badge widen as they are read. */
#venue-identities{min-width:143px}.balance-block{min-width:150px;justify-content:flex-start}#wallet-badge{min-width:144px;justify-content:center}
/* 2. Pair page: the summary, the venue heads, the ticket, the books and the chart's legend and footer. */
#pair-summary{min-height:178px;box-sizing:border-box}#pair-venue-heads,#pair-review,#dual-book{box-sizing:border-box}#pair-venue-heads{min-height:61px}#pair-review{min-height:547px}#dual-book:empty,#dual-book[data-state="loading"]{min-height:297px}
#pair-chart{min-height:322px}.pair-chart-card .chart-heading{min-height:51px}.pair-chart-card .chart-legend{min-height:22px}#chart-footer{min-height:14px}
/* 3. Arbitrage desk: the feed status, the strategy count and the positions bar keep their width and height. */
#sync-status{min-width:280px;justify-content:flex-end}.strategy-count{min-width:120px;text-align:right}#scanner-activity{min-height:40px;box-sizing:border-box}
.scanner-canvas:has(#scan-tbody > .empty-row) .scanner-footnotes{visibility:hidden}
/* 4. Scanner head: a two-button column head is always label over one row of buttons, so it never takes a third line
   when the Inspector narrows the table. */
/* …and a stacked cell (value + countdown) stays on one line, so a narrower table never makes rows taller. */
#scan-tbody .cell.stack>*{white-space:nowrap}
#scan-head .head-pair{display:grid;grid-template-columns:repeat(2,max-content);justify-content:end;column-gap:8px;row-gap:1px}#scan-head .head-pair-label{grid-column:1/-1}
.eq-account:disabled{cursor:default}
/* 5. Positions: an account card is as tall with open legs (coin logos) as without, and as its placeholder. */
.account-legs{min-height:28px;box-sizing:border-box}
.accounts-title-meta{min-height:26px}
.pair-tabs .vo-toolbar{display:inline-flex;align-items:center;gap:10px;color:var(--text-muted);font:400 var(--fs-xs) var(--sans);white-space:nowrap}.pair-tabs .vo-toolbar .pair-copy-btn{padding:6px 10px}

/* Transfers out of P&L (owner, 28 Sep 2026): Equity | P&L switch, ▲ deposit / ▼ withdrawal marks on the line, the add dialog. */
.eq-mode{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:7px;background:var(--surface)}
.eq-mode button{height:24px;padding:0 10px;border:0;border-radius:5px;background:transparent;color:var(--text-muted);font:500 var(--fs-xs) var(--sans);cursor:pointer}
.eq-mode button:hover{color:var(--text)}
.eq-mode button.on{background:var(--raised);color:var(--text)}
/* Marks on the line (owner, 29 Sep 2026): a transfer is a ring with its arrow, a pair entry a hollow dot, its exit a dot
   in the colour of its net P&L. Pointing near one snaps the crosshair and opens its card (.eq-tip.ev); the pair's hold is shaded. */
.eq-mark{position:absolute;box-sizing:border-box;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:2;transition:transform .12s ease,box-shadow .12s ease}
.eq-mark.hot{transform:translate(-50%,-50%) scale(1.35);z-index:3}
.eq-mark.flow{--c:var(--positive,#2ecc71);display:grid;place-items:center;width:17px;height:17px;border:1.5px solid var(--c);background:var(--bg);box-shadow:0 0 0 2px var(--bg)}
.eq-mark.flow.down{--c:var(--negative,#ff5a5a)}
.eq-mark.flow svg{width:10px;height:10px;fill:none;stroke:var(--c);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.eq-mark.flow.pending{border-style:dashed;opacity:.6}
.eq-mark.pair{width:10px;height:10px;border:2px solid var(--bg);box-shadow:0 0 0 1px rgba(255,255,255,.18)}
.eq-mark.pair.entry{border:2px solid #d8d8e0;background:var(--bg);box-shadow:0 0 0 2px var(--bg)}
.eq-mark.pair.entry.live{border-color:var(--accent);box-shadow:0 0 0 2px var(--bg),0 0 0 5px rgba(255,106,31,.22)}
.eq-mark.pair.exit.win{background:var(--positive,#2ecc71)}.eq-mark.pair.exit.loss{background:var(--negative,#ff5a5a)}.eq-mark.pair.exit.flat{background:var(--text-muted)}
.eq-mark.hot.pair,.eq-mark.hot.flow{box-shadow:0 0 0 2px var(--bg),0 0 0 4px rgba(255,255,255,.22)}
.eq-span{position:absolute;top:0;bottom:0;background:rgba(216,216,224,.05);border-left:1px dashed rgba(216,216,224,.28);border-right:1px dashed rgba(216,216,224,.28);pointer-events:none;z-index:1}
.eq-span.live{background:rgba(255,106,31,.06);border-color:rgba(255,106,31,.35);border-right:0}
.eq-tip.ev{width:252px;gap:0;padding:0;white-space:normal;box-shadow:0 12px 32px rgba(0,0,0,.45);z-index:4}
.eq-tip.ev .eq-ev-at{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border)}
.eq-ev{display:grid;gap:8px;padding:10px 12px}.eq-ev+.eq-ev{border-top:1px solid var(--border)}
.eq-ev-head{display:flex;align-items:center;gap:7px;min-width:0}.eq-ev-head b{font:600 var(--fs-sm) var(--sans)}
.eq-ev-head .token-logo{width:18px;height:18px;flex:0 0 18px}.eq-ev-head .token-logo img{width:100%;height:100%}
.eq-ev-head>small,.eq-ev-head>span:last-child:not(.eq-ev-tag){margin-left:auto;white-space:nowrap}.eq-ev-head>span:last-child:not(.eq-ev-tag){font:600 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums}
.eq-ev-tag{padding:1px 6px;border-radius:4px;font:600 var(--fs-2xs,10px) var(--sans);letter-spacing:.04em;text-transform:uppercase;background:rgba(216,216,224,.1);color:#d8d8e0}
.eq-ev-tag.close{background:rgba(255,106,31,.14);color:var(--accent)}
.eq-ev-icon{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;font:700 11px/1 var(--sans);font-style:normal;background:rgba(46,204,113,.14);color:var(--positive,#2ecc71)}.eq-ev-icon.down{background:rgba(255,90,90,.14);color:var(--negative,#ff5a5a)}
.eq-ev-legs{display:flex;flex-wrap:wrap;gap:4px 12px;font:400 var(--fs-xs) var(--sans);color:var(--text-secondary)}
.eq-ev-legs>span,.eq-ev-grid dd{display:inline-flex;align-items:center;gap:5px}.eq-ev-legs img,.eq-ev-grid dd img{width:13px;height:13px;border-radius:3px}
.eq-ev-legs .pair-side-badge{margin:0}
.eq-ev-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font:400 var(--fs-xs) var(--sans)}
.eq-ev-grid dt{color:var(--text-muted)}.eq-ev-grid dd{justify-content:flex-end;margin:0;color:var(--text);font-variant-numeric:tabular-nums;text-align:right}
.eq-ev-net{display:flex;align-items:baseline;justify-content:space-between;padding-top:8px;border-top:1px dashed var(--border);font:400 var(--fs-xs) var(--sans);color:var(--text-muted)}
.eq-ev-net b{font:600 var(--fs-md,15px) var(--sans);font-variant-numeric:tabular-nums}.eq-ev-net .eq-ev-live{color:var(--accent)}
.eq-ev-more{display:block;padding:0 12px 8px;color:var(--text-muted)}
.m-eq .eq-mark.pair{width:7px;height:7px;border-width:1.5px}.m-eq .eq-mark.flow{width:14px;height:14px}.m-eq .eq-mark.flow svg{width:8px;height:8px}
.m-eq .eq-tip.ev{width:236px}
#flow-dialog .flow-form,#spot-dialog .flow-form{display:flex;flex-direction:column;gap:10px;min-width:min(360px,80vw)}
#flow-dialog select,#flow-dialog input:not([type=file]),#spot-dialog input,#spot-dialog select{height:34px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:400 var(--fs-sm) var(--sans)}
#flow-dialog .flow-csv input{font:400 var(--fs-xs) var(--sans);color:var(--text-secondary)}
#flow-dialog #flow-msg:empty,#spot-dialog #spot-msg:empty{display:none}
/* Spot held outside the venues (owner, 29 Sep 2026) */
.spot-hedge{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.spot-actions{display:flex;gap:6px;justify-content:flex-end}
.spot-trades{border-top:1px solid var(--border)}
.eq-account .eq-spot{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center}
#eq-activity tr.muted td{opacity:.55}
[data-testid="transfers-table"] .pair-row-actions{align-items:center;min-height:28px}
[data-testid="transfers-table"] .pair-row-actions>small,[data-testid="transfers-table"] .pair-row-actions>span{margin:0;white-space:nowrap}
/* 1-Click + order type on the Pair ticket (owner, 28 Sep 2026) */
.pair-order-hero .order-mode{margin:0 0 0 auto;flex:0 0 auto;flex-wrap:nowrap;align-items:center}.pair-order-hero .order-mode button{flex:0 0 auto;padding:6px 10px;white-space:nowrap}.pair-order-hero .order-mode .order-type-pill{margin-left:0}

/* Volume and open interest (owner, 28 Sep 2026): eight boxes in one row on the desk, bars for volume. */
.kpi-grid.kpi-8{grid-template-columns:repeat(8,minmax(0,1fr))}
.kpi-grid.kpi-8 .kpi-card strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@container desk (max-width:1500px){.kpi-grid.kpi-8{grid-template-columns:repeat(4,minmax(0,1fr))}}
@container desk (max-width:760px){.kpi-grid.kpi-8{grid-template-columns:repeat(2,minmax(0,1fr))}}
.eq-bar{fill:#ff6a1f;fill-opacity:.78}
.eq-plot:hover .eq-bar{fill-opacity:.6}

/* Phone layout (owner's mobile handoff, 28 Sep 2026): at 640px and below the desk swaps to desk-mobile.mjs — its own
   52px header, stacked views and a 5-tab bar; the dialogs, banners and toast are shared. Class prefix m-. A container
   query like every breakpoint here (desk-scale.js leaves phones at zoom 1, so 640px of container is 640px of screen). */
.m-head,.m-main,.m-tabs,.m-demo,#m-sheet-root{display:none;--fill:#16161b;--row-hover:#131317;--row-line:#17171b;--on-accent:#0a0a0c;--accent-soft:rgba(255,106,31,.10);--gold-border:#4b3924;--fs-2xs:10px;--fs-input:16px;--fs-pnl:17px;--fs-hero:30px}
html.m-sheet-open body{overflow:hidden}
@container desk (max-width:640px){
  .desk-header,.desk-view,#demo-banner,.scanner-activity{display:none!important}
  .status-banner{margin:8px 14px 0}
  .attention-banner{flex-wrap:wrap}
  .desk-toast{left:14px;right:14px;bottom:calc(96px + env(safe-area-inset-bottom));max-width:none}
  .app-update{left:50%;transform:translateX(-50%);bottom:calc(128px + env(safe-area-inset-bottom))}
  .m-head{position:sticky;top:0;z-index:60;height:52px;display:flex;align-items:center;gap:8px;padding:0 14px;border-bottom:1px solid var(--border);background:var(--panel)}
  .m-brand{display:flex;align-items:center;gap:8px;margin-right:auto;color:var(--text);text-decoration:none}.m-brand img{border-radius:50%}.m-brand strong{font:600 var(--fs-lg) var(--sans);letter-spacing:.14em}
  .m-balance-pill{display:flex;flex-direction:column;align-items:flex-end;padding:4px 10px;border-radius:8px;background:var(--fill);min-width:96px}
  .m-balance-pill small{font-size:var(--fs-2xs);line-height:1.2;color:var(--text-muted)}.m-balance-pill b{font:600 var(--fs-md)/1.25 var(--sans);font-variant-numeric:tabular-nums}
  .m-sess{width:32px;height:32px;flex:none;border:0;border-radius:50%;background:var(--fill);display:grid;place-items:center;cursor:pointer}
  .m-sess i{width:8px;height:8px;border-radius:50%;background:var(--text-muted)}.m-sess[data-state=ready] i{background:var(--positive)}.m-sess[data-state=stale] i{background:var(--gold)}.m-sess[data-state=locked] i{background:var(--negative)}
  .m-main{display:flex;flex-direction:column;padding-bottom:calc(110px + env(safe-area-inset-bottom));color:var(--text);font:400 var(--fs-sm)/1.45 var(--sans)}
  .m-tabs{position:fixed;left:0;right:0;bottom:0;z-index:55;display:grid;grid-template-columns:repeat(5,1fr);gap:2px;padding:8px 6px calc(8px + env(safe-area-inset-bottom));min-height:78px;box-sizing:border-box;background:var(--panel);border-top:1px solid var(--border)}
  @supports (padding:env(safe-area-inset-bottom)){.m-tabs{padding-bottom:max(26px,env(safe-area-inset-bottom))}}
  .m-tabs button{min-height:44px;border:0;border-radius:8px;background:none;color:var(--text-secondary);font:500 var(--fs-xs) var(--sans);cursor:pointer;transition:color .15s ease,background .15s ease}
  .m-tabs button.active{color:var(--accent);background:var(--accent-soft)}
  .m-demo:not([hidden]){position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:54;display:flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--gold-border);border-radius:999px;background:var(--panel);box-shadow:0 12px 32px rgba(0,0,0,.5);font-size:var(--fs-xs);white-space:nowrap}
  .m-demo i{width:6px;height:6px;border-radius:50%;background:var(--gold)}.m-demo b{color:var(--gold);font-weight:600}.m-demo span{color:var(--text-secondary)}
  .m-title{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 14px 12px}.m-title h1{margin:0;font:600 var(--fs-xl) var(--sans);letter-spacing:-.01em}
  .m-live{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .m-dot{width:6px;height:6px;flex:none;border-radius:50%;background:var(--positive)}.m-dot.gold{background:var(--gold)}.m-dot.neg{background:var(--negative)}
  .m-pad{padding:0 14px}.m-search{width:100%;height:36px;box-sizing:border-box}.m-search input{font-size:var(--fs-input)}
  .m-chips{display:flex;gap:6px;padding:10px 14px;overflow-x:auto;scrollbar-width:none}.m-chips::-webkit-scrollbar{display:none}
  .m-all{flex:none;height:32px;padding:0 13px;border:0;border-radius:7px;background:var(--raised);color:var(--text-secondary);font:600 var(--fs-sm) var(--sans);cursor:pointer}.m-all.active{background:var(--accent);color:var(--on-accent)}
  .m-chip{flex:none;width:32px;height:32px}.m-chip img,.m-chip .venue-monogram{width:16px;height:16px;flex-basis:16px;font-size:8px}.m-chip.active{border-color:var(--accent)}
  .m-filter{display:flex;align-items:center;gap:6px;padding:0 14px 10px}
  .m-dim{margin-left:auto;font-size:var(--fs-xs);color:var(--text-secondary);white-space:nowrap}
  .m-select{position:relative;display:inline-flex}.m-select select{height:32px;max-width:124px;padding:0 24px 0 10px;border:1px solid var(--border);border-radius:7px;background:var(--fill);color:var(--text);font:500 var(--fs-sm) var(--sans);appearance:none;background-image:linear-gradient(45deg,transparent 50%,#83838f 50%),linear-gradient(135deg,#83838f 50%,transparent 50%);background-position:calc(100% - 13px) 50%,calc(100% - 9px) 50%;background-size:4px 4px;background-repeat:no-repeat}
  .m-btn{min-height:40px;padding:0 14px;border:1px solid var(--border);border-radius:8px;background:var(--fill);color:var(--text);font:500 var(--fs-md) var(--sans);cursor:pointer;transition:border-color .15s ease,color .15s ease}
  .m-btn.sm{min-height:32px;padding:0 10px;border-radius:6px;font-size:var(--fs-sm)}.m-btn.wide{width:100%}.m-btn b{display:inline-grid;place-items:center;min-width:16px;height:16px;margin-left:4px;padding:0 4px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:var(--fs-2xs)}.m-btn b:empty{display:none}
  .m-btn.danger{border-color:rgba(255,77,94,.4);color:var(--negative);background:rgba(255,77,94,.08)}
  .m-btn:disabled,.m-trade:disabled{opacity:.45;cursor:default}
  .m-link{padding:0;border:0;background:none;color:var(--accent);font:600 inherit var(--sans);cursor:pointer}
  .m-pop-wrap{position:relative}.m-pop{position:absolute;right:0;top:38px;z-index:40;display:flex;flex-direction:column;gap:10px;width:230px;padding:12px;border:1px solid var(--border-strong);border-radius:10px;background:var(--raised);box-shadow:0 16px 40px rgba(0,0,0,.45);font-size:var(--fs-sm)}
  .m-pop label{display:flex;align-items:center;gap:8px}.m-pop input{accent-color:var(--accent);width:16px;height:16px}
  .m-list{border-top:1px solid var(--border)}
  .m-row{padding:12px 14px;border-bottom:1px solid var(--row-line);cursor:pointer;-webkit-tap-highlight-color:transparent;outline:0}
  .m-row.open{background:var(--row-hover);box-shadow:inset 3px 0 var(--accent)}.m-row:focus-visible{box-shadow:inset 0 0 0 1px var(--accent)}
  .m-top{display:flex;align-items:center;gap:10px}.m-grow{display:block;flex:1;min-width:0}
  .m-toggle{width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:6px;-webkit-tap-highlight-color:transparent}.m-toggle:focus-visible{outline:1px solid var(--accent);outline-offset:3px}
  .m-tok{flex:none;display:inline-grid}.m-tok .token-logo{width:var(--s);height:var(--s);flex:0 0 var(--s);font-size:var(--fs-2xs)}
  .m-vi{display:inline-grid;flex:none}.m-vi img,.m-vi .venue-monogram{width:var(--s);height:var(--s);flex:0 0 var(--s);border-radius:50%;font-size:8px}
  .m-name{display:flex;align-items:center;gap:5px;min-width:0}.m-name b{font:600 var(--fs-md) var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .m-route{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:var(--fs-xs);color:var(--text-secondary);flex-wrap:wrap}.m-route>span{display:inline-flex;align-items:center;gap:4px}.m-route i{font-style:normal;color:var(--accent)}
  .m-route-orders{margin-top:8px;gap:10px}.m-route-orders .pair-side-badge{margin:0 2px 0 0;padding:2px 5px;font-size:var(--fs-2xs)}.m-route-orders b{color:var(--text);font-weight:500}
  .m-apr{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:none}.m-apr small{font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}
  .m-mid{display:flex;align-items:center;gap:12px;margin-top:10px;padding-left:36px}.m-mid>span:not(.points-chip):not(.muted){display:flex;flex-direction:column}
  .m-mid small,.m-grid3 small,.m-kicker{font-size:var(--fs-2xs);color:var(--text-muted)}.m-mid b,.m-grid3 b{font:400 var(--fs-sm) var(--sans);font-variant-numeric:tabular-nums}
  .m-trade{margin-left:auto;min-height:32px}
  .m-detail{margin-top:10px;padding:8px 10px;border-radius:8px;background:var(--panel);cursor:default}
  .m-stat{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:5px 0;font-size:var(--fs-sm)}.m-stat>span{color:var(--text-muted)}.m-stat>b{font-weight:400;font-variant-numeric:tabular-nums;text-align:right}
  .m-detail .countdown{width:auto;margin-left:4px;text-decoration:underline dotted;text-underline-offset:3px}
  .m-more{padding-top:12px;padding-bottom:18px}
  .m-empty{padding:28px 14px;text-align:center;color:var(--text-muted);font-size:var(--fs-sm)}
  .m-sub{display:block;font-size:var(--fs-xs);color:var(--text-muted);letter-spacing:.03em;margin-top:2px}
  .m-h15{font:600 var(--fs-lg) var(--sans)}.m-h17{font:600 var(--fs-pnl) var(--sans);font-variant-numeric:tabular-nums}
  .m-big{font:600 var(--fs-hero) var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px}
  .m-change{font-size:var(--fs-md);margin-top:2px;font-variant-numeric:tabular-nums}
  .m-range{display:flex;gap:6px}.m-range button{height:30px;padding:0 11px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-secondary);font:500 var(--fs-sm) var(--sans);cursor:pointer}.m-range button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
  .m-eq{padding:12px 14px 0}.m-eq .eq-plot{height:190px;min-height:0;margin:0 50px 22px 0;touch-action:pan-y}.m-eq .eq-y,.m-eq .eq-x{font-size:var(--fs-2xs);color:var(--text-muted)}.m-eq .eq-cross{border-left-color:#63636f}
  .m-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 14px 0}
  .m-kpi{min-width:0;padding:10px 12px;border-radius:10px;background:var(--surface)}.m-kpi small{display:block;font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-kpi b{display:block;margin-top:3px;font:600 var(--fs-lg) var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .m-sec{display:flex;align-items:center;justify-content:space-between;padding:18px 14px 8px}.m-sec h2{margin:0;font:600 var(--fs-xs) var(--sans);text-transform:uppercase;letter-spacing:.06em}.m-sec span{font-size:var(--fs-xs);color:var(--text-secondary)}
  .m-card{margin:0 14px;padding:12px;border-radius:10px;background:var(--surface)}
  .m-stack{display:flex;flex-direction:column;gap:8px}
  .m-pos{cursor:pointer;outline:0}.m-pos.open{box-shadow:inset 3px 0 var(--accent)}.m-pos:focus-visible{box-shadow:inset 0 0 0 1px var(--accent)}
  .m-legrows{display:flex;flex-direction:column;gap:6px;margin-top:10px}.m-legrows>div{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm)}.m-legrows .pair-side-badge{margin:0;min-width:44px;text-align:center;padding:2px 5px;font-size:var(--fs-2xs)}.m-legrows b{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums}
  .m-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.m-grid3>span{display:flex;flex-direction:column;gap:2px;min-width:0}.m-grid3 b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .m-spread{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:6px;font-size:var(--fs-sm)}.m-spread i{font-style:normal;color:var(--text-muted)}.m-bp{padding:2px 6px;border-radius:4px;background:rgba(255,176,32,.08);color:var(--gold)}.m-spread small{flex-basis:100%;font-size:var(--fs-xs)}
  .m-two{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
  .m-accts{padding:4px 12px}.m-acct-row{position:relative;display:flex;align-items:center;gap:10px;padding:9px 0 11px;font-size:var(--fs-sm);border-bottom:1px solid var(--row-line)}.m-acct-row:last-child{border-bottom:0}
  .m-acct-v{display:flex;flex-direction:column;align-items:flex-end;font-weight:600;font-variant-numeric:tabular-nums}.m-acct-v small{font-size:var(--fs-xs);font-weight:400}
  .m-share{position:absolute;left:32px;right:0;bottom:3px;height:2px;border-radius:1px;background:linear-gradient(90deg,rgba(255,106,31,.7) var(--share),transparent var(--share))}
  .m-hscroll{display:flex;gap:8px;overflow-x:auto;padding:0 14px;scrollbar-width:none;scroll-snap-type:x proximity;scroll-padding-inline:14px}.m-hscroll::-webkit-scrollbar{display:none}
  .m-acct{flex:0 0 200px;box-sizing:border-box;padding:12px;border-radius:10px;background:var(--surface);scroll-snap-align:start}.m-acct.off{opacity:.5}
  .m-acct header{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm)}.m-acct header span{margin-left:auto;font-size:var(--fs-xs);color:var(--text-muted)}
  .m-acct .m-kicker{display:block;margin-top:10px;letter-spacing:.06em}.m-acct strong{display:block;font:600 var(--fs-2xl) var(--sans);letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-acct strong .warning{font-size:var(--fs-lg)}
  .m-bar{display:block;height:4px;margin:8px 0 10px;border-radius:2px;background:var(--raised);overflow:hidden}.m-bar i{display:block;height:100%;background:var(--accent)}
  .m-acct footer{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--text-muted)}.m-acct footer b{color:var(--text);font-weight:500;font-variant-numeric:tabular-nums}
  .m-stack-logos{display:inline-flex}.m-stack-logos .m-tok+.m-tok{margin-left:-4px}.m-stack-logos small{margin-left:3px;font-size:var(--fs-2xs)}
  .m-tabs-row{display:flex;gap:6px;padding:0 14px 10px;overflow-x:auto;scrollbar-width:none}.m-tabs-row::-webkit-scrollbar{display:none}
  .m-tabs-row button{flex:none;height:30px;padding:0 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-secondary);font:500 var(--fs-sm) var(--sans);cursor:pointer}.m-tabs-row button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
  .m-activity{padding:4px 10px;overflow:hidden}.m-activity table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}.m-activity th{display:none}.m-activity td{padding:7px 4px;border-bottom:1px solid var(--row-line);vertical-align:top}.m-activity .activity-text{word-break:break-word}
  .m-activity .activity-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 4px;font-size:var(--fs-xs);color:var(--text-muted)}
  #m-sheet-root:not([hidden]){display:block}
  .m-scrim{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-end;background:rgba(0,0,0,.6)}
  .m-sheet{width:100%;max-height:calc(100dvh - 40px);overflow-y:auto;box-sizing:border-box;padding:10px 16px calc(34px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;background:var(--surface);box-shadow:0 -12px 32px rgba(0,0,0,.5);animation:m-sheet-in .2s ease-out;overscroll-behavior:contain}
  @keyframes m-sheet-in{from{transform:translateY(100%)}to{transform:none}}
  .m-grab{display:block;width:36px;height:4px;border-radius:2px;background:var(--border-strong);margin:0 auto 12px}
  .m-route-pick{display:flex;margin-top:12px}.m-route-pick select{max-width:none;width:100%;height:36px}
  .m-legs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-top:12px}
  .m-leg{display:flex;flex-direction:column;gap:3px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--panel);min-width:0}.m-leg small{font-size:var(--fs-xs);color:var(--text-muted)}.m-leg strong{display:flex;align-items:center;gap:5px;font:600 var(--fs-md) var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.m-leg span{font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
  .m-leg.short small{color:var(--negative)}.m-leg.long small{color:var(--positive)}
  .m-leg.pick{position:relative;cursor:pointer}.m-leg.pick strong::after{content:"▾";margin-left:auto;padding-left:4px;color:var(--text-muted);font-size:var(--fs-xs)}.m-leg.pick:active{border-color:var(--accent)}
  .m-leg-pick{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:var(--fs-input);cursor:pointer;-webkit-appearance:none;appearance:none}.m-leg.pick:has(.m-leg-pick:focus-visible){outline:1px solid var(--accent);outline-offset:2px}
  .m-swap{color:var(--accent);font-weight:600;font-size:var(--fs-xs)}
  .m-size{display:flex;align-items:center;gap:8px;height:44px;margin-top:14px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--fill)}.m-size:focus-within{border-color:var(--accent)}
  .m-size input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:600 var(--fs-input) var(--sans);font-variant-numeric:tabular-nums}.m-size span{color:var(--text-muted);font-size:var(--fs-sm)}.m-size[data-invalid="true"]{border-color:var(--negative)}
  .m-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}.m-presets button{min-height:32px;border:1px solid var(--border);border-radius:6px;background:var(--fill);color:var(--text-secondary);font:500 var(--fs-sm) var(--sans);cursor:pointer}.m-presets button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
  .m-stats{margin-top:12px}.m-stats .m-stat{border-bottom:1px solid var(--row-line);padding:7px 0}
  .m-msg,.m-gate{margin:10px 0 0;font-size:var(--fs-sm);line-height:1.45;color:var(--text-secondary)}.m-msg[data-tone=error],.m-gate{color:var(--gold)}.m-msg[data-tone=success]{color:var(--positive)}
  .m-actions{display:grid;grid-template-columns:1fr 2fr;gap:8px;margin-top:14px}.m-actions .m-btn{min-height:46px}
  .m-primary{min-height:46px;padding:0 12px;border:1px solid var(--accent);border-radius:9px;background:var(--accent);color:var(--on-accent);font:600 var(--fs-md) var(--sans);cursor:pointer}.m-primary:hover{filter:brightness(1.1)}
  .m-primary:disabled{border-color:#18181c;background:#18181c;color:#8a8a96;filter:none;cursor:default}
}
/* Follow a manual leg (29 Sep 2026): the owner places the Variational / MEXC leg by hand, the executor hedges it. */
.pt-follow{margin-top:10px;padding:10px 12px;border:1px solid var(--border,#2a2b30);border-radius:10px;display:grid;gap:8px}
.pt-follow[data-state="running"]{border-color:var(--accent,#e0700f)}
.pt-follow-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;font-size:var(--fs-sm,13px)}
.pt-follow-head span{color:var(--text-muted);font-variant-numeric:tabular-nums}
.pt-follow-figs{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;font-size:var(--fs-sm,13px);color:var(--text-muted);font-variant-numeric:tabular-nums}
.pt-follow-figs b{color:var(--text)}
.pt-follow-note{margin:0;font-size:var(--fs-xs,12px);color:var(--text-muted)}
