:root{--bg:#0f1115;--panel:#171a21;--border:#262b36;--text:#e6e9ef;--muted:#8b93a3;--accent:#4f8cff;--ok:#3fb950;--err:#f85149;--fs-meta:11px;--fs-body:12px;--fs-title:14px;--fs-brand:19px;--ctl-h:22px;--ctl-line:16px;--ctl-pad-v:2px;--ctl-pad-h:6px;--ctl-pad-h-mini:8px;--ctl-radius:4px;--ws-region-pad-v:2px;--ws-region-pad-h:8px;--ws-gap:2px}[data-hide-dev="1"] .metric-result-id,[data-hide-dev="1"] .status-panel,[data-hide-dev="1"] .ws-seed{display:none}*{box-sizing:border-box}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-header{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:linear-gradient(180deg,#0e1626,#0a101c);border-bottom:1px solid #16233c;box-shadow:inset 0 1px 0 rgba(79,140,255,.35)}.status-panel .spacer{flex:1 1}.status-panel{position:relative;z-index:1;display:flex;gap:.9rem;align-items:center;flex-wrap:nowrap;padding:0;font-size:var(--fs-meta);color:var(--muted)}.status-item{display:inline-flex;align-items:center;gap:.35rem}.status-panel .dot{width:.6rem;height:.6rem;border-radius:999px;background:var(--muted)}.status-panel .dot.ok{background:var(--ok);box-shadow:0 0 5px rgba(63,185,80,.55)}.status-panel .dot.err{background:var(--err)}.status-panel .dot.pending{background:var(--muted);opacity:.6}.status-panel button{background:transparent;border:1px solid #223250;color:var(--muted);border-radius:4px;padding:.12rem .55rem;font-size:var(--fs-meta)}.status-panel button:hover{color:var(--text);border-color:var(--accent)}main{max-width:960px;margin:0 auto;padding:1.5rem 1.25rem 4rem}main:has(>.workspace){max-width:none;padding:2px 0 4px}h1{font-size:1.5rem}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;margin:1rem 0}.muted{color:var(--muted)}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:var(--fs-body);border:1px solid var(--border)}.badge.ok{color:var(--ok);border-color:var(--ok)}.badge.err{color:var(--err);border-color:var(--err)}.badge.info{color:var(--muted);border-color:var(--border)}pre{overflow-x:auto;background:#0b0d11;border:1px solid var(--border);border-radius:6px;padding:.75rem;font-size:.8rem}button{font:inherit;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:.4rem .9rem;cursor:pointer}button.secondary{background:transparent}button.secondary,input,select{border:1px solid var(--border);color:var(--text)}input,select{font:inherit;background:#0b0d11;border-radius:6px;padding:.35rem .5rem}button:disabled{opacity:.5;cursor:default}.chart-nav-strip button,.chart-nav-strip input[type=date],.chart-nav-strip select,.composer-modifier input,.composer-modifier select,.composer-strip input,.composer-strip select,.strategy-info-row button,.strategy-info-row input,.strategy-info-row select,.tm-add-leg,.tm-field input,.tm-field select,.tree-select-trigger{box-sizing:border-box;height:var(--ctl-h);min-height:var(--ctl-h);font-size:var(--fs-body);line-height:var(--ctl-line);padding:var(--ctl-pad-v) var(--ctl-pad-h);border-radius:var(--ctl-radius)}.composer-mini{height:var(--ctl-h);min-height:var(--ctl-h);font-size:var(--fs-body);line-height:var(--ctl-line);padding:var(--ctl-pad-v) var(--ctl-pad-h-mini)}.action-row button,.composer-mini{box-sizing:border-box;border-radius:var(--ctl-radius)}.action-row button{height:30px;padding:var(--ctl-pad-v) 12px}.ws-sidebar .filter-row button,.ws-sidebar select{font-size:var(--fs-body);padding:.15rem .3rem}.button-row{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.6rem}.strategy-list{width:100%;border-collapse:collapse;font-size:var(--fs-body)}.strategy-list td,.strategy-list th{text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--border)}.strategy-list th{color:var(--muted);font-weight:600}.strategy-list td .badge{margin-left:.5rem}.workspace{display:flex;align-items:flex-start;gap:6px;padding:0 .9rem 2px}.ws-main-col{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:var(--ws-gap)}.ws-right-col{flex:0 0 clamp(350px,27%,430px);gap:4px}.ws-chart-col,.ws-right-col{min-width:0;display:flex;flex-direction:column}.ws-chart-col{gap:var(--ws-gap)}.ws-sidebar{display:flex;flex-direction:column;gap:4px;min-width:0}.workspace,[data-region=spec-preview] pre{font-size:var(--fs-body)}.ws-work-col{display:flex;flex-direction:column;gap:var(--ws-gap);min-width:0}.ws-trades{min-width:0}.ws-region{border:1px solid var(--border);background:var(--panel);padding:var(--ws-region-pad-v) var(--ws-region-pad-h)}.ws-region-head{display:flex;align-items:baseline;gap:.5rem;margin-bottom:1px}.ws-region-head h2{margin:0;font-size:var(--fs-title)}.ws-subregion{margin-top:3px;border-top:1px dashed var(--border);padding-top:3px}.ws-header{overflow:hidden;justify-content:space-between;gap:1rem;min-height:2.5rem;padding:.25rem 1.25rem}.ws-header,.ws-header-brand{position:relative;display:flex;align-items:center}.ws-header-brand{z-index:1;gap:.85rem;white-space:nowrap}.ws-header-brand .brand{font-weight:600;font-size:var(--fs-brand);color:#f2f5fa;text-transform:uppercase;letter-spacing:.42em;margin-right:-.42em}.brand-mark{display:block;width:30px;height:30px;filter:drop-shadow(0 0 7px rgba(47,123,255,.4))}.brand-divider{width:1px;height:1.5rem;background:linear-gradient(180deg,transparent,rgba(139,147,163,.55),transparent)}.ws-header-wave{position:absolute;top:0;right:0;height:100%;width:46%;pointer-events:none;opacity:.8;-webkit-mask-image:linear-gradient(90deg,transparent,#000 35%);mask-image:linear-gradient(90deg,transparent,#000 35%)}.chart-host{width:100%;height:460px}.equity-host{width:100%;height:56px}.equity-host-wrap{position:relative;overflow:hidden;isolation:isolate}.equity-focus-line{position:absolute;top:0;height:100%;width:2px;background:rgba(100,130,220,.7);z-index:2;pointer-events:none}[data-region=equity-curve] p.muted,[data-region=main-chart] p.muted{margin:.15rem 0;font-size:var(--fs-meta)}.chart-meta-strip{display:flex;align-items:center;gap:.6rem;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;margin:0 0 2px;font-size:var(--fs-meta)}.chart-meta-inline{display:inline-flex;align-items:center;gap:.25rem;line-height:1.25}.chart-nav-strip{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;font-size:var(--fs-body);overflow-x:auto}.chart-nav-strip>:not(.lower-scale-chips){flex-shrink:0}.chart-nav-strip>.lower-scale-chips{flex:0 1 auto;min-width:0;overflow-x:auto}.chart-nav-jump-compact{width:7.25rem;flex:0 0 auto;color-scheme:dark}.chart-nav-jump-compact::-webkit-calendar-picker-indicator{margin-left:.35rem;cursor:pointer}@supports (-moz-appearance:none){.chart-nav-jump-compact{width:8.125rem}}.equity-chip{color:var(--ok);font-weight:700}.lower-scale-chips{display:inline-flex;gap:.3rem;align-items:center}.lower-scale-chip{padding:0 .4rem;font-size:var(--fs-meta);line-height:1.2;border-radius:999px;background:transparent;border:1px solid var(--border);color:var(--muted);cursor:pointer}.lower-scale-chip.active{border-color:var(--accent);color:var(--accent);font-weight:600}.ws-seed{display:inline-flex;gap:.3rem;align-items:center;flex-shrink:0}.ws-seed,.ws-seed input{font-size:var(--fs-meta)}.ws-seed input{padding:.05rem .35rem}.ws-seed button{padding:.1rem .5rem;font-size:var(--fs-meta)}.trades-frame{position:relative}.trades-loading-overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;background:rgba(11,13,17,.55);color:var(--muted);font-size:var(--fs-body);pointer-events:none}.trades-table-wrap{overflow:auto;max-height:clamp(430px,58vh,680px)}.trades-table{width:100%;font-size:var(--fs-body);white-space:nowrap}.trades-table td,.trades-table th{padding:2px}.trades-table td.trade-num-group-a{color:var(--text)}.trades-table td.trade-num-group-b{color:var(--accent)}.trades-table td.trade-time{white-space:normal;max-width:4.9rem}.trades-table td.trade-time span{white-space:nowrap}.trades-table tbody tr.trade-row{cursor:pointer}.trades-table tbody tr.trade-row:hover{background:rgba(79,140,255,.06)}.trades-table tbody tr[data-selected=true]{background:rgba(79,140,255,.12)}.pnl-neg,.pnl-pos{font-weight:600}.trades-pager{display:flex;gap:.5rem;align-items:center;margin-top:.5rem;font-size:var(--fs-body)}.trades-pager button{padding:.2rem .6rem;font-size:var(--fs-body)}.chart-idle-frame{border:1px solid var(--border);border-radius:4px;background:#0b0d11}.chart-state-frame{display:flex;align-items:center;justify-content:center;text-align:center;padding:0 1rem}.chart-frame{position:relative}.chart-loading-overlay{z-index:5;background:rgba(11,13,17,.55);color:var(--muted)}.chart-loading-overlay,.chart-run-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--fs-body);pointer-events:none}.chart-run-overlay{z-index:6;flex-direction:column;gap:.5rem;background:rgba(11,13,17,.45);color:var(--text)}.chart-run-spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:chart-run-spin .8s linear infinite}@keyframes chart-run-spin{to{transform:rotate(1turn)}}.run-status-text{font-size:var(--fs-body)}.run-status-line{display:inline-flex;align-items:center;gap:.5rem}.run-retry-btn{font-size:var(--fs-body);line-height:1.3;padding:0 .45rem}.run-status-idle{color:var(--muted)}.run-status-ok{color:var(--ok)}.run-status-err{color:var(--err)}.strategy-info-row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;font-size:var(--fs-body)}.si-field{display:inline-flex;gap:.3rem;align-items:center;white-space:nowrap}.si-name{width:9.5rem}.action-row{display:grid;grid-template-columns:1fr auto 1fr;grid-gap:.6rem;gap:.6rem;align-items:center}.action-row-buttons{display:flex;gap:.6rem;align-items:center;justify-self:start}.action-row-status{justify-self:center;text-align:center;min-width:0}.action-row button{font-size:var(--fs-title)}.run-btn{background:var(--ok);color:#fff;font-weight:700}.composer-row-group{margin:2px 0}.composer-row-group:last-child{margin-bottom:0}.composer-strip{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}.composer-scope{width:2.6rem}.composer-ind{min-width:8rem}.composer-op{min-width:6rem}.composer-connector{min-width:5rem}.composer-distance-value,.composer-param input,.composer-slope-avg,.composer-slope-total,.composer-steepening-delta,.composer-value{width:4.5rem}.composer-param input.composer-param-time{width:2.75rem}.composer-param-invalid[aria-invalid=true],.composer-param-time[aria-invalid=true]{border-color:#d64545;outline-color:#d64545}.composer-param{display:inline-flex;gap:.25rem;align-items:center;font-size:var(--fs-body);white-space:nowrap}.composer-mini{background:transparent;border:1px solid var(--border);color:var(--text)}.composer-insert{color:var(--ok);border-color:var(--ok)}.composer-delete{color:var(--err);border-color:var(--err)}.composer-modifier{display:flex;gap:.4rem;align-items:center;margin:2px 0 2px 2.2rem;padding:1px 6px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:4px;font-size:var(--fs-body);width:-moz-fit-content;width:fit-content}.composer-modifier input{width:4rem}.composer-tw-time{width:4.5rem}.filter-note{font-size:var(--fs-meta);margin:.25rem 0 0}.composer-mod-word{font-weight:700;font-size:var(--fs-meta)}.composer-sentence{margin:0 0 2px;font-size:var(--fs-body);border-bottom:1px dashed var(--border);padding-bottom:1px}.sidebar-title{margin:0 0 .25rem;font-size:var(--fs-body)}.sidebar-subtitle{margin:0;font-size:var(--fs-body)}.sidebar-stats-duo{display:flex;flex-wrap:wrap;gap:.35rem;align-items:stretch}.sidebar-stats-cell{flex:1 1 9rem;min-width:0}.sidebar-stats-cell p.muted{margin:.1rem 0;font-size:var(--fs-body)}.filter-row{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:.15rem 0}.filter-select{max-width:11rem}.filter-label{font-size:var(--fs-meta)}.filter-radios{display:flex;flex-wrap:wrap;gap:.4rem;font-size:var(--fs-body)}.filter-radios label{display:inline-flex;align-items:center;gap:.15rem;white-space:nowrap}.filter-inline{display:flex;gap:.3rem;align-items:center;font-size:var(--fs-body);margin:.15rem 0}.filter-inline input{font-size:var(--fs-body);padding:.1rem .3rem;width:4.5rem}.weekday-row{display:flex;flex-wrap:wrap;gap:.35rem;font-size:var(--fs-meta)}.weekday-row label{display:inline-flex;align-items:center;gap:.15rem}.full-report-btn{width:100%;background:var(--accent);color:#fff;font-size:var(--fs-title);font-weight:600;padding:.6rem}.ws-region[data-region=full-report]{padding:.55rem .5rem}.trades-title{margin:0 0 .4rem;font-size:var(--fs-title)}.trades-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem .75rem}.trades-sort{display:flex;align-items:center;gap:.35rem;margin:0 0 .4rem;font-size:var(--fs-body)}.trades-sort-select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:.1rem .3rem;font-size:var(--fs-body)}.trades-sort-select:disabled{opacity:.55;cursor:not-allowed}.trades-empty{border:1px solid var(--border);border-radius:4px;padding:.6rem;color:var(--muted);margin-bottom:.5rem}.si-save-status,.tm-row,.trades-empty{font-size:var(--fs-body)}.tm-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:2px}.tm-row:last-child{margin-bottom:0}.tm-field{gap:.3rem}.tm-check,.tm-field{display:inline-flex;align-items:center;white-space:nowrap}.tm-check{gap:.25rem;font-size:var(--fs-body)}.tm-num{width:4.2rem}.tm-atr-num{width:3.2rem}.tm-time{width:4.5rem}.tm-leg{border:1px solid var(--border);border-radius:4px;padding:2px 6px;margin:2px 0}.tm-leg-label{font-weight:700;font-size:var(--fs-meta);color:var(--muted)}.tm-trail-row{margin-left:2.2rem}.tm-exit-section{margin-top:.25rem;border-top:1px dashed var(--border);padding-top:.25rem}.tm-exit-title{margin:0 0 .2rem;font-size:var(--fs-title);color:var(--muted)}.ws-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:100;display:flex;align-items:center;justify-content:center}.ws-modal{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;width:min(640px,92vw);max-height:82vh;display:flex;flex-direction:column;gap:.5rem}.ws-modal-wide{width:min(920px,94vw)}.ws-modal-head{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:.4rem}.ws-modal-head h3{margin:0;font-size:1rem}.ws-modal-close{background:transparent;border:none;color:var(--muted);font-size:1.3rem;padding:0 .3rem;cursor:pointer}.ws-modal-body{overflow-y:auto;min-height:6rem}.ws-modal .button-row{align-items:center}.ws-modal .button-row .spacer{flex:1 1}.metric-row{display:flex;gap:.3rem;font-size:var(--fs-body);line-height:1.45;white-space:nowrap}.metric-coverage-warning{font-size:var(--fs-meta);margin:.2rem 0 0}.metric-result-id{font-size:var(--fs-meta);margin:.1rem 0 0}@media (max-width:1100px){.workspace{flex-direction:column;align-items:stretch}.ws-right-col{flex:1 1 auto}}.badge.warn{color:#d29922;border-color:#d29922}.badge-line{margin:0 0 .35rem;font-size:var(--fs-body)}.filter-active .badge{color:var(--accent);border-color:var(--accent)}.tm-exit-replaces-tp{display:inline-flex;align-items:center;gap:.3rem;margin:.2rem 0}.tm-exit-tp-note{margin:.1rem 0 .4rem;font-size:var(--fs-meta)}.fr-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:3vh 1rem;background:rgba(0,0,0,.6);overflow-y:auto}.fr-modal{width:min(880px,100%);max-height:94vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem 1.25rem;box-shadow:0 12px 40px rgba(0,0,0,.5)}.fr-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.fr-title{font-size:1.05rem;margin:0}.fr-close{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:6px;width:1.9rem;height:1.9rem;font-size:1.1rem;line-height:1;cursor:pointer}.fr-close:hover{border-color:var(--accent)}.fr-warnings{margin:0 0 .75rem;padding:.5rem .75rem .5rem 1.5rem;border:1px solid #d29922;border-radius:6px;font-size:var(--fs-body);color:var(--muted)}.fr-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:.5rem;gap:.5rem;margin-bottom:.9rem}@media (min-width:800px){.fr-tiles{grid-template-columns:repeat(6,minmax(0,1fr))}}.fr-tile{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.fr-tile-label{font-size:var(--fs-meta);color:var(--muted);text-transform:uppercase;letter-spacing:.02em}.fr-tile-value{font-size:var(--fs-title);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fr-section{margin-bottom:.9rem}.fr-duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));grid-gap:0 1.5rem;gap:0 1.5rem;align-items:start}.fr-subtitle{font-size:var(--fs-title);margin:0 0 .35rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.fr-collapsible{margin:0}.fr-collapsible-summary{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:0;padding:.15rem 0}.fr-collapsible-summary:hover{color:var(--text)}.fr-collapsible-summary:focus-visible{outline:1px solid var(--accent);outline-offset:2px;border-radius:4px}.fr-collapsible-count{text-transform:none;letter-spacing:normal;opacity:.8}.fr-collapsible-body{margin-top:.35rem}.fr-scroll-tall{max-height:22rem;overflow-y:auto}.fr-kv-row{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;font-size:var(--fs-body)}.fr-note{font-size:var(--fs-meta);margin:.25rem 0 0}.fr-equity-host{width:100%;height:117px;border:1px solid var(--border);border-radius:8px;background:#171a21;overflow:hidden}.fr-equity-empty{display:flex;align-items:center;justify-content:center;text-align:center;padding:0 .75rem}.fr-table td.fr-uncovered{color:var(--muted);cursor:help}.fr-table-wrap{overflow-x:auto}.fr-table{width:100%;border-collapse:collapse;font-size:var(--fs-body);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fr-table td,.fr-table th{text-align:right;padding:.25rem .5rem;border-bottom:1px solid var(--border)}.fr-table td:first-child,.fr-table th:first-child{text-align:left}.pnl-pos{color:var(--ok)}.pnl-neg{color:var(--err)}.tree-select{position:relative;display:inline-block}.tree-select-trigger{background:#0b0d11;color:var(--text);border:1px solid var(--border);text-align:left;max-width:100%;overflow:hidden}.tree-select-search:focus-visible,.tree-select-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tree-select-trigger-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-select-trigger-label[data-placeholder=true],.tree-select-trigger[data-unavailable=true]{color:var(--muted)}.tree-select-popup{position:absolute;top:calc(100% + 2px);left:0;z-index:20;max-width:90vw;padding:.3rem;background:var(--panel);border:1px solid var(--border);border-radius:4px;box-shadow:0 6px 18px rgba(0,0,0,.45)}.tree-select-popup[data-placement=up]{top:auto;bottom:calc(100% + 2px);box-shadow:0 -6px 18px rgba(0,0,0,.45)}.tree-select-search{width:100%;font-size:var(--fs-body);padding:.25rem .35rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:3px}.tree-select-list{max-height:18rem;overflow-y:auto;margin-top:.3rem}.tree-select-row{display:flex;gap:.35rem;align-items:baseline;padding:.15rem .4rem;font-size:var(--fs-body);white-space:nowrap;cursor:pointer}.tree-select-row[data-active=true]{background:var(--border)}.tree-select-row[data-selected=true] .tree-select-label{font-weight:700;color:var(--accent)}.tree-select-row[aria-disabled=true]{color:var(--muted);cursor:default}.tree-select-twisty{width:.7rem;color:var(--muted)}.tree-select-badge,.tree-select-crumb{color:var(--muted);font-size:var(--fs-meta)}.tree-select-badge{border:1px solid var(--border);border-radius:3px;padding:0 .25rem}.tree-select-empty,.tree-select-status{margin:.35rem .4rem;font-size:var(--fs-body);color:var(--muted)}.tree-select-error{margin:.35rem .4rem;font-size:var(--fs-body);color:var(--err)}.tree-select-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.composer-scope-tree{min-width:4.5rem}.si-symbol-tree{min-width:3.5rem}