.mpb[data-v-7a9b2f85]{border-top:1px dashed var(--line,#d8d8e0);margin-top:12px;padding:10px 12px}.mpb-head[data-v-7a9b2f85]{color:#444;margin-bottom:8px;font-size:13px}.mpb-muted[data-v-7a9b2f85]{color:#999;font-size:12px}.mpb-row[data-v-7a9b2f85]{align-items:center;gap:8px;display:flex}.mpb-wrap[data-v-7a9b2f85]{position:relative}.mpb-input[data-v-7a9b2f85]{width:300px}.mpb-sug[data-v-7a9b2f85]{z-index:30;background:var(--bg,#fff);border:1px solid var(--line,#d8d8e0);border-radius:8px;max-height:240px;margin:2px 0 0;padding:4px 0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 6px 18px #1414281f}.mpb-sug li[data-v-7a9b2f85]{cursor:pointer;padding:6px 12px;font-size:13px}.mpb-sug li.hi[data-v-7a9b2f85],.mpb-sug li[data-v-7a9b2f85]:hover{background:var(--bg-soft,#eef0f8)}.mpb-ind[data-v-7a9b2f85]{color:#888;margin-left:8px;font-size:12px}.mpb-btn[data-v-7a9b2f85]{padding:4px 14px}.mpb-list[data-v-7a9b2f85]{flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.mpb-list li[data-v-7a9b2f85]{border:1px solid var(--line,#d8d8e0);background:var(--bg-soft,#f6f6fa);border-radius:999px;align-items:center;gap:6px;padding:2px 8px;font-size:12px;display:inline-flex}.mpb-code[data-v-7a9b2f85]{font-family:ui-monospace,monospace}.mpb-name[data-v-7a9b2f85]{color:#444}.mpb-x[data-v-7a9b2f85]{cursor:pointer;color:#b42318;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1}.pm[data-v-a6f20b04]{border-top:1px dashed var(--line,#d8d8e0);margin-top:12px;padding-top:10px}.pm-head[data-v-a6f20b04]{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.pm-title[data-v-a6f20b04]{font-size:14px;font-weight:600}.pm-muted[data-v-a6f20b04]{color:#999;font-size:12px}.pm-funnel[data-v-a6f20b04]{color:#777;font-size:12px}.pm-note[data-v-a6f20b04]{color:#888;margin:4px 0 8px;font-size:12px}.pm-err[data-v-a6f20b04]{color:#b42318;margin:6px 0;font-size:13px}.ts[data-v-b310d44d]{border-top:1px dashed var(--line,#d8d8e0);margin-top:12px;padding-top:10px}.ts-head[data-v-b310d44d]{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.ts-title[data-v-b310d44d]{font-size:14px;font-weight:600}.ts-muted[data-v-b310d44d]{color:#999;font-size:12px}.ts-note[data-v-b310d44d]{color:#888;margin:4px 0 8px;font-size:12px}.ts-err[data-v-b310d44d]{color:#b42318;margin:6px 0;font-size:13px}.ts-push[data-v-b310d44d]{background:#14783c12}.ts-badge[data-v-b310d44d]{color:#fff;vertical-align:1px;background:#14783c;border-radius:8px;margin-left:6px;padding:0 6px;font-size:11px;display:inline-block}.ts-reasons[data-v-b310d44d]{color:#555;overflow-wrap:anywhere;min-width:0;font-size:12px}.ts-op[data-v-b310d44d]{overflow-wrap:anywhere;min-width:0}.ts-btn[data-v-b310d44d]{border:1px solid var(--line,#d8d8e0);cursor:pointer;white-space:nowrap;background:#fff;border-radius:6px;padding:2px 10px;font-size:12px}.ts-btn[data-v-b310d44d]:hover:not(:disabled){color:#14783c;border-color:#14783c}.ts-btn[data-v-b310d44d]:disabled{opacity:.6;cursor:default}.ts-add-row td[data-v-b310d44d]{background:#fafafa}.ts-add-label[data-v-b310d44d]{color:#555;margin-right:8px;font-size:12px}.ts-inp[data-v-b310d44d]{width:110px;margin-right:6px}.ts-msg[data-v-b310d44d]{margin-left:8px;font-size:12px}.ts-msg-ok[data-v-b310d44d]{color:#14783c}.ts-msg-err[data-v-b310d44d]{color:#b42318}.topbar-jump[data-v-1caa2b2b]{color:#9a6b00;white-space:nowrap;background:#fff;border:1px solid #e0cf9a;border-radius:8px;margin-left:auto;padding:4px 12px;font-size:13px;text-decoration:none}.topbar-jump[data-v-1caa2b2b]:hover{background:#fbf6e8}.topbar-auth[data-v-1caa2b2b]{white-space:nowrap;align-items:center;gap:8px;display:flex}.topbar-user[data-v-1caa2b2b]{color:#666;font-size:12px}.topbar-logout[data-v-1caa2b2b]{border:1px solid var(--line,#d8d8e0);color:#555;cursor:pointer;background:#fff;border-radius:6px;padding:2px 10px;font-size:12px}.topbar-logout[data-v-1caa2b2b]:hover{color:#b42318;border-color:#b42318}.login-wrap[data-v-ff0cc82e]{background:#f5f6fa;justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card[data-v-ff0cc82e]{box-sizing:border-box;border:1px solid var(--line,#d8d8e0);background:#fff;border-radius:12px;width:100%;max-width:340px;padding:28px 24px;box-shadow:0 4px 16px #0000000f}.login-title[data-v-ff0cc82e]{margin:0 0 4px;font-size:18px}.login-sub[data-v-ff0cc82e]{color:#888;margin:0 0 20px;font-size:12px}.login-field[data-v-ff0cc82e]{color:#555;margin-bottom:14px;font-size:13px;display:block}.login-field input[data-v-ff0cc82e]{box-sizing:border-box;border:1px solid var(--line,#d8d8e0);border-radius:8px;width:100%;margin-top:6px;padding:8px 10px;font-size:14px;display:block}.login-err[data-v-ff0cc82e]{color:#b42318;margin:0 0 10px;font-size:13px}.login-btn[data-v-ff0cc82e]{letter-spacing:2px;color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;padding:9px 0;font-size:14px}.login-btn+.login-btn[data-v-ff0cc82e]{margin-top:8px}.login-btn-stock[data-v-ff0cc82e]{background:#14783c}.login-btn-stock[data-v-ff0cc82e]:hover:not(:disabled){background:#0f5c2e}.login-btn-crypto[data-v-ff0cc82e]{background:#9a6b00}.login-btn-crypto[data-v-ff0cc82e]:hover:not(:disabled){background:#7a5500}.login-btn[data-v-ff0cc82e]:disabled{opacity:.6;cursor:default}.auth-loading{color:#999;background:#f5f6fa;justify-content:center;align-items:center;min-height:100vh;font-size:14px;display:flex}:root{--bg:#f4f6fa;--panel:#fff;--ink:#1c2333;--muted:#6b7487;--line:#e3e8f0;--accent:#2563eb;--accent-soft:#eaf1ff;--good:#16a34a;--good-soft:#e9f9ef;--warn:#d97706;--bad:#dc2626;--bad-soft:#fdecec;--lake-up:#dc2626;--lake-down:#16a34a;--mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.55}.topbar{z-index:20;color:#fff;background:#101828;align-items:center;gap:24px;padding:10px 22px;display:flex;position:sticky;top:0}.brand{white-space:nowrap;align-items:baseline;min-width:0;font-size:16px;font-weight:700;display:flex}.brand .sub{color:#98a2b3;text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;margin-left:8px;font-size:12px;font-weight:400;overflow:hidden}.tabs{gap:6px;display:flex}.tab{color:#cbd5e1;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:7px 18px;font-size:14px}.tab:hover{color:#fff;background:#1d2a44}.tab.active{background:var(--accent);color:#fff;font-weight:600}.global-status{color:#98a2b3;margin-left:auto;font-size:12px}main{max-width:1400px;margin:0 auto;padding:18px 22px 40px}.tab-panel{display:none}.tab-panel.active{display:block}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;padding:16px 18px}h3{margin:0 0 10px;font-size:15px}.muted{color:var(--muted)}.small{font-size:12px}.placeholder{color:var(--muted);text-align:center;padding:40px}.hidden{display:none!important}.primary-btn{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:8px 16px;font-size:14px}.primary-btn:hover{filter:brightness(1.08)}.primary-btn:disabled{cursor:not-allowed;background:#9db4e8}.sync-danger{background:var(--bad)}.sync-danger:hover{filter:brightness(1.08)}.ghost-btn{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;padding:7px 14px;font-size:13px}.ghost-btn:hover{border-color:var(--muted)}.mini-btn{float:right;border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#fff;border-radius:6px;padding:2px 8px;font-size:12px}.mini-btn:hover{color:var(--accent);border-color:var(--accent)}.run-results-divider{border-top:1px solid var(--line);margin:20px 0 16px}.results-layout{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:16px;display:grid}.run-detail{min-width:0}.run-list-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;position:sticky;top:70px}.run-list{max-height:70vh;margin:0;padding:0;list-style:none;overflow-y:auto}.run-list li{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.run-list li:hover{background:var(--accent-soft)}.run-list li.active{background:var(--accent-soft);border-color:var(--accent)}.run-list .r-date{font-weight:600}.run-list .r-meta{color:var(--muted);text-align:right;font-size:12px}.run-badge{white-space:nowrap;border-radius:999px;flex:none;padding:2px 8px;font-size:11px;font-weight:700}.run-badge-failed{background:var(--bad);color:#fff}.run-list .r-meta-failed{color:var(--bad);font-weight:600}.run-failed-card{background:var(--bad-soft);border:1px solid #fecaca}.funnel-box{margin-bottom:18px}.funnel-row{grid-template-columns:150px minmax(0,1fr) 90px;align-items:center;gap:10px;margin-bottom:7px;display:grid}.funnel-label{text-align:right;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.funnel-bar-track{background:#edf1f7;border-radius:6px;height:20px;position:relative;overflow:hidden}.funnel-bar{background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:6px;min-width:2px;height:100%;transition:width .4s}.funnel-bar.neg{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.funnel-val{font-family:var(--mono);text-align:right;font-size:13px}.funnel-desc{color:var(--muted);grid-column:1/-1;margin-top:-5px;padding-right:100px;font-size:11px}.tbl-wrap{border:1px solid var(--line);border-radius:10px;overflow-x:auto}table.data{border-collapse:collapse;white-space:nowrap;width:100%;font-size:13px}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--line);padding:7px 10px}table.data thead th{cursor:pointer;-webkit-user-select:none;user-select:none;color:#374151;z-index:2;background:#f8fafc;font-weight:600;position:sticky;top:0}table.data thead th:hover{background:#eef2f7}table.data thead th .sort-arrow{color:var(--accent);margin-left:3px;font-size:11px}table.data tbody tr:hover{background:#f6f9ff}table.data td.num,table.data th.num{text-align:right;font-family:var(--mono)}.tag-pass{color:var(--good);font-weight:600}.tag-fail{color:#64748b}.tbl-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.tbl-toolbar input[type=search]{border:1px solid var(--line);border-radius:8px;flex:1;min-width:200px;max-width:340px;padding:7px 12px;font-size:13px}.tbl-toolbar .count{color:var(--muted);font-size:12px}.pager{align-items:center;gap:6px;margin-top:10px;font-size:13px;display:flex}.pager button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;padding:4px 10px}.pager button:disabled{opacity:.4;cursor:default}.pager button.cur{background:var(--accent);color:#fff;border-color:var(--accent)}.lake-jump-input{border:1px solid var(--line);width:74px;font-family:var(--mono);text-align:center;border-radius:6px;padding:4px 8px;font-size:13px}.lake-jump-input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.strategy-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.cards{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px;display:grid}.s-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.s-card h4{align-items:center;gap:8px;margin:0 0 4px;font-size:14px;display:flex}.s-card .s-icon{font-size:17px}.s-field{border-top:1px dashed var(--line);padding:9px 0}.s-field:first-of-type{border-top:0}.s-field-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.s-key{color:#374151;font-size:13px}.s-val{font-family:var(--mono);color:var(--accent);text-align:right;overflow-wrap:anywhere;min-width:0;font-size:13px;font-weight:600}@media (width<=640px){.s-field-head{flex-direction:column;align-items:flex-start;gap:3px}.s-val{text-align:left}}.s-desc{color:var(--muted);margin-top:2px;font-size:12px}.s-field input[type=number],.s-field input[type=text],.s-field select{border:1px solid var(--line);width:100%;font-family:var(--mono);border-radius:7px;margin-top:5px;padding:6px 9px;font-size:13px}.s-field input:focus,.s-field select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.cards-groups{flex-direction:column;gap:18px;display:flex}.s-group{border:1px solid var(--line);border-radius:12px;overflow:hidden}.s-group-head{background:color-mix(in srgb, var(--accent-soft) 45%, var(--panel));border-bottom:1px solid var(--line)}.s-group-toggle{cursor:pointer;color:#374151;text-align:left;background:0 0;border:0;align-items:center;gap:8px;width:100%;padding:9px 14px;font-size:13.5px;font-weight:600;display:flex}.s-group-toggle:disabled{cursor:not-allowed;opacity:.75}.s-group-caret{width:12px;color:var(--muted);display:inline-block}.s-group-icon{font-size:16px}.s-group-count{font-size:12px;font-weight:400}.s-group .cards{grid-template-columns:minmax(0,1fr);padding:14px}.s-fields-grid{grid-template-columns:minmax(0,1fr);align-items:start;column-gap:28px;display:grid}.s-field{min-width:0}@media (width>=900px){.s-fields-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.s-fields-grid .s-field:nth-child(2){border-top:0}}.s-sec-desc{color:var(--muted);margin:0 0 6px;font-size:12px}.s-field .s-desc{margin-top:4px}.s-readonly{font-family:var(--mono);color:var(--muted);background:color-mix(in srgb, var(--line) 30%, transparent);border:1px dashed var(--line);word-break:break-all;border-radius:7px;margin-top:5px;padding:6px 9px;font-size:12.5px}.toolbar-sep{background:var(--line);width:1px;height:20px;margin:0 4px}.lib-label{color:var(--muted);white-space:nowrap;font-size:13px}.lib-select{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;max-width:260px;padding:6px 10px;font-size:13px}.lib-select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.lib-select:disabled{opacity:.5;cursor:not-allowed}.lib-del{padding:6px 10px}.saveas-box{width:min(480px,92vw)}.saveas-box input[type=text]{border:1px solid var(--line);width:100%;font-family:var(--mono);border-radius:8px;margin-top:6px;padding:8px 12px;font-size:13.5px}.saveas-box input[type=text]:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.saveas-actions{justify-content:flex-end;gap:10px;margin-top:14px;display:flex}.bt-params-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.bt-params-head h3{margin:0}.msg-box{margin-top:14px}.msg-ok{background:var(--good-soft);color:#166534;border:1px solid #bbf7d0;border-radius:9px;padding:10px 14px}.msg-err{background:var(--bad-soft);color:#991b1b;white-space:pre-wrap;font-family:var(--mono);border:1px solid #fecaca;border-radius:9px;padding:10px 14px;font-size:12.5px}.run-form label{color:#374151;margin-bottom:6px;font-size:13px;display:block}.run-row{align-items:center;gap:10px;margin-top:8px;display:flex}.run-row input[type=date]{border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:14px}.badge{vertical-align:middle;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.badge.running{color:#92400e;background:#fef3c7}.badge.done{background:var(--good-soft);color:#166534}.badge.failed{background:var(--bad-soft);color:#991b1b}.log-tail{color:#d1e3ff;font-family:var(--mono);white-space:pre-wrap;word-break:break-all;background:#0f172a;border-radius:10px;max-height:380px;margin:10px 0 0;padding:12px 14px;font-size:12px;overflow-y:auto}.footnote{border-top:1px solid var(--line);color:var(--muted);background:#fff;padding:14px 22px;font-size:12px;line-height:1.7}.md-view{font-size:13px;overflow-x:auto}.md-view h1,.md-view h2,.md-view h3{margin:16px 0 8px}.md-view table{border-collapse:collapse;margin:8px 0}.md-view th,.md-view td{border:1px solid var(--line);padding:4px 9px;font-size:12.5px}.md-view code{font-family:var(--mono);background:#f1f5f9;border-radius:4px;padding:1px 5px}.kpi-cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px;display:grid}.kpi-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:0 1px 2px #1018280a}.kpi-val{font-size:24px;font-weight:700;font-family:var(--mono);color:var(--accent);word-break:break-all;line-height:1.2}.kpi-title{margin-top:4px;font-size:13px;font-weight:600}.kpi-desc{color:var(--muted);margin-top:2px;font-size:11px}.bdg-cell{white-space:nowrap}.bdg{white-space:nowrap;border-radius:999px;margin:1px 2px 1px 0;padding:1px 7px;font-size:11px;font-weight:600;display:inline-block}.bdg-div{background:var(--good-soft);color:#166534;border:1px solid #bbf7d0}.bdg-ind{color:#3730a3;background:#eef2ff;border:1px solid #c7d2fe}.bdg-ma{color:#92400e;background:#fef3c7;border:1px solid #fde68a}.bdg-fs{color:#86198f;background:#fae8ff;border:1px solid #f5d0fe}tr.clickable{cursor:pointer}.modal{z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-mask{background:#10182880;position:absolute;inset:0}.modal-box{background:var(--panel);border-radius:14px;width:min(960px,94vw);max-height:90vh;margin:0 auto;position:relative;overflow-y:auto;box-shadow:0 20px 50px #0000004d}.modal-head{border-bottom:1px solid var(--line);background:var(--panel);z-index:2;justify-content:space-between;align-items:center;padding:14px 18px;display:flex;position:sticky;top:0}.modal-head h3{margin:0;font-size:16px}.modal-body{padding:16px 18px}.chart-box{width:100%;height:320px;margin:8px 0 18px}.chart-kline{height:400px}.weight-sliders,.subweight-edits{width:100%;margin-top:5px}.w-row{flex-wrap:wrap;align-items:center;gap:8px;padding:3px 0;display:flex}.w-label{color:#374151;min-width:64px;font-size:12.5px}.w-row input[type=range]{min-width:120px;accent-color:var(--accent);flex:1}.w-raw{font-family:var(--mono);color:var(--ink);text-align:right;min-width:40px;font-size:12px}.w-norm{color:var(--muted);font-size:11px}.progress-track{background:#edf1f7;border-radius:999px;height:10px;margin:10px 0 4px;overflow:hidden}.progress-bar{background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:999px;width:0;height:100%;transition:width .5s}.lake-error{background:var(--bad-soft);color:#991b1b;border:1px solid #fecaca;border-radius:9px;margin-bottom:14px;padding:10px 14px;font-weight:600}.lake-backfill{color:#92400e;background:#fffbeb;border:1px solid #fcd34d;border-radius:9px;margin-bottom:14px;padding:12px 14px}.lake-backfill-head{font-size:14.5px;font-weight:700}.lake-backfill-total{align-items:center;gap:8px;margin:8px 0 10px;display:flex}.lake-backfill-total-track{flex:1;max-width:420px;height:9px;margin:0}.lake-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex;position:relative}.lake-toolbar input[type=search]{border:1px solid var(--line);border-radius:8px;flex:1;min-width:220px;max-width:420px;padding:8px 12px;font-size:13px}.lake-search-results{z-index:30;border:1px solid var(--line);background:#fff;border-radius:10px;max-height:320px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #1018281f}.lake-search-results .sr-item{cursor:pointer;border-bottom:1px solid var(--line);align-items:baseline;gap:10px;padding:8px 12px;display:flex}.lake-search-results .sr-item:last-child{border-bottom:0}.lake-search-results .sr-item:hover,.lake-search-results .sr-item.active{background:var(--accent-soft)}.lake-search-results .sr-code{font-family:var(--mono);color:var(--accent);font-weight:600}.lake-search-results .sr-name{font-weight:500}.lake-search-results .sr-ind{color:var(--muted);margin-left:auto;font-size:12px}.lake-search-results .sr-empty{text-align:center;color:var(--muted);padding:14px}.lake-base-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px;display:grid}.lake-kv{border:1px solid var(--line);background:#f8fafc;border-radius:9px;padding:8px 12px}.lake-kv .k{color:var(--muted);font-size:11.5px}.lake-kv .v{font-size:14px;font-weight:600;font-family:var(--mono);word-break:break-all;margin-top:2px}.lake-factor-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;display:grid}.lake-factor{border:1px solid var(--line);background:#f8fafc;border-radius:9px;padding:8px 12px}.lake-factor .k{color:var(--muted);font-size:11.5px;font-family:var(--mono)}.lake-factor .v{font-size:14px;font-weight:600;font-family:var(--mono);text-align:right;margin-top:2px}.lake-section-title{color:#374151;margin:14px 0 8px;font-size:13px;font-weight:600}.lake-skeleton{background:linear-gradient(90deg,#eef2f7 25%,#f8fafc 50%,#eef2f7 75%) 0 0/200% 100%;border-radius:6px;height:14px;margin:8px 0;animation:1.2s infinite lake-shimmer}@keyframes lake-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.lake-loading-label{color:var(--muted);padding:6px 0;font-size:12.5px}.badge.idle{color:#475569;background:#eef2f7}.badge.blocked_quota{color:#92400e;background:#fef3c7}.badge.error{background:var(--bad-soft);color:#991b1b}.lake-task-progress{min-width:120px}.mono{font-family:var(--mono)}.lake-summary{border:1px solid var(--line);background:#f8fafc;border-radius:9px;flex-wrap:wrap;align-items:center;gap:2px 4px;margin-bottom:10px;padding:8px 12px;font-size:13px;display:flex}.lake-summary-sep{color:var(--muted);margin:0 6px}.badge.lake-st-fresh{background:var(--good-soft);color:#166534;border:1px solid #bbf7d0}.badge.lake-st-lagging{color:#92400e;background:#fef3c7;border:1px solid #fde68a}.badge.lake-st-pending{background:var(--accent-soft);color:#1d4ed8;border:1px solid #bfdbfe}.badge.lake-st-empty{color:#64748b;border:1px solid var(--line);background:#eef2f7}.lake-tables-wrap{margin-bottom:10px}.lake-t-desc{max-width:300px}.lake-t-state{white-space:nowrap}tr.lake-row-muted{background:#f1f5f9}tr.lake-row-muted td{color:var(--muted)}tr.lake-row-muted .badge{opacity:.85}.lake-views{margin-bottom:10px}.lake-views-title{margin-bottom:4px;font-weight:600}.lake-view-row{padding:2px 0;font-size:12.5px}.lake-af-line{align-items:center;gap:8px;margin-top:8px;display:flex}.lake-af-track{flex:1;max-width:320px;height:7px;margin:0}.lake-af-hint{font-style:italic}.lake-tasks-wrap{margin-top:2px}.lake-sync-control{border:1px solid var(--line);background:#f8fafc;border-radius:9px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;padding:8px 12px;display:flex}.lake-sync-label{color:#374151;font-size:13px;font-weight:600}.lake-sync-control .primary-btn{white-space:nowrap}#lake-sync-meta{word-break:break-all;font-size:12.5px}#btn-lake-sync-toggle.sync-busy{opacity:.55;transition:opacity .15s}#btn-lake-sync-toggle.sync-busy:hover{filter:none}.lake-kline-bar{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 8px;display:flex}.lake-kline-range{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#fff;border-radius:6px;padding:2px 10px;font-size:12px}.lake-kline-range:hover{color:var(--accent);border-color:var(--accent)}.lake-kline-range.cur{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.lake-kline-sep{background:var(--line);width:1px;height:18px;margin:0 4px}.lake-kline-adjust-note{color:#92400e;margin:-2px 0 6px;font-size:12px}.lake-kline-wrap{width:100%;margin-bottom:4px;position:relative}.lake-kline-wrap svg{width:100%;height:auto;display:block}.lake-kline-svg .lk-tick{fill:var(--muted);font-size:11px;font-family:var(--mono)}.lake-kline-svg .lk-grid,.lake-kline-svg .lk-axis{stroke:var(--line);stroke-width:1px}.lake-kline-svg .lk-up{fill:var(--lake-up);stroke:var(--lake-up)}.lake-kline-svg .lk-down{fill:var(--lake-down);stroke:var(--lake-down)}.lake-kline-svg .lk-cross{stroke:#94a3b8;stroke-width:1px;stroke-dasharray:4 3}.lake-kline-svg .lk-hoverdot{fill:none;stroke:#475569;stroke-width:1.5px}.lake-kline-tip{pointer-events:none;z-index:20;color:#f8fafc;white-space:nowrap;background:#101828eb;border-radius:8px;padding:7px 10px;font-size:12px;line-height:1.5;display:none;position:absolute;box-shadow:0 6px 18px #10182840}.lake-kline-tip .tt-date{margin-bottom:2px;font-weight:700}.lake-kline-tip .tt-row{justify-content:space-between;gap:14px;display:flex}.lake-kline-tip .tt-k{color:#98a2b3}.lake-kline-tip .tt-v{font-family:var(--mono)}.lake-kline-empty{text-align:center;color:var(--muted);padding:46px 0;font-size:13px}.lake-spp{border:1px solid var(--line);background:#f8fafc;border-radius:9px;margin:0 0 12px;padding:10px 12px}.lake-spp-off{text-align:center;color:var(--muted);padding:14px 0;font-size:13px}.lake-spp-block{margin-bottom:12px}.lake-spp-block:last-child{margin-bottom:0}.lake-spp-title{color:#374151;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;font-size:12.5px;font-weight:600;display:flex}.lake-spp-row{align-items:center;gap:8px;padding:2px 0;display:flex}.lake-spp-row-label{color:#475569;white-space:nowrap;text-overflow:ellipsis;flex:none;width:130px;font-size:12px;overflow:hidden}.lake-spp-bar{background:#edf1f7;border-radius:4px;flex:1;min-width:80px;height:12px;display:flex;overflow:hidden}.lake-spp-bar i{height:100%;display:block}.lake-spp-row-total{text-align:right;width:90px;font-size:12px;font-family:var(--mono);color:#475569;flex:none}.lake-spp-legend{color:#475569;flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 6px;font-size:11.5px;display:flex}.lake-spp-legend-item{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.lake-spp-dot{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.lake-spp-toggle{cursor:pointer;align-items:center;margin:0;display:inline-flex}.lake-spp-toggle input{cursor:pointer;accent-color:var(--accent,#2563eb);margin:0}.lake-spp-probe,.lake-spp-probe-all{padding:1px 7px;font-size:11px;line-height:1.5}.lake-spp-probe:disabled,.lake-spp-probe-all:disabled{opacity:.5;cursor:default}.lake-sort-th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.lake-sort-th:hover{color:var(--accent,#2563eb)}.lake-sort-active{color:var(--accent,#2563eb);font-weight:700}.lake-sort-mark{margin-left:2px;font-size:10px}.lake-spp-adapters{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;display:grid}.lake-spp-adapter{border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.lake-spp-adapter-head{justify-content:space-between;align-items:center;gap:6px;font-size:12.5px;display:flex}.lake-spp-avail{font-weight:700;font-family:var(--mono)}.lake-spp-avail.ok{color:#16a34a}.lake-spp-avail.bad{color:#dc2626}.lake-spp-conn{flex-direction:column;gap:2px;font-size:12.5px;display:flex}.lake-spp-conn-line{align-items:baseline;gap:4px;display:flex}.lake-spp-chips{flex-wrap:wrap;gap:4px;display:flex}.lake-spp-chip{color:#334155;border:1px solid var(--line);background:#eef2f7;border-radius:999px;padding:1px 8px;font-size:11.5px;line-height:1.5;display:inline-block}.lake-spp-disabled,.lake-spp-stale{padding:1px 8px;font-size:11px}.lake-spp-conflict{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.lake-toolbar .count{color:var(--muted);margin-left:auto;font-size:12px}.my-toolbar{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.my-toolbar h3{margin:0}.inp{border:1px solid var(--line);font-size:13px;font-family:var(--mono);background:#fff;border-radius:8px;padding:7px 10px}.inp:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.inp.num{text-align:right;width:110px}.add-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;display:flex}.add-bar .inp:first-child{font-family:var(--mono);width:160px}.totals-bar{flex-wrap:wrap;gap:22px;margin:6px 0 12px;font-size:13.5px;display:flex}.totals-bar b{font-family:var(--mono)}.edit-bar{background:var(--accent-soft);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0;padding:12px;display:flex}.buy-bar{background:#2e7d3212;border:1px solid #2e7d3240;border-radius:10px;margin:14px 0;padding:12px}.buy-bar h4{margin:0 0 8px;font-size:13.5px}.buy-inputs{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.buy-preview{font-family:var(--mono);margin:8px 0 0}.edit-field{align-items:center;gap:6px;font-size:13px;display:flex}.detail-grid{grid-template-columns:1fr 1fr;gap:4px 18px;margin-bottom:10px;display:grid}.d-row{border-bottom:1px dashed var(--line);justify-content:space-between;gap:10px;padding:5px 0;display:flex}.d-key{color:var(--muted);font-size:13px}.d-val{font-family:var(--mono);text-align:right;font-size:13px;font-weight:600}.detail-buys{margin-top:14px}.code-sug-wrap{position:relative}.code-sug-list{z-index:30;border:1px solid var(--line);background:#fff;border-radius:8px;min-width:320px;max-height:288px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 3px);left:0;overflow-y:auto;box-shadow:0 6px 18px #00000024}.code-sug-list li{cursor:pointer;white-space:nowrap;align-items:baseline;gap:10px;padding:6px 12px;font-size:13px;display:flex}.code-sug-list li:hover,.code-sug-list li.hi{background:var(--accent-soft)}.code-sug-list .sug-code{font-family:var(--mono);flex:none;width:84px}.code-sug-list .sug-name{font-weight:600}.code-sug-list .sug-ind{margin-left:auto;padding-left:14px}.strat-sel{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.strat-sel select{border:1px solid var(--line);background:#fff;border-radius:8px;max-width:280px;padding:6px 10px;font-size:13px}.signal-banner{background:#fdecea;border:1px solid #f5c6c0;border-left:4px solid #c62828;border-radius:10px;margin:0 0 14px;padding:12px 16px}.signal-title{color:#c62828;margin-bottom:8px;font-weight:700}.signal-row{border-top:1px dashed #f0b9b2;flex-wrap:wrap;align-items:baseline;gap:18px;padding:5px 0;font-size:13.5px;display:flex}.signal-row:first-of-type{border-top:none}.signal-row b{font-size:14px}.signal-tag{white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:12px;font-weight:700;display:inline-block}.tag-buy{color:#e65100;background:#ffe0b2}.tag-add{color:#b71c1c;background:#ffcdd2}.tag-sell{color:#1b5e20;background:#c8e6c9}.sig-seg{flex-wrap:wrap;gap:8px;margin:10px 0;display:flex}.sig-seg button{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#fff;border-radius:8px;padding:6px 14px;font-size:13px}.sig-seg button:hover{color:#1565c0;border-color:#1565c0}.sig-seg button.on{color:#fff;background:#1565c0;border-color:#1565c0;font-weight:600}.trade-hist{border-collapse:collapse;width:100%;margin-top:4px;font-size:13px}.trade-hist th,.trade-hist td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:6px 8px}.trade-hist thead th{color:var(--muted);font-size:12px;font-weight:600}.trade-hist td.num,.trade-hist th.num{text-align:right;font-family:var(--mono)}.trade-hist tbody tr:hover{background:#f6f9ff}.ghost-btn.tiny{padding:0 6px;font-size:12px;line-height:20px}.bt-form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:10px 16px;display:grid}.bt-form .f-row,.bt-history .f-row{color:#374151;align-items:center;gap:10px;min-width:0;font-size:13px;display:flex}.bt-form .f-row>span,.bt-history .f-row>span{flex:none;width:44px}.bt-history .f-row>span{width:60px}.bt-form input[type=date],.bt-form input[type=text],.bt-history select{border:1px solid var(--line);min-width:0;color:var(--ink);background:#fff;border-radius:8px;flex:1;padding:7px 10px;font-size:13px}.bt-form input[type=text]{font-family:var(--mono)}.bt-form input:focus,.bt-history select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.bt-form input:disabled,.bt-history select:disabled{opacity:.55}.bt-form .radio{cursor:pointer;color:#374151;white-space:nowrap;align-items:center;gap:5px;font-size:13px;display:inline-flex}.bt-form .radio input{accent-color:var(--accent);margin:0}.bt-form .f-row .primary-btn{white-space:nowrap}.bt-form .f-row .muted{margin-left:2px}@media (width<=700px){.bt-form-grid{grid-template-columns:minmax(0,1fr)}}.bt-buys .card-toggle{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin:0;padding:0;display:inline-flex}.bt-buys .card-toggle .cnt{color:var(--muted);font-size:12.5px;font-weight:400}@media (width<=900px){.results-layout{grid-template-columns:1fr}.run-list-box{position:static}.topbar{flex-wrap:wrap;gap:12px;padding:10px 16px}main{padding:14px 12px 32px}html,body{overflow-x:hidden}.kpi-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-box{border-radius:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh}.chart-box,.chart-kline{height:260px}.cards{grid-template-columns:1fr}}
