:root{--bg: #0e1116;--chart-bg: #131722;--panel: #151a21;--panel-2: #1a2029;--border: #2a2e39;--text: #d1d4dc;--muted: #787b86;--accent: #2962ff;--pos: #26a69a;--neg: #ef5350;--radius: 6px;font-synthesis:none}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px;-webkit-font-smoothing:antialiased}.pos{color:var(--pos)}.neg{color:var(--neg)}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-main{flex:1;display:flex;min-height:0}.app-chart{flex:1;min-width:0;display:flex;background:var(--chart-bg)}.app-sidebar{width:18%;min-width:232px;max-width:260px;background:var(--panel);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.app-footer{flex:0 0 28px;border-top:1px solid var(--border);background:var(--panel);display:flex;align-items:center}.chart-panel{position:relative;flex:1;display:flex;flex-direction:column;min-width:0}.chart-canvas{flex:1;min-height:0}.chart-legend{position:absolute;top:10px;left:12px;z-index:3;display:flex;align-items:center;gap:10px;pointer-events:none;font-variant-numeric:tabular-nums;background:#13172299;padding:4px 8px;border-radius:var(--radius)}.legend-symbol{font-weight:700;font-size:14px}.legend-name,.legend-res{color:var(--muted)}.legend-ohlc{display:flex;gap:8px;color:var(--muted)}.legend-ohlc b{color:var(--text);font-weight:600}.draw-toolbar{position:absolute;top:48px;left:8px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 4px;background:#151a21eb;border:1px solid var(--border);border-radius:8px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.draw-tool{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer}.draw-tool:hover{color:var(--text);background:var(--panel-2)}.draw-tool.active{color:#fff;background:var(--accent);border-color:var(--accent)}.draw-sep{width:20px;height:1px;background:var(--border);margin:2px 0}.draw-colors{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.draw-swatch{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.25);cursor:pointer;padding:0}.draw-swatch.active{outline:2px solid var(--text);outline-offset:1px}.chart-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#131722d1;color:var(--muted);font-size:14px}.sidebar{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding:12px;gap:12px}.sidebar-progress{font-variant-numeric:tabular-nums;color:var(--muted);display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar-progress .reviewed{color:var(--text);font-weight:700;font-size:15px}.mode-toggle{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden;flex:0 0 auto}.mode-toggle button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--muted);padding:3px 9px;font-size:11px;font-weight:600;cursor:pointer}.mode-toggle button:hover{color:var(--text)}.mode-toggle button.active{background:var(--accent);color:#fff}.sidebar-stock{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);padding:10px}.stock-symbol{font-size:20px;font-weight:700}.stock-name{color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stock-stats{display:flex;flex-direction:column;gap:2px;margin-top:8px;font-variant-numeric:tabular-nums}.stat-price{font-size:16px;font-weight:600}.stat-vol{color:var(--muted)}.sidebar-actions{display:flex;gap:8px}.btn{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:9px 10px;border-radius:var(--radius);cursor:pointer;font-size:13px;font-weight:600}.btn:hover{border-color:#3a3f4b}.btn-save{background:var(--accent);border-color:var(--accent);color:#fff}.btn-save:hover{filter:brightness(1.08)}.kbd-inline{opacity:.7;font-weight:400;margin-left:4px}.sidebar-section-label{color:var(--muted);text-transform:uppercase;font-size:10px;letter-spacing:.06em;margin-bottom:-4px}.pattern-chips{display:flex;flex-wrap:wrap;gap:6px}.chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:5px 8px;border-radius:999px;cursor:pointer;font-size:12px;display:inline-flex;align-items:center;gap:5px}.chip:hover{border-color:var(--accent)}.chip.sm{padding:1px 7px;font-size:10px;cursor:default;color:var(--muted)}.chip-key{display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:14px;padding:0 2px;border-radius:3px;background:var(--bg);color:var(--muted);font-size:10px}.save-status{min-height:16px;font-size:12px;color:var(--muted)}.save-status-saving{color:var(--accent)}.save-status-saved{color:var(--pos)}.watchlist{display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--border);padding-top:10px}.watchlist-header{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:8px}.watchlist-count{color:var(--muted);background:var(--panel-2);border-radius:999px;padding:0 8px;font-size:11px}.watchlist-empty{color:var(--muted);font-size:12px}.watchlist-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.watchlist-row{display:flex;align-items:stretch;gap:4px}.wl-open{flex:1;display:flex;align-items:center;gap:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:var(--panel-2);color:var(--text);padding:6px 8px;border-radius:var(--radius);cursor:pointer;text-align:left}.wl-open:hover{border-color:var(--accent)}.wl-symbol{font-weight:600}.wl-remove{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:transparent;color:var(--muted);width:28px;border-radius:var(--radius);cursor:pointer;font-size:16px;line-height:1}.wl-remove:hover{color:var(--neg);border-color:var(--neg)}.sidebar-tabs{display:flex;border:1px solid var(--border);border-radius:999px;overflow:hidden;flex-shrink:0}.sidebar-tabs button{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--muted);padding:5px 10px;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px}.sidebar-tabs button:hover{color:var(--text)}.sidebar-tabs button.active{background:var(--accent);color:#fff}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ffffff40;font-size:10px;font-weight:700;line-height:1}.alarms-panel{display:flex;flex-direction:column;gap:10px;flex:1;overflow-y:auto}.alarm-form{display:flex;flex-direction:column;gap:6px}.alarm-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:7px 9px;font-size:13px;font-family:inherit;width:100%}.alarm-input:focus{outline:none;border-color:var(--accent)}.alarm-input::placeholder{color:var(--muted)}.alarm-input--price::-webkit-inner-spin-button,.alarm-input--price::-webkit-outer-spin-button{-webkit-appearance:none}.alarm-input--price{-moz-appearance:textfield}.alarm-direction{display:flex;gap:6px;align-items:center}.alarm-direction .mode-toggle{flex:1}.alarm-add-btn{flex:0 0 auto;padding:7px 14px}.alarm-error{margin:0;font-size:11px;color:var(--neg)}.alarm-empty{margin:0;font-size:12px;color:var(--muted)}.alarm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.alarm-row{display:flex;align-items:center;gap:6px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px;font-size:12px}.alarm-symbol{font-weight:700;flex:0 0 auto;min-width:44px}.alarm-level{flex:1;font-variant-numeric:tabular-nums;color:var(--text)}.alarm-triggered-at{font-size:10px;color:var(--muted);white-space:nowrap}.alarm-remove{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:transparent;color:var(--muted);width:22px;height:22px;border-radius:4px;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0}.alarm-remove:hover{color:var(--neg);border-color:var(--neg)}.alarm-list--triggered .alarm-row{opacity:.55}.alarm-list--triggered .alarm-row--triggered .alarm-level{text-decoration:line-through}.notif-panel{border-top:1px solid var(--border);padding-top:10px;display:flex;flex-direction:column;gap:6px}.notif-header{display:flex;align-items:center;justify-content:space-between}.notif-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.notif-dot-ok{background:var(--pos)}.notif-dot-err{background:var(--neg);box-shadow:0 0 5px var(--neg)}.notif-dot-idle{background:var(--border)}.notif-empty{margin:0;font-size:11px;color:var(--muted)}.notif-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.notif-row{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.notif-status{width:6px;height:6px;border-radius:50%;flex-shrink:0}.notif-status-success{background:var(--pos)}.notif-status-failure{background:var(--neg)}.notif-workflow{flex:1;color:var(--text);font-size:11px}.notif-time{font-variant-numeric:tabular-nums;white-space:nowrap}.notif-link{color:var(--muted);text-decoration:none;font-size:11px;line-height:1}.notif-link:hover{color:var(--accent)}.key-hints{display:flex;gap:18px;padding:0 14px;color:var(--muted);font-size:11px}.key-hints span{display:inline-flex;align-items:center;gap:5px}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border:1px solid var(--border);border-bottom-width:2px;border-radius:3px;background:var(--panel-2);color:var(--text);font-family:inherit;font-size:10px}@media (max-width: 720px){.app-main{flex-direction:column}.app-sidebar{width:100%;max-width:none;min-width:0;height:42%;border-left:none;border-top:1px solid var(--border)}}
