@charset "utf-8";
/* Облик A3: оформление и движение (22.10.2026, по просьбе Виктора «добавить дизайна»).
   Грузится ПОСЛЕДНИМ слоем после a3-icons.css; ничего не меняет в разметке — иконки систем садятся на элементы
   по их style="--c:var(--<система>)" (главная: .sm, .hs-row; хаб справочника: .tile; страница системы: .syshead).
   Цвет глифа: янтарь --amb (вариант «янтарь»), в синих обликах — светло-синий --hdr-hi.
   Движение выключается при prefers-reduced-motion; без JS всё видно сразу (скрытие стартует только с html.deco-js). */
:root{--dec-g:var(--amb,var(--hdr-hi,#8dbaff));--dec-disc:var(--hdr,#0c2d5e);--dec-ease:cubic-bezier(.2,.7,.2,1);}

/* --- значок системы поверх обложки плитки --- */
.sm,.tile{position:relative;transition:transform .28s var(--dec-ease),box-shadow .28s var(--dec-ease),border-color .2s;}
.sm::before,.tile::before{display:block;content:"";position:absolute;left:10px;top:10px;right:auto;bottom:auto;width:30px;height:30px;
  border-radius:9px;background:var(--dec-disc);border:1.5px solid var(--dec-g);box-shadow:0 4px 10px rgba(5,20,45,.35);z-index:2;
  transition:transform .35s var(--dec-ease),box-shadow .3s;}
.sm::after,.tile::after{content:"";position:absolute;left:10px;top:10px;width:30px;height:30px;z-index:3;background:var(--dec-g);pointer-events:none;
  -webkit-mask:var(--ico) center/18px 18px no-repeat;mask:var(--ico) center/18px 18px no-repeat;transition:transform .35s var(--dec-ease);}
.sm:hover,.tile:hover{transform:translateY(-5px);box-shadow:0 14px 30px rgba(12,45,94,.22);}
.sm:hover::before,.tile:hover::before{transform:rotate(-8deg) scale(1.1);box-shadow:0 10px 22px rgba(5,20,45,.45);}
.sm:hover::after,.tile:hover::after{transform:rotate(-8deg) scale(1.1);}
.sm img,.tile .cov img{transition:transform .8s var(--dec-ease);}
.sm:hover img,.tile:hover .cov img{transform:scale(1.07);}
.sm,.tile .cov{overflow:hidden;}
.tile h3 .ico{display:none;}  /* малый значок рядом с названием дублирует крупный */

/* --- боковой указатель систем на главной: спокойный глиф без плитки (правка Виктора 25.10) ---
   Просто значок системы на фоне строки, цвет вторичного текста темы (не цвет системы, не янтарь), 22 px; при наведении чуть контрастнее. */
.hs-row{grid-template-columns:22px minmax(0,1fr) auto;gap:12px;min-height:44px;padding-top:3px;padding-bottom:3px;transition:background .2s,padding-left .25s var(--dec-ease);}
.hs-row i{position:relative;width:22px;height:22px;border-radius:0;background:none;border:0;}
.hs-row i::after{content:"";position:absolute;inset:0;background:var(--text-dim);-webkit-mask:var(--ico) center/22px 22px no-repeat;mask:var(--ico) center/22px 22px no-repeat;transition:background .2s;}
.hs-row:hover{padding-left:18px;}
.hs-row:hover i::after,.hs-row:focus-visible i::after{background:var(--text2);}
/* список как таблица (добавка Виктора 25.10): шапка-полоса, зебра, подсветка строки с янтарной полоской, число в ровной «пилюле». Только токены темы. */
.hs-box{border-color:var(--line);overflow:hidden;}
.hs-h{background:var(--panel-2);border-bottom:1px solid var(--line-strong);color:var(--text2);}
.hs-row{border-bottom-color:var(--line);}
.hs-row:nth-of-type(even){background:color-mix(in srgb,var(--panel-2) 55%,var(--panel));}
.hs-row:hover,.hs-row:focus-visible{background:color-mix(in srgb,var(--panel-2) 70%,var(--line) 30%);color:var(--text);box-shadow:inset 3px 0 0 var(--amb,#e8a33d);outline-offset:-2px;}
.hs-row small{box-sizing:content-box;min-width:4.2ch;text-align:right;padding:3px 7px;border-radius:999px;font-family:var(--ff-m);font-weight:600;font-variant-numeric:tabular-nums;color:var(--text2);background:color-mix(in srgb,var(--c2) 9%,transparent);}

/* --- страница системы: значок перед словом «Система» --- */
.syshead .kicker::before{content:"";display:inline-block;width:30px;height:30px;margin-right:10px;vertical-align:-9px;background:currentColor;
  -webkit-mask:var(--ico) center/18px 18px no-repeat;mask:var(--ico) center/18px 18px no-repeat;}

/* --- кнопка действия и ссылки меню: ход при наведении --- */
.btn-ask,.discuss,.hx-act a{transition:transform .2s var(--dec-ease),box-shadow .25s;}
.btn-ask:hover,.discuss:hover,.hx-act a:hover{transform:translateY(-2px);box-shadow:0 8px 20px color-mix(in srgb,var(--btn,#e8a33d) 45%,transparent);}
.btn-ask:active,.discuss:active,.hx-act a:active{transform:translateY(0);}
.app-nav a{transition:color .2s,border-color .25s;}

/* --- значки разделов верхнего меню (--nico из a3-icons.css по href пункта): глиф 16 px, янтарь на тёмно-синей шапке;
   при наведении и фокусе слегка наклоняется и приподнимается, в покое неподвижен.
   Планшетная полоса 761–1100 px: значки в строке со входом не помещаются, поэтому шапка там двухрядная —
   вверху знак и кнопка темы, ниже на всю ширину меню со значками и входом (a3-core.css: .app-auth — внутри .app-nav). --- */
.app-nav>a:is([href="/spravochnik"],[href="/fsc"],[href="/blog"],[href="/calc"],[href="/forum"],[href="/courses"])::before{
  content:"";flex:none;display:block;width:16px;height:16px;margin-right:8px;background:var(--dec-g);
  -webkit-mask:var(--nico) center/16px 16px no-repeat;mask:var(--nico) center/16px 16px no-repeat;
  transition:transform .3s var(--dec-ease);}
.app-nav>a:is(:hover,:focus-visible)::before{transform:translateY(-1px) rotate(-8deg) scale(1.15);}
/* подвал: те же значки перед пунктами (--nico по href из a3-icons.css); «Вендоры» (/news) — значок блога */
.site-footer nav a:is([href="/spravochnik"],[href="/fsc"],[href="/blog"],[href="/news"],[href="/calc"],[href="/forum"],[href="/courses"])::before{
  content:"";flex:none;display:block;width:16px;height:16px;margin-right:8px;background:var(--dec-g);
  -webkit-mask:var(--nico) center/16px 16px no-repeat;mask:var(--nico) center/16px 16px no-repeat;transition:transform .3s var(--dec-ease);}
.site-footer nav a:is(:hover,:focus-visible)::before{transform:translateY(-1px) rotate(-8deg) scale(1.15);}
.site-footer a{min-height:44px;}
@media (min-width:1101px){.app-nav>a{padding-left:7px;padding-right:7px;}.app-nav>a::before{margin-right:6px;}.app-nav{font-size:12.5px;letter-spacing:.03em;}}
@media (min-width:761px) and (max-width:1100px){
  .app-header{flex-wrap:wrap;row-gap:0;padding-bottom:0;}
  .app-brand{order:1;margin-bottom:10px;}
  .theme-tg{order:2;margin-left:auto;margin-bottom:10px;}
  .app-nav{order:3;flex:1 1 100%;justify-content:space-between;border-top:1px solid var(--hdr-line);gap:0;font-size:12.5px;letter-spacing:.03em;}
  .app-nav>a{padding:0 6px;margin-bottom:-1px;}
  .app-nav>a::before{margin-right:6px;}
  .app-auth{margin-left:auto;border-left:0;padding-left:0;}
}

/* --- главная: слои знака рисуются при загрузке, и остаются на месте --- */
.hx-art .hx-mark g[style] path{stroke-dasharray:240;stroke-dashoffset:240;animation:dec-draw 1.3s var(--dec-ease) forwards;}
.hx-art .hx-mark g[style] circle{opacity:0;transform-box:fill-box;transform-origin:center;animation:dec-pop .5s var(--dec-ease) forwards;}
.hx-art .hx-mark g:nth-of-type(2) path{animation-delay:.25s}.hx-art .hx-mark g:nth-of-type(2) circle{animation-delay:1.1s}
.hx-art .hx-mark g:nth-of-type(3) path{animation-delay:.5s}.hx-art .hx-mark g:nth-of-type(3) circle{animation-delay:1.35s}
.hx-art .hx-mark g:nth-of-type(1) circle{animation-delay:.85s}
@keyframes dec-draw{to{stroke-dashoffset:0}}
@keyframes dec-pop{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}

/* --- появление блоков при прокрутке (a3-deco.js ставит html.deco-js и класс .in) --- */
html.deco-js .sm,html.deco-js .tile,html.deco-js .card,html.deco-js .fcard,html.deco-js .ccard,html.deco-js .clist a,html.deco-js .hs-box,
html.deco-js .thread-row,html.deco-js .teaser,html.deco-js .sec-h{opacity:0;transform:translateY(18px);}
html.deco-js .sm.in,html.deco-js .tile.in,html.deco-js .card.in,html.deco-js .fcard.in,html.deco-js .ccard.in,html.deco-js .clist a.in,
html.deco-js .hs-box.in,html.deco-js .thread-row.in,html.deco-js .teaser.in,html.deco-js .sec-h.in{opacity:1;transform:none;transition:opacity .55s var(--dec-ease) var(--dec-d,0s),transform .6s var(--dec-ease) var(--dec-d,0s),
  box-shadow .28s var(--dec-ease),border-color .2s;}
/* после появления наведение снова управляет transform — стойкость класса .in даёт none, hover выше сильнее по порядку записи */
html.deco-js .sm.in:hover,html.deco-js .tile.in:hover{transform:translateY(-5px);transition:transform .28s var(--dec-ease),box-shadow .28s var(--dec-ease),border-color .2s;}

/* --- схема «из чего собрана АПС»: импульс по линии, подсветка устройств (a3-deco.js, scheme()) --- */
:root{--dec-lit:#fbe3b4;}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--dec-lit:#4a3818;}}
:root[data-theme="dark"]{--dec-lit:#4a3818;}
.dec-pulse{pointer-events:none;}
.dec-pulse circle{fill:var(--dec-g);}
svg[data-deco] g.node[data-lit] .ring{animation:dec-ping var(--dec-dur,8s) linear var(--dec-d,0s) infinite;}
@keyframes dec-ping{0%{stroke-width:2.2;stroke:var(--dec-g);fill:var(--dec-lit)}3%{stroke-width:4;stroke:var(--dec-g);fill:var(--dec-lit)}12%,100%{stroke-width:2.2}}
@media (prefers-reduced-motion:reduce){.dec-pulse{display:none}svg[data-deco] g.node[data-lit] .ring{animation:none}}

@media (prefers-reduced-motion:reduce){
  .app-nav>a::before{transition:none !important;}.app-nav>a:is(:hover,:focus-visible)::before{transform:none !important;}
  .sm,.tile,.sm::before,.tile::before,.sm::after,.tile::after,.sm img,.tile .cov img,.hs-row,.hs-row i,.btn-ask,.discuss,.hx-act a{transition:none !important;}
  .sm:hover,.tile:hover,.sm:hover::before,.tile:hover::before,.sm:hover::after,.tile:hover::after,.sm:hover img,.tile:hover .cov img,.hs-row:hover i{transform:none !important;}
  .hx-art .hx-mark,.hx-art .hx-mark *{animation:none !important;stroke-dasharray:none !important;stroke-dashoffset:0 !important;opacity:1 !important;}
  html.deco-js .sm,html.deco-js .tile,html.deco-js .card,html.deco-js .fcard,html.deco-js .ccard,html.deco-js .clist a,html.deco-js .hs-box,html.deco-js .thread-row,html.deco-js .teaser,html.deco-js .sec-h{opacity:1 !important;transform:none !important;}
}

/* ==== дооформление страниц (24.10.2026): единый заголовок раздела, метка раздела, ход карточек, подвал ==== */
/* метка раздела перед киккером страницы (значок раздела меню; по умолчанию — точка) */
:root{--sec-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='5' fill='%23000'/%3E%3C/svg%3E");}
body:has(.app-nav a[aria-current="page"][href="/spravochnik"]){--sec-ico:var(--ni-spravochnik);}
body:has(.app-nav a[aria-current="page"][href="/fsc"]){--sec-ico:var(--ni-fsc);}
body:has(.app-nav a[aria-current="page"][href="/blog"]){--sec-ico:var(--ni-blog);}
body:has(.app-nav a[aria-current="page"][href="/calc"]){--sec-ico:var(--ni-calc);}
body:has(.app-nav a[aria-current="page"][href="/forum"]){--sec-ico:var(--ni-forum);}
body:has(.app-nav a[aria-current="page"][href="/courses"]){--sec-ico:var(--ni-courses);}
.page-kicker::before,.kicker::before{content:"";display:inline-block;width:16px;height:16px;margin-right:8px;vertical-align:-3px;background:var(--amb-t,currentColor);
  -webkit-mask:var(--sec-ico) center/16px 16px no-repeat;mask:var(--sec-ico) center/16px 16px no-repeat;}
.syshead .kicker::before{background:currentColor;}
/* заголовок страницы: янтарная черта под h1 (кроме главной) */
body:not(.home) :is(h1.page-title,.wrap>h1,.syshead h1)::after{content:"";display:block;width:56px;height:4px;margin-top:14px;border-radius:2px;background:var(--amb);}
/* шапка страницы появляется один раз, без повторов */
@keyframes dec-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.page-intro,.syshead,.wrap>h1{animation:dec-rise .6s var(--dec-ease) both;}
/* строки форума и ленты блога: ход при наведении */
.thread-row,.teaser{transition:transform .25s var(--dec-ease),box-shadow .25s var(--dec-ease),border-color .2s,background .2s;}
.thread-row:hover{transform:translateY(-2px);border-color:var(--amb);box-shadow:inset 4px 0 0 var(--amb),var(--shadow);}
.teaser:hover{background:color-mix(in srgb,var(--amb) 8%,transparent);box-shadow:inset 4px 0 0 var(--amb);}
.thread-row:hover h3,.thread-row:hover b,.teaser:hover h3{color:var(--c1t);}
/* карточки справочника и курсов: тот же подъём */
.card,.ex,.fa{transition:border-color .2s,box-shadow .25s var(--dec-ease);}
.card:hover,.ex:hover{border-color:var(--amb);}
/* проза не мельче 16 px, подписи — не мельче 14 */
ol.toc li,.tnote,.ex p,.fa p,.tool-b p,.cb-note,.hx-note,.section-lead,.page-lede,.hint,.lk-fine{font-size:16px;}
.teaser p,.tile p,.fcd .bd p,.sec-h p,td,.source-note,.sub-box p{font-size:15px;}
.draft,.hs-h,.hx-kicker,.page-kicker,.kicker{font-size:14px;}
.counts{margin-top:20px;}
.calc-what{font-size:15px;}.calc-io{font-size:14px;}.calc-src{font-size:13px;}.calc-ours-note{font-size:14px;}
@media (prefers-reduced-motion:reduce){
  .site-footer nav a::before{transition:none !important;}.site-footer nav a:is(:hover,:focus-visible)::before{transform:none !important;}
  .page-intro,.syshead,.wrap>h1{animation:none !important;}
  .thread-row,.teaser,.card,.ex,.fa{transition:none !important;}.thread-row:hover{transform:none !important;}
}

/* ==== 404 и пустые состояния, читаемые размеры (24.10.2026, ночь 2) ==== */
/* значки разделов для плиток 404 и пустых карточек */
.nf-tiles a[href="/spravochnik"]{--nico:var(--ni-spravochnik);}.nf-tiles a[href="/fsc"]{--nico:var(--ni-fsc);}
.nf-tiles a[href="/blog"]{--nico:var(--ni-blog);}.nf-tiles a[href="/calc"]{--nico:var(--ni-calc);}
.nf-tiles a[href="/forum"]{--nico:var(--ni-forum);}.nf-tiles a[href="/courses"]{--nico:var(--ni-courses);}
/* плитки разделов на странице 404: значок-диск как у плиток главной, спокойная рамка, янтарь при наведении */
.nf-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin:8px 0 28px;}
.nf-tiles a{position:relative;display:flex;align-items:center;gap:14px;min-height:60px;padding:14px 16px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);
  font:700 16px/1.25 var(--ff-b);text-decoration:none;animation:dec-rise .5s var(--dec-ease) both;
  transition:transform .25s var(--dec-ease),border-color .2s,box-shadow .25s var(--dec-ease);}
.nf-tiles a:nth-child(2){animation-delay:.05s}.nf-tiles a:nth-child(3){animation-delay:.1s}.nf-tiles a:nth-child(4){animation-delay:.15s}
.nf-tiles a:nth-child(5){animation-delay:.2s}.nf-tiles a:nth-child(6){animation-delay:.25s}
.nf-tiles a::before{content:"";flex:none;width:34px;height:34px;border-radius:10px;background:var(--dec-disc);border:1.5px solid var(--dec-g);
  transition:transform .3s var(--dec-ease);}
.nf-tiles a::after{content:"";position:absolute;left:24px;top:calc(50% - 10px);width:20px;height:20px;background:var(--dec-g);pointer-events:none;
  -webkit-mask:var(--nico) center/20px 20px no-repeat;mask:var(--nico) center/20px 20px no-repeat;transition:transform .3s var(--dec-ease);}
.nf-tiles a:is(:hover,:focus-visible){transform:translateY(-2px);border-color:var(--amb,var(--c1));box-shadow:inset 4px 0 0 var(--amb,var(--c1)),var(--shadow);}
.nf-tiles a:is(:hover,:focus-visible)::before,.nf-tiles a:is(:hover,:focus-visible)::after{transform:rotate(-8deg) scale(1.08);}
@media (max-width:520px){.nf-tiles{grid-template-columns:1fr 1fr;gap:10px;}.nf-tiles a{padding:12px 8px;gap:8px;font-size:14px;min-width:0;}
  .nf-tiles a::before{width:30px;height:30px;}.nf-tiles a::after{left:18px;top:calc(50% - 9px);width:18px;height:18px;-webkit-mask-size:18px 18px;mask-size:18px 18px;}}
/* пустое состояние: спокойная карточка со значком раздела и ссылкой дальше */
body:has(.blog-tabs){--sec-ico:var(--ni-blog);}
p.empty,.calc-wrap .calc-empty{position:relative;margin:0 0 16px;padding:22px 22px 22px 80px;min-height:84px;text-align:left;
  background:var(--panel);border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--text2);font-size:16px;line-height:1.5;}
p.empty::before,.calc-wrap .calc-empty::before{content:"";position:absolute;left:22px;top:22px;width:40px;height:40px;border-radius:12px;
  background:var(--dec-disc);border:1.5px solid var(--dec-g);}
p.empty::after,.calc-wrap .calc-empty::after{content:"";position:absolute;left:22px;top:22px;width:40px;height:40px;background:var(--dec-g);pointer-events:none;
  -webkit-mask:var(--sec-ico) center/22px 22px no-repeat;mask:var(--sec-ico) center/22px 22px no-repeat;}
.empty-next{display:inline-block;margin-left:6px;font-weight:700;}
.card:has(>p.empty:only-child){padding:0;background:none;border:0;box-shadow:none;}
@media (prefers-reduced-motion:reduce){
  .nf-tiles a{animation:none !important;transition:none !important;}
  .nf-tiles a:is(:hover,:focus-visible){transform:none !important;}
  .nf-tiles a::before,.nf-tiles a::after{transition:none !important;transform:none !important;}
}
/* мелкий текст: подписи не мельче 13 px, проза не мельче 16 px (каркасы /ask, /chat, /fsc, /lk — только размер шрифта) */
.status{font-size:14px;}
.page-pill,.auth-kicker,.lk-card .label,.ledger th,#chatBox .toggle,.msg .when{font-size:13px;}
.ask-heading .page-lede,.empty-hint{font-size:16px;}
p>a[href="/privacy"][style]{font-size:13px;}
.fsc-topline,.fsc-mark,.fsc-draft,.fsc-eyebrow,.fsc-example,.fsc-example b,.fsc-stage span,.fsc-check span,.fsc-chip,.fsc-submit-note,.fsc-steps li,
.fsc-footer,.fsc-visual figcaption,.fsc-scope-label{font-size:13px;}
.fsc-section-title{font-size:14px;}
.fsc-section-hint,.fsc-scope p:not(.fsc-scope-label),.fsc-terms,.fsc-terms li,.fsc-section>p:not([class]){font-size:16px;}
.fsc-terms code{font-size:14px;}
/* результат распознавания /fsc: проза 16 px, подписи 13 px; таблица в overflow-x:auto и white-space:nowrap — ширина строк на вёрстку не давит */
.fsc-result p,.fsc-alert p,.fsc-issue-q,.fsc-gate{font-size:16px;}
.fsc-metric span,.fsc-toolbar label,.fsc-result .fsc-issue-hint,.fsc-result .fsc-issue-done,.fsc-card ul,.fsc-progress-msg,.fsc-progress-time,.fsc-table th{font-size:13px;}
.fsc-metric span{overflow-wrap:anywhere;}
/* янтарная черта под заголовком конфигуратора — как у остальных страниц */
.fsc-title::after{content:"";display:block;width:56px;height:4px;margin-top:16px;border-radius:2px;background:var(--amb);}

/* /lk: пустая история операций — карточка пустого состояния (значок конфигуратора, ссылка дальше) */
.ledger td:has(>p.empty){padding:12px 0 0;border:0;font-size:16px;}
.ledger p.empty{--sec-ico:var(--ni-fsc);margin:0;}
.ledger p.empty .svc-art{display:none;}

/* /spravochnik: «в справочнике такого не нашлось» — та же карточка пустого состояния (значок справочника).
   Только когда в списке один пункт .empty; хвост «ещё N…» остаётся строкой списка. Текст и разметку сборщика не трогаем. */
.results:has(>li:only-child>.empty){--sec-ico:var(--ni-spravochnik);background:none;border:0;border-radius:0;overflow:visible;}
.results li:only-child>.empty{position:relative;padding:22px 22px 22px 80px;min-height:84px;background:var(--panel);
  border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--text2);font-size:16px;line-height:1.5;}
.results li:only-child>.empty::before{content:"";position:absolute;left:22px;top:22px;width:40px;height:40px;border-radius:12px;
  background:var(--dec-disc);border:1.5px solid var(--dec-g);}
.results li:only-child>.empty::after{content:"";position:absolute;left:22px;top:22px;width:40px;height:40px;background:var(--dec-g);pointer-events:none;
  -webkit-mask:var(--sec-ico) center/22px 22px no-repeat;mask:var(--sec-ico) center/22px 22px no-repeat;}

/* ==== главная: живая схема вместо знака в хиро (25.10.2026) ====
   Разметка — templates.py (_live_scheme), движение — SMIL внутри SVG: два огонька по одному замкнутому пути, свет устройств
   и тревога заданы там же, по одному времени. Здесь только цвет и вид. Прежний знак остаётся в разметке для classic (.hx-mark). */
.hx-panel .hx-mark{display:none;}
.hx-panel .ls-wrap{display:block;width:100%;}
.hx-panel svg.ls{display:block;width:100%;height:auto;max-height:none;overflow:visible;--ls-g:var(--amb,#e8a33d);}
.ls-w{fill:none;stroke:var(--c3);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;}
.ls-bg{fill:var(--panel);stroke:none;}
.ls-d,.ls-l,.ls-lr{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;}
.ls-d{stroke:var(--c2);color:var(--c2);}
.ls-ppk .ls-bg.ls-d{fill:var(--panel);}
.ls-l{stroke:var(--ls-g);color:var(--ls-g);}
.ls-lr{stroke:var(--warn);color:var(--warn);}
.ls-rf{fill:var(--warn);stroke:none;}
.ls-ray{fill:none;stroke:var(--warn);stroke-width:2.4;stroke-linecap:round;}
.ls-hg{fill:var(--ok);filter:url(#ls-bl);opacity:.45;}
.ls-h{fill:var(--ls-g);filter:url(#ls-bl);opacity:.55;}
.ls-hl{fill:var(--ls-g);filter:url(#ls-bl);}
.ls-dot{fill:var(--ls-g);}
.ls-scr{fill:var(--panel-2);stroke:var(--c2);stroke-width:2.4;}
.ls-tx,.ls-key{fill:none;stroke:var(--line-strong);stroke-width:2.4;stroke-linecap:round;}
.ls-key{stroke:var(--c3);}
.ls-ok{fill:var(--ok);}
.ls-rd0,.ls-am0{fill:var(--line-strong);}
.ls-rd{fill:var(--warn);}
.ls-hr{fill:var(--warn);filter:url(#ls-bl);}
.ls-t{fill:var(--panel);stroke:var(--c3);stroke-width:2.4;}
.ls-s{display:none;}
@media (prefers-reduced-motion:reduce){
  .ls-dots,.ls-a{display:none;}
  .ls-s{display:inline;}
  .ls-s .ls-h{opacity:.2;}
  .ls-ray{display:none;}
}
/* аудит 25.10: подпись «Источники» не распирает 390 px длинным словом; таблица статьи — ячейки не рвутся по буквам (overflow-wrap:anywhere у .post-body сжимал колонки до ~40 px), min-width даёт таблице ширину и срабатывает её overflow-x:auto */
p.source-note{overflow-wrap:anywhere;}
.post-body td,.post-body th{overflow-wrap:normal;min-width:7em;}
/* хвост 25.10: подпись плитки системы на главной ('Видеонаблюдение' 16px/бок 14 px не влезала в плитку 152 px на 360) — 14px, тесные поля, запасной перенос */
@media (max-width:480px){.sm b{padding:12px 8px 12px 10px;font-size:14px;letter-spacing:-.01em;overflow-wrap:break-word;hyphens:auto;}}
/* хвост 25.10, хаб: названия плиток систем рвались по буквам ('Пожаротушени/е', 'Видеонаблюде/ние') из-за overflow-wrap:anywhere при 18px — 14px и тесный трекинг, запасной перенос остаётся */
@media (max-width:480px){a.tile h3{font-size:14px;letter-spacing:-.02em;}}
/* мелкие подписи 12–12.5 px -> 13 px: счётчики и типы на плитках хаба, бейдж «бета», пометка тарифа, подпись схемы */
.tile .ty span,.tile .st,.hs-row small,.types small,.scheme-h span,.st-beta,.tool .fact{font-size:13px;}
@media (max-width:380px){a.tile h3{letter-spacing:-.04em;}}

/* ==== главная: правки Виктора 25.10 — компактнее по вертикали, текст шире схемы ==== */
.hx{gap:40px;padding-top:0;margin-bottom:0;}
.hx-kicker{margin-bottom:8px;}
.hx h1{font-size:clamp(30px,3.4vw,44px);line-height:1.1;margin-bottom:10px;}
.hx-lede{font-size:17px;line-height:1.5;margin-bottom:16px;max-width:none;}
.hx-act{margin-bottom:12px;}
.hx-panel{padding:18px;gap:12px;}
.hx-sub{font-size:clamp(15px,1.45vw,19px);padding:8px 12px;}
.counts{margin-top:14px;}
.counts span{padding:10px 16px;}
.counts b{font-size:24px;}
.sec{margin-top:36px;}
.sec-h{margin-bottom:14px;}
@media (min-width:901px){.hx{grid-template-columns:minmax(0,1fr) clamp(280px,26vw,380px);}}
@media (max-width:900px){.hx{gap:18px;}}
@media (max-width:640px){.sec{margin-top:30px;}.counts span{padding:10px 12px;}}

/* ---- правки Виктора 25.10 (вечер): список систем выделен оттенком; плитки «Ликбез» — мозаика пастельных тонов ---- */
.hs-box{background:color-mix(in srgb,var(--c1) 9%,var(--panel));border-color:color-mix(in srgb,var(--c1) 30%,var(--line));}
.hs-h{background:color-mix(in srgb,var(--c1) 18%,var(--panel));border-bottom-color:color-mix(in srgb,var(--c1) 35%,var(--line));}
.hs-row{border-bottom-color:color-mix(in srgb,var(--c1) 16%,var(--line));}
.hs-row:nth-of-type(even){background:color-mix(in srgb,var(--c1) 5%,transparent);}
.hs-row:hover,.hs-row:focus-visible{background:color-mix(in srgb,var(--c1) 20%,var(--panel));}
.lk li{--pm:#5b95e6;}
.lk li:nth-child(6n+2){--pm:#e8a33d;}
.lk li:nth-child(6n+3){--pm:#d45b97;}
.lk li:nth-child(6n+4){--pm:#6fae4a;}
.lk li:nth-child(6n+5){--pm:#8453c6;}
.lk li:nth-child(6n){--pm:#138a96;}
.lk a,.lk li:nth-child(3n+2) a,.lk li:nth-child(3n) a{background:color-mix(in srgb,var(--pm) 17%,var(--panel));border-color:color-mix(in srgb,var(--pm) 32%,var(--line));border-left:5px solid var(--pm);}
.lk a:hover{border-color:var(--pm);border-left-color:var(--pm);background:color-mix(in srgb,var(--pm) 26%,var(--panel));}
