/* Option Radiant — оформление в духе инженерного чертежа.
   Палитра из семейства Prime Radiant: основа hsl(240 10% 4%), золото hsl(45 100% 50%).
   Принципы: волосяные линии вместо заливок, угловые засечки у блоков, моноширинные
   цифры с табличными знаками, прописные разрядки в подписях, прямые углы. */

@font-face{font-family:'Rajdhani';src:url('vendor/rajdhani-600-latin.woff2') format('woff2');
           font-weight:600;font-display:swap}
@font-face{font-family:'Rajdhani';src:url('vendor/rajdhani-700-latin.woff2') format('woff2');
           font-weight:700;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('vendor/jbmono-latin.woff2') format('woff2');
           font-weight:100 800;font-display:swap;
           unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2212}
@font-face{font-family:'JetBrains Mono';src:url('vendor/jbmono-cyrillic.woff2') format('woff2');
           font-weight:100 800;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491}

:root{
  --bg:#0a0a0f; --card:#0e0e14; --panel:#0c0c12;
  --line:#22222b; --line2:#2e2e3a; --grid:rgba(255,191,0,.032);
  --tx:#e9e9e4; --mut:#8b8b93; --dim:#5f5f69;
  --acc:#d9a441; --brand:#ffbf00; --ok:#3fbf85; --warn:#e07a5f; --live:#6aa9d9;
  --fl-king:#8fa3c4; --fl-ind:#b08fd6;
  --ai:#a78bfa;                       /* всё, что пишет языковая модель */
  /* заливка прошлой эпохи: на тёмном — светлее фона, на белом — темнее */
  --past:rgba(150,162,196,.20);
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
}
/* Светлая тема — только переопределение переменных: все цвета в проекте идут через
   них, поэтому отдельной вёрстки не нужно. Золото и зелень взяты темнее: #ffbf00
   и #3fbf85 на белом не читаются. */
html[data-theme="light"]{
  --bg:#f7f7f4; --card:#ffffff; --panel:#fcfcfa;
  --line:#e2e2d9; --line2:#cdcdc2; --grid:rgba(150,110,0,.05);
  --tx:#17171a; --mut:#66666e; --dim:#90909a;
  --acc:#9a6f0f; --brand:#8a6200; --ok:#1c8155; --warn:#b34527; --live:#2b6795;
  --fl-king:#3f5480; --fl-ind:#6b3f9e;
  --ai:#6d28d9;
  --past:rgba(55,65,95,.13);
}
html[data-theme="light"] body{color-scheme:light}

*{box-sizing:border-box}
body{
  margin:0;background:var(--bg);color:var(--tx);
  font:13.5px/1.55 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  /* миллиметровка: мелкая сетка и крупная разметка поверх */
  background-image:
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px),
    linear-gradient(rgba(255,191,0,.018) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,191,0,.018) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px;
}
.wrap{max-width:1580px;margin:0 auto;padding:22px 20px 70px}
.row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.between{justify-content:space-between}
a{color:inherit;text-decoration:none}

/* --- цифры чертёжным шрифтом, с табличными знаками */
.mono,td,th,.sc,.tk,input[type=number],.bar+span,.lv b,.mt b{font-variant-numeric:tabular-nums}
td,th,.sc,.lv b{font-family:var(--mono)}

/* --- фирменный блок */
.hdr{align-items:flex-start;margin-bottom:4px}
/* Строка статуса переносится, а не раздвигает страницу. С nowrap на 601–1130 px строка «рынок закрыт ·
   данные на 13.10 · пропущено 1 торговый день, докачаны…» была шире окна, и вся страница уезжала вбок
   на 33 px (ревью 0.24.0). Рядом с логотипом блок занимает остаток ряда и может сжаться (min-width:0):
   иначе флекс-элемент не уже своей самой длинной строки, а полоса прогресса держит её одной строкой. */
.hright{text-align:right;min-width:0;max-width:100%}
.hright .sub{white-space:normal;overflow-wrap:anywhere}
@media(min-width:901px){.hright{flex:1 1 360px}}
/* Логотип ростом с блок «название + раздел»: 28px имя + 3px отступ + 14px подпись. */
.brand{display:flex;align-items:center;gap:15px}
.logo{width:52px;height:52px;flex:none}
.bname{font-family:'Rajdhani',-apple-system,sans-serif;font-size:28px;font-weight:700;
       letter-spacing:.05em;color:var(--brand);line-height:1;text-transform:uppercase}
.bsec{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--mut);margin-top:3px}
.sub{color:var(--mut);font-size:11.5px;font-family:var(--mono)}
.brand .sub{margin-top:4px;color:var(--dim)}
@media(max-width:900px){.hdr{flex-direction:column}.hright{text-align:left}}
/* B82: телефон. До 11.10.2026 у страниц не было meta viewport, и на телефоне вся морда
   верстается шириной ~1140 px и ужималась целиком. Теперь ширина настоящая — значит,
   шапка обязана переноситься: строка статуса и ряд кнопок, подпись под логотипом. */
@media(max-width:600px){
  .hright .row{flex-wrap:wrap;justify-content:flex-start}
  .bname{font-size:22px}
  .bsec{letter-spacing:.1em;white-space:normal}
  .logo{width:44px;height:44px}
  /* подписи легенды длинные («прокол фитилём ниже средней − 1 ATR…») — переносятся */
  .legend .lg{white-space:normal}
}

/* --- заголовки разделов: прописные с разрядкой и линией до края */
h1{font-size:19px;font-weight:500;margin:0}
h1[style*="16px"]{font-size:12px!important;letter-spacing:.2em;text-transform:uppercase;
                  color:var(--mut);font-weight:500;display:flex;align-items:center;gap:12px}
h1[style*="16px"]::after{content:"";flex:1;height:1px;background:var(--line);min-width:24px}
h1[style*="16px"] .sub{text-transform:none;letter-spacing:0}

/* --- блоки с угловыми засечками, как рамка чертежа */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:2px;
       padding:15px 17px;margin:14px 0;position:relative}
.panel::before,.panel::after{content:"";position:absolute;width:9px;height:9px;pointer-events:none}
.panel::before{top:-1px;left:-1px;border-top:1px solid var(--brand);border-left:1px solid var(--brand);opacity:.5}
.panel::after{bottom:-1px;right:-1px;border-bottom:1px solid var(--brand);border-right:1px solid var(--brand);opacity:.5}

.grp{display:flex;flex-direction:column;gap:7px;margin-right:20px}
.grp>label{color:var(--dim);font-size:10px;text-transform:uppercase;letter-spacing:.16em}

/* --- переключатели: прямоугольные, волосяная рамка */
.chips{display:flex;gap:5px;flex-wrap:wrap;max-width:660px}
.chip{padding:3px 10px;border:1px solid var(--line2);border-radius:2px;cursor:pointer;
      font-size:11.5px;color:var(--mut);user-select:none;background:transparent;
      font-family:var(--mono);letter-spacing:.02em;transition:border-color .12s,color .12s}
.chip:hover{border-color:var(--acc);color:var(--tx)}
.chip.on{background:rgba(255,191,0,.1);border-color:var(--brand);color:var(--brand)}
.chip.dim{opacity:.5}

button{background:transparent;color:var(--tx);border:1px solid var(--line2);border-radius:2px;
       padding:7px 14px;cursor:pointer;font-size:11.5px;font-family:var(--mono);
       text-transform:uppercase;letter-spacing:.1em}
button:hover{border-color:var(--brand);color:var(--brand)}
button:disabled{opacity:.4;cursor:default}

input[type=number]{background:transparent;color:var(--tx);border:1px solid var(--line2);
                   border-radius:2px;padding:5px 7px;width:66px;font-family:var(--mono)}
/* ползунок: тонкий рельс и квадратный бегунок */
input[type=range]{-webkit-appearance:none;width:132px;height:14px;background:transparent}
input[type=range]::-webkit-slider-runnable-track{height:1px;background:var(--line2)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:9px;height:14px;
  background:var(--brand);border-radius:1px;margin-top:-6.5px;cursor:pointer}
.grp .row>span{font-family:var(--mono);font-size:12px;color:var(--tx);min-width:34px}

/* --- карточки */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(236px,1fr));gap:11px}
.card{background:var(--card);border:1px solid var(--line);border-radius:2px;padding:12px 13px;
      cursor:pointer;position:relative;transition:border-color .12s}
.card::before{content:"";position:absolute;top:-1px;left:-1px;width:7px;height:7px;
              border-top:1px solid var(--brand);border-left:1px solid var(--brand);opacity:.32}
.card:hover{border-color:var(--acc)}
.card.sel,.card.sel:hover{border-color:var(--brand)}
.card .tk{font-family:'Rajdhani',sans-serif;font-size:19px;font-weight:700;letter-spacing:.03em}
.card .sc{float:right;color:var(--brand);font-weight:600;font-size:14px}
/* B20: голое число у тикера читали вслух как «86,5 % вероятности» (автор метода,
   16.09.2026). Подпись — как в таблице. Селектор длиннее .card .sc намеренно:
   короче — и цвет съест правило балла, как уже было с .lg b и .spin [hidden]. */
.card .sc .scl{font-style:normal;font-size:9.5px;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--dim);margin-right:5px;vertical-align:1px}
/* 🔴 Светофор обязан быть НЕ МЕНЕЕ специфичным, чем `.card .sc`, иначе тот
   молча съедает цвет и все три состояния выходят янтарными. Это третий случай
   того же класса в проекте: раньше так же съедали `.lg b` и `.spin [hidden]`.
   Одиночный класс против составного селектора не работает — проверять глазами. */
.card .sc.pos{color:var(--ok)}
.card .sc.neg{color:var(--warn)}
.card .sc.warn{color:var(--brand)}
.card .sc.mut{color:var(--dim)}
.card .sc .shown-tag{color:var(--live);font-weight:500;font-size:11px;margin-left:8px}
/* B270: причина жёлтого — словом на самом бейдже («с оговоркой · по краям −28 % кредита»), мельче слова светофора */
.card .sc .scWhy{font-weight:500;font-size:11px}
.card .sc .scW{white-space:nowrap}
/* …и тогда бейдж — своей строкой под заголовком, а не плавающим справа: рядом с заголовком причина не влезает */
.card .sc.scHasWhy{float:none;display:block;margin:2px 0 4px;line-height:1.35}
.card .bz{color:var(--dim);font-size:11px;height:15px;overflow:hidden;margin-bottom:7px}
.card .mt{font-size:11.5px;color:var(--mut)}
.card .mt b{color:var(--tx);font-weight:500;font-family:var(--mono)}

/* --- таблица: волосяные линейки, прописные заголовки */
table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:right;color:var(--dim);font-weight:500;padding:7px 8px;
   border-bottom:1px solid var(--line2);position:sticky;top:0;background:var(--bg);
   cursor:pointer;white-space:nowrap;font-size:10px;text-transform:uppercase;
   letter-spacing:.12em;font-family:-apple-system,sans-serif}
th:hover{color:var(--brand)}
th:first-child,td:first-child{text-align:left}
th.a,td.a{text-align:left}
td{padding:5px 8px;border-bottom:1px solid rgba(34,34,43,.55);white-space:nowrap;color:var(--mut)}
td:first-child,td:nth-child(2){color:var(--tx)}
tr:hover td{background:rgba(255,191,0,.045);cursor:pointer}
tr.sel td{background:rgba(255,191,0,.07)}

.tag{font-size:9px;padding:1px 5px;border-radius:2px;border:1px solid var(--line2);
     color:var(--dim);margin-left:5px;text-transform:uppercase;letter-spacing:.08em}
.tag.d{border-color:var(--warn);color:var(--warn)}
.tag.u{border-color:var(--live);color:var(--live)}
.pos{color:var(--ok)}.neg{color:var(--warn)}.mut{color:var(--dim)}
/* Бейджи скринера Дмитрия в шапке карточки: вес в S&P 500 и захват к Королю (B44). */
.bdgs{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}
.bdgs:empty{display:none}
.bdg{font-size:11px;padding:1px 8px;border-radius:10px;border:1px solid var(--line2);
     color:var(--mut);cursor:help;font-variant-numeric:tabular-nums;white-space:nowrap}
.bdg.heavy{border-color:var(--live);color:var(--live)}
/* Светофор карточки: зелёный — можно, янтарный — с оговоркой, красный — нельзя.
   Красный у нас уже есть в .neg (переменная исторически названа --warn),
   а янтарный берём из --brand: он в палитре есть и ни с чем не путается. */
.warn{color:var(--brand)}
/* Связь в легенде ленты: тусклый — не «плохо», поэтому красного тут нет.
   Селектор с .lg обязателен: правило .lg b выше по специфичности и молча съедает
   одиночный класс — так же, как .spin съедал [hidden]. */
.cg{color:var(--ok)}.cy{color:var(--brand)}
.lg b.cg{color:var(--ok)}.lg b.cy{color:var(--brand)}.lg b.mut{color:var(--dim)}
/* Этажи каскада. Отделены чертой сверху: это не ещё одна метрика бумаги,
   а контекст над ней — Король и отрасль. */
.card .fl,.fl{margin-top:6px;padding-top:5px;border-top:1px solid var(--line);letter-spacing:.02em}
/* Цвет ставится тут, а не общими .pos/.neg: правило `.card .mt b` их перебивает
   по специфичности, и подписи этажей рисовались обычным текстом. */
.fl b.pos{color:var(--ok)}.fl b.neg{color:var(--warn)}
/* Шкалы синхронизации: пять сегментов, заполнено — набранные баллы. */
.syw{margin-top:7px;padding-top:6px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:1fr 1fr;gap:4px 8px}
/* Подпись фиксированной ширины, иначе шкалы разъезжаются и сравнивать их глазом
   становится нельзя — а сравнение и есть весь смысл. */
.sy{display:grid;grid-template-columns:60px 1fr 9px;align-items:center;gap:5px;
  font-size:10px;color:var(--mut);white-space:nowrap}
.sy .syl{overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em}
.sy .syb{display:flex;gap:2px}
.sy .syb i{flex:1 1 0;min-width:0;height:5px;background:var(--line);border-radius:1px}
/* Светофор: 4–5 зелёный, 3 жёлтый, 1–2 красный. */
.sy .syb.g i.on{background:var(--ok)}
.sy .syb.y i.on{background:var(--brand)}
.sy .syb.r i.on{background:var(--warn)}
.sy .syn{font-family:var(--mono);color:var(--tx);text-align:right}
.sy .syn.g{color:var(--ok)}.sy .syn.y{color:var(--brand)}.sy .syn.r{color:var(--warn)}

/* Кнопка «i» — та же, что могла бы стоять у любого непонятного числа. */
.iq{width:17px;height:17px;padding:0;line-height:15px;border-radius:50%;
  border:1px solid var(--line);background:transparent;color:var(--mut);
  font-size:10px;font-style:italic;cursor:pointer}
.iq:hover{border-color:var(--acc);color:var(--acc)}

/* --- график и уровни */
#chartWrap{display:none}
#chart{height:430px;border:1px solid var(--line);border-radius:2px;overflow:hidden}
/* Вынесенные наверх этажи занимают примерно треть шкалы. Если не добавить высоты,
   свечи ужимаются ровно на эту треть — поэтому полю дают пиксели, а не терпят сжатие. */
#chart.withFloors{height:560px}
#chart.withFloors2{height:660px}
.lv{display:flex;gap:18px;flex-wrap:wrap;font-size:11.5px;color:var(--dim);margin-top:10px;
    text-transform:uppercase;letter-spacing:.08em}
.lv b{color:var(--tx);font-weight:500;text-transform:none;letter-spacing:0}

.bar{height:3px;background:#191922;border-radius:0;overflow:hidden;width:220px}
.bar i{display:block;height:100%;background:var(--brand);width:0}

.foot{color:var(--dim);font-size:11px;margin-top:30px;border-top:1px solid var(--line);
      padding-top:14px;line-height:1.7}
.foot code{font-family:var(--mono);color:var(--mut)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:1100px){.split{grid-template-columns:1fr}}

::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:0}
::-webkit-scrollbar-thumb:hover{background:var(--acc)}

/* --- легенда графика */
.legend{display:flex;flex-wrap:wrap;gap:7px 20px;margin-top:11px;font-size:11px;color:var(--mut)}
.lg{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.lg b{color:var(--tx);font-weight:500}
.lg .sw{display:inline-block;width:20px;height:2px;flex:none}

/* --- опционная карточка: слева описание, справа увеличенный сетап */
.opt-split{display:grid;grid-template-columns:minmax(440px,1fr) minmax(460px,1.05fr);gap:16px;align-items:start}
.card[data-kind]{cursor:pointer}
.card.shown{border-color:var(--live)}
.card.shown::after{content:"";position:absolute;bottom:-1px;right:-1px;width:7px;height:7px;
                   border-bottom:1px solid var(--live);border-right:1px solid var(--live)}
.opt-right{position:sticky;top:12px}
.cards.cons{grid-template-columns:repeat(auto-fill,minmax(212px,1fr))}
/* Две формулы пут-спреда рядом (B77): одна строка, чтобы их было видно как пару. */
.cards.cons.ps{grid-template-columns:1fr 1fr}
@media(max-width:520px){.cards.cons.ps{grid-template-columns:1fr}}
.lv.ladder,.lv.sizing{display:block;margin:8px 0 0;text-transform:none;letter-spacing:0}
.lv.ladder > div,.lv.sizing > div{margin-top:3px}
/* Е2/Е3/Е1 (план «на карточке только отличия», 19.10.2026): «Волатильность», строки отказов под «почему» и общее пары
   пут-спреда — строками, а не капсом во flex-ряду (девять строк капсом читались одной стеной) */
.lv.vol,.lv.rej,.lv.pairCom{display:block;text-transform:none;letter-spacing:0}
.lv.vol{margin:0 0 10px}.lv.rej{margin-top:10px}.lv.pairCom{margin:6px 0 2px}
.lv.vol > div,.lv.rej > div,.lv.pairCom > div{margin-top:3px}
/* справочные числа — серым целиком: `.lv b` (цвет текста) иначе перебивает серый строки, и «справка» на телефоне
   (подсказок нет) читалась бы как мера */
.lv.vol .mut b,.lv.pairCom .mut b{color:var(--dim)}
.lv.vol .warn b{color:var(--brand)}
.lv.ladder b.neg{color:var(--warn)}
/* Цвет в строках карточки: правило `.card .mt b` перебивает общие .pos/.neg по
   специфичности, и «ДЕБЕТ» по краям рисовался обычным текстом. */
.card .mt b.pos{color:var(--ok)}.card .mt b.neg{color:var(--warn)}
/* Приёмка 16.10: в «ждём касания» главный блок пары — план на касании; сегодняшний спред — мелкой справкой
   под чертой, приглушённо, с янтарной пометкой «не план». Крупно — только то, что откроем по методу. */
.card.plan .planHd{color:var(--tx);margin:2px 0 3px;letter-spacing:.02em}
.card.plan .planHd b{color:var(--brand)}
.card.plan .today{margin-top:8px;padding-top:6px;border-top:1px dashed var(--line);font-size:10.5px;
  line-height:1.45;color:var(--dim)}
.card.plan .today .warn{color:var(--brand)}
.card.plan .today .mt{font-size:10.5px;margin-top:3px !important}
@media(max-width:1200px){.opt-split{grid-template-columns:1fr}.opt-right{position:static}}

/* Жемчужина: сошлись закономерность, зона входа и дорогая премия. Метка — только
   звезда: рамка вокруг карточки спорила с рамками остальных и рябила в глазах. */
.pearl { color: var(--brand); margin-left: 6px; font-size: 13px; line-height: 1; }
/* B130: жемчужина, у которой пут-спред по сводке цепочек не собирается — звезда серая,
   рядом подпись. Определение то же; серый — «по графику и премии да, сделки нет». */
.pearl.off{color:var(--dim)}
/* B147 (Макс 12.10.2026): цепочку не проверяли — полая ☆ того же цвета: по графику и премии да,
   а собирается ли сделка — неизвестно */
.pearl.hollow{color:var(--brand)}
.pearlNo{margin-left:6px;font-size:10px;color:var(--warn);letter-spacing:.02em;white-space:nowrap;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.card .pearlLn{margin:-1px 0 2px;line-height:1.3}
.card .pearlLn .pearlNo{margin-left:0}
/* B62: подпись этажа — во всю ширину сетки карточек и строкой таблицы */

/* Крутилка пересчёта. Показывается сразу при движении ползунка, ещё до запроса:
   на сервере пересчёт занимает заметное время, и тишина читается как «сломалось». */
/* Без этой строки крутилка не гасла: `display:inline-block` специфичнее, чем
   `display:none` у [hidden] из таблицы браузера, и перебивало его. Атрибут при этом
   проставлялся верно — то есть поломка была видна только глазами, не в коде. */
.spin[hidden]{display:none}
.spin{display:inline-block;width:11px;height:11px;margin-right:7px;vertical-align:-1px;
  border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;
  animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Ссылка «всё равно показать» жила внутри .mut и наследовала приглушённый цвет —
   её находили случайно. */
#unlinked a{color:var(--brand);text-decoration:none;border-bottom:1px dotted var(--brand)}
#unlinked a:hover{color:var(--acc);border-bottom-color:var(--acc)}
/* Переключатель темы. Символ меняется в app.js. */
#theme{min-width:34px}
/* журнал обновлений: колонки текстовые — влево и с переносом в «итоге» */
.tbl.hist th{text-align:left}
.tbl.hist td:last-child{white-space:normal}
/* поиск по тикеру: поле в шапке и строки разбора */
.tkfind{width:110px;padding:6px 8px;background:var(--card);border:1px solid var(--line2);color:var(--tx);
  font:inherit;border-radius:2px;text-transform:uppercase}
.tkfind:focus{outline:none;border-color:var(--brand)}
.tkfind::placeholder{text-transform:none;color:var(--dim)}
.tkrow{padding:9px 10px;border:1px solid var(--line);border-radius:2px;margin-bottom:6px;cursor:pointer;font-size:12.5px}
.tkrow:hover{border-color:var(--brand)}

/* B121: план на касании в фазе «далеко» — свёрнутая справка под карточкой опционов */
#optBody summary{cursor:pointer}
#optBody summary:hover{color:var(--tx)}

/* Кофе, пока идёт проверка цепочек. Уровень — настоящий прогресс (сколько бумаг
   проверено), волна, капли и пар — только для глаза. Всё через переменные темы:
   в светлой теме золото темнее, и кофе вместе с ним. */
.brew{display:flex;align-items:center;gap:14px;margin-top:12px;padding:10px 12px;
  border:1px solid var(--line);border-radius:2px;background:var(--card)}
.brew[hidden]{display:none}
.brew .cup{width:58px;height:69px;flex:none;overflow:visible}
.brew .ln{fill:none;stroke:var(--mut);stroke-width:1;vector-effect:non-scaling-stroke}
.brew .cupl{stroke:var(--tx)}
.brew .tick{fill:none;stroke:var(--brand);stroke-width:1}
.brew .wave{fill:var(--brand);opacity:.82;animation:brewWave 2.6s linear infinite}
.brew .lvl{transition:transform .9s cubic-bezier(.3,.7,.4,1)}
.brew .drop{fill:var(--brand);opacity:0}
.brew .steam{fill:none;stroke:var(--dim);stroke-width:1.1;stroke-linecap:round;opacity:0}
.brew.on .drop{animation:brewDrip 1s cubic-bezier(.5,0,.9,.6) infinite}
.brew.on .d2{animation-delay:.5s}
.brew.on .steam,.brew.done .steam{animation:brewSteam 2.8s ease-in-out infinite}
.brew .s2{animation-delay:1.4s !important}
.brew.done .steam{animation-iteration-count:3}
.brew.stop .wave{animation:none}
.brew .brewHead{font-size:12px;letter-spacing:.16em;text-transform:uppercase}
/* 0.25.0: чашка живёт только на главной, а там нет ни красного, ни зелёного: готово — нейтрально,
   пауза и ошибка — янтарём (это оговорка, а не тревога) */
.brew.done .brewHead{color:var(--tx)}
.brew.stop .brewHead{color:var(--brand)}
@keyframes brewWave{to{transform:translateX(-36px)}}
@keyframes brewDrip{0%{transform:translateY(0);opacity:0}12%{opacity:1}
  85%{opacity:1}100%{transform:translateY(17px);opacity:0}}
@keyframes brewSteam{0%{transform:translateY(3px);opacity:0}35%{opacity:.75}
  100%{transform:translateY(-7px);opacity:0}}
@media (prefers-reduced-motion:reduce){
  .brew .drop,.brew .steam{display:none}
  .brew .wave{animation:none}
  .brew .lvl{transition:none}
}

/* Значок AI у Р. Дмитрия: видно, где текст пишет языковая модель, а где считает код.
   Пока идёт запрос к модели — мигает. При «уменьшить движение» — просто стоит. */
.ai-tag{display:inline-flex;align-items:center;gap:5px;margin-left:10px;padding:1px 7px;
  border:1px solid var(--ai);border-radius:2px;color:var(--ai);font:500 10px/16px var(--mono);
  letter-spacing:.16em;vertical-align:3px;cursor:help}
.ai-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ai)}
.ai-tag.thinking{animation:aiPulse 1s ease-in-out infinite}
@keyframes aiPulse{0%,100%{opacity:1;box-shadow:0 0 0 0 transparent}
  50%{opacity:.3;box-shadow:0 0 10px 1px var(--ai)}}
@media (prefers-reduced-motion:reduce){.ai-tag.thinking{animation:none}}
.dm-name{cursor:help;border-bottom:1px dotted var(--dim)}
/* Р. Дмитрий инфографикой (16.10.2026: «лаконичнее раз в 5–10»): итог дня строкой, значки вердикта и размера,
   ряд правил ✓ ✗ – со словом, конструкции строками, этажи метками, голос коротким блоком. Без красного:
   ✗ и «против» — золото (.warn), ✓ — зелень, «меры нет» — приглушённо. До 375 px — без прокрутки вбок. */
#dmBody{overflow-wrap:anywhere}
.dmHead{margin-top:8px}
.dmToday{font-size:14.5px;font-weight:600;line-height:1.35}
.dmToday.mut{color:var(--tx)}
.dmBadges{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;margin-top:5px;font-size:11.5px}
.dmB{border:1px solid var(--line2);border-radius:2px;padding:0 6px;line-height:18px;white-space:nowrap}
.dmB.pos{border-color:var(--ok)}.dmB.warn{border-color:var(--brand)}
.dmRules{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;margin-top:10px}
.dmR{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 2px 3px;border:1px solid var(--line);overflow-wrap:break-word;
  border-radius:2px;font-size:10.5px;line-height:1.2;text-align:center;color:var(--mut);cursor:help;min-width:0}
.dmR b{font-size:14px;line-height:16px;font-weight:700}
.dmR.against{border-color:var(--brand)}
.dmR.mute{opacity:.7}
.dmCons{display:grid;grid-template-columns:auto auto 1fr;gap:3px 10px;margin-top:10px;font-size:12.5px;align-items:baseline}
.dmC{display:contents}
.dmCt{white-space:nowrap}
.dmCw{white-space:nowrap}.dmCw b{font-weight:700}
.dmCy{color:var(--mut);font-size:11.5px;min-width:0}
.dmFl{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:9px;font-size:11.5px}
.dmF{border:1px solid var(--line);border-radius:2px;padding:0 6px;line-height:19px;white-space:nowrap;cursor:help;color:var(--mut)}
.dmF b{color:var(--tx);font-family:var(--mono);font-weight:500}
.dmF .dots{letter-spacing:1px;color:var(--brand)}.dmF .dots i{font-style:normal;color:var(--dim)}
.dmVoice{margin:10px 0 4px;padding:6px 10px;border-left:2px solid var(--ai);background:var(--panel);font-size:13px}
.dmVoice p{margin:4px 0}
details.dmMore{margin-top:8px}
details.dmMore>summary{cursor:pointer;color:var(--mut);font-size:12px}
@media(max-width:600px){
  .dmRules{grid-template-columns:repeat(4,minmax(0,1fr))}
  .dmCons{grid-template-columns:auto 1fr}
  .dmCy{grid-column:1/-1;margin:-2px 0 4px}
}

/* ---------------------------------------------------------------- волна 2 «ui2» */
/* B138: на телефоне фильтры свёрнуты — первым после шапки топ. На десктопе кнопки нет. */
#fltToggle{display:none}
@media(max-width:600px){
  #fltToggle{display:block;width:100%;margin:0 0 10px;text-align:left}
  #filters:not(.open){display:none}
}
/* B131: оговорка «почти тавтология» — на виду, мелко, но не прячется на узком экране */
/* B133: ссылка на другую связку той же бумаги — в карточке топа и в строке «Что открывать · весь список» */
a.altGo{color:var(--brand);text-decoration:none;border-bottom:1px dotted var(--brand)}
a.altGo:hover{color:var(--acc);border-color:var(--acc)}
.card .altLn{font-size:11px}
#dlAllBody .whAlt{white-space:normal;font-size:10.5px;line-height:1.3;max-width:24ch;margin-top:3px}
/* B21: пометка о ранге под числом — узко и с переносом, колонку не раздувает (B117) */
#dlAllBody .whRk{white-space:normal;font-size:10.5px;line-height:1.3;max-width:18ch;margin-top:3px}
/* 17.10.2026: класс порядка «с замечанием: кенгуру (4 из 7), …» под статусом строки — узко, с переносом */
#dlAllBody .whVc{white-space:normal;font-size:10.5px;line-height:1.3;max-width:24ch;margin-top:3px}
/* B139: коды и слова с расшифровкой — пунктиром, как «Р. Дмитрий» */
.abbr,.hasTip,#dlAllBody th[title]{cursor:help;text-decoration:underline dotted var(--dim);text-underline-offset:2px}
#tbl th[title]{text-decoration:underline dotted var(--dim);text-underline-offset:2px}   /* клик — сортировка */
.iqL{font-size:10.5px;color:var(--mut);cursor:pointer;margin-left:4px;border-bottom:1px dotted var(--dim)}
/* B139: словарь — раскрывается касанием, без наведения (на телефоне подсказок нет) */
details.gloss{margin:0 0 10px;font-size:11.5px;color:var(--mut)}
details.gloss summary{cursor:pointer;color:var(--mut);letter-spacing:.04em}
details.gloss dl{display:grid;grid-template-columns:minmax(110px,max-content) 1fr;gap:4px 14px;margin:8px 0 0}
details.gloss dt{color:var(--tx);font-weight:600;white-space:nowrap}
details.gloss dd{margin:0}
@media(max-width:600px){details.gloss dl{grid-template-columns:1fr}details.gloss dt{margin-top:6px}}
/* B134: масштаб графика — кнопками (колесо листает страницу); «к сегодня» горит, если вид сдвинут */
.chz{position:absolute;top:6px;left:8px;z-index:3;display:flex;gap:4px;opacity:.75}
.chz:hover{opacity:1}
.chz button{padding:1px 7px;font-size:11px;line-height:16px;min-width:22px}
.chz button.on{border-color:var(--brand);color:var(--brand)}

/* ================================================================ 0.24.0: «Сделки» и «Закономерности»
   Одна страница, два раздела по адресу. На главной — только нейтральный и янтарный: красного нет
   (память «компактные карточки»: красный — только для настоящей тревоги, а здесь её не бывает —
   дебет по краям, отчёт внутри серии, протухшие котировки — это оговорки, янтарём). */
#secDeals[hidden],#secPatterns[hidden],.sheet[hidden],#dlMsg[hidden],.dlCols[hidden],
.dlAll[hidden],#dlPx[hidden],#dlEarn[hidden],.dlBud[hidden],#dlSize[hidden],#dlNone[hidden]{display:none}

/* Вкладки разделов — под шапкой, «Картина прошлого» — отдельной страницей справа. */
.secNav{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 20px;margin:12px 0 12px;
  border-bottom:1px solid var(--line)}
.secNav a{padding:5px 1px 6px;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--mut);
  font-family:'Rajdhani',-apple-system,sans-serif;font-weight:700;font-size:15px;letter-spacing:.07em;
  text-transform:uppercase}
.secNav a:hover{color:var(--tx)}
.secNav a.on{color:var(--brand);border-bottom-color:var(--brand)}
.secNav a.tabX{margin-left:auto;font-family:var(--mono);font-weight:400;font-size:11.5px;
  letter-spacing:.02em;text-transform:none}
/* Легенда звёзд топа — своей строкой под заголовком «Топ» и кнопкой ликвидности (Макс 19.10.2026: заголовок
   раздела убран, кнопка переехала сюда). Д6: заголовки «Закономерностей» — тем же `.dlAllH` + `h2.dlH`, что у
   «Что открывать · весь список» на «Сделках»; кнопка — справа, как у счёта списка */
.patH{margin:18px 0 0}
.patH #liq{margin-left:auto}
.topLegend{margin:6px 0 8px;line-height:1.5}
.topLegend .nw{white-space:nowrap}
.topLegend .iq{vertical-align:-3px}

/* Шапка на телефоне: редкие кнопки — под «⋯» (на десктопе «⋯» нет). !important — у #refreshBox
   отображение задано в разметке, без него правило проигрывало бы. */
#hdrMore{display:none}
@media(max-width:600px){
  .hdr .rare{display:none!important}
  .hdr.showRare .rare{display:inline-block!important}
  #hdrMore{display:inline-block;min-width:38px;padding:7px 10px}
  .secNav{gap:2px 16px;margin-top:8px}
  .secNav a.tabX{margin-left:0}
}

/* --- панель рынка (0.25.0): приборная доска. Свёрнута — шапка и полоса плиток (прибор узнаётся с одного
   взгляда), раскрыта — карточка размера и шесть приборов. Цвета — только токены темы (классы g-*): «плохая»
   сторона показана контуром, а не цветом, поэтому шкала не читается как светофор. */
details.mkt{border:1px solid var(--line);border-radius:2px;background:var(--panel);margin:0 0 9px;position:relative}
details.mkt::before{content:"";position:absolute;top:-1px;left:-1px;width:9px;height:9px;pointer-events:none;
  border-top:1px solid var(--brand);border-left:1px solid var(--brand);opacity:.5}
details.mkt>summary{display:block;list-style:none;cursor:pointer;padding:8px 30px 9px 13px}
details.mkt>summary::-webkit-details-marker{display:none}
.mkH{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 10px;font-size:12px;color:var(--mut)}
.mkT{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.mkH>.mkT{color:var(--brand);font-size:11px}
/* 20.10.2026: строка «на что данные» панели — рядом с «Рынок» и переносится внутри себя; на узком экране — своей
   строкой под «Рынок» (а не «Рынок» одиноко сверху, как вышло бы у неделимого блока) */
.mkAsOf{flex:1 1 260px;min-width:0}
.mkAsOf:empty{display:none}
/* стрелка — в углу, а не в потоке: на телефоне она уезжала отдельной строкой */
.mkArr{position:absolute;top:8px;right:12px;color:var(--dim);transition:transform .15s}
details.mkt[open] .mkArr{transform:rotate(180deg)}
.mkL{margin-top:2px;font-size:11.5px;line-height:1.45;color:var(--mut);overflow-wrap:anywhere}
.mkH b,.mkL b,.mkBody b{color:var(--tx);font-weight:500;font-family:var(--mono)}
.mkBody{padding:2px 13px 11px;border-top:1px solid var(--line)}
.mkBody .mt{font-size:11.5px;line-height:1.45;color:var(--mut);margin-top:3px;overflow-wrap:anywhere}
.mkRow{margin-top:10px;font-size:11.5px;line-height:1.5;color:var(--mut);overflow-wrap:anywhere}
.mkRow .mkT{margin-right:6px}
.mkLv{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
/* B224: поле депозита рядом с уровнем — тем же видом, что числовые поля ползунков; подпись переносится на телефоне.
   Поля депозита и комиссии в карточке бумаги — тем же видом: браузерное белое поле в тёмной теме било в глаз */
.mkDep{margin-top:6px}
.mkDep input,.lv.sizing input{background:transparent;color:var(--tx);border:1px solid var(--line2);border-radius:2px;padding:3px 6px;
  width:96px;font:inherit;font-family:var(--mono);font-variant-numeric:tabular-nums}
.mkDep input:focus,.lv.sizing input:focus{outline:none;border-color:var(--brand)}
.mkDep .mut{flex:1 1 220px;min-width:0}

/* полоса плиток свёрнутой панели: от 1300 px — 9 колонок («Размер» на две, с 21.10.2026 плитка «Лидеры» — восьмая
   из девяти), 601–1299 — 5 (два ряда), телефон — 3. Ревью 21.10.2026: девять в ряд влезают только от ~1270 px —
   уже́ «КОРОЛЬ И СЕМЬЯ» уходит в многоточие, а неразрывный кусок «SPY под D10/D20 ·» (107 px) обрезается; подсказки с
   полным текстом на панели нет, прочесть было бы негде. Запас — до 1300 */
.mkStrip{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px;margin-top:7px}
.mkTile{border:1px solid var(--line);border-radius:2px;background:var(--card);padding:4px 7px 5px;min-width:0}
.mkTile.wide{grid-column:span 2}
.mkTile .tl{font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 🔴 грабля макета: это правило стоит ДО телефонного медиазапроса, иначе значение на телефоне не появится */
.mkTile .tl .ph{display:none;color:var(--tx);font-family:var(--mono);letter-spacing:0;text-transform:none}
.mkTile .tl b{color:var(--brand);font-weight:600;font-family:inherit;letter-spacing:.12em}
.mkTile .tl .tlS{display:none}
.mkTile svg{display:block;width:100%;height:24px;margin:4px 0 2px;overflow:visible}
.mkTile.wide svg{height:28px}
.mkTile .tv{font:500 10.5px/1.3 var(--mono);color:var(--tx);overflow:hidden;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
/* Макс 21.10.2026: подсказок на панели нет — обрезанное многоточием значение прочесть негде. С «Лидерами» плиток девять,
   и в узкой плитке значение переносится на вторую строку по смысловым кускам (`.nw`: «17,31» / «над ключом 12»,
   «SPY под D10/D20 ·» / «над W20/W50/W200»), не больше двух строк */
.mkTile .tv .nw{white-space:nowrap}
.mkTile .tv .mut{color:var(--mut);font-weight:400}
.mkTile .tv b{color:var(--tx)}
details.mkt[open] .mkStrip{display:none}
@media(max-width:1299px){.mkStrip{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:600px){
  .mkStrip{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .mkTile.wide{grid-column:1/-1}
  /* «Размер» — свой ряд, малых плиток с лидерами семь: последняя одна в ряду — на весь ряд, две — вторая на две
     колонки (иначе «Кал 2/4» стоит сиротой в третьем ряду). Считаем от конца: без лидеров или календаря ряды и так полные */
  .mkStrip>.mkTile:not(.wide):last-child:nth-child(3n+2){grid-column:1/-1}
  .mkStrip>.mkTile:not(.wide):last-child:nth-child(3n){grid-column:span 2}
  .mkTile{padding:3px 6px 4px}
  .mkTile svg{height:20px}
  .mkTile:not(.wide) .tv{display:none}
  .mkTile .tl .ph{display:inline}
  .mkTile .tl .tlS{display:inline}.mkTile .tl .tlF{display:none}   /* «Кал 2/4» вместо «Календарь …» */
  .mkTile .tl{letter-spacing:.05em}       /* иначе «PUT/CALL 0,88» обрезается */
}

/* раскрытая панель: карточка размера и приборы */
.mkSize{margin-top:10px;padding:9px 11px;border:1px solid var(--line);background:var(--card);border-radius:2px}
.mkSize .ih{display:flex;justify-content:space-between;gap:4px 8px;flex-wrap:wrap;align-items:baseline}
.mkSize .mkSzH{color:var(--brand);font-size:11px}
/* Макс 21.10.2026: строка уровня — первой строкой колонки текста, с тем же левым краем, что «Король растянут…»
   (в голове справа она переносилась и стояла с отступом); сверху — вровень с рисунком */
.mkSize .mkSzTx .mkSzLv{margin-top:6px;font-family:var(--mono)}
.mkSzBody{display:grid;grid-template-columns:minmax(0,460px) 1fr;gap:6px 18px;align-items:start}
.mkSzSvg svg{display:block;width:100%;max-width:460px;height:auto;margin:6px 0 4px;overflow:visible}
.mkI .how{font-size:10.5px;line-height:1.45;color:var(--dim);margin-top:3px;overflow-wrap:anywhere}
/* рисунка нет (сервер старше 0.25.0 не прислал чисел рогатки) — текст на всю ширину */
.mkSzBody.noSvg{grid-template-columns:1fr}
@media(max-width:900px){.mkSzBody{grid-template-columns:1fr}}
.mkDash{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px}
@media(max-width:1099px){.mkDash{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* с лидерами приборов семь: последний один в ряду («Календарь») — на весь ряд, а не сиротой (ревью 21.10.2026) */
/* Макс 21.10.2026: раскрытая панель на десктопе — в три ряда. Карточка размера на две трети, справа от неё — «Король и
   семья» (размер считается только по Королю — это ближайший к рогатке прибор), дальше по три: лидеры · Put/Call · VIX,
   широта · сектора · календарь. Приборы встают в общую сетку тела панели (`display:contents` у .mkDash), порядок — как в
   mktCardsTx. Сирота в последнем ряду — когда приборов 3n+2 (размер занимает две клетки первого ряда): на весь ряд */
@media(min-width:1100px){
  .mkBody{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding-top:12px}
  .mkBody>.mkSize{grid-column:span 2;margin-top:0}
  .mkBody>.mkSize .mkSzBody:not(.noSvg){grid-template-columns:minmax(0,460px) minmax(240px,1fr)}
  .mkBody>.mkDash{display:contents}
  .mkBody>.mkNote{grid-column:1/-1;margin-top:0}
  .mkDash>.mkI:last-child:nth-child(3n+2){grid-column:1/-1}
}
@media(min-width:601px) and (max-width:1099px){.mkDash>.mkI:last-child:nth-child(2n+1){grid-column:1/-1}}
@media(max-width:600px){.mkDash{grid-template-columns:1fr}}
.mkI{margin:0;padding:8px 10px 9px;border:1px solid var(--line);background:var(--card);border-radius:2px;min-width:0}
.mkI .ih{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.mkI .ih .mkT{color:var(--mut)}
.mkI .iv{font:500 12px var(--mono);color:var(--tx);white-space:nowrap}
.mkI svg{display:block;width:100%;max-width:380px;height:auto;margin:6px 0 4px;overflow:visible}
.mkI .now{font-size:11.5px;line-height:1.45;color:var(--mut);overflow-wrap:anywhere}
.mkI .now .mut{color:var(--dim)}
.mkNote{margin-top:9px;font-size:10.5px;color:var(--dim);line-height:1.45}
.mkNote:empty{display:none}
/* Г3 (19.10.2026): «как читать» у прибора — свёрнутым, раскрывается касанием (на телефоне подсказок нет) */
.mkI details.how summary{cursor:pointer;color:var(--dim);list-style:none;display:inline-block;
  border-bottom:1px dotted var(--dim)}
.mkI details.how summary::-webkit-details-marker{display:none}
.mkI details.how[open] summary{margin-bottom:2px}

/* рисунки приборов: только переменные темы, без красного; штрихи — волосяные при любом масштабе */
.g-trk{stroke:var(--line2);stroke-width:1;fill:none;vector-effect:non-scaling-stroke}
.g-off{stroke-dasharray:3 3}
.g-band{fill:var(--brand);opacity:.13}
.g-zone{fill:var(--brand);opacity:.07}
.g-tick{stroke:var(--dim);stroke-width:1;vector-effect:non-scaling-stroke}
.g-key{stroke:var(--brand);stroke-width:1.5;vector-effect:non-scaling-stroke}
.g-ema{stroke:var(--live);stroke-width:1;vector-effect:non-scaling-stroke}
.g-rub{stroke:var(--brand);stroke-width:1;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}
.g-dot{fill:var(--tx)}
.g-dot.in{fill:var(--brand)}
.g-up{fill:var(--brand)}
.g-dn{fill:none;stroke:var(--mut);stroke-width:1;vector-effect:non-scaling-stroke}
.g-bar{fill:var(--brand);opacity:.75}
.g-bar.off{fill:none;stroke:var(--mut);opacity:1;stroke-width:1;stroke-dasharray:2 1.5;vector-effect:non-scaling-stroke}
.g-now{fill:none;stroke:var(--tx);stroke-width:1.2;vector-effect:non-scaling-stroke}
.g-lbl{fill:var(--mut);font:9.5px var(--mono)}
.g-lbl.d{fill:var(--dim)}
.g-lbl.b{fill:var(--brand)}
.g-val{fill:var(--tx);font:600 10px var(--mono)}
.g-cell{fill:var(--brand)}
.g-cell.off{fill:none;stroke:var(--mut);stroke-width:1;vector-effect:non-scaling-stroke}

/* --- строка прогрева и сообщение раздела */
#warmLine{display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px;margin:0 0 12px;min-height:15px;line-height:1.45}
#warmLine:empty{margin:0}
#dlMsg{margin:4px 0 14px;font-size:12.5px;color:var(--mut)}
#dlMsg a,.dlSec a.dlGo{color:var(--brand);border-bottom:1px dotted var(--brand)}
#dlMsg a:hover,.dlSec a.dlGo:hover{color:var(--acc);border-bottom-color:var(--acc)}
/* 0.25.0: цифры счёта секции — ссылки в список ниже: видно, что кликабельно, но не кричит */
.dlStat a.dlGo{color:inherit;border-bottom:1px dotted var(--dim)}
.dlStat a.dlGo:hover{color:var(--brand);border-bottom-color:var(--brand)}
.dlOrd{font-size:10.5px;line-height:1.4;color:var(--dim);margin:-4px 0 8px}
.dlOrd:empty{display:none}
/* кофе в строке прогрева (0.25.0): та же чашка, меньше; угловые засечки — только у большой */
.brew.mini{display:inline-flex;margin:0;padding:3px 9px 3px 4px;gap:8px;vertical-align:middle;background:transparent;
  border-color:var(--line);max-width:100%}
.brew.mini .cup{width:26px;height:31px}
.brew.mini .tick{display:none}
.brew.mini .brewTx{min-width:0;line-height:1.35}
.brew.mini .brewHead{font-size:10.5px;letter-spacing:.14em;display:inline}
.brew.mini .brewSub{font-size:11px;overflow-wrap:anywhere}
.brew.mini .brewSub button{margin-left:6px}
.brew.mini.stop .brewHead{color:var(--brand)}
button.dlCheck{padding:3px 10px;font-size:10.5px}

/* --- три секции: от 1100 px — колонками, ниже — друг под другом (карточки сеткой), на телефоне — в столбик */
.dlCols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start}
.dlHead{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-bottom:9px;padding-bottom:5px;
  border-bottom:1px solid var(--line)}
.dlH{margin:0;font-family:'Rajdhani',-apple-system,sans-serif;font-size:18px;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--tx)}
.dlStat{font-size:11px;line-height:1.4}
.dlStat b{color:var(--tx);font-weight:500}
.dlCards{display:grid;grid-template-columns:1fr;gap:9px}
.dlCards:empty{display:none}
/* Голова карточки сделки: справа — правила автора словами («чисто · стартовый»), нейтрально; «с замечанием» —
   янтарём. Селекторы длиннее `.card .sc` намеренно: иначе он съест цвет (см. светофор выше). */
.card.dl .sc{color:var(--mut);font-family:var(--mono);font-size:11px;font-weight:500;margin-top:5px}
.card.dl .sc.warn{color:var(--brand)}
/* приёмка 16.10: «с замечанием: кенгуру, история 4 года · стартовый» длиннее строки — голова переносится целиком
   (вердикт уходит строкой под тикер), а не плавающим блоком, который сжимал строку «имя · ТФ · средняя» */
.card.dl .dlTop{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 10px}
.card.dl .dlTop .sc{float:none;margin-top:0;line-height:1.4}
#dlPx{margin:0 0 10px;font-size:11px;line-height:1.45}
#dlPx .mut{color:var(--dim)}
/* А3: календарь отчётов страницы — под режимом цен, тем же шрифтом; А4: бюджет секции — под головой секции;
   А6: разделитель группы LEAPS — серой строкой с чертой, как подпись, а не карточка */
#dlEarn{margin:-6px 0 10px;font-size:11px;line-height:1.45}
/* остаток аудита 0.25.8: депозит и уровень страницы — под режимом цен тем же шрифтом; причина пустоты всех трёх секций —
   словами пустой секции (`.dlEmpty .mt`), но один раз над ними */
#dlSize{margin:-6px 0 10px;font-size:11px;line-height:1.45}
#dlSize b{color:var(--tx);font-weight:500;white-space:nowrap}
#dlNone{margin:0 0 12px;font-size:12px;line-height:1.5;color:var(--mut)}
.dlBud{font-size:11px;line-height:1.4;margin:-4px 0 8px}
.dlBud:empty{display:none}
.dlBud b{color:var(--tx);font-weight:500;white-space:nowrap}
.dlBud .nw{white-space:nowrap}
/* в сетке карточек (средняя ширина — колонками) разделитель — на весь ряд, а не в ячейку между карточками */
.dlGrp{grid-column:1/-1;font-family:var(--mono);font-size:10.5px;line-height:1.4;color:var(--dim);padding:3px 0 0;
  border-top:1px dashed var(--line)}
.card.dl .bz{margin-bottom:6px}
.card.dl .mt{line-height:1.5;overflow-wrap:anywhere}
.card.dl .mt b{white-space:nowrap}          /* «0,443 %» не рвётся: процент не уезжает на строку один */
.card.dl .mt+.mt{margin-top:1px}
.card.dl .mt .mut{color:var(--dim)}
.card.dl .mt .warn{color:var(--brand)}
.card.dl a.altGo{border-bottom-color:var(--dim)}
.card.dl a.altGo .mut{color:var(--mut)}
.card.dl:focus-visible,.mkLv .chip:focus-visible,.dlAll .chip:focus-visible,#dlAllBody tr:focus-visible{outline:1px solid var(--brand);outline-offset:1px}
.dlMore{margin-top:7px}
.dlMore:empty{display:none}
.dlEmpty .mt{font-size:12px;line-height:1.5;color:var(--mut)}
.dlEmpty button{margin-top:7px}
/* --- «Что открывать · весь список» (0.25.0): на всю ширину под секциями, как таблица под карточками в
   «Закономерностях». Таблица шире экрана телефона листается вбок ВНУТРИ блока, страница вбок не едет; первая
   колонка (бумага) липкая, чтобы тикер не уезжал. */
.dlAll{margin-top:24px}
.dlAllH{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;border-bottom:1px solid var(--line);padding-bottom:6px}
.dlAllH .sub{line-height:1.45}
.dlAllBar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:8px}
.dlAllBar .chips{max-width:none}
.dlAllBar #dlAllAge{line-height:1.4}
.dlAllBar #dlAllBtn:empty,.dlAllBar #dlAllBrew:empty{display:none}
#dlAllBtn{margin-left:auto}
#dlAllNote{margin-top:7px;line-height:1.45}
#dlAllBody{margin-top:10px;overflow-x:auto;max-width:100%}
#dlAllBody table{font-size:13px;width:100%}
#dlAllBody td,#dlAllBody th{padding:5px 6px;text-align:left;white-space:nowrap;vertical-align:top}
#dlAllBody td:last-child,#dlAllBody th:last-child{white-space:normal}
#dlAllBody th{white-space:normal;vertical-align:bottom}
/* сортировка по столбцу (16.10.2026): заголовок — кнопка; ▲/▼ у выбранного, цвет — золото, не красный */
#dlAllBody th.srt{cursor:pointer;user-select:none}
#dlAllBody th.srt:hover{color:var(--tx)}
#dlAllBody th.srt.on{color:var(--brand)}
#dlAllBody th.srt .arw{margin-left:3px;font-size:9px;vertical-align:1px}
#dlAllBody th.srt:focus-visible{outline:1px solid var(--brand);outline-offset:-1px}
/* у силы два ключа в одной шапке: «SPY» и «отрасль» — подписи-кнопки; выбранная — золотом */
#dlAllBody th.srt .srtS{cursor:pointer;border-bottom:1px dotted var(--dim)}
#dlAllBody th.srt .srtS:hover{color:var(--tx)}
#dlAllBody th.srt .srtS.on{color:var(--brand);border-bottom-color:var(--brand)}
#dlAllBody th.srt.on .whS{color:var(--dim)}
#dlAllBody th.srt .srtS:focus-visible{outline:1px solid var(--brand);outline-offset:1px}
#dlAllBody td:first-child,#dlAllBody th:first-child{position:sticky;left:0;background:var(--bg);z-index:1}
/* строки, которые стоят карточками выше: риска слева — «открывается 21» в шапке и в таблице одно и то же */
#dlAllBody tr.inCard td:first-child{box-shadow:inset 2px 0 var(--brand)}
#dlAllBody .whS{font-size:10.5px;line-height:1.3}
#dlAllBody .whN{white-space:normal;font-size:11px;line-height:1.3;max-width:20ch}
#dlAllBody .whN .warn{white-space:normal!important}
/* на главной зелёного нет: «открывается» — просто светлым */
#dlAllBody .pos{color:var(--tx)}
#dlAllBody tbody tr:hover{background:rgba(255,191,0,.06)}
#dlAllBody .whPhH{margin:2px 0 4px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--tx)}
#dlAllBody .whPhH .mut{text-transform:none;letter-spacing:0;font-size:11.5px}
#dlAllBody details{margin-top:12px}
#dlAllBody summary{cursor:pointer;color:var(--mut);font-size:12.5px;line-height:1.45}
#dlAllBody summary:hover{color:var(--tx)}
#dlAllBody .whNo td{vertical-align:top}
#dlAllBody .mt{font-size:11.5px;line-height:1.5;margin-top:6px}
@media(max-width:600px){
  #dlAllBody table{font-size:12px}
  #dlAllBody td,#dlAllBody th{padding:4px 5px}
  /* подпись жемчужины — под тикером, а не в строку: иначе колонка бумаги съедает ширину */
  #dlAllBody .whT .pearlNo{display:block;margin-left:0;white-space:normal}
  /* причина отказа сжималась до 90 px, и строка вырастала на экран: пусть таблица листается вбок */
  #dlAllBody .whNo td:last-child{min-width:24ch}
  #dlAllBtn{margin-left:0}
}
#dlGloss,#glossW{margin-top:18px}   /* Д6: словари обоих разделов — внизу, одним отступом */
@media(max-width:1099px){
  .dlCols{grid-template-columns:1fr;gap:20px}
  .dlCards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
}
@media(max-width:600px){.dlCards{grid-template-columns:1fr}}

/* --- лист бумаги: на весь экран поверх сводки, полоса «← к сделкам» прилипает. Ниже окон (z 50):
   поиск и журнал открываются поверх листа. */
.sheet{position:fixed;inset:0;z-index:45;overflow:auto;background:var(--bg);overscroll-behavior:contain}
.sheetBar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:14px;padding:9px 20px;
  background:var(--bg);border-bottom:1px solid var(--line)}
#paperTitle{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:'Rajdhani',-apple-system,sans-serif;font-size:16px;font-weight:700;letter-spacing:.04em}
#paperNote{max-width:1580px;margin:8px auto 0;padding:0 20px}
#paperNote:empty{display:none}
#paperBody{max-width:1580px;margin:0 auto;padding:0 20px 40px}
#paperBody #chartWrap{scroll-margin-top:56px}
body.sheetOpen{overflow:hidden}
/* пока бумага грузится, прежний график и карточка не видны — заголовок уже новый */
#chartWrap.loading #chart,#chartWrap.loading #dmWrap,#chartWrap.loading #optWrap,#chartWrap.loading #chLegend,
#chartWrap.loading #stkWrap{visibility:hidden}
@media(max-width:600px){
  .sheetBar{padding:8px 12px;gap:10px}
  #paperBody,#paperNote{padding-left:10px;padding-right:10px}
}

/* ================================================================ 0.25.6 (B236, B238): рамка рынка для закономерностей
   Строка «Размер по Королю: …; вход — цена бумаги у своей средней» — под полосой панели «Закономерностей» (видна и в раскрытой панели).
   Блок «Вход акцией» карточки бумаги — короткими строками, как лесенка и размер: без простыни, подробности —
   в подсказках и словаре. Красного нет: следствие на стопе дальше авторского — янтарём (.warn). */
.mkStk{margin-top:6px}
.mkStk:empty{display:none}
#patMkt{margin-top:8px}
.lv.stk{display:block;margin:6px 0 0;text-transform:none;letter-spacing:0;font-size:12px;line-height:1.5;color:var(--mut)}
.lv.stk > div{margin-top:3px;overflow-wrap:anywhere}
/* следствие на стопе дальше авторского — янтарём: `.lv b` (цвет текста) сильнее голого `.warn`, без этого правила
   число было белым (ревью 19.10.2026, решение Макса 18.10.2026 п. 1 «X > 0,25 — янтарём») */
.lv.stk b.warn{color:var(--brand)}
.lv.stk .stkFoot{margin-top:7px;font-size:11.5px}
#stkPhase{white-space:nowrap}
.dmStk{font-size:12px;line-height:1.45;color:var(--mut);overflow-wrap:anywhere}
@media(max-width:600px){
  .lv.stk{font-size:11.5px}
  #stkPhase{white-space:normal;text-align:right}
}

/* Приёмка 0.25.6 (откат B138): на телефоне панель «Закономерностей» сдвигала топ с первого экрана (первая карточка на
   1 136 px при высоте 812). До 600 px свёрнутая панель — одной строкой «Рынок · стартовый · растянут ▾»; полоса плиток,
   строка размера и дата — в раскрытии. Блока Короля (#weather) нет с R11 (решение Макса 19.10.2026). */
.mkBrief{display:none;color:var(--mut)}
.mkBrief:not(:empty)::before{content:"· ";color:var(--dim)}
/* числа блока «Вход акцией» не рвём («5 000 / $» на телефоне): переносится текст между ними */
.lv.stk b{white-space:nowrap}
@media(max-width:600px){
  #patMkt .mkBrief:not(:empty){display:inline}
  #patMkt:not([open]) .mkStrip,#patMkt:not([open]) .mkStk,#patMkt:not([open]) #patMktAsOf{display:none}
  #patMkt:not([open])>summary{padding-bottom:8px}
}
