:root {
  --tv-canvas: #0f0f0f;
  --tv-surface-1: #0f0f0f;
  --tv-surface-2: #1f1f1f;
  --tv-surface-hover: #2e2e2e;
  --tv-selected: #4a4a4a;
  --tv-border: #2a2e39;
  --tv-border-soft: #242424;
  --tv-text-1: #dbdbdb;
  --tv-text-2: #a3a3a3;
  --tv-text-3: #6f6f6f;
  --tv-blue: #2962ff;
  --tv-green: #089981;
  --tv-red: #f23645;
  --tv-purple: #9c4dcc;
  --tv-amber: #f0b90b;
  --bg: var(--tv-canvas);
  --panel: var(--tv-surface-1);
  --panel-2: var(--tv-surface-2);
  --panel-3: var(--tv-surface-hover);
  --line: var(--tv-border);
  --line-soft: var(--tv-border-soft);
  --text: var(--tv-text-1);
  --muted: var(--tv-text-2);
  --green: var(--tv-green);
  --green-soft: rgba(8, 153, 129, 0.12);
  --red: var(--tv-red);
  --red-soft: rgba(242, 54, 69, 0.12);
  --amber: var(--tv-amber);
  --blue: var(--tv-blue);
  --cyan: #4dd6e8;
  --violet: var(--tv-purple);
  --radius: 6px;
  font-family: -apple-system, BlinkMacSystemFont, "Trebuchet MS", Roboto, Ubuntu, "Segoe UI", sans-serif;
  color: var(--text);
  background: var(--bg);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-width: 1180px; min-height: 720px; height: 100%; overflow: hidden; }
body { background: var(--bg); }
button, input { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }

.app-shell { height: 100vh; display: grid; grid-template-rows: 54px minmax(0, 1fr) 25px; }
.topbar { position: relative; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--line); background: rgba(10, 14, 19, 0.96); padding: 0 12px; z-index: 10; }
.brand { width: 116px; flex: 0 0 auto; display: flex; align-items: center; gap: 10px; padding-left: 5px; }
.brand-mark { position: relative; width: 24px; height: 25px; display: block; transform: skew(-13deg); }
.brand-mark i { position: absolute; width: 7px; border-radius: 2px; bottom: 0; background: linear-gradient(180deg, #4fe2ed, #347cff); }
.brand-mark i:nth-child(1) { left: 0; height: 12px; }
.brand-mark i:nth-child(2) { left: 9px; height: 24px; }
.brand-mark i:nth-child(3) { left: 18px; height: 17px; background: linear-gradient(180deg, #4fe2ed, #1bc491); }
.brand-copy { display: flex; flex-direction: column; line-height: 1; letter-spacing: 1.2px; }
.brand-copy b { font-size: 13px; }
.brand-copy small { color: var(--muted); font-size: 8px; margin-top: 4px; letter-spacing: 2.4px; }

.symbol-selector { position: relative; flex: 0 0 auto; }
.symbol-trigger { height: 36px; width: 200px; border: 1px solid var(--line); background: var(--panel-2); border-radius: 6px; display: flex; align-items: center; gap: 9px; padding: 0 10px; cursor: pointer; text-align: left; }
.symbol-trigger:hover { border-color: #334256; }
.symbol-trigger > span:nth-child(2) { display: flex; flex-direction: column; min-width: 0; }
.symbol-trigger b { font-size: 13px; letter-spacing: 0.3px; }
.symbol-trigger small { font-size: 9px; color: var(--muted); max-width: 130px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.instrument-icon { width: 27px; height: 27px; border-radius: 50%; background: #202020; color: #dbdbdb; display: grid; place-items: center; font-weight: 800; font-size: 10px; box-shadow: none; overflow: hidden; }
.instrument-icon > img, .symbol-mini > img { width: 100%; height: 100%; display: block; object-fit: contain; }
.symbol-icon-fallback { width: 100%; height: 100%; display: grid; place-items: center; }
.symbol-icon-fallback[hidden] { display: none; }
.chevron { margin-left: auto; color: var(--muted); }
.symbol-trigger[aria-expanded="true"] { border-color: #4a8df4; box-shadow: 0 0 0 1px rgba(63,140,255,.25); }
.symbol-popover { position: absolute; z-index: 70; top: 43px; left: 0; width: 430px; overflow: hidden; border: 1px solid #2b3746; border-radius: 9px; background: #10161e; box-shadow: 0 20px 60px rgba(0,0,0,.62); }
.symbol-popover[hidden] { display: none; }
.symbol-popover-head { height: 51px; display: flex; align-items: center; justify-content: space-between; padding: 0 14px; border-bottom: 1px solid var(--line); }
.symbol-popover-head > div { display: flex; flex-direction: column; gap: 3px; }
.symbol-popover-head b { font-size: 12px; }
.symbol-popover-head small { color: var(--muted); font-size: 8px; }
.symbol-popover-head button { width: 27px; height: 27px; border: 0; border-radius: 5px; background: transparent; color: var(--muted); font-size: 18px; cursor: pointer; }
.symbol-popover-head button:hover { background: #202a36; color: white; }
.symbol-picker-search { height: 35px; margin: 10px 12px 7px; padding: 0 10px; display: flex; align-items: center; gap: 7px; border: 1px solid #2a3543; border-radius: 6px; background: #090e14; color: #748191; }
.symbol-picker-search:focus-within { border-color: #4a90f7; }
.symbol-picker-search input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: white; font-size: 10px; }
.symbol-picker-columns, .symbol-picker-row { display: grid; grid-template-columns: 1.4fr .8fr .65fr; align-items: center; gap: 8px; }
.symbol-picker-columns { padding: 4px 15px 6px; color: #667281; font-size: 8px; }
.symbol-picker-columns span:not(:first-child), .symbol-picker-row > span { text-align: right; }
.symbol-picker-list { max-height: 390px; overflow: auto; padding: 0 7px 8px; }
.symbol-picker-row { width: 100%; height: 45px; padding: 0 8px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: #cfd7e1; cursor: pointer; text-align: left; }
.symbol-picker-row:hover { background: #1a222d; }
.symbol-picker-row.active { border-color: rgba(63,140,255,.38); background: rgba(63,140,255,.1); }
.picker-symbol { min-width: 0; display: flex; align-items: center; gap: 8px; text-align: left !important; }
.picker-symbol > i { width: 22px; height: 22px; flex: 0 0 auto; display: grid; place-items: center; overflow: hidden; border-radius: 50%; font-style: normal; }.picker-symbol > i img { width: 100%; height: 100%; object-fit: contain; }
.picker-symbol > b { min-width: 0; display: flex; flex-direction: column; font-size: 10px; }.picker-symbol > b small { margin-top: 3px; overflow: hidden; color: #717d8c; font-size: 8px; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
.symbol-picker-row > span { font: 9px ui-monospace, SFMono-Regular, Consolas, monospace; }
.symbol-picker-row > span.positive { color: var(--green); }
.symbol-picker-row > span.negative { color: var(--red); }
.symbol-picker-empty { padding: 45px 20px; color: var(--muted); font-size: 10px; text-align: center; }

.quote-strip { display: flex; flex: 0 0 auto; align-items: center; gap: 16px; border-right: 1px solid var(--line); padding: 0 15px 0 10px; height: 34px; }
.quote-strip > span { display: flex; flex-direction: column; }
.quote-strip small { color: var(--muted); font-size: 8px; letter-spacing: .7px; }
.quote-strip b { font: 600 12px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; }
.quote-strip > span:first-child b { color: var(--red); }
.quote-strip > span:nth-child(2) b { color: var(--green); }
.quote-strip .spread b { color: #a6b2c2; }

.timeframes { display: flex; gap: 2px; padding: 0 6px; flex: 1 1 auto; min-width: 260px; overflow: visible; }
.timeframes button { border: 0; background: transparent; color: #9aa5b3; border-radius: 6px; min-width: 34px; height: 30px; font-size: 11px; font-weight: 600; cursor: pointer; }
.timeframes button:hover { background: var(--panel-2); color: white; }
.timeframes button.active { background: #1c2b3d; color: #70abff; box-shadow: inset 0 0 0 1px rgba(63, 140, 255, .24); }
.timeframe-more { position: relative; }
.timeframe-more > button { min-width: 54px; display: flex; align-items: center; justify-content: center; gap: 4px; }
.timeframe-more > button.active { background: #1c2b3d; color: #70abff; }
.timeframe-menu { position: absolute; z-index: 30; top: 36px; left: 0; width: 284px; padding: 10px; border: 1px solid #2a3442; border-radius: 7px; background: #111720; box-shadow: 0 16px 44px rgba(0,0,0,.55); }
.timeframe-menu[hidden] { display: none; }
.timeframe-menu > div { display: grid; grid-template-columns: 52px 1fr; align-items: start; padding: 7px 3px; border-bottom: 1px solid var(--line-soft); }
.timeframe-menu > div:last-child { border-bottom: 0; }
.timeframe-menu b { color: #737f8e; font-size: 8px; font-weight: 500; padding-top: 8px; }
.timeframe-menu span { display: flex; flex-wrap: wrap; gap: 3px; }
.timeframe-menu button { min-width: 38px; height: 28px; border: 0; border-radius: 4px; background: transparent; color: #c0c9d4; font-size: 9px; cursor: pointer; }
.timeframe-menu button:hover { background: #202a36; color: white; }
.top-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 6px; }
.icon-button, .connection-pill, .avatar { height: 32px; border: 1px solid var(--line); background: var(--panel-2); border-radius: 7px; cursor: pointer; }
.icon-button { min-width: 34px; padding: 0 9px; color: #aab4c2; }
.icon-button span { margin-left: 4px; font-size: 10px; }
.icon-button:hover { color: white; border-color: #354359; }
.connection-pill { display: flex; align-items: center; gap: 7px; padding: 0 10px; color: #9faab8; font-size: 9px; }
.connection-pill i, .status-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; background: var(--amber); box-shadow: 0 0 8px rgba(245, 184, 75, .65); }
.connection-pill.real i { background: var(--green); box-shadow: 0 0 8px rgba(34, 201, 154, .7); }
.connection-pill.real i { animation: realtime-pulse 1.5s ease-out infinite; }
.connection-pill.reconnecting i { background: var(--amber); }
@keyframes realtime-pulse { 0% { box-shadow: 0 0 0 0 rgba(34,201,154,.45); } 75%, 100% { box-shadow: 0 0 0 7px rgba(34,201,154,0); } }
.avatar { width: 32px; border-radius: 50%; background: linear-gradient(145deg, #2a3f5c, #152033); color: #b8d4f8; font-size: 9px; font-weight: 700; }

.workspace { position: relative; display: grid; grid-template-columns: 45px minmax(0, 1fr) minmax(327px, 22vw); min-height: 0; }
.drawing-toolbar { border-right: 1px solid var(--line); background: #0a0e13; display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 11px 0; }
.tool { width: 31px; height: 31px; border: 1px solid transparent; background: transparent; border-radius: 7px; color: #7d8998; cursor: pointer; font-weight: 700; }
.tool:hover { background: var(--panel-3); color: white; }
.tool.active { color: #75aeff; background: rgba(63, 140, 255, .12); border-color: rgba(63, 140, 255, .22); }
.tool.buy-tool { color: var(--green); }
.tool.sell-tool { color: var(--red); }
.tool.tp-tool { color: var(--amber); }
.tool-divider { width: 23px; height: 1px; background: var(--line); margin: 3px 0; }

.chart-region { position: relative; min-width: 0; min-height: 0; display: grid; grid-template-rows: 45px 23px minmax(300px, 1fr); background: #090d12; }
.chart-heading { display: flex; align-items: flex-start; justify-content: space-between; padding: 7px 14px 0; pointer-events: none; }
.heading-line { display: flex; align-items: center; gap: 8px; }
.heading-line h1 { font-size: 13px; margin: 0; font-weight: 600; }
.chart-timeframe-chip, .exchange-chip { color: #8893a1; font-size: 8px; }
.chart-timeframe-chip { color: #a8b3c0; font-weight: 600; }
.market-badge { color: var(--green); background: var(--green-soft); border: 1px solid rgba(34, 201, 154, .18); padding: 2px 5px; font-size: 7px; border-radius: 4px; }
.market-badge.closed { color: var(--red); background: var(--red-soft); border-color: rgba(255,85,112,.24); }
.market-badge.checking { color: var(--amber); background: rgba(245,184,75,.08); border-color: rgba(245,184,75,.2); }
.ohlc-row { display: flex; gap: 11px; color: #707b89; font: 9px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; margin-top: 3px; }
.ohlc-row b { font-weight: 500; color: #9da9b7; }
.chart-stats { display: flex; align-items: baseline; gap: 9px; }
.chart-stats strong { font: 600 21px/1 ui-monospace, SFMono-Regular, Consolas, monospace; }
.chart-stats span { font-size: 10px; color: var(--green); }
.chart-stats span.negative { color: var(--red); }
.indicator-legend { display: flex; align-items: center; gap: 4px; padding: 0 14px; font-size: 9px; color: var(--muted); overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
.indicator-legend::-webkit-scrollbar { display: none; }
.legend-item { height: 26px; display: flex; align-items: center; gap: 5px; padding: 0 5px 0 7px; border-radius: 4px; white-space: nowrap; transition: background-color .12s ease, color .12s ease, opacity .12s ease; }
.legend-item:hover { background: #151c25; color: #c3ccd7; }
.legend-item i { width: 13px; height: 2px; border-radius: 2px; }
.legend-item button { width: 26px; height: 26px; display: grid; place-items: center; flex: 0 0 26px; padding: 0; border: 0; border-radius: 4px; background: transparent; color: #687484; cursor: pointer; opacity: 0; font-size: 10px; transition: background-color .12s ease, color .12s ease, opacity .12s ease; }
.legend-item button[data-indicator-settings] { opacity: .62; }
.legend-item:hover button { opacity: 1; }
.legend-item button:hover { background: #26313f; color: white; }
.legend-item button:focus-visible { opacity: 1; outline: 2px solid var(--tv-blue); outline-offset: -2px; }
.legend-item.is-hidden { color: #565f6c; }
.legend-item.is-hidden > i { opacity: .28; }
.legend-item button img { width: 14px; height: 14px; display: block; filter: invert(1); opacity: .62; }
.legend-item button:hover img { opacity: 1; }
.legend-item.is-hidden button[data-indicator-toggle], .legend-item.is-hidden button[data-custom-script-toggle] { opacity: 1; }

.chart-stack { position: relative; min-height: 0; overflow: hidden; cursor: crosshair; }
#marketCanvas { position: absolute; width: 100%; height: 100%; inset: 0; touch-action: none; user-select: none; }
#marketCanvas.pan-ready { cursor: crosshair; }
#marketCanvas.dragging { cursor: grabbing; }
#marketCanvas.pane-resize, #marketCanvas.dragging.pane-resize { cursor: ns-resize; }
#marketCanvas.signal-plan-hover, #marketCanvas.signal-plan-dragging { cursor: ns-resize; }
.latest-point-forecast {
  position: absolute;
  z-index: 68;
  top: 46px;
  left: 10px;
  width: min(286px, calc(100% - 20px));
  max-height: calc(100% - 58px);
  overflow-x: hidden;
  overflow-y: auto;
  box-sizing: border-box;
  display: grid;
  gap: 7px;
  padding: 9px 10px 8px;
  border: 1px solid #34363c;
  border-left: 2px solid var(--tv-amber);
  border-radius: 5px;
  background: rgba(24, 24, 24, .93);
  box-shadow: 0 6px 18px rgba(0, 0, 0, .26);
  backdrop-filter: blur(6px);
  pointer-events: auto;
}
.latest-point-forecast[hidden] { display: none; }
.latest-point-forecast[data-action="buy"] { border-left-color: var(--tv-green); }
.latest-point-forecast[data-action="sell"] { border-left-color: var(--tv-red); }
.latest-point-forecast[data-status="loading"] { opacity: .62; }
.latest-point-forecast > header { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: flex-start; gap: 7px; }
.latest-point-forecast > header span { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.latest-point-forecast > header b { color: var(--tv-text-1); font-size: 11px; font-weight: 650; }
.latest-point-forecast > header small { overflow: hidden; color: var(--tv-text-3); font: 9px/1.35 ui-monospace, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.latest-point-forecast > header em { flex: 0 0 auto; color: var(--tv-text-3); font: 8px ui-monospace, Consolas, monospace; font-style: normal; }
.latest-point-forecast > header button { width: 18px; height: 18px; display: grid; place-items: center; margin: -3px -4px 0 0; padding: 0; border: 0; border-radius: 3px; background: transparent; cursor: pointer; pointer-events: auto; }
.latest-point-forecast > header button:hover { background: var(--tv-surface-hover); }
.latest-point-forecast > header button:focus-visible { outline: 2px solid var(--tv-blue); outline-offset: 1px; }
.latest-point-forecast > header button[hidden] { display: none; }
.latest-point-forecast > header button img { width: 11px; height: 11px; filter: invert(1); opacity: .58; }
.latest-point-forecast-control { position: absolute; z-index: 71; top: 10px; left: 10px; min-width: 174px; height: 29px; display: grid; grid-template-columns: 7px minmax(0, 1fr) 26px; align-items: center; gap: 7px; padding: 0 8px; box-sizing: border-box; border: 1px solid #34363c; border-radius: 4px; background: rgba(24, 24, 24, .94); box-shadow: 0 5px 14px rgba(0, 0, 0, .22); cursor: pointer; }
.latest-point-forecast-control > i { width: 7px; height: 7px; border-radius: 50%; background: var(--tv-amber); }
.latest-point-forecast-control > span { min-width: 0; display: flex; align-items: baseline; gap: 6px; }
.latest-point-forecast-control > span b { color: var(--tv-text-1); font-size: 9px; font-weight: 600; }
.latest-point-forecast-control > span small { overflow: hidden; color: var(--tv-amber); font: 8px ui-monospace, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.latest-point-forecast-control > input { position: absolute; z-index: 1; width: 100%; height: 100%; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.latest-point-forecast-control > em { position: relative; width: 24px; height: 14px; border-radius: 7px; background: #3a3a3a; pointer-events: none; }
.latest-point-forecast-control > em::after { content: ""; position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: #9b9b9b; transition: transform .12s ease, background-color .12s ease; }
.latest-point-forecast-control > input:checked + em { background: rgba(41, 98, 255, .54); }
.latest-point-forecast-control > input:checked + em::after { background: #fff; transform: translateX(10px); }
.latest-point-forecast-control:has(input:focus-visible) { outline: 1px solid #787b86; outline-offset: 2px; }
.latest-point-forecast-control[data-action="buy"] > i { background: var(--tv-green); }
.latest-point-forecast-control[data-action="buy"] > span small { color: var(--tv-green); }
.latest-point-forecast-control[data-action="sell"] > i { background: var(--tv-red); }
.latest-point-forecast-control[data-action="sell"] > span small { color: var(--tv-red); }
.latest-point-forecast-control[data-visible="false"] > span small { color: var(--tv-text-3); }
.latest-point-forecast-decisions { display: grid; gap: 2px; }
.latest-point-forecast-decisions > span { min-width: 0; min-height: 23px; display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 7px; padding: 0 6px; border-radius: 3px; background: #202020; }
.latest-point-forecast-decisions small { color: var(--tv-text-3); font-size: 9px; }
.latest-point-forecast-decisions b { overflow: hidden; color: var(--tv-text-2); font-size: 9px; font-weight: 600; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.latest-point-forecast-decisions [data-action="allowed"] b { color: var(--tv-green); }
.latest-point-forecast-decisions [data-action="avoid"] b { color: var(--tv-red); }
.latest-point-forecast-decisions [data-action="watch"] b { color: var(--tv-amber); }
.latest-point-forecast > footer { display: flex; align-items: center; justify-content: space-between; gap: 7px; color: var(--tv-text-3); font: 8px/1.35 ui-monospace, Consolas, monospace; }
.latest-point-forecast > footer b { flex: 0 0 auto; color: var(--tv-amber); font-weight: 500; }
.latest-point-forecast > footer span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chart-history-loader { position: absolute; z-index: 10; left: 50%; bottom: 28px; height: 28px; display: flex; align-items: center; gap: 8px; padding: 0 11px; border-radius: 5px; background: rgba(30,30,30,.94); color: #c4c9d0; box-shadow: 0 4px 16px rgba(0,0,0,.35); transform: translateX(-50%); pointer-events: none; font-size: 11px; }
.chart-history-loader[hidden] { display: none; }
.chart-history-loader i { width: 12px; height: 12px; border: 2px solid #4a4a4a; border-top-color: #aeb4bd; border-radius: 50%; animation: control-spin .7s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .legend-item, .legend-item button { transition: none; }
  .chart-history-loader i { animation: none; }
}
.chart-tooltip { position: absolute; z-index: 4; width: 155px; padding: 9px 10px; border: 1px solid #2a3544; border-radius: 7px; background: rgba(11, 16, 23, .94); box-shadow: 0 10px 26px rgba(0,0,0,.28); pointer-events: none; font: 9px/1.65 ui-monospace, SFMono-Regular, Consolas, monospace; color: #9ea9b7; backdrop-filter: blur(8px); }
.chart-tooltip b { color: white; }
.chart-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-size: 12px; }
.chart-empty[hidden] { display: none; }

.timeframe-analysis { position: absolute; z-index: 3; top: 10px; right: 66px; display: flex; align-items: center; gap: 7px; min-height: 27px; padding: 4px 7px; border: 1px solid rgba(75, 88, 104, .42); border-radius: 5px; background: rgba(10, 15, 21, .72); opacity: .62; backdrop-filter: blur(7px); transition: opacity .16s, border-color .16s; pointer-events: auto; }
.timeframe-analysis:hover { opacity: .96; border-color: rgba(91, 107, 127, .68); }
.tf-summary { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.tf-summary span { color: #687482; font-size: 7px; }
.tf-summary b { font-size: 9px; margin: 0; font-weight: 600; }
.tf-summary b.bullish { color: var(--green); }
.tf-summary b.bearish { color: var(--red); }
.tf-summary small { font-size: 7px; color: #657180; }
.tf-cards { display: flex; align-items: center; gap: 3px; padding-left: 1px; }
.tf-card { width: 6px; height: 6px; border-radius: 50%; background: #5d6672; }
.tf-card > b, .tf-card > small { display: none; }
.tf-card > span { display: block; width: 100%; height: 100%; border-radius: inherit; }
.tf-card.bullish > span { background: var(--green); }
.tf-card.bearish > span { background: var(--red); }
.tf-card.neutral > span { background: var(--amber); }

.chart-context-menu { position: absolute; z-index: 12; width: 218px; overflow: hidden; border: 1px solid #2b3745; border-radius: 7px; background: rgba(15, 21, 29, .98); box-shadow: 0 18px 45px rgba(0, 0, 0, .48); backdrop-filter: blur(10px); }
.chart-context-menu[hidden] { display: none; }
.context-candle { display: grid; grid-template-columns: 1fr auto; gap: 4px 8px; padding: 10px 11px 8px; border-bottom: 1px solid var(--line); }
.context-candle b { color: #d8e0ea; font-size: 9px; }
.context-candle small { color: #91a0b1; font: 9px ui-monospace, SFMono-Regular, Consolas, monospace; }
.context-candle span { grid-column: 1 / -1; color: #667484; font: 8px ui-monospace, SFMono-Regular, Consolas, monospace; }
.chart-context-menu > button { width: 100%; min-height: 47px; display: grid; grid-template-columns: 27px 1fr; align-items: center; gap: 8px; padding: 6px 10px; border: 0; border-bottom: 1px solid var(--line-soft); background: transparent; color: #cbd5e1; text-align: left; cursor: pointer; }
.chart-context-menu > button:last-child { border-bottom: 0; }
.chart-context-menu > button:hover { background: #1a2430; }
.chart-context-menu > button > i { width: 23px; height: 23px; display: grid; place-items: center; border-radius: 5px; background: var(--green-soft); color: var(--green); font-style: normal; font-weight: 700; }
.chart-context-menu > button[data-context-side="sell"] > i { background: var(--red-soft); color: var(--red); }
.chart-context-menu > button > span { display: flex; flex-direction: column; gap: 3px; }
.chart-context-menu > button b { font-size: 9px; }
.chart-context-menu > button small { color: var(--muted); font-size: 7px; }

.right-panel { border-left: 1px solid var(--line); background: var(--panel); min-height: 0; display: grid; grid-template-rows: 42px minmax(0, 1fr) 180px; }
.panel-tabs { display: flex; border-bottom: 1px solid var(--line); padding: 0 12px; }
.panel-tabs button { flex: 1; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--muted); font-size: 10px; cursor: pointer; }
.panel-tabs button.active { color: #dce5f0; border-bottom-color: var(--blue); }
.panel-view { display: none; overflow: auto; min-height: 0; padding: 14px 12px; }
.panel-view.active { display: block; }
.panel-title-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.panel-title-row h2 { margin: 0; font-size: 12px; }
.panel-title-row small { display: block; font-size: 8px; color: var(--muted); margin-top: 3px; }
.mini-button { width: 25px; height: 25px; border: 1px solid var(--line); background: var(--panel-2); border-radius: 6px; color: var(--muted); cursor: pointer; }
.search-box { height: 32px; border: 1px solid var(--line); border-radius: 7px; background: #0a0f15; display: flex; align-items: center; gap: 7px; padding: 0 9px; color: var(--muted); margin-bottom: 12px; }
.search-box input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: white; font-size: 10px; }
.watchlist-header, .watch-item { display: grid; grid-template-columns: 1.15fr .85fr .65fr; align-items: center; }
.watchlist-header { color: #5f6976; font-size: 8px; padding: 0 7px 6px; }
.watchlist-header span:not(:first-child), .watch-price, .watch-change { text-align: right; }
.watch-group { color: #687482; font-size: 8px; text-transform: uppercase; letter-spacing: .7px; padding: 10px 6px 5px; border-top: 1px solid var(--line-soft); }
.watch-group:first-child { border-top: 0; }
.watch-item { border: 1px solid transparent; border-radius: 7px; padding: 8px 7px; cursor: pointer; margin-bottom: 2px; }
.watch-item:hover { background: var(--panel-2); }
.watch-item.active { border-color: rgba(63,140,255,.35); background: rgba(63,140,255,.09); }
.watch-symbol { display: flex; align-items: center; gap: 7px; min-width: 0; }
.symbol-mini { width: 22px; height: 22px; overflow: hidden; border-radius: 50%; background: #202020; color: #a6bedb; display: grid; place-items: center; font-size: 7px; font-weight: 700; }
.watch-symbol span:last-child { display: flex; flex-direction: column; min-width: 0; }
.watch-symbol b { font-size: 9px; }
.watch-symbol small { color: var(--muted); font-size: 7px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.watch-price, .watch-change { font: 9px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; }
.watch-change.positive { color: var(--green); }
.watch-change.negative { color: var(--red); }

.trade-ticket { border-top: 1px solid var(--line); padding: 12px; background: #0b1016; }
.ticket-head { display: flex; align-items: center; justify-content: space-between; }
.ticket-head > div { display: flex; flex-direction: column; }
.ticket-head span { font-size: 11px; font-weight: 600; }
.ticket-head small { color: var(--muted); font-size: 8px; margin-top: 2px; }
.switch input { display: none; }
.switch > span { display: block; width: 31px; height: 17px; border-radius: 20px; background: #26303c; position: relative; cursor: pointer; transition: .2s; }
.switch > span::after { content: ""; position: absolute; width: 13px; height: 13px; border-radius: 50%; background: #7d8996; left: 2px; top: 2px; transition: .2s; }
.switch input:checked + span { background: rgba(34,201,154,.3); }
.switch input:checked + span::after { background: var(--green); transform: translateX(14px); }
.mode-switch { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--line); border-radius: 6px; padding: 2px; margin: 9px 0; }
.mode-switch button { height: 24px; border: 0; border-radius: 4px; background: transparent; color: var(--muted); font-size: 8px; cursor: pointer; }
.mode-switch button.active { background: #202a36; color: white; }
.risk-row { display: grid; grid-template-columns: 1fr auto 1fr auto; align-items: center; gap: 5px; font-size: 8px; color: var(--muted); }
.risk-row b { color: #c5cfdb; font-size: 8px; }
.ticket-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-top: 10px; }
.ticket-actions button { height: 45px; border: 1px solid; border-radius: 7px; display: flex; flex-direction: column; justify-content: center; cursor: pointer; }
.ticket-actions small { font-size: 8px; }
.ticket-actions b { font: 600 12px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; }
.sell-action { border-color: rgba(255,85,112,.35) !important; background: var(--red-soft); color: var(--red); }
.buy-action { border-color: rgba(34,201,154,.35) !important; background: var(--green-soft); color: var(--green); }
.sell-action:hover { background: rgba(255,85,112,.2); }
.buy-action:hover { background: rgba(34,201,154,.2); }

.score-ring { width: 34px; height: 34px; border: 2px solid #344052; border-radius: 50%; display: grid; place-items: center; font-size: 9px; font-weight: 700; }
.score-ring.good { border-color: var(--green); color: var(--green); }
.score-ring.warn { border-color: var(--amber); color: var(--amber); }
.empty-analysis { text-align: center; padding: 52px 22px; color: var(--muted); }
.empty-analysis > span { display: block; font-size: 30px; color: #334153; margin-bottom: 10px; }
.empty-analysis b { color: #9ca8b6; font-size: 11px; }
.empty-analysis p { font-size: 9px; line-height: 1.6; }
.point-form { display: block; }
.point-form[hidden], .empty-analysis[hidden] { display: none; }
.trade-note-label { display: block; color: var(--muted); font-size: 8px; margin: 10px 0 0; }
.trade-note-label textarea { display: block; width: 100%; resize: vertical; min-height: 44px; margin-top: 4px; border: 1px solid var(--line); border-radius: 5px; background: #090e14; color: white; padding: 7px; font-size: 9px; line-height: 1.45; }
.point-side-row { display: flex; align-items: center; gap: 9px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.point-side-row > div { display: flex; flex-direction: column; }
.point-side-row b { font-size: 10px; }
.point-side-row small { color: var(--muted); font-size: 8px; margin-top: 2px; }
.side-badge, .paper-chip { padding: 4px 6px; border-radius: 4px; color: var(--green); background: var(--green-soft); border: 1px solid rgba(34,201,154,.2); font-size: 8px; font-weight: 700; }
.side-badge.sell { color: var(--red); background: var(--red-soft); border-color: rgba(255,85,112,.2); }
.paper-chip { color: var(--blue); background: rgba(63,140,255,.1); border-color: rgba(63,140,255,.2); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 12px 0; }
.form-grid label { color: var(--muted); font-size: 8px; }
.form-grid input { display: block; width: 100%; height: 29px; margin-top: 4px; border: 1px solid var(--line); background: #090e14; color: white; border-radius: 5px; padding: 0 7px; font: 9px ui-monospace, SFMono-Regular, Consolas, monospace; }
.rr-card { padding: 9px; border: 1px solid var(--line); background: #0a0f15; border-radius: 7px; display: grid; grid-template-columns: 1fr auto; }
.rr-card span { color: var(--muted); font-size: 8px; }
.rr-card b { color: var(--amber); font-size: 11px; }
.rr-card small { grid-column: 1/-1; color: #7f8b99; font-size: 8px; margin-top: 5px; line-height: 1.5; }
.reason-section { margin-top: 12px; }
.reason-section h3 { font-size: 9px; margin: 0 0 6px; color: #aeb8c5; }
.reason-section ul { margin: 0; padding: 0; list-style: none; }
.reason-section li { font-size: 8px; color: #8f9caa; line-height: 1.5; padding: 4px 0 4px 12px; position: relative; border-bottom: 1px solid var(--line-soft); }
.reason-section li::before { content: "✓"; position: absolute; left: 0; color: var(--green); }
.reason-section.caution li::before { content: "!"; color: var(--amber); }
.primary-action, .secondary-button { border-radius: 6px; height: 34px; padding: 0 15px; cursor: pointer; font-size: 9px; font-weight: 600; }
.primary-action { border: 0; background: linear-gradient(135deg, #357ef0, #4a94ff); color: white; }
.point-form > .primary-action { width: 100%; margin-top: 12px; }
.ai-trade-analysis { margin-top: 12px; border: 1px solid #253248; border-radius: 8px; background: linear-gradient(145deg, rgba(63,140,255,.08), rgba(166,108,255,.035)); overflow: hidden; }
.ai-card-head { height: 36px; display: flex; align-items: center; justify-content: space-between; padding: 0 9px; border-bottom: 1px solid rgba(75,116,177,.16); }
.ai-card-head > div { display: flex; align-items: center; gap: 6px; }
.ai-card-head b { font-size: 9px; }
.ai-card-head small { color: #76869a; font-size: 7px; }
.ai-orb { width: 22px; height: 22px; display: grid; place-items: center; border-radius: 6px; background: linear-gradient(135deg,#3f8cff,#9b65ff); color: white; font-size: 7px; font-weight: 800; box-shadow: 0 0 14px rgba(83,124,255,.35); }
.ai-placeholder { padding: 10px; color: #8290a2; font-size: 8px; line-height: 1.55; }
.ai-result { padding: 10px; }
.ai-result h3 { margin: 0 0 8px; color: #dbe8fa; font-size: 10px; line-height: 1.5; }
.ai-result dl { display: grid; grid-template-columns: 32px 1fr; gap: 6px; margin: 0; font-size: 8px; line-height: 1.5; }
.ai-result dt { color: #6fa8ff; }
.ai-result dd { margin: 0; color: #98a6b7; }
.ai-tags { display: flex; flex-wrap: wrap; gap: 4px; margin: 9px 0; }
.ai-tags span { padding: 3px 5px; border: 1px solid rgba(92,137,214,.25); border-radius: 4px; color: #91baff; background: rgba(63,140,255,.07); font-size: 7px; }
.ai-risks { border-top: 1px solid rgba(75,116,177,.14); padding-top: 8px; }
.ai-risks b { color: #d6a96c; font-size: 8px; }
.ai-risks ul { margin: 5px 0 0; padding-left: 14px; color: #a5978b; font-size: 8px; line-height: 1.5; }
.ai-result footer { display: flex; justify-content: space-between; align-items: center; margin-top: 9px; color: #718096; font-size: 7px; }
.ai-result footer span { color: var(--green); font-size: 9px; font-weight: 700; }
.ai-submit { height: 45px !important; display: flex; flex-direction: column; justify-content: center; align-items: center; }
.ai-submit small { margin-top: 2px; opacity: .72; font-size: 7px; }
.ai-submit.loading { pointer-events: none; opacity: .7; }
.secondary-button { border: 1px solid var(--line); background: var(--panel-2); color: #aeb8c5; }
.orders-list { display: grid; gap: 7px; }
.order-card { border: 1px solid var(--line); background: #0a0f15; border-radius: 7px; padding: 9px; }
.order-top, .order-details { display: flex; justify-content: space-between; align-items: center; }
.order-top b { font-size: 9px; }
.order-side { font-size: 8px; color: var(--green); }
.order-side.sell { color: var(--red); }
.order-details { color: var(--muted); font: 8px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; margin-top: 5px; }
.empty-orders { color: var(--muted); font-size: 9px; text-align: center; padding: 45px 0; }

.statusbar { display: flex; align-items: center; gap: 23px; border-top: 1px solid var(--line); padding: 0 14px 0 55px; background: #090d12; color: #697482; font-size: 8px; }
.statusbar > span { display: flex; align-items: center; gap: 6px; }
.statusbar b { color: #8d98a6; font-weight: 500; }
.statusbar .risk-disclaimer { margin-left: auto; color: #5e6875; }

.settings-dialog { width: 560px; border: 1px solid #273344; border-radius: 8px; padding: 0; color: var(--text); background: #11161e; box-shadow: 0 25px 80px rgba(0,0,0,.6); }
.settings-dialog::backdrop { background: rgba(2,5,8,.76); backdrop-filter: blur(3px); }
.settings-dialog form { margin: 0; }
.dialog-head { display: flex; align-items: flex-start; justify-content: space-between; padding: 18px 20px 14px; border-bottom: 1px solid var(--line); }
.dialog-head h2 { margin: 0; font-size: 14px; }
.dialog-head p { color: var(--muted); font-size: 9px; margin: 5px 0 0; }
.dialog-head > button { border: 0; background: transparent; color: var(--muted); font-size: 20px; cursor: pointer; }
.indicator-search { height: 38px; margin: 14px 16px 8px; padding: 0 11px; border: 1px solid #2b3542; border-radius: 5px; background: #090e14; display: flex; align-items: center; gap: 8px; color: #768291; }
.indicator-search:focus-within { border-color: #4a90f7; box-shadow: 0 0 0 1px #4a90f7; }
.indicator-search input { width: 100%; border: 0; outline: 0; background: transparent; color: white; font-size: 11px; }
.indicator-tabs, .settings-tabs { height: 37px; display: flex; align-items: end; gap: 20px; padding: 0 18px; border-bottom: 1px solid var(--line); }
.indicator-tabs button, .settings-tabs button { height: 37px; padding: 0 2px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: #7f8995; font-size: 10px; cursor: pointer; }
.indicator-tabs button.active, .settings-tabs button.active { color: white; border-bottom-color: #4b91ff; }
.indicator-catalog { height: 420px; overflow: auto; padding: 7px 8px; }
.catalog-row { width: 100%; height: 50px; display: grid; grid-template-columns: 28px 1fr 45px 18px; align-items: center; gap: 4px; border: 0; border-radius: 5px; padding: 0 8px 0 2px; background: transparent; text-align: left; cursor: pointer; }
.catalog-row:hover { background: #1a212b; }
.catalog-row[hidden] { display: none; }
.catalog-row > span:nth-child(2) { display: flex; flex-direction: column; gap: 3px; }
.catalog-row b { color: #d9e0e9; font-size: 10px; font-weight: 500; }
.catalog-row small { color: #717d8c; font-size: 8px; }
.catalog-row em { color: #66717f; font-size: 8px; font-style: normal; }
.catalog-row > i { width: 7px; height: 7px; border-radius: 50%; background: transparent; }
.catalog-row.added > i { background: var(--blue); box-shadow: 0 0 6px rgba(63,140,255,.7); }
.catalog-star { color: #677281; font-size: 17px; text-align: center; }
.catalog-hint { height: 34px; display: flex; align-items: center; padding: 0 18px; border-top: 1px solid var(--line); color: #697482; font-size: 8px; }
.indicator-settings { width: 460px; }
.broker-dialog { width: 540px; }
.broker-status-card { margin: 14px 18px 4px; min-height: 58px; display: flex; align-items: center; gap: 11px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 7px; background: #0b1016; }
.broker-status-card > i { width: 10px; height: 10px; flex: 0 0 auto; border-radius: 50%; background: var(--amber); box-shadow: 0 0 9px rgba(245,184,75,.5); }
.broker-status-card.ready > i { background: var(--green); box-shadow: 0 0 9px rgba(34,201,154,.55); }
.broker-status-card.error > i { background: var(--red); box-shadow: 0 0 9px rgba(255,85,112,.5); }
.broker-status-card > div { display: flex; flex-direction: column; gap: 4px; }
.broker-status-card b { font-size: 10px; }
.broker-status-card small { color: var(--muted); font-size: 8px; }
.broker-fields { padding: 12px 18px 4px; display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.broker-fields label { color: #a8b3c0; font-size: 9px; }
.broker-fields label:nth-child(1), .broker-fields label:nth-child(3), .broker-fields label:nth-child(4) { grid-column: 1 / -1; }
.broker-fields label small { margin-left: 5px; color: #657181; font-size: 7px; }
.broker-fields input { display: block; width: 100%; height: 33px; margin-top: 5px; padding: 0 9px; border: 1px solid #293542; border-radius: 5px; outline: 0; background: #090e14; color: white; font: 9px ui-monospace, SFMono-Regular, Consolas, monospace; }
.broker-fields input:focus { border-color: #4a90f7; }
.broker-help { margin: 11px 18px 2px; padding: 9px 11px; display: flex; flex-direction: column; gap: 4px; border-left: 2px solid var(--amber); background: rgba(245,184,75,.045); }
.broker-help b { color: #d6b06e; font-size: 8px; }
.broker-help span { color: #7f8b99; font-size: 8px; line-height: 1.55; }
.broker-actions { justify-content: space-between; }
.mt5-details { margin: 12px 18px 4px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mt5-details > div { min-height: 50px; padding: 9px 11px; display: flex; flex-direction: column; justify-content: center; gap: 5px; border: 1px solid var(--line); border-radius: 7px; background: #0a0f15; }
.mt5-details span { color: var(--muted); font-size: 8px; }
.mt5-details b { overflow: hidden; color: #cbd5e1; font: 9px ui-monospace, SFMono-Regular, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.settings-pane { min-height: 230px; max-height: 520px; overflow: auto; padding: 16px 20px; display: grid; align-content: start; gap: 11px; }
.indicator-timeframe-field { min-width: 0; margin: 0 0 5px; padding: 10px 11px 9px; border: 1px solid #2a3543; border-radius: 7px; background: #0b1016; }
.indicator-timeframe-field legend { padding: 0 5px; color: #bdc7d3; font-size: 10px; }
.indicator-timeframe-field legend small { margin-left: 5px; color: #647181; font-size: 7px; font-weight: 400; }
.indicator-timeframe-field p { margin: 8px 1px 0; color: #687585; font-size: 7px; line-height: 1.45; }
.indicator-timeframe-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.timeframe-check { position: relative; min-width: 0; }
.timeframe-check input { position: absolute; opacity: 0; pointer-events: none; }
.timeframe-check span { height: 28px; display: grid; place-items: center; overflow: hidden; border: 1px solid #293442; border-radius: 5px; background: #0e141c; color: #778493; font: 8px ui-monospace, SFMono-Regular, Consolas, monospace; white-space: nowrap; cursor: pointer; transition: border-color .14s, background .14s, color .14s; }
.timeframe-check span:hover { border-color: #3a4b60; color: #b3becb; }
.timeframe-check input:focus-visible + span { outline: 2px solid rgba(63,140,255,.55); outline-offset: 1px; }
.timeframe-check input:checked + span { border-color: rgba(63,140,255,.72); background: rgba(63,140,255,.13); color: #91baff; box-shadow: inset 0 0 0 1px rgba(63,140,255,.08); }
.setting-row { display: grid; grid-template-columns: 1fr 150px; align-items: center; min-height: 32px; color: #adb7c3; font-size: 10px; }
.setting-row small { display: block; color: #687483; font-size: 8px; margin-top: 2px; }
.setting-row input[type="number"], .setting-row input[type="datetime-local"], .setting-row select { width: 100%; height: 31px; border: 1px solid #2a3442; border-radius: 5px; background: #0a0f15; color: white; padding: 0 8px; font-size: 10px; color-scheme: dark; }
.setting-row input[type="color"] { width: 34px; height: 27px; justify-self: end; padding: 2px; border: 1px solid #2a3442; border-radius: 5px; background: #0a0f15; }
.style-check { justify-self: end; display: flex; align-items: center; gap: 8px; color: #8894a2; }
.indicator-list { padding: 9px 20px; }
.indicator-option { min-height: 50px; display: grid; grid-template-columns: 18px 10px 1fr 48px; align-items: center; gap: 9px; border-bottom: 1px solid var(--line-soft); }
.indicator-option > span:nth-of-type(2) { display: flex; flex-direction: column; }
.indicator-option b { font-size: 10px; }
.indicator-option small { color: var(--muted); font-size: 8px; margin-top: 3px; }
.indicator-option em { color: var(--muted); font-size: 8px; font-style: normal; justify-self: end; }
.color-dot { width: 7px; height: 7px; border-radius: 50%; }
.color-dot.amber { background: var(--amber); }.color-dot.cyan { background: var(--cyan); }.color-dot.violet { background: var(--violet); }.color-dot.blue { background: var(--blue); }.color-dot.coral { background: var(--red); }.color-dot.green { background: var(--green); }
.period-input { width: 48px; height: 27px; border: 1px solid var(--line); border-radius: 5px; background: #090e14; color: white; padding: 0 6px; font-size: 9px; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 7px; padding: 14px 20px; border-top: 1px solid var(--line); }
.toast-stack { position: fixed; right: 20px; bottom: 42px; z-index: 50; display: grid; gap: 8px; }
.toast { width: 270px; border: 1px solid #2a3645; border-left: 3px solid var(--blue); border-radius: 7px; background: rgba(14,20,28,.96); color: #b8c2ce; padding: 10px 12px; font-size: 9px; box-shadow: 0 15px 30px rgba(0,0,0,.35); animation: toast-in .2s ease-out; }
.toast.success { border-left-color: var(--green); }.toast.error { border-left-color: var(--red); }
@keyframes toast-in { from { transform: translateX(14px); opacity: 0; } }

/* TradingView-style workspace shell */
.app-shell { grid-template-rows: 44px minmax(0, 1fr) 25px; }
.app-shell.logs-open { grid-template-rows: 44px minmax(0, 1fr) 220px 25px; }
.topbar { gap: 4px; padding: 0 7px; background: #0c1016; }
.brand { width: 39px; padding-left: 4px; }
.brand-mark { transform: skew(-13deg) scale(.83); }
.instrument-tabs { min-width: 0; height: 100%; display: flex; align-items: stretch; gap: 1px; overflow-x: auto; scrollbar-width: none; }
.instrument-tabs::-webkit-scrollbar { display: none; }
.instrument-tab { position: relative; min-width: 154px; max-width: 205px; height: 100%; display: grid; grid-template-columns: 27px minmax(0, 1fr) 18px; align-items: center; gap: 7px; padding: 0 8px; border: 0; border-right: 1px solid #202833; background: transparent; color: #8793a2; text-align: left; cursor: pointer; }
.instrument-tab:hover { background: #121923; color: #d8e0ea; }
.instrument-tab.active { background: #151c26; color: #eef3f8; }
.instrument-tab.active::after { content: ""; position: absolute; left: 6px; right: 6px; bottom: 0; height: 2px; border-radius: 2px; background: #4b8fff; }
.instrument-tab > span:nth-child(2) { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.instrument-tab b { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.instrument-tab small { overflow: hidden; color: #677382; font-size: 7px; text-overflow: ellipsis; white-space: nowrap; }
.instrument-tab .instrument-icon { width: 23px; height: 23px; font-size: 8px; box-shadow: none; }
.instrument-tab .chevron { width: 18px; height: 22px; display: grid; place-items: center; border-radius: 4px; }
.instrument-tab .chevron:hover { background: #26313e; color: white; }
.instrument-tab-close { position: absolute; top: 2px; right: 2px; width: 15px; height: 15px; display: none; place-items: center; border: 0; border-radius: 50%; background: #273240; color: #8894a2; font-size: 9px; cursor: pointer; }
.instrument-tab:hover .instrument-tab-close { display: grid; }
.add-instrument-tab { width: 30px; height: 30px; align-self: center; flex: 0 0 auto; border: 0; border-radius: 6px; background: transparent; color: #9ba6b4; font-size: 20px; cursor: pointer; }
.add-instrument-tab:hover { background: #1b2430; color: white; }
.symbol-selector { position: absolute; left: 48px; top: 0; }
.symbol-popover { top: 43px; }

.chart-region { grid-template-rows: 39px 45px 23px minmax(300px, 1fr); }
.chart-toolbar { min-width: 0; display: flex; align-items: center; gap: 8px; padding: 0 8px; border-bottom: 1px solid var(--line); background: #0a0e13; }
.quick-quote-strip { height: 31px; display: flex; align-items: stretch; gap: 3px; pointer-events: auto; }
.quick-quote { min-width: 73px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px solid; border-radius: 5px; background: transparent; cursor: pointer; }
.quick-quote small { font-size: 7px; line-height: 1; }
.quick-quote b { margin-top: 2px; font: 600 10px/1 ui-monospace, SFMono-Regular, Consolas, monospace; }
.quick-quote.sell { border-color: rgba(255,85,112,.52); color: #ff6a80; background: rgba(255,85,112,.055); }
.quick-quote.buy { border-color: rgba(63,140,255,.62); color: #70a9ff; background: rgba(63,140,255,.065); }
.quick-quote:hover { filter: brightness(1.2); }
.quote-spread { min-width: 35px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #647180; }
.quote-spread small { font-size: 6px; }.quote-spread b { font: 8px ui-monospace, Consolas; }
.chart-toolbar .timeframes { flex: 1; min-width: 240px; padding: 0 3px; }
.timeframe-more > button svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.timeframe-more > button i { color: #6e7b89; font-style: normal; font-size: 9px; }
.timeframe-menu { top: 33px; width: 330px; }
.timeframe-menu > div { grid-template-columns: 60px 1fr; }
.timeframe-menu span { display: grid; grid-template-columns: repeat(5, 1fr); }
.account-switch-button { height: 32px; max-width: 145px; display: flex; align-items: center; gap: 6px; padding: 0 9px; border: 1px solid var(--line); border-radius: 7px; background: #111720; color: #8e9aa9; cursor: pointer; }
.account-switch-button:hover { border-color: #354359; color: white; }
.account-switch-button > span { color: #4f9cff; }.account-switch-button b { overflow: hidden; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }.account-switch-button i { font-style: normal; }
.tool-spacer { flex: 1; }

.chart-context-menu > div:not(.context-candle)[hidden] { display: none; }
.chart-context-menu > div:not(.context-candle) > button { width: 100%; min-height: 47px; display: grid; grid-template-columns: 27px 1fr; align-items: center; gap: 8px; padding: 6px 10px; border: 0; border-bottom: 1px solid var(--line-soft); background: transparent; color: #cbd5e1; text-align: left; cursor: pointer; }
.chart-context-menu > div:not(.context-candle) > button:hover { background: #1a2430; }
.chart-context-menu > div:not(.context-candle) > button > i { width: 23px; height: 23px; display: grid; place-items: center; border-radius: 5px; background: rgba(63,140,255,.12); color: #74acff; font-style: normal; font-weight: 700; }
.chart-context-menu > div:not(.context-candle) > button > span { display: flex; flex-direction: column; gap: 3px; }
.chart-context-menu > div:not(.context-candle) > button b { font-size: 9px; }.chart-context-menu > div:not(.context-candle) > button small { color: var(--muted); font-size: 7px; }
.chart-context-menu button.danger > i { background: var(--red-soft) !important; color: var(--red) !important; }

.panel-tabs { padding: 0 5px; }
.panel-tabs button { min-width: 0; font-size: 9px; }
.model-control-card { padding: 10px; border: 1px solid var(--line); border-radius: 7px; background: #0a0f15; }
.model-control-line { min-height: 30px; display: flex; align-items: center; justify-content: space-between; color: #a8b3c0; font-size: 9px; border-bottom: 1px solid var(--line-soft); }
.model-control-card > small { display: block; margin-top: 8px; color: #667383; font-size: 7px; line-height: 1.5; }
.model-symbol-heading { display: flex; align-items: center; justify-content: space-between; margin: 13px 0 7px; }
.model-symbol-heading b { font-size: 9px; }.model-symbol-heading button { border: 0; background: transparent; color: #6fa8ff; font-size: 8px; cursor: pointer; }
.model-symbol-list { display: flex; flex-wrap: wrap; gap: 5px; }
.model-symbol-check { position: relative; }.model-symbol-check input { position: absolute; opacity: 0; }
.model-symbol-check span { min-width: 65px; height: 27px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 5px; color: #738091; background: #0b1016; font: 8px ui-monospace, Consolas; cursor: pointer; }
.model-symbol-check input:checked + span { border-color: rgba(63,140,255,.62); color: #87b5ff; background: rgba(63,140,255,.1); }
.model-run-status { margin: 12px 0 8px; padding: 8px 9px; display: grid; grid-template-columns: 8px 1fr auto; align-items: center; gap: 7px; border: 1px solid var(--line); border-radius: 6px; background: #0a0f15; }
.model-run-status i { width: 7px; height: 7px; border-radius: 50%; background: #586474; }.model-run-status.running i { background: var(--green); box-shadow: 0 0 8px rgba(34,201,154,.5); }
.model-run-status span { font-size: 8px; }.model-run-status small { color: #657180; font-size: 7px; }
.model-results { display: grid; gap: 7px; }
.model-result-card { padding: 9px; border: 1px solid var(--line); border-radius: 7px; background: #0a0f15; }
.model-result-head { display: flex; align-items: center; justify-content: space-between; }.model-result-head b { font-size: 9px; }.model-result-head span { padding: 3px 5px; border-radius: 4px; color: #aeb8c5; background: #1d2733; font-size: 7px; }
.model-result-head span.buy { color: var(--green); background: var(--green-soft); }.model-result-head span.sell { color: var(--red); background: var(--red-soft); }
.model-result-card p { margin: 7px 0; color: #9ba7b5; font-size: 8px; line-height: 1.5; }.model-result-card small { color: #627080; font-size: 7px; }

.trade-history-tabs { display: flex; gap: 3px; padding: 2px; border: 1px solid var(--line); border-radius: 6px; }
.trade-history-tabs button { flex: 1; height: 26px; border: 0; border-radius: 4px; background: transparent; color: #6f7b8a; font-size: 8px; cursor: pointer; }.trade-history-tabs button.active { background: #202a36; color: #dbe4ef; }
.trade-stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin: 10px 0; }
.trade-stat-grid > div { min-height: 49px; padding: 8px; display: flex; flex-direction: column; gap: 5px; border: 1px solid var(--line); border-radius: 6px; background: #0a0f15; }
.trade-stat-grid span { color: #6d7988; font-size: 7px; }.trade-stat-grid b { font: 600 11px ui-monospace, Consolas; }
.trade-history-head, .trade-history-row { display: grid; grid-template-columns: 1.25fr .48fr .9fr .65fr; align-items: center; gap: 6px; }
.trade-history-head { padding: 6px 5px; color: #5f6b79; font-size: 7px; border-bottom: 1px solid var(--line); }
.trade-history-list { display: grid; }
.trade-history-row { min-height: 43px; padding: 5px; border-bottom: 1px solid var(--line-soft); color: #a8b3bf; font-size: 7px; }
.trade-history-row b { display: block; color: #d0d8e2; font-size: 8px; }.trade-history-row small { color: #647180; font-size: 6px; }.trade-history-row .positive { color: var(--green); }.trade-history-row .negative { color: var(--red); }
.orders-list[hidden], .trade-history-list[hidden], .trade-stat-grid[hidden], .trade-history-head[hidden] { display: none; }

.system-log-dock { min-height: 0; display: grid; grid-template-rows: 30px 34px 24px minmax(0,1fr); border-top: 1px solid #293341; background: #0b0f14; }
.system-log-dock[hidden] { display: none; }
.log-tabs { display: flex; align-items: flex-end; gap: 10px; padding: 0 10px; border-bottom: 1px solid var(--line); }.log-tabs button { height: 30px; padding: 0 8px; border: 0; border-bottom: 2px solid var(--blue); background: transparent; color: #dbe4ef; font-size: 9px; }.log-tabs span { margin-bottom: 7px; color: #617080; font-size: 7px; }
.log-toolbar { display: flex; align-items: center; gap: 7px; padding: 4px 9px; }.log-toolbar label { width: 310px; height: 26px; display: flex; align-items: center; gap: 6px; padding: 0 8px; border: 1px solid var(--line); border-radius: 5px; background: #070b10; color: #697584; }.log-toolbar input { flex: 1; border: 0; outline: 0; background: transparent; color: #dce4ee; font-size: 8px; }.log-toolbar select, .log-toolbar button { height: 26px; border: 1px solid var(--line); border-radius: 5px; background: #111720; color: #8d99a8; font-size: 8px; }.log-toolbar select { padding: 0 7px; }.log-toolbar button { padding: 0 10px; cursor: pointer; }.log-toolbar #closeLogPanel { margin-left: auto; font-size: 14px; }
.log-table-head, .log-row { display: grid; grid-template-columns: 155px 62px 100px 1fr; align-items: center; gap: 0; }.log-table-head { padding: 0 10px; color: #677383; font-size: 7px; background: #10161d; border-block: 1px solid #1b2430; }.log-table { overflow: auto; }.log-row { min-height: 25px; padding: 0 10px; color: #aab5c1; font: 8px ui-monospace, Consolas; border-bottom: 1px solid #151d26; }.log-row:nth-child(even) { background: #0e131a; }.log-row span:nth-child(2) { color: #75a9f7; }.log-row.error span:nth-child(2) { color: var(--red); }.log-row.warn span:nth-child(2) { color: var(--amber); }.log-row.success span:nth-child(2) { color: var(--green); }
.account-switch-fields label { grid-column: 1 / -1 !important; }
.annotation-dialog { width: 500px; }
.annotation-dialog .settings-pane { max-height: min(560px, calc(100vh - 170px)); }
.annotation-style-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding-top: 3px; }
.annotation-style-grid > label { min-height: 54px; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px; padding: 0 10px; border: 1px solid #2a3543; border-radius: 6px; background: #0b1016; color: #aeb8c4; font-size: 9px; }
.annotation-style-grid input[type="color"] { width: 38px; height: 30px; padding: 2px; border: 1px solid #343f4e; border-radius: 5px; background: #111720; cursor: pointer; }
.annotation-style-grid select { width: 92px; height: 30px; padding: 0 8px; border: 1px solid #343f4e; border-radius: 5px; background: #111720; color: #d7dee7; font-size: 9px; }
.annotation-timeframe-field { margin-top: 2px; }
.ray-tool { font-size: 14px; }

.side-data-tool { position: relative; }
.side-data-tool > span { font: 700 10px/1 sans-serif; }
.side-data-tool > i { position: absolute; top: 2px; right: 1px; min-width: 7px; height: 7px; padding: 0 2px; display: grid; place-items: center; border: 1px solid #0a0e13; border-radius: 8px; background: var(--red); color: white; font: 600 5px/1 sans-serif; }
.side-data-tool > i[hidden] { display: none; }
.left-data-drawer { position: absolute; z-index: 18; left: 45px; top: 0; bottom: 0; width: min(370px, calc(100vw - 430px)); display: grid; grid-template-rows: 58px 42px 35px minmax(0, 1fr); overflow: hidden; border-right: 1px solid #34404e; background: rgba(17, 23, 31, .985); box-shadow: 15px 0 34px rgba(0,0,0,.34); backdrop-filter: blur(12px); }
.left-data-drawer[hidden] { display: none; }
.drawer-head { display: flex; align-items: center; justify-content: space-between; padding: 0 14px 0 16px; border-bottom: 1px solid var(--line); }
.drawer-head h2 { margin: 0; color: #e2e8f0; font-size: 12px; }.drawer-head small { display: block; margin-top: 3px; color: #6f7c8c; font-size: 7px; }
.drawer-head button { width: 28px; height: 28px; border: 0; border-radius: 5px; background: transparent; color: #7c8998; font-size: 18px; cursor: pointer; }.drawer-head button:hover { background: #202a36; color: white; }
.drawer-filter-row { display: flex; align-items: center; gap: 5px; padding: 7px 14px; border-bottom: 1px solid var(--line-soft); }
.drawer-filter-row button { height: 27px; padding: 0 10px; border: 1px solid var(--line); border-radius: 14px; background: #0c1118; color: #758292; font-size: 8px; cursor: pointer; }.drawer-filter-row button.active { border-color: rgba(63,140,255,.55); background: rgba(63,140,255,.11); color: #8bb8ff; }
.drawer-source-row { display: flex; align-items: center; justify-content: space-between; padding: 0 14px; border-bottom: 1px solid var(--line); color: #6b7888; font-size: 7px; }
.drawer-source-row a, .drawer-source-row button { border: 0; background: transparent; color: #69a2f5; font-size: 7px; text-decoration: none; cursor: pointer; }
.calendar-list, .news-list { overflow: auto; padding: 6px 8px 14px; }
.calendar-day { padding: 8px 7px 5px; color: #7d8998; font-size: 8px; font-weight: 600; }
.calendar-event { position: relative; min-height: 68px; display: grid; grid-template-columns: 45px 1fr; gap: 8px; padding: 9px 8px; border-bottom: 1px solid var(--line-soft); cursor: pointer; }
.calendar-event:hover, .news-item:hover { background: #171f2a; }
.calendar-event time { color: #93a0af; font: 9px ui-monospace, Consolas; }
.calendar-event time small { display: block; margin-top: 5px; color: #667383; font-size: 6px; }.calendar-event time small.high { color: var(--red); }.calendar-event time small.medium { color: var(--amber); }
.calendar-event section { min-width: 0; }.calendar-event h3 { margin: 0; color: #cbd4df; font-size: 9px; line-height: 1.45; }.calendar-event p { margin: 7px 0 0; display: grid; grid-template-columns: repeat(3, 1fr); color: #697685; font-size: 7px; }.calendar-event p b { display: block; margin-top: 2px; color: #a9b4c0; font: 8px ui-monospace, Consolas; }
.news-item { display: grid; grid-template-columns: 42px 1fr; gap: 8px; padding: 10px 8px; border-bottom: 1px solid var(--line-soft); color: inherit; text-decoration: none; cursor: pointer; }
.news-item time { color: #6fa8ff; font: 9px ui-monospace, Consolas; }.news-item time small { display: block; margin-top: 5px; color: #657282; font: 6px sans-serif; }
.news-item h3 { margin: 0; color: #cbd5e1; font-size: 9px; font-weight: 500; line-height: 1.55; }.news-item p { margin: 6px 0 0; color: #748191; font-size: 7px; line-height: 1.5; }.news-item p:empty { display: none; }
.drawer-empty { padding: 48px 20px; color: #697686; font-size: 9px; line-height: 1.65; text-align: center; }

@media (max-height: 820px) {
  .app-shell { grid-template-rows: 44px minmax(0, 1fr) 23px; }
  .app-shell.logs-open { grid-template-rows: 44px minmax(0, 1fr) 190px 23px; }
  .chart-region { grid-template-rows: 37px 42px 21px minmax(260px, 1fr); }
  .right-panel { grid-template-rows: 36px minmax(0, 1fr) 158px; }
  .timeframe-analysis { top: 8px; }
  .trade-ticket { padding-top: 7px; padding-bottom: 6px; }
  .ticket-actions button { height: 36px; }
}

@media (max-width: 1420px) {
  .brand { width: 46px; }
  .brand-copy { display: none; }
  .symbol-trigger { width: 184px; }
  .quote-strip { gap: 10px; padding-right: 10px; }
  .quote-strip .spread { display: none; }
  .timeframes { min-width: 230px; padding-inline: 2px; }
  .timeframes button { min-width: 31px; }
  .connection-pill { max-width: 128px; }
  .connection-pill span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

/* 2026-08 TradingView parity pass: 38px command bar, 52px tools, 340px widget rail. */
html, body { min-width: 1080px; min-height: 600px; }
* { scrollbar-width: thin; scrollbar-color: #394555 transparent; }
*::-webkit-scrollbar { width: 7px; height: 7px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: 8px; background: #394555; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background-color: #526174; }
.app-shell, .app-shell.logs-open { grid-template-rows: 38px minmax(0, 1fr) 24px; }
.app-shell.logs-open { grid-template-rows: 38px minmax(0, 1fr) 210px 24px; }
.topbar { height: 38px; gap: 0; padding: 0; border-color: #232a33; background: #0d1117; }
.brand { width: 52px; height: 38px; justify-content: center; padding: 0; border-right: 1px solid #232a33; }
.brand-mark { transform: skew(-13deg) scale(.78); }
.instrument-tab { min-width: 154px; height: 38px; padding-inline: 9px; font-size: 12px; }
.instrument-tab b { font-size: 12px; }.instrument-tab small { display: none; }
.instrument-tabs { flex: 0 1 auto; max-width: min(42vw, 620px); }
.add-instrument-tab { width: 38px; height: 38px; align-self: auto; border-right: 1px solid #232a33; border-radius: 0; }
.topbar-spacer { min-width: 16px; flex: 1; }
.topbar-actions { height: 100%; display: flex; align-items: center; gap: 4px; padding: 0 8px; border-left: 1px solid #232a33; }
.topbar-icon-button { width: 30px; height: 30px; border: 0; border-radius: 5px; background: transparent; color: #a4aeba; font-size: 17px; cursor: pointer; }
.topbar-icon-button:hover { background: #1b222c; color: #f2f4f7; }
.connection-pill { height: 28px; max-width: 190px; border: 0; border-radius: 5px; background: transparent; cursor: pointer; }
.connection-pill:hover { background: #1b222c; }
.connection-pill span { overflow: hidden; color: #aeb7c2; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.account-switch-button { height: 28px; max-width: 170px; border: 0; border-radius: 5px; background: transparent; }
.account-switch-button:hover { background: #1b222c; }
.account-switch-button b { font-size: 11px; }
.workspace { grid-template-columns: 52px minmax(0, 1fr) 340px; }
.drawing-toolbar { gap: 3px; padding: 6px 0; background: #0d1117; }
.tool { width: 38px; height: 34px; font-size: 15px; }
.chart-region { grid-template-rows: 39px 43px 23px minmax(260px, 1fr); background: #080c11; }
.chart-toolbar { gap: 4px; padding: 0 8px; background: #0d1117; }
.chart-toolbar .timeframes { flex: 1; order: -1; min-width: 318px; }
.timeframes button { min-width: 36px; height: 30px; padding-inline: 8px; border-radius: 4px; font-size: 12px; font-weight: 500; }
.timeframes button.active { background: #1d2631; color: #e8edf3; box-shadow: none; }
.quick-quote-strip { order: 2; height: 31px; }
.quick-quote { min-width: 70px; border-radius: 4px; }.quick-quote small { font-size: 9px; }.quick-quote b { font-size: 11px; }
.chart-toolbar .top-actions { order: 1; flex: 0 0 auto; }
.icon-button { height: 30px; font-size: 13px; }.icon-button span { font-size: 12px; }
.chart-heading { padding: 0 12px; }
.heading-line h1 { font-size: 13px; }.chart-timeframe-chip, .exchange-chip, .market-badge { font-size: 9px; }
.ohlc-row { font-size: 10px; }
.indicator-legend { padding-inline: 12px; }
.legend-item { font-size: 10px; }
.right-panel { position: relative; grid-template-rows: 38px minmax(0, 1fr); background: #0d1117; }
.panel-tabs { position: sticky; top: 0; z-index: 6; background: #0d1117; }
.panel-tabs button { height: 38px; font-size: 11px; }
.panel-view { padding: 12px; }
.panel-title-row { position: sticky; top: -12px; z-index: 5; min-height: 52px; margin: -12px -12px 10px; padding: 0 12px; border-bottom: 1px solid #202833; background: rgba(13,17,23,.98); }
.panel-title-row h2 { font-size: 13px; }.panel-title-row small { font-size: 9px; }
.search-box { position: sticky; top: 40px; z-index: 4; background: #0d1117; }
.watchlist-header { position: sticky; top: 82px; z-index: 4; padding-block: 8px; background: #0d1117; font-size: 9px; }
.watch-item { min-height: 45px; }.watch-item b, .watch-price { font-size: 10px; }.watch-item small, .watch-change { font-size: 9px; }
.trade-history-head { position: sticky; top: 40px; z-index: 4; background: #0d1117; }
.trade-ticket { position: absolute; z-index: 28; top: 46px; right: 8px; width: min(338px, calc(100% - 16px)); padding: 12px; border: 1px solid #364251; border-radius: 8px; background: rgba(13,18,25,.985); box-shadow: 0 18px 55px rgba(0,0,0,.55); }
.trade-ticket[hidden] { display: none; }
.trade-ticket::before { content: ""; position: absolute; top: -6px; right: 67px; width: 10px; height: 10px; border-top: 1px solid #364251; border-left: 1px solid #364251; background: #0d1219; transform: rotate(45deg); }
.trade-ticket-head-actions { display: flex; align-items: center; gap: 10px; }
.trade-ticket-head-actions > button { width: 25px; height: 25px; display: grid; place-items: center; border: 0; border-radius: 4px; background: transparent; color: #8592a0; cursor: pointer; }
.trade-ticket-head-actions > button:hover { background: #202936; color: #fff; }
.trade-ticket-head-actions img { width: 16px; height: 16px; display: block; }
.topbar-trade-button { height: 30px; display: inline-flex; align-items: center; gap: 6px; padding: 0 11px; border: 1px solid #303a47; border-radius: 6px; background: #161d26; color: #d2dae4; font-size: 11px; cursor: pointer; }
.topbar-trade-button img { width: 16px; height: 16px; display: block; }
.topbar-trade-button:hover, .topbar-trade-button.active { border-color: #3e8cff; background: #1b2a3d; color: #fff; }
.live-trading-control { min-height: 38px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid #1b232d; }
.live-trading-control > div { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.live-trading-control span { color: #b7c0ca; font-size: 10px; }
.live-trading-control small { overflow: hidden; max-width: 250px; color: #677482; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.live-trading-control.ready small { color: #47cba2; }.live-trading-control.blocked small { color: #ff6f82; }
.statusbar { padding-left: 62px; font-size: 9px; }

.left-data-drawer { left: 52px; width: min(420px, calc(100vw - 410px)); grid-template-rows: 60px 50px auto 34px 64px 36px minmax(0, 1fr); border-right-color: #35404d; background: rgba(20,27,34,.99); }
#calendarDrawer:has(.calendar-filter-panel[hidden]) { grid-template-rows: 60px 50px 34px 64px 36px minmax(0, 1fr); }
#newsDrawer { grid-template-rows: 60px 44px 34px minmax(0, 1fr); }
.drawer-head { padding: 0 16px; }
.drawer-head h2 { font-size: 14px; font-weight: 600; }.drawer-head h2 em { margin-left: 5px; color: #40cfa1; font-size: 8px; font-style: normal; font-weight: 600; }
.drawer-head small { font-size: 10px; }.drawer-head button { font-size: 20px; }
.calendar-filter-toggle-row { display: flex; align-items: center; justify-content: space-between; padding: 0 15px; }
.calendar-filter-toggle-row > div { display: flex; align-items: center; gap: 7px; }
.calendar-filter-toggle-row button { height: 32px; display: inline-flex; align-items: center; gap: 6px; padding: 0 13px; border: 0; border-radius: 17px; background: #7f96a8; color: #fff; font-size: 12px; cursor: pointer; }
.calendar-filter-toggle-row button > img { width: 17px; height: 17px; }.calendar-filter-toggle-row button i { width: 15px; height: 15px; margin-left: 1px; display: grid; place-items: center; font-style: normal; }.calendar-filter-toggle-row button i img { width: 15px; height: 15px; }
.calendar-filter-toggle-row button.has-filters { padding-right: 6px; border-color: #4d6074; background: #263544; }
.calendar-filter-toggle-row button.has-filters i { width: 23px; height: 23px; margin-left: 5px; border-radius: 50%; background: rgba(5,9,14,.32); }
.calendar-filter-toggle-row button.has-filters i:hover { background: rgba(5,9,14,.58); }
.calendar-filter-toggle-row > small { color: #718091; font-size: 9px; }
.calendar-filter-panel { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0 15px 12px; border-bottom: 1px solid #27313c; }
.calendar-filter-panel[hidden] { display: none; }
.calendar-filter-panel label { position: relative; min-width: 0; height: 44px; display: flex; align-items: center; border: 1px solid #3a4652; border-radius: 5px; background: #151c22; }
.calendar-filter-panel label:last-child:nth-child(odd) { grid-column: 1 / -1; }
.calendar-filter-panel label > span { position: absolute; left: 13px; top: 5px; color: #647281; font-size: 8px; pointer-events: none; }
.calendar-filter-panel select { width: 100%; min-width: 0; height: 100%; padding: 13px 34px 0 13px; overflow: hidden; border: 0; outline: 0; background: transparent url('/assets/icons/chevron-down.svg') calc(100% - 11px) 56%/15px no-repeat; color: #d7dde4; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; color-scheme: dark; appearance: none; }
.calendar-filter-panel select:focus { box-shadow: inset 0 0 0 1px #4b8eea; }.calendar-filter-panel option { max-width: 100%; background: #17202a; color: #e0e6ed; }
.calendar-date-strip { display: grid; grid-template-columns: 26px minmax(0, 1fr) 26px; align-items: stretch; gap: 4px; padding: 6px 8px; border-bottom: 1px solid #303a45; background: #111820; }
.calendar-date-strip > button { border: 1px solid #2d3946; border-radius: 4px; background: #151e28; color: #8090a1; cursor: pointer; }.calendar-date-strip > button:hover { border-color: #4a7bb8; color: #dce6f1; }
.calendar-date-strip > button img { width: 15px; height: 15px; display: block; margin: auto; }.calendar-date-strip > button:first-child img { transform: rotate(90deg); }.calendar-date-strip > button:last-child img { transform: rotate(-90deg); }
#calendarDateStripTrack { min-width: 0; display: flex; gap: 4px; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; scroll-behavior: smooth; }#calendarDateStripTrack::-webkit-scrollbar { display: none; }
#calendarDateStripTrack button { flex: 0 0 66px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; border: 1px solid #2d3946; border-radius: 4px; background: #151d27; color: #8896a5; cursor: pointer; }
#calendarDateStripTrack button b { color: #cbd5df; font-size: 10px; }#calendarDateStripTrack button small { font: 9px ui-monospace,Consolas; }#calendarDateStripTrack button em { color: #637183; font-size: 7px; font-style: normal; }
#calendarDateStripTrack button.today { border-color: #3a566f; }#calendarDateStripTrack button.active { border-color: #4b8ff5; background: #1d3450; color: #93bcff; box-shadow: inset 0 -2px #4b8ff5; }#calendarDateStripTrack button.active b { color: #fff; }
.drawer-source-row { font-size: 9px; }
.drawer-source-row button { font-size: 9px; }
.drawer-source-row button { display: inline-flex; align-items: center; gap: 4px; }.drawer-source-row button img { width: 13px; height: 13px; }
.calendar-column-head { display: grid; grid-template-columns: minmax(0, 1fr) 58px 58px 58px; align-items: center; padding: 0 13px; border-bottom: 1px solid #303a45; color: #83909e; font-size: 10px; }
.calendar-column-head span:not(:first-child) { text-align: right; }
.calendar-list, .news-list { padding: 0 5px 14px; overscroll-behavior: contain; scroll-behavior: smooth; }
.calendar-day { position: sticky; top: 0; z-index: 3; margin-inline: -5px; padding: 8px 13px; border-bottom: 1px solid #35404b; background: #26303a; color: #e0e6ec; font-size: 11px; }
.calendar-event { min-height: 76px; grid-template-columns: 68px minmax(0, 1fr) 58px 58px 58px; gap: 0; padding: 10px 8px; align-items: center; }
.calendar-event time { color: #d9e0e7; font-size: 11px; }.calendar-event time small { margin-top: 7px; font-size: 8px; }
.event-impact, .news-impact { display: inline-flex !important; align-items: flex-end; gap: 2px; }
.event-impact i, .news-impact i { width: 2px; border-radius: 1px; background: #536071; }.event-impact i:nth-child(1), .news-impact i:nth-child(1) { height: 4px; }.event-impact i:nth-child(2), .news-impact i:nth-child(2) { height: 7px; }.event-impact i:nth-child(3), .news-impact i:nth-child(3) { height: 10px; }
.event-impact.high i, .news-impact.high i { background: #ff5570; }.event-impact.medium i, .news-impact.medium i { background: #f5b84b; }.event-impact.low i, .news-impact.low i { background: #647487; }
.event-impact span, .news-impact span { margin-left: 3px; }
.event-impact.published span { color: #52cda7; }.event-impact.awaiting span { color: #f5b84b; }
.calendar-event h3 { font-size: 11px; }.calendar-event p { margin-top: 8px; font-size: 9px; }.calendar-event p b { font-size: 10px; }
.calendar-event .event-country { display: inline-flex; align-items: center; gap: 5px; color: #8896a5; font-size: 9px; }.calendar-event .event-country img { width: 16px; height: 16px; display: block; border-radius: 50%; object-fit: cover; }
.calendar-event section { padding-right: 8px; }.calendar-event .event-value { color: #abb6c2; font: 500 10px ui-monospace, Consolas; text-align: right; }.calendar-event .event-value.actual:not(:empty) { color: #72abd8; }
.news-item { grid-template-columns: 58px 1fr; padding: 12px 10px; }.news-item time { font-size: 11px; }.news-item time > small { font-size: 8px; }.news-item h3 { display: -webkit-box; overflow: hidden; font-size: 11px; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }.news-item p { display: -webkit-box; overflow: hidden; font-size: 9px; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.news-item.important, .news-item.important time, .news-item.important time small, .news-item.important h3, .news-item.important p { color: var(--tv-red); }
.news-item.important { background: rgba(242,54,69,.035); }.news-item.important:hover { background: rgba(242,54,69,.075); }
.news-related-symbols { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.news-related-symbols > span { height: 24px; display: inline-flex; align-items: center; gap: 5px; padding: 0 7px 0 4px; border: 1px solid #353535; border-radius: 12px; background: #161616; color: var(--tv-text-2); }
.news-related-symbols i { width: 17px; height: 17px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; font-style: normal; }.news-related-symbols i img { width: 100%; height: 100%; object-fit: contain; }.news-related-symbols small { color: #b8b8b8 !important; font: 8px ui-monospace,Consolas; }

/* TradingView 深色工作区：所有后续 UI 应遵守 UI_DESIGN_SPEC.md。 */
.topbar, .drawing-toolbar, .right-panel, .panel-tabs, .statusbar { background: var(--tv-surface-1); }
.chart-region, .chart-canvas-wrap { background: var(--tv-canvas); }
.topbar, .drawing-toolbar, .right-panel, .panel-tabs, .statusbar, .chart-toolbar { border-color: var(--tv-border); }
.icon-button, .topbar-trade-button, .account-switch-button, .connection-pill, .mini-button { border-radius: 6px; }
.tool { border-radius: 4px; }.tool:hover { background: var(--tv-surface-hover); }
.panel-tabs button.active { border-bottom-color: var(--tv-blue); }
.symbol-popover, .trade-ticket, .left-data-drawer, .settings-dialog { border-color: var(--tv-border); background: #131313; box-shadow: 0 12px 32px rgba(0,0,0,.48); }

.chart-event-popover { position: absolute; z-index: 22; right: 76px; bottom: 45px; width: min(380px, calc(100% - 130px)); max-height: 360px; overflow: hidden; border: 1px solid #384454; border-left: 4px solid #a34cf4; border-radius: 7px; background: rgba(18,24,32,.98); box-shadow: 0 16px 50px rgba(0,0,0,.52); }
.chart-event-popover[hidden] { display: none; }
.chart-event-popover header { min-height: 56px; display: grid; grid-template-columns: 34px 1fr 26px; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid #293442; }
.chart-event-popover header > span { width: 30px; height: 30px; display: grid; place-items: center; border: 2px solid #a34cf4; border-radius: 50%; color: #bd73ff; }
.chart-event-popover header div { display: flex; flex-direction: column; gap: 3px; }.chart-event-popover header b { font-size: 13px; }.chart-event-popover header small { color: #748292; font-size: 9px; }
.chart-event-popover header button { border: 0; background: transparent; color: #7e8a98; font-size: 18px; cursor: pointer; }
#chartEventItems { max-height: 240px; overflow: auto; padding: 6px 14px; }
.chart-event-popover article { padding: 10px 0; border-bottom: 1px solid #242e3a; }.chart-event-popover article:last-child { border-bottom: 0; }
.chart-event-popover article small { color: #788493; font-size: 9px; }.chart-event-popover article p { margin: 5px 0 0; color: #dce2e9; font-size: 11px; line-height: 1.5; }
.chart-event-popover footer { padding: 8px 14px 12px; }.chart-event-popover footer button { height: 28px; padding: 0 11px; border: 1px solid #354151; border-radius: 5px; background: #151c25; color: #c6cfda; font-size: 10px; cursor: pointer; }
#marketCanvas.event-hover { cursor: pointer; }
.chevron img, .account-switch-button i img, .timeframe-more > button i img { width: 16px; height: 16px; display: block; }
.topbar-icon-button img { width: 18px; height: 18px; display: block; margin: auto; }
.topbar-icon-button.loading img { animation: control-spin .7s linear infinite; }
@keyframes control-spin { to { transform: rotate(360deg); } }
.drawer-head button img { width: 18px; height: 18px; display: block; }
.watch-group { display: flex; align-items: center; gap: 4px; }.watch-group img { width: 12px; height: 12px; opacity: .7; }
.quick-volume-row { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-top: 1px solid #1b232d; }
.quick-volume-row > div:first-child { min-width: 0; display: flex; flex-direction: column; gap: 2px; }.quick-volume-row span { color: #b7c0ca; font-size: 10px; }.quick-volume-row small { color: #687584; font-size: 8px; }
.volume-stepper { height: 29px; display: grid; grid-template-columns: 28px 58px 28px; overflow: hidden; border: 1px solid #303b48; border-radius: 5px; background: #0a0f15; }
.volume-stepper button { border: 0; background: #171e27; color: #aeb9c5; font-size: 14px; cursor: pointer; }.volume-stepper button:hover { background: #222c38; color: #fff; }
.volume-stepper input { min-width: 0; width: 58px; border: 0; border-inline: 1px solid #303b48; outline: 0; background: #0a0f15; color: #e4e9ef; font: 600 10px ui-monospace, Consolas; text-align: center; -moz-appearance: textfield; }.volume-stepper input::-webkit-inner-spin-button { appearance: none; }
.indicator-browser[open] { height: min(620px, calc(100vh - 28px)); max-height: calc(100vh - 28px); display: grid; grid-template-rows: auto auto 37px minmax(0, 1fr) 34px; overflow: hidden; }
.indicator-browser .indicator-catalog { height: auto; min-height: 0; overflow-y: auto; overflow-x: hidden; }

@media (max-width: 1260px) {
  .workspace { grid-template-columns: 48px minmax(0, 1fr) 310px; }
  .brand { width: 48px; }
  .left-data-drawer { left: 48px; }
  .connection-pill { max-width: 138px; }
  .quick-quote-strip { display: none; }
}

/* TradingView right rail, typography alignment and overflow contract. */
.workspace { grid-template-columns: 52px minmax(0, 1fr) minmax(350px, 23vw); }
.right-panel { position: relative; min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) 48px; grid-template-rows: minmax(0, 1fr); background: var(--tv-surface-1); }
.right-panel > .panel-view { grid-column: 1; grid-row: 1; min-width: 0; min-height: 0; padding: 12px; overflow: auto; scrollbar-gutter: stable; }
.right-panel > .panel-tabs { grid-column: 2; grid-row: 1; position: static; z-index: 7; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 7px 5px; border-left: 1px solid var(--tv-border); border-bottom: 0; background: var(--tv-surface-1); }
.right-panel > .panel-tabs button { position: relative; flex: 0 0 auto; width: 38px; height: 38px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; color: var(--tv-text-2); cursor: pointer; }
.right-panel > .panel-tabs button:hover { background: var(--tv-surface-hover); color: var(--tv-text-1); }
.right-panel > .panel-tabs button.active { border: 0; background: #2a2a2a; color: #f0f0f0; box-shadow: inset 2px 0 0 var(--tv-blue); }
.right-panel > .panel-tabs img { width: 21px; height: 21px; display: block; }
.right-panel > .panel-tabs img, .side-data-tool > span img, .script-library-empty img, .script-library-row > img { filter: invert(1); opacity: .66; }
.right-panel > .panel-tabs button.active img, .right-panel > .panel-tabs button:hover img, .side-data-tool.active > span img, .side-data-tool:hover > span img { opacity: 1; }
.right-panel > .panel-tabs span { position: absolute; right: 45px; top: 7px; display: none; padding: 5px 8px; border: 1px solid var(--tv-border); border-radius: 4px; background: #242424; color: #e0e0e0; font-size: 10px; white-space: nowrap; box-shadow: 0 6px 18px rgba(0,0,0,.42); }
.right-panel > .panel-tabs button:hover span { display: block; }
.right-panel .panel-title-row h2 { font-size: 13px; line-height: 18px; text-align: left; }
.right-panel .panel-title-row small { font-size: 9px; line-height: 14px; text-align: left; }
.watchlist-header span:first-child, .trade-history-head span:first-child { text-align: left; }
.watchlist-header span:not(:first-child), .watch-item > :not(:first-child), .trade-history-head span:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }

.trade-ticket { position: absolute; z-index: 30; top: 8px; right: 56px; width: min(330px, calc(100% - 64px)); max-height: calc(100% - 16px); overflow: auto; padding: 12px; border: 1px solid var(--tv-border); border-radius: 6px; background: #1b1b1b; box-shadow: 0 12px 32px rgba(0,0,0,.48); scrollbar-gutter: stable; }
.trade-ticket::before { display: none; }
.trade-ticket .ticket-head { position: sticky; z-index: 2; top: -12px; min-height: 38px; margin: -12px -12px 8px; padding: 8px 10px; border-bottom: 1px solid var(--tv-border); background: #1b1b1b; }

.side-data-tool > span { display: grid; place-items: center; }
.side-data-tool > span img { width: 19px; height: 19px; display: block; }
.drawer-filter-row { gap: 5px; padding: 5px 12px; }
.drawer-filter-row button, .trade-history-tabs button { height: 28px; padding: 0 12px; border: 1px solid transparent; border-radius: 14px; background: #292929; color: #b6b6b6; font-size: 11px; font-weight: 500; text-align: center; cursor: pointer; }
.drawer-filter-row button:hover, .trade-history-tabs button:hover { background: #343434; color: #fff; }
.drawer-filter-row button.active, .trade-history-tabs button.active { border-color: #e2e2e2; background: #f0f0f0; color: #111; }
.calendar-event { text-align: left; }
.calendar-event > header { text-align: left; }
.calendar-event > header .calendar-stars { justify-self: end; }
.calendar-event-title h3 { text-align: left; }
.calendar-event > footer span:first-child { text-align: left; }
.calendar-event > footer span:nth-child(2) { text-align: center; }
.calendar-event > footer span:last-child { text-align: right; }
.news-item time { text-align: left; }
.news-item section, .news-item h3, .news-item p { text-align: left; }

.portfolio-dock { position: relative; min-width: 0; }
.portfolio-head { position: relative; width: 100%; max-width: 100%; grid-template-columns: 205px minmax(0, 1fr); padding-right: 48px; overflow: hidden; }
.portfolio-head .panel-close { position: absolute; z-index: 8; top: 10px; right: 10px; background: #1d1d1d; }
.portfolio-metrics { min-width: 0; max-width: 100%; overflow-x: auto; scrollbar-width: thin; scrollbar-color: #4a4a4a transparent; }
.portfolio-tabs { min-width: 0; overflow-x: auto; scrollbar-width: thin; scrollbar-color: #4a4a4a transparent; }
.portfolio-tabs button { flex: 0 0 auto; }
.portfolio-table { overflow: auto; scrollbar-gutter: stable both-edges; scrollbar-width: thin; scrollbar-color: #4a4a4a #171717; }

/* AI indicator script workflow. */
.indicator-tabs .create-script-tab { margin-left: auto; border: 1px solid #e3e3e3; border-radius: 5px; background: #f0f0f0; color: #111; }
.indicator-script-library { min-height: 0; overflow: auto; padding: 8px 12px; }
.indicator-script-library[hidden] { display: none; }
.script-library-empty { min-height: 330px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--tv-text-2); text-align: center; }
.script-library-empty[hidden] { display: none; }
.script-library-empty img { width: 58px; height: 58px; margin-bottom: 15px; opacity: .72; }
.script-library-empty b { color: var(--tv-text-1); font-size: 14px; }
.script-library-empty p { max-width: 430px; margin: 9px 0 17px; font-size: 11px; line-height: 1.55; }
.script-library-empty button { height: 34px; padding: 0 16px; border: 1px solid #d8d8d8; border-radius: 5px; background: #f2f2f2; color: #111; cursor: pointer; }
.script-library-list { display: grid; gap: 5px; }
.script-library-row { min-height: 54px; display: grid; grid-template-columns: 26px minmax(0,1fr) auto auto 26px; align-items: center; gap: 8px; padding: 7px 8px; border: 1px solid transparent; border-radius: 5px; }
.script-library-row:hover { border-color: var(--tv-border); background: #1d1d1d; }
.script-library-row > img { width: 21px; height: 21px; }
.script-library-row > span { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.script-library-row b { font-size: 11px; }.script-library-row small { overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.script-library-row em { color: var(--tv-text-3); font-size: 9px; font-style: normal; }.script-library-row.deployed em { color: var(--tv-green); }
.script-library-row button { height: 27px; border: 1px solid var(--tv-border); border-radius: 4px; background: #242424; color: var(--tv-text-2); font-size: 9px; cursor: pointer; }

.indicator-script-dialog[open] { width: min(940px, calc(100vw - 60px)); height: min(720px, calc(100vh - 40px)); display: grid; grid-template-columns: minmax(0,1fr) 350px; grid-template-rows: 58px minmax(0,1fr) auto 46px; overflow: hidden; padding: 0; background: #171717; }
.indicator-script-dialog[open]:has(.script-preview[hidden]) { grid-template-columns: minmax(0,1fr); }
.script-dialog-head { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; padding: 0 16px; border-bottom: 1px solid var(--tv-border); }
.script-dialog-head > div { display: flex; align-items: center; gap: 10px; }.script-dialog-head > div > span:last-child { display: flex; flex-direction: column; gap: 3px; }
.script-dialog-head h2 { margin: 0; font-size: 14px; }.script-dialog-head p { margin: 0; color: var(--tv-text-3); font-size: 9px; }
.script-dialog-head > button { width: 30px; height: 30px; display: grid; place-items: center; border: 0; border-radius: 4px; background: transparent; cursor: pointer; }.script-dialog-head > button:hover { background: var(--tv-surface-hover); }.script-dialog-head img { width: 17px; height: 17px; }
.script-chat { min-width: 0; min-height: 0; overflow: auto; padding: 18px; scrollbar-gutter: stable; }
.script-chat article { display: grid; grid-template-columns: 28px minmax(0,1fr); gap: 9px; margin-bottom: 16px; }
.script-chat article.user { margin-left: 56px; }.script-chat article > i { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 50%; background: #2b2b2b; color: #d8d8d8; font-size: 8px; font-style: normal; }.script-chat article.assistant > i { background: rgba(41,98,255,.18); color: #7ca2ff; }
.script-chat article > div { padding: 10px 12px; border: 1px solid var(--tv-border); border-radius: 6px; background: #1c1c1c; }.script-chat article.user > div { background: #20283a; }
.script-chat b { font-size: 10px; }.script-chat p { margin: 6px 0 0; color: var(--tv-text-2); font-size: 11px; line-height: 1.55; white-space: pre-wrap; }
.script-preview { grid-column: 2; grid-row: 2 / 4; min-width: 0; min-height: 0; display: grid; grid-template-rows: 48px minmax(0,1fr); border-left: 1px solid var(--tv-border); background: #101010; }
.script-preview[hidden] { display: none; }
.script-preview header { display: flex; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid var(--tv-border); }.script-preview header > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }.script-preview header b { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }.script-preview header small, .script-preview header > span { color: var(--tv-text-3); font-size: 8px; }
.script-preview pre { min-width: 0; min-height: 0; margin: 0; overflow: auto; padding: 13px; color: #b8c8e8; font: 9px/1.55 ui-monospace, SFMono-Regular, Consolas, monospace; white-space: pre-wrap; }
.script-composer { grid-column: 1; display: grid; grid-template-columns: minmax(0,1fr) 62px; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--tv-border); }
.script-composer textarea { min-height: 64px; max-height: 130px; resize: vertical; padding: 9px 10px; border: 1px solid var(--tv-border); border-radius: 5px; outline: 0; background: #111; color: var(--tv-text-1); font-size: 11px; line-height: 1.45; }.script-composer textarea:focus { border-color: var(--tv-blue); }
.script-composer button { align-self: end; height: 32px; border: 0; border-radius: 5px; background: var(--tv-blue); color: white; font-size: 10px; cursor: pointer; }
.script-dialog-footer { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; padding: 0 14px; border-top: 1px solid var(--tv-border); background: #171717; }.script-dialog-footer a { color: var(--tv-text-3); font-size: 9px; text-decoration: none; }.script-dialog-footer a:hover { color: var(--tv-text-1); }.script-dialog-footer button { width: auto; min-width: 104px; height: 32px; padding: 0 14px; }

* { scrollbar-width: thin; scrollbar-color: #4b4b4b transparent; }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: 8px; background: #4b4b4b; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background: #666; background-clip: padding-box; }

@media (max-width: 1260px) {
  .workspace { grid-template-columns: 48px minmax(0, 1fr) 330px; }
  .right-panel { grid-template-columns: minmax(0, 1fr) 44px; }
  .right-panel > .panel-tabs button { width: 34px; height: 36px; }
}

/* TradingView dense chart header and bottom workspace panels. */
.instrument-tab .instrument-icon, .instrument-icon, .symbol-mini, .picker-symbol > i, .news-related-symbols i, .portfolio-symbol > i { width: 18px; height: 18px; flex: 0 0 18px; border-radius: 50%; box-shadow: none; }
.instrument-icon > img, .symbol-mini > img, .picker-symbol > i img, .news-related-symbols i img, .portfolio-symbol > i img { width: 100%; height: 100%; object-fit: contain; }
.instrument-tab { min-width: 140px; }
#togglePortfolioPanel img { width: 18px; height: 18px; display: block; margin: auto; }

.chart-region { grid-template-rows: 39px 76px 23px minmax(220px, 1fr); }
.chart-region.logs-open { grid-template-rows: 39px 76px 23px minmax(180px, 1fr) 210px; }
.chart-region.portfolio-open { grid-template-rows: 39px 76px 23px minmax(160px, 1fr) 250px; }
.chart-toolbar { border-bottom: 1px solid var(--tv-border); }
.chart-toolbar .timeframes { order: 0; }
.chart-toolbar .top-actions { order: 0; margin-left: auto; }
.chart-heading { min-height: 0; align-items: start; padding: 6px 12px 4px; border-bottom: 1px solid var(--tv-border-soft); }
.heading-line { min-height: 20px; }
.ohlc-row { min-height: 16px; }
.quick-quote-strip { height: 31px; display: flex; align-items: stretch; gap: 5px; margin-top: 2px; }
.quick-quote { min-width: 76px; padding: 3px 9px; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 1px; border: 1px solid currentColor; border-radius: 5px; color: white; cursor: pointer; }
.quick-quote.sell { border-color: #d93b4b; background: #c93647; }.quick-quote.buy { border-color: #3d69f0; background: #315fe9; }
.quick-quote:hover:not(:disabled) { filter: brightness(1.1); }.quick-quote:active:not(:disabled) { transform: translateY(1px); }
.quick-quote:disabled { opacity: .38; cursor: wait; }
.quick-quote.unavailable:not(:disabled) { opacity: .58; cursor: pointer; }
.quick-quote small { color: white; font: 600 10px ui-monospace, SFMono-Regular, Consolas, monospace; line-height: 1; }
.quick-quote b { color: white; font-size: 9px; line-height: 1; }
.chart-volume-control { height: 31px; display: grid; grid-template-columns: 20px 43px 20px; overflow: hidden; border: 1px solid #303030; border-radius: 5px; background: #171717; }
.chart-volume-control > button { min-width: 0; padding: 0; border: 0; background: transparent; color: #8d8d8d; font-size: 12px; cursor: pointer; }
.chart-volume-control > button:hover { background: #292929; color: #fff; }
.chart-volume-control > label { min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; border-inline: 1px solid #303030; }
.chart-volume-control small { color: #777; font-size: 7px; line-height: 9px; }
.chart-volume-control input { width: 41px; height: 14px; padding: 0; border: 0; outline: 0; background: transparent; color: #dbdbdb; font: 600 9px/14px ui-monospace, Consolas; text-align: center; appearance: textfield; }
.chart-volume-control input::-webkit-inner-spin-button { appearance: none; }
.chart-volume-control:focus-within { border-color: #565656; background: #202020; }
.quote-spread { min-width: 34px; align-self: center; color: #777; font-size: 7px; }.quote-spread b { display: block; color: #aaa; font: 8px ui-monospace, Consolas; }
.chart-stats { padding-top: 3px; }

.market-badge { display: inline-flex; align-items: center; gap: 5px; padding: 0; border: 0; background: transparent; color: #7f878f; font-size: 9px; font-weight: 400; }
.market-badge i { width: 6px; height: 6px; border-radius: 50%; background: #089981; opacity: .72; }
.market-badge.closed i { background: #7c8289; }.market-badge.closed span { color: #777d84; }.market-badge.checking i { background: #f0b90b; }

.chart-bottom-panel { min-width: 0; min-height: 0; overflow: hidden; border-top: 1px solid var(--tv-border); background: #101010; }
.system-log-dock { display: grid; grid-template-rows: 30px 34px 24px minmax(0, 1fr); }
.system-log-dock[hidden], .portfolio-dock[hidden] { display: none; }
.log-table { min-height: 0; overflow: auto; }

.portfolio-dock { display: grid; grid-template-rows: 66px 36px 27px minmax(0, 1fr); }
.portfolio-head { min-width: 0; display: grid; grid-template-columns: 210px minmax(0, 1fr) 30px; align-items: center; gap: 12px; padding: 8px 12px; border-bottom: 1px solid var(--tv-border-soft); }
.portfolio-account { min-width: 0; display: flex; align-items: center; gap: 9px; }.portfolio-account > img { width: 24px; height: 24px; border-radius: 50%; }
.portfolio-account > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }.portfolio-account b { overflow: hidden; color: var(--tv-text-1); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.portfolio-account small { color: var(--tv-text-3); font-size: 9px; }
.portfolio-metrics { min-width: 0; display: grid; grid-template-columns: repeat(8, minmax(78px, 1fr)); gap: 10px; overflow-x: auto; }
.portfolio-metrics > span { min-width: 78px; display: flex; flex-direction: column; gap: 4px; }.portfolio-metrics small { color: var(--tv-text-3); font-size: 9px; white-space: nowrap; }.portfolio-metrics b { color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas; white-space: nowrap; }
.panel-close { width: 28px; height: 28px; display: grid; place-items: center; border: 0; border-radius: 4px; background: transparent; cursor: pointer; }.panel-close:hover { background: var(--tv-surface-hover); }.panel-close img { width: 16px; height: 16px; }
.portfolio-tabs { display: flex; align-items: center; gap: 5px; padding: 4px 12px; }
.portfolio-tabs button { height: 28px; padding: 0 12px; border: 1px solid transparent; border-radius: 14px; background: #292929; color: #b6b6b6; font-size: 11px; cursor: pointer; }.portfolio-tabs button:hover { background: #343434; color: white; }.portfolio-tabs button.active { border-color: #e2e2e2; background: #f0f0f0; color: #111; }
.portfolio-tabs .portfolio-refresh { margin-left: auto; border-color: #303030; border-radius: 5px; background: transparent; color: #8e8e8e; }
.portfolio-table-head, .portfolio-row { min-width: max-content; display: grid; grid-template-columns: var(--portfolio-columns); align-items: center; }
.portfolio-table-head { padding: 0 12px; border-block: 1px solid var(--tv-border-soft); background: #151515; color: var(--tv-text-3); font-size: 9px; }
.portfolio-table-head span, .portfolio-row > span { padding-right: 12px; white-space: nowrap; }
.portfolio-table { min-height: 0; overflow: auto; }
.portfolio-row { min-height: 38px; padding: 0 12px; border-bottom: 1px solid var(--tv-border-soft); color: var(--tv-text-2); font-size: 10px; }.portfolio-row:hover { background: #191919; }
.portfolio-row > span:not(:first-child), .portfolio-table-head span:not(:first-child) { text-align: right; }
.portfolio-symbol { display: inline-flex; align-items: center; gap: 7px; }.portfolio-symbol > i { display: grid; place-items: center; overflow: hidden; }.portfolio-symbol > span { display: flex; flex-direction: column; gap: 2px; }.portfolio-symbol b { color: var(--tv-text-1); font-size: 10px; }.portfolio-symbol small { color: var(--tv-text-3); font: 8px ui-monospace, Consolas; }
.portfolio-empty { height: 100%; min-height: 70px; display: grid; place-items: center; color: var(--tv-text-2); font-size: 12px; }

#calendarDrawer { grid-template-rows: 60px 50px auto 34px 64px minmax(0, 1fr); }
#calendarDrawer:has(.calendar-filter-panel[hidden]) { grid-template-rows: 60px 50px 34px 64px minmax(0, 1fr); }
.calendar-column-head { display: none; }
.calendar-event { min-height: 112px; display: grid; grid-template-columns: 1fr; gap: 8px; padding: 12px 14px; border-bottom: 1px solid var(--tv-border); background: transparent; }
.calendar-event:hover { background: #181818; }
.calendar-event > header { display: grid; grid-template-columns: 18px 42px 1fr auto; align-items: center; gap: 6px; }
.calendar-event > header time { color: var(--tv-text-2); font: 600 11px ui-monospace, Consolas; }.calendar-event > header small { color: var(--tv-text-3); font-size: 9px; }
.calendar-event .event-country img { width: 16px; height: 16px; border-radius: 50%; }
.calendar-stars { display: flex; gap: 1px; }.calendar-stars i { color: #353535; font-size: 11px; font-style: normal; }.calendar-stars i.active { color: #e44853; }
.calendar-event-title { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; }.calendar-event-title h3 { margin: 0; color: var(--tv-text-1); font-size: 12px; line-height: 1.35; }.calendar-event.high .calendar-event-title h3 { color: var(--tv-red); }
.calendar-event-title em { flex: 0 0 auto; padding: 5px 8px; border-radius: 4px; background: rgba(242,54,69,.14); color: #ff6b76; font-size: 10px; font-style: normal; font-weight: 600; }
.calendar-event > footer { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; color: var(--tv-text-3); font-size: 10px; }.calendar-event > footer span:nth-child(2) { text-align: center; }.calendar-event > footer span:last-child { text-align: right; }.calendar-event > footer b { margin-left: 3px; color: var(--tv-text-2); font: 600 11px ui-monospace, Consolas; }.calendar-event > footer b.actual:not(:empty) { color: var(--tv-text-1); }

@media (max-width: 1260px) {
  .quick-quote-strip { display: flex; }
  .chart-region.logs-open, .chart-region.portfolio-open { grid-template-rows: 39px 76px 23px minmax(150px, 1fr) 220px; }
  .portfolio-head { grid-template-columns: 180px minmax(0, 1fr); padding-right: 46px; }
  .portfolio-metrics { grid-template-columns: repeat(8, 86px); }
}

/* Final cascade guards: keep the rail and bottom-panel close action visible. */
.right-panel { grid-template-columns: minmax(0, 1fr) 48px; grid-template-rows: minmax(0, 1fr); }
.right-panel > .panel-tabs { grid-column: 2; grid-row: 1; flex-direction: column; padding: 7px 5px; border-left: 1px solid var(--tv-border); border-bottom: 0; }
.right-panel > .panel-view { grid-column: 1; grid-row: 1; }
.portfolio-head { position: relative; grid-template-columns: 205px minmax(0, 1fr); padding-right: 48px; overflow: hidden; }
.portfolio-head .panel-close { position: absolute; z-index: 9; top: 10px; right: 10px; }
.portfolio-tabs, .portfolio-table, .portfolio-table-head { min-width: 0; max-width: 100%; overflow: auto; scrollbar-gutter: stable; }
.trade-ticket { right: 56px; max-height: calc(100% - 16px); overflow: auto; }

/* TradingView visual alignment v2 — measured against the current dark workspace. */
html, body, .app-shell, .workspace, .chart-region, .chart-stack, .right-panel, .panel-view,
.topbar, .drawing-toolbar, .chart-toolbar, .chart-heading, .indicator-legend, .statusbar,
.chart-bottom-panel, .system-log-dock, .portfolio-dock { background-color: var(--tv-canvas); }
body { color: var(--tv-text-1); font-size: 14px; }
button, input, select, textarea { font-size: 13px; }
button { transition: background-color .12s ease, color .12s ease, border-color .12s ease; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--tv-blue); outline-offset: 2px; }

.workspace { grid-template-columns: 52px minmax(0, 1fr) minmax(360px, 24vw); }
.drawing-toolbar { gap: 2px; padding: 6px 0; border-color: var(--tv-border); }
.tool { width: 40px; height: 40px; border: 0; border-radius: 5px; color: var(--tv-text-2); font-size: 17px; font-weight: 500; }
.tool:hover { background: var(--tv-surface-2); color: #fff; }
.tool.active { border: 0; background: var(--tv-surface-hover); color: #fff; box-shadow: inset 2px 0 0 var(--tv-blue); }
.tool-divider { width: 30px; background: var(--tv-border); }

.topbar { height: 44px; gap: 6px; padding: 0 8px; border-color: var(--tv-border); }
.instrument-tab { min-width: 158px; border-color: var(--tv-border-soft); }
.instrument-tab:hover { background: var(--tv-surface-2); }
.instrument-tab.active { background: var(--tv-surface-2); color: #fff; }
.instrument-tab b { font-size: 12px; }.instrument-tab small { font-size: 10px; }
.topbar-trade-button, .topbar-icon-button, .connection-pill, .account-switch-button { height: 30px; border-color: var(--tv-border); background: transparent; color: var(--tv-text-1); font-size: 12px; }
.topbar-trade-button { min-width: 70px; padding: 0 12px; gap: 7px; border-radius: 15px; }
.topbar-trade-button img { width: 18px; height: 18px; display: block; filter: invert(1); opacity: .88; }
.topbar-trade-button:hover, .topbar-trade-button.active, .topbar-icon-button:hover, .account-switch-button:hover { background: var(--tv-surface-hover); }
.connection-pill { font-size: 11px; }
.account-switch-button b { font-size: 11px; }

.chart-toolbar { height: 39px; }
.timeframes button { min-width: 40px; height: 32px; padding: 0 10px; border-radius: 5px; color: var(--tv-text-2); font-size: 13px; font-weight: 500; }
.timeframes button:hover { background: var(--tv-surface-2); color: #fff; }
.timeframes button.active, .timeframe-more > button.active { background: var(--tv-surface-hover); color: #fff; box-shadow: none; }
.timeframe-menu { border-color: var(--tv-border); background: var(--tv-surface-2); }
.timeframe-menu b, .timeframe-menu button { font-size: 11px; }
.icon-button { height: 32px; background: transparent; border-color: var(--tv-border); font-size: 12px; }
.chart-annotation-entry { min-width: 176px; display: inline-flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 10px; color: var(--tv-text-2); }
.chart-annotation-entry b { color: inherit; font-size: 12px; font-weight: 500; white-space: nowrap; }
.chart-annotation-entry small { color: #788493; font-size: 10px; font-weight: 400; white-space: nowrap; }
.chart-annotation-entry.active { border-color: #3a424d; background: var(--tv-surface-2); color: #e7ecf2; box-shadow: none; }
.chart-annotation-entry.active small { color: #aab3bf; }
.chart-annotation-entry:hover { background: var(--tv-surface-hover); color: #fff; }

.chart-region { grid-template-rows: 39px 88px 27px minmax(220px, 1fr); }
.chart-region.logs-open { grid-template-rows: 39px 88px 27px minmax(180px, 1fr) 230px; }
.chart-region.portfolio-open { grid-template-rows: 39px 88px 27px minmax(160px, 1fr) 270px; }
.chart-heading { padding: 9px 12px 7px; }
.heading-line { gap: 8px; }.heading-line h1 { font-size: 14px; }
.chart-timeframe-chip, .exchange-chip, .market-badge { font-size: 11px; }
.ohlc-row { gap: 12px; font-size: 11px; line-height: 1.6; }
.chart-stats strong { font-size: 24px; }.chart-stats span { font-size: 12px; }
.indicator-legend { min-height: 27px; gap: 8px; padding: 0 12px; font-size: 11px; }
.legend-item { height: 25px; padding: 0 7px; }.legend-item:hover { background: var(--tv-surface-2); }
.legend-item button { width: 22px; height: 22px; font-size: 12px; }
.timeframe-analysis { font-size: 11px; }.tf-summary span, .tf-summary small { font-size: 10px; }.tf-summary b { font-size: 11px; }

.right-panel { grid-template-columns: minmax(0, 1fr) 52px; border-color: var(--tv-border); }
.right-panel > .panel-tabs { gap: 2px; padding: 6px 4px; background: var(--tv-canvas); }
.right-panel > .panel-tabs button { width: 44px; height: 44px; border-radius: 5px; }
.right-panel > .panel-tabs button:hover { background: var(--tv-surface-2); }
.right-panel > .panel-tabs button.active { background: var(--tv-surface-hover); color: #fff; box-shadow: inset 2px 0 0 var(--tv-blue); }
.right-panel > .panel-tabs img { width: 22px; height: 22px; }
.right-panel > .panel-tabs span { right: 51px; top: 8px; padding: 7px 10px; background: var(--tv-surface-hover); color: #fff; font-size: 12px; }
.panel-view { padding: 16px 14px; }
.panel-title-row { margin-bottom: 14px; }.panel-title-row h2 { font-size: 15px; }.panel-title-row small { margin-top: 4px; font-size: 11px; }
.mini-button { width: 30px; height: 30px; background: transparent; font-size: 16px; }
.search-box { height: 38px; margin-bottom: 14px; border-color: var(--tv-border); background: var(--tv-surface-2); }
.search-box input { font-size: 12px; }
.watchlist-header { padding: 0 8px 8px; color: var(--tv-text-3); font-size: 11px; }
.watch-group { padding: 12px 8px 6px; font-size: 10px; }
.watch-item { min-height: 48px; padding: 8px; border-radius: 5px; }
.watch-item:hover { background: var(--tv-surface-2); }
.watch-item.active { border-color: #555; background: var(--tv-surface-hover); }
.watch-symbol b { font-size: 12px; }.watch-symbol small { font-size: 10px; }.watch-price, .watch-change { font-size: 11px; }
.empty-analysis b { font-size: 14px; }.empty-analysis p { font-size: 12px; }
.point-side-row b { font-size: 13px; }.point-side-row small, .trade-note-label, .form-grid label, .rr-card span, .rr-card small, .reason-section li { font-size: 11px; }
.form-grid input, .trade-note-label textarea { font-size: 12px; }.reason-section h3 { font-size: 12px; }
.ai-card-head b, .ai-result h3 { font-size: 12px; }.ai-card-head small, .ai-placeholder, .ai-result dl, .ai-risks { font-size: 11px; }

.trade-ticket { right: 60px; width: min(352px, calc(100% - 68px)); padding: 14px; border-color: var(--tv-border); background: var(--tv-surface-2); }
.trade-ticket .ticket-head { top: -14px; margin: -14px -14px 10px; padding: 10px 12px; background: var(--tv-surface-2); }
.ticket-head > .ticket-title { flex-direction: row; align-items: center; gap: 9px; }
.ticket-title > i, .portfolio-heading-icon { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 5px; background: var(--tv-surface-hover); }
.ticket-title > i img, .portfolio-heading-icon img { width: 20px; height: 20px; display: block; filter: invert(1); opacity: .9; }
.ticket-title > span { display: flex; flex-direction: column; gap: 3px; }
.ticket-title b { font-size: 14px; }.ticket-head small { font-size: 10px; }
.live-trading-control span, .quick-volume-row span { font-size: 12px; }.live-trading-control small, .quick-volume-row small { font-size: 10px; }
.mode-switch button, .risk-row, .risk-row b { font-size: 11px; }
.mode-switch button.active { background: var(--tv-selected); color: #fff; }
.ticket-actions small { font-size: 10px; }.ticket-actions b { font-size: 14px; }

.portfolio-dock { grid-template-rows: 76px 42px 32px minmax(0, 1fr); background: var(--tv-canvas); }
.portfolio-head { grid-template-columns: 235px minmax(0, 1fr); padding: 10px 14px 10px 12px; background: var(--tv-canvas); }
.portfolio-account { gap: 10px; }.portfolio-account > span:last-child { gap: 2px; }
.portfolio-account em { color: var(--tv-text-1); font-size: 13px; font-style: normal; font-weight: 600; }
.portfolio-account b { font-size: 11px; font-weight: 500; }.portfolio-account small { font-size: 10px; }
.portfolio-metrics small { font-size: 10px; }.portfolio-metrics b { font-size: 12px; }
.portfolio-tabs { gap: 6px; padding: 6px 12px; }
.portfolio-tabs button { height: 30px; padding: 0 13px; border-radius: 15px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 12px; }
.portfolio-tabs button:hover { background: var(--tv-surface-hover); }
.portfolio-tabs button.active { border-color: transparent; background: var(--tv-selected); color: #fff; }
.portfolio-table-head { background: var(--tv-surface-1); color: var(--tv-text-2); font-size: 11px; }
.portfolio-row { min-height: 42px; color: var(--tv-text-2); font-size: 12px; }.portfolio-row:hover { background: var(--tv-surface-2); }
.portfolio-symbol b { font-size: 12px; }.portfolio-symbol small { font-size: 10px; }

.system-log-dock { grid-template-rows: 36px 42px 30px minmax(0, 1fr); background: var(--tv-canvas); }
.log-tabs { background: var(--tv-canvas); }.log-tabs button { font-size: 12px; }.log-tabs span { font-size: 10px; }
.log-toolbar { background: var(--tv-canvas); }.log-toolbar label { height: 32px; background: var(--tv-surface-2); }.log-toolbar input, .log-toolbar select, .log-toolbar button { font-size: 11px; }
.log-table-head, .log-row { grid-template-columns: 205px 76px 120px minmax(260px, 1fr); }
.log-table-head { min-height: 30px; background: var(--tv-surface-1); color: var(--tv-text-2); font-size: 11px; }
.log-row { min-height: 32px; color: var(--tv-text-2); font-size: 11px; background: var(--tv-canvas); }
.log-row:nth-child(even) { background: var(--tv-surface-1); }.log-row:hover { background: var(--tv-surface-2); }
.log-row time { color: var(--tv-text-1); font-variant-numeric: tabular-nums; }

.statusbar { height: 25px; gap: 24px; padding-left: 62px; color: var(--tv-text-3); font-size: 10px; }

.settings-dialog, .symbol-popover, .left-data-drawer { border-color: var(--tv-border); background: var(--tv-surface-2); }
.settings-dialog::backdrop { background: rgba(0,0,0,.68); backdrop-filter: none; }
.dialog-head { min-height: 64px; align-items: center; padding: 12px 20px; background: var(--tv-surface-2); }
.dialog-head h2 { font-size: 16px; }.dialog-head p { font-size: 11px; }.dialog-head > button { width: 32px; height: 32px; border-radius: 5px; font-size: 22px; }
.dialog-head > button:hover { background: var(--tv-surface-hover); color: #fff; }
.primary-action, .secondary-button { height: 36px; padding: 0 16px; border-radius: 5px; font-size: 12px; }
.primary-action { background: var(--tv-blue); }.secondary-button { background: var(--tv-surface-hover); }

.indicator-browser[open] { width: min(1048px, calc(100vw - 48px)); height: min(720px, calc(100vh - 32px)); max-height: calc(100vh - 32px); display: grid; grid-template-rows: 64px minmax(0, 1fr); overflow: hidden; }
.indicator-browser-body { min-height: 0; display: grid; grid-template-columns: 242px minmax(0, 1fr); }
.indicator-browser-nav { min-height: 0; padding: 14px 12px; border-right: 1px solid var(--tv-border); background: var(--tv-surface-2); overflow: auto; }
.indicator-browser-nav section { display: grid; gap: 3px; margin-bottom: 16px; }
.indicator-browser-nav section > small { padding: 0 12px 7px; color: var(--tv-text-3); font-size: 11px; }
.indicator-browser-nav button, .indicator-nav-placeholder { width: 100%; min-height: 40px; display: grid; grid-template-columns: 24px 1fr; align-items: center; gap: 8px; padding: 0 12px; border: 0; border-radius: 5px; background: transparent; color: var(--tv-text-2); text-align: left; }
.indicator-browser-nav button { cursor: pointer; }.indicator-browser-nav button:hover { background: var(--tv-surface-hover); color: #fff; }
.indicator-browser-nav button.active { background: var(--tv-selected); color: #fff; }
.indicator-browser-nav img { width: 20px; height: 20px; filter: invert(1); opacity: .88; }
.indicator-browser-nav span, .indicator-browser-nav b { font-size: 13px; font-weight: 500; }
.indicator-nav-placeholder { opacity: .72; }
.indicator-browser-main { min-width: 0; min-height: 0; display: grid; grid-template-rows: 58px 54px minmax(0, 1fr) 38px; background: var(--tv-surface-2); }
.indicator-browser-main:has(.indicator-search[hidden]) { grid-template-rows: 58px minmax(0, 1fr) 38px; }
.indicator-main-head { display: flex; align-items: center; justify-content: space-between; padding: 0 22px; }
.indicator-main-head > span { display: flex; flex-direction: column; gap: 3px; }.indicator-main-head b { font-size: 15px; }.indicator-main-head small { color: var(--tv-text-3); font-size: 11px; }
.indicator-main-head .create-script-tab { height: 34px; display: flex; align-items: center; gap: 7px; padding: 0 14px; border: 1px solid #ddd; border-radius: 5px; background: #f1f1f1; color: #111; font-size: 12px; cursor: pointer; }
.indicator-main-head .create-script-tab img { width: 17px; height: 17px; }
.indicator-search { height: 46px; margin: 0 22px 8px; padding: 0 13px; border-color: #484848; border-radius: 6px; background: var(--tv-surface-2); font-size: 18px; }
.indicator-search input { font-size: 13px; }
.indicator-catalog { height: auto; min-height: 0; padding: 4px 12px 10px; overflow: auto; }
.catalog-row { height: 54px; grid-template-columns: 34px minmax(0,1fr) 60px 18px; padding: 0 12px 0 5px; border-radius: 5px; }
.catalog-row:hover { background: var(--tv-surface-hover); }.catalog-row b { font-size: 13px; }.catalog-row small { font-size: 11px; }.catalog-row em { font-size: 10px; }
.catalog-row.added { background: #292929; }.catalog-row.added > i { width: 8px; height: 8px; box-shadow: none; }
.catalog-star { font-size: 21px; }
.indicator-script-library { min-height: 0; padding: 10px 18px; overflow: auto; }
.indicator-browser-main:has(.indicator-search[hidden]) .indicator-script-library { grid-row: 2; }
.indicator-browser-main:has(.indicator-search[hidden]) .catalog-hint { grid-row: 3; }
.script-library-empty { min-height: 100%; }.script-library-empty img { width: 68px; height: 68px; }.script-library-empty b { font-size: 18px; }.script-library-empty p { font-size: 13px; }
.script-library-empty button { height: 38px; padding: 0 18px; font-size: 13px; }
.script-library-row { min-height: 62px; grid-template-columns: 30px minmax(0,1fr) auto auto 30px; padding: 9px 10px; }
.script-library-row b { font-size: 13px; }.script-library-row small, .script-library-row em { font-size: 11px; }.script-library-row button { height: 32px; font-size: 11px; }
.catalog-hint { height: 38px; padding: 0 22px; background: var(--tv-surface-2); font-size: 10px; }

.indicator-settings { width: 600px; background: var(--tv-surface-2); }
.indicator-settings-head > div { display: flex; align-items: center; gap: 10px; }.indicator-settings-head > div > span:last-child { display: flex; flex-direction: column; }
.indicator-settings-icon, .script-editor-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 5px; background: var(--tv-surface-hover); }
.indicator-settings-icon img, .script-editor-icon img { width: 20px; height: 20px; filter: invert(1); opacity: .9; }
.settings-tabs { height: 48px; align-items: stretch; gap: 24px; padding: 0 20px; background: var(--tv-surface-2); }
.settings-tabs button { height: 48px; font-size: 13px; }.settings-tabs button.active { color: #fff; border-bottom-color: var(--tv-blue); }
.settings-pane { min-height: 310px; padding: 18px 22px; gap: 12px; background: var(--tv-surface-2); }
.indicator-timeframe-field { padding: 14px; border-color: #3a3a3a; background: var(--tv-canvas); }
.indicator-timeframe-field legend { font-size: 13px; }.indicator-timeframe-field legend small, .indicator-timeframe-field p { font-size: 10px; }
.indicator-timeframe-grid { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px; }
.timeframe-check span { height: 34px; border-color: #3a3a3a; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 11px; }
.timeframe-check input:checked + span { border-color: #666; background: var(--tv-selected); color: #fff; box-shadow: none; }
.setting-row { min-height: 44px; grid-template-columns: 1fr 190px; padding: 0 4px; color: var(--tv-text-1); font-size: 13px; }
.setting-row small { font-size: 10px; }.setting-row input[type="number"], .setting-row input[type="datetime-local"], .setting-row select { height: 36px; border-color: #484848; background: var(--tv-canvas); font-size: 12px; }
.setting-row input[type="color"] { width: 42px; height: 32px; }
.dialog-actions { padding: 12px 20px; background: var(--tv-surface-2); }

.indicator-script-dialog[open] { width: min(1100px, calc(100vw - 48px)); height: min(760px, calc(100vh - 32px)); grid-template-columns: minmax(0,1fr) minmax(380px, 42%); grid-template-rows: 64px minmax(0,1fr) auto 50px; background: var(--tv-surface-2); }
.script-dialog-head { padding: 0 18px; background: var(--tv-canvas); }.script-dialog-head h2 { font-size: 16px; }.script-dialog-head p { font-size: 11px; }
.script-chat { padding: 20px; background: var(--tv-surface-2); }.script-chat article { grid-template-columns: 34px minmax(0,1fr); gap: 10px; }
.script-chat article > i { width: 34px; height: 34px; font-size: 10px; }.script-chat article > div { padding: 12px 14px; background: var(--tv-canvas); }
.script-chat b { font-size: 12px; }.script-chat p { font-size: 13px; }
.script-preview { grid-template-rows: 54px minmax(0,1fr); background: #080808; }.script-preview header b { font-size: 13px; }.script-preview header small, .script-preview header > span { font-size: 10px; }
.script-preview pre { padding: 16px; color: #c4d4f4; font-size: 12px; line-height: 1.65; }
.script-composer { grid-template-columns: minmax(0,1fr) 76px; padding: 12px 16px; background: var(--tv-surface-2); }.script-composer textarea { min-height: 76px; background: var(--tv-canvas); font-size: 13px; }.script-composer button { height: 36px; font-size: 12px; }
.script-dialog-footer { height: 50px; padding: 0 16px; background: var(--tv-canvas); }.script-dialog-footer a { font-size: 11px; }

* { scrollbar-color: #555 transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { border: 3px solid transparent; background: #555; background-clip: padding-box; }

@media (max-width: 1260px) {
  .workspace { grid-template-columns: 52px minmax(0, 1fr) 350px; }
  .right-panel { grid-template-columns: minmax(0, 1fr) 48px; }
  .right-panel > .panel-tabs button { width: 40px; height: 42px; }
  .chart-region.logs-open, .chart-region.portfolio-open { grid-template-rows: 39px 88px 27px minmax(150px, 1fr) 230px; }
}

/* TradingView visual alignment v3 — symbol picker, analysis panels and script drawer. */
input, textarea { caret-color: #f0f0f0; }
input:focus, input:focus-visible, textarea:focus, textarea:focus-visible { outline: 0; box-shadow: none; }
button:focus-visible, select:focus-visible { outline: 2px solid var(--tv-blue); outline-offset: 2px; }
.symbol-picker-search:focus-within, .indicator-search:focus-within, .search-box:focus-within,
.log-toolbar label:focus-within, .script-composer textarea:focus,
.setting-row input:focus, .broker-fields input:focus, .calendar-filter-panel select:focus {
  border-color: var(--tv-border);
  box-shadow: none;
}

.symbol-popover {
  top: 40px;
  left: -42px;
  width: 460px;
  max-height: min(620px, calc(100vh - 84px));
  display: grid;
  grid-template-rows: 64px 54px 30px minmax(0, 1fr);
  border: 1px solid var(--tv-border);
  border-radius: 8px;
  background: var(--tv-surface-2);
  box-shadow: 0 12px 32px rgba(0,0,0,.48);
}
.symbol-popover[hidden] { display: none; }
.symbol-popover-head { height: 64px; padding: 0 14px 0 16px; border-color: var(--tv-border); }
.symbol-popover-head > .symbol-popover-heading { min-width: 0; display: flex; flex-direction: row; align-items: center; gap: 10px; }
.symbol-popover-heading > span { width: 34px; height: 34px; flex: 0 0 34px; display: grid; place-items: center; border-radius: 5px; background: var(--tv-surface-hover); }
.symbol-popover-heading > span img { width: 20px; height: 20px; filter: invert(1); opacity: .9; }
.symbol-popover-heading > div { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.symbol-popover-head b { color: var(--tv-text-1); font-size: 15px; line-height: 18px; }
.symbol-popover-head small { color: var(--tv-text-3); font-size: 11px; }
.symbol-popover-head button { width: 32px; height: 32px; display: grid; place-items: center; padding: 0; border-radius: 5px; }
.symbol-popover-head button:hover { background: var(--tv-surface-hover); }
.symbol-popover-head button img { width: 18px; height: 18px; filter: invert(1); opacity: .75; }
.symbol-picker-search { height: 42px; margin: 8px 14px 4px; padding: 0 12px; gap: 9px; border-color: #484848; border-radius: 6px; background: var(--tv-canvas); color: var(--tv-text-3); }
.symbol-picker-search input { color: var(--tv-text-1); font-size: 13px; }
.symbol-picker-columns { padding: 5px 18px 7px; color: var(--tv-text-3); font-size: 11px; }
.symbol-picker-list { max-height: none; min-height: 0; padding: 0 8px 8px; overflow: auto; scrollbar-gutter: stable; }
.symbol-picker-row { height: 54px; padding: 0 10px; border: 0; border-radius: 5px; color: var(--tv-text-2); }
.symbol-picker-row:hover { background: var(--tv-surface-hover); }
.symbol-picker-row.active { border: 0; background: var(--tv-selected); color: #fff; }
.picker-symbol { gap: 9px; }.picker-symbol > i { width: 22px; height: 22px; flex-basis: 22px; }
.picker-symbol > b { color: inherit; font-size: 13px; }.picker-symbol > b small { margin-top: 3px; color: var(--tv-text-3); font-size: 10px; }
.symbol-picker-row > span { font-size: 11px; }
.symbol-picker-empty { padding: 56px 20px; color: var(--tv-text-2); font-size: 12px; }

.panel-heading-with-icon { min-width: 0; display: flex; align-items: center; gap: 10px; }
.panel-heading-with-icon > i { width: 34px; height: 34px; flex: 0 0 34px; display: grid; place-items: center; border-radius: 5px; background: var(--tv-surface-hover); }
.panel-heading-with-icon > i img { width: 21px; height: 21px; filter: invert(1); opacity: .9; }
.panel-heading-with-icon > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.right-panel .panel-title-row h2 { font-size: 15px; line-height: 19px; }
.right-panel .panel-title-row small { margin-top: 0; font-size: 11px; line-height: 15px; }

.model-control-card { padding: 14px; border-color: var(--tv-border); border-radius: 6px; background: var(--tv-canvas); }
.model-control-line { min-height: 44px; color: var(--tv-text-1); font-size: 13px; border-color: var(--tv-border-soft); }
.model-control-line b { color: var(--tv-text-1); font-size: 12px; font-weight: 600; }
.model-control-card > small { margin-top: 10px; color: var(--tv-text-3); font-size: 11px; line-height: 1.55; }
.model-symbol-heading { margin: 18px 0 9px; }
.model-symbol-heading b { font-size: 13px; }
.model-symbol-heading button { height: 32px; padding: 0 12px; border: 1px solid var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-1); font-size: 12px; }
.model-symbol-heading button:hover { background: var(--tv-surface-hover); }
.model-symbol-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.model-symbol-check { min-width: 0; }
.model-symbol-check span { min-width: 0; width: 100%; height: 42px; display: flex; align-items: center; justify-content: flex-start; gap: 8px; padding: 0 10px; border-color: #3a3a3a; border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-2); cursor: pointer; }
.model-symbol-check span:hover { background: var(--tv-surface-hover); color: #fff; }
.model-symbol-check input:checked + span { border-color: #666; background: var(--tv-selected); color: #fff; }
.model-symbol-check span > i, .model-result-symbol > i, .trade-history-symbol > i, .order-symbol > i { width: 18px; height: 18px; flex: 0 0 18px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; font-style: normal; }
.model-symbol-check span > i img, .model-result-symbol > i img, .trade-history-symbol > i img, .order-symbol > i img { width: 100%; height: 100%; object-fit: contain; }
.model-symbol-check span > b { min-width: 0; overflow: hidden; font: 600 12px ui-monospace, Consolas; text-overflow: ellipsis; }
.model-run-status { margin: 14px 0 10px; min-height: 48px; padding: 10px 12px; grid-template-columns: 8px minmax(0,1fr) auto; gap: 9px; border-color: var(--tv-border); background: var(--tv-canvas); }
.model-run-status span { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.model-run-status small { color: var(--tv-text-3); font-size: 10px; }
.model-run-status.running i { box-shadow: none; }
.model-results { gap: 8px; }
.model-result-card { padding: 13px; border-color: var(--tv-border); border-radius: 6px; background: var(--tv-canvas); }
.model-result-card:hover { background: #161616; }
.model-result-head { gap: 10px; }
.model-result-symbol { min-width: 0; display: flex; align-items: center; gap: 8px; }
.model-result-symbol b { overflow: hidden; color: var(--tv-text-1); font: 600 13px ui-monospace, Consolas; text-overflow: ellipsis; }
.model-result-head > span { padding: 4px 7px; border-radius: 4px; font-size: 10px; font-weight: 600; }
.model-result-card p { margin: 10px 0 8px; color: var(--tv-text-2); font-size: 12px; line-height: 1.55; }.model-result-card small { color: var(--tv-text-3); font-size: 10px; }

.trade-history-tabs { gap: 6px; padding: 0; border: 0; border-radius: 0; }
.trade-history-tabs button { height: 32px; padding: 0 14px; border: 0; border-radius: 16px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 12px; font-weight: 500; }
.trade-history-tabs button:hover { background: var(--tv-surface-hover); color: #fff; }
.trade-history-tabs button.active { border: 0; background: var(--tv-selected); color: #fff; }
.trade-stat-grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; margin: 14px 0 16px; }
.trade-stat-grid > div { min-height: 70px; padding: 12px; justify-content: center; gap: 7px; border-color: var(--tv-border); background: var(--tv-canvas); }
.trade-stat-grid span { color: var(--tv-text-3); font-size: 11px; }.trade-stat-grid b { color: var(--tv-text-1); font: 600 15px ui-monospace, Consolas; }
.trade-history-head, .trade-history-row { grid-template-columns: minmax(118px,1.35fr) .55fr .82fr .62fr; gap: 8px; }
.trade-history-head { min-height: 34px; padding: 7px 6px; color: var(--tv-text-3); font-size: 10px; background: var(--tv-surface-1); }
.trade-history-list { min-width: 0; }
.trade-history-row { min-height: 62px; padding: 8px 6px; color: var(--tv-text-2); font-size: 11px; }
.trade-history-row:hover { background: var(--tv-surface-2); }
.trade-history-row > span:not(:first-child) { text-align: right; }
.trade-history-row b { color: var(--tv-text-1); font-size: 12px; }.trade-history-row small { margin-top: 4px; color: var(--tv-text-3); font-size: 10px; }
.trade-history-symbol { min-width: 0; display: flex; align-items: center; gap: 8px; text-align: left !important; }
.trade-history-symbol > span { min-width: 0; display: flex; flex-direction: column; }
.trade-history-symbol b, .trade-history-symbol small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.orders-list { gap: 8px; margin-top: 14px; }
.order-card { padding: 13px; border-color: var(--tv-border); border-radius: 6px; background: var(--tv-canvas); }
.order-card:hover { background: #161616; }
.order-top { gap: 10px; }.order-symbol { min-width: 0; display: flex; align-items: center; gap: 8px; }
.order-symbol > b { min-width: 0; display: flex; flex-direction: column; color: var(--tv-text-1); font-size: 12px; }.order-symbol small { margin-top: 3px; color: var(--tv-text-3); font-size: 10px; font-weight: 400; }
.order-details { margin-top: 8px; color: var(--tv-text-2); font-size: 11px; line-height: 1.5; }
.empty-orders { padding: 58px 12px; color: var(--tv-text-2); font-size: 12px; line-height: 1.6; }

.indicator-browser-nav { overflow: hidden; }
.indicator-browser-nav section { margin-bottom: 14px; }

.indicator-script-dialog[open] {
  position: fixed;
  inset: 44px 0 25px auto;
  width: min(560px, calc(100vw - 64px));
  max-width: none;
  height: calc(100vh - 69px);
  max-height: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: 64px minmax(0, 1fr) auto auto 50px;
  overflow: hidden;
  border: 1px solid var(--tv-border);
  border-right: 0;
  border-radius: 8px 0 0 8px;
  background: var(--tv-surface-2);
  box-shadow: -14px 0 36px rgba(0,0,0,.48);
}
.indicator-script-dialog::backdrop { background: rgba(0,0,0,.36); }
.indicator-script-dialog[open]:has(.script-preview[hidden]) { grid-template-columns: minmax(0,1fr); }
.script-dialog-head { grid-column: 1; grid-row: 1; padding: 0 16px; background: var(--tv-canvas); }
.script-dialog-head > button { width: 32px; height: 32px; display: grid; place-items: center; border: 0; border-radius: 5px; background: transparent; }
.script-dialog-head > button:hover { background: var(--tv-surface-hover); }
.script-chat { grid-column: 1; grid-row: 2; padding: 16px; background: var(--tv-surface-2); }
.script-chat article { grid-template-columns: 32px minmax(0,1fr); gap: 9px; margin-bottom: 12px; }
.script-chat article.user { margin-left: 32px; }
.script-chat article > i { width: 32px; height: 32px; }
.script-chat article > div { padding: 11px 12px; border-color: var(--tv-border); background: var(--tv-canvas); }
.script-chat b { font-size: 12px; }.script-chat p { font-size: 12px; line-height: 1.55; }
.script-preview { grid-column: 1; grid-row: 3; min-height: 0; max-height: 220px; grid-template-rows: 46px minmax(0,1fr); border-top: 1px solid var(--tv-border); border-left: 0; background: #080808; }
.script-preview[hidden] { display: none; }
.script-preview pre { padding: 12px 14px; font-size: 12px; line-height: 1.55; }
.script-composer { grid-column: 1; grid-row: 4; grid-template-columns: minmax(0,1fr) 72px; gap: 8px; padding: 12px 14px; background: var(--tv-surface-2); }
.script-composer textarea { min-height: 72px; max-height: 120px; resize: none; padding: 10px 11px; border-color: #484848; background: var(--tv-canvas); font-size: 13px; }
.script-composer button { height: 36px; font-size: 12px; }
.script-dialog-footer { grid-column: 1; grid-row: 5; height: 50px; padding: 0 14px; background: var(--tv-canvas); }

@media (max-width: 1260px) {
  .symbol-popover { width: 430px; }
  .indicator-script-dialog[open] { width: min(520px, calc(100vw - 56px)); }
}

/* TradingView visual alignment v4 — active states, data drawers, logs and MT5 controls. */
.tool.active,
.right-panel > .panel-tabs button.active,
.topbar-trade-button.active {
  border-color: transparent;
  background: var(--tv-surface-hover);
  color: #fff;
  box-shadow: none;
}
.right-panel > .panel-tabs button.active::before { display: none; }
.drawer-filter-row button.active,
.trade-history-tabs button.active,
.portfolio-tabs button.active,
.mode-switch button.active {
  border-color: transparent;
  background: var(--tv-selected);
  color: #fff;
  box-shadow: none;
}

.side-data-tool > i {
  top: -3px;
  right: -4px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  border: 2px solid var(--tv-canvas);
  border-radius: 10px;
  background: var(--tv-red);
  color: #fff;
  font: 600 10px/14px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.2px;
  box-sizing: border-box;
}
.side-data-tool > span img { width: 21px; height: 21px; }

.left-data-drawer {
  z-index: 90;
  left: 52px;
  width: min(440px, calc(100vw - 430px));
  border-color: var(--tv-border);
  background: var(--tv-canvas);
  box-shadow: 12px 0 28px rgba(0, 0, 0, .44);
  backdrop-filter: none;
}
#calendarDrawer { grid-template-rows: 68px 52px auto 42px 72px minmax(0, 1fr); }
#calendarDrawer:has(.calendar-filter-panel[hidden]) { grid-template-rows: 68px 52px 42px 72px minmax(0, 1fr); }
#newsDrawer { grid-template-rows: 68px 46px 42px minmax(0, 1fr); }
.drawer-head { padding: 0 16px 0 18px; background: var(--tv-canvas); border-color: var(--tv-border); }
.drawer-head h2 { color: var(--tv-text-1); font-size: 16px; line-height: 20px; font-weight: 600; }
.drawer-head h2 em { margin-left: 7px; font-size: 10px; }
.drawer-head small { margin-top: 4px; color: var(--tv-text-3); font-size: 11px; line-height: 14px; }
.drawer-head button { width: 32px; height: 32px; display: grid; place-items: center; padding: 0; border-radius: 5px; }
.drawer-head button:hover { background: var(--tv-surface-hover); }
.drawer-head button img { width: 18px; height: 18px; filter: invert(1); opacity: .78; }

.calendar-filter-toggle-row { padding: 0 16px; border-bottom: 1px solid var(--tv-border-soft); }
.calendar-filter-toggle-row button { height: 32px; padding: 0 12px; border: 1px solid var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-1); font-size: 12px; font-weight: 500; }
.calendar-filter-toggle-row button:hover { background: var(--tv-surface-hover); }
.calendar-filter-toggle-row button.has-filters { border-color: #555; background: var(--tv-selected); }
.calendar-filter-toggle-row button.has-filters i { background: rgba(0,0,0,.25); }
.calendar-filter-toggle-row > small { color: var(--tv-text-3); font-size: 10px; }
.calendar-filter-panel { gap: 10px; padding: 12px 16px 14px; border-color: var(--tv-border); background: var(--tv-canvas); }
.calendar-filter-panel label { height: 52px; border-color: #414141; border-radius: 6px; background: var(--tv-surface-2); }
.calendar-filter-panel label > span { top: 7px; color: var(--tv-text-3); font-size: 10px; }
.calendar-filter-panel select { padding-top: 16px; color: var(--tv-text-1); font-size: 12px; }
.drawer-source-row { padding: 0 16px; border-color: var(--tv-border); color: var(--tv-text-3); font-size: 11px; }
.drawer-source-row button { height: 30px; gap: 6px; padding: 0 8px; border-radius: 5px; color: var(--tv-text-2); font-size: 11px; }
.drawer-source-row button:hover { background: var(--tv-surface-hover); color: #fff; }
.drawer-source-row button img { width: 15px; height: 15px; filter: invert(1); opacity: .7; }

.calendar-date-strip { grid-template-columns: 30px minmax(0, 1fr) 30px; gap: 6px; padding: 8px 10px; border-color: var(--tv-border); background: var(--tv-canvas); }
.calendar-date-strip > button { border-color: var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); }
.calendar-date-strip > button:hover { border-color: #555; background: var(--tv-surface-hover); }
#calendarDateStripTrack { gap: 6px; }
#calendarDateStripTrack button { flex-basis: 72px; border-color: var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); }
#calendarDateStripTrack button:hover { background: var(--tv-surface-hover); }
#calendarDateStripTrack button b { color: var(--tv-text-1); font-size: 12px; }
#calendarDateStripTrack button small { color: var(--tv-text-2); font-size: 10px; }
#calendarDateStripTrack button em { color: var(--tv-text-3); font-size: 9px; }
#calendarDateStripTrack button.today { border-color: #555; }
#calendarDateStripTrack button.active { border-color: transparent; background: var(--tv-selected); color: #fff; box-shadow: none; }

.drawer-filter-row { gap: 6px; padding: 7px 16px; border-color: var(--tv-border); }
.drawer-filter-row button { height: 32px; padding: 0 14px; border: 0; border-radius: 16px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 12px; font-weight: 500; }
.drawer-filter-row button:hover { background: var(--tv-surface-hover); color: #fff; }
.calendar-list, .news-list { min-height: 0; padding: 0 6px 16px; overflow-x: hidden; overflow-y: auto; scrollbar-gutter: stable; }
.calendar-day { margin-inline: -6px; padding: 9px 16px; border-color: var(--tv-border); background: #1b1b1b; color: var(--tv-text-1); font-size: 12px; }
.calendar-event { min-height: 124px; gap: 10px; padding: 14px 12px; border-color: var(--tv-border-soft); border-radius: 0; }
.calendar-event:hover { background: #191919; }
.calendar-event > header { grid-template-columns: 20px 50px minmax(0, 1fr) auto; gap: 8px; }
.calendar-event > header time { color: var(--tv-text-1); font-size: 12px; }
.calendar-event > header small { color: var(--tv-text-3); font-size: 10px; }
.calendar-event .event-country img { width: 18px; height: 18px; }
.calendar-stars i { font-size: 13px; }
.calendar-event-title { gap: 10px; }
.calendar-event-title h3 { color: var(--tv-text-1); font-size: 13px; line-height: 1.45; font-weight: 500; }
.calendar-event-title em { padding: 5px 8px; font-size: 11px; }
.calendar-event > footer { gap: 12px; color: var(--tv-text-3); font-size: 11px; }
.calendar-event > footer b { font-size: 12px; }

.news-item { min-height: 96px; grid-template-columns: 68px minmax(0, 1fr); gap: 10px; padding: 14px 12px; border-color: var(--tv-border-soft); }
.news-item:hover { background: #191919; }
.news-item time { color: var(--tv-text-2); font-size: 12px; line-height: 16px; }
.news-item time > small { margin-top: 5px; color: var(--tv-text-3); font-size: 10px; line-height: 14px; }
.news-item h3 { color: var(--tv-text-1); font-size: 13px; line-height: 1.5; font-weight: 500; -webkit-line-clamp: 3; }
.news-item p { margin-top: 7px; color: var(--tv-text-2); font-size: 12px; line-height: 1.55; -webkit-line-clamp: 4; }
.news-related-symbols { gap: 6px; margin-top: 10px; }
.news-related-symbols > span { height: 28px; padding-right: 9px; border-color: var(--tv-border); border-radius: 14px; background: var(--tv-surface-2); }
.news-related-symbols i { width: 20px; height: 20px; }
.news-related-symbols small { font-size: 10px !important; }
.drawer-empty { padding: 64px 24px; color: var(--tv-text-2); font-size: 12px; line-height: 1.7; }

.chart-region.logs-open { grid-template-rows: 39px 88px 27px minmax(160px, 1fr) 260px; }
.system-log-dock { grid-template-rows: 42px 48px 34px minmax(0, 1fr); border-color: var(--tv-border); background: var(--tv-canvas); }
.log-tabs { align-items: center; gap: 12px; padding: 0 14px; border-color: var(--tv-border); }
.log-tabs button { height: 34px; padding: 0 10px; border: 0; border-radius: 5px; color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.log-tabs button.active { border: 0; background: var(--tv-surface-hover); color: #fff; }
.log-tabs span { margin: 0; color: var(--tv-text-3); font-size: 11px; }
.log-toolbar { gap: 8px; padding: 7px 12px; border-bottom: 1px solid var(--tv-border-soft); }
.log-toolbar label { width: min(420px, 38vw); height: 34px; gap: 8px; padding: 0 10px; border-color: var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); }
.log-toolbar input { color: var(--tv-text-1); font-size: 12px; }
.log-toolbar select, .log-toolbar button { height: 34px; padding: 0 12px; border-color: var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 12px; }
.log-toolbar select:hover, .log-toolbar button:hover { background: var(--tv-surface-hover); color: #fff; }
.log-toolbar #closeLogPanel { width: 34px; margin-left: auto; padding: 0; font-size: 18px; }
.log-table-head, .log-row { grid-template-columns: 220px 82px 140px minmax(280px, 1fr); padding-inline: 14px; }
.log-table-head { min-height: 34px; border-color: var(--tv-border-soft); background: #171717; color: var(--tv-text-2); font-size: 12px; font-weight: 500; }
.log-row { min-height: 38px; border-color: var(--tv-border-soft); background: var(--tv-canvas); color: var(--tv-text-2); font: 12px/1.45 ui-monospace, SFMono-Regular, Consolas, monospace; }
.log-row:nth-child(even) { background: #141414; }
.log-row:hover { background: var(--tv-surface-2); }
.log-row time { color: var(--tv-text-1); font-size: 11px; }

#togglePortfolioPanel > img { width: 21px; height: 21px; display: block; filter: invert(1); opacity: .68; }
#togglePortfolioPanel:hover > img, #togglePortfolioPanel.active > img { opacity: 1; }
.portfolio-heading-icon { background: transparent; }
.portfolio-heading-icon img { width: 22px; height: 22px; filter: invert(1); opacity: .8; }

.right-panel > .trade-ticket {
  inset: 0 52px 0 0;
  width: auto;
  max-height: none;
  padding: 0 16px 18px;
  overflow-x: hidden;
  overflow-y: auto;
  border: 0;
  border-radius: 0;
  background: var(--tv-canvas);
  box-shadow: none;
  scrollbar-gutter: stable;
}
.right-panel > .trade-ticket[hidden] { display: none; }
.trade-ticket .ticket-head {
  top: 0;
  min-height: 64px;
  margin: 0 -16px 12px;
  padding: 0 16px;
  border-color: var(--tv-border);
  background: var(--tv-canvas);
}
.ticket-title > i { width: 34px; height: 34px; background: var(--tv-surface-hover); }
.ticket-title > i img { width: 21px; height: 21px; }
.ticket-title b { font-size: 16px; }
.ticket-head small { font-size: 11px; }
.trade-ticket-head-actions > button { width: 32px; height: 32px; }
.live-trading-control { min-height: 68px; border-color: var(--tv-border-soft); }
.live-trading-control span, .quick-volume-row span { color: var(--tv-text-1); font-size: 13px; }
.live-trading-control small, .quick-volume-row small { max-width: 220px; color: var(--tv-text-3); font-size: 11px; line-height: 1.45; white-space: normal; }
.mode-switch { margin: 12px 0; padding: 4px; border-color: var(--tv-border); border-radius: 6px; background: var(--tv-surface-2); }
.mode-switch button { height: 36px; border-radius: 5px; font-size: 12px; }
.quick-volume-row { min-height: 68px; border-color: var(--tv-border-soft); }
.volume-stepper { height: 36px; grid-template-columns: 34px 68px 34px; border-color: var(--tv-border); background: var(--tv-surface-2); }
.volume-stepper button { background: var(--tv-surface-2); font-size: 17px; }
.volume-stepper input { width: 68px; border-color: var(--tv-border); background: var(--tv-canvas); font-size: 12px; }
.risk-row { min-height: 44px; gap: 7px; color: var(--tv-text-3); font-size: 11px; }
.risk-row b { color: var(--tv-text-1); font-size: 12px; }
.ticket-actions { gap: 8px; margin-top: 12px; }
.ticket-actions button { height: 64px; border-radius: 6px; }
.ticket-actions small { font-size: 11px; }
.ticket-actions b { font-size: 16px; }

#mt5Dialog, #accountSwitchDialog { width: min(620px, calc(100vw - 40px)); border-color: var(--tv-border); border-radius: 8px; background: var(--tv-surface-2); }
#mt5Dialog .dialog-head, #accountSwitchDialog .dialog-head { min-height: 72px; padding: 14px 20px; border-color: var(--tv-border); }
#mt5Dialog .dialog-head h2, #accountSwitchDialog .dialog-head h2 { font-size: 16px; }
#mt5Dialog .dialog-head p, #accountSwitchDialog .dialog-head p { margin-top: 5px; color: var(--tv-text-3); font-size: 11px; }
.broker-status-card { min-height: 76px; margin: 16px 20px 6px; gap: 12px; padding: 13px 14px; border-color: var(--tv-border); border-radius: 6px; background: var(--tv-canvas); }
.broker-status-card > i { width: 9px; height: 9px; box-shadow: none; }
.broker-status-card.ready > i, .broker-status-card.error > i { box-shadow: none; }
.broker-status-card > div { gap: 5px; }
.broker-status-card b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.broker-status-card small { color: var(--tv-text-3); font-size: 11px; line-height: 1.45; }
.mt5-details { margin: 14px 20px 6px; gap: 10px; }
.mt5-details > div { min-height: 72px; padding: 12px 14px; gap: 7px; border-color: var(--tv-border); border-radius: 6px; background: var(--tv-canvas); }
.mt5-details span { color: var(--tv-text-3); font-size: 11px; }
.mt5-details b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.broker-fields { gap: 14px; padding: 14px 20px 6px; }
.broker-fields label { color: var(--tv-text-2); font-size: 12px; line-height: 16px; }
.broker-fields label small { margin-left: 6px; color: var(--tv-text-3); font-size: 10px; }
.broker-fields input { height: 42px; margin-top: 7px; padding: 0 12px; border-color: #454545; border-radius: 6px; background: var(--tv-canvas); color: var(--tv-text-1); font-size: 13px; }
.broker-help { margin: 14px 20px 6px; padding: 12px 14px; gap: 6px; border-left-color: var(--tv-amber); background: var(--tv-canvas); }
.broker-help b { color: #d9b85c; font-size: 12px; }
.broker-help span { color: var(--tv-text-2); font-size: 11px; line-height: 1.6; }
#mt5Dialog .dialog-actions, #accountSwitchDialog .dialog-actions { min-height: 64px; padding: 12px 20px; border-color: var(--tv-border); }
#mt5Dialog .dialog-actions button, #accountSwitchDialog .dialog-actions button { min-width: 106px; height: 38px; font-size: 12px; }
.account-switch-button { min-width: 104px; height: 32px; gap: 8px; padding: 0 10px; border: 0; border-radius: 5px; color: var(--tv-text-2); }
.account-switch-button > span { width: 8px; height: 8px; flex: 0 0 8px; overflow: hidden; border-radius: 50%; background: var(--tv-green); color: transparent; }
.account-switch-button b { color: var(--tv-text-1); font-size: 12px; font-weight: 500; }
.account-switch-button i img { width: 16px; height: 16px; opacity: .7; }

@media (max-width: 1260px) {
  .left-data-drawer { width: min(420px, calc(100vw - 400px)); }
  .right-panel > .trade-ticket { right: 52px; }
  #mt5Dialog, #accountSwitchDialog { width: min(580px, calc(100vw - 32px)); }
}

/* TradingView visual alignment v5 — training library, chart actions and full-height side sheets. */
#marketCanvas.pan-ready { cursor: grab; }
#marketCanvas.pan-ready.dragging { cursor: grabbing; }

.chart-context-menu {
  z-index: 30;
  width: min(390px, calc(100% - 12px));
  border: 1px solid #363636;
  border-radius: 6px;
  background: #1f1f1f;
  box-shadow: 0 10px 28px rgba(0,0,0,.52);
  backdrop-filter: none;
}
.context-candle { min-height: 70px; padding: 11px 14px; gap: 4px; border-color: #383838; background: #202020; }
.context-candle b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.context-candle small { color: var(--tv-text-1); font: 600 13px ui-monospace, Consolas; }
.context-candle span { overflow: hidden; color: var(--tv-text-3); font: 10px ui-monospace, Consolas; text-overflow: ellipsis; white-space: nowrap; }
.chart-context-menu > div:not(.context-candle) > button {
  min-height: 57px;
  grid-template-columns: 30px minmax(0, 1fr) auto;
  gap: 10px;
  padding: 8px 14px;
  border-color: #383838;
  color: var(--tv-text-1);
}
.chart-context-menu > div:not(.context-candle) > button:hover { background: #2b2b2b; }
.chart-context-menu > div:not(.context-candle) > button > i {
  width: 26px;
  height: 26px;
  border-radius: 0;
  background: transparent;
  color: var(--tv-text-2);
  font-size: 22px;
  font-weight: 500;
}
.chart-context-menu > div:not(.context-candle) > button > i.buy { color: var(--tv-green); }
.chart-context-menu > div:not(.context-candle) > button > i.sell { color: var(--tv-red); }
.chart-context-menu > div:not(.context-candle) > button > i.context-line-icon { font-size: 24px; }
.chart-context-menu > div:not(.context-candle) > button > span { min-width: 0; gap: 4px; }
.chart-context-menu > div:not(.context-candle) > button b { overflow: hidden; color: var(--tv-text-1); font-size: 13px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.chart-context-menu > div:not(.context-candle) > button b em { color: inherit; font-style: normal; }
.chart-context-menu > div:not(.context-candle) > button small { overflow: hidden; color: var(--tv-text-3); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.chart-context-menu kbd { color: #858585; font: 10px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; white-space: nowrap; }

.right-panel > .panel-view[data-panel-view="analysis"] { padding: 0 0 18px; }
.right-panel > .panel-view[data-panel-view="analysis"] > .panel-title-row { min-height: 68px; margin: 0; padding: 0 16px; border-bottom: 1px solid var(--tv-border); background: var(--tv-canvas); }
.right-panel > .panel-view[data-panel-view="analysis"] > .empty-analysis,
.right-panel > .panel-view[data-panel-view="analysis"] > .point-form { margin-inline: 14px; }
.training-library { margin: 18px 14px 0; border-top: 1px solid var(--tv-border); }
.training-library > header { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.training-library > header > div { display: flex; flex-direction: column; gap: 4px; }
.training-library > header b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.training-library > header small { color: var(--tv-text-3); font-size: 10px; }
.training-library > header button { width: 32px; height: 32px; border: 0; border-radius: 5px; background: transparent; color: var(--tv-text-2); font-size: 18px; cursor: pointer; }
.training-library > header button:hover { background: var(--tv-surface-hover); color: #fff; }
.training-library-list { display: flex; flex-direction: column; gap: 8px; }
.training-library-empty { padding: 42px 16px; border: 1px dashed var(--tv-border); border-radius: 6px; color: var(--tv-text-3); font-size: 12px; text-align: center; }
.training-symbol-group { overflow: hidden; border: 1px solid var(--tv-border); border-radius: 6px; background: var(--tv-canvas); }
.training-symbol-group > summary { min-height: 56px; display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 9px; padding: 0 12px; list-style: none; cursor: pointer; }
.training-symbol-group > summary::-webkit-details-marker { display: none; }
.training-symbol-group > summary:hover { background: var(--tv-surface-hover); }
.training-symbol-group > summary > span:nth-child(2) { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.training-symbol-group > summary b { color: var(--tv-text-1); font: 600 13px ui-monospace, Consolas; }
.training-symbol-group > summary small { color: var(--tv-text-3); font-size: 10px; }
.training-symbol-group > summary em { min-width: 24px; height: 24px; display: grid; place-items: center; border-radius: 12px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 10px; font-style: normal; }
.training-symbol-icon { width: 24px; height: 24px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; }
.training-symbol-icon img { width: 100%; height: 100%; object-fit: contain; }
.training-sample-stack { display: flex; flex-direction: column; gap: 8px; padding: 0 8px 8px; border-top: 1px solid var(--tv-border-soft); }
.training-sample-card { margin-top: 8px; padding: 11px; border: 1px solid var(--tv-border-soft); border-left: 2px solid var(--tv-green); border-radius: 5px; background: var(--tv-surface-2); }
.training-sample-card.sell { border-left-color: var(--tv-red); }
.training-sample-card > header { display: grid; grid-template-columns: auto auto auto minmax(0,1fr); align-items: center; gap: 7px; }
.training-sample-card > header .training-side { color: var(--tv-green); font-size: 11px; font-weight: 600; }
.training-sample-card.sell > header .training-side { color: var(--tv-red); }
.training-sample-card > header b { color: var(--tv-text-1); font-size: 11px; font-weight: 600; }
.training-sample-card > header em { padding: 2px 5px; border-radius: 3px; background: #333; color: var(--tv-text-2); font-size: 9px; font-style: normal; }
.training-sample-card > header time { overflow: hidden; color: var(--tv-text-3); font-size: 10px; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.training-sample-card dl { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 6px; margin: 10px 0 0; }
.training-sample-card dl > div { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.training-sample-card dt { color: var(--tv-text-3); font-size: 10px; }
.training-sample-card dd { overflow: hidden; margin: 0; color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas; text-overflow: ellipsis; }
.training-sample-card > p { display: -webkit-box; overflow: hidden; margin: 10px 0 0; color: var(--tv-text-2); font-size: 12px; line-height: 1.5; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.training-sample-card > footer { display: flex; justify-content: flex-end; gap: 6px; margin-top: 10px; }
.training-sample-card > footer button { height: 30px; padding: 0 10px; border: 1px solid var(--tv-border); border-radius: 5px; background: var(--tv-canvas); color: var(--tv-text-2); font-size: 11px; cursor: pointer; }
.training-sample-card > footer button:hover { background: var(--tv-surface-hover); color: #fff; }
.training-sample-card > footer button.danger { color: #ff7b86; }

.symbol-popover {
  position: fixed;
  z-index: 110;
  inset: 44px auto 25px 52px;
  width: min(510px, calc(100vw - 430px));
  max-height: none;
  grid-template-rows: 68px 62px 34px minmax(0, 1fr);
  border-left: 0;
  border-radius: 0 8px 8px 0;
  box-shadow: 14px 0 36px rgba(0,0,0,.5);
}
.symbol-popover-head { height: 68px; padding-inline: 18px; }
.symbol-popover-head b { font-size: 16px; }
.symbol-popover-head small { font-size: 11px; }
.symbol-picker-search { height: 44px; margin: 9px 16px; }
.symbol-picker-search input { font-size: 13px; }
.symbol-picker-columns { padding-inline: 20px; font-size: 11px; }
.symbol-picker-list { padding: 0 10px 10px; }
.symbol-picker-row { height: 56px; padding-inline: 12px; }
.picker-symbol > b { font-size: 13px; }

.indicator-script-dialog[open] {
  z-index: 120;
  inset: 44px 0 25px auto;
  width: min(640px, calc(100vw - 52px));
  height: auto;
  max-height: none;
  border-radius: 8px 0 0 8px;
  box-shadow: -16px 0 40px rgba(0,0,0,.52);
}
.indicator-script-dialog::backdrop { background: transparent; }
.script-dialog-head { min-height: 68px; padding-inline: 18px; }
.script-dialog-head h2 { font-size: 16px; }
.script-dialog-head p { font-size: 11px; }
.script-chat { padding: 18px; }
.script-chat article > div { padding: 12px 13px; }
.script-chat b, .script-chat p { font-size: 13px; }
.script-composer { padding: 14px 16px; }
.script-composer textarea { min-height: 82px; padding: 11px 12px; font-size: 13px; }

.ohlc-row.up, .ohlc-row.up b { color: var(--tv-green); }
.ohlc-row.down, .ohlc-row.down b { color: var(--tv-red); }

/* MT5 order confirmation — preflight first, explicit user submission second. */
.live-order-dialog {
  width: min(560px, calc(100vw - 40px));
  border-color: var(--tv-border);
  border-radius: 8px;
  background: var(--tv-surface-2);
}
.live-order-dialog .dialog-head { min-height: 76px; padding: 14px 20px; border-color: var(--tv-border); }
.live-order-dialog .dialog-head h2 { font-size: 16px; }
.live-order-dialog .dialog-head p { max-width: 420px; margin-top: 5px; color: var(--tv-text-3); font-size: 11px; line-height: 1.45; }
.live-order-account {
  min-height: 68px;
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 16px 20px 0;
  padding: 12px 14px;
  border: 1px solid var(--tv-border);
  border-radius: 6px;
  background: var(--tv-canvas);
}
.live-account-status { width: 9px; height: 9px; flex: 0 0 9px; border-radius: 50%; background: var(--tv-amber); }
.live-account-status.real { background: var(--tv-red); }
.live-account-status.demo { background: var(--tv-green); }
.live-order-account > div { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.live-order-account b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.live-order-account small { overflow: hidden; color: var(--tv-text-3); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.live-order-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 14px 20px 0;
  overflow: hidden;
  border: 1px solid var(--tv-border);
  border-radius: 6px;
  background: var(--tv-border);
}
.live-order-summary > div { min-height: 56px; display: flex; flex-direction: column; justify-content: center; gap: 6px; padding: 9px 12px; background: var(--tv-canvas); }
.live-order-summary span { color: var(--tv-text-3); font-size: 10px; }
.live-order-summary b { overflow: hidden; color: var(--tv-text-1); font: 600 13px ui-monospace, SFMono-Regular, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.live-order-warning {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 14px 20px 4px;
  padding: 12px 14px;
  border-left: 3px solid var(--tv-amber);
  background: var(--tv-canvas);
}
.live-order-warning.real { border-left-color: var(--tv-red); }
.live-order-warning b { color: #d9b85c; font-size: 12px; }
.live-order-warning.real b { color: #ff7b86; }
.live-order-warning span { color: var(--tv-text-2); font-size: 11px; line-height: 1.55; }
.live-order-actions { min-height: 66px; padding: 12px 20px; border-color: var(--tv-border); }
.live-order-actions button { min-width: 116px; height: 38px; font-size: 12px; }
#confirmLiveOrder.buy { border-color: var(--tv-blue); background: var(--tv-blue); color: #fff; }
#confirmLiveOrder.sell { border-color: var(--tv-red); background: var(--tv-red); color: #fff; }
#confirmLiveOrder:disabled { cursor: wait; opacity: .62; }

.position-manage-dialog {
  width: min(520px, calc(100vw - 40px));
  border-color: var(--tv-border);
  border-radius: 8px;
  background: var(--tv-surface-2);
}
.position-manage-dialog .dialog-head { min-height: 76px; padding: 14px 20px; border-color: var(--tv-border); }
.position-manage-dialog .dialog-head h2 { font-size: 16px; }
.position-manage-dialog .dialog-head p { margin-top: 5px; color: var(--tv-text-3); font-size: 11px; }
.position-manage-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 14px 20px 0; }
.position-manage-summary > span { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.position-manage-summary small { color: var(--tv-text-3); font-size: 10px; }
.position-manage-summary b { overflow: hidden; color: var(--tv-text-1); font: 600 12px ui-monospace, SFMono-Regular, Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.position-manage-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 16px 20px 0; }
.position-manage-fields label { color: var(--tv-text-2); font-size: 12px; }
.position-manage-fields input { width: 100%; height: 40px; margin-top: 6px; padding: 0 11px; border: 1px solid var(--tv-border); border-radius: 6px; outline: 0; background: var(--tv-canvas); color: var(--tv-text-1); font: 12px ui-monospace, SFMono-Regular, Consolas, monospace; }
.position-manage-fields input:focus { border-color: var(--tv-border); box-shadow: none; }

@media (max-width: 1260px) {
  .symbol-popover { width: min(470px, calc(100vw - 390px)); }
  .indicator-script-dialog[open] { width: min(600px, calc(100vw - 52px)); }
}

/* TradingView spacing contract v6 — authoritative workspace bands.
   Keep this block last: earlier compatibility layers must not collapse toolbar groups. */
.app-shell,
.app-shell.logs-open {
  grid-template-rows: 42px minmax(0, 1fr) 24px;
}
.app-shell.logs-open {
  grid-template-rows: 42px minmax(0, 1fr) 210px 24px;
}
.topbar {
  height: 42px;
  min-height: 42px;
}
.brand,
.instrument-tabs,
.instrument-tab,
.add-instrument-tab {
  height: 42px;
}

.drawing-toolbar {
  gap: 4px;
  padding: 8px 6px;
  border-right: 1px solid var(--tv-border);
}
.drawing-toolbar .tool {
  width: 40px;
  height: 40px;
  flex: 0 0 40px;
}
.drawing-toolbar .tool:first-child {
  margin-bottom: 4px;
}

.chart-region {
  grid-template-rows: 38px 92px 30px minmax(220px, 1fr);
}
.chart-region.logs-open {
  grid-template-rows: 38px 92px 30px minmax(160px, 1fr) 260px;
}
.chart-region.portfolio-open {
  grid-template-rows: 38px 92px 30px minmax(160px, 1fr) 270px;
}
.chart-toolbar {
  height: 38px;
  gap: 12px;
  padding: 0 12px 0 14px;
  border-bottom: 1px solid var(--tv-border);
}
.chart-toolbar .timeframes {
  order: 0;
  flex: 1 1 auto;
  min-width: 0;
  height: 100%;
  gap: 4px;
  padding: 0;
}
.chart-toolbar .timeframes button {
  min-width: 40px;
  height: 30px;
  padding: 0 10px;
}
.chart-toolbar .top-actions {
  order: 0;
  flex: 0 0 auto;
  align-self: stretch;
  display: flex;
  align-items: center;
  margin-left: auto;
  padding-left: 12px;
  border-left: 1px solid var(--tv-border);
}
#indicatorButton {
  min-width: 80px;
  height: 30px;
  padding: 0 12px;
}
.chart-heading {
  padding: 10px 16px 8px;
}
.indicator-legend {
  min-height: 30px;
  padding-inline: 16px;
}

@media (max-width: 1260px) {
  .chart-toolbar { gap: 8px; padding-inline: 10px; }
  .chart-toolbar .top-actions { padding-left: 10px; }
}

/* TradingView component contract v7 — consistent sheets, close actions and dense dialogs. */
.symbol-popover {
  inset: 42px max(360px, 24vw) 24px 52px;
  width: auto;
  height: auto;
  max-height: none;
  grid-template-rows: 64px 62px 34px minmax(0, 1fr);
  border: 0;
  border-right: 1px solid var(--tv-border);
  border-radius: 0;
  background: var(--tv-canvas);
  box-shadow: none;
}
.symbol-popover-head { height: 64px; padding-inline: 20px; }
.symbol-popover-head small,
#symbolSourceLabel { display: none; }
.symbol-picker-search { margin-inline: 20px; }
.symbol-picker-columns,
.symbol-picker-row { grid-template-columns: minmax(280px, 1fr) 180px 120px; }
.symbol-picker-columns { padding-inline: 28px; }
.symbol-picker-list { padding-inline: 16px; }
.symbol-picker-row { height: 58px; padding-inline: 12px; }

.dialog-head > button,
.drawer-head > button,
.symbol-popover-head > button,
.script-dialog-head > button,
.trade-ticket-head-actions > button,
.chart-event-popover header > button,
.panel-close,
#closeLogPanel {
  width: 32px;
  height: 32px;
  min-width: 32px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--tv-text-2);
  font-size: 0;
  cursor: pointer;
}
.dialog-head > button:hover,
.drawer-head > button:hover,
.symbol-popover-head > button:hover,
.script-dialog-head > button:hover,
.trade-ticket-head-actions > button:hover,
.chart-event-popover header > button:hover,
.panel-close:hover,
#closeLogPanel:hover { background: var(--tv-surface-hover); color: #fff; }
.dialog-head > button img,
.drawer-head > button img,
.symbol-popover-head > button img,
.script-dialog-head > button img,
.trade-ticket-head-actions > button img,
.chart-event-popover header > button img,
.panel-close img,
#closeLogPanel img {
  width: 18px;
  height: 18px;
  display: block;
  filter: invert(1);
  opacity: .72;
}
.dialog-head > button:hover img,
.drawer-head > button:hover img,
.symbol-popover-head > button:hover img,
.script-dialog-head > button:hover img,
.trade-ticket-head-actions > button:hover img,
.chart-event-popover header > button:hover img,
.panel-close:hover img,
#closeLogPanel:hover img { opacity: 1; }

.indicator-script-dialog[open] {
  inset: 42px 0 24px auto;
  width: min(520px, calc(100vw - 52px));
  height: auto;
}
.indicator-browser[open] {
  width: min(860px, calc(100vw - 40px));
  height: min(640px, calc(100vh - 32px));
  max-height: calc(100vh - 32px);
  grid-template-rows: 60px minmax(0, 1fr);
  border-radius: 8px;
}
.indicator-browser-body { grid-template-columns: 196px minmax(0, 1fr); }
.indicator-browser-nav { padding: 12px 10px; }
.indicator-browser-main { grid-template-rows: 54px 52px minmax(0, 1fr) 36px; }
.indicator-main-head { padding-inline: 16px; }
.indicator-search { margin-inline: 16px; }
.indicator-catalog { padding-inline: 8px; }
.catalog-row { height: 50px; grid-template-columns: 30px minmax(0, 1fr) 68px 22px; padding-inline: 6px 10px; }
.catalog-row.added { background: var(--tv-surface-hover); }
.catalog-row.added em { color: var(--tv-green); font-weight: 600; }
.catalog-row.added > i {
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(8, 153, 129, .16);
  color: var(--tv-green);
  font-style: normal;
}
.catalog-row.added > i::before { content: "✓"; font-size: 11px; font-weight: 700; }

.chart-context-menu .context-direction img { width: 24px; height: 24px; display: block; }
.panel-header-switch { display: flex; align-items: center; gap: 9px; color: var(--tv-text-2); font-size: 12px; }
.score-ring[hidden] { display: none; }
.model-control-card { padding-block: 4px 12px; }
.model-live-control { min-height: 52px; border-top: 1px solid var(--tv-border-soft); }
.model-live-control > div { min-width: 0; }
.model-live-control small { max-width: 210px; }
.model-control-primary > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.model-control-primary > div > span { color: var(--tv-text-1); font-weight: 600; }
.model-control-primary > div > small { color: var(--tv-text-3); font-size: 10px; line-height: 14px; }
.channel-state { flex: 0 0 auto; padding: 5px 8px; border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-3); font-size: 11px; font-weight: 600; }
.channel-state.ready { background: rgba(8, 153, 129, .12); color: var(--green); }
.auto-trading-card { margin-top: 18px; padding: 14px; border-radius: 7px; background: var(--tv-canvas); box-shadow: inset 0 0 0 1px rgba(255,255,255,.055); }
.auto-trading-head { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.auto-trading-head > div { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.auto-trading-head b { color: var(--tv-text-1); font-size: 14px; line-height: 18px; }
.auto-trading-head small { color: var(--tv-text-3); font-size: 10px; line-height: 14px; }
.auto-trading-config { margin-top: 10px; padding: 11px 12px; border-radius: 6px; background: var(--tv-surface-2); }
.auto-trading-config > label { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--tv-text-2); font-size: 12px; }
.auto-trading-config input { width: 96px; height: 32px; padding: 0 10px; border: 0; border-radius: 5px; outline: 1px solid var(--tv-border); background: var(--tv-surface-1); color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas; text-align: right; }
.auto-trading-config input:focus { outline-color: var(--tv-text-2); caret-color: #fff; }
.auto-trading-config > small { display: block; margin-top: 8px; color: var(--tv-text-3); font-size: 10px; line-height: 15px; }
.auto-risk-gate { margin-top: 10px; padding: 11px 12px; border-radius: 6px; background: var(--tv-surface-2); }
.auto-risk-gate > header > div { display: flex; flex-direction: column; gap: 3px; }
.auto-risk-gate > header b { color: var(--tv-text-1); font-size: 12px; font-weight: 600; }
.auto-risk-gate > header small { color: var(--tv-text-3); font-size: 10px; line-height: 14px; }
.auto-risk-limit-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.auto-risk-limit-grid label { min-width: 0; display: flex; flex-direction: column; gap: 5px; color: var(--tv-text-3); font-size: 10px; }
.auto-risk-limit-grid input { width: 100%; height: 32px; padding: 0 10px; border: 0; border-radius: 5px; outline: 1px solid var(--tv-border); background: var(--tv-surface-1); color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas, monospace; text-align: right; }
.auto-risk-limit-grid input:focus { outline-color: var(--tv-text-2); caret-color: #fff; }
.auto-risk-switch { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 11px; padding-top: 10px; border-top: 1px solid var(--tv-border); }
.auto-risk-switch > span:first-child { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.auto-risk-switch > span:first-child > b { color: var(--tv-text-2); font-size: 11px; font-weight: 500; }
.auto-risk-switch > span:first-child > small { color: var(--tv-text-3); font-size: 9px; line-height: 14px; }
.auto-risk-switch > .switch { flex: 0 0 auto; }
.auto-policy-summary { display: grid; gap: 8px; margin-top: 10px; padding: 11px 12px; border-radius: 6px; background: var(--tv-surface-2); }
.auto-policy-summary > span { min-width: 0; display: grid; grid-template-columns: 62px minmax(0, 1fr); align-items: baseline; gap: 8px; }
.auto-policy-summary small { color: var(--tv-text-3); font-size: 10px; line-height: 15px; }
.auto-policy-summary b { color: var(--tv-text-2); font-size: 11px; font-weight: 500; line-height: 16px; }
.auto-trading-card .model-symbol-heading { margin-top: 15px; }
.auto-trading-card .model-run-status { margin-bottom: 10px; }
.auto-trading-card .model-results { max-height: 440px; overflow: auto; scrollbar-width: thin; scrollbar-color: #555 transparent; }
.auto-trade-result .model-result-head span.hold { color: var(--tv-text-2); background: var(--tv-surface-2); }
.auto-trade-policy { display: flex; flex-wrap: wrap; gap: 5px; margin: 8px 0 2px; }
.auto-trade-policy span { min-height: 22px; display: inline-flex; align-items: center; padding: 0 7px; border-radius: 4px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 10px; }
.auto-trade-policy span[data-style="trend-following"] { color: #69bcae; }
.auto-trade-policy span[data-style="key-level-countertrend"] { color: #d9b85c; }
.auto-trade-policy span[data-style="countertrend-scalp"] { color: #d9b85c; }
.auto-trade-policy span[data-volatility="extreme"] { color: var(--tv-red); }
.evidence-trigger-policy span:first-child { color: var(--tv-text-1); }
.evidence-trigger-policy span[data-evidence="K线形态"] { color: #b8a8ff; }
.evidence-trigger-policy span[data-evidence="FVG"] { color: var(--tv-purple); }
.evidence-trigger-policy span[data-evidence="BOS"] { color: #72a8ff; }
.model-symbol-heading button:disabled { opacity: .4; cursor: default; }
.panel-view[data-panel-view="model"] > .model-results { max-height: 220px; overflow: auto; padding-right: 2px; scrollbar-width: thin; scrollbar-color: #555 transparent; }
.trade-ticket .mode-switch { margin-top: 14px; }

.trade-order-type {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 3px;
  margin: 14px 0 12px;
  padding: 3px;
  border-radius: 6px;
  background: var(--tv-surface-2);
}
.trade-order-type button {
  height: 34px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--tv-text-3);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
}
.trade-order-type button:hover { color: var(--tv-text-1); background: var(--tv-surface-hover); }
.trade-order-type button.active { color: var(--tv-text-1); background: #363a45; }
.trade-price-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}
.trade-price-fields label { min-width: 0; display: flex; flex-direction: column; gap: 6px; color: var(--tv-text-2); font-size: 11px; }
.trade-price-fields label[hidden] { display: none; }
.trade-price-fields #pendingOrderPriceField { grid-column: 1 / -1; }
.trade-price-fields input {
  width: 100%;
  height: 38px;
  padding: 0 10px;
  border: 1px solid var(--tv-border);
  border-radius: 5px;
  outline: 0;
  background: var(--tv-surface-2);
  color: var(--tv-text-1);
  font: 12px ui-monospace, SFMono-Regular, Consolas, monospace;
}
.trade-price-fields input:focus { border-color: #5b5f6a; box-shadow: none; }
.trade-price-fields input::placeholder { color: var(--tv-text-3); font-family: inherit; }
.trade-order-hint { margin: 12px 2px 0; color: var(--tv-text-3); font-size: 11px; line-height: 1.5; }
.quick-quote:disabled,
.ticket-actions button:disabled { cursor: wait; opacity: .58; }
.quick-quote.loading,
.ticket-actions button.loading { filter: saturate(.7); }

#calendarRefreshState { display: none; }
.calendar-filter-toggle-row { justify-content: flex-start; }
.drawer-head { min-height: 60px; }
.drawer-head h2 { font-size: 16px; }
.drawer-filter-row button { min-width: 68px; height: 30px; font-size: 12px; }

.portfolio-table-head span,
.portfolio-row > span { min-width: 0; display: flex; align-items: center; justify-content: flex-end; }
.portfolio-table-head span:first-child,
.portfolio-row > span:first-child { justify-content: flex-start; text-align: left; }
.portfolio-action-button {
  min-width: 56px;
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--tv-border);
  border-radius: 5px;
  background: var(--tv-surface-2);
  color: var(--tv-text-1);
  font-size: 11px;
  cursor: pointer;
}
.portfolio-action-button:hover { border-color: #565656; background: var(--tv-surface-hover); }
.portfolio-action-button:disabled { cursor: wait; opacity: .55; }

@media (max-width: 1260px) {
  .symbol-popover { right: 360px; width: auto; }
  .indicator-script-dialog[open] { width: min(480px, calc(100vw - 52px)); }
  .indicator-browser[open] { width: min(820px, calc(100vw - 32px)); }
}

/* TradingView component contract v8 — symbol sheets reuse the Quotes tab list. */
.symbol-popover {
  grid-template-rows: 60px 62px 32px minmax(0, 1fr);
  background: var(--tv-canvas);
}
.symbol-popover-head {
  height: 60px;
  padding: 0 16px;
  background: var(--tv-canvas);
}
.symbol-popover-head > .symbol-popover-heading { gap: 0; }
.symbol-popover-heading > div { gap: 0; }
.symbol-popover-head b { font-size: 15px; line-height: 20px; }
.symbol-picker-search {
  height: 38px;
  margin: 12px 14px;
  padding: 0 12px;
  border: 1px solid var(--tv-border);
  border-radius: 5px;
  background: var(--tv-surface-2);
}
.symbol-picker-search input { font-size: 12px; }
.symbol-picker-columns,
.symbol-picker-row {
  grid-template-columns: minmax(0, 1.15fr) minmax(120px, .85fr) minmax(96px, .65fr);
  gap: 8px;
}
.symbol-picker-columns {
  min-height: 32px;
  padding: 0 22px 8px;
  color: var(--tv-text-3);
  font-size: 11px;
}
.symbol-picker-list {
  padding: 0 14px 14px;
  background: var(--tv-canvas);
}
.symbol-picker-group {
  min-height: 30px;
  padding: 12px 8px 6px;
  border-top: 1px solid var(--tv-border-soft);
  color: var(--tv-text-3);
  font-size: 10px;
}
.symbol-picker-group:first-child { border-top: 0; }
.symbol-picker-row.watch-item {
  width: 100%;
  min-height: 48px;
  height: auto;
  margin: 0 0 2px;
  padding: 8px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--tv-text-2);
  text-align: left;
}
.symbol-picker-row.watch-item:hover { background: var(--tv-surface-2); }
.symbol-picker-row.watch-item.active {
  border-color: #555;
  background: var(--tv-surface-hover);
  color: #fff;
}
.symbol-picker-row > .watch-symbol { text-align: left; }
.symbol-picker-row .watch-symbol b { color: inherit; font-size: 12px; }
.symbol-picker-row .watch-symbol small { color: var(--tv-text-3); font-size: 10px; }
.symbol-picker-row .watch-price,
.symbol-picker-row .watch-change {
  font: 11px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* TradingView component contract v9: both symbol entry points use one controlled width. */
.symbol-popover {
  inset: 42px auto 25px 52px;
  width: min(360px, calc(100vw - 52px));
  max-width: 360px;
  border: 0;
  border-right: 1px solid var(--tv-border);
  border-radius: 0;
  box-shadow: 12px 0 28px rgba(0, 0, 0, .28);
}
.symbol-picker-columns,
.symbol-picker-row {
  grid-template-columns: minmax(0, 1.15fr) minmax(78px, .85fr) minmax(62px, .65fr);
}

@media (max-width: 720px) {
  .symbol-popover {
    left: 48px;
    width: calc(100vw - 48px);
    max-width: none;
  }
}

/* TradingView + ChatGPT component contract v10: alignment, selection and dense data surfaces. */
button,
input,
textarea,
select { font-family: -apple-system, BlinkMacSystemFont, "Trebuchet MS", Roboto, Ubuntu, "Segoe UI", sans-serif; }

.topbar,
.chart-toolbar,
.panel-title-row,
.portfolio-tabs { align-items: center; }
.instrument-tab.active::after { display: none; }
.instrument-tab.active,
.timeframes button.active,
.timeframe-more > button.active,
.tool.active,
.right-panel > .panel-tabs button.active,
.topbar-trade-button.active {
  border-color: transparent;
  background: var(--tv-surface-hover);
  color: #fff;
  box-shadow: none;
}
.right-panel > .panel-tabs button.active::before { display: none; }
.timeframes { gap: 4px; padding-inline: 4px; }
.timeframes button { height: 30px; min-width: 38px; padding-inline: 9px; font-size: 12px; line-height: 30px; }
.icon-button,
.topbar-trade-button,
.topbar-icon-button,
.connection-pill,
.account-switch-button { min-height: 30px; font-size: 12px; }
.panel-title-row h2 { font-size: 15px; line-height: 20px; }
.panel-title-row small { font-size: 10px; line-height: 14px; }
.right-panel > .panel-view { padding: 12px 14px; }
.watchlist-header { min-height: 30px; font-size: 11px; }
.watch-item { min-height: 48px; }

.portfolio-dock { grid-template-rows: 66px 38px minmax(0, 1fr); }
.portfolio-head { grid-template-columns: 196px minmax(0, 1fr); gap: 10px; padding: 8px 12px; }
.portfolio-account { gap: 10px; }
.portfolio-account > span { gap: 2px; }
.portfolio-account em { color: var(--tv-text-1); font-size: 14px; font-style: normal; font-weight: 600; line-height: 18px; }
.portfolio-account b { font-size: 11px; line-height: 15px; }
.portfolio-account small { font-size: 9px; line-height: 13px; }
.portfolio-metrics { grid-template-columns: repeat(8, minmax(76px, 1fr)); gap: 8px; overflow: hidden; }
.portfolio-metrics > span { min-width: 0; gap: 3px; }
.portfolio-metrics small { overflow: hidden; font-size: 9px; text-overflow: ellipsis; }
.portfolio-metrics b { overflow: hidden; font-size: 10px; text-overflow: ellipsis; }
.portfolio-tabs { min-width: 0; gap: 4px; padding: 5px 12px; overflow: hidden; }
.portfolio-tabs button { height: 28px; padding: 0 12px; border: 0; border-radius: 14px; font-size: 11px; white-space: nowrap; }
.portfolio-tabs button.active { background: #f0f0f0; color: #111; box-shadow: none; }
.portfolio-tabs .portfolio-refresh { margin-left: auto; border: 1px solid var(--tv-border); border-radius: 5px; }
.portfolio-table-scroll {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
}
.portfolio-table-head,
.portfolio-row {
  box-sizing: border-box;
  width: 100%;
  min-width: var(--portfolio-min-width, 860px);
  grid-template-columns: var(--portfolio-columns);
}
.portfolio-table-head {
  position: sticky;
  z-index: 4;
  top: 0;
  min-height: 30px;
  padding: 0 10px;
  overflow: visible;
  background: #151515;
  font-size: 10px;
}
.portfolio-table { min-height: 0; overflow: visible; }
.portfolio-row { min-height: 40px; padding: 0 10px; font-size: 11px; }
.portfolio-table-head span,
.portfolio-row > span { box-sizing: border-box; padding-right: 8px; }
.portfolio-table-head span:last-child,
.portfolio-row > span:last-child { padding-right: 0; }
.portfolio-symbol { gap: 7px; }
.portfolio-symbol b { font-size: 11px; line-height: 14px; }
.portfolio-symbol small { font-size: 8px; line-height: 11px; }
.portfolio-action-button { min-width: 52px; height: 26px; padding: 0 8px; font-size: 10px; }
.portfolio-actions { display: flex; align-items: center; justify-content: flex-end; gap: 4px; }
.portfolio-action-button.danger { color: var(--tv-red); }

.indicator-script-dialog[open] {
  grid-template-rows: 58px minmax(0, 1fr) auto auto 44px;
  width: min(520px, calc(100vw - 52px));
  border-radius: 0;
  background: var(--tv-canvas);
  box-shadow: -12px 0 28px rgba(0, 0, 0, .34);
}
.script-dialog-head { min-height: 58px; padding: 0 16px; background: var(--tv-canvas); }
.script-dialog-head h2 { font-size: 15px; line-height: 20px; }
.script-dialog-head p { font-size: 10px; line-height: 14px; }
.script-editor-icon { width: 30px; height: 30px; border-radius: 8px; background: var(--tv-surface-2); }
.script-editor-icon img { width: 17px; height: 17px; }
.script-chat {
  padding: 20px 22px 12px;
  background: var(--tv-canvas);
  scrollbar-gutter: stable;
}
.script-chat article { display: flex; align-items: flex-start; gap: 10px; margin: 0 auto 22px; max-width: 460px; }
.script-chat article > i { width: 28px; height: 28px; flex: 0 0 28px; font-size: 9px; }
.script-chat article.assistant > i { background: #fff; color: #111; }
.script-chat article > div {
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.script-chat article.user { justify-content: flex-end; margin-left: auto; }
.script-chat article.user > i { display: none; }
.script-chat article.user > div {
  max-width: 84%;
  padding: 10px 14px;
  border-radius: 18px;
  background: var(--tv-surface-hover);
}
.script-chat article.user b { display: none; }
.script-chat b { color: var(--tv-text-1); font-size: 12px; line-height: 16px; }
.script-chat p { margin-top: 5px; color: var(--tv-text-1); font-size: 13px; line-height: 1.62; }
.script-preview {
  max-height: 190px;
  margin: 0 16px 10px;
  overflow: hidden;
  border: 1px solid var(--tv-border);
  border-radius: 10px;
  background: #101010;
}
.script-preview header { min-height: 42px; padding-inline: 12px; }
.script-preview pre { padding: 12px 14px; font-size: 12px; line-height: 1.55; }
.script-composer {
  position: relative;
  display: block;
  padding: 8px 16px 12px;
  border: 0;
  background: var(--tv-canvas);
}
.script-composer textarea {
  width: 100%;
  min-height: 54px;
  max-height: 132px;
  padding: 14px 48px 12px 16px;
  resize: none;
  border: 1px solid #3b3b3b;
  border-radius: 20px;
  background: #242424;
  color: var(--tv-text-1);
  font-size: 13px;
  line-height: 1.5;
}
.script-composer textarea:focus { border-color: #4a4a4a; }
.script-composer button {
  position: absolute;
  right: 26px;
  bottom: 22px;
  width: 32px;
  min-width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: #f2f2f2;
  color: #111;
  font-size: 0;
}
.script-composer button::before { content: "\2191"; font-size: 19px; font-weight: 700; line-height: 1; }
.script-composer button:disabled { background: #555; color: #bdbdbd; }
.script-composer button:disabled::before { content: "\2026"; font-size: 16px; }
.script-dialog-footer { height: 44px; padding: 0 16px; background: var(--tv-canvas); }
.script-dialog-footer a { font-size: 10px; }

@media (max-width: 1180px) {
  .portfolio-head { grid-template-columns: 176px minmax(0, 1fr); }
  .portfolio-metrics { grid-template-columns: repeat(8, 82px); overflow-x: auto; }
}

/* TradingView component contract v11: one title-bar rhythm and durable table scrolling. */
#calendarDrawer {
  grid-template-rows: 60px 52px auto 42px 72px minmax(0, 1fr);
}
#calendarDrawer:has(.calendar-filter-panel[hidden]) {
  grid-template-rows: 60px 52px 42px 72px minmax(0, 1fr);
}
#newsDrawer {
  grid-template-rows: 60px 46px 42px minmax(0, 1fr);
}
.drawer-head,
.symbol-popover-head,
.right-panel > .panel-view > .panel-title-row {
  box-sizing: border-box;
  height: 60px;
  min-height: 60px;
  padding: 0 16px;
  border-bottom: 1px solid var(--tv-border);
  background: var(--tv-canvas);
}
.drawer-head h2,
.symbol-popover-head b,
.right-panel > .panel-view > .panel-title-row h2 {
  margin: 0;
  color: var(--tv-text-1);
  font-size: 15px;
  font-weight: 600;
  line-height: 20px;
}
.drawer-head h2 em {
  margin-left: 6px;
  color: var(--tv-text-3);
  font-size: 10px;
  font-weight: 500;
}
.drawer-head > button,
.symbol-popover-head > button {
  margin-left: auto;
}
.right-panel > .panel-view {
  padding: 0 14px 14px;
}
.right-panel > .panel-view > .panel-title-row {
  position: sticky;
  z-index: 8;
  top: 0;
  width: auto;
  margin: 0 -14px 12px;
}
.right-panel > .panel-view[data-panel-view="analysis"] {
  padding: 0 14px 18px;
}
.right-panel > .panel-view[data-panel-view="analysis"] > .panel-title-row {
  height: 60px;
  min-height: 60px;
  margin: 0 -14px 12px;
  padding: 0 16px;
}
.right-panel > .panel-view[data-panel-view="analysis"] > .empty-analysis,
.right-panel > .panel-view[data-panel-view="analysis"] > .point-form {
  margin-inline: 0;
}
.right-panel > .panel-view[data-panel-view="analysis"] > .training-library {
  margin-inline: 0;
}
.right-panel > .panel-view > .panel-title-row .panel-heading-with-icon > i {
  display: none;
}
.right-panel > .panel-view > .panel-title-row .panel-heading-with-icon {
  gap: 0;
}
.right-panel > .panel-view > .panel-title-row small {
  margin-top: 2px;
  font-size: 10px;
  line-height: 14px;
}

.portfolio-table-scroll {
  max-height: 100%;
  overflow-x: auto;
  overflow-y: auto;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
  touch-action: pan-x pan-y;
}
.portfolio-table-head { top: 0; }

@media (max-height: 720px) {
  .chart-region.portfolio-open {
    grid-template-rows: 38px 92px 30px minmax(150px, 1fr) 250px;
  }
}

/* TradingView visual hierarchy v12: use surfaces and spacing before divider lines. */
.topbar,
.chart-toolbar,
.chart-heading,
.statusbar {
  border-top: 0;
  border-bottom: 0;
}
.chart-toolbar { background: #121212; }
.chart-heading { background: var(--tv-canvas); }
.indicator-legend { background: #111; }
.statusbar { background: #151515; }
.drawing-toolbar { border-right-color: #202228; }
.right-panel { border-left-color: #202228; }
.right-panel > .panel-tabs { border-left-color: #202228; }
.instrument-tab {
  height: 34px;
  margin: 4px 2px;
  border-right: 0;
  border-radius: 5px;
}
.instrument-tab.active { background: var(--tv-surface-2); }

.right-panel > .panel-view > .panel-title-row,
.right-panel > .panel-view[data-panel-view="analysis"] > .panel-title-row,
.drawer-head,
.symbol-popover-head {
  border-bottom: 0;
  background: #151515;
}
.search-box,
.symbol-picker-search,
.indicator-search {
  border-color: transparent;
  background: var(--tv-surface-2);
}
.watch-group,
.symbol-picker-group { border-top: 0; }
.watch-item,
.symbol-picker-row { border: 0; }

.settings-dialog {
  border: 0;
  background: #181818;
  box-shadow: 0 24px 72px rgba(0, 0, 0, .62);
}
.dialog-head,
.dialog-actions,
.settings-tabs,
.indicator-tabs,
.catalog-hint,
.script-dialog-head,
.script-dialog-footer,
.script-composer,
.script-preview,
.script-preview header {
  border: 0;
}
.dialog-head,
.dialog-actions,
.script-dialog-head,
.script-dialog-footer { background: #1d1d1d; }
.indicator-browser-nav {
  border-right: 0;
  background: #191919;
}
.indicator-browser-main { background: #1d1d1d; }
.indicator-search { box-shadow: none; }
.catalog-hint { background: #181818; }
.settings-tabs { gap: 4px; padding: 6px 16px; background: #1d1d1d; }
.settings-tabs button {
  height: 36px;
  padding: 0 14px;
  border: 0;
  border-radius: 5px;
}
.settings-tabs button.active {
  border: 0;
  background: var(--tv-selected);
  color: #fff;
}
.broker-status-card,
.mt5-details > div,
.indicator-timeframe-field,
.rr-card,
.ai-trade-analysis,
.model-control-card,
.model-result-card,
.trade-stat-grid > div,
.order-card,
.training-symbol-group,
.training-sample-card {
  border: 0;
  background: var(--tv-surface-2);
}
.training-library,
.training-sample-stack,
.point-side-row,
.model-control-line,
.live-trading-control,
.model-live-control,
.quick-volume-row,
.reason-section li,
.indicator-option {
  border-color: transparent;
}
.broker-fields input,
.setting-row input[type="number"],
.setting-row input[type="datetime-local"],
.setting-row select,
.trade-note-label textarea,
.script-composer textarea {
  border-color: transparent;
  background: #242424;
}

.calendar-filter-toggle-row,
.calendar-filter-panel,
.drawer-source-row,
.calendar-date-strip,
.drawer-filter-row,
.calendar-column-head,
.calendar-day,
.calendar-event,
.news-item {
  border-color: transparent;
}
.calendar-date-strip { background: #151515; }
.calendar-date-strip > button,
#calendarDateStripTrack button {
  border-color: transparent;
  background: var(--tv-surface-2);
}
.calendar-column-head,
.calendar-day { background: #1a1a1a; }
.calendar-event,
.news-item {
  margin: 2px 4px;
  border: 0;
  border-radius: 5px;
}
.news-related-symbols > span { border-color: transparent; }

.portfolio-head,
.log-tabs,
.log-toolbar,
.log-table-head,
.log-row,
.portfolio-row,
.portfolio-table-head,
.chart-context-menu > button,
.chart-context-menu > div:not(.context-candle) > button,
.context-candle {
  border-color: transparent;
}
.log-table-head,
.portfolio-table-head { background: #181818; }
.chart-context-menu > button,
.chart-context-menu > div:not(.context-candle) > button { border-bottom: 0; }

.chart-event-popover {
  z-index: 88;
  top: 16px;
  right: 88px;
  bottom: auto;
  border: 0;
  background: rgba(28, 28, 28, .98);
}

.pattern-prediction-panel {
  position: absolute;
  z-index: 70;
  top: 12px;
  right: 88px;
  width: min(390px, calc(100% - 120px));
  max-height: min(520px, calc(100% - 54px));
  display: grid;
  grid-template-rows: 52px minmax(0, 1fr) auto;
  overflow: hidden;
  border: 1px solid var(--tv-border);
  border-radius: 8px;
  background: rgba(19, 19, 19, .97);
  box-shadow: 0 14px 36px rgba(0, 0, 0, .5);
  backdrop-filter: blur(8px);
  cursor: default;
}
.pattern-prediction-panel[hidden] { display: none; }
.pattern-prediction-panel > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 10px 0 13px; border-bottom: 1px solid var(--tv-border-soft); }
.pattern-prediction-panel > header > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.pattern-prediction-panel > header b { color: var(--tv-text-1); font-size: 12px; font-weight: 600; }
.pattern-prediction-panel > header small { overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.pattern-prediction-panel > header button { width: 30px; height: 30px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; cursor: pointer; }
.pattern-prediction-panel > header button:hover { background: var(--tv-surface-hover); }
.pattern-prediction-panel > header img { width: 16px; height: 16px; filter: invert(1); opacity: .7; }
.pattern-prediction-list { min-height: 0; overflow: hidden auto; padding: 7px; scrollbar-width: thin; }
.pattern-prediction-item { display: grid; grid-template-columns: 5px minmax(0, 1fr) auto; gap: 6px 8px; padding: 9px 8px; border-bottom: 1px solid var(--tv-border-soft); }
.pattern-prediction-item:last-child { border-bottom: 0; }
.pattern-prediction-item > i { grid-row: 1 / span 3; width: 4px; border-radius: 2px; background: var(--tv-amber); }
.pattern-prediction-item[data-direction="bullish"] > i { background: var(--tv-green); }
.pattern-prediction-item[data-direction="bearish"] > i { background: var(--tv-red); }
.pattern-prediction-item > b { overflow: hidden; color: var(--tv-text-1); font-size: 11px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.pattern-prediction-item > strong { color: #c49ae0; font: 600 10px ui-monospace, Consolas, monospace; }
.pattern-prediction-item > p { grid-column: 2 / -1; margin: 0; color: var(--tv-text-2); font-size: 9px; line-height: 1.45; }
.pattern-prediction-levels { grid-column: 2 / -1; display: flex; flex-wrap: wrap; gap: 4px; }
.pattern-prediction-levels span { padding: 3px 5px; border-radius: 3px; background: var(--tv-canvas); color: var(--tv-text-3); font: 9px ui-monospace, Consolas, monospace; }
.pattern-prediction-panel > footer { padding: 7px 12px 9px; border-top: 1px solid var(--tv-border-soft); color: var(--tv-text-3); font-size: 9px; line-height: 1.4; }
.pattern-prediction-reopen { position: absolute; z-index: 69; top: 12px; right: 88px; height: 30px; padding: 0 9px; border: 1px solid var(--tv-border); border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 10px; cursor: pointer; }
.pattern-prediction-reopen[hidden] { display: none; }
.pattern-prediction-reopen b { min-width: 17px; display: inline-grid; place-items: center; margin-left: 5px; padding: 1px 4px; border-radius: 8px; background: rgba(156,77,204,.2); color: #c49ae0; font: 600 9px ui-monospace, Consolas, monospace; }
@media (max-width: 900px) {
  .pattern-prediction-panel { right: 12px; width: min(390px, calc(100% - 24px)); }
  .pattern-prediction-reopen { right: 12px; }
}
.chart-event-popover header,
.chart-event-popover article { border-bottom: 0; }
.chart-event-popover article {
  margin: 2px 0;
  padding: 10px;
  border-radius: 5px;
  background: #232323;
}

/* TradingView visual hierarchy v13: compact chart menu and full-height AI market chat. */
.chart-context-menu {
  width: min(352px, calc(100% - 12px));
}
.context-candle {
  min-height: 52px;
  padding: 8px 12px 7px;
  gap: 2px 8px;
}
.context-candle b,
.context-candle small { font-size: 12px; }
.context-candle span { font-size: 9px; }
.chart-context-menu > div:not(.context-candle) > button {
  min-height: 48px;
  grid-template-columns: 26px minmax(0, 1fr) auto;
  gap: 9px;
  padding: 6px 12px;
}
.chart-context-menu > div:not(.context-candle) > button > i {
  width: 24px;
  height: 24px;
  font-size: 19px;
}
.chart-context-menu > div:not(.context-candle) > button > span { gap: 2px; }
.chart-context-menu > div:not(.context-candle) > button b { font-size: 12px; }
.chart-context-menu > div:not(.context-candle) > button small { font-size: 10px; }
.chart-context-menu .context-direction img,
.chart-context-menu .context-ai-icon img { width: 21px; height: 21px; display: block; }
.chart-context-menu .context-ai-icon img { filter: invert(1); opacity: .78; }

@media (min-width: 1180px) {
  .workspace:has(.market-chat-panel.active) {
    grid-template-columns: 52px minmax(0, 1fr) minmax(460px, 34vw);
  }
}
.right-panel > .panel-view.market-chat-panel {
  position: relative;
  min-height: 0;
  padding: 0;
  overflow: hidden;
  background: var(--tv-canvas);
}
.right-panel > .panel-view.market-chat-panel.active {
  display: grid;
  grid-template-rows: 60px 44px auto minmax(0, 1fr) auto;
}
.market-chat-panel > .market-chat-head {
  position: static;
  min-height: 60px;
  margin: 0;
  padding: 0 14px;
  background: #151515;
}
.market-chat-head-actions { display: flex; align-items: center; gap: 2px; }
.market-chat-history-button,
.market-chat-clear {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--tv-text-2);
  font-size: 21px;
  cursor: pointer;
}
.market-chat-history-button { border: 0; background: transparent; }
.market-chat-history-button img { width: 18px; height: 18px; display: block; filter: invert(1); opacity: .72; }
.market-chat-history-button.active img { opacity: 1; }
.market-chat-history-button:hover,
.market-chat-clear:hover { background: var(--tv-surface-hover); color: #fff; }
.market-chat-context {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 10px;
  padding: 0 14px;
  background: #111;
  color: var(--tv-text-3);
  font-size: 10px;
}
.market-chat-context > span:first-child { min-width: 0; display: flex; align-items: center; gap: 7px; }
.market-chat-context > span:first-child i { width: 18px; height: 18px; flex: 0 0 18px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; }
.market-chat-context > span:first-child i img { width: 100%; height: 100%; object-fit: contain; }
.market-chat-context b { overflow: hidden; color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas; text-overflow: ellipsis; }
.market-chat-context em { color: var(--tv-green); font-size: 9px; font-style: normal; white-space: nowrap; }
.market-chat-context em.closed,
.market-chat-context em.historical { color: var(--tv-text-3); }
.market-chat-quick-actions {
  display: flex;
  align-items: center;
  min-width: 0;
  padding: 8px 14px 4px;
  background: var(--tv-canvas);
}
.market-chat-quick-actions button {
  min-width: 0;
  height: 32px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 0 11px;
  border: 0;
  border-radius: 6px;
  background: var(--tv-surface-2);
  color: var(--tv-text-1);
  font: 600 12px/1 inherit;
  cursor: pointer;
}
.market-chat-quick-actions button:hover { background: var(--tv-surface-hover); }
.market-chat-quick-actions button:disabled { color: var(--tv-text-3); cursor: wait; opacity: .65; }
.market-chat-quick-actions img { width: 15px; height: 15px; filter: invert(1); opacity: .76; }
.market-chat-messages {
  min-height: 0;
  overflow: auto;
  padding: 18px 16px 24px;
  scrollbar-gutter: stable;
}
.market-chat-welcome { max-width: 340px; margin: 36px auto 0; color: var(--tv-text-2); text-align: center; }
.market-chat-welcome > span,
.market-chat-avatar {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--tv-surface-hover);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
}
.market-chat-welcome > span { margin: 0 auto 12px; }
.market-chat-welcome h3 { margin: 0 0 8px; color: var(--tv-text-1); font-size: 15px; }
.market-chat-welcome p { margin: 0; font-size: 12px; line-height: 1.65; }
.market-chat-message { margin-bottom: 20px; }
.market-chat-message.user { display: flex; justify-content: flex-end; }
.market-chat-message.user > p {
  max-width: 84%;
  margin: 0;
  padding: 10px 13px;
  border-radius: 14px 14px 4px 14px;
  background: var(--tv-surface-hover);
  color: var(--tv-text-1);
  font-size: 12px;
  line-height: 1.55;
  white-space: pre-wrap;
}
.market-chat-message.assistant { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 10px; }
.market-chat-answer { min-width: 0; }
.market-chat-answer > p { margin: 10px 0 0; color: var(--tv-text-2); font-size: 12px; line-height: 1.7; white-space: pre-wrap; }
.market-chat-decision { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.market-chat-decision > span { height: 27px; display: inline-flex; align-items: center; gap: 6px; padding: 0 9px; border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-2); font-size: 11px; font-weight: 600; }
.market-chat-decision > span.buy { color: var(--tv-green); }
.market-chat-decision > span.sell { color: var(--tv-red); }
.market-chat-decision > b { color: var(--tv-text-1); font: 600 13px ui-monospace, Consolas; }
.market-chat-prices { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; margin-top: 10px; }
.market-chat-prices > div { min-width: 0; padding: 8px; border-radius: 5px; background: var(--tv-surface-2); }
.market-chat-prices span { display: block; margin-bottom: 5px; color: var(--tv-text-3); font-size: 9px; }
.market-chat-prices b { display: block; overflow: hidden; color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas; text-overflow: ellipsis; }
.market-chat-levels { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 10px; }
.market-chat-levels span { padding: 4px 7px; border-radius: 4px; background: #202020; color: var(--tv-text-2); font: 10px ui-monospace, Consolas; }
.market-chat-structure-summary { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 10px; }
.market-chat-structure-summary > span { padding: 5px 8px; border-radius: 5px; background: #202020; color: var(--tv-text-2); font-size: 10px; }
.market-chat-structure-summary > small { flex: 1 0 100%; margin-top: 2px; color: var(--tv-text-3); font-size: 9px; line-height: 1.45; }
.market-chat-details { margin-top: 10px; }
.market-chat-details summary { color: var(--tv-text-3); font-size: 10px; cursor: pointer; }
.market-chat-details ul { margin: 8px 0 0; padding-left: 18px; color: var(--tv-text-2); font-size: 11px; line-height: 1.6; }
.market-chat-meta { display: block; margin-top: 9px; color: var(--tv-text-3); font-size: 9px; }
.market-chat-message.error .market-chat-answer > p { color: #ff7b86; }
.market-chat-typing { display: inline-flex; align-items: center; gap: 4px; height: 28px; }
.market-chat-typing i { width: 5px; height: 5px; border-radius: 50%; background: var(--tv-text-3); animation: market-chat-pulse .9s infinite alternate; }
.market-chat-typing i:nth-child(2) { animation-delay: .18s; }
.market-chat-typing i:nth-child(3) { animation-delay: .36s; }
@keyframes market-chat-pulse { to { opacity: .25; transform: translateY(-2px); } }
.market-chat-composer {
  margin: 0 12px 12px;
  padding: 9px 10px 8px 13px;
  border-radius: 18px;
  background: var(--tv-surface-2);
  box-shadow: 0 4px 18px rgba(0,0,0,.28);
}
.market-chat-composer textarea {
  width: 100%;
  min-height: 26px;
  max-height: 110px;
  resize: none;
  overflow-y: auto;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--tv-text-1);
  font: 12px/1.5 inherit;
}
.market-chat-composer > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.market-chat-composer small { color: var(--tv-text-3); font-size: 9px; }
.market-chat-composer button {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background: #f1f1f1;
  color: #111;
  font-size: 17px;
  cursor: pointer;
}
.market-chat-composer button:disabled { background: #555; color: #222; cursor: wait; }
.market-chat-history {
  position: absolute;
  z-index: 18;
  inset: 60px 0 0;
  display: grid;
  grid-template-rows: 58px 42px minmax(0, 1fr);
  background: var(--tv-canvas);
  box-shadow: -12px 0 24px rgba(0,0,0,.2);
}
.market-chat-history[hidden] { display: none; }
.market-chat-history-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 14px;
}
.market-chat-history-head h3 { margin: 0 0 3px; color: var(--tv-text-1); font-size: 15px; font-weight: 650; }
.market-chat-history-head small { display: block; color: var(--tv-text-3); font-size: 10px; }
.market-chat-history-head .panel-close-button {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  cursor: pointer;
}
.market-chat-history-head .panel-close-button:hover { background: var(--tv-surface-hover); }
.market-chat-history-head .panel-close-button img { width: 16px; height: 16px; filter: invert(1); opacity: .72; }
.market-chat-history-filters { display: flex; align-items: center; gap: 5px; padding: 4px 14px 6px; }
.market-chat-history-filters button {
  height: 30px;
  padding: 0 12px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--tv-text-2);
  font: 600 11px/1 inherit;
  cursor: pointer;
}
.market-chat-history-filters button:hover { background: var(--tv-surface-2); color: var(--tv-text-1); }
.market-chat-history-filters button.active { background: var(--tv-surface-hover); color: #fff; }
.market-chat-history-list { min-height: 0; overflow: auto; padding: 6px 8px 14px; scrollbar-gutter: stable; }
.market-chat-history-item {
  width: 100%;
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) 28px;
  align-items: start;
  gap: 9px;
  padding: 10px 8px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: inherit;
  text-align: left;
}
.market-chat-history-item:hover,
.market-chat-history-item.active { background: var(--tv-surface-2); }
.market-chat-history-item > i { width: 28px; height: 28px; display: grid; place-items: center; overflow: hidden; border-radius: 50%; }
.market-chat-history-item > i img { width: 100%; height: 100%; object-fit: contain; }
.market-chat-history-copy { min-width: 0; cursor: pointer; }
.market-chat-history-copy > span { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.market-chat-history-copy b { overflow: hidden; color: var(--tv-text-1); font-size: 12px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }
.market-chat-history-copy time { flex: 0 0 auto; color: var(--tv-text-3); font-size: 9px; }
.market-chat-history-copy p { overflow: hidden; margin: 5px 0 0; color: var(--tv-text-3); font-size: 10px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.market-chat-history-copy small { display: block; margin-top: 5px; color: var(--tv-text-3); font-size: 9px; }
.market-chat-history-delete { width: 28px; height: 28px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; color: var(--tv-text-3); font-size: 17px; cursor: pointer; opacity: 0; }
.market-chat-history-item:hover .market-chat-history-delete { opacity: 1; }
.market-chat-history-delete:hover { background: rgba(242,54,69,.12); color: var(--tv-red); }
.market-chat-history-empty { padding: 60px 20px; color: var(--tv-text-3); font-size: 11px; line-height: 1.7; text-align: center; }

/* Indicator expansion, region analysis and shared top-left grid baseline. */
.topbar { padding-inline: 0; }
.brand {
  width: 52px;
  min-width: 52px;
  flex: 0 0 52px;
  margin: 0;
  padding: 0;
  justify-content: center;
  border-right: 1px solid #202228;
}
.brand-mark { transform: skew(-13deg) scale(.66); }
.drawing-toolbar { width: 52px; box-sizing: border-box; }
.region-tool img,
.drawing-toolbar > .tool > img {
  width: 19px;
  height: 19px;
  display: block;
  margin: auto;
  filter: invert(1);
  opacity: .72;
}
.region-tool:hover img,
.region-tool.active img { opacity: 1; }
#marketCanvas.region-ready { cursor: crosshair; }
#marketCanvas.region-selecting { cursor: crosshair; }
#marketCanvas.signal-plan-hover, #marketCanvas.signal-plan-dragging { cursor: ns-resize; }
.market-chat-region {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
  margin-top: 10px;
}
.market-chat-region > span {
  min-width: 0;
  padding: 8px;
  border-radius: 5px;
  background: var(--tv-surface-2);
}
.market-chat-region small {
  display: block;
  margin-bottom: 5px;
  color: var(--tv-text-3);
  font-size: 9px;
}
.market-chat-region b {
  display: block;
  overflow: hidden;
  color: var(--tv-text-1);
  font: 600 10px ui-monospace, Consolas;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.market-chat-region b.bullish { color: var(--tv-green); }
.market-chat-region b.bearish { color: var(--tv-red); }
.region-analysis-confirm {
  position: absolute;
  z-index: 9;
  width: 244px;
  padding: 12px;
  border: 1px solid #343741;
  border-radius: 8px;
  background: #1f1f1f;
  box-shadow: 0 12px 32px rgba(0,0,0,.48);
}
.region-analysis-confirm[hidden] { display: none; }
.region-analysis-confirm p { margin: 0 0 10px; color: var(--tv-text-1); font-size: 12px; font-weight: 600; }
.region-analysis-confirm > div { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.region-analysis-confirm button { height: 32px; border-radius: 5px; font-size: 12px; cursor: pointer; }

/* Align the top action boundary with the 360px right workspace and remove the
   redundant separator immediately before the Indicators entity button. */
.topbar-actions {
  width: max(360px, 24vw);
  flex: 0 0 max(360px, 24vw);
  box-sizing: border-box;
}
.chart-toolbar .top-actions {
  padding-left: 0;
  border-left: 0;
}
@media (max-width: 1260px) {
  .topbar-actions { width: 350px; flex-basis: 350px; }
}
@media (min-width: 1180px) {
  body:has(.market-chat-panel.active) .topbar-actions {
    width: max(460px, 34vw);
    flex-basis: max(460px, 34vw);
  }
}

.indicator-catalog .catalog-row.added {
  background: #172344;
  color: #f1f3f7;
  box-shadow: none;
}
.indicator-catalog .catalog-row.added:hover { background: #1d2d55; }
.indicator-catalog .catalog-row.added b { color: #f1f3f7; }
.indicator-catalog .catalog-row.added small { color: #b4bed3; }
.indicator-catalog .catalog-row.added em,
.indicator-catalog .catalog-row.added > i { display: none; }

/* Structure visibility, MT5-style indicator settings and collapsible right rail. */
.workspace.right-panel-collapsed {
  grid-template-columns: 52px minmax(0, 1fr) 52px !important;
}
.workspace.right-panel-collapsed .right-panel {
  grid-column: 3;
  grid-template-columns: 0 52px;
  width: 52px;
  min-width: 52px;
  justify-self: end;
  overflow: visible;
}
.workspace.right-panel-collapsed .right-panel > .panel-view { display: none; }
.workspace.right-panel-collapsed .right-panel > .panel-tabs {
  grid-column: 2;
  width: 52px;
  min-width: 52px;
  justify-self: end;
}

.chart-display-mode {
  height: 30px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px;
  border-radius: 6px;
  background: var(--tv-surface-2);
}
.chart-display-mode button {
  min-width: 42px;
  height: 26px;
  padding: 0 9px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--tv-text-3);
  font-size: 11px;
  font-weight: 600;
  line-height: 26px;
  cursor: pointer;
}
.chart-display-mode button:hover { background: var(--tv-surface-hover); color: var(--tv-text-1); }
.chart-display-mode button.active { background: var(--tv-selected); color: #fff; }

.chart-annotation-control { position: relative; }
.chart-annotation-entry { min-width: 216px; }
.chart-annotation-entry > i { width: 14px; height: 14px; display: grid; place-items: center; }
.chart-annotation-entry > i img { width: 12px; height: 12px; filter: invert(1); opacity: .62; }
.chart-annotation-entry[aria-expanded="true"] > i { transform: rotate(180deg); }
@media (max-width: 1260px) {
  .chart-annotation-entry { min-width: 132px; }
  .chart-annotation-entry > small { display: none; }
  .chart-display-mode button { min-width: 38px; padding-inline: 6px; }
  #indicatorButton { min-width: 68px; padding-inline: 8px; }
}
.chart-annotation-menu {
  position: absolute;
  z-index: 40;
  top: 38px;
  right: 0;
  width: 390px;
  max-height: min(720px, calc(100vh - 72px));
  overflow-x: hidden;
  overflow-y: auto;
  padding: 8px;
  border-radius: 8px;
  background: #1f1f1f;
  box-shadow: 0 16px 44px rgba(0,0,0,.5);
}
.chart-annotation-menu[hidden] { display: none; }

/* AI trading center: analysis / monitoring / submitted-order workspaces. */
.model-center-tabs {
  position: sticky;
  z-index: 5;
  top: 60px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin: 0 -14px 14px;
  padding: 8px 14px;
  background: var(--tv-canvas);
  box-shadow: 0 8px 12px rgba(0, 0, 0, .18);
}
.model-center-tabs button {
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 0;
  border-radius: 5px;
  background: var(--tv-surface-2);
  color: var(--tv-text-2);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.model-center-tabs button:hover { background: var(--tv-surface-hover); color: var(--tv-text-1); }
.model-center-tabs button.active { background: var(--tv-text-1); color: var(--tv-canvas); }
.model-center-tabs button span {
  min-width: 18px;
  height: 18px;
  display: inline-grid;
  place-items: center;
  padding: 0 5px;
  border-radius: 9px;
  background: rgba(255, 255, 255, .09);
  color: inherit;
  font: 600 10px ui-monospace, Consolas;
}
.model-center-tabs button.active span { background: rgba(0, 0, 0, .12); }
.model-center-view[hidden] { display: none !important; }
.model-center-view.active { display: block; }
.model-order-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin-bottom: 12px;
  padding: 10px;
  border-radius: 6px;
  background: var(--tv-surface-2);
}
.model-order-summary > span { min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 3px; }
.model-order-summary b { color: var(--tv-text-1); font: 600 15px ui-monospace, Consolas; }
.model-order-summary small { color: var(--tv-text-3); font-size: 10px; }
.model-order-results { display: grid; gap: 8px; }
.model-order-card { overflow: hidden; border-radius: 6px; background: var(--tv-surface-2); }
.model-order-card > summary {
  min-height: 64px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto 14px;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  list-style: none;
  cursor: pointer;
}
.model-order-card > summary::-webkit-details-marker { display: none; }
.model-order-card > summary:hover { background: var(--tv-surface-hover); }
.model-order-symbol { min-width: 0; display: flex; align-items: center; gap: 8px; }
.model-order-symbol > i { width: 18px; height: 18px; flex: 0 0 18px; display: grid; place-items: center; }
.model-order-symbol > i img { width: 18px; height: 18px; }
.model-order-symbol > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.model-order-symbol b { overflow: hidden; color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas; text-overflow: ellipsis; white-space: nowrap; }
.model-order-symbol small,
.model-order-side small,
.model-order-state small { color: var(--tv-text-3); font-size: 9px; font-weight: 400; white-space: nowrap; }
.model-order-side,
.model-order-state { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; font-size: 11px; font-weight: 600; }
.model-order-side.buy { color: var(--tv-green); }
.model-order-side.sell { color: var(--tv-red); }
.model-order-state.tracking { color: var(--tv-amber); }
.model-order-state.closed { color: var(--tv-text-2); }
.model-order-chevron { width: 7px; height: 7px; border-right: 1.5px solid var(--tv-text-3); border-bottom: 1.5px solid var(--tv-text-3); transform: rotate(45deg) translateY(-2px); transition: transform .16s ease; }
.model-order-card[open] .model-order-chevron { transform: rotate(225deg) translate(-1px, -1px); }
.model-order-analysis { display: grid; gap: 8px; padding: 0 10px 10px; }
.model-order-analysis > section { padding: 10px; border-radius: 5px; background: #171717; }
.model-order-analysis h3 { margin: 0 0 9px; color: var(--tv-text-2); font-size: 11px; font-weight: 600; }
.model-order-conclusion > span { display: inline-flex; padding: 4px 7px; border-radius: 4px; font-size: 10px; font-weight: 600; }
.model-order-conclusion > span.buy { color: var(--tv-green); background: rgba(8, 153, 129, .12); }
.model-order-conclusion > span.sell { color: var(--tv-red); background: rgba(242, 54, 69, .12); }
.model-order-conclusion p { margin: 8px 0 0; color: var(--tv-text-1); font-size: 12px; line-height: 1.55; }
.model-order-price-grid,
.model-order-outcome { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.model-order-price-grid > span,
.model-order-outcome > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.model-order-price-grid small,
.model-order-outcome small { color: var(--tv-text-3); font-size: 9px; }
.model-order-price-grid b,
.model-order-outcome b { overflow: hidden; color: var(--tv-text-1); font: 600 11px ui-monospace, Consolas; text-overflow: ellipsis; white-space: nowrap; }
.model-order-outcome b.positive { color: var(--tv-green); }
.model-order-outcome b.negative { color: var(--tv-red); }
.model-order-timeframes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
.model-order-timeframes > span { height: 30px; display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 5px; padding: 0 7px; border-radius: 4px; background: var(--tv-surface-2); }
.model-order-timeframes b { color: var(--tv-text-1); font-size: 10px; }
.model-order-timeframes em { color: var(--tv-text-2); font-size: 10px; font-style: normal; }
.model-order-timeframes small { color: var(--tv-text-3); font: 9px ui-monospace, Consolas; }
.model-order-timeframes .buy em { color: var(--tv-green); }
.model-order-timeframes .sell em { color: var(--tv-red); }
.model-timeframe-decisions { display: grid; gap: 4px; margin: 8px 0; }
.model-timeframe-decisions > span { min-height: 34px; display: grid; grid-template-columns: 28px 34px 34px minmax(0, 1fr); align-items: center; gap: 5px; padding: 4px 7px; border-radius: 4px; background: var(--tv-surface-2); }
.model-timeframe-decisions > span.preferred { background: var(--tv-surface-hover); }
.model-timeframe-decisions b { color: var(--tv-text-1); font-size: 10px; }
.model-timeframe-decisions em { color: var(--tv-text-2); font-size: 10px; font-style: normal; }
.model-timeframe-decisions .buy em { color: var(--tv-green); }
.model-timeframe-decisions .sell em { color: var(--tv-red); }
.model-timeframe-decisions strong { color: var(--tv-text-2); font: 9px ui-monospace, Consolas; text-align: right; }
.model-timeframe-decisions small { min-width: 0; overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.model-order-matches,
.model-order-protection { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
.model-order-matches li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 8px; }
.model-order-matches li span { color: var(--tv-text-2); font-size: 10px; }
.model-order-matches li b { color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas; }
.model-order-matches li small { grid-column: 1 / -1; overflow: hidden; color: var(--tv-text-3); font: 9px ui-monospace, Consolas; text-overflow: ellipsis; white-space: nowrap; }
.model-order-protection { margin-top: 10px; }
.model-order-protection li { display: grid; grid-template-columns: 5px minmax(0, 1fr) auto; align-items: center; gap: 7px; }
.model-order-protection li > i { width: 5px; height: 5px; border-radius: 50%; background: var(--tv-green); }
.model-order-protection li > span,
.model-order-protection li > strong { display: flex; flex-direction: column; gap: 2px; }
.model-order-protection li b { color: var(--tv-text-2); font-size: 10px; }
.model-order-protection li strong { align-items: flex-end; color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas; }
.model-order-protection li small { color: var(--tv-text-3); font-size: 9px; font-weight: 400; }
.model-order-no-events { margin: 0; color: var(--tv-text-3); font-size: 10px; }
.model-order-empty { margin-top: 20px; line-height: 1.65; }
.chart-annotation-menu header { padding: 8px 9px 10px; }
.chart-annotation-menu header b { display: block; color: var(--tv-text-1); font-size: 13px; }
.chart-annotation-menu header small { display: block; margin-top: 4px; color: var(--tv-text-3); font-size: 10px; }
.chart-annotation-menu label { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 9px; border-radius: 6px; cursor: pointer; }
.chart-annotation-menu label:hover { background: var(--tv-surface-hover); }
.chart-annotation-menu label > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.chart-annotation-menu label b { color: var(--tv-text-1); font-size: 12px; font-weight: 600; }
.chart-annotation-menu label small { color: var(--tv-text-3); font-size: 10px; }
.chart-annotation-menu input { width: 16px; height: 16px; accent-color: var(--tv-blue); }
.composite-point-decision { display: grid; gap: 8px; margin: 7px 3px 3px; padding: 10px; border-radius: 7px; background: #171717; }
.composite-point-decision > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0; }
.composite-point-decision > header b { color: var(--tv-text-1); font-size: 12px; }
.composite-point-decision > header small { color: var(--tv-text-3); font: 9px ui-monospace, Consolas; text-align: right; }
.composite-point-decision-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
.composite-point-decision-grid > span { min-width: 0; display: flex; flex-direction: column; gap: 4px; padding: 7px; border-radius: 5px; background: #242424; }
.composite-point-decision-grid small { color: var(--tv-text-3); font-size: 9px; }
.composite-point-decision-grid b { overflow: hidden; color: var(--tv-text-1); font-size: 10px; font-weight: 600; line-height: 1.35; text-overflow: ellipsis; }
.composite-point-decision-grid [data-action="allowed"] b { color: var(--tv-green); }
.composite-point-decision-grid [data-action="avoid"] b { color: var(--tv-red); }
.composite-point-decision-grid [data-action="watch"] b { color: var(--tv-amber); }
.composite-point-decision > p { margin: 0; color: var(--tv-text-2); font-size: 10px; line-height: 1.55; }
.composite-point-decision > small { color: var(--tv-text-3); font: 9px/1.5 ui-monospace, Consolas; }
.composite-point-decision[data-status="disabled"] { opacity: .58; }
.composite-point-decision[data-status="ready"] { box-shadow: inset 2px 0 0 var(--tv-blue); }

.indicator-settings-actions { display: grid; grid-template-columns: auto 1fr auto auto; gap: 8px; }
.indicator-level-toolbar { min-height: 54px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.indicator-level-toolbar > div { display: flex; flex-direction: column; gap: 3px; }
.indicator-level-toolbar b { color: var(--tv-text-1); font-size: 13px; }
.indicator-level-toolbar small { color: var(--tv-text-3); font-size: 10px; }
.indicator-level-toolbar button { height: 32px; padding: 0 16px; border: 0; border-radius: 5px; background: var(--tv-surface-hover); color: var(--tv-text-1); font-size: 12px; cursor: pointer; }
.indicator-level-list { display: flex; flex-direction: column; gap: 6px; }
.indicator-level-row { min-height: 52px; display: grid; grid-template-columns: minmax(110px,1fr) 92px 38px 82px 30px; align-items: center; gap: 8px; padding: 7px 9px; border-radius: 6px; background: var(--tv-surface-2); }
.indicator-level-row.builtin { grid-template-columns: minmax(110px,1fr) 92px 38px 82px; }
.indicator-level-row > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.indicator-level-row b { overflow: hidden; color: var(--tv-text-1); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.indicator-level-row small { color: var(--tv-text-3); font-size: 9px; }
.indicator-level-row input[type="number"], .indicator-level-row select { width: 100%; height: 32px; border: 0; border-radius: 5px; background: #151515; color: var(--tv-text-1); padding: 0 8px; }
.indicator-level-row input[type="color"] { width: 34px; height: 30px; padding: 2px; border: 0; border-radius: 5px; background: #151515; }
.indicator-level-row > button { width: 30px; height: 30px; border: 0; border-radius: 5px; background: transparent; color: var(--tv-text-3); font-size: 17px; cursor: pointer; }
.indicator-level-row > button:hover { background: rgba(242,54,69,.12); color: var(--tv-red); }
.indicator-visibility-row { min-height: 50px; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; padding: 0 11px; border-radius: 6px; background: var(--tv-surface-2); }
.indicator-visibility-row > span { display: flex; flex-direction: column; gap: 3px; }
.indicator-visibility-row b { color: var(--tv-text-1); font-size: 12px; }
.indicator-visibility-row small { color: var(--tv-text-3); font-size: 10px; }
.indicator-visibility-row input { width: 17px; height: 17px; accent-color: var(--tv-blue); }

.market-chat-summary-section { margin-top: 12px; padding: 11px; border-radius: 7px; background: #191919; }
.market-chat-summary-section > h4 { margin: 0 0 9px; color: var(--tv-text-3); font-size: 10px; font-weight: 600; letter-spacing: .4px; }
.market-chat-summary-section .market-chat-prices, .market-chat-summary-section .market-chat-structure-summary { margin-top: 0; }
.market-chat-timeframes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; }
.market-chat-timeframes > span { min-width: 0; display: grid; grid-template-columns: 1fr auto; align-content: start; gap: 3px 5px; padding: 7px; border-radius: 5px; background: var(--tv-surface-2); }
.market-chat-timeframes b { color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas; }
.market-chat-timeframes em { color: var(--tv-text-3); font-size: 10px; font-style: normal; }
.market-chat-timeframes small { grid-column: 1 / -1; color: var(--tv-text-3); font-size: 9px; }
.market-chat-timeframes p { grid-column: 1 / -1; margin: 3px 0 0; color: var(--tv-text-3); font-size: 9px; line-height: 1.45; }
.market-chat-timeframes .bullish em { color: var(--tv-green); }
.market-chat-timeframes .bearish em { color: var(--tv-red); }
.market-chat-conclusion > p { margin: 0; color: var(--tv-text-2); font-size: 12px; line-height: 1.7; white-space: pre-wrap; }
.market-chat-details h5 { margin: 10px 0 0; color: var(--tv-text-3); font-size: 10px; }
.training-feature-coverage { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.training-feature-coverage span { padding: 4px 7px; border-radius: 4px; background: #292929; color: var(--tv-text-2); font-size: 9px; }

/* TradingView-aligned indicator settings: inputs / style / visibility. */
.indicator-settings {
  width: min(600px, calc(100vw - 32px));
  max-height: min(720px, calc(100vh - 32px));
  overflow: hidden;
  border: 0;
  border-radius: 8px;
  background: #181818;
  color: var(--tv-text-1);
  box-shadow: 0 24px 72px rgba(0, 0, 0, .62);
}
.indicator-settings form { display: grid; grid-template-rows: 60px 46px minmax(300px, 1fr) 64px; max-height: min(720px, calc(100vh - 32px)); }
.indicator-settings .dialog-head { align-items: center; padding: 0 20px; background: #181818; }
.indicator-settings-head > div { gap: 12px; }
.indicator-settings-icon { width: 32px; height: 32px; flex: 0 0 32px; background: var(--tv-surface-hover); }
.indicator-settings-head h2 { color: var(--tv-text-1); font-size: 16px; line-height: 20px; }
.indicator-settings-head p { margin-top: 3px; color: var(--tv-text-3); font-size: 10px; line-height: 14px; }
.indicator-settings .dialog-head > button { width: 32px; height: 32px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; }
.indicator-settings .dialog-head > button:hover { background: var(--tv-surface-hover); }
.indicator-settings .dialog-head > button img { width: 18px; height: 18px; filter: invert(1); opacity: .7; }
.indicator-settings .settings-tabs { height: 46px; align-items: stretch; gap: 24px; padding: 0 20px; background: #181818; box-shadow: 0 1px 0 rgba(255, 255, 255, .06); }
.indicator-settings .settings-tabs button { min-width: 58px; height: 46px; padding: 0 2px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--tv-text-2); font-size: 13px; }
.indicator-settings .settings-tabs button:hover { color: var(--tv-text-1); }
.indicator-settings .settings-tabs button.active { border-bottom-color: var(--tv-blue); color: #fff; }
.indicator-settings .settings-pane { min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding: 18px 20px; background: var(--tv-canvas); scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: #4a4a4a transparent; }
.indicator-settings .setting-row { min-height: 52px; display: grid; grid-template-columns: minmax(0, 1fr) 180px; align-items: center; gap: 16px; padding: 8px 12px; border: 0; border-radius: 6px; background: var(--tv-surface-2); }
.indicator-settings .setting-row > span { color: var(--tv-text-1); font-size: 12px; font-weight: 500; }
.indicator-settings .setting-row small { display: none; }
.indicator-settings .setting-row input[type="number"] { width: 100%; height: 36px; padding: 0 11px; border: 0; border-radius: 5px; outline: 0; background: #151515; color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas; text-align: right; }
.indicator-settings .setting-row input[type="color"] { justify-self: end; width: 44px; height: 32px; padding: 3px; border: 0; border-radius: 5px; background: #151515; }
.indicator-settings .setting-row:focus-within { background: var(--tv-surface-hover); }
.indicator-settings .setting-row input:focus,
.indicator-settings .ema-period-row input:focus,
.indicator-settings .ema-style-row select:focus { box-shadow: inset 0 0 0 1px var(--tv-blue); }
.indicator-settings .indicator-visibility-row { min-height: 52px; margin: 0; padding: 0 12px; border: 0; border-radius: 6px; background: var(--tv-surface-2); }
.indicator-settings .indicator-timeframe-field { margin: 0; padding: 13px 12px; border: 0; border-radius: 6px; background: var(--tv-surface-2); }
.indicator-settings .indicator-timeframe-field legend { padding: 0 4px; color: var(--tv-text-1); font-size: 12px; }
.indicator-settings .indicator-timeframe-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.indicator-settings .timeframe-check span { height: 34px; border: 0; border-radius: 5px; background: #151515; color: var(--tv-text-2); font-size: 11px; }
.indicator-settings .timeframe-check input:checked + span { border: 0; background: var(--tv-selected); color: #fff; }
.indicator-settings .indicator-timeframe-field p { margin: 9px 0 0; color: var(--tv-text-3); font-size: 10px; line-height: 15px; }
.indicator-settings .dialog-actions { min-height: 64px; align-items: center; gap: 8px; padding: 12px 20px; background: #181818; box-shadow: 0 -1px 0 rgba(255, 255, 255, .06); }
.indicator-settings .dialog-actions button { height: 36px; min-width: 78px; border: 0; border-radius: 5px; font-size: 12px; }
.indicator-settings .dialog-actions .secondary-button { background: var(--tv-surface-2); color: var(--tv-text-1); }
.indicator-settings .dialog-actions .secondary-button:hover { background: var(--tv-surface-hover); }
.indicator-settings .dialog-actions .primary-action { background: #f1f1f1; color: #111; }
.ema-period-toolbar { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ema-period-toolbar > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.ema-period-toolbar b { color: var(--tv-text-1); font-size: 13px; }
.ema-period-toolbar small { color: var(--tv-text-3); font-size: 10px; }
.ema-period-toolbar button { height: 32px; padding: 0 13px; border: 0; border-radius: 5px; background: var(--tv-surface-hover); color: var(--tv-text-1); font-size: 12px; cursor: pointer; }
.ema-period-toolbar button:hover { background: var(--tv-selected); }
.ema-period-list { display: grid; gap: 7px; }
.ema-period-row { min-height: 54px; display: grid; grid-template-columns: minmax(0, 1fr) 32px; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 6px; background: var(--tv-surface-2); }
.ema-period-row > label { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.ema-period-row > label > span { color: var(--tv-text-3); font-size: 9px; }
.ema-period-row input[type="number"],
.ema-period-row select { width: 100%; height: 34px; padding: 0 9px; border: 0; border-radius: 5px; outline: 0; background: #151515; color: var(--tv-text-1); font: 600 11px ui-monospace, Consolas; }
.ema-period-row input[type="color"] { width: 100%; height: 34px; padding: 3px; border: 0; border-radius: 5px; background: #151515; }
.ema-period-row > button { width: 32px; height: 34px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; cursor: pointer; }
.ema-period-row > button:hover { background: rgba(242, 54, 69, .12); }
.ema-period-row > button:disabled { opacity: .25; cursor: default; }
.ema-period-row > button img { width: 15px; height: 15px; filter: invert(1); opacity: .65; }
.indicator-style-heading { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.indicator-style-heading b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.indicator-style-heading small { color: var(--tv-text-3); font-size: 10px; }
.ema-style-list { display: grid; gap: 7px; }
.ema-style-row { min-height: 52px; display: grid; grid-template-columns: minmax(112px, 1fr) 44px 86px 96px; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 6px; background: var(--tv-surface-2); }
.ema-style-row:focus-within { background: var(--tv-surface-hover); }
.ema-style-name { min-width: 0; display: flex; align-items: center; gap: 9px; }
.ema-style-name i { width: 20px; height: 3px; flex: 0 0 20px; border-radius: 2px; }
.ema-style-name b { overflow: hidden; color: var(--tv-text-1); font-size: 12px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.ema-style-row label { min-width: 0; }
.ema-style-row input[type="color"] { width: 44px; height: 34px; padding: 3px; border: 0; border-radius: 5px; background: #151515; cursor: pointer; }
.ema-style-row select { width: 100%; height: 34px; padding: 0 8px; border: 0; border-radius: 5px; outline: 0; background: #151515; color: var(--tv-text-1); font-size: 11px; }
.settings-empty-state { min-height: 170px; display: grid; place-content: center; gap: 7px; text-align: center; }
.settings-empty-state b { color: var(--tv-text-1); font-size: 13px; }
.settings-empty-state span { color: var(--tv-text-3); font-size: 11px; }

/* AI training audit: compact quality summary and per-sample learning state. */
.training-quality-panel { margin: 12px 14px 4px; padding: 12px; border-radius: 6px; background: var(--tv-surface-2); }
.training-quality-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.training-quality-panel > header > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.training-quality-panel > header b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.training-quality-panel > header small { color: var(--tv-text-3); font-size: 10px; }
.training-quality-panel > header > span { flex: 0 0 auto; padding: 4px 7px; border-radius: 4px; background: var(--tv-surface-hover); color: var(--tv-text-2); font-size: 10px; }
.training-quality-panel > header > span[data-grade="high"],
.training-quality-panel > header > span[data-grade="good"] { color: #5bc7b5; }
.training-quality-score { display: flex; align-items: center; gap: 10px; margin-top: 12px; }
.training-quality-score > strong { min-width: 58px; color: var(--tv-text-1); font: 600 24px/1 ui-monospace, Consolas, monospace; }
.training-quality-score > span { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.training-quality-score b { color: var(--tv-text-1); font-size: 11px; font-weight: 600; }
.training-quality-score small { overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.training-quality-meter { height: 3px; overflow: hidden; margin-top: 10px; border-radius: 2px; background: #303030; }
.training-quality-meter i { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--tv-blue); transition: width .2s ease; }
.training-quality-panel > dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 8px; margin: 12px 0 0; }
.training-quality-panel > dl > div { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.training-quality-panel dt { overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.training-quality-panel dd { margin: 0; color: var(--tv-text-1); font: 600 11px ui-monospace, Consolas, monospace; }
.training-quality-panel > p { margin: 11px 0 0; color: var(--tv-text-3); font-size: 10px; line-height: 1.45; }
.training-auto-feedback { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 8px 14px 4px; padding: 9px 11px; border-radius: 6px; background: var(--tv-surface-2); }
.training-auto-feedback > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.training-auto-feedback b { color: var(--tv-text-1); font-size: 11px; font-weight: 600; }
.training-auto-feedback small { color: var(--tv-text-3); font-size: 9px; line-height: 14px; }
.training-auto-feedback > span { flex: 0 0 auto; max-width: 110px; color: var(--tv-green); font-size: 9px; text-align: right; line-height: 14px; }
.training-auto-feedback > span[data-error="true"] { color: var(--tv-red); }
.training-timeframe-needs { margin: 8px 14px 4px; }
.training-timeframe-needs > header { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.training-timeframe-needs > header > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.training-timeframe-needs > header b { color: var(--tv-text-1); font-size: 13px; font-weight: 600; }
.training-timeframe-needs > header small { color: var(--tv-text-3); font-size: 10px; }
.training-timeframe-needs > header > span { max-width: 150px; overflow: hidden; color: var(--tv-amber); font-size: 10px; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.training-timeframe-needs-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.training-timeframe-need { min-width: 0; min-height: 48px; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 5px 8px; padding: 7px 9px; border-radius: 5px; background: var(--tv-surface-2); }
.training-timeframe-need > b { color: var(--tv-text-1); font: 600 12px ui-monospace, Consolas, monospace; }
.training-timeframe-need > span { display: flex; justify-content: flex-end; gap: 6px; color: var(--tv-text-2); font: 10px ui-monospace, Consolas, monospace; }
.training-timeframe-need > span i { font-style: normal; }
.training-timeframe-need > small { grid-column: 1 / -1; overflow: hidden; color: var(--tv-amber); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.training-timeframe-need[data-status="complete"] > small { color: var(--tv-green); }
.training-timeframe-need[data-status="complete"] { background: rgba(8, 153, 129, .08); }
.training-state-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 9px; }
.training-state-row > span { padding: 3px 6px; border-radius: 4px; background: rgba(8, 153, 129, .12); color: #59c6b4; font-size: 9px; font-weight: 600; }
.training-state-row > span[data-status="incomplete"] { background: rgba(240, 185, 11, .12); color: var(--tv-amber); }
.training-state-row > span[data-status="queued"] { background: rgba(41,98,255,.12); color: #7ea1ff; }
.training-state-row > span[data-status="extracting"] { background: rgba(156,77,204,.14); color: #c49ae0; }
.training-state-row > span[data-status="failed"] { background: rgba(242, 54, 69, .12); color: var(--tv-red); }
.training-state-row > small { overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.training-sample-quality { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-top: 8px; padding: 8px; border-radius: 5px; background: var(--tv-canvas); }
.training-sample-quality > span { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.training-sample-quality small { overflow: hidden; color: var(--tv-text-3); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.training-sample-quality b { color: var(--tv-text-1); font: 600 11px ui-monospace, Consolas, monospace; }
.training-validation-state { margin-top: 9px; color: var(--tv-text-3); font-size: 9px; line-height: 1.45; }
.training-evidence-result { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.training-evidence-result span { min-height: 21px; display: inline-flex; align-items: center; padding: 0 6px; border-radius: 4px; background: var(--tv-canvas); color: var(--tv-text-3); font-size: 9px; }
.training-evidence-result span[data-verdict="validated"] { color: var(--tv-green); background: rgba(8,153,129,.1); }
.training-evidence-result span[data-verdict="failed"], .training-evidence-result span[data-verdict="conflicting"] { color: var(--tv-red); background: rgba(242,54,69,.09); }
.training-forward-result { display: flex; flex-wrap: wrap; gap: 5px 10px; margin-top: 7px; color: var(--tv-text-3); font: 9px/14px ui-monospace, Consolas, monospace; }
.training-sequence-detail { margin-top: 8px; border-radius: 5px; background: var(--tv-canvas); }
.training-sequence-detail > summary { min-height: 32px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 8px; color: var(--tv-text-2); font-size: 10px; cursor: pointer; list-style: none; }
.training-sequence-detail > summary::-webkit-details-marker { display: none; }
.training-sequence-detail > summary small { color: var(--tv-text-3); font: 9px ui-monospace, Consolas; }
.training-sequence-body { display: grid; gap: 7px; padding: 0 8px 8px; }
.training-sequence-body > section { display: grid; gap: 6px; }
.training-sequence-body > section > b { color: var(--tv-text-2); font-size: 10px; }
.training-sequence-phase { display: grid; grid-template-columns: 66px minmax(0, 1fr); gap: 5px 8px; padding: 7px; border-radius: 4px; background: var(--tv-surface-2); }
.training-sequence-phase > b { color: var(--tv-text-1); font-size: 10px; }
.training-sequence-phase > span { color: var(--tv-text-2); font: 9px/1.45 ui-monospace, Consolas; }
.training-sequence-events { color: var(--tv-text-3); font-size: 9px; line-height: 1.55; }
.training-point-forecast { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 8px; }
.training-point-forecast > span { display: flex; flex-direction: column; gap: 3px; padding: 6px; border-radius: 4px; background: var(--tv-canvas); }
.training-point-forecast small { color: var(--tv-text-3); font-size: 9px; }
.training-point-forecast b { color: var(--tv-text-1); font-size: 9px; line-height: 1.4; }
.training-point-forecast [data-action="allowed"] b { color: var(--tv-green); }
.training-point-forecast [data-action="avoid"] b { color: var(--tv-red); }
.training-point-forecast [data-action="watch"] b { color: var(--tv-amber); }
.training-point-forecast-meta { grid-column: 1 / -1; margin: 1px 0 0; color: var(--tv-text-3); font-size: 9px; line-height: 1.55; }

/* Multi-timeframe judgement sits after the chart quote fields. */
.chart-heading { position: relative; z-index: 20; }
.chart-trend-control { position: relative; height: 31px; display: flex; align-items: center; margin-left: 7px; pointer-events: auto; }
.chart-trend-button { height: 31px; display: inline-grid; grid-template-columns: auto auto auto 14px; align-items: center; gap: 6px; padding: 0 9px; border: 0; border-radius: 5px; background: var(--tv-surface-2); color: var(--tv-text-2); cursor: pointer; white-space: nowrap; }
.chart-trend-button:hover, .chart-trend-button[aria-expanded="true"] { background: var(--tv-surface-hover); color: var(--tv-text-1); }
.chart-trend-button > span { color: var(--tv-text-3); font-size: 10px; }
.chart-trend-button > b { font-size: 11px; font-weight: 600; }
.chart-trend-button > b.bullish { color: var(--tv-green); }
.chart-trend-button > b.bearish { color: var(--tv-red); }
.chart-trend-button > b.neutral { color: var(--tv-amber); }
.chart-trend-button > small { color: var(--tv-text-3); font-size: 9px; }
.chart-trend-button > img { width: 14px; height: 14px; filter: invert(1); opacity: .55; }
.timeframe-trend-popover { position: absolute; z-index: 60; top: calc(100% + 5px); left: 0; width: 460px; max-height: min(620px, calc(100vh - 170px)); overflow: hidden auto; padding: 0 12px 12px; border: 1px solid var(--tv-border); border-radius: 8px; background: var(--tv-surface-2); box-shadow: 0 12px 32px rgba(0,0,0,.48); }
.timeframe-trend-popover[hidden] { display: none; }
.timeframe-trend-popover > header { position: sticky; z-index: 1; top: 0; min-height: 56px; display: flex; align-items: center; justify-content: space-between; gap: 12px; background: var(--tv-surface-2); }
.timeframe-trend-popover > header > div { display: flex; flex-direction: column; gap: 3px; }
.timeframe-trend-popover > header b { color: var(--tv-text-1); font-size: 14px; font-weight: 600; }
.timeframe-trend-popover > header small { color: var(--tv-text-3); font-size: 10px; }
.timeframe-trend-popover > header button { width: 32px; height: 32px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; cursor: pointer; }
.timeframe-trend-popover > header button:hover { background: var(--tv-surface-hover); }
.timeframe-trend-popover > header button img { width: 18px; height: 18px; filter: invert(1); opacity: .72; }
.timeframe-trend-popover > .tf-cards { display: flex; flex-direction: column; align-items: stretch; gap: 6px; padding: 0; }
.timeframe-trend-popover .tf-card { width: auto; height: auto; padding: 10px; border-radius: 6px; background: var(--tv-canvas); }
.timeframe-trend-popover .tf-card > header { display: grid; grid-template-columns: minmax(0, 1fr) auto 42px; align-items: center; gap: 8px; }
.timeframe-trend-popover .tf-card > header b { color: var(--tv-text-1); font-size: 12px; font-weight: 600; }
.timeframe-trend-popover .tf-card > header span { color: var(--tv-text-2); font-size: 11px; }
.timeframe-trend-popover .tf-card.bullish > header span { color: var(--tv-green); }
.timeframe-trend-popover .tf-card.bearish > header span { color: var(--tv-red); }
.timeframe-trend-popover .tf-card > header em { color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas, monospace; text-align: right; }
.tf-card-meter { height: 2px; overflow: hidden; margin-top: 8px; border-radius: 1px; background: #303030; }
.tf-card-meter i { display: block; height: 100%; background: var(--tv-amber); }
.tf-card.bullish .tf-card-meter i { background: var(--tv-green); }
.tf-card.bearish .tf-card-meter i { background: var(--tv-red); }
.tf-structure-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin-top: 9px; }
.tf-level { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 8px; padding: 7px 8px; border-radius: 5px; background: var(--tv-surface-2); }
.tf-level small { color: var(--tv-text-3); font-size: 9px; }
.tf-level b { color: var(--tv-text-1); font: 600 10px ui-monospace, Consolas, monospace; text-align: right; }
.tf-level em { grid-column: 1 / -1; overflow: hidden; color: var(--tv-text-2); font-size: 9px; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.tf-level.support[data-state="testing"] em, .tf-level.support[data-state="holding"] em { color: var(--tv-green); }
.tf-level.resistance[data-state="testing"] em { color: var(--tv-amber); }
.tf-level[data-state="broken"] em { color: var(--tv-red); }
.tf-trend-lines { display: grid; gap: 4px; margin-top: 7px; }
.tf-point-forecast { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 7px; }
.tf-point-forecast > span { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 6px; padding: 7px 8px; border-radius: 5px; background: var(--tv-surface-2); }
.tf-point-forecast small { grid-column: 1 / -1; color: var(--tv-text-3); font-size: 9px; }
.tf-point-forecast b { overflow: hidden; color: var(--tv-text-1); font-size: 9px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.tf-point-forecast em { color: var(--tv-text-3); font: 9px ui-monospace, Consolas, monospace; font-style: normal; }
.tf-point-forecast [data-action="allowed"] b, .tf-point-forecast [data-action="allowed"] em { color: var(--tv-green); }
.tf-point-forecast [data-action="avoid"] b, .tf-point-forecast [data-action="avoid"] em { color: var(--tv-red); }
.tf-point-forecast [data-action="watch"] b, .tf-point-forecast [data-action="watch"] em { color: var(--tv-amber); }
.tf-point-forecast > p { grid-column: 1 / -1; margin: 0; color: var(--tv-text-3); font: 9px ui-monospace, Consolas, monospace; }
.tf-trend-lines > span { min-width: 0; display: grid; grid-template-columns: 12px minmax(0, 1fr) auto; align-items: center; gap: 6px; min-height: 22px; color: var(--tv-text-2); }
.tf-trend-lines i { width: 12px; height: 2px; border-radius: 1px; background: var(--tv-blue); }
.tf-trend-lines b { overflow: hidden; font-size: 9px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.tf-trend-lines em { color: var(--tv-text-3); font: 9px ui-monospace, Consolas, monospace; font-style: normal; white-space: nowrap; }
.tf-trend-lines > span[data-state="broken"] i { background: var(--tv-red); }
.tf-trend-lines.empty { color: var(--tv-text-3); font-size: 9px; }
.timeframe-trend-popover .tf-card > ul { margin: 8px 0 0; padding-left: 15px; color: var(--tv-text-2); font-size: 10px; line-height: 1.55; }
.timeframe-trend-popover > footer { margin-top: 10px; color: var(--tv-text-3); font-size: 9px; line-height: 1.45; }
@media (max-width: 1360px) {
  .chart-trend-button > span, .chart-trend-button > small { display: none; }
  .chart-trend-button { grid-template-columns: auto 14px; }
  .timeframe-trend-popover { left: -180px; }
}
.ema-source-row { min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 12px; border-radius: 6px; background: var(--tv-surface-2); }
.ema-source-row > span { display: flex; flex-direction: column; gap: 3px; }
.ema-source-row b { color: var(--tv-text-1); font-size: 11px; }
.ema-source-row small { color: var(--tv-text-3); font-size: 9px; }
.ema-source-row strong { color: var(--tv-text-2); font-size: 10px; font-weight: 500; }

/* Keep compact command-bar labels on one baseline. */
.topbar-trade-button,
.topbar-trade-button > span { white-space: nowrap; }
