:root{color:#1a1e1c;font-synthesis:none;text-rendering:optimizelegibility;letter-spacing:0;--ink:#1a1e1c;--muted:#707a75;--line:#dde2df;--panel:#fff;--dark:#111513;--green:#139968;--green-soft:#e8f7f1;--red:#d44a4a;--red-soft:#fceeee;--amber:#d18a23;--amber-soft:#fff5e3;background:#f4f6f5;font-family:Inter,Segoe UI,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit;letter-spacing:0}button{cursor:pointer}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--dark);color:#fff;z-index:30;flex-direction:column;width:232px;display:flex;position:fixed;inset:0 auto 0 0}.brand{border-bottom:1px solid #282d2a;align-items:center;gap:12px;height:76px;padding:0 22px;display:flex}.brand-mark{color:#09130f;background:#24ad7c;border-radius:6px;place-items:center;width:38px;height:38px;display:grid}.brand-mark.large{width:52px;height:52px;margin:0 auto 22px}.brand strong{font-size:16px;display:block}.brand span{color:#86918b;margin-top:2px;font-size:9px;font-weight:700;display:block}.sidebar nav{gap:4px;padding:20px 12px;display:grid}.sidebar nav button{color:#939c97;text-align:left;background:0 0;border:0;border-radius:5px;align-items:center;gap:12px;min-height:44px;padding:0 12px;display:flex}.sidebar nav button:hover{color:#fff;background:#1b211e}.sidebar nav button.active{color:#fff;background:#252c28;box-shadow:inset 3px 0 #24ad7c}.sidebar-foot{border-top:1px solid #282d2a;align-items:center;min-height:70px;margin-top:auto;padding:0 14px 0 20px;display:flex}.venue{flex:1;align-items:center;gap:10px;display:flex}.venue span{font-size:10px;font-weight:700;display:block}.venue small{color:#77817c;font-size:10px}.logout{color:#7f8984;background:0 0;border:0;border-radius:5px;place-items:center;width:34px;height:34px;display:grid}.logout:hover{color:#fff;background:#252c28}.status-dot{background:#858e89;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.status-dot.active{background:#24c78d;box-shadow:0 0 0 4px #24c78d1f}.status-dot.inactive{background:#d85b5b}.workspace{flex:1;min-width:0;margin-left:232px}.topbar{border-bottom:1px solid var(--line);z-index:20;background:#fff;justify-content:space-between;align-items:center;height:76px;padding:0 30px;display:flex;position:sticky;top:0}.title-block{align-items:center;gap:12px;display:flex}.title-block p{color:var(--muted);margin:0 0 2px;font-size:10px}.title-block h1{margin:0;font-size:20px;font-weight:700}.topbar-actions{align-items:center;gap:12px;display:flex}.mode-switch{border:1px solid var(--line);background:#f2f4f3;border-radius:6px;padding:3px;display:flex}.mode-switch button{min-width:58px;height:31px;color:var(--muted);background:0 0;border:0;border-radius:4px;font-size:12px}.mode-switch button.active{color:var(--ink);background:#fff;font-weight:700;box-shadow:0 1px 3px #0e18131f}.mode-switch button.active.live{color:var(--red)}.button{border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:0 14px;font-size:12px;font-weight:650;display:inline-flex}.button:disabled{cursor:not-allowed;opacity:.5}.button.primary{background:var(--ink);color:#fff}.button.primary:hover{background:#303633}.button.secondary{border-color:var(--line);color:var(--ink);background:#fff}.button.secondary:hover{background:#f4f6f5}.button.danger{background:var(--red);color:#fff}.button.full{width:100%}.engine-toggle.start{background:var(--green);color:#fff}.engine-toggle.stop{background:var(--red-soft);color:var(--red);border-color:#f4d3d3}.mode-strip{border-bottom:1px solid var(--line);height:38px;color:var(--muted);background:#edf1ef;justify-content:space-between;align-items:center;padding:0 30px;font-size:11px;display:flex}.mode-strip div{align-items:center;gap:5px;display:flex}.mode-strip strong{color:var(--ink)}.mode-indicator{background:var(--green);border-radius:2px;width:3px;height:15px;margin-right:4px}.mode-indicator.live{background:var(--red)}.content{max-width:1600px;margin:0 auto;padding:24px 30px 40px}.view-stack{gap:18px;display:grid}.metrics-grid{border:1px solid var(--line);background:var(--panel);border-radius:7px;grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.metric{border-right:1px solid var(--line);min-width:0;padding:20px 22px}.metric:last-child{border-right:0}.metric-top{color:var(--muted);justify-content:space-between;align-items:center;font-size:11px;display:flex}.metric-top svg{color:#97a19c}.metric>strong{white-space:nowrap;text-overflow:ellipsis;margin:11px 0 5px;font-size:23px;display:block;overflow:hidden}.metric small{color:#89928e;font-size:10px}.positive{color:var(--green)!important}.negative{color:var(--red)!important}.overview-grid{grid-template-columns:minmax(0,1.8fr) minmax(280px,.7fr);gap:18px;display:grid}.panel{background:var(--panel);border:1px solid var(--line);border-radius:7px}.panel-heading{border-bottom:1px solid #e8ebe9;justify-content:space-between;align-items:center;min-height:70px;padding:17px 20px;display:flex}.panel-heading h2{margin:2px 0 0;font-size:15px}.eyebrow{color:#8b9590;margin:0;font-size:8px;font-weight:800}.unit-label,.count-label{color:var(--muted);background:#f1f4f2;border-radius:4px;padding:5px 8px;font-size:10px}.chart-wrap{height:280px;padding:20px 18px 10px 5px}.empty-chart{color:#9aa39f;place-content:center;justify-items:center;gap:8px;height:100%;font-size:11px;display:grid}.health-list{padding:8px 20px}.health-list>div{border-bottom:1px solid #edf0ee;justify-content:space-between;align-items:center;height:42px;font-size:11px;display:flex}.health-list>div:last-child{border:0}.health-list span{color:var(--muted);align-items:center;gap:9px;display:flex}.health-list strong{font-size:11px}.inline-alert{background:var(--amber-soft);color:#96601d;overflow-wrap:anywhere;border-radius:5px;align-items:flex-start;gap:9px;margin:0 20px 18px;padding:10px;font-size:11px;display:flex}.event-list{padding:4px 20px 12px}.event-row{border-bottom:1px solid #edf0ee;grid-template-columns:30px 1fr auto;align-items:center;gap:9px;min-height:52px;display:grid}.event-row:last-child{border:0}.event-icon{color:#66716b;background:#eef3f0;border-radius:5px;place-items:center;width:26px;height:26px;display:grid}.event-icon.error,.event-icon.critical{background:var(--red-soft);color:var(--red)}.event-icon.warning{background:var(--amber-soft);color:var(--amber)}.event-row strong,.event-row small{display:block}.event-row strong{font-size:11px}.event-row small{color:var(--muted);text-transform:uppercase;margin-top:2px;font-size:9px}.event-row time{color:var(--muted);font-size:10px}.table-panel{overflow:hidden}.history-toolbar{border-bottom:1px solid var(--line);background:#fbfcfb;align-items:center;gap:9px;min-height:58px;padding:9px 16px;display:flex}.history-search{color:#8b9590;background:#fff;border:1px solid #cfd6d2;border-radius:5px;flex:1;align-items:center;gap:8px;min-width:230px;max-width:420px;height:36px;padding:0 10px;display:flex}.history-search input{border:0;outline:0;flex:1;min-width:0;height:100%;font-size:11px}.history-toolbar select{color:#4f5954;background:#fff;border:1px solid #cfd6d2;border-radius:5px;min-width:108px;height:36px;padding:0 9px;font-size:10px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:900px}th{text-align:left;color:#7d8782;border-bottom:1px solid var(--line);white-space:nowrap;background:#f7f8f8;height:40px;padding:0 16px;font-size:9px;font-weight:750}td{color:#4e5853;white-space:nowrap;border-bottom:1px solid #edf0ee;height:64px;padding:8px 16px;font-size:11px}tbody tr:last-child td{border-bottom:0}tbody tr.clickable:hover{cursor:pointer;background:#f8faf9}.asset-path{align-items:center;gap:3px;display:flex}.asset-path>span{color:var(--ink);align-items:center;gap:3px;font-weight:750;display:flex}.asset-path.compact{gap:1px}.symbol-stack{gap:4px;font-size:9px;display:grid}.symbol-stack span{align-items:center;gap:6px;display:flex}.buy,.sell{min-width:26px;font-size:8px;display:inline-block}.buy{color:var(--green)}.sell{color:var(--red)}.empty-row{color:#8b9590;justify-content:center;align-items:center;gap:8px;min-height:140px;font-size:11px;display:flex}.mode-badge,.trade-status{border-radius:4px;align-items:center;height:23px;padding:0 7px;font-size:9px;font-weight:700;display:inline-flex}.mode-badge.paper{color:#2676a6;background:#eaf4fa}.mode-badge.live{color:var(--red);background:var(--red-soft)}.trade-status.completed{background:var(--green-soft);color:var(--green)}.trade-status.failed{background:var(--red-soft);color:var(--red)}.trade-status.executing,.trade-status.reconciling,.trade-status.recovery_required{background:var(--amber-soft);color:var(--amber)}.drawer-backdrop,.modal-backdrop{z-index:60;background:#090d0b73;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:#fff;width:min(520px,100vw);height:100%;overflow-y:auto;box-shadow:-14px 0 40px #0000001f}.drawer-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:78px;padding:18px 22px;display:flex}.drawer-head h2{margin:3px 0 0;font-size:17px}.icon-button{border:1px solid var(--line);color:#59635e;background:#fff;border-radius:5px;place-items:center;width:36px;height:36px;display:grid}.trade-summary{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:18px;padding:20px 22px;display:grid}.trade-summary span,.trade-summary strong{display:block}.trade-summary span{color:var(--muted);margin-bottom:5px;font-size:9px}.trade-summary strong{font-size:12px}.status-text{text-transform:uppercase}.status-text.completed{color:var(--green)}.status-text.failed{color:var(--red)}.status-text.reconciling,.status-text.recovery_required{color:var(--amber)}.cycle-path{border-bottom:1px solid var(--line);background:#f6f8f7;justify-content:center;align-items:center;gap:5px;height:72px;display:flex}.cycle-path span{align-items:center;gap:5px;display:flex}.cycle-path b{border:1px solid var(--line);background:#fff;border-radius:4px;padding:7px 8px;font-size:11px}.legs-list{gap:9px;padding:18px 22px;display:grid}.leg{border:1px solid var(--line);border-radius:6px;grid-template-columns:30px 1fr auto;align-items:center;gap:10px;min-height:68px;padding:10px 13px;display:grid}.leg-index{background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;font-size:10px;display:grid}.leg-main strong,.leg-main span,.leg-values strong,.leg-values span{display:block}.leg-main strong,.leg-values strong{font-size:11px}.leg-main span,.leg-values span{color:var(--muted);margin-top:4px;font-size:9px}.leg-values{text-align:right}.drawer-meta{border-top:1px solid var(--line);grid-template-columns:90px 1fr;gap:10px;margin:16px 22px;padding-top:18px;font-size:10px;display:grid}.drawer-meta span{color:var(--muted)}.drawer-meta code{overflow-wrap:anywhere}.settings-layout{grid-template-columns:1fr 1fr;align-items:start;gap:18px;display:grid}.settings-section.account-section{grid-column:1/-1}.form-grid{grid-template-columns:1fr 1fr;gap:18px 16px;padding:22px;display:grid}.field>span{color:#56605b;margin-bottom:7px;font-size:10px;font-weight:650;display:block}.field>input,.number-input,.reset-inline input{background:#fff;border:1px solid #cfd6d2;border-radius:5px;width:100%;height:39px}.field>input,.number-input input,.reset-inline input{border:0;outline:0;min-width:0;padding:0 11px}.field>input:focus,.number-input:focus-within,.reset-inline input:focus{border-color:#6f8077;box-shadow:0 0 0 3px #24ad7c1a}.number-input{align-items:center;display:flex}.number-input input{background:0 0;flex:1;width:50%;height:100%}.number-input span{color:#89928e;white-space:nowrap;padding:0 10px;font-size:9px}.connection-row{border-bottom:1px solid #edf0ee;justify-content:space-between;align-items:center;gap:20px;min-height:70px;margin:0 22px;display:flex}.endpoint-grid{grid-template-columns:1fr 1fr;gap:16px;padding:22px 22px 14px;display:grid}.endpoint-note{color:#65706a;background:#f1f5f3;border-radius:5px;align-items:center;gap:8px;margin:0 22px 20px;padding:10px 12px;font-size:10px;display:flex}.credential-badge{border-radius:4px;justify-content:center;align-items:center;min-width:56px;height:25px;padding:0 8px;font-size:9px;font-weight:750;display:inline-flex}.credential-badge.ready{color:var(--green);background:var(--green-soft)}.credential-badge.pending{color:var(--amber);background:var(--amber-soft)}.credential-grid{grid-template-columns:1fr 1fr;gap:16px;padding:22px 22px 14px;display:grid}.secret-input{background:#fff;border:1px solid #cfd6d2;border-radius:5px;align-items:center;width:100%;height:39px;display:flex}.secret-input:focus-within{border-color:#6f8077;box-shadow:0 0 0 3px #24ad7c1a}.secret-input input{background:0 0;border:0;outline:0;flex:1;min-width:0;height:100%;padding:0 11px}.secret-input button{color:#7b8680;background:0 0;border:0;place-items:center;width:38px;height:37px;display:grid}.credential-note,.credential-error{border-radius:5px;align-items:flex-start;gap:8px;margin:0 22px 12px;padding:10px 12px;font-size:10px;line-height:1.5;display:flex}.credential-note.secure{color:#31745d;background:var(--green-soft)}.credential-note.insecure,.credential-error{color:#9b3f3f;background:var(--red-soft)}.credential-note svg,.credential-error svg{flex:none;margin-top:1px}.credential-actions{border-top:1px solid #edf0ee;justify-content:space-between;align-items:center;gap:18px;min-height:72px;margin-top:8px;padding:12px 22px;display:flex}.credential-meta{min-width:0;color:var(--muted);flex-wrap:wrap;gap:5px 14px;font-size:9px;display:flex}.credential-meta span{overflow-wrap:anywhere}.credential-buttons{flex:none;align-items:center;gap:8px;display:flex}.danger-icon{color:var(--red);border-color:#f0cccc}.danger-icon:disabled{opacity:.4;cursor:not-allowed}.connection-row:last-child{border:0}.connection-row span,.connection-row small{display:block}.connection-row span{font-size:11px;font-weight:700}.connection-row small{color:var(--muted);margin-top:4px;font-size:9px}.reset-inline{gap:8px;display:flex}.reset-inline input{width:150px}.save-bar{border:1px solid var(--line);background:#fff;border-radius:7px;grid-column:1/-1;justify-content:space-between;align-items:center;min-height:64px;padding:0 16px 0 22px;display:flex}.save-bar span{color:var(--muted);font-size:10px}.modal-backdrop{justify-content:center;align-items:center;padding:18px}.modal{background:#fff;border-radius:7px;width:min(460px,100%);padding:28px;box-shadow:0 20px 60px #0003}.danger-symbol{width:44px;height:44px;color:var(--red);background:var(--red-soft);border-radius:6px;place-items:center;display:grid}.modal h2{margin:18px 0 9px;font-size:19px}.modal p{color:#69736e;margin:0 0 18px;font-size:11px;line-height:1.8}.modal label{color:#56605b;font-size:10px;display:block}.modal label code{color:var(--red);font-weight:750}.modal>input{border:1px solid #cfd6d2;border-radius:5px;outline:0;width:100%;height:40px;margin-top:8px;padding:0 10px}.modal-actions{justify-content:flex-end;gap:9px;margin-top:22px;display:flex}.toast{z-index:100;color:#fff;border-radius:6px;align-items:center;gap:9px;max-width:min(380px,100vw - 44px);min-height:44px;padding:0 14px;font-size:11px;display:flex;position:fixed;bottom:22px;right:22px;box-shadow:0 8px 24px #00000029}.toast.success{background:#177c5a}.toast.error{background:#a83e3e}.login-shell{background:#141816;place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{text-align:center;background:#fff;border-radius:7px;width:min(390px,100%);padding:38px 40px 32px;box-shadow:0 24px 70px #00000040}.login-kicker{color:var(--green);margin:0;font-size:9px;font-weight:850}.login-panel h1{margin:6px 0;font-size:27px}.login-subtitle{color:var(--muted);margin:0 0 28px;font-size:11px}.login-panel form{text-align:left}.login-panel label{color:#56605b;font-size:10px;font-weight:650}.login-panel input{border:1px solid #cfd6d2;border-radius:5px;outline:0;width:100%;height:42px;margin:8px 0 14px;padding:0 12px}.login-panel input:focus{border-color:var(--green);box-shadow:0 0 0 3px #1399681a}.form-error{color:var(--red);gap:6px;margin:-5px 0 12px;font-size:10px;display:flex}.login-security{border-top:1px solid var(--line);color:#89928e;justify-content:center;align-items:center;gap:6px;margin-top:24px;padding-top:18px;font-size:9px;display:flex}.app-loading{color:#bcc5c0;background:#141816;place-content:center;justify-items:center;gap:12px;min-height:100vh;font-size:11px;display:grid}.app-loading svg{color:#24ad7c;animation:1.5s ease-in-out infinite pulse}.spin{animation:1s linear infinite spin}.mobile-menu,.mobile-overlay{display:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.4;transform:scale(.94)}}@media (width<=1100px){.metrics-grid{grid-template-columns:1fr 1fr}.metric:nth-child(2){border-right:0}.metric:nth-child(-n+2){border-bottom:1px solid var(--line)}.settings-layout{grid-template-columns:1fr}.settings-section.account-section,.save-bar{grid-column:1}}@media (width<=820px){.sidebar{transition:transform .2s;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.workspace{margin-left:0}.mobile-overlay{z-index:25;background:#00000059;display:block;position:fixed;inset:0}.mobile-menu{display:grid}.topbar,.mode-strip{padding:0 16px}.mode-strip>span{display:none}.content{padding:18px 16px 30px}.overview-grid{grid-template-columns:1fr}}@media (width<=560px){.topbar{height:68px}.title-block p{display:none}.title-block h1{font-size:16px}.engine-toggle span{display:none}.engine-toggle{width:38px;padding:0}.mode-switch button{min-width:48px}.metrics-grid{grid-template-columns:1fr}.metric{border-right:0;border-bottom:1px solid var(--line)}.metric:nth-child(3){border-bottom:1px solid var(--line)}.metric:last-child{border-bottom:0}.form-grid,.endpoint-grid,.credential-grid{grid-template-columns:1fr}.credential-actions{flex-direction:column;align-items:stretch}.credential-buttons{width:100%}.credential-buttons .button{flex:1}.connection-row{flex-direction:column;align-items:flex-start;padding:16px 0}.reset-inline{width:100%}.reset-inline input{flex:1;width:80px}.save-bar{gap:12px}.save-bar span{display:none}.save-bar .button{width:100%}.login-panel{padding:32px 24px 26px}.history-toolbar{flex-wrap:wrap;align-items:stretch}.history-search{min-width:100%;max-width:none}.history-toolbar select{flex:1}.history-toolbar .button{width:100%}}
