*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{background:radial-gradient(120% 90% at 50% 40%, var(--bg-hi) 0%, var(--bg) 60%, var(--bg-lo) 100%) fixed;background-color:var(--bg);color:var(--ink);font-family:var(--sans);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}#root{grid-template-rows:auto minmax(0,1fr) auto;height:100dvh;display:grid;overflow:hidden}button{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:6px 11px;font-size:12px;font-weight:600}button:hover{border-color:var(--line-hi)}:focus-visible{outline:2px solid var(--scan);outline-offset:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.up{color:var(--up)}.down{color:var(--down)}.mute{color:var(--ink3);font-weight:500}.top{padding:12px var(--pad);border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,auto) minmax(0,1fr) auto auto;grid-template-areas:"brand badge.controls lang";align-items:center;gap:12px;display:grid}.brand{font-family:var(--disp);letter-spacing:.03em;grid-area:brand;margin:0;font-size:14px;font-weight:500}.badge{min-width:0;color:var(--ink2);border:1px solid var(--line);border-radius:999px;grid-area:badge;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex}.badge i{background:var(--ink3);border-radius:50%;flex:none;width:7px;height:7px}.badge-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.badge-sim i{background:var(--scan);box-shadow:0 0 8px var(--scan)}.badge-paper i{background:var(--up);box-shadow:0 0 8px var(--up)}.badge-live{color:var(--ink);border-color:var(--down);font-weight:700}.badge-live i,.badge-lost i{background:var(--down);box-shadow:0 0 8px var(--down)}.badge-wait i{animation:1.2s ease-in-out infinite blink}.badge-replay{color:var(--ink);border-color:var(--flow)}.badge-replay i{background:var(--flow);box-shadow:0 0 8px var(--flow)}.badge-pause{color:var(--ink);border-color:var(--warn)}.badge-pause i{background:var(--warn);box-shadow:0 0 8px var(--warn)}.controls{grid-area:controls;align-items:center;gap:8px;display:flex}.seg{border:1px solid var(--line);border-radius:var(--radius);display:flex;overflow:hidden}.seg button{color:var(--ink3);background:0 0;border:0;border-radius:0;padding:6px 10px}.seg button[aria-pressed=true]{color:var(--ink);background:var(--panel)}.lang{grid-area:lang}.pause[aria-pressed=true]{border-color:var(--scan)}.badges{grid-area:badge;align-items:center;gap:8px;min-width:0;display:flex}.badge-profile-demo i{background:var(--ink2)}.badge-profile-live{color:var(--ink);border-color:var(--down);background:#ff6e7a2e;font-weight:700}.badge-profile-live i{background:var(--down);box-shadow:0 0 8px var(--down)}.go-live{border-color:var(--down);color:var(--down)}.go-demo{border-color:var(--up)}.note{font-size:12px}.danger{background:var(--down);border-color:var(--down);color:var(--bg)}.panel{z-index:10;background:var(--panel);border:1px solid var(--line-hi);border-radius:12px;max-height:calc(100dvh - 72px);padding:14px 16px;font-size:12.5px;position:fixed;inset:56px 16px auto;overflow:auto;box-shadow:0 12px 40px #00000073}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.panel h2{margin:0;font-size:14px}.panel h3{margin:0 0 8px;font-size:13px}.panel .error{color:var(--down);margin:0 0 10px}.keys{border-collapse:collapse;width:100%}.keys th,.keys td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:7px 8px}.keys th{color:var(--ink3);font-weight:600}.keys tr.live td:nth-child(2){color:var(--down);font-weight:700}.keys .perms{font-size:11.5px;display:block}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.key-form{flex-direction:column;gap:10px;max-width:420px;display:flex}.key-form label{color:var(--ink2);flex-direction:column;gap:4px;display:flex}.key-form label.check{flex-direction:row;align-items:flex-start;gap:8px}.key-form input:not([type=checkbox]){font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:7px 9px}.alloc-form{margin-bottom:10px}.alloc-form label{max-width:280px}.keys.alloc th.num,.keys.alloc td.num{text-align:right}.keys.alloc tr.out td{color:var(--ink3)}.alloc-summary{margin:10px 0 6px;font-weight:600}.alloc-notes{margin:0 0 10px;padding-left:18px}.alloc-notes li{margin:2px 0}.alloc-notes li.crit{color:var(--down)}.alloc-current{margin:0 0 8px}.conditions{flex-direction:column;gap:4px;margin:0 0 12px;padding:0;list-style:none;display:flex}.conditions li{align-items:center;gap:7px;display:flex}.conditions i{background:var(--ink3);border-radius:50%;flex:none;width:8px;height:8px}.conditions li.ok i{background:var(--up)}.conditions li.crit i{background:var(--down)}.button-link{color:var(--bg);background:var(--scan);border:1px solid var(--scan);border-radius:var(--radius);white-space:nowrap;padding:6px 11px;font-size:12px;font-weight:700;text-decoration:none}.signout{color:var(--ink2)}.main{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1.4fr) minmax(280px,.85fr);min-height:0;display:grid;overflow:hidden}.stage{min-width:0;min-height:0;position:relative}.ring{width:100%;height:100%;display:block}.center{width:var(--center-w,60%);text-align:center;pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pnl{font-family:var(--disp);font-size:clamp(18px, calc(var(--center-w,300px) * .16), 42px);color:var(--up);white-space:nowrap;font-weight:700;line-height:1}.pnl.neg{color:var(--down)}.eq{color:var(--ink2);margin-top:8px;font-size:13px}.lbl{color:var(--ink3);margin-top:3px;font-size:11px}.tape-panel{border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex;overflow:hidden}.tape-panel h2{color:var(--ink2);padding:12px var(--pad) 6px;margin:0;font-size:12px;font-weight:600}.tape{scrollbar-width:thin;contain:strict;flex:1;min-height:0;padding:0 8px 8px;overflow:auto}.tape:focus-visible{outline-offset:-2px}.tape-empty{color:var(--ink3);margin:0;padding:14px 8px;font-size:12.5px}.tape-wide{color:var(--ink2);border:1px dashed var(--line-hi);border-radius:var(--radius);margin:0 8px 6px;padding:8px 10px;font-size:12px;line-height:1.4}.tape-funnel,.tape-slots{color:var(--ink3);overflow-wrap:anywhere;margin:0 8px 6px;padding:0 10px;font-size:11.5px;line-height:1.45}.tape-slots .t-slot.full{color:var(--down);font-weight:600}.tape-list{width:100%;position:relative}.tape-item{border-bottom:1px solid var(--line);width:100%;padding:9px 8px;font-size:12.5px;line-height:1.35;position:absolute;top:0;left:0}.tape-item.fresh>*{animation:.32s ease-out slide-in}.t-row{justify-content:space-between;gap:8px;display:flex}.t-sym{overflow-wrap:anywhere;font-weight:700}.t-res{white-space:nowrap;flex-wrap:wrap;justify-content:flex-end;gap:0 6px;font-weight:600;display:inline-flex}.t-legs{color:var(--ink2);margin-top:2px}.t-legs b{color:var(--ink);font-weight:600}.t-pair{vertical-align:-2px;align-items:center;gap:3px;margin-left:6px;display:inline-flex}.t-pair i{background:var(--c1,var(--chord));border-radius:2px;width:3px;height:14px;display:block}.t-pair .t-pair-sell{background:var(--c2,var(--chord))}.t-pair-arrow{color:var(--ink3);font-size:6px;font-style:normal;line-height:1}.t-pair-arrow:before{content:"→"}.foot{border-top:1px solid var(--line);padding:10px var(--pad);grid-template-columns:minmax(0,1fr) 220px;align-items:center;gap:14px;display:grid}.foot-left{flex-direction:column;gap:8px;min-width:0;display:flex}.stats{color:var(--ink2);flex-wrap:wrap;gap:4px 16px;margin:0;font-size:12px;display:flex}.stats div{gap:5px;display:flex}.stats dt{margin:0}.stats dd{color:var(--ink);margin:0;font-weight:600}.legend{color:var(--ink3);flex-wrap:wrap;gap:4px 14px;margin:0;font-size:11.5px;display:flex}.lg{align-items:center;gap:6px;display:inline-flex}.lg i{border-top:2px solid var(--chord);flex:none;width:18px;height:0}.lg-potential i{opacity:.45;border-top-style:dashed}.lg-scan i{border-top-color:var(--scan)}.lg-opp i{background:linear-gradient(90deg, var(--venue-1), var(--venue-3));height:3px;box-shadow:0 0 6px var(--venue-3);border-top:0;border-radius:2px}.health{scrollbar-width:thin;flex-direction:column;gap:5px;min-width:0;min-height:0;max-height:26dvh;font-size:12px;display:flex;overflow-y:auto}.h-sum{color:var(--ink);align-items:center;gap:7px;margin:0;display:flex}.h-dot{background:var(--ink3);border-radius:50%;flex:none;width:8px;height:8px}.h-dot.ok{background:var(--up);box-shadow:0 0 8px var(--up)}.h-dot.warn{background:var(--scan);box-shadow:0 0 8px var(--scan)}.h-dot.crit{background:var(--down);box-shadow:0 0 8px var(--down)}.h-reset{flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;display:flex}.kill-reset{color:var(--down);border-color:var(--down);font-weight:700}.h-reset.done{color:var(--ink2)}.h-metrics{color:var(--ink2);flex-wrap:wrap;gap:6px 12px;margin:0;padding:0;list-style:none;display:flex}.h-m{white-space:nowrap;align-items:center;gap:5px;max-width:100%;display:inline-flex}.h-m i{background:var(--ink3);border-radius:50%;flex:none;width:6px;height:6px}.h-m.ok i{background:var(--up)}.h-m.warn i{background:var(--scan)}.h-m.crit i{background:var(--down)}.h-m.warn,.h-m.crit{color:var(--ink)}.h-value{text-overflow:ellipsis;overflow:hidden}.curve{width:220px;height:44px;display:block}@media (max-width:720px){#root{height:auto;min-height:100dvh;overflow:visible}.health{max-height:none;overflow-y:visible}.top{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"brand badge lang""controls controls controls";gap:10px;padding:10px 12px}.badge{justify-self:start;max-width:100%}.controls{justify-content:space-between}.brand{font-size:13px}.main{grid-template-rows:min(84vw,400px) auto;grid-template-columns:1fr;overflow:visible}.tape-panel{border-left:0;border-top:1px solid var(--line);height:max(320px,55dvh)}.foot{padding:10px 12px calc(10px + env(safe-area-inset-bottom));grid-template-columns:1fr;gap:8px}.curve{width:100%}.h-metrics{scrollbar-width:none;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}}@keyframes slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.tape-item.fresh>*,.badge-wait i{animation:none}}.nav-link{color:var(--ink);border:1px solid var(--line-hi);border-radius:var(--radius);white-space:nowrap;padding:6px 11px;font-size:12px;font-weight:700;text-decoration:none}.nav-link:hover{border-color:var(--scan)}.main.page{padding:12px var(--pad);display:block;overflow:auto}.trades-page h2,.trade-card h2{margin:0;font-size:15px}.trades-page h3,.trade-card h3{color:var(--ink2);margin:14px 0 6px;font-size:13px}.trades-filters{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-hi);flex-wrap:wrap;align-items:flex-end;gap:8px 14px;margin-bottom:10px;padding:10px 12px;font-size:12px;display:flex}.trades-filters label{color:var(--ink2);flex-direction:column;gap:3px;display:flex}.trades-filters label.check,.note-form label.check{flex-direction:row;align-items:center;gap:6px}.trades-filters fieldset{border:1px solid var(--line);border-radius:6px;gap:8px;margin:0;padding:0 6px 2px;display:flex}.trades-filters legend{color:var(--ink2);padding:0 4px}.trades-filters input,.trades-filters select,.note-form textarea{color:var(--ink);background:var(--bg-lo);border:1px solid var(--line-hi);font:inherit;border-radius:6px;min-width:110px;padding:4px 6px}.trades-body{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.table-scroll{overflow-x:auto}table.trades,table.summary,table.edge-table,table.money,table.whatif{border-collapse:collapse;width:100%;font-size:12px}table.trades th,table.trades td,table.summary th,table.summary td,table.edge-table th,table.edge-table td,table.money td,table.whatif th,table.whatif td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap;padding:5px 7px}table.trades th,table.summary th,table.edge-table th,table.whatif th{color:var(--ink3);font-weight:600}table .num{text-align:right;font-variant-numeric:tabular-nums}table.trades .sort{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}table.trades tr.status-missed td{color:var(--ink2)}table.trades .note-cell{white-space:normal;max-width:220px;color:var(--ink2)}table.trades td .small,.card-head dd .small{display:block}.small{font-size:11px}table.trades a,.neighbors a,.t-link{color:inherit;-webkit-text-decoration:underline dotted var(--ink3);text-decoration:underline dotted var(--ink3)}.pager{align-items:center;gap:10px;margin:8px 0;font-size:12px;display:flex}.trades-totals,.card-head,.params{flex-wrap:wrap;gap:6px 18px;margin:8px 0;font-size:12px;display:flex}.trades-totals>div,.card-head>div,.params>div{flex-direction:column;display:flex}.trades-totals dt,.card-head dt,.params dt{color:var(--ink3);font-size:11px}.trades-totals dd,.card-head dd,.params dd{margin:0;font-weight:600}.trades-summaries table.summary{margin-bottom:12px}table.summary caption{text-align:left;color:var(--ink2);padding:4px 0;font-weight:600}table.summary tbody tr{cursor:pointer}table.summary tbody tr:hover,table.summary tbody tr:focus{background:var(--bg-hi);outline:none}.card-grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:6px 24px;display:grid}.timeline{margin:0;padding:0;font-size:12px;list-style:none}.timeline li{border-bottom:1px solid var(--line);grid-template-columns:170px 1fr;gap:8px;padding:3px 0;display:grid}.timeline .tl-check{color:var(--ink2)}.timeline .tl-closed,.timeline .tl-confirmed{font-weight:600}table.money tr.total td{border-top:1px solid var(--line-hi);font-weight:700}.note-form{align-items:flex-end;gap:8px;margin:8px 0;font-size:12px;display:flex}.note-form label{max-width:640px;color:var(--ink2);flex-direction:column;flex:1;gap:3px;display:flex}.neighbors{margin:0;padding-left:18px;font-size:12px}.spread-chart{margin:0}.spread-chart svg{background:var(--bg-lo);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:720px;height:auto}.spread-chart .grid{stroke:var(--line)}.spread-chart .tick{fill:var(--ink3);font-size:10px}.spread-chart .ref{stroke-dasharray:4 3}.spread-chart .ref-label{font-size:10px}.spread-chart .r-entry,.spread-chart .r-entry.ref-label{stroke:var(--scan);fill:var(--scan)}.spread-chart .r-tp,.spread-chart .r-tp.ref-label{stroke:var(--up);fill:var(--up)}.spread-chart .r-stop,.spread-chart .r-stop.ref-label{stroke:var(--down);fill:var(--down)}.spread-chart .r-exit,.spread-chart .r-exit.ref-label{stroke:var(--ink2);fill:var(--ink2)}.spread-chart .line{stroke-width:1.5px}.spread-chart path.l-spread,.chart-legend .l-spread i{stroke:var(--chord);background:var(--chord)}.spread-chart path.l-closing,.chart-legend .l-closing i{stroke:var(--flow);background:var(--flow)}.spread-chart path.l-spot,.chart-legend .l-spot i{stroke:var(--venue-5);background:var(--venue-5)}.spread-chart path.l-hedge,.chart-legend .l-hedge i{stroke:var(--venue-2);background:var(--venue-2)}.spread-chart .dot{fill:var(--flow)}.chart-legend{color:var(--ink2);flex-wrap:wrap;gap:4px 14px;margin-top:4px;font-size:11px;display:flex}.chart-legend i{vertical-align:middle;border-radius:2px;width:14px;height:3px;display:inline-block}@media (max-width:900px){.trades-body{grid-template-columns:1fr}}.alloc-notes li.warn,.alloc-funding p.warn{color:var(--flow)}.alloc-weights,.alloc-tradeable,.alloc-limits{margin:0 0 6px}.alloc-funding h3{margin:10px 0 4px;font-size:.95em}.keys.alloc tr.short td{color:var(--flow)}.orbit{min-width:0;height:100%;perspective:var(--show-perspective,1400px);perspective-origin:50% 40%;position:relative}.orbit-floor,.orbit-halo{pointer-events:none;position:absolute;top:50%;left:50%}.orbit-floor{--w:calc(var(--ring-d,400px) + 200px);--h:calc(var(--ring-d,400px) * .62);width:var(--w);height:var(--h);margin:calc(var(--h) * -.38) 0 0 calc(var(--w) * -.5);transform:translate(calc(var(--px,0) * -1 * var(--show-floor-shift,24px)), calc(var(--py,0) * -1 * var(--show-floor-shift,24px))) translateZ(-120px);background:radial-gradient(#f4d77e1a,#f4d77e00 70%);border-radius:50%}.orbit-halo{--d:calc(var(--ring-d,400px) + 72px);width:var(--d);height:var(--d);margin:calc(var(--d) * -.5) 0 0 calc(var(--d) * -.5);border:1px solid var(--line);transform:translate(calc(var(--px,0) * -1 * var(--show-halo-shift,14px)), calc(var(--py,0) * -1 * var(--show-halo-shift,14px))) translateZ(-60px);border-radius:50%}.orbit-halo:after{content:"";border:1px solid var(--line-hi);opacity:.55;border-radius:50%;position:absolute;inset:-1px}.orbit-tilt{height:100%;transform-style:preserve-3d;transform:rotateX(calc(var(--py,0) * var(--show-tilt,8deg) * -1)) rotateY(calc(var(--px,0) * var(--show-tilt,8deg)));position:relative}.orbit[data-tilt=true] .orbit-tilt{will-change:transform;transition:transform var(--show-settle-ms,0s) ease-out;animation:orbit-in var(--show-in-ms,0s) cubic-bezier(.2, .8, .2, 1) both}.orbit[data-tilt=true] .orbit-halo:after{animation:orbit-drift var(--show-drift-ms,0s) ease-in-out infinite alternate}.orbit .stage{height:100%;min-height:0;transform-style:preserve-3d}.orbit .center{transform:translate(-50%,-50%)translateZ(28px)}@keyframes orbit-in{0%{opacity:0;transform:rotateX(16deg)scale(.96)}}@keyframes orbit-drift{0%{opacity:.55;transform:translateY(0)}to{opacity:1;transform:translateY(-5px)}}.tape-item.fresh{animation:tape-land var(--tape-land-ms,0s) ease-out both}.tape-item.landed .t-res{animation:res-in var(--tape-res-ms,0s) ease-out both}.tape-item[data-status=done]{--t-edge:var(--up)}.tape-item[data-status=missed]{--t-edge:var(--ink3)}.tape-item[data-status=partial]{--t-edge:var(--down)}.tape-item[data-status=done],.tape-item[data-status=missed],.tape-item[data-status=partial]{box-shadow:inset 3px 0 0 var(--t-edge)}.tape-item[data-status=book_missing],.tape-item[data-status=pair_block]{box-shadow:inset 3px 0 0 var(--scan)}.tape-item.landed[data-status=done],.tape-item.landed[data-status=missed],.tape-item.landed[data-status=partial]{animation:res-edge var(--tape-res-ms,0s) ease-out both}.tape-item.fresh[data-status=done],.tape-item.fresh[data-status=missed],.tape-item.fresh[data-status=partial]{animation:tape-land var(--tape-land-ms,0s) ease-out both, res-edge var(--tape-res-ms,0s) ease-out both}@keyframes tape-land{0%{background:#f4d77e1a}to{background:0 0}}@keyframes res-in{0%{opacity:0;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes res-edge{0%{box-shadow:inset 3px 0 #0000}}@media (prefers-reduced-motion:reduce){#root>*,.show>*{--show-settle-ms:0s;--show-drift-ms:0s;--show-in-ms:0s;--tape-land-ms:0s;--tape-res-ms:0s}.orbit[data-tilt=false] .orbit-tilt,.orbit[data-tilt=false] .orbit-halo:after{transition:none;animation:none}}
