:root{--bg:#f6f9fc;--surface:#fff;--surface-2:#eff2f6;--fg:#121c23;--muted:#5a656d;--border:#d9dfe3;--accent:#222a30;--accent-ink:#192026;--selected-bg:#e4e8eb;--selected-border:#a8afb4;--green:#34893c;--green-bg:#ddf2dd;--green-ink:#104a17;--danger:#c44037;--warn:#d0901e;--info:#0080aa;--chart-strategy:#0062a6;--chart-cost:#418e47;--chart-benchmark:#647d97;--chart-alpha:#b54436;--chart-alpha-cost:#a97416;--chart-turnover:#0099a6;--chart-drawdown:#bd413f;--shadow:0 18px 50px #171f2d1a;--font-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;--font-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", "IBM Plex Mono", ui-monospace, Menlo, monospace}@supports (color:lab(0% 0 0)){:root{--bg:lab(97.6762% -.553459 -1.78936);--surface:lab(100% 0 0);--surface-2:lab(95.3554% -.662148 -2.14612);--fg:lab(9.52996% -2.83094 -6.4093);--muted:lab(42.0221% -2.81966 -5.87384);--border:lab(88.4126% -1.30934 -2.63926);--accent:lab(16.495% -2.27916 -4.86397);--accent-ink:lab(11.8532% -2.2426 -4.84933);--selected-bg:lab(91.8897% -.985682 -1.98157);--selected-border:lab(71.0152% -1.62533 -3.29283);--green:lab(50.6392% -39.3258 33.0272);--green-bg:lab(93.4989% -9.78026 7.61298);--green-ink:lab(26.9462% -28.1339 23.9968);--danger:lab(47.316% 52.9742 36.4588);--warn:lab(65.057% 18.8831 63.965);--info:lab(49.1602% -20.5831 -35.913);--chart-strategy:lab(38.9004% -4.75807 -51.471);--chart-cost:lab(52.8557% -36.471 30.2423);--chart-benchmark:lab(51.1787% -4.31407 -17.3615);--chart-alpha:lab(45.2396% 46.1286 33.7905);--chart-alpha-cost:lab(53.4775% 16.1855 54.8272);--chart-turnover:lab(56.947% -35.2701 -18.8079);--chart-drawdown:lab(46.203% 50.4327 30.0437)}}*{box-sizing:border-box;scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{width:0;height:0;display:none}html{min-height:100%}body{background:var(--bg);min-height:100%;color:var(--fg);font:14px/1.5 var(--font-body);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}a{color:inherit}.app{background:linear-gradient(90deg, #156c4809, transparent 38%), var(--bg);grid-template-columns:72px minmax(230px,280px) minmax(0,1fr) minmax(280px,360px);min-height:100vh;display:grid}.app:has(>.rail.is-expanded){grid-template-columns:184px minmax(230px,280px) minmax(0,1fr) minmax(280px,360px)}.app.desk-app{grid-template-columns:72px minmax(0,1fr)}.app.desk-app:has(>.rail.is-expanded){grid-template-columns:184px minmax(0,1fr)}.desk-app>.main{grid-column:2}.holding-drawer-trigger{z-index:19;border:1px solid var(--border);background:var(--fg);min-height:42px;color:var(--surface);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:8px;padding:0 14px;display:inline-flex;position:fixed;bottom:24px;right:24px}.holdings-overview-modal{width:min(760px,100%);max-height:min(88vh,860px)}.holdings-overview-modal .asset-bands.stacked{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.holdings-overview-body{align-content:start}.toggle{background:var(--surface-2);width:46px;height:26px;box-shadow:inset 0 0 0 1px var(--border);border:0;border-radius:999px;flex:none;align-items:center;padding:2px;transition:background .16s cubic-bezier(.23,1,.32,1),box-shadow .16s cubic-bezier(.23,1,.32,1);display:flex}.toggle.is-on{background:var(--fg);box-shadow:inset 0 0 0 1px #0000}.toggle-thumb{background:var(--surface);border-radius:50%;width:20px;height:20px;transition:transform .16s cubic-bezier(.23,1,.32,1);transform:translate(0);box-shadow:0 1px 4px #171f2d2e}.toggle.is-on .toggle-thumb{transform:translate(20px)}.string-list{gap:8px;min-width:0;display:grid}.string-list-label{color:var(--muted);font-size:12px}.string-list-rows{gap:8px;display:grid}.string-list-row{align-items:center;gap:8px;display:flex}.string-list-row input{flex:1;min-width:0}.app.simple{grid-template-columns:72px minmax(0,1fr)}.app.simple:has(>.rail.is-expanded){grid-template-columns:184px minmax(0,1fr)}.rail{border-right:1px solid var(--border);z-index:10;background:#fbfcfdf0;background:lab(98.8386% -.22307 -.716805/.94);flex-direction:column;align-items:center;gap:18px;height:100vh;padding:18px 12px;display:flex;position:sticky;top:0}.rail.is-expanded{align-items:stretch}.rail-header{flex-direction:column;align-items:center;gap:12px;width:100%;display:flex}.rail.is-expanded .rail-header{flex-direction:row;justify-content:space-between;gap:8px}.mark{background:var(--fg);color:#fff;width:40px;height:40px;font:650 14px/1 var(--font-mono);letter-spacing:.02em;border-radius:12px;place-items:center;display:grid}.rail-brand{justify-items:center;gap:6px;width:100%;display:grid}.rail.is-expanded .rail-brand{flex:1;grid-template-columns:40px minmax(0,1fr);place-items:center start;gap:10px;min-width:0}.rail-title,.rail-label{display:none}.rail.is-expanded .rail-title{color:var(--muted);text-align:left;font-size:11px;font-weight:650;display:block}.rail-bot-name{text-align:center;word-break:break-all;color:var(--muted);max-width:100%;font-size:10px;line-height:1.25}.rail-nav{gap:10px;width:100%;display:grid}.rail-btn{width:48px;height:48px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:14px;place-items:center;text-decoration:none;transition:background .18s cubic-bezier(.23,1,.32,1),color .18s cubic-bezier(.23,1,.32,1);display:grid}.rail.is-expanded .rail-btn{grid-template-columns:24px minmax(0,1fr);justify-content:start;justify-items:start;width:100%;padding:0 12px}.rail.is-expanded .rail-label{text-overflow:ellipsis;white-space:nowrap;display:inline;overflow:hidden}.rail-btn.is-active{background:var(--surface-2);color:var(--accent-ink);border-color:var(--border)}.rail-toggle{border:1px solid var(--border);width:48px;height:48px;color:var(--muted);background:0 0;border-radius:14px;flex:0 0 48px;justify-content:center;align-items:center;padding:0;line-height:0;display:flex}.rail-toggle svg{flex:none;display:block}.sidebar{border-right:1px solid var(--border);background:#ffffffbd;min-width:0;min-height:100vh;padding:18px}.page,.main{align-content:start;gap:16px;min-width:0;padding:20px;display:grid}.main{grid-template-rows:auto auto minmax(0,1fr)}.right{border-left:1px solid var(--border);background:#ffffffdb;grid-template-rows:auto minmax(0,1fr);gap:14px;min-width:0;height:100vh;min-height:100vh;padding:18px;display:grid;position:sticky;top:0;overflow:auto}.topbar,.side-head,.row-between,.account-top,.alert-top,.channel-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar{flex-wrap:wrap;align-items:flex-start;gap:18px}.topbar>*,.side-head>*,.row-between>*,.account-top>*,.alert-top>*,.channel-title>*,.panel-head>*{min-width:0}.row-between,.account-top,.alert-top,.channel-title,.panel-head{flex-wrap:wrap}.top-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.top-actions.nowrap{flex-wrap:nowrap}.loading-pill,.loading-strip{color:var(--accent-ink);align-items:center;gap:8px;display:inline-flex}.loading-pill{border:1px solid var(--selected-border);background:var(--selected-bg);border-radius:999px;min-height:34px;padding:0 12px;font-size:12px;font-weight:650}.loading-strip{border:1px solid var(--selected-border);background:color-mix(in oklch, var(--selected-bg), white 18%);border-radius:12px;min-height:42px;padding:10px 14px;font-size:13px}.loading-pill svg,.loading-strip svg,.spin{flex:none;animation:.9s linear infinite loading-spin}@keyframes loading-spin{to{transform:rotate(360deg)}}h1,h2,h3{font-family:var(--font-display);letter-spacing:0;margin:0}h1{font-size:clamp(28px,3.2vw,44px);line-height:1.05}h2{font-size:18px;line-height:1.2}h3{font-size:15px}.eyebrow{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:650}.muted{color:var(--muted)}.small{letter-spacing:0;font-size:12px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.icon-btn,.primary-btn,.ghost-btn,.chip-btn{border:1px solid var(--border);background:var(--surface);color:var(--fg);letter-spacing:0;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 12px;font-weight:560;text-decoration:none;transition:transform .16s cubic-bezier(.23,1,.32,1),border .16s cubic-bezier(.23,1,.32,1);display:inline-flex}.icon-btn{width:40px;padding:0}.primary-btn{background:var(--fg);color:#fff;border-color:#0000}.primary-btn:hover:not(:disabled){background:#252f37;background:lab(18.8165% -2.96721 -6.45695)}.ghost-btn{background:0 0}.danger-btn{background:var(--danger);color:#fff;white-space:nowrap;border-color:#0000;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 12px;font-weight:560;display:inline-flex}.confirm-backdrop{z-index:30;background:#0f141e5c;justify-content:center;align-items:center;padding:18px;display:none;position:fixed;inset:0}.confirm-backdrop.is-open{display:flex}.confirm-dialog{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:min(420px,100%);overflow:hidden;box-shadow:0 30px 90px #141c2838}.confirm-dialog-head{padding:18px 18px 0}.confirm-dialog-head h3{margin:0;font-size:1.05rem}.confirm-dialog-message{color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;margin:12px 0 0;padding:0 18px;line-height:1.5}.confirm-dialog-actions{justify-content:flex-end;gap:10px;padding:18px;display:flex}.search{flex:260px;min-width:min(260px,100%);position:relative}.search input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:42px;color:var(--fg);border-radius:12px;outline:none;padding:0 14px 0 38px}.search svg{width:16px;height:16px;color:var(--muted);position:absolute;top:50%;left:13px;transform:translateY(-50%)}.compact-search{margin-bottom:8px}.compact-search input{border-radius:10px;min-height:34px;font-size:13px}.compact-search svg{width:14px;height:14px;left:11px}.account-stack,.holdings,.stack,.queue,.timeline,.alert-list,.panel-body,.builder{gap:10px;display:grid}.summary-block,.summary-list,.compact-holdings,.account-list{align-content:start;gap:12px;display:grid}.asset-bands{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.asset-bands.stacked{grid-template-columns:1fr}.asset-band{border:1px solid var(--border);color:var(--fg);text-align:left;background:#ffffffeb;border-radius:14px;gap:6px;min-width:0;padding:14px;display:grid}button.asset-band{cursor:pointer}.asset-band.is-selected{border-color:var(--selected-border);background:var(--selected-bg)}.asset-band strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:20px;line-height:1.1}.summary-row,.compact-holding,.account-row{border:1px solid var(--border);background:#ffffffe0;border-radius:12px;min-width:0;padding:12px;transition:border-color .16s cubic-bezier(.23,1,.32,1),background .16s cubic-bezier(.23,1,.32,1)}.summary-row,.compact-holding{justify-content:space-between;align-items:center;gap:12px;display:flex}.summary-row>*,.compact-holding>*,.account-row>*{min-width:0}.account-row.is-clickable{cursor:pointer}.account-row.is-selected{border-color:var(--selected-border);background:var(--selected-bg)}.pnl-up{color:#cc342d!important;color:lab(47.0999% 59.4346 42.4083)!important}.pnl-down{color:var(--green)!important}.link-btn{color:var(--fg);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.compact-holding>div:first-child,.summary-row>div:first-child{gap:2px;display:grid}.align-right{text-align:right;justify-items:end;gap:4px;min-width:0;display:grid}.account-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.account-metrics span{background:var(--surface-2);border-radius:10px;gap:4px;min-width:0;padding:10px;display:grid}.account-metrics small{color:var(--muted)}.maintenance-grid{grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.account,.panel,.kpi,.queue-card,.strategy-card,.channel-card,.signal-card,.alert,.rule,.detail,.message,.preview{border:1px solid var(--border);background:#ffffffeb;border-radius:14px}.account,.kpi,.queue-card,.strategy-card,.channel-card,.alert,.rule,.detail,.message,.preview{padding:14px}.panel{overflow:hidden}.panel-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.panel-body,.stack,.queue,.timeline,.builder{padding:14px}.bar{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.bar span{height:100%;width:var(--w);background:var(--accent);display:block}.holding-row{border-top:1px solid var(--border);grid-template-columns:1fr auto;gap:4px 10px;padding-top:10px;display:grid}.tag{background:var(--surface-2);color:var(--muted);letter-spacing:0;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;font-weight:560;display:inline-flex}.tag.buy{background:var(--green-bg);color:var(--green-ink)}.tag.watch,.tag.warn{color:#6b4400;color:lab(32.5215% 16.2413 57.3712);background:#ffebd2;background:lab(94.2484% 3.83502 15.0783)}.tag.risk{color:#862721;color:lab(31.4602% 40.5365 28.0496);background:#ffe4e0;background:lab(92.7341% 10.4776 6.43107)}.tag.info{color:#004f6b;color:lab(30.5144% -16.037 -30.205);background:#d6f0fd;background:lab(93.1576% -6.64321 -9.27304)}.kpi-grid,.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.kpi{align-content:space-between;min-height:104px;display:grid}.kpi strong{font-family:var(--font-mono);letter-spacing:0;font-variant-numeric:tabular-nums;font-size:24px;line-height:1.1;display:block}.metric-label{color:var(--muted);letter-spacing:0;gap:2px;font-size:12px;line-height:1.25;display:grid}.metric-label small,.chart-title-subtitle{color:color-mix(in oklch, var(--muted), transparent 10%);letter-spacing:0;font-size:12px;line-height:1.3}.workbench{gap:14px;min-height:0;display:grid}.grid{grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.grid.reverse{grid-template-columns:minmax(0,1fr) minmax(300px,420px)}.backtest-layout,.backtest-report-layout{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.backtest-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.run-list-panel{max-height:calc(100vh - 36px);position:sticky;top:18px;overflow:auto}.backtest-main{gap:16px;min-width:0;display:grid}.report-page{gap:18px}.report-subtitle{color:var(--muted);flex-wrap:wrap;gap:8px 14px;display:flex}.report-metrics,.report-overview,.report-chart-stack{gap:12px;display:grid}.report-metrics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.report-metric{min-height:96px}.report-overview{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.report-overview .detail{align-content:start;gap:6px;display:grid}.report-overview .detail>span,.report-overview .detail>strong{display:block}.report-chart-stack{gap:16px}.benchmark-panel .panel-head{padding-bottom:10px}.benchmark-switcher{grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;margin-top:6px;padding:0 14px 14px;display:grid}.benchmark-option{border:1px solid var(--border);background:var(--surface);min-height:56px;color:var(--fg);cursor:pointer;border-radius:8px;align-content:center;justify-items:start;gap:2px;padding:8px 10px;transition:border-color .16s,background .16s;display:grid}.benchmark-option:hover,.benchmark-option.is-selected{border-color:var(--accent);background:var(--selected-bg)}.benchmark-option span{font-weight:650}.benchmark-option small{color:var(--muted);font-family:var(--font-mono);letter-spacing:0}.info-list{gap:0;padding:8px 14px 14px;display:grid}.info-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(110px,180px) minmax(0,1fr);align-items:start;gap:14px;padding:10px 0;display:grid}.info-row:last-child{border-bottom:0}.info-row span{color:var(--muted);min-width:0}.info-label{gap:2px;display:grid}.info-label small{color:color-mix(in oklch, var(--muted), transparent 18%);font-family:var(--font-mono);letter-spacing:0;font-size:11px;line-height:1.2}.info-row strong{text-align:left;white-space:pre-wrap;justify-self:stretch;min-width:0}.trade-detail-panel{min-width:0}.disclosure-panel>summary{cursor:pointer;list-style:none}.disclosure-panel>summary::-webkit-details-marker{display:none}.disclosure-icon{color:var(--muted);transition:transform .16s}.disclosure-panel[open]>summary .disclosure-icon{transform:rotate(180deg)}.summary-block.disclosure-panel>summary{cursor:pointer;align-items:center;display:flex}.pagination{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.alert-center-panel .signal-filters{padding-top:14px}.alert-detail-modal{width:min(760px,100%)}.notification-config-modal{width:min(820px,100%)}.notification-template-preview{border-top:1px solid var(--border);gap:12px;padding-top:16px;display:grid}.notification-template-preview h3{margin:2px 0 0;font-size:15px}.detail-list{gap:0;display:grid}.trade-detail-table{min-width:1040px}.trade-module{gap:3px;min-width:0;display:grid}.trade-module span,.trade-module small{text-overflow:ellipsis;min-width:0;overflow:hidden}.trade-module small{color:var(--muted);font-family:var(--font-mono);font-size:11px;line-height:1.2}.trade-stock{gap:2px;display:grid}.trade-stock small{color:var(--muted);font-size:11px}.report-chart-panel{min-width:0}.report-chart{min-width:0;height:340px;padding:10px 12px 16px}.report-chart.compact{height:280px}.run-card{border:1px solid var(--border);text-align:left;color:inherit;background:#ffffffeb;border-radius:12px;gap:6px;width:100%;padding:12px;display:grid}.run-card-wrap{position:relative}.run-card-wrap .run-card-delete{opacity:0;pointer-events:none;color:#fff;background:#c53637;background:lab(45.9853% 56.8958 34.8481);border-color:#0000;transition:opacity .14s,transform .14s,background .14s;position:absolute;top:8px;right:8px}.run-card-wrap:hover .run-card-delete,.run-card-wrap:focus-within .run-card-delete{opacity:1;pointer-events:auto}.run-card-wrap .run-card-delete:hover{background:#b20019;background:lab(37.6148% 63.6012 43.1939);transform:scale(1.04)}.backtest-jobs-modal{width:min(1080px,100%)}.run-card .row-between{flex-wrap:nowrap;align-items:flex-start}.run-card .tag{flex:none}.run-card-title,.run-card-id{white-space:normal;overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.run-card-title{flex:auto;line-height:1.35}.run-card-id{line-height:1.45}.run-card.is-selected{border-color:var(--selected-border);background:var(--selected-bg)}.equity-chart{border:1px solid var(--border);background:linear-gradient(#141c2808,#0000);border-radius:12px;align-items:end;gap:2px;height:220px;padding:12px;display:flex;overflow:hidden}.equity-chart span{background:var(--accent);border-radius:4px 4px 0 0;flex:3px;min-width:2px}.chart-axis{color:var(--muted);justify-content:space-between;display:flex}.tall-table{max-height:380px}.wrap{overflow-wrap:anywhere}td.wrap{white-space:normal;min-width:280px}.empty-state{text-align:center;place-items:center;min-height:300px}.tabs{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;gap:6px;padding:4px;display:flex}.tab{color:var(--muted);letter-spacing:0;background:0 0;border:0;border-radius:9px;min-height:34px;padding:7px 10px;font-weight:560}.tab.is-active{background:var(--surface);color:var(--fg);box-shadow:0 1px 6px #181f2a14}.signal-filters{flex-wrap:wrap;gap:10px;padding:0 16px 12px;display:flex}.signal-filters .filter-select{flex:200px;min-width:160px}.signal-filters .filter-select select{min-height:36px}.table-wrap{max-width:100%;overflow:auto}.table-wrap th{z-index:2;position:sticky;top:0}table{border-collapse:collapse;width:100%;min-width:760px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap;padding:12px 14px}th{color:var(--muted);letter-spacing:0;text-transform:uppercase;background:var(--surface-2);font-size:11px;font-weight:650}.position-table{min-width:980px}.input-table{min-width:920px}.input-table input{width:100%;min-width:104px}td{font-size:13px}tr[data-selected=true]{background:var(--selected-bg)}.stock{gap:2px;display:grid}.range{font-family:var(--font-mono);align-items:center;gap:6px;display:inline-flex}.signal-card{box-shadow:var(--shadow);gap:14px;display:grid}.signal-title{justify-content:space-between;align-items:start;gap:10px;display:flex}.signal-title strong{letter-spacing:0;font-size:24px;line-height:1.1}.detail-grid,.rule-grid,.form-grid,.channel-grid{gap:10px;display:grid}.detail-grid,.channel-grid{grid-template-columns:1fr 1fr}.channel-card{gap:12px;display:grid}.channel-card-actions{margin-top:16px}.template-params{gap:8px;display:grid}.template-param-row{align-items:center;gap:10px;display:flex}.template-params+label{gap:8px;display:grid}.rule-grid{grid-template-columns:repeat(3,minmax(0,1fr));padding:14px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.form-grid.compact{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.form-action .primary-btn{width:100%}label{color:var(--muted);letter-spacing:.01em;gap:6px;font-size:12px;display:grid}input,select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;min-width:0;min-height:40px;color:var(--fg);border-radius:10px;outline:none;padding:0 10px}textarea{resize:vertical;min-height:84px;padding-top:10px}.strategy-card{gap:10px;display:grid}.strategy-card.is-selected{background:var(--selected-bg);border-color:var(--selected-border)}.strategy-current-version{margin-top:2px}.strategy-layout{grid-template-columns:minmax(280px,.9fr) minmax(0,1.4fr)}.mapping-version-block{gap:12px;margin:0 16px 16px;padding:14px;display:grid}.mapping-version-block .table-wrap{width:100%}.strategy-version-summary{gap:8px;display:grid}.version-collapsed{padding:4px 0 2px}.schedule-switch-row{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:12px 14px;display:flex}.option-field{gap:10px;display:grid}.option-field-label{color:var(--muted);font-size:12px}.option-chips{flex-wrap:wrap;gap:8px;display:flex}.option-chip{border:1px solid var(--border);background:var(--surface);min-width:40px;height:36px;color:var(--ink);cursor:pointer;border-radius:10px;padding:0 12px}.option-chip.is-active{background:var(--selected-bg);border-color:var(--selected-border);color:var(--accent-ink)}.time-pickers{align-items:end;gap:10px;display:flex}.time-pickers label{min-width:96px}.time-sep{color:var(--muted);font-family:var(--mono,ui-monospace, SFMono-Regular, Menlo, monospace);padding-bottom:12px}.time-chips{margin-top:2px}.table-wrap tr.is-selected{background:var(--selected-bg)}.table-wrap tbody tr[style*=cursor]{transition:background .12s}.table-wrap tbody tr[style*=cursor]:hover{background:color-mix(in oklab, var(--selected-bg) 55%, transparent)}.chip-btn.is-active{background:var(--selected-bg);color:var(--accent-ink);border-color:var(--selected-border)}.panel>.alert-list{padding:14px}.switch-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:11px 0;display:flex}.switch-row:last-child{border-bottom:0}.switch{flex:none;width:44px;height:24px;position:relative}.switch input{opacity:0;position:absolute;inset:0}.slider{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;transition:all .16s cubic-bezier(.23,1,.32,1);position:absolute;inset:0}.slider:after{content:"";background:var(--surface);border:1px solid var(--border);border-radius:50%;width:18px;height:18px;transition:all .16s cubic-bezier(.23,1,.32,1);position:absolute;top:2px;left:2px}.switch input:checked+.slider{background:var(--fg);border-color:#0000}.switch input:checked+.slider:after{border-color:#0000;transform:translate(20px)}.modal-backdrop{z-index:1000;background:#0f141e5c;justify-content:center;align-items:center;padding:28px;display:none;position:fixed;inset:0}.modal-backdrop.is-open{display:flex}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;grid-template-rows:auto minmax(0,1fr) auto;width:min(980px,100%);max-height:min(90vh,860px);display:grid;overflow:hidden;box-shadow:0 30px 90px #141c2838}.modal>.panel-head,.modal>.topbar{padding:18px 24px}.modal-body{gap:18px;padding:22px 24px 24px;display:grid;overflow:auto}.modal-actions{justify-content:flex-end;gap:10px;width:100%;display:flex}.modal-footer{border-top:1px solid var(--border);background:var(--surface);justify-content:flex-end;gap:10px;min-height:72px;padding:16px 24px;display:flex}.kv-list{gap:8px;min-width:0;display:grid}.kv-list-label{color:var(--muted);font-size:12px}.kv-list-rows{gap:8px;display:grid}.kv-list-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1.2fr) auto;align-items:center;gap:8px;display:grid}.kv-list-sep{color:var(--muted);font-family:var(--mono,ui-monospace, SFMono-Regular, Menlo, monospace)}.package-upload{border:1px solid var(--border);background:var(--surface-2);border-radius:14px;gap:12px;padding:16px;display:grid}.package-file-chip{border:1px solid var(--border);background:var(--surface);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.dropzone{background:var(--surface-2);text-align:center;cursor:pointer;border:1px dashed #97a7b7;border:1px dashed lab(67.4805% -2.99993 -10.5739);border-radius:14px;place-items:center;min-height:160px;padding:20px;display:grid}.package-upload .dropzone{background:var(--surface)}.dropzone.is-active{border-color:var(--accent);background:var(--selected-bg)}.dropzone-body{justify-items:center;gap:8px;display:grid}.segmented{gap:8px;margin-bottom:10px;display:flex}.import-meta{grid-template-columns:1fr 1fr;gap:10px;display:grid}.draft-account{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.position-table .table-input{border:1px solid var(--border);background:var(--surface);width:100%;min-width:0;font:inherit;border-radius:6px;padding:4px 6px}.position-table .table-input.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.toast{opacity:0;pointer-events:none;background:var(--fg);color:#fff;letter-spacing:.02em;z-index:30;border-radius:999px;padding:10px 14px;font-weight:560;transition:opacity .18s cubic-bezier(.23,1,.32,1),transform .18s cubic-bezier(.23,1,.32,1);position:fixed;bottom:24px;left:50%;transform:translate(-50%,18px)}.toast.is-visible{opacity:1;transform:translate(-50%)}.empty{color:var(--muted);text-align:center;padding:26px}.empty.compact{padding:18px 0 6px}.docs{width:100%;max-width:1100px;margin:0 auto}.docs pre{background:var(--fg);color:#fff;border-radius:12px;padding:14px;overflow:auto}@media (max-width:1180px){.app{grid-template-columns:64px minmax(220px,280px) minmax(0,1fr)}.app:has(>.rail.is-expanded){grid-template-columns:184px minmax(220px,280px) minmax(0,1fr)}:is(.app.simple:has(>.rail.is-expanded),.app.desk-app:has(>.rail.is-expanded)){grid-template-columns:184px minmax(0,1fr)}.right{border-left:0;border-top:1px solid var(--border);grid-column:2/4;grid-template-rows:auto;grid-template-columns:1fr 1fr;height:auto;min-height:auto;position:static}}@media (max-width:980px){.app,.app.simple{display:block}.desk-app>.main{grid-column:auto}.holding-drawer-trigger{bottom:16px;right:16px}.rail{border-right:0;border-bottom:1px solid var(--border);flex-direction:row;justify-content:space-between;align-items:center;height:auto;overflow-x:auto}.rail.is-expanded{align-items:center}.rail-header,.rail.is-expanded .rail-header{flex-direction:row;align-items:center;width:auto}.rail-brand,.rail.is-expanded .rail-brand{width:auto;display:block}.rail-title,.rail.is-expanded .rail-title,.rail.is-expanded .rail-label{display:none}.rail-nav{width:auto;display:flex}.rail-toggle,.rail.is-expanded .rail-toggle{justify-content:center;align-items:center;width:48px;padding:0;display:flex}.rail.is-expanded .rail-btn{place-items:center;width:48px;padding:0;display:grid}.grid,.grid.reverse,.strategy-layout,.backtest-layout,.backtest-report-layout,.maintenance-grid,.asset-bands,.rule-grid,.form-grid,.channel-grid,.detail-grid,.kpis,.kpi-grid,.right,.report-overview,.report-metrics,.backtest-info-grid{grid-template-columns:1fr}.sidebar,.main,.page,.right{border-right:0;min-height:auto;padding:16px}.run-list-panel{max-height:none;position:static}.topbar{flex-direction:column;align-items:start}}@media (max-width:520px){.sidebar,.main,.page,.right{padding:14px}.tabs{max-width:100%;overflow-x:auto}.tab{white-space:nowrap}.rail-btn,.rail-toggle,.rail.is-expanded .rail-toggle,.rail.is-expanded .rail-btn{width:42px;height:42px}.rail-toggle,.rail.is-expanded .rail-toggle{flex-basis:42px}.report-chart{height:300px;padding:8px}.report-chart.compact{height:250px}.info-row{grid-template-columns:1fr;gap:4px}.info-row strong{text-align:left;justify-self:start}.account-metrics{grid-template-columns:1fr}.summary-row,.compact-holding{align-items:flex-start}}:root{--bg:#eff6fd;--surface:#fff;--surface-2:#e7f0f7;--fg:#0f1e2e;--muted:#526273;--border:#d2dce6;--accent:#09467d;--accent-ink:#072c4f;--selected-bg:#d7eaff;--selected-border:#82a8d3;--shadow:0 18px 44px #1f375c1a}@supports (color:lab(0% 0 0)){:root{--bg:lab(96.524% -1.63433 -4.1324);--surface:lab(99.9986% -.22319 -.716746);--surface-2:lab(94.2042% -1.89766 -4.8162);--fg:lab(10.5318% -1.83903 -13.0933);--muted:lab(40.7803% -3.11264 -11.8679);--border:lab(87.2309% -2.11525 -6.31624);--accent:lab(28.5666% -.671506 -37.271);--accent-ink:lab(17.2381% -1.5634 -25.33);--selected-bg:lab(91.8275% -3.34352 -12.4292);--selected-border:lab(67.3266% -5.60543 -26.0642)}}.app{background:radial-gradient(circle at 78% -8%, #597ab529, transparent 34rem), linear-gradient(135deg, #1f407709, transparent 42%), var(--bg)}.rail{background:radial-gradient(circle at 18% 0,#5180c16b,#0000 32%),radial-gradient(circle at 100% 84%,#e18c532e,#0000 34%),linear-gradient(165deg,#172b4b 0%,#1c3b66 52%,#102440 100%);border-color:#ffffff1a;box-shadow:8px 0 26px #0f1d3514}.mark{color:#1c2d48;background:linear-gradient(145deg,#f7bd63,#e88952);box-shadow:0 8px 20px #020c1e3d}.rail.is-expanded .rail-title,.rail-bot-name,.rail-btn,.rail-toggle{color:#e8f0ffad}.rail-btn.is-active{color:#fff;background:#ffffff26;border-color:#ffffff1f;box-shadow:inset 3px 0 #f6b65c}.rail-btn:hover,.rail-toggle:hover{background:#ffffff14}.rail-toggle{border-color:#ffffff29}.dashboard-page,.calendar-page{gap:20px;width:min(1680px,100%);margin:0 auto;padding:16px clamp(20px,2.5vw,38px) 34px}.page>.topbar{color:#40516c;background:#ffffffc2;border:1px solid #39588b24;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;min-height:42px;padding:9px 12px;box-shadow:0 7px 18px #273f660b}.page>.topbar .eyebrow{display:none}.page>.topbar h1{color:#243957;letter-spacing:0;margin:0;font-size:14px;line-height:1.3}.page>.topbar p{color:var(--muted);margin:3px 0 0;font-size:11px}.dashboard-utility-bar,.calendar-utility-bar{color:#40516c;background:#ffffffc2;border:1px solid #39588b24;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;min-height:42px;padding:9px 12px;display:flex;box-shadow:0 7px 18px #273f660b}.dashboard-utility-title,.calendar-utility-title,.dashboard-market-state,.calendar-utility-session{align-items:center;gap:8px;min-width:0;display:inline-flex}.dashboard-utility-title strong,.calendar-utility-title strong{color:#243957;font-size:14px}.dashboard-utility-title .mono,.calendar-utility-title .mono,.calendar-utility-session{color:#66758c;font-size:12px}.dashboard-market-state{color:#66758c;justify-content:flex-end;font-size:12px}.dashboard-market-state strong{color:#5b6678}.dashboard-market-state.is-open strong{color:#1d765e}.dashboard-hero{color:#f7faff;background:linear-gradient(118deg,#142a4bfa,#24487ceb),#19365f;border:1px solid #4e6fa529;border-radius:24px;justify-content:space-between;align-items:flex-start;gap:24px;padding:clamp(22px,3.4vw,42px);display:flex;box-shadow:0 22px 50px #162c502e}.dashboard-hero .eyebrow,.dashboard-hero p{color:#e8f1ffb3}.dashboard-hero h1{letter-spacing:-.045em;margin-top:6px;font-size:clamp(31px,4vw,52px)}.dashboard-hero p{max-width:640px;margin:14px 0 0;font-size:15px}.market-session-card{color:#f5f8ff;background:#07162f4d;border:1px solid #eff7ff26;border-radius:16px;flex:0 276px;gap:8px;padding:16px 18px;display:grid}.market-session-head{color:#ffd58b;align-items:center;gap:8px;display:inline-flex}.market-session-card>.mono{color:#fff;font-size:17px}.market-session-card small{color:#edf4ffb8;line-height:1.5}.dashboard-filterbar{border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffb8;border-radius:18px;grid-template-columns:repeat(6,minmax(128px,1fr)) auto;align-items:end;gap:10px;padding:14px;display:grid;box-shadow:0 8px 22px #2840640a}.dashboard-filterbar label{min-width:0}.dashboard-filterbar input,.dashboard-filterbar select{background:#ffffffe6;border-radius:9px;min-height:38px}.dashboard-refresh{min-height:38px}.dashboard-error{color:#831b16;color:lab(29.0244% 43.8421 31.6876);background:#fff1ee;background:lab(96.3026% 7.46673 4.57592);border:1px solid #efbcb5;border:1px solid lab(80.9082% 18.0798 11.1619);border-radius:12px;align-items:center;gap:8px;padding:11px 14px;display:flex}.dashboard-loading-state{color:#42618e;background:#edf4ff;border:1px solid #b1cbe4;border:1px solid lab(80.2343% -4.84014 -15.5854);border-radius:999px;align-items:center;gap:8px;width:fit-content;padding:8px 11px;font-size:12px;display:inline-flex}.dashboard-kpis{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.dashboard-kpi{background:#ffffffe0;border:1px solid #435f8b21;border-radius:17px;gap:7px;min-height:108px;padding:14px 16px;display:grid;box-shadow:0 12px 24px #263d640e}.dashboard-kpi span,.dashboard-kpi small{color:var(--muted)}.dashboard-kpi strong{color:var(--fg);font:700 clamp(26px, 2.8vw, 37px)/1 var(--font-mono);letter-spacing:-.08em}.dashboard-kpi.is-positive{background:linear-gradient(145deg,#fff,#e6f8e6);background:linear-gradient(145deg,#fff,lab(95.7544% -8.3831 6.51568))}.dashboard-kpi.is-warning{background:linear-gradient(145deg,#fff,#fff4e1);background:linear-gradient(145deg,#fff,lab(96.5918% 1.77509 10.6699))}.dashboard-kpi.is-risk{background:linear-gradient(145deg,#fff,#fff1ee);background:linear-gradient(145deg,#fff,lab(96.2938% 7.76708 4.76059))}.dashboard-primary-grid,.dashboard-lower-grid,.calendar-page-grid{align-items:stretch;gap:18px;display:grid}.dashboard-primary-grid{grid-template-columns:minmax(0,1.3fr) minmax(350px,.8fr)}.dashboard-lower-grid{grid-template-columns:minmax(0,1.2fr) minmax(340px,.8fr)}.calendar-page-grid{grid-template-columns:minmax(0,1fr) minmax(292px,340px);align-items:start}.dashboard-page .panel,.calendar-page .panel{border-color:#39588b24;border-radius:18px;box-shadow:0 14px 34px #273f6611}.dashboard-page .panel-head,.calendar-page .panel-head{padding:17px 20px}.dashboard-page .panel-head h2,.calendar-page .panel-head h2{margin-top:3px;font-size:20px}.dashboard-calendar-panel .panel-body{gap:12px;min-width:0;padding:10px 14px 16px;display:grid;overflow:hidden}.dashboard-calendar-panel{min-width:0;overflow:hidden}.dashboard-performance-panel{grid-template-rows:auto minmax(280px,1fr);display:grid}.dashboard-performance-panel-wide{grid-template-rows:auto minmax(330px,1fr)}.dashboard-performance-panel-wide .dashboard-return-chart{min-height:330px}.dashboard-return-chart{min-height:280px;padding:12px 8px 18px 4px}.dashboard-chart-empty{height:100%;color:var(--muted);text-align:center;place-items:center;padding:30px;display:grid}.dashboard-day-signals-panel{grid-template-rows:auto minmax(0,1fr);min-width:0;display:grid}.dashboard-day-signals-panel .panel-head p{margin:6px 0 0}.dashboard-day-signal-groups{align-content:start;max-height:590px;display:grid;overflow:auto}.dashboard-day-signal-group+.dashboard-day-signal-group{border-top:1px solid var(--border)}.dashboard-day-signal-group-head{z-index:2;background:var(--surface);justify-content:space-between;align-items:baseline;gap:12px;padding:12px 16px 8px;display:flex;position:sticky;top:0}.dashboard-day-signal-group-head>div{gap:3px;display:grid}.dashboard-day-signal-group-head strong{color:#263c60;font-size:13px}.dashboard-day-signal-toggle{white-space:nowrap;min-height:30px;padding:0 9px;font-size:11px}.dashboard-day-signal-list{display:grid}.dashboard-day-signal-row{border-top:1px solid #39588b1a;grid-template-columns:minmax(0,1.06fr) minmax(155px,.9fr) auto;align-items:center;gap:12px;min-width:0;padding:11px 16px;display:grid;overflow:hidden}.dashboard-day-signal-main{grid-template-columns:minmax(68px,.38fr) minmax(0,1fr);gap:10px;min-width:0;display:grid}.dashboard-day-signal-main>div:not(.signal-stock){gap:3px;min-width:0;display:grid}.dashboard-day-signal-main strong,.dashboard-day-signal-main span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dashboard-day-signal-meta{color:#53637c;flex-wrap:wrap;align-items:center;gap:5px 8px;min-width:0;font-size:11px;line-height:1.35;display:flex;overflow:hidden}.dashboard-day-signal-meta span:not(.tag){white-space:nowrap}.dashboard-day-signal-meta .dashboard-exit-rule{text-overflow:ellipsis;white-space:nowrap;flex:100%;min-width:0;max-width:100%;display:block;overflow:hidden}.dashboard-day-signal-actions{white-space:nowrap;justify-self:end}.dashboard-table-panel .panel-head p{margin:6px 0 0}.dashboard-table{min-width:1100px}.dashboard-valuations-panel .panel-head p{max-width:820px;margin:6px 0 0}.dashboard-valuations-table{min-width:1160px}.dashboard-valuations-table th{color:#56647a;background:#eef4fb}.dashboard-valuations-table tbody tr:hover{background:#587ab30b}.dashboard-valuation-number{font-size:14px}.dashboard-valuation-number.is-positive{color:#18745b}.dashboard-valuation-number.is-negative{color:#b44b42}.dashboard-valuation-stale{color:#9b6b1e;margin-top:5px;font-size:11px}.dashboard-table th{color:#56647a;background:#eff4fb}.dashboard-table tbody tr:hover{background:#587ab30b}.dashboard-strategy-name,.dashboard-signal-row>div:not(.signal-actions),.signal-stock,.dashboard-holding-row>div{gap:3px;display:grid}.dashboard-strategy-name strong{font-size:14px}.dashboard-inline-error{color:#932c25;color:lab(34.8426% 43.6623 30.2572);margin-top:5px;font-size:11px}.error-detail-trigger{color:#932c25;color:lab(34.8426% 43.6623 30.2572);min-height:32px;margin-top:5px;padding:0 10px;font-size:12px}.error-detail-modal{width:min(820px,100%)}.error-detail-content{border:1px solid var(--border);background:var(--surface-2);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;border-radius:10px;margin:0;padding:16px;font-size:12px;line-height:1.6}.dashboard-performance-error{overflow-wrap:anywhere;max-width:330px;line-height:1.45}.dashboard-performance-rebuild{margin-top:8px}.dashboard-signal-tools{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,1fr) minmax(145px,.42fr);gap:10px;padding:13px 16px;display:grid}.dashboard-signal-tools .filter-select{min-width:0}.dashboard-signal-list,.dashboard-holding-list{display:grid}.dashboard-signal-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(72px,.35fr) minmax(150px,1fr) minmax(128px,.65fr) auto;align-items:center;gap:13px;padding:13px 16px;display:grid}.dashboard-signal-row:last-child,.dashboard-holding-row:last-child{border-bottom:0}.signal-stock strong{font-size:15px}.stock-identity{gap:2px;min-width:0;display:grid}.stock-identity strong,.stock-identity small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.stock-identity strong{color:var(--fg);font-size:15px}.signal-actions{justify-self:end}.dashboard-holding-note{color:#53637c;background:#f0f4fa;border-left:3px solid #7b91bb;border-radius:0 8px 8px 0;margin:12px 16px 8px;padding:10px 12px;font-size:12px;line-height:1.5}.dashboard-holding-row{border-bottom:1px solid var(--border);grid-template-columns:minmax(96px,.55fr) minmax(135px,1fr) auto;align-items:center;gap:12px;padding:13px 16px;display:grid}.dashboard-holding-more{justify-self:start;margin:12px 16px 16px}.trading-calendar{gap:10px;width:100%;min-width:0;display:grid;overflow:hidden}.trading-calendar-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:11px;display:flex}.trading-calendar-legend>span{align-items:center;gap:5px;display:inline-flex}.legend-dot{background:#acb8c8;border-radius:50%;width:8px;height:8px}.legend-dot.open{background:#3f8f7b}.legend-dot.closed{background:#c5ccd7}.legend-dot.signal{background:#d6744d}.legend-dot.deadline{background:#7c5bc4}.calendar-loading{color:var(--accent-ink)}.calendar-error{background:#fff1ef;background:lab(96.3289% 6.56652 4.02269);border-radius:8px;padding:7px 10px}.trading-calendar .fc{--fc-border-color:#ccd7e5;--fc-button-bg-color:#fff;--fc-button-border-color:#dce3ed;--fc-button-text-color:#3e506e;--fc-button-hover-bg-color:#f1f5fa;--fc-button-hover-border-color:#cbd6e5;--fc-today-bg-color:#edf4ff;width:100%;min-width:0;max-width:100%;font-size:12px}.trading-calendar .fc .fc-toolbar{gap:8px;margin:2px 0 10px}.trading-calendar .fc .fc-toolbar-title{color:#243957;font-size:16px;font-weight:720}.trading-calendar .fc .fc-button{box-shadow:none;border-radius:8px;padding:.38em .62em;font-size:11px;font-weight:620}.trading-calendar .fc .fc-col-header-cell-cushion{color:#111827;white-space:nowrap;padding:7px 4px;font-weight:700;text-decoration:none}.trading-calendar .fc .fc-daygrid-day-frame{min-width:0;min-height:84px}.trading-calendar.is-compact .fc .fc-daygrid-day-frame{min-height:62px}.trading-calendar .fc .fc-daygrid-day-number{color:#111827;padding:6px;font-weight:720;text-decoration:none}.trading-calendar .fc .fc-view-harness,.trading-calendar .fc .fc-view-harness-active,.trading-calendar .fc .fc-daygrid,.trading-calendar .fc .fc-daygrid-body,.trading-calendar .fc .fc-scrollgrid-section,.trading-calendar .fc .fc-scrollgrid-section>*{min-width:0;max-width:100%;width:100%!important}.trading-calendar .fc .fc-scrollgrid,.trading-calendar .fc .fc-scrollgrid-sync-table,.trading-calendar .fc .fc-col-header,.trading-calendar .fc .fc-daygrid-body table{max-width:100%;table-layout:fixed!important;width:100%!important;min-width:0!important}.trading-calendar .fc .fc-col-header colgroup col,.trading-calendar .fc .fc-daygrid-body colgroup col{width:14.2857%!important}.trading-calendar .fc .fc-col-header-cell,.trading-calendar .fc .fc-daygrid-day,.trading-calendar .fc .fc-daygrid-day-events{min-width:0}.calendar-day-label{color:inherit;text-align:right;white-space:nowrap;justify-content:flex-end;align-items:center;gap:4px;line-height:1.25;display:flex}.calendar-day-markers{align-items:center;gap:3px;display:inline-flex}.calendar-day-marker{background:#d6744d;border-radius:999px;width:6px;height:6px}.calendar-day-marker.is-deadline{background:#7c5bc4}.calendar-day-marker.is-failed{background:#b42318}.trading-calendar .fc td.trade-calendar-day.is-market-closed{background:#edf1f5}.trading-calendar .fc td.trade-calendar-day.is-market-unknown{background:#f5f7fa}.trading-calendar .fc td.trade-calendar-day.is-market-open .fc-daygrid-day-number:after{content:"开";color:#28715f;vertical-align:1px;background:#dff2e9;border-radius:50%;place-items:center;width:15px;height:15px;margin-left:4px;font-size:9px;display:inline-grid}.trading-calendar .fc td.trade-calendar-day.is-market-closed .fc-daygrid-day-number{color:#111827}.trading-calendar .fc td.trade-calendar-day.is-selected{outline-offset:-2px;outline:2px solid #6e8dcc}.trading-calendar .fc .trade-calendar-event{color:#111827;background:#ffe1d4;border:0;border-radius:4px;margin:2px 3px 0;font-size:10px;font-weight:680}.trading-calendar .fc .trade-calendar-event.is-zero-signal{background:#dfeafa}.trading-calendar .fc .trade-calendar-event.has-failed-run{background:#f8dddd}.trading-calendar .fc .trade-calendar-event.has-signals{background:#ffe1d4}.trading-calendar .fc .trade-calendar-event.is-holding-deadline{background:#e9e1fb}.trading-calendar .fc .trade-calendar-event.is-zero-signal,.trading-calendar .fc .trade-calendar-event.has-failed-run,.trading-calendar .fc .trade-calendar-event.has-signals,.trading-calendar .fc .trade-calendar-event.is-holding-deadline{color:#111827!important}.calendar-event-content{color:#111827;text-overflow:ellipsis;white-space:nowrap;width:100%;padding:1px 3px;display:block;overflow:hidden}.calendar-page-shell{min-height:100vh}.calendar-page{align-content:start;gap:20px;min-width:0;display:grid}.calendar-full-panel{min-width:0}.calendar-page-hero h1{font-size:clamp(31px,3.7vw,48px)}.calendar-full-panel .panel-body{padding:18px}.calendar-day-detail{height:fit-content;position:sticky;top:16px}.dashboard-calendar-signal-strip{background:#f8fbff;border:1px solid #d6e0ec;border-radius:10px;gap:8px;padding:10px 12px;display:grid}.dashboard-calendar-signal-strip-head{color:#243957;justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.dashboard-calendar-signal-items{gap:6px;display:grid}.dashboard-calendar-signal-items article{background:#fff;border-radius:7px;grid-template-columns:minmax(95px,.52fr) minmax(145px,1fr) auto;align-items:center;gap:10px;padding:7px 8px;display:grid}.dashboard-calendar-signal-items article>div{gap:2px;min-width:0;display:grid}.dashboard-calendar-signal-items article strong,.dashboard-calendar-signal-items article span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dashboard-calendar-no-signal,.dashboard-calendar-more{color:#64748b;margin:0}.dashboard-calendar-more{font-size:11px}.calendar-day-state{border-radius:999px;align-items:center;min-height:34px;padding:0 12px;font-weight:680;display:inline-flex}.calendar-day-state.is-open{color:#276c5a;background:#e0f3e9}.calendar-day-state.is-closed{color:#657287;background:#edf0f4}.calendar-day-detail .panel-body{gap:15px;display:grid}.calendar-day-detail-row{border-top:1px solid var(--border);gap:4px;padding-top:13px;display:grid}.calendar-day-detail-row span{color:var(--muted);font-size:12px}.calendar-signal-summary{grid-template-columns:1fr 1fr;gap:8px;display:grid}.calendar-signal-summary>div{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;gap:3px;padding:10px;display:grid}.calendar-signal-summary span{color:var(--muted);font-size:11px}.calendar-signal-summary strong{font-family:var(--font-mono)}.calendar-signal-summary .is-risk{color:#932c25;color:lab(34.8426% 43.6623 30.2572);background:#fff1ee;background:lab(96.3026% 7.46673 4.57592);border-color:#f3c0b8;border-color:lab(82.0684% 18.077 11.1583)}.calendar-dashboard-link{margin-top:6px}.official-version-field{align-content:start}.official-version-control{border:1px solid var(--border);min-height:40px;color:var(--fg);background:var(--surface);border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:13px;display:inline-flex}.official-version-control input{width:auto;min-height:0}.official-version-field small{color:var(--muted);line-height:1.4}@media (max-width:1380px){.dashboard-filterbar{grid-template-columns:repeat(4,minmax(150px,1fr))}.dashboard-refresh{width:fit-content}.dashboard-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:980px){.dashboard-page,.calendar-page{padding:18px 16px 30px}.dashboard-hero{padding:24px;display:grid}.market-session-card{width:100%}.dashboard-filterbar,.dashboard-primary-grid,.dashboard-lower-grid,.calendar-page-grid,.dashboard-kpis{grid-template-columns:1fr}.dashboard-utility-bar,.calendar-utility-bar{flex-direction:column;align-items:flex-start}.dashboard-market-state{justify-content:flex-start}.dashboard-return-chart{min-height:260px}.dashboard-day-signal-row{grid-template-columns:minmax(0,1fr) auto}.dashboard-day-signal-meta{grid-column:1/-1}.dashboard-signal-row{grid-template-columns:minmax(70px,.34fr) minmax(0,1fr) auto}.dashboard-signal-row>div:nth-child(3){display:none}}@media (max-width:620px){.dashboard-hero h1,.calendar-page-hero h1{font-size:31px}.dashboard-filterbar{padding:11px}.dashboard-kpi{min-height:112px}.dashboard-signal-tools{grid-template-columns:1fr}.dashboard-signal-row,.dashboard-holding-row{grid-template-columns:1fr auto}.dashboard-signal-row>div:nth-child(2),.dashboard-holding-row>div:nth-child(2){grid-column:1/-1}.dashboard-signal-row>.signal-actions{grid-area:1/2}.dashboard-day-signal-main{grid-template-columns:minmax(76px,.42fr) minmax(0,1fr)}.dashboard-day-signal-group-head{flex-direction:column;align-items:flex-start;gap:3px}.dashboard-day-signal-actions{grid-area:1/2}.dashboard-calendar-signal-items article{grid-template-columns:1fr auto}.dashboard-calendar-signal-items article>div:nth-child(2){grid-column:1/-1}.trading-calendar .fc .fc-toolbar{flex-wrap:wrap;justify-content:center}.trading-calendar .fc .fc-toolbar-title{font-size:14px}.calendar-full-panel .panel-body{padding:10px}.calendar-signal-summary{grid-template-columns:1fr}}
.motion-root{display:contents}.mark{position:relative;overflow:hidden;box-shadow:0 8px 24px #171f2d2e}.mark:after{content:"";will-change:transform;background:linear-gradient(110deg,#0000 35%,#ffffff52,#0000 65%);animation:5.5s ease-in-out infinite motion-brand-glint;position:absolute;inset:-50%;transform:translate(-70%)rotate(12deg)}.rail-btn,.rail-toggle,.mobile-menu-trigger{transition:color .18s,background-color .18s,border-color .18s,box-shadow .22s,transform .22s cubic-bezier(.23,1,.32,1)}.rail-btn.is-active{box-shadow:inset 3px 0 0 var(--green), 0 8px 24px #171f2d12}.rail-btn svg,.rail-toggle svg,button svg,a svg{transition:transform .22s cubic-bezier(.23,1,.32,1)}.panel,.dashboard-kpi,.market-watch-summary article,.market-rank-summary article,.industry-liquidity-summary article,.asset-band,.strategy-card,.channel-card,.run-card,.research-card{transition:transform .26s cubic-bezier(.23,1,.32,1),border-color .22s,box-shadow .26s,background-color .22s}.primary-btn,.ghost-btn,.icon-btn,.chip-btn,.danger-btn,.tab,.option-chip,.market-rank-tabs button{transition:transform .18s cubic-bezier(.23,1,.32,1),box-shadow .18s,border-color .18s,background-color .18s,color .18s}.filter-select,input,select,textarea{transition:border-color .18s,box-shadow .18s,background-color .18s}.filter-select:focus-within,input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--selected-border);outline:none;box-shadow:0 0 0 3px #0080aa1f;box-shadow:0 0 0 3px lab(49.1602% -20.5831 -35.913/.12)}.tag{transition:transform .18s cubic-bezier(.23,1,.32,1),filter .18s}.table-wrap tbody tr{transition:background-color .16s,transform .2s cubic-bezier(.23,1,.32,1),box-shadow .18s}.table-wrap tbody tr:hover{box-shadow:inset 3px 0 0 var(--info);background:#edf7fc;background:lab(96.5667% -2.54539 -3.50583);transform:translate(2px)}@media (hover:hover){.rail-btn:hover,.rail-toggle:hover,.mobile-menu-trigger:hover{box-shadow:0 10px 24px #171f2d1a}.rail-btn:hover svg,.rail-toggle:hover svg,button:hover:not(:disabled) svg,a:hover svg{transform:scale(1.08)rotate(-3deg)}.panel:not(.modal):hover,.dashboard-kpi:hover,.market-watch-summary article:hover,.market-rank-summary article:hover,.industry-liquidity-summary article:hover,.asset-band:hover,.strategy-card:hover,.channel-card:hover,.run-card:hover,.research-card:hover{border-color:var(--selected-border);box-shadow:0 18px 42px #171f2d17}.primary-btn:hover:not(:disabled),.ghost-btn:hover:not(:disabled),.icon-btn:hover:not(:disabled),.chip-btn:hover:not(:disabled),.danger-btn:hover:not(:disabled),.option-chip:hover:not(:disabled),.market-rank-tabs button:hover:not(:disabled){box-shadow:0 9px 22px #171f2d21}.tag:hover{filter:saturate(1.12);transform:scale(1.035)}}button:active:not(:disabled),a:active{transform:translateY(0)scale(.97)}
.modal-backdrop.is-open{animation:.22s both motion-backdrop-in}.modal-backdrop.is-open .modal{transform-origin:50% 45%;will-change:transform, opacity;animation:.42s cubic-bezier(.16,1,.3,1) both motion-modal-in}details[open]>:not(summary){animation:.26s cubic-bezier(.23,1,.32,1) both motion-disclosure-in}.signal-group-children,.market-watch-row-details,.industry-tab-panel,.research-cards{animation:.3s cubic-bezier(.23,1,.32,1) both motion-content-in}.empty,.empty-state{animation:3.2s ease-in-out infinite motion-empty-breathe}@keyframes motion-brand-glint{0%,62%{transform:translate(-70%)rotate(12deg)}82%,to{transform:translate(70%)rotate(12deg)}}@keyframes motion-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes motion-modal-in{0%{opacity:0;transform:translateY(22px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes motion-disclosure-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes motion-content-in{0%{opacity:0;transform:translateY(8px)scale(.995)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes motion-empty-breathe{50%{opacity:.72}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
.mobile-menu-trigger,.rail-backdrop,.rail-mobile-close{display:none}@media (max-width:980px){.mobile-menu-trigger{z-index:34;color:#fff;background:#183154;border:1px solid #ffffff2e;border-radius:11px;place-items:center;width:42px;height:42px;padding:0;display:inline-grid;position:fixed;top:12px;left:12px;box-shadow:0 8px 22px #0f1d3533}.rail-backdrop{z-index:31;opacity:0;pointer-events:none;background:#0b16286b;border:0;width:100%;height:100%;padding:0;transition:opacity .18s;display:block;position:fixed;inset:0}.rail-backdrop.is-open{opacity:1;pointer-events:auto}.app>.rail{z-index:32;border-bottom:0;border-right:1px solid #ffffff1a;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:18px;width:min(82vw,300px);height:100dvh;padding:68px 14px 18px;transition:transform .2s cubic-bezier(.23,1,.32,1);position:fixed;inset:0 auto 0 0;overflow-y:auto;transform:translate(-102%)}.app>.rail.is-mobile-open{transform:translate(0)}.rail .rail-brand{grid-template-columns:40px minmax(0,1fr);place-items:center start;gap:10px}.rail .rail-title,.rail.is-expanded .rail-title{color:#f4f8ffe6;text-align:left;font-size:13px;display:block}.rail .rail-nav{width:100%;display:grid}.rail .rail-btn,.rail.is-expanded .rail-btn{grid-template-columns:24px minmax(0,1fr);place-items:center start;width:100%;height:48px;padding:0 12px;display:grid}.rail .rail-label,.rail.is-expanded .rail-label{display:inline}.rail .rail-toggle{display:none}.rail-mobile-close{color:#f4f8ffd6;background:#ffffff0f;border:1px solid #ffffff29;border-radius:11px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:42px;margin-top:auto;display:inline-flex}.app>.page,.app>.main,.app>.sidebar{padding-top:70px}}
.rail-header{flex-direction:column;align-items:center;gap:10px;width:100%;display:flex}.rail-header .rail-brand{order:2;min-height:40px}.rail-header .rail-toggle{width:28px;height:28px;box-shadow:none;background:#ffffff0f;border:0;border-radius:9px;flex:0 0 28px;order:1;margin:0;padding:0;position:static}.rail-header .rail-toggle:hover{box-shadow:none}.rail.is-expanded .rail-header{flex-direction:row;justify-content:space-between;align-items:center;gap:8px}.rail.is-expanded .rail-brand{flex:auto;order:1;grid-template-columns:40px minmax(0,1fr);place-items:center start;gap:8px;width:auto;min-width:0}.rail.is-expanded .rail-title{text-align:left}.rail.is-expanded .rail-toggle{flex:0 0 28px;order:2;grid-template-columns:none;place-items:center;width:28px;height:28px}.rail-nav{align-content:start;gap:8px}.rail-group{justify-items:center;gap:5px;display:grid}.rail-group-btn{color:#e8f0ffad;background:0 0;border:1px solid #0000;border-radius:14px;place-items:center;width:48px;height:48px;padding:0;transition:background .18s cubic-bezier(.23,1,.32,1),color .18s cubic-bezier(.23,1,.32,1);display:grid}.rail-group-btn:hover{background:#ffffff14}.rail-group-btn.is-active{color:#fff}.rail-group-chevron{transition:transform .16s;display:none}.rail-group-chevron.is-open{transform:rotate(180deg)}.rail.is-expanded .rail-group{justify-items:stretch}.rail.is-expanded .rail-group-btn{grid-template-columns:24px minmax(0,1fr) 16px;place-items:center start;width:100%;padding:0 10px 0 12px}.rail.is-expanded .rail-group-chevron{display:block}.rail-subnav{gap:4px;display:grid}.rail.is-expanded .rail-subnav .rail-btn{border-radius:10px;height:40px;padding-left:22px}@media (max-width:980px){.rail .rail-header,.rail.is-expanded .rail-header{flex-direction:row;align-items:center}.rail .rail-brand,.rail.is-expanded .rail-brand{flex:auto;order:1;grid-template-columns:40px minmax(0,1fr)}.rail .rail-group{justify-items:stretch}.rail .rail-group-btn,.rail.is-expanded .rail-group-btn{grid-template-columns:24px minmax(0,1fr) 16px;place-items:center start;width:100%;height:48px;padding:0 12px}.rail .rail-group-chevron{display:block}.rail .rail-subnav .rail-btn,.rail.is-expanded .rail-subnav .rail-btn{height:42px;padding-left:24px}}
.calendar-day-label-short{display:none}.dashboard-signals-modal{width:min(900px,100%)}.dashboard-signals-modal-list{align-content:start;gap:10px}.dashboard-signals-modal-list .dashboard-day-signal-row{border:1px solid #39588b1f;border-radius:12px}.dashboard-day-signal-row.is-detailed{grid-template-columns:minmax(0,1.06fr) minmax(155px,.9fr) auto}.dashboard-day-signal-note{border-top:1px dashed var(--border);grid-column:1/-1;gap:4px;padding-top:10px;display:grid}.dashboard-day-signal-note span{color:var(--muted);font-size:11px}.dashboard-day-signal-note p{color:#34445f;overflow-wrap:anywhere;white-space:pre-wrap;margin:0;line-height:1.65}@media (max-width:620px){.modal-backdrop{justify-content:center;align-items:center;padding:12px}.modal{border-radius:14px;max-height:calc(100dvh - 24px);margin:auto}.modal>.panel-head,.modal>.topbar,.modal-body{padding-left:16px;padding-right:16px}.dashboard-day-signal-row.is-detailed{grid-template-columns:minmax(0,1fr) auto}.calendar-day-label-full{display:none}.calendar-day-label-short{display:inline}.calendar-day-label{justify-content:center;gap:2px}.trading-calendar .fc .fc-daygrid-day-frame,.trading-calendar.is-compact .fc .fc-daygrid-day-frame{min-height:56px}.trading-calendar .fc .fc-daygrid-day-events,.trading-calendar .fc .fc-daygrid-day-bottom{display:none}.trading-calendar .fc .fc-daygrid-day-number{width:100%;padding:6px 2px}.trading-calendar .fc td.trade-calendar-day.is-market-open .fc-daygrid-day-number:after{display:none}.calendar-day-markers{gap:2px}.calendar-day-marker{width:5px;height:5px}}
.dashboard-day-signal-groups{overscroll-behavior:contain;overflow-y:auto}.dashboard-day-strategy-list .signal-strategy-group{position:relative;overflow:visible}.dashboard-day-strategy-list .signal-strategy-group>.signal-group-toggle.is-strategy{z-index:3;background:var(--surface);border-bottom:1px solid #39588b1a;position:sticky;top:52px;box-shadow:0 5px 12px #273f660f}@media (max-width:620px){.dashboard-day-strategy-list .signal-strategy-group>.signal-group-toggle.is-strategy{top:50px}}
.rail-btn{position:relative}.rail-link-pending{opacity:0;color:#f6b65c;pointer-events:none;place-items:center;width:14px;height:14px;display:grid;position:absolute;bottom:7px;right:7px}.rail-link-pending.is-pending{animation:.12s 80ms forwards route-pending-in}.route-loading-page{gap:20px;width:min(1680px,100%);margin:0 auto;padding:16px clamp(20px,2.5vw,38px) 34px}.route-loading-header{background:var(--fg);border-radius:12px;justify-content:space-between;align-items:center;gap:20px;min-height:98px;padding:18px;display:flex}.route-loading-header>div{gap:9px;width:min(560px,72%);display:grid}.route-loading-line,.route-loading-summary i,.route-loading-rows span{background:var(--surface-2);border-radius:999px;display:block;overflow:hidden}.route-loading-line{height:12px}.route-loading-header .route-loading-line{background:#ffffff29}.route-loading-line.is-short{width:24%;height:8px}.route-loading-line.is-title{width:58%;height:24px}.route-loading-line.is-description{width:84%;height:10px}.route-loading-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.route-loading-summary article{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:12px;padding:18px;display:grid}.route-loading-line.is-label{width:38%;height:9px}.route-loading-summary i{width:46%;height:28px}.route-loading-panel{gap:18px;padding:20px;display:grid}.route-loading-panel-head{justify-content:space-between;gap:20px;display:flex}.route-loading-line.is-heading{width:min(320px,45%);height:20px}.route-loading-line.is-action{width:112px;height:32px}.route-loading-rows{gap:12px;display:grid}.route-loading-rows span{border-radius:9px;height:44px}.route-loading-line,.route-loading-summary i,.route-loading-rows span{background-image:none;position:relative}.route-loading-line:after,.route-loading-summary i:after,.route-loading-rows span:after{content:"";pointer-events:none;will-change:transform;background:linear-gradient(100deg,#0000 20%,#ffffffad 46%,#0000 72%);background:linear-gradient(100deg,#0000 20%,lab(100% 0 0/.68) 46%,#0000 72%);width:50%;animation:2.8s linear infinite route-skeleton;position:absolute;top:0;bottom:0;left:-70%;transform:translate(0,0)}.route-loading-header .route-loading-line{background-color:#ffffff1f}@keyframes route-pending-in{to{opacity:1}}@keyframes route-skeleton{0%{transform:translate(0,0)}to{transform:translate(340%)}}@media (max-width:720px){.route-loading-header{flex-direction:column;align-items:flex-start}.route-loading-header>div{width:100%}.route-loading-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
.route-error-page{place-items:center;min-height:100vh;padding:32px;display:grid}.route-error-card{text-align:center;justify-items:center;gap:18px;width:min(560px,100%);padding:42px 30px;display:grid}.route-error-card h1{margin:4px 0 8px;font-size:clamp(22px,4vw,32px)}.route-error-card p,.route-error-card small{color:var(--muted)}.route-error-icon{background:color-mix(in oklch, var(--warning) 14%, var(--surface));width:52px;height:52px;color:var(--warning);border-radius:50%;place-items:center;display:grid}
.market-watch-page{gap:18px;width:min(1680px,100%);margin:0 auto;padding:20px clamp(20px,2.5vw,38px) 34px}.market-watch-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.market-watch-summary article{border:1px solid var(--border);background:#ffffffd6;border-radius:13px;gap:4px;min-width:0;padding:15px;display:grid}.market-watch-summary span,.market-watch-summary small,.market-watch-updated{color:var(--muted);font-size:11px}.market-watch-summary strong{color:#253b5d;text-overflow:ellipsis;overflow:hidden}.market-watch-updated{text-align:right}.market-price-line{justify-content:space-between;align-items:center;gap:8px;display:flex}.market-price-line>div{gap:2px;display:grid}.market-price-line span,.market-quote-metrics span,.market-watch-row footer{color:var(--muted);font-size:11px}.market-price-line strong{color:#203959;font:750 28px/1 var(--font-mono)}.market-price-line .is-up{color:#b42318}.market-price-line .is-down{color:#16735a}.market-quote-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.market-quote-metrics div{background:var(--surface-2);border-radius:9px;gap:3px;padding:9px;display:grid}@media (max-width:980px){.market-watch-page{padding:70px 16px 30px}.market-watch-summary{grid-template-columns:1fr 1fr}}@media (max-width:620px){.market-watch-summary{grid-template-columns:1fr}.market-watch-updated{text-align:left}.market-quote-metrics{grid-template-columns:1fr 1fr}}
.market-watch-filters{border:1px solid var(--border);background:#ffffffd1;border-radius:13px;grid-template-columns:minmax(190px,1.2fr) minmax(150px,.8fr) minmax(140px,.7fr) auto auto;align-items:end;gap:10px;padding:13px;display:grid}.market-watch-filters label,.market-adjustment-filter{gap:5px;min-width:0;display:grid}.market-watch-filters label>span,.market-adjustment-filter>span{color:var(--muted);font-size:10px}.market-adjustment-filter small{font-size:9px}.market-watch-filters select,.market-stock-filter>div{border:1px solid var(--border);min-height:36px;color:var(--fg);background:#fff;border-radius:9px}.market-watch-filters select{width:100%;padding:0 9px}.market-stock-filter>div{color:var(--muted);align-items:center;gap:7px;padding:0 10px;display:flex}.market-stock-filter input{background:0 0;border:0;outline:0;width:100%;min-width:0}.market-adjustment-filter>div{border:1px solid var(--border);background:#fff;border-radius:9px;min-height:36px;display:flex;overflow:hidden}.market-adjustment-filter button{color:#637188;background:0 0;border:0;border-radius:0;min-width:58px;padding:0 9px;font-size:11px}.market-adjustment-filter button+button{border-left:1px solid var(--border)}.market-adjustment-filter button.is-active{color:#1f4f82;background:#e8f1fb;font-weight:700}.market-filter-reset{white-space:nowrap;min-height:36px}@media (max-width:1080px){.market-watch-filters{grid-template-columns:1fr 1fr}}@media (max-width:620px){.market-watch-filters{grid-template-columns:1fr}.market-adjustment-filter>div{grid-template-columns:repeat(3,1fr);display:grid}.market-filter-reset{justify-self:start}}
.market-watch-list{gap:10px;display:grid}.market-watch-groups{gap:10px}.market-version-stocks{gap:8px}.market-version-stocks .market-watch-row{box-shadow:none}.market-watch-row{background:var(--surface);border:1px solid #39588b26;border-radius:13px;overflow:hidden;box-shadow:0 8px 20px #273f660d}.market-watch-row-toggle{width:100%;min-height:62px;color:var(--fg);text-align:left;background:0 0;border:0;border-radius:0;grid-template-columns:auto minmax(150px,1fr) minmax(90px,.5fr) auto;align-items:center;gap:12px;padding:10px 15px;display:grid}.market-watch-row-toggle:hover{background:#46699f0b}.market-watch-chevron{color:#66758c;transition:transform .16s}.market-watch-row-toggle[aria-expanded=false] .market-watch-chevron{transform:rotate(-90deg)}.market-watch-stock,.market-watch-row-price{gap:2px;min-width:0;display:grid}.market-watch-stock strong{color:#203959;font-size:16px}.market-watch-stock small,.market-watch-row-price small{color:var(--muted);font-size:11px}.market-watch-row-price strong{color:#203959;font:700 18px/1 var(--font-mono)}.market-watch-row-price .is-up{color:#b42318}.market-watch-row-price .is-down{color:#16735a}.market-live-tag{color:#5f6f86;background:var(--surface-2);white-space:nowrap;border-radius:999px;padding:4px 9px;font-size:11px}.market-live-tag.is-live{color:#16735a;background:#e0f4eb}.market-watch-row-details{border-top:1px solid var(--border);background:#f7fafdb8;gap:15px;padding:15px;display:grid}.market-watch-market-data,.market-watch-signals{gap:12px;display:grid}.market-watch-signals h3{color:#344b6d;margin:0;font-size:13px}.market-watch-signal-item{color:#53637c;background:#fff;flex-wrap:wrap;gap:5px 12px;padding:10px;font-size:11px;display:flex}.market-watch-signal-item p{color:#34445f;white-space:pre-wrap;flex-basis:100%;grid-template-columns:58px minmax(0,1fr);margin:3px 0 0;display:grid}.market-watch-signal-item p strong{color:var(--muted);font-weight:500}.market-watch-row footer{color:var(--muted);text-align:right;font-size:11px}@media (max-width:620px){.market-watch-row-toggle{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:10px 12px}.market-watch-chevron{grid-row:1/span 2}.market-live-tag{grid-area:1/3}.market-watch-row-price{grid-area:2/2}}
.market-daily-state{border:1px dashed var(--border);min-height:118px;color:var(--muted);text-align:center;border-radius:10px;place-items:center;padding:18px;display:grid}.market-daily-state.is-pending{color:#8a5a13;background:#fff8e8;gap:5px}.market-daily-state span{font-size:12px}.market-daily-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.market-average-group{gap:7px;display:grid}.market-average-group h3{color:var(--muted);margin:0;font-size:11px;font-weight:600}.market-average-group>div{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;display:grid}.market-average-group span{background:var(--surface-2);text-align:center;border-radius:8px;gap:2px;min-width:0;padding:7px 5px;display:grid}.market-average-group small{color:var(--muted);font-size:9px}.market-average-group strong{text-overflow:ellipsis;font-size:11px;overflow:hidden}@media (max-width:620px){.market-daily-metrics{grid-template-columns:1fr 1fr}.market-average-group>div{grid-template-columns:repeat(3,minmax(0,1fr))}}
.signal-tracking-app{background:radial-gradient(circle at 84% 0%, color-mix(in oklch, var(--chart-alpha) 9%, transparent), transparent 31%), var(--bg)}.signal-tracking-page{min-width:0}.signal-tracking-actions{color:var(--muted);justify-content:flex-end;font-size:12px}.signal-tracking-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.signal-tracking-summary article{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:auto 1fr;align-items:center;gap:5px 9px;padding:17px;display:grid}.signal-tracking-summary article>svg{color:var(--muted);grid-row:1/3}.signal-tracking-summary span{color:var(--muted);font-size:12px}.signal-tracking-summary strong{font:800 25px/1.1 var(--font-mono)}.signal-tracking-controls{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px;display:flex}.signal-tracking-controls label{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--muted);border-radius:10px;align-items:center;gap:8px;padding:0 11px;font-size:12px;display:flex}.signal-tracking-controls label>span{white-space:nowrap}.signal-tracking-controls input,.signal-tracking-controls select{min-width:0;color:var(--fg);background:0 0;border:0;outline:0}.signal-tracking-search{width:min(320px,100%)}.signal-tracking-search input{width:100%}.signal-tracking-list{gap:10px;transition:opacity .14s;animation:.3s cubic-bezier(.23,1,.32,1) both motion-content-in;display:grid}.signal-tracking-list.is-loading{opacity:.55}.signal-tracking-row{border:1px solid var(--border);background:var(--surface);border-radius:14px;overflow:hidden}.signal-tracking-row-toggle{width:100%;color:var(--fg);text-align:left;background:0 0;border:0;grid-template-columns:22px minmax(130px,1fr) minmax(190px,1.35fr) repeat(4,minmax(86px,.58fr)) auto;align-items:center;gap:13px;padding:15px 17px;display:grid}.signal-tracking-row-toggle:hover{background:color-mix(in oklch, var(--selected-bg), transparent 42%)}.signal-tracking-chevron{color:var(--muted);transition:transform .16s}.signal-tracking-row-toggle[aria-expanded=true] .signal-tracking-chevron{transform:rotate(180deg)}.signal-tracking-stock,.signal-tracking-signal,.signal-tracking-row-metric{gap:3px;min-width:0;display:grid}.signal-tracking-stock strong,.signal-tracking-signal strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.signal-tracking-stock small,.signal-tracking-signal small,.signal-tracking-row-metric small{color:var(--muted);font-size:11px}.signal-tracking-row-metric strong{font:750 14px/1.2 var(--font-mono)}.signal-tracking-status{border:1px solid var(--border);background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:750}.signal-tracking-app .is-up{color:var(--danger)}.signal-tracking-app .is-down{color:var(--green-ink)}
.signal-tracking-summary strong small{color:var(--muted);font-size:13px}.signal-tracking-window{gap:10px;display:grid}.signal-tracking-window>header{justify-content:space-between;align-items:end;gap:12px;display:flex}.signal-tracking-window>header div{gap:2px;display:grid}.signal-tracking-window>header span,.signal-tracking-window>header small{color:var(--muted);font-size:11px}.signal-tracking-date-nav{gap:6px;max-width:100%;padding-bottom:2px;display:flex;overflow-x:auto}.signal-tracking-date-nav button{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--muted);font:inherit;cursor:pointer;border-radius:10px;flex:none;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.signal-tracking-date-nav button.is-active{border-color:var(--selected-border);background:var(--selected-bg);color:var(--fg)}.signal-tracking-date-nav small{color:var(--muted);font-size:10px}.signal-tracking-version-stats{border:1px solid var(--border);background:var(--surface);border-radius:14px;overflow:hidden}.signal-tracking-version-stats>summary{cursor:pointer;align-items:center;gap:8px;min-height:50px;padding:0 17px;list-style:none;display:flex}.signal-tracking-version-stats>summary::-webkit-details-marker{display:none}.signal-tracking-version-stats>summary small{color:var(--muted);font-size:11px}.signal-tracking-version-stats>summary:after{color:var(--muted);content:"展开";margin-left:auto;font-size:11px}.signal-tracking-version-stats[open]>summary:after{content:"收起"}.signal-tracking-version-table-wrap{padding:0 17px 15px;overflow-x:auto}.signal-tracking-version-table{grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(105px,.7fr));align-items:center;min-width:720px;display:grid}.signal-tracking-version-table>span{color:var(--muted);padding:0 8px 8px;font-size:11px}.signal-tracking-version-row{display:contents}.signal-tracking-version-row>*{border-top:1px solid var(--border);min-width:0;padding:11px 8px}.signal-tracking-version-row>strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.signal-tracking-version-row>span{font:700 13px/1.2 var(--font-mono)}
.signal-tracking-details{border-top:1px solid var(--border);background:color-mix(in oklch, var(--surface-2), white 55%);gap:14px;padding:16px;display:grid}.signal-tracking-detail-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.signal-tracking-detail-summary .signal-tracking-row-metric{border:1px solid var(--border);background:var(--surface);border-radius:11px;padding:11px 12px}.signal-tracking-chart{border:1px solid var(--border);background:var(--surface);border-radius:12px;grid-template-rows:auto minmax(0,1fr);gap:10px;height:360px;padding:14px;display:grid}.signal-tracking-chart>header{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.signal-tracking-chart>header span{color:var(--muted);font-size:11px}.signal-tracking-chart .echarts-frame{min-height:0}.signal-tracking-chart .echarts-plot{min-height:230px}.signal-tracking-table{border:1px solid var(--border);background:var(--surface);border-radius:12px;max-height:430px}.signal-tracking-table table{min-width:900px}.signal-tracking-table td{font-variant-numeric:tabular-nums}.signal-tracking-details>footer{color:var(--muted);font-size:11px}.signal-tracking-empty{color:var(--muted);text-align:center;padding:30px 18px}.signal-tracking-pagination{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.signal-tracking-pagination div{gap:8px;display:flex}.signal-tracking-pagination button{border:1px solid var(--border);background:var(--surface);color:var(--fg);border-radius:9px;align-items:center;gap:5px;padding:8px 10px;display:inline-flex}
@media (max-width:1040px){.signal-tracking-row-toggle{grid-template-columns:22px minmax(120px,1fr) minmax(170px,1.2fr) repeat(3,minmax(80px,.6fr)) auto}.signal-tracking-row-toggle>.signal-tracking-row-metric:nth-child(7){display:none}}@media (max-width:760px){.signal-tracking-summary,.signal-tracking-detail-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.signal-tracking-window>header{flex-direction:column;align-items:start}.signal-tracking-controls,.signal-tracking-controls label,.signal-tracking-search{width:100%}.signal-tracking-controls select{flex:1}.signal-tracking-row-toggle{grid-template-columns:20px minmax(0,1fr) auto;gap:8px 10px}.signal-tracking-signal{grid-column:2/-1}.signal-tracking-row-toggle>.signal-tracking-row-metric{grid-column:auto;display:grid}.signal-tracking-row-toggle>.signal-tracking-row-metric:nth-child(7),.signal-tracking-status{display:none}.signal-tracking-row-toggle>.signal-tracking-row-metric:nth-child(4){grid-column:2}.signal-tracking-row-toggle>.signal-tracking-row-metric:nth-child(6){grid-column:2/-1}.signal-tracking-chart{height:330px;padding:11px}.signal-tracking-chart>header{display:grid}.signal-tracking-pagination{flex-direction:column;align-items:stretch}.signal-tracking-pagination div,.signal-tracking-pagination button{flex:1}.signal-tracking-pagination button{justify-content:center}}
.signal-grouped-list,.signal-group-children,.signal-group-items{display:grid}.signal-grouped-list{gap:12px}.signal-strategy-group,.signal-version-group,.signal-date-group{background:var(--surface);border:1px solid #39588b1f;border-radius:10px;min-width:0;overflow:hidden}.signal-version-group,.signal-date-group{box-shadow:none;border-radius:8px}.signal-strategy-group{border-color:#39588b4d;box-shadow:0 4px 14px #273f6614}.signal-group-children{background:#f1f6fca3;border-top:1px solid #39588b1a;gap:7px;padding:7px}.signal-group-toggle{color:#263c60;text-align:left;background:0 0;border:0;border-radius:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;width:100%;min-height:46px;padding:8px 11px;display:grid}.signal-group-toggle:hover{background:#46699f0f}.signal-group-toggle.is-static:hover{background:0 0}.signal-group-toggle>span{gap:2px;min-width:0;display:grid}.signal-group-toggle strong,.signal-group-toggle small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.signal-group-toggle strong{font-size:13px}.signal-group-toggle small{color:var(--muted);font-size:10px}.signal-group-toggle em{color:#66758c;white-space:nowrap;font-size:11px;font-style:normal}.signal-group-chevron{margin-right:7px;transition:transform .16s}.signal-group-spacer{width:22px}.signal-group-toggle[aria-expanded=false] .signal-group-chevron{transform:rotate(-90deg)}.signal-group-toggle.is-version{min-height:41px;padding-left:10px}.signal-group-toggle.is-date{color:#50627e;min-height:38px}.signal-group-items>*+*{border-top:1px solid #39588b1a}.trading-signal-groups{padding:12px}.trading-signal-item{background:#fff;grid-template-columns:minmax(96px,.45fr) minmax(260px,1.25fr) minmax(180px,.85fr) auto;align-items:center;gap:12px;min-width:0;padding:12px;display:grid}.trading-signal-facts{color:#53637c;flex-wrap:wrap;align-items:center;gap:5px 8px;font-size:11px;display:flex}.trading-signal-exit{gap:3px;min-width:0;display:grid}.trading-signal-exit small{color:var(--muted)}.trading-signal-exit span,.trading-signal-exit p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.trading-signal-exit p{color:var(--muted);font-size:11px}.trading-signal-action{justify-self:end}@media (max-width:620px){.signal-group-toggle{min-height:44px}.signal-group-toggle em{font-size:10px}.trading-signal-item{grid-template-columns:1fr}.trading-signal-action{justify-self:start}}
.industry-liquidity-page{gap:18px;min-width:0;display:grid}.industry-data-date{color:var(--fg);text-align:right;gap:2px;font-weight:600;display:grid}.industry-data-date small{color:var(--muted);font-weight:400}.industry-liquidity-error{border:1px solid var(--border);color:var(--danger);background:var(--surface);border-color:color-mix(in oklch, var(--danger) 35%, var(--border));border-radius:12px;padding:11px 14px}.industry-liquidity-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.industry-liquidity-stat{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:6px;padding:18px;display:grid}.industry-liquidity-stat span,.industry-liquidity-stat small{color:var(--muted)}.industry-liquidity-stat strong{font:700 28px/1 var(--font-mono)}.industry-liquidity-filters{border:1px solid var(--border);background:var(--surface);border-radius:14px;align-items:end;gap:10px;padding:14px;display:flex}.industry-liquidity-filters>label:not(.search){min-width:170px;color:var(--muted);gap:5px;font-size:12px;display:grid}.industry-liquidity-filters select{border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--fg);border-radius:10px;padding:0 34px 0 11px}.industry-liquidity-focus{grid-template-columns:minmax(0,1.7fr) minmax(300px,.8fr);gap:14px;min-width:0;display:grid}.industry-liquidity-chart{height:440px}.industry-liquidity-table tbody tr{cursor:pointer}.industry-liquidity-table td:first-child strong,.industry-liquidity-table td:first-child small{display:block}.industry-liquidity-table td:first-child small{color:var(--muted);margin-top:3px}.industry-liquidity-mobile-list{display:none}
.industry-progress{--progress-color:var(--info);background:radial-gradient(circle at 94% 0%, color-mix(in oklch, var(--progress-color) 12%, transparent), transparent 34%), var(--surface);padding:22px;position:relative;overflow:hidden}.industry-progress.is-succeeded{--progress-color:var(--green)}.industry-progress.is-failed{--progress-color:var(--danger)}.industry-progress.is-waiting{--progress-color:var(--warn)}.industry-progress-heading{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:13px;display:grid}.industry-progress-icon{width:40px;height:40px;color:var(--progress-color);background:color-mix(in oklch, var(--progress-color) 12%, var(--surface));border-radius:12px;place-items:center;display:grid}.industry-progress-heading h2{margin:3px 0 1px;font-size:18px}.industry-progress-heading p{color:var(--muted);margin:0}.industry-progress-heading>strong{color:var(--progress-color);font:700 24px/1 var(--font-mono)}.industry-progress-bar{background:var(--surface-2);border-radius:999px;height:7px;margin-top:20px;overflow:hidden}.industry-progress-bar span{border-radius:inherit;background:var(--progress-color);height:100%;transition:width .32s;display:block}.industry-progress-steps{grid-template-columns:repeat(5,minmax(0,1fr));margin:13px 0 0;padding:0;list-style:none;display:grid}.industry-progress-steps li{color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.industry-progress-steps i{background:var(--border);border-radius:50%;flex:none;width:7px;height:7px}.industry-progress-steps .is-current,.industry-progress-steps .is-complete{color:var(--fg);font-weight:600}.industry-progress-steps .is-current i,.industry-progress-steps .is-complete i{background:var(--progress-color)}.industry-progress footer{color:var(--muted);flex-wrap:wrap;gap:7px 20px;margin-top:17px;font-size:12px;display:flex}.industry-progress footer strong{color:var(--fg);font-weight:600}.industry-progress footer em{margin-left:auto;font-style:normal}.industry-progress details{color:var(--danger);margin-top:14px;font-size:12px}.industry-progress summary{cursor:pointer;font-weight:600}.industry-progress pre{white-space:pre-wrap;overflow-wrap:anywhere;background:color-mix(in oklch, var(--danger) 7%, var(--surface));max-height:150px;font:12px/1.55 var(--font-mono);border-radius:8px;margin:8px 0 0;padding:10px;overflow:auto}@media (max-width:720px){.industry-progress{padding:17px}.industry-progress-heading{grid-template-columns:auto minmax(0,1fr)}.industry-progress-heading>strong{grid-column:2;font-size:20px}.industry-progress-steps{grid-template-columns:1fr;gap:7px}.industry-progress footer,.industry-progress footer em{width:100%;margin-left:0;display:grid}}
.industry-section-tabs{border:1px solid var(--border);background:var(--surface);border-radius:15px;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:6px;display:grid}.industry-section-tabs button{min-width:0;color:var(--muted);text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;gap:2px;padding:11px 13px;display:grid}.industry-section-tabs button:hover{background:var(--surface-2)}.industry-section-tabs button.is-active{border-color:var(--selected-border);background:var(--selected-bg);color:var(--fg)}.industry-section-tabs strong,.industry-section-tabs span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.industry-section-tabs span{font-size:11px}.industry-tab-panel{gap:16px;min-width:0;display:grid}.industry-awaiting{color:var(--muted);padding:24px}@media (max-width:900px){.industry-section-tabs{grid-template-columns:1fr 1fr}}@media (max-width:520px){.industry-section-tabs{grid-template-columns:1fr}}
.regime-toolbar{justify-content:space-between;align-items:end;gap:18px;padding:18px;display:flex}.regime-toolbar h2,.regime-toolbar p{margin:3px 0 0}.regime-toolbar p{color:var(--muted)}.regime-toolbar label{min-width:min(360px,100%);color:var(--muted);gap:5px;font-size:12px;display:grid}.regime-toolbar select{border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--fg);border-radius:10px;padding:0 12px}.regime-summary,.regime-evidence{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.regime-summary article,.regime-evidence article{border:1px solid var(--border);background:var(--surface);border-radius:13px;gap:6px;padding:15px;display:grid}.regime-summary span,.regime-evidence span{color:var(--muted);font-size:12px}.regime-summary strong{font:700 19px/1.2 var(--font-mono)}.regime-evidence strong{font:700 16px/1.2 var(--font-mono)}.regime-chart-panel{min-width:0;padding:18px}.regime-chart{height:520px}@media (max-width:1050px){.regime-summary,.regime-evidence{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:720px){.regime-toolbar{flex-direction:column;align-items:stretch}.regime-summary,.regime-evidence{grid-template-columns:1fr 1fr}.regime-chart{height:400px}}
.research-cards{grid-template-columns:1fr 1fr;gap:12px;display:grid}.research-card{align-content:start;gap:10px;padding:20px;display:grid}.research-card h2,.research-card p,.research-card ul,.research-card dl{margin:0}.research-card p,.research-card li{color:var(--muted)}.research-card ul{gap:5px;padding-left:19px;display:grid}.research-card dl{background:var(--surface-2);border-radius:9px;gap:6px;padding:10px;display:grid}.research-card dl div{grid-template-columns:110px minmax(0,1fr);gap:8px;display:grid}.research-card dt{color:var(--muted)}.research-card dd{overflow-wrap:anywhere;margin:0}.research-card footer{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;gap:10px;padding-top:8px;font-size:11px;display:flex}.research-card footer strong{color:var(--info);text-align:right}.research-evaluation{min-width:0;padding:18px}.research-category-tabs{flex-wrap:wrap;gap:7px;margin-bottom:14px;display:flex}.research-category-tabs button{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;gap:7px;padding:7px 11px;display:inline-flex}.research-category-tabs button.is-active{border-color:var(--selected-border);background:var(--selected-bg);color:var(--fg)}.research-category-tabs small{color:var(--info)}@media (max-width:820px){.research-cards{grid-template-columns:1fr}}.research-report summary{cursor:pointer;font-weight:750}.research-report pre{color:var(--muted);white-space:pre-wrap;margin:18px 0 0;font-family:inherit;line-height:1.7;overflow:auto}
.audit-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.audit-summary article{border:1px solid var(--border);background:var(--surface);border-radius:13px;gap:6px;min-width:0;padding:15px;display:grid}.audit-summary span,.audit-artifacts span,.audit-steps span{color:var(--muted);font-size:12px}.audit-summary strong{text-overflow:ellipsis;font:700 14px/1.4 var(--font-mono);overflow:hidden}.audit-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.audit-grid>article,.audit-runs{min-width:0;padding:18px}.audit-steps{gap:7px;margin:0;padding:0;list-style:none;display:grid}.audit-steps li{background:var(--surface-2);border-radius:9px;grid-template-columns:28px minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:9px;display:grid}.audit-steps i{background:var(--green-bg);width:26px;height:26px;color:var(--green-ink);border-radius:50%;place-items:center;font-style:normal;font-weight:700;display:grid}.audit-steps div{display:grid}.audit-steps code,.audit-artifacts code,.audit-runs code{color:var(--muted);font-size:11px}.audit-steps em{color:var(--green-ink);font-size:11px;font-style:normal;font-weight:700}.audit-artifacts{gap:7px;display:grid}.audit-artifacts>div{border:1px solid var(--border);border-radius:9px;gap:3px;padding:10px;display:grid}.run-status{font-size:11px;font-weight:700}.run-status.is-succeeded{color:var(--green-ink)}.run-status.is-failed{color:var(--danger)}@media (max-width:1000px){.audit-summary{grid-template-columns:1fr 1fr}.audit-grid{grid-template-columns:1fr}}.audit-reconciliation{border:1px solid color-mix(in srgb, var(--border) 76%, transparent);background:var(--surface);border-radius:18px;justify-content:space-between;align-items:center;gap:24px;padding:18px 22px;display:flex}.audit-reconciliation.is-passed{border-color:color-mix(in srgb, #21a179 38%, var(--border));background:color-mix(in srgb, #e9f8f2 62%, var(--surface))}.audit-reconciliation.is-failed{border-color:color-mix(in srgb, #c8584b 44%, var(--border))}.audit-reconciliation>div{gap:4px;display:grid}.audit-reconciliation span,.audit-reconciliation dt{color:var(--muted);font-size:12px}.audit-reconciliation strong{font-size:20px}.audit-reconciliation dl{gap:24px;margin:0;display:flex}.audit-reconciliation dl div{gap:3px;display:grid}.audit-reconciliation dd{margin:0;font-weight:700}@media (max-width:760px){.audit-reconciliation,.audit-reconciliation dl{flex-direction:column;align-items:stretch}.audit-reconciliation dl{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}
.industry-liquidity-detail{align-content:start}.industry-liquidity-tags{flex-wrap:wrap;gap:7px;padding:0 18px;display:flex}.industry-liquidity-tags span{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:4px 9px;font-size:12px}.industry-liquidity-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:16px 18px;display:grid}.industry-liquidity-metrics div{background:var(--surface-2);border-radius:10px;gap:3px;padding:10px;display:grid}.industry-liquidity-metrics span,.industry-confirmation dt{color:var(--muted);font-size:12px}.industry-liquidity-metrics strong{font-family:var(--font-mono)}.industry-confirmation{gap:8px;margin:0;padding:0 18px;display:grid}.industry-confirmation div{justify-content:space-between;gap:12px;display:flex}.industry-confirmation dd{margin:0;font-weight:600}.industry-risk-interpretation{border-left:3px solid var(--fg);background:var(--surface-2);color:var(--muted);margin:16px 18px 18px;padding:12px}.risk-action{border-radius:999px;width:max-content;padding:4px 8px;font-size:12px;font-weight:650;display:inline-flex}.action-avoid,.action-strong_deweight{background:color-mix(in oklch, var(--danger) 12%, white);color:var(--danger)}.action-deweight,.action-mild_deweight{background:color-mix(in oklch, var(--warn) 16%, white);color:#884d00;color:lab(39.2438% 23.3782 59.0124)}.action-normal{background:var(--green-bg);color:var(--green-ink)}
.echarts-frame{grid-template-rows:32px minmax(0,1fr);width:100%;min-width:0;height:100%;min-height:0;display:grid}.echarts-plot,.echarts-canvas{width:100%;min-width:0;height:100%;min-height:0;position:relative}.echarts-toolbar{justify-content:flex-end;align-items:flex-start;display:flex}.echarts-toolbar button{border:1px solid var(--border);background:color-mix(in oklch, var(--surface) 92%, transparent);color:var(--muted);cursor:pointer;border-radius:8px;padding:4px 9px;font-size:11px}.echarts-toolbar button[aria-pressed=true]{border-color:var(--info);color:var(--info)}.tactics-chart-tooltip{overscroll-behavior:contain;box-sizing:border-box!important;z-index:100!important;max-width:calc(100vw - 24px)!important;max-height:min(60dvh,440px)!important;overflow:auto!important}.industry-chart-loading-frame{min-width:0;position:relative}.industry-chart-loading-frame>.industry-liquidity-chart-panel{height:100%}.industry-chart-loading{z-index:3;background:color-mix(in oklch, var(--surface) 72%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:14px;place-items:center;display:grid;position:absolute;inset:0}.industry-chart-loading .loading-pill{box-shadow:var(--shadow)}
@media (max-width:1100px){.industry-liquidity-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.industry-liquidity-focus{grid-template-columns:1fr}}@media (max-width:720px){.industry-liquidity-page .topbar,.industry-liquidity-filters{flex-direction:column;align-items:stretch}.industry-data-date{text-align:left}.industry-liquidity-summary{grid-template-columns:1fr 1fr}.industry-liquidity-stat{padding:14px}.industry-liquidity-filters>label:not(.search){min-width:0}.industry-liquidity-chart{height:360px}.industry-liquidity-table{display:none}.industry-liquidity-mobile-list{gap:8px;padding:0 14px 14px;display:grid}.industry-liquidity-mobile-list button{border:1px solid var(--border);background:var(--surface);text-align:left;border-radius:11px;justify-content:space-between;gap:12px;padding:12px;display:flex}.industry-liquidity-mobile-list button.is-selected{border-color:var(--selected-border);background:var(--selected-bg)}.industry-liquidity-mobile-list button>span{gap:4px;display:grid}.industry-liquidity-mobile-list button>span:last-child{text-align:right;justify-items:end}.industry-liquidity-mobile-list small{color:var(--muted)}}
.market-rank-app{background:radial-gradient(circle at 85% 0%, color-mix(in oklch, var(--info) 8%, transparent), transparent 30%), var(--bg)}.market-rank-page{min-width:0}.market-rank-date{color:var(--text);text-align:right;gap:2px;font-size:13px;font-weight:750;display:grid}.market-rank-date small{color:var(--muted);font-size:11px;font-weight:500}.market-rank-error{border:1px solid color-mix(in oklch, var(--danger) 35%, var(--border));background:color-mix(in oklch, var(--danger) 7%, var(--surface));color:var(--danger);border-radius:12px;padding:10px 12px;font-size:12px}.market-rank-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.market-rank-summary article{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:8px;padding:18px;display:grid}.market-rank-summary span{color:var(--muted);font-size:12px}.market-rank-summary strong{font-family:var(--font-mono);font-size:28px}.market-rank-tabs{border:1px solid var(--border);background:var(--surface);border-radius:15px;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:6px;display:grid}.market-rank-tabs button{color:var(--muted);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:11px;gap:3px;padding:11px 13px;display:grid}.market-rank-tabs button span{color:var(--muted);font-size:11px}.market-rank-tabs button.is-active{border-color:var(--selected-border);background:var(--selected-bg);color:var(--fg)}.market-rank-tabs button.is-active span{color:var(--muted)}.market-rank-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.market-rank-control-group{border:1px solid var(--border);background:var(--surface);border-radius:999px;gap:4px;padding:3px;display:inline-flex}.market-rank-control-group button{border:0;padding-inline:10px}.market-rank-controls label{border:1px solid var(--border);background:#fff;border-radius:999px;align-items:center;gap:8px;min-width:min(320px,100%);padding:8px 12px;display:flex}.market-rank-controls input{background:0 0;border:0;outline:0;width:100%}.market-rank-controls button{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:#fff;border-radius:999px;padding:8px 11px;font-size:12px;font-weight:700}.market-rank-controls button.is-active{border-color:var(--selected-border);background:var(--selected-bg);color:var(--fg)}.market-rank-controls button:disabled{cursor:wait;opacity:.55}.market-rank-panel{padding:0;overflow:hidden}.market-rank-empty{color:var(--muted);text-align:center;gap:6px;padding:34px 20px;display:grid}.market-rank-empty strong{color:var(--text)}@media (max-width:760px){.market-rank-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.market-rank-tabs{grid-template-columns:1fr}.market-rank-date{text-align:left}.market-rank-controls label{width:100%}}
.market-rank-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.market-rank-overview-chart{grid-template-rows:auto minmax(0,1fr);min-width:0;height:360px;padding:16px;display:grid}.market-rank-overview-chart h2{margin:0;font-size:16px}.market-rank-controls label,.market-rank-control-group,.market-rank-controls>button{box-sizing:border-box;height:38px}.market-rank-controls label{padding-block:0}.market-rank-controls input{height:100%;font-size:12px;line-height:1}.market-rank-control-group button{height:30px;padding-block:0}@media (max-width:900px){.market-rank-chart-grid{grid-template-columns:1fr}}
.market-rank-table table{min-width:960px}.market-rank-table th,.market-rank-table td{vertical-align:top}.market-rank-table td small{color:var(--muted);margin-top:3px;font-size:11px;display:block}.market-rank-score{color:var(--danger);font-family:var(--font-mono);font-size:20px;font-weight:850}.rank-change,.rank-state{color:#667085;background:#f2f4f7;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:800;display:inline-flex}.rank-change.is-up,.market-price-change.is-up{color:var(--danger)}.rank-change.is-down,.market-price-change.is-down{color:var(--green-ink)}.rank-state.is-risk{color:var(--danger)}.industry-rank-link{color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.industry-rank-link:hover strong{color:#175cd3}.market-rank-tags{flex-wrap:wrap;gap:4px;max-width:220px;display:flex}.market-rank-tags span,.market-rank-modal-summary span{color:#526173;background:#f8fafc;border:1px solid #e5e7eb;border-radius:999px;padding:3px 7px;font-size:11px}.market-rank-modal{width:min(1280px,96vw)}.market-rank-modal-body{gap:12px;display:grid}.market-rank-modal-summary{flex-wrap:wrap;gap:7px;display:flex}.market-rank-trend{border:1px solid var(--border);border-radius:14px;grid-template-rows:auto minmax(0,1fr);gap:10px;height:330px;padding:14px;display:grid}.market-rank-trend header{justify-content:space-between;gap:12px;display:flex}.market-rank-trend header span{color:var(--muted);font-size:12px}.market-rank-view-note{border-bottom:1px solid var(--border);background:var(--selected-bg);align-items:baseline;gap:10px;padding:12px 16px;display:flex}.market-rank-view-note span{color:var(--muted);font-size:12px}
.market-state-app{background:radial-gradient(circle at 90% 0%, color-mix(in oklch, var(--info) 9%, transparent), transparent 32%), var(--bg)}.market-state-page{min-width:0}.market-state-date{color:var(--text);text-align:right;gap:2px;font-size:13px;font-weight:750;display:grid}.market-state-date small{color:var(--muted);font-size:11px;font-weight:500}.market-state-error{border:1px solid color-mix(in oklch, var(--danger) 35%, var(--border));background:color-mix(in oklch, var(--danger) 7%, var(--surface));color:var(--danger);border-radius:12px;padding:10px 12px;font-size:12px}.market-state-empty{color:var(--muted);text-align:center;gap:6px;padding:42px 20px;display:grid}.market-state-empty strong{color:var(--text)}.market-state-hero{background:linear-gradient(115deg, color-mix(in oklch, var(--info) 10%, var(--surface)), var(--surface));justify-content:space-between;align-items:center;padding:24px 28px;display:flex;overflow:hidden}.market-state-hero>div:first-child{gap:4px;display:grid}.market-state-hero span,.market-state-hero p{color:var(--muted);font-size:12px}.market-state-hero h2{color:var(--text);margin:0;font-size:clamp(28px,4vw,44px)}.market-state-effective{text-align:right;gap:5px;display:grid}.market-state-effective strong{color:var(--text);font-family:var(--font-mono);font-size:18px}.market-state-effective em{color:var(--danger);font-size:11px;font-style:normal;font-weight:750}.market-state-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.market-state-summary article{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:7px;padding:17px 18px;display:grid}.market-state-summary span{color:var(--muted);font-size:12px}.market-state-summary strong{font-family:var(--font-mono);font-size:27px}.market-state-chart-grid,.market-state-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.market-state-chart-panel{min-width:0;padding:18px}.market-state-chart{height:330px}.market-state-allocation,.market-state-scores,.market-breadth-panel,.market-state-timeline{padding:18px}.market-state-allocation-bar{background:var(--surface-2);border-radius:999px;height:18px;display:flex;overflow:hidden}.market-state-allocation-bar span{min-width:2px}.market-state-allocation-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 18px;margin-top:18px;display:grid}.market-state-allocation-list div{grid-template-columns:9px 1fr auto;align-items:center;gap:8px;font-size:12px;display:grid}.market-state-allocation-list i{border-radius:50%;width:8px;height:8px}.market-state-allocation-list span{color:var(--muted)}.market-state-allocation-list strong{font-family:var(--font-mono)}
.market-state-score-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.market-state-score-grid article{gap:7px;display:grid}.market-state-score-grid article>div{justify-content:space-between;font-size:12px;display:flex}.market-state-score-grid span{color:var(--muted)}.market-state-score-grid strong{font-family:var(--font-mono)}.market-state-score-grid i,.market-breadth-grid i{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.market-state-score-grid i span,.market-breadth-grid i span{border-radius:inherit;background:var(--info);height:100%;display:block}.market-breadth-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.market-breadth-grid article{border:1px solid var(--border);border-radius:12px;gap:8px;padding:13px;display:grid}.market-breadth-grid article>div{justify-content:space-between;gap:8px;display:flex}.market-breadth-grid strong,.market-breadth-grid span{font-size:12px}.market-breadth-grid span{color:var(--info);font-family:var(--font-mono);font-weight:750}.market-breadth-grid small{color:var(--muted);font-size:10px}.market-state-timeline>div:last-child{grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;display:grid}.market-state-timeline article{border-top:4px solid var(--border);background:var(--surface-2);text-align:center;border-radius:5px;gap:3px;padding:9px 7px;display:grid}.market-state-timeline article span,.market-state-timeline article small{color:var(--muted);font-size:10px}.market-state-timeline article strong{font-size:11px}.market-state-timeline .is-expansion{border-color:#2f9d69}.market-state-timeline .is-growth{border-color:#7064ca}.market-state-timeline .is-rebound{border-color:#3389b9}.market-state-timeline .is-bifurcated{border-color:#ce8b32}.market-state-timeline .is-weak{border-color:#9b8890}.market-state-timeline .is-defensive{border-color:#c75d55}
@media (max-width:980px){.market-breadth-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.market-state-timeline>div:last-child{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (max-width:760px){.market-state-date{text-align:left}.market-state-hero{flex-direction:column;align-items:flex-start;gap:20px;padding:20px}.market-state-effective{text-align:left}.market-state-summary,.market-state-chart-grid,.market-state-detail-grid{grid-template-columns:1fr}.market-state-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.market-state-chart{height:300px}.market-state-timeline{overflow-x:auto}.market-state-timeline>div:last-child{grid-template-columns:repeat(12,minmax(52px,1fr));min-width:720px}}@media (max-width:480px){.market-state-summary,.market-state-score-grid,.market-state-allocation-list,.market-breadth-grid{grid-template-columns:1fr}}
.sector-flow-app{background:radial-gradient(circle at 82% 0%, #d1495b12, transparent 30%), var(--bg)}.sector-flow-page{width:min(1680px,100%);min-width:0;margin:0 auto}.sector-flow-status{color:var(--text);text-align:right;gap:2px;font-size:13px;font-weight:750;display:grid}.sector-flow-status small{color:var(--muted);font-size:11px;font-weight:500}.sector-flow-error{border:1px solid color-mix(in oklch, var(--danger) 35%, var(--border));background:color-mix(in oklch, var(--danger) 7%, var(--surface));color:var(--danger);border-radius:12px;padding:10px 12px;font-size:12px}.sector-flow-empty{border:1px solid var(--border);background:var(--surface);color:var(--muted);text-align:center;border-radius:14px;gap:6px;padding:54px 20px;display:grid}.sector-flow-empty strong{color:var(--fg);font-size:16px}.sector-flow-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.sector-flow-summary article{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:8px;padding:16px;display:grid}.sector-flow-summary span{color:var(--muted);font-size:12px}.sector-flow-summary strong{font-family:var(--font-mono);font-size:clamp(17px,2vw,24px)}.sector-flow-controls{border:1px solid var(--border);background:var(--surface);border-radius:14px;gap:12px;padding:12px;display:grid}.sector-flow-selectors,.sector-flow-playback{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sector-flow-selectors{justify-content:space-between}.sector-flow-controls select,.sector-flow-controls input[type=date],.sector-flow-controls button{border:1px solid var(--border);min-height:34px;color:var(--fg);background:#fff;border-radius:9px;padding:0 10px;font-size:12px}.sector-flow-controls button{justify-content:center;align-items:center;gap:5px;display:inline-flex}.sector-flow-controls button:disabled{cursor:wait;opacity:.65}.sector-flow-controls .sector-flow-force-refresh{border-color:color-mix(in oklch, var(--info) 35%, var(--border));color:var(--info)}.sector-flow-toggle{border:1px solid var(--border);border-radius:10px;gap:3px;padding:3px;display:inline-flex}.sector-flow-toggle button{border:0}.sector-flow-toggle button.is-active{background:var(--fg);color:#fff}.sector-flow-playback strong{font-family:var(--font-mono);margin-left:auto;font-size:18px}.sector-flow-slider{width:100%;accent-color:var(--fg)}
.sector-flow-chart-panel{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-rows:auto minmax(0,1fr);gap:8px;height:clamp(560px,55vw,720px);padding:12px;display:grid}.sector-flow-chart-header,.sector-flow-chart-switch,.sector-flow-chart-switch button{align-items:center;display:flex}.sector-flow-chart-header{justify-content:space-between;gap:12px}.sector-flow-chart-header>strong{font-size:13px}.sector-flow-chart-switch{border:1px solid var(--border);border-radius:9px;gap:3px;padding:3px}.sector-flow-chart-switch button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;gap:4px;padding:5px 8px;font-size:11px}.sector-flow-chart-switch button.is-active{background:var(--fg);color:#fff}.sector-flow-chart-body{min-width:0;min-height:0}.fund-flow-bubble-stage,.fund-flow-bubble-canvas{width:100%;height:100%}.fund-flow-bubble-stage{background:#07111f;border-radius:10px;min-width:0;min-height:0;position:relative;overflow:hidden}.fund-flow-bubble-canvas{touch-action:none;display:block}.fund-flow-bubble-heading{z-index:2;color:#f5f7fa;pointer-events:none;grid-template-columns:minmax(150px,1fr) auto minmax(150px,1fr);align-items:start;gap:12px;padding:10px 14px;display:grid;position:absolute;inset:0 0 auto}.fund-flow-bubble-heading>strong{font-size:15px}.fund-flow-bubble-legend{color:#c4ced9;align-items:center;gap:6px;padding-top:3px;font-size:10px;display:flex}.fund-flow-bubble-legend i{border-radius:50%;width:7px;height:7px}.fund-flow-bubble-legend .is-in{background:#e65055}.fund-flow-bubble-legend .is-out{background:#31a866;margin-left:8px}.fund-flow-bubble-index{justify-items:end;display:grid}.fund-flow-bubble-index b{font-size:24px;line-height:26px}.fund-flow-bubble-index small{color:#b8c4d1;font-weight:700}.fund-flow-bubble-index .is-up{color:#ef6262}.fund-flow-bubble-index .is-down{color:#50bf78}.fund-flow-bubble-tooltip{z-index:4;color:#fff;pointer-events:none;background:#050d18eb;border:1px solid #ffffff2e;border-radius:7px;gap:2px;padding:6px 8px;font-size:11px;display:grid;position:absolute;transform:translate(12px,12px)}@media (max-width:700px){.sector-flow-chart-panel{height:520px}.fund-flow-bubble-heading{grid-template-columns:1fr 1fr}.fund-flow-bubble-legend{display:none}}
.sector-flow-rankings{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.sector-flow-ranking-list{overscroll-behavior:contain;border:1px solid var(--border);background:var(--surface);border-radius:14px;max-height:min(70vh,680px);padding:0 14px 14px;overflow-y:auto}.sector-flow-ranking-list h3{z-index:2;background:var(--surface);margin:0;padding:14px 0 10px;font-size:14px;position:sticky;top:0}.sector-flow-ranking-list h3 small{color:var(--muted);margin-left:4px;font-size:11px;font-weight:500}.sector-flow-ranking-list article{content-visibility:auto;contain-intrinsic-block-size:38px;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:38px;display:grid}.sector-flow-rank{color:var(--muted);font:11px var(--font-mono)}.sector-flow-ranking-list article div{gap:4px;min-width:0;display:grid}.sector-flow-ranking-list article strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.sector-flow-ranking-list i{background:var(--info);border-radius:999px;height:3px;display:block}.sector-flow-ranking-list b{font:12px var(--font-mono)}.sector-flow-ranking-list b.in{color:var(--danger)}.sector-flow-ranking-list b.out{color:var(--green-ink)}.sector-flow-ranking-list p{color:var(--muted);font-size:12px}
