:root{--bg:#101216;--bg-raised:#181b21;--border:#2a2e37;--text:#aeb4c0;--text-h:#eceff4;--accent:#4fa3ff;--brand-tick:#22d3ee;--warn-bg:#3a2f14;--warn-border:#8a6d1a;--error-bg:#3a1717;--error-border:#8a2a2a;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:15px/150% var(--sans);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}body{margin:0}h1,h2{color:var(--text-h);font-weight:600}h1{margin:0 0 12px;font-size:22px}h2{margin:0 0 8px;font-size:17px}p{margin:0 0 8px}code{font-family:var(--mono)}.app{flex-direction:column;min-height:100svh;display:flex}.topbar{background:var(--bg-raised);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:10px 20px;display:flex}.brand{color:var(--text-h);letter-spacing:.3px;align-items:center;gap:7px;font-weight:700;display:flex}.brand-mark{flex:none;width:16px;height:auto}.brand-mark-e{fill:var(--text-h)}.brand-mark-tick,.brand-t{fill:var(--brand-tick);color:var(--brand-tick)}.nav{gap:16px;display:flex}.nav a{color:var(--text);border-radius:4px;padding:4px 8px;text-decoration:none}.nav a:hover{color:var(--text-h)}.nav a.active{color:var(--text-h);background:#4fa3ff1f}.banner{border-bottom:1px solid var(--border);padding:10px 20px}.banner-warn{background:var(--warn-bg);border-color:var(--warn-border)}.banner-error{background:var(--error-bg);border-color:var(--error-border)}.banner-info{border-color:var(--accent);color:var(--text-h);background:#4fa3ff1f}.main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px 20px}.main:has(>.session-screen){max-width:none;padding:16px 24px}.muted{opacity:.75}.placeholder{border:1px dashed var(--border);text-align:center;opacity:.6;border-radius:8px;margin-top:16px;padding:32px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.dropzone{border:2px dashed var(--border);text-align:center;border-radius:8px;margin-top:16px;padding:48px 24px}.dropzone-active{border-color:var(--accent);background:#4fa3ff0f}.preview-card{border:1px solid var(--border);background:var(--bg-raised);border-radius:8px;margin-top:16px;padding:20px}.preview-grid{grid-template-columns:max-content 1fr;gap:4px 16px;margin:12px 0;display:grid}.preview-grid dt{color:var(--text);opacity:.7}.preview-grid dd{color:var(--text-h);margin:0}.progress-bar{background:var(--border);border-radius:4px;height:8px;margin:12px 0 6px;overflow:hidden}.progress-fill{background:var(--accent);height:100%;transition:width .12s linear}.button-row{gap:8px;margin-top:12px;display:flex}.btn{border:1px solid var(--border);color:var(--text-h);cursor:pointer;font:inherit;background:0 0;border-radius:6px;align-items:center;padding:8px 16px;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#06121f;font-weight:600}.btn-secondary{background:0 0}.btn-danger{border-color:var(--error-border);color:#ff9b9b}.btn-link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.dataset-list{margin-top:32px}.dataset-row{border-bottom:1px solid var(--border);padding:10px 0}.dataset-row-main{justify-content:space-between;align-items:center;gap:16px;display:flex}.peek-panel{border:1px solid var(--border);background:var(--bg);font-family:var(--mono);border-radius:6px;margin-top:8px;padding:8px 12px;font-size:13px}.session-screen{flex-direction:column;display:flex}.session-head{align-items:baseline;gap:12px;display:flex}.session-back{margin-left:auto;text-decoration:none}.session-support{margin-top:20px;font-size:.85rem}.session-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}@media (width<=900px){.session-layout{grid-template-columns:minmax(0,1fr)}}@media (width>=1400px){.session-layout{grid-template-columns:minmax(0,1fr) 360px}}.chart-host{border:1px solid var(--border);border-radius:8px;height:clamp(460px,100svh - 330px,940px);overflow:hidden}.chart-host[data-hover=shape]{cursor:move}.chart-host-drawing{cursor:crosshair}.chart-toolbar{border:1px solid var(--border);background:var(--bg-raised);border-radius:8px;flex-wrap:wrap;gap:6px 16px;margin-bottom:8px;padding:8px 10px;display:flex}.chart-tool-group{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.chart-tool-label{margin-right:2px;font-size:12px}.chart-tool-hint{margin-left:4px;font-size:12px}.chart-toolbar .btn:disabled{opacity:.45;cursor:not-allowed}.chart-toolbar .btn:disabled:hover{border-color:var(--border)}.ma-select{color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:13px}.ma-chip{border:1px solid var(--border);border-radius:999px;align-items:center;gap:4px;padding:2px 6px;font-size:12px;display:inline-flex}.ma-swatch{border-radius:2px;width:10px;height:10px}.btn-session{align-items:center;gap:6px;display:inline-flex}.session-swatch{border-radius:2px;flex:none;width:8px;height:8px}.ma-remove,.ma-gear{color:var(--text);opacity:.7;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1}.ma-remove:hover,.ma-gear:hover{color:var(--text-h);opacity:1}.ma-gear{font-size:12px}.indicator-dialog{color:var(--text);background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;min-width:340px;max-width:min(520px,92vw);max-height:86vh;margin:auto 24px auto auto;padding:0;overflow:auto}.indicator-dialog::backdrop{background:#00000059}.indicator-dialog-body{padding:14px 16px 16px}.indicator-dialog-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:10px;display:flex}.indicator-section{margin-top:10px}.indicator-note{max-width:420px;margin:8px 0 0;font-size:12px;line-height:1.5}.indicator-section-title{text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px;font-size:12px;font-weight:600}.indicator-row{flex-wrap:wrap;align-items:center;gap:8px;padding:3px 0;display:flex}.indicator-row-label{flex:none;width:96px;font-size:13px}.indicator-select,.indicator-number{color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 6px;font-size:13px}.indicator-number{width:76px}.indicator-colors{align-items:center;gap:3px;display:inline-flex}.indicator-color{border:1px solid var(--border);cursor:pointer;border-radius:4px;width:14px;height:14px;padding:0}.indicator-color-custom{border:1px dashed var(--text);cursor:pointer;background:0 0;border-radius:4px;width:22px;height:16px;padding:0}.indicator-color-custom.indicator-color-on{border-style:solid;border-color:var(--text-h);box-shadow:0 0 0 1px var(--text-h)}.indicator-color-custom::-webkit-color-swatch-wrapper{padding:1px}.indicator-color-custom::-webkit-color-swatch{border:none;border-radius:2px}.indicator-color-custom::-moz-color-swatch{border:none;border-radius:2px}.indicator-color-on{border-style:solid;border-color:var(--text-h);box-shadow:0 0 0 1px var(--text-h)}.indicator-opacity{width:110px}.indicator-opacity-value{min-width:30px;font-size:12px}.tf-bar{gap:4px;margin-top:8px;display:flex}.btn-tf{padding:4px 10px;font-size:13px}.btn-tf-active{border-color:var(--accent);color:var(--text-h);background:#4fa3ff1f}.transport{border:1px solid var(--border);background:var(--bg-raised);border-radius:8px;margin-top:10px;padding:10px 12px}.transport-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.transport-row+.transport-row{margin-top:10px}.transport-label{margin-left:12px;font-size:13px}.transport-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;margin-left:12px;font-size:13px;display:flex}.transport-toggle input{accent-color:var(--accent);cursor:pointer}.transport-slider{min-width:160px;accent-color:var(--accent);flex:1}.transport-pos{color:var(--text-h);white-space:nowrap;font-size:13px}.session-side{flex-direction:column;gap:12px;max-height:calc(100svh - 24px);padding-right:4px;display:flex;position:sticky;top:12px;overflow-y:auto}@media (width<=900px){.session-side{max-height:none;padding-right:0;position:static;overflow-y:visible}}.panel-head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:flex}.panel-head h2{margin:0}.panel-body:not([hidden]){margin-top:8px}.panel-caret{width:12px;color:var(--text);flex:none;font-size:12px;line-height:1}.panel-head:hover .panel-caret{color:var(--text-h)}.panel{border:1px solid var(--border);background:var(--bg-raised);border-radius:8px;padding:12px}.stat-grid{grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;font-size:13px;display:grid}.stat-grid dt{opacity:.7}.stat-grid dd{color:var(--text-h);text-align:right;margin:0}.mono{font-family:var(--mono)}.trade-list{max-height:220px;font-size:12px;overflow-y:auto}.trade-row{border-bottom:1px solid var(--border);white-space:nowrap;justify-content:space-between;gap:6px;padding:2px 0;display:flex}.trade-entry{border-bottom:1px solid var(--border)}.trade-entry .trade-row{border-bottom:none}.trade-row-sub{color:var(--muted);padding-top:0;font-size:11px}.rejection-list{max-height:280px}.rejection-entry{border-bottom:1px solid var(--border);padding:4px 0}.rejection-head{color:var(--muted);white-space:nowrap;justify-content:space-between;gap:6px;font-size:11px;display:flex}.rejection-reason{overflow-wrap:anywhere;margin:2px 0 0;font-size:12px;line-height:1.45}.pnl-up{color:#26a69a}.pnl-down{color:#ef5350}.order-row{gap:4px;margin-bottom:8px;display:flex}.order-field{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;display:flex}.input{border:1px solid var(--border);background:var(--bg);width:96px;color:var(--text-h);font:inherit;text-align:right;border-radius:4px;padding:4px 8px;font-size:13px}.input:focus{border-color:var(--accent);outline:none}.btn-buy{color:#7fded4;border-color:#26a69a;flex:1;justify-content:center}.btn-sell{color:#ffa6a4;border-color:#ef5350;flex:1;justify-content:center}.btn-mini{padding:2px 8px;font-size:12px}.order-note{margin:8px 0 0;font-size:12px}.order-error{color:#ff9b9b;margin:6px 0 0;font-size:12px}.pos-list{flex-direction:column;gap:6px;display:flex}.pos-item{border-bottom:1px solid var(--border);padding-bottom:6px}.pos-row{white-space:nowrap;align-items:center;gap:6px;padding:2px 0;font-size:12px;display:flex}.pos-row span:nth-child(4){flex:1}.pos-sub{font-size:11px}.pos-edit{flex-wrap:wrap;align-items:center;gap:4px;margin-top:4px;display:flex}.pos-edit .input{width:84px}.settings-screen .panel{max-width:520px}.settings-actions{align-items:center;margin-top:12px}.day-boundary-select{width:auto}.settings-subhead{color:var(--text-h);margin:18px 0 6px;font-size:13px}.cost-input{align-items:center;gap:6px;display:flex}.cost-unit{text-align:left;width:72px}.license-screen .panel{max-width:640px}.license-screen .order-field{flex-direction:column;align-items:stretch;gap:4px;margin-bottom:10px}.license-screen .input{text-align:left;width:100%;padding:6px 10px}.license-key-display{letter-spacing:.08em;-webkit-user-select:all;user-select:all;font-size:20px}.record-actions{flex-wrap:wrap;gap:8px;margin:8px 0;display:flex}.record-file-input{display:none}.record-notice-error{color:#ff9b9b;margin:4px 0;font-size:13px}.dashboard-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.dashboard-filter{flex-wrap:wrap;gap:8px;margin:12px 0;display:flex}.dashboard-filter .input{width:auto;min-width:200px}.session-table{border-collapse:collapse;width:100%;font-size:14px;display:block;overflow-x:auto}.session-table th,.session-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:8px 10px}.session-table th.num,.session-table td.num{text-align:right;white-space:nowrap}.th-sort{font:inherit;color:var(--text);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.th-sort:hover{color:var(--text-h)}.session-row-name{font-weight:600}.session-row-sub{font-size:12px;line-height:1.5}.dashboard-head label.btn{cursor:pointer}.hover-tip{z-index:1000;border:1px solid var(--border);max-width:280px;color:var(--text-h);pointer-events:none;background:#22262e;border-radius:6px;padding:6px 9px;font-size:12px;line-height:1.45;position:fixed;box-shadow:0 4px 14px #00000073}.stat-grid dt[data-tip]{cursor:help;text-underline-offset:3px;-webkit-text-decoration:underline dotted #aeb4c073;text-decoration:underline dotted #aeb4c073}
