/* ============================================================================
   MOEX Terminal — оформление. Тёмная и светлая темы, адаптивная сетка.
   ========================================================================== */

:root {
    --up: #26a69a;
    --down: #ef5350;
    --ma95: #f5a623;
    --hi7: #42a5f5;
    --lo7: #ab47bc;
    --accent: #42a5f5;
    --radius: 14px;
    --font: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Roboto, Arial, sans-serif;
    --mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;
}

/* ─────────────────────────── Тёмная тема (по умолчанию) ─────────────────────────── */
.theme-dark {
    --bg: #070b11;
    --bg-2: #0b121b;
    --card: #0e1620;
    --card-2: #121c28;
    --border: #1d2937;
    --border-soft: #172230;
    --text: #e8eef6;
    --text-2: #b9c6d4;
    --muted: #7f8d9c;
    --shadow: 0 18px 40px -22px rgba(0, 0, 0, 0.9);
    --hover: #16222f;
    color-scheme: dark;
}

/* ─────────────────────────── Светлая тема ─────────────────────────── */
.theme-light {
    --bg: #f2f5f9;
    --bg-2: #e9eef5;
    --card: #ffffff;
    --card-2: #f7fafd;
    --border: #d8e0ea;
    --border-soft: #e6ecf3;
    --text: #16202b;
    --text-2: #43536a;
    --muted: #6b7a8d;
    --shadow: 0 14px 34px -20px rgba(23, 43, 77, 0.35);
    --hover: #eef3f9;
    color-scheme: light;
}

* { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
    font-family: var(--font);
    font-size: 14px;
    -webkit-font-smoothing: antialiased;
}

body { background: #070b11; }

.app-shell {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background:
        radial-gradient(1100px 520px at 12% -10%, rgba(66, 165, 245, 0.09), transparent 65%),
        radial-gradient(900px 460px at 88% 0%, rgba(38, 166, 154, 0.08), transparent 60%),
        var(--bg);
    color: var(--text);
}

/* ─────────────────────────── Верхняя панель ─────────────────────────── */
.topbar {
    position: sticky;
    top: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 12px 22px;
    border-bottom: 1px solid var(--border);
    background: color-mix(in srgb, var(--card) 88%, transparent);
    backdrop-filter: blur(12px);
}

.brand { display: flex; align-items: center; gap: 11px; min-width: 260px; }
.brand-text { display: flex; flex-direction: column; line-height: 1.2; }
.brand-title { font-weight: 800; font-size: 16px; letter-spacing: 0.2px; }
.brand-sub { font-size: 11px; color: var(--muted); }

.main-nav { display: flex; gap: 6px; flex: 1; }
.nav-item {
    padding: 8px 14px;
    border-radius: 10px;
    color: var(--text-2);
    text-decoration: none;
    font-weight: 600;
    font-size: 13px;
    border: 1px solid transparent;
    transition: all .16s ease;
}
.nav-item:hover { background: var(--hover); color: var(--text); }
.nav-item.active { color: var(--text); background: var(--card-2); border-color: var(--border); }

.topbar-right { display: flex; align-items: center; gap: 12px; }
.market-state {
    display: inline-flex; align-items: center; gap: 7px;
    font-size: 12px; color: var(--text-2);
    padding: 6px 11px; border: 1px solid var(--border); border-radius: 999px;
    background: var(--card-2);
}
.market-state .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
.market-state .dot.up { background: var(--up); box-shadow: 0 0 0 3px rgba(38, 166, 154, .18); }
.market-state .dot.flat { background: #f0a02a; box-shadow: 0 0 0 3px rgba(240, 160, 42, .16); }

.ghost-btn {
    padding: 7px 12px; border-radius: 10px; cursor: pointer;
    background: var(--card-2); color: var(--text-2);
    border: 1px solid var(--border); font-size: 12px; font-weight: 600;
    transition: all .16s ease;
}
.ghost-btn:hover { color: var(--text); border-color: var(--accent); }

/* ─────────────────────────── Контент ─────────────────────────── */
.content { flex: 1; padding: 18px 22px 26px; max-width: 1920px; width: 100%; margin: 0 auto; }
.page { display: flex; flex-direction: column; gap: 16px; }

.card {
    background: linear-gradient(180deg, var(--card), var(--bg-2));
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}

/* ─────────────────────────── Панель управления ─────────────────────────── */
.control-bar {
    display: grid;
    grid-template-columns: 220px minmax(300px, 1.4fr) 170px minmax(230px, auto) auto;
    gap: 14px;
    align-items: end;
    padding: 14px 16px;
}
.field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.field label { font-size: 11px; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); font-weight: 700; }
.field .hint { text-transform: none; letter-spacing: 0; font-weight: 500; color: var(--muted); opacity: .8; }
.field.grow { min-width: 0; }
.field.switches { flex-direction: row; align-items: center; gap: 16px; padding-bottom: 4px; }
.field.submit { align-items: stretch; }

.input {
    width: 100%; padding: 10px 12px; border-radius: 10px;
    background: var(--card-2); color: var(--text);
    border: 1px solid var(--border); font-size: 13px; font-family: var(--font);
    outline: none; transition: border-color .15s ease, box-shadow .15s ease;
}
.input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(66, 165, 245, .16); }
select.input { cursor: pointer; }

.switch { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--text-2); cursor: pointer; }
.switch input { accent-color: var(--accent); width: 16px; height: 16px; cursor: pointer; }

.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 10px 18px; border-radius: 10px; cursor: pointer; font-weight: 700; font-size: 13px;
    background: var(--card-2); color: var(--text); border: 1px solid var(--border);
    transition: all .16s ease;
}
.btn:hover:not(:disabled) { border-color: var(--accent); color: var(--text); }
.btn:disabled { opacity: .6; cursor: default; }
.btn.primary {
    background: linear-gradient(135deg, #2f8ae0, #26a69a);
    border-color: transparent; color: #04121a;
}
.btn.primary:hover:not(:disabled) { filter: brightness(1.08); }

.notice {
    padding: 10px 14px; border-radius: 10px; font-size: 13px;
    background: rgba(240, 160, 42, .1); border: 1px solid rgba(240, 160, 42, .35); color: #f0b455;
}

/* ─────────────────────────── Выбор инструмента ─────────────────────────── */
.picker { position: relative; }
.picker-btn {
    width: 100%; display: flex; align-items: center; gap: 10px;
    padding: 8px 12px; border-radius: 10px; cursor: pointer;
    background: var(--card-2); border: 1px solid var(--border); color: var(--text);
    text-align: left; font-family: var(--font); font-size: 13px;
    transition: border-color .15s ease;
}
.picker-btn:hover, .picker-btn.open { border-color: var(--accent); }
.p-ticker { font-weight: 800; font-size: 15px; letter-spacing: .3px; }
.p-name { color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.p-sector { color: var(--muted); font-size: 11.5px; margin-left: auto; white-space: nowrap; }
.p-tier {
    font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 999px;
    border: 1px solid var(--border); color: var(--muted); white-space: nowrap;
}
.caret { color: var(--muted); font-size: 11px; }

.tier-1 { color: #f0b455; border-color: rgba(240, 180, 85, .45); }
.tier-2 { color: #6fb7f0; border-color: rgba(111, 183, 240, .45); }
.tier-3 { color: var(--muted); }

.picker-backdrop { position: fixed; inset: 0; z-index: 50; }
.picker-pop {
    position: absolute; z-index: 60; top: calc(100% + 8px); left: 0; right: 0;
    background: var(--card); border: 1px solid var(--border); border-radius: 12px;
    box-shadow: 0 26px 60px -24px rgba(0, 0, 0, .85);
    padding: 10px; display: flex; flex-direction: column; gap: 8px;
}
.tier-tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.tier-btn {
    padding: 5px 11px; border-radius: 999px; cursor: pointer; font-size: 12px; font-weight: 600;
    background: var(--card-2); color: var(--text-2); border: 1px solid var(--border);
    font-family: var(--font); transition: all .15s ease;
}
.tier-btn:hover { color: var(--text); }
.tier-btn.active { background: rgba(66, 165, 245, .14); border-color: var(--accent); color: var(--text); }
.picker-search { width: 100%; }
.picker-list { max-height: 320px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.picker-item {
    display: grid; grid-template-columns: 78px 1fr auto auto; gap: 10px; align-items: center;
    padding: 8px 10px; border-radius: 8px; cursor: pointer; text-align: left;
    background: transparent; border: 1px solid transparent; color: var(--text);
    font-family: var(--font); font-size: 13px; transition: background .12s ease;
}
.picker-item:hover { background: var(--hover); }
.picker-item.selected { background: rgba(66, 165, 245, .12); border-color: var(--accent); }
.pi-ticker { font-weight: 700; }
.pi-name { color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pi-sector { color: var(--muted); font-size: 11.5px; }
.pi-tier { font-size: 10.5px; padding: 2px 7px; border-radius: 999px; border: 1px solid var(--border); }
.picker-empty { padding: 14px; text-align: center; color: var(--muted); font-size: 13px; }

/* ─────────────────────────── Сетка графиков ─────────────────────────── */
.charts-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 1400px) { .charts-grid { grid-template-columns: 1fr; } }

.panel { display: flex; flex-direction: column; background: linear-gradient(180deg, var(--card), var(--bg-2));
         border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; }

.panel-head {
    display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
    padding: 10px 14px; border-bottom: 1px solid var(--border-soft); background: var(--card-2);
}
.ph-left { display: flex; align-items: center; gap: 10px; }
.panel-badge {
    font-size: 10.5px; font-weight: 800; letter-spacing: .8px; text-transform: uppercase;
    padding: 4px 9px; border-radius: 6px; color: var(--accent);
    background: rgba(66, 165, 245, .12); border: 1px solid rgba(66, 165, 245, .3);
}
.ph-symbol { display: flex; flex-direction: column; line-height: 1.15; }
.ph-ticker { font-weight: 800; font-size: 15px; }
.ph-name { font-size: 11px; color: var(--muted); }

.ph-mid { margin-left: auto; }
.tf-group { display: flex; gap: 4px; background: var(--bg-2); padding: 3px; border-radius: 9px; border: 1px solid var(--border); }
.tf-btn {
    padding: 5px 10px; border-radius: 7px; cursor: pointer; font-size: 12px; font-weight: 700;
    background: transparent; color: var(--text-2); border: none; font-family: var(--font);
    transition: all .14s ease;
}
.tf-btn:hover { color: var(--text); background: var(--hover); }
.tf-btn.active { background: var(--accent); color: #04121a; }

.ph-right { display: flex; align-items: center; gap: 12px; }
.quote { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.15; }
.q-price { font-weight: 800; font-size: 16px; font-family: var(--mono); }
.q-change { font-size: 11.5px; font-weight: 700; color: var(--muted); }
.q-change.up { color: var(--up); }
.q-change.down { color: var(--down); }

.ph-actions { display: flex; gap: 4px; }
.icon-btn {
    width: 28px; height: 28px; border-radius: 8px; cursor: pointer;
    background: var(--card-2); border: 1px solid var(--border); color: var(--text-2);
    font-size: 13px; line-height: 1; display: inline-flex; align-items: center; justify-content: center;
    transition: all .15s ease; font-family: var(--font);
}
.icon-btn:hover { color: var(--text); border-color: var(--accent); }
.icon-btn svg { display: block; }
.icon-btn.on { color: var(--accent); border-color: rgba(66, 165, 245, .5); background: rgba(66, 165, 245, .12); }

.panel-loading, .panel-error {
    height: 400px; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 10px; color: var(--muted); font-size: 13px; padding: 20px; text-align: center;
}
.panel-error b { color: var(--down); font-size: 14px; }
.panel-error span { max-width: 480px; color: var(--text-2); }

/* ─────────────────────────── Канвас графика ─────────────────────────── */
.candle-chart { position: relative; width: 100%; background: transparent; }
.chart-canvas { position: absolute; inset: 0; }

.chart-legend {
    position: absolute; top: 10px; left: 12px; z-index: 5; pointer-events: none;
    font-size: 11.5px; color: var(--text-2); display: flex; flex-direction: column; gap: 3px;
    background: color-mix(in srgb, var(--bg) 55%, transparent);
    border: 1px solid var(--border-soft); border-radius: 9px; padding: 8px 10px;
    backdrop-filter: blur(6px);
}
.legend-title { display: flex; align-items: center; gap: 8px; font-weight: 700; }
.legend-title .sym { font-size: 13px; color: var(--text); letter-spacing: .3px; }
.legend-title .tf { font-size: 10.5px; color: var(--muted); }
.legend-title .regime { font-size: 10.5px; padding: 1px 7px; border-radius: 999px; border: 1px solid var(--border); color: var(--muted); }
.legend-title .regime.up { color: var(--up); border-color: rgba(38, 166, 154, .45); }
.legend-title .regime.down { color: var(--down); border-color: rgba(239, 83, 80, .45); }
.legend-row { display: flex; align-items: center; gap: 6px; font-family: var(--mono); }
.legend-row .k { color: var(--muted); font-size: 10px; }
.legend-row .v { color: var(--text); min-width: 48px; }
.legend-row .v.up { color: var(--up); }
.legend-row .v.down { color: var(--down); }
.legend-row.ma { gap: 7px; }
.legend-row.ma .dot { width: 9px; height: 3px; border-radius: 2px; display: inline-block; }
.legend-row.ma .dot.ma95 { background: var(--ma95); }
.legend-row.ma .dot.hi7 { background: var(--hi7); }
.legend-row.ma .dot.lo7 { background: var(--lo7); }

.signal-tooltip {
    position: absolute; z-index: 20; display: none; max-width: 250px;
    padding: 8px 10px; border-radius: 9px; font-size: 12px; pointer-events: none;
    background: color-mix(in srgb, var(--card) 96%, transparent);
    border: 1px solid var(--border); box-shadow: 0 14px 30px -14px rgba(0, 0, 0, .8);
    color: var(--text-2);
}
.signal-tooltip.show { display: block; }
.signal-tooltip.buy { border-color: rgba(38, 166, 154, .6); }
.signal-tooltip.sell { border-color: rgba(239, 83, 80, .6); }
.tt-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 4px; }
.tt-head b { font-size: 12.5px; }
.signal-tooltip.buy .tt-head b { color: var(--up); }
.signal-tooltip.sell .tt-head b { color: var(--down); }
.tt-reason { line-height: 1.35; }

.chart-overlay {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    gap: 10px; z-index: 10; color: var(--muted); font-size: 13px;
    background: color-mix(in srgb, var(--bg) 45%, transparent);
}

/* ─────────────────────────── Подвал панели: статистика ─────────────────────────── */
.panel-foot { border-top: 1px solid var(--border-soft); background: var(--card-2); padding: 9px 14px; display: flex; flex-direction: column; gap: 8px; }
.stats { display: flex; flex-wrap: wrap; gap: 6px 20px; }
.stat { display: flex; flex-direction: column; line-height: 1.2; }
.s-label { font-size: 10px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); }
.s-value { font-size: 13px; font-weight: 700; font-family: var(--mono); }
.s-value.up { color: var(--up); }
.s-value.down { color: var(--down); }
.s-value.muted { font-weight: 500; color: var(--muted); font-size: 12px; }

.signal-strip { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.strip-title { font-size: 11px; color: var(--muted); }
.chip {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 2px 8px; border-radius: 999px; font-size: 10.5px; font-weight: 800; letter-spacing: .4px;
    border: 1px solid transparent;
}
.chip b { font-weight: 600; opacity: .85; letter-spacing: 0; }
.chip.buy { color: var(--up); background: rgba(38, 166, 154, .12); border-color: rgba(38, 166, 154, .35); }
.chip.sell { color: var(--down); background: rgba(239, 83, 80, .12); border-color: rgba(239, 83, 80, .35); }

/* ─────────────────────────── Журнал сигналов ─────────────────────────── */
.journal { padding: 14px 16px 18px; }
.journal-head { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.journal-head h2 { margin: 0; font-size: 15px; }
.journal-rule { font-size: 12px; color: var(--muted); line-height: 1.4; }
.journal-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 1200px) { .journal-cols { grid-template-columns: 1fr; } }
.journal-col h3 { margin: 0 0 8px; font-size: 13px; color: var(--text-2); font-weight: 700; }

.signal-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.signal-table th {
    text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .5px;
    color: var(--muted); padding: 6px 8px; border-bottom: 1px solid var(--border);
}
.signal-table td { padding: 6px 8px; border-bottom: 1px solid var(--border-soft); color: var(--text-2); }
.signal-table tr:hover td { background: var(--hover); }
.signal-table .num { font-family: var(--mono); color: var(--text); }
.signal-table .reason { color: var(--muted); font-size: 12px; }
.nowrap { white-space: nowrap; font-family: var(--mono); font-size: 12px; }
.muted { color: var(--muted); }

/* ─────────────────────────── Скринер ─────────────────────────── */
.scan-controls { display: flex; align-items: end; gap: 14px; flex-wrap: wrap; padding: 14px 16px; }
.scan-progress { height: 6px; border-radius: 999px; background: var(--bg-2); overflow: hidden; border: 1px solid var(--border); }
.scan-progress > div { height: 100%; background: linear-gradient(90deg, var(--accent), var(--up)); transition: width .25s ease; }
.scan-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.scan-card {
    padding: 12px; border-radius: 12px; border: 1px solid var(--border); background: var(--card-2);
    display: flex; flex-direction: column; gap: 8px; transition: border-color .15s ease, transform .15s ease;
}
.scan-card:hover { border-color: var(--accent); transform: translateY(-1px); }
.scan-card.buy { border-left: 3px solid var(--up); }
.scan-card.sell { border-left: 3px solid var(--down); }
.scan-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.scan-ticker { font-weight: 800; font-size: 15px; }
.scan-name { font-size: 11.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.scan-row { display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--text-2); }
.scan-row .val { font-family: var(--mono); }
.scan-actions { display: flex; gap: 8px; align-items: center; }
.link-btn {
    background: none; border: none; color: var(--accent); cursor: pointer; font-size: 12px;
    font-weight: 700; padding: 0; font-family: var(--font);
}
.link-btn:hover { text-decoration: underline; }

/* ─────────────────────────── Прочее ─────────────────────────── */
.app-foot {
    padding: 14px 22px 20px; border-top: 1px solid var(--border);
    display: flex; flex-direction: column; gap: 4px;
    font-size: 11.5px; color: var(--muted);
}

.spinner {
    width: 18px; height: 18px; border-radius: 50%;
    border: 2px solid rgba(128, 150, 175, .3); border-top-color: var(--accent);
    display: inline-block; animation: spin .8s linear infinite;
}
.spinner.sm { width: 13px; height: 13px; border-width: 2px; }
@keyframes spin { to { transform: rotate(360deg); } }

#blazor-error-ui {
    display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 100;
    padding: 12px 18px; background: #ffe9a8; color: #3a2b00; font-size: 13px;
}
#blazor-error-ui .dismiss { cursor: pointer; float: right; }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: var(--muted); }

/* ─────────────────────────── Адаптивность ─────────────────────────── */
@media (max-width: 1280px) {
    .control-bar { grid-template-columns: 1fr 1fr; }
    .field.grow { grid-column: 1 / -1; }
    .field.submit { align-items: stretch; }
    .topbar { flex-wrap: wrap; gap: 12px; row-gap: 8px; }
    .brand { min-width: auto; }
    .main-nav { order: 3; width: 100%; }
}

@media (max-width: 860px) {
    .content { padding: 12px 12px 18px; }
    .control-bar { grid-template-columns: 1fr; }
    .panel-head { gap: 10px; }
    .ph-mid { margin-left: 0; order: 3; width: 100%; }
    .tf-group { width: 100%; justify-content: space-between; }
    .chart-legend { font-size: 10.5px; padding: 6px 8px; }
    .stats { gap: 6px 12px; }
    .journal-cols { grid-template-columns: 1fr; }
    .scan-grid { grid-template-columns: 1fr; }
    .app-foot { padding: 12px; }
}

/* ─────────────────────────── Сигнальная система MA95 ─────────────────────────── */

/* Номера теорий */
.theory-badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 1px 7px; border-radius: 7px; font-size: 11px; font-weight: 800;
    font-family: var(--mono); letter-spacing: .2px;
    border: 1px solid var(--border); color: var(--text-2); background: var(--card-2);
}
.theory-badge.buy { color: var(--up); border-color: rgba(38, 166, 154, .42); background: rgba(38, 166, 154, .1); }
.theory-badge.sell { color: var(--down); border-color: rgba(239, 83, 80, .42); background: rgba(239, 83, 80, .1); }

/* «Живой» сигнал */
.live-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 2px 9px; border-radius: 999px; font-size: 10.5px; font-weight: 800; letter-spacing: .5px;
    border: 1px solid var(--border); color: var(--text-2); background: var(--card-2);
    white-space: nowrap;
}
.live-pill.buy { color: var(--up); border-color: rgba(38, 166, 154, .5); background: rgba(38, 166, 154, .12); }
.live-pill.sell { color: var(--down); border-color: rgba(239, 83, 80, .5); background: rgba(239, 83, 80, .12); }
.live-pill .pulse {
    width: 7px; height: 7px; border-radius: 50%; background: currentColor;
    box-shadow: 0 0 0 0 currentColor; animation: livepulse 1.8s infinite;
}
@keyframes livepulse {
    0%   { box-shadow: 0 0 0 0 rgba(38, 166, 154, .55); }
    70%  { box-shadow: 0 0 0 7px rgba(38, 166, 154, 0); }
    100% { box-shadow: 0 0 0 0 rgba(38, 166, 154, 0); }
}

/* Легенда: строки MA сигнальной системы и счётчик сигналов */
.legend-row.signal-ma { opacity: .95; }
.legend-row .dot.ma85 { background: #e0762e; }
.legend-row .dot.ma25 { background: #3fb6b0; }
.legend-row.signals-note { margin-top: 2px; padding-top: 4px; border-top: 1px dashed var(--border-soft); width: 100%; }
.legend-row.signals-note .v { color: var(--text-2); }

/* Кнопка-переключатель MA85/25 в шапке панели */
.icon-btn.text-btn { width: auto; padding: 0 8px; font-size: 10.5px; font-weight: 800; letter-spacing: .3px; }

/* Подсказка сигнала */
.signal-tooltip .tt-theory { font-family: var(--mono); font-weight: 800; color: var(--text); }
.signal-tooltip .tt-price { font-family: var(--mono); color: var(--text-2); }
.signal-tooltip.buy .tt-theory { color: var(--up); }
.signal-tooltip.sell .tt-theory { color: var(--down); }

/* Чип в ленте сигналов */
.chip .theory { font-family: var(--mono); font-weight: 800; }

/* Журнал: строка фильтров и статистика по теориям */
.journal-head .jh-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.jh-filters { display: flex; align-items: center; gap: 8px; }
.jh-label { font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); font-weight: 700; }
.input.compact { padding: 6px 10px; font-size: 12px; max-width: 340px; }
.jc-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.jc-head h3 { margin: 0; }

.theory-stats { margin-top: 12px; border-top: 1px dashed var(--border-soft); padding-top: 10px; }
.ts-title { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); font-weight: 700; margin-bottom: 6px; }
.theory-stats table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.theory-stats th {
    text-align: right; font-size: 10px; text-transform: uppercase; letter-spacing: .4px;
    color: var(--muted); padding: 5px 8px; border-bottom: 1px solid var(--border); font-weight: 700;
}
.theory-stats th:first-child, .theory-stats td:first-child { text-align: left; }
.theory-stats td { padding: 5px 8px; border-bottom: 1px solid var(--border-soft); color: var(--text-2); }
.theory-stats td.num, .theory-stats .num { text-align: right; font-family: var(--mono); }
.theory-stats .ts-short { color: var(--muted); font-size: 11.5px; margin-left: 6px; }

/* Сканер: бейджи и строка теории */
.scan-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.scan-badges { display: flex; align-items: center; gap: 6px; }
.scan-row.theory-row .val { color: var(--text-2); font-size: 11.5px; }
