:root{color-scheme:dark;--bg:#0b0f15;--panel:#111720;--raised:#171f2a;--border:#242e3c;--text:#e6edf7;--muted:#8090a7;--accent:#6b9eff;--green:#38bea0;--red:#ef767b;--amber:#dcbb76;--font:"Segoe UI","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:13px/1.6 var(--font)}button,input,select{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button,input,select{color:var(--text)}button{background:transparent;border:1px solid transparent;border-radius:6px;padding:7px 11px}button:hover{background:#202b3a}button:disabled{opacity:.5;cursor:wait}input,select{width:100%;border:1px solid var(--border);border-radius:6px;background:#0e141d;padding:9px 11px;outline:none;min-width:0}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 2px #6b9eff13}label{display:block;color:#98a7ba;font-size:12px;margin-bottom:15px}label input,label select{margin-top:7px}h1,h2,h3,p{margin-top:0}h2{font-size:17px;font-weight:600;margin-bottom:12px}h3{font-size:14px;margin-bottom:12px}a{color:var(--accent);text-decoration:none;cursor:pointer}small{color:var(--muted)}[hidden]{display:none!important}.primary{background:#7ca8ff;color:#0b1932;font-weight:650;border-color:#7ca8ff;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.primary:hover{background:#99bbff}.full{width:100%;justify-content:center}.topbar{height:68px;border-bottom:1px solid var(--border);display:flex;align-items:center;position:sticky;top:0;z-index:20;background:#0d121a;padding:0 25px;gap:35px}.brand{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:700;letter-spacing:1px;min-width:191px}.brand-icon{display:grid;place-items:center;background:#789fff;color:#0d1730;width:29px;height:29px;border-radius:8px;font-size:18px}.brand-sub{font-size:13px;color:#9caac1;font-weight:400;letter-spacing:2px;border-left:1px solid #344053;padding-left:11px;margin-left:3px}.top-label{color:#a5b1c4;font-size:12px}.version{font-size:10px;letter-spacing:1.3px;border:1px solid #303b4d;color:#6f829f;padding:3px 6px;margin-left:12px;border-radius:3px}.top-right{display:flex;gap:22px;align-items:center;margin-left:auto}.connection{font-size:11px;color:#8e9dae}.connection i,.small-dot{width:6px;height:6px;border-radius:50%;background:var(--green);display:inline-block;margin-right:7px}.avatar{border:1px solid #384861;background:#1d2a40;border-radius:50%;width:31px;height:31px;display:grid;place-items:center;padding:0;font-size:12px;color:#a3c1fc}.layout{display:grid;grid-template-columns:224px minmax(0,1fr)}.sidebar{border-right:1px solid var(--border);padding:26px 18px 20px;background:#0d121a;position:sticky;top:68px;height:calc(100vh - 68px);display:flex;flex-direction:column;overflow-y:auto}.section-label{font-size:10px;color:#63758c;letter-spacing:1.5px;margin:0 10px 12px}.nav{display:flex;align-items:center;gap:13px;text-align:left;width:100%;color:#8f9fb4;margin:1px 0;padding:10px 12px;font-size:12px}.nav span{font-size:16px}.nav small{margin-left:auto;font-size:10px}.nav.active{background:#19273d;color:#a7c5ff}.side-divider{height:1px;background:var(--border);margin:22px 8px}.search-label{position:relative;margin-bottom:12px}.search-label>span{position:absolute;left:10px;top:6px;font-size:22px;color:#667b99}.search-label input{padding-left:31px;font-size:11px;margin:0}.symbol-results{background:#172130;border:1px solid #34435a;max-height:250px;overflow:auto;position:absolute;top:240px;left:18px;right:10px;z-index:30;border-radius:6px;box-shadow:0 12px 25px #0008}.symbol-results button{display:flex;justify-content:space-between;width:100%;text-align:left;font-size:11px;padding:9px}.symbol-results button span{color:var(--muted)}.selected-stock{padding:12px;border:1px solid #293a54;border-radius:7px;background:#141e2d}.selected-stock>div{display:flex;justify-content:space-between;gap:6px}.selected-stock b{font-size:14px}.selected-stock>span{display:block;color:#9daac0;font:12px/2 Consolas,monospace}.selected-stock small{font-size:10px;color:#617896}.market-tag{font-size:9px;border:1px solid #3a4e6b;border-radius:3px;padding:0 4px;color:#90add4}.range-label{margin-top:25px}.sidebar label:not(.search-label){margin-left:3px;margin-right:3px}.side-note{font-size:10px;line-height:1.8;color:#6d7f97;text-align:center;margin-top:9px}.sidebar-bottom{display:flex;gap:3px;align-items:flex-start;color:#98a6b8;font-size:11px;margin-top:auto;padding:30px 6px 0}.sidebar-bottom .small-dot{margin-top:6px}.sidebar-bottom small{display:block;font-size:10px;margin-top:3px;color:#65768c}main{padding:24px 28px 0;min-width:0;max-width:2100px;width:100%;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.eyebrow{display:block;font-size:9px;letter-spacing:2.2px;color:#6e829e;margin-bottom:5px}.page-heading h1{font-size:23px;letter-spacing:1px;line-height:1.3;margin:0;font-weight:550}.subtle{border-color:var(--border);font-size:11px;color:#9aabc2;padding:7px 12px}.research-grid{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:9px;overflow:hidden}.chart-heading{display:flex;align-items:flex-start;justify-content:space-between;padding:19px 21px 13px;gap:8px}.chart-title{display:flex;align-items:center;gap:10px}.chart-title h2{font-size:17px;margin:0}.chart-title>span:not(.chip){font:11px Consolas,monospace;color:#788ba6}.chip{font-size:9px;letter-spacing:.5px;border-radius:4px;background:#1c2839;color:#8fa9ce;padding:2px 6px;white-space:nowrap}.price-line{display:flex;gap:12px;align-items:baseline;margin-top:8px}.price-line b{font:600 26px/1.2 "Segoe UI",sans-serif;letter-spacing:-.5px}.price-line>span{font-size:11px}.price-line small{font-size:10px}.up{color:var(--red)!important}.down{color:var(--green)!important}.icon-button{font-size:10px;color:#8c9cb3;border-color:#283449;padding:5px 8px}.chart-controls{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #1c2634;border-bottom:1px solid #1c2634;padding:7px 14px;gap:8px}.segments{display:flex;gap:2px}.segments button{font-size:11px;color:#8fa0b7;padding:4px 10px;border-radius:4px}.segments button.active{background:#253654;color:#b1ccff}.check{display:flex;align-items:center;gap:6px;font-size:10px;margin:0}.check input{width:12px;margin:0;accent-color:var(--accent)}.drawing-toolbar{display:flex;align-items:center;gap:3px;padding:7px 15px;color:#7c8da6;border-bottom:1px solid #1b2330;flex-wrap:wrap;min-height:39px}.drawing-toolbar button{font-size:10px;padding:3px 7px;color:#8fa1b8}.drawing-toolbar button.active{background:#293449;color:#b6cef2}.toolbar-label{font-size:10px;padding-right:7px}.tool-separator{height:15px;border-left:1px solid var(--border);margin:0 5px}#drawStatus{font-size:9px;margin-left:auto;color:#637a99}.chart-wrap{position:relative}#priceChart{height:399px;width:100%}.chart-empty,.chart-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#7185a2;font-size:12px;gap:10px}.chart-empty{pointer-events:none}.chart-loading{background:#101620da;z-index:3}.spinner{border:2px solid #354860;border-top-color:#7ba7f9;border-radius:50%;width:17px;height:17px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.replay{display:flex;align-items:center;gap:10px;padding:8px 13px;border-top:1px solid #1e2938}.replay button{padding:3px 7px;font-size:10px;color:#9eb2d1;white-space:nowrap}.replay input{padding:0;height:3px;accent-color:#759fee;margin:0;box-shadow:none}.replay>span{font:10px Consolas,monospace;color:#647c9b;min-width:70px;text-align:right}.data-foot{font-size:9px;color:#596f8c;padding:6px 19px 10px}.notice{margin:0 15px 13px;background:#322919;color:#d5b47b;padding:8px 10px;border:1px solid #4a3c25;border-radius:5px;font-size:11px}.backtest-card{padding:19px}.card-heading{display:flex;align-items:center;justify-content:space-between}.card-heading h2{font-size:15px;margin:0}.muted{color:var(--muted);font-size:11px}.backtest-card>.muted{margin:7px 0 21px;font-size:10px}.backtest-card label{font-size:10px;margin-bottom:12px}.backtest-card input,.backtest-card select{padding:7px 9px;font-size:12px}.strategy-hint{font-size:10px;color:#6c84a3;line-height:1.7;margin:-5px 0 14px}.input-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}.execution-note{border-top:1px solid var(--border);padding-top:13px;margin:16px 0 17px;display:flex;gap:8px;font-size:10px;color:#98abc6;line-height:1.8}.execution-note i{font-size:16px;color:#6d99e2;font-style:normal}.execution-note small{display:block;font-size:9px;color:#637895;margin-top:4px}.results{margin-top:19px;min-height:235px}.result-header{display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid var(--border);gap:10px}.tabs{display:flex;gap:20px}.tabs button{border-radius:0;padding:14px 0 12px;border-bottom:2px solid transparent;font-size:11px;color:#788da9}.tabs button.active{border-bottom-color:#81aaff;color:#b2ccf6}.tabs button:hover{background:transparent;color:#d7e4f9}.result-actions{display:flex;align-items:center;gap:12px;font-size:9px;color:#627b9c}.result-actions a{font-size:10px}.result-empty{height:185px;display:flex;flex-direction:column;align-items:center;justify-content:center}.result-empty>span{display:grid;place-items:center;width:35px;height:35px;background:#1b2a40;color:#6b92d4;border-radius:8px;font-size:24px;margin-bottom:10px}.result-empty>b{font-size:12px;font-weight:500;color:#a4b6cf}.result-empty>p{font-size:10px;color:#607895;margin-top:7px}.metrics{display:grid;grid-template-columns:repeat(6,1fr);padding:19px 7px}.metric{padding:0 17px;border-right:1px solid #223043}.metric:last-child{border-right:0}.metric small{display:block;font-size:10px;margin-bottom:7px;color:#7a90ae}.metric b{font:600 22px/1.2 "Segoe UI",sans-serif;white-space:nowrap}.metric em{font-size:10px;font-style:normal;font-weight:400;margin-left:3px}.equity-heading{display:flex;justify-content:space-between;padding:9px 23px;font-size:10px;color:#91a6c3}.equity-heading b{font-weight:500}.legend{width:14px;height:2px;background:#7da9ff;display:inline-block;vertical-align:middle;margin:0 5px 0 13px}.legend.gray{background:#687587}#equityChart{height:195px}.assumptions{font-size:10px;color:#7790b1;border-top:1px solid #243043;padding:10px 23px}.assumptions summary{cursor:pointer}.assumptions p{margin:7px 0;overflow-wrap:anywhere;color:#8395ad}.table-scroll{max-height:400px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:11px;text-align:left;font-variant-numeric:tabular-nums}th{color:#657e9f;font-weight:400;background:#131c28;position:sticky;top:0}td,th{padding:12px 18px;border-bottom:1px solid #202a39;white-space:nowrap}tbody tr[data-index]{cursor:pointer}tbody tr[data-index]:hover{background:#182435}.empty{text-align:center;color:#637b9d;padding:35px}.job-rows{padding:4px 18px;max-height:400px;overflow:auto}.job-row{display:flex;align-items:center;gap:15px;padding:14px 0;border-bottom:1px solid #243045;font-size:11px}.job-icon{width:31px;height:31px;border-radius:7px;background:#1c2b40;color:#91b3e7;display:grid;place-items:center}.job-main{flex:1;min-width:0}.job-main b{font-weight:500}.job-main small{display:block;font-size:10px;color:#647d9f;margin-top:4px;overflow-wrap:anywhere}.job-status{font-size:10px;color:#9aacbf;min-width:60px}.job-row button{font-size:10px;color:#9cb9e7;border-color:#34445b;white-space:nowrap}.progress{height:3px;background:#263248;max-width:350px;margin-top:7px;border-radius:3px;overflow:hidden}.progress i{display:block;height:100%;background:#739feb}footer{font-size:9px;color:#435d7a;text-align:center;padding:21px}footer span{margin:0 10px}dialog{background:#151e2b;border:1px solid #364965;border-radius:11px;color:var(--text);padding:30px;width:450px;max-width:calc(100vw - 30px);max-height:85vh;box-shadow:0 25px 100px #0009}dialog::backdrop{background:#04080dbd;backdrop-filter:blur(3px)}dialog label{font-size:11px}dialog h2{margin-bottom:15px}dialog h3{margin-top:22px}dialog p,dialog li{font-size:12px;color:#91a5c0;line-height:1.9}dialog hr{border:0;border-top:1px solid #31435d;margin:22px 0}.close-dialog{position:absolute;right:14px;top:8px;font-size:25px;color:#7489a7}.danger-button{color:#ef9196;border-color:#63424c;margin-top:20px;font-size:11px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:100;background:#24324a;border:1px solid #445d82;box-shadow:0 12px 45px #0008;padding:12px 22px;border-radius:8px;max-width:90vw;font-size:12px}.error{color:#f48a8e;font-size:12px}.login-screen{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh}.login-art{position:relative;overflow:hidden;background:radial-gradient(ellipse at 80% 70%,#1c3559,transparent 60%),#101b2c;padding:65px 12%;display:flex;flex-direction:column;justify-content:center}.big{position:absolute;top:55px}.login-art h1{font-size:clamp(28px,3.5vw,53px);font-weight:500;letter-spacing:2px;line-height:1.6;position:relative;z-index:2;margin-bottom:18px}.login-art p{color:#839bbd;position:relative;z-index:2;letter-spacing:1px}.art-foot{position:absolute;bottom:40px;letter-spacing:2px;font-size:9px;color:#5c779e}.art-chart{position:absolute;left:17%;right:-10%;height:250px;bottom:8%;display:flex;align-items:center;gap:22px;opacity:.24;transform:rotate(-14deg);pointer-events:none}.art-chart i{display:block;background:#80a9e4;position:relative;width:16px;height:80px;flex-shrink:0}.art-chart i:before{content:"";position:absolute;width:1px;background:#80a9e4;height:150%;top:-25%;left:50%}.art-chart i:nth-child(3n){height:130px;background:#4787ad}.art-chart i:nth-child(2n){margin-top:50px;height:50px}.login-form{width:340px;max-width:80%;margin:auto}.login-form h2{font-size:27px;font-weight:500;margin:12px 0}.login-form>p{font-size:12px;color:#758cae;margin-bottom:30px}.login-form>label{margin-top:20px}.login-form .primary{width:100%;margin-top:28px}.login-form>small{display:block;font-size:10px;line-height:1.9;color:#526a8d;margin-top:35px}.login-form>p.error{margin-top:16px;color:#f38c92;margin-bottom:0}.login-form .eyebrow{font-size:10px;letter-spacing:3px}
@media(min-width:1650px){#priceChart{height:440px}.backtest-card{padding:22px}.research-grid{grid-template-columns:minmax(0,1fr) 295px}}@media(max-width:1200px){.layout{grid-template-columns:194px minmax(0,1fr)}.sidebar{padding:22px 13px}.topbar{gap:18px}.brand{min-width:161px}main{padding:22px 17px 0}.research-grid{grid-template-columns:minmax(0,1fr) 235px;gap:13px}.segments button{padding:4px 6px}.backtest-card{padding:16px}.price-line small{display:none}.metric{padding:0 10px}.metric b{font-size:18px}.chart-title{gap:7px}#drawStatus{display:none}}@media(max-width:980px){.research-grid{grid-template-columns:1fr}.backtest-card form{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.backtest-card .strategy-hint{grid-column:1 / -1}.backtest-card>.muted{margin-bottom:12px}.execution-note{margin:0 0 12px}.metrics{grid-template-columns:repeat(3,1fr);gap:20px 0}.metric:nth-child(3){border:0}.top-label{display:none}.result-actions #resultLabel{display:none}.backtest-card .input-row{gap:10px}.backtest-card label{margin-bottom:10px}}@media(max-width:650px){.login-screen{grid-template-columns:1fr}.login-art{display:none}.login-form{padding:35px 0}.topbar{height:57px;padding:0 16px}.brand{font-size:17px}.connection{display:none}.layout{display:block}.sidebar{position:relative;top:0;height:auto;display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;border-bottom:1px solid var(--border);border-right:0;padding:17px}.sidebar .section-label,.sidebar .nav,.side-divider,.sidebar-bottom,.range-label,.sidebar .side-note{display:none}.search-label,.selected-stock{grid-column:1 / -1}.selected-stock{display:flex;align-items:center;gap:12px}.selected-stock>small{margin-left:auto}.selected-stock .market-tag{margin-left:10px}.sidebar label{margin:0!important}.sidebar .full{margin-top:4px}.symbol-results{top:62px;left:17px;right:17px}.page-heading{margin-bottom:15px}.page-heading h1{font-size:20px}main{padding:18px 12px 0}.chart-heading{padding:15px}.chart-title>span:not(.chip){display:none}.chart-heading .icon-button{font-size:9px}.chart-controls{padding:7px}.segments button{padding:4px 5px;font-size:10px}.chart-controls .check{font-size:9px}.drawing-toolbar{padding:6px 8px}.drawing-toolbar button{padding:3px 4px;font-size:9px}#priceChart{height:330px}.replay{gap:3px;padding:8px}.replay>span{min-width:55px;font-size:9px}.result-header{padding:0 12px}.tabs{gap:16px}.tabs button{font-size:10px}.result-actions{display:none}.result-empty p{padding:0 25px;text-align:center}.metric{padding:0 13px}.metric b{font-size:20px}.job-row{gap:8px}.job-icon{display:none}.job-status{min-width:43px}.job-main b{font-size:10px}}

textarea{width:100%;margin-top:7px;background:#0e141d;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px;resize:vertical;font:11px/1.6 var(--font)}
.market-hint{font-size:10px;line-height:1.7;color:#879eba;border-left:2px solid #527cb5;padding-left:9px;margin:0 0 16px}#marketOptions{grid-column:1/-1;border-bottom:1px solid var(--border);margin-bottom:14px;padding-bottom:3px}.coverage-notice{font-size:11px;line-height:1.9;padding:12px 20px;color:#a7bad5;border-bottom:1px solid #2c3c54;background:#172437}.list-toolbar{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid #253147}.list-toolbar input{max-width:240px;padding:7px 10px;font-size:11px}.list-toolbar select{max-width:160px;font-size:11px;padding:7px 10px}.list-toolbar span{margin-left:auto;white-space:nowrap;font-size:10px;color:#829bbc}.list-toolbar button{white-space:nowrap;font-size:10px;color:#9ab2d6;border-color:#2f425e}.asset-reason{white-space:normal;max-width:320px;min-width:180px}.asset-reason small{display:block;font-size:10px;max-width:300px}.table-scroll td button{font-size:10px;color:#92b4ec;border-color:#304967}.chart-card{align-self:start}#assetsCsvLink{white-space:nowrap}.tabs{gap:16px}
@media(max-width:980px){.result-header{flex-wrap:wrap;gap:0}.result-actions{display:flex;width:100%;padding-bottom:10px}.result-actions #assetsCsvLink{display:inline}.list-toolbar{flex-wrap:wrap;gap:7px}.list-toolbar input{max-width:180px}.tabs{gap:12px}}@media(max-width:650px){.list-toolbar input{max-width:100%;flex:1;min-width:100px}.list-toolbar select{max-width:125px}.list-toolbar span{font-size:9px}.list-toolbar button{font-size:9px}.coverage-notice{font-size:10px;padding:10px 12px}.tabs{gap:14px}}

.statistics-intro{padding:0 20px 18px;color:#9bafc9;font-size:12px;line-height:1.9}#holdingChart{height:240px;margin:0 10px}.statistics-exports{display:flex;gap:20px;flex-wrap:wrap;padding:12px 20px;font-size:11px}.distribution-table{border-top:1px solid var(--border)}.distribution-table summary{cursor:pointer;padding:13px 20px;color:#a8bbd4;font-size:12px}.result-actions{flex-wrap:wrap}.result-actions button{font-size:10px}.result-header{flex-wrap:wrap}.result-actions{padding:8px 0}

/* Strategy batches */
.extra-strategy{border:1px solid var(--border);border-radius:6px;padding:10px;margin:12px 0;background:#101923}.extra-strategy header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:11px}.extra-strategy header button{font-size:10px;color:var(--muted);padding:2px 6px}.extra-strategy label:last-child{margin-bottom:0}#strategyCount{margin:7px 0 16px;text-align:center}.batch-panel{margin-top:19px}.batch-heading{display:flex;align-items:center;gap:18px;padding:18px 20px 0}.batch-heading h2{margin:0;font-size:16px}.batch-heading label{margin:0 0 0 auto;min-width:220px}.batch-heading select{max-width:340px;padding:6px}.batch-context{margin:10px 20px;color:var(--muted);font-size:11px}.batch-panel td{padding:12px 14px}.batch-panel td small{display:block;font-size:10px;max-width:250px;white-space:normal;overflow-wrap:anywhere}.batch-panel tr.selected{background:#1c2c44}.batch-panel td button{border:1px solid #354966;font-size:11px;color:#abc9fb}.batch-panel .progress{width:110px}.batch-panel .table-scroll{max-height:550px}@media(max-width:900px){.batch-heading{flex-wrap:wrap}.batch-heading label{margin-left:0;flex:1}.batch-heading h2{font-size:14px}}

.batch-panel table{min-width:980px}.batch-panel td:first-child,.batch-panel th:first-child{min-width:195px;width:195px;position:sticky;left:0;background:#111720;z-index:1}.batch-panel th:first-child{z-index:2;background:#131c28}.batch-panel tr.selected td:first-child{background:#1c2c44}.batch-panel td:first-child b{font-size:11px;font-weight:500}.batch-panel td:first-child small{max-width:200px;min-width:165px}.batch-panel td:first-child button{margin-top:6px;padding:3px 7px}.batch-panel td:not(:first-child){min-width:96px}

#notificationDialog{width:570px}#notificationDialog .notification-help{font-size:11px;line-height:1.7;color:#8197b4}.notification-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.notification-history-heading{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.notification-history-heading h3{margin:12px 0}.notification-history{max-height:230px;overflow:auto;border-top:1px solid #31435d}.notification-record{padding:12px 0;border-bottom:1px solid #28394f;font-size:12px}.notification-record b{font-weight:500}.notification-record small{display:block;margin-top:5px;color:#8197b4;overflow-wrap:anywhere}.notification-record small.error{color:#f48a8e}#notificationMessage{min-height:23px;color:#b3c9ed}

.sidebar .symbol-results{position:relative;top:auto;left:auto;right:auto;flex-shrink:0;max-height:240px;margin-bottom:12px}.symbol-results button{flex-wrap:wrap;gap:4px}#assetType{margin-top:0;padding:7px 8px;font-size:11px}

.session-screen{min-height:100vh;display:flex;gap:14px;align-items:center;justify-content:center;color:var(--muted)}
.structure-status{padding:8px 16px;border-bottom:1px solid var(--border);color:var(--muted);font-size:11px}
.chart-load-error{padding:14px 16px;background:#30241a;border-bottom:1px solid #805d36;color:#f4d7b3;overflow-wrap:anywhere}.chart-load-error b{display:block;font-size:14px}.chart-load-error p{margin:6px 0;font-size:12px}.chart-load-error small{display:block;margin-top:8px;font-size:11px}.chart-load-error button{margin-top:6px;white-space:normal}
.chart-date-range{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px 12px;padding:12px 16px;border-bottom:1px solid var(--border);background:#0e1621}
.chart-date-range label{flex:1 1 140px;min-width:0;max-width:190px;margin:0;font-size:11px}
.chart-date-range input,.chart-date-range select{display:block;min-height:38px;padding:7px 9px;margin-top:5px;font-size:12px;width:100%}
.chart-date-range .primary{min-height:38px;justify-content:center;white-space:nowrap;padding:7px 14px}
.date-range-notes{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:10px;color:var(--muted)}
#dateRangeStatus{color:#a8c5ed;overflow-wrap:anywhere}
@media(max-width:650px){
  .chart-date-range{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px}
  .chart-date-range label{max-width:none;font-size:12px}
  .chart-date-range label:first-child{grid-column:1/-1}
  .chart-date-range input,.chart-date-range select{font-size:16px;min-height:44px}
  .chart-date-range .primary{grid-column:1/-1;min-height:44px}
  .date-range-notes{grid-column:1/-1;font-size:11px}
}
#fourLayerHost{min-height:640px;width:100%;min-width:0}

/* A quiet opening, isolated from the chart and account state. */
#entryIntro{position:fixed;inset:0;margin:0;padding:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0;overflow:auto;color:#e6dfcd;background:radial-gradient(ellipse at 48% 43%,#24312f55,transparent 56%),linear-gradient(135deg,#111f23,#091318 72%);opacity:1;transition:opacity .65s ease;overscroll-behavior:contain}
#entryIntro::backdrop{background:#091318}
#entryIntro.is-leaving{opacity:0;pointer-events:none}
.intro-grain{position:absolute;inset:0;pointer-events:none;opacity:.11;background-image:radial-gradient(#d6d3bb 0.6px,transparent .8px);background-size:5px 5px;mask-image:radial-gradient(ellipse,#0005,transparent 85%)}
.intro-circle{position:absolute;left:50%;top:50%;width:min(72vw,620px);height:auto;transform:translate(-50%,-47%) rotate(-12deg);fill:none;stroke:#b4b798;stroke-width:1.2;opacity:.19;pointer-events:none}
.intro-circle path{stroke-linecap:round;stroke-dasharray:1700;stroke-dashoffset:1700}
.intro-circle .circle-echo{stroke-width:.4;opacity:.6}
.intro-botanical{position:absolute;left:-16px;bottom:-35px;width:clamp(190px,29vw,390px);fill:none;stroke:#b7bba0;stroke-width:1.1;opacity:.35;pointer-events:none}
.intro-stem{stroke-dasharray:700;stroke-dashoffset:700}
.intro-flower{transform-origin:258px 53px;opacity:0}
.intro-content{position:relative;isolation:isolate;min-height:100%;width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:48px 24px 52px;text-align:center}
.intro-content>.intro-brand,.intro-content>.intro-poem,.intro-content>.intro-enter{position:relative;z-index:1}
.intro-brand{display:flex;align-items:center;gap:14px;margin-bottom:36px;opacity:0}
.intro-brand h1{margin:0;font:400 27px/1.4 "STKaiti","KaiTi","FangSong",serif;letter-spacing:7px;color:#e7dfc9}
.intro-seal{display:grid;place-items:center;width:30px;height:34px;border:1px solid #ad725c;color:#bc806a;font:22px/1 "KaiTi",serif;border-radius:3px;transform:rotate(-4deg)}
.intro-caption{font-size:10px;letter-spacing:4px;color:#7e918e;border-left:1px solid #6d7f714d;padding-left:16px}
.intro-poem p{margin:0;font:400 clamp(23px,3.2vw,35px)/2.1 "STKaiti","KaiTi","FangSong",serif;letter-spacing:clamp(3px,.7vw,8px);color:#e4decd;opacity:0;transform:translateY(10px);filter:blur(4px);text-shadow:0 1px 24px #c0c5a20d}
.intro-poem p:nth-child(2){margin-bottom:13px}
/* Center the poem independently of the decorative lotus behind it. */
.intro-lotus-layer{position:absolute;inset:0;z-index:0;display:flex;align-items:center;justify-content:center;transform:translateY(85px);opacity:.38;pointer-events:none}
.intro-lotus{display:block;flex-shrink:0;width:min(580px,88vw);height:auto;margin:0;overflow:visible;opacity:0;transform:translateY(14px) scale(.9);filter:blur(5px);pointer-events:none}
.lotus-petals,.lotus-core{transform-origin:140px 108px}
.lotus-left{--petal-angle:14deg}.lotus-right{--petal-angle:-14deg}
.lotus-water{transform-origin:140px 123px;opacity:0}
#entryIntro[open] .intro-lotus{animation:intro-lotus-rise 2.3s cubic-bezier(.2,.65,.3,1) 5.1s both}
#entryIntro[open] .lotus-petals{animation:intro-lotus-open 2.7s ease 5.2s both}
#entryIntro[open] .lotus-core{animation:intro-lotus-heart 2.5s ease 5.1s both}
#entryIntro[open] .lotus-water{animation:intro-lotus-water 3.6s ease 5.8s both}
.intro-content .intro-brand{margin-bottom:26px}
.intro-content .intro-enter{margin-top:8px}
.intro-skip{position:fixed;right:30px;top:24px;z-index:2;display:flex;gap:18px;align-items:center;padding:8px 13px;border:1px solid #83958b44;border-radius:3px;color:#93a49d;font-size:11px;letter-spacing:1px}
.intro-skip:hover,.intro-enter:hover{background:#bfc8b00d;border-color:#adbaa277;color:#ece6d6}
.intro-enter{display:flex;align-items:center;gap:48px;margin-top:32px;padding:10px 18px;border:1px solid #82927b66;border-radius:3px;color:#c4ccb8;font-size:12px;letter-spacing:3px;opacity:0}
.intro-skip:focus-visible,.intro-enter:focus-visible{outline:2px solid #b9bea0;outline-offset:5px}
.intro-foot{position:absolute;bottom:25px;left:34px;right:34px;display:flex;justify-content:space-between;color:#687e78;font-size:9px;letter-spacing:5px;pointer-events:none}
.intro-progress{position:fixed;bottom:0;left:0;height:1px;width:100%;background:#b6bca4;transform:scaleX(0);transform-origin:left;opacity:.45}
#entryIntro[open] .intro-brand{animation:intro-rise 1.3s ease .15s both}
#entryIntro[open] .intro-poem p{animation:intro-verse 1.5s ease calc(.8s + var(--line)*1s) both}
#entryIntro[open] .intro-circle path{animation:intro-ink 5s ease .2s forwards}
#entryIntro[open] .intro-stem{animation:intro-ink 4.8s ease .5s forwards}
#entryIntro[open] .intro-flower{animation:intro-bloom 3.5s ease 1.4s forwards}
#entryIntro[open] .intro-enter{animation:intro-rise 1.4s ease 4.8s both}
#entryIntro[open] .intro-progress{animation:intro-time 10s linear forwards}
#replayIntro{margin-left:10px;font-size:10px;color:#85998f;border-color:#35443b;padding:2px 8px}
@keyframes intro-verse{to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes intro-rise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes intro-ink{to{stroke-dashoffset:0}}
@keyframes intro-bloom{from{opacity:0;transform:scale(.85) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@keyframes intro-time{to{transform:scaleX(1)}}
@keyframes intro-lotus-rise{to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}
@keyframes intro-lotus-open{from{transform:rotate(var(--petal-angle)) scaleY(.74)}to{transform:rotate(0) scaleY(1)}}
@keyframes intro-lotus-heart{from{transform:scale(.84);opacity:.4}to{transform:scale(1);opacity:1}}
@keyframes intro-lotus-water{from{transform:scaleX(.45);opacity:0}50%{opacity:.5}to{transform:scaleX(1);opacity:.25}}
@media(max-width:650px){.intro-skip{right:18px;top:16px}.intro-content{padding:70px 18px}.intro-brand{margin-bottom:26px;gap:10px}.intro-brand h1{font-size:24px;letter-spacing:5px}.intro-poem p{line-height:2.25}.intro-circle{width:96vw}.intro-botanical{width:210px;opacity:.2;left:-40px}.intro-foot{left:22px;right:22px;bottom:18px}.intro-enter{margin-top:28px}}
@media(max-height:570px){.intro-content{padding:55px 20px}.intro-brand{margin-bottom:12px}.intro-poem p{font-size:24px;line-height:1.7}.intro-enter{margin-top:15px}.intro-foot{display:none}}
@media(prefers-reduced-motion:reduce){#entryIntro{transition:none}#entryIntro[open] .intro-brand,#entryIntro[open] .intro-poem p,#entryIntro[open] .intro-enter{animation:none;opacity:1;transform:none;filter:none}#entryIntro[open] .intro-circle path,#entryIntro[open] .intro-stem{animation:none;stroke-dashoffset:0}#entryIntro[open] .intro-flower{animation:none;opacity:1;transform:none}#entryIntro[open] .intro-progress{animation:none;display:none}}
@media(max-width:650px){.intro-lotus{width:min(460px,90vw)}.intro-lotus-layer{transform:translateY(75px)}.intro-content .intro-brand{margin-bottom:20px}}
@media(max-height:650px){.intro-lotus{width:min(440px,84vw)}.intro-lotus-layer{transform:translateY(50px)}.intro-content .intro-brand{margin-bottom:10px}.intro-content{padding-top:48px;padding-bottom:42px}}
@media(prefers-reduced-motion:reduce){#entryIntro[open] .intro-lotus,#entryIntro[open] .lotus-petals,#entryIntro[open] .lotus-core{animation:none;opacity:1;transform:none;filter:none}#entryIntro[open] .lotus-water{animation:none;opacity:.25;transform:none}}

/* Keep the existing navigation reachable on phones and leave room for touch. */
.workspace-nav{display:contents}
@media(max-width:650px){
  #workspace{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  .sidebar .workspace-nav{position:fixed;inset:auto 0 0;z-index:30;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:5px max(6px,env(safe-area-inset-right,0px)) calc(5px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));background:#0d121a;border-top:1px solid var(--border);box-shadow:0 -4px 20px #0003}
  .sidebar .workspace-nav .nav{display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:52px;margin:0;padding:5px 2px;font-size:11px;line-height:1.4;text-align:center}
  .workspace-nav .nav small{display:none}
  .workspace-nav .nav span{font-size:19px;line-height:1.2}
  .topbar{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
  .topbar .avatar{width:44px;height:44px;flex-shrink:0}
  .sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sidebar>label{min-width:0}
  .sidebar>label[for=assetType]{grid-column:1/-1;display:flex;align-items:center;gap:12px}
  .sidebar #assetType{flex:1;width:auto;min-width:0;font-size:16px}
  .sidebar #symbolResults,.sidebar #loadStatus{grid-column:1/-1}
  .sidebar #loadStatus{display:block;margin:0;overflow-wrap:anywhere}
  .sidebar .search-label{min-height:44px}
  .sidebar input,.sidebar select,.login-form input,dialog input:not([type=checkbox]):not([type=range]):not([type=color]),dialog select,.backtest-card input,.backtest-card select{font-size:16px;min-height:44px;min-width:0}
  .sidebar .full,.login-form .primary,.backtest-card button,.symbol-results button{min-height:44px}
  .chart-controls #frequencies{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;width:100%}
  .chart-controls #frequencies button{min-height:40px;font-size:13px;padding:6px 4px}
  .chart-heading .icon-button,.page-heading button,.replay button{min-height:40px;font-size:12px}
  .replay{flex-wrap:wrap;gap:5px}
  .replay input[type=range]{min-width:80px}
  .chart-title,.price-line{flex-wrap:wrap}
  .chart-title h2{font-size:17px}
  .chart-card{scroll-margin-top:70px}
  dialog:not(#entryIntro){padding:22px 16px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px)}
  dialog .close-dialog{min-width:44px;min-height:44px;top:2px;right:3px}
  .login-form{max-width:calc(100% - 40px)}
}
