@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--bg-primary:#0a0e17;--bg-secondary:#111827;--bg-tertiary:#1a2332;--bg-card:#151f2e;--bg-card-hover:#1c2940;--bg-input:#0d1421;--border-primary:#1e2d3d;--border-secondary:#2a3a4e;--border-accent:#3b82f64d;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--text-inverse:#0a0e17;--color-buy:#10b981;--color-buy-soft:#10b98126;--color-buy-glow:#10b98166;--color-sell:#ef4444;--color-sell-soft:#ef444426;--color-sell-glow:#ef444466;--color-neutral:#6366f1;--color-neutral-soft:#6366f126;--accent-primary:#3b82f6;--accent-primary-soft:#3b82f626;--accent-secondary:#8b5cf6;--accent-gradient:linear-gradient(135deg, #3b82f6, #8b5cf6);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-3xl:48px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 24px #00000080;--shadow-glow-buy:0 0 20px #10b98140;--shadow-glow-sell:0 0 20px #ef444440;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease;--sidebar-width:360px;--header-height:56px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);height:100vh;line-height:1.5;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.app,.app-container{background:var(--bg-primary);flex-direction:column;height:100vh;max-height:100vh;display:flex;overflow:hidden}.app-header{height:var(--header-height);padding:0 var(--space-lg);background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);z-index:100;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.app-header .logo{align-items:center;gap:var(--space-sm);letter-spacing:-.02em;font-size:1.15rem;font-weight:700;display:flex}.app-header .logo-icon{border-radius:var(--radius-md);background:var(--accent-gradient);justify-content:center;align-items:center;width:28px;height:28px;font-size:.85rem;display:flex}.header-left{align-items:center;gap:var(--space-lg);display:flex}.header-left .logo{white-space:nowrap}.header-controls{align-items:center;gap:var(--space-md);display:flex}.app-body{flex:1;min-height:0;display:flex;overflow:hidden}.main-content{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-left:1px solid var(--border-primary);flex-direction:column;flex-shrink:0;height:100%;min-height:0;max-height:100%;display:flex;overflow:hidden}.sidebar-addons-section{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sidebar-signals-section{flex-shrink:0}.selector-group{align-items:center;gap:var(--space-sm);display:flex}.symbol-selector{align-items:center;gap:var(--space-xs);background:var(--bg-tertiary);border-radius:var(--radius-md);padding:var(--space-xs);display:flex}.symbol-btn{border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;padding:6px 14px;font-size:.85rem;font-weight:600}.symbol-btn:hover{color:var(--text-primary);background:var(--bg-card-hover)}.symbol-btn.active{background:var(--accent-primary);color:#fff;box-shadow:var(--shadow-sm)}.timeframe-selector{background:var(--bg-tertiary);border-radius:var(--radius-md);padding:var(--space-xs);align-items:center;gap:2px;display:flex}.tf-btn{border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;padding:5px 10px;font-size:.75rem;font-weight:500}.tf-btn:hover{color:var(--text-secondary);background:var(--bg-card-hover)}.tf-btn.active{background:var(--accent-primary-soft);color:var(--accent-primary)}.status-indicator{align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);padding:4px 12px;font-size:.75rem;font-weight:500;display:flex}.status-dot{border-radius:50%;width:7px;height:7px;animation:2s infinite pulse}.status-indicator.connected .status-dot{background:var(--color-buy);box-shadow:0 0 6px var(--color-buy-glow)}.status-indicator.disconnected .status-dot{background:var(--color-sell);box-shadow:0 0 6px var(--color-sell-glow)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.chart-container{background:var(--bg-primary);flex:1;position:relative;overflow:hidden}.chart-container .tv-lightweight-charts{width:100%!important;height:100%!important}.chart-loading{background:var(--bg-primary);z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.chart-loading .spinner{border:3px solid var(--border-secondary);border-top-color:var(--accent-primary);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}.chart-loading-history{border:1px solid var(--border-secondary);border-radius:var(--radius-full);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-secondary);font-size:.75rem;font-family:var(--font-sans);box-shadow:var(--shadow-md);z-index:9;pointer-events:none;background:#0f172ae0;align-items:center;gap:8px;padding:6px 14px;font-weight:500;animation:.2s fadeIn;display:flex;position:absolute;top:16px;left:16px}.chart-loading-history .spinner-sm{border:2px solid var(--border-secondary);border-top-color:var(--accent-primary);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.signal-badge{align-items:center;gap:var(--space-xs);border-radius:var(--radius-full);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.signal-badge.buy{background:var(--color-buy-soft);color:var(--color-buy);border:1px solid #10b9814d}.signal-badge.sell{background:var(--color-sell-soft);color:var(--color-sell);border:1px solid #ef44444d}.signal-badge.neutral{background:var(--color-neutral-soft);color:var(--color-neutral);border:1px solid #6366f14d}.sidebar-section{padding:var(--space-lg);border-bottom:1px solid var(--border-primary)}.sidebar-section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:var(--space-md);font-size:.7rem;font-weight:700}.addon-list{gap:var(--space-sm);flex-direction:column;flex:1;min-height:0;padding:0 16px 16px;display:flex;overflow:hidden auto}.addon-list::-webkit-scrollbar{width:5px}.addon-list::-webkit-scrollbar-track{background:0 0}.addon-list::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:4px}.addon-list::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.addon-card{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);transition:all var(--transition-base);cursor:grab}.addon-card:hover{border-color:var(--border-secondary);background:var(--bg-card-hover)}.addon-card.active{border-color:var(--accent-primary);box-shadow:0 0 0 1px var(--border-accent)}.addon-card.dragging{opacity:.5;cursor:grabbing}.addon-card-header{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.addon-card-info{align-items:center;gap:var(--space-sm);flex:1;min-width:0;display:flex}.addon-drag-handle{cursor:grab;color:var(--text-muted);flex-direction:column;flex-shrink:0;gap:2px;padding:4px 2px;display:flex}.addon-drag-handle span{background:currentColor;border-radius:1px;width:14px;height:2px;display:block}.addon-name{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.addon-category{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);background:var(--bg-tertiary);border-radius:var(--radius-sm);padding:2px 6px;font-size:.65rem;font-weight:500}.addon-controls{align-items:center;gap:var(--space-sm);flex-shrink:0;display:flex}.addon-settings-btn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1rem;display:flex}.addon-settings-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.toggle{flex-shrink:0;width:38px;height:20px;position:relative}.toggle input{opacity:0;width:0;height:0}.toggle-slider{background:var(--bg-tertiary);border:1px solid var(--border-secondary);border-radius:var(--radius-full);cursor:pointer;transition:all var(--transition-base);position:absolute;inset:0}.toggle-slider:before{content:"";background:var(--text-muted);width:14px;height:14px;transition:all var(--transition-base);border-radius:50%;position:absolute;top:50%;left:2px;transform:translateY(-50%)}.toggle input:checked+.toggle-slider{background:var(--accent-primary-soft);border-color:var(--accent-primary)}.toggle input:checked+.toggle-slider:before{background:var(--accent-primary);transform:translateY(-50%)translate(18px)}.addon-signal-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.addon-signal-dot.buy{background:var(--color-buy);box-shadow:0 0 6px var(--color-buy-glow)}.addon-signal-dot.sell{background:var(--color-sell);box-shadow:0 0 6px var(--color-sell-glow)}.addon-signal-dot.neutral{background:var(--text-muted)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;animation:fadeIn var(--transition-fast);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-secondary);border:1px solid var(--border-secondary);border-radius:var(--radius-xl);width:440px;max-height:80vh;box-shadow:var(--shadow-lg);animation:slideUp var(--transition-base);overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:var(--space-xl);border-bottom:1px solid var(--border-primary);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:1rem;font-weight:700}.modal-close{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.2rem;display:flex}.modal-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.modal-body{padding:var(--space-xl);gap:var(--space-lg);flex-direction:column;display:flex}.param-group{gap:var(--space-xs);flex-direction:column;display:flex}.param-label{color:var(--text-secondary);font-size:.8rem;font-weight:600}.param-description{color:var(--text-muted);font-size:.7rem}.param-input{background:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font-mono);transition:border-color var(--transition-fast);outline:none;padding:8px 12px;font-size:.85rem}.param-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary-soft)}.param-range-row{align-items:center;gap:var(--space-md);display:flex}.param-range{-webkit-appearance:none;background:var(--bg-tertiary);border-radius:2px;outline:none;flex:1;height:4px}.param-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-primary);cursor:pointer;border:2px solid var(--bg-secondary);width:16px;height:16px;box-shadow:0 0 0 1px var(--accent-primary);border-radius:50%}.param-value{font-family:var(--font-mono);color:var(--accent-primary);text-align:right;min-width:48px;font-size:.8rem}.param-select{background:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;transition:border-color var(--transition-fast);outline:none;padding:8px 12px;font-size:.85rem}.param-select:focus{border-color:var(--accent-primary)}.signal-log{min-height:0;padding:var(--space-md) var(--space-lg);gap:var(--space-sm);flex-direction:column;flex:1;display:flex;overflow:hidden auto}.signal-log::-webkit-scrollbar{width:5px}.signal-log::-webkit-scrollbar-track{background:0 0}.signal-log::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:4px}.signal-log::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.signal-log-item{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border-primary);cursor:pointer;transition:all var(--transition-fast);display:flex}.signal-log-item:hover{border-color:var(--border-secondary);background:var(--bg-card-hover)}.signal-log-item.active{border-color:var(--accent-primary);background:#3b82f61f;box-shadow:0 0 10px #3b82f633}.signal-log-item.active.buy{border-color:var(--color-buy);background:#10b9811f;box-shadow:0 0 10px #10b98133}.signal-log-item.active.sell{border-color:var(--color-sell);background:#ef44441f;box-shadow:0 0 10px #ef444433}.signal-log-item .signal-locate-icon{opacity:.5;transition:opacity var(--transition-fast), transform var(--transition-fast);font-size:.75rem}.signal-log-item:hover .signal-locate-icon,.signal-log-item.active .signal-locate-icon{opacity:1;transform:scale(1.15)}.signal-log-item .signal-time{font-family:var(--font-mono);color:var(--text-muted);min-width:70px;font-size:.7rem}.signal-log-item .signal-type{font-family:var(--font-mono);min-width:40px;font-size:.75rem;font-weight:700}.signal-log-item .signal-type.buy{color:var(--color-buy)}.signal-log-item .signal-type.sell{color:var(--color-sell)}.signal-log-item .signal-icon{font-size:.85rem}.signal-log-item .signal-strength{font-family:var(--font-mono);color:var(--text-muted);margin-left:auto;font-size:.7rem}.signal-detail{padding:var(--space-sm) var(--space-md);border-top:1px solid var(--border-primary)}.signal-detail-row{justify-content:space-between;align-items:center;padding:3px 0;font-size:.75rem;display:flex}.signal-detail-addon{color:var(--text-secondary)}.signal-detail-reason{color:var(--text-muted);text-align:right;text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:.7rem;overflow:hidden}.aggregation-selector{padding:var(--space-lg);border-bottom:1px solid var(--border-primary)}.aggregation-selector select{background:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;outline:none;padding:8px 12px;font-size:.85rem}.current-signal{align-items:center;gap:var(--space-sm);border-radius:var(--radius-lg);font-family:var(--font-mono);letter-spacing:.05em;transition:all var(--transition-base);padding:6px 16px;font-size:.85rem;font-weight:700;display:flex}.current-signal.buy{background:var(--color-buy-soft);color:var(--color-buy);box-shadow:var(--shadow-glow-buy);border:1px solid #10b9814d}.current-signal.sell{background:var(--color-sell-soft);color:var(--color-sell);box-shadow:var(--shadow-glow-sell);border:1px solid #ef44444d}.current-signal.neutral{background:var(--bg-tertiary);color:var(--text-muted);border:1px solid var(--border-primary)}.price-display{align-items:baseline;gap:var(--space-sm);font-family:var(--font-mono);display:flex}.price-display .price{letter-spacing:-.02em;font-size:1.3rem;font-weight:700}.price-display .price-change{font-size:.8rem;font-weight:600}.price-display .price-change.positive{color:var(--color-buy)}.price-display .price-change.negative{color:var(--color-sell)}.empty-state{padding:var(--space-3xl);color:var(--text-muted);text-align:center;justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;display:flex}.empty-state-icon{opacity:.4;font-size:2rem}.empty-state-text{font-size:.85rem}.btn{justify-content:center;align-items:center;gap:var(--space-sm);border-radius:var(--radius-md);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);border:none;padding:8px 16px;font-size:.85rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{box-shadow:var(--shadow-md);background:#2563eb}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border-primary);background:0 0}.btn-ghost:hover{background:var(--bg-tertiary);border-color:var(--border-secondary);color:var(--text-primary)}.btn-sm{padding:5px 10px;font-size:.75rem}.logout-btn{border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;-webkit-tap-highlight-color:transparent;background:0 0;align-items:center;gap:5px;padding:5px 12px;font-size:.78rem;font-weight:500;display:flex}.logout-btn:hover{background:var(--color-sell-soft);color:var(--color-sell);border-color:#ef44444d}.logout-icon{font-size:.9rem;line-height:1}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg, var(--bg-tertiary) 25%, var(--bg-card-hover) 50%, var(--bg-tertiary) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}.export-pine-btn{border-radius:var(--radius-md);color:#34d399;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;background:linear-gradient(135deg,#10b98126 0%,#05966940 100%);border:1px solid #10b98166;align-items:center;gap:6px;padding:6px 14px;font-size:.8rem;font-weight:600;display:flex}.export-pine-btn:hover{color:#6ee7b7;background:linear-gradient(135deg,#10b98140 0%,#05966959 100%);border-color:#10b981;transform:translateY(-1px);box-shadow:0 0 12px #10b98140}.export-pine-btn:active{transform:translateY(0)}.pine-modal{background:#0d1322;border:1px solid #1e293bcc;flex-direction:column;width:760px;max-width:92vw;height:82vh;max-height:820px;display:flex;overflow:hidden}.pine-modal-title-wrap{align-items:center;gap:var(--space-sm);display:flex}.pine-badge{color:#fff;border-radius:var(--radius-full);letter-spacing:.05em;text-transform:uppercase;background:linear-gradient(135deg,#10b981,#059669);padding:3px 8px;font-size:.65rem;font-weight:700}.pine-modal-content{min-height:0;padding:var(--space-lg);gap:var(--space-md);flex-direction:column;flex:1;display:flex;overflow:hidden}.pine-meta-bar{align-items:center;gap:var(--space-lg);border:1px solid var(--border-primary);border-radius:var(--radius-md);background:#0f172a99;flex-shrink:0;padding:8px 14px;display:flex}.pine-meta-item{align-items:center;gap:6px;font-size:.78rem;display:flex}.pine-meta-label{color:var(--text-muted);font-weight:500}.pine-meta-val{color:var(--text-primary);font-weight:600;font-family:var(--font-mono)}.pine-instructions{color:#94a3b8;border-radius:var(--radius-md);background:#3b82f614;border:1px solid #3b82f633;flex-shrink:0;padding:8px 12px;font-size:.78rem;line-height:1.4}.pine-code-container{border:1px solid var(--border-primary);border-radius:var(--radius-lg);background:#060911;flex:1;min-height:0;position:relative;overflow:auto}.pine-code-container::-webkit-scrollbar{width:6px;height:6px}.pine-code-container::-webkit-scrollbar-track{background:0 0}.pine-code-container::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:4px}.pine-code{padding:var(--space-lg);font-family:var(--font-mono);color:#cbd5e1;white-space:pre;margin:0;font-size:.78rem;line-height:1.6}.pine-modal-footer{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-primary);background:var(--bg-secondary);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.pine-line-count{color:var(--text-muted);font-size:.75rem;font-family:var(--font-mono)}.pine-footer-actions{align-items:center;gap:var(--space-sm);display:flex}.btn-copied{color:#fff!important;background:#10b981!important}.chart-container{position:relative}.chart-legend{z-index:10;pointer-events:auto;-webkit-backdrop-filter:blur(12px);max-width:260px;font-family:var(--font-sans);background:#0a0e17bf;border:1px solid #1e2d3d99;border-radius:8px;padding:6px 10px;transition:opacity .2s;position:absolute;top:8px;left:8px}.chart-legend:hover{background:#0a0e17eb}.chart-legend-header{border-bottom:1px solid #ffffff0f;align-items:center;gap:8px;margin-bottom:4px;padding-bottom:4px;display:flex}.chart-legend-title{color:var(--text-secondary);letter-spacing:.3px;text-transform:uppercase;font-size:.7rem;font-weight:600}.chart-legend-mode{color:var(--accent-primary);background:var(--accent-primary-soft);border-radius:4px;margin-left:auto;padding:1px 6px;font-size:.6rem;font-weight:500}.chart-legend-addons{flex-direction:column;gap:2px;display:flex}.chart-legend-addon{align-items:center;gap:6px;padding:2px 0;transition:opacity .15s;display:flex}.chart-legend-addon:hover{opacity:.85}.chart-legend-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;transition:background .2s,box-shadow .2s}.chart-legend-dot.buy{background:var(--color-buy);box-shadow:0 0 6px var(--color-buy-glow)}.chart-legend-dot.sell{background:var(--color-sell);box-shadow:0 0 6px var(--color-sell-glow)}.chart-legend-dot.neutral{background:var(--text-muted);box-shadow:none}.chart-legend-addon-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:.68rem;font-weight:500;overflow:hidden}.chart-legend-signal{font-size:.58rem;font-weight:700;font-family:var(--font-mono);letter-spacing:.5px;border-radius:3px;margin-left:auto;padding:0 4px}.chart-legend-signal.buy{color:var(--color-buy);background:var(--color-buy-soft)}.chart-legend-signal.sell{color:var(--color-sell);background:var(--color-sell-soft)}.chart-tools-bar{z-index:20;-webkit-backdrop-filter:blur(12px);border-radius:var(--radius-md);-webkit-user-select:none;user-select:none;background:#0f172ae0;border:1px solid #334155b3;align-items:center;gap:3px;padding:3px 6px;display:flex;position:absolute;top:10px;right:65px;box-shadow:0 4px 16px #00000059}.chart-tool-btn{border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:4px 8px;font-size:.72rem;font-weight:600;display:flex}.chart-tool-btn .tool-icon{font-size:.8rem;line-height:1}.chart-tool-btn .tool-indicator{border-radius:50%;flex-shrink:0;width:5px;height:5px}.chart-tool-btn .tool-indicator.green{background:#10b981;box-shadow:0 0 6px #10b981}.chart-tool-btn .tool-indicator.red{background:#ef4444;box-shadow:0 0 6px #ef4444}.chart-tool-btn.long-btn:hover{color:#34d399;background:#10b98126;border-color:#10b9814d}.chart-tool-btn.short-btn:hover{color:#f87171;background:#ef444426;border-color:#ef44444d}.chart-tool-btn.reset-btn:hover{color:#60a5fa;background:#3b82f626;border-color:#3b82f64d}.chart-tool-btn.clear-btn{color:#f43f5e}.chart-tool-btn.clear-btn:hover{color:#fb7185;background:#f43f5e26;border-color:#f43f5e4d}.chart-tools-divider{background:#334155b3;width:1px;height:16px;margin:0 2px}.position-tools-overlay{pointer-events:none;z-index:10;position:absolute;inset:0;overflow:hidden}.position-svg-canvas{pointer-events:none;width:100%;height:100%}.position-group{pointer-events:all;cursor:grab}.position-group:active,.position-tools-overlay.is-dragging,.position-tools-overlay.is-dragging *{cursor:grabbing!important}.zone-rect{cursor:grab}.zone-rect.target-zone{fill:#10b9812e;transition:fill .15s}.position-group:hover .zone-rect.target-zone,.position-group.selected .zone-rect.target-zone{fill:#10b98142}.zone-rect.stop-zone{fill:#ef44442e;transition:fill .15s}.position-group:hover .zone-rect.stop-zone,.position-group.selected .zone-rect.stop-zone{fill:#ef444442}.boundary-line.target-line{stroke:#10b981;stroke-width:2px}.boundary-line.stop-line{stroke:#ef4444;stroke-width:2px}.boundary-line.entry-line{stroke:#94a3b8;stroke-width:1.5px;stroke-dasharray:4 3}.side-boundary-line{stroke:#94a3b859;stroke-width:1px;stroke-dasharray:3 3}.position-group.selected .side-boundary-line{stroke:#3b82f699;stroke-dasharray:none}.position-label-container{pointer-events:none;overflow:visible}.pos-stats-badge{-webkit-backdrop-filter:blur(8px);font-family:var(--font-sans);white-space:nowrap;background:#0f172ae0;border:1px solid #33415599;border-radius:4px;align-items:center;gap:5px;padding:3px 6px;font-size:.66rem;font-weight:600;display:inline-flex;box-shadow:0 2px 8px #00000059}.pos-stats-badge.target-badge{color:#a7f3d0;border-left:3px solid #10b981}.pos-stats-badge.stop-badge{color:#fecaca;border-left:3px solid #ef4444}.pos-badge-title{color:#f1f5f9;font-weight:700}.pos-badge-detail{opacity:.9}.pos-badge-rr{color:#34d399;letter-spacing:.3px;background:#10b98140;border-radius:3px;padding:1px 4px;font-size:.62rem;font-weight:700}.trade-outcome-line{filter:drop-shadow(0 2px 4px #0006);transition:all .1s}.trade-outcome-dot{filter:drop-shadow(0 0 6px #fff9);animation:1.8s infinite pulse-dot}@keyframes pulse-dot{0%,to{r:5px;opacity:1}50%{r:7px;opacity:.85}}.trade-outcome-badge{font-family:var(--font-sans);white-space:nowrap;-webkit-backdrop-filter:blur(8px);border-radius:4px;align-items:center;gap:4px;padding:3px 7px;font-size:.65rem;font-weight:600;display:inline-flex;box-shadow:0 3px 10px #00000073}.trade-outcome-badge.tp{color:#6ee7b7;background:#064e3be6;border:1px solid #10b981}.trade-outcome-badge.sl{color:#fca5a5;background:#7f1d1de6;border:1px solid #ef4444}.trade-outcome-badge.open{color:#93c5fd;background:#1e3a8ae6;border:1px solid #3b82f6}.drag-handle-group{cursor:pointer;pointer-events:all}.handle-hitbox{fill:#0000}.handle-hitbox.ns-resize{cursor:ns-resize}.handle-hitbox.ew-resize{cursor:ew-resize}.handle-hitbox.move-resize{cursor:move}.handle-dot{fill:#fff;stroke-width:2px;filter:drop-shadow(0 2px 4px #0009);transition:r .15s}.handle-dot.target-handle-dot{stroke:#10b981}.handle-dot.stop-handle-dot{stroke:#ef4444}.handle-dot.entry-handle-dot{stroke:#3b82f6}.handle-dot.width-handle-dot{stroke:#f59e0b}.drag-handle-group:hover .handle-dot{r:7px}.position-floating-toolbar{-webkit-backdrop-filter:blur(12px);border-radius:var(--radius-sm);z-index:30;pointer-events:all;-webkit-user-select:none;user-select:none;background:#0f172af0;border:1px solid #3b82f680;align-items:center;gap:6px;padding:3px 8px;animation:.15s ease-out fadeIn;display:flex;position:absolute;box-shadow:0 4px 14px #00000080}.pos-tool-type{color:#f1f5f9;font-size:.68rem;font-weight:700}.pos-tool-type.long{color:#34d399}.pos-tool-type.short{color:#f87171}.pos-tool-btn{color:#94a3b8;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #334155cc;border-radius:3px;padding:2px 6px;font-size:.66rem;font-weight:600}.pos-tool-btn.delete-btn:hover{color:#ef4444;background:#ef444433;border-color:#ef444466}.pos-tool-btn.close-btn{padding:2px 5px}.pos-tool-btn.close-btn:hover{color:#fff;background:#ffffff1f}.auth-loading{background:var(--bg-primary);justify-content:center;align-items:center;height:100vh;display:flex}.login-page{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.login-bg-grid{background-image:linear-gradient(#3b82f60a 1px,#0000 1px),linear-gradient(90deg,#3b82f60a 1px,#0000 1px);background-size:48px 48px;animation:20s linear infinite loginGridDrift;position:absolute;inset:0}@keyframes loginGridDrift{0%{transform:translate(0)}to{transform:translate(48px,48px)}}.login-card{z-index:1;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:var(--space-2xl);box-shadow:var(--shadow-lg), 0 0 80px #3b82f60f;position:relative}.login-logo{text-align:center;margin-bottom:var(--space-xl)}.login-logo-icon{border-radius:var(--radius-lg);background:var(--accent-gradient);width:52px;height:52px;margin-bottom:var(--space-md);justify-content:center;align-items:center;font-size:1.5rem;display:inline-flex;box-shadow:0 4px 20px #3b82f64d}.login-title{color:var(--text-primary);letter-spacing:-.03em;margin-top:var(--space-sm);font-size:1.5rem;font-weight:800}.login-subtitle{color:var(--text-muted);margin-top:var(--space-xs);font-size:.85rem}.login-error{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-sell-soft);border-radius:var(--radius-md);color:#fca5a5;margin-bottom:var(--space-lg);border:1px solid #ef444440;font-size:.82rem;display:flex}.login-form{gap:var(--space-lg);flex-direction:column;display:flex}.login-field{gap:var(--space-xs);flex-direction:column;display:flex}.login-field label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem;font-weight:600}.login-field input{background:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:10px 14px;font-size:.95rem}.login-field input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-soft)}.login-field input::placeholder{color:var(--text-muted);opacity:.6}.login-btn{margin-top:var(--space-sm);border-radius:var(--radius-md);background:var(--accent-gradient);color:#fff;font-family:var(--font-sans);cursor:pointer;transition:opacity var(--transition-fast), transform var(--transition-fast);border:none;justify-content:center;align-items:center;min-height:44px;padding:12px;font-size:.95rem;font-weight:700;display:flex}.login-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.login-btn:active:not(:disabled){transform:translateY(0)}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}.login-footer{text-align:center;margin-top:var(--space-xl);color:var(--text-muted);letter-spacing:.03em;font-size:.72rem}.logo-text-short{display:none}.mobile-hidden{display:none!important}.mobile-nav{display:none}@media (width<=900px){:root{--mobile-nav-height:60px}body{overflow:hidden}.app,.app-container{height:100dvh}.app-header{height:auto;padding:var(--space-xs) var(--space-sm);gap:var(--space-xs);flex-wrap:wrap}.header-left{gap:var(--space-sm);flex-shrink:0;min-width:0}.header-controls{flex:1;justify-content:flex-end}.logo-text{display:none}.logo-text-short{display:inline}.app-header .logo{flex-shrink:0;font-size:1rem}.app-header .logo-icon{width:24px;height:24px;font-size:.75rem}.selector-group{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:var(--space-xs);border-top:1px solid var(--border-primary);order:3;width:100%;padding-top:2px;overflow-x:auto}.selector-group::-webkit-scrollbar{display:none}.symbol-selector{flex-shrink:0;gap:2px;padding:2px}.symbol-btn{padding:4px 10px;font-size:.75rem}.timeframe-selector{flex-shrink:0;gap:1px;padding:2px}.tf-btn{padding:4px 7px;font-size:.68rem}.header-controls{gap:var(--space-xs);flex-shrink:0}.price-display .price{font-size:.95rem}.price-display .price-change{font-size:.68rem}.current-signal{gap:4px;padding:4px 10px;font-size:.72rem}.status-indicator{padding:3px 8px;font-size:.68rem}.status-indicator .status-label{display:none}.logout-btn{padding:3px 8px;font-size:.75rem}.logout-btn .logout-label{display:none}.app-body{min-height:0;padding-bottom:var(--mobile-nav-height);flex-direction:column;flex:1}.main-content{flex:1;min-height:0}.sidebar{border-left:none;flex:1;width:100%;min-height:0}.sidebar.mobile-sidebar{height:100%;position:relative}.sidebar-addons-section{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sidebar-signals-section{flex:1!important;min-height:0!important;max-height:none!important}.chart-legend{max-width:200px;padding:4px 8px}.chart-legend-title{font-size:.62rem}.chart-legend-mode{padding:1px 4px;font-size:.55rem}.chart-legend-addon-name{max-width:100px;font-size:.6rem}.chart-legend-signal{font-size:.52rem}.chart-legend-dot{width:5px;height:5px}.chart-tools-bar{gap:2px;padding:2px 4px;top:6px;right:48px}.chart-tool-btn{padding:3px 6px;font-size:.65rem}.pos-stats-badge{gap:3px;padding:2px 4px;font-size:.58rem}.mobile-nav{height:var(--mobile-nav-height);-webkit-backdrop-filter:blur(20px);z-index:200;padding-bottom:env(safe-area-inset-bottom,0px);background:#111827d9;border-top:1px solid #1e2d3d99;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 20px #0000004d}.mobile-nav-tab{color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:6px 0;display:flex;position:relative}.mobile-nav-tab.active{color:var(--accent-primary)}.mobile-nav-tab.active:before{content:"";background:var(--accent-gradient);border-radius:0 0 3px 3px;width:28px;height:3px;position:absolute;top:0;left:50%;transform:translate(-50%)}.mobile-nav-icon{font-size:1.2rem;line-height:1}.mobile-nav-label{letter-spacing:.02em;font-size:.62rem;font-weight:600}.mobile-nav-badge{background:var(--accent-primary);color:#fff;min-width:16px;height:16px;font-size:.55rem;font-weight:700;font-family:var(--font-mono);border-radius:var(--radius-full);justify-content:center;align-items:center;padding:0 4px;display:flex;position:absolute;top:4px;right:50%;transform:translate(14px);box-shadow:0 2px 6px #3b82f666}.modal{width:92vw;max-height:85vh;margin:0 auto}.modal-body{padding:var(--space-lg)}.pine-modal{width:96vw;height:88vh;max-height:none}.pine-meta-bar{gap:var(--space-sm);flex-wrap:wrap;padding:6px 10px}.pine-meta-item{font-size:.7rem}.pine-code{padding:var(--space-md);font-size:.7rem}.pine-modal-footer{gap:var(--space-sm);padding:var(--space-sm) var(--space-md);flex-wrap:wrap}.aggregation-selector{padding:var(--space-md) var(--space-lg)}.aggregation-selector select{min-height:40px;font-size:.9rem}.addon-card{padding:var(--space-md)}.addon-name{font-size:.9rem}.toggle{width:42px;height:24px}.toggle-slider:before{width:16px;height:16px}.toggle input:checked+.toggle-slider:before{transform:translateY(-50%)translate(18px)}.addon-settings-btn{width:36px;height:36px;font-size:1.1rem}.signal-log-item{padding:var(--space-sm) var(--space-md);min-height:44px}.signal-log-item .signal-time{min-width:80px;font-size:.72rem}.signal-log-item .signal-type{font-size:.78rem}.param-input{min-height:40px;padding:10px 14px;font-size:.9rem}.param-select{min-height:40px;font-size:.9rem}.param-range::-webkit-slider-thumb{width:22px;height:22px}.login-card{width:92vw;max-width:400px;padding:var(--space-xl)}.login-field input{min-height:44px;font-size:1rem}.login-btn{min-height:48px;font-size:1rem}}@media (width<=400px){.app-header{padding:0 var(--space-xs)}.symbol-btn{padding:3px 8px;font-size:.7rem}.tf-btn{padding:3px 6px;font-size:.65rem}.price-display .price{font-size:.85rem}.current-signal{padding:3px 8px;font-size:.68rem}.mobile-nav{height:54px}.mobile-nav-icon{font-size:1.05rem}.mobile-nav-label{font-size:.56rem}.chart-legend{max-width:170px;padding:3px 6px}}
