:root{--page: #0d0d0d;--surface: #1a1a19;--ink-primary: #ffffff;--ink-secondary: #c3c2b7;--ink-muted: #898781;--hairline: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--series: #3987e5;--up: #0ca30c;--down: #d03b3b;--warn: #fab219}*{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:var(--baseline) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--baseline);border-radius:8px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--ink-muted);background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}html,body,#root{height:100%;margin:0}body{background:var(--page);color:var(--ink-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;-webkit-user-select:none;user-select:none}.app{display:grid;grid-template-columns:260px 1fr;height:100vh;overflow:hidden}.sidebar{display:flex;flex-direction:column;gap:16px;padding:16px 12px;background:var(--surface);border-right:1px solid var(--hairline);overflow-y:auto}.brand{padding:4px 8px;font-size:15px;font-weight:600}.logo{display:inline-flex;align-items:center;gap:8px}.logo-mark{flex-shrink:0}.logo-word{color:var(--ink-primary);letter-spacing:-.01em}.logo-plus{color:var(--series)}.wl-section{display:flex;flex-direction:column;gap:2px}.wl-title{padding:4px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.wl-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label price" "label pct";row-gap:1px;align-items:center;padding:6px 8px;border:none;border-left:2px solid transparent;border-radius:6px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.wl-row:hover{background:#ffffff0a}.wl-row.active{background:#3987e51f;border-left-color:var(--series)}.wl-label{grid-area:label;display:flex;align-items:center;gap:6px;color:var(--ink-secondary);font-weight:600}.wl-tag{padding:1px 5px;border-radius:4px;background:var(--baseline);color:var(--ink-muted);font-size:10px;font-weight:400}.wl-price{grid-area:price;justify-self:end;color:var(--ink-primary);font-variant-numeric:tabular-nums}.wl-pct{grid-area:pct;justify-self:end;font-size:12px;font-variant-numeric:tabular-nums}.up{color:var(--up)}.down{color:var(--down)}.account{display:flex;align-items:center;gap:8px;margin-top:auto;padding:8px;border-top:1px solid var(--hairline)}.account-email{overflow:hidden;color:var(--ink-secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.account-logout{flex-shrink:0;padding:4px 8px;border:1px solid var(--hairline);border-radius:6px;background:transparent;color:var(--ink-muted);font:inherit;font-size:11px;cursor:pointer}.account-logout:hover{border-color:var(--baseline);color:var(--ink-primary)}.conn{display:flex;align-items:center;gap:8px;padding:8px;color:var(--ink-muted);font-size:12px}.conn-dot{width:8px;height:8px;border-radius:50%;background:var(--warn)}.conn-dot.live{background:var(--up)}.conn-dot.error{background:var(--down)}.main{display:flex;flex-direction:column;gap:16px;min-width:0;min-height:0;padding:16px}.ticker{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:16px 20px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.ticker-main{display:flex;align-items:baseline;gap:16px;min-width:0}.ticker-symbol{display:flex;align-items:center;gap:6px;color:var(--ink-secondary);font-size:15px;font-weight:600;white-space:nowrap}.ticker-price{font-size:34px;font-weight:600;line-height:1;transition:color .15s ease}.ticker-price.up{color:var(--up)}.ticker-price.down{color:var(--down)}.ticker-pct{font-size:14px;font-weight:600;white-space:nowrap}.ticker-stats{display:flex;gap:24px}.stat{display:flex;flex-direction:column;gap:2px}.stat-label{color:var(--ink-muted);font-size:11px;white-space:nowrap}.stat-value{color:var(--ink-primary);font-variant-numeric:tabular-nums}.chart-card{display:flex;flex:1;flex-direction:column;min-height:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.chart-toolbar{display:flex;flex-wrap:wrap;gap:4px;padding:10px 12px;border-bottom:1px solid var(--hairline)}.interval-btn{padding:4px 10px;border:none;border-radius:6px;background:transparent;color:var(--ink-muted);font:inherit;font-size:12px;cursor:pointer}.interval-btn:hover{background:#ffffff0a;color:var(--ink-secondary)}.interval-btn.active{background:#3987e529;color:var(--ink-primary)}.toolbar-sep{align-self:stretch;width:1px;margin:0 6px;background:var(--hairline)}.chart-area{flex:1;min-height:0}.content-row{display:flex;flex:1;gap:16px;min-height:220px}.analysis-col{display:flex;flex-direction:column;gap:12px;width:280px;flex-shrink:0;min-height:0;overflow-y:auto}.an-col-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;padding:0 2px}.an-col-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.an-expand{padding:2px 8px;border:none;border-radius:6px;background:transparent;color:var(--ink-muted);font-size:14px;cursor:pointer}.an-expand:hover,.an-expand.open{background:#3987e529;color:var(--series)}.an-col-actions{display:flex;align-items:center;gap:2px}.ind-settings{position:relative}.ind-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:20;display:flex;flex-direction:column;gap:10px;width:230px;max-height:60vh;overflow-y:auto;padding:12px;background:var(--surface);border:1px solid var(--baseline);border-radius:10px;box-shadow:0 8px 24px #00000080}.ind-group{display:flex;flex-direction:column;gap:2px}.ind-row{display:flex;align-items:center;gap:8px;padding:3px 4px;border-radius:6px;color:var(--ink-secondary);font-size:12px;cursor:pointer}.ind-row:hover{background:#ffffff0a}.ind-row input{accent-color:var(--series);cursor:pointer}.analysis{display:flex;flex-direction:column;gap:10px;flex-shrink:0;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.an-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.an-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--ink-secondary)}.an-follow{padding:1px 5px;border-radius:4px;background:#3987e529;color:var(--series);font-size:10px;font-weight:600}.an-close{padding:0 6px;border:none;border-radius:4px;background:transparent;color:var(--ink-muted);font-size:15px;line-height:1.4;cursor:pointer}.an-close:hover{background:#d03b3b1f;color:var(--down)}.an-picker{display:flex;gap:6px;flex-shrink:0}.an-picker select{flex:1;min-width:0;padding:6px 8px;border:1px solid var(--baseline);border-radius:8px;background:var(--surface);color:var(--ink-secondary);font:inherit;font-size:12px;cursor:pointer}.an-picker select:hover{border-color:var(--ink-muted)}.an-add-btn{width:34px;flex-shrink:0;border:1px dashed var(--baseline);border-radius:8px;background:transparent;color:var(--ink-muted);font:inherit;font-size:15px;cursor:pointer}.an-add-btn:hover{border-color:var(--series);color:var(--series)}.gaugev{display:flex;gap:12px;align-items:stretch}.gaugev-track{position:relative;width:8px;min-height:120px;flex-shrink:0;border-radius:4px;background:linear-gradient(to top,rgba(208,59,59,.55),rgba(208,59,59,.15) 38%,var(--baseline) 50%,rgba(12,163,12,.15) 62%,rgba(12,163,12,.55))}.gaugev-mid{position:absolute;top:50%;left:-3px;right:-3px;height:1px;background:var(--baseline)}.gaugev-marker{position:absolute;left:50%;width:14px;height:14px;border:3px solid var(--surface);border-radius:50%;background:var(--ink-primary);box-shadow:0 0 0 1px var(--border);transform:translate(-50%,50%);transition:bottom .3s ease}.gaugev-body{display:flex;flex:1;flex-direction:column;gap:8px;min-width:0}.tf-blocks.compact{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.tf-blocks.compact .tf-block{padding:4px 2px;font-size:10px}.tf-blocks.compact .tf-name{font-size:11px}.dock{display:flex;gap:16px;flex-shrink:0;max-height:320px}.ticket{overflow-y:auto}.dock-card{min-height:0}.positions{overflow-y:auto}.dock-card{display:flex;flex-direction:column;gap:8px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.ticket{width:360px;flex-shrink:0}.positions{flex:1;min-width:0}.dock-title{font-size:12px;font-weight:600;color:var(--ink-secondary)}.dock-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.dock-head-left{display:flex;align-items:center;gap:12px}.dock-stats{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.dock-stats b{color:var(--ink-primary);font-variant-numeric:tabular-nums}.dock-stats .up b{color:var(--up)}.dock-stats .down b{color:var(--down)}.dock-reset{padding:2px 8px;border:1px solid var(--baseline);border-radius:6px;background:transparent;color:var(--ink-muted);font:inherit;font-size:11px;cursor:pointer}.dock-reset:hover{border-color:var(--down);color:var(--down)}.ticket-quote{display:flex;align-items:baseline;gap:14px;font-size:12px;color:var(--ink-muted)}.ticket-quote b{color:var(--ink-primary);font-variant-numeric:tabular-nums;font-weight:600}.ticket-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.ticket-row input{flex:1;min-width:0;padding:7px 10px;border:1px solid var(--baseline);border-radius:8px;background:var(--page);color:var(--ink-primary);font:inherit;font-size:13px;font-variant-numeric:tabular-nums}.ticket-row input:focus{outline:none;border-color:var(--series)}.ticket-unit{color:var(--ink-muted);font-size:12px;white-space:nowrap}.ticket-row select{padding:6px 8px;border:1px solid var(--baseline);border-radius:8px;background:var(--surface);color:var(--ink-secondary);font:inherit;font-size:12px;cursor:pointer;min-width:0;flex:1}.ticket-row select:disabled{opacity:.5;cursor:default}.ticket-row input:disabled{opacity:.5}.ticket-row input::placeholder{color:var(--ink-muted)}.bot-order{max-width:80px}.seg{display:flex;flex-shrink:0;border:1px solid var(--baseline);border-radius:8px;overflow:hidden}.seg-btn{padding:6px 10px;border:none;background:transparent;color:var(--ink-muted);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.seg-btn.on{background:#3987e52e;color:var(--series)}.seg-btn.on-up{background:#0ca30c33;color:var(--up)}.seg-btn.on-down{background:#d03b3b33;color:var(--down)}.lev-select{max-width:74px}.pos-liq{color:var(--warn)}.btn-buy,.btn-sell{padding:7px 14px;border:none;border-radius:8px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.btn-buy{background:#0ca30c2e;color:var(--up)}.btn-buy:hover{background:#0ca30c4d}.btn-sell{background:#d03b3b2e;color:var(--down)}.btn-sell:hover{background:#d03b3b4d}.ticket-msg{font-size:12px}.pos-table{display:flex;flex-direction:column;gap:2px}.pos-row{display:grid;grid-template-columns:74px 108px .9fr 1fr 1fr 1fr 1.4fr 1.1fr 52px;align-items:center;gap:6px;padding:3px 6px;border-radius:6px;font-size:11.5px;font-variant-numeric:tabular-nums}.pos-row:not(.pos-header):hover{background:#ffffff0a}.pos-header{color:var(--ink-muted);font-size:11px}.pos-sym{padding:0;border:none;background:transparent;color:var(--ink-secondary);font:inherit;font-weight:600;text-align:left;cursor:pointer}.pos-sym:hover{color:var(--series)}.pos-close{padding:2px 8px;border:1px solid var(--baseline);border-radius:6px;background:transparent;color:var(--ink-muted);font:inherit;font-size:11px;cursor:pointer}.pos-close:hover{border-color:var(--down);color:var(--down)}.trade-history{display:flex;flex-direction:column;gap:2px;padding-top:4px;border-top:1px solid var(--hairline)}.trade-history-tall{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}.bot-hero{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;flex-shrink:0}.hero-tile{display:flex;flex-direction:column;gap:6px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.hero-label{color:var(--ink-muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.hero-value{color:var(--ink-primary);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums}.hero-status{display:flex;align-items:center;gap:8px;font-size:20px;text-transform:capitalize}.bot-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.bot-summary{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--baseline);border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.bot-summary:hover{border-color:var(--series);background:#3987e514}.bot-summary .dock-title{font-size:12px;font-weight:600;color:var(--ink-secondary)}.bot-config .ticket-row{margin-top:4px}.bot-row{display:flex;gap:16px;min-height:360px;flex-shrink:0}.bot-chart-card{flex:1;min-width:0}.bot-chart-card .chart-area{flex:1;min-height:280px}.bot-side{display:flex;flex-direction:column;gap:16px;width:300px;flex-shrink:0}.w-row{display:grid;grid-template-columns:96px 1fr 46px;align-items:center;gap:8px;font-size:12px}.w-name{color:var(--ink-muted)}.w-bar{height:8px;border-radius:4px;background:var(--baseline);overflow:hidden}.w-fill{height:100%;border-radius:4px;transition:width .3s ease}.w-fill.pos{background:var(--up)}.w-fill.neg{background:var(--down)}.w-val{text-align:right;font-variant-numeric:tabular-nums}.pred-feed{display:flex;flex-direction:column;gap:3px;max-height:240px;overflow-y:auto;font-size:12px;font-variant-numeric:tabular-nums}.pred-row{color:var(--ink-secondary)}.filters-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex-shrink:0}.ops-feed{max-height:200px}.ops-feed-tall{max-height:480px}.pct-input{max-width:64px}.bot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.bot-card{display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;cursor:pointer}.bot-card:hover{border-color:var(--series)}.bot-card-head{display:flex;align-items:center;gap:8px}.bot-name-input{flex:1;min-width:0;padding:3px 6px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink-primary);font:inherit;font-size:13px;font-weight:600}.bot-name-input:hover,.bot-name-input:focus{border-color:var(--baseline);background:var(--page);outline:none}.bot-card-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 12px}.bot-card-stats .an-label{display:block;font-size:10px}.bot-card-stats .an-value{font-size:13px}.bot-open-tag{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 8px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid var(--hairline)}.bot-open-tag.long{background:#0ca30c24;color:var(--up);border-color:#0ca30c4d}.bot-open-tag.short{background:#d03b3b24;color:var(--down);border-color:#d03b3b4d}.bot-open-tag.flat{background:transparent}.bot-open-tag .an-note{font-weight:400}.opt-results{display:flex;flex-direction:column;gap:4px;max-height:280px;overflow-y:auto}.opt-row{display:grid;grid-template-columns:34px 64px 1fr 2fr 74px;align-items:center;gap:10px;padding:5px 8px;border-radius:8px;background:#ffffff05;font-size:12px;font-variant-numeric:tabular-nums}.opt-row-bt{grid-template-columns:34px 64px 72px 1.3fr 1.7fr 74px}.opt-metrics{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opt-rank{color:var(--ink-muted);font-weight:600}.opt-indicators{overflow:hidden;color:var(--ink-secondary);text-overflow:ellipsis;white-space:nowrap}.opt-pager{display:flex;align-items:center;gap:10px}.opt-row-click{cursor:pointer}.opt-row-click:hover{background:#ffffff0a}.opt-row-click.selected{background:#3987e51f;box-shadow:inset 2px 0 0 var(--series)}.an-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:13px}.an-label{color:var(--ink-muted)}.an-value{color:var(--ink-primary);font-variant-numeric:tabular-nums;text-align:right}.an-dist{color:var(--ink-muted);font-size:11px}.an-divider{height:1px;background:var(--hairline)}.an-note{flex-shrink:0;color:var(--ink-muted);font-size:11px}.chip{padding:2px 8px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.pos-lado{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;max-width:100%}.pos-bot{max-width:100%;overflow:hidden;font-size:10px;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.chip.up{background:#0ca30c26;color:var(--up)}.chip.down{background:#d03b3b26;color:var(--down)}.chip.warn{background:#fab21926;color:var(--warn)}.chip.muted{background:var(--baseline);color:var(--ink-secondary)}.chip.on{background:#3987e52e;color:var(--series)}.chip.off{background:transparent;color:var(--ink-muted);border:1px solid var(--hairline)}.indicator-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.tech-page{display:flex;flex:1;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.tech-header{display:flex;align-items:baseline;gap:16px;flex-shrink:0}.back-btn{padding:6px 12px;border:1px solid var(--hairline);border-radius:8px;background:var(--surface);color:var(--ink-secondary);font:inherit;font-size:13px;cursor:pointer}.back-btn:hover{border-color:var(--baseline);color:var(--ink-primary)}.tech-title{font-size:17px;font-weight:600}.tech-price{margin-left:auto;font-size:15px;font-variant-numeric:tabular-nums}.tech-consensus{flex-shrink:0;gap:14px}.consensus-line{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.consensus-sub{display:flex;gap:16px;flex-wrap:wrap}.group-chips{display:flex;gap:6px;flex-wrap:wrap}.consensus-verdict{font-size:24px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.consensus-verdict.muted{color:var(--ink-secondary)}.gauge{display:flex;flex-direction:column;gap:6px}.gauge-head{display:flex;align-items:baseline;gap:12px}.gauge-band{font-size:16px;font-weight:700}.gauge-band.muted{color:var(--ink-secondary)}.gauge-track{position:relative;height:8px;border-radius:4px;background:linear-gradient(to right,rgba(208,59,59,.55),rgba(208,59,59,.15) 38%,var(--baseline) 50%,rgba(12,163,12,.15) 62%,rgba(12,163,12,.55))}.gauge-mid{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--baseline)}.gauge-marker{position:absolute;top:50%;width:14px;height:14px;border:3px solid var(--surface);border-radius:50%;background:var(--ink-primary);box-shadow:0 0 0 1px var(--border);transform:translate(-50%,-50%);transition:left .3s ease}.gauge-labels{display:flex;justify-content:space-between;color:var(--ink-muted);font-size:10px;text-transform:uppercase;letter-spacing:.05em}.tf-blocks{display:flex;gap:6px}.tf-block{display:flex;flex:1;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:8px;font-size:11px}.tf-block.up{background:#0ca30c26;color:var(--up)}.tf-block.down{background:#d03b3b26;color:var(--down)}.tf-block.muted,.tf-block.loading{background:var(--baseline);color:var(--ink-secondary)}.tf-block.loading{color:var(--ink-muted)}.tf-name{font-size:12px;font-weight:700}.tech-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;flex-shrink:0}.auth-page{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--page)}.auth-card{display:flex;flex-direction:column;gap:12px;width:320px;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.auth-title{margin-bottom:4px;font-size:15px;font-weight:600;color:var(--ink-secondary)}.auth-row{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink-muted)}.auth-row input{padding:8px 10px;border:1px solid var(--baseline);border-radius:8px;background:var(--page);color:var(--ink-primary);font:inherit;font-size:13px}.auth-row input:focus{outline:none;border-color:var(--series)}.auth-switch{display:flex;justify-content:space-between;gap:8px}.auth-switch button{padding:0;border:none;background:transparent;color:var(--ink-muted);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer}.auth-switch button:hover{color:var(--ink-primary)}
