/* Живой дашборд China Radar (10g; вид — 10y «приборная панель», с style-1 04.11.2026 — общий стиль
   Пульта, DESIGN.md, режим «Радар»). Почти чёрный фон, один тёплый акцент — приглушённый янтарь, второй —
   бирюза; уровни A–D — сила сигнала (A — сплошной акцент, D — едва видно); хорошо / внимание / плохо —
   зелёный / жёлтый / красный со словами. Шрифт Onest — свой файл рядом (страница живёт внутри Telegram со
   строгой политикой содержимого: внешних шрифтов и картинок нет). Цифры таблиц — моноширинные. Контраст — AA.
   Тема всегда тёмная; светлая — только если владелец выбрал её кнопкой. */
@font-face{font-family:"Onest";font-style:normal;font-weight:400 700;font-display:swap;
src:url(/radar/static/onest-cyrillic.woff2) format("woff2");
unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Onest";font-style:normal;font-weight:400 700;font-display:swap;
src:url(/radar/static/onest-latin.woff2) format("woff2");
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{color-scheme:dark;
--bg:#0e0e0f;--card:#1e1e20;--ink:#f3f3f1;--ink2:#b9bab6;--line:#2e2e32;--track:#27272a;--hover:#27272a;
--s:#e2a84b;--sbg:rgba(226,168,75,.14);--sink:#1c1405;--s2:#4db6ac;--glow:rgba(226,168,75,.45);
--grid:rgba(255,255,255,.022);
--lA:#e2a84b;--lB:#3d2f17;--lC:#27272a;--lD:#1b1b1d;--onA:#1c1405;--onB:#f1d199;--onC:#c9cac6;--onD:#9a9b96;
--ok:#5bd48a;--okbg:#12261a;--warn:#e6c34f;--warnbg:#2a2410;--crit:#f2655a;--critbg:#2e1614;
--shade:rgba(0,0,0,.66);--c0:#4db6ac;--c1:#9787e0;--c2:#6fa8dc;--c3:#e07a9a;--shadow:none;
--mono:ui-monospace,"SF Mono","JetBrains Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;
--font:"Onest","Manrope",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
--r:12px;--rc:20px;--ease:cubic-bezier(.16,1,.3,1)}
:root[data-theme="light"]{color-scheme:light;
--bg:#f4f3ef;--card:#fffefb;--ink:#14181d;--ink2:#5b6470;--line:#e2dfd6;--track:#ebe9e2;--hover:#f0eee7;
--s:#8a5a12;--sbg:#f6ead3;--sink:#fffaf0;--s2:#0a7582;--glow:transparent;--grid:rgba(20,24,29,.03);
--lA:#8a5a12;--lB:#f1dfbd;--lC:#e8e6df;--lD:#efede7;--onA:#fff;--onB:#5a3a08;--onC:#3b434d;--onD:#5f6873;
--ok:#18774a;--okbg:#e3f3ea;--warn:#7a5d00;--warnbg:#fbefd6;--crit:#b92c37;--critbg:#fbe8e8;
--shade:rgba(20,24,29,.45);--c0:#0a7582;--c1:#5b47b0;--c2:#2f6aa3;--c3:#a82f66;--shadow:none}
::selection{background:rgba(226,168,75,.32);color:var(--ink)}
html{scrollbar-color:#3a3a3f var(--bg);caret-color:var(--s)}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:#3a3a3f;border-radius:999px;border:2px solid var(--bg)}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font);
padding-bottom:calc(76px + env(safe-area-inset-bottom))}
button,input{font:inherit;color:inherit}
h1{font-size:18px;margin:0;display:flex;align-items:center;gap:8px;letter-spacing:-.01em}
h1 img{display:block;border-radius:6px}
h2{font-size:18px;margin:0;line-height:1.3;overflow-wrap:anywhere}
h3{font-size:16px;margin:20px 0 8px;line-height:1.3}
.box h3{margin-top:0}
p{margin:0 0 8px}
.muted{color:var(--ink2)}.small{font-size:13px;line-height:1.45}
.cn{font-weight:400}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--s);outline-offset:2px}

/* ── шапка и вкладки ─────────────────────────────────────────────────────────── */
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:8px;
padding:8px 16px;background:var(--bg);border-bottom:1px solid var(--line)}
.status{margin:2px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);margin-right:6px;vertical-align:1px}
.dot.off{background:var(--crit);box-shadow:0 0 8px var(--crit);animation:dot-pulse 3s ease-in-out infinite}
@keyframes dot-pulse{50%{box-shadow:0 0 2px var(--crit)}}
@media (prefers-reduced-motion:reduce){.dot.off{animation:none}}
.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:12px;min-width:44px;height:44px;cursor:pointer;
font-size:18px;color:var(--ink)}
.icon-btn{display:inline-grid;place-items:center}.icon-btn .ti{width:22px;height:22px;padding:0;border-radius:0}
/* телефон и планшет: вкладки — внизу экрана, под большим пальцем */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:6;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
background:var(--card);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
.tabs button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
min-height:56px;border:0;background:none;border-radius:12px;cursor:pointer;color:var(--ink2);font-size:12px;font-weight:600;
padding:4px 2px;min-width:0}
.tabs button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ti{width:40px;height:28px;padding:3px 0;border-radius:999px;fill:none;stroke:currentColor;stroke-width:1.8;
stroke-linecap:round;stroke-linejoin:round}
.tabs button[aria-selected="true"]{color:var(--s)}
.tabs button[aria-selected="true"] .ti{background:var(--sbg);box-shadow:0 0 14px var(--glow)}
.tabs button.alert::after{content:"";position:absolute;top:6px;left:calc(50% + 10px);width:9px;height:9px;border-radius:50%;
background:var(--crit);border:2px solid var(--card)}
.banner{margin:10px 16px 0;padding:10px 12px;border-radius:12px;background:var(--warnbg);border:1px solid var(--warn);font-size:14px}
main{max-width:1100px;margin:0 auto;padding:14px 16px}
footer{max-width:1100px;margin:0 auto;padding:8px 16px 28px}
footer p{margin:6px 0 0}
.legend-levels{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px}
.legend-levels li{display:flex;align-items:center;gap:6px}
.legend-levels .seal{width:22px;height:22px;font-size:12px;border-radius:6px}

/* ── общие элементы ─────────────────────────────────────────────────────────── */
.tools{display:grid;gap:10px;margin-bottom:12px}
input[type="search"]{width:100%;min-height:46px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;
background:var(--card)}
input[type="search"]::placeholder{color:var(--ink2)}
.chips-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.chips-row button{display:inline-flex;align-items:center;gap:6px;min-height:40px;border:1px solid var(--line);
background:var(--card);border-radius:999px;padding:0 14px;font-size:14px;cursor:pointer}
.chips-row button .n{font-size:12px;font-weight:600;color:var(--ink2);background:var(--track);border-radius:999px;
padding:0 7px;min-width:22px;text-align:center;font-variant-numeric:tabular-nums}
.chips-row button[aria-pressed="true"]{background:var(--sbg);border-color:var(--s);color:var(--s);font-weight:600}
.chips-row button[aria-pressed="true"] .n{background:var(--sbg);color:inherit}
.chips-row button.need{border-style:dashed}
.btn{min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:var(--card);font-weight:600;
cursor:pointer}
.list{display:grid;gap:10px;grid-template-columns:1fr}
@media (min-width:760px){.list{grid-template-columns:1fr 1fr}}
@media (max-width:759px){.tiles:not(.three) .tile:last-child:nth-child(odd){grid-column:1/-1}}
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:14px 16px;cursor:pointer;
text-align:left;width:100%;display:block;box-shadow:var(--shadow)}
.card:hover{border-color:var(--ink2)}
.row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.sub{display:block}.nowrap{white-space:nowrap}
.empty{padding:28px 20px;text-align:center;color:var(--ink2);border:1px dashed var(--line);border-radius:20px;
display:grid;gap:6px;justify-items:center;grid-column:1/-1}
.empty b{color:var(--ink);font-size:16px}.empty p{margin:0;max-width:44ch}.empty .btn{margin-top:6px}

/* печать уровня: крупная буква A–D */
.seal{display:inline-grid;place-items:center;flex:none;width:44px;height:44px;border-radius:12px;font-weight:800;
font-size:21px;line-height:1;font-variant-numeric:tabular-nums}
.seal.big{width:60px;height:60px;border-radius:16px;font-size:30px}
.lA{background:var(--lA);color:var(--onA)}.seal.big.lA{box-shadow:0 0 22px var(--glow)}.lB{background:var(--lB);color:var(--onB)}
.lC{background:var(--lC);color:var(--onC)}.lD{background:var(--lD);color:var(--onD)}

/* ── список тем: название в строке и мини-график (строка телефона — блок «18b» ниже) ─────────── */
.tname{min-width:0}
.tname .nm{display:block;font-weight:650;font-size:16px;line-height:1.3;overflow-wrap:anywhere}
.mini{display:block}
.mini svg{display:block;width:140px;height:32px;overflow:visible}
.mini .line{fill:none;stroke:var(--s);stroke-width:2;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.mini .area{fill:var(--s);opacity:.1;stroke:none}
.mini.wide svg{width:100%;height:44px}
.mini.case svg{height:40px}
.mini-cap{display:block;margin-top:2px}
.mini.none{font-size:12px}
.chips{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:13px;border-radius:10px;padding:5px 10px;border:1px solid var(--line)}
.chip.stop{border-color:var(--crit);background:var(--critbg)}.chip.stop b{color:var(--crit)}
.chip.warn{border-color:var(--warn);background:var(--warnbg)}

/* ── карточка темы ──────────────────────────────────────────────────────────── */
.dhead{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;margin-bottom:14px}
.dhead p{margin:4px 0 0}
.dscore{display:grid;justify-items:end;line-height:1.05}
.dscore b{font-size:36px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.sheet .dhead{padding-right:52px}
.todo-line{font-size:16px;font-weight:650;margin:0;line-height:1.4}
.lift-line{font-weight:600;margin:0 0 10px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px;margin:0}
.kv dt{color:var(--ink2)}.kv dd{margin:0}
.why{margin:8px 0 0;padding-left:18px}.why li{margin:3px 0}
details>summary{cursor:pointer}

/* оси: слово-оценка крупно, факт под ним */
.axes2{display:grid;margin-top:4px}
.ax2{border-bottom:1px solid var(--line)}.ax2:last-child{border-bottom:0}
.ax2 summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;align-items:center;list-style:none;
padding:10px 0;min-height:44px}
.ax2 summary::-webkit-details-marker{display:none}
.ax-name{font-weight:650}
.ax-word{justify-self:end;font-weight:650;font-size:14px;border-radius:999px;padding:2px 10px;white-space:nowrap}
.ax-word.whi{color:var(--ok);background:var(--okbg)}.ax-word.wmid{color:var(--warn);background:var(--warnbg)}
.ax-word.wlo{color:var(--crit);background:var(--critbg)}.ax-word.none{color:var(--ink2);background:var(--track);font-weight:500}
.ax-score{font-weight:500;opacity:.75;margin-left:8px;font-size:12px;font-variant-numeric:tabular-nums}
.ax-fact{grid-column:1/-1;color:var(--ink2)}
.ax2[open] summary .ax-name::after{content:" — что это"; font-weight:400;color:var(--ink2);font-size:13px}
.hint{margin:0 0 12px;padding:10px 12px;background:var(--track);border-radius:10px}

/* экономика */
.verdict{font-weight:600;margin:0 0 8px;padding-left:12px;border-left:3px solid var(--line)}
.verdict.good{border-left-color:var(--ok)}.verdict.bad{border-left-color:var(--crit)}
.econ-more>summary{min-height:44px;display:flex;align-items:center;color:var(--s);font-weight:600}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--ink2);font-weight:600}
.econ{font-size:14px;margin:6px 0}.econ td{padding:6px 4px}.econ .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.econ tr.sum td{font-weight:650;border-top:2px solid var(--line)}.econ tr.plus td{font-weight:650}

/* ── графики ───────────────────────────────────────────────────────────────── */
.spark svg{width:100%;height:auto;display:block;overflow:visible}
.spark .line{fill:none;stroke:var(--s);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.spark .base{stroke:var(--ink2);stroke-width:1;opacity:.45}.spark .grid{stroke:var(--line);stroke-width:1}
.spark .mark{stroke:var(--warn);stroke-width:1.5;stroke-dasharray:4 3}
.spark .why-mark{stroke:var(--ink2);stroke-dasharray:2 3;stroke-width:1}
.spark .end{fill:var(--s);stroke:var(--card);stroke-width:2}
.spark text{fill:var(--ink2);font-size:11px;font-variant-numeric:tabular-nums}.spark .ml{fill:var(--warn);font-weight:600}
.spark .mk{fill:var(--card);stroke:var(--ink2);stroke-width:1.5}.spark .mk.lift{stroke:var(--warn)}
.spark .mkn{fill:var(--ink);font-size:10px;font-weight:700}
.spark .now{stroke:var(--ink2);stroke-width:1;opacity:.35}
.spark .cursor{stroke:var(--ink2);stroke-width:1;opacity:.6}
.spark .cn{fill:none;stroke-width:1.6;stroke-dasharray:5 3;opacity:.75}.spark .cn-dot{stroke:var(--card);stroke-width:1.5}
.spark .c0,.sw.c0::before{stroke:var(--c0);background:var(--c0)}.spark .cn-dot.c0{fill:var(--c0)}
.spark .c1,.sw.c1::before{stroke:var(--c1);background:var(--c1)}.spark .cn-dot.c1{fill:var(--c1)}
.spark .c2,.sw.c2::before{stroke:var(--c2);background:var(--c2)}.spark .cn-dot.c2{fill:var(--c2)}
.spark .c3,.sw.c3::before{stroke:var(--c3);background:var(--c3)}.spark .cn-dot.c3{fill:var(--c3)}
.spark .fc-band{fill:var(--s);opacity:.13;stroke:none}.spark .fc-line{fill:none;stroke:var(--s);stroke-width:2;stroke-dasharray:6 4}
.spark .fcl{fill:var(--s);font-size:11px;font-weight:600}
.c0-text{color:var(--c0)}.c1-text{color:var(--c1)}.c2-text{color:var(--c2)}.c3-text{color:var(--c3)}.why-text{color:var(--warn)}
.bigchart{margin:0}.bigchart .spark svg{touch-action:pan-y;cursor:crosshair}
.seg{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:3px;margin:0 0 10px;background:var(--track);
border-radius:12px;max-width:420px}
.seg button{min-height:44px;border:0;border-radius:9px;background:none;font-size:13px;font-weight:600;color:var(--ink2);
cursor:pointer;padding:0 4px;white-space:nowrap}
.seg button[aria-pressed="true"]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(22,32,51,.14)}
.tip{min-height:42px;padding:6px 10px;margin-top:6px;background:var(--track);border-radius:10px}
.events{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:4px}
.events li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:8px;align-items:baseline}
.mk-n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--ink2);
font-size:11px;font-weight:700;line-height:1}
.mk-n.lift{border-color:var(--warn)}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--ink2);margin-top:10px}
.sw::before{content:"";display:inline-block;width:14px;height:3px;margin-right:6px;vertical-align:3px;border-radius:2px}
.sw.ru::before{background:var(--s)}.sw.fc::before{background:var(--s);opacity:.45}
.fc-note{color:var(--ink2);margin:8px 0 0}
.fc-acc{margin:4px 0 0}
/* предложение в Китае (10i): плитки с числом, изменением и маленьким графиком */
.supply-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 10px}
.stile{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--card);display:flex;flex-direction:column;gap:4px;min-width:0}
.st-site{color:var(--ink);font-weight:600}
.st-val{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.st-val>b{font-size:22px;line-height:1.2;font-variant-numeric:tabular-nums}
.st-chg{color:var(--ink2);font-weight:600}.st-chg.up{color:var(--ok)}.st-chg.down{color:var(--crit)}
.st-chart .line{stroke-width:2}.st-chart .pt{fill:var(--s);stroke:var(--card);stroke-width:1.5}
.st-chart text{font-size:12px}

/* ── кейсы, опережение: плитки и таблицы ────────────────────────────────────── */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.tiles.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.tile{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:12px 14px;display:grid;
align-content:start;gap:2px;box-shadow:var(--shadow)}
.tile b{display:block;font-size:24px;line-height:1.2;font-variant-numeric:tabular-nums}.tile b.long{font-size:17px}
.tile>span:first-child{font-weight:600;color:var(--ink)}
.ccard{display:grid;gap:6px}.ccard .nm{font-weight:650;font-size:16px}
.mark-yes{color:var(--ok);font-weight:600;white-space:nowrap}.mark-no{color:var(--crit);font-weight:600;white-space:nowrap}
.intro{font-size:16px;font-weight:600;margin-bottom:6px}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.grid-table{font-variant-numeric:tabular-nums;font-size:13px;background:var(--card);border:1px solid var(--line);border-radius:16px;border-collapse:separate;
border-spacing:0;overflow:hidden}
.grid-table th,.grid-table td{padding:9px 8px}.grid-table th:first-child,.grid-table td:first-child{padding-left:14px}
.grid-table tbody tr:last-child td{border-bottom:0}
.grid-table tbody tr{cursor:pointer}.grid-table tbody tr:hover{background:var(--hover)}
.grid-table th{background:var(--card);font-size:12px;vertical-align:bottom}
.grid-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.grid-table th.num{white-space:normal}
.grid-table .lead-cell{min-width:104px}.grid-table .cand{color:var(--warn)}
.sort{border:0;background:none;padding:0;font-weight:600;color:inherit;cursor:pointer;text-align:inherit}
.link{border:0;background:none;padding:0;font-weight:650;cursor:pointer;text-align:left;color:var(--ink)}
.spark>.small{margin-bottom:4px}

/* ── вкладка «Сервер» ───────────────────────────────────────────────────────── */
.srv-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start;padding:14px 16px;
border-radius:16px;margin-bottom:12px;border:1px solid var(--line);background:var(--card)}
.srv-head.fail{background:var(--critbg);border-color:var(--crit)}.srv-head.warn{background:var(--warnbg);border-color:var(--warn)}
.srv-head.ok{background:var(--okbg);border-color:var(--ok)}
.srv-head b{font-size:16px}.srv-head p{margin:2px 0 0}
.srv-head .st{width:32px;height:32px;font-size:16px}
.st{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;font-weight:800;font-size:12px;
line-height:1;color:var(--card)}
.st.ok{background:var(--ok)}.st.warn{background:var(--warn)}.st.fail{background:var(--crit)}
.srv-grid,.srv-col{display:grid;gap:12px}.srv-col{min-width:0}
.box{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:14px 16px;box-shadow:var(--shadow)}
.checks,.feed,.plain{list-style:none;padding:0;margin:0}
.checks li,.feed li,.plain li{padding:9px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.checks li:last-child,.feed li:last-child,.plain li:last-child{border-bottom:0}
.check{display:grid;grid-template-columns:22px minmax(0,1fr);gap:4px 10px;align-items:start}
.check .st{margin-top:1px}
.check .todo{grid-column:2;font-size:13px;padding:6px 10px;border-radius:10px}
.check.fail .todo{background:var(--critbg)}.check.warn .todo{background:var(--warnbg)}
.feed .when{font-variant-numeric:tabular-nums}.feed .bad{color:var(--crit);font-weight:600}
.feed details{margin-top:4px}.feed details>summary{min-height:36px;display:flex;align-items:center;color:var(--s)}
.feed pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;margin:4px 0 0;background:var(--track);padding:8px 10px;
border-radius:8px}

/* ── всплывающая карточка (телефон) и вход ─────────────────────────────────── */
.sheet{position:fixed;inset:0;z-index:10;background:var(--shade);display:flex;align-items:flex-end;justify-content:center}
.sheet-card{position:relative;background:var(--bg);width:100%;max-width:720px;max-height:94vh;overflow-y:auto;
overscroll-behavior:contain;border-radius:20px 20px 0 0;padding:16px 16px calc(28px + env(safe-area-inset-bottom))}
@media (min-width:760px){.sheet{align-items:center}.sheet-card{border-radius:20px}}
.close{position:sticky;top:0;float:right;margin-left:8px;z-index:1}
.gate{max-width:520px;margin:32px auto;text-align:center}
.gate button{padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card)}
#widget{margin-top:16px;min-height:48px}

/* ── компьютер (≥ 1100 px): вкладки сверху, слева список или таблица, справа — закреплённая карточка ─ */
.rows{display:grid;background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}
.trow{display:grid;grid-template-columns:44px minmax(0,1fr) 44px 96px 140px;align-items:center;gap:14px;width:100%;
padding:10px 16px;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;cursor:pointer}
.trow:last-child{border-bottom:0}.trow:hover{background:var(--hover)}
.trow[aria-current="true"],.grid-table tr[aria-current="true"]{background:var(--sbg);box-shadow:inset 3px 0 0 var(--s)}
.trow.thead{cursor:default;font-size:12px;color:var(--ink2);padding-top:8px;padding-bottom:8px;font-weight:600}
.trow.thead:hover{background:none}.trow .r{text-align:right}
.trow .seal{width:36px;height:36px;font-size:17px;border-radius:10px}
.trow .nm{display:block;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trow .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tidx{font-size:20px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.tflags{display:flex;gap:4px;flex-wrap:wrap}
.flag{font-size:12px;border-radius:999px;padding:1px 8px;white-space:nowrap;font-weight:600}
.drivers{list-style:none;padding:0;margin:8px 0 0}.drivers li{padding:10px 0;border-top:1px solid var(--line)}
.drivers li.ok b{color:var(--ok)}.drv-head{margin-bottom:4px}
.flag.stop{color:var(--crit);background:var(--critbg)}.flag.work{color:var(--ok);background:var(--okbg)}
.work-btn.on{color:var(--ok);border-color:var(--ok)}.flag.warn{color:var(--warn);background:var(--warnbg)}
.panel{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:20px 22px;box-shadow:var(--shadow)}
@media (min-width:1100px){
body{padding-bottom:env(safe-area-inset-bottom)}
.top{padding:10px max(16px,calc((100% - 1440px)/2 + 16px))}
.tabs{position:static;display:flex;gap:4px;max-width:1440px;margin:0 auto;padding:8px 16px 0;
background:var(--bg);border-top:0}
.tabs button{flex-direction:row;gap:8px;min-height:44px;padding:8px 16px;font-size:15px;border-radius:12px 12px 0 0;
border-bottom:2px solid transparent}
.tabs button[aria-selected="true"]{border-bottom-color:var(--s)}
.ti{width:20px;height:20px;padding:0}
.tabs button[aria-selected="true"] .ti{background:none}
.tabs button.alert::after{position:static;display:inline-block;width:8px;height:8px;border:0}
main,footer{max-width:1440px}
main.split{display:grid;grid-template-columns:minmax(0,1fr) clamp(480px,40vw,600px);gap:20px;align-items:start}
main.split.tabular{grid-template-columns:minmax(0,1fr) clamp(400px,31vw,520px)}
main.split>section{grid-column:1;grid-row:1;min-width:0}
main.split>.panel{grid-column:2;grid-row:1;position:sticky;top:78px;max-height:calc(100vh - 90px);overflow-y:auto;
overscroll-behavior:contain}
.split .tiles{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.srv-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
.tools input[type="search"]{max-width:520px}
}
@media (max-width:560px){.dhead{grid-template-columns:auto minmax(0,1fr);row-gap:6px}.dhead .seal{grid-row:1/3}
.dscore{grid-column:2;display:flex;align-items:baseline;gap:6px;justify-content:flex-start}.dscore b{font-size:26px}}
@media (max-width:420px){.tiles.three .tile{padding:10px}.tiles.three b{font-size:20px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* Товары рядом (10f-3) */
.ideas{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:8px}
.examples{list-style:none;padding:0;margin:6px 0 8px;display:grid;gap:8px}.examples li{overflow-wrap:anywhere}
/* 13ae: примеры на виду — под первым экраном карточки и «↗ пример» в строке списка */
.ex-top{margin:10px 0;padding:8px 0;border-top:1px solid var(--line)}.ex-top-list{list-style:none;padding:0;margin:4px 0 0;display:grid;gap:6px}.ex-top-list li{overflow-wrap:anywhere}
.ex-top .link{color:var(--s)}.tl-ex{display:inline-block;margin-top:2px;font-size:12px;font-weight:600;color:var(--s);text-decoration:underline;cursor:pointer}
.ideas li{display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:8px 10px;
border:1px solid var(--line);border-radius:10px}
.ideas li.grows{border-color:var(--ok)}.ideas .idea-head{grid-column:1}.ideas li>.small{grid-column:1}
.ideas .mini{grid-column:2;grid-row:1/3;width:72px}.ideas .mini svg{width:72px}.idea-icon{margin-right:6px}
.item-form{display:flex;flex-wrap:wrap;gap:8px}
.item-input{flex:1 1 220px;min-width:0;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;
background:var(--card)}.bad-text{color:var(--crit)}
/* «Похоже на вспышку» (9.5e): заметно, но не стоп — индекс и уровень не меняет */
.flag.flash{color:var(--warn);background:var(--warnbg)}
.flash-note{margin:0;font-size:13px;color:var(--ink2)}
.flash-note.yes{font-size:14px;color:var(--ink);font-weight:600;border:1px solid var(--warn);background:var(--warnbg);
border-radius:10px;padding:8px 12px}
/* Карта тем (10x): точка — тема, цвет — уровень (как у печати), кольца — «в работе» и «вспышка» */
.map-intro{font-weight:600;margin-bottom:10px}
.map-picks{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.map-pick{display:grid;gap:2px;min-width:0}
.map-pick select{min-height:44px;min-width:0;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:12px;
background:var(--card);color:var(--ink);font:inherit;font-size:14px}
.map-box{background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}
.map-svg{display:block;max-width:100%;height:auto}
.map-svg .grid{stroke:var(--line);stroke-width:1}.map-svg .base{stroke:var(--ink2);stroke-width:1;opacity:.45}
.map-svg .mid{stroke:var(--ink2);stroke-width:1;stroke-dasharray:4 4;opacity:.45}
.map-svg .hot{fill:var(--okbg);opacity:.7}
.map-svg text{fill:var(--ink2);font-size:11px;font-variant-numeric:tabular-nums}.map-svg .at{fill:var(--ink);font-size:12px;font-weight:600}
.map-svg .pl{fill:var(--ink);font-size:11px;font-weight:600;pointer-events:none;paint-order:stroke;stroke:var(--card);
stroke-width:3px;stroke-linejoin:round}
.map-svg .mp{cursor:pointer;outline:none}
.map-svg .pt{stroke-width:1.5}.map-svg .hit{fill:transparent}
.map-svg .pt.lA{fill:var(--lA);stroke:var(--onA)}.map-svg .pt.lB{fill:var(--lB);stroke:var(--onB)}
.map-svg .pt.lC{fill:var(--lC);stroke:var(--onC)}.map-svg .pt.lD{fill:var(--lD);stroke:var(--onD)}
.map-svg .ring{fill:none;stroke-width:2.2}.map-svg .ring.work{stroke:var(--ok)}
.map-svg .ring.flash{stroke:var(--warn);stroke-dasharray:3 2}
.map-svg .mp:hover .pt,.map-svg .mp:focus-visible .pt,.map-svg .mp[aria-current="true"] .pt{stroke:var(--s);stroke-width:3.5}
.map-legend{align-items:center}.map-legend span{display:inline-flex;align-items:center;gap:6px}
.ldot,.lring{display:inline-block;width:12px;height:12px;border-radius:50%;flex:none}
.ldot{border:1.5px solid currentColor}
.lring{border:2px solid var(--ok)}.lring.flash{border:2px dashed var(--warn)}
.map-box+.tip{margin-top:8px}

/* ── 10y «приборная панель»: слой поверх базовых правил — форма, шрифт цифр, движение ─────────────── */
body{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
background-size:32px 32px;background-attachment:fixed}
.top,.tabs{background:color-mix(in srgb,var(--bg) 84%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);
backdrop-filter:blur(14px) saturate(140%)}
h1{font:600 16px/1.2 var(--font);letter-spacing:-.01em}
.dot{box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}
.dot.off{box-shadow:0 0 8px var(--crit)}
.icon-btn,.btn,input[type="search"],.map-pick select,.item-input,.gate button{border-radius:var(--r)}
.card,.tile,.box,.panel,.rows,.grid-table,.map-box,.srv-head,.stile,.empty,.banner,.hint,.tip{border-radius:var(--rc)}
/* цифры и буквы уровней — моноширинные: столбцы не «прыгают», вид прибора */
.seal,.dscore b,.tidx,.chips-row .n,.st-val>b,.tile b,.econ .num,.grid-table .num,.ax-score,.spark text,
.map-svg text,.feed .when,.mk-n{font-family:var(--mono)}
.dscore b{font-weight:600;letter-spacing:-.05em}
.tidx{font-weight:600}
/* печать уровня — штамп: квадрат с тонкой рамкой своего цвета */
.seal{border-radius:8px;font-weight:700;box-shadow:inset 0 0 0 1px color-mix(in srgb,currentColor 32%,transparent)}
.seal.big{border-radius:10px}.trow .seal{border-radius:7px}.legend-levels .seal{border-radius:5px}
/* заголовки разделов — мелкая разрядка, как подписи на шкале */
.box h3{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);margin-bottom:12px}
/* карточка в списке кейсов: нажатие чувствуется */
.card{transition:border-color .15s var(--ease),transform .15s var(--ease)}
.card:hover{border-color:color-mix(in srgb,var(--s) 55%,var(--line))}.card:active{transform:scale(.985)}
.tname .nm{font-weight:600;letter-spacing:-.01em}
.mini .line{stroke-width:1.75}.mini .area{opacity:.16}
/* фильтры, флажки, оценки — прямоугольные ярлыки; высота — под палец (18b) */
.chips-row button{border-radius:8px;min-height:44px;padding:0 12px;transition:background .15s var(--ease),border-color .15s var(--ease)}
.chips-row button .n{border-radius:5px;font-weight:500}
.chip{border-radius:7px}.ax-word{border-radius:6px;font-size:13px}
.flag{display:inline-flex;align-items:center;gap:4px;border-radius:5px;font-size:10.5px;letter-spacing:.06em;
text-transform:uppercase;padding:2px 6px;vertical-align:1px}
.ic{width:11px;height:11px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ic .f{fill:currentColor;stroke:none}.btn .ic{width:15px;height:15px;margin-right:6px;vertical-align:-2px}
.todo-line{font-weight:600;letter-spacing:-.01em}
.seg{border-radius:9px}.seg button{border-radius:7px}.seg button[aria-pressed="true"]{box-shadow:inset 0 0 0 1px var(--line)}
.ideas li{border-radius:8px}.idea-icon{font-family:var(--mono);font-weight:700}
.idea-icon.up{color:var(--ok)}.idea-icon.down{color:var(--crit)}.idea-icon.flat,.idea-icon.na{color:var(--ink2)}
/* нижние вкладки: стекло, выбранная — чертой сверху, без «таблетки» */
.tabs button[aria-selected="true"] .ti{background:none}
.tabs button[aria-selected="true"]::before{content:"";position:absolute;top:-4px;left:28%;right:28%;height:2px;
border-radius:2px;background:var(--s)}
.tabs button{transition:color .15s var(--ease)}
/* всплывающая карточка: выезжает снизу */
@keyframes sheet-in{from{transform:translateY(28px);opacity:0}}@keyframes shade-in{from{opacity:0}}
.sheet{animation:shade-in .2s var(--ease);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.sheet-card{animation:sheet-in .32s var(--ease);border-radius:16px 16px 0 0;border-top:1px solid var(--line)}
@media (min-width:760px){.sheet-card{border-radius:16px;border:1px solid var(--line)}}
@media (min-width:1100px){.tabs button[aria-selected="true"]::before{display:none}.tabs button{border-radius:8px 8px 0 0}
.tabs{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg)}}

/* ── 13a «новые темы»: кандидаты радара — карточка, спрос, две кнопки; полоска-ссылка над списком тем ─────── */
.tabs button.fresh::after{content:"";position:absolute;top:6px;left:calc(50% + 10px);width:9px;height:9px;border-radius:50%;
background:var(--s);border:2px solid var(--card)}
.box.has{border-color:color-mix(in srgb,var(--s) 60%,var(--line))}
.fresh-n{flex:none;font:600 12px/1.7 var(--mono);min-width:22px;text-align:center;padding:0 6px;border-radius:5px;
background:var(--s);color:var(--card)}
.fresh-line{margin:0 0 4px;overflow-wrap:anywhere}.fresh-line:last-child{margin-bottom:0}
.fresh-msg{margin:0 0 12px;padding:8px 10px;border-radius:var(--r);background:var(--sbg)}
.fresh-list{display:grid;gap:10px}
@media (min-width:760px){.fresh-list{grid-template-columns:1fr 1fr}}
.fcard{display:grid;gap:8px;align-content:start;min-width:0;border:1px solid var(--line);border-radius:var(--r);padding:12px;
background:var(--bg)}
.fresh-name{margin:0;min-width:0;font-size:16px;line-height:1.3;overflow-wrap:anywhere}.fresh-name b{font-weight:600}
.fresh-v{flex:none;margin-top:2px}.fresh-v.up{color:var(--ok);background:var(--okbg)}
.fresh-v.flat,.fresh-v.na{color:var(--ink2);background:var(--track)}
.fresh-demand{display:flex;align-items:flex-end;gap:8px 16px;flex-wrap:wrap}
.fresh-num{display:grid;line-height:1.2}.fresh-num b{font:600 22px/1.15 var(--mono);letter-spacing:-.04em}
.fresh-demand .mini{margin-left:auto}.fresh-demand .mini svg{width:96px;height:32px}
.fresh-note{margin:0}
.fresh-act{display:grid;gap:12px;margin-top:4px}
.fresh-act .btn{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:46px;padding:0 10px}
.fresh-act button:disabled{opacity:.55;cursor:default}
.btn.fresh-go{background:var(--s);border-color:var(--s);color:var(--sink)}
.fresh-how>summary,.fresh-done>summary{min-height:44px;display:flex;align-items:center;font-weight:600;color:var(--s);cursor:pointer}
.fresh-done .plain li{padding:0}.fresh-done .link{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--s)}
@media (min-width:1100px){.tabs button.fresh::after{position:static;display:inline-block;width:8px;height:8px;border:0}}

/* ── 12a «кейс проверки»: предложения поставщиков, расчёт партии, четыре измерения, решение ───────── */
.fold-b h4{margin:6px 0 0;font-size:14px;font-weight:650;letter-spacing:-.01em}
.case-status{margin:0;font-weight:600;overflow-wrap:anywhere}
.case-step{font-weight:500;font-size:14px;margin-top:2px}
.case-dec{display:inline-block;font:700 11px/1.5 var(--mono);letter-spacing:.08em;padding:1px 7px;border-radius:5px;
margin-right:7px;vertical-align:1px}
.case-dec.dGO{color:var(--ok);background:var(--okbg)}.case-dec.dITERATE{color:var(--warn);background:var(--warnbg)}
.case-dec.dKILL{color:var(--crit);background:var(--critbg)}
.case-offers,.case-list,.case-history{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:6px}
.case-list li{position:relative;padding-left:14px;font-size:14px;overflow-wrap:anywhere}
.case-list li::before{content:"";position:absolute;left:2px;top:.6em;width:5px;height:5px;border-radius:1px;
background:var(--ink2)}
.case-list.small li{font-size:13px}
.case-offer{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;justify-content:space-between;
border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;background:var(--card)}
.case-offer.on{border-color:color-mix(in srgb,var(--s) 60%,var(--line));box-shadow:inset 2px 0 0 var(--s)}
.case-offer-main{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}
.case-offer-act{display:flex;gap:6px;align-items:center}
.btn.sm{padding:0 12px;font-size:13px}
.case-tag{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--s);
background:var(--sbg);border-radius:5px;padding:2px 6px}
.case-input{width:100%;min-width:0;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r);
background:var(--card);color:var(--ink);font:inherit}
textarea.case-input{display:block;resize:vertical}
.item-form .case-input{flex:1 1 220px;width:auto}
.case-fields{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:8px}
.case-field{display:grid;gap:2px;flex:1 1 120px;min-width:0}.case-fields .case-input{font-family:var(--mono)}
.case-nums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}
.case-num{display:grid;gap:2px;min-width:0;border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;
background:var(--card)}
.case-num span{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.case-num b{font:600 17px/1.25 var(--mono);letter-spacing:-.03em;overflow-wrap:anywhere}
.case-num.good b{color:var(--ok)}.case-num.bad b{color:var(--crit)}
.econ tr.head td{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2);
padding-top:14px}
.case-dims{display:grid;gap:8px;margin-bottom:4px}
.case-dim{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;background:var(--card)}
.case-dim-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:4px}.case-dim p{margin:0}
.case-code{margin-left:auto;font:500 10.5px/1 var(--mono);letter-spacing:.08em;color:var(--ink2)}
.case-decide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}
.case-go{display:grid;justify-items:center;align-content:center;gap:0;min-height:54px;padding:6px 4px;line-height:1.25}
.case-go b{font-family:var(--mono);letter-spacing:.06em}.case-go span{font-weight:500;color:var(--ink2)}
.case-go.dGO{border-color:var(--ok)}.case-go.dGO b{color:var(--ok)}
.case-go.dITERATE{border-color:var(--warn)}.case-go.dITERATE b{color:var(--warn)}
.case-go.dKILL{border-color:var(--crit)}.case-go.dKILL b{color:var(--crit)}
.case-history li{border-left:2px solid var(--line);padding-left:10px;font-size:14px;overflow-wrap:anywhere}
.flag.case{color:var(--s);background:var(--sbg)}

/* ── 12b «тест закупки»: гипотеза, итог, расчёт по факту и предложение решения — внутри кейса проверки ── */
.test-hyp{margin:0 0 4px;font-weight:600;overflow-wrap:anywhere}
.fold-b>.case-dim-head .case-code{margin-left:0}
.test-offer{margin:10px 0;padding:10px 12px;border:1px solid var(--line);border-left:2px solid var(--s);
border-radius:var(--r);background:var(--card)}
.test-offer.dGO{border-left-color:var(--ok)}.test-offer.dITERATE{border-left-color:var(--warn)}
.test-offer.dKILL{border-left-color:var(--crit)}
.test-offer-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;font:500 10.5px/1.5 var(--mono);
letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.test-offer p{margin:0 0 4px;overflow-wrap:anywhere}.test-offer p:last-child{margin-bottom:0}

/* ── 13d «рано»: ранние сигналы — в Китае уже есть, в России почти не ищут; группы, Китай, русские фразы
   (с 18e список — левый столбец вкладки «Что нового», строки — в блоке 18e) ── */
.fresh-n.soft{background:var(--sbg);color:var(--s)}
.fresh-group{margin:12px 0 8px;font:500 10.5px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.fcard.early{border-style:dashed}
.fresh-v.early{color:var(--s);background:var(--sbg)}.fresh-v.weak{color:var(--ink2);background:var(--track)}
.fresh-china{margin:0;padding-left:10px;border-left:2px solid var(--s);border-radius:0;overflow-wrap:anywhere}
.fresh-alt{margin:0;overflow-wrap:anywhere}.fresh-alt b{font-weight:600;color:var(--ink)}

/* ── 14a «досье товара»: шесть разделов от сервера — заголовок раздела, кто ответил и проверка, «как посчитано» ── */
.dos-state{margin:0 0 8px;padding:8px 10px;border:1px solid var(--line);border-left:2px solid var(--warn);
border-radius:var(--r);background:var(--card);overflow-wrap:anywhere}
.dos-state.run{border-left-color:var(--s)}
.dos-head{margin:0 0 8px}.dos-head b{font-family:var(--mono);letter-spacing:-.02em}
.dos-parts{display:grid;gap:8px;margin-bottom:10px}
.dos-part{border:1px solid var(--line);border-radius:var(--r);background:var(--card);padding:0 10px}
.dos-part.bad{border-left:2px solid var(--crit)}
.dos-part>summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;min-height:44px;padding:8px 0;
list-style:none}
.dos-part>summary::-webkit-details-marker{display:none}
.dos-title{font-weight:650;letter-spacing:-.01em}
.dos-meta{font:500 10.5px/1.5 var(--mono);letter-spacing:.04em;color:var(--ink2);overflow-wrap:anywhere}
.dos-body{padding:0 0 10px;overflow-wrap:anywhere}.dos-body p{margin:0 0 8px}
.dos-h{margin:12px 0 6px;font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
color:var(--ink2)}
.dos-pre{margin:0 0 8px;padding:10px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg);
font:500 12.5px/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
.pack-line{margin:10px 0 0;padding-top:10px;border-top:1px solid var(--line)}.pack-line p{margin:0 0 8px}
.pack-line .dos-pre{margin:8px 0 0;max-height:60vh;overflow:auto}
.dos-how>summary{min-height:44px;display:flex;align-items:center;color:var(--s)}

/* ── 11i «Авито»: предложение в России — числа замера владельца в карточке темы ── */
.av-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px;margin:0 0 10px}
.av-num{display:grid;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);
background:var(--card);min-width:0;overflow-wrap:anywhere}
.av-num>span:first-child{font:500 10.5px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.av-num b{font:600 20px/1.15 var(--mono);font-variant-numeric:tabular-nums}

/* ── 15a: экономика штуки — самая большая статья расходов и допущения расчёта ───────────────────── */
.econ-top{margin:8px 0 0;color:var(--ink2);font-variant-numeric:tabular-nums}
.econ-top b{font-family:var(--mono);font-weight:600;color:var(--ink)}

/* ── 15d: какая цена завода стоит в оценке (кейс / Taobao / объявленная / неизвестна) и подсказка про кейс ── */
.how-part{padding-left:10px;border-left:2px solid var(--line);overflow-wrap:anywhere}
.how-part.own{border-left-color:var(--s)}
.how-t{display:block;font:500 10.5px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.how-part>b{display:block;margin:2px 0 4px;font-weight:650;letter-spacing:-.01em}
.how-part p{margin:0;color:var(--ink2)}
.how-part ul{margin:4px 0 0;padding-left:18px;display:grid;gap:4px;color:var(--ink2)}

/* ── 16a «дорогие товары»: рубли со штуки в списке и карточке, порядок «по рублям», пометка «дорогой» ── */
.chips-row.order{align-items:center}
.chips-row.order button{font-size:13px}
.order-t{font:500 10.5px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.flag.premium{color:var(--warn);background:var(--warnbg)}
.tunit-n.neg{color:var(--crit)}
.fresh-price{margin:0;overflow-wrap:anywhere}.fresh-price b{font:500 13px/1.4 var(--mono);color:inherit}
.fresh-pit{margin:0;padding-left:10px;border-left:2px solid var(--warn);overflow-wrap:anywhere}
.fresh-pit b{font-weight:600}
.fresh-an{margin:6px 0 0;padding-left:10px;border-left:2px solid var(--ok)}
.fresh-an.skip{border-left-color:var(--ink2)}
.fresh-an.doubt{border-left-color:var(--warn)}
.fresh-an p{margin:2px 0}
.unit-trial{font-size:14px;overflow-wrap:anywhere}
@media (min-width:1100px){.trow{grid-template-columns:44px minmax(0,1fr) 44px 124px 96px 140px}
.tunit-n{font:600 13px/1.3 var(--mono);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}}

/* ── 15f: комиссия WB в экономике штуки — по предмету темы или общая ставка категории (D-41) ── */
.econ-fee{margin:8px 0 0;padding-left:10px;border-left:2px solid var(--line);color:var(--ink2);overflow-wrap:anywhere}
.econ-fee.own{border-left-color:var(--s)}

/* ── 15g: «Где продавать» — WB со склада WB / со своего склада, Ozon FBO / FBS; строки-карточки (D-42) ── */
.flag.where-best{color:var(--ok);background:var(--okbg)}.flag.where-scored{color:var(--s);background:var(--sbg)}
.order-m{margin-left:4px}
.money{font-size:12.5px}.money th,.money td{padding:7px 8px 7px 0;overflow-wrap:anywhere}
.money thead th{font-size:10px;line-height:1.3;letter-spacing:.02em;text-transform:uppercase;vertical-align:bottom;
overflow-wrap:normal}
.money tbody th{min-width:92px;font-weight:600;color:var(--ink)}
.money tbody th .flag{display:flex;width:max-content;margin-top:3px}
.money .num{text-align:right;white-space:nowrap;font-family:var(--mono);font-variant-numeric:tabular-nums}
.money thead .num{white-space:normal;font-family:inherit}
.money .good{color:var(--ok)}.money .bad{color:var(--crit)}.money tr.off td{color:var(--ink2);font-size:13px}
.money tbody tr:last-child>*{border-bottom:0}

/* ── 17a «новости»: заголовки Гуанчжоу, календарь выставок и действия-черновики — строки-карточки; с 18d — блоки
   ленты «Что нового»: действия события — в одной раскрывашке, отметка «разобрано» — одна на событие ── */
.nw-box{margin-bottom:12px}
.nw-list{display:grid;gap:10px;margin:0}.nw-line{margin:4px 0 0;overflow-wrap:anywhere}
.nw-line .flag{margin-right:6px}
.nw-list>.nw-ev,.nw-list>.nw-item{min-width:0;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;background:var(--bg)}
.nw-ev{display:grid;gap:4px}.nw-ev.trip{border-color:color-mix(in srgb,var(--ok) 60%,var(--line));box-shadow:inset 2px 0 0 var(--ok)}
.nw-item.work{box-shadow:inset 2px 0 0 var(--ok)}
.nw-when{font:600 13px/1.3 var(--mono);letter-spacing:-.02em;color:var(--s)}
.nw-title{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.nw-title b{font-weight:600;overflow-wrap:anywhere}
.nw-head{display:flex;align-items:center;min-height:44px;font-weight:600;color:var(--ink);text-decoration:underline;
text-decoration-color:var(--line);text-underline-offset:3px;overflow-wrap:anywhere}
.flag.nw-new{color:var(--s);background:var(--sbg)}.flag.nw-tag{color:var(--ink2);background:var(--track)}
.flag.nw-ok{color:var(--ok);background:var(--okbg)}
.nw-digest>summary,.nw-src>summary,.nw-what>summary{min-height:44px;display:flex;align-items:center;gap:8px;list-style:none;
font-weight:600;color:var(--s);cursor:pointer}
.nw-digest>summary::-webkit-details-marker,.nw-src>summary::-webkit-details-marker,.nw-what>summary::-webkit-details-marker{display:none}
.nw-digest>summary::after,.nw-src>summary::after,.nw-what>summary::after{content:"";flex:none;margin:0 4px 0 auto;width:7px;height:7px;
border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg)}
.nw-digest[open]>summary::after,.nw-src[open]>summary::after,.nw-what[open]>summary::after{transform:rotate(45deg);margin-bottom:4px}
.nw-btn{display:inline-flex;align-items:center;min-height:44px;height:auto;padding:6px 12px;text-decoration:none;color:var(--ink);
text-align:left}
.nw-mark{display:inline-flex;align-items:center;min-height:44px;font-size:13px;color:var(--ink2)}
.nw-mark.on{color:var(--ok);border-color:var(--ok);background:var(--okbg)}
.nw-more{display:inline-flex;align-items:center;min-height:44px;margin-top:10px}
.nw-hint{margin:2px 0 0}.nw-said{margin:6px 0 0;color:var(--ok)}
.nw-text{margin:6px 0 0;padding:10px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);
font:12px/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto}
.nw-clip{position:fixed;left:-200vw;top:0;opacity:0}
.nw-digest+.nw-digest{border-top:1px solid var(--line)}
.nw-src{margin-top:10px;border-top:1px solid var(--line)}
.nw-src .plain li{display:grid;gap:0;padding:0 0 8px}
.nw-src .link{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--s);font-weight:600;text-decoration:none}
.nw-src .link .ic{width:14px;height:14px}

/* ── 18a «карта проекта»: вкладка «Сервер» — узлы-карточки сеткой CSS, связи одним SVG под ними (D-45).
   Телефон: вся карта на первом экране в сжатом виде (.fit — короткие подписи), «Крупнее» — полные карточки с
   прокруткой вбок; подпись узла — шторкой над вкладками. Цвет точки — всегда со значком и словом. ── */
.pm-box{margin-bottom:12px;padding:8px}
.pm-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 4px 6px;min-height:44px}
.pm-top h3{margin:0}
.pm-zoom{display:inline-flex;align-items:center;min-height:44px}
.pm-main{min-width:0}
.pm-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r);background:var(--bg)}
.pm-wrap.fit{overflow:hidden}
.pm-map{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);gap:10px 30px;
padding:12px 14px 14px;min-width:820px}
.pm-wrap.fit .pm-map{min-width:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 16px;padding:6px}
.pm-colh{font:600 10.5px/1.25 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);padding:2px 0 5px;
border-bottom:1px solid var(--line);align-self:end}
.pm-lane{grid-column:1/-1;font:500 10px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);margin-top:4px}
.pm-lane span{position:relative;z-index:1;background:var(--bg);padding-right:6px}
.pm-wrap.fit .pm-colh{font-size:9px;letter-spacing:.04em;padding:0 0 3px}.pm-wrap.fit .pm-lane{font-size:9px;margin-top:0}
.pm-node{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;width:100%;min-width:0;min-height:48px;text-align:left;cursor:pointer;
border:1px solid var(--line);border-radius:8px;background:var(--card);padding:7px 9px 7px 32px;overflow-wrap:anywhere;
transition:border-color .15s var(--ease)}
.pm-node:hover,.pm-node.sel{border-color:var(--s)}.pm-node.sel{box-shadow:inset 0 0 0 1px var(--s)}
.pm-node.hub{background:var(--sbg);border-color:color-mix(in srgb,var(--s) 45%,var(--line))}
.pm-node.fail{border-color:var(--crit)}.pm-node.warn{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}
.pm-node.static,.pm-node.none{border-style:dashed}
.pm-node b{display:block;font-weight:600;font-size:13px;line-height:1.25}
.pm-node small{display:block;color:var(--ink2);font-size:11.5px;line-height:1.3;margin-top:1px}
.pm-wrap.fit .pm-full,.pm-wrap:not(.fit) .pm-short{display:none}
.pm-wrap.fit .pm-node{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 4px;align-content:center;align-items:center;
padding:4px 6px;min-height:44px;overflow-wrap:normal}
.pm-wrap.fit .pm-node b{grid-column:1/-1;grid-row:1;font-size:11.5px;line-height:1.2}
.pm-wrap.fit .pm-node>.pm-dot{grid-column:1;grid-row:2}.pm-wrap.fit .pm-node>.pm-word{grid-column:2;grid-row:2}
.pm-dot{display:inline-grid;place-items:center;flex:none;width:16px;height:16px;border-radius:50%;font:800 10px/1 system-ui,sans-serif;
color:var(--card);background:var(--ink2);border:1px solid transparent}
.pm-dot.ok{background:var(--ok)}.pm-dot.warn{background:var(--warn)}.pm-dot.fail{background:var(--crit)}
.pm-dot.none,.pm-dot.static{background:none;color:var(--ink2);border-color:var(--ink2)}.pm-dot.none{border-style:dashed}
.pm-node>.pm-dot{position:absolute;left:8px;top:8px}
.pm-wrap.fit .pm-node>.pm-dot{position:static;width:13px;height:13px;font-size:8.5px}
.pm-word{display:block;font:600 10.5px/1.35 var(--mono);color:var(--ink2);margin-top:2px}
.pm-word.ok{color:var(--ok)}.pm-word.warn{color:var(--warn)}.pm-word.fail{color:var(--crit)}
.pm-wrap.fit .pm-word{font-size:9.5px;letter-spacing:-.02em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pm-t{display:block;font:500 10.5px/1.35 var(--mono);color:var(--s)}
.pm-arrows{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:visible}
.pm-arrows path{fill:none;stroke:var(--ink2);stroke-width:1.3;opacity:.6;transition:opacity .15s var(--ease)}
.pm-arrows path.data{stroke:var(--s);opacity:.85}.pm-arrows path.human{stroke:var(--ok);stroke-dasharray:4 3;opacity:.9}
.pm-arrows path.dim{opacity:.1}
.pm-arrows marker path{stroke:none;stroke-dasharray:none;opacity:1;fill:var(--ink2)}
.pm-arrows marker path.data{fill:var(--s)}.pm-arrows marker path.human{fill:var(--ok)}
.pm-legend{list-style:none;display:flex;flex-wrap:wrap;gap:6px 14px;padding:0;margin:10px 0 0}
.pm-legend li{display:inline-flex;align-items:center;gap:6px}
.pm-line{display:inline-block;width:22px;border-top:2px solid var(--ink2)}.pm-line.data{border-color:var(--s)}
.pm-line.human{border-top-style:dashed;border-color:var(--ok)}
.pm-panel{border:1px solid var(--line);border-radius:var(--r);background:var(--card);padding:12px 14px;margin-top:10px}
.pm-panel.idle{border-style:dashed}.pm-panel.idle p{margin:0}.pm-panel:focus{outline:none}
.pm-phead{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.pm-phead h3{margin:0;font-size:16px;letter-spacing:0;text-transform:none;color:var(--ink)}
.pm-level{display:flex;align-items:center;gap:8px;margin:6px 0 0}.pm-level .pm-word{font-size:12px;margin:0}
.pm-kv{margin:0}.pm-kv dt{font:600 10.5px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);margin-top:10px}
.pm-kv dd{margin:2px 0 0;font-size:14px;overflow-wrap:anywhere}
.pm-cloud{margin-top:8px}
.pm-go{display:inline-flex;align-items:center;min-height:44px;height:auto;padding:6px 14px;margin-top:12px;text-decoration:none;
color:var(--ink);text-align:left;white-space:normal}
.pm-sched{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px;margin-top:12px}
.pm-card{min-width:0;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--bg);font-size:13px}
.pm-card h4{font:700 10.5px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);margin:0 0 8px}
.pm-rows{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;margin:0}
.pm-rows dt{font:600 12px/1.5 var(--mono);color:var(--s);white-space:nowrap}.pm-rows dd{margin:0;line-height:1.45}
.pm-src{margin:8px 0 0}
.pm-checks>summary{min-height:44px;display:flex;flex-wrap:wrap;align-items:center;gap:0 4px;cursor:pointer}
.pm-checks>summary::-webkit-details-marker{display:none}
.pm-checks>summary::before{content:"▸";color:var(--s);margin-right:6px}.pm-checks[open]>summary::before{content:"▾"}
.pm-checks[open]>summary{margin-bottom:6px}
.pm-more{display:inline-flex;align-items:center;min-height:44px;margin-top:10px}
@media (max-width:1099px){
.pm-panel.open{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));z-index:5;margin:0;
max-height:min(60vh,480px);overflow-y:auto;border-radius:16px 16px 0 0;border-width:2px 0 0;border-color:var(--s);
padding:12px 16px 16px}
.pm-box.has-sel .pm-wrap{margin-bottom:0}}
@media (min-width:860px){.pm-zoom{display:none}.pm-map{min-width:0}.pm-box{padding:12px 14px 14px}}
@media (min-width:1100px){.pm-main{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;align-items:start}
.pm-panel{margin-top:0;position:sticky;top:78px;max-height:calc(100vh - 96px);overflow-y:auto}}

/* ── 18b «список: тему видно сразу» (D-44): поиск с меню «⋯», строки тем на телефоне ── */
.tools{gap:8px}.tools .chips-row{margin-bottom:0}
.find{display:flex;gap:8px;margin-bottom:8px}.find input{flex:1 1 0;min-width:0}
.more-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:46px;min-height:46px;padding:0 12px;
font-size:13px}
.more-btn .ic{width:18px;height:18px;margin:0}
.more-btn.on,.more-btn[aria-expanded="true"]{border-color:var(--s);color:var(--s)}
.more-panel{display:grid;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--card)}
.lines{display:grid;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.tl{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:56px;
padding:7px 10px;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;cursor:pointer}
.tl:last-child{border-bottom:0}.tl:hover,.tl:active{background:var(--hover)}
.tl:has(.flag.work){box-shadow:inset 2px 0 0 var(--ok)}
.tl .seal{width:36px;height:36px;font-size:17px;border-radius:7px}
.tl-main{display:grid;gap:2px;min-width:0}
.tl-name{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0}
.tl-name .nm{font-weight:600;letter-spacing:-.01em;line-height:1.2;overflow-wrap:anywhere}
.tl-ln{display:flex;flex-wrap:wrap;gap:0 4px;font-size:12px;line-height:1.3;color:var(--ink2)}
.tl-ln>span{white-space:nowrap}.tl-ln>span:not(:last-child)::after{content:" ·"}
.tl-ln b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.tl-ln b.pos{color:var(--ok)}.tl-ln b.neg{color:var(--crit)}
.tl-idx{display:grid;justify-items:end;gap:2px}
.tl-idx b{font:600 20px/1 var(--mono);letter-spacing:-.04em}
.tl-idx span{font-size:9px;line-height:1.2;letter-spacing:.06em;text-transform:uppercase}
@media (max-width:560px){#levels{gap:6px}#levels button{min-width:44px;justify-content:center;gap:4px;padding:0 8px;font-size:13px}
#levels button .n{min-width:0;padding:0;background:none;font-size:11px}}
@media (min-width:1100px){.find{max-width:580px}}

/* ── 18c «карточка: первый экран и один блок действий» (D-44): три числа, «Действия», строки-раскрывашки ── */
.dhead{margin-bottom:10px}.dsub .flag{margin-left:2px}
.first{display:grid;gap:10px;padding:12px 14px;border:1px solid var(--line);border-left:2px solid var(--lB);
border-radius:var(--r);background:var(--card)}
.first.lA{border-left-color:var(--s)}.first.lC,.first.lD{border-left-color:var(--ink2)}
.first>p,.nums-note,.act-msg{margin:0}
.why3{grid-template-columns:auto minmax(0,1fr);gap:4px 12px}
.why3 dt{font-weight:650}.why3 dt.good{color:var(--ok)}.why3 dt.bad{color:var(--crit)}.why3 dt.step{color:var(--s)}
.nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.tile3{display:grid;gap:2px;align-content:start;min-width:0;padding:6px 8px;border-radius:8px;background:var(--track)}
.tile3 span{font-size:10px;line-height:1.3;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2)}
.tile3 b{font:600 16px/1.25 var(--mono);letter-spacing:-.05em;white-space:nowrap}
.tile3.good b{color:var(--ok)}.tile3.bad b{color:var(--crit)}
.actions{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) 46px;gap:8px}
.actions.two{grid-template-columns:minmax(0,1fr) 46px}
.actions .btn{min-height:46px;padding:0 8px;font-size:14px;line-height:1.2}
.actions .more-btn{min-width:46px;padding:0}
.btn.primary{background:var(--s);border-color:var(--s);color:var(--sink)}
.btn.primary:hover,.btn.fresh-go:hover{box-shadow:0 0 0 1px var(--s),0 0 18px var(--glow)}
.btn:disabled{opacity:.55;cursor:default}
.menu{display:grid;gap:8px;padding:10px 12px;border-radius:var(--r);background:var(--track)}
.menu-btn{display:flex;align-items:center;width:100%;text-align:left;font-size:14px}
.menu-item{display:grid;gap:4px}.menu-item p,.menu-note{margin:0}
.folds{border-bottom:1px solid var(--line)}
.fold{border-top:1px solid var(--line);min-width:0}
.fold>summary{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 0;list-style:none}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary::after{content:"";flex:none;margin:0 4px 3px 0;width:7px;height:7px;border-right:2px solid var(--ink2);
border-bottom:2px solid var(--ink2);transform:rotate(45deg)}
.fold[open]>summary::after{transform:rotate(-135deg);margin-bottom:-4px}
.fold-t{flex:0 0 auto;max-width:58%;font-weight:650;letter-spacing:-.01em;min-width:0}
.fold.demand .fold-s{flex:none}.fold.demand .fold-t{max-width:none;flex:1 1 auto}
.fold-s{margin-left:auto;min-width:0;text-align:right;font-size:13px;line-height:1.3;color:var(--ink2);overflow-wrap:anywhere}
.fold-b{display:grid;gap:10px;min-width:0;padding:2px 0 14px}
.fold-b>*{margin-top:0;margin-bottom:0;min-width:0}
.fold.in>summary{min-height:44px;padding:4px 0}.fold.in>summary .fold-t{font-size:14px;font-weight:600}
.fold.in:last-child>.fold-b{padding-bottom:2px}
.menu .fold.in:first-of-type{border-top:0}
.fold.demand{border-top:0;margin-top:6px}
.demand-t{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:center;flex:1 1 auto;font-weight:400}
.demand-t .mini svg{width:96px;height:30px}.demand-t b{font:600 13px/1.3 var(--mono)}
.sub-h{font:500 10.5px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.av-line{overflow-wrap:anywhere}
.link.in-case,.link.in-menu{display:flex;align-items:center;min-height:44px;color:var(--s);font-weight:600}
.what>summary{min-height:44px;display:flex;align-items:center;color:var(--s);font-weight:600}
.what>*+*,.econ-more>*+*{margin-top:8px}
.panel .first{border-width:0 0 0 2px;border-radius:0;padding:2px 0 2px 14px;background:none}
@media (max-width:420px){.tile3 b{font-size:15px}.actions .btn{font-size:13px}}

/* ── 18d «четыре вкладки» (D-44): Темы (список | карта) · Кейсы (с «Опережением») · Что нового · Сервер ── */
.view-seg{flex:none;grid-template-columns:repeat(2,auto);margin:0 0 0 auto;align-self:stretch}
.view-seg button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;padding:0 10px;
cursor:pointer}
.view-seg .ic{width:15px;height:15px}
@media (max-width:560px){.view-seg .ic{display:none}.view-seg button{padding:0 8px}}
.lead-fold,.fresh-how,.fresh-done{margin-bottom:12px;padding-top:4px;padding-bottom:4px}
.lead-fold[open],.fresh-how[open],.fresh-done[open]{padding-bottom:14px}
.lead-fold>summary{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;min-height:44px;list-style:none;cursor:pointer}
.lead-fold>summary::-webkit-details-marker,.fresh-how>summary::-webkit-details-marker,.fresh-done>summary::-webkit-details-marker{display:none}
.lead-fold>summary,.fresh-how>summary,.fresh-done>summary{list-style:none}
.lead-fold>summary::after,.fresh-how>summary::after,.fresh-done>summary::after{content:"";flex:none;
margin:0 4px 0 auto;width:7px;height:7px;border-right:2px solid var(--ink2);border-bottom:2px solid var(--ink2);transform:rotate(-45deg)}
.lead-fold[open]>summary::after,.fresh-how[open]>summary::after,.fresh-done[open]>summary::after{
transform:rotate(45deg);margin-bottom:4px}
.lead-fold[open]>summary{margin-bottom:8px}.lead-fold .tiles{margin-bottom:10px}
#new-cand h3{color:var(--ink)}
.tile-go{text-align:left;cursor:pointer;font:inherit;color:inherit;transition:border-color .15s var(--ease)}
.tile-go:not(:disabled){border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}
.tile-go:not(:disabled):hover{border-color:var(--s)}.tile-go:disabled{cursor:default}
/* планшет (760–1099 px): крупная карта проекта помещается без прокрутки вбок; подпись узла — шторкой снизу, как на
   телефоне (правило шторки — в блоке 18a): иначе она появлялась под картой, за краем экрана */
@media (min-width:760px){.pm-map{min-width:0}}

/* 19a: «Ждут вас» во вкладке «Сервер» — задачи ядра с кнопками решения (слой 10y) */
.wq-box{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.wq-title{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2)}
.wq{margin:0 0 12px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--warn) 55%,var(--line));border-radius:var(--r)}
.wq-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px}
.wq-what{margin:6px 0 8px}.wq-line{margin:0 0 6px;overflow-wrap:anywhere}
.wq-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.wq-act .btn{min-height:44px}
.wq-note{margin:0 0 10px;padding:8px 10px;border-radius:var(--r);background:var(--sbg)}
@media (max-width:560px){.wq-act .btn{flex:1 1 100%}}
.feed-detail{white-space:pre-line}

/* ── 18e «Что нового» столбцами (D-46): полоса «Ждут решения», столбцы «Рано · Новости · Календарь»,
   новости по-русски с кнопками действий в строке, календарь выставок сеткой месяца. Телефон — один столбец и
   переключатель-сегмент, планшет — два столбца, компьютер (≥ 1100 px) — три ── */
.nw-wait{margin-bottom:12px;padding-top:10px;padding-bottom:10px}
.nw-wait h3{margin-bottom:10px}
.nw-wait .fresh-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));margin-bottom:8px}
.fresh-more>summary{display:flex;align-items:center;min-height:44px;font-size:13px;font-weight:600;color:var(--s);cursor:pointer}
.fresh-more[open]{display:grid;gap:8px}
.nw-seg{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:12px}
.nw-seg button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;padding:0 4px;cursor:pointer}
.nw-seg-n{font:500 11px/1.6 var(--mono);padding:0 5px;border-radius:5px;background:var(--track);color:var(--ink2)}
.nw-seg button[aria-pressed="true"] .nw-seg-n{background:var(--sbg);color:var(--s)}
.nw-cols{display:grid;gap:12px;align-items:start;margin-bottom:12px}
.nw-col{min-width:0}.nw-colbox{min-width:0}
.nw-coltitle{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.nw-lead{margin:0 0 6px}
.nw-what{border-bottom:1px solid var(--line)}.nw-what[open]{padding-bottom:10px}
@media (max-width:759px){.nw-colbox{padding-left:12px;padding-right:12px}
.nw-cols[data-seg="early"]>.nw-col:not([data-col="early"]),.nw-cols[data-seg="news"]>.nw-col:not([data-col="news"]),
.nw-cols[data-seg="cal"]>.nw-col:not([data-col="cal"]){display:none}}
@media (min-width:760px){.nw-seg{display:none}
.nw-cols{grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);grid-template-areas:"early news" "cal news";
grid-template-rows:auto 1fr}
#new-col-early{grid-area:early}#new-col-news{grid-area:news}#new-col-cal{grid-area:cal}}
@media (min-width:1100px){
.nw-cols{grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr) minmax(370px,1fr);grid-template-areas:"early news cal";
grid-template-rows:auto}
.nw-col>.box{max-height:max(540px,calc(100vh - 150px));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}}
/* строка «Рано»: название и главное число; карточка с кнопками — по нажатию */
.er-list>li{padding:0}
.er>summary{display:flex;align-items:center;gap:8px;min-height:48px;padding:6px 0;list-style:none;cursor:pointer}
.er>summary::-webkit-details-marker{display:none}
.er>summary::after{content:"";flex:none;margin:0 4px 0 2px;width:7px;height:7px;border-right:2px solid var(--ink2);
border-bottom:2px solid var(--ink2);transform:rotate(-45deg)}
.er[open]>summary::after{transform:rotate(45deg);margin-bottom:4px}
.er-main{display:grid;flex:1;min-width:0}.er-name{overflow-wrap:anywhere;line-height:1.3}.er-name b{font-weight:600}
.er-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.er-side{display:grid;flex:none;justify-items:end;gap:2px}
.er-num{font:500 12px/1.4 var(--mono);letter-spacing:-.02em;color:var(--ink2);white-space:nowrap}
.er>.fcard{margin:2px 0 12px}
/* новость: русский заголовок — ссылка, «для продавца», оригинал мелко; действия — кнопками в строке */
.nw-item .nw-head{min-height:44px;line-height:1.35;padding:4px 0}
.nw-about{margin:0;overflow-wrap:anywhere}.nw-about b{font-weight:600;color:var(--s)}
.nw-orig{margin:2px 0 0;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.nw-do{margin-top:8px}.nw-do.marked .nw-btn{opacity:.6}
.nw-do-row,.nw-rest{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.nw-rest{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.nw-do .nw-btn{flex:0 1 auto;min-width:0;padding:6px 10px;font-size:13.5px;line-height:1.25;border-radius:var(--r)}
.nw-do .nw-btn .ic{margin-right:5px}
.nw-dots{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;min-height:44px;padding:0;
border-radius:var(--r);color:var(--ink2)}
.nw-dots .ic{width:18px;height:18px;margin:0}.nw-dots[aria-expanded="true"]{border-color:var(--s);color:var(--s)}
.nw-other{margin-top:10px}.nw-other>.nw-item{border-style:dashed}
.nw-when{display:flex;align-items:center;gap:8px}
/* календарь: сетка месяца (пн–вс), полоски событий по дорожкам, список под сеткой */
.cal-nav{display:flex;align-items:center;gap:8px;margin:4px 0 8px}
.cal-title{flex:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 8px;min-width:0;font-size:16px;
text-align:center}
.cal-title b{font-weight:600}
.cal-arrow{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;padding:0;border-radius:var(--r)}
.cal-arrow .ic{width:16px;height:16px;margin:0}.cal-arrow:disabled{opacity:.35;cursor:default}
.cal-quick{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.cal-q{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:8px;
background:var(--card);font:600 13px/1 var(--mono);color:var(--ink);cursor:pointer}
.cal-q .ic{width:13px;height:13px;color:var(--ok)}
.cal-qn{font-weight:500;color:var(--ink2)}
.cal-q[aria-pressed="true"]{border-color:var(--s);background:var(--sbg);color:var(--s)}
.cal-q[aria-pressed="true"] .cal-qn{color:inherit}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);
overflow:hidden;background:var(--bg)}
.cal-wd{padding:6px 0;text-align:center;font:500 10.5px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.cal-day{position:relative;display:flex;flex-direction:column;min-width:0;min-height:52px;padding:4px 0 6px;border:0;border-radius:0;
box-shadow:inset 0 1px 0 var(--line);background:none;font:inherit;color:inherit;text-align:left}
button.cal-day{cursor:pointer}button.cal-day:hover{background:var(--hover)}
.cal-n{align-self:flex-start;margin-left:4px;padding:0 4px;border-radius:5px;font:500 13px/1.6 var(--mono)}
.cal-day.past .cal-n{color:var(--ink2)}.cal-day.out .cal-n{color:var(--ink2);opacity:.4}
.cal-day.trip{background:var(--okbg)}
.cal-day.today .cal-n{background:var(--s);color:var(--sink);font-weight:700}
.cal-day.sel{box-shadow:inset 0 0 0 2px var(--s)}
.cal-extra{position:absolute;top:5px;right:5px;font:500 10px/1.4 var(--mono);color:var(--ink2)}
.cal-bars{display:grid;gap:2px;margin-top:auto}
.cal-bar{display:block;height:5px;color:var(--s);background:currentColor}
.cal-bar.none{background:none}
.cal-bar.l1{color:var(--c2)}.cal-bar.l2{color:var(--c0)}.cal-bar.l3{color:var(--c3)}
.cal-bar.start,.cal-bar.one{margin-left:4px;border-top-left-radius:3px;border-bottom-left-radius:3px}
.cal-bar.end,.cal-bar.one{margin-right:4px;border-top-right-radius:3px;border-bottom-right-radius:3px}
.cal-bar.unsure{background:repeating-linear-gradient(90deg,currentColor 0 4px,transparent 4px 7px)}
.cal-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin:8px 0 0}
.cal-legend .cal-bar,.nw-when .cal-bar{flex:none;width:18px;margin:0}
.cal-key{flex:none;width:14px;height:14px;margin-left:8px;border-radius:4px;border:1px solid var(--line)}
.cal-legend .cal-bar.unsure{margin-left:8px}
.cal-key.today{background:var(--s);border-color:var(--s)}.cal-key.trip{background:var(--okbg);border-color:var(--ok)}
.cal-list{margin-top:12px;min-width:0}
.cal-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px}
.cal-list-head .fresh-group{margin:0}
.cal-all{flex:none;display:inline-flex;align-items:center}
@media (max-width:380px){.cal-n{font-size:12px}.cal-q{padding:0 9px}.nw-colbox{padding-left:8px;padding-right:8px}}
@media (min-width:760px) and (max-width:859px){.nw-colbox{padding-left:12px;padding-right:12px}}

/* 13k (D-49): метка «насколько товар уже известен в России» у кандидата и список «Уже популярное» (слой 10y) */
.fresh-m{flex:none}.fresh-m.early{color:var(--ok);background:var(--okbg)}
.fresh-m.known,.fresh-m.popular{color:var(--warn);background:var(--warnbg)}
.fresh-mat{margin:0;padding-left:10px;border-left:2px solid var(--line,var(--track));overflow-wrap:anywhere}
.fresh-mat b{font-weight:600}.fresh-mat.early{border-left-color:var(--ok)}
.fresh-mat.known,.fresh-mat.popular{border-left-color:var(--warn)}
.fresh-pop .fresh-list{margin-top:8px}

/* 13m (D-51): трек «Первым в России» — кандидаты без спроса в России: сигналы Азии, потребность, полка (слой 10y) */
.nw-first{margin-top:12px;border-left:3px solid var(--ok)}.nw-first>h3{margin:0 0 4px}
.first-rest{margin-top:10px}.first-rest>.fresh-list{margin-top:8px}
.fresh-first{flex:none;color:var(--ok);background:var(--okbg)}
.fresh-strong{flex:none;color:var(--s);background:var(--sbg);font-weight:600}
.fresh-asia{margin:6px 0;padding:6px 10px;border-radius:8px;background:var(--track)}
.fresh-asia>p{margin:2px 0}
.fresh-mat.shelf-empty{border-left-color:var(--ok)}.fresh-mat.shelf-filling{border-left-color:var(--warn)}
.fresh-mat.shelf-taken{border-left-color:var(--crit)}

/* 15i (D-50): «Полка: продажи и продавцы — оценка по отзывам» в «Деньгах со штуки» (слой 10y) */
.shelf-v{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.shelf-v ul{list-style:none;padding:0;margin:6px 0;display:grid;gap:6px}
.shelf-v li{padding-left:12px;border-left:2px solid var(--s);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.shelf-v li.muted{border-left-color:var(--line)}
.shelf-v p{margin:6px 0 0}

/* ── 13an: вкладка «Ниши» — карточки разборов; телефон — одна колонка, компьютер — сетка ── */
.niche-list{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
@media (min-width:760px){.niche-list{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}}
.niche-card{display:grid;gap:8px;align-content:start;min-width:0;background:var(--card);border:1px solid var(--line);
border-radius:var(--r);padding:12px 14px;overflow-wrap:anywhere}
.niche-card.off{opacity:.6}
.niche-card p{margin:0}
.niche-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.niche-name{flex:1 1 auto;min-width:0;font-size:16px;line-height:1.3}.niche-name b{font-weight:600}
.niche-margin{flex:none;display:grid;justify-items:end;text-align:right;padding:4px 8px;border-radius:var(--r);
color:var(--ink2);background:var(--track)}
.niche-margin b{font:600 20px/1.15 var(--mono);letter-spacing:-.03em}.niche-margin span{font-size:11px}
.niche-margin.good{color:var(--ok);background:var(--okbg)}.niche-margin.mid{color:var(--warn);background:var(--warnbg)}
.niche-margin.bad{color:var(--crit);background:var(--critbg)}
.niche-flow b{font-variant-numeric:tabular-nums}
.niche-money,.niche-demand,.niche-risks{display:grid;gap:4px}
.niche-money .kv{font-size:13px}
.niche-unchecked,.niche-unchecked b{color:var(--ink2)}
.niche-links .link{color:var(--s);display:inline-flex;align-items:center;min-height:32px}
.niche-note>summary{min-height:40px;display:flex;align-items:center;font-weight:600;color:var(--s);cursor:pointer}
.niche-note textarea{margin-bottom:8px}
.niche-st{display:flex;flex-wrap:wrap;gap:4px}
.niche-st button{flex:1 1 auto;min-height:40px;padding:0 10px;border:1px solid var(--line);border-radius:8px;
background:var(--card);color:var(--ink);font-size:13px;cursor:pointer}
.niche-st button[aria-pressed="true"]{background:var(--sbg);border-color:var(--s);color:var(--s);font-weight:600}
.niche-st button:disabled{opacity:.55;cursor:default}

/* ── 13al «Сегодня», короткая карточка кандидата, «Не нужно» с отменой ───────────────────────────────────
   Утром с телефона: сверху стартового экрана — ответ одной фразой и 1–2 действия; карточка кандидата — пять строк
   и две кнопки (остальное — «Подробнее»); «Не нужно» — тихая ссылка под основной кнопкой, 7 секунд на «Вернуть». */
.today-wrap{margin:0 0 12px}
.today{display:grid;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--card)}
.today.has{border-color:color-mix(in srgb,var(--s) 60%,var(--line))}
.today.bad{border-color:color-mix(in srgb,var(--crit) 55%,var(--line))}
.today-say{margin:0;font-size:18px;line-height:1.4;font-weight:500;letter-spacing:-.01em;text-wrap:pretty;overflow-wrap:anywhere}
.today-say>b:first-child{font-weight:650}
.today-n{font:600 .95em/1 var(--mono);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.today-ok{color:var(--ok)}.today-bad{color:var(--crit)}
.today-sub{margin:-6px 0 0}
.today-act{display:flex;flex-wrap:wrap;gap:8px}
.today-act .btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px}
.btn.today-fail{color:var(--crit);border-color:color-mix(in srgb,var(--crit) 45%,var(--line));background:var(--critbg)}
@media (max-width:560px){.today{padding:12px 14px}.today-say{font-size:17px}.today-act .btn{flex:1 1 100%}}
/* шапка: худший статус вместо зелёной точки — «1 сбой» кнопкой; зона нажатия шире видимой метки */
.st-alert{position:relative;display:inline-flex;align-items:center;gap:4px;margin-right:4px;padding:1px 7px;border:0;
border-radius:5px;background:var(--critbg);color:var(--crit);font:600 12px/1.5 var(--mono);cursor:pointer;vertical-align:0}
.st-alert::before{content:"";position:absolute;inset:-12px -6px}
.st-alert .ic{width:12px;height:12px}
.status:has(.st-alert){overflow:visible}
/* карточка кандидата: спрос одним словом со стрелкой, одна строка «почему», пометки — в «Подробнее» */
.fresh-dem{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:0}
.fresh-dem-w{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.fresh-dem .ic{width:14px;height:14px;align-self:center}
.fresh-dem.up .fresh-dem-w,.fresh-dem.early .fresh-dem-w{color:var(--ok)}
.fresh-dem.flat .fresh-dem-w,.fresh-dem.na .fresh-dem-w,.fresh-dem.weak .fresh-dem-w{color:var(--ink2)}
.fresh-dem-n{font:500 12px/1.4 var(--mono);color:var(--ink2);font-variant-numeric:tabular-nums}
.fresh-why{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.fresh-why b{font-weight:600}
.fresh-ex .link{color:var(--s);text-decoration:underline;text-underline-offset:2px}
.fresh-tags{display:flex;flex-wrap:wrap;gap:4px;margin:0}
.fcard>.fresh-more>summary{min-height:44px}
.fresh-no{justify-self:center;min-height:44px;min-width:44px;padding:0 16px;border:0;background:none;cursor:pointer;
color:var(--ink2);font-size:14px;font-weight:600;text-decoration:underline;text-underline-offset:3px;
text-decoration-color:color-mix(in srgb,currentColor 45%,transparent)}
.fresh-no:hover{color:var(--ink)}
.nw-wait:focus{outline:none}
/* тост «Убрал «X» · Вернуть»: над нижними вкладками; полоска внизу — сколько осталось до отправки */
.toast-live{position:fixed;left:0;right:0;bottom:calc(76px + env(safe-area-inset-bottom));z-index:8;display:flex;
justify-content:center;padding:0 16px;pointer-events:none}
.toast-card{position:relative;display:flex;align-items:center;gap:8px;width:min(100%,480px);padding:4px 4px 4px 14px;
overflow:hidden;border:1px solid var(--line);border-radius:var(--r);background:var(--ink);color:var(--bg);
box-shadow:0 8px 24px -8px var(--shade);pointer-events:auto;animation:toast-in .24s var(--ease)}
.toast-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.toast-btn{flex:none;min-height:44px;padding:0 14px;border:0;border-radius:8px;background:none;color:inherit;
font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.toast-btn:hover{background:color-mix(in srgb,var(--bg) 14%,transparent)}
.toast-btn:focus-visible{outline-color:var(--bg);outline-offset:-3px}
.toast-time{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--s);transform-origin:left;
animation:toast-time 7s linear forwards}
@keyframes toast-in{from{transform:translateY(12px);opacity:0}}
@keyframes toast-time{to{transform:scaleX(0)}}
@media (min-width:1100px){.toast-live{bottom:24px}}
/* ── 11h: оптовые цены с открытых площадок — строки в блоке «Предложение в Китае» и справка в экономике ── */
.ws{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.ws-list{list-style:none;padding:0;margin:0 0 8px;display:grid;gap:6px}
.ws-list li{padding-left:12px;border-left:2px solid var(--s);font-variant-numeric:tabular-nums}
.ws-list li.muted{border-left-color:var(--line)}
.ws-ref{margin:8px 0 0;color:var(--ink2)}
