:root{--canvas:#080c12;--surface:#131722;--card:#1e2329;--border-default:#363a45;--border-subtle:#2a2e39;--text-primary:#d1d4dc;--text-secondary:#787b86;--text-muted:#434651;--blue:#2962ff;--green:#26a69a;--red:#ef5350}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--canvas);color:var(--text-primary);font-family:Inter,system-ui,-apple-system,sans-serif}.app{flex-direction:column;height:100%;display:flex;overflow:hidden}.workspace{flex:auto;min-height:0;display:flex}.chart-area{flex:auto;min-width:0;display:flex}.chart-pane{isolation:isolate;border:1px solid #0000;flex:1 1 0;min-width:0;position:relative}.chart-pane.focused{border-color:var(--border-default)}.chart-canvas{position:absolute;inset:0}.pane-header{z-index:10;align-items:center;gap:8px;display:flex;position:absolute;top:6px;left:8px}.pane-syms{gap:2px;display:flex}.pane-sym{background:var(--surface);border:1px solid var(--border-subtle);min-width:30px;height:22px;color:var(--text-secondary);letter-spacing:.04em;cursor:pointer;border-radius:4px;padding:0 7px;font-size:11px}.pane-sym:hover{color:var(--text-primary);border-color:var(--border-default)}.pane-sym.active{background:var(--blue);border-color:var(--blue);color:#fff}.pane-tf{color:var(--text-secondary);pointer-events:none;font-size:11px}.sidebar{background:var(--surface);border-left:1px solid var(--border-subtle);flex-direction:column;flex:0 0 280px;display:flex}.sidebar-body{min-height:0;color:var(--text-muted);flex:auto;padding:14px;font-size:13px;line-height:1.5;overflow-y:auto}.topbar{background:var(--surface);border-bottom:1px solid var(--border-subtle);flex:none;align-items:center;gap:8px;height:44px;padding:0 10px;display:flex}.brand{letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);padding-right:6px;font-size:12px}.tf-group{gap:2px;display:flex}.tf-btn{border:1px solid var(--border-subtle);min-width:34px;height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;padding:0 8px;font-size:12px}.tf-btn:hover{color:var(--text-primary);border-color:var(--border-default)}.tf-btn.active{background:var(--blue);border-color:var(--blue);color:#fff}.spacer{flex:auto}.icon-btn{border:1px solid var(--border-subtle);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;display:flex}.icon-btn:hover{color:var(--text-primary);border-color:var(--border-default)}.icon-btn.active{color:#fff;background:var(--blue);border-color:var(--blue)}.settings-contract{gap:2px;margin-bottom:14px;display:flex}.contract-tab{background:var(--card);border:1px solid var(--border-subtle);height:28px;color:var(--text-secondary);letter-spacing:.04em;cursor:pointer;border-radius:4px;flex:1;font-size:12px}.contract-tab:hover{color:var(--text-primary);border-color:var(--border-default)}.contract-tab.active{background:var(--blue);border-color:var(--blue);color:#fff}.setting-toplevel{border-bottom:1px solid var(--border-subtle);margin-bottom:14px;padding-bottom:10px}.setting-section{margin-bottom:18px}.setting-section-title{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;width:100%;color:var(--text-secondary);background:0 0;border:none;align-items:center;gap:6px;margin-bottom:6px;padding:0;font-family:inherit;font-size:11px;display:flex}.setting-section-title:hover{color:var(--text-primary)}.section-caret{font-size:9px;line-height:1;transition:transform .12s}.section-caret.open{transform:rotate(90deg)}.setting-row{justify-content:space-between;align-items:center;gap:10px;height:30px;display:flex}.setting-label{color:var(--text-primary);font-size:12px}.num-input{background:var(--canvas);border:1px solid var(--border-default);width:66px;height:26px;color:var(--text-primary);text-align:right;font-variant-numeric:tabular-nums;appearance:textfield;border-radius:4px;padding:0 8px;font-size:12px}.num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.num-input:focus{border-color:var(--blue);outline:none}.toggle{border:1px solid var(--border-default);background:var(--card);cursor:pointer;border-radius:9px;width:34px;height:18px;padding:0;position:relative}.toggle.on{background:var(--blue);border-color:var(--blue)}.toggle-knob{background:var(--text-secondary);border-radius:50%;width:14px;height:14px;transition:transform .12s,background .12s;position:absolute;top:1px;left:1px}.toggle.on .toggle-knob{background:#fff;transform:translate(16px)}
