/* Generated by scripts/build_public_assets.py; edit the source sheets. */
/* LaRicco FX, 16.10.2026: общий слой движения и графики для всего сайта.
   Подключён последним и без @layer: passport.css и razbor.css тоже без слоёв, поэтому только так он перекрывает их.
   Правила: двигается только то, что помогает читать (появление, отклик на касание, смысловые акценты); весь декор aria-hidden и pointer-events:none;
   при prefers-reduced-motion всё замирает (base.css обнуляет длительности), скролл-появление и счётчики JS вообще не включает.
   Свойства translate / rotate / scale отдельные от transform: они складываются с hover-подъёмом карточек и не ломают его.
   Скрипт: static/js/ricco-fx.js. Рисунки (звезда ✳, искра, волна, кольцо) заданы масками, цвет берут из токенов. */

:root{
 --fx-star:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M24 4v40M4 24h40M10 10l28 28M38 10L10 38' stroke='%23000' stroke-width='3.4' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");
 --fx-spark:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M24 2c1.7 12.5 8.9 19.8 22 22-13.1 2.2-20.3 9.5-22 22C22.3 33.5 15.1 26.2 2 24 15.1 21.8 22.3 14.5 24 2z' fill='%23000'/%3E%3C/svg%3E");
 --fx-wave:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 24'%3E%3Cpath d='M3 14C13 2 19 2 27 12s14 10 22 0 14-10 22 0 14 10 22 0 14-10 22 0' stroke='%23000' stroke-width='3.4' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");
 --fx-loop:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 60'%3E%3Cpath d='M6 40C20 8 54 4 70 18c10 9 2 30-20 32-22 2-34-12-20-26 12-12 32-10 36 2' stroke='%23000' stroke-width='3' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");
 --fx-dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cg fill='%23000'%3E%3Ccircle cx='8' cy='8' r='3.4'/%3E%3Ccircle cx='24' cy='8' r='3.4'/%3E%3Ccircle cx='40' cy='8' r='3.4'/%3E%3Ccircle cx='8' cy='24' r='3.4'/%3E%3Ccircle cx='24' cy='24' r='3.4'/%3E%3Ccircle cx='40' cy='24' r='3.4'/%3E%3Ccircle cx='8' cy='40' r='3.4'/%3E%3Ccircle cx='24' cy='40' r='3.4'/%3E%3Ccircle cx='40' cy='40' r='3.4'/%3E%3C/g%3E%3C/svg%3E");
}

/* Декор (кольца, реплики, пятна) может выступать за край экрана: горизонтальную прокрутку страницы он не создаёт */
main{overflow-x:clip}

/* ─── 1. Вход первого экрана: блоки поднимаются по очереди. fill backwards, чтобы после анимации не оставался слой наложения (выпадающие списки поиска). ─── */
@keyframes fx-rise{from{opacity:0;translate:0 24px}}
@keyframes fx-rise-pop{from{opacity:0;translate:0 16px;scale:.92}}
@keyframes fx-pop{from{opacity:0;scale:.82;rotate:-6deg}}
@keyframes fx-spin{to{transform:rotate(1turn)}}
@keyframes fx-float{from{transform:translateY(0) rotate(0)}to{transform:translateY(-12px) rotate(7deg)}}
@keyframes fx-drift{from{transform:translate(0,0) scale(1)}to{transform:translate(-4%,6%) scale(1.12)}}
@keyframes fx-wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes fx-mark{from{background-size:0% 100%}to{background-size:100% 100%}}
@keyframes fx-shine{from{background-position:160% 0}to{background-position:-60% 0}}
@keyframes fx-marquee{to{transform:translateX(-50%)}}
@keyframes fx-letter{from{opacity:0;translate:0 60%;rotate:8deg}}
@keyframes fx-fly{40%{transform:translate(5px,-5px) rotate(10deg)}to{transform:translate(0,0)}}
@keyframes fx-ping{0%{box-shadow:0 0 0 0 color-mix(in oklab,var(--accent) 45%,transparent)}100%{box-shadow:0 0 0 14px transparent}}

@media (prefers-reduced-motion:no-preference){
 /* First-screen text and controls appear immediately; artwork keeps its motion. */
 :is(.dash .hero-main,.listing-copy,.razbor-hero-copy,.article-header,.sim-copy)>*{animation:none}
 :is(.dash .hero-main,.listing-copy,.razbor-hero-copy,.article-header,.sim-copy)>:nth-child(2){--fx-i:1}
 :is(.dash .hero-main,.listing-copy,.razbor-hero-copy,.article-header,.sim-copy)>:nth-child(3){--fx-i:2}
 :is(.dash .hero-main,.listing-copy,.razbor-hero-copy,.article-header,.sim-copy)>:nth-child(4){--fx-i:3}
 :is(.dash .hero-main,.listing-copy,.razbor-hero-copy,.article-header,.sim-copy)>:nth-child(5){--fx-i:4}
 :is(.dash .hero-main,.listing-copy,.razbor-hero-copy,.article-header,.sim-copy)>:nth-child(n+6){--fx-i:5}
 :is(.stage-art,.listing-art,.sim-stage-art){animation:fx-pop 1s var(--ease-pop) .3s backwards}
 /* Красное слово заголовка: маркер дорисовывается */
 :is(.hero,.listing-hero,.sim-intro,.article-header) .marker{background-repeat:no-repeat;background-position:0 0;animation:fx-mark 1s var(--ease-out) .7s backwards}
}

/* ─── 2. Появление при прокрутке (ricco-fx.js ставит data-fx и .fx-ready только если есть IntersectionObserver и не включено «уменьшить движение»).
        Без скрипта или в печати всё видно сразу. ─── */
.fx-ready [data-reveal],.fx-ready [data-reveal-stagger]>*{animation:none}
.fx-ready [data-fx]:not(.fx-in){opacity:0;translate:0 28px}
.fx-ready [data-fx=pop]:not(.fx-in){opacity:0;translate:0 18px;scale:.94}
[data-fx].fx-in{animation:fx-rise .9s var(--ease-out) var(--fx-d,0ms) backwards}
[data-fx=pop].fx-in{animation-name:fx-rise-pop}

/* ─── 3. Графика героя: пастельные пятна и дудлы (создаёт ricco-fx.js, в разметке страниц их нет) ─── */
.fx-host{position:relative;isolation:isolate}
.fx-deco{position:absolute;inset:0;z-index:-1;pointer-events:none}
.fx-deco::before{content:'';position:absolute;border-radius:50%;pointer-events:none;will-change:transform}
.fx-deco::before{width:min(540px,56vw);aspect-ratio:1;right:0;top:2%;background:radial-gradient(closest-side,color-mix(in oklab,var(--mint) 95%,transparent) 30%,transparent);animation:fx-drift 19s ease-in-out infinite alternate}
.fx-deco[data-tone=butter]::before{right:0;background:radial-gradient(closest-side,color-mix(in oklab,var(--butter) 90%,transparent) 25%,transparent)}
.fx-deco[data-tone=lilac]::before{background:radial-gradient(closest-side,color-mix(in oklab,var(--lilac) 95%,transparent) 30%,transparent)}
.fx-d{position:absolute;display:block;left:var(--x);top:var(--y);width:var(--s,48px);aspect-ratio:1;background:var(--c,var(--accent));rotate:var(--r,0deg);
 translate:0 calc(var(--sy,0) * var(--k,-.05) * 1px);
 -webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;opacity:var(--o,1)}
.fx-d--star{--m:var(--fx-star);animation:fx-spin 30s linear infinite}
.fx-d--spark{--m:var(--fx-spark);--c:#e8c547;animation:fx-float 6s ease-in-out infinite alternate}
.fx-d--wave{--m:var(--fx-wave);--c:var(--ink);--o:.5;aspect-ratio:5/1;animation:fx-wipe 1.4s var(--ease-out) .9s backwards}
.fx-d--loop{--m:var(--fx-loop);--c:var(--ink);--o:.38;aspect-ratio:4/3;animation:fx-wipe 1.6s var(--ease-out) 1.1s backwards}
.fx-d--dots{--m:var(--fx-dots);--c:var(--ink);--o:.22;animation:fx-float 9s ease-in-out -3s infinite alternate}
/* Баннер статьи: сам блок декора не анимируем вместе с содержимым */
.article-header>.fx-deco{animation:none}
/* Чистый бумажный фон и чёткие красные акценты вместо жёлтого свечения. */
.article-header>.fx-deco::before{content:none}
.article-header>.fx-deco .fx-d--spark{--c:var(--accent);--o:.45}
/* Одно пятно за кругом Рикко (справа); на телефоне поменьше и бледнее, чтобы не лежало под текстом */
@media (max-width:760px){.fx-deco::before{width:min(300px,70vw);top:0;opacity:.75}}
@media (max-width:760px){.fx-d--loop,.fx-d--dots,.fx-d--wave{display:none}.fx-d--star{--s:34px!important}.fx-d--spark{--s:22px!important}}
/* На узких экранах звезда налезает на заголовок: оставляем её только там, где для неё есть место (симулятор, 404) */
@media (max-width:1199px){.dash .hero>.fx-deco .fx-d--star{display:none}}
@media (max-width:900px){.dash .hero>.fx-deco .fx-d--star,.listing-hero>.fx-deco .fx-d--star,.article-header>.fx-deco .fx-d--star{display:none}}
/* Искра и звезда садятся на текст, когда колонка уже: прячем там, где для них нет свободного поля */
@media (max-width:1100px){.article-header>.fx-deco .fx-d--spark{display:none}}
@media (max-width:640px){.sim-intro>.fx-deco .fx-d--star{display:none}}
/* Подвал на очень узких экранах: одна колонка, длинные слова («Конфиденциальность») не вылезают за край */
@media (max-width:360px){.footer-grid{grid-template-columns:minmax(0,1fr)}}
.footer-grid a{overflow-wrap:anywhere}
/* На разборе (результаты дашборда) декор главной не нужен */
.dash[data-state=results] .fx-deco,.dash[data-state=empty] .fx-deco{display:none}

/* ─── 4. Круг Рикко: пунктирное кольцо и звезда на орбите ─── */
:is(.stage-art,.listing-art,.sim-stage-art){position:relative}
:is(.stage-art,.listing-art,.sim-stage-art)::before{content:'';position:absolute;inset:-3%;border-radius:50%;border:2px dashed color-mix(in oklab,var(--ink) 30%,transparent);pointer-events:none;animation:fx-spin 70s linear infinite reverse}
:is(.stage-art,.listing-art,.sim-stage-art)::after{content:'';position:absolute;inset:-3%;border-radius:50%;pointer-events:none;background:var(--accent);
 -webkit-mask:var(--fx-star) 50% 0/26px 26px no-repeat;mask:var(--fx-star) 50% 0/26px 26px no-repeat;animation:fx-spin 16s linear infinite}
.stage-art::before,.stage-art::after{inset:2%}
@media (max-width:760px){:is(.stage-art,.listing-art,.sim-stage-art)::after{-webkit-mask-size:20px 20px;mask-size:20px 20px}}

/* ─── 5. Свечение под курсором на карточках (ricco-fx.js пишет --mx / --my только на ту карточку, над которой курсор) ─── */
@media (hover:hover) and (pointer:fine){
 :is(.sticker,.kpi,.panel,.ntile,.hub-card,.editorial-row,.demo,.rank,.next-step,.sim-card,.sim-votes>div,.sim-note,.sim-verdict){
  background-image:radial-gradient(300px circle at var(--mx,-600px) var(--my,-600px),rgb(255 255 255 / .62),transparent 72%)}
 :is(.night,.sheet.night) :is(.sticker,.kpi,.panel,.sim-card){background-image:radial-gradient(300px circle at var(--mx,-600px) var(--my,-600px),rgb(255 255 255 / .07),transparent 72%)}
}

/* ─── 6. Кнопки: блик, бумажный самолётик, магнит ─── */
@media (hover:hover) and (prefers-reduced-motion:no-preference){
 :is(.button:not(.secondary),.dash .btn-primary,.ui-action[data-variant=primary]):hover{background-image:linear-gradient(105deg,transparent 36%,rgb(255 255 255 / .34) 50%,transparent 64%);background-size:260% 100%;background-repeat:no-repeat;animation:fx-shine .9s var(--ease-out)}
 :is(.button,.ui-action,.btn):hover .ui-icon:has(use[href$="#send"]){animation:fx-fly .7s var(--ease-out)}
}
.fx-mag-back{transition:translate .5s var(--ease-pop)!important}

/* ─── 7. Чипы и метки: лёгкий «наклеечный» поворот ─── */
@media (hover:hover) and (prefers-reduced-motion:no-preference){
 :is(.chip,.pill-link){transition:background-color var(--d-2),border-color var(--d-2),color var(--d-2),box-shadow var(--d-2),transform var(--d-1),rotate .3s var(--ease-pop),translate .3s var(--ease-pop)}
 :is(.chip,.pill-link):hover{rotate:-1.6deg;translate:0 -2px}
 :is(.chip,.pill-link):nth-child(even):hover{rotate:1.6deg}
}

/* ─── 8. Шапка: звёздочка бренда вращается ─── */
.brand-spark{display:inline-block;transform-origin:50% 55%}
@media (prefers-reduced-motion:no-preference){
 .brand-spark{animation:fx-spin 16s linear infinite}
 .brand:hover .brand-spark{animation-duration:2.4s}
}

/* ─── 9. Лента в подвале и «пояс ниш» на главной ─── */
.fx-marquee{overflow:hidden;white-space:nowrap;margin-bottom:clamp(28px,3.4vw,52px);padding-block:clamp(14px,1.8vw,24px);border-block:1px solid var(--rule);
 -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.fx-marquee-track{display:inline-flex;align-items:center;will-change:transform}
.fx-marquee-track>*{flex:none}
.fx-marquee b{font:800 clamp(1.6rem,1rem + 2.8vw,3.4rem)/1 var(--font-display);letter-spacing:-.035em;color:transparent;-webkit-text-stroke:1.4px var(--ink);padding-inline:.45em}
.fx-marquee b:nth-of-type(even){color:var(--ink);-webkit-text-stroke-width:0}
.fx-marquee i{display:block;width:clamp(22px,2.4vw,38px);aspect-ratio:1;background:var(--accent);-webkit-mask:var(--fx-star) center/contain no-repeat;mask:var(--fx-star) center/contain no-repeat;animation:fx-spin 12s linear infinite}
@media (prefers-reduced-motion:no-preference){
 .fx-marquee-track{animation:fx-marquee 46s linear infinite}
 .fx-marquee:hover .fx-marquee-track,.fx-belt:hover .fx-marquee-track{animation-play-state:paused}
}
.fx-belt{overflow:hidden;padding-block:clamp(10px,2vw,22px);margin-top:clamp(4px,1.6vw,24px);
 -webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.fx-belt .fx-marquee-track{gap:14px;padding-right:14px}
.fx-belt a{display:inline-flex;align-items:center;gap:10px;min-height:56px;padding:0 26px;border-radius:var(--r-pill);background:var(--tint,var(--mint));color:var(--ink);text-decoration:none;white-space:nowrap;
 font:700 1.0625rem/1 var(--font-display);letter-spacing:-.015em;rotate:var(--tilt,0deg);transition:rotate .3s var(--ease-pop),translate .3s var(--ease-pop),box-shadow .3s}
.fx-belt a::after{content:'';width:1.05em;aspect-ratio:1;background:var(--action);-webkit-mask:var(--fx-star) center/contain no-repeat;mask:var(--fx-star) center/contain no-repeat}
.fx-belt a:nth-child(5n+1){--tint:var(--mint);--tilt:-1.6deg}.fx-belt a:nth-child(5n+2){--tint:var(--rose);--tilt:1.2deg}.fx-belt a:nth-child(5n+3){--tint:var(--lilac);--tilt:-.8deg}
.fx-belt a:nth-child(5n+4){--tint:var(--butter);--tilt:1.8deg}.fx-belt a:nth-child(5n){--tint:var(--sky);--tilt:-1.2deg}
@media (hover:hover){.fx-belt a:hover{rotate:0deg;translate:0 -4px;box-shadow:var(--lift-2)}}
.dash:not([data-state=landing]) .fx-belt{display:none}

/* ─── 10. Подвал: буквы вырастают по очереди и подпрыгивают под курсором ─── */
.footer-big .fb{font-weight:inherit;display:inline-block;transition:translate .45s var(--ease-pop),rotate .45s var(--ease-pop),color .2s}
.footer-big>span:last-child{display:inline-block}
@media (prefers-reduced-motion:no-preference){
 .footer-big>span:last-child{animation:fx-spin 22s linear infinite}
 .footer-big.fx-ready:not(.fx-in) .fb{opacity:0}
 .footer-big.fx-in .fb{animation:fx-letter .9s var(--ease-pop) calc(var(--i) * 70ms) backwards}
}
@media (hover:hover){
 .footer-big .fb:hover{translate:0 -7%;rotate:-5deg;color:var(--accent)}
 .footer-big .fb:nth-child(even):hover{rotate:5deg}
}

/* ─── Пример разбора на главной: «4 из 5» кружками (рисует passport.js), заполняет пустую правую половину плитки ─── */
@keyframes fx-dot{from{opacity:0;scale:.2}}
@media (min-width:900px){.demo-card:has(.demo-dots){grid-template-columns:minmax(0,200px) minmax(0,1fr) minmax(0,auto)}}
.demo-dots{display:flex;flex-wrap:wrap;justify-content:flex-end;align-content:center;gap:clamp(8px,1vw,12px);max-width:min(100%,430px);padding-right:clamp(0px,2.4vw,40px)}
.demo-dots i{display:block;width:clamp(28px,3.2vw,46px);aspect-ratio:1;border-radius:50%;border:2px solid color-mix(in oklab,var(--ink) 32%,transparent)}
.demo-dots i.on{background:var(--accent);border-color:var(--accent)}
@media (prefers-reduced-motion:no-preference){.demo-dots i{animation:fx-dot .5s var(--ease-pop) calc(var(--i) * 45ms + 150ms) backwards}}
@media (max-width:899px){.demo-card .demo-dots{grid-column:1 / -1;justify-content:flex-start;padding-right:0;max-width:none}.demo-dots i{width:clamp(24px,7vw,34px)}}

/* ─── 11. Мелочи ─── */
.fx-count{font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:no-preference){
 .consent:not([hidden]){animation:fx-rise .7s var(--ease-pop) .6s backwards}
 .pulse-dot{animation:fx-ping 1.8s ease-out infinite}
}
@media print{
 [data-fx],[data-fx]>*,.footer-big .fb{opacity:1!important;translate:none!important;scale:none!important;animation:none!important}
 .fx-deco,.fx-marquee,.fx-belt{display:none!important}
}
/* LaRicco mobile, 16.10.2026: слой для телефона и планшета. 90% трафика идёт с телефонов, поэтому здесь правила «сначала телефон».
   Подключён последним и без @layer (как fx.css), чтобы перекрывать passport.css / razbor.css / fx.css.
   Принципы: на телефоне только то, что помогает решить «сработает ли и что делать»; декор и тяжёлая графика отключены (меньше перерисовок и лагов);
   зоны нажатия не меньше 44 px, шрифты не меньше 12 px, поля ввода 16 px (иначе iOS приближает страницу при фокусе); страница не прыгает при выборе. */

/* ─── 1. Касание и слабые устройства: без лишнего движения и дорогих эффектов ─── */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (hover:none),(pointer:coarse),(max-width:759px){
 /* появление при прокрутке (CSS и скрипт) выключено: блоки сразу на месте */
 [data-reveal],[data-reveal-stagger]>*{animation:none!important}
 a,button,summary,label,.chip,.seg button{-webkit-tap-highlight-color:transparent}
 /* размытие фона под шапкой и нижней кнопкой дорого на телефоне: плотная заливка выглядит так же и не тормозит прокрутку */
 .site-header.header-scrolled,.subnav,.dock,.consent{-webkit-backdrop-filter:none;backdrop-filter:none}
 .site-header.header-scrolled{background:var(--paper)}
 .subnav,.dock,.consent{background:var(--paper)}
 /* бесконечные анимации и «парящие» пятна выключены */
 .fx-belt,.fx-marquee{display:none!important}
 .fx-deco::before{display:none}
 .fx-deco .fx-d{animation:none!important;transform:none}
 .fx-deco .fx-d--star{display:block!important;left:auto;right:10px;top:auto;bottom:12px;width:22px;opacity:.25}
 .fx-deco .fx-d--spark{display:none}
 :is(.stage-art,.listing-art,.sim-stage-art)::before,:is(.stage-art,.listing-art,.sim-stage-art)::after{display:none}
 .brand-spark,.footer-big>span:last-child,.fx-marquee i,.pulse-dot{animation:none!important}
 .stage-blob{transition:none}
 .chip,.pill-link,.seg button,.d-row{min-height:44px}
}
/* Якоря и переходы страниц используют лёгкое движение из base.css также на
   телефоне. Прокрутку пальцем не перехватываем; reduced motion остаётся мгновенным. */
/* длинные страницы рисуются по мере прокрутки */
.rz-sector,.more-body>.panel,.site-footer,.related-section{content-visibility:auto;contain-intrinsic-block-size:auto 640px}

/* ─── 2. Телефон ≤759 ─── */
@media (max-width:759px){
 :root{--section:clamp(40px,10vw,64px);--gutter:16px}
 .sr-only-m{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

 /* шапка и меню */
 .header-inner{gap:var(--s-2)}
 .menu-primary a{min-height:64px}

 /* Первый экран: вопрос, поле, примеры. Рикко и текст компактнее, без лишних подписей */
 .dash .hero{gap:var(--s-3);padding-block:12px 20px}
 .dash .hero h1{font-size:clamp(2rem,9.2vw,2.5rem);margin-top:10px;max-width:15ch}
 .dash .hero .lead{margin-top:12px;font-size:1rem;line-height:1.45}
 .pick{margin-top:18px}
 .pick>label{margin-bottom:8px}
 .dash .simulator-entry{margin-top:8px;font-size:.9375rem}
 .dash .stage{grid-template-columns:minmax(0,132px) minmax(0,1fr);align-items:center;justify-items:start;column-gap:12px;margin-top:4px;order:2}
 .dash .stage-art{width:100%;grid-column:1;grid-row:1}
 .dash .say{position:relative;top:auto;right:auto;grid-column:2;grid-row:1;order:0;margin:0;justify-self:start;max-width:none;transform:rotate(-1.5deg);font-size:.9375rem;padding:10px 14px}
 .dash .say::after{left:-8px;bottom:auto;top:calc(50% - 8px);border:0;border-left:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);transform:rotate(45deg)}
 .stage-note{display:none}

 /* Пример и три шага */
 .demo-sec{padding-block:var(--s-3) 0}
 .sec-head{margin-bottom:var(--s-4);gap:8px}
 .sec-head h2{font-size:1.6rem}
 .demo-card{grid-template-columns:96px minmax(0,1fr);gap:12px;padding:14px;border-radius:24px}
 .demo-card .vframe{border-radius:14px}
 .demo-big{font-size:2.6rem}
 .demo-stats{gap:4px}
 .demo-stats .kpi-s:last-of-type{display:none}
 .demo-note{display:none}
 .how{padding-bottom:var(--s-6)}
 .how-path{gap:8px}
 .how-path li{grid-template-columns:44px minmax(0,1fr);column-gap:12px;row-gap:0;padding:12px 14px;align-items:center;border-radius:20px}
 .how-ic{grid-row:span 2;width:44px;height:44px;margin:0}
 .how-path b{font-size:1.0625rem}
 .how-path span:not(.how-ic){font-size:.9375rem}
 .closing{padding-bottom:0}
 .closing-in{padding:22px;gap:12px;border-radius:24px}
 .closing-art{display:none}
 .closing-in h2{font-size:1.6rem}
 .closing-in p{font-size:1rem}
 .closing-in .btn-primary{width:100%}

 /* Разбор: компактный итог и доступная навигация по разделам. */
 .subnav-in{min-height:48px;gap:8px}
 .subnav-title{max-width:10ch;font-size:.875rem}
 .subnav-links a{min-height:48px;padding-inline:12px}
 /* Пустая часть заголовка не должна перекрывать касание Рикко. */
 .sim-intro .sim-stage{z-index:2}
 .dash:not([data-state=landing]) .hero .lead{display:none}
 .dash:not([data-state=landing]) .hero{position:relative}
 .dash:not([data-state=landing]) .stage{position:absolute;right:0;top:6px;width:88px;margin:0;display:block}
 .dash:not([data-state=landing]) .say{display:none}
 .dash:not([data-state=landing]) .hero h1,.dash:not([data-state=landing]) .verdict{max-width:calc(100% - 96px)}
 .dash:not([data-state=landing]) .hero-kicker{font-size:.75rem}
 .dash:not([data-state=landing]) .simulator-entry{display:none}
 .dash:not([data-state=landing]) .pick{margin-top:12px}
 .dash:not([data-state=landing]) .pick>label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
 .dash[data-state=results] .hero h1,.dash[data-state=empty] .hero h1{font-size:clamp(1.9rem,9vw,2.4rem)}
 .board{gap:12px}
 .panel{padding:18px;border-radius:24px}
 .panel-head{gap:8px;margin-bottom:14px}
 .panel-head h2,.dash .plan h2{font-size:1.5rem}
 .panel-head .eyebrow{display:none}
 .takeaway{font-size:1rem;line-height:1.45}

 .kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
 .kpi{padding:12px 12px 14px;gap:6px;min-height:0;border-radius:20px;align-content:start}
 .kpi-top{gap:6px}
 .kpi-l{font-size:.75rem;line-height:1.25}
 .kpi-v{font-size:clamp(1.5rem,7vw,1.9rem);white-space:nowrap}
 .kpi-range{display:none}
 .kpi-v .bn{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
 .kpi-v small,.bn small{font-size:.55em;margin:2px 0 0;white-space:nowrap}
 .kpi-v>small{margin:0 0 0 2px}
 .kpi-s{font-size:.75rem;line-height:1.3}
 .kpi-rec{grid-template-columns:minmax(0,1fr)}
 .kpi-rec .vframe{display:none}
 .units i{width:10px;height:10px;border-radius:4px}
 .units{gap:3px}

 #s3 .what,#s3 .tp-head p,#s3 .fine{display:none}
 .seg{margin-inline:-2px}
 .seg button{min-height:48px;padding:6px 16px}
 .story{margin-inline:-18px;padding-inline:18px}
 .fr{min-height:210px;flex-basis:min(62vw,230px)}
 .exline{margin-top:10px;font-size:.9375rem}
 .spot-title{display:none}
 .spot-body{grid-template-columns:104px minmax(0,1fr);gap:12px}
 .spot-take{padding:12px 14px;font-size:.9375rem}

 .gap{padding:20px 18px;gap:14px}
 .gap-head .eyebrow{display:none}
 .gap h2{font-size:1.5rem;margin-top:0}
 .gap .takeaway{margin-top:8px}
 .gap-art{display:none}
 .gap-cards{gap:10px}
 .gap-card{padding:16px;gap:8px}
 .gap-big{font-size:2.1rem}
 .gap-cta{font-size:1rem}

 .dash .plan{padding:20px 18px;gap:12px}
 .plan-art{display:none}
 .plan-text{display:none}
 .plan-body{gap:12px}
 .msg-preview blockquote{padding:14px 16px;font-size:.9375rem}
 .dash .acts{gap:8px}
 .dash .plan .acts .btn{width:100%}

 .more>summary{min-height:64px;padding:10px 16px}
 .more-body{padding:0 8px 8px}
 .more-body .panel{padding:14px}
 .foot-notes{padding:0 8px}
 .dock{left:10px;right:10px}

 /* пустая ниша */
 .empty-panel{padding:18px}
 .empty-art{width:min(46%,150px)}

 /* страницы разборов и каталоги */
 .razbor .razbor-hero{padding-block:4px 20px}
 .razbor .razbor-hero h1{font-size:clamp(2rem,9vw,2.5rem)}
 .razbor-stage{display:none}
 .listing-hero{padding-block:8px 16px;gap:var(--s-3)}
 .listing-hero h1{font-size:clamp(2rem,9vw,2.5rem)}

 /* подвал: коротко */
 .site-footer{margin:12px 8px 8px;padding:28px 0 18px;border-radius:24px}
 .footer-big{font-size:clamp(2.75rem,17vw,4.25rem)}
 .footer-top{gap:12px;padding-bottom:16px}
 .footer-pitch p{display:none}
 .footer-grid{padding:20px 0 12px;gap:20px 12px}
 .footer-grid h2{margin-bottom:4px}
 .footer-grid a{min-height:44px}
 .footer-bottom{padding-top:12px;gap:4px 16px}
}

/* База знаний и поиск на телефоне: одна строка поиска, фильтры только если они уже выбраны, частые вопросы лентой */
@media (max-width:759px){
 .catalog-filter{padding:12px;gap:10px;border-radius:24px}
 .catalog-query{grid-template-columns:minmax(0,1fr) auto;gap:8px}
 .catalog-query .button{min-height:52px;padding:0 18px}
 .quick-topics{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:8px;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter)}
 .quick-topics::-webkit-scrollbar{display:none}
 .quick-topics>span{display:none}
 .quick-topics .pill-link{flex:none}
 .catalog-count{margin-top:4px}
 .editorial-row{padding:18px 16px;gap:12px}
 .editorial-row p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 .section-tabs{margin-bottom:var(--s-4)}
}

/* ─── 3. Планшет 760–1099 ─── */
@media (min-width:760px) and (max-width:1099px){
 .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
 .kpi-rec{grid-template-columns:minmax(0,1fr)}
 .kpi-rec .vframe{display:none}
 .kpi{min-height:190px}
 .gap-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
 .how-path{grid-template-columns:repeat(3,minmax(0,1fr))}
 .dash .hero .lead{max-width:48ch}
 .dash:not([data-state=landing]) .stage{display:grid}
}
@media (min-width:700px) and (max-width:899px){
 .dash .hero{grid-template-columns:minmax(0,1.25fr) minmax(200px,.75fr);align-items:center}
 .dash .stage{order:0}
 .dash .stage-art{width:min(100%,300px)}
 .dash[data-state=landing] .hero h1{font-size:clamp(2.4rem,6.2vw,3.2rem)}
 .dash:not([data-state=landing]) .hero{grid-template-columns:minmax(0,1fr) 200px}
 .dash:not([data-state=landing]) .say{display:none}
 .dash[data-state=landing] .stage{padding-top:72px}
 .dash[data-state=landing] .say{top:0;right:0;max-width:min(100%,260px)}
}

@media (max-width:899px){.go-long{display:none}.go-short{display:inline}}

/* ─── 4. Всё, что меньше широкого экрана (телефон и планшет) ─── */
@media (max-width:1099px){
 .dash input[type=range],input[type=range]{height:44px}
 .rz-related li a{display:inline-flex;align-items:center;min-height:44px}
 .fr .tag,.tag,.toc-left{font-size:.75rem}
 .dash:not([data-state=landing]) .say{max-width:100%}
}

/* Каталог ниш на телефоне: плитки сразу, без лишней шапки и таблицы */
@media (max-width:759px){
 .rz-hub .rz-hero .breadcrumb,.rz-hub .rz-hero .hero-kicker,.rz-hub .rz-hero .rz-sim-link{display:none}
 .rz-bar-in{flex-wrap:wrap;gap:10px}
 .rz-search{flex-basis:100%}
 .rz-view{max-width:100%}
 .cmp-count{margin:0;font-size:.8125rem}
 .cmp-wrap table{min-width:920px}
 .cmp-wrap .cmp-x{display:table-cell}
 .cmp-wrap tbody th{min-width:140px}
 .cmp-wrap th:first-child{position:sticky;left:0;background:var(--card);z-index:2}
 .cmp-wrap thead th:first-child{z-index:3}
 .ntile-name{overflow-wrap:anywhere;hyphens:auto}
 .ntile{padding-right:30px}
}

/* Collapsible filters remain ordinary native controls without JavaScript. */
.catalog-filter-options{min-width:0;border-top:1px solid var(--rule)}
.catalog-filter-options>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;cursor:pointer;font-weight:600;list-style:none}
.catalog-filter-options>summary::-webkit-details-marker{display:none}
.catalog-filter-options>summary::after{content:'+';font-size:1.5rem;line-height:1}
.catalog-filter-options[open]>summary::after{content:'−'}
.catalog-filter-options .catalog-facets{padding:8px 0 12px}
.catalog-filter-options .catalog-facets>label{min-width:0}
.catalog-filter-options .catalog-facets>label[hidden]{display:none}
@media(max-width:480px){.catalog-filter-options .catalog-facets{grid-template-columns:1fr}}
.catalog-filter-options>summary:focus-visible{outline:3px solid var(--focus-ring-solid);outline-offset:3px;border-radius:8px}
.catalog-filter-options[hidden]{display:none}
.cmp-empty{padding-block:16px}
.cmp-empty[hidden]{display:none}
.rz-reset{min-height:44px}

/* The arrow belongs to its card: one tap opens it, including the icon area. */
.sticker:active .circle-arrow,.editorial-row:active .row-arrow{background:var(--button);color:var(--on-button);border-color:transparent}
.ntile:active .ntile-go{color:var(--action)}
.brand:active .brand-spark{rotate:45deg}
.brand-spark{transition:rotate .18s var(--ease-out)}
.brand-star-shape{width:1em;height:1em;vertical-align:-.125em;fill:none;stroke:currentColor;stroke-width:1}
.sticker::after,.hub-card::after,.demo-card::after{pointer-events:none}

.cmp-context{margin-top:20px;border-top:1px solid var(--rule);padding-top:8px}
.cmp-context>summary{min-height:48px;padding:12px 0;cursor:pointer;font-weight:600}
.cmp-context .takeaway,.cmp-context .fine{margin-top:12px}

/* Shared motion: fast press, soft release, no changes to touch scrolling. */
@media (prefers-reduced-motion:no-preference){
 :is(.button,.go,.sim-run,.spot-nav button,.search-trigger,.menu-trigger){
  transition:transform 220ms cubic-bezier(.22,1,.36,1),background-color 180ms ease,color 180ms ease,box-shadow 220ms ease;
 }
 :is(.button,.go,.sim-run,.spot-nav button,.search-trigger,.menu-trigger):active:not(:disabled){transform:scale(.97);transition-duration:100ms}
 :is(.circle-arrow,.row-arrow,.ntile-go){transition:transform 220ms cubic-bezier(.22,1,.36,1),background-color 180ms ease,color 180ms ease}
 .editorial-row:active .row-arrow,.ntile:active .ntile-go{transform:translateX(3px)}
 .site-header{view-transition-name:site-header}
 ::view-transition-old(root){animation:laricco-page-out 160ms ease both}
 ::view-transition-new(root){animation:laricco-page-in 280ms cubic-bezier(.22,1,.36,1) both}
 ::view-transition-old(site-header),::view-transition-new(site-header){animation:none}
 @keyframes laricco-page-out{to{opacity:0}}
 @keyframes laricco-page-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .editorial-row:hover .row-arrow,.ntile:hover .ntile-go{transform:translateX(3px)}
}
/* LaRicco rich, 16.10.2026 (вечер): «чтобы дизайн не выглядел скудно».
   После сокращения текста внутренние страницы стали белыми списками на кремовом листе. Здесь им возвращается характер Рикко:
   цветные панели в шапках, пастельные карточки вместо таблиц, стикеры-Рикко в шагах и в блоке «О платформе», звёзды и волны бренда.
   Подключён после mobile.css и без @layer: правила ниже сознательно перекрывают pages.css / razbor.css / passport.css.
   Весь декор aria-hidden или чистый CSS, ничего не двигается на телефоне (движение выключает mobile.css). Картинки Рикко: прозрачные webp 640, ленивая загрузка. */

/* ─── 1. Шапки внутренних страниц: пастельная панель, волна внизу, Рикко в углу ─── */
.catalog-knowledge{--hero-tint:var(--mint)}
.catalog-platforms{--hero-tint:var(--sky)}
.catalog-industries{--hero-tint:var(--butter)}
.catalog-glossary{--hero-tint:var(--lilac)}
.catalog-research{--hero-tint:var(--rose)}
.catalog-search{--hero-tint:var(--butter)}
.listing-hero{position:relative;isolation:isolate;overflow:hidden;margin-top:8px;padding:clamp(22px,2.6vw,36px);border-radius:var(--r-sheet);background:var(--hero-tint,var(--mint))}
.listing-hero::before{content:'';position:absolute;z-index:-1;right:-8%;bottom:-46%;width:min(560px,72%);aspect-ratio:1;border-radius:50%;background:rgb(255 253 248 / .5)}
.listing-hero::after{content:'';position:absolute;z-index:-1;left:clamp(18px,4.4vw,60px);bottom:clamp(10px,1.6vw,22px);width:min(150px,36%);height:18px;background:var(--ink);opacity:.16;
 -webkit-mask:var(--fx-wave) 0 50%/72px 14px repeat-x;mask:var(--fx-wave) 0 50%/72px 14px repeat-x}
.listing-hero>.fx-deco::before{display:none}
.listing-hero .listing-copy{padding-bottom:0}
.listing-art{width:min(100%,190px);background:var(--card)}
@media (min-width:860px){.listing-hero:has(.listing-art){grid-template-columns:minmax(0,1fr) minmax(160px,210px)}}
@media (max-width:859px){
 .listing-art{display:grid;grid-template-columns:minmax(0,1fr);position:absolute;right:14px;top:12px;width:64px;max-width:none;padding:5px;z-index:1}
 .listing-hero .listing-copy{gap:12px}
 .listing-hero .listing-copy h1{padding-right:72px;min-height:48px}
 .listing-hero{padding:20px 18px 26px;border-radius:30px}
}

/* ─── 2. База знаний и поиск: каждая запись отдельной карточкой своего цвета ─── */
.editorial-list[data-variant=catalog]{background:none;border:0;border-radius:0;box-shadow:none;overflow:visible;gap:12px}
.editorial-list[data-variant=catalog] .editorial-row{background-color:var(--tint,var(--card));border:0;border-radius:var(--r-lg);padding:22px 24px}
.editorial-list[data-variant=catalog] .editorial-row:last-child{border-bottom:0}
.editorial-row[data-type=pillar]{--tint:var(--butter)}
.editorial-row[data-type=explainer],.editorial-row[data-type=data_story],.editorial-row[data-type=industry]{--tint:var(--mint)}
.editorial-row[data-type=playbook],.editorial-row[data-type=checklist],.editorial-row[data-type=update]{--tint:var(--rose)}
.editorial-row[data-type=howto],.editorial-row[data-type=faq],.editorial-row[data-type=methodology]{--tint:var(--lilac)}
.editorial-row[data-type=comparison],.editorial-row[data-type=research],.editorial-row[data-type=platform]{--tint:var(--sky)}
.editorial-row[data-type=glossary],.editorial-row[data-type=custom]{--tint:var(--butter)}
.editorial-list[data-variant=catalog] .story-meta>span:first-child{padding:5px 11px;border-radius:var(--r-pill);background:rgb(255 253 248 / .78);color:var(--ink)}
.editorial-list[data-variant=catalog] .editorial-row p{color:var(--ink-2)}
.editorial-list[data-variant=catalog] .row-arrow{background:rgb(255 253 248 / .8);border-color:transparent}
@media (hover:hover){
 .editorial-list[data-variant=catalog] .editorial-row{transition:translate var(--d-2) var(--ease-apple),box-shadow var(--d-2)}
 .editorial-list[data-variant=catalog] .editorial-row:hover{background-color:var(--tint,var(--card));translate:0 -3px;box-shadow:var(--lift-2)}
}
@media (max-width:759px){
 .editorial-list[data-variant=catalog]{gap:10px}
 .editorial-list[data-variant=catalog] .editorial-row{padding:16px 16px 16px 18px;border-radius:22px;gap:12px}
}

/* ─── 3. Каталог ниш: плитки по отраслям разных цветов ─── */
.rz-sector{--tl:var(--mint)}
.rz-sector:nth-of-type(5n+2){--tl:var(--rose)}
.rz-sector:nth-of-type(5n+3){--tl:var(--lilac)}
.rz-sector:nth-of-type(5n+4){--tl:var(--butter)}
.rz-sector:nth-of-type(5n){--tl:var(--sky)}
.rz-sector .ntile{background-color:var(--tl);border-color:transparent}
.rz-sector .ntile-bar{background:linear-gradient(to right,var(--accent) var(--w),rgb(255 253 248 / .85) var(--w))}
.rz-sector>h2::before{content:'';flex:none;align-self:center;width:.62em;aspect-ratio:1;background:var(--accent);-webkit-mask:var(--fx-star) center/contain no-repeat;mask:var(--fx-star) center/contain no-repeat}
.rz-sector>h2 small{padding:5px 11px;border-radius:var(--r-pill);background:var(--tl);color:var(--ink);letter-spacing:.06em}
@media (hover:hover){.rz-sector .ntile:hover{border-color:transparent}}

/* ─── 4. Симулятор: шапка на масляной панели ─── */
.sim-intro{position:relative;margin:14px 0 26px;padding:clamp(22px,2.4vw,32px) clamp(20px,3vw,40px);border-radius:var(--r-sheet);background:var(--butter);overflow:hidden}
@media (min-width:641px){.sim-intro{grid-template-columns:minmax(0,1fr) minmax(160px,220px)}}
.sim-intro::after{content:'';position:absolute;left:clamp(20px,4.4vw,56px);bottom:clamp(10px,1.6vw,20px);width:min(150px,36%);height:18px;background:var(--ink);opacity:.16;
 -webkit-mask:var(--fx-wave) 0 50%/72px 14px repeat-x;mask:var(--fx-wave) 0 50%/72px 14px repeat-x}
.sim-intro .sim-blob{background:rgb(255 253 248 / .72)}
.sim-intro .sim-say{top:-4%;right:0}
@media (max-width:640px){
 .sim-intro{margin:10px 0 22px;padding:18px 16px 28px;border-radius:30px}
 .sim-intro .sim-stage{top:12px;right:12px}
 .sim h1{padding-right:96px}
 .sim-lead{min-height:0;padding-right:0}
}

/* ─── 5. Главная: пример разбора и шаги ─── */
.demo-card{position:relative;overflow:hidden}
@media (min-width:760px){.demo-card::after{content:'';position:absolute;right:-60px;bottom:-70px;width:260px;aspect-ratio:1;background:var(--ink);opacity:.045;pointer-events:none;
 -webkit-mask:var(--fx-star) center/contain no-repeat;mask:var(--fx-star) center/contain no-repeat}}
.demo-big,.demo-big small{white-space:nowrap}
@media (min-width:900px){
 .demo-card:has(.demo-dots){grid-template-columns:minmax(0,200px) minmax(240px,1fr) minmax(0,300px)}
 .demo-dots{max-width:300px;justify-content:flex-end;padding-right:0}
 .demo-dots i{width:clamp(26px,2.6vw,36px)}
}
.how-path{counter-reset:step}
.how-path li{position:relative;overflow:hidden;min-height:clamp(210px,20vw,290px);padding-bottom:clamp(22px,2.6vw,34px)}
.how-path li::before{counter-increment:step;content:counter(step);position:absolute;right:clamp(16px,2vw,28px);top:clamp(8px,1.2vw,16px);font:900 clamp(3.4rem,6vw,6rem)/1 var(--font-display);letter-spacing:-.05em;color:var(--ink);opacity:.08}
.how-path li>:not(.how-ricco){position:relative;z-index:1}
.how-path li span:not(.how-ic){max-width:19ch}
.how-ricco{position:absolute;right:-8px;bottom:-16px;width:min(48%,190px);height:auto;rotate:4deg;pointer-events:none;transition:rotate .4s var(--ease-pop),translate .4s var(--ease-pop)}
.how-path li:nth-child(2) .how-ricco{rotate:-5deg}
@media (hover:hover){.how-path li:hover .how-ricco{rotate:-2deg;translate:0 -6px}}
@media (max-width:759px){
 .how-path li{min-height:0;grid-template-columns:44px minmax(0,1fr) 64px;overflow:visible}
 .how-path li::before{display:none}
 .how-path li span:not(.how-ic){max-width:none}
 .how-ricco{position:static;grid-column:3;grid-row:1 / span 2;width:64px;rotate:none;align-self:center;justify-self:end;translate:0}
}
@media (min-width:760px) and (max-width:1099px){.how-ricco{width:min(44%,120px)}.how-path li{min-height:230px}}
/* Закрывающий блок: Рикко выглядывает из угла и на телефоне */
@media (max-width:759px){
 .closing-in{position:relative;overflow:hidden}
 .closing-art{display:block;position:absolute;right:-10px;top:-14px;width:112px;rotate:7deg;pointer-events:none}
 .closing-in h2{padding-right:88px;font-size:1.5rem}
}

@media (min-width:700px) and (max-width:859px){
 .closing-in{grid-template-columns:minmax(0,1.3fr) minmax(150px,.7fr)}
 .closing-art{width:min(100%,230px)}
}

/* ─── 6. «О платформе»: три коротких довода со стикерами ─── */
.pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:8px 0 40px;padding:0;list-style:none}
.pillars li{position:relative;display:grid;align-content:end;gap:6px;min-height:200px;padding:22px;border-radius:var(--r-lg);background:var(--tint,var(--mint));overflow:hidden}
.pillars li[data-tint=rose]{--tint:var(--rose)}
.pillars li[data-tint=lilac]{--tint:var(--lilac)}
.pillars img{position:absolute;right:-8px;top:-10px;width:min(52%,148px);height:auto;rotate:5deg;pointer-events:none}
.pillars li:nth-child(2) img{rotate:-6deg}
.pillars b{font:800 clamp(1.2rem,1rem + .8vw,1.6rem)/1.12 var(--font-display);letter-spacing:-.03em;position:relative}
.pillars span{color:var(--ink-2);font-size:var(--t-sm);line-height:1.4;max-width:24ch;position:relative}
@media (max-width:759px){
 .pillars{grid-template-columns:1fr;gap:8px;margin-bottom:26px}
 .pillars li{min-height:0;align-content:center;padding:16px 104px 16px 18px;border-radius:22px}
 .pillars img{right:8px;top:50%;translate:0 -50%;width:84px}
}

/* ─── 7. Карточки «Платформы» и «Отрасли»: компактнее на телефоне, звезда в углу ─── */
.hub-card::after{content:'';position:absolute;right:-26px;top:-26px;width:120px;aspect-ratio:1;background:var(--ink);opacity:.045;pointer-events:none;
 -webkit-mask:var(--fx-star) center/contain no-repeat;mask:var(--fx-star) center/contain no-repeat}
@media (max-width:759px){
 .hub-card{min-height:0;padding:20px 20px 16px;gap:8px}
 .catalog-grid{gap:10px}
}

/* ─── 8. Словарь: карточки терминов разных цветов ─── */
.glossary-card:nth-child(4n+1){background:var(--butter)}
.glossary-card:nth-child(4n+2){background:var(--mint)}
.glossary-card:nth-child(4n+3){background:var(--rose)}
.glossary-card:nth-child(4n){background:var(--lilac)}
.glossary-card{border-color:transparent}
.glossary-card .letter{background:var(--card)}
/* LaRicco guide, 18.10.2026: «сайт должен быть понятным с нуля и приводить в Telegram».
   Слой пути посетителя: нижняя панель разделов на телефоне, три двери на главной, пояснения цифр, замок в симуляторе, крючки в статьях и каталогах.
   Подключён последним и без @layer (как fx/mobile/rich), чтобы перекрывать остальные листы. Телефон первым: ≥44 px, шрифт ≥12 px, ничего не прыгает. */

/* ─── 1. Нижняя панель разделов (телефон и планшет) ─── */
:root{--tabbar-h:62px}
.tabbar{display:none}
@media (max-width:1099px){
 :root{--tabbar-space:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}
 body{padding-bottom:var(--tabbar-space)}
 /* то, что получает фокус или прокручивается к экрану, не прячется под нижней панелью (WCAG 2.2, 2.4.11) */
 html{scroll-padding-bottom:calc(var(--tabbar-space) + 16px)}
 .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:calc(var(--z-header) + 3);display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,.86fr) minmax(0,1fr);gap:4px;padding:6px 10px calc(6px + env(safe-area-inset-bottom,0px));background:var(--paper);border-top:1px solid var(--rule)}
 .tabbar a{display:grid;justify-items:center;align-content:center;gap:3px;min-height:50px;padding:4px 2px;border-radius:16px;color:var(--ink-3);text-decoration:none;font:600 .75rem/1.1 var(--font-text);text-align:center;-webkit-tap-highlight-color:transparent;transition:background-color var(--d-1),color var(--d-1)}
 .tabbar .ui-icon{width:22px;height:22px}
 .tabbar a[aria-current=page]{color:var(--ink);background:var(--paper-deep)}
 .tabbar a[aria-current=page] .ui-icon{color:var(--action)}
 .tabbar a:focus-visible{outline:3px solid var(--focus-ring-solid);outline-offset:-3px}
 .tabbar .tabbar-tg{background:var(--button);color:var(--on-button);box-shadow:var(--glow)}
 .tabbar .tabbar-tg:active{background:var(--button-hover)}
 /* человек печатает (класс ставит tg-context.js с задержкой при уходе фокуса, чтобы панель не перехватила нажатие на кнопку рядом) или открыто окно: панель не мешает */
 body.is-typing .tabbar,body:has(dialog[open]) .tabbar{display:none}
 /* всё, что прижато к низу, стоит над панелью; «Отправить план» теперь живёт в самой панели */
 .dock{display:none!important}
 .reading-bar,.result-peek{bottom:calc(var(--tabbar-space) + 8px)}
 .consent{bottom:calc(var(--tabbar-space) + 8px)}
 .toast{bottom:calc(var(--tabbar-space) + 16px)}
 .is-counting .sim-progress{bottom:calc(var(--tabbar-space) + 8px)}
 body.has-reading-bar .site-footer{padding-bottom:96px}
}
/* На телефоне и планшете Telegram в панели внизу: в шапке остаются логотип, поиск и меню (подсказка «⌘K» владельцу бизнеса ни о чём не говорит) */
@media (max-width:1099px){.header-project{display:none}}
.search-trigger kbd{display:none}
@media print{.tabbar{display:none}body{padding-bottom:0}}

/* ─── 2. Главная: кто мы, что бесплатно, вторая дверь на виду, три двери ниже ─── */
.hero-trust{display:flex;align-items:center;gap:6px;margin:10px 0 2px;font:500 .875rem/1.3 var(--font-text);color:var(--ink-2)}
.hero-trust .ui-icon{width:16px;height:16px;flex:none;color:var(--ok)}
.dash:not([data-state=landing]) .hero-trust{display:none}
.dash .simulator-entry{margin-top:14px;font-size:inherit}
.dash .simulator-entry .hero-door{display:flex;align-items:center;gap:12px;max-width:460px;min-height:60px;padding:8px 16px 8px 10px;border-radius:20px;background:var(--butter);color:var(--ink);font-weight:400;text-decoration:none;transition:background-color var(--d-2),transform var(--d-2) var(--ease-apple)}
.hero-door-ic{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:50%;background:var(--card)}
.hero-door-ic .ui-icon{width:20px;height:20px;color:var(--action)}
.hero-door-t{display:grid;flex:1;gap:1px;min-width:0}
.hero-door-t b{font:800 1rem/1.2 var(--font-display);letter-spacing:-.02em}
.dash .simulator-entry .hero-door>.ui-icon{width:18px;height:18px;flex:none;color:var(--ink-3)}
@media (hover:hover){.dash .simulator-entry .hero-door:hover{background:color-mix(in oklab,var(--butter) 80%,var(--highlight))}}
.dash .simulator-entry .hero-door:active{transform:scale(.985)}
.doors-list .how-path span:not(.how-ic){max-width:none}

/* ─── 3. Разбор: цифры простыми словами ─── */
.kpi-plain{margin:12px 0 0;padding:14px 16px;border:1px solid var(--rule);border-radius:18px;background:var(--card);font-size:.9375rem;line-height:1.5;color:var(--ink-2)}
.kpi-plain:empty{display:none}
#s3 .what{display:block;margin:0 0 12px;font-size:.9375rem;line-height:1.45;color:var(--ink-2)}

/* ─── 4. Симулятор: цифры и графики открыты, тексты советов и реплик под замком ─── */
.sim-block-head{margin:0 0 14px}
.sim-block-head h3{margin:0}
.sim-locked.is-locked .sim-prose{filter:blur(6px);opacity:.85;user-select:none;-webkit-user-select:none;pointer-events:none}
.sim-lock{display:none}
.sim-locked.is-locked .sim-lock{display:grid;justify-items:start;gap:8px;margin-top:18px}
.sim-lock .button{min-height:52px}
@media (max-width:640px){.sim-lock{justify-items:stretch}.sim-lock .button{width:100%}}

/* ─── 5. Статьи: крючок посреди текста и две кнопки в конце ─── */
.inline-hook{margin-block:var(--s-6)}
.inline-hook h3{font-size:1.25rem;line-height:1.2}
.inline-hook-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:4px}
.inline-hook .text-link{min-height:44px;display:inline-flex;align-items:center;gap:6px}
.next-step>.next-actions{grid-area:action;display:grid;gap:10px;justify-items:stretch}
.next-actions .button{width:100%;white-space:normal;text-align:center;justify-content:center}
@media (max-width:900px){.next-step>.next-actions{grid-area:auto}.next-step{grid-template-columns:minmax(0,1fr);grid-template-areas:'copy' 'action'}}

/* ─── 6. Каталоги: понятные плитки и тёмный блок «что дальше» ─── */
.rz-legend{max-width:60ch;margin:12px 0 0;padding:12px 14px;border-radius:16px;background:var(--card);border:1px solid var(--rule);font-size:.9375rem;line-height:1.45;color:var(--ink-2)}
.rz-legend b{color:var(--ink)}
.listing-cta{display:grid;gap:18px;margin-top:var(--s-7);padding:clamp(22px,4vw,48px);border-radius:var(--r-xl)}
.listing-cta h2{font-size:clamp(1.5rem,1.1rem + 1.6vw,2.4rem);line-height:1.1;max-width:22ch}
.listing-cta p{max-width:52ch;margin:10px 0 0;color:var(--ink-2)}
.listing-cta-actions{display:flex;flex-wrap:wrap;gap:10px}
@media (min-width:900px){.listing-cta{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:32px}}
@media (max-width:560px){.listing-cta{margin-inline:0}.listing-cta-actions .button{width:100%}}
.dash .gap-cta{display:grid;justify-items:start;gap:12px}
.dash .gap-cta p{margin:0;font-size:.9375rem;line-height:1.45;color:var(--ink-2)}
@media (max-width:640px){.dash .gap-cta .btn{width:100%}}

/* ─── 7. Панель разделов на статьях уходит при чтении вниз ─── */
@media (max-width:1099px){
 .tabbar.is-away{transform:translateY(105%)}
 body.tabbar-away .reading-bar{bottom:max(12px,env(safe-area-inset-bottom))}
}
@media (max-width:1099px) and (prefers-reduced-motion:no-preference){
 .tabbar{transition:transform var(--d-2) var(--ease-apple)}
 .reading-bar{transition:bottom var(--d-2) var(--ease-apple)}
}

/* ─── 8. Хлебные крошки на телефоне: одна ссылка «назад» вместо одинокого «Главная» ─── */
@media (max-width:640px){
 .breadcrumb li{display:none}
 .breadcrumb li:nth-last-child(2){display:inline-flex}
 .breadcrumb li+li::before{content:none}
 .breadcrumb li:nth-last-child(2) a::before{content:'←';margin-right:6px}
}

/* ─── 9. Доверие: кто мы, чьи ролики, что будет после нажатия ─── */
.hero-who{margin:10px 0 0;max-width:46ch;font-size:1rem;line-height:1.45;color:var(--ink)}
.hero-who b{font-weight:800}
.dash:not([data-state=landing]) .hero-who{display:none}
/* Широкий экран: шапка разбора ниже, чтобы три плитки были видны сразу */
@media (min-width:1100px){
 .dash[data-state=results] .hero h1{font-size:clamp(2.4rem,1.2rem + 3vw,3.9rem)}
 .dash[data-state=results] .hero{padding-block:20px 16px}
 .dash:not([data-state=landing]) .stage-art{width:min(100%,230px)}
}

/* ─── 10. Без лишних подписей: один заголовок и одно действие на блок ─── */
.dash .hero-kicker{display:none}                       /* кто мы говорит строка под заголовком; на разборе ниша уже в заголовке */
#seg button small{display:none}                       /* пояснения «зашло 2 из 3»: есть итоговая строка и сами числа */
#sim-phase,.sim-meter{display:none}                   /* «Распределение завершено» и полоса длины текста: не нужны */
#sim-idea-help{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}   /* остаётся для экранных дикторов */
.kpi-plain{font-size:.875rem}
#sim-invitation{display:none}                         /* повторяет заголовок «Разберём вашу идею вместе» */
#sim-result:not(.is-counting) .sim-progress{display:none}   /* счётчик «1000 / 1000» нужен только пока идёт подсчёт */
.razbor .kpis .kpi-s{display:none}                     /* на странице ниши подпись плитки повторяет её название */

/* ─── 11. Аудит 20.10.2026: поиск по трём типам, сценарий → симулятор ─── */
.tool-hit .tool-hit-kind{font:600 .75rem/1.2 var(--font-text);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.tp-acts .btn{min-height:44px}
.gap-cards[data-n="1"]{grid-template-columns:minmax(0,1fr)!important}
/* С запросом в адресе шапка каталога компактная: выдача сразу на первом экране (аудит 4.1, «внутри инструмента компактнее») */
.listing-hero.is-compact{padding-block:clamp(18px,3vw,32px);min-height:0}
.listing-hero.is-compact .listing-art{display:none}
.listing-hero.is-compact h1{font-size:clamp(1.6rem,1.1rem + 2.4vw,3rem);hyphens:manual;-webkit-hyphens:manual}
.listing-hero.is-compact .hero-dek{display:none}
/* Профиль ниши и мир Рикко (22.10.2026): что делают в нише, сколько заявок в день, кто снимает; ведро с рыбой, колония, Жора.
   Разметка: templates/public/components/niche_profile.html и static/js/niche-profile.js (классы pf-*), static/js/world.js (мир).
   Без @layer, подключается после passport.css, как fx.css. Цвета и радиусы только из токенов tokens.css. */

/* ---------- профиль: три плитки ---------- */
.pf{display:block;min-width:0}
.pf-defs{position:absolute;width:0;height:0;overflow:hidden}
.pf-grid{display:grid;gap:var(--gap,16px);grid-template-columns:minmax(0,1fr);align-items:stretch}
.pf-card{display:grid;align-content:start;gap:14px;min-width:0;padding:clamp(22px,2.4vw,34px);border-radius:var(--tile-r,28px);background:var(--card);border:1px solid var(--rule)}
.pf-card[data-tint=mint]{background:var(--mint);border-color:transparent}
.pf-card[data-tint=butter]{background:var(--butter);border-color:transparent}
.pf-card[data-tint=rose]{background:var(--rose);border-color:transparent}
.pf-card[data-tint=lilac]{background:var(--lilac);border-color:transparent}
.pf-h{margin:0;font:700 var(--t-sm,.875rem)/1.3 var(--font-text);letter-spacing:0;color:var(--ink-2)}
.pf-big{margin:0;font:800 clamp(2.5rem,1.5rem + 3.6vw,4.5rem)/.95 var(--font-display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.pf-big .num{color:var(--action)}
.pf-big small{font-size:.3em;font-weight:700;letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
.pf-sub{margin:0;font-size:var(--t-sm,.875rem);line-height:1.45;color:var(--ink-2);max-width:32ch}
@media(min-width:900px){
 .pf-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);grid-template-areas:"do leads" "do share"}
 .pf-do{grid-area:do}.pf-leads{grid-area:leads}.pf-share{grid-area:share}
}

/* что делают в нише: четыре формата */
.pf-formats{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.pf-formats li{display:grid;gap:3px;padding:14px 16px 14px 52px;position:relative;border-radius:20px;background:color-mix(in oklab,var(--card) 72%,transparent)}
.pf-formats li::before{content:counter(pf);counter-increment:pf;position:absolute;left:14px;top:14px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--card);font:800 .8125rem/1 var(--font-text)}
.pf-formats{counter-reset:pf}
.pf-formats b{font:800 1.0625rem/1.25 var(--font-display);letter-spacing:-.02em}
.pf-formats span{font-size:var(--t-sm,.875rem);line-height:1.45;color:var(--ink-2)}
.pf-formats q{quotes:"«" "»";font-style:normal;font-size:var(--t-sm,.875rem);line-height:1.4;color:var(--action);font-weight:600}

/* вводная ниши: первый абзац карточки «Что делают» */
.pf-intro{margin:0;font-size:var(--t-sm,.875rem);line-height:1.5;color:var(--ink-2)}

/* путь заявки */
.pf-path{display:flex;flex-wrap:wrap;gap:6px 4px;margin:0;padding:0;list-style:none;font-size:.8125rem;line-height:1.3}
.pf-path li{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:999px;background:color-mix(in oklab,var(--card) 70%,transparent);font-weight:600;color:var(--ink)}
.pf-path li:not(:last-child)::after{content:"→";margin-left:4px;color:var(--action);font-weight:800}
.pf-path li:last-child{background:var(--ink);color:var(--card)}

/* ---------- ведро Рикко ---------- */
.pf-bucket{position:relative;width:100%;max-width:300px;aspect-ratio:360/244;justify-self:center;margin-bottom:22px}
.bucket-scene{display:block;width:100%;height:100%;overflow:visible}
.pf-leads .pf-bucket+.pf-path{position:relative;z-index:1}
.bucket-shadow{fill:color-mix(in oklab,var(--ink) 14%,transparent)}
.bucket-scene .ring{fill:none;stroke:color-mix(in oklab,var(--sky) 60%,var(--ink));stroke-width:2;transform-box:fill-box;transform-origin:center}

/* ---------- колония: кто снимает ---------- */
.pf-colony{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:6px 4px;width:100%;max-width:380px}
.pg{display:block;width:100%;height:auto;aspect-ratio:40/50;overflow:visible}
.pg{--pgb:#d9d3c4;--pgl:#ece7da;--pga:#d9d3c4;--pge:#f8f6f0}
.pg.on{--pgb:#232321;--pgl:#f3eedf;--pga:var(--accent);--pge:#fffaf0}
#pf-penguin .pg-body,.pg-body{fill:var(--pgb)}.pg-belly{fill:var(--pgl)}.pg-beak,.pg-foot{fill:var(--pga)}.pg-eye{fill:var(--pge)}
.pf-colony.is-in .pg.on{animation:pg-hop .62s var(--ease-out,cubic-bezier(.16,1,.3,1)) both;animation-delay:calc(var(--i)*38ms)}
@keyframes pg-hop{0%{transform:translateY(0)}38%{transform:translateY(-34%) rotate(-5deg)}70%{transform:translateY(0) rotate(2deg)}100%{transform:none}}

/* ---------- Жора ---------- */
.jora{display:block;width:100%;height:auto;overflow:visible}
.stage-world{position:absolute;z-index:2;right:-6%;bottom:-2%;width:36%;aspect-ratio:600/470;pointer-events:auto;cursor:pointer}
.stage-world:not(.is-ready){pointer-events:none}
.jora-say{position:absolute;left:-18%;top:-4%;max-width:9em;padding:.45em .8em;border:1.5px solid var(--ink);border-radius:16px 16px 4px 16px;background:var(--card);color:var(--ink);font:800 clamp(.8rem,.7rem + .4vw,1rem)/1.15 var(--font-display);letter-spacing:-.01em;white-space:nowrap;box-shadow:2px 3px 0 var(--ink);opacity:0;transform:translateY(8px) rotate(-3deg);transition:opacity .22s var(--ease-out,ease),transform .22s var(--ease-out,ease);pointer-events:none}
.jora-say.is-in{opacity:1;transform:translateY(0) rotate(-3deg)}
@media(max-width:700px){.stage-world{width:40%;right:-2%}}

/* Жора бежит по низу экрана: положение = прогресс чтения статьи */
.runner-lane{position:fixed;left:0;right:0;bottom:0;height:0;z-index:19;pointer-events:none}
.runner-jora{position:absolute;bottom:0;left:calc(var(--p,0) * (100% - 72px));width:72px;transition:left .12s linear}
.runner-jora .jora{width:100%;height:auto}
@media(max-width:700px){.runner-jora{width:56px;left:calc(var(--p,0) * (100% - 56px))}}
@media print{.runner-lane{display:none}}

/* Жора на странице ошибки */
.error-jora{width:min(46vw,240px);margin:0 auto}

@media(prefers-reduced-motion:reduce){.jora-say{transition:none}.pf-colony.is-in .pg.on{animation:none}.runner-jora{transition:none}}

/* пример разбора на первом экране главной: ниша, заявки в день, ведро */
.demo-card.demo-card--pf{grid-template-columns:minmax(0,1fr) minmax(0,300px);align-items:center}
.demo-card--pf .demo-big{flex-wrap:wrap;row-gap:.12em;white-space:normal}
.demo-card--pf .demo-big small{line-height:1.25}
.demo-card--pf .demo-bucket{margin:0;max-width:300px}
@media(max-width:700px){.demo-card.demo-card--pf{grid-template-columns:minmax(0,1fr);gap:10px;padding:16px}.demo-card--pf .demo-big{font-size:2.6rem}.demo-card--pf .demo-big small{font-size:.45em}.demo-card--pf .demo-bucket{width:150px;justify-self:center}}

/* ---------- Рикко живее: покачивание и поворот к курсору (ricco-alive.js) ---------- */
@property --sway{syntax:'<angle>';inherits:false;initial-value:0deg}
@property --tilt{syntax:'<angle>';inherits:false;initial-value:0deg}
@media(prefers-reduced-motion:no-preference){
 .stage-ricco,.plan-art,.gap-art,.closing-art{--tilt:0deg;rotate:calc(var(--tilt) + var(--sway));transform-origin:50% 94%;transition:--tilt .45s var(--ease-out,cubic-bezier(.16,1,.3,1))}
 .stage-ricco{animation:ricco-sway 6.5s ease-in-out infinite}
 .plan-art,.gap-art,.closing-art{animation:ricco-sway 7.5s ease-in-out infinite}
 .stage-ricco.is-swapping{animation:ricco-in var(--d-4,.4s) var(--ease-out,ease)}
}
@keyframes ricco-sway{0%,100%{--sway:-.9deg}50%{--sway:.9deg}}

/* ---------- Статичный Рикко в подвале и полоса рыб ---------- */
.footer-pitch{grid-template-columns:96px minmax(0,1fr);align-items:center;gap:12px 16px;max-width:40ch}
.footer-ricco{grid-column:1;grid-row:1 / 3;width:96px;height:96px;object-fit:contain}
.footer-pitch>p,.footer-pitch>.ui-action{grid-column:2}
.fish-lane{position:relative;height:84px;overflow:hidden;pointer-events:none}
.fish-lane svg{display:block;width:100%;height:100%}
@media(max-width:700px){.footer-pitch{grid-template-columns:72px minmax(0,1fr);gap:12px}.footer-ricco{width:72px;height:72px}}
.dash:not([data-state=landing]) .fish-lane{display:none}
html[data-boot] .fish-lane{display:none}
