/* ============================================================
   TOVIAN · Кабинет — НОВЫЙ КОНЦЕПТ (app-like)
   Модель: хранилище отчётов killer-features + баланс токенов.
   Namespace .kc*  ·  тёмная тема, лайм-акцент.
   ============================================================ */
:root{
  --bg:#070809; --bg-2:#0b0c10; --card:#101117; --card-2:#14151c;
  --ink:#eef1e8; --muted:rgba(238,241,232,.56); --faint:rgba(238,241,232,.50);
  --line:rgba(255,255,255,.10); --line-2:rgba(255,255,255,.06);
  --lime:#a8e80c; --lime-2:#bdf52e; --ink-on-lime:#0a0b0a;
  --warn:#e6a23c; --ok:#8fd429; --risk:#ef6a56;
  --glass:rgba(255,255,255,.05); --glass-2:rgba(255,255,255,.02);
  --kb-gap:clamp(20px,2.4vw,30px); --kb-top:clamp(24px,2.6vw,34px); --kb-side:clamp(20px,2.6vw,40px);
  --track:rgba(255,255,255,.07);
  --ease:cubic-bezier(.16,1,.3,1);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{min-height:100%;}
/* overflow-x:clip, А НЕ hidden (07.09): `hidden` по одной оси заставляет вторую посчитаться
   как `auto`, и тогда БОДИ становится прокрутчиком, который никогда не прокручивается —
   а все `position:sticky` внутри кабинета молча перестают липнуть (нашлось на плашке
   подборки поиска). `clip` гасит горизонталь ровно так же, но прокрутчика не создаёт. */
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:clip;}
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(56% 40% at 88% -4%, rgba(168,232,12,.09), transparent 56%),
    radial-gradient(48% 42% at -4% 104%, rgba(168,232,12,.05), transparent 58%),
    linear-gradient(180deg,#090a0d 0%,#070809 42%,#050608 100%);}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.4;mix-blend-mode:overlay;background-image:var(--grain);background-size:200px;}
button{font-family:inherit;cursor:pointer;}
a{color:inherit;}
.tnum{font-variant-numeric:tabular-nums;}
.star{display:inline-block;width:.92em;height:.92em;vertical-align:-.1em;flex:0 0 auto;background:var(--lime);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12 6 18 12 24 12C18 12 12 18 12 24C12 18 6 12 0 12C6 12 12 6 12 0Z' fill='black'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12 6 18 12 24 12C18 12 12 18 12 24C12 18 6 12 0 12C6 12 12 6 12 0Z' fill='black'/%3E%3C/svg%3E") center/contain no-repeat;}

/* ============ SHELL ============ */
#kb-root{--kbcss:1;} /* сентинел для kabinet.js: «стили применены» — раскрытие body ждёт его */
.app{display:grid;grid-template-columns:246px 1fr;min-height:100dvh;}
/* ЛЕВАЯ ЧАСТЬ ПЕРЕСОБРАНА 06.09.2026 (решение владельца): иконочный рейл 78px читался
   только по тултипам и не держал шесть разделов — стал подписанный сайдбар 246px
   с двумя зонами «работа» и «аккаунт». Стилевой язык не менялся: те же переменные,
   лаймовая заливка активного пункта, скоба слева, тот же логотип сверху.
   Счётчики у пунктов (проекты, отчёты, токены) — вместо отдельных плашек баланса:
   информация там, где нужна, без второго блока. */
.rail{position:sticky;top:0;height:100dvh;z-index:50;display:flex;flex-direction:column;align-items:stretch;gap:2px;
  padding:20px 14px 18px;border-right:1px solid rgba(255,255,255,.085);
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.018) 46%,rgba(255,255,255,.014));
  box-shadow:1px 0 0 rgba(0,0,0,.5);}
.rail__nav{display:flex;flex-direction:column;align-items:stretch;gap:2px;width:100%;}
.rail__gr{margin:16px 0 6px;padding:0 10px;font-family:'Space Grotesk',sans-serif;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(238,241,232,.32);}
.rail__gr:first-child{margin-top:0;}
.rnav{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:46px;padding:0 12px;border:0;border-radius:13px;background:transparent;color:var(--faint);cursor:pointer;text-align:left;
  font-family:'Space Grotesk',sans-serif;font-size:14.5px;letter-spacing:-.01em;text-transform:lowercase;
  transition:background .25s var(--ease),color .25s var(--ease);}
.rnav svg{width:20px;height:20px;flex:0 0 auto;}
.rnav__t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rnav__n{flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:grid;place-items:center;
  font-size:11px;font-variant-numeric:tabular-nums;background:var(--glass);color:rgba(238,241,232,.66);}
.rnav:hover{background:var(--glass);color:var(--ink);}
/* АКТИВНЫЙ ПУНКТ — БЕЗ ГРАФИТОВОЙ ПЛАШКИ (07.09, владелец: «убрать графит плашку, оставить
   как ховер: значок лайм, текст белый, без плашки»). Признак «вы здесь» несут лаймовый значок,
   белый текст и лаймовая полоска слева; заливка осталась только у ховера. */
.rnav.on{background:transparent;color:var(--ink);box-shadow:none;}
.rnav.on svg{color:var(--lime);}
.rnav.on .rnav__n{background:rgba(255,255,255,.08);color:var(--lime);}
.rnav.on::before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:3px;height:24px;border-radius:0 3px 3px 0;background:var(--lime);box-shadow:0 0 12px 1px rgba(168,232,12,.7);}
.rnav__tip{display:none;position:absolute;left:58px;top:50%;transform:translateY(-50%) translateX(-6px);white-space:nowrap;z-index:70;
  padding:6px 11px;border-radius:9px;background:var(--card-2);border:1px solid var(--line);color:var(--ink);
  font-family:'Space Grotesk',sans-serif;font-size:12px;text-transform:lowercase;pointer-events:none;
  opacity:0;transition:opacity .2s var(--ease),transform .2s var(--ease);box-shadow:0 12px 30px rgba(0,0,0,.5);}
.rnav:hover .rnav__tip{opacity:1;transform:translateY(-50%);}
.rail__sp{flex:1 1 auto;}
/* аватар в рейле не дублируем — на десктопе всегда виден чип профиля в шапке */
.rail__av{width:44px;height:44px;display:none;place-items:center;flex:0 0 auto;border-radius:14px;border:1px solid var(--line);position:relative;overflow:hidden;
  background:linear-gradient(140deg,#1b1d24,#101117);color:var(--ink);font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:17px;
  transition:border-color .25s var(--ease),transform .2s;}
.rail__av:hover{border-color:rgba(168,232,12,.4);transform:translateY(-2px);}

.main{min-width:0;padding:var(--kb-top) var(--kb-side) 60px;}
/* первый блок любой вкладки не добавляет своего верхнего отступа — шаг задаёт --kb-top */
.view>*:first-child{margin-top:0;}

/* ============ TOPBAR ============ */
.top{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:20px;position:relative;}
.top__id{display:flex;align-items:center;gap:11px;padding:7px 14px 7px 8px;border-radius:999px;border:1px solid var(--line-2);min-width:238px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),transparent),var(--card);transition:border-color .25s var(--ease);}
.top__id:hover{border-color:rgba(168,232,12,.35);}
.top__av{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;flex:0 0 auto;position:relative;overflow:hidden;
  background:linear-gradient(140deg,#1b1d24,#101117);color:var(--lime);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);}
.top__idmeta{display:flex;flex-direction:column;gap:1px;min-width:0;max-width:min(60vw,620px);text-align:left;}
.top__name{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;letter-spacing:-.01em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.top__status{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:100%;font-family:'Space Grotesk',sans-serif;font-size:11px;color:var(--muted);}
.top__sline{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.top__dot{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px rgba(168,232,12,.1);}
.top__caret{width:15px;height:15px;color:var(--faint);margin-left:2px;transition:transform .25s var(--ease);flex:0 0 auto;}
.top__id.is-open .top__caret{transform:rotate(180deg);}
.top__title{margin-left:6px;min-width:0;}
.top__h{font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:clamp(19px,1.8vw,24px);letter-spacing:-.03em;color:var(--ink);line-height:1;}
.top__sub{font-family:'Space Grotesk',sans-serif;font-size:11.5px;letter-spacing:.02em;color:var(--faint);margin-top:4px;}
.top__sp{flex:1 1 auto;}
.iconbtn{width:44px;height:44px;border-radius:999px;border:1px solid var(--line-2);background:var(--glass-2);color:var(--muted);display:grid;place-items:center;position:relative;
  transition:border-color .25s var(--ease),color .25s;}
.iconbtn:hover{border-color:rgba(168,232,12,.4);color:var(--ink);}
/* открытый колокольчик: только лаймовый край. Круг НЕ МОРФИТСЯ в квадрат (13.09,
   владелец: «у этой плашки и у колокольчика не было такого странного сворачивания кругом»). */
.iconbtn.is-open{border-color:rgba(168,232,12,.55);color:var(--ink);}
.iconbtn svg{width:19px;height:19px;}
.iconbtn__dot{position:absolute;top:10px;right:11px;width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 2px rgba(9,11,15,.9);}

/* profile menu */
/* МЕНЮ ПРОФИЛЯ — ТИХИЙ ВЫПАДАЮЩИЙ СПИСОК (13.09, владелец обвёл открытое меню:
   «у этой плашки и у колокольчика не было такого странного сворачивания кругом»).
   БЫЛО: закрытое состояние — пилюля (`border-radius:999px`, `max-height:0`, паддинг 0),
   и панель на глазах стягивалась в круглый облызок за .4s — длинный морф радиуса и отступов
   на каждом открытии. СТАЛО: радиус и отступы ПОСТОЯННЫЕ, меню проявляется сдвигом
   на 6 px за .2s (пункты по-прежнему приходят со стаггером ниже).
   ЗАКРЫТИЕ БЕЗ АНИМАЦИИ (13.09, владелец: «появление хорошее, а вот сворачивание без анимации
   может?»): переход живёт ТОЛЬКО на состоянии `.is-on` — браузер берёт transition из ЦЕЛЕВОГО
   состояния, поэтому добавление класса анимируется, а снятие (transition:none в базе) гасит мгновенно. */
.pmenu{position:absolute;z-index:90;top:56px;left:0;min-width:238px;max-width:min(700px,92vw);padding:8px;border-radius:20px;border:1px solid var(--line);
  background:linear-gradient(180deg,#1a1c22,#0e0f13);box-shadow:0 24px 60px -20px rgba(0,0,0,.8),inset 0 1px 0 rgba(255,255,255,.05);
  overflow:hidden;opacity:0;visibility:hidden;transform:translateY(-6px);transition:none;}
.pmenu.is-on{opacity:1;visibility:visible;transform:none;transition:opacity .2s var(--ease),transform .22s var(--ease);}
.pmenu>*{opacity:0;transform:translateY(-7px);}
.pmenu.is-on>*{opacity:1;transform:none;}
/* закрытие мгновенное: задержки стаггера стоят только на открытом состоянии */
.pmenu.is-on>*:nth-child(1){transition-delay:.08s}
.pmenu.is-on>*:nth-child(2){transition-delay:.13s}
.pmenu.is-on>*:nth-child(3){transition-delay:.18s}
.pmenu.is-on>*:nth-child(4){transition-delay:.22s}
.pmenu.is-on>*:nth-child(5){transition-delay:.26s}
.top__id.is-open{border-color:rgba(168,232,12,.45);}
.pmenu__id{display:flex;align-items:center;gap:11px;padding:10px 10px 12px;border-bottom:1px solid var(--line-2);margin-bottom:6px;}
.pmenu__av{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;position:relative;overflow:hidden;background:linear-gradient(140deg,var(--lime),#8bd406);color:var(--ink-on-lime);font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:16px;}
.pmenu__n{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;color:var(--ink);}
.pmenu__s{font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--muted);margin-top:2px;}
.pmenu__i{display:flex;align-items:center;gap:12px;width:100%;padding:11px 12px;border:0;border-radius:11px;background:transparent;color:var(--ink);text-decoration:none;
  font-family:'Space Grotesk',sans-serif;font-size:13.5px;text-align:left;text-transform:lowercase;transition:background .18s var(--ease);}
.pmenu__i svg{width:17px;height:17px;color:var(--muted);flex:0 0 auto;}
.pmenu__i:hover{background:var(--glass);transition-delay:0s;}
.pmenu__i:hover svg{color:var(--lime);}
/* stagger пунктов — ПОСЛЕ .pmenu__i, иначе shorthand transition у пунктов перебивает появление;
   появление живёт на `.is-on`, в базе остаётся только фон под ховер — закрытие без анимации */
.pmenu>.pmenu__i,.pmenu>.pmenu__sep{transition:background .18s var(--ease);}
.pmenu.is-on>.pmenu__i,.pmenu.is-on>.pmenu__sep{transition:opacity .3s var(--ease),transform .34s var(--ease),background .18s var(--ease);}
.pmenu__i--danger{color:#f0917f;}.pmenu__i--danger svg{color:#e8705a;}
.pmenu__i--danger:hover{background:rgba(232,112,90,.1);}
.pmenu__sep{height:1px;margin:6px 8px;background:var(--line-2);}

/* ============ VIEWS ============ */
.view[hidden]{display:none;}
@media(prefers-reduced-motion:no-preference){.view:not([hidden]){animation:vfade .34s var(--ease);}}
@keyframes vfade{from{opacity:0;transform:translateY(8px);}}
/* кнопка «назад» — возврат на страницу, с которой вошли в кабинет (рисует kabinet.js) */
.kbback-slot{margin:0 0 var(--kb-gap);}
.kbback{display:inline-flex;align-items:center;gap:5px;padding:5px 11px 5px 8px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);text-decoration:none;
  font-family:'Space Grotesk',sans-serif;font-size:11.5px;letter-spacing:.01em;text-transform:lowercase;color:var(--lime);
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease),transform .2s var(--ease);}
.kbback:hover{border-color:var(--lime);background:rgba(168,232,12,.08);color:var(--lime-2);transform:translateX(-2px);}
.kbback:focus-visible{outline:2px solid var(--lime);outline-offset:3px;}
.kbback svg{width:12px;height:12px;flex:0 0 auto;}
/* на мобильном стрелка «назад» уже есть в верхней панели — пилюлю прячем */
@media(max-width:860px){.kbback-slot{display:none!important;}}
.ph{margin:0 0 var(--kb-gap);}
.ph__k{display:inline-flex;align-items:center;gap:8px;font-family:'Space Grotesk',sans-serif;font-size:12px;text-transform:lowercase;letter-spacing:.02em;color:var(--faint);}
/* ИМЯ ЭКРАНА — КИКЕР (14.09, по дашборду и замечанию верификатора «половина паттерна»):
   в кабинете человек и так видит по рельсу, где стоит, поэтому имя звучит подписью раздела,
   а описание остаётся ТОЛЬКО там, где несёт правило, которого на экране нет (срок хранения,
   цена шага). Одна система шапок на все экраны. */
.ph__t{margin:0;font:500 12.5px/1.1 'Space Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);}
.ph__d{margin:8px 0 0;max-width:62ch;font-size:12.8px;line-height:1.5;color:var(--muted);}
.sectitle{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:var(--kb-gap) 0 13px;}
.sectitle__t{font-family:'Space Grotesk',sans-serif;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);}
.sectitle__a{font-family:'Space Grotesk',sans-serif;font-size:12.5px;text-transform:lowercase;color:var(--lime);border:0;background:transparent;display:inline-flex;align-items:center;gap:6px;}
.sectitle__a svg{width:14px;height:14px;}

/* ============ HERO ============ */
.hero{display:grid;grid-template-columns:minmax(320px,1.05fr) minmax(0,1fr);gap:16px;margin-bottom:16px;align-items:stretch;}
.balcard{position:relative;overflow:hidden;border-radius:24px;padding:24px 26px;isolation:isolate;border:1px solid rgba(168,232,12,.14);color:#fff;
  background:linear-gradient(150deg,#161922 0%,#0e1014 52%,#0a0b0e 100%);box-shadow:0 26px 60px -34px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.06);}
.balcard__glow{position:absolute;z-index:-1;right:-34%;bottom:-76%;width:86%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(168,232,12,.16),rgba(168,232,12,.04) 46%,transparent 70%);filter:blur(12px);}
.balcard__grain{position:absolute;inset:0;z-index:-1;opacity:.5;mix-blend-mode:overlay;background-image:var(--grain);background-size:180px;}
.balcard__top{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.balcard__brand{display:inline-flex;align-items:center;gap:8px;font-family:'Space Grotesk',sans-serif;font-size:12px;letter-spacing:.02em;text-transform:lowercase;color:rgba(255,255,255,.7);}
.balcard__brand .star{filter:none;}
.balcard__chip{width:34px;height:26px;border-radius:6px;background:linear-gradient(135deg,#d9e39a,#a8b06a);position:relative;opacity:.9;}
.balcard__chip::after{content:"";position:absolute;inset:6px 0;border-top:1px solid rgba(0,0,0,.22);border-bottom:1px solid rgba(0,0,0,.22);}
.balcard__num{display:flex;align-items:baseline;gap:12px;margin-top:24px;}
.balcard__n{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(50px,6vw,70px);line-height:.82;letter-spacing:-.04em;color:var(--lime);}
.balcard__u{font-family:'Space Grotesk',sans-serif;font-size:14px;text-transform:lowercase;color:rgba(255,255,255,.62);}
.balcard__trial{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap;}
.balcard__pill{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:rgba(255,255,255,.8);}
.balcard__pill b{color:var(--lime);font-weight:600;}
.balcard__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;}
.balcard__spend{font-family:'Space Grotesk',sans-serif;font-size:11px;color:rgba(255,255,255,.5);max-width:24ch;line-height:1.4;}

.kpis{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:14px;min-width:0;}
.kpi{position:relative;overflow:hidden;border-radius:20px;padding:18px 20px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;
  border:1px solid var(--line-2);background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 44%),var(--card);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 16px 40px -32px #000;
  transition:border-color .3s var(--ease),transform .25s var(--ease),box-shadow .3s;}
.kpi:hover{border-color:rgba(168,232,12,.28);transform:translateY(-2px);box-shadow:0 22px 46px -30px #000,0 0 30px -8px rgba(168,232,12,.14);}
.kpi__top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.kpi__k{font-family:'Space Grotesk',sans-serif;font-size:11.5px;text-transform:lowercase;color:var(--faint);}
.kpi__ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--glass);color:var(--muted);}
.kpi__ic svg{width:16px;height:16px;}
.kpi__n{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(30px,3.2vw,42px);line-height:1;letter-spacing:-.04em;color:var(--ink);margin-top:12px;}
.kpi:hover .kpi__n{color:var(--lime);}
.kpi__d{font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--muted);margin-top:6px;}

/* ============ TOOL TILES (killer features) ============ */
.tools{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.tool{display:flex;flex-direction:column;padding:20px;border-radius:20px;text-decoration:none;position:relative;overflow:hidden;
  border:1px solid var(--line-2);background:var(--card);transition:border-color .3s var(--ease),transform .25s var(--ease),box-shadow .3s;}
.tool--live{border-color:rgba(168,232,12,.2);background:linear-gradient(160deg,rgba(168,232,12,.06),transparent 56%),var(--card);}
.tool--live:hover{border-color:rgba(168,232,12,.5);transform:translateY(-3px);box-shadow:0 0 34px -8px rgba(168,232,12,.22);}
.tool--soon{opacity:.66;}
.tool__top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.tool__ic{width:46px;height:46px;border-radius:13px;flex:0 0 auto;display:grid;place-items:center;background:linear-gradient(160deg,rgba(168,232,12,.16),rgba(168,232,12,.05));color:var(--lime);border:1px solid rgba(168,232,12,.22);}
.tool--soon .tool__ic{background:var(--glass);color:var(--muted);box-shadow:none;}
.tool__ic svg{width:23px;height:23px;}
.tool__cost{font-family:'Space Grotesk',sans-serif;font-size:10.5px;font-weight:600;text-transform:lowercase;color:var(--lime);border:1px solid rgba(168,232,12,.3);border-radius:999px;padding:5px 10px;white-space:nowrap;}
.tool--soon .tool__cost{color:var(--faint);border-color:var(--line-2);}
.tool__t{margin-top:16px;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:17px;letter-spacing:-.02em;color:var(--ink);}
.tool__d{margin-top:6px;font-size:12.5px;line-height:1.45;color:var(--muted);flex:1;}
.tool__foot{margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.tool__use{font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--faint);}
.tool__use b{color:var(--ink);font-weight:600;}
.tool__go{display:inline-flex;align-items:center;gap:7px;font-family:'Space Grotesk',sans-serif;font-size:12.5px;font-weight:600;text-transform:lowercase;color:var(--lime);}
.tool__go svg{width:14px;height:14px;transition:transform .25s var(--ease);}
.tool--live:hover .tool__go svg{transform:translate(2px,-2px);}

/* ============ REPORTS ============ */
.two{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,1fr);gap:16px;align-items:start;margin-top:26px;}
.klist{display:flex;flex-direction:column;gap:12px;}
.rep{position:relative;border:1px solid var(--line-2);border-radius:18px;overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.028),transparent 34%),var(--card);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 16px 40px -32px #000;
  transition:border-color .3s var(--ease),box-shadow .3s;}
.rep:hover{border-color:rgba(168,232,12,.24);box-shadow:0 22px 46px -30px #000,0 0 30px -10px rgba(168,232,12,.12);}
/* плашка отчёта кликабельна целиком (кнопка в подвале остаётся как подсказка) */
.rep.is-tap{cursor:pointer;}
.rep.is-tap:hover{border-color:rgba(168,232,12,.4);}
.rep.is-tap:focus-visible{outline:2px solid var(--lime);outline-offset:3px;}
.rep.dead{opacity:.58;transition:opacity .25s var(--ease);}
.rep.dead:hover,.rep.dead:focus-within{opacity:.9;}
.rep.dead .rep__foot .mini{border-color:var(--line);}
.rep.dead .rep__foot .mini:hover{color:var(--lime);border-color:rgba(168,232,12,.5);background:rgba(168,232,12,.08);}
.rep__bar{position:absolute;left:0;top:16px;bottom:16px;width:3px;border-radius:0 3px 3px 0;}
.rep__bar.ok{background:var(--lime);box-shadow:0 0 12px rgba(168,232,12,.4);}
.rep__bar.mid{background:var(--warn);}.rep__bar.high{background:var(--risk);}.rep__bar.proc{background:rgba(238,241,232,.16);box-shadow:none;}
/* воздух в карточке отчёта был неровным: сверху 16, под текстом 12 — текст жался к верху */
.rep__h{display:flex;align-items:flex-start;gap:14px;padding:18px 18px 16px;}
.rep__ic{width:42px;height:42px;border-radius:12px;flex:0 0 auto;display:grid;place-items:center;background:var(--glass);color:var(--lime);}
.rep__ic svg{width:20px;height:20px;}
.rep__m{min-width:0;flex:1;}
.rep__tool{font-family:'Space Grotesk',sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);}
.rep__t{font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:15.5px;letter-spacing:-.02em;color:var(--ink);line-height:1.2;margin-top:3px;}
.rep__sum{font-family:'Space Grotesk',sans-serif;font-size:13px;color:var(--muted);margin-top:6px;}
.rep__sum b{color:var(--lime);font-weight:600;}
.rep__meta{margin-top:8px;display:flex;flex-wrap:wrap;gap:5px 15px;font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--faint);}
.rep__meta b{color:var(--muted);font-weight:600;}
.rep__foot{display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:8px 18px 18px;}
.rep__foot .cd{margin-right:auto;}

.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;font-family:'Space Grotesk',sans-serif;font-size:11px;text-transform:lowercase;white-space:nowrap;border:1px solid var(--line-2);background:var(--glass);color:var(--muted);flex:0 0 auto;}
.chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;}
.chip--ok{color:var(--lime);border-color:rgba(168,232,12,.32);background:rgba(255,255,255,.04);}
.chip--mid{color:var(--warn);border-color:rgba(230,162,60,.3);background:rgba(230,162,60,.08);}
.chip--high{color:var(--risk);border-color:rgba(239,106,86,.32);background:rgba(239,106,86,.09);}
.chip--now{color:var(--lime);border-color:rgba(168,232,12,.3);background:rgba(168,232,12,.08);}
.chip--wait{color:var(--muted);border-color:var(--line);background:rgba(255,255,255,.045);}
.chip--dead{color:var(--faint);border-color:var(--line-2);background:transparent;}

.cd{display:inline-flex;align-items:center;gap:8px;font-family:'Space Grotesk',sans-serif;font-size:12px;color:var(--muted);}
.cd b{color:var(--ink);font-weight:600;}
.cd.warn b{color:var(--muted);}
.cd.dead b{color:var(--muted);}
.cd__bar{width:58px;height:5px;border-radius:3px;background:var(--track);overflow:hidden;}
/* всё состояние несёт САМА линия слева от цифр, текст всегда спокойный:
   лайм — срока много, амбер — ≤10 дней, коралл — ≤3, серый — срок вышел.
   КОЛЕЯ тоже тонируется: когда дней мало, залитая часть узкая — без тона цвет не был бы виден */
.cd__fill{height:100%;border-radius:3px;background:var(--lime);transition:background .3s var(--ease);}
.cd__bar{background:rgba(168,232,12,.16);}
.cd b{color:var(--muted);}
.cd.warn .cd__fill{background:var(--warn);}
.cd.warn .cd__bar{background:rgba(232,178,58,.2);}
.cd.soon .cd__fill{background:var(--risk);}
.cd.soon .cd__bar{background:rgba(239,106,86,.22);}
.cd.dead .cd__fill{background:rgba(238,241,232,.2);}
.cd.dead .cd__bar{background:var(--track);}

.mini{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:999px;text-decoration:none;border:1px solid var(--line);background:var(--glass);color:var(--ink);
  font-family:'Space Grotesk',sans-serif;font-size:12.5px;text-transform:lowercase;transition:border-color .25s var(--ease),background .25s;}
/* недоступное действие (например проверка продавца Taobao): вид кнопки, но без клика */
.mini.is-off{color:var(--faint);border-style:dashed;border-color:var(--line-2);background:none;cursor:default;}
.mini.is-off:hover{border-color:var(--line-2);background:none;}
.mini svg{width:14px;height:14px;}
.mini:hover{border-color:rgba(168,232,12,.45);background:rgba(168,232,12,.06);}
.mini.lime{background:var(--lime);color:var(--ink-on-lime);border-color:transparent;font-weight:600;box-shadow:0 8px 18px -12px rgba(168,232,12,.28);}
.mini.lime:hover{background:var(--lime-2);}
.mini.danger:hover{border-color:rgba(232,112,90,.5);color:#e8705a;background:rgba(232,112,90,.08);}
.mini[disabled]{opacity:.4;pointer-events:none;}

/* filter segment */
.seg{display:inline-flex;padding:4px;border-radius:999px;background:var(--glass-2);border:1px solid var(--line-2);gap:2px;max-width:100%;overflow-x:auto;scrollbar-width:none;}
.seg::-webkit-scrollbar{display:none;}
.seg button{border:0;background:transparent;color:var(--muted);border-radius:999px;padding:9px 16px;font-family:'Space Grotesk',sans-serif;font-size:12.5px;text-transform:lowercase;white-space:nowrap;flex:0 0 auto;
  display:inline-flex;align-items:center;gap:7px;transition:color .25s var(--ease),background .25s;}
.seg button .c{font-family:'Space Grotesk',sans-serif;font-size:11px;font-weight:600;color:var(--faint);}
.seg button.on{background:var(--lime);color:var(--ink-on-lime);font-weight:600;}
.seg button.on .c{color:rgba(10,11,10,.5);}

/* compact recent row */
.rrow{display:flex;align-items:center;gap:13px;padding:13px;border-radius:14px;border:1px solid transparent;text-align:left;width:100%;background:transparent;transition:background .2s var(--ease),border-color .2s;}
.rrow:hover{background:var(--glass-2);border-color:var(--line-2);}
.rrow__ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;background:var(--glass);color:var(--lime);}
.rrow__ic svg{width:18px;height:18px;}
.rrow__b{min-width:0;flex:1;display:flex;flex-direction:column;}
.rrow__n{font-family:'Space Grotesk',sans-serif;font-size:13.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rrow__m{font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--faint);margin-top:2px;}

/* panel wrapper */
.panel{border-radius:20px;border:1px solid var(--line-2);overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.028),transparent 30%),var(--card);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 20px 50px -34px #000;}
.panel__h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px 12px;}
.panel__t{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;color:var(--ink);}
.panel__c{min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:rgba(230,162,60,.16);color:var(--warn);font-family:'Space Grotesk',sans-serif;font-size:11.5px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;}
.panel__b{padding:2px 10px 12px;}
.exp{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;transition:background .2s var(--ease);}
.exp:hover{background:var(--glass-2);}
.exp__ic{width:38px;height:38px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:12px;background:rgba(230,162,60,.12);color:var(--warn);}
.exp__b{min-width:0;flex:1;display:flex;flex-direction:column;}
.exp__n{font-family:'Space Grotesk',sans-serif;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.exp__m{font-family:'Space Grotesk',sans-serif;font-size:11px;color:var(--faint);margin-top:2px;}
.exp__l{font-family:'Space Grotesk',sans-serif;font-size:11.5px;font-weight:600;color:var(--warn);flex:0 0 auto;}
.empty{padding:26px 16px;text-align:center;font-family:'Space Grotesk',sans-serif;font-size:13px;color:var(--muted);}

/* ============ TOKENS ============ */
.scr2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;}
.card{border:1px solid var(--line-2);border-radius:18px;padding:clamp(18px,2vw,22px);background:linear-gradient(180deg,rgba(255,255,255,.028),transparent 30%),var(--card);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 16px 40px -32px #000;}
.card__k{font-family:'Space Grotesk',sans-serif;font-size:12px;text-transform:lowercase;color:var(--faint);}
.bigbal{display:flex;align-items:baseline;gap:12px;margin-top:10px;}
.bigbal__n{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(48px,7vw,72px);line-height:.9;letter-spacing:-.04em;color:var(--lime);}
.bigbal__u{font-family:'Space Grotesk',sans-serif;font-size:14px;color:var(--muted);}
.trial{display:flex;flex-direction:column;gap:10px;margin-top:10px;}
.trow{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 18px;border:1px solid var(--line-2);border-radius:14px;background:var(--glass);}
.trow__k{font-family:'Space Grotesk',sans-serif;font-size:14px;color:var(--ink);text-transform:lowercase;}
.trow__v{font-family:'Space Grotesk',sans-serif;font-size:13px;color:var(--muted);}
.trow__v b{font-size:21px;font-weight:700;color:var(--lime);}
.cnote{display:flex;gap:9px;align-items:flex-start;margin-top:14px;font-family:'Space Grotesk',sans-serif;font-size:12.5px;line-height:1.55;color:var(--muted);}
.cnote b{color:var(--ink);font-weight:600;}.cnote code{color:var(--lime);}
.cnote>:first-child{flex:none;display:flex;align-items:center;height:calc(12.5px*1.55);}
.packs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:6px;}
@media(max-width:1080px){.packs{grid-template-columns:repeat(2,minmax(0,1fr));}}
.pack{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;
  border:1px solid var(--line);border-radius:16px;padding:31px 16px 16px;
  background:linear-gradient(180deg,rgba(255,255,255,.022),transparent 42%),var(--card);color:var(--ink);
  transition:border-color .25s var(--ease),background .25s,transform .2s,box-shadow .3s;}
.pack:hover{border-color:rgba(168,232,12,.4);transform:translateY(-2px);}
.pack.on{border-color:var(--lime);background:var(--lime);color:var(--ink-on-lime);box-shadow:0 24px 48px -30px rgba(168,232,12,.55);}
/* бейдж нахлёстывается на рамку (top:-1px вместо 0): при выбранном пакете
   иначе сверху просвечивала лаймовая полоска бордюра и чёрная плашка казалась отдельно висящей.
   Поэтому у .pack СНЯТ overflow:hidden — он обрезал бейдж по внутреннему краю рамки. */
.pack__tag{position:absolute;top:-1px;left:50%;transform:translateX(-50%);z-index:2;font-family:'Space Grotesk',sans-serif;font-size:10px;font-weight:600;letter-spacing:.01em;text-transform:lowercase;color:var(--ink-on-lime);background:var(--lime);padding:5px 11px 4.5px;border-radius:0 0 9px 9px;letter-spacing:.02em;white-space:nowrap;}
.pack__tick{position:absolute;top:11px;right:12px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:var(--ink-on-lime);background:var(--lime);opacity:0;transform:scale(.5);transition:opacity .2s var(--ease),transform .3s var(--ease);}
.pack__tick svg{width:12px;height:12px;}
.pack.on .pack__tick{opacity:1;transform:none;}
.pack__n{font-family:'Space Grotesk',sans-serif;font-size:40px;font-weight:700;line-height:.92;letter-spacing:-.045em;color:var(--ink);transition:color .25s var(--ease);}
.pack.on .pack__n{color:var(--ink-on-lime);}
.pack.on .pack__u{color:rgba(10,11,10,.66);}
.pack.on .pack__p{color:var(--ink-on-lime);}
.pack.on .pack__was{color:rgba(10,11,10,.5);}
.pack.on .pack__save{color:var(--ink-on-lime);border-color:rgba(10,11,10,.28);background:rgba(10,11,10,.06);}
.pack.on .pack__rate{color:rgba(10,11,10,.6);}
.pack.on .pack__div{background:rgba(10,11,10,.16);}
.pack.on .pack__tick{background:rgba(10,11,10,.9);color:var(--lime);}
.pack.on .pack__tag{background:rgba(10,11,10,.9);color:var(--lime);}
.pack__u{font-family:'Space Grotesk',sans-serif;font-size:12px;color:var(--muted);text-transform:lowercase;margin-top:3px;}
.pack__div{align-self:stretch;height:1px;background:var(--line-2);margin:15px 0 13px;}
.pack__p{display:flex;align-items:baseline;gap:8px;font-family:'Space Grotesk',sans-serif;font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--ink);}
.pack__save{font-style:normal;font-family:'Space Grotesk',sans-serif;font-size:10.5px;font-weight:600;color:var(--lime);border:1px solid rgba(168,232,12,.32);border-radius:999px;padding:2px 7px;letter-spacing:.01em;}
.pack__was{font-family:'Space Grotesk',sans-serif;font-size:12px;font-weight:500;color:var(--faint);text-decoration-thickness:1px;}
.pack__rate{font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--faint);margin-top:7px;}
/* «на сколько хватит» — то, по чему на самом деле выбирают пакет */
.pack__use{margin-top:9px;padding-top:9px;border-top:1px solid var(--line-2);align-self:stretch;font-size:11.8px;line-height:1.4;color:var(--muted);text-wrap:pretty;}
.pack.on .pack__use{color:rgba(10,11,10,.78);border-top-color:rgba(10,11,10,.16);}
/* помеченный пакет виден до выбора: лаймовый волосок и бейдж, но заливку берёт только выбранный */
.pack:has(.pack__tag){border-color:rgba(168,232,12,.34);}
/* СЕТКА ПАКЕТОВ ПО ШИРИНЕ ПЛИТЫ, А НЕ ОКНА (29.09, вопрос владельца «дизайн на 10/10?»): порог 1080 px считался
   от окна, а рельс съедает 68–210 px — на 924 плита 790 px вмещала три пакета, но получала два, и «пополнить»
   уезжала на 700 px вниз. Теперь три колонки от 700 px ширины плиты, иначе две; на телефоне — прежний
   столбик (правило ниже). */
#kb-root [data-view="tokens"] .card:has(>.packs){container:tkpacks / inline-size;}
@container tkpacks (min-width:700px){#kb-root [data-view="tokens"] .packs{grid-template-columns:repeat(3,minmax(0,1fr));}}
@container tkpacks (max-width:699.98px){#kb-root [data-view="tokens"] .packs{grid-template-columns:repeat(2,minmax(0,1fr));}}
#kb-root [data-view="tokens"] .pack__p{flex-wrap:wrap;row-gap:4px;}
/* ТЕЛЕФОН — ПРЕЖНИЙ СТОЛБИК (29.09, владелец: «на телефоне разве так лучше, чем лентой?»): в две колонки
   по 156 px цена ломалась на две строки, описание — на 3–4, выигрыш в высоте не стоил тесноты. */
@media(max-width:680px){#kb-root [data-view="tokens"] .packs{grid-template-columns:1fr;}}
/* ТЕЛЕФОН — ПАКЕТЫ БЕЗ ПОДЛОЖКИ (08.10, владелец: «плашка в плашке… убрал бы подложку, только плашки
   с токенами»): общая карточка вокруг столбика снимается, каждый пакет — сам себе плашка. */
@media(max-width:680px){#kb-root [data-view="tokens"] .card:has(>.packs){padding:0;border:0;border-radius:0;background:none;box-shadow:none;}}

.paybar{display:flex;align-items:center;justify-content:space-between;gap:14px 24px;flex-wrap:wrap;margin-top:18px;padding-top:18px;border-top:1px solid var(--line-2);}
.paybar__sum{display:flex;flex-direction:column;gap:3px;}
.paybar__sum>span{font-family:'Space Grotesk',sans-serif;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);}
.paybar__sum b{font-family:'Space Grotesk',sans-serif;font-size:28px;font-weight:700;letter-spacing:-.035em;color:var(--ink);line-height:1;}
.paybar__sum i{font-style:normal;font-family:'Space Grotesk',sans-serif;font-size:12.5px;color:var(--muted);}
.paybar .btn{min-width:232px;}
.paysum{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2);}
.paysum__k{font-family:'Space Grotesk',sans-serif;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);}
.paysum__v{font-family:'Space Grotesk',sans-serif;font-size:24px;font-weight:700;letter-spacing:-.03em;color:var(--ink);}
.paysum__u{font-family:'Space Grotesk',sans-serif;font-size:12px;color:var(--muted);margin-left:auto;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;min-height:46px;padding:0 20px;border-radius:999px;border:1px solid var(--line);background:var(--glass);color:var(--ink);text-decoration:none;
  font-family:'Space Grotesk',sans-serif;font-size:13.5px;text-transform:lowercase;transition:border-color .25s var(--ease),background .25s,transform .2s;}
.btn svg{width:16px;height:16px;}
.btn:hover{border-color:rgba(168,232,12,.45);background:rgba(168,232,12,.06);transform:translateY(-1px);}
.btn--lime{background:var(--lime);color:var(--ink-on-lime);border-color:transparent;font-weight:600;box-shadow:0 10px 22px -14px rgba(168,232,12,.3);}
.btn--lime:hover{background:var(--lime-2);}
.hist{display:flex;flex-direction:column;}
.hist__mon{margin:14px 0 4px;font-family:'Space Grotesk',sans-serif;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.hist__mon:first-child{margin-top:0;}
.hi{display:flex;align-items:center;gap:13px;padding:12px 2px;border-top:1px solid var(--line-2);}
.hist__mon + .hi{border-top:0;}
.hi__ic{width:34px;height:34px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;}
.hi__ic svg{width:16px;height:16px;}
/* приход — редкое событие, берёт лайм заливкой; списание — рабочая рутина, графит с приглушённым знаком
   (раньше оба были зелёными: лайм на лаймовой подложке давал болотный тон) */
.hi__ic.inc{background:var(--lime);color:var(--ink-on-lime);box-shadow:0 6px 18px -10px rgba(168,232,12,.85);}
.hi__ic.out{background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));border:1px solid var(--line);color:var(--muted);}
.hi:hover .hi__ic.out{color:var(--ink);border-color:rgba(255,255,255,.16);}
.hi__b{min-width:0;flex:1;}
.hi__l{font-family:'Space Grotesk',sans-serif;font-size:13.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hi__t{font-family:'Space Grotesk',sans-serif;font-size:11.5px;color:var(--faint);margin-top:2px;}
.hi__amt{flex:0 0 auto;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;}
.hi__amt{font-variant-numeric:tabular-nums;}
.hi__amt.inc{color:var(--lime);}.hi__amt.out{color:var(--muted);}

/* ============ SETTINGS ============ */
.setrow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-top:1px solid var(--line-2);}
.setrow:first-child{border-top:0;}
.setrow__t{font-family:'Space Grotesk',sans-serif;font-size:14.5px;color:var(--ink);}
.setrow__d{margin-top:3px;font-size:12.5px;color:var(--muted);line-height:1.45;max-width:54ch;}
/* правый элемент строки — одной ширины во всех строках: колонка действий читается как колонка */
@media(min-width:701px){.setrow>*:last-child{flex:0 0 auto;width:150px;justify-content:center;text-align:center;}
.setrow>.mini:last-child{display:inline-flex;}
.setrow>.bpill:last-child{display:inline-flex;align-items:center;justify-content:center;height:38px;box-sizing:border-box;}}
.bpill{font-family:'Space Grotesk',sans-serif;font-size:11px;text-transform:lowercase;color:var(--warn);border:1px solid rgba(230,162,60,.3);background:rgba(230,162,60,.08);padding:5px 11px;border-radius:999px;flex:0 0 auto;}
.bpill.ok{color:var(--ok);border-color:rgba(143,212,41,.3);background:rgba(143,212,41,.08);}
.setlinks{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:14px;}
/* переключатель — та же идиома, что у переключателей на сайте: лаймовая пилюля ездит внутри графитовой колеи */
.tgl{position:relative;display:inline-flex;align-items:stretch;width:150px;height:38px;padding:3px;border-radius:999px;border:1px solid var(--line);background:var(--glass-2);cursor:pointer;overflow:hidden;}
.tgl__k{position:absolute;top:3px;left:3px;width:calc(50% - 3px);height:calc(100% - 6px);border-radius:999px;background:var(--lime);box-shadow:0 6px 18px -10px rgba(168,232,12,.9);transition:left .34s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease);}
.tgl[aria-checked="false"] .tgl__k{left:50%;background:rgba(238,241,232,.16);box-shadow:none;}
.tgl[data-on="30"] .tgl__k{left:50%;}
.tgl>button.tgl__t{border:0;background:none;cursor:pointer;padding:0;font:600 11.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
.tgl>button.tgl__t[aria-current="true"]{color:var(--ink-on-lime,#0a0b0a);}
.tgl>button.tgl__t:not([aria-current="true"]):hover{color:var(--ink);}
.tgl__t{position:relative;z-index:1;flex:1 1 50%;display:grid;place-items:center;font:600 11.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--muted);transition:color .25s var(--ease);}
.tgl[aria-checked="true"] .tgl__t:nth-of-type(1){color:var(--ink-on-lime,#0a0b0a);}
.tgl[aria-checked="false"] .tgl__t:nth-of-type(2){color:var(--ink);}
.tgl:hover{border-color:rgba(168,232,12,.35);}
.tgl:focus-visible{outline:2px solid rgba(168,232,12,.6);outline-offset:2px;}
.setlinks a{font-family:'Space Grotesk',sans-serif;font-size:13px;color:var(--muted);text-decoration:none;transition:color .25s var(--ease);}
.setlinks a:hover{color:var(--lime);}

/* ============ MODAL ============ */
.cmodal-back{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:20px;background:rgba(4,5,7,.68);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;visibility:hidden;transition:opacity .3s var(--ease),visibility .3s;}
.cmodal-back.is-on{opacity:1;visibility:visible;}
.cmodal{width:min(600px,100%);position:relative;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:24px;border:1px solid rgba(168,232,12,.2);background:linear-gradient(180deg,#1a1c22,#0e0f13 62%);padding:clamp(28px,3vw,40px);box-shadow:0 40px 100px -30px rgba(0,0,0,.85);transform:translateY(14px) scale(.98);transition:transform .34s var(--ease);}
.cmodal-back.is-on .cmodal{transform:none;}
.cmodal__x{position:sticky;top:0;float:right;margin:0 0 4px 14px;z-index:6;width:38px;height:38px;border-radius:50%;border:1px solid transparent;background:transparent;;-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;transition:background .35s ease,border-color .35s ease,transform .5s var(--ease);}
.cmodal__x:hover{background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
.cmodal__x:hover::before,.cmodal__x:hover::after{background:var(--ink-on-lime);}
.cmodal__x::before,.cmodal__x::after{content:"";position:absolute;width:15px;height:1.7px;border-radius:2px;background:var(--muted);transition:background .35s ease;}
.cmodal__x::before{transform:rotate(45deg);}.cmodal__x::after{transform:rotate(-45deg);}
.cmodal__t{margin:6px 0 0;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:clamp(22px,2.4vw,28px);letter-spacing:-.03em;color:var(--ink);}
.cmodal__d{margin:12px 0 18px;max-width:52ch;font-size:13.5px;line-height:1.5;color:var(--muted);}
.cmodal__d:last-child{margin-bottom:0;}
.cmodal .packs{margin-top:6px;gap:11px;}
/* окно пакетов шире прочих модалок: четыре карточки должны стоять в один ряд и дышать
   (сетка .packs завязана на ширину ОКНА, а не экрана — иначе на широком экране внутри
   600px-модалки получались четыре сжатые колонки) */
.cmodal--pay{width:min(1040px,100%);}
.cmodal--pay .packs{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.cmodal--pay .pack{padding:29px 13px 14px;}
.cmodal--pay .pack__n{font-size:32px;}
.cmodal--pay .pack__p{font-size:16px;gap:5px;flex-wrap:wrap;}
@media(max-width:820px){.cmodal--pay{width:min(560px,100%);}.cmodal--pay .packs{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:470px){.cmodal--pay .packs{grid-template-columns:1fr;}.cmodal--pay .pack{padding:29px 15px 14px;}}
.cmodal .paysum{margin-top:22px;}
.cmodal__note{display:flex;gap:8px;margin-top:20px;font-family:'Space Grotesk',sans-serif;font-size:11.5px;line-height:1.5;color:var(--faint);}
/* техническая сноска — без звёздочки и по центру: она не должна тянуть на себя внимание */
.cmodal__note--c{display:block;text-align:center;color:rgba(238,241,232,.38);margin-top:16px;}

/* ============ MOBILE DOCK ============ */
.dock{display:none;}
/* выход из кабинета на мобильном (десктоп — логотип-рейл слева) */
.top__home{display:none;}
@media(max-width:1120px){.app{grid-template-columns:210px 1fr;}.rnav{font-size:13.5px;min-height:44px;}}
@media(max-width:900px){
  :root{--kb-gap:clamp(17px,3.4vw,24px); --kb-top:clamp(18px,4vw,24px); --kb-side:15px;}
  .top__home{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;order:-1;
    padding:8px 14px 8px 11px;border-radius:999px;border:1px solid var(--line-2);
    background:linear-gradient(180deg,rgba(255,255,255,.04),transparent),var(--card);
    color:var(--muted);text-decoration:none;font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:13px;text-transform:lowercase;letter-spacing:.01em;
    transition:color .2s,border-color .2s,gap .2s var(--ease),transform .18s var(--ease);}
  .top__home svg{width:15px;height:15px;flex:0 0 auto;color:var(--lime);}
  .top__home:hover{color:var(--lime);border-color:rgba(168,232,12,.4);gap:9px;}
  .top__home:active{transform:scale(.96);}
}
@media(max-width:680px){
  .top__home span{display:none;}
  /* цель касания 44 (было 42) — канон проекта: палец не меньше 44 px */
  .top__home{width:44px;height:44px;padding:0;justify-content:center;}
}
.reveal{opacity:0;transform:translateY(14px);}
@media(prefers-reduced-motion:no-preference){.reveal{animation:rise .6s var(--ease) forwards;}.reveal.d1{animation-delay:.05s}.reveal.d2{animation-delay:.11s}.reveal.d3{animation-delay:.17s}.reveal.d4{animation-delay:.23s}}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;}}
@keyframes rise{to{opacity:1;transform:none;}}

/* ============ RESPONSIVE ============ */
@media(max-width:1080px){
  .tools{grid-template-columns:1fr 1fr;}
  .two{grid-template-columns:1fr;}
}
@media(max-width:900px){
  .app{grid-template-columns:1fr;}
  .rail{display:none;}
  .main{padding:var(--kb-top) var(--kb-side) calc(112px + env(safe-area-inset-bottom));}
  /* затухание контента под плавающим доком — контент не «режется» его краем */
  /* ЗАТЕМНЕНИЯ ПОД ДОКОМ НЕТ (05.10, владелец с iPhone: «когда скролю вверх и появляется меню Сафари, заметно затемнение
     под баром, и оно нелепо поднимается»). Здесь была полноширинная подложка .app::after (fixed, bottom:0, 104px, почти
     чёрный низ): Safari двигает низ экрана вместе со своей панелью — подложка ездила вверх-вниз, а Safari подкрашивал свою
     панель по её цвету тёмным прямоугольником. Док — стекло с размытием и своей тенью, контент уходит под него сам. */
  /* планшет: шапка в одну строку — звонок не сползает вниз */
  .top{flex-wrap:nowrap;}
  .top__id,.top__idmeta{min-width:0;}
  .iconbtn{flex:0 0 auto;}
  .hero{grid-template-columns:1fr;}
  .scr2{grid-template-columns:1fr;}
  .dock{display:flex;position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:80;
    padding:7px;gap:4px;border-radius:999px;border:1px solid rgba(255,255,255,.1);width:max-content;max-width:calc(100vw - 20px);
    background:linear-gradient(180deg,rgba(28,30,36,.9),rgba(14,15,19,.95));backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);
    box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 20px 46px -14px rgba(0,0,0,.8);}
  .dtab{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;height:48px;min-width:52px;border:0;border-radius:999px;background:transparent;color:var(--muted);overflow:hidden;
    transition:background .3s var(--ease),color .25s,padding .3s var(--ease);}
  .dtab svg{width:22px;height:22px;flex:0 0 auto;}
  .dtab__l{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;text-transform:lowercase;
    transition:max-width .32s var(--ease),opacity .25s,margin .32s var(--ease);}
  .dtab:active{transform:scale(.93);}
  .dtab.on{background:var(--lime);color:var(--ink-on-lime);padding:0 18px 0 15px;box-shadow:0 6px 16px -6px rgba(168,232,12,.8);}
  .dtab.on .dtab__l{max-width:120px;opacity:1;margin-left:9px;}
}
@media(max-width:680px){
  .kpis{gap:12px;}
  .tools{grid-template-columns:1fr;}
  .top__title{display:none;}
  .top{flex-wrap:nowrap;gap:10px;margin-bottom:14px;}
  .top__id{flex:1 1 auto;min-width:0;padding:8px 15px 8px 8px;}
  .top__idmeta{min-width:0;max-width:none;flex:1 1 auto;}
  .top__caret{margin-left:auto;}
  .top__sp{display:none;}
  .top__name,.top__status{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
  .iconbtn{flex:0 0 auto;}
  .seg{width:100%;}
  .seg button{flex:0 0 auto;justify-content:center;padding:9px 13px;gap:6px;}
  .mini{min-height:44px;}
  .packs{grid-template-columns:1fr;}
  .paybar{flex-direction:column;align-items:stretch;gap:14px;}
  .paybar__sum{align-items:flex-start;}
  .paybar .btn{width:100%;min-width:0;justify-content:center;}
  .paysum__u{margin-left:0;width:100%;}
  .rep__foot{gap:8px;}
  .rep__foot .cd{width:100%;margin-right:0;}
  .rep__foot .mini{flex:1 1 calc(50% - 4px);justify-content:center;min-height:46px;}
  .rep__foot .mini.lime,.rep__foot .mini[data-goview]:only-child{flex-basis:100%;}
  .pmenu{left:0;right:0;min-width:0;max-width:none;top:56px;}
  .balcard__n{font-size:clamp(46px,15vw,64px);}
  .setlinks{flex-direction:column;gap:10px;}
  /* тот же принцип, что на ПК: все управляющие элементы одного размера — только строкой ниже текста */
  .setrow{flex-direction:column;align-items:stretch;gap:12px;padding:15px 0;}
  .setrow>*:last-child{width:100%;max-width:none;height:46px;box-sizing:border-box;}
  .setrow>.mini:last-child{display:inline-flex;justify-content:center;height:46px;}
  .setrow>.bpill:last-child{display:inline-flex;align-items:center;justify-content:center;}
  .setrow .tgl{width:100%;height:46px;}
  .setrow .tgl__t{font-size:12.5px;}
}

/* ============ LIVE INTEGRATION + GUEST STATE ============ */
body{padding:0!important;margin:0!important;}
/* сквозной аккаунт-виджет tovian-account: на кабинете своя шапка + меню, чип и member-меню прячем (модал входа .tac-pop--login оставляем рабочим) */
.tac{display:none!important;}
.tac-pop:not(.tac-pop--login){display:none!important;}
.main section{padding:0!important;margin-top:0!important;}
.balcard .btn{border-radius:999px;}
.ya-ic{width:20px;height:20px;object-fit:contain;flex:0 0 auto;}
.btn--ya{background:#fff;color:#15280a;border-color:transparent;font-weight:600;}
.btn--ya:hover{background:#f0f0f0;transform:translateY(-1px);}
/* гость: скрыть навигацию и идентити, показать showcase */
.is-guest #pmenu,.is-guest .rnav,.is-guest .dock{display:none!important;}
.is-guest .iconbtn{opacity:.4;pointer-events:none;}
.is-guest .top{display:flex;}
/* плашка идентити у гостя = кнопка входа: тап работает, текста «вход не выполнен» нет */
.is-guest .top__id{cursor:pointer;}
.is-guest .top__id:hover{border-color:rgba(168,232,12,.4);}
.is-guest .top__av{display:grid;background:none;border-color:transparent;}
.is-guest .top__dot{background:var(--faint);box-shadow:none;}
.is-guest .top__name{color:var(--ink);}
.is-guest .top__nm{color:var(--lime);}
.is-guest .top__sub{color:var(--faint);}
.is-guest .rail{display:none;}
.is-guest .app{grid-template-columns:1fr;}
.guest{display:flex;flex-direction:column;}
.guest__hero{position:relative;overflow:hidden;border-radius:24px;padding:clamp(28px,4vw,52px);border:1px solid rgba(255,255,255,.08);
  background:radial-gradient(120% 150% at 90% 0%,rgba(168,232,12,.1),transparent 46%),linear-gradient(160deg,#0e1014 0%,#0a0b0e 60%,#070809 100%);
  box-shadow:0 40px 100px -30px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.05);}
.guest__glow{position:absolute;right:-120px;top:-140px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(168,232,12,.13),transparent 66%);filter:blur(28px);pointer-events:none;}
.guest__hero>*{position:relative;z-index:1;}
.guest__t{margin:12px 0 0;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:clamp(28px,3.8vw,48px);letter-spacing:-.035em;line-height:1.03;color:var(--ink);max-width:18ch;text-wrap:balance;}
.guest__d{margin:14px 0 0;max-width:56ch;font-size:clamp(14px,1vw,16px);line-height:1.55;color:var(--muted);}
.guest__act{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px;}
.guest__feats{list-style:none;display:flex;gap:8px 24px;flex-wrap:wrap;margin:22px 0 0;padding:0;}
.guest__feats li{position:relative;padding-left:20px;font-family:'Space Grotesk',sans-serif;font-size:12.5px;color:var(--muted);}
.guest__feats li::before{content:"";position:absolute;left:0;top:.18em;width:12px;height:12px;background:var(--lime);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12 6 18 12 24 12C18 12 12 18 12 24C12 18 6 12 0 12C6 12 12 6 12 0Z' fill='black'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C12 6 18 12 24 12C18 12 12 18 12 24C12 18 6 12 0 12C6 12 12 6 12 0Z' fill='black'/%3E%3C/svg%3E") center/contain no-repeat;}
.guest .sectitle{margin-top:var(--kb-gap);}
@media(max-width:680px){.guest__act{flex-direction:column;}.guest__act .btn{width:100%;justify-content:center;}}

/* ============ ПРОЕКТЫ (v28) ============ */
.pj-lead{margin:0 0 var(--kb-gap);align-items:flex-start;gap:18px;}  /* 28.09: подписи сняты — заголовок по верхней кромке, на той же высоте, что в остальных разделах */
.pj-lead .pj-head__t{margin:0;}
.pj-lead .pj-head__d{margin-top:7px;max-width:52ch;}
.pj-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:4px 0 14px;}
.pj-head__t{margin:0;font:600 clamp(24px,3vw,34px)/1.05 'Space Grotesk',sans-serif;letter-spacing:-.03em;color:var(--ink,#eef1e8);text-transform:lowercase;}
/* КИКЕР ВМЕСТО ЗАГОЛОВКА (14.09): имя экрана звучит тем же голосом, что подписи разделов
   («активный проект», «маршрут закупки»), и не спорит с балансом за роль якоря. */
.pj-head__t--kick{font:500 12.5px/1.1 'Space Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);}
/* акцент в заголовке инструмента — как в заголовке его страницы (канон .cp-h1 b): вторая
   половина названия лаймовым, вес тот же (07.09) */
.pj-head__t b{font-weight:inherit;color:var(--lbli,#c5f24e);}
.pj-head__d{margin:6px 0 0;font-size:13.5px;color:var(--muted,rgba(238,241,232,.55));max-width:52ch;}
.pj-head+.pj-head__d{margin:8px 2px clamp(14px,1.6vw,20px);}
.pj-balcard{margin:0 0 var(--kb-gap);}
.pj-balcard__top{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;}
.pj-balcard .bigbal{align-items:baseline;gap:10px;}
.pj-balcard .bigbal__n{font-size:clamp(38px,5vw,54px);}
.pj-balcard .bigbal__u{font-size:13px;}
/* «пополнить» — графит с лаймовой подписью (графит = наш дорогой регистр) */
.pj-balcard__btn{background:linear-gradient(180deg,#1a1c22,#0e0f13);color:var(--lime);border:1px solid rgba(168,232,12,.28);font-weight:600;box-shadow:0 10px 24px -18px rgba(0,0,0,.9);}
.pj-balcard__btn:hover{background:linear-gradient(180deg,#20232a,#12141a);border-color:rgba(168,232,12,.55);color:var(--lime-2);}
/* фокус-кольцо (a11y): в кабинете мягче глобального — тот же лайм, но полупрозрачный и ближе к краю */
#kb-root :focus-visible{outline:2px solid rgba(168,232,12,.6);outline-offset:2px;}
/* снекбар «удалено · отменить» (5 секунд) */
.kbsnack{position:fixed;left:50%;bottom:calc(30px + env(safe-area-inset-bottom));transform:translate(-50%,14px);z-index:200;display:flex;align-items:center;gap:14px;flex-wrap:nowrap;white-space:nowrap;
  padding:11px 12px 11px 18px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:linear-gradient(180deg,#1c1f26,#0e0f13);
  box-shadow:0 22px 50px -18px rgba(0,0,0,.9);font-family:'Space Grotesk',sans-serif;font-size:13px;color:var(--ink);opacity:0;pointer-events:none;
  transition:opacity .26s var(--ease),transform .3s var(--ease);overflow:hidden;max-width:calc(100vw - 24px);}
.kbsnack.is-on{opacity:1;transform:translate(-50%,0);pointer-events:auto;}
.kbsnack__b{border:0;border-radius:999px;padding:9px 20px;background:var(--lime);color:var(--ink-on-lime);font-family:inherit;font-weight:600;font-size:12.5px;text-transform:lowercase;cursor:pointer;flex:0 0 auto;white-space:nowrap;}
.kbsnack__t{white-space:nowrap;}
@media(max-width:700px){.kbsnack{bottom:calc(84px + env(safe-area-inset-bottom));}}
.kbsnack__bar{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--lime);transform-origin:left;animation:kbsnackbar 5s linear forwards;}
@keyframes kbsnackbar{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(prefers-reduced-motion:reduce){.kbsnack__bar{animation:none;width:0}}
.pjlist{display:flex;flex-direction:column;gap:12px;}
/* аватар: фото из яндекс id перекрывает букву-монограмму; нет фото — остаётся буква */
.av__img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1;}
/* вырезанная статуя — без своего фона (видна подложка плашки); буква скрыта, пока грузится фото */
.top__av:has(.av__img),.pmenu__av:has(.av__img){background:none;border-color:transparent;color:transparent;}
.pjrow-w{display:block;}
/* корзина не отдельной плашкой, а тихо внутри правого края самой строки/карточки — появляется на ховере */
.pjrow-w,.rep-w{position:relative;display:block;gap:0;max-height:1200px;transition:max-height .32s var(--ease),opacity .24s var(--ease),transform .32s var(--ease);}
/* удаление с отменой: строка сворачивается, физическое удаление — через 5 секунд */
.pjrow-w.is-gone,.rep-w.is-gone{max-height:0;opacity:0;transform:translateX(-14px);overflow:hidden;pointer-events:none;}
.pjrow-w>.pjrow,.rep-w>.rep{width:100%;}
.pjrow-w>.pjrow{padding-right:18px;}
.pjrow__del,.rep__del{position:absolute;width:34px;height:34px;border:0;border-radius:11px;background:transparent;color:var(--faint);display:grid;place-items:center;cursor:pointer;
  opacity:0;transform:translateY(-2px) scale(.9);pointer-events:none;
  transition:opacity .22s var(--ease),transform .28s var(--ease),color .2s var(--ease),background .2s var(--ease);}
.pjrow__del{top:50%;right:11px;margin-top:-17px;}
.rep__del{top:auto;bottom:16px;left:15px;right:auto;display:none;}
/* корзина отчёта — в строке действий, вплотную слева от кнопок */
.rep__delin{width:34px;height:34px;flex:0 0 auto;border:0;border-radius:11px;background:transparent;color:var(--faint);display:grid;place-items:center;cursor:pointer;
  opacity:0;transform:scale(.9);pointer-events:none;transition:opacity .22s var(--ease),transform .28s var(--ease),color .2s var(--ease),background .2s var(--ease);}
.rep__delin svg{width:17px;height:17px;}
.rep-w:hover .rep__delin,.rep__delin:focus-visible{opacity:1;transform:none;pointer-events:auto;}
.rep__delin:hover{color:var(--risk);background:rgba(239,106,86,.1);}
#kb-root .rep__delin:focus-visible{outline:2px solid rgba(239,106,86,.6);outline-offset:2px;}
.pjrow__del svg,.rep__del svg{width:17px;height:17px;}
.pjrow-w:hover .pjrow__del,.rep-w:hover .rep__del,.pjrow__del:focus-visible,.rep__del:focus-visible{opacity:1;transform:none;pointer-events:auto;}
.pjrow-w:hover .pjrow__del{transform:none;}
.pjrow__del:hover,.rep__del:hover{color:var(--risk);background:rgba(239,106,86,.1);}
#kb-root .pjrow__del:focus-visible,#kb-root .rep__del:focus-visible{outline:2px solid rgba(239,106,86,.6);outline-offset:2px;}
.pjrow{display:flex;align-items:center;gap:14px;width:100%;box-sizing:border-box;font:inherit;color:inherit;text-align:left;cursor:pointer;border:1px solid rgba(255,255,255,.075);border-radius:18px;background:linear-gradient(180deg,#17181d 0%,#111216 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.035);padding:16px 18px;transition:border-color .25s ease,box-shadow .25s ease;}
.pjrow:hover{border-color:rgba(255,255,255,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 22px 44px -32px rgba(0,0,0,.95);}
#kb-root .pjrow:focus-visible{outline:none;border-color:rgba(168,232,12,.55);}
.pjrow__ic{flex:0 0 auto;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:#1d1f25;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);color:rgba(238,241,232,.82);}
.pjrow__ic svg{width:18px;height:18px;}
.pjrow__b{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px;}
.pjrow__t{font:500 16px/1.3 'Space Grotesk',sans-serif;letter-spacing:-.01em;color:#f2f4ee;text-transform:lowercase;overflow-wrap:anywhere;}
.pjrow__live{font:600 10px/1 'Space Grotesk',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--lime,#a8e80c);border:1px solid rgba(168,232,12,.4);border-radius:99px;padding:4px 8px 3px;vertical-align:2px;margin-left:8px;font-style:normal;}
.pjrow__prog{display:inline-flex;align-items:center;gap:9px;font:600 11.5px/1 'Space Grotesk',sans-serif;color:var(--muted,rgba(238,241,232,.6));}
.pjrow__bar{width:120px;height:5px;border-radius:99px;background:rgba(255,255,255,.09);overflow:hidden;}
.pjrow__bar i{display:block;height:100%;border-radius:99px;background:var(--lime,#a8e80c);}
.pj-next{display:inline-flex;align-items:center;gap:7px;font:600 12px/1 'Space Grotesk',sans-serif;letter-spacing:.01em;color:var(--lime,#a8e80c);text-decoration:none;background:none;border:0;cursor:pointer;padding:0;width:fit-content;}
.pj-next__k{color:var(--muted,rgba(238,241,232,.5));}
.pj-next svg{width:12px;height:12px;}
.pj-next:hover{text-decoration:underline;text-underline-offset:3px;}
.pj-next--done{color:var(--muted,rgba(238,241,232,.6));cursor:default;}
/* ЗОНА НАЖАТИЯ «ДАЛЬШЕ» НА ТЕЛЕФОНЕ (01.10, аудит-3): ссылка строкой высотой 16 px — пальцем попадали через раз. Невидимая
   подложка до 44 px по вертикали, вид и раскладка строки те же; до соседней строки остаётся 14 px. */
@media (max-width:700px),(pointer:coarse){.pjrow__ln>:is(a,button).pj-next{position:relative;}.pjrow__ln>:is(a,button).pj-next::after{content:"";position:absolute;left:0;right:0;top:-14px;bottom:-14px;}}
/* СТРОКА ПРОЕКТА В ЯЗЫКЕ АРХИВА (29.09, вопрос владельца «дизайн на 10/10?»): графит и волосяная кромка как у
   карточек отчётов, значок — нейтральная графитовая монета вместо лаймовой заливки, прогресс — сегментами по
   шагам маршрута, а не полоской с дробью; шаги и «дальше» одной строкой через волосяную линию. */
.pjrow__ln{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;min-width:0;}
.pjrow__ln>.pj-next{padding-left:14px;border-left:1px solid rgba(255,255,255,.1);font-weight:500;font-size:12.5px;line-height:1.25;}
.pjrow__ln>.pj-next svg{width:13px;height:13px;flex:0 0 auto;}
.pjrow__trk{display:inline-flex;gap:3px;}
.pjrow__trk i{display:block;width:18px;height:4px;border-radius:99px;background:rgba(255,255,255,.1);}
.pjrow__trk i.on{background:var(--lime,#a8e80c);}
.pjrow .pjrow__prog b{font-weight:500;font-size:12px;letter-spacing:0;color:rgba(238,241,232,.6);}
/* узкий список — шаги и «дальше» столбиком у ВСЕХ строк сразу (запрос по ширине списка, а не строки):
   иначе при переносе волосяная линия повисала в начале второй строки */
.pjlist{container-type:inline-size;container-name:pjlist;}
@container pjlist (max-width:900px){
  .pjrow__ln{flex-direction:column;align-items:flex-start;gap:9px;}
  .pjrow__ln>.pj-next{padding-left:0;border-left:0;}
}
.pjrow>.chip{min-height:28px;height:auto;padding:5px 11px;background:none;box-shadow:none;font:500 11.5px/1 'Space Grotesk',sans-serif;letter-spacing:.03em;}
/* корзина на ПК: в покое отступы строки симметричны, на наведении статус отъезжает влево и открывает место */
@media(hover:hover) and (min-width:701px){
  .pjrow__b{margin-right:42px;}
  .pjrow>.chip{transition:transform .28s var(--ease,ease);}
  .pjrow-w:hover>.pjrow>.chip,.pjrow-w:focus-within>.pjrow>.chip{transform:translateX(-42px);}
}
.pj-note{margin:var(--kb-gap) 2px 0;font-size:11.5px;color:rgba(238,241,232,.4);}
.pj-empty{padding:30px 22px 34px;text-align:center;}
.pj-empty__act{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;padding:0 22px 30px;}
.pj-empty>.pj-empty__act{padding:0;}
.pj-empty h3{margin:0;font:600 20px/1.2 'Space Grotesk',sans-serif;color:var(--ink,#eef1e8);text-transform:lowercase;}
.pj-empty>p:not(.pj-empty__alt){margin:8px 0 18px;font-size:13.5px;color:var(--muted,rgba(238,241,232,.55));max-width:50ch;}
/* «что внутри проекта»: перечень возможностей песочницы, не меню выбора */
.pj-what{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:0 0 20px;}
.pj-what__c{display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;padding:14px;border:1px solid rgba(255,255,255,.09);border-radius:14px;background:rgba(255,255,255,.025);}
.pj-what__ic{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:var(--lime);color:var(--ink-on-lime);}
.pj-what__ic svg{width:16px;height:16px;}
.pj-what__c b{font:600 13px/1.2 'Space Grotesk',sans-serif;color:var(--ink);text-transform:lowercase;}
/* описание плитки: свой класс + позиционный фолбэк для прежней разметки,
   исключающий блок цены (иначе он забирает правило себе — регресс 06.09) */
.pj-what__c>span.pj-what__d,.pj-what__c>span:last-child:not(.pj-what__m){font-size:11.8px;line-height:1.4;color:var(--muted);}
.pj-empty__go{margin:0 auto;}
.pj-empty__k{display:inline-flex;align-items:center;gap:6px;margin:0 0 9px;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);}
.pj-empty__k .star{color:var(--lime);}
.pj-empty__alt{margin:18px auto 0;padding-top:14px;border-top:1px solid var(--line);max-width:none;font-size:12.3px;line-height:1.55;color:var(--faint);}
.pj-empty__alt b{color:var(--muted);font-weight:600;}
.pj-empty__alt a{color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.3);}
.pj-empty__alt a:hover{color:var(--lime-ink,#bdf52e);}
/* пустое состояние: фреска-полоса слева — только на ПК (панель сама обрезает по радиусу) */
.pj-empty__art{display:none;margin:0;}
@media(min-width:901px){.pj-empty{position:relative;padding:30px 26px 34px 264px;text-align:left;}
.pj-empty__art{display:block;position:absolute;left:0;top:0;bottom:0;width:234px;overflow:hidden;}
.pj-empty__art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:56% 24%;}
.pj-empty__art::after{content:'';position:absolute;inset:0;box-shadow:inset -1px 0 0 rgba(255,255,255,.07);background:linear-gradient(90deg,rgba(7,8,9,0) 52%,rgba(7,8,9,.66)),linear-gradient(180deg,rgba(7,8,9,.3),rgba(7,8,9,0) 34%,rgba(7,8,9,.44)),rgba(7,8,9,.14);}
.pj-empty>p,.pj-empty__alt{margin-left:0;margin-right:0;}
.pj-empty>p:not(.pj-empty__alt){max-width:50ch;margin-bottom:20px;}
.pj-empty__go{margin:0;}}
.cmodal .pj-what{margin:14px 0 4px;grid-template-columns:repeat(2,minmax(0,1fr));}
@media(max-width:900px){.pj-what{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:520px){.pj-what,.cmodal .pj-what{grid-template-columns:1fr;}.pj-what__c{flex-direction:row;align-items:center;gap:11px;flex-wrap:wrap;}.pj-what__c b{flex:0 0 auto;}.pj-what__c>span.pj-what__d,.pj-what__c>span:last-child:not(.pj-what__m){flex:1 1 100%;}.pj-what__m{flex:1 1 100%;}}
.pj-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:10px 0 16px;}
.pj-card__act{display:flex;gap:8px;flex-wrap:wrap;}
.pj-back{display:inline-flex;align-items:center;gap:5px;padding:5px 11px 5px 8px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.03);cursor:pointer;
  font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:11.5px;letter-spacing:.01em;text-transform:lowercase;color:var(--lime);
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease),transform .2s var(--ease);}
.pj-back svg{width:12px;height:12px;flex:0 0 auto;}
.pj-back:hover{border-color:var(--lime);background:rgba(168,232,12,.08);color:var(--lime-2);transform:translateX(-2px);}
.pj-back:focus-visible{outline:2px solid var(--lime);outline-offset:3px;}
.pjslots{display:flex;flex-direction:column;gap:8px;}
.pjslot{border:1px solid rgba(255,255,255,.09);border-radius:14px;background:linear-gradient(160deg,#121316,#0d0e11);}
.pjslot__h{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;background:none;border:0;color:inherit;cursor:default;flex-wrap:wrap;}
.pjslot.is-done .pjslot__h{cursor:pointer;}
.pjslot__n{font:600 12px/1 'Space Grotesk',sans-serif;color:rgba(238,241,232,.4);font-variant-numeric:tabular-nums;}
.pjslot__ic{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:10px;background:rgba(255,255,255,.05);color:var(--muted,rgba(238,241,232,.6));}
.pjslot.is-done .pjslot__ic{background:var(--lime,#a8e80c);color:var(--ink-on-lime,#0a0b0a);}
.pjslot__ic svg{width:17px;height:17px;}
.pjslot__b{flex:1;min-width:180px;display:flex;flex-direction:column;gap:2px;}
.pjslot__b b{font:600 13.5px/1.2 'Space Grotesk',sans-serif;color:var(--ink,#eef1e8);text-transform:lowercase;}
.pjslot__m{font-size:12px;color:var(--muted,rgba(238,241,232,.5));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46ch;}
/* сноска маршрута: почему шага «продавец» нет (товар с Taobao) */
.pjslot__note{margin:10px 2px 0;font-size:12.2px;line-height:1.5;color:var(--faint,rgba(238,241,232,.38));}
.pjslot__num{font:600 12.5px/1 'Space Grotesk',sans-serif;color:var(--ink,#eef1e8);font-variant-numeric:tabular-nums;}
/* шаг до выбранного старта: он вне маршрута — тише остальных, но остаётся доступным */
.pjslot.is-off{opacity:.62;}
.pjslot.is-off:hover{opacity:1;}
.pjslot.is-off .pjslot__n{color:var(--faint);}
.pjslot__date{font-size:11px;color:rgba(238,241,232,.38);}
/* пройденный шаг: вся строка — вход в полный отчёт (тот же просмотрщик, что в архиве) */
.pjslot__rv{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid rgba(168,232,12,.26);border-radius:999px;background:rgba(168,232,12,.06);color:var(--lime);font:600 11px/1 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:.02em;white-space:nowrap;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease);}
.pjslot__rv svg{width:12px;height:12px;}
.pjslot.is-done .pjslot__h:hover .pjslot__rv,.pjslot.is-done .pjslot__h:focus-visible .pjslot__rv{background:var(--lime);border-color:var(--lime);color:var(--ink-on-lime);}
@media(max-width:700px){.pjslot__rv{min-height:32px;}}
.pjslot.is-locked{opacity:.75;}
.pjslot.is-locked .pjslot__ic{color:#e6a23c;background:rgba(230,162,60,.08);}
.pj-topup{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px;padding:12px 16px;border:1px dashed rgba(230,162,60,.45);border-radius:14px;}
.pj-topup p{margin:0;flex:1;min-width:220px;font-size:12.5px;color:var(--muted,rgba(238,241,232,.6));}
.pj-done{margin-top:16px;padding:18px;border:1px solid var(--line-2,rgba(255,255,255,.06));border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.032),rgba(255,255,255,.012));display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.pj-done p{margin:0;font-size:12.5px;color:var(--muted,rgba(238,241,232,.65));}
.pj-form{display:flex;flex-direction:column;gap:10px;margin-top:14px;}
/* поле названия: плавающая подпись вместо длинного плейсхолдера, лаймовый фокус, 16px — телефон не зумит */
.pjf{position:relative;display:block;}
.pjf__in{width:100%;box-sizing:border-box;padding:24px 118px 10px 16px;border-radius:14px;border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));color:var(--ink);font:500 16px/1.25 'Inter',sans-serif;
  transition:border-color .25s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease);}
.pjf__in::placeholder{color:rgba(238,241,232,.3);opacity:0;transition:opacity .2s var(--ease);}
.pjf__in:focus{outline:none;border-color:rgba(168,232,12,.5);background:rgba(168,232,12,.045);box-shadow:0 0 0 4px rgba(168,232,12,.07);}
.pjf__in:focus::placeholder{opacity:1;}
.pjf__lb{position:absolute;left:17px;top:16px;font:500 15px/1 'Inter',sans-serif;color:rgba(238,241,232,.42);pointer-events:none;
  transition:transform .26s var(--ease),font-size .26s var(--ease),color .26s var(--ease),letter-spacing .26s var(--ease);}
.pjf__in:focus~.pjf__lb,.pjf__in:not(:placeholder-shown)~.pjf__lb{transform:translateY(-8px);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--lime);}
.pjf__opt{position:absolute;right:12px;top:50%;transform:translateY(-50%);padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.05);
  font:600 10.5px/1 'Space Grotesk',sans-serif;color:var(--faint);transition:opacity .2s var(--ease);}
.pjf__in:focus~.pjf__opt,.pjf__in:not(:placeholder-shown)~.pjf__opt{opacity:0;}
.pjf__cap{margin:6px 2px -2px;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);}
.pj-form__in{width:100%;box-sizing:border-box;padding:13px 15px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:var(--ink,#eef1e8);font:500 14px/1.3 'Inter',sans-serif;outline:none;}
.pj-form__in:focus-visible{border-color:rgba(168,232,12,.55);box-shadow:0 0 0 3px rgba(168,232,12,.08);}
.pj-confirm{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;}
.pj-off{padding:22px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;}
.pj-off p{margin:0;max-width:46ch;font-size:13px;color:var(--muted,rgba(238,241,232,.55));}
.pj-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
@media(max-width:900px){.pj-steps{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.pj-steps{grid-template-columns:1fr;}}
.pj-step{position:relative;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;gap:15px;text-decoration:none;border:1px solid rgba(255,255,255,.09);border-radius:18px;padding:22px 22px 20px;background:linear-gradient(165deg,rgba(255,255,255,.035),transparent 42%),var(--card);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 40px -34px #000;transition:border-color .3s var(--ease),transform .25s var(--ease),box-shadow .3s;}
.pj-step::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .3s var(--ease);background:radial-gradient(120% 120% at 86% 0%,rgba(168,232,12,.13),transparent 55%);}
.pj-step:hover{border-color:rgba(168,232,12,.42);transform:translateY(-3px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 26px 54px -30px rgba(168,232,12,.28),0 18px 40px -34px #000;}
.pj-step:hover::before{opacity:1;}
.pj-step__n{position:absolute;top:8px;right:16px;z-index:-1;font:700 clamp(48px,5vw,60px)/1 'Space Grotesk',sans-serif;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.1);pointer-events:none;transition:-webkit-text-stroke-color .3s var(--ease);}
.pj-step:hover .pj-step__n{-webkit-text-stroke-color:rgba(168,232,12,.36);}
.pj-step__ic{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:linear-gradient(150deg,rgba(168,232,12,.16),rgba(168,232,12,.05));color:var(--lime,#a8e80c);box-shadow:inset 0 0 0 1px rgba(168,232,12,.22);transition:background .3s,box-shadow .3s;}
.pj-step:hover .pj-step__ic{background:linear-gradient(150deg,rgba(168,232,12,.3),rgba(168,232,12,.08));box-shadow:inset 0 0 0 1px rgba(168,232,12,.42);}
.pj-step__ic svg{width:24px;height:24px;}
.pj-step__body{display:flex;flex-direction:column;gap:6px;}
.pj-step__t{font:600 18px/1.1 'Space Grotesk',sans-serif;letter-spacing:-.02em;color:var(--ink,#eef1e8);text-transform:lowercase;}
.pj-step__d{font-size:12.5px;line-height:1.5;color:var(--muted,rgba(238,241,232,.55));}
.pj-step__go{display:inline-flex;align-items:center;gap:6px;margin-top:auto;font:600 12px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--lime,#a8e80c);opacity:0;transform:translateY(5px);transition:opacity .3s var(--ease),transform .3s var(--ease);}
.pj-step:hover .pj-step__go{opacity:1;transform:none;}
.pj-step__go svg{width:14px;height:14px;}
/* ≤700px: карточки проектов и заявок — app-раскладка: иконка+чип сверху, контент полной шириной */
.pj-newmob{display:none;}
@media(max-width:700px){
  .pjrow{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;row-gap:13px;padding:15px;}
  .pjrow__ic{grid-row:1;grid-column:1;}
  .pjrow>.chip{grid-row:1;grid-column:2;justify-self:end;margin:0;max-width:100%;white-space:normal;line-height:1.3;text-align:left;height:auto;}
  .pjrow__b{grid-row:2;grid-column:1/-1;}
  .pjrow__prog{display:flex;width:100%;}
  .pjrow__bar{flex:1;width:auto;}
  .pjrow__ln>.pj-next{flex-basis:100%;padding-left:0;border-left:0;}
  .pjrow>.chip{white-space:normal;line-height:1.3;}
  .rep__h{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;row-gap:13px;}
  .rep__ic{grid-row:1;grid-column:1;}
  .rep__h>.chip{grid-row:1;grid-column:2;justify-self:end;margin:0;max-width:100%;white-space:normal;line-height:1.3;text-align:left;height:auto;}
  .rep__m{grid-row:2;grid-column:1/-1;}
  .pj-balcard__btn{width:100%;justify-content:center;}
  /* модалка на телефоне: прокрутка внутри, ничего не вылезает за экран */
  /* КОРОТКОЕ окно на телефоне — карточка по центру экрана: поля по бокам, скругление,
     крестик в её правом верхнем углу. ДЛИННЫЕ (шаг, отчёт, запрос текста) — лист на весь
     экран: у них есть прокрутка, и карточка с полями только отняла бы место. */
  .cmodal-back{padding:14px;align-items:center;}
  .cmodal{width:100%;max-width:none;margin:0;border-radius:22px;height:auto;
    max-height:calc(100dvh - 28px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    padding:20px 16px;transform:translateY(12px) scale(.985);transition:transform .34s var(--ease);}
  .cmodal-back.is-on .cmodal{transform:none;}
  .cmodal__x{position:absolute;float:none;top:12px;right:12px;}
  .cmodal-back:has(.cmodal--rv),.cmodal-back:has(.cmodal--ask){padding:0;align-items:stretch;}
  .cmodal--rv,.cmodal--ask{border-radius:0;height:100dvh;max-height:none;
    padding-top:calc(14px + env(safe-area-inset-top));
    padding-bottom:calc(18px + env(safe-area-inset-bottom));transform:translateY(12px);}
  /* ОКНО ШАГА НА ТЕЛЕФОНЕ: прокручивается сама плашка вместе с подложкой — вложенного
     скролла нет (родная инерция, клавиатура не сбивает позицию, нет «двух скроллов»).
     Короткий шаг стоит по центру, длинный — тянется и листается; крестик липнет к верху
     плашки, кнопка запуска — к низу экрана, до неё не нужно долистывать. */
  .cmodal-back:has(.cmodal--run){overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;align-items:safe center;}
  .cmodal--run{max-height:none;overflow:visible;margin:auto 0;padding:14px 15px calc(14px + env(safe-area-inset-bottom));}
  .cmodal--run>.cmodal__x{position:sticky;float:right;top:6px;right:auto;margin:0 0 2px 12px;}
  /* КНОПКА ЗАПУСКА БОЛЬШЕ НЕ ЛИПНЕТ (14.09, владелец: «не двигается с остальными, контент на неё
     наезжает при прокрутке»): приём был рассчитан на прокрутку ВНУТРИ окна, а теперь
     прокручивается слой — липкая кнопка висела поверх полей. Едет вместе с формой. */
  .cmodal--run .kbr-go{position:static;box-shadow:none;}
  .cmodal--rv>.cmodal__x,.cmodal--ask>.cmodal__x{position:sticky;float:right;top:calc(6px + env(safe-area-inset-top));right:auto;}
  .cmodal-back.is-on .cmodal{transform:none;}
  .cmodal__x{width:44px;height:44px;}
  .cmodal::before{display:none;}
  /* окно шага на телефоне — на весь экран: без затемнённой полосы сверху и без скруглений */
  /* свайп-удаление: строка сверху, красная кнопка «удалить» под ней */
  .pjrow-w{position:relative;overflow:hidden;border-radius:18px;gap:0;display:block;background:linear-gradient(180deg,#2b1613,#1a0e0c);}
  .pjrow-w:has(.pjrow.is-far){background:linear-gradient(180deg,#4a1c16,#33110d);}
  .pjrow-w>.pjrow{position:relative;z-index:2;width:100%;touch-action:pan-y;transition:transform .32s var(--ease);padding-right:16px;}
  .pjrow-w>.pjrow.is-dragging{transition:none;}
  .pjrow-w>.pjrow:hover{transform:none;}
  .pjrow__del{position:absolute;inset:0 0 0 auto;width:96px;height:auto;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
    opacity:1;transform:none;pointer-events:auto;margin-top:0;
    border:0;border-radius:0;background:linear-gradient(180deg,#2b1613,#1a0e0c);color:var(--risk);font:600 11px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
  .pjrow__del::after{content:"удалить";}
  .pjrow__del svg{width:20px;height:20px;}
  /* строка уезжает без окна — с грациозным схлопыванием */
  .pjrow-w{transition:max-height .32s var(--ease),opacity .24s var(--ease),transform .32s var(--ease);max-height:260px;}
  .pjrow-w.is-gone{max-height:0;opacity:0;transform:translateX(-14px);pointer-events:none;}
  /* тянем дальше половины — красная зона разгорается: отпустить = удалить
     (правило на .pjrow-w, т.к. класс вешается на саму строку) */
  .pjrow.is-far~.pjrow__del,.pjrow-w:has(.pjrow.is-far) .pjrow__del{background:linear-gradient(180deg,#4a1c16,#33110d);color:#ff8f7a;}
  /* отчёты — тот же свайп с отменой */
  .rep-w{position:relative;overflow:hidden;border-radius:18px;gap:0;display:block;background:linear-gradient(180deg,#2b1613,#1a0e0c);
    transition:max-height .32s var(--ease),opacity .24s var(--ease),transform .32s var(--ease);max-height:640px;}
  .rep-w:has(.rep.is-far){background:linear-gradient(180deg,#4a1c16,#33110d);}
  .rep-w.is-gone{max-height:0;opacity:0;transform:translateX(-14px);pointer-events:none;}
  .rep-w>.rep{position:relative;z-index:2;width:100%;touch-action:pan-y;transition:transform .32s var(--ease);}
  .rep-w>.rep.is-dragging{transition:none;}
  .rep__del{position:absolute;inset:0 0 0 auto;width:96px;height:auto;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
    opacity:1;transform:none;pointer-events:auto;top:0;right:0;bottom:0;    border:0;border-radius:0;background:linear-gradient(180deg,#2b1613,#1a0e0c);color:var(--risk);font:600 11px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
  .rep__del::after{content:"удалить";}
  .rep__del svg{width:20px;height:20px;}
  .rep.is-far~.rep__del,.rep-w:has(.rep.is-far) .rep__del{background:linear-gradient(180deg,#4a1c16,#33110d);color:#ff8f7a;}
  .rep-w>.rep .rep__foot{padding-left:18px;}
  .rep__delin{display:none;}
  .rep__del{display:flex;}
  /* «все проекты» ВЕРНУЛАСЬ (28.09): шапки с кнопкой «назад» на телефоне больше нет */
  /* «токены закончились» — на телефоне в столбик: чип, текст, кнопка во всю ширину */
  .pj-topup{flex-direction:column;align-items:stretch;gap:11px;padding:14px;}
  .pj-topup .chip{align-self:flex-start;}
  .pj-topup p{min-width:0;}
  .pj-topup .mini{width:100%;justify-content:center;min-height:46px;}
  /* описание переезжает вниз — встаёт перед кнопкой «новый проект» */
  .view[data-view="overview"]:not([hidden]){display:flex;flex-direction:column;}
  .view[data-view="overview"]>*{order:5;}
  .view[data-view="overview"]>.pj-balcard{order:1;margin-bottom:20px;}
  /* на телефоне заголовок «проекты» не нужен — активная вкладка в доке говорит то же самое;
     порядок: баланс → кнопка действия → пояснение под ней → список */
  .view[data-view="overview"]>.card.pj-balcard{order:1;margin-bottom:var(--kb-gap);}
  /* 28.09 (владелец: «на мобильном кнопку и текст снизу проектов, а не сверху»): кнопка
     и пояснение под ней уходят ПОД список/пустую карточку — порядок: баланс → проекты → кнопка → пояснение */
  .view[data-view="overview"]>.pj-newmob{order:6;margin:6px 0 12px;}
  .view[data-view="overview"]>.pj-head{order:7;display:flex;margin:0;}
  .view[data-view="overview"]>.pj-head>.btn,.view[data-view="overview"]>.pj-head .pj-head__t{display:none;}
  .view[data-view="overview"]>.pj-head>div{width:100%;}
  .view[data-view="overview"]>.pj-head .pj-head__d,.view[data-view="overview"]>.pj-head .ph__d{margin:0;text-align:center;font-size:12.8px;line-height:1.5;max-width:none;}
  .view[data-view="overview"]>.pjlist{gap:12px;}
  /* «новый проект» на мобильном — отдельной кнопкой ПОД плашкой баланса (в шапке скрыта) */
  .pj-head>.btn{display:none;}
  .btn.pj-newmob{justify-content:center;}
  .pj-newmob{display:inline-flex;width:100%;justify-content:center;align-items:center;gap:9px;min-height:48px;margin:0 0 14px;}
  .pj-newmob svg{margin:0!important;flex:0 0 auto;}
}

.pj-route{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:2px 0 4px;}
.pj-route__s{display:flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid rgba(255,255,255,.09);border-radius:10px;font:500 11.5px/1 'Space Grotesk',sans-serif;color:var(--muted,rgba(238,241,232,.6));text-transform:lowercase;}
.pj-route__s b{color:var(--lime,#a8e80c);font-variant-numeric:tabular-nums;}
/* шаг = кнопка выбора старта: выбранный залит лаймом, остальные тихие */
.pj-route__s{background:rgba(255,255,255,.03);cursor:pointer;text-align:left;min-height:42px;transition:border-color .22s var(--ease),background .22s var(--ease),color .22s var(--ease),transform .18s var(--ease);}
.pj-route__s:hover{border-color:rgba(168,232,12,.34);color:var(--ink);}
.pj-route__s:active{transform:scale(.985);}
.pj-route__s.is-on{background:var(--lime);border-color:var(--lime);color:#0a0b0a;}
.pj-route__s.is-on b{color:rgba(10,11,10,.5);}
.pj-route__s:focus-visible{outline:2px solid rgba(168,232,12,.6);outline-offset:2px;}
@media(max-width:700px){.pj-route__s{min-height:46px;}.pjf__in{padding-right:16px;}.pjf__opt{display:none;}}
@media(max-width:560px){.pj-route{grid-template-columns:repeat(2,1fr);}}

/* ---------- онлайн-бриф в кабинете (модалка просмотра, этап 184) ---------- */
.cmodal--brief{max-width:660px;}
.bfm{display:flex;flex-direction:column;margin:16px 0 0;max-height:50vh;overflow:auto;padding-right:4px;}
.bfm__r{display:flex;gap:14px;align-items:baseline;padding:9px 0;border-top:1px solid var(--line-2);font-size:13.5px;}
.bfm__r:first-child{border-top:0;}
.bfm__r span{flex:0 0 34%;color:var(--faint);font-family:'Space Grotesk',sans-serif;font-size:12px;text-transform:lowercase;}
/* ---------- оплата услуги по брифу (этап 186) ---------- */
.cmodal--pay{max-width:560px;max-height:calc(100vh - 32px);overflow:auto;}
@media(min-width:861px){
  .cmodal--pay{max-width:960px;width:min(960px,calc(100vw - 40px));}
  .paycols{display:grid;grid-template-columns:1.05fr 1fr;gap:2px 30px;align-items:start;}
  .paycols .pinv{margin-top:8px;}
  .paycols .pent{margin-top:8px;}
}
.paysteps{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 2px;}
.pstep{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:999px;border:1px solid var(--line-2);font-family:'Space Grotesk',sans-serif;font-size:11px;text-transform:lowercase;color:var(--faint);white-space:nowrap;}
.pstep.is-done{color:var(--ok);border-color:rgba(143,212,41,.3);}
.pstep.is-cur{background:var(--lime);border-color:var(--lime);color:var(--ink-on-lime);font-weight:600;}
.pinv{margin:14px 0 8px;border:1px solid var(--line-2);border-radius:16px;padding:4px 16px;background:var(--glass-2);}
.pinv__r{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:11px 0;border-top:1px solid var(--line-2);font-size:13.5px;color:var(--muted);}
.pinv__r:first-child{border-top:0;}
.pinv__r b{color:var(--ink);font-family:'Space Grotesk',sans-serif;white-space:nowrap;}
.pinv__total b{font-size:24px;color:var(--lime);}
.pinv__note{margin:0 0 6px;font-size:12px;color:var(--faint);}
.pinv__note b{color:var(--muted);}
.pent{display:flex;gap:8px;margin:14px 0 10px;}
.pent button{flex:1;min-height:44px;padding:8px 12px;border-radius:12px;border:1px solid var(--line);background:var(--glass);color:var(--muted);font-family:'Space Grotesk',sans-serif;font-size:12.5px;text-transform:lowercase;cursor:pointer;transition:border-color .2s,background .2s;}
.pent button.is-on{background:var(--lime);border-color:var(--lime);color:var(--ink-on-lime);font-weight:600;}
.payf{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 10px;}
.payf input{min-height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--glass-2);color:var(--ink);font-size:14px;}
.payf input:focus{outline:none;border-color:rgba(168,232,12,.5);}
.payagree{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.45;color:var(--muted);margin:4px 0 12px;cursor:pointer;}
.payagree input,.pj-agree input{-webkit-appearance:none;appearance:none;flex:0 0 auto;width:20px;height:20px;margin:1px 0 0;border-radius:6px;background:#fff;border:1px solid rgba(255,255,255,.5);cursor:pointer;background-repeat:no-repeat;background-position:center;background-size:15px 15px;transition:border-color .2s ease,box-shadow .2s ease;}
.payagree input:hover,.pj-agree input:hover{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.1);}
.payagree input:checked,.pj-agree input:checked{border-color:#8ac43a;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.2 8.4l3 3 6.6-6.6' stroke='%230a0b0a' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
.payagree input:focus-visible,.pj-agree input:focus-visible{outline:2px solid rgba(168,232,12,.75);outline-offset:2px;}
.payagree a{color:var(--lime);}
.payact{width:100%;justify-content:center;}
.payact.is-locked{opacity:.5;box-shadow:none;transform:none;}
.payagree{border-radius:10px;padding:6px 8px;margin-left:-8px;transition:background .25s ease,color .25s ease;}
.payagree.is-nudge{animation:agshake .5s cubic-bezier(.36,.07,.19,.97) both;background:rgba(168,232,12,.1);color:var(--ink);}
.payagree.is-nudge input{outline:2px solid var(--lime);outline-offset:3px;border-radius:4px;animation:agpulse 1s ease 2;}
/* мобильный: согласие — комфортная тап-карточка, а не мелкая строка */
@media(max-width:700px){
  .payagree{margin:6px 0 14px;padding:13px 14px;gap:12px;align-items:center;border:1px solid var(--line-2);background:rgba(255,255,255,.03);border-radius:13px;font-size:13px;line-height:1.5;}
  .payagree input,.pj-agree input{width:22px;height:22px;margin-top:0;background-size:16px 16px;}
}
@keyframes agshake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-5px)}40%,60%{transform:translateX(5px)}}
@keyframes agpulse{0%,100%{box-shadow:0 0 0 0 rgba(168,232,12,.5)}50%{box-shadow:0 0 0 7px rgba(168,232,12,0)}}
@media(prefers-reduced-motion:reduce){.payagree.is-nudge{animation:none}.payagree.is-nudge input{animation:none}}
.payact.is-locked{cursor:pointer;}
.payact:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none;}
.paydemo{margin:10px 0 0;font-size:11.5px;color:var(--faint);}
.paylist{margin:0 0 12px;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px;}
.paylist li{position:relative;padding-left:16px;font-size:12px;line-height:1.5;color:var(--muted);}
.paylist li::before{content:"";position:absolute;left:2px;top:8px;width:5px;height:5px;border-radius:50%;background:var(--lime);}
.cmodal--pay [hidden]{display:none!important;}
/* ---------- поповер уведомлений ---------- */
.top{position:relative;}
.notifpop{position:absolute;top:calc(100% + 8px);right:14px;z-index:120;width:min(360px,calc(100vw - 40px));border-radius:16px;border:1px solid var(--line);background:var(--card-2);box-shadow:0 24px 60px -20px rgba(0,0,0,.6);padding:8px;animation:vfade .18s var(--ease);}
.notifpop__h{padding:8px 12px 6px;font-family:'Space Grotesk',sans-serif;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
/* открытие/закрытие 1:1 как у меню профиля — без морфа радиуса (13.09): тот же сдвиг и проявление.
   ЗАМЕЧАНИЕ: закрытый `max-height:0` здесь всячески перебивался поздним правилом
   со своим скроллером (`max-height:min(62vh,430px)`), то есть всю анимацию держали радиус и отступы —
   именно они и читались как «сворачивание кругом». */
.notifpop{overflow:hidden;opacity:0;visibility:hidden;padding:8px;border-radius:16px;animation:none;transform:translateY(-6px);transition:none;}
.notifpop.is-on{opacity:1;visibility:visible;transform:none;transition:opacity .2s var(--ease),transform .22s var(--ease);}
.notifpop>*{opacity:0;transform:translateY(-7px);transition:background .18s var(--ease);}
.notifpop.is-on>*{opacity:1;transform:none;transition:opacity .3s var(--ease),transform .34s var(--ease),background .18s var(--ease);}
/* закрытие мгновенное: задержки стаггера стоят только на открытом состоянии */
.notifpop.is-on>*:nth-child(1){transition-delay:.08s}
.notifpop.is-on>*:nth-child(2){transition-delay:.13s}
.notifpop.is-on>*:nth-child(3){transition-delay:.18s}
.notifpop.is-on>*:nth-child(4){transition-delay:.22s}
.notifpop.is-on>*:nth-child(5){transition-delay:.26s}
.notifpop__r{display:flex;flex-direction:column;gap:3px;width:100%;text-align:left;padding:10px 12px;border:0;border-radius:14px;background:none;color:var(--ink);font-size:13px;line-height:1.45;cursor:pointer;}
/* СТРОКА СОБЫТИЯ — ТЕКСТ ПЛЮС ДАТА (14.09): время тише события и никогда не спорит с ним за внимание. */
.notifpop__tx{display:block;}
.notifpop__w{display:block;font-size:11.5px;line-height:1.2;color:var(--faint);letter-spacing:.01em;}
/* НЕПРОЧИТАННОЕ — ЛАЙМОВАЯ ТОЧКА СЛЕВА: пока событий стало много, нужен признак «что нового». */
.notifpop__i.is-new .notifpop__tx{position:relative;padding-left:14px;}
.notifpop__i.is-new .notifpop__tx::before{content:'';position:absolute;left:1px;top:6px;width:6px;height:6px;border-radius:50%;background:var(--lime);}
.notifpop__r:hover{background:rgba(255,255,255,.055);}
.notifpop__none{margin:2px 0 6px;padding:0 12px;font-size:13px;color:var(--muted);}
.notifpop__ft{margin:6px 0 2px;padding:8px 12px 2px;border-top:1px solid var(--line-2);font-size:11.5px;color:var(--faint);}
@media(max-width:860px){.notifpop{left:50%;right:auto;transform:translateX(-50%);width:min(360px,calc(100vw - 28px));}}
@media(max-width:560px){.payf{grid-template-columns:1fr;}.paysteps{gap:5px;}.pstep{padding:5px 9px;}}
.bfm__r b{font-weight:500;color:var(--ink);min-width:0;overflow-wrap:anywhere;line-height:1.45;}
.bfm__act{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;}
@media(max-width:700px){.bfm__act>*{flex:1 1 100%;justify-content:center;min-height:46px;}}

/* ---------- механика маршрута: подсказка «дальше», сводка, достройка ---------- */
.pjslots{margin-top:10px;}
.pj-why--nocta{}
.pj-why{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px;padding:15px 18px;border:1px solid rgba(168,232,12,.28);border-radius:16px;background:rgba(168,232,12,.05);}
.pj-why__k{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--lime);}
.pj-why b{font:600 14.5px/1.2 'Space Grotesk',sans-serif;color:var(--ink);}
.pj-why__d{flex:1 1 220px;min-width:0;font-size:12.5px;line-height:1.45;color:var(--muted);}
.pj-sum{margin-top:16px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.015));overflow:hidden;}
.pj-sum__h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);}
.pj-sum__h b{font:600 13px/1 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:.02em;}
.pj-sum__r{display:grid;grid-template-columns:132px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid rgba(255,255,255,.05);}
.pj-sum__r:first-of-type{border-top:0;}
.pj-sum__k{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.pj-sum__r b{font-size:14px;color:var(--ink);min-width:0;overflow-wrap:anywhere;}
.pj-sum__n{font:600 12px/1 'Space Grotesk',sans-serif;color:var(--lime);white-space:nowrap;font-variant-numeric:tabular-nums;}
@media(max-width:640px){.pj-sum__r{grid-template-columns:1fr;gap:4px;padding:12px 15px;}.pj-sum__n{white-space:normal;}.pjslots{margin-top:10px;}
.pj-why--nocta{}
.pj-why{padding:14px 15px;}
.pj-why>.mini{width:100%;justify-content:center;min-height:44px;}}

/* ---------- позиция заказа и цепочка исполнения ---------- */
.pj-pos{margin-top:clamp(16px,2vw,22px);border:0;background:none;border-radius:0;overflow:visible;}
.pj-pos__h{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:0 2px 12px;border:0;}
.pj-pos__h b{font:600 13px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
.pj-pos__h span{flex:1 1 240px;min-width:0;font-size:12.3px;line-height:1.45;color:var(--muted);}
.pj-pos--empty{border-color:rgba(168,232,12,.3);background:rgba(168,232,12,.05);}
.pj-pos--empty .pj-pos__h{border-bottom:0;flex-wrap:wrap;padding-bottom:4px;}
.pj-pos--empty>.mini{margin:0 18px 16px;}
.pj-pos__r{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid rgba(255,255,255,.05);}
.pj-pos__r:first-of-type{border-top:0;}
.pj-pos__lim{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);}
.pj-pos__tot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding:13px 18px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025);}
.pj-pos__tot b{font:600 14px/1 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;}
/* согласие ПД — канон форм сайта */
.pj-agree{display:flex;align-items:flex-start;gap:9px;margin:2px 0 2px;cursor:pointer;}

.pj-agree span{font-size:12.2px;line-height:1.45;color:var(--muted);}
.pj-agree a{color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.3);}
.pj-agree a:hover{color:var(--lime-ink,#bdf52e);}
.pj-form__in.is-nudge{animation:agshake .5s cubic-bezier(.36,.07,.19,.97) both;border-color:var(--warn);}
@media(prefers-reduced-motion:reduce){.pj-form__in.is-nudge{animation:none}}
.pj-form__two{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
@media(max-width:640px){.pj-pos__i{grid-template-columns:48px minmax(0,1fr);grid-template-areas:"p b" "s s" "a a";gap:8px 12px;padding:14px 15px;}
  .pj-pos__ph{grid-area:p;width:48px;height:48px}.pj-pos__b{grid-area:b}.pj-pos__s{grid-area:s;white-space:normal}
  .pj-pos__act{grid-area:a;flex-wrap:wrap;gap:6px}.pj-pos__act .mini{flex:1 1 auto;justify-content:center}}
.pj-pos__k{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.pj-pos__r b{font-size:14px;color:var(--ink);overflow-wrap:anywhere;}
.pj-pos__r a{font-size:13.4px;color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.3);overflow-wrap:anywhere;}
.pj-pos__n{font:600 12px/1 'Space Grotesk',sans-serif;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;}
.pj-pos__note{margin:8px 2px 0;padding:0;font-size:12.3px;line-height:1.5;color:var(--warn);}
.pj-done--part{border-color:var(--line);background:rgba(255,255,255,.03);}
.pj-done--flow{flex-direction:column;align-items:flex-start;}
@media(max-width:640px){.pj-pos__r{grid-template-columns:1fr;gap:4px;padding:12px 15px;}.pj-pos__n{white-space:normal;}}

/* ---------- два состояния проекта: товар есть / нужна идея ---------- */
/* зафиксированное состояние — статус, а не тумблер: лаймовая точка + подпись */
.tgl[data-on="idea"] .tgl__k{left:50%;}
.tgl>button.tgl__t[aria-current="true"]{color:var(--ink-on-lime);}
.pjslot__ask{flex:0 0 auto;align-self:center;margin:0;padding:7px 13px;border:1px solid rgba(168,232,12,.3);border-radius:999px;background:rgba(168,232,12,.07);font:600 11.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--lime);cursor:pointer;white-space:nowrap;transition:background .2s var(--ease),border-color .2s var(--ease);}
.pjslot__ask:hover{background:rgba(168,232,12,.14);border-color:rgba(168,232,12,.5);}
/* цена шага живёт В кнопке: «пройти шаг · 3 токена» — тем же тоном, без сигнальных цветов */
.mini__cost{font-style:normal;font-weight:600;opacity:.62;white-space:nowrap;font-variant-numeric:tabular-nums;}
.mini__cost::before{content:"·";margin:0 5px 0 6px;opacity:.7;}
.pjslot__opt{font:600 10px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);white-space:nowrap;}
.pjslot__opt.is-need{color:var(--warn);}
.pjslot__opt.is-skip{color:var(--muted);}
.pjslot.is-skipped{opacity:.72;}
/* минимум партии не пройден — кнопка передачи неактивна, текст объясняет, сколько добрать */
.pj-done--soft{border-color:var(--line);background:rgba(255,255,255,.025);}
.pj-done--soft .pj-done__go{border-color:var(--line);background:rgba(255,255,255,.04);color:var(--muted);}
.pj-done--soft .pj-done__go:hover{border-color:rgba(168,232,12,.4);color:var(--lime);background:rgba(168,232,12,.06);}
.pj-done--block{border-color:var(--line);background:rgba(255,255,255,.03);}
.pj-done__go[disabled]{opacity:.55;cursor:not-allowed;border-color:var(--line);background:rgba(255,255,255,.04);color:var(--muted);box-shadow:none;}
@media(max-width:640px){.pj-two{grid-template-columns:1fr;}.pj-mode{flex-direction:column;align-items:stretch;}.pj-mode .tgl{width:100%;}}

/* ---------- позиции проекта: вкладки вариаций + поля как в бланке ---------- */

.pj-pos__list{margin:0;padding:0;}
/* карточка товара — наш дорогой графит: тёмная плита с мягким верхним светом */
.pj-pos__list .vk-row{padding:clamp(16px,1.6vw,20px);border-radius:18px;gap:12px 18px;background:linear-gradient(155deg,#1b1e23 0%,#101216 48%,#0a0b0d 100%);border-color:rgba(255,255,255,.09);box-shadow:0 24px 64px rgba(0,0,0,.35);}
.pj-pos__list .vk-row .vk-link input,.pj-pos__list .vk-row .vk-inp,.pj-pos__list .vk-row .vk-qty,.pj-pos__list .vk-row .vk-note input{background:rgba(255,255,255,.028);border-color:rgba(255,255,255,.1);}
.pj-pos__list .vk-row--todo{border-color:rgba(232,178,58,.28);}
.pj-pos .vk-add{display:none;}
/* «очистить» — тихая серая кнопка с корзиной в правом нижнем углу карточки товара */
.pj-pos__list .vk-row__ft{justify-content:flex-end;}
.pos-clear{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:0;border-radius:10px;background:none;color:var(--faint);font:600 11.6px/1 'Space Grotesk',sans-serif;text-transform:lowercase;cursor:pointer;transition:color .2s var(--ease),background .2s var(--ease);}
.pos-clear svg{width:15px;height:15px;}
.pos-clear:hover{color:var(--risk);background:rgba(239,106,86,.1);}
.pos-clear:focus-visible{outline:2px solid rgba(239,106,86,.6);outline-offset:2px;}
/* свои характеристики — чипы с крестиком + строка добавления */
/* ручные поля цвета и размера — подписанные, во всю ширину */
.pj-pos__list .vk-g--man{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.pj-pos__list .man{display:flex;flex-direction:column;gap:5px;min-width:0;}
.pj-pos__list .man>b{margin:0;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);}
.pj-pos__list .man .vk-inp{width:100%;max-width:none;flex:none;height:42px;font-size:13.6px;}
@media(max-width:640px){.pj-pos__list .vk-g--man{grid-template-columns:1fr;}}
.pj-pos__list .vk-g--own{display:grid;grid-template-columns:1fr;gap:8px;align-items:start;}
.pj-pos__list .vk-g--own>b{margin:0;}
.pj-pos__list .spec-own__list{display:flex;flex-wrap:wrap;gap:8px;}
/* поля характеристики — во всю ширину карточки, крупные под палец */
.pj-pos__list .spec-add{display:grid;width:100%;grid-template-columns:minmax(0,.9fr) minmax(0,1.35fr) auto;gap:8px;}
.pj-pos__list .spec-add .vk-inp{width:100%;max-width:none;flex:none;height:42px;font-size:13.6px;}
.pj-pos__list .spec-add .mini{height:42px;padding:0 18px;white-space:nowrap;}
@media(max-width:640px){.pj-pos__list .spec-add{grid-template-columns:1fr;}.pj-pos__list .spec-add .mini{width:100%;justify-content:center;}}
.spec-own{display:inline-flex;align-items:center;gap:7px;padding:6px 8px 6px 11px;border:1px solid rgba(168,232,12,.3);border-radius:999px;background:rgba(168,232,12,.06);font-size:12.2px;}
.spec-own b{font:600 11px/1 'Space Grotesk',sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);}
.spec-own span{color:var(--ink);}
.spec-own__x{width:18px;height:18px;border:0;border-radius:50%;background:rgba(255,255,255,.08);color:var(--muted);font-size:13px;line-height:1;cursor:pointer;}
.spec-own__x:hover{background:rgba(239,106,86,.25);color:#ff9f8c;}

.pj-pos__hint{margin:8px 2px clamp(18px,2.2vw,26px);padding:0;font-size:11.8px;line-height:1.5;color:var(--faint);}
.pj-pos__lim2{margin:8px 2px 0;padding:0;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);}
.vk-g__lb2{margin-left:6px;}
.vk-inp--num{max-width:96px;font-variant-numeric:tabular-nums;}
.vk-sum{margin-left:4px;font:600 13px/1 'Space Grotesk',sans-serif;color:var(--lime);font-variant-numeric:tabular-nums;}
/* выбор позиций из бланка галочками */
.vkpick{display:flex;flex-direction:column;gap:8px;max-height:min(48vh,420px);overflow:auto;padding:2px;}
.vkpick__i{display:grid;grid-template-columns:20px 46px minmax(0,1fr);align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025);cursor:pointer;transition:border-color .2s var(--ease),background .2s var(--ease);}
.vkpick__i:hover{border-color:rgba(168,232,12,.32);}
.vkpick__i:has(input:checked){border-color:rgba(168,232,12,.5);background:rgba(168,232,12,.06);}
.vkpick__i input{-webkit-appearance:none;appearance:none;flex:0 0 auto;width:20px;height:20px;margin-top:1px;border-radius:6px;background:#fff;border:1px solid rgba(255,255,255,.5);cursor:pointer;background-repeat:no-repeat;background-position:center;background-size:15px 15px;transition:border-color .2s ease,box-shadow .2s ease;}
.vkpick__i input:hover{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.1);}
.vkpick__i input:checked{border-color:#8ac43a;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.2 8.4l3 3 6.6-6.6' stroke='%230a0b0a' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
.vkpick__i input:focus-visible{outline:2px solid rgba(168,232,12,.75);outline-offset:2px;}
.vkpick__i img,.vkpick__ph{width:46px;height:46px;border-radius:10px;object-fit:cover;background:#101214;border:1px solid var(--line);}
.vkpick__b{display:flex;flex-direction:column;gap:2px;min-width:0;}
.vkpick__b b{font:600 13.4px/1.25 'Space Grotesk',sans-serif;overflow-wrap:anywhere;}
.vkpick__b span{font-size:12.2px;color:var(--muted);}

/* ---------- лист выбора конфигурации (как в карточке 1688) ---------- */
.cmodal--sku{max-width:600px;}
.sku-moq{margin:0 0 12px;font:600 11.4px/1 'Space Grotesk',sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--warn);}
.sku-list{margin:4px 0 0;border:1px solid var(--line);border-radius:14px;overflow:hidden;}
.sku-row{display:grid;width:100%;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 14px;border:0;border-top:1px solid rgba(255,255,255,.05);background:none;color:inherit;text-align:left;cursor:pointer;transition:background .2s var(--ease);}
.sku-row:hover:not(.is-out){background:rgba(168,232,12,.07);}
.sku-row__go{font:600 11.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--lime);white-space:nowrap;}
.sku-row.is-out{cursor:not-allowed;}
.sku-row.is-out .sku-row__go{color:var(--faint);}
.sku-row:first-of-type{border-top:0;}
.sku-row__ph{width:44px;height:44px;border-radius:10px;object-fit:cover;background:#101214;}
.sku-row__b{display:flex;flex-direction:column;gap:2px;min-width:0;}
.sku-row__b b{font:600 13px/1.25 'Space Grotesk',sans-serif;overflow-wrap:anywhere;}
.sku-row__b span{font-size:11.8px;color:var(--faint);font-variant-numeric:tabular-nums;}
.sku-row.is-out{opacity:.5;}
.sku-empty{margin:0;padding:14px;font-size:12.6px;color:var(--faint);}
/* зафиксированная конфигурация в карточке товара */
@media(max-width:640px){.sku-row{grid-template-columns:40px minmax(0,1fr);grid-template-areas:"p b" "g g";gap:8px 12px}
  .sku-row__ph{grid-area:p}.sku-row__b{grid-area:b}.sku-row__go{grid-area:g;justify-self:start}
}

/* «нужного варианта нет» — своя конфигурация словами */
/* единое поле «конфигурация» в карточке товара */
.pj-pos__list .vk-g--spec{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;}
.pj-pos__list .vk-g--spec>b{grid-column:1/-1;margin:0;}
.spec-val{display:flex;flex-direction:column;gap:2px;min-width:0;padding:10px 13px;border:1px solid rgba(168,232,12,.28);border-radius:11px;background:rgba(168,232,12,.05);font:600 13.4px/1.3 'Space Grotesk',sans-serif;overflow-wrap:anywhere;}
.spec-val i{font:500 11.6px/1 'Inter',sans-serif;font-style:normal;color:var(--faint);font-variant-numeric:tabular-nums;}
.cfg-open{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;padding:14px 16px;border:1px solid rgba(168,232,12,.28);border-radius:14px;background:rgba(168,232,12,.05);cursor:pointer;text-align:left;transition:border-color .2s var(--ease),background .2s var(--ease),transform .18s var(--ease);}
.cfg-open:hover{border-color:var(--lime);background:rgba(168,232,12,.08);transform:translateY(-1px);}
.cfg-open__b{display:flex;flex-direction:column;gap:3px;min-width:0;}
.cfg-open__b b{font:600 13px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
.cfg-open__b span{font-size:12.2px;line-height:1.4;color:var(--muted);}
.cfg-open__go{display:inline-flex;align-items:center;gap:7px;font:600 12px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--lime);white-space:nowrap;}
.cfg-open__go svg{width:14px;height:14px;}
@media(max-width:640px){.cfg-open{flex-direction:column;align-items:flex-start;}}

/* панель конфигурации внутри карточки товара (без всплывающего окна) */
.cfgp{position:relative;overflow:hidden;margin-top:2px;padding:15px 14px 14px;border:1px solid rgba(255,255,255,.11);border-radius:16px;
  background:linear-gradient(180deg,#121418 0%,#0b0c0f 62%,#08090b 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 14px 34px -26px rgba(0,0,0,.9);}
.cfgp::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,var(--lime),rgba(168,232,12,.1) 62%,transparent);}
.cfgp__h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.cfgp__h b{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);}
.cfgp__h>span{font:600 11.2px/1 'Space Grotesk',sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--warn);}
.cfgp__x{margin-left:auto;width:30px;height:30px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.03);color:var(--muted);font-size:16px;line-height:1;cursor:pointer;transition:color .2s var(--ease),border-color .2s var(--ease);}
.cfgp__x:hover{color:var(--ink);border-color:rgba(168,232,12,.4);}
.cfgp .sku-list{background:rgba(255,255,255,.022);border-color:rgba(255,255,255,.1);}
.cfgp .sku-row:hover:not(.is-out){background:rgba(168,232,12,.08);}
.cfgp .sku-row__ph{background:#0d0f12;}

.pj-pos__list .vk-g--price{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:8px 12px;}
.pj-pos__list .vk-g--price>b{grid-column:1/-1;margin:0;}
.pr-val{padding:10px 14px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.03);font:600 14px/1 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap;}
.pr-val i{font:500 11.4px/1 'Inter',sans-serif;font-style:normal;color:var(--faint);}
.pj-pos__list .vk-g--price .vk-inp--num{max-width:none;width:100%;}
.pr-step{font:600 11px/1 'Space Grotesk',sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);white-space:nowrap;}
.pr-sum{font-size:12.6px;color:var(--muted);font-variant-numeric:tabular-nums;}
/* ОГОВОРКА «ОТ» — С ПЕРЕНОСОМ (02.10): у длинной подсказки стоял общий nowrap ступеней, и на телефоне она выезжала за блок
   цены (607 px при блоке 326). В сетке телефона — своей строкой под ценой, в ряду ПК — сжимается с переносом. */
.pr-step.pr-step--from{white-space:normal;line-height:1.35;min-width:0;}
.pj-pos__list .vk-g--price>.pr-step--from{grid-column:1/-1;grid-row:3;}
.pj-pos__list .vk-line>.vk-g--price:has(>.pr-step--from){flex-wrap:wrap;}
/* В РЯДУ ПК — ПОСЛЕДНИМ С ОСНОВОЙ 260 (02.10, нашёл верификатор): с flex:1 1 auto в ряду без переноса оговорка на 924 px сжималась
   до 98 px в шесть строк. Теперь хватает места — в одну строку с ценой, нет — своей строкой под ценой и суммой (как на телефоне). */
.pj-pos__list .vk-line>.vk-g--price>.pr-step--from{flex:1 1 260px;order:3;}
.pr-sum b{font-family:'Space Grotesk',sans-serif;font-size:14px;color:var(--lime);}
.pj-pos__list .vk-inp--wide{width:100%;max-width:none;flex:none;height:42px;font-size:13.6px;}

/* ---------- шаг без данных: юрлицо не раскрыто + самостоятельный запрос USCC ---------- */
.pj-nodata{margin-top:10px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03);}
.pj-nodata__h{display:flex;flex-direction:column;gap:3px;}
.pj-nodata__h b{font:600 13px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
.pj-nodata__h span{font-size:12.3px;line-height:1.45;color:var(--muted);}
.pj-nodata__acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:11px;}
.pj-nodata__n{flex:1 1 200px;font-size:11.8px;line-height:1.4;color:var(--faint);}
.pj-ask{margin:0 0 14px;padding:15px 16px;border:1px solid var(--line);border-left:2px solid rgba(168,232,12,.55);border-radius:14px;background:rgba(255,255,255,.03);}
.pj-ask__t{margin:0;font-size:14.4px;line-height:1.6;color:var(--ink);white-space:pre-line;overflow-wrap:anywhere;}
.pj-ask__ru{margin:10px 0 0;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);font-size:12.3px;line-height:1.5;color:var(--muted);}

/* ---------- ПРОГОН ШАГА (лист внутри общей модалки кабинета) ---------- */
.cmodal--run{width:min(780px,100%);max-width:780px;padding-top:18px;padding-bottom:16px;}
.cmodal--run>.cmodal__note{margin-top:6px;}
.cmodal--run>.cmodal__d{margin-bottom:2px;}
.kbr-in{margin-top:11px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);overflow:hidden;}
/* плоский вид: подпись + чипы данных в одну-две строки */
.kbr-in--flat{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 12px;}
.kbr-in--flat .kbr-in__h{padding:0;border:0;}
.kbr-in__c{display:inline-flex;align-items:baseline;gap:6px;padding:4px 9px;border-radius:999px;background:rgba(255,255,255,.05);font:600 12.2px/1.2 'Space Grotesk',sans-serif;color:var(--ink);}
.kbr-in__c>i{font-style:normal;font-weight:500;font-size:11px;color:var(--faint);}
.kbr-in__h{padding:8px 14px;border-bottom:1px solid var(--line);font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.kbr-in__r{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:8px 14px;border-top:1px solid rgba(255,255,255,.05);}
.kbr-in__r:first-of-type{border-top:0;}
.kbr-in__r>span{flex:0 0 auto;font-size:12px;color:var(--muted);}
.kbr-in__r>b{min-width:0;font:600 12.6px/1.3 'Space Grotesk',sans-serif;color:var(--ink);text-align:right;overflow-wrap:anywhere;}
.kbr-f{display:block;margin-top:9px;}
.kbr-f>span{display:block;margin-bottom:5px;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.kbr-f>input{width:100%;height:40px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03);color:var(--ink);font:500 15px/1 'Inter',sans-serif;transition:border-color .2s var(--ease);}
.kbr-f>input:focus{outline:none;border-color:rgba(168,232,12,.5);}
.kbr-f>i{display:block;margin-top:6px;font-size:11.8px;font-style:normal;line-height:1.45;color:var(--faint);}
.kbr-ask{margin-top:10px;border-color:rgba(168,232,12,.32);background:rgba(168,232,12,.07);color:var(--lime);}
.kbr-ask:hover{border-color:rgba(168,232,12,.55);background:rgba(168,232,12,.13);color:var(--lime-ink,#bdf52e);}
.kbr-form{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
.kbr-form__h{display:flex;flex-direction:column;gap:3px;margin-bottom:4px;}
.kbr-form__h b{font:600 13px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
.kbr-form__h span{font-size:12px;line-height:1.45;color:var(--muted);}
.kbr-modes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;}
.kbr-mode{display:flex;flex-direction:column;gap:2px;padding:9px 9px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03);cursor:pointer;transition:border-color .2s var(--ease),background .2s var(--ease);}
.kbr-mode b{font:600 14px/1 'Space Grotesk',sans-serif;color:var(--ink);text-transform:lowercase;}
.kbr-mode span{font-size:11.8px;color:var(--faint);}
.kbr-mode:hover{border-color:rgba(168,232,12,.34);}
.kbr-mode.is-on{border-color:var(--lime);background:var(--lime);}
.kbr-mode.is-on b{color:var(--ink-on-lime);}
.kbr-mode.is-on span{color:rgba(10,11,10,.62);}
.kbr-two{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px;}
/* четыре колонки включаются там же, где лист перестаёт быть полноэкранным (701px),
   иначе в полосе 701–819px поля падают в два ряда и окно начинает скроллиться.
   Метке задана единая высота: тумблер внутри неё не должен толкать поле вниз. */
@media(min-width:701px){.cmodal--run .kbr-quad{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:8px;}
/* РЯД ДОБОРА (цена + название) — ДВЕ КОЛОНКИ, А НЕ ЧЕТЫРЕ (14.09, нашёл верификатор):
   у `.kbr-two` вес (0,1,0), и правило выше его перебивало — два поля вставали в левую половину
   ряда по 182 px, и название товара не влезало в собственное поле. */
.cmodal--run .kbr-quad.kbr-ask2{grid-template-columns:repeat(2,minmax(0,1fr));}
.cmodal--run .kbr-quad>.kbr-f{margin-top:0;}
.cmodal--run .kbr-quad>.kbr-f>span{min-height:24px;display:flex;align-items:center;gap:8px;flex-wrap:nowrap;}
.cmodal--run .kbr-quad>.kbr-f>span:has(.kbr-sc){justify-content:space-between;}}
/* ПК: окно шага дышит — вертикальный ритм и элементы управления крупнее на ~12 %
   (ширина уже позволяет; на коротких экранах окно скроллится, как и любая модалка) */
@media(min-width:701px){
  .cmodal--run{width:min(820px,100%);max-width:820px;}
  @media(min-height:720px){.cmodal--run{padding-top:24px;padding-bottom:20px;}}
  .cmodal--run .kbr-in{margin-top:14px;}
  .cmodal--run .kbr-in--flat{gap:8px;padding:11px 14px;}
  .cmodal--run .kbr-in__c{padding:6px 11px;font-size:12.8px;}
  .cmodal--run .kbr-in__r{padding:10px 16px;}
  .cmodal--run .kbr-mode{padding:12px 11px;gap:3px;}
  .cmodal--run .kbr-mode b{font-size:15px;}
  .cmodal--run .kbr-mode span{font-size:12.2px;}
  .cmodal--run .kbr-quad{gap:12px;margin-top:14px;}
  .cmodal--run .kbr-f{margin-top:14px;}
  .cmodal--run .kbr-f>span{margin-bottom:7px;font-size:11px;}
  .cmodal--run .kbr-f>input{height:48px;font-size:15.5px;}
  .cmodal--run .kbr-f--unit>input{font-size:17px;}
  .cmodal--run .kbr-quad>.kbr-f>span{min-height:30px;}
  /* у метки с тумблером своё margin-bottom ниже по файлу — повторяем в этом скоупе, иначе поле веса встаёт на 2px выше */
  .cmodal--run .kbr-quad>.kbr-f>span:has(.kbr-sc){margin-bottom:7px;}
  .cmodal--run .kbr-f>span:has(.kbr-sc){flex-wrap:nowrap;white-space:nowrap;}
  .cmodal--run .kbr-sc{padding:3px;background:rgba(255,255,255,.05);}
  .cmodal--run .kbr-sc__b{min-height:28px;padding:0 16px;font-size:12.4px;letter-spacing:.01em;}
  .cmodal--run .kbr-scrow{margin-top:14px;}
  .cmodal--run .kbr-sc__b.is-on{box-shadow:0 2px 10px -4px rgba(168,232,12,.8);}
  .cmodal--run .kbr-icb{padding:8px 14px;font-size:12.4px;}
  .cmodal--run .kbr-go{min-height:54px;font-size:14px;}
  /* воздух между группами — только когда высота позволяет, иначе окно начнёт скроллиться */
  @media(min-height:720px){
    .cmodal--run .kbr-modes{gap:9px;}
    .cmodal--run .kbr-quad{margin-top:20px;gap:14px;}
    .cmodal--run .kbr-lb{margin:20px 0 10px;}
    .cmodal--run .kbr-inco{gap:8px;}
    .cmodal--run .kbr-go{margin-top:20px;}
    .cmodal--run .kbr-hint{margin-top:12px;}
  }
}
/* смысл числа: своя строка «вес и объём указаны · за 1 шт | за партию» */
.kbr-scrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;}
.kbr-scrow>.kbr-lb{margin:0;}
/* смысл числа: переключатель «за 1 шт» ⇄ «за партию» рядом с подписью поля */
.kbr-f>span:has(.kbr-sc){display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:5px;}
.kbr-sc{display:inline-flex;padding:2px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.03);}
.kbr-sc__b{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border:0;border-radius:999px;background:transparent;color:var(--faint);font:600 10.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:0;cursor:pointer;transition:color .2s var(--ease),background .2s var(--ease);}
.kbr-sc__b:hover{color:var(--muted);}
.kbr-sc__b.is-on{background:var(--lime);color:var(--ink-on-lime);}
/* телефон: тумблер — отдельная строка во всю ширину, половины по 44px: попадаешь пальцем */
@media(max-width:700px){
  .kbr-f>span:has(.kbr-sc){flex-wrap:wrap;white-space:normal;gap:8px;margin-bottom:9px;}
  .kbr-sc{width:100%;flex-basis:100%;padding:3px;}
  .kbr-scrow{gap:8px;}
  .kbr-sc__b{flex:1 1 50%;min-height:44px;font-size:13px;}
}
.kbr-f--unit>input{font-size:16px;}
.kbr-f--unit>input::placeholder{font-size:12.6px;color:var(--faint);}
/* incoterms — компактный ряд пилюль: состав расходов покупателя */
.kbr-lb{display:block;margin:9px 0 5px;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.kbr-inco{display:flex;gap:6px;flex-wrap:wrap;}
/* телефон: метка и ряд инкотермс дышат — иначе строка «условие поставки» липнет к полям выше */
@media(max-width:700px){
  .kbr-lb{margin:16px 0 8px;line-height:1.35;letter-spacing:.06em;}
  .kbr-inco{gap:8px;}
  .kbr-icb{padding:10px 14px;font-size:12px;}
}
.kbr-icb{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.03);color:var(--muted);font:600 11.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;cursor:pointer;transition:color .18s var(--ease),border-color .18s var(--ease),background .18s var(--ease);}
.kbr-icb:hover{color:var(--ink);border-color:rgba(168,232,12,.35);}
.kbr-icb.is-on{border-color:var(--lime);background:rgba(168,232,12,.09);color:var(--lime);}
.kbr-hint{margin:8px 0 0;font-size:11.4px;line-height:1.45;color:var(--faint);}
.kbr-go{width:100%;margin-top:11px;min-height:45px;}
.kbr-go[disabled]{opacity:.5;cursor:not-allowed;background:rgba(255,255,255,.05);color:var(--muted);box-shadow:none;border-color:var(--line);}
.kbr-prog{margin-top:16px;display:flex;flex-direction:column;gap:2px;}
.kbr-prog__r{display:flex;align-items:center;gap:11px;padding:12px 2px;border-top:1px solid rgba(255,255,255,.05);font-size:13.2px;color:var(--faint);}
.kbr-prog__r:first-child{border-top:0;}
.kbr-prog__r i{width:16px;height:16px;flex:0 0 auto;border-radius:50%;border:1.6px solid rgba(255,255,255,.16);position:relative;}
.kbr-prog__r.is-cur{color:var(--ink);}
.kbr-prog__r.is-cur i{border-color:var(--lime);border-top-color:transparent;animation:kbrSpin .7s linear infinite;}
.kbr-prog__r.is-ok{color:var(--muted);}
.kbr-prog__r.is-ok i{border-color:var(--lime);background:var(--lime);}
.kbr-prog__r.is-ok i::after{content:"";position:absolute;left:50%;top:50%;width:5.5px;height:2.8px;border-left:1.8px solid #0a0b0a;border-bottom:1.8px solid #0a0b0a;border-radius:.5px;transform:translate(-50%,-72%) rotate(-45deg);}
@keyframes kbrSpin{to{transform:rotate(360deg)}}
.kbr-res{position:relative;margin-top:14px;border:1px solid var(--line-2,rgba(255,255,255,.06));border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.032),rgba(255,255,255,.012));overflow:hidden;}
.kbr-res::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--lime,#a8e80c);opacity:.7;}
.kbr-res__h{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:14px;border-bottom:1px solid rgba(255,255,255,.07);}
.kbr-res__h b{font:600 15px/1.2 'Space Grotesk',sans-serif;color:var(--ink);}
.kbr-res__r{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:11px 14px;border-top:1px solid rgba(255,255,255,.05);}
.kbr-res__r:first-of-type{border-top:0;}
.kbr-res__r>span{flex:0 0 auto;font-size:12.4px;color:var(--muted);}
.kbr-res__r>b{min-width:0;font:600 13px/1.4 'Space Grotesk',sans-serif;color:var(--ink);text-align:right;overflow-wrap:anywhere;}
.kbr-res--empty{border-color:rgba(232,178,58,.35);background:rgba(232,178,58,.05);padding:14px;}
.kbr-res--empty p{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--ink);}
.kbr-res__ref{color:var(--muted)!important;font-size:12.2px!important;}
@media(max-width:700px){
  .kbr-modes{grid-template-columns:1fr 1fr;gap:8px;}
  .kbr-in{margin-top:14px;}
  .kbr-f{margin-top:14px;}
  .kbr-go{margin-top:16px;}
  .kbr-icb{flex:1 1 auto;text-align:center;min-height:38px;}
  .kbr-two{grid-template-columns:1fr;}
  .kbr-in__r,.kbr-res__r{flex-direction:column;gap:3px;}
  .kbr-in__r>b,.kbr-res__r>b{text-align:left;}
  .kbr-f>input{height:48px;font-size:16px;}
  .kbr-go{min-height:50px;}
}

/* запрос веса и объёма у поставщика (чип в шаге «экономика») */
/* вспомогательное действие: лаймовый контур и текст, но БЕЗ заливки —
   заливка занята главными кнопками карточки («пройти шаги», «отдать в работу») */
.pos-ask{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border:1px solid rgba(168,232,12,.42);border-radius:999px;background:rgba(168,232,12,.07);color:var(--lime);font:600 12px/1 'Space Grotesk',sans-serif;text-transform:lowercase;cursor:pointer;transition:color .2s var(--ease),border-color .2s var(--ease),background .2s var(--ease);}
.pos-ask svg{width:15px;height:15px;}
.pos-ask:hover{color:var(--ink-on-lime);border-color:var(--lime);background:var(--lime);}
.cmodal__note a{color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.32);transition:border-color .2s var(--ease);}
.cmodal__note a:hover{border-bottom-color:var(--lime);}

/* ---------- готовность проекта ---------- */
.rdy{margin-top:14px;padding:15px 18px 16px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.02);}
.rdy__h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.rdy__k{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.rdy__h b{font:600 13.5px/1 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;}
.rdy__w{flex:1 1 240px;min-width:0;font-size:12.2px;line-height:1.45;color:var(--muted);}
.rdy__bar{display:block;height:5px;margin:11px 0 12px;border-radius:3px;background:var(--track);overflow:hidden;}
.rdy__bar i{display:block;height:100%;border-radius:3px;background:var(--lime);transition:width .5s var(--ease);}

.rdy__c i{font:700 10.5px/1 'Space Grotesk',sans-serif;font-style:normal;color:var(--faint);font-variant-numeric:tabular-nums;}
.rdy__c b{font:600 11.6px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--muted);}
.rdy__c svg{width:13px;height:13px;color:var(--lime);}

.pj-sum__ok{display:inline-flex;align-items:center;gap:5px;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.05em;text-transform:uppercase;color:var(--lime);white-space:nowrap;}
.pj-sum__ok svg{width:12px;height:12px;}
.pj-sum__r.is-skip b{color:var(--faint);font-weight:500;}
@media(max-width:640px){.rdy{padding:14px 15px;}.rdy__w{flex-basis:100%;}.pj-sum__ok{white-space:normal;}}

/* ---------- сделка: смета, договор, счёт, путь груза ---------- */
.pj-inwork{display:flex;align-items:center;gap:12px;width:100%;margin:0 0 var(--kb-gap);padding:14px 18px;border:1px solid rgba(168,232,12,.32);border-radius:16px;background:rgba(168,232,12,.05);cursor:pointer;color:var(--ink);text-align:left;transition:border-color .2s var(--ease),background .2s var(--ease),transform .18s var(--ease);}
.pj-inwork:hover{border-color:var(--lime);background:rgba(168,232,12,.08);transform:translateY(-1px);}
.pj-inwork b{font:600 13.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--ink);}
.pj-inwork span{flex:1 1 auto;min-width:0;font-size:12.2px;line-height:1.4;color:var(--muted);}
.pj-inwork svg{width:18px;height:18px;flex:0 0 auto;color:var(--lime);}
.qt{margin-top:14px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.015));overflow:hidden;}
.qt--dead{border-color:rgba(239,106,86,.35);}
.qt__h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line);}
.qt__r{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 18px;border-bottom:1px solid rgba(255,255,255,.05);}
.qt__r span{font-size:13px;color:var(--muted);}
.qt__r b{font:600 13.5px/1 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap;}
.qt__tot{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:15px 18px;background:rgba(168,232,12,.06);border-bottom:1px solid var(--line);}
.qt__tot span{font:600 12px/1 'Space Grotesk',sans-serif;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);}
.qt__tot b{font:700 clamp(19px,2vw,25px)/1 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;color:var(--lime);}
.qt__m{margin:0;padding:12px 18px;font-size:12.2px;line-height:1.5;color:var(--faint);border-bottom:1px solid var(--line);}
.qt__docs{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--line);}
.qt__docs b{font:600 11px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);margin-right:4px;}
.qt__act{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:16px 18px;}
.qt__act p{margin:0;flex:1 1 220px;min-width:0;font-size:12.2px;line-height:1.5;color:var(--muted);}
@media(max-width:640px){.qt__act{flex-direction:column;align-items:stretch;}.qt__act .btn{width:100%;justify-content:center;}.pj-inwork{flex-wrap:wrap;}}

.qt__sign{flex:1 1 100%;margin-top:2px;font-size:11.6px;line-height:1.45;color:var(--faint);}


/* мобильный: панель конфигурации не рисует свою рамку — на узком экране она
   читалась как «плашка в плашке» внутри карточки товара. Остаётся лаймовый
   волосок-разделитель сверху, список вариантов лежит прямо на карточке. */
@media(max-width:700px){
  #pj-pos .vk-main>.cfgp{margin:8px -2px 0;padding:13px 0 0;border:0;border-top:1px solid rgba(255,255,255,.12);border-radius:0;background:none;box-shadow:none;}
  #pj-pos .vk-main>.cfgp::before{display:none;}
  #pj-pos .vk-main>.cfgp .sku-list{background:none;border-radius:12px;}
  #pj-pos .vk-main>.cfgp .cfgp__h{margin-bottom:10px;}
}

/* количество и цена в одной строке — экономия высоты карточки товара (14.09, просьба владельца) */
.pj-pos__list .vk-line{display:flex;flex-direction:column;gap:10px;min-width:0;}
@media(min-width:701px){
  .pj-pos__list .vk-line{flex-direction:row;align-items:center;gap:10px 26px;flex-wrap:wrap;}
  .pj-pos__list .vk-line>.vk-g{flex:0 0 auto;}
  /* подпись цены — НА ОДНОЙ ОСИ С КОНТРОЛАМИ (14.09, нашёл верификатор): у количества
     она инлайн, у цены стояла над значением (grid-column:1/-1) и одна задавала высоту ряда —
     ряд читался двумя разными компонентами, а экономия места терялась наполовину. */
  .pj-pos__list .vk-line>.vk-g--price{display:flex;flex-wrap:nowrap;align-items:center;gap:8px 12px;flex:1 1 220px;min-width:0;}
  .pj-pos__list .vk-line>.vk-g--price>b{grid-column:auto;flex:0 0 auto;}
  .pj-pos__list .vk-line>.vk-g--price .vk-inp--num{width:120px;flex:0 0 auto;}
}
/* единственная правка поля: на ПК спецификация и цена в одну строку (на телефоне столбиком) */
@media(min-width:701px){
  #pj-pos .vk-main .spec-val{flex-direction:row;align-items:baseline;gap:12px;flex-wrap:wrap;}
}

/* фото товара в проекте — единственная позиция, поэтому крупнее, чем в бланке;
   на телефоне тянется во всю ширину карточки (правило бланка), высоту добираем */
/* ФОТО ИЗ ПОЗИЦИИ УБРАНО (14.09) — с ним ушла и колонка под него: без этой правки
   содержимое вставало в 132-пиксельную первую колонку, а вторая пустовала (нашёл верификатор). */
#pj-pos .vk-row{grid-template-columns:minmax(0,1fr);}

/* мобильный: чипы готовности — сетка 2×2 одинаковой ширины, иначе ряд рвётся по-разному */

/* мобильный: действие шага прижимаем к правому краю строки */
@media(max-width:700px){.pjslot__h>.mini{margin-left:auto;}.pjslot__ask{margin-right:auto;}}

/* отчёт по проекту: непройденные и пропущенные строки приглушены */
.pj-sum__c{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);margin-left:auto;}
.pj-sum__h .mini{margin-left:10px;}
.pj-sum__r.is-wait{opacity:.72;}
.pj-sum__r.is-wait b{color:var(--faint);font-weight:500;}
.pj-sum__go{margin-left:auto;font:600 11.5px/1 'Space Grotesk',sans-serif;color:var(--lime);text-decoration:none;display:inline-flex;align-items:center;gap:5px;}
.pj-sum__go svg{width:13px;height:13px;}
.pj-sum__go:hover{color:var(--lime-ink,#bdf52e);}
/* предварительный расчёт поставки — финал самостоятельной работы клиента */
.pc{margin-top:14px;border:1px solid var(--line-2,rgba(255,255,255,.06));border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.012));overflow:hidden;}
.pc__h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:15px 18px;border-bottom:1px solid var(--line);}
.pc__h b{font:600 13.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
.pc__h span{font-size:11.8px;color:var(--faint);}
.pc__r{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:11px 18px;border-top:1px solid rgba(255,255,255,.05);font-size:13.4px;color:var(--muted);}
.pc__r:first-of-type{border-top:0;}
.pc__r b{font:600 13.6px/1 'Space Grotesk',sans-serif;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;}
.pc__src{font:600 9.8px/1 'Space Grotesk',sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);white-space:nowrap;}
.pc__src.is-my{color:var(--lime);}
.pc__tot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:15px 18px;border-top:1px solid var(--line);}
.pc__tot span{font:600 12.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--muted);}
.pc__tot b{font:700 clamp(19px,2vw,25px)/1.05 'Space Grotesk',sans-serif;color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;}
.pc.is-exact .pc__tot{background:rgba(255,255,255,.035);}
.pc.is-exact .pc__tot b{font-size:clamp(22px,2.4vw,29px);color:var(--lime);}
.pc:not(.is-exact) .pc__tot{background:rgba(255,255,255,.03);}
.pc__unit{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 18px;border-top:1px solid rgba(255,255,255,.05);}
.pc__unit span{font:600 11px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.pc__unit b{font:600 15px/1 'Space Grotesk',sans-serif;font-variant-numeric:tabular-nums;}
.pc__m{margin:0;padding:12px 18px 15px;font-size:11.8px;line-height:1.5;color:var(--faint);}
@media(max-width:640px){.pc__r{grid-template-columns:minmax(0,1fr) auto;padding:11px 15px;}.pc__src{grid-column:1;order:3;}.pc__h,.pc__tot,.pc__unit,.pc__m{padding-left:15px;padding-right:15px;}}

/* строки расчёта до прохождения шага: прочерк вместо цифры, приглушённо */
.pc__r.is-wait b,.pc__tot.is-wait b{color:var(--faint);font-weight:600;}
.pc__wait{font:600 12.4px/1.3 'Space Grotesk',sans-serif;color:var(--faint);text-transform:lowercase;}
.pc__tot.is-wait .pc__wait{font-size:13px;}

/* USCC: счётчик знаков в подписи и состояние «неверная длина» */
.kbr-f--solo span{display:flex;align-items:baseline;justify-content:space-between;gap:10px;}
.kbr-f--solo span em{font:600 10.5px/1 'Space Grotesk',sans-serif;font-style:normal;letter-spacing:.06em;color:var(--faint);font-variant-numeric:tabular-nums;}
.kbr-f.is-bad input{border-color:rgba(232,178,58,.5);}
.kbr-f.is-bad i{color:var(--warn);}
.kbr-f.is-bad span em{color:var(--warn);}

.guest__demo{display:flex;gap:8px;margin:0 0 var(--kb-gap);max-width:74ch;font-size:12.8px;line-height:1.55;color:var(--muted);}
.guest__demo b{color:var(--ink);}

/* ---------- ЛИСТ ОТЧЁТА: одна полноэкранная оболочка на все пять типов отчётов (30.08).
   Узкое окно 680px не вмещало полный состав (у проверки поставщика 59 строк в 14 разделах):
   лист занимает экран, слева липкая навигация по разделам, справа полотно с прокруткой. */
.cmodal-back:has(.cmodal--sheet){padding:0;align-items:stretch;justify-items:stretch;}
.cmodal.cmodal--sheet{width:100%;max-width:none;height:100dvh;max-height:none;border-radius:0;border-left:0;border-right:0;
  display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;
  padding:clamp(18px,2.4vw,30px) clamp(16px,3vw,44px) 0;}
.cmodal.cmodal--sheet.is-plain{display:block;overflow-y:auto;padding-bottom:clamp(20px,3vw,34px);}
/* короткий отчёт (идеи, поиск: 1–2 раздела с карточками) — колонки не нужны, но и растягивать
   текст на 1400px нельзя: держим читаемую полосу по центру, карточки на широком экране сеткой */
.cmodal.cmodal--sheet.is-plain>*{max-width:min(1000px,100%);margin-left:auto;margin-right:auto;}
.cmodal.cmodal--sheet.is-plain>.cmodal__x{margin-right:0;}
/* кнопка «повторить шаг» в простом листе: правило полосы выше даёт ей max-width 1000px
   и flex растягивает её на всю ширину — у идей и поиска она была 980px против 200px
   у остальных четырёх. Ширина по тексту, по центру — одинаково во всех шести. */
.cmodal.cmodal--sheet.is-plain>.rv__again{max-width:max-content;}
@media(min-width:1100px){
  .cmodal--sheet.is-plain .rv__cds{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  .cmodal--sheet.is-plain .rv__cds>.rv__cdn{grid-column:1/-1;}
}
/* КРЕСТИК ЛИСТА — ФИКСИРОВАН (31.08): контейнером прокрутки стал сам лист, поэтому
   absolute уезжал вместе с содержимым и закрыть отчёт после прокрутки было нечем */
/* АНИМАЦИЯ ПОЯВЛЕНИЯ ГАСИТСЯ У ЛИСТА (31.08): `.cmodal{transform:translateY(12px) scale(.985)}` делает
   лист содержащим блоком для position:fixed — крестик переставал быть фиксированным и на ПК
   уезжал вверх вместе с содержимым. Сам лист и так появляется затемнением фона. */
.cmodal.cmodal--sheet,.cmodal-back.is-on .cmodal.cmodal--sheet{transform:none;}
.rvs__head{flex:0 0 auto;max-width:min(1180px,100%);margin:0 auto;width:100%;padding-right:56px;}
/* крестик листа — фирменный стиль как на всех страницах: серый в покое, лаймовый при прокрутке,
   на ховере заливка лаймом с графитовыми палочками. Палочки через currentColor — базовое
   правило `.cmodal__x::before{background:var(--muted)}` иначе перебивает подсветку. */
/* КРЕСТИК ЗАКРЫТИЯ — ОДИН ВИД НА ВЕСЬ КАБИНЕТ (14.09, владелец со снимками: «без обводки,
   на прозрачной плашке, при наведении лайм и крестик анимируется»). В ПОКОЕ прозрачно, но
   у прокрученного отчёта под крестиком едет живой текст (нашёл верификатор на scroll 900:
   светлая строка проходила ровно через штрихи) — поэтому в прилипшем состоянии возвращаем
   мягкую подложку без рамки: канон вида сохраняется, читаемость тоже. */
.cmodal.cmodal--sheet.is-stuck>.cmodal__x{color:var(--lime);border-color:transparent;background:rgba(12,13,18,.86);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
.cmodal.cmodal--sheet.is-stuck>.cmodal__x:hover{background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
.cmodal.cmodal--sheet.is-stuck>.cmodal__x:hover::before,.cmodal.cmodal--sheet.is-stuck>.cmodal__x:hover::after{background:var(--ink-on-lime);}
/* ПЛИТА ВЫВОДА — ОДНА НА ВСЕ ШЕСТЬ ОТЧЁТОВ (31.08): раньше шапка листа выглядела строкой
   модалки, из-за чего отчёты компании, кода и расчёта читались «старее» проверки поставщика.
   Теперь у всех один заголовок-плита: кикер, крупный вывод, чипы, дата. Без зелёных заливок —
   акцент даёт лаймовая скоба слева. */
/* шапка компактнее: она больше не фиксирована, но и в скролле не должна занимать экран целиком */
.cmodal--sheet .rvs__head{position:relative;padding:clamp(18px,2vw,24px) clamp(20px,2.4vw,30px);
  padding-right:clamp(58px,6vw,72px);border:1px solid var(--line);border-radius:clamp(18px,2vw,24px);
  /* ГРАФИТ, А НЕ СЕРЫЙ (14.09, владелец: «дорогой тёмный графит наш»): белая вуаль 5 % поверх
     карточного цвета выбеливала плиту — вместо графита выходил серый. Градиент по вертикали,
     как у плит кабинета: светлее вверху, глубже к низу. */
  background:linear-gradient(180deg,#181a21 0%,#111218 58%,#0c0d12 100%);
  box-shadow:0 22px 54px -34px rgba(0,0,0,.9);overflow:hidden;}
.cmodal--sheet .rvs__head::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--lime);}
.cmodal--sheet .rvs__head .ph__k{color:var(--faint);}
.cmodal--sheet .rvs__head .cmodal__t{margin:8px 0 0;font:600 clamp(20px,2.1vw,30px)/1.08 'Space Grotesk',sans-serif;
  letter-spacing:-.03em;text-transform:lowercase;color:var(--ink);text-wrap:balance;}
/* вердикт и чипы: строка без лаймовой палки — палку держит сама плита */
.cmodal--sheet .rvs__head .rv__top{margin-top:14px;padding-left:0;border-left:0;}
.cmodal--sheet .rvs__head .rv__val{font:500 clamp(14px,1.15vw,16.5px)/1.5 'Inter',sans-serif;color:var(--muted);}
.cmodal--sheet .rvs__head .rv__when{margin-top:12px;}
@media(max-width:900px){
  .cmodal--sheet .rvs__head{padding:18px 16px;padding-right:58px;border-radius:16px;}
  .cmodal--sheet .rvs__head .cmodal__t{font-size:clamp(20px,5.4vw,26px);}
}
.rvs__grid{flex:0 0 auto;min-height:0;display:grid;grid-template-columns:minmax(190px,232px) minmax(0,1fr);
  gap:clamp(18px,2.4vw,38px);max-width:min(1180px,100%);width:100%;margin:0 auto;align-items:stretch;
  padding-top:clamp(14px,1.8vw,22px);}
/* НИЗЫ ДВУХ КОЛОНОК НА ОДНОЙ ЛИНИИ (01.09): колонка тянется до низа полотна (stretch),
   а список внутри липнет к верху экрана и в конце прокрутки упирается в её нижний край:
   левая и правая части останавливаются вместе. */
.rvs__pick{display:none;}
.rvs__bar{display:contents;}   /* на ПК обёртка плашки прозрачна — колонка навигации как была */
/* ЛЕВАЯ КОЛОНКА ПО КАНОНУ ШАГОВ (01.09): счётчик сверху, рельса с заливкой
   по прогрессу чтения, номера разделов — тот же язык, что у шагов расчёта доставки. */
@media(min-width:901px){
  .rvs__bar{display:block;position:sticky;top:clamp(12px,1.6vw,20px);}
  .rvs__cnt{display:flex;align-items:baseline;gap:5px;padding:0 12px 12px;
    font-family:'Space Grotesk',sans-serif;letter-spacing:-.02em;color:var(--faint);}
  .rvs__cnt b{font-weight:600;font-size:19px;color:var(--lime-ink);font-variant-numeric:tabular-nums;}
  .rvs__cnt s{text-decoration:none;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;opacity:.5;margin:0 1px;}
  .rvs__cnt i{font-style:normal;font-weight:500;font-size:13px;font-variant-numeric:tabular-nums;}
  /* ШКАЛА ПРОГРЕССА УБРАНА (01.09): документ читают вразнобой, прогресс чтения
     ничего не решает и дублирует счётчик. Рельса — язык ОБЯЗАТЕЛЬНЫХ шагов (расчёт доставки). */
  .rvs__rail{display:none;}
  .rvs__nav{position:static;max-height:none;overflow:visible;padding-left:0;}
  /* ОСТАВЛЕНО ОДНО (01.09): шкала прогресса слева + счётчик сверху.
     Номера у пунктов и точки активного убраны: три указателя на одно и то же и теснота у края. */
  .rvs__nn{display:none;}
  .rvs__nb{display:block;position:relative;padding:8px 12px 8px 0;border-radius:0;background:none;}
  .rvs__nb:hover{background:none;color:var(--ink);}
  .rvs__nb.is-on{background:none;box-shadow:none;color:var(--lime-ink);}
  .rvs__nb.is-on .rvs__nt{font-weight:600;}
  .rvs__nd{display:block;margin-top:2px;font:500 9.5px/1 'Space Grotesk',sans-serif;font-style:normal;
    letter-spacing:.09em;text-transform:uppercase;color:rgba(238,241,232,.26);}
  .rvs__gr{padding-left:0;}
}
.rvs__lab{display:none;}
.rvs__aside{min-width:0;align-self:stretch;position:static;max-height:none;overflow:visible;}
/* НАВИГАЦИЯ ЛИПНЕТ К ВЕРХУ ЭКРАНА (31.08): прокручивается весь лист, а не только полотно —
   шапка-плита уезжает вверх и не съедает треть экрана. Свой скролл у списка нужен: у проверки
   поставщика 17 пунктов, в высоту экрана они не влезают. */
.rvs__nav{position:sticky;top:clamp(12px,1.6vw,20px);display:flex;flex-direction:column;gap:2px;
  max-height:calc(100dvh - clamp(34px,4vw,56px));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;}
.rvs__nb{display:block;padding:8px 12px;border-radius:10px;text-decoration:none;
  font:500 12.6px/1.35 'Space Grotesk',sans-serif;letter-spacing:-.01em;color:var(--faint);
  transition:color .2s var(--ease),background .2s;}
.rvs__nb:hover{color:var(--ink);}
/* ЗАЛИВКА-КАПСУЛА ТОЛЬКО В МОБИЛЬНОЙ ПОЛОСЕ (01.09): там пункты едут пилюлями и фон нужен.
   На ПК плашек не делаем — активный раздел отмечается цветом и точкой на рельсе. */
@media(max-width:900px){
  .rvs__nb:hover{background:rgba(255,255,255,.04);}
  .rvs__nb.is-on{color:var(--lime-ink);background:rgba(255,255,255,.06);}
}
/* подпись группы разделов: «товар · 30 из 37» над пунктами уровня */
.rvs__gr{display:block;margin:14px 0 4px;padding:0 12px;font:600 9.5px/1.3 'Space Grotesk',sans-serif;
  letter-spacing:.1em;text-transform:uppercase;color:rgba(238,241,232,.32);}
.rvs__gr:first-child{margin-top:0;}
/* раздел, в котором данных нет: тише в списке + подпись «нет данных», чтобы не читался
   как несинхронизированный пункт; сама секция помечена волоском по левому краю */
.rvs__nb.is-nodata{color:var(--faint);}
.rvs__nb.is-nodata i{display:block;margin-top:2px;font:500 9.5px/1 'Space Grotesk',sans-serif;
  font-style:normal;letter-spacing:.09em;text-transform:uppercase;color:rgba(238,241,232,.26);}
.rv__sec.is-nodata .rv__lb{color:rgba(238,241,232,.28);}
.rv__sec.is-nodata .rv__list{border-style:dashed;background:none;}
.rvs__body{min-width:0;overflow:visible;
  padding:0 clamp(2px,1vw,14px) clamp(24px,4vw,48px) 0;}
.rvs__body>.rv__sec:first-child{margin-top:0;}
/* в широком листе таблицы читаются в две колонки, а карточки кандидатов — сеткой */
@media(min-width:1100px){
  /* СЕТКА, А НЕ CSS-КОЛОНКИ (01.09): columns:2 режет поток по высоте — плитки в ряду
     получались разной высоты и низ секции выглядел рваным. Grid даёт ровные ряды. */
  .cmodal--sheet .rvs__body .rv__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;columns:auto;border:0;background:none;border-radius:0;align-items:stretch;}
  /* плашки строк — на месте (возврат 01.09): убирали не их, а лишние линии */
  .cmodal--sheet .rvs__body .rv__list>.rv__r{break-inside:avoid;border:1px solid var(--line);border-radius:14px;
    background:linear-gradient(158deg,rgba(255,255,255,.055),rgba(255,255,255,.018) 60%),rgba(255,255,255,.012);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.04);margin-bottom:0;align-content:start;padding:13px 16px;
    transition:border-color .3s var(--ease),background .3s var(--ease);}
  @media(hover:hover){.cmodal--sheet .rvs__body .rv__list>.rv__r:hover{border-color:rgba(255,255,255,.2);
    background:linear-gradient(158deg,rgba(255,255,255,.085),rgba(255,255,255,.026) 60%),rgba(255,255,255,.02);}}
  .cmodal--sheet .rvs__body .rv__list--main{grid-template-columns:1fr;}
  /* акцент главной плиты: сброс border/background выше бьёт и по ней (у неё есть класс
     .rv__list) — возвращаем акцент строкам результата без зелёной заливки: графит плотнее
     + лаймовая скоба слева у каждой строки (скоба плиты в колонках была бы разорвана) */
  .cmodal--sheet .rvs__body .rv__list--main::before{display:none;}
  .cmodal--sheet .rvs__body .rv__list--main>.rv__r{position:relative;border-color:rgba(255,255,255,.16);
    background:rgba(255,255,255,.05);padding-left:22px;}
  .cmodal--sheet .rvs__body .rv__list--main>.rv__r::before{content:"";position:absolute;left:9px;top:12px;bottom:12px;
    width:2px;border-radius:2px;background:var(--lime);}
}
/* ============================================================
   ЛИСТ ОТЧЁТА: ЯЗЫК КАБИНЕТА (01.09) — было «серые одинаковые полоски без глубины
   и без разделения блоков». Даём то же, что у карточек кабинета: плита с градиентом,
   внутренний хайлайт, лаймовая засечка у подписи раздела и волосок-разделитель
   между блоками. Скоуп только .cmodal--sheet — старая модалка .cmodal--rv не тронута.
   ============================================================ */
.cmodal--sheet .rvs__body .rv__sec{margin-top:clamp(22px,2.6vw,34px);}
.cmodal--sheet .rvs__body .rv__sec+.rv__sec{padding-top:clamp(20px,2.4vw,30px);border-top:1px solid var(--line-2);}
/* подпись раздела: только лаймовая засечка — декоративный волосок вправо снят:
   линиями в листе разделяются ТОЛЬКО блоки */
.cmodal--sheet .rvs__body .rv__lb{display:flex;align-items:center;gap:11px;margin-bottom:13px;
  font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);}
.cmodal--sheet .rvs__body .rv__lb::before{content:"";flex:0 0 auto;width:3px;height:13px;border-radius:2px;background:var(--lime);}
.cmodal--sheet .rvs__body .rv__lb::after{display:none;}
.cmodal--sheet .rvs__body .rv__sec.is-nodata .rv__lb::before{background:var(--line);}
/* строки: плашка с глубиной; цифры моно-шириной */
.cmodal--sheet .rvs__body .rv__list{border-color:var(--line);
  background:linear-gradient(158deg,rgba(255,255,255,.05),rgba(255,255,255,.015) 62%),rgba(255,255,255,.012);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 44px -34px rgba(0,0,0,.9);}
/* на широком листе плитки сами по себе — у контейнера подложки быть не должно
   (иначе фон под фоном: плита + плитки поверх неё) */
@media(min-width:1100px){
  .cmodal--sheet .rvs__body .rv__list{border:0!important;background:none!important;box-shadow:none!important;border-radius:0;}
}
/* внутри блока волосков между строками нет — разделяют ТОЛЬКО линии между блоками */
@media(min-width:1100px){.cmodal--sheet .rvs__body .rv__list>.rv__r{border-top-width:1px;}}
.cmodal--sheet .rvs__body .rv__k{color:var(--faint);}
.cmodal--sheet .rvs__body .rv__v{font-variant-numeric:tabular-nums;}
/* разделы-шапки уровня («уровень · товар · собрано 20 из 20») крупнее прочих подписей */
.cmodal--sheet .rvs__body .rv__lb.is-level{font-size:11.5px;color:var(--ink);letter-spacing:.06em;margin-bottom:16px;}
.cmodal--sheet .rvs__body .rv__lb.is-level::before{height:17px;width:3px;}
/* начало нового уровня — отбивка крупнее, чем между группами внутри уровня */
.cmodal--sheet .rvs__body .rv__sec.is-levelstart+.rv__sec,
.cmodal--sheet .rvs__body .rv__sec.is-levelstart{margin-top:clamp(26px,3vw,40px);}
.cmodal--sheet .rvs__body .rv__sec.is-levelstart{padding-top:clamp(24px,2.8vw,34px);border-top:1px solid var(--line);}
@media(max-width:900px){
  .cmodal--sheet .rvs__body .rv__sec{margin-top:20px;}
  .cmodal--sheet .rvs__body .rv__sec+.rv__sec{padding-top:18px;}
  .cmodal--sheet .rvs__body .rv__lb{margin-bottom:10px;}
}
@media(max-width:900px){
  .cmodal.cmodal--sheet{padding:calc(14px + env(safe-area-inset-top)) 14px 0;border-radius:0;}
  /* лист прижат к краям: правила .cmodal--rv/.cmodal--ask сдвигают окно на 12px вниз,
     из-за чего низ листа уезжал за экран — сдвиг гасим полностью, лист и так появляется затемнением */
  .cmodal.cmodal--sheet,.cmodal-back.is-on .cmodal.cmodal--sheet{transform:none;}
  .rvs__head{padding-right:52px;}
  /* блок, а не грид: у липкого элемента внутри грида диапазон ограничен его ячейкой (46px),
     из-за чего панель выбора раздела уезжала вверх при первой же прокрутке */
  .rvs__grid{display:block;padding-top:12px;}
  /* НА ТЕЛЕФОНЕ — ПЛАШКА С ТЕКУЩИМ РАЗДЕЛОМ (31.08): текст меняется по ходу чтения,
     плашка прилипает ровно на уровне крестика и едет рядом с ним. */
  .rvs__aside{position:sticky;top:calc(-6px + env(safe-area-inset-top));z-index:6;margin:0 -14px;padding:0 14px 8px;
    background:linear-gradient(180deg,var(--card,#0e100f) 76%,transparent);}
  .rvs__pick{display:flex;align-items:center;gap:9px;width:100%;min-height:46px;padding:0 58px 0 14px;
    border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.045);color:var(--ink);
    font:500 13.5px/1.2 'Inter',sans-serif;text-align:left;cursor:default;}
  .rvs__pick b{flex:0 0 auto;font:600 9.5px/1 'Space Grotesk',sans-serif;letter-spacing:.1em;
    text-transform:uppercase;color:var(--faint);}
  .rvs__pick span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--lime-ink);}
  .rvs__pick i{display:none;}                       /* раскрывания нет — стрелка не нужна */
  .rvs__bar{display:none;}                          /* полоса с пилюлями на телефоне не нужна */
  /* крестик — как был, в углу; при прокрутке лаймовая подсветка.
     Палочки через currentColor: базовое правило ::before/::after с var(--muted) иначе перебивает.
     Размер и позиция подобраны так, чтобы крестик оказался ВНУТРИ прилипшей плашки (она во всю ширину). */
  /* на телефоне крестик лаймовый ПО УМОЛЧАНИЮ: он лежит на плашке раздела и должен читаться сразу */
  /* при прокрутке крестик подсвечиваем лаймом — он остаётся единственным элементом поверх контента.
     СПЕЦИФИЧНОСТЬ: ниже в файле идут правила `.cmodal.cmodal--sheet>.cmodal__x` (0,3,0) — при равной
     специфичности выигрывает последнее, поэтому берём на класс больше. */
  .cmodal.cmodal--sheet.is-stuck .rvs__pick{box-shadow:0 14px 34px -22px rgba(0,0,0,.9);}
  .rvs__nav{display:none;}
  .rvs__nav::-webkit-scrollbar{display:none;}
  /* крестик листа — ФИКСИРОВАН: правило листа ставит его absolute, и при прокрутке
     он уезжал вместе с шапкой — закрыть отчёт было нечем.
     Размер и позиция подобраны так, чтобы крестик оказался ВНУТРИ прилипшей плашки раздела. */
  .rvs__body{padding:0 0 calc(28px + env(safe-area-inset-bottom));}
}
/* ЗАКЛЮЧЕНИЕ: блок-лид документа — связный русский текст, а не строка таблицы.
   Мера строки 72ch, читательский кегль, лаймовая палка как у лида на страницах услуг. */
/* «дорогой графит» — тот же рецепт, что у плиты-шапки отчёта и плит на страницах услуг:
   диагональный блеск + карточный тон + внутренняя белая линия сверху + глубокая тень */
.rv__concl{position:relative;margin-top:10px;padding:clamp(16px,1.8vw,22px) clamp(18px,2vw,26px);
  border:1px solid var(--line);border-radius:clamp(14px,1.6vw,18px);overflow:hidden;
  background:linear-gradient(158deg,rgba(255,255,255,.05),rgba(255,255,255,.015) 62%),var(--card);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 22px 54px -34px rgba(0,0,0,.9);}
.rv__concl::before{content:'';position:absolute;left:0;top:clamp(18px,2vw,24px);bottom:clamp(18px,2vw,24px);
  width:2px;border-radius:2px;background:linear-gradient(180deg,var(--lime),rgba(168,232,12,.15));}
.rv__concl p{margin:0;max-width:72ch;font-size:15.4px;line-height:1.64;
  color:var(--ink);text-wrap:pretty;}
.rv__concl p+p{margin-top:11px;}
.rv__concl p b,.rv__concl p strong{font-weight:600;color:var(--lime-ink);}
/* СВОРАЧИВАНИЕ ДЛИННОГО ЗАКЛЮЧЕНИЯ: видно начало, остальное по кнопке.
   Затухание — маской, а не градиентом в цвет фона: работает на любой подложке. */
.rv__concl.is-fold .rv__concl-t{max-height:clamp(150px,20vh,210px);overflow:hidden;
  mask-image:linear-gradient(180deg,#000 62%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);
  transition:max-height .45s var(--ease);}
.rv__concl.is-fold.is-open .rv__concl-t{max-height:none;mask-image:none;-webkit-mask-image:none;}
.rv__concl-more{display:inline-flex;align-items:center;gap:8px;margin:14px auto 0;padding:10px 20px;
  border:0;border-radius:999px;background:var(--lime);cursor:pointer;
  font:600 12.6px/1 'Space Grotesk',sans-serif;letter-spacing:.01em;text-transform:lowercase;color:var(--ink-on-lime,#0f1409);
  box-shadow:0 10px 26px -14px rgba(168,232,12,.6);transition:transform .2s var(--ease),box-shadow .25s ease,filter .2s ease;}
.rv__concl{display:flex;flex-direction:column;}
.rv__concl-more i{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;
  border-top:5px solid currentColor;transition:transform .3s var(--ease);}
.rv__concl.is-open .rv__concl-more i{transform:rotate(180deg);}
@media(hover:hover){.rv__concl-more:hover{filter:brightness(1.06);box-shadow:0 14px 30px -14px rgba(168,232,12,.75);transform:translateY(-1px);}}
.rv__concl-more:active{transform:translateY(0) scale(.98);}
@media(max-width:640px){.rv__concl{padding:15px 16px;border-radius:14px}.rv__concl p{font-size:14.4px;line-height:1.58}}

/* ============================================================
   ЖИЗНЬ В ЛИСТЕ ОТЧЁТА (01.09) — «дорогой графит» вместо плоского фона.
   Всё, что добавлено, несёт смысл: фактура и свечение дают глубину, шкала показывает
   покрытие среза, крупные числа выделяют значения, проявление ведёт взгляд по разделам.
   ============================================================ */
.cmodal--sheet.is-lively{background:radial-gradient(120% 80% at 12% -10%,rgba(168,232,12,.045),transparent 62%),
  radial-gradient(90% 70% at 100% 0%,rgba(255,255,255,.035),transparent 58%),var(--bg,#0a0b0a);}
.rvs__grain{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.5;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");}
.cmodal--sheet>*:not(.rvs__grain){position:relative;z-index:1;}
/* шапка отчёта: тихий вордмарк в углу — фирменный знак документа */
.cmodal--sheet .rvs__head::after{content:'tovian';position:absolute;right:clamp(58px,6vw,74px);bottom:10px;
  font:700 clamp(26px,3.4vw,44px)/1 'Space Grotesk',sans-serif;letter-spacing:-.05em;
  color:rgba(238,241,232,.035);pointer-events:none;user-select:none;}
/* шкала покрытия среза рядом с подписью уровня */
.rv__cov{flex:0 0 auto;width:clamp(46px,6vw,78px);height:3px;border-radius:2px;overflow:hidden;
  background:rgba(255,255,255,.09);margin-left:2px;}
.rv__cov b{display:block;height:100%;border-radius:2px;background:rgba(168,232,12,.55);}
.rv__cov.is-full b{background:var(--lime);box-shadow:0 0 10px -2px rgba(168,232,12,.75);}
/* крупные числовые значения: цифры — главное в документе */
.cmodal--sheet .rvs__body .rv__v{font-variant-numeric:tabular-nums;}
.cmodal--sheet .rvs__body .rv__list--main .rv__v{font-size:15.5px;}
/* проявление разделов при прокрутке — один раз, 8px хода */
.cmodal--sheet .rvs__body .rv__sec.rv-in{opacity:0;transform:translateY(8px);
  transition:opacity .5s var(--ease,ease),transform .5s var(--ease,ease);}
.cmodal--sheet .rvs__body .rv__sec.rv-in.is-in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){.cmodal--sheet .rvs__body .rv__sec.rv-in{opacity:1;transform:none;}}
.cmodal--rv{width:min(680px,100%);max-width:680px;}
.rv__top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:11px;padding-left:12px;border-left:2px solid var(--lime);}
.rv__val{font:500 16px/1.4 'Inter',sans-serif;color:var(--muted);}
.rv__num{font:600 12.5px/1 'Space Grotesk',sans-serif;color:var(--muted);font-variant-numeric:tabular-nums;}
.rv__when{margin:9px 0 0;font-size:12px;color:var(--faint);}
.rv__sec{margin-top:18px;}
.rv__lb{display:block;margin-bottom:8px;font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);}
.rv__list{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:rgba(255,255,255,.02);}
/* ПЛИТА «РЕЗУЛЬТАТ» (31.08): была лаймовая заливка 5 % — на тёмном она читалась
   болотным оттенком. Акцент держит графит плотнее обычного + лаймовая скоба слева и крупнее значения. */
.rv__list--main{position:relative;background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.14);}
.rv__list--main::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:2px;border-radius:2px;background:var(--lime);}
.rv__list--main>.rv__r{padding-left:22px;}
.rv__list--main .rv__v{font-size:15px;letter-spacing:-.01em;}
.rv__r{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);gap:12px;align-items:baseline;padding:11px 15px;border-top:1px solid rgba(255,255,255,.06);}
.rv__r:first-child{border-top:0;}
.rv__k{font-size:12.6px;line-height:1.4;color:var(--muted);}
.rv__v{font:600 13.6px/1.4 'Space Grotesk',sans-serif;color:var(--ink);overflow-wrap:anywhere;}
.rv__v--lk{color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.3);}
.rv__src{margin:0;padding-left:18px;font-size:12.5px;line-height:1.65;color:var(--muted);}
/* оговорки отчёта: тихая сноска под источниками, а не отдельная секция */
.rv__fine{margin:14px 0 0;font-size:12.2px;line-height:1.55;color:var(--faint);text-wrap:pretty;}
/* действия отчёта одним рядом: следующий шаг (лайм) + повторить шаг (контур) */
.rv__acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin:clamp(20px,2.6vw,30px) 0 0;}
.rv__acts .btn{max-width:max-content;white-space:nowrap;}
.rv__nexth{margin:9px 0 0;text-align:center;font-size:12.2px;line-height:1.45;color:var(--faint);}
@media(max-width:640px){.rv__acts{flex-direction:column;align-items:stretch}.rv__acts .btn{max-width:none;width:100%;justify-content:center;white-space:normal}}
/* КНОПКА «ПОВТОРИТЬ ШАГ» (31.08): была во всю ширину листа — на 900px полоса выглядела
   плашкой, а не кнопкой. Теперь компактная пилюля по центру, ширина по тексту (nowrap),
   одинаково во всех шести отчётах; на телефоне тянется во всю ширину как обычная кнопка. */
.rv__again{display:inline-flex;width:auto;margin:20px auto 0;padding:0 24px;min-height:46px;
  justify-content:center;white-space:nowrap;}
/* внутри ряда действий отступ и центрирование задаёт сам ряд */
.rv__acts .rv__again{margin:0;}
.rv__acts .rv__next{min-height:46px;padding:0 24px;justify-content:center;}
.cmodal--sheet .rv__again{display:flex;max-width:max-content;}
@media(max-width:640px){.rv__again{display:flex;width:100%;max-width:none;padding:0 18px;white-space:normal;text-align:center;}
  /* ЛОВУШКА: правило `.cmodal--sheet .rv__again{max-width:max-content}` идёт ПОЗЖЕ и при равной
     специфичности перебивало мобильную растяжку — контурная кнопка выходила уже лаймовой. */
  .cmodal--sheet .rv__acts{flex-direction:column;align-items:stretch;}
  .cmodal--sheet .rv__acts .btn{width:100%;max-width:none;white-space:normal;justify-content:center;}}
/* ДЕЙСТВИЯ + СНОСКА — ОДНОЙ ГРУППОЙ ПО ЦЕНТРУ ЭКРАНА (01.09): полотно сдвинуто вправо
   на колонку навигации, поэтому центр полотна не совпадал с центром окна. Сдвигаем группу
   на половину колонки (переменную считает скрипт) и центрируем её содержимое. */
.cmodal--sheet .rvs__body .rv__acts{justify-content:center;gap:12px;
  margin-top:clamp(24px,2.8vw,34px);padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line-2);
  transform:translateX(calc(-1 * var(--rvs-foot-shift,0px)));}
.cmodal--sheet .rvs__body .rv__nexth,
.cmodal--sheet .rvs__body .cmodal__note--c{text-align:center;
  transform:translateX(calc(-1 * var(--rvs-foot-shift,0px)));}
.cmodal--sheet .rvs__body .cmodal__note--c{margin-top:12px;max-width:none;}
@media(max-width:900px){
  /* только в мобильной раскладке (колонки нет) компенсация не нужна */
  .cmodal--sheet .rvs__body .rv__acts,
  .cmodal--sheet .rvs__body .rv__nexth,
  .cmodal--sheet .rvs__body .cmodal__note--c{transform:none;}
}
/* короткий отчёт (< 3 блоков) идёт без колонки — сдвиг там не нужен, но подвал по шаблону:
   тот же волосок над кнопками и центрирование, чтобы лаймовая кнопка стояла на одном месте */
.cmodal--sheet.is-plain .rv__acts{justify-content:center;gap:12px;
  margin-top:clamp(24px,2.8vw,34px);padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line-2);}
.cmodal__note--c a{color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.35);}
.cmodal__note--c a:hover{border-bottom-color:var(--lime);}
.pj-sum__rv{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid rgba(168,232,12,.28);border-radius:999px;background:rgba(168,232,12,.06);color:var(--lime);font:600 11px/1 'Space Grotesk',sans-serif;text-transform:lowercase;cursor:pointer;transition:background .2s var(--ease),border-color .2s var(--ease);}
.pj-sum__rv svg{width:12px;height:12px;}
.pj-sum__rv:hover{background:var(--lime);border-color:var(--lime);color:var(--ink-on-lime);}
@media(max-width:640px){
  .cmodal--rv{width:100%;max-width:none;}
  .rv__r{grid-template-columns:1fr;gap:3px;padding:12px 14px;}
  .rv__val{font-size:15px;}
  .pj-sum__rv{min-height:34px;}
}

.rv__notes{margin:0;padding:0 0 0 17px;display:flex;flex-direction:column;gap:6px;}
.rv__notes li{font-size:13px;line-height:1.5;color:var(--muted);}
.rv__notes li::marker{color:var(--lime);}

/* шесть инструментов на пустом экране: плитки-ссылки со стрелкой */
.pj-what--6{grid-template-columns:repeat(3,minmax(0,1fr));}
.pj-what__c--lk{position:relative;text-decoration:none;cursor:pointer;transition:border-color .22s var(--ease),background .22s var(--ease),transform .18s var(--ease);}
.pj-what__c--lk>span.pj-what__d,.pj-what__c--lk>span:last-of-type:not(.pj-what__m){font-size:11.8px;line-height:1.4;color:var(--muted);}
.pj-what__c--lk>svg{position:absolute;top:12px;right:12px;width:14px;height:14px;color:var(--faint);transition:color .22s var(--ease),transform .22s var(--ease);}
.pj-what__c--lk:hover,.pj-what__c--lk:focus-visible{border-color:var(--lime);background:linear-gradient(165deg,#bdf52e,#a8e80c);transform:translateY(-2px);box-shadow:0 14px 34px -18px rgba(168,232,12,.7);}
.pj-what__c--lk:hover>svg,.pj-what__c--lk:focus-visible>svg{color:var(--ink-on-lime);transform:translate(2px,-2px);}
.pj-what__c--lk:hover b,.pj-what__c--lk:focus-visible b{color:var(--ink-on-lime);}
.pj-what__c--lk:hover>span.pj-what__d,.pj-what__c--lk:focus-visible>span.pj-what__d,
.pj-what__c--lk:hover>span:last-of-type:not(.pj-what__m),.pj-what__c--lk:focus-visible>span:last-of-type:not(.pj-what__m){color:rgba(10,11,10,.66);}
.pj-what__c--lk:hover .pj-what__m i,.pj-what__c--lk:focus-visible .pj-what__m i{border-color:rgba(10,11,10,.24);color:rgba(10,11,10,.62);}
.pj-what__c--lk:hover .pj-what__m i.pj-what__cost,.pj-what__c--lk:focus-visible .pj-what__m i.pj-what__cost{border-color:rgba(10,11,10,.4);color:var(--ink-on-lime);}
.pj-what__c--lk:hover .pj-what__ic,.pj-what__c--lk:focus-visible .pj-what__ic{background:var(--ink-on-lime,#0a0b0a);box-shadow:none;}
.pj-what__c--lk:hover .pj-what__ic svg,.pj-what__c--lk:focus-visible .pj-what__ic svg{color:var(--lime);}
.pj-what__c--lk:focus-visible{outline:none;}
@media(max-width:860px){.pj-what--6{grid-template-columns:1fr 1fr;}}
@media(max-width:560px){.pj-what--6{grid-template-columns:1fr;}}
/* ШЕСТЬ ИНСТРУМЕНТОВ НА ТЕЛЕФОНЕ — ПЛИТКИ ШИРЕ (02.10, владелец: «не сильно узкие?»): поле плиты 22 px + рамка ставили
   плитки в 38 px от края экрана — 314 из 390, 244 из 320, двойная рамка съедала 46 px. Плиткам и разделителю сноски —
   поле 12 px (≈ зазор 9 между плитками): 334/304/264; текст шапки и сноски остаётся на прежних 22 px. Заголовок и
   подпись — balance (было «шесть инструментов до / оплаты»). ПК и планшет не меняются. */
@media(max-width:560px){
  .pj-empty:has(.pj-what--6){padding-left:12px;padding-right:12px;}
  .pj-empty:has(.pj-what--6)>h3,.pj-empty:has(.pj-what--6)>p{padding-left:10px;padding-right:10px;text-wrap:balance;}
}
/* ПЛИТКА ИНСТРУМЕНТА НА ТЕЛЕФОНЕ — СТРОКОЙ СПИСКА (02.10, владелец: «сделай»): было 130 px с пустой правой
   половиной (значок и название строкой, описание и чипы под ними) — шесть плиток ≈ 826 px. Значок слева по центру
   названия с описанием, текст и чипы — колонкой справа, стрелка на уровне названия. ПК и планшет не меняются. */
@media(max-width:560px){
  .pj-what--6 .pj-what__c{display:grid;grid-template-columns:30px minmax(0,1fr);gap:3px 12px;align-items:start;padding:12px;}
  .pj-what--6 .pj-what__c>.pj-what__ic{grid-column:1;grid-row:1 / span 2;align-self:center;}
  .pj-what--6 .pj-what__c>b{grid-column:2;grid-row:1;padding-right:22px;}
  .pj-what--6 .pj-what__c>.pj-what__d{grid-column:2;grid-row:2;text-wrap:pretty;}
  .pj-what--6 .pj-what__c>.pj-what__m{grid-column:2;grid-row:3;margin-top:7px;}
  .pj-what--6 .pj-what__c--lk>svg{top:13px;}
}

/* ОДНА СТРОКА — ОДИН ТОВАР (31.08, только лист отчёта, ≥901px): в архиве идеи и кандидаты
   читаются как сравнение, а карточками с крупным фото сравнивать неудобно — цифры не встают
   в колонку. Фото остаётся миниатюрой слева, цифры идут инлайном, действия — справа.
   На телефоне остаётся прежняя карточка: там сравнивать всё равно нечем. */
@media(min-width:901px){
  .cmodal--sheet .rv__cds{display:flex!important;flex-direction:column;gap:8px;}
  .cmodal--sheet .rv__cd,.cmodal--sheet .rv__cd--nich{display:grid;grid-template-columns:56px minmax(0,1fr) auto;
    gap:0 14px;align-items:start;padding:11px 14px;border-radius:14px;background:rgba(255,255,255,.025);}
  .cmodal--sheet .rv__cdph,.cmodal--sheet .rv__cd--nich .rv__cdph--img{display:block!important;grid-row:1;grid-column:1;
    width:56px;height:56px;border-radius:10px;border:1px solid var(--line);}
  /* ФОТО НИШИ НА ПК — КРУПНО (07.09, просьба владельца «нужно чтобы видно товар было»):
     первый трек строки отчёта был 56px, и сюжетный кадр читался иконкой. Кадр занимает
     обе строки сетки (заголовок + действие), поэтому пустот справа от него не остаётся. */
  .cmodal--sheet .rv__cd--nich{grid-template-columns:140px minmax(0,1fr) auto;gap:0 16px;}
  /* КВАДРАТ, А НЕ ПОЛОСА (14.09, владелец: «картинка квадратная должна быть же»): фото
     растягивалось на все ряды карточки (`grid-row:1/-1` + `height:100%`), и когда цифры ниши
     встали столбиком, карточка выросла до 315 px — кадр превратился в вертикальную полосу. */
  .cmodal--sheet .rv__cd--nich .rv__cdph--img{grid-row:1;align-self:start;width:140px;height:140px;min-height:0;border-radius:14px;}
  .cmodal--sheet .rv__cd--nich .rv__cdph--img img{width:100%;height:100%;object-fit:cover;}
  .cmodal--sheet .rv__cdb{grid-row:1;grid-column:2;padding:0!important;gap:3px;}
  .cmodal--sheet .rv__cdt{padding-right:0;font-size:14.4px;}
  .cmodal--sheet .rv__cdo{font-size:11.8px;}
  /* цифры ниши: вместо восьми строк с разделителями — инлайн-набор «подпись значение» */
  /* ЦИФРЫ НИШИ В ШТОРКЕ — ТОЖЕ СТОЛБИКОМ (14.09, владелец: «каша»): инлайн-набор «подпись
     значение» экономил место, но восемь пар в ряд читались вперемешку. Плотность держим
     отступами и кеглем, а не переносом строк. */
  .cmodal--sheet .rv__cdrows{display:grid!important;grid-template-columns:1fr;gap:0;margin-top:6px!important;}
  .cmodal--sheet .rv__cdrow{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:5px 0!important;border-top:1px dashed rgba(255,255,255,.07)!important;}
  .cmodal--sheet .rv__cdrow i{flex:0 0 auto!important;font-size:11px;}
  .cmodal--sheet .rv__cdrow b,.cmodal--sheet .rv__cdrow a{font-size:12.2px;text-align:left;}
  .cmodal--sheet .rv__cdrow--wide{grid-column:auto;flex:1 1 100%;}   /* «самый ходовой товар» — всегда с новой строки, иначе дотягивался до кнопки */
  .cmodal--sheet .rv__cdsc{position:static;grid-row:1;grid-column:3;align-self:start;margin-top:2px;font-size:13px;}
  /* действие — СВОЯ строка справа (31.08): в колонке кнопка центрировалась по высоте,
     и при двух строках цифр текст упирался в неё встык */
  .cmodal--sheet .rv__cd .rv__cdact,.cmodal--sheet .rv__cd--nich .rv__cdact{grid-row:2;grid-column:2/-1;margin:11px 0 0!important;flex-wrap:nowrap;justify-content:flex-end!important;}
  .cmodal--sheet .rv__cdact>*{flex:0 0 auto;min-height:36px;}
  .cmodal--sheet .rv__cd--nich .rv__cdact .mini{width:auto;min-height:36px;}
  /* сетка в две колонки для карточек больше не нужна — строки идут во всю ширину */
  .cmodal--sheet.is-plain .rv__cds{display:flex!important;grid-template-columns:none;}
}
/* кандидаты подборки поиска внутри отчёта: карточка = вход в проект */
.rv__cds{display:flex;flex-direction:column;gap:10px;}
.rv__cd{position:relative;display:grid;grid-template-columns:66px minmax(0,1fr);gap:14px;align-items:start;padding:14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.02);transition:border-color .25s var(--ease);}
.rv__cd:hover{border-color:rgba(168,232,12,.28);}
.rv__cdph{display:grid;place-items:center;width:66px;height:66px;border-radius:12px;overflow:hidden;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);}
.rv__cdph img{width:100%;height:100%;object-fit:cover;}
.rv__cdph i{font:600 15px/1 'Space Grotesk',sans-serif;font-style:normal;color:var(--faint);}
.rv__cdb{min-width:0;display:flex;flex-direction:column;gap:4px;}
.rv__cdt{padding-right:52px;font-size:14.6px;line-height:1.32;}
.rv__cdo{font-size:12.3px;color:var(--faint);}
.rv__cdm{font-size:12.3px;line-height:1.5;color:var(--muted);}
.rv__cdact{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px;}
.rv__cdact>*{flex:1 1 auto;min-width:max-content;justify-content:center;white-space:nowrap;}
.rv__cdsc{position:absolute;top:14px;right:14px;font:600 12px/1 'Space Grotesk',sans-serif;color:var(--lime-ink);font-variant-numeric:tabular-nums;}
.rv__cdok{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border:1px solid transparent;border-radius:999px;font:600 12px/1 'Space Grotesk',sans-serif;color:rgba(10,11,10,.78);background:rgba(168,232,12,.52);}
.rv__cdok::before{content:'';width:12px;height:12px;flex:none;background:rgba(10,11,10,.85);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6.4l2.6 2.6L10 3.2' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6.4l2.6 2.6L10 3.2' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;}
.rv__cdn{margin:10px 2px 0;font-size:12px;line-height:1.45;color:var(--faint);}

@media(max-width:640px){
  /* КАНДИДАТ ПОИСКА НА ТЕЛЕФОНЕ — ФОТО ПОЛОСОЙ СВЕРХУ (31.08), как у карточки ниши:
     товар видно, а не иконку 64px; данные идут строками под кадром. */
  .rv__cd{grid-template-columns:1fr;gap:0;padding:0;overflow:hidden;border-radius:16px;}
  .rv__cdph{width:100%;height:clamp(140px,42vw,182px);border:0;border-bottom:1px solid var(--line);border-radius:0;}
  .rv__cdb{padding:12px 13px 13px;}
  .rv__cdt{padding-right:44px;font-size:15px;line-height:1.28;}
  .rv__cdo{font-size:11.5px;}
  .rv__cdm{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(255,255,255,.07);font-size:12px;}
  .rv__cdsc{top:auto;bottom:auto;margin-top:0;}
  .rv__cdact{justify-content:flex-end;margin-top:10px;}
  .rv__cdsc{top:12px;right:12px;background:rgba(10,11,10,.72);padding:3px 8px;border-radius:999px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
  .rv__cdact{gap:8px;}
  .rv__cdact .mini,.rv__cdact .rv__cdok{flex:0 0 auto;justify-content:center;height:36px;min-height:36px;}
}

.rv__cd--nich .rv__cdph{background:rgba(168,232,12,.08);border-color:rgba(168,232,12,.2);}
.rv__cd--nich .rv__cdph i{color:var(--lime);font-style:normal;font:600 13px/1 'Space Grotesk',sans-serif;}
.rv__cd--nich .rv__cdt{padding-right:0;}
.rv__cdv{align-self:flex-start;margin-bottom:2px;}
.pack .pack__tick,.pack.on .pack__tick{display:none;}
@media(max-width:700px){
  .pjslot{border-radius:16px;}
  .pjslot__h{display:grid;grid-template-columns:32px minmax(0,1fr) auto;
    grid-template-areas:'ic ttl n' 'chip chip chip' 'num num date' 'ask ask ask' 'rv rv rv';
    align-items:center;gap:9px 10px;padding:13px 14px;}
  .pjslot__h>.pjslot__opt{grid-area:chip;justify-self:start;}
  .pjslot__h>.pjslot__ask{grid-area:ask;justify-self:start;}
  .pjslot__h>.mini{grid-area:rv;width:100%;justify-content:center;min-height:44px;}
  .pjslot__ic{grid-area:ic;}
  .pjslot__b{grid-area:ttl;min-width:0;}
  .pjslot__n{grid-area:n;justify-self:end;}
  .pjslot__h>.chip{grid-area:chip;justify-self:start;margin:0;}
  .pjslot__num{grid-area:num;justify-self:start;}
  .pjslot__date{grid-area:date;justify-self:end;}
  .pjslot__rv{grid-area:rv;justify-content:center;width:100%;min-height:40px;margin-top:2px;}
  .pjslot__x{grid-area:rv;}
  .pjslot__b b{font-size:14px;}
  .pjslot__b .pjslot__m{font-size:12.4px;}
}
@media(max-width:700px){
  .pjslot__rv{background:var(--lime,#a8e80c);border-color:var(--lime,#a8e80c);color:var(--ink-on-lime,#0a0b0a);font-size:12px;}
  .pjslot__rv svg{color:var(--ink-on-lime,#0a0b0a);}
  .pjslot.is-done .pjslot__h:hover .pjslot__rv,.pjslot.is-done .pjslot__h:focus-visible .pjslot__rv{background:var(--lime-ink,#c9f24a);border-color:var(--lime-ink,#c9f24a);color:var(--ink-on-lime,#0a0b0a);}
}
.pc{position:relative;overflow:hidden;}
.pc::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--lime,#a8e80c);opacity:.7;}
.pc__tot b{color:var(--lime,#a8e80c);}
.kbr-skip{display:block;width:100%;margin-top:9px;justify-content:center;min-height:40px;border-color:rgba(168,232,12,.26);color:var(--lime,#a8e80c);background:transparent;}
.kbr-skip:hover{color:var(--ink-on-lime,#0a0b0a);border-color:var(--lime,#a8e80c);background:var(--lime,#a8e80c);}
@media(max-width:700px){.kbr-skip{min-height:46px;}}
.kbr-askbox{margin-top:10px;animation:kbrAsk .28s var(--ease) both;}
.kbr-askbox__n{margin:9px 0 0;font-size:11.8px;line-height:1.5;color:var(--faint);}
@keyframes kbrAsk{from{opacity:0;transform:translateY(-6px)}}
.kbr-ask[aria-expanded="true"]{color:var(--lime);border-color:rgba(168,232,12,.4);}
.kbr-askbox .pj-ask__ru{margin-bottom:12px;}
@media(max-width:700px){
  .pj-ask .btn,.kbr-askbox .btn,.cmodal .btn{display:flex;width:100%;justify-content:center;text-align:center;}
}
.kbr-ask{display:block;width:100%;margin-top:9px;justify-content:center;text-align:center;min-height:40px;}
@media(max-width:700px){.kbr-ask{min-height:46px;}}
.chip--proc{color:#e8d44a;border-color:rgba(232,212,74,.32);background:rgba(232,212,74,.09);}
.wait{margin-top:16px;padding:18px;border:1px solid var(--line-2);border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.032),rgba(255,255,255,.012));}
.wait__h{display:flex;align-items:center;gap:11px;flex-wrap:wrap;}
.wait__t{font:600 clamp(15px,1.5vw,18px)/1.25 'Space Grotesk',sans-serif;color:var(--ink);}
.wait__when{font-size:12.2px;color:var(--faint);margin-left:auto;}
.wait__facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;margin-top:15px;border:1px solid var(--line-2);border-radius:14px;overflow:hidden;background:var(--line-2);}
.wait__f{display:flex;flex-direction:column;gap:5px;padding:13px 14px;background:#101117;min-width:0;}
.wait__f span{font:600 10px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.wait__f b{font:600 13.4px/1.35 'Space Grotesk',sans-serif;color:var(--ink);overflow-wrap:anywhere;}
.wait__n{margin:13px 0 0;font-size:12.6px;line-height:1.55;color:var(--muted);max-width:74ch;}
@media(max-width:900px){.wait__facts{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:700px){.wait{padding:15px;}.wait__when{margin-left:0;width:100%;}.wait__facts{grid-template-columns:1fr;}}
.ent-sign{margin:2px 0 4px;padding:12px 14px;border:1px solid var(--line-2);border-radius:14px;background:rgba(255,255,255,.025);}
.ent-sign__k{display:block;font:600 10px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.ent-sign__r{display:flex;gap:8px;margin-top:9px;flex-wrap:wrap;}
.ent-sign__r .mini{flex:1 1 auto;justify-content:center;}
.ent-sign__n{margin:9px 0 0;font-size:11.8px;line-height:1.5;color:var(--muted);}
@media(max-width:700px){.ent-sign__r .mini{flex:1 1 100%;min-height:44px;}}
.pjf__req{margin-left:7px;font-style:normal;font:600 9.6px/1 'Space Grotesk',sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--lime);opacity:.85;}
.qt__wait{font-size:12px;color:var(--faint);align-self:center;}
.hoff{margin:2px 0 10px;border:1px solid var(--line-2);border-radius:14px;overflow:hidden;background:rgba(255,255,255,.025);}
.hoff__k{display:block;padding:11px 14px 8px;font:600 10px/1 'Space Grotesk',sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);}
.hoff__r{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 14px;border-top:1px solid rgba(255,255,255,.05);}
.hoff__r span{flex:0 0 auto;font-size:12px;color:var(--muted);}
.hoff__r b{min-width:0;flex:1 1 auto;font:600 12.6px/1.4 'Space Grotesk',sans-serif;color:var(--ink);text-align:right;overflow-wrap:break-word;white-space:normal;font-variant-numeric:tabular-nums;}
@media(max-width:700px){.hoff__r{flex-direction:column;gap:3px;}.hoff__r b{text-align:left;}}
.pj-empty+.pj-lead{margin-top:var(--kb-gap);}
.pjlist+.pj-note+.panel{margin-top:var(--kb-gap);}
.top__id{max-width:min(380px,52vw);}
.top__idmeta{min-width:0;}
.top__name,.top__sline{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.top__status{min-width:0;}
@media(max-width:700px){.top__id{max-width:calc(100vw - 148px);}}
@media(min-width:861px){.is-guest .top__id{display:none!important;}}
@media(max-width:860px){
  .is-guest .top{position:relative;}
  .is-guest .top__id{position:absolute;left:52px;right:52px;width:auto;max-width:none;justify-content:center;transform:none;}
  .is-guest .top__id:active{transform:scale(.985);}
  /* плашка вне потока — иконки прижимаем к правому краю сами */
  .is-guest .top>.iconbtn{margin-left:auto;}
}
/* ГОСТЬ НА ТЕЛЕФОНЕ: СЛЕВА ЛОГОТИП НА ГЛАВНУЮ (05.10, владелец: «после выхода сверху стрелка с пилюлей и колокольчиком
   не должна быть — вместо этого логотип в левом верхнем углу для перехода на главную»). Пилюля «войти» на телефоне не
   нажималась и повторяла большую кнопку входа ниже, колокольчик гостю пуст. Марка — лаймовая, как в шапке всего сайта
   (06.10, владелец: «как и на всём сайте, с лаймовым квадратиком, а не белым»); вордмарк маской. У вошедшего шапка прежняя. */
@media(max-width:900px){
  .is-guest .top__home{width:auto;height:44px;padding:0 4px 0 0;gap:10px;border:0;background:none;}
  .is-guest .top__home svg{display:none;}
  .is-guest .top__home::before{content:"";flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:url("favicon.svg") center/contain no-repeat;}
  .is-guest .top__home::after{content:"";flex:0 0 auto;width:96px;height:30px;background-color:var(--ink);
    -webkit-mask:url("tovian-wordmark.svg") left center/contain no-repeat;mask:url("tovian-wordmark.svg") left center/contain no-repeat;}
  .is-guest .top__id,.is-guest .top>.iconbtn{display:none!important;}
}
@media(max-width:860px){
  .is-guest .top__id{pointer-events:none;cursor:default;}
  .is-guest .top__id:active{transform:none;}
  .is-guest .top__id svg{display:none;}
}
@media(hover:none),(max-width:700px){
  .pj-step{border-color:rgba(168,232,12,.28);}
  .pj-step::before{opacity:1;}
  .pj-step__n{-webkit-text-stroke-color:rgba(168,232,12,.3);}
  .pj-step__ic{background:linear-gradient(150deg,rgba(168,232,12,.26),rgba(168,232,12,.07));box-shadow:inset 0 0 0 1px rgba(168,232,12,.34);}
  .pj-step__go{opacity:1;transform:none;}
  .pj-step:active{transform:scale(.99);}
}
@media(min-width:861px){.is-guest .top{display:none!important;}}
.guest__demo{display:block;margin:0 0 clamp(14px,1.6vw,20px);font-size:12.8px;line-height:1.55;color:var(--muted);}
@media(max-width:700px){.guest__demo{font-size:12.4px;}}
.guest__demo b{white-space:nowrap;}
@media(min-width:861px){.guest__demo{max-width:64ch;}}
.guest__hero{position:relative;overflow:hidden;isolation:isolate;}
.guest__hero::before{content:'';position:absolute;inset:0;z-index:-2;background:url('hero/kb-guest-fresco.webp') 88% 18%/cover no-repeat;opacity:1;}
.guest__hero::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(9,10,12,.96) 0%,rgba(9,10,12,.86) 32%,rgba(9,10,12,.4) 60%,rgba(9,10,12,.06) 100%),linear-gradient(180deg,rgba(9,10,12,.18),rgba(9,10,12,.34));}
@media(max-width:860px){
  .guest__hero::before{display:none;}
  .guest__hero::after{background:radial-gradient(120% 90% at 12% 0%,rgba(168,232,12,.07),transparent 60%);}
}

/* ПОЛЯ НИШИ В ОТЧЁТЕ (25.08): фото товара вместо номера + цифры замера, как в карточке */
.rv__cdph--img{padding:0;overflow:hidden;background:#0f1114;}
.rv__cdph--img img{width:100%;height:100%;object-fit:cover;display:block;}
.rv__cdrows{display:grid;gap:0;margin-top:9px;}
.rv__cdrow{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:7px 0;border-top:1px dashed rgba(255,255,255,.08);}
.rv__cdrow i{font-style:normal;font-size:12px;color:var(--faint);}
.rv__cdrow b{font:600 12.5px/1.3 'Space Grotesk',sans-serif;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;}
.rv__cdrow a{font:600 12.5px/1.3 'Space Grotesk',sans-serif;color:var(--lime-ink);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.34);}

/* ЛЕГАСИ-СЛОЙ УБРАН (31.08): здесь жил старый силуэт ниши «фото во всю ширину сверху» —
   он спорил с более поздним компактным вариантом (фото 96px слева) и делал карточку идеи
   непохожей на остальные пять инструментов. Оставлены только правила, которых нет ниже. */
.rv__cd--nich{background:linear-gradient(180deg,var(--glass),transparent 70%),var(--card);border-radius:16px;}
.rv__cd--nich .rv__cdph--img img{width:100%;height:100%;object-fit:cover;}
.rv__cd--nich .rv__cdo{margin-top:3px;font-size:12px;color:var(--faint);}
.rv__cd--nich .rv__cdrow i{flex:1 1 auto;}
.rv__cd--nich .rv__cdrow b,.rv__cd--nich .rv__cdrow a{flex:0 0 auto;}
@media(max-width:600px){
  .rv__cd--nich .rv__cdrow i{font-size:11.5px;}
  .rv__cd--nich .rv__cdrow b{font-size:12px;}
}

/* ниша без фото: полосу-заглушку не рисуем, номер уходит в шапку строкой (25.08) */
.rv__cd--nich .rv__cdph:not(.rv__cdph--img){display:none;}
.rv__cd--nich{position:relative;}
.rv__cd--nich .rv__cdb{padding-top:14px;}
.rv__cd--nich .rv__cdt::before{content:attr(data-n);margin-right:9px;font:600 12px/1 'Space Grotesk',sans-serif;color:var(--lime);vertical-align:2px;}

/* компактная ниша: тот же силуэт, что у кандидата поиска — фото слева, данные справа */
.rv__cd--nich{display:grid;grid-template-columns:66px 1fr;gap:0 14px;padding:14px;align-items:start;}
.rv__cd--nich .rv__cdph--img{display:block!important;grid-row:1/3;width:66px;height:66px;border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.rv__cd--nich .rv__cdph--img img{width:100%;height:100%;object-fit:cover;display:block;}
.rv__cd--nich .rv__cdb{grid-column:2;padding:0;min-width:0;}
.rv__cd--nich .rv__cdt{font-size:15px;}
/* ЦИФРЫ НИШИ — ОДНОЙ КОЛОНКОЙ (14.09, владелец: «путаница получается и каша»): восемь пар
   «подпись — значение» в две колонки читались зигзагом, и глаз терял, к чему относится число.
   Столбик даёт один порядок чтения; разделители остаются пунктиром. */
.rv__cd--nich .rv__cdrows{display:grid;grid-template-columns:1fr;gap:0;margin-top:10px;}
.rv__cd--nich .rv__cdrow{padding:6px 0;gap:8px;border-top:1px dashed rgba(255,255,255,.07);}
.rv__cd--nich .rv__cdrow i{font-size:11px;}
.rv__cd--nich .rv__cdrow b,.rv__cd--nich .rv__cdrow a{font-size:12px;}
.rv__cd--nich .rv__cdact{grid-column:1/-1;margin-top:12px;}
.rv__cd--nich .rv__cdact .mini{min-height:40px;}
@media(max-width:600px){
  .rv__cd--nich{grid-template-columns:64px 1fr;gap:0 11px;padding:12px;}
  .rv__cd--nich .rv__cdph--img{width:64px;height:64px;grid-row:1;}
  .rv__cd--nich .rv__cdrows{grid-template-columns:1fr;gap:0;}
  .rv__cd--nich .rv__cdb{grid-column:2;}
  .rv__cd--nich .rv__cdact{margin-top:10px;}
}

.rv__cd--nich .rv__cdrow--wide{grid-column:1/-1;}
/* ссылка в строке — сразу за подписью, слева: у правого края она отрывалась от смысла (31.08) */
.rv__cd--nich .rv__cdrow--wide i{flex:0 0 auto;}
.rv__cd--nich .rv__cdrow--wide a{flex:0 0 auto;margin-right:auto;}
.rv__cd--nich .rv__cdact{display:flex;justify-content:flex-end;margin-top:11px;}
.rv__cd--nich .rv__cdact .mini{width:auto;min-height:36px;padding:0 16px;justify-content:center;
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.015) 70%)!important;
  border:1px solid rgba(255,255,255,.14)!important;color:var(--ink)!important;font-weight:600;box-shadow:none!important;}
.rv__cd--nich .rv__cdact .mini:hover{border-color:rgba(168,232,12,.45)!important;color:var(--lime-ink)!important;}
@media(max-width:600px){
  .rv__cd--nich .rv__cdact{justify-content:stretch;}
  .rv__cd--nich .rv__cdact .mini{width:100%;min-height:42px;}
}

@media(max-width:600px){
  /* окно отчёта: меньше воздуха, больше места контенту */
  .cmodal--rv{padding:16px 14px 18px;border-radius:0 0 20px 20px;}
  .cmodal-back{border-radius:0;}
  .cmodal-back.is-on{align-items:flex-start;padding-top:0;}
  .cmodal--rv .rv__t{font-size:clamp(19px,5.6vw,23px);line-height:1.1;letter-spacing:-.03em;}
  .cmodal--rv .rv__sub{font-size:12.5px;}
  .cmodal--rv .rv__meta{font-size:11.5px;}
  .cmodal--rv .rv__lb{margin:16px 0 8px;font-size:9px;}
  .cmodal--rv .rv__cds{gap:9px;}

  /* карточка ниши на телефоне: ФОТО ПОЛОСОЙ СВЕРХУ (по просьбе владельца 31.08) — у ниши
     кадр сюжетный, сбоку он читался хуже; данные идут строками под ним во всю ширину. */
  .rv__cd--nich{grid-template-columns:1fr;gap:0;padding:0;overflow:hidden;}
  .rv__cd--nich .rv__cdph--img{grid-row:auto;width:100%;height:clamp(140px,42vw,182px);border:0;border-bottom:1px solid var(--line);border-radius:0;}
  .rv__cd--nich .rv__cdb{grid-column:1;padding:12px 13px 13px;}
  .rv__cd--nich .rv__cdt{font-size:14.5px;line-height:1.25;}
  .rv__cd--nich .rv__cdt::before{margin-right:7px;font-size:11px;}
  .rv__cd--nich .rv__cdo{font-size:11.5px;}
  .rv__cd--nich .rv__cdrows{grid-template-columns:1fr;gap:0;margin-top:9px;}
  .rv__cd--nich .rv__cdrow{padding:7px 0;gap:10px;align-items:baseline;}
  .rv__cd--nich .rv__cdrow i{flex:1 1 auto;min-width:0;font-size:11px;line-height:1.35;}
  .rv__cd--nich .rv__cdrow b{flex:0 0 auto;max-width:56%;font-size:12px;text-align:right;overflow-wrap:anywhere;}
  .rv__cd--nich .rv__cdrow a{font-size:12px;}
  .rv__cd--nich .rv__cdact{grid-column:1;margin-top:11px;justify-content:flex-end;}
  .rv__cd--nich .rv__cdact .mini{width:auto;min-height:36px;padding:0 14px;font-size:12px;}
}
@media(max-width:380px){
  .rv__cd--nich .rv__cdrow i{font-size:10.5px;}
  .rv__cd--nich .rv__cdrow b{font-size:11.5px;max-width:52%;}
}

.rv__cd--nich .rv__cdph--img{position:relative;background:#0f1114;}
.rv__cd--nich .rv__cdph--img::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 55%,rgba(7,8,9,.45) 100%);}
.rv__cd--nich .rv__cdph--img img{transition:transform .5s var(--ease,cubic-bezier(.16,1,.3,1));}
.rv__cd--nich:hover .rv__cdph--img img{transform:scale(1.04);}

.rv__cd--nich .rv__cdn{position:absolute;top:7px;left:7px;z-index:2;display:grid;place-items:center;min-width:22px;height:22px;padding:0 6px;
  border-radius:7px;background:rgba(7,8,9,.72);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  font:600 11px/1 'Space Grotesk',sans-serif;color:var(--lime);font-variant-numeric:tabular-nums;}
.rv__cd--nich .rv__cdt::before{content:none;}   /* номер теперь на фото, из шапки убран */
@media(max-width:600px){.rv__cd--nich .rv__cdn{top:8px;left:8px;min-width:24px;height:24px;font-size:11.5px;}}

/* «скачать PDF» — тихая кнопка в ряду действий отчёта (02.09) */
.rv__pdf{display:inline-flex;align-items:center;gap:8px;min-height:45px;padding:0 18px;border:1px solid var(--line);
  border-radius:999px;background:none;color:var(--muted);cursor:pointer;
  font:500 12.6px/1 'Space Grotesk',sans-serif;letter-spacing:.01em;text-transform:lowercase;
  transition:border-color .25s var(--ease),color .25s;}
.rv__pdf svg{width:14px;height:14px;}
@media(hover:hover){.rv__pdf:hover{border-color:rgba(255,255,255,.3);color:var(--ink);}}
/* ПЕЧАТНАЯ ВЕРСИЯ ЛИСТА: белый документ — чёрный текст, без навигации, кнопок и фактуры.
   Это и есть «сохранить как PDF» до бэкенда; печать на бумаге из той же кнопки. */
@media print{
  html.rv-printing body>*{display:none!important}
  html.rv-printing #modalBack{display:block!important;position:static!important;background:#fff!important;padding:0!important}
  html.rv-printing .cmodal--sheet{display:block!important;position:static!important;height:auto!important;max-height:none!important;
    overflow:visible!important;background:#fff!important;border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important}
  html.rv-printing .cmodal--sheet *{background:#fff!important;color:#111!important;box-shadow:none!important;text-shadow:none!important;
    border-color:#ddd!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
  html.rv-printing .rvs__grain,html.rv-printing .rvs__aside,html.rv-printing .cmodal__x,
  html.rv-printing .rv__acts,html.rv-printing .rv__nexth,html.rv-printing .cmodal__note,
  html.rv-printing .rvs__bar{display:none!important}
  html.rv-printing .rvs__grid{display:block!important;max-width:100%!important}
  html.rv-printing .rvs__body{columns:1!important;padding:0!important}
  html.rv-printing .rv__sec{break-inside:avoid;page-break-inside:avoid;margin:0 0 14px!important}
  html.rv-printing .rv__lb{color:#555!important;font-weight:600!important}
  html.rv-printing .rv__cov b{background:#9bc400!important}
  html.rv-printing .chip{border:1px solid #bbb!important}
}
/* вход и цена на плитке инструмента (06.09): раньше это узнавали только на странице */
.pj-what__m{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;align-self:stretch;width:100%;max-width:100%;min-width:0;}

.pj-what__m i{font-style:normal;display:inline-block;padding:3px 8px;border-radius:999px;border:1px solid var(--line);font-family:'Space Grotesk',sans-serif;font-size:10.5px;line-height:1.3;letter-spacing:-.01em;text-transform:lowercase;color:var(--faint);white-space:normal;max-width:100%;}
.pj-what__m i.pj-what__cost{border-color:rgba(168,232,12,.3);color:var(--lime);}

/* ============ ЭКРАН «ОБЗОР» (06.09.2026) ============
   Собран на существующих токенах кабинета: --card/--line/--glass/--lime/--ease.
   Новых визуальных приёмов нет — те же карточки, чипы и полоса прогресса. */
.kbd{margin:0 0 var(--kb-gap);}
/* АТРИБУТ `hidden` ПРОТИВ АВТОРСКОГО `display:block` (14.09, нашёл верификатор): у `.pjf`
   объявлен display, и правило браузера для [hidden] проигрывает — поле «ссылка на товар»
   не пряталось при стартах «товара ещё нет» и «только доставка». */
.pjf[hidden]{display:none;}
/* старт без товара: поле ссылки на месте (высота окна не скачет), но неактивно — пунктир и приглушено (05.10, владелец) */
.pjf.is-off .pjf__in{border-style:dashed;background:transparent;cursor:not-allowed;}
.pjf.is-off .pjf__lb{color:rgba(238,241,232,.32);}
.pjf.is-off .pjf__opt{display:none;}
/* ТРИ СТАРТА НОВОГО ПРОЕКТА (14.09): предмет выбирается до создания, а не после. */
.nkind{display:grid;gap:8px;margin-bottom:14px;}
.nkind__b{display:flex;flex-direction:column;gap:3px;text-align:left;padding:12px 15px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);color:var(--ink);cursor:pointer;}
.nkind__b b{font-weight:500;font-size:14px;}
.nkind__b span{font-size:12px;line-height:1.4;color:var(--faint);}
.nkind__b:hover{border-color:rgba(255,255,255,.16);}
.nkind__b.is-on{border-color:var(--lime);background:rgba(168,232,12,.07);}
.nkind__b.is-on span{color:var(--muted);}
/* ПЕРЕИМЕНОВАНИЕ ПРОЕКТА (14.09): карандаш у заголовка карточки, правка на месте.
   ЗАГОЛОВОК ОСТАЁТСЯ БЛОЧНЫМ: при inline-flex следующая за ним полоса прогресса вставала
   в ту же строку и уезжала вправо (владелец со снимком). */
/* ГРУППА «ГОТОВО» ОТБИВАЕТСЯ ОТ СПИСКА (14.09, владелец: «отступ сверху?»): блок закрытых
   проектов шёл вплотную за припиской «N из 30 активных» и читался её продолжением. */
.view[data-view="overview"] .pj-note + .kbd{margin-top:var(--kb-gap);}
@media(max-width:900px){
  /* ОКНО ПРОГОНА НА ТЕЛЕФОНЕ (14.09, владелец: «фон прозрачный, всё сливается, крестик уходит
     вверх и окно не закрыть»): плите возвращён непрозрачный графит, крестик прилипает к верху
     и носит подложку — на длинной форме он теперь всегда под рукой. */
  /* Подложка СТРАХОВКОЙ, а не заменой: сокращённое `background` стирало графитовый градиент
     плиты, и мобильное окно расходилось с десктопным (14.09, нашёл верификатор). */
  /* ФОН ОБРЫВАЛСЯ, А ПОЛЯ ПРОДОЛЖАЛИСЬ (14.09, владелец со снимком): у окна прогона снят
     внутренний скролл (`overflow:visible`), но осталось ограничение высоты по экрану от
     базового `.cmodal` — бокс кончался, контент торчал наружу, и под ним не было плиты. */
  body .cmodal.cmodal--run{background-color:var(--card,#101117);max-height:none;overflow:visible;}
  /* СКРОЛЛЕР — НА ТОМ ЖЕ ДИАПАЗОНЕ, ЧТО И СНЯТИЕ ВЫСОТЫ (14.09, нашёл верификатор): внешняя
     прокрутка слоя была объявлена только до 700 px, и в полосе 701–900 верх окна уезжал
     за экран без всякой возможности вернуться. Теперь слой прокручивается везде, где окно
     выше экрана, а окно центрируется безопасно (не обрезая шапку). */
  /* ВЕС ВЫШЕ ПОЗДНЕГО `.is-on` (14.09, нашёл верификатор): правило шторки `.cmodal-back.is-on`
     объявлено ниже и при равном весе выигрывало — выравнивание оставалось `end`, и верх окна
     уходил в недостижимое переполнение грида. Берём на класс больше. */
  /* ОТБИВ ТОЛЬКО СВЕРХУ (14.09, владелец: «сверху отступ будем делать или впритык?»): при длинной
     форме её верх упирался в кромку экрана и скруглённый верх шторки срезался. Отбив ставим
     ВЕРХНИМ padding'ом скроллера — при `align-items:end` низ считается от нижней кромки
     content-box, поэтому прижим шторки к низу сохраняется, а над высоким окном появляется воздух. */
  .cmodal-back.is-on:has(.cmodal--run){overflow-y:auto;-webkit-overflow-scrolling:touch;align-items:safe end;padding:14px 0 0;}
  body .cmodal.cmodal--run>.cmodal__x{position:sticky;top:6px;right:auto;z-index:14;float:right;margin:0 0 2px 12px;
    background:rgba(12,13,18,.88);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
  /* ХОВЕР ПОВТОРЯЕМ ТЕМ ЖЕ ВЕСОМ (14.09, владелец: «на мобильном ховер чёрный, а не лайм»):
     правило выше весит (0,3,2) и перебивало общий `.cmodal__x:hover` (0,2,0) — круг оставался
     графитовым, а штрихи уходили в тёмные, то есть крестик пропадал под пальцем. */
  body .cmodal.cmodal--run>.cmodal__x:hover,body .cmodal.cmodal--run>.cmodal__x:active{background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
  body .cmodal.cmodal--run>.cmodal__x:hover::before,body .cmodal.cmodal--run>.cmodal__x:hover::after,
  body .cmodal.cmodal--run>.cmodal__x:active::before,body .cmodal.cmodal--run>.cmodal__x:active::after{background:var(--ink-on-lime);}
  /* ЗАТЕМНЕНИЕ ПОД ОКНОМ — БЕЗ ОПОРЫ НА BLUR (14.09, второй заход): «видно всё, что под плашкой»
     объясняется не панелью (она непрозрачна), а фоном в 68 % там, где backdrop-filter не работает. */
  .cmodal-back{background:rgba(4,5,7,.86);}
  /* ПРОКРУТКА ДОКУМЕНТА ПОД ОКНОМ (14.09, третий заход по «фон просвечивает»): слой и так
     закрывает вьюпорт (`inset:0`), а вот страница под ним на телефоне продолжала скроллиться —
     из-за этого из-под окна выезжало содержимое. Фиксируем корпус, пока окно открыто.
     `width:100vw` убран: с классическим скроллбаром он шире вьюпорта и даёт боковую прокрутку. */
  /* CSS-ДУБЛЯ ЗАМКА ПРОКРУТКИ НЕТ (14.09, нашёл верификатор): класс `is-on` ставится в кадре,
     а закрытие снимает его синхронно — отложенный кадр возвращал класс уже закрытому окну
     и запирал бы страницу. Замок держит JS: `document.documentElement.style.overflow`. */
  /* ФОЛБЭК БЕЗ РАЗМЫТИЯ (14.09): где backdrop-filter не поддерживается, сквозь 86 % всё ещё
     читается страница — там слой делаем почти непрозрачным. Размеры не трогаем: `inset:0`
     базового правила уже держит слой по вьюпорту (проверено замером). */
  @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){
    .cmodal-back{background:rgba(4,5,7,.97);}
  }
}
/* ТОВАР СВЁРНУТ, ПОКА ОН НЕ ПРЕДМЕТ ПРОЕКТА (14.09): строка-раскрытие вместо плиты с полем. */
.pj-goods{margin-top:var(--kb-gap);}
.pj-goods>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1px solid var(--line);border-radius:999px;font-size:12.5px;color:var(--faint);}
.pj-goods>summary::-webkit-details-marker{display:none}
.pj-goods>summary::before{content:'+';font-size:14px;line-height:1;color:var(--lime);}
.pj-goods>summary:hover{color:var(--ink);border-color:rgba(255,255,255,.18);}
.pj-goods[open]>summary{margin-bottom:10px;}
/* КАНДИДАТЫ ПОСТАВЩИКА В ПРОЕКТЕ (14.09): список до пяти, назначенный подсвечен лаймом. */
.pjcs{margin-top:var(--kb-gap);}
.pjc-list{display:flex;flex-direction:column;gap:10px;}
.pjc{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:0 14px;align-items:center;padding:11px 14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.02);}
.pjc.is-on{border-color:rgba(168,232,12,.45);background:rgba(168,232,12,.05);}
.pjc__ph{width:48px;height:48px;border-radius:12px;object-fit:cover;background:#0f1114;border:1px solid var(--line);}
.pjc__ph--no{display:block;}
.pjc__b{display:flex;flex-direction:column;gap:5px;min-width:0;}
.pjc__t{font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* 16.09: данные и метка проверки — ОДНОЙ строкой (было три яруса, ряд 103 px) */
.pjc__m{display:flex;flex-wrap:wrap;align-items:center;gap:5px 9px;font-size:12px;color:var(--faint);min-width:0;}
.pjc__m>span:not(.chip):not(.pjc__cur){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pjc__m .chip{align-self:center;}
.pjc__act{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:8px;flex:0 0 auto;}
.pjc__cur{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--lime);}
.pjc__cur svg{width:13px;height:13px;}
@media(max-width:640px){.pjc{grid-template-columns:48px minmax(0,1fr);gap:10px 12px;}.pjc__ph{width:48px;height:48px;}
  /* 16.09: на телефоне ряд держит до трёх кнопок — цели 44 px по канону и по левому краю,
     а не прижатые вправо; при нехватке ширины переносятся, не переполняя плиту. */
  .pjc__act{grid-column:1/-1;justify-content:flex-start;gap:8px;}
  .pjc__act .mini{min-height:44px;padding:0 14px;}}
/* ДЛИННОЕ ИМЯ НЕ ВЫТЕСНЯЕТ КНОПКИ (14.09, владелец: «почему сюда переехало?»): заголовок брал
   ширину по тексту (913 из 1094 px), и ряду кнопок оставалось 167 при нужных 254 — он срывался
   на вторую строку. Теперь имя обрезается многоточием в одну строку (полное — в подсказке). */
.pj-card__head{gap:14px 18px;}
.pj-card__head>div:first-child{flex:1 1 320px;min-width:0;}
.pj-card__head .pj-head__t{display:flex;align-items:center;gap:10px;width:auto;max-width:100%;min-width:0;}
.pj-head__tx{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pj-card__act{flex:0 0 auto;}
.pj-head__ed{display:grid;place-items:center;width:30px;height:30px;flex:0 0 auto;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--faint);cursor:pointer;}
.pj-head__ed svg{width:14px;height:14px;}
.pj-head__ed:hover{color:var(--ink);border-color:rgba(255,255,255,.18);}
.pj-head__in{width:min(420px,100%);margin:0;padding:6px 12px;border:1px solid var(--lime);border-radius:12px;background:var(--card-2);color:var(--ink);font:600 clamp(22px,2.6vw,30px)/1.1 'Space Grotesk',sans-serif;letter-spacing:-.03em;}
/* общее кольцо фокуса кабинета здесь дублирует лаймовую рамку поля — двойная обводка */
#kb-root .pj-head__in:focus,#kb-root .pj-head__in:focus-visible{outline:none;box-shadow:0 0 0 4px rgba(168,232,12,.12);}
/* СРОК ХРАНЕНИЯ ОТЧЁТА ВЫШЕЛ (14.09): в шаге остался снимок, рядом — цена нового прогона. */
.pjslot__exp{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 14px;border-top:1px solid var(--line);}
.pjslot__exp span{font-size:12px;line-height:1.4;color:var(--faint);}
/* СНИМОК УСТАРЕЛ (14.09): проект бессрочный, данные шага — на дату прогона. */
.pjslot__date.is-old{color:var(--warn);}
/* ФИНАЛ ПРОЕКТА: ЧЕК-ЛИСТ ПЕРЕД ОПЛАТОЙ (14.09) — пришёл на место блока передачи менеджеру. */
.pj-fin{margin-top:var(--kb-gap);padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--card);}
.pj-fin__h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;}
.pj-fin__when{font:400 12px/1 'Space Grotesk',sans-serif;color:var(--faint);}
.pj-fin__go{width:100%;margin-top:14px;}
.pj-fin__n{margin:10px 0 0;font-size:12.5px;line-height:1.5;color:var(--faint);text-wrap:pretty;}
.pj-fin--done{display:flex;flex-direction:column;align-items:flex-start;gap:10px;}
.pj-fin--done .pj-fin__h{width:100%;margin:0;}
.pjchk{display:flex;flex-direction:column;gap:8px;}
.pjchk__r{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);color:var(--ink);cursor:pointer;}
.pjchk__r:hover{border-color:rgba(255,255,255,.14);}
.pjchk__b{flex:0 0 auto;display:grid;place-items:center;width:20px;height:20px;margin-top:1px;border:1px solid var(--line);border-radius:7px;color:transparent;}
.pjchk__b svg{width:12px;height:12px;}
.pjchk__r.is-on .pjchk__b{background:var(--lime);border-color:var(--lime);color:#0e1116;}
.pjchk__tx{display:flex;flex-direction:column;gap:3px;min-width:0;}
.pjchk__tx b{font-weight:500;font-size:13.5px;line-height:1.35;}
.pjchk__tx i{font-style:normal;color:var(--muted);}
.pjchk__tx span{font-size:12px;line-height:1.45;color:var(--faint);}
/* пункт без данных — приглушён: сверять нечего, пока шаг не пройден */
.pjchk__r--gap .pjchk__tx b{color:var(--muted);}
/* ПОДПИСЬ ОКНА СЧЁТА У ЗАГОЛОВКА РАЗДЕЛА (14.09): тише самого заголовка, на своей строке —
   объясняет, почему цифра может измениться сама. */
.kbd__sub{display:block;margin-top:5px;font:400 11.5px/1.3 'Space Grotesk',sans-serif;letter-spacing:0;text-transform:lowercase;color:var(--faint);}
.kbd__t{margin:0 0 12px;font:500 11.5px/1 'Space Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:rgba(238,241,232,.5);}
.kbd>.mini{margin-top:12px;}
.kbd--first{margin-top:0;}
#main-content .view .card.pj-balcard{margin-bottom:var(--kb-gap);}

/* КНОПКИ-ПЕРЕХОДЫ В ЗАГОЛОВКАХ ОБЗОРА И ИНСТРУМЕНТОВ (06.09): базовый .pj-inwork залит
   полупрозрачным лаймом (.05) — на графите это давало болотный оттенок. Свои кнопки
   переводим на графит; лаймовыми остаются иконка и подпись действия. Плашку сделки
   (.pj-inwork без data-nav-to) не трогаем — там лаймовый регистр уместен. */
.pj-inwork[data-nav-to]{border-color:var(--line);background:linear-gradient(180deg,#1b1d24,#101117);}
.pj-inwork[data-nav-to]:hover{border-color:rgba(168,232,12,.42);background:linear-gradient(180deg,#1f2229,#131519);}
.pj-inwork[data-nav-to]>svg{color:var(--lime);}
.pj-inwork[data-nav-to] span{color:var(--lime);}

/* блок с фреской на дашборде: у .panel нет собственного отступа снизу, и следующий
   блок («последние отчёты») упирался в него — даём общий шаг сетки (06.09) */
.view[data-view="dash"] .panel{margin-bottom:var(--kb-gap);}

/* ============ МОДАЛКИ НА ТЕЛЕФОНЕ — ШТОРКА СНИЗУ (06.09.2026) ============
   Механика бургер-меню сайта: лист выезжает снизу, верхние углы скруглены,
   хват-полоска, свайп вниз закрывает, крестик приглушён (основной способ — свайп).
   На ПК окно остаётся по центру, как было. */
@media(max-width:900px){
  .cmodal-back,.cmodal-back.is-on{align-items:end;justify-items:center;padding:0;padding-top:0;}
  .cmodal{width:100%;max-width:none;max-height:92dvh;border-radius:26px 26px 0 0;border-bottom:0;
    padding-top:14px;padding-bottom:calc(20px + env(safe-area-inset-bottom));
    transform:translateY(101%);transition:transform .42s var(--ease);}
  .cmodal-back.is-on .cmodal{transform:none;transition:transform .48s var(--ease);}
  /* хват-полоска: намёк на свайп вниз */
  .cmodal::before{content:"";display:block;position:sticky;top:0;z-index:8;width:42px;height:4px;
    margin:0 auto 14px;border-radius:999px;background:rgba(238,241,232,.26);pointer-events:none;}
  /* КРЕСТИК НА ТЕЛЕФОНЕ — ОДНА МЕХАНИКА НА ВСЕ ОКНА (14.09, владелец: «где-то видел плашки без
     липкого крестика, и дизайн у них странный»). Липким он был только у окна шага, отчёта и
     листа запроса; у ОБЫЧНЫХ окон («новый проект», «оплата», «лимит», «запрос продавцу», бриф)
     стоял `absolute` и при прокрутке уезжал вверх — закрыть можно было только тапом по фону.
     Теперь везде приём окна шага: липнет к верху, держит место флоатом, графитовая подложка с
     размытием — иначе светлые строки просвечивают сквозь штрихи. */
  .cmodal__x{position:sticky;top:6px;right:auto;float:right;margin:0 0 2px 12px;width:40px;height:40px;z-index:14;
    border-color:transparent;background:rgba(12,13,18,.88);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
  .cmodal__x::before,.cmodal__x::after{background:rgba(238,241,232,.46);}
  .cmodal__x:active{background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
  .cmodal__x:active::before,.cmodal__x:active::after{background:var(--ink-on-lime);}
  /* место под крестик держит сам флоат — отдельная отбивка заголовкам больше не нужна */
  .cmodal>.ph__k,.cmodal>.cmodal__t{padding-right:0;}
}

/* ПАНЕЛЬ УДАЛЕНИЯ ОТЧЁТА НА ТЕЛЕФОНЕ (06.09): показ (.rep__del{display:flex}) и её
   геометрия (inset справа полосой) жили в разных медиазапросах, и на части ширин
   срабатывал только показ — корзина встала по базовым координатам, внизу слева
   под текстом. Здесь геометрия закреплена в том же условии, что и показ. */
@media(max-width:700px){
  .rep-w{position:relative;overflow:hidden;}
  .rep__del{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
    position:absolute;top:0;right:0;bottom:0;left:auto;width:96px;height:auto;margin:0;z-index:1;
    opacity:1;transform:none;pointer-events:auto;border:0;border-radius:0;
    background:linear-gradient(180deg,#2b1613,#1a0e0c);color:var(--risk);
    font:600 11px/1 'Space Grotesk',sans-serif;text-transform:lowercase;}
  .rep__del::after{content:"удалить";}
  .rep__del svg{width:20px;height:20px;}
  .rep__delin{display:none;}
  .rep-w>.rep{position:relative;z-index:2;width:100%;}
}

/* ИСТЁКШИЙ ОТЧЁТ НА ТЕЛЕФОНЕ — ПРОСТО КОРЗИНА (06.09, просьба владельца):
   свайп-полоса «удалить» стояла за короткой карточкой и накладывалась на текст,
   а свайпать нечего — данных в отчёте уже нет. Показываем корзину в подвале
   карточки: одно нажатие, без подтверждения и без отмены. */
@media(max-width:700px){
  .rep-w:has(.rep.dead) .rep__del{display:none;}
  .rep-w:has(.rep.dead){overflow:visible;}
  .rep.dead .rep__delin{display:grid;opacity:1;transform:none;pointer-events:auto;
    margin-left:auto;width:40px;height:40px;color:var(--risk);background:rgba(239,106,86,.1);}
  .rep.dead .rep__delin svg{width:19px;height:19px;}
}

/* ============ МАРШРУТ ЗАКУПКИ: КОЛЬЦО ПОКРЫТИЯ И УРОВЕНЬ (06.09.2026) ============
   Шесть сегментов = шесть инструментов, заполненный лаймом — пройден. В центре
   освоено N из 6 и слово уровня. Справа список: у пройденных число отчётов,
   у непройденных — кнопка «попробовать». Язык прежний: графит, лайм, те же токены. */
.lvl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(18px,2.4vw,34px);align-items:center;
  padding:clamp(18px,2vw,26px);border:1px solid var(--line);border-radius:20px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 46%),var(--card);}
.lvl__ring{position:relative;width:128px;height:128px;flex:0 0 auto;}
.lvl__ring svg{width:128px;height:128px;display:block;transform:rotate(-90deg);}
.lvl__seg{fill:none;stroke:var(--track);stroke-width:9;stroke-linecap:round;
  transition:stroke .5s var(--ease);}
.lvl__seg.is-on{stroke:var(--lime);filter:drop-shadow(0 0 6px rgba(168,232,12,.45));}
.lvl__c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;}
.lvl__c b{font:600 30px/1 'Space Grotesk',sans-serif;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink);}
.lvl__c b i{font-style:normal;font-size:15px;color:var(--faint);}
.lvl__c>span{font:500 11px/1.2 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:.02em;color:var(--lime);max-width:92px;}
.lvl__b{min-width:0;}
.lvl__d{margin:0;font-size:13.5px;line-height:1.5;color:var(--muted);text-wrap:pretty;}
/* ВАРИАНТ Б (06.09, выбор владельца): список всех шести рядом с кольцом — пройденные
   с числом отчётов, непройденные со ссылкой «попробовать». Признак «не пробовали»
   с плиток снят: состояние живёт в одном месте. */
.lvl__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 18px;margin-top:13px;}
.lvl__r{display:flex;align-items:center;gap:9px;min-width:0;}
.lvl__dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:var(--track);}
.lvl__r.is-on .lvl__dot{background:var(--lime);box-shadow:0 0 8px rgba(168,232,12,.7);}
.lvl__r b{font:500 12.5px/1.3 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:-.01em;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lvl__r.is-on b{color:var(--ink);}
.lvl__r i{font-style:normal;margin-left:auto;flex:0 0 auto;font-size:11px;color:var(--faint);white-space:nowrap;}
.lvl__go{margin-left:auto;flex:0 0 auto;padding:0;border:0;background:none;cursor:pointer;font:500 11px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--lime);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(168,232,12,.4);}
.lvl__go:hover{text-decoration-color:var(--lime);}
/* НАЗВАНИЯ В «МАРШРУТЕ ЗАКУПКИ» — НА ТЕЛЕФОНЕ КАК СПИСОК ИНСТРУМЕНТОВ В БОКОВОЙ ПАНЕЛИ (02.10, владелец: «левые пункты
   как минимум как на пк шрифтом в баре»; затем: «на пк вернул бы шрифт размера как был, а то сильно контрастит»).
   ПК и планшет (>820: кольцо рядом со списком в две колонки) — прежние Space Grotesk 12,5 и счётчик 11: там список —
   сводка рядом с кольцом и не должен перекрикивать его и описание 13,5. Телефон (≤820: список столбиком с линиями,
   читается как меню) — основной шрифт 16 px 400, как .rsub__i; счётчик и «попробовать» 13 px; в самой узкой карточке
   (экран 320) зазор 7 и 12 px; многоточия нет — при более широком шрифте устройства название переносится. */
/* без многоточия на любой ширине: на ПК 901–~915 у нового аккаунта «проверка продавца · попробовать» не влезала в колонку
   и резалась (так было и до 02.10) — теперь переносится на вторую строку; во всех остальных случаях одна строка, как было */
.lvl__r b{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:balance;}
@media(max-width:820px){
  .lvl__r b{font-family:inherit;font-size:16px;font-weight:400;line-height:1.35;letter-spacing:0;}
  .lvl__r i{font-size:13px;}
  .lvl__go{font-size:13px;}
  .lvl__b{container:lvlb / inline-size;}
  @container lvlb (max-width:269px){ .lvl__r{column-gap:7px;} .lvl__r i,.lvl__r .lvl__go{font-size:12px;} }
  /* pv-styles.css (сайтовое правило целей) давало «попробовать» отбив 12/12 — строка с кнопкой выходила 58 px при 43
     у соседних; цель 44 теперь даёт ::before, ряды равной высоты */
  .lvl__r .lvl__go{position:relative;padding-top:0!important;padding-bottom:0!important;}
  .lvl__go::before{content:"";position:absolute;left:-10px;right:-10px;top:50%;height:44px;transform:translateY(-50%);}
}
@media(max-width:820px){
  .lvl{grid-template-columns:1fr;justify-items:center;text-align:center;gap:18px;}
  .lvl__b{width:100%;}
  .lvl__d{text-align:center;}
  .lvl__list{grid-template-columns:1fr;gap:0;}
  .lvl__r{padding:10px 0;border-bottom:1px solid var(--line);text-align:left;}
  .lvl__r:last-child{border-bottom:0;}
}



/* ============ ПРОФИЛЬ РИСКА ПОСТАВЩИКОВ ============
   Аналог «риск-профиля»: одна полоса на все проверки, разложенная по трём уровням.
   Считается по всем проектам, не по одному. */
.rsk{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(16px,2.4vw,30px);align-items:center;
  padding:clamp(18px,2vw,26px);border:1px solid var(--line);border-radius:20px;
  background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 46%),var(--card);}
.rsk__l{display:flex;flex-direction:column;gap:2px;min-width:88px;}
.rsk__n{font:600 clamp(28px,3vw,38px)/1 'Space Grotesk',sans-serif;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink);}
.rsk__k{font:500 11.5px/1.3 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--faint);}
.rsk__b{min-width:0;}
.rsk__bar{display:flex;gap:3px;height:10px;border-radius:999px;overflow:hidden;background:var(--track);}
.rsk__f{display:block;height:100%;border-radius:999px;}
.rsk__f--ok{background:var(--lime);box-shadow:0 0 12px rgba(168,232,12,.45);}
.rsk__f--mid{background:var(--warn);}
.rsk__f--high{background:var(--risk);}
.rsk__lg{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:14px;}
.rsk__i{display:inline-flex;align-items:center;gap:8px;font:500 12px/1 'Space Grotesk',sans-serif;text-transform:lowercase;color:var(--faint);}
.rsk__i i{width:8px;height:8px;border-radius:50%;flex:0 0 auto;}
.rsk__i b{font-weight:600;font-size:13px;font-variant-numeric:tabular-nums;color:var(--ink);}
.rsk__i--ok i{background:var(--lime);}
.rsk__i--mid i{background:var(--warn);}
.rsk__i--high i{background:var(--risk);}
/* сноска и число «не брать» — кнопки: ведут в архив с вкладкой проверок (06.09) */
.rsk__note{display:inline-flex;align-items:center;gap:8px;margin:12px 0 0;padding:0;border:0;background:none;cursor:pointer;
  font:500 12.5px/1.5 'Space Grotesk',sans-serif;text-align:left;color:var(--risk);
  text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(239,106,86,.42);}
.rsk__note svg{width:12px;height:12px;flex:0 0 auto;}
.rsk__note:hover{text-decoration-color:var(--risk);}
button.rsk__i{border:0;background:none;padding:0;cursor:pointer;font:inherit;}
button.rsk__i:hover b{color:var(--risk);}
@media(max-width:700px){
  .rsk{grid-template-columns:1fr;gap:14px;}
  .rsk__l{flex-direction:row;align-items:baseline;gap:10px;}
  .rsk__lg{gap:8px 14px;}
}

/* ПИЛЮЛЯ ПРОФИЛЯ (06.09): сжимается до пола 238 px, имя и почта обрезаются многоточием;
   потолок на широких экранах — 340 px. Поле поиска отчётов и курсы в шапке удалены 06.10.2026. */
.top__id{flex:0 1 auto;min-width:238px;}
@media(min-width:941px){.top__id{max-width:340px;}}


/* ============ ФИЛЬТР РИСКА НА ВКЛАДКЕ «ПРОВЕРКИ» (06.09) ============
   Второй ряд под вкладками инструментов: любой риск / работать можно / с оговорками /
   не брать. Точка слева окрашена по уровню, число справа — сколько таких отчётов;
   уровень без отчётов выключен, чтобы не вести в пустой список. */
.rseg{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;}
.rseg__b{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 13px;border-radius:999px;cursor:pointer;
  border:1px solid var(--line);background:rgba(255,255,255,.02);color:var(--muted);
  font:500 12px/1 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:-.01em;
  transition:border-color .25s var(--ease),color .25s var(--ease),background .25s var(--ease);}
.rseg__b>i{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--faint);}
.rseg__b>span{font-variant-numeric:tabular-nums;color:var(--faint);}
.rseg__b--ok>i{background:var(--lime);}
.rseg__b--mid>i{background:var(--warn);}
.rseg__b--high>i{background:var(--risk);}
.rseg__b:hover:not([disabled]){color:var(--ink);border-color:rgba(238,241,232,.26);}
.rseg__b.on{color:var(--ink);background:rgba(255,255,255,.06);border-color:rgba(238,241,232,.3);}
.rseg__b.on>span{color:var(--ink);}
.rseg__b--high.on{border-color:rgba(239,106,86,.5);background:rgba(239,106,86,.09);color:var(--risk);}
.rseg__b--high.on>span{color:var(--risk);}
.rseg__b--mid.on{border-color:rgba(230,162,60,.5);background:rgba(230,162,60,.09);color:var(--warn);}
.rseg__b--mid.on>span{color:var(--warn);}
.rseg__b--ok.on{border-color:rgba(168,232,12,.5);background:rgba(168,232,12,.09);color:var(--lime);}
.rseg__b--ok.on>span{color:var(--lime);}
.rseg__b[disabled]{opacity:.4;pointer-events:none;}

/* ============ ФИЛЬТР РИСКА: РЯД НА ПК, РАСКРЫТИЕ НА ТЕЛЕФОНЕ (06.09) ============ */
.rsegd{margin:0 0 14px;}
.rsegd__s{display:none;}
.rsegd>.rseg{display:flex;margin:0;}   /* на ПК ряд виден всегда */
@media(max-width:700px){
  .rsegd__s{display:inline-flex;align-items:center;gap:9px;min-height:38px;padding:0 14px;border-radius:999px;cursor:pointer;list-style:none;
    border:1px solid var(--line);background:rgba(255,255,255,.02);color:var(--muted);
    font:500 12.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:-.01em;}
  .rsegd__s>b{font-weight:600;color:var(--ink);}
  .rsegd__k{color:var(--faint);}
  .rsegd__n{font-variant-numeric:tabular-nums;color:var(--faint);}
  .rsegd__s>svg{width:13px;height:13px;margin-left:2px;transition:transform .3s var(--ease);}
  .rsegd.is-open .rsegd__s>svg{transform:rotate(180deg);}
  .rsegd__d{width:7px;height:7px;border-radius:50%;}
  .rsegd__d--ok{background:var(--lime);}
  .rsegd__d--mid{background:var(--warn);}
  .rsegd__d--high{background:var(--risk);}
  .rsegd:not(.is-open)>.rseg{display:none;}
  .rsegd.is-open>.rseg{display:flex;flex-direction:column;gap:6px;margin-top:8px;}
  .rsegd.is-open>.rseg .rseg__b{justify-content:flex-start;min-height:44px;}
  .rsegd.is-open>.rseg .rseg__b>span{margin-left:auto;}
}

.rail__logo{width:auto;height:auto;background:none;box-shadow:none;border-radius:0;
  display:flex;align-items:center;justify-content:flex-start;margin:0 0 20px 12px;}
.rail__logo .logo{display:inline-flex;width:auto;height:auto;color:var(--ink);min-height:44px;align-self:center;justify-self:start;}
.rail__logo .logo b{width:96px;height:30px;}
.rail__logo .logo:hover{color:var(--lime);}

@media(max-width:900px){
  .cmodal-back:has(.cmodal--sheet),.cmodal-back:has(.cmodal--rv),.cmodal-back:has(.cmodal--ask){
    align-items:end;justify-items:center;padding:0;}
  .cmodal.cmodal--sheet,.cmodal.cmodal--rv,.cmodal.cmodal--ask{
    height:96dvh;max-height:96dvh;border-radius:26px 26px 0 0;border-left:0;border-right:0;border-bottom:0;
    padding-top:14px;padding-bottom:calc(16px + env(safe-area-inset-bottom));}
  /* липкий хват и у этих вариантов */
  .cmodal.cmodal--rv::before,.cmodal.cmodal--ask::before{
    content:"";display:block;position:static;width:42px;height:4px;flex:0 0 4px;
    margin:0 auto 12px;border-radius:999px;background:rgba(238,241,232,.26);pointer-events:none;}
  /* крестик приглушён так же: круг без рамки и заливки, лайм только при нажатии */
  /* лайм только при нажатии — как у крестика бургер-меню */
  /* прилипшее состояние больше не красит крестик лаймом: он приглушён по канону шторки */
  /* 14.09: вид прилипшего крестика задан один раз в общем правиле выше — дублей больше нет */
}

/* ============ ШТОРКА ОТЧЁТА: ВЕРХНЯЯ ПОЛОСА (06.09) ============
   Полоса — отдельный элемент .rvs__bar2, стоит ПЕРВЫМ в листе, поэтому держит
   скруглённый верх шторки. В ней хват, название текущего раздела (зеркалится из
   навигации) и крестик. Прежняя липкая шапка .rvs__aside на телефоне скрыта:
   её текст теперь живёт в полосе, и двух полос подряд больше нет. */
.rvs__bar2{display:none;}
@media(max-width:900px){
  .cmodal.cmodal--sheet{padding-top:0;}
  .cmodal.cmodal--sheet::before{display:none;}
  .cmodal.cmodal--sheet .rvs__grid{padding-top:0;}
  .cmodal.cmodal--sheet .rvs__aside{display:none;}
  .cmodal.cmodal--sheet{background-color:var(--card);}
  .cmodal.cmodal--sheet .rvs__barsec{font:500 13px/1.2 'Space Grotesk',sans-serif;letter-spacing:-.01em;
    text-transform:lowercase;color:var(--lime);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .cmodal.cmodal--sheet .rvs__head{border-radius:16px;margin-top:10px;}
  /* крестик — по центру высоты полосы */
}

/* ============ ШТОРКА ОТЧЁТА: ИТОГОВЫЙ БЛОК (06.09) ============
   Сводит четыре находки проверки в одно место, поэтому стоит последним:
   1) у листа класс is-lively добавляет ДВА радиальных градиента без медиазапроса —
      подгонка background-color была инертна, гасим именно изображение;
   2) «щель» — лаймовая волосяная рамка листа по верху (базовое .cmodal{border:1px}),
      у листа обнулялись только боковые: снимаем верхнюю;
   3) крестик привязан к ЦЕНТРУ шапки: она занимает 4dvh−10 … 4dvh+42, центр 4dvh+16,
      высота крестика 40 → top = 4dvh−4;
   4) цвета — из токена --card, без литералов. */
@media(max-width:900px){
  .cmodal.cmodal--sheet,
  .cmodal.cmodal--sheet.is-lively{background-image:none;background-color:var(--card);
    border-top:0;border-left:0;border-right:0;}
}

/* ============ ШАПКА ШТОРКИ — ЖЁСТКАЯ ГЕОМЕТРИЯ (06.09, финальный блок) ============
   Полоса больше не подтягивается отрицательными полями: она прижата к верху листа
   (top:0) и не двигается; щель закрыта снятием верхней рамки листа выше.
   Отсчёт простой: полоса занимает 0…52px от верха листа (лист начинается на 4dvh),
   хват на 8px от её верха, крестик 40px по центру → top = 4dvh + 6px.
   Фон полосы — тот же токен, что у листа. */

/* ============ ШТОРКА ОТЧЁТА: ЕДИНСТВЕННЫЕ ПРАВИЛА ШАПКИ (06.09) ============
   По одному правилу на элемент, чтобы точечные правки больше не терялись
   в конкуренции одинаковой специфичности. Отсчёт: лист прижат к низу и его верх
   всегда 4dvh; полоса 0…52px от верха листа; хват на 8px; крестик 40px по центру.
   env(safe-area-inset-top) в координате крестика НЕ участвует — лист на вырезку
   не сдвигается, иначе крестик уезжает ниже полосы. */

/* лист во время свайпа едет одним блоком: липкость шапки и фиксация крестика
   на это время отключаются, иначе слои расходятся (06.09) */

/* у листа отчёта свайпа нет (прокрутка внутри), поэтому и хват не обещаем (06.09) */
@media(max-width:900px){.cmodal.cmodal--sheet .rvs__grab{display:none;}}

/* ============ ВЕРХ ЛИСТА — ОТСТУП, А НЕ ШАПКА (06.09, решение владельца) ============
   Полоса убрана: она отличалась тоном от фона листа и требовала подгонки стыка.
   Вместо неё у листа верхний отступ, в котором стоит крестик; содержимое начинается
   ниже и прокручивается под ним. Название раздела на телефоне не показываем —
   для этого была шапка. */
@media(max-width:900px){
  .cmodal.cmodal--sheet{padding-top:46px;}
  .cmodal.cmodal--sheet .rvs__head{margin-top:0;}
}

/* ============ ВЕРХНЯЯ ЗОНА ЛИСТА ДЕРЖИТСЯ ПУСТОЙ (06.09) ============
   Отступ сам по себе прокручивается вместе с содержимым, поэтому зона под крестиком
   не оставалась чистой. Возвращаем элемент, но ПУСТОЙ и в цвет листа: фон на телефоне
   теперь плоский var(--card) (градиенты is-lively погашены), поэтому стыка не видно.
   Он же служит отступом — собственный padding-top листа снят. */
@media(max-width:900px){
  .cmodal.cmodal--sheet{padding-top:0;}
}

/* верхняя зона листа прозрачная (06.09, просьба владельца): она держит место
   под крестик и служит зоной захвата для свайпа, но фон не рисует — тона нет вовсе */

/* ============ ВЕРХНЯЯ ЗОНА ЛИСТА — ЕДИНСТВЕННЫЕ ПРАВИЛА (06.09) ============
   Зона держит место под крестик и служит зоной захвата свайпа (жест листа работает
   только в верхних 56px — там нет прокрутки, поэтому слои не расходятся).
   pointer-events:none — иначе прозрачный липкий слой перехватывал касания и клики
   по содержимому, уехавшему под него. Хват виден: это единственный признак жеста.
   touch-action:none на листе только во время перетаскивания. */
@media(max-width:900px){
  .cmodal.cmodal--sheet{padding-top:0;}
  .cmodal.cmodal--sheet .rvs__bar2{display:block;position:relative;z-index:12;flex:0 0 auto;
    height:46px;min-height:0;margin:0;padding:0;border:0;border-radius:0;
    background:transparent;box-shadow:none;pointer-events:none;}
  .cmodal.cmodal--sheet .rvs__barsec{display:none;}
  .cmodal.cmodal--sheet .rvs__grab{display:block;position:absolute;left:50%;top:9px;
    width:42px;height:4px;margin-left:-21px;border-radius:999px;
    background:rgba(238,241,232,.34);pointer-events:none;}
  .cmodal.cmodal--sheet>.cmodal__x{position:fixed;top:calc(4dvh + 4px);right:14px;float:none;margin:0;
    width:40px;height:40px;z-index:13;color:rgba(238,241,232,.46);border-color:transparent;
    background:rgba(12,13,18,.88);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
  .cmodal.cmodal--sheet>.cmodal__x::before,.cmodal.cmodal--sheet>.cmodal__x::after{background:rgba(238,241,232,.46);}
  /* ХОВЕР БЫЛ МЁРТВ (14.09, вопрос владельца «ховер везде такой же?»): правило выше весит (0,3,0)
     и перебивало общий `.cmodal__x:hover` (0,2,0) — на листе отчёта крестик не загорался лаймом
     и не поворачивался. Повторяем состояние тем же весом, вид теперь общий для всех окон. */
  .cmodal.cmodal--sheet>.cmodal__x:hover{background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
  .cmodal.cmodal--sheet>.cmodal__x:hover::before,.cmodal.cmodal--sheet>.cmodal__x:hover::after{background:var(--ink-on-lime);}
  .cmodal.cmodal--sheet>.cmodal__x:active{color:var(--ink-on-lime);background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
  .cmodal.cmodal--sheet>.cmodal__x:active::before,.cmodal.cmodal--sheet>.cmodal__x:active::after{background:var(--ink-on-lime);}
  .cmodal.cmodal--sheet.is-dragging{touch-action:none;}
}

/* ЛИСТ — РАМКА, КОНТЕНТ — ОТДЕЛЬНАЯ ОБЛАСТЬ (06.09): прокрутка перенесена с листа
   на .rvs__scroll, поэтому при перетаскивании пальцем оболочка и содержимое едут
   одним слоем, а барьер сверху больше не липкий и не пересчитывается. */
.rvs__scroll{display:contents;}
@media(max-width:900px){
  .cmodal.cmodal--sheet{display:flex;flex-direction:column;overflow:hidden;}
  .cmodal.cmodal--sheet .rvs__scroll{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;
    -webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 14px calc(24px + env(safe-area-inset-bottom));}
}

/* КРЕСТИК НЕ СЖИМАЕТСЯ (06.09, поймал верификатор): лист — flex-колонка, и крестик
   оказался единственным ребёнком с flex-shrink:1 — рядом с полотном 1489 px он
   сплющивался с 38 до 2 px и уезжал влево. */
@media(min-width:901px){
  .cmodal.cmodal--rv>.cmodal__x,.cmodal.cmodal--ask>.cmodal__x{position:sticky;top:18px;right:auto;left:auto;bottom:auto;
    align-self:flex-end;float:none;margin:0 0 -38px auto;flex:0 0 auto;width:38px;height:38px;min-height:38px;z-index:6;}
}

/* НЕТ НАТИВНОГО «ПОТЯНУТЬ ДЛЯ ОБНОВЛЕНИЯ» ПОД ОТКРЫТЫМ ЛИСТОМ (06.09) */
html:has(.cmodal-back.is-on),html:has(.cmodal-back.is-on) body{overscroll-behavior-y:none;}
.cmodal-back.is-on{overscroll-behavior:none;}

/* КАРТОЧКА БЕЗ ФРЕСКИ — ТЕКСТ ПО ЛЕВОМУ КРАЮ ПЛИТЫ (06.09): у .pj-empty базовое
   text-align:center (нужно варианту с фреской и кнопками), плюс auto-отступы
   у сноски и кикера. Для варианта без иллюстрации всё это снимается. */
.pj-empty:not(:has(.pj-empty__art)){text-align:left;}
.pj-empty:not(:has(.pj-empty__art))>p,
.pj-empty:not(:has(.pj-empty__art))>h3,
.pj-empty:not(:has(.pj-empty__art))>.pj-empty__k{margin-left:0;margin-right:0;}
.pj-empty:not(:has(.pj-empty__art))>p:not(.pj-empty__alt){max-width:72ch;}
@media(min-width:901px){
  .pj-empty:not(:has(.pj-empty__art)){padding-left:26px;}
}

/* НА ТЕЛЕФОНЕ КАРТОЧКА ОСТАЁТСЯ ПО ЦЕНТРУ (06.09, просьба владельца): по левому краю
   выравниваем только на ПК — там плита широкая и левый край читается как колонка;
   на узком экране центр держит блок собранным. */
@media(max-width:700px){
  .pj-empty:not(:has(.pj-empty__art)){text-align:center;}
  .pj-empty:not(:has(.pj-empty__art))>p,
  .pj-empty:not(:has(.pj-empty__art))>h3,
  .pj-empty:not(:has(.pj-empty__art))>.pj-empty__k{margin-left:auto;margin-right:auto;}
}

/* заблокированный вариант «30 дней» и подсветка блока маршрута при переходе по якорю */
.tgl.is-locked .tgl__t[disabled],.tgl.is-locked .tgl__t[aria-disabled="true"]{opacity:.4;cursor:not-allowed;}
.setrow__d a{color:var(--lime);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.3);}
.setrow__d a:hover{color:var(--lime-ink,#bdf52e);}
/* СОГЛАСИЕ НА ИНФОРМАЦИОННЫЕ ПИСЬМА (14.09): пока согласия нет — в колонке действий стоит лаймовая
   кнопка «даю согласие» (строка остаётся однорядной); после согласия её место занимает тумблер,
   которым согласие и отзывается. Полный текст согласия хранится снимком в localStorage. */
.mini.is-nudge{animation:agshake .5s cubic-bezier(.36,.07,.19,.97) both;}
.tgl[aria-disabled="true"]{opacity:.45;cursor:not-allowed;}
.tgl[aria-disabled="true"] .tgl__k{background:rgba(238,241,232,.12);box-shadow:none;}
.tgl[aria-disabled="true"]:hover{border-color:var(--line);}
.lvl.is-hi{border-radius:var(--r);box-shadow:0 0 0 1px rgba(168,232,12,.5),0 0 34px -8px rgba(168,232,12,.35);transition:box-shadow .4s var(--ease);}

/* УВЕДОМЛЕНИЯ: строка с кнопкой «убрать» (06.09) — человек чистит список сам,
   чтобы старые события не забивали поповер. */
.notifpop__i{display:flex;align-items:stretch;gap:0;border-radius:14px;}
.notifpop__i .notifpop__r{flex:1 1 auto;min-width:0;}
.notifpop__del{flex:0 0 auto;width:34px;display:grid;place-items:center;border:0;background:transparent;color:rgba(238,241,232,.34);cursor:pointer;transition:color .25s var(--ease),background .25s var(--ease);}
.notifpop__del svg{width:13px;height:13px;}
.notifpop__i:hover .notifpop__del{color:rgba(238,241,232,.6);}
.notifpop__del:hover{color:var(--risk);background:transparent;}
/* СТРОКА ОФЕРТЫ У ОПЛАТЫ (06.09): ссылка + пояснение, тише основного текста. */
.setlinks--pay{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:14px 0 0;font-size:12px;line-height:1.5;}
.setlinks--pay span{color:var(--faint);}
.cmodal--pay .setlinks--pay{margin-top:10px;justify-content:center;text-align:center;}
/* ИСТОРИЯ ОПЕРАЦИЙ: знак движения баланса квадратом (06.09) — пополнение лаймом
   со стрелкой вверх, списание графитом со стрелкой вниз; плюс выбор периода. */
.hi__ic{border-radius:11px;}
.hi__ic.inc{background:var(--lime);color:#0a0b0a;border-color:transparent;box-shadow:0 8px 20px -12px rgba(168,232,12,.8);}
.hi__ic.out{background:rgba(255,255,255,.05);color:rgba(238,241,232,.62);}
.hi__ic svg{width:17px;height:17px;}
.sectitle{display:flex;align-items:center;gap:14px;}
.histsel{display:inline-flex;align-items:center;gap:8px;margin-left:auto;font-family:'Space Grotesk',sans-serif;font-size:11.5px;text-transform:lowercase;letter-spacing:.02em;color:var(--faint);}
.histsel select{min-height:32px;padding:0 10px;border-radius:9px;border:1px solid var(--line-2);background:var(--card);color:var(--ink);font-family:'Space Grotesk',sans-serif;font-size:12.5px;text-transform:lowercase;cursor:pointer;}
.histsel select:focus{outline:0;border-color:rgba(168,232,12,.5);}
.hist__none{margin:0;padding:14px 2px;font-size:13px;color:var(--muted);}
.hi__amt{white-space:nowrap;font-variant-numeric:tabular-nums;}
/* ============ СПИСОК ИНСТРУМЕНТОВ В САЙДБАРЕ (06.09) ============
   Шесть пунктов раскрываются под «инструментами»: подпись — что нужно на входе.
   Стрелка поворачивается, список выезжает по grid-rows (без фиксированных высот). */
.rnav--exp{position:relative;}
/* КОЛЬЦО ФОКУСА ТОЛЬКО ДЛЯ КЛАВИАТУРЫ (06.09): после клика мышью яркая лаймовая рамка
   на пункте читалась как вторая плашка. :focus-visible оставляет её для Tab-навигации. */
.rnav:focus:not(:focus-visible){outline:none;}
/* РАСКРЫТЫЙ ПУНКТ ПОЛУЧАЕТ ПЛАШКУ (06.09, замечание владельца: «нажимаю на инструменты,
   а плашка остаётся на проектах»): раздел не открывается, поэтому активный вид даёт
   само раскрытие — иначе непонятно, какой пункт открыт. */
/* раскрытый «инструменты» — по тому же правилу: плашки нет, открытость показывают
   лаймовый значок, повёрнутый чеврон и полоска слева */
.rnav--exp.is-open{background:transparent;color:var(--ink);box-shadow:none;}
.rnav--exp.is-open>svg:first-child{color:var(--lime);}
.rnav--exp.is-open::before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:3px;height:24px;border-radius:0 3px 3px 0;background:var(--lime);box-shadow:0 0 12px 1px rgba(168,232,12,.55);}
.rnav__ca{width:14px;height:14px;margin-left:auto;flex:0 0 auto;color:var(--faint);transition:transform .3s var(--ease),color .3s var(--ease);}
.rnav--exp.is-open .rnav__ca{transform:rotate(180deg);color:var(--lime);}
.rsub{display:grid;grid-template-rows:0fr;transition:grid-template-rows .34s var(--ease);}
.rsub.is-open{grid-template-rows:1fr;}
.rsub>*{overflow:hidden;}
/* строка инструмента: иконка в графитовом квадрате, название, стрелка на ховере */
.rsub__i{position:relative;display:flex;align-items:center;gap:10px;overflow:hidden;height:0;margin:0 6px;padding:0 10px;
  border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-appearance:none;appearance:none;
  border-radius:11px;text-decoration:none;transition:height .3s var(--ease),background .25s var(--ease);}
.rsub__i:focus{outline:none;}
.rsub__i:focus-visible{outline:2px solid var(--lime);outline-offset:-2px;}
.rsub.is-open .rsub__i.on{background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));}
/* полоска слева убрана 06.09 (просьба владельца): признак «вы здесь» несут лаймовая
   подпись, лаймовая иконка и графитовая подложка. */
.rsub__i.on b{color:var(--lime);}
.rsub__i.on .rsub__ar{opacity:1;transform:none;}
.rsub__i.on .rsub__ic{color:var(--lime);border-color:rgba(168,232,12,.4);background:linear-gradient(180deg,#1b1d24,#101117);}
.rsub.is-open .rsub__i{height:40px;}
.rsub__ic{width:24px;height:24px;flex:0 0 auto;display:grid;place-items:center;border-radius:8px;
  border:1px solid var(--line-2);background:rgba(255,255,255,.03);color:rgba(238,241,232,.5);
  transition:color .25s var(--ease),border-color .25s var(--ease),background .25s var(--ease);}
.rsub__ic svg{width:14px;height:14px;}
.rsub__i b{min-width:0;flex:1 1 auto;font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:12.5px;
  letter-spacing:-.01em;color:rgba(238,241,232,.86);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:color .25s var(--ease);}
.rsub__ar{width:13px;height:13px;flex:0 0 auto;color:var(--lime);opacity:0;transform:translate(-3px,3px);
  transition:opacity .25s var(--ease),transform .3s var(--ease);}
.rsub__i:hover{background:rgba(255,255,255,.05);}
.rsub__i:hover b{color:var(--ink);}
.rsub__i:hover .rsub__ic{color:var(--lime);border-color:rgba(168,232,12,.4);background:linear-gradient(180deg,#1b1d24,#101117);}
.rsub__i:hover .rsub__ar{opacity:1;transform:none;}
@media(max-width:860px){.rsub,.rnav__ca{display:none;}}
@media(hover:none){.notifpop__del{color:rgba(238,241,232,.5);width:40px;}}

/* ПРОКРУТКА ВНУТРИ ПОПОВЕРА (06.09): высота не была ограничена, список из двенадцати
   событий выходил за экран и жест уходил в документ — крутилась вся страница.
   Свой скроллер с гашением протаскивания, заголовок и подпись липкие. */
.notifpop{max-height:min(62vh,430px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
@media(max-width:680px){.notifpop{max-height:min(70vh,480px);}}

/* ШАПКА НА ТЕЛЕФОНЕ (06.09, поймал владелец: «звонок не у границы, плашка съехала»):
   распорка .top__sp и поиск на мобильном скрыты, поэтому свободные 31 px оставались
   справа — звонок не доходил до края, а плашка держала фиксированные 260 px и висела
   левее середины. Теперь плашка забирает всю середину (flex:1, min-width:0 — текст
   ужимается многоточием), звонок прижат к правому краю рабочей области. */
@media(max-width:860px){
  .top{gap:10px;}
  .top__id{flex:1 1 auto;min-width:0;max-width:none;}
  .top__id .top__sub,.top__id .top__nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
}

/* ПЛИТКА-КНОПКА (06.09): у перенесённых инструментов плитка стала <button> — сбрасываем
   системный фон buttonface и рамку, иначе браузер рисует серую плашку (уже ловилось
   на строках сайдбара). Вид и раскладка — те же, что у плитки-ссылки. */
button.pj-what__c{border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.04),transparent 46%),var(--card);
  color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-appearance:none;appearance:none;width:100%;}
button.pj-what__c:focus{outline:none;}
button.pj-what__c:focus-visible{outline:2px solid var(--lime);outline-offset:2px;}

/* ЦЕЛИ КАСАНИЯ В МЕНЮ ПРОФИЛЯ (07.09, аудит инструментов): на телефоне пункты были 40 px
   при каноне 44 — правим только мобильную полосу, на ПК плотность меню не трогаем. */
@media(max-width:640px){.pmenu__i{min-height:44px;padding:11px 12px;}}

/* ПЛИТКА ИНСТРУМЕНТОВ НА ГОСТЕВОЙ ВИТРИНЕ (16.09): каталог, а не шаги маршрута —
   порядок не обязателен, человек начинает с любого инструмента. Номер тихий, в одной
   строке с иконкой; подпись «смотреть демо» говорит, что ждёт по ссылке (публичная
   страница инструмента, где демо работает без входа). */
/* ТРИ КОЛОНКИ ЯВНО, А НЕ `auto-fit` (16.09, владелец: «почему не 2 ряда по 3 карточки?»):
   гостевая витрина идёт без рельса (`.is-guest .app{grid-template-columns:1fr}`), блок получает 1173 px —
   `minmax(248px,1fr)` укладывал ЧЕТЫРЕ колонки и давал рваный ряд 4+2. Шесть инструментов —
   число постоянное, поэтому решётка задана явно: 3 × 2 на пк, 2 × 3 на планшете, столбик на телефоне. */
.gtools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
@media(max-width:980px){.gtools{grid-template-columns:repeat(2,minmax(0,1fr))}}
.gtool{display:flex;flex-direction:column;gap:6px;padding:16px 18px 14px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.02);text-decoration:none;color:inherit;transition:border-color .18s ease,background .18s ease,transform .18s ease}
.gtool__top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:2px}
.gtool__ic{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:11px;background:rgba(168,232,12,.1);color:var(--lime)}
.gtool__ic svg{width:17px;height:17px}
.gtool__n{font-family:'Space Grotesk',sans-serif;font-size:12px;letter-spacing:.14em;color:var(--faint)}
.gtool__t{font-family:'Space Grotesk',sans-serif;font-size:16px;font-weight:600;color:var(--ink)}
.gtool__d{font-size:13px;line-height:1.45;color:var(--muted)}
.gtool__go{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-family:'Space Grotesk',sans-serif;font-size:12.5px;color:var(--lime);opacity:.85;transition:gap .18s ease,opacity .18s ease}
.gtool__go svg{width:13px;height:13px}
@media(hover:hover){.gtool:hover{border-color:rgba(168,232,12,.45);background:rgba(168,232,12,.05);transform:translateY(-2px)}.gtool:hover .gtool__go{gap:10px;opacity:1}}
.gtool:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
@media(max-width:640px){.gtools{grid-template-columns:1fr;gap:10px}.gtool{padding:14px 16px 12px}}

/* ============ ТЕЛЕФОН: АВАТАР В НИЖНЕМ БАРЕ, БЕЗ ШАПКИ (28.09) ============
   Владелец: «аватарку в нижний бар, бар без текста, чтобы она вместилась; по тапу — страница
   со всем, что было в меню профиля, плюс настройки и уведомления; верхний блок убрать».
   Гость не затронут: у него шапка с входом и «на сайт», а бар скрыт. */
.dtab--me,.me,.me-out{display:none;}
/* ШАПКА КАБИНЕТА — ТОЛЬКО ГОСТЮ (06.10.2026, владелец: «баг шапка появилась… её удалить нужно»):
   вошедшему она не нужна ни на одной ширине — на ПК профиль и звонок в рельсе, до 900 px
   (рельса нет) аватар в нижнем баре. Раньше скрывалась лишь до 700 px, и на 701–900 вылезала. */
body:not(.is-guest) #kb-root .top{display:none;}
@media(max-width:900px){
  .dtab{min-width:48px;height:48px;}
  .dtab.on{padding:0;}
  .dtab.on .dtab__l{max-width:0;opacity:0;margin-left:0;}
  .dtab--me{display:inline-flex;position:relative;}
  .dtab__av{position:relative;width:34px;height:34px;border-radius:50%;overflow:hidden;display:grid;place-items:center;
    background:linear-gradient(180deg,#2a2c33,#17181d);color:var(--ink,#eef1e8);font:600 14px/1 'Space Grotesk',sans-serif;box-shadow:0 0 0 2px rgba(255,255,255,.14);}
  .dtab__av .av__img,.me__av .av__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
  .dtab--me.on{background:transparent;box-shadow:none;padding:0;}
  .dtab--me.on .dtab__av{box-shadow:0 0 0 2px var(--lime);}
  .dtab__dot{position:absolute;top:7px;right:6px;width:9px;height:9px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 2px #121318;}
  .dtab__dot[hidden]{display:none;}
  .me{display:grid;gap:12px;margin:0 0 var(--kb-gap,16px);}
  .me__card{display:flex;align-items:center;gap:14px;padding:16px;border-radius:22px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#17181e,#101117);}
  .me__av{position:relative;flex:0 0 auto;width:56px;height:56px;border-radius:50%;overflow:hidden;display:grid;place-items:center;
    background:linear-gradient(180deg,#2a2c33,#17181d);color:var(--ink,#eef1e8);font:600 22px/1 'Space Grotesk',sans-serif;box-shadow:0 0 0 1px rgba(255,255,255,.1);}
  .me__meta{min-width:0;flex:1 1 auto;display:grid;gap:4px;}
  .me__n{font:600 18px/1.2 'Space Grotesk',sans-serif;color:var(--ink,#eef1e8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .me__s{font-size:13px;line-height:1.3;color:var(--muted,rgba(238,241,232,.62));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .me__acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .me__a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 12px;border-radius:14px;border:1px solid rgba(255,255,255,.08);
    background:rgba(255,255,255,.03);color:var(--ink,#eef1e8);font:500 13.5px/1.2 'Space Grotesk',sans-serif;text-transform:lowercase;text-decoration:none;text-align:center;}
  .me__a svg{width:18px;height:18px;flex:0 0 auto;}
  .me__h{margin:8px 2px 0;font:500 12px/1.1 'Space Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--faint,rgba(238,241,232,.5));}
  .me-nt{display:grid;border-radius:20px;border:1px solid rgba(255,255,255,.08);background:#101117;overflow:hidden;}
  .me-nt .notifpop__i{display:flex;align-items:stretch;gap:0;margin:0;padding:0;border:0;border-top:1px solid rgba(255,255,255,.06);border-radius:0;background:none;}
  .me-nt .notifpop__i:first-child{border-top:0;}
  .me-nt .notifpop__r{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:52px;padding:12px 6px 12px 16px;
    border:0;background:none;color:var(--ink,#eef1e8);text-align:left;font:inherit;}
  .me-nt .notifpop__tx{font-size:13.5px;line-height:1.4;white-space:normal;color:var(--ink,#eef1e8);}
  .me-nt .notifpop__w{font-size:12px;color:var(--muted,rgba(238,241,232,.62));}
  .me-nt .notifpop__i.is-new .notifpop__tx::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:var(--lime);vertical-align:1px;}
  .me-nt .notifpop__del{position:static;flex:0 0 44px;width:44px;min-height:44px;display:grid;place-items:center;border:0;background:none;color:var(--muted,rgba(238,241,232,.62));opacity:1;transform:none;}
  .me-nt .notifpop__del svg{width:14px;height:14px;}
  .me-nt .notifpop__none{margin:0;padding:16px;font-size:13.5px;color:var(--muted,rgba(238,241,232,.62));}
  .me-out{display:flex;width:100%;margin-top:var(--kb-gap,16px);}
  .me__a--out{color:var(--risk,#ff7a66);}
}
@media(max-width:374px){
  .dock{gap:3px;padding:5px;}
  .dtab{min-width:44px;height:46px;}
  .dtab__av{width:32px;height:32px;}
}

/* меню профиля на телефоне (28.09): четыре пункта списком, подэкраны с «← профиль»;
   подложка аватара графитовая — сверху ляжет живое фото из Яндекс ID */
@media(max-width:900px){
  .me-list{display:grid;border-radius:20px;border:1px solid rgba(255,255,255,.08);background:#101117;overflow:hidden;}
  .me-li{display:flex;align-items:center;gap:13px;width:100%;min-height:56px;padding:0 16px;border:0;border-top:1px solid rgba(255,255,255,.06);border-radius:0;
    background:none;color:var(--ink,#eef1e8);font:500 15px/1.2 'Space Grotesk',sans-serif;text-transform:lowercase;text-decoration:none;text-align:left;}
  .me-li:first-child{border-top:0;}
  .me-li:active{background:rgba(255,255,255,.04);}
  .me-li>svg:first-child{width:20px;height:20px;flex:0 0 auto;color:var(--muted,rgba(238,241,232,.62));}
  .me-li__t{flex:1 1 auto;min-width:0;}
  .me-li__go{width:16px;height:16px;flex:0 0 auto;color:var(--faint,rgba(238,241,232,.5));}
  .me-li__n{min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:inline-grid;place-items:center;background:rgba(168,232,12,.14);color:var(--lime);font:600 12px/1 'Space Grotesk',sans-serif;}
  .me-li--out,.me-li--out>svg:first-child{color:var(--risk,#ff7a66);}
}

/* ПОДВАЛ КАРТОЧКИ ОТЧЁТА НА ТЕЛЕФОНЕ — КНОПКИ В ОДНУ СТРОКУ (28.09, владелец: «кнопки в 1 строку?»).
   Было: «открыть отчёт» на всю ширину, «повторить» — второй строкой, карточка вырастала на 54 px.
   Стало: лаймовая «открыть» тянется, «повторить» по своему тексту справа; до 374 px «повторить»
   остаётся иконкой (подпись в DOM — имя кнопки для скринридера). Одиночная кнопка (истёкший
   отчёт, «формируется») по-прежнему на всю ширину. */
@media(max-width:680px){
  .rep__foot .mini{flex:1 1 100%;}
  .rep__foot .mini.lime{flex:1 1 auto;min-width:0;}
  .rep__foot .mini.lime~.mini{flex:0 0 auto;padding-left:16px;padding-right:16px;}
}
@media(max-width:374px){
  .rep__foot .mini.lime~.mini{width:46px;padding:0;gap:0;font-size:0;}
  .rep__foot .mini.lime~.mini svg{margin:0;}
}

/* СТРОКА ОФЕРТЫ НА ТЕЛЕФОНЕ (28.09, владелец: «выбивается, встроить органично»). Было: ссылка и
   пояснение двумя строками столбиком по левому краю после заметки — висела отдельным блоком.
   Стало: тихая подпись по центру сразу под кнопкой «пополнить» (где её и ждут), двумя центрированными строками
   (на телефоне фраза всегда переносится — разделитель «·» висел бы с подчёркиванием, снят); заметка про маршрут уходит ниже. На ПК порядок прежний. */
@media(max-width:680px){
  .card:has(>.setlinks--pay){display:flex;flex-direction:column;}
  .card:has(>.setlinks--pay)>.setlinks--pay{order:1;}
  .card:has(>.setlinks--pay)>.cnote{order:2;}
  .card>.setlinks--pay{flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 6px;margin:12px 0 2px;text-align:center;font-size:12px;line-height:1.5;}
  .card>.setlinks--pay a{font-family:inherit;font-size:inherit;color:var(--muted,rgba(238,241,232,.62));text-decoration:underline;text-decoration-color:rgba(238,241,232,.28);text-underline-offset:3px;}
  .card>.setlinks--pay span{color:var(--faint,rgba(238,241,232,.5));}
}

/* 28.09 (владелец: «у проектов нет заголовка на мобильном»): заголовок «проекты» на телефоне
   вернулся — первым, как в остальных разделах; кнопка «новый проект» по-прежнему внизу */
@media(max-width:700px){
  .view[data-view="overview"]>.pj-head{order:0;display:flex;margin:0 0 14px;}
  .view[data-view="overview"]>.pj-head .pj-head__t{display:block;}
}

/* заголовок «проекты» на ПК по верхней кромке (28.09): правило .pj-lead выше по файлу проигрывало
   более позднему .pj-head{align-items:flex-end} при равном весе — поднимаем вес */
.pj-head.pj-lead{align-items:flex-start;}

/* ВЫПАДАЮЩИЙ СПИСОК ПЕРИОДА — ОДНА ОБВОДКА (28.09, владелец: «при нажатии 2 обводки лайма подряд»).
   Общее #kb-root :focus-visible (вес 1,1,0) рисовало кольцо поверх лаймовой рамки из
   .histsel select:focus — фокус показан дважды. Оставляем рамку, кольцо снимаем. На телефоне
   высота 44 px — цель пальцем по канону. */
#kb-root .histsel select:focus-visible{outline:none;}
@media(max-width:700px){.histsel select{min-height:44px;padding:0 12px;border-radius:12px;font-size:13px;}}

/* СТРЕЛКА СПИСКА ПЕРИОДА (28.09, владелец: «стрелка сильно справа?»): системная стрелка стояла
   вплотную к рамке. Своя — с отступом 12 px от края (14 на телефоне), в цвете подписей. */
.histsel select{-webkit-appearance:none;appearance:none;padding-right:34px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='rgba(238,241,232,.62)' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:12px 12px;}
@media(max-width:700px){.histsel select{padding-right:38px;background-position:right 14px center;}}

/* ФИЛЬТР РИСКА — СВОЙ СПИСОК НА ГРАФИТЕ (29.09). Раскрывается всегда вниз под кнопкой, справа по её кромке
   (на телефоне — слева). Кнопка — пилюля 40 px под дорожку вкладок, 44 px на телефоне. */
#kb-root .rdd{display:inline-flex;align-items:center;gap:10px;margin-left:auto;}
#kb-root .rdd.is-open{position:relative;z-index:40;}
.rdd__k{font:500 11.5px/1 'Space Grotesk',sans-serif;letter-spacing:.02em;text-transform:lowercase;color:rgba(238,241,232,.5);}
.rdd__w{position:relative;}
.rdd__btn{display:inline-flex;align-items:center;gap:9px;min-height:40px;padding:0 13px 0 15px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(255,255,255,.1);background:linear-gradient(180deg,#1b1d24,#121319);color:var(--ink);
  font:500 12.5px/1 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:-.01em;white-space:nowrap;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);}
.rdd__btn:hover,.rdd.is-open .rdd__btn{border-color:rgba(238,241,232,.26);}
#kb-root .rdd__btn:focus-visible{outline:none;border-color:rgba(168,232,12,.55);box-shadow:0 0 0 3px rgba(168,232,12,.12),inset 0 1px 0 rgba(255,255,255,.04);}
.rdd__btn>b{font-weight:600;}
.rdd__n{font-variant-numeric:tabular-nums;color:rgba(238,241,232,.55);}
.rdd__btn>svg{width:12px;height:12px;margin-left:1px;color:rgba(238,241,232,.62);transition:transform .25s var(--ease);}
.rdd.is-open .rdd__btn>svg{transform:rotate(180deg);}
.rdd__dot,.rdd__opt>i{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:rgba(238,241,232,.32);}
.rdd--ok .rdd__dot,.rdd__opt--ok>i{background:var(--lime);}
.rdd--mid .rdd__dot,.rdd__opt--mid>i{background:var(--warn);}
.rdd--high .rdd__dot,.rdd__opt--high>i{background:var(--risk);}
.rdd--ok .rdd__btn>b{color:var(--lime);}
.rdd--mid .rdd__btn>b{color:var(--warn);}
.rdd--high .rdd__btn>b{color:var(--risk);}
.rdd__pop{position:absolute;top:calc(100% + 8px);right:0;min-width:244px;padding:6px;border-radius:16px;display:flex;flex-direction:column;gap:2px;
  background:linear-gradient(180deg,#1a1c22,#111217);border:1px solid rgba(255,255,255,.09);
  box-shadow:0 22px 44px -14px rgba(0,0,0,.75),0 3px 10px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.04);
  opacity:0;visibility:hidden;transform:translateY(-6px);transform-origin:top right;
  transition:opacity .16s var(--ease),transform .22s var(--ease),visibility 0s linear .22s;}
.rdd.is-open .rdd__pop{opacity:1;visibility:visible;transform:none;transition:opacity .16s var(--ease),transform .22s var(--ease),visibility 0s;}
.rdd__opt{position:relative;display:flex;align-items:center;gap:10px;width:100%;min-height:40px;margin:0;padding:0 11px 0 12px;border:0;border-radius:11px;
  background:transparent;cursor:pointer;text-align:left;color:rgba(238,241,232,.8);
  font:500 13px/1.2 'Space Grotesk',sans-serif;text-transform:lowercase;letter-spacing:-.01em;transition:background .15s var(--ease),color .15s var(--ease);}
.rdd__t{flex:1 1 auto;}
.rdd__c{min-width:14px;text-align:right;font-variant-numeric:tabular-nums;color:rgba(238,241,232,.55);}
.rdd__opt>svg{width:14px;height:14px;flex:0 0 auto;color:var(--lime);opacity:0;}
.rdd__opt:hover:not([disabled]),.rdd__opt:focus-visible{background:rgba(255,255,255,.055);color:var(--ink);}
#kb-root .rdd__opt:focus-visible{outline:none;}
.rdd__opt.is-on{color:var(--ink);background:rgba(255,255,255,.04);}
.rdd__opt.is-on .rdd__c{color:var(--ink);}
.rdd__opt.is-on>svg{opacity:1;}
.rdd__opt[disabled]{opacity:.38;cursor:default;}
.rdd__opt--all{margin-bottom:5px;}
.rdd__opt--all::after{content:"";position:absolute;left:12px;right:12px;bottom:-4px;height:1px;background:rgba(255,255,255,.07);}
@media(max-width:700px){
  #kb-root .rpx-bar .rdd{margin-left:0;}
  .rdd__btn{min-height:44px;}
  .rdd__pop{left:0;right:auto;min-width:244px;max-width:calc(100vw - 40px);transform-origin:top left;}
  .rdd__opt{min-height:44px;}
}

/* ВЕРНУТЬ В ПРОЕКТ (29.09): свёрнутые списки «убранные» (кандидаты проекта) и «удалённые» (корзина проектов) */
.pjfold{margin-top:14px;}
.pjfold--trash{margin-top:var(--kb-gap);}
.pjfold__tog{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 2px;border:0;border-top:1px solid var(--line-2);background:none;cursor:pointer;text-align:left;
  font:500 11.5px/1.2 'Space Grotesk',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:rgba(238,241,232,.62);transition:color .2s ease;}
.pjfold__tog:hover{color:var(--ink);}
.pjfold__tog i{font-style:normal;display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 7px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--ink);font-size:11px;letter-spacing:0;}
.pjfold__tog em{font-style:normal;margin-left:auto;font-size:12px;letter-spacing:0;text-transform:none;color:rgba(238,241,232,.5);}
.pjfold__ch{width:14px;height:14px;flex:0 0 auto;transition:transform .2s ease;}
.pjfold.is-open .pjfold__ch{transform:rotate(180deg);}
.pjfold__list{padding-top:6px;}
.pjfold__list[hidden]{display:none;}
.pjc.is-gone{border-style:dashed;background:none;}
.pjc.is-gone .pjc__ph{filter:grayscale(.6);}
.pjc__when{color:rgba(238,241,232,.5);}
.pjtr{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:0 14px;padding:12px 14px;border:1px dashed var(--line-2);border-radius:16px;}
.pjtr+.pjtr{margin-top:10px;}
.pjtr__ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.04);color:rgba(238,241,232,.55);}
.pjtr__ic svg{width:18px;height:18px;}
.pjtr__b{min-width:0;display:grid;gap:4px;}
.pjtr__t{font:500 14.5px/1.3 'Space Grotesk',sans-serif;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pjtr__m{font-size:12px;color:rgba(238,241,232,.58);}
@media(max-width:640px){
  .pjfold__tog em{display:none;}
  .pjtr{grid-template-columns:40px minmax(0,1fr);gap:10px 12px;}
  .pjtr .mini{grid-column:1/-1;justify-self:start;height:44px;padding:0 14px;}
}

/* ПРОЕКТ БЕЗ БОЛОТА И БЕЗ ОБРЕЗКИ (29.09, владелец со снимком страницы проекта: «болотный цвет присутствует и мне
   он не нравится… вёрстка на ПК и мобильном должна быть идеальной с учётом раскрытого и свёрнутого меню»).
   (1) полупрозрачный лайм на графите давал оливковые плашки — подсказка «дальше», кнопки «отчёт» и «нет uscc?».
   Теперь графит и нейтральная кромка; лайм остаётся в словах-акцентах (кикер, иконка) и в сплошных кнопках.
   (2) имя проекта и строка шага больше не режутся многоточием: при свёрнутом меню на 1245 px «проверка компании · Sh…»
   теряла половину имени — теперь перенос (заголовок до двух строк сбалансирован), карандаш по первой строке.
   (3) под полосой готовности был отбив для ряда чипов, которого в этом состоянии нет — низ плиты висел пустым. */
.pj-why{border-color:rgba(255,255,255,.09);background:linear-gradient(160deg,#121316,#0d0e11);}
.pjslot__ask{border-color:rgba(255,255,255,.14);background:none;color:rgba(238,241,232,.82);}
.pjslot__ask:hover{border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.04);color:var(--ink,#eef1e8);}
@media(min-width:701px){
  .pjslot__rv{border-color:rgba(255,255,255,.14);background:none;color:var(--ink,#eef1e8);}
  .pjslot__rv svg{color:var(--lime,#a8e80c);}
  .pjslot.is-done .pjslot__h:hover .pjslot__rv svg,.pjslot.is-done .pjslot__h:focus-visible .pjslot__rv svg{color:var(--ink-on-lime,#0a0b0a);}
}
.pj-head__tx{white-space:normal;overflow:visible;text-overflow:clip;text-wrap:balance;overflow-wrap:anywhere;}
.pj-card__head .pj-head__t{align-items:flex-start;}
.pjslot__m{white-space:normal;overflow:visible;text-overflow:clip;max-width:64ch;text-wrap:pretty;}
.rdy__bar:last-child{margin-bottom:0;}
.pjc.is-on{background:linear-gradient(160deg,#121316,#0d0e11);}
.pjc__t{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:clip;overflow-wrap:anywhere;}
.pj-card__head .pj-head__ed{margin-top:max(0px,calc((clamp(24px,3vw,34px) * 1.05 - 30px) / 2));}
/* пять фактов доставки без «сироты»: auto-fit давал 4+1 и 2+2+1 — пустые дорожки заливались цветом линии
   и в плите висел серый прямоугольник. Теперь по ширине самой плиты: пять в ряд или ровные 3+2. */
.wait:has(>.wait__facts>.wait__f:nth-child(5):last-child){container:wfacts / inline-size;}
@container wfacts (min-width:780px){.wait__facts:has(>.wait__f:nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr));}}
@container wfacts (min-width:480px) and (max-width:779.98px){
  .wait__facts:has(>.wait__f:nth-child(5):last-child){grid-template-columns:repeat(6,minmax(0,1fr));}
  .wait__facts:has(>.wait__f:nth-child(5):last-child)>.wait__f{grid-column:span 2;}
  .wait__facts:has(>.wait__f:nth-child(5):last-child)>.wait__f:nth-child(n+4){grid-column:span 3;}
}

/* КНОПКИ КАНДИДАТА НА ТЕЛЕФОНЕ (29.09, владелец: «такие кнопки оставляем или делаем на 10/10?»):
   три пилюли разной ширины стояли рваным рядом по левому краю, и «убрать» весило столько же,
   сколько «выбрать». Теперь действия — одна линия равных кнопок под волосяной линией карточки,
   «убрать» — иконка 44×44 справа (подпись — в aria-label). Не хватает ширины (просроченный снимок —
   четыре действия, экран 320) — кнопки переносятся целыми, не вылезая из карточки. На ПК — как было. */
.pjc__del svg{display:none;}
.pjc__act:empty{display:none;}
@media(max-width:640px){
  .pjc__act{display:flex;flex-wrap:wrap;gap:8px;padding-top:10px;border-top:1px solid rgba(255,255,255,.06);}
  .pjc__act .mini{flex:1 1 84px;justify-content:center;height:44px;min-height:44px;padding:0 10px;white-space:nowrap;}
  .pjc__act .mini.pjc__del{flex:0 0 44px;width:44px;padding:0;gap:0;color:rgba(238,241,232,.62);}
  .pjc__act .mini.pjc__del svg{display:block;width:17px;height:17px;}
  .pjc__act .mini.pjc__del span{display:none;}
  /* четыре действия (просроченный снимок): «снимок» и «проверить заново» — первой строкой пополам,
     «выбрать» и корзина — второй; без этого корзина одна падала на новую строку */
  .pjc__act:has(>:nth-child(4)) .mini:not(.pjc__del){flex-basis:calc(50% - 4px);}
}

/* ОКНО ШАГА НА ТЕЛЕФОНЕ — ШТОРКОЙ СНИЗУ (29.09, владелец: «почему на мобильном не снизу экрана стоит?
   свайпом вниз закрывается? крестик стиль не наш»). (1) `margin:auto 0` из раннего правила «короткий
   шаг — по центру» гасил прижим шторки к низу: окно висело посередине, под ним пустые 207 px. Снят.
   (2) Крестик всех обычных окон на телефоне — канон Tovian: без подложки и кольца, 44×44, лайм и
   поворот под пальцем. Графитовая подложка — только когда под крестик уехало содержимое
   (.is-scrolled ставит kabinet.js), иначе светлые строки просвечивали бы сквозь штрихи.
   Листы отчётов (.cmodal--sheet) живут по своему правилу is-stuck и не тронуты. */
@media(max-width:900px){
  .cmodal-back .cmodal.cmodal--run{margin:0;}
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x{width:44px;height:44px;border-color:transparent;background:transparent;
    -webkit-backdrop-filter:none;backdrop-filter:none;transition:background .3s var(--ease),transform .38s var(--ease);}
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x::before,
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x::after{background:var(--muted);}
  body .cmodal-back .cmodal.is-scrolled:not(.cmodal--sheet)>.cmodal__x{background:rgba(12,13,18,.86);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x:active{background:var(--lime);border-color:var(--lime);transform:rotate(90deg) scale(.94);}
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x:active::before,
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x:active::after{background:var(--ink-on-lime);}
}
/* ховер крестика (29.09, владелец: «у крестика нет ховера лайма»): правило канона выше весит столько же,
   сколько ховер окна шага, и, стоя ниже, гасило его — на узком окне с мышью крестик не загорался */
@media(max-width:900px) and (hover:hover){
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x:hover{background:var(--lime);border-color:var(--lime);transform:rotate(90deg);}
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x:hover::before,
  body .cmodal-back .cmodal:not(.cmodal--sheet)>.cmodal__x:hover::after{background:var(--ink-on-lime);}
}
/* КНОПКА ЗАПУСКА ШАГА — ОБЫЧНОГО РАЗМЕРА (29.09, владелец: «так и должно быть огромная плашка?»):
   лаймовая полоса на всю ширину окна и 50–54 px высотой перекрикивала сам шаг. Теперь кнопка по
   ширине текста, 46 px высотой (цель касания на телефоне сохраняется), текст по центру. */
.cmodal .kbr-go{display:inline-flex;width:auto;max-width:100%;min-height:46px;height:auto;padding:0 24px;justify-content:center;font-size:14px;}

/* ============ ОКНА КАБИНЕТА — ОДИН ЯЗЫК (29.09, аудит владельца «все плашки на ПК и мобильном на 10/10») ============
   Что было: лаймовая рамка .2 читалась на графите болотной; заголовки то с прописной, то со строчной;
   кнопки — лаймовой полосой во всё окно (`.cmodal .btn{width:100%}` + инлайновые width:100%);
   подписи под ними по центру при тексте по левому краю; выбор и фокус — лаймовой заливкой («болото»);
   образец запроса — карточкой в карточке с лаймовой скобой; «удалить» — лаймовой, как «создать».
   Листы отчётов (.cmodal--sheet) живут по своим правилам и не тронуты. */
#modalBack .cmodal:not(.cmodal--sheet){border-color:rgba(255,255,255,.08);}
#modalBack .cmodal:not(.cmodal--sheet) .cmodal__t::first-letter{text-transform:lowercase;}
#modalBack .cmodal:not(.cmodal--sheet) .btn{display:inline-flex;width:auto;max-width:100%;min-height:46px;padding:0 24px;justify-content:center;align-self:flex-start;justify-self:start;}
#modalBack .cmodal:not(.cmodal--sheet) .cmodal__note--c{text-align:left;margin-top:12px;}
/* выбор варианта и фокус поля — лаймовая рамка по графиту, без зелёной заливки */
#modalBack .nkind__b.is-on{background:linear-gradient(180deg,#1b1d23,#131419);border-color:var(--lime);}
#modalBack .pjf__in:focus{background:rgba(255,255,255,.03);box-shadow:none;border-color:rgba(168,232,12,.6);}
#modalBack .pjf__in:not(:focus):not(:placeholder-shown)~.pjf__lb{color:var(--faint);}
/* образец запроса продавцу — цитата между волосяными линиями, а не плита в плите */
#modalBack .pj-ask{margin-top:16px;padding:14px 0;border:0;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08);border-radius:0;background:none;box-shadow:none;}
#modalBack .pj-ask::before,#modalBack .pj-ask::after{display:none;}
#modalBack .pj-ask+.btn{margin-top:16px;}
/* «удалить» — не лаймом: лайм в кабинете значит «вперёд», а не «уничтожить» */
.btn.btn--danger{background:linear-gradient(180deg,#34181a,#241113);color:#ff9d92;border:1px solid rgba(255,122,108,.34);box-shadow:none;}
.btn.btn--danger svg{color:currentColor;}
@media(hover:hover){.btn.btn--danger:hover{background:linear-gradient(180deg,#3f1c1d,#2c1416);border-color:rgba(255,122,108,.56);color:#ffb1a8;}}
.pj-confirm{display:flex;flex-wrap:wrap;gap:10px;}
/* окно шага: плашка «уходит в инструмент» — строкой без рамки; без полей окно уже, чем с формой */
#modalBack .cmodal--run .kbr-in--flat{border:0;background:none;padding:0;margin-top:14px;}
@media(min-width:701px){#modalBack .cmodal--run:not(:has(.kbr-f)):not(:has(.kbr-quad)){width:min(640px,100%);}}
/* КНОПКИ ОКОН НА ТЕЛЕФОНЕ — ВО ВСЮ ШИРИНУ (29.09, владелец: «кнопка на мобильном во всю ширину контейнера»):
   в шторке снизу главная кнопка — под большой палец, на всю ширину; на ПК остаётся по ширине текста.
   Пара кнопок («да, удалить» / «оставить») — две равные половины. */
@media(max-width:700px){
  #modalBack .cmodal:not(.cmodal--sheet) .btn{display:flex;width:100%;align-self:stretch;justify-self:stretch;min-height:50px;}
  #modalBack .pj-confirm{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  #modalBack .pj-confirm .btn{width:100%;}
  #modalBack .cmodal:not(.cmodal--sheet) .cmodal__note--c{text-align:center;}
}
/* «ЧТО ПРОВЕРЯЕМ» В ОКНЕ ПРОВЕРКИ (29.09, владелец: «тут всё идеально стоит?»): подпись стояла в одной строке
   с пилюлями и врала («уходит в инструмент» — прогон идёт прямо в проекте), пилюли читались кнопками,
   ссылка обрезалась на середине. Теперь это список «ключ — значение» между волосяными линиями:
   подпись над ним, ключи — узкой колонкой, значения в строку с многоточием, без пилюль. */
#modalBack .cmodal--run .kbr-in--flat{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:9px 16px;
  margin-top:16px;padding:13px 0;border:0;border-top:1px solid rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.07);border-radius:0;background:none;}
#modalBack .cmodal--run .kbr-in--flat .kbr-in__h{grid-column:1/-1;margin:0 0 2px;padding:0;border:0;}
#modalBack .cmodal--run .kbr-in__c{display:contents;}
#modalBack .cmodal--run .kbr-in__c>i{font:500 12px/1.3 'Space Grotesk',sans-serif;font-style:normal;color:var(--faint);white-space:nowrap;}
/* значение — до двух строк, а не многоточие на полуслове: номер предложения в ссылке и имя товара должны читаться целиком */
#modalBack .cmodal--run .kbr-in__c>b{min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font:500 13.5px/1.35 'Inter',sans-serif;color:var(--ink);}
/* телефон: хвосты подписей кандидата скрыты — «проверить · выбрать · корзина» держатся одной строкой,
   цена проверки видна в окне запуска (29.09). На ПК подписи полные. */
@media(max-width:640px){.pjc__lx{display:none;}}
/* ХОВЕР КНОПОК КАНДИДАТА — ГРАФИТ, НЕ БОЛОТО (29.09, владелец: «болотный ховер убрать»): общий .mini:hover
   заливал кнопку лаймом .06 с лаймовой рамкой — на графите это читается болотным. Здесь — светлее графит. */
.pjc__act .mini:hover{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:var(--ink);}
/* «← к проекту» над инструментом, открытым шагом проекта (29.09) — вид кнопки «← все отчёты» */
#kb-root .pjback{margin:0 0 14px;align-self:flex-start;justify-self:start;width:max-content;max-width:100%;}
#kb-root .pjback span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#kb-root .pjback--end{margin:18px 0 0;}

/* ЗАПРОС ВЕСА И ОБЪЁМА НА ТЕЛЕФОНЕ — БЕЗ ПРОКРУТКИ (29.09, владелец: «нужно сделать без скрола на мобильном»):
   лист был 639 px при видимой высоте iPhone ≈ 611 px (92dvh) — кнопка и подсказка уезжали под прокрутку.
   Перевод свёрнут в строку «перевод на русский» (раскрывается нажатием), текст для продавца плотнее.
   На ПК кнопки нет и перевод открыт, как было. */
.pj-ask__trb{display:none;}
@media(max-width:640px){
  #modalBack .pj-ask{padding:12px 0 0;}
  #modalBack .pj-ask__t{font-size:13.4px;line-height:1.42;}
  #modalBack .pj-ask__trb{display:flex;align-items:center;gap:6px;width:100%;min-height:44px;margin:0;padding:0;border:0;background:none;
    color:var(--muted,rgba(238,241,232,.62));font:inherit;font-size:12.5px;font-weight:500;letter-spacing:.01em;text-align:left;cursor:pointer;}
  #modalBack .pj-ask__trb svg{flex:none;transition:transform .2s var(--ease,ease);}
  #modalBack .pj-ask.is-tr .pj-ask__trb{color:var(--ink,#eef1e8);}
  #modalBack .pj-ask.is-tr .pj-ask__trb svg{transform:rotate(180deg);}
  #modalBack .pj-ask:not(.is-tr) .pj-ask__ru{display:none;}
  #modalBack .pj-ask.is-tr .pj-ask__ru{margin:0;padding:0 0 12px;border-top:0;}
}

/* ЗОНЫ НАЖАТИЯ 44 px (01.10, аудит: фильтры отчётов 40 px, корзина просроченного отчёта 38–40 px на телефоне). Рисунок полосы тот же, высота 44. */
@media (max-width:760px),(pointer:coarse){.seg button{min-height:44px;}.rep.dead .rep__delin{width:44px;height:44px;}}

/* 02.10: предмет и дата под общим названием проекта; две кнопки в «дальше: указать товар» */
.pjrow__sub{display:block;margin-top:3px;font:500 11.5px/1.35 'Space Grotesk',sans-serif;letter-spacing:.01em;color:var(--muted,rgba(238,241,232,.55));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pj-why__a{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}

/* ТОВАР ПРОЕКТА — СТРОКОЙ (08.10, решение владельца: ручного ввода товара в проекте нет — он приходит из
   проверки продавца и подбора). Без рамки: карточка проекта — верхний уровень, внутри только линии */
.pj-goodsline{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin-top:clamp(14px,1.8vw,20px);padding:14px 2px;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08);}
.pj-goodsline__k{font:600 10.5px/1 'Space Grotesk',sans-serif;letter-spacing:.09em;text-transform:uppercase;color:rgba(238,241,232,.45);}
.pj-goodsline__a{min-width:0;max-width:100%;overflow-wrap:anywhere;font:500 14.5px/1.35 'Space Grotesk',sans-serif;color:var(--ink,#eef1e8);text-decoration:none;border-bottom:1px solid rgba(168,232,12,.55);transition:border-color .2s,color .2s;}
@media(hover:hover){.pj-goodsline__a:hover{color:var(--lime,#a8e80c);border-color:var(--lime,#a8e80c);}}
.pj-goodsline__a:focus-visible{outline:2px solid var(--lime,#a8e80c);outline-offset:3px;border-radius:2px;}
.pj-goodsline__h{flex:1 1 100%;font-size:12px;line-height:1.45;color:rgba(238,241,232,.45);}
