.kline-chart{background:var(--app-surface);border:1px solid var(--app-border);border-radius:8px;padding:8px}.kline-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:6px}.kline-title{font-size:13px;font-weight:600;color:var(--app-text)}.kline-summary{font-size:12px;color:var(--app-muted)}.kline-summary b{font-weight:600;margin:0 2px}.kline-state{font-size:12px;color:var(--app-muted);padding:12px;text-align:center}.kline-wrap{width:100%}.kline-wrap canvas{display:block;width:100%}.kline-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--app-muted-2);margin-top:4px}.kline-legend span{display:inline-flex;align-items:center;gap:4px}.kline-legend i{width:10px;height:3px;border-radius:2px;display:inline-block}.kline-legend.macd i{background:#f6b73c}.depth-panel{background:var(--app-surface);border:1px solid var(--app-border);border-radius:8px;padding:8px}.depth-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:6px}.depth-title{font-size:13px;font-weight:600;color:var(--app-text)}.depth-time{font-size:11px;color:var(--app-muted);margin-left:6px}.depth-state{font-size:12px;color:var(--app-muted);padding:12px;text-align:center}.src{color:#5b8ff9}.btn-refresh{margin-left:auto;padding:2px 10px;border-radius:4px;border:1px solid var(--app-border);background:transparent;color:var(--app-text-2);cursor:pointer;font-size:12px}.btn-refresh:hover:not(:disabled){background:#0000000a}.btn-refresh:disabled{opacity:.5;cursor:default}.log-overlay{position:fixed;inset:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:200}.log-modal{width:92%;max-width:860px;max-height:86vh;background:var(--app-surface);border-radius:12px;display:flex;flex-direction:column;overflow:hidden}.log-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--app-text)}.log-title{font-size:15px;font-weight:600;color:var(--app-text)}.log-close{border:none;background:transparent;color:var(--app-muted);font-size:16px;cursor:pointer}.log-close:hover{color:#ff4d4f}.log-tabs{display:flex;gap:6px;padding:10px 16px 0}.log-tab{padding:6px 16px;border-radius:6px 6px 0 0;font-size:14px;color:var(--app-muted);cursor:pointer;background:var(--app-surface-2);border:1px solid var(--app-text);border-bottom:none}.log-tab.active{color:var(--app-text);background:var(--app-surface-2);border-color:#ff4d4f}.log-body{padding:12px 16px 16px;overflow-y:auto}.log-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.log-search{flex:1;min-width:0;padding:6px 10px;border-radius:6px;border:1px solid var(--app-border);background:var(--app-surface-2);color:var(--app-text);font-size:14px;outline:none}.log-search::placeholder{color:var(--app-muted)}.log-search:focus{border-color:#ff4d4f}.log-select{padding:6px 10px;border-radius:6px;border:1px solid var(--app-border);background:var(--app-surface-2);color:var(--app-text-2);font-size:14px;cursor:pointer;max-width:340px;flex:1}.log-strategy-select{padding:6px 10px;border-radius:6px;border:1px solid var(--app-border);background:var(--app-surface-2);color:var(--app-text-2);font-size:14px;cursor:pointer;outline:none}.log-strategy-select:focus{border-color:#b388ff}.btn-refresh{padding:6px 14px;border-radius:6px;border:1px solid #FF4D4F;background:transparent;color:#ff4d4f;font-size:14px;cursor:pointer;white-space:nowrap}.btn-refresh:disabled{opacity:.5}.btn-refresh:hover{background:#ff4d4f1a}.log-empty{text-align:center;padding:40px;color:var(--app-muted);font-size:14px}.search-view{display:flex;flex-direction:column;gap:12px}.search-summary{font-size:14px;color:var(--app-muted)}.search-group{display:flex;flex-direction:column;gap:8px}.search-group-head{display:flex;align-items:center;gap:10px;padding:4px 2px;border-bottom:1px dashed var(--app-text)}.search-batch{font-size:14px;font-weight:600;color:var(--app-accent)}.search-count{font-size:14px;color:var(--app-muted)}.summary-bar{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px;background:var(--app-surface-2);border-radius:8px;padding:10px 14px}.summary-item{display:flex;flex-direction:column;gap:2px;min-width:70px}.summary-label{font-size:14px;color:var(--app-muted)}.summary-value{font-size:15px;font-weight:600;color:var(--app-text)}.tag-llm{color:#4caf50}.tag-keyword{color:#ff9800}.section-title{font-size:14px;margin:14px 0 8px;color:var(--app-text-2);border-bottom:1px solid var(--app-text);padding-bottom:5px}.stage1-list{margin-bottom:8px}.title-item{display:flex;align-items:center;gap:8px;padding:5px 10px;border-radius:4px;margin-bottom:2px;font-size:14px}.title-item.selected{background:#4caf5014}.title-item.discarded{opacity:.45}.title-idx{color:var(--app-muted);min-width:22px;font-size:14px;text-align:right}.title-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title-badge{font-size:14px;padding:1px 6px;border-radius:3px;white-space:nowrap}.badge-pass{background:#4caf5033;color:#4caf50}.badge-skip{background:#ff980026;color:#ff9800}.stage2-events{display:flex;flex-direction:column;gap:8px}.event-card{background:var(--app-surface-2);border-radius:8px;padding:10px 12px;border:1px solid var(--app-text)}.event-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}.event-title{flex:1;font-size:14px;font-weight:600;color:var(--app-text);min-width:0}.event-score{font-size:14px;color:var(--app-muted);white-space:nowrap}.event-body{display:flex;flex-direction:column;gap:4px}.event-row{display:flex;align-items:flex-start;gap:8px;font-size:14px}.event-label{color:var(--app-muted);min-width:32px;flex-shrink:0}.event-tags{display:flex;flex-wrap:wrap;gap:4px}.mini-tag{font-size:14px;padding:1px 6px;border-radius:3px;background:var(--app-text);color:var(--app-text-2)}.mini-tag.sector{color:#64b5f6;background:#64b5f61a}.mini-tag.stock{color:#ff9800;background:#ff98001a}.event-reason{color:var(--app-text-2);line-height:1.4}.signal-list{display:flex;flex-direction:column;gap:8px}.signal-item{background:var(--app-surface-2);border-radius:8px;padding:10px 12px;border:1px solid var(--app-text)}.sig-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sig-code{font-family:monospace;color:var(--app-accent);font-size:14px;font-weight:600}.sig-name{color:var(--app-text);font-size:14px}.sig-strategy{font-size:14px;color:#b388ff;background:#b388ff1f;padding:1px 6px;border-radius:3px}.sig-conf{font-size:14px;color:var(--app-muted)}.sig-price{font-size:14px;color:#faad14}.sig-body{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:14px;flex-wrap:wrap}.sig-sector{font-size:14px;color:#64b5f6;background:#64b5f61a;padding:1px 6px;border-radius:3px}.sig-reason{color:var(--app-text-2);line-height:1.4}.tag{font-size:14px;padding:2px 7px;border-radius:4px;white-space:nowrap}.tag-利好{background:#4caf5033;color:#4caf50}.tag-利空{background:#ff4d4f33;color:#ff4d4f}.tag-中性{background:#ff980026;color:#ff9800}.tag-做多{background:#4caf5033;color:#4caf50}.tag-做空{background:#ff4d4f33;color:#ff4d4f}.tag-提醒{background:#ff980026;color:#ff9800}.dir-做多{background:#4caf5033;color:#4caf50}.dir-做空{background:#ff4d4f33;color:#ff4d4f}.dir-提醒{background:#ff980026;color:#ff9800}.act-买入{background:#4caf5040;color:#4caf50}.act-watch{background:#64b5f626;color:#64b5f6}.act-卖出{background:#ff4d4f40;color:#ff4d4f}@media(max-width:768px){.log-modal{width:96%;max-height:92vh}.log-toolbar{flex-wrap:wrap;gap:6px}.log-select{max-width:100%}.log-tabs{flex-wrap:wrap;gap:4px}.log-tab{font-size:14px;padding:5px 10px}}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--app-bg);color:var(--app-text);-webkit-tap-highlight-color:transparent;font-size:14px}.app-shell{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.app-header{flex-shrink:0;height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--app-surface);border-bottom:1px solid var(--app-border);gap:12px}.app-body{flex:1;display:flex;min-height:0;width:100%}.app-aside{width:210px;flex-shrink:0;background:var(--app-aside-bg);border-right:1px solid var(--app-border);display:flex;flex-direction:column;overflow:hidden}.app-main{flex:1;min-width:0;overflow:auto}.t-card{box-shadow:0 1px 6px var(--app-shadow);border-color:var(--app-border)}.brand-logo{padding:18px 16px;font-size:18px;font-weight:700;color:var(--app-brand);border-bottom:1px solid var(--app-border-2)}.sidebar-footer{padding:12px 16px;border-top:1px solid var(--app-border-2)}.account-name{font-size:13px;color:var(--app-text)}.role-badge{display:inline-block;margin-top:6px;padding:2px 10px;border-radius:10px;font-size:12px;font-weight:600}.role-admin{background:#e8f3ff;color:#0052d9;border:1px solid #bcdcff}.role-user{background:var(--app-surface-2);color:var(--app-text-2);border:1px solid var(--app-border)}.hamburger{display:none;width:28px;height:28px;cursor:pointer;flex-direction:column;justify-content:center;gap:5px}.hamburger span{display:block;height:2px;width:22px;background:var(--app-text-2);border-radius:1px}.sidebar-overlay{display:none}.page{padding:16px;box-sizing:border-box}.up{color:var(--app-up)}.down{color:var(--app-down)}.muted{color:var(--app-muted);font-size:12px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.toolbar .spacer{flex:1}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--app-bg)}.login-box{background:var(--app-surface);padding:40px 28px;border-radius:12px;width:90%;max-width:380px;box-shadow:0 8px 40px #00000014;border:1px solid var(--app-border-2)}.login-box h1{font-size:26px;margin-bottom:4px;color:var(--app-brand);text-align:center}.login-box .subtitle{color:var(--app-muted-2);margin-bottom:24px;font-size:13px;text-align:center}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:12px;color:var(--app-text-2);margin-bottom:5px}.login-error{color:var(--app-brand);font-size:13px;margin-top:12px;text-align:center}@media(max-width:768px){.hamburger{display:flex}.app-aside{position:fixed;top:0;bottom:0;left:0;z-index:200;transform:translate(-100%);transition:transform .25s ease;box-shadow:2px 0 12px #00000026}.app-aside.open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;inset:0;z-index:190;background:#00000073}.app-main{overflow:auto}.page{padding:12px}.app-header{padding:0 12px}}@media(min-width:1600px){.app-main .page>*{max-width:1500px}}:root{color-scheme:light;--app-bg: #e8eefb;--app-surface: #fff;--app-surface-2: #f7f8fa;--app-surface-3: #eef0f3;--app-aside-bg: #eef3fd;--app-border: #d4e0f4;--app-border-2: #eee;--app-divider: #eef0f3;--app-text: #1a1a1a;--app-text-2: #555;--app-muted: #888;--app-muted-2: #999;--app-faint: #ccc;--app-accent: #4fc3f7;--app-brand: #e34d59;--app-up: #e34d59;--app-down: #00a870;--app-warn-bg: #fdecea;--app-warn-border: #f5c6c2;--app-warn-text: #b71c1c;--app-shadow: rgba(29, 78, 216, .1);--app-chart-bg: #ffffff;--app-chart-grid: #ececec;--app-chart-axis: #909399;--app-chart-line: #c0c4cc;--app-chart-avg: #fa8c16;--app-chart-dif: #d48806;--app-chart-dea: #1677ff;--app-chart-vol-up: #f5222d;--app-chart-vol-down: #16a34a;--app-chart-tip-bg: #ffffff;--app-chart-tip-border: #d0d0d0;--app-chart-tip-text: #303133;--app-chart-tip-sub: #606266}:root[theme-mode=dark],:root.dark{color-scheme:dark;--app-bg: #0f1420;--app-surface: #1a2130;--app-surface-2: #212a3b;--app-surface-3: #2a3346;--app-aside-bg: #141a28;--app-border: #2b3650;--app-border-2: #26304333;--app-divider: #2a3346;--app-text: #e6ebf5;--app-text-2: #b7c1d4;--app-muted: #8a94a8;--app-muted-2: #76819a;--app-faint: #5a6580;--app-accent: #6fb9e8;--app-brand: #ff6b76;--app-up: #ff5b63;--app-down: #2fbf87;--app-warn-bg: #3a1e20;--app-warn-border: #5e2a2d;--app-warn-text: #ffb3ba;--app-shadow: rgba(0, 0, 0, .45);--app-chart-bg: #1a2130;--app-chart-grid: #2a3346;--app-chart-axis: #8a94a8;--app-chart-line: #4a5670;--app-chart-avg: #ffa940;--app-chart-dif: #e8b339;--app-chart-dea: #4c9aff;--app-chart-vol-up: #ff5b63;--app-chart-vol-down: #2fbf87;--app-chart-tip-bg: #212a3b;--app-chart-tip-border: #2b3650;--app-chart-tip-text: #e6ebf5;--app-chart-tip-sub: #b7c1d4}:root{--td-brand-color: #1d4ed8;--td-brand-color-hover: #2f5fe0;--td-brand-color-active: #1438a6;--td-brand-color-focus: #c7d4ff;--td-brand-color-light: #d6e1ff;--td-brand-color-light-hover: #c2d2ff;--td-brand-color-1: #eef2ff;--td-brand-color-2: #d6e1ff;--td-brand-color-3: #b3c6ff;--td-brand-color-4: #8aa6ff;--td-brand-color-5: #5f80f7;--td-brand-color-6: #3563e9;--td-brand-color-7: #1d4ed8;--td-brand-color-8: #1438a6;--td-brand-color-9: #0f2a7a;--td-brand-color-10: #0a1a4d;--td-success-color: #00a870;--td-warning-color: #e37318;--td-error-color: #e34d59}.app-aside .t-menu__item.t-is-active,.app-aside .t-menu__item.t-is-active.t-is-opened,.app-aside .t-menu__item.t-is-active:not(.t-is-opened){background-color:var(--td-brand-color)!important;color:#fff!important}.app-aside .t-menu__item.t-is-active .t-icon{color:#fff!important}.app-aside .t-menu__item:hover:not(.t-is-active){background-color:var(--td-brand-color-light)!important}.t-table__row--active>td,.t-table tr.t-is-active>td{background-color:var(--td-brand-color-light)!important}.t-tabs__nav-item.t-is-active{color:var(--td-brand-color)!important;font-weight:600}.t-tabs__bar.t-is-top:after,.t-tabs__nav-item.t-is-active:after{background-color:var(--td-brand-color)!important}body{background:var(--app-bg)}.app-aside{background:var(--app-aside-bg);border-right:1px solid var(--app-border)}.app-header{border-bottom:1px solid var(--app-border)}.t-card{border-color:var(--app-border)!important;box-shadow:0 1px 6px var(--app-shadow)!important}@media(max-width:768px){body{font-size:13px}.app-header{height:48px}.t-table__content{overflow-x:auto;-webkit-overflow-scrolling:touch}.t-table{font-size:12px}.toolbar{gap:6px}.page{padding:10px 8px}.t-button--size-small,.t-table__expanded-icon{min-height:28px}}
