:root{--bg:#0B0F14;--panel:#121821;--line:#1E2733;--text:#D6DEE8;--muted:#8593A3;--up:#3DDC84;--down:#FF6B6B;--acc:#F5B700;
--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,"Roboto Mono",monospace;
--sans:-apple-system,"Segoe UI","IBM Plex Sans",system-ui,sans-serif}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%}
a{color:var(--text);text-decoration:none}
.mono{font-family:var(--mono)}.muted{color:var(--muted)}.up{color:var(--up)}.down{color:var(--down)}
.top{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(6px + env(safe-area-inset-top)) 16px 6px;background:var(--bg);border-bottom:1px solid var(--line)}
.logo{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:.1em;min-height:44px}
.sq{width:10px;height:10px;background:var(--acc);display:inline-block}
.top-r{display:flex;gap:16px;align-items:center;font-family:var(--mono);font-size:11px}
.top-r a{color:var(--muted);padding:14px 0}.top-r a.on{color:var(--acc)}
.wrap{max-width:1100px;margin:0 auto;padding:16px 16px calc(90px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px}
h1{font-family:var(--mono);font-size:15px;letter-spacing:.08em;margin:4px 0 0;color:var(--acc)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:12px}
.ph{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;margin-bottom:10px;gap:8px}
.ph .t{color:var(--acc);font-weight:600;letter-spacing:.08em}.ph a{color:var(--muted);padding:8px 0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.stub{font-family:var(--mono);font-size:12px;line-height:1.5;color:var(--muted);padding:18px 12px;text-align:center;border:1px dashed var(--line);border-radius:4px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:13px;white-space:nowrap}
th{text-align:left;font-size:10px;color:var(--muted);font-weight:400;padding:6px;border-bottom:1px solid var(--line)}
td{padding:8px 6px;border-bottom:1px solid var(--line)}
form.f{display:flex;flex-direction:column;gap:12px}
label{font-family:var(--mono);font-size:11px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
label.chk{flex-direction:row;align-items:center;gap:10px;min-height:44px}
label.chk input{width:20px;height:20px;accent-color:var(--acc)}
input[type=text],input[type=password]{background:var(--bg);border:1px solid var(--line);color:var(--text);font:16px var(--mono);padding:11px 12px;border-radius:4px;min-height:44px;width:100%}
input.mini{width:150px;min-height:36px;padding:6px 8px}
input:focus{outline:1px solid var(--acc);border-color:var(--acc)}
button{background:var(--acc);color:#0B0F14;border:0;border-radius:4px;font:600 13px var(--mono);letter-spacing:.06em;padding:12px 16px;min-height:44px;cursor:pointer}
button.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}
button.small{min-height:36px;padding:6px 10px;font-size:11px}
.msg{font-family:var(--mono);font-size:12px;padding:10px 12px;border:1px solid var(--line);border-radius:4px}
.msg.err{color:var(--down);border-color:var(--down)}.msg.ok{color:var(--up);border-color:var(--up)}
.disc{font-size:11px;color:#6B7889;text-align:center;margin:8px 0}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));background:var(--bg);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:60px;font-size:10px;color:var(--muted)}
.tabs a.on{color:var(--acc)}
.tabs svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.login{min-height:100vh;display:grid;place-items:center;padding:24px}
.login .panel{width:100%;max-width:360px;padding:20px}
/* MOEXLAB-SEASON */
.acc{color:var(--acc)}
.small{font-size:11px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{background:transparent;color:var(--muted);border:1px solid var(--line);min-height:38px;padding:6px 10px;font-size:11px}
.chip.on{color:#0B0F14;background:var(--acc);border-color:var(--acc)}
.filters{display:flex;flex-direction:column;gap:10px}
label.inl{flex-direction:row;align-items:center;gap:6px}
select{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:4px;font:16px var(--mono);min-height:38px;padding:4px 6px}
input.q{width:120px;min-height:38px;padding:6px 8px;text-transform:uppercase}
table.st th[data-k]{cursor:pointer}
table.st th.sorted{color:var(--acc)}
table.st tbody tr{cursor:pointer}
table.st tbody tr:active{background:#18202B}
table.st th:first-child,table.st td:first-child{position:sticky;left:0;background:var(--panel)}
table.mini td{padding:7px 6px}
.meta{font-size:11px;line-height:1.7;color:var(--muted)}
.foot{font-size:11px;margin-top:10px}
.banner{border:1px solid var(--acc);border-radius:4px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;color:var(--acc)}
.pbar{height:6px;background:var(--line)}
.pbar div{height:6px;background:var(--acc);transition:width .4s}
.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 10px;font-family:var(--mono);margin-bottom:12px}
.kv span{display:block;font-size:10px;color:var(--muted);margin-bottom:2px}
.kv b{font-size:15px;font-weight:600}
.chart{margin:4px 0}
.bars{display:block}
.bars .zero{stroke:#3A4656;stroke-width:1}
.bars .bu{fill:var(--up)}
.bars .bd{fill:var(--down)}
.bars .bt{fill:#5B6778}
.bars text{font-family:var(--mono);font-size:9px;fill:var(--muted)}
.legend-line{font-size:10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0}
.sw{display:inline-block;width:10px;height:10px}
.sw.bu{background:var(--up)}
.sw.bt{background:#5B6778}
details summary{cursor:pointer;padding:10px 0;font-size:11px}
details.legend p{font-size:12px;line-height:1.6;color:var(--muted);margin:6px 0}
button:disabled{opacity:.4;cursor:default}
[hidden]{display:none !important}
/* MOEXLAB-PF */
a.chip{display:inline-flex;align-items:center;font:600 11px var(--mono);letter-spacing:.06em;border-radius:4px}
.lchart{display:block;width:100%;max-width:760px;height:auto}
.lchart .grid{stroke:#1E2733;stroke-width:1}
.lchart .grid.one{stroke:#3A4656}
.lchart .tick{stroke:#161D27;stroke-width:1}
.lchart text{font-family:var(--mono);font-size:8px;fill:var(--muted)}
.lchart .band{fill:#1E2733}
.lchart .pm{fill:none;stroke:#5B6778;stroke-width:1;stroke-dasharray:3 3}
.lchart .li{fill:none;stroke:#4DA3FF;stroke-width:1.3}
.lchart .ls{fill:none;stroke:var(--acc);stroke-width:1.8}
.lchart .dda{fill:var(--acc);opacity:.35}
.lchart .ddi{fill:none;stroke:#4DA3FF;stroke-width:1.2}
.bars .ba{fill:var(--acc)}
.bars .bi{fill:#4DA3FF}
.sw.sa{background:var(--acc)}
.sw.si{background:#4DA3FF}
.sw.sb{background:#1E2733;border:1px solid #3A4656}
td.wrap-cell{white-space:normal;min-width:150px;font-size:11px;color:var(--muted)}
/* MOEXLAB-CORR */
table.hm{border-collapse:separate;border-spacing:2px;font-family:var(--mono);white-space:nowrap;width:auto}
table.hm th{font-size:9px;color:var(--muted);font-weight:400;padding:0 2px;border:0}
table.hm th.v{writing-mode:vertical-rl;transform:rotate(180deg);height:48px;vertical-align:bottom;text-align:left}
table.hm th.h{text-align:right;padding-right:4px;position:sticky;left:0;background:var(--panel);z-index:1}
table.hm td{width:28px;min-width:28px;height:26px;padding:0;text-align:center;font-size:9px;border:0;border-radius:2px}
table.hm td a{display:block;line-height:26px;color:var(--text)}
table.hm td.dk a{color:#0B0F14;font-weight:600}
table.hm td.diag{background:#161D27}
.lchart .rl26{fill:none;stroke:#7A8899;stroke-width:1}
.lchart .rl52{fill:none;stroke:var(--acc);stroke-width:1.8}
.lchart .rfull{stroke:#D6DEE8;stroke-width:1;stroke-dasharray:4 3}
.lchart .lva{fill:none;stroke:var(--acc);stroke-width:1.5}
.lchart .lvb{fill:none;stroke:#4DA3FF;stroke-width:1.5}
.sw.s26{background:#7A8899}
.sw.sf{background:transparent;border-top:2px dashed #D6DEE8;height:0}
