.cebang-watch-shell { display:grid; grid-template-columns:240px minmax(0,1fr) 280px; gap:10px; min-height:560px; }
.cebang-watch-panel { background:var(--white,#fffef9); border:1px solid var(--line,#d7ded3); border-radius:8px; min-width:0; }
.cebang-watch-panel-header { display:flex; align-items:center; gap:7px; padding:9px 10px; border-bottom:1px solid var(--line,#d7ded3); }
.cebang-watch-search { width:100%; box-sizing:border-box; padding:8px 9px; border:1px solid var(--line,#d7ded3); border-radius:5px; background:transparent; color:inherit; }
.watch-filters { display:flex; gap:4px; flex-wrap:wrap; padding:7px 0; }
.watch-filters .wbtn { font-size:11px; padding:3px 6px; }
.cebang-watch-tree { max-height:510px; overflow:auto; padding:6px; }
.cebang-watch-group { margin:3px 0; }
.cebang-watch-group > button { display:flex; justify-content:space-between; width:100%; border:0; background:transparent; padding:6px; cursor:pointer; color:inherit; text-align:left; }
.cebang-watch-group.is-collapsed .cebang-watch-items { display:none; }
.cebang-watch-item { display:flex; align-items:center; justify-content:space-between; gap:5px; width:100%; border:0; border-radius:4px; background:transparent; padding:5px 7px; cursor:pointer; color:inherit; text-align:left; }
.cebang-watch-item:hover,.cebang-watch-item.is-selected { background:#e3efe6; }
.cebang-watch-item .cebang-symbol { font-weight:600; }
.cebang-watch-item .cebang-quote { font-variant-numeric:tabular-nums; font-size:12px; }
/* 未接实时源时报价格退到日线收盘价，灰掉以便和实时价一眼区分（后缀另有「收」字，
   不单靠颜色传递信息）。 */
.cebang-watch-item .cebang-quote.is-stale { color:var(--muted,#63766d); }
.cebang-watch-star { flex:0 0 auto; border:0; background:transparent; cursor:pointer; padding:0 2px; font-size:14px; line-height:1; color:var(--muted,#63766d); }
.cebang-watch-star.is-on { color:#b88932; }
.cebang-watch-star:hover { color:#b88932; }
.cebang-watch-toolbar { display:flex; align-items:center; gap:6px; flex-wrap:wrap; padding:8px 10px; border-bottom:1px solid var(--line,#d7ded3); }
.cebang-watch-toolbar button { border:1px solid var(--line,#d7ded3); border-radius:5px; background:transparent; padding:5px 8px; cursor:pointer; color:inherit; }
.cebang-watch-toolbar button.is-active { background:#183b39; color:#fffef9; }
.cebang-watch-trade-event { color:#8a5c25; font-size:11px; margin-left:auto; max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cebang-indicator-menu { position:absolute; z-index:20; padding:8px; border:1px solid var(--line,#d7ded3); border-radius:7px; background:var(--white,#fffef9); box-shadow:0 8px 20px #183b3920; }
.cebang-watch-chart { position:relative; overflow:hidden; }
.cebang-watch-indicators { border-top:1px solid var(--line,#d7ded3); padding:10px; background:var(--white,#fffef9); }
.cebang-indicator-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:7px; }
.cebang-indicator-head select,.cebang-indicator-edit input { border:1px solid var(--line,#d7ded3); border-radius:4px; padding:5px 6px; background:transparent; color:inherit; }
.cebang-indicator-templates { display:flex; flex-wrap:wrap; gap:5px; align-items:center; margin:6px 0; }
.cebang-indicator-templates input,.cebang-indicator-templates select,.cebang-indicator-templates button { border:1px solid var(--line,#d7ded3); border-radius:4px; padding:5px 6px; background:transparent; color:inherit; font:inherit; }
.cebang-indicator-templates input { min-width:110px; }
.cebang-indicator-list { display:flex; flex-wrap:wrap; gap:5px; }
.cebang-indicator-row { display:flex; align-items:center; gap:3px; border:1px solid var(--line,#d7ded3); border-radius:5px; padding:3px; }
.cebang-indicator-row.is-selected { border-color:#187068; background:#e3efe6; }
.cebang-indicator-row button { border:0; background:transparent; cursor:pointer; color:inherit; }
.cebang-indicator-row button:first-child { font-weight:600; }
.cebang-indicator-row small { display:block; font-size:10px; color:var(--muted,#63766d); }
.cebang-indicator-edit { display:flex; flex-wrap:wrap; align-items:end; gap:6px; margin-top:9px; }
.cebang-indicator-field { display:flex; flex-direction:column; gap:2px; font-size:11px; color:var(--muted,#63766d); }
.cebang-indicator-edit > button { border:1px solid var(--line,#d7ded3); border-radius:4px; padding:5px 8px; background:transparent; cursor:pointer; color:inherit; }
.cebang-indicator-error { flex-basis:100%; min-height:1.3em; margin:0; color:#a34d43; font-size:12px; }
.cebang-indicator-empty { color:var(--muted,#63766d); font-size:12px; }
.cebang-virtual-list { overflow:auto; min-height:120px; max-height:460px; contain:strict; }
/* 空态提示出现时收掉列表的 120px 占位，否则文字下面还挂一块空白。 */
.cebang-watch-tree-empty { padding:10px 8px; color:var(--muted,#63766d); font-size:12px; line-height:1.6; }
.cebang-watch-tree:has(.cebang-watch-tree-empty:not([hidden])) .cebang-virtual-list { min-height:0; }
.cebang-virtual-row { display:flex; align-items:center; box-sizing:border-box; border-bottom:1px solid #edf1ea; padding:0 8px; }
@media (max-width:980px) { .cebang-watch-shell { grid-template-columns:210px minmax(0,1fr); } .cebang-watch-shell > :last-child { grid-column:1/-1; } }
@media (max-width:640px) { .cebang-watch-shell { display:flex; flex-direction:column; } .cebang-watch-tree { max-height:230px; } .cebang-watch-trade-event { order:5; flex-basis:100%; margin-left:0; } .cebang-watch-chart { height:360px !important; } }
