:root { --bg:#0b0e14; --panel:#131822; --line:#222b3a; --text:#e6eaf2; --muted:#7d8aa3; --up:#26a69a; --down:#ef5350; --acc:#4c8dff; }
* { box-sizing:border-box; }
html,body { height:100%; margin:0; }
body { background:var(--bg); color:var(--text); font:14px/1.45 system-ui,Segoe UI,Roboto,sans-serif; display:flex; flex-direction:column; }
header { display:flex; align-items:center; gap:14px; padding:9px 14px; border-bottom:1px solid var(--line); flex-wrap:wrap; position:sticky; top:0; z-index:30; background:rgba(11,14,20,.96); backdrop-filter:blur(10px); }
.brand { font-weight:700; font-size:18px; } .brand span { color:var(--acc); }
.controls { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.muted { color:var(--muted); font-size:12px; margin-left:auto; }
input { background:var(--panel); border:1px solid var(--line); color:var(--text); padding:8px 10px; border-radius:8px; outline:none; }
input:focus { border-color:var(--acc); }
#symbol { width:120px; text-transform:uppercase; font-weight:600; }
button { background:var(--panel); border:1px solid var(--line); color:var(--text); padding:8px 12px; border-radius:8px; cursor:pointer; }
button:hover { border-color:var(--acc); }
button.primary { background:var(--acc); border-color:var(--acc); color:#fff; font-weight:600; }
button:disabled { opacity:.6; cursor:wait; }
.tabs { display:flex; } .tabs button { border-radius:0; margin-left:-1px; padding:8px 12px; }
.tabs button:first-child { border-radius:8px 0 0 8px; } .tabs button:last-child { border-radius:0 8px 8px 0; }
.tabs.groups button { font-size:13px; }
#symbol.bad { border-color:var(--down); }
.tabs button.on { background:#1c2a44; border-color:var(--acc); position:relative; }
main { flex:1; display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:12px; padding:12px; min-height:0; }
.chart { background:var(--panel); border:1px solid var(--line); border-radius:12px; overflow:hidden; min-height:420px; }
#tv { height:100%; }
aside { display:flex; flex-direction:column; gap:12px; min-height:0; overflow:auto; }
.card { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:13px; }
.empty { color:var(--muted); text-align:center; padding:20px 6px; }
.title { font-weight:600; margin-bottom:8px; color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.06em; }
.bias { display:flex; align-items:center; justify-content:space-between; }
.bias .tag { font-size:20px; font-weight:700; }
.bullish { color:var(--up); } .bearish { color:var(--down); } .neutral { color:#e0b84c; }
.bar { display:flex; height:10px; border-radius:6px; overflow:hidden; margin:10px 0 4px; background:#222; }
.bar i { display:block; } .bar .u { background:var(--up); } .bar .d { background:var(--down); } .bar .s { background:#59647a; }
.legend { display:flex; justify-content:space-between; font-size:12px; color:var(--muted); }
.grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:12px 0; }
.kv { background:#0f141d; border:1px solid var(--line); border-radius:8px; padding:8px 10px; }
.kv small { display:block; color:var(--muted); font-size:11px; } .kv b { font-variant-numeric:tabular-nums; }
.kv.down b { color:var(--down); } .kv.up b { color:var(--up); }
.conf { height:6px; background:#222b3a; border-radius:4px; margin-top:6px; } .conf i { display:block; height:100%; background:var(--acc); border-radius:4px; }
ul { margin:6px 0 0; padding-left:18px; } li { margin:3px 0; }
.sc { border-left:3px solid var(--line); padding:4px 10px; margin:8px 0; } .sc b { display:block; }
.picker { position:relative; }
.plist { position:absolute; top:100%; left:0; z-index:20; width:380px; max-height:420px; overflow:auto; margin-top:4px; background:var(--panel); border:1px solid var(--acc); border-radius:10px; box-shadow:0 12px 40px #000a; }
.pi { display:grid; grid-template-columns:1.3fr 1fr .8fr .6fr; gap:8px; padding:7px 12px; cursor:pointer; font-size:13px; font-variant-numeric:tabular-nums; border-bottom:1px solid #1a2230; }
.pi span { text-align:right; } .pi:hover { background:#1c2a44; }
.pf { padding:8px 12px; color:var(--muted); font-size:12px; position:sticky; bottom:0; background:var(--panel); }
.tabs.mini { margin:4px 0 10px; } .tabs.mini button { padding:4px 10px; font-size:12px; }
.tgs { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; text-align:center; margin-bottom:8px; }
.tg small { color:var(--muted); font-size:11px; display:block; } .tg b { font-size:13px; } .tg .legend { justify-content:space-around; gap:6px; }
.chips { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; } .chip { border:1px solid var(--line); border-radius:12px; padding:2px 10px; font-size:12px; }
.chip.bullish { border-color:var(--up); } .chip.bearish { border-color:var(--down); }
details { margin:6px 0; } summary { cursor:pointer; color:var(--muted); font-size:12px; padding:4px 0; }
details table td:nth-child(2) { text-align:right; }
/* ===== навигация и шапка ===== */
.nav button { padding:8px 16px; font-weight:600; }
.chartctl { display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
.star { font-size:18px; padding:4px 10px; color:var(--muted); } .star.on { color:#e0b84c; border-color:#e0b84c; }
.view, #vChart { /* общий контейнер вкладок */ }
main[hidden] { display:none; }
/* ===== график ===== */
.chart { display:flex; flex-direction:column; }
.chartbar { display:flex; gap:14px; align-items:center; padding:6px 10px; border-bottom:1px solid var(--line); flex-wrap:wrap; font-size:12px; color:var(--muted); }
.chartbar label { cursor:pointer; display:flex; gap:5px; align-items:center; } .chartbar input { padding:0; }
.chartwrap { position:relative; flex:1; min-height:360px; }
#lw, #tv { position:absolute; inset:0; } #lw[hidden], #tv[hidden] { display:none; }
.lwmsg { position:absolute; top:12px; left:12px; z-index:5; background:#0f141d; border:1px solid var(--line); border-radius:8px; padding:6px 12px; color:var(--muted); }
.fcbadge { margin-left:auto; border:1px solid var(--line); border-radius:12px; padding:3px 12px; color:var(--text); font-size:12px; }
/* ===== инструмент Long/Short ===== */
.chartbar .sep { width:1px; height:18px; background:var(--line); }
button.mini.pos.long { color:var(--up); border-color:rgba(38,166,154,.6); } button.mini.pos.short { color:var(--down); border-color:rgba(239,83,80,.6); }
button.mini.on { background:#1c2a44; border-color:var(--acc); box-shadow:0 0 0 1px var(--acc) inset; }
button.mini:disabled { opacity:.4; cursor:not-allowed; }
.poshint { color:#e0b84c; font-size:12px; }
#lw.pt-cross, #lw.pt-cross * { cursor:crosshair !important; }
#lw.pt-ns, #lw.pt-ns * { cursor:ns-resize !important; }
#lw.pt-ew, #lw.pt-ew * { cursor:ew-resize !important; }
#lw.pt-move, #lw.pt-move * { cursor:move !important; }
.pospanel { position:absolute; top:8px; left:8px; z-index:6; width:300px; max-width:calc(100% - 90px); background:rgba(15,20,29,.96); border:1px solid var(--line); border-radius:10px; padding:8px 10px; font-size:12px; box-shadow:0 6px 24px #0008; }
.pospanel .ph { display:flex; gap:8px; align-items:center; margin-bottom:6px; } .pospanel .ph a { margin-left:auto; cursor:pointer; color:var(--muted); } .pospanel .ph a:hover { color:var(--text); }
.pvals { display:flex; flex-wrap:wrap; gap:4px 14px; margin-bottom:6px; } .pvals span { display:flex; flex-direction:column; color:var(--muted); font-size:11px; }
.pvals b { font-size:13px; color:var(--text); font-variant-numeric:tabular-nums; } .pvals i { font-style:normal; font-size:10px; }
.pospanel .prow { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; } .pospanel .phint { margin-top:6px; font-size:10.5px; }
/* ===== разметка и понятный ТА ===== */
button.mini { padding:3px 10px; font-size:12px; }
.legend2 { display:flex; gap:14px; flex-wrap:wrap; padding:5px 10px; font-size:11px; color:var(--muted); border-bottom:1px solid var(--line); }
.legend2 .sw { display:inline-block; width:14px; height:9px; border-radius:2px; margin-right:5px; vertical-align:-1px; }
.legend2 .sw.dashed { border:1px dashed #4c8dff; background:rgba(76,141,255,.08); }
.legend2 .ln2 { display:inline-block; width:14px; height:3px; margin-right:3px; vertical-align:2px; }
.verdict { border-radius:10px; padding:10px 12px; margin-bottom:10px; border:1px solid var(--line); background:#0f141d; }
.verdict .vh { display:flex; gap:8px; align-items:center; font-size:15px; } .verdict .muted2 { margin-top:4px; font-size:12.5px; color:#b6c0d4; }
.verdict.long { border-color:var(--up); background:rgba(38,166,154,.09); } .verdict.long .vh { color:var(--up); }
.verdict.short { border-color:var(--down); background:rgba(239,83,80,.09); } .verdict.short .vh { color:var(--down); }
.verdict.wait { border-color:#e0b84c; background:rgba(224,184,76,.07); } .verdict.wait .vh { color:#e0b84c; }
.plain .pl { display:flex; gap:10px; margin:8px 0; font-size:13px; line-height:1.45; } .plain .pic { width:22px; text-align:center; flex:none; }
.hint { color:var(--muted); font-size:10px; text-transform:none; letter-spacing:0; margin-left:6px; font-weight:400; }
.setup { border:1px solid var(--line); border-left-width:4px; border-radius:8px; padding:8px 10px; margin:8px 0; background:#0f141d; cursor:pointer; }
.setup.long { border-left-color:var(--up); } .setup.short { border-left-color:var(--down); } .setup:hover, .setup.sel { background:#1c2a44; border-color:var(--acc); }
.setup .sh { font-size:13px; margin-bottom:3px; } .tag2 { font-size:10px; border-radius:8px; padding:1px 8px; margin-left:6px; border:1px solid var(--line); }
.tag2.ok { color:var(--up); border-color:var(--up); } .tag2.warn { color:#e0b84c; border-color:#e0b84c; }
.srow { display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:6px; font-size:11px; color:var(--muted); }
.srow span { display:flex; flex-direction:column; } .srow b { font-size:13px; color:var(--text); font-variant-numeric:tabular-nums; } .srow i { font-style:normal; font-size:10px; }
.ladder { display:flex; flex-direction:column; gap:3px; font-size:12px; }
.lr { position:relative; display:grid; grid-template-columns:88px 1fr 1fr 48px; gap:6px; padding:4px 8px; border-radius:6px; background:#0f141d; overflow:hidden; font-variant-numeric:tabular-nums; }
.lr > span { position:relative; z-index:1; } .lr .ld { text-align:right; } .lr .lm { color:var(--muted); }
.lr .lb { position:absolute; left:0; top:0; bottom:0; opacity:.18; z-index:0; }
.lr.res .lb { background:var(--down); } .lr.sup .lb { background:var(--up); } .lr.ins .lb { background:#e0b84c; }
.lr.res .ln { color:var(--down); } .lr.sup .ln { color:var(--up); } .lr.ins .ln { color:#e0b84c; } .lr.rng .ln { color:#9bbcff; } .lr.rng { border:1px dashed #4c8dff55; }
.lr.cur { background:#1c2a44; border:1px solid var(--acc); font-weight:700; grid-template-columns:88px 1fr; }
.gl { margin:6px 0; } .gl dt { font-weight:700; margin-top:8px; font-size:12px; } .gl dd { margin:2px 0 0; color:#b6c0d4; font-size:12px; line-height:1.4; }
/* ===== дневник, риск, сообщества, стратегия ===== */
.nav button { padding:8px 12px; }
main.page { flex:1; display:block; overflow:auto; padding:12px; min-height:0; width:100%; }
main.page[hidden] { display:none; }
.pgrid { display:grid; grid-template-columns:minmax(0,1fr) 400px; gap:12px; align-items:start; }
.pgrid.single { grid-template-columns:minmax(0,1fr) 420px; }
.pmain, .pside { display:flex; flex-direction:column; gap:12px; min-width:0; }
select, textarea { background:var(--panel); border:1px solid var(--line); color:var(--text); padding:8px 10px; border-radius:8px; font:inherit; outline:none; }
select:focus, textarea:focus { border-color:var(--acc); } textarea { width:100%; resize:vertical; }
.frow { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin-bottom:10px; }
.frow label, label.wide { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--muted); } label.wide { margin-bottom:10px; }
.frow input, .frow select, label.wide input { width:100%; } .inl { display:flex; gap:6px; } .inl input { flex:1; min-width:0; }
.frow small, label small { color:#5f6b82; }
.row { display:flex; gap:10px; align-items:center; margin-top:10px; flex-wrap:wrap; }
.checks { background:#0f141d; border:1px solid var(--line); border-radius:8px; padding:10px 12px; margin:10px 0; }
.chk { display:flex; gap:8px; align-items:flex-start; font-size:13px; margin:5px 0; cursor:pointer; } .chk input { width:auto; padding:0; margin-top:3px; }
.tablewrap { overflow:auto; max-height:520px; }
.tablewrap table, table.mini { width:100%; font-size:12.5px; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.tablewrap th { position:sticky; top:0; background:var(--panel); color:var(--muted); font-weight:500; text-align:left; padding:6px; white-space:nowrap; z-index:1; }
.tablewrap td, table.mini td { text-align:left; padding:6px; border-top:1px solid var(--line); vertical-align:top; } table.mini th { text-align:left; } table.mini { margin:6px 0; }
tr.note td { border-top:none; padding-top:0; } tr.cur td { background:#1c2a44; }
.acts a { cursor:pointer; margin-right:8px; color:var(--muted); white-space:nowrap; } .acts a:hover { color:var(--acc); }
.statrow { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
.statrow.big { grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); margin-bottom:12px; }
.stat { background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:10px 12px; display:flex; flex-direction:column; gap:2px; }
.stat small { color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.04em; } .stat b { font-size:18px; font-variant-numeric:tabular-nums; } .stat i { font-style:normal; color:var(--muted); font-size:11px; }
.stat.hero { border-color:var(--acc); background:#10192b; } .stat.hero b { font-size:22px; }
.stat-note { grid-column:1 / -1; color:#e0b84c; font-size:12px; }
.score { border-radius:8px; padding:1px 8px; font-size:12px; border:1px solid var(--line); } .score.ok { color:var(--up); border-color:var(--up); } .score.mid { color:#e0b84c; border-color:#e0b84c; } .score.low { color:var(--down); border-color:var(--down); }
svg.curve { width:100%; height:auto; background:#0f141d; border-radius:8px; }
.warns { display:flex; flex-direction:column; gap:6px; margin-bottom:10px; }
.warn { display:flex; gap:10px; padding:8px 12px; border-radius:8px; font-size:13px; border:1px solid var(--line); background:#0f141d; }
.warn.bad { border-color:var(--down); background:rgba(239,83,80,.09); } .warn.warn { border-color:#e0b84c; background:rgba(224,184,76,.07); } .warn.ok { border-color:var(--up); background:rgba(38,166,154,.08); } .warn.info { color:var(--muted); }
.hbar { height:7px; background:#222b3a; border-radius:4px; overflow:hidden; margin:4px 0; } .hbar i { display:block; height:100%; border-radius:4px; }
.sform { display:grid; gap:8px; } .sform label { display:flex; flex-direction:column; gap:3px; font-size:12px; color:var(--muted); } .sform input { width:100%; }
.step { display:flex; gap:12px; padding:10px 0; border-top:1px solid var(--line); } .step:first-of-type { border-top:none; }
.sn { width:30px; height:30px; border-radius:50%; background:#1c2a44; color:var(--acc); display:flex; align-items:center; justify-content:center; font-weight:700; flex:none; }
.sb ul { margin:6px 0; padding-left:18px; font-size:13px; } .sb li { margin:3px 0; color:#c4cddd; }
.hero p { margin:8px 0 0; line-height:1.55; color:#c4cddd; }
.rule { display:flex; flex-direction:column; padding:6px 0; border-top:1px solid var(--line); font-size:13px; } .rule:first-of-type { border-top:none; } .rule span { color:var(--muted); font-size:12px; }
.mk { margin:8px 0; font-size:13px; }
.sact { display:flex; gap:8px; margin-top:8px; }
.warnbox { border-color:#e0b84c; background:rgba(224,184,76,.05); }
.src { display:grid; grid-template-columns:20px 1fr 1.3fr 22px; gap:10px; align-items:start; padding:8px 0; border-top:1px solid var(--line); } .src.off { opacity:.5; }
.src input { width:auto; padding:0; margin-top:3px; } .src a { cursor:pointer; opacity:.6; } .src a:hover { opacity:1; }
.lsbar { display:flex; height:8px; width:90px; border-radius:4px; overflow:hidden; } .lsbar .l { background:var(--up); } .lsbar .s { background:var(--down); }
#cmTable td.verd { max-width:300px; font-size:12px; color:#b6c0d4; } #cmTable tr[data-id] { cursor:pointer; } #cmTable tr[data-id]:hover, #cmTable tr.sel { background:#1c2a44; }
ul.why { padding-left:16px; margin:6px 0; font-size:12.5px; } ul.why li { margin:3px 0; } ul.why b { color:var(--down); }
.ev a, .muted2 a { color:var(--acc); }
.badge { border-radius:12px; padding:3px 12px; font-size:12px; border:1px solid var(--line); cursor:help; }
.badge.bad { color:var(--down); border-color:var(--down); background:rgba(239,83,80,.1); } .badge.warn { color:#e0b84c; border-color:#e0b84c; background:rgba(224,184,76,.08); }
.stalebadge { color:#e0b84c; border:1px solid #e0b84c; border-radius:12px; padding:2px 10px; font-size:11.5px; }
.stalenote { border:1px solid #e0b84c; background:rgba(224,184,76,.08); color:#e6cf8f; border-radius:8px; padding:8px 10px; margin-bottom:10px; font-size:12px; line-height:1.45; }
@media (max-width:1100px) { .pgrid, .pgrid.single { grid-template-columns:1fr; } }
@media (max-width:900px) {
  header { gap:8px; padding:8px 10px; }
  .brand { font-size:16px; }
  .nav { order:3; width:100%; overflow:auto; }
  .nav button { flex:1; white-space:nowrap; }
  main { grid-template-columns:1fr; padding:8px; }
  aside { max-height:none; overflow:visible; }
  .chart { min-height:58vh; }
  .chartbar { gap:8px; }
  .chartbar label { font-size:11px; }
  .plist { width:min(380px, calc(100vw - 20px)); }
}
@media (max-width:560px) {
  .controls { width:100%; }
  .controls > * { max-width:100%; }
  #symbol { flex:1; width:auto; }
  #tfs { overflow:auto; }
  #tfs button { padding:7px 9px; }
  .legend2 { display:none; }
  .dockbar { overflow:auto; }
  .dockbar .tabs { min-width:max-content; }
}
/* ===== календарь ===== */
.view { grid-template-columns:1fr 420px; } main.view:not([hidden]) { display:grid; }
.calmain { overflow:auto; } .calhead { display:flex; gap:10px; align-items:center; margin-bottom:12px; flex-wrap:wrap; }
.calhead b { font-size:18px; min-width:160px; text-align:center; } .calhead label { font-size:12px; color:var(--muted); display:flex; gap:4px; align-items:center; cursor:pointer; }
.calhead input[type=checkbox], .scrctl input[type=checkbox] { padding:0; width:auto; } .spacer { flex:1; }
.calgrid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.wd { text-align:center; color:var(--muted); font-size:12px; padding:4px; }
.cell { min-height:84px; background:#0f141d; border:1px solid var(--line); border-radius:8px; padding:6px; cursor:pointer; overflow:hidden; }
.cell:hover { border-color:var(--acc); } .cell.other { opacity:.4; } .cell.today { border-color:#e0b84c; } .cell.sel { background:#1c2a44; border-color:var(--acc); }
.cell .num { font-size:12px; color:var(--muted); } .dots { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; align-items:center; }
.dot { width:9px; height:9px; border-radius:50%; display:inline-block; } .dotx { font-size:11px; font-style:normal; } .dots small { color:var(--muted); font-size:10px; }
.calside { display:flex; flex-direction:column; gap:12px; overflow:auto; min-height:0; }
.calside .row, .addnote .row { display:flex; gap:8px; margin-top:6px; } .calside input { flex:1; width:100%; }
.addnote { margin-top:12px; border-top:1px solid var(--line); padding-top:10px; } .addnote input { margin-top:6px; }
.ev { border-left:3px solid var(--line); padding:6px 10px; margin:8px 0; background:#0f141d; border-radius:0 8px 8px 0; }
.ev.news { border-color:var(--acc); } .ev.dividend { border-color:#e0b84c; } .ev.note, .ev.event { border-color:#9a7bff; }
.evh { display:flex; gap:8px; align-items:center; font-size:12px; } .evt { margin:3px 0; font-weight:600; font-size:13px; }
.sym { color:var(--acc); cursor:pointer; background:#10192b; border-radius:8px; padding:0 8px; } .imp { color:#e0b84c; letter-spacing:-1px; } .del { margin-left:auto; cursor:pointer; opacity:.5; } .del:hover { opacity:1; }
.src { font-size:11px; } .digest { background:#10192b; border:1px solid #1c2a44; border-radius:8px; padding:8px 10px; margin-bottom:8px; font-size:13px; }
.chip a { cursor:pointer; color:var(--muted); margin-left:4px; } .chip a:hover { color:var(--down); }
/* ===== скринер ===== */
.scrctl { display:flex; gap:14px; align-items:end; flex-wrap:wrap; margin-bottom:10px; font-size:12px; color:var(--muted); }
.scrctl label { display:flex; flex-direction:column; gap:3px; } .scrctl label:has(input[type=checkbox]) { flex-direction:row; align-items:center; gap:5px; }
.scrctl select, .scrctl input[type=number] { background:var(--panel); color:var(--text); border:1px solid var(--line); border-radius:8px; padding:7px 8px; width:auto; } .scrctl input[type=number] { width:80px; }
.scrtable { overflow:auto; max-height:calc(100vh - 260px); }
#sTable { font-size:13px; } #sTable th { cursor:pointer; position:sticky; top:0; background:var(--panel); text-align:left; padding:6px; white-space:nowrap; } #sTable th.sorted { color:var(--acc); }
#sTable td { text-align:left; padding:6px; } #sTable tr[data-id] { cursor:pointer; } #sTable tr[data-id]:hover { background:#1c2a44; }
.pats { color:var(--muted); font-size:12px; } .sbar { position:relative; height:4px; width:90px; background:linear-gradient(90deg,var(--down),#59647a 50%,var(--up)); border-radius:2px; margin-top:4px; }
.sbar i { position:absolute; top:-3px; width:3px; height:10px; background:#fff; transform:translateX(-1px); border-radius:1px; }
@media (max-width:1000px) { .view { grid-template-columns:1fr; } }
hr { border:0; border-top:1px solid var(--line); margin:14px 0; }
.muted2 { color:var(--muted); font-size:12px; margin:4px 0; }
.gauge { position:relative; height:8px; border-radius:5px; margin:10px 0 4px; background:linear-gradient(90deg,var(--down),#59647a 50%,var(--up)); }
.gauge i { position:absolute; top:-4px; width:4px; height:16px; background:#fff; border-radius:2px; transform:translateX(-2px); }
table { width:100%; border-collapse:collapse; font-size:12px; font-variant-numeric:tabular-nums; }
th { color:var(--muted); font-weight:500; text-align:right; padding:3px 4px; } th:first-child, td:first-child { text-align:left; }
td { text-align:right; padding:4px; border-top:1px solid var(--line); } tr.bh td { color:var(--muted); }
.tool { align-self:flex-start; font-size:12px; color:var(--acc); background:#10192b; border:1px solid #1c2a44; border-radius:12px; padding:2px 10px; }
.chat { display:flex; flex-direction:column; flex:1; min-height:240px; }
#log { flex:1; overflow:auto; display:flex; flex-direction:column; gap:8px; margin-bottom:8px; min-height:120px; }
.m { padding:8px 10px; border-radius:10px; white-space:pre-wrap; max-width:92%; }
.m.user { background:#1c2a44; align-self:flex-end; } .m.assistant { background:#0f141d; border:1px solid var(--line); }
.m.err { color:var(--down); }
#chatForm { display:flex; gap:8px; } #msg { flex:1; }
footer { text-align:center; color:var(--muted); font-size:11px; padding:6px; border-top:1px solid var(--line); }
.spin { display:inline-block; width:14px; height:14px; border:2px solid var(--muted); border-top-color:var(--acc); border-radius:50%; animation:r .8s linear infinite; vertical-align:-2px; margin-right:8px; }
@keyframes r { to { transform:rotate(360deg); } }
@media (max-width:1000px) { main { grid-template-columns:1fr; } .chart { height:60vh; } }

/* ===== Единая страница «Торговля»: график + бот + ордера ===== */
#vChart { grid-template-columns:minmax(0,1fr) 430px; }
#vChart > .chart { min-height:0; }
.chartwrap { min-height:240px; }
#side { display:flex; flex-direction:column; gap:10px; min-height:0; overflow:auto; }
.sidetabs { margin:0; } .sidetabs button { flex:1; }
.pane { display:flex; flex-direction:column; gap:12px; } .pane[hidden] { display:none; }
.dock { flex:none; height:220px; border-top:1px solid var(--line); display:flex; flex-direction:column; background:var(--panel); }
.dock.collapsed { height:36px; } .dock.collapsed .dockbody { display:none; }
.dockbar { display:flex; align-items:center; gap:10px; padding:4px 10px; flex:none; } .dockbar .tabs.mini { margin:0; } .dockbar #dockInfo { margin-left:auto; }
.dockbody { overflow:auto; padding:0 10px 8px; font-size:12px; flex:1; min-height:0; }
.dockbody table { width:100%; border-collapse:collapse; } .dockbody th { text-align:left; color:var(--muted); font-weight:500; padding:3px 8px 3px 0; position:sticky; top:0; background:var(--panel); }
.dockbody td { padding:3px 8px 3px 0; border-top:1px solid #1a2230; font-variant-numeric:tabular-nums; white-space:nowrap; }
.dockbody .sub { margin:6px 0 2px; color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.05em; }
.prof { display:flex; flex-wrap:wrap; gap:6px; margin:6px 0; } .prof .chip { font-size:12px; }
.prof .chip.live { border-color:#e0b84c; color:#e0b84c; } .prof .chip.paper { border-color:var(--acc); color:#9fc0ff; }
.scanl { font-size:11.5px; color:var(--muted); margin:3px 0; } .scanl b { color:var(--text); font-weight:600; }
.ev { border-top:1px solid #1a2230; padding:4px 0; } .ev .muted2 { margin:1px 0; }
.dockbody .ev { display:grid; grid-template-columns:150px 1fr; gap:4px 10px; }
@media (max-width:1000px) { #vChart { grid-template-columns:1fr; } #vChart > .chart { height:70vh; } }
.acct { display:flex; gap:12px; align-items:center; margin-left:auto; font-size:13px; cursor:pointer; } .acct b { font-variant-numeric:tabular-nums; } #model { margin-left:0; }
.symlink { color:var(--acc); cursor:pointer; text-decoration:none; } .symlink:hover { text-decoration:underline; }

/* ===== Decisions tab: workflow graph + journal ===== */
.dv-wrap { max-width:1500px; margin:0 auto; }
.dv-sub { margin:0 0 10px; }
.dv-bar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:0 0 10px; }
.dv-bar .tabs.mini { margin:0; }
.dv-bar select, .dv-bar input { width:auto; }
.dv-btn { text-decoration:none; padding:5px 10px; border:1px solid var(--line); border-radius:8px; color:var(--text); background:#131822; font-size:12px; }
.dv-grid { display:grid; grid-template-columns:minmax(0,1fr) 440px; gap:12px; align-items:start; }
.dv-grid3 { display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); gap:12px; margin-top:12px; }
.dv-side { display:flex; flex-direction:column; gap:12px; position:sticky; top:0; max-height:calc(100vh - 130px); overflow:auto; }
.dv-canvas { padding:8px; overflow:auto; }
.dv-svg { width:100%; height:auto; min-width:640px; display:block; }
.dv-node { cursor:pointer; }
.dv-node:hover rect { filter:brightness(1.3); }
.dv-node.dim, .dv-edge.dim { opacity:.3; }
.dv-edge { fill:none; stroke:#5d6b85; stroke-width:1.4; }
.dv-t { fill:#e6eaf2; font-size:13px; font-weight:600; }
.dv-s { fill:#8c99b3; font-size:10.5px; }
.dv-badge { fill:#ff8a87; font-size:11px; font-weight:700; }
.dv-strip { display:flex; flex-wrap:wrap; gap:8px; align-items:center; background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:8px 12px; margin-bottom:10px; }
.dv-strip.warn { border-color:#e0b84c; background:rgba(224,184,76,.07); }
.dv-strip i { color:var(--muted); font-style:normal; }
.dv-st { display:flex; flex-direction:column; align-items:center; min-width:70px; } .dv-st b { font-size:18px; } .dv-st span { font-size:11px; color:var(--muted); }
.dv-h { margin:10px 0 4px; font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.dv-ul { margin:4px 0; padding-left:18px; font-size:12.5px; } .dv-ul li { margin:3px 0; }
.dv-note { margin:8px 0; padding:8px 10px; border:1px solid #e0b84c; background:rgba(224,184,76,.07); border-radius:8px; font-size:12.5px; }
.dv-rj { margin:6px 0; font-size:12.5px; }
.dv-det { border-top:1px solid var(--line); padding:6px 0; font-size:12.5px; } .dv-det summary { cursor:pointer; }
.dv-trail { margin:6px 0; border-left:2px solid var(--line); padding-left:10px; }
.dv-tr { display:flex; flex-direction:column; margin:5px 0; }
.dv-trn { font-size:12px; font-weight:600; color:var(--up); } .dv-tr.bad .dv-trn { color:var(--down); }
.dv-trt { font-size:12px; color:#b6c0d4; }
.dv-up { color:var(--up); } .dv-dn { color:var(--down); } .dv-op { color:var(--acc); }
.dv-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:8px; margin-bottom:10px; }
.dv-kpi { background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:8px 10px; display:flex; flex-direction:column; }
.dv-kpi span { font-size:11px; color:var(--muted); } .dv-kpi b { font-size:17px; margin-top:2px; }
.dv-scroll { overflow:auto; }
.dv-tbl { width:100%; border-collapse:collapse; font-size:12px; } .dv-tbl th { text-align:left; color:var(--muted); font-weight:500; padding:5px 6px; border-bottom:1px solid var(--line); white-space:nowrap; }
.dv-tbl td { padding:5px 6px; border-bottom:1px solid #1a2230; vertical-align:top; }
.dv-row { cursor:pointer; } .dv-row:hover td { background:#171e2b; }
.dv-x > td { background:#0f141d; padding:10px 12px; }
.dv-cols { display:grid; grid-template-columns:minmax(260px,1fr) minmax(300px,1.4fr); gap:18px; }
.dv-kv { display:flex; justify-content:space-between; gap:12px; padding:3px 0; border-bottom:1px dashed #1f2838; font-size:12.5px; } .dv-kv span { color:var(--muted); }
.dv-note-in { width:100%; background:#0b0e14; color:var(--text); border:1px solid var(--line); border-radius:8px; padding:6px 8px; font:inherit; margin-bottom:6px; resize:vertical; }
@media (max-width:1100px) { .dv-grid, .dv-cols { grid-template-columns:1fr; } .dv-side { position:static; max-height:none; } }
.dv-link { margin-left:8px; font-size:11px; padding:1px 7px; }
.dv-chips { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.dv-chip { background:#0b0e14; border:1px solid var(--line); border-radius:999px; padding:2px 10px; font-size:12px; } .dv-chip i { font-style:normal; color:var(--muted); margin-right:4px; }
.dv-cols2 { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; }
.dv-pre { margin:4px 0 10px; padding:8px 10px; background:#0b0e14; border:1px solid var(--line); border-radius:8px; font:12px/1.45 Consolas,monospace; white-space:pre-wrap; word-break:break-word; max-height:420px; overflow:auto; color:#c9d3e6; }
.dv-msg b { font-size:12px; color:var(--muted); font-weight:600; }
@media (max-width:1100px) { .dv-cols2 { grid-template-columns:1fr; } }

/* ===== Мобильная адаптация (iPhone/Android, в т.ч. режим «На экран Домой») ===== */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { min-height:100vh; min-height:100dvh; -webkit-tap-highlight-color:transparent; padding-left:env(safe-area-inset-left); padding-right:env(safe-area-inset-right); }
header { padding-top:calc(9px + env(safe-area-inset-top)); }
button, select, summary, .tabs button, .setup, .dv-row, tr[data-id] { touch-action:manipulation; }
.chartbar, #tfs, .tabs.groups, .dockbar { -webkit-overflow-scrolling:touch; }
footer { padding-bottom:calc(6px + env(safe-area-inset-bottom)); }

@media (max-width:900px) {
  /* iOS приближает страницу при фокусе на поле с шрифтом < 16px — задаём 16px */
  input, select, textarea, .dv-note-in { font-size:16px; }
  input[type=checkbox], input[type=radio] { width:20px; height:20px; }

  /* шапка: не липкая (экономим экран), навигация — нижняя панель как в приложении */
  header { position:static; backdrop-filter:none; -webkit-backdrop-filter:none; gap:8px 10px; padding:calc(8px + env(safe-area-inset-top)) 10px 8px; }
  #model { display:none; }
  .acct { margin-left:auto; font-size:12px; gap:8px; flex-wrap:wrap; }
  body { padding-bottom:calc(58px + env(safe-area-inset-bottom)); }
  .nav { position:fixed; left:0; right:0; bottom:0; z-index:40; order:0; width:auto; overflow:visible; margin:0;
         background:rgba(11,14,20,.97); border-top:1px solid var(--line); padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); }
  .nav button { flex:1; border:none; border-radius:0 !important; margin:0; height:54px; padding:6px 4px; font-size:13px; color:var(--muted); background:transparent; }
  .nav button.on { color:var(--text); background:#1c2a44; box-shadow:inset 0 2px 0 var(--acc); }
  footer { font-size:10px; }

  /* крупнее зоны нажатия */
  button { min-height:40px; }
  button.mini, .tabs.mini button { min-height:34px; padding:5px 12px; }
  .tabs button { padding:9px 12px; }
  .star { min-height:0; }

  /* панель графика: одна прокручиваемая строка вместо переноса */
  .chartbar { flex-wrap:nowrap; overflow-x:auto; gap:12px; padding:6px 10px; scrollbar-width:none; }
  .chartbar::-webkit-scrollbar, .tabs.groups::-webkit-scrollbar, #tfs::-webkit-scrollbar, .dockbar::-webkit-scrollbar { display:none; }
  .chartbar > *, .chartbar label { flex:none; white-space:nowrap; }
  .chartbar .tabs.mini { margin:0; }
  .chartbar label { min-height:34px; font-size:12px; }
  .fcbadge { margin-left:0; }
  .chartctl { width:100%; gap:8px; }
  .tabs.groups { overflow-x:auto; max-width:100%; scrollbar-width:none; }
  .tabs.groups button { white-space:nowrap; }
  .picker { flex:1; min-width:0; }
  #symbol { width:100%; }
  .controls { width:100%; flex-wrap:nowrap; }
  #go { white-space:nowrap; }

  /* график и остальные блоки */
  #vChart > .chart { height:auto; min-height:0; }
  .chartwrap { flex:none; height:min(62vh, 62dvh, 520px); min-height:300px; }
  .pospanel { width:min(300px, calc(100% - 16px)); max-width:calc(100% - 16px); }
  .dock { height:240px; }
  .dockbar { overflow-x:auto; scrollbar-width:none; }
  .dockbody table { min-width:max-content; }
  #side { overflow:visible; }
  .sidetabs button { min-height:42px; }
  .chat { min-height:300px; }
  #msg { min-width:0; }
  .scrtable { max-height:none; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .scrctl { gap:10px; }
  .scrctl label { flex:1 1 130px; }
  .scrctl select, .scrctl input[type=number] { width:100%; }
  .scrctl label:has(input[type=checkbox]) { flex:none; }
  main.page { padding:8px; }
  .frow { grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); }
  .statrow.big { grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); }
  .tablewrap, .dv-scroll, .dv-canvas { -webkit-overflow-scrolling:touch; }
  .tablewrap { max-height:none; }
  .dv-bar { gap:6px; }
  .dv-pre { max-height:300px; }
  .dv-kpis { grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); }
  .src { grid-template-columns:20px 1fr 22px; } .src > :nth-child(3) { grid-column:2 / -1; }
  .card { padding:11px; }
  .plist { position:fixed; left:10px; right:10px; width:auto; top:auto; max-height:55dvh; margin-top:4px; }
}
@media (max-width:560px) {
  .brand { font-size:15px; }
  .grid { gap:6px; }
  .dv-cols, .dv-cols2 { gap:12px; }
  .dv-strip { gap:6px; padding:6px 8px; }
  .dv-st { min-width:58px; }
  .pi { grid-template-columns:1.3fr 1fr .8fr; } .pi span:last-child { display:none; }
}
@media (max-height:480px) and (orientation:landscape) {
  .chartwrap { height:calc(100dvh - 80px); min-height:220px; }
}
/* на устройствах без мыши подсказки по наведению не нужны, а рамки hover «залипают» */
@media (hover:none) {
  button:hover { border-color:var(--line); }
  button.primary:hover { border-color:var(--acc); }
  .tabs button.on:hover, button.mini.on:hover { border-color:var(--acc); }
}
