/* ═══════════════════════════════════════════════════════════════════════════
   PixelDesk Kit «Воздух» · v3 · 2026-10-10 (CRITIQUE2: деньги из одного источника, тулбар, «под доком»,
   моно только у чисел, обходы экранов подняты в kit; v2 — фундамент CRITIQUE §0 + компоненты §16)
   Одна дизайн-система для всех экранов PixelDesk. Документация — KIT.md («Что изменилось в v3» — в начале).
   Правила: только токены var(--pd-…); классы с префиксом pd-; модификаторы
   pd-x--y; состояния is-*; без !important (кроме служебного .pd-sr и утилит видимости pd-hide-… и pd-show-m).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ───────────────────────── 1. Токены ───────────────────────── */
:root{
  color-scheme:dark;

  /* Палитра Pixel */
  --pd-page:#0b1220;          /* фон страницы */
  --pd-surface:#131f33;       /* карточки, док, поповеры */
  --pd-surface-2:#0f1a2e;     /* вложенные подложки, поля */
  --pd-raised:#15233c;        /* поповер/лист — чуть светлее поверхности */
  --pd-hover:#182642;         /* ховер поверхности */
  --pd-line:#1c2940;          /* разделители */
  --pd-border:#22304a;        /* рамки контролов */
  --pd-border-2:#2c3c5c;      /* рамка при наведении/выбранная */
  --pd-ink:#F2F6FC;           /* основной текст (№5: .app{color:var(--ink)}); явные #fff у заголовков, значений и активного */
  --pd-ink-2:#c9d4e5;         /* второй текст */
  --pd-muted:#8b95a7;         /* метки; мелкий текст не темнее этого */
  --pd-dim:#5b6472;           /* ТОЛЬКО разделители «·» и плейсхолдер */
  --pd-off:#3b475c;           /* выключенное: точка тумблера, disabled-иконка */
  --pd-accent:#0866FF;        /* заливка главной кнопки */
  --pd-accent-hover:#1a74ff;
  --pd-blue:#3B8BFF;          /* синий текст, ссылки, иконка выбранного, фокус */
  --pd-sky:#5ED0FA;           /* «в работе», роли миниатюр, бейдж Desk */
  --pd-good:#35D07F;
  --pd-warn:#FFB224;
  --pd-bad:#FF6369;
  --pd-bad-ink:#FF8A8F;       /* красный текст на тёмном */
  --pd-player:#070d18;        /* фон плеера/сцены */
  --pd-overlay:rgba(3,7,15,.72);

  /* Каналы для тонов: rgb(var(--pd-t) / α) */
  --pd-accent-rgb:8 102 255;
  --pd-blue-rgb:59 139 255;
  --pd-sky-rgb:94 208 250;
  --pd-good-rgb:53 208 127;
  --pd-warn-rgb:255 178 36;
  --pd-bad-rgb:255 99 105;
  --pd-grey-rgb:139 149 167;
  --pd-tone-bg:.13;           /* одна формула тона: фон .13, ховер .22, кант .32 */
  --pd-tone-hover:.22;
  --pd-tone-edge:.32;

  /* Шрифты */
  --pd-font:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;
  --pd-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  /* Шкала кеглей — 7 ступеней, как до стекла (Никита 15.10: «шрифты сделай как в этой версии»; моно-капс меток №5 снят) */
  --pd-fs-1:11.5px;  /* плашки на постерах, бейджи, kbd */
  --pd-fs-2:12.5px;  /* мета, подсказки, сноски, метки полей */
  --pd-fs-3:13.5px;  /* интерфейс: кнопки, чипы, пункты, подписи плиток */
  --pd-fs-4:15px;    /* чтение: промпт, тексты, значения шапки */
  --pd-fs-5:17px;    /* заголовки секций, дня, листов */
  --pd-fs-6:22px;    /* заголовки окон, крупные суммы */
  --pd-fs-7:28px;    /* заголовок раздела, таймер на плитке (mono) */
  --pd-lh-tight:1.2;
  --pd-lh:1.45;
  --pd-lh-read:1.6;

  /* Радиусы */
  --pd-r-1:5px;   /* бейджи, плашки постера, теги */
  --pd-r-2:7px;   /* кнопки 28: сегмент, фильтр, --sm */
  --pd-r-3:8px;   /* контролы 32: кнопки, чипы, поля, пункты */
  --pd-r-4:12px;  /* плитки, карточки, панели, поповеры */
  --pd-r-5:14px;  /* док, сайдбар, список чатов, модалки, листы */
  --pd-r-6:14px;  /* окно задачи (у Creo 14) */

  /* Отступы (шаг 4) */
  --pd-s-1:4px; --pd-s-2:8px; --pd-s-3:12px; --pd-s-4:16px; --pd-s-5:20px;
  --pd-s-6:24px; --pd-s-7:32px; --pd-s-8:40px; --pd-s-9:48px;

  /* Высоты контролов */
  --pd-h-s:28px;    /* кнопки сегмента, фильтры, --sm */
  --pd-h-m:32px;    /* кнопки, чипы дока, поля, кнопки-значки */
  --pd-h-l:42px;    /* главная кнопка «Создать» */
  --pd-h-touch:44px;/* минимум зоны нажатия на телефоне */

  /* Глубина */
  --pd-edge:inset 0 1px 0 rgba(255,255,255,.06);
  --pd-sh-1:inset 0 1px 0 rgba(255,255,255,.03);   /* плоские карточки без тени (REFERENCE §1.3 п.5) */
  --pd-sh-2:0 12px 30px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08),inset 0 1px 0 rgba(255,255,255,.05);   /* поповер, меню */
  --pd-sh-3:0 18px 44px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.07),inset 0 1px 0 rgba(94,208,250,.08);    /* док, модалка, лист */
  /* Свет — только «вы здесь» и «сделайте это»: главная кнопка, активный пункт, активный сегмент */
  --pd-glow:0 8px 22px rgba(8,102,255,.32),inset 0 1px 0 rgba(255,255,255,.22);
  --pd-glow-hi:0 12px 32px rgba(8,102,255,.45),inset 0 1px 0 rgba(255,255,255,.22);
  --pd-glow-nav:inset 0 1px 0 rgba(255,255,255,.16),0 6px 18px rgba(8,102,255,.28);
  --pd-glow-seg:inset 0 1px 0 rgba(255,255,255,.16),0 3px 10px rgba(8,102,255,.25);
  --pd-fill-accent:linear-gradient(180deg,#1a74ff,#0866FF);
  --pd-ring:0 0 0 3px rgba(8,102,255,.16);

  /* Движение */
  --pd-ease:cubic-bezier(.2,.8,.2,1);
  --pd-t-fast:120ms;
  --pd-t:180ms;
  --pd-t-slow:260ms;

  /* Слои — единый список */
  --pd-z-bg:0;         /* неподвижный фон .pd-bg: сетка, пятно под курсором, свет за сайдбаром */
  --pd-z-raise:1;
  --pd-z-header:40;    /* липкая шапка телефона */
  --pd-z-dimmer:45;    /* притемнение ленты под подтверждением */
  --pd-z-dock:50;      /* док-композер */
  --pd-z-sidebar:60;
  --pd-z-pop:120;      /* поповеры, меню «⋯» (внутри своего слоя) */
  --pd-z-drawer:200;   /* боковая шторка админки */
  --pd-z-sheet:280;    /* нижний лист телефона */
  --pd-z-modal:285;    /* окно задачи, модалки — выше листа телефона: окна «Новый персонаж», «Переименовать», «Диалог» открываются
                          из листа и раньше вставали под него (приёмка 13.10); ниже листа-2 и слоя поповеров (.pd-layer) */
  --pd-z-sheet-2:290;  /* лист поверх листа, шторка меню */
  --pd-z-toast:300;

  /* Раскладка */
  --pd-sb-w:232px;     /* колонка сайдбара: карточка 10…232 (ширина 222) */
  --pd-pad-x:28px;     /* правое поле контента */
  --pd-pad-l:24px;     /* левое поле контента и дока */
  --pd-dock-max:960px;
  --pd-dock-h:0px;     /* выставляет kit.js по реальной высоте дока (ResizeObserver) */
  --pd-dock-fade:40px; /* зона над доком: 16 px затухания + 24 px сплошного фона; строки ленты в ней гаснут целиком (kit.js) */
  --pd-phead-h:40px;   /* шапка раздела: 40 десктоп, 48 телефон — два значения на весь продукт */
  --pd-tile-min:168px; /* на 1440: (1440 − 232 − 24 − 28 + 14) / 182 → 6 плиток в ряд */

  /* Стекло №5 — ровно два неподвижных слоя: сайдбар и док. Blur — НЕ токеном (Safari), только литералом в правиле (§30) */
  --pd-sb-fill:rgba(15,26,46,.58);  --pd-dk-fill:rgba(19,31,51,.74);
  --pd-sb-edge:rgba(120,165,255,.16); --pd-dk-edge:rgba(120,165,255,.22);
  --pd-sb-light:linear-gradient(180deg,rgba(8,102,255,.06),transparent 180px);
  --pd-dk-light:linear-gradient(180deg,rgba(8,102,255,.09),transparent 120px);
  --pd-on-glass:rgba(11,18,32,.74); /* подложка контролов на стекле дока: чипы, слоты, поле промпта */
  --pd-glass-muted:#aeb8c9;         /* --pd-muted внутри дока: на стекле #8b95a7 слишком тёмный */
  /* Точечная сетка и пятно под курсором */
  --pd-dot-c:rgba(186,208,248,.10); --pd-dot-step:22px; --pd-dot-x:11px; --pd-dot-y:10px;
}

/* ───────────────────────── 2. База ───────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{background:var(--pd-page);scrollbar-gutter:stable;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:var(--pd-font);font-size:var(--pd-fs-3);line-height:var(--pd-lh);font-weight:500;color:var(--pd-ink);background:var(--pd-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;min-height:100dvh;overflow-x:hidden}
button,input,textarea,select{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;text-align:inherit}
button:disabled{cursor:default}
/* Ссылка в тексте — синяя, при наведении sky. Через :where — нулевая специфичность у тега: кнопка-ссылка
   (<a class="pd-btn">, <a class="pd-go">, пункт сайдбара) сохраняет свой цвет и при наведении (белый текст на синем) */
:where(a){color:var(--pd-blue);text-decoration:none}
:where(a):hover{color:var(--pd-sky)}
img,svg,video{display:block;max-width:100%}
:focus{outline:none}
:focus-visible{outline:2px solid var(--pd-blue);outline-offset:2px}
/* Окно-контейнер с tabindex=-1 (фокус ставит скрипт или клик по пустому месту окна — чтобы клавиши окна работали: ←/→ в «Извлечь
   кадр», окна персонажей Kling): без рамки. Chrome включает :focus-visible у сфокусированного узла после любой клавиши — синяя рамка
   обводила всё окно (проверка 21.10). Табом до окна не дойти, а кнопки и поля внутри рамку с клавиатуры держат как обычно */
:is(.pd-modal__win,[role="dialog"],[role="alertdialog"])[tabindex="-1"]:focus-visible{outline:none}
::selection{background:rgba(59,139,255,.35);color:#fff}
::placeholder{color:var(--pd-dim);opacity:1}
*{scrollbar-width:thin;scrollbar-color:#26344f transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#26344f;border-radius:10px;border:3px solid var(--pd-page)}
::-webkit-scrollbar-thumb:hover{background:#33456a}
body.pd-lock{overflow:hidden}

.pd-mono{font-family:var(--pd-mono);font-weight:500;font-variant-numeric:tabular-nums}
.pd-num{font-family:var(--pd-mono);font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.pd-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pd-muted{color:var(--pd-muted)}
.pd-sepdot{color:var(--pd-dim);margin:0 .4em}
.pd-sp{flex:1 1 auto;min-width:0}
/* Общий слой для поповеров и меню: над доком, окном задачи и листами */
.pd-layer{position:fixed;inset:0;z-index:calc(var(--pd-z-sheet-2) + 1);pointer-events:none}
.pd-layer>*{pointer-events:auto}

/* Иконки (спрайт подключает kit.js: <svg class="pd-i"><use href="#i-…"/></svg>) */
.pd-i{width:18px;height:18px;flex:none;display:block;stroke:currentColor;fill:none;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}
.pd-i--xs{width:14px;height:14px}
.pd-i--s{width:16px;height:16px}
.pd-i--l{width:20px;height:20px}
.pd-i--xl{width:24px;height:24px}
.pd-i--fill{fill:currentColor;stroke:none}

/* Тоны — одна формула для тегов, бейджей, тонированных кнопок */
.pd-tone-blue{--pd-t:var(--pd-blue-rgb)}
.pd-tone-sky{--pd-t:var(--pd-sky-rgb)}
.pd-tone-green{--pd-t:var(--pd-good-rgb)}
.pd-tone-amber{--pd-t:var(--pd-warn-rgb)}
.pd-tone-red{--pd-t:var(--pd-bad-rgb)}
.pd-tone-grey{--pd-t:var(--pd-grey-rgb)}

/* Квадратик-точка статуса */
.pd-dot{width:6px;height:6px;border-radius:1.5px;flex:none;background:rgb(var(--pd-t,var(--pd-grey-rgb)))}
.pd-dot--pulse{animation:pd-pulse 1.4s ease-in-out infinite}

/* ───────────────────────── 3. Логотип ───────────────────────── */
.pd-logo{display:inline-flex;align-items:center;gap:9px;color:#fff}
/* знак 2×2: квадраты 8 px, зазор 2; «уплывающий» sky-квадрат живёт за стеклом сайдбара (.pd-bk, §30) */
.pd-logo__mark{position:relative;width:18px;height:18px;flex:none}
.pd-logo__mark i{position:absolute;width:8px;height:8px;border-radius:2px;background:var(--pd-blue)}
.pd-logo__mark i:nth-child(1){left:0;top:0;background:var(--pd-accent)}
.pd-logo__mark i:nth-child(2){left:10px;top:0}
.pd-logo__mark i:nth-child(3){left:0;top:10px}
.pd-logo__mark i:nth-child(4){left:10px;top:10px;background:var(--pd-sky);box-shadow:0 0 8px rgba(94,208,250,.55)}
.pd-logo__name{font-size:18px;font-weight:800;letter-spacing:-.02em;line-height:1}
.pd-logo__badge{display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:5px;font-size:var(--pd-fs-1);font-weight:800;line-height:1;color:var(--pd-sky);background:rgba(94,208,250,.13)}

/* Пиксельный лоадер — логотип как индикатор */
.pd-loader{position:relative;width:18px;height:18px;flex:none}
.pd-loader i{position:absolute;width:8px;height:8px;border-radius:2px;background:var(--pd-blue);animation:pd-load 1.2s ease infinite}
.pd-loader i:nth-child(1){left:0;top:0}
.pd-loader i:nth-child(2){left:10px;top:0;animation-delay:.3s}
.pd-loader i:nth-child(3){left:0;top:10px;animation-delay:.9s}
.pd-loader i:nth-child(4){left:10px;top:10px;background:var(--pd-sky);box-shadow:0 0 8px rgba(94,208,250,.55);animation-delay:.6s}
.pd-loader--s{transform:scale(.67);transform-origin:center}

/* ───────────────────────── 4. Оболочка ───────────────────────── */
.pd-main{position:relative;z-index:var(--pd-z-raise);margin-left:var(--pd-sb-w);padding:14px var(--pd-pad-x) calc(var(--pd-dock-h) + 40px) var(--pd-pad-l);min-height:100vh;min-height:100dvh}
.pd-main{padding-bottom:calc(var(--pd-dock-h) + 24px)}

/* Сайдбар */
.pd-sb{position:fixed;top:10px;bottom:10px;left:10px;width:calc(var(--pd-sb-w) - 10px);z-index:var(--pd-z-sidebar);display:flex;flex-direction:column;padding:12px 8px 8px;border-radius:var(--pd-r-5);background:var(--pd-sb-light),var(--pd-sb-fill);border:1px solid var(--pd-sb-edge);box-shadow:inset 0 1px 0 rgba(94,208,250,.07)}
.pd-sb__top{display:flex;align-items:center;gap:10px;min-height:32px;padding:0 8px}
.pd-sb .pd-sb__close{display:none;margin-left:auto}
.pd-nav{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:2px -4px 0;padding:0 4px 12px;scrollbar-width:none}
.pd-nav::-webkit-scrollbar{display:none}
.pd-nav__group{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);padding:12px 10px 6px}   /* 5 + зазор 1 (.nav{gap:1px} в b2) */
.pd-nav__group:first-child{padding-top:12px}   /* №5: как в b2 — первая группа с тем же отступом от логотипа */
.pd-nav__item{position:relative;display:flex;align-items:center;gap:10px;width:100%;height:32px;padding:0 8px 0 10px;margin-bottom:1px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);white-space:nowrap}
.pd-nav__item>.pd-i{width:16px;height:16px;color:var(--pd-muted)}
.pd-nav__item:hover{background:rgba(24,38,66,.72);color:#fff}
.pd-nav__item.is-active{color:#fff;background:var(--pd-fill-accent);box-shadow:var(--pd-glow-nav)}
.pd-nav__item.is-active>.pd-i{color:#fff}
.pd-nav__lbl{min-width:0;overflow:hidden;text-overflow:ellipsis}
.pd-nav__badge{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:5px;height:18px;padding:0 6px;border-radius:var(--pd-r-1);font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;background:rgb(var(--pd-t) / var(--pd-tone-bg));color:rgb(var(--pd-t))}
.pd-nav__item:has(.pd-nav__badge--word){gap:9px;padding-right:6px}
.pd-nav__badge--word{padding:0 6px;font-family:var(--pd-font);font-weight:700;letter-spacing:0}
.pd-nav__badge--info{--pd-t:var(--pd-blue-rgb)}
.pd-nav__badge .pd-dot{width:5px;height:5px}
.pd-nav__item.is-active .pd-nav__badge{color:#fff;background:rgba(255,255,255,.18)}
.pd-nav__item.is-active .pd-nav__badge .pd-dot{background:#fff}
.pd-nav__badge--run{--pd-t:var(--pd-sky-rgb)}
.pd-nav__badge--run .pd-dot{animation:pd-pulse-soft 2.4s ease-in-out infinite}  /* мягче и медленнее: «в работе» бывает у всех разделов сразу */
.pd-nav__badge--done{--pd-t:var(--pd-good-rgb)}
.pd-nav__badge--warn{--pd-t:var(--pd-warn-rgb)}

/* Карточка пользователя */
.pd-user{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:7px 8px;border-radius:10px;background:none;box-shadow:none}
.pd-user:hover{background:rgba(24,38,66,.72)}
.pd-user__txt{min-width:0;flex:1}
.pd-user__name{font-size:var(--pd-fs-3);font-weight:800;line-height:1.25;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-user__role{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.3}
/* метр лимита (только у сотрудника с лимитом) — над строкой профиля, как .lim в макете */
.pd-user__meter{order:-1;flex-basis:100%;padding:0 2px 8px;border-top:0}
.pd-user__more{position:relative;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:var(--pd-muted);flex:none}
.pd-user__more::before{content:"";position:absolute;inset:-6px}
.pd-user__more:hover{background:var(--pd-hover);color:#fff}

/* Аватар */
.pd-ava{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:none;font-size:var(--pd-fs-3);font-weight:800;color:#fff;background:linear-gradient(160deg,#3B8BFF,#0848c0)}
.pd-ava--xs{width:18px;height:18px;border-radius:5px;font-size:var(--pd-fs-1)}
.pd-ava--s{width:22px;height:22px;border-radius:6px;font-size:var(--pd-fs-1)}
.pd-ava--l{width:36px;height:36px;border-radius:10px;font-size:var(--pd-fs-4)}
.pd-ava--2{background:linear-gradient(150deg,#5ED0FA,#2a8fc4);color:var(--pd-page)}
.pd-ava--3{background:linear-gradient(150deg,#35D07F,#1f8a55);color:var(--pd-page)}
.pd-ava--4{background:linear-gradient(150deg,#FFB224,#c7820a);color:var(--pd-page)}
.pd-ava--5{background:linear-gradient(150deg,#3b4f78,#1e2b47)}
.pd-ava--muted{background:var(--pd-surface);color:var(--pd-ink-2);box-shadow:inset 0 0 0 1px var(--pd-border)}

/* Бейджи ролей */
.pd-role{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 7px;border-radius:5px;font-size:var(--pd-fs-2);font-weight:700;white-space:nowrap;background:rgb(var(--pd-t) / var(--pd-tone-bg));color:rgb(var(--pd-t))}
.pd-role--owner{--pd-t:var(--pd-blue-rgb)}
.pd-role--lead{--pd-t:var(--pd-sky-rgb)}
.pd-role--staff{--pd-t:var(--pd-grey-rgb);color:var(--pd-ink-2)}
.pd-role--off{--pd-t:var(--pd-grey-rgb);color:var(--pd-muted);background:transparent;box-shadow:inset 0 0 0 1px var(--pd-border)}

/* Мобильная шапка */
.pd-mhdr{display:none}

/* Пилюля расхода (шапка телефона): «Сегодня $5.90 из $30» */
.pd-pill{position:relative;height:36px;padding:0 12px;border-radius:10px;display:inline-flex;align-items:center;gap:8px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-ink-2);white-space:nowrap;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-pill::before{content:"";position:absolute;inset:-4px}
.pd-pill b{font-family:var(--pd-mono);font-weight:500;color:#fff}
.pd-pill .pd-dot{width:7px;height:7px;box-shadow:0 0 0 3px rgb(var(--pd-t) / .16)}
.pd-pill em{font-style:normal;font-family:var(--pd-font);font-weight:600;color:var(--pd-muted)}  /* «из» — Manrope, число — .pd-num */
.pd-pill em .pd-num{color:var(--pd-muted)}
.pd-pill .pd-dot{--pd-t:var(--pd-blue-rgb)}
.pd-pill[data-level=warn] b{color:var(--pd-warn)}
.pd-pill[data-level=warn] .pd-dot{--pd-t:var(--pd-warn-rgb)}
.pd-pill[data-level=over] b{color:var(--pd-bad-ink)}
.pd-pill[data-level=over] .pd-dot{--pd-t:var(--pd-bad-rgb)}
/* Вторая строка заголовка на телефоне (счётчики раздела) */
.pd-phead__mline{display:none;align-items:center;flex-wrap:wrap;gap:2px 12px;margin-top:6px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-phead__mline>*{white-space:nowrap}  /* тесно — переносится счётчик целиком, а не «Аватары сегодня / $6.24» */
.pd-phead__mline b{font-weight:500;font-family:var(--pd-mono);color:#fff}

/* Затемнение (шторки, листы, подтверждение) */
.pd-scrim{position:fixed;inset:0;background:rgba(3,7,15,.6);opacity:0;pointer-events:none;transition:opacity var(--pd-t) var(--pd-ease)}
.pd-scrim.is-on{opacity:1;pointer-events:auto}
.pd-dimmer{position:fixed;inset:0;z-index:var(--pd-z-dimmer);background:rgba(3,7,15,.55);opacity:0;pointer-events:none;transition:opacity var(--pd-t) var(--pd-ease)}
.pd-dimmer.is-on{opacity:1;pointer-events:auto}

/* ───────────────────────── 5. Шапка раздела ───────────────────────── */
.pd-phead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;min-height:var(--pd-phead-h)}
.pd-phead__title{display:flex;align-items:center;gap:12px;flex:1 1 auto;min-width:min-content}  /* не уже h1: подзаголовок места не просит, берёт свободное (v4, M3) */
.pd-phead__ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none;color:#fff;background:linear-gradient(160deg,rgba(8,102,255,.25),rgba(8,102,255,.06));box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-phead__ic>.pd-i{width:17px;height:17px}
/* №5: заголовок и подзаголовок одной строкой (h1 + чип «Kling · Seedance · MiniMax»; шрифт чипа — Geist, как подзаголовок до стекла) */
.pd-phead__txt{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:12px}
.pd-phead h1{white-space:nowrap}
.pd-phead h1,.pd-h1{font-size:var(--pd-fs-7);font-weight:800;letter-spacing:-.025em;line-height:1.1;color:#fff}
.pd-phead__sub{flex:0 1 auto;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted);margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:none}
/* короткий вариант (data-short) — всегда чипом, как .mdl макета */
.pd-phead__sub[data-short]{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:5px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);box-shadow:inset 0 0 0 1px var(--pd-border)}
/* Не влезает (kit.js pheadFit, по нехватке места, а не по ширине окна): короткий подзаголовок → балансы пилюлей → без подзаголовка → без месяца */
.pd-phead__short{display:none}
.pd-phead.is-short .pd-phead__long,.pd-phead__sub[data-short] .pd-phead__long{display:none}
.pd-phead.is-short .pd-phead__short,.pd-phead__sub[data-short] .pd-phead__short{display:inline;overflow:hidden;text-overflow:ellipsis}
.pd-phead.is-tight .pd-bal--full{display:none}
.pd-phead.is-tight .pd-bal--compact{display:flex}
.pd-phead.is-bare .pd-phead__sub{display:none}
.pd-phead.is-min .pd-stat--month,.pd-phead.is-min .pd-stat--month+.pd-vsep{display:none}
.pd-phead__aside{display:flex;align-items:center;gap:22px;flex:none}
.pd-phead.is-wrap{flex-wrap:wrap;row-gap:14px}
.pd-phead.is-wrap .pd-phead__aside{flex:1 1 100%;flex-wrap:wrap;row-gap:10px;justify-content:flex-start;min-width:0}
.pd-stats{display:flex;align-items:center;gap:22px}
.pd-stat__lbl{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.2;white-space:nowrap}
.pd-stat__val{display:flex;align-items:center;gap:8px;margin-top:3px;font-family:var(--pd-mono);font-size:var(--pd-fs-4);font-weight:500;line-height:1.2;color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums}
.pd-stat__val .pd-dot{box-shadow:0 0 0 3px rgb(var(--pd-t) / .16)}
.pd-stat__val .pd-dot:not([class*=pd-tone-]){--pd-t:var(--pd-sky-rgb)}  /* по умолчанию sky («в работе»); .pd-tone-* — свой тон */
.pd-stat__val small{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);letter-spacing:0}
.pd-vsep{width:1px;height:26px;background:var(--pd-border);flex:none}
/* №5 (b2 .kpis): между счётчиками черты нет — только зазор 22; черта остаётся перед метром лимита и встаёт перед балансами */
.pd-stats>.pd-stat+.pd-vsep:has(+.pd-stat){display:none}
.pd-phead__aside>.pd-stats:has(+.pd-bal)::after{content:"";width:1px;height:26px;background:var(--pd-border);flex:none}

/* Счётчик лимита: «Сегодня $5.90 из $30» */
.pd-meter{min-width:150px;--pd-t:var(--pd-blue-rgb)}
.pd-meter__top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 10px;min-width:0;white-space:nowrap}
.pd-meter__lbl,.pd-meter__val{min-width:0}
.pd-meter__lbl{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-meter__val{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}  /* «из» — обычным шрифтом */
.pd-meter__val b,.pd-meter__val .pd-num{font-family:var(--pd-mono);font-weight:500;font-variant-numeric:tabular-nums}
.pd-meter__val b{font-size:var(--pd-fs-4);color:#fff}
.pd-meter__bar{position:relative;height:3px;margin-top:6px;border-radius:2px;background:rgba(34,48,74,.9);overflow:hidden}
.pd-meter__bar i{position:absolute;inset:0 auto 0 0;width:calc(var(--v,0) * 100%);border-radius:inherit;background:rgb(var(--pd-t))}
.pd-meter:not([data-level=warn]):not([data-level=over]) .pd-meter__bar i{background:linear-gradient(90deg,#0866FF,#5ED0FA)}
.pd-meter[data-level=warn]{--pd-t:var(--pd-warn-rgb)}
.pd-meter[data-level=warn] .pd-meter__val b{color:var(--pd-warn)}
.pd-meter[data-level=over]{--pd-t:var(--pd-bad-rgb)}
.pd-meter[data-level=over] .pd-meter__val b{color:var(--pd-bad-ink)}
.pd-meter--s{min-width:0}
.pd-meter--s .pd-meter__val b{font-size:var(--pd-fs-2);color:var(--pd-ink-2)}
.pd-meter--s .pd-meter__bar{height:3px;margin-top:6px}
.pd-meter.is-active .pd-meter__lbl{color:var(--pd-ink-2)}

/* Балансы провайдеров (только владелец) */
.pd-bal{display:flex;align-items:center;gap:10px;height:36px;padding:0 8px 0 12px;border-radius:10px;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border);font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2);white-space:nowrap}
.pd-bal:hover{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-bal__it{display:inline-flex;align-items:center;gap:8px}
.pd-bal__it b{font-family:var(--pd-mono);font-weight:500;color:#fff;font-size:var(--pd-fs-3)}
.pd-bal__it b .pd-u{color:var(--pd-ink-2)}
/* «…» на месте суммы, пока балансы читаются (pages/video.js balItems): шириной с невидимую «форму» суммы под ним («0 000 кр»),
   посередине — кнопка не растёт, когда суммы приходят, и счётчики шапки слева от неё не уезжают вбок (аудит 22.10) */
.pd-bal__w{display:inline-block;text-align:center}
.pd-bal__w::after{content:attr(data-w);display:block;height:0;overflow:hidden;visibility:hidden}
.pd-bal__it .pd-dot{width:7px;height:7px;box-shadow:0 0 0 3px rgb(var(--pd-t,var(--pd-grey-rgb)) / .16)}
.pd-bal__sep{width:1px;height:16px;background:var(--pd-border)}
.pd-bal .pd-i{width:16px;height:16px;color:var(--pd-muted)}
.pd-bal--compact{display:none;gap:8px;padding:0 8px 0 12px;color:var(--pd-ink-2);font-weight:700}
.pd-bal__dots{display:inline-flex;gap:4px}

/* ───────────────────────── 6. Тулбар, сегменты, фильтры ───────────────────────── */
.pd-tb{display:flex;align-items:center;gap:8px;margin-bottom:16px;min-width:0;min-height:34px}
.pd-tb__sp{flex:1}
.pd-tb__vs{width:1px;height:20px;background:var(--pd-line);margin:0 6px;flex:none}
/* Лента фильтров: не наезжает на соседей на любой ширине — листается, затухание только с той стороны,
   куда ещё можно листать (.pd-hf-l / .pd-hf-r ставит kit.js). Поиск рядом не сжимается (flex:none). */
.pd-tb__scroll{display:flex;align-items:center;gap:4px;min-width:0;flex:0 1 auto;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:4px;margin:-4px}  /* 4 px запаса: кант и фокус фильтров не срезаются */
.pd-tb__scroll::-webkit-scrollbar{display:none}
.pd-tb>.pd-search{flex:none}
/* Тесно (kit.js: .pd-tb.is-tight) — поиск сворачивается в кнопку-лупу 40 px и раскрывается по клику, «/» или с текстом */
.pd-tb.is-tight>.pd-search:not(.has-value):not(:focus-within){width:var(--pd-h-m)}
.pd-tb.is-tight>.pd-search:not(.has-value):not(:focus-within) .pd-input{padding:0;color:transparent;cursor:pointer;background:var(--pd-surface)}
.pd-tb.is-tight>.pd-search:not(.has-value):not(:focus-within) .pd-input::placeholder{color:transparent}
.pd-tb.is-tight>.pd-search:not(.has-value):not(:focus-within) .pd-kbd{display:none}
.pd-tb.is-tight>.pd-search:not(.has-value):not(:focus-within)>.pd-i{left:8.5px;color:var(--pd-ink-2)}
/* Затухание горизонтальных лент — одна формула для всех (kit.js ставит классы по положению прокрутки) */
.pd-hf-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent)}
.pd-hf-l{-webkit-mask-image:linear-gradient(90deg,transparent,#000 28px);mask-image:linear-gradient(90deg,transparent,#000 28px)}
.pd-hf-l.pd-hf-r{-webkit-mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 32px),transparent)}

.pd-seg{display:inline-flex;align-items:center;padding:2px;gap:2px;border-radius:10px;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border);flex:none}
.pd-seg__btn{position:relative;height:var(--pd-h-s);padding:0 12px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-muted);white-space:nowrap}
.pd-seg__btn:hover{color:#fff}
/* №5: выбранный сегмент залит, как у Creo («Мои | Команда», плотность, режимы) — «вы здесь» */
.pd-seg__btn.is-on{background:var(--pd-accent);color:#fff;box-shadow:var(--pd-glow-seg)}
.pd-seg__btn em{font-style:normal;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:500;color:var(--pd-muted)}
.pd-seg__btn.is-on em{color:rgba(255,255,255,.78)}
.pd-seg__btn>.pd-i{width:15px;height:15px}
.pd-seg--icon .pd-seg__btn{width:30px;padding:0}
.pd-seg--s .pd-seg__btn{height:24px;padding:0 9px;font-size:var(--pd-fs-2)}
/* Сегмент вариантов модели в поповерах — не заливать: выбранный остаётся тонированным контуром (заливка — только «вы здесь» и «Создать») */
.pd-seg--pick .pd-seg__btn.is-on{background:rgba(8,102,255,.12);color:#fff;box-shadow:inset 0 0 0 1px rgba(59,139,255,.45)}
.pd-seg--pick .pd-seg__btn.is-on em{color:var(--pd-ink-2)}

.pd-filter{position:relative;height:var(--pd-h-s);padding:0 10px;border-radius:var(--pd-r-2);display:inline-flex;align-items:center;gap:7px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-muted);white-space:nowrap;flex:none}
.pd-filter:hover{background:var(--pd-surface);color:#fff}
.pd-filter.is-on{background:var(--pd-surface);color:#fff;box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-filter__n{font-family:var(--pd-mono);font-size:var(--pd-fs-2);font-weight:500;color:var(--pd-muted)}
.pd-filter.is-on .pd-filter__n{color:var(--pd-ink-2)}
/* «…», пока отвечают не все ленты: место под будущее число — невидимые цифры той же гарнитуры под ним (studio.js cntW,
   data-w="0000"), счётчик шириной ровно с число. min-width в ch был уже числа (1ch — 7,49 px, цифра — 7,5; после округления
   раскладки — 1/64 px на знак), и на границе «одна/две строки» пришедшие числа уводили фильтры во вторую строку (ревью 21.10) */
.pd-filter__n[data-w]{text-align:center}   /* «…» — посередине места под число, а не прижато влево (аудит 22.10) */
.pd-filter__n[data-w]::after{content:attr(data-w);display:block;height:0;overflow:hidden;visibility:hidden}
.pd-filter>.pd-dot{width:6px;height:6px;border-radius:1.5px}

/* ───────────────────────── 7. Кнопки ───────────────────────── */
.pd-btn{position:relative;height:var(--pd-h-m);padding:0 11px;border-radius:var(--pd-r-3);display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:var(--pd-fs-3);font-weight:800;color:var(--pd-ink-2);white-space:nowrap;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border);flex:none}
.pd-btn:hover{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2);color:#fff}
.pd-btn>.pd-i{width:15px;height:15px;color:var(--pd-muted)}
.pd-btn:hover>.pd-i{color:var(--pd-ink-2)}
.pd-btn--primary{color:#fff;background:var(--pd-fill-accent);box-shadow:var(--pd-glow)}
.pd-btn--primary:hover{background:var(--pd-fill-accent);box-shadow:var(--pd-glow-hi)}
.pd-btn--primary>.pd-i,.pd-btn--primary:hover>.pd-i{color:#fff}
.pd-btn--quiet{background:transparent;box-shadow:none;color:var(--pd-ink-2)}
.pd-btn--quiet:hover{background:var(--pd-hover);color:#fff}
.pd-btn--quiet>.pd-i{color:var(--pd-muted)}
.pd-btn--danger{background:var(--pd-page);color:var(--pd-bad);box-shadow:inset 0 0 0 1px rgba(255,99,105,.32)}
.pd-btn--danger:hover{background:rgba(255,99,105,.1);color:var(--pd-bad-ink);box-shadow:inset 0 0 0 1px rgba(255,99,105,.45)}
.pd-btn--danger>.pd-i{color:var(--pd-bad)}
.pd-btn--tone{background:rgb(var(--pd-t) / var(--pd-tone-bg));color:rgb(var(--pd-t));box-shadow:none}
.pd-btn--tone:hover{background:rgb(var(--pd-t) / var(--pd-tone-hover));color:rgb(var(--pd-t));box-shadow:none}
.pd-btn--tone>.pd-i{color:currentColor}
.pd-btn--sm{height:var(--pd-h-s);padding:0 10px;border-radius:var(--pd-r-2);font-size:var(--pd-fs-2);gap:6px}
.pd-btn--sm>.pd-i{width:14px;height:14px}
.pd-btn--lg{height:var(--pd-h-l);padding:0 16px;border-radius:10px;font-size:var(--pd-fs-4)}
.pd-btn--block{display:flex;width:100%}
.pd-btn--glass{color:#fff;background:rgba(11,18,32,.82);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.pd-btn--glass:hover{background:var(--pd-hover)}
.pd-btn:disabled,.pd-btn.is-disabled{background:var(--pd-line);color:var(--pd-muted);box-shadow:none;cursor:default}
.pd-btn:disabled>.pd-i,.pd-btn.is-disabled>.pd-i{color:var(--pd-off)}
.pd-btn__price{font-family:var(--pd-mono);font-weight:600;font-size:var(--pd-fs-2);opacity:.9}
.pd-btn__sub{font-family:var(--pd-font);font-weight:600;font-size:var(--pd-fs-2);opacity:.78}
.pd-btn__sub .pd-num{font-weight:500}
/* невидимое расширение зоны нажатия */
.pd-hit::before{content:"";position:absolute;inset:-6px}

.pd-iconbtn{position:relative;width:var(--pd-h-m);height:var(--pd-h-m);border-radius:var(--pd-r-3);display:inline-grid;place-items:center;flex:none;color:var(--pd-muted);background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-iconbtn>.pd-i{width:15px;height:15px}
.pd-iconbtn:hover{background:var(--pd-hover);color:#fff;box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-iconbtn--quiet{background:transparent;box-shadow:none;color:var(--pd-muted)}
.pd-iconbtn--quiet:hover{background:var(--pd-hover);color:#fff}
.pd-iconbtn--s{width:var(--pd-h-s);height:var(--pd-h-s);border-radius:var(--pd-r-2)}
.pd-iconbtn.is-on{color:var(--pd-blue);background:rgba(59,139,255,.12);box-shadow:inset 0 0 0 1px rgba(59,139,255,.32)}

/* Ссылка-кнопка */
.pd-link{position:relative;display:inline-flex;align-items:center;gap:6px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-blue);white-space:nowrap}
.pd-link:hover{color:var(--pd-sky)}
.pd-link::before{content:"";position:absolute;inset:-8px -4px}

/* Главная кнопка запуска: глагол + цена-капсула; причина блокировки — на ней */
.pd-go{position:relative;flex:none;height:var(--pd-h-l);padding:0 6px 0 16px;border-radius:10px;display:inline-flex;align-items:center;gap:10px;font-size:var(--pd-fs-4);font-weight:800;color:#fff;white-space:nowrap;background:var(--pd-fill-accent);box-shadow:var(--pd-glow)}
.pd-go:hover{background:var(--pd-fill-accent);box-shadow:var(--pd-glow-hi)}
.pd-go>.pd-i{width:16px;height:16px}
.pd-go__price{height:30px;padding:0 9px;border-radius:6px;display:inline-flex;align-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;background:rgba(11,18,32,.28);box-shadow:none;font-variant-numeric:tabular-nums}
/* Пока открыт поповер подтверждения: контур без второй заливки (одна залитая кнопка — «Запустить» в поповере) */
.pd-go.is-pressed{background:rgba(8,102,255,.12);box-shadow:inset 0 0 0 1.5px var(--pd-accent),var(--pd-ring);color:#fff}
.pd-go.is-pressed .pd-go__price{background:rgba(59,139,255,.16);box-shadow:none}
/* Пиксельный лоадер на синей кнопке — белый */
.pd-go .pd-loader i,.pd-btn--primary .pd-loader i{background:#fff}
.pd-go .pd-loader i:nth-child(4),.pd-btn--primary .pd-loader i:nth-child(4){background:rgba(255,255,255,.62)}
.pd-go.is-blocked{background:var(--pd-line);box-shadow:inset 0 0 0 1px var(--pd-border);color:var(--pd-muted);cursor:default;font-size:var(--pd-fs-3)}
.pd-go.is-blocked .pd-go__price{background:rgba(11,18,32,.5);color:var(--pd-muted);box-shadow:none}
.pd-go.is-blocked.is-hard{color:var(--pd-bad-ink);background:rgba(255,99,105,.08);box-shadow:inset 0 0 0 1px rgba(255,99,105,.32)}
.pd-go.is-blocked.is-hard .pd-i{color:var(--pd-bad-ink)}
.pd-go--block{width:100%;justify-content:space-between}
/* без цены: глагол по центру; причина блокировки (замок + текст) — одной группой слева, а не врозь */
.pd-go--block:not(:has(>.pd-go__price)){justify-content:center}
.pd-go--block.is-blocked:not(:has(>.pd-go__price)){justify-content:flex-start;gap:10px}
/* длинная причина на узком месте переносится на вторую строку, кнопка не вылезает */
.pd-go{max-width:100%}
.pd-go.is-blocked{white-space:normal;line-height:1.25;text-align:left;height:auto;min-height:var(--pd-h-l);padding-top:5px;padding-bottom:5px}
.pd-go.is-blocked .pd-go__price{flex:none}

/* Янтарная пометка «дорогой запуск» — у кнопки, ещё до клика */
.pd-costly{display:inline-flex;align-items:center;gap:6px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-warn);white-space:nowrap;flex:none}

/* ───────────────────────── 8. Теги статусов ───────────────────────── */
.pd-tag{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 6px;border-radius:var(--pd-r-1);font-size:var(--pd-fs-2);font-weight:800;white-space:nowrap;background:rgb(var(--pd-t,var(--pd-grey-rgb)) / var(--pd-tone-bg));color:rgb(var(--pd-t,var(--pd-grey-rgb)))}
.pd-tag .pd-dot{width:5px;height:5px;background:currentColor}
.pd-tag--s{height:18px;padding:0 6px;font-size:var(--pd-fs-1);border-radius:var(--pd-r-1)}
.pd-tag--mono{font-family:var(--pd-mono);font-weight:600}
.pd-tag.pd-tone-grey,.pd-tag:not([class*=pd-tone-]){color:var(--pd-ink-2)}

/* Ссылка в промпте «Картинка N» / «@Имя» */
.pd-ref{display:inline;color:var(--pd-blue);background:rgba(59,139,255,.14);border-radius:5px;padding:1px 5px;font-weight:700;box-shadow:inset 0 0 0 1px rgba(59,139,255,.24);white-space:nowrap;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.pd-ref--person{color:var(--pd-sky);background:rgba(94,208,250,.12);box-shadow:inset 0 0 0 1px rgba(94,208,250,.24)}
.pd-ref--bad{color:var(--pd-warn);background:rgba(255,178,36,.1);box-shadow:none;text-decoration:underline wavy rgba(255,178,36,.7);text-underline-offset:3px}

/* ───────────────────────── 9. Чипы-параметры ───────────────────────── */
.pd-chip{position:relative;height:var(--pd-h-m);padding:0 10px;border-radius:var(--pd-r-3);display:inline-flex;align-items:center;gap:7px;flex:none;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);white-space:nowrap;background:var(--pd-on-glass);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-chip>.pd-i{width:14px;height:14px;color:var(--pd-muted)}
.pd-chip:hover{color:#fff;box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-chip__v{font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:500;color:#fff}
.pd-chip__v--muted{color:var(--pd-muted)}
.pd-chip__hint{font-weight:600;color:var(--pd-muted)}
/* чип-значение, у которого значение словами в подсказке («Без вотермарки», «Multilingual v2», «Длина: авто») — ярким, как
   значение: серый читался выключенным (приёмка 13.10; макет lipsync.html — белое имя режима) */
.pd-chip--value:not(:has(>.pd-chip__v))>.pd-chip__hint:not(.pd-chip__pre){color:#fff;font-weight:700}
.pd-chip.is-fixed .pd-chip__hint{color:var(--pd-ink-2)}
.pd-chip.is-open{box-shadow:inset 0 0 0 1px var(--pd-accent),var(--pd-ring)}
/* тумблер: точка справа, не только цвет */
.pd-chip__sw{width:6px;height:6px;border-radius:2px;background:var(--pd-off);margin-left:2px;flex:none}
.pd-chip.is-on{color:#fff;background:rgba(8,102,255,.13);box-shadow:inset 0 0 0 1px rgba(59,139,255,.38)}
.pd-chip.is-on>.pd-i{color:var(--pd-sky)}
.pd-chip.is-on .pd-chip__sw{background:var(--pd-blue);box-shadow:0 0 0 3px rgba(59,139,255,.22)}
/* нередактируемое значение: пунктир */
.pd-chip.is-fixed{background:transparent;box-shadow:none;outline:1px dashed var(--pd-border-2);outline-offset:-1px;color:var(--pd-muted);cursor:default}
.pd-chip.is-fixed .pd-chip__v{color:var(--pd-ink-2)}
.pd-chip.is-warn{box-shadow:inset 0 0 0 1px rgba(255,178,36,.45)}
.pd-chip.is-warn>.pd-i{color:var(--pd-warn)}
.pd-chip--model{padding:0 10px 0 5px;gap:8px;color:#fff}
.pd-chip--model>.pd-glyph{width:22px;height:22px;border-radius:6px}
.pd-chip--model>.pd-glyph .pd-i{width:14px;height:14px}
.pd-chip__name{font-size:var(--pd-fs-3);font-weight:800;color:#fff}
.pd-chip__var{font-size:var(--pd-fs-3);font-weight:800;color:var(--pd-sky)}
.pd-chip--model.is-open{box-shadow:inset 0 0 0 1px var(--pd-accent),var(--pd-ring)}
.pd-chip__ava{width:22px;height:22px;border-radius:6px;overflow:hidden;margin-left:-5px;flex:none;background:linear-gradient(160deg,#1c3a52,#0f1a2e)}
.pd-chip__ava svg{width:100%;height:100%}
/* Аватар вписан в чип с одинаковым отступом слева, сверху и снизу: (32 − 22) / 2 = 5. Обычный чип — паддинг 10 → сдвиг −5;
   в модельном чипе паддинг 5 — аватар как знак модели, без сдвига. Ужатые ступени ряда и лист телефона — свои паддинги, свой сдвиг */
.pd-chip--model>.pd-chip__ava{width:22px;height:22px;border-radius:6px;margin-left:0}
.pd-dock__row[data-fit="1"] .pd-chip:not(.pd-chip--model)>.pd-chip__ava{margin-left:-4px}
.pd-dock__row:is([data-fit="2"],[data-fit="3"],[data-fit="4"]) .pd-chip:not(.pd-chip--model)>.pd-chip__ava{margin-left:-3px}

/* Знак модели */
.pd-glyph{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 0 0 1px rgba(255,255,255,.06)}
.pd-glyph .pd-i{width:15px;height:15px}
.pd-glyph--seedance{background:linear-gradient(150deg,#1f7bff,#0b4fc4)}
.pd-glyph--minimax{background:linear-gradient(150deg,#3aa9d6,#1b5f8f)}
.pd-glyph--kling{background:linear-gradient(150deg,#3b4f78,#1e2b47)}
.pd-glyph--l{width:36px;height:36px;border-radius:10px}
.pd-glyph--l .pd-i{width:19px;height:19px}

/* ───────────────────────── 10. Поповер, меню ───────────────────────── */
.pd-pop-host{position:relative}
.pd-pop{position:absolute;z-index:var(--pd-z-pop);width:var(--pd-pop-w,280px);max-width:calc(100vw - 24px);padding:6px;border-radius:var(--pd-r-4);background:linear-gradient(180deg,rgba(8,102,255,.06),transparent 80px),var(--pd-raised);box-shadow:var(--pd-sh-2);display:none}
.pd-pop.is-open{display:block;max-height:calc(100vh - 24px);overflow:auto;animation:pd-pop-in var(--pd-t-fast) var(--pd-ease)}
/* длинный список (языки — 70 строк, соотношения Картинок — 10) не во всю высоту окна: над своим чипом, с прокруткой (приёмка 13.10) */
@media (min-width:861px){.pd-pop.is-open[role=listbox]:not(.pd-modelpop){max-height:min(480px,calc(100vh - 24px));overscroll-behavior:contain}}
.pd-pop__hd{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 8px 8px}
.pd-pop__hd b{font-size:var(--pd-fs-4);font-weight:800;color:var(--pd-muted)}
.pd-pop__hd span{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-pop__val{font-family:var(--pd-mono);font-size:var(--pd-fs-3);color:#fff}
.pd-pop__row{position:relative;display:flex;align-items:center;gap:10px;width:100%;min-height:34px;padding:6px 8px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);text-align:left}
.pd-pop__row:hover{background:var(--pd-hover);color:#fff}
.pd-pop__row.is-sel{color:#fff;background:rgba(59,139,255,.1)}
.pd-pop__row small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:1px}
.pd-pop__row .pd-why,.pd-menu__item .pd-why{display:flex;margin-top:4px;gap:6px;align-items:flex-start}  /* значок — у первой строки причины, не посередине двух */
/* недоступная строка поповера: серая, без наведения, причина — строкой .pd-why */
.pd-pop__row.is-off{color:var(--pd-muted);cursor:default}
.pd-pop__row.is-off:hover{background:transparent;color:var(--pd-muted)}
.pd-pop__row.is-off b,.pd-pop__row.is-off .pd-pop__price{color:var(--pd-muted)}
.pd-pop__meta{margin-left:auto;font-family:var(--pd-mono);font-size:var(--pd-fs-2);font-weight:500;color:var(--pd-muted);white-space:nowrap}
.pd-pop__row.is-sel .pd-pop__meta{color:var(--pd-ink-2)}
.pd-pop__ck{width:16px;height:16px;color:var(--pd-blue);flex:none;visibility:hidden}
.pd-pop__row.is-sel .pd-pop__ck{visibility:visible}
.pd-pop__sep{height:1px;background:var(--pd-line);margin:4px 2px}
.pd-pop__foot{margin:4px 2px 2px;padding:8px 8px 4px;border-top:1px solid var(--pd-line);font-size:var(--pd-fs-2);font-weight:600;line-height:1.55;color:var(--pd-muted)}
.pd-pop__foot b{color:var(--pd-ink-2);font-weight:700}
.pd-pop__foot .pd-num{color:var(--pd-ink-2)}
.pd-pop__label{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);padding:8px 8px 4px}

/* Быстрые значения (с ценой под значением) */
.pd-quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:4px;padding:2px 6px 4px}
.pd-quick__b{position:relative;min-height:40px;padding:4px 6px;border-radius:var(--pd-r-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;box-shadow:inset 0 0 0 1px var(--pd-border);font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:500;color:#fff;text-align:center}
.pd-quick__b small{font-size:var(--pd-fs-1);color:var(--pd-muted)}
.pd-quick__b small:not(.pd-num){font-family:var(--pd-font);font-weight:600}  /* слово под значением («бесплатно») — не моно */
.pd-quick__b>.pd-u{display:contents}  /* PD.w('8 с') прямо в кнопке: «с» не встаёт отдельной строкой (обёртка <span> тоже можно) */
.pd-quick__b:hover{background:var(--pd-hover)}
.pd-quick__b.is-sel{background:rgba(8,102,255,.12);box-shadow:inset 0 0 0 1px rgba(59,139,255,.55)}  /* выбор — тонированный контур, заливка только у «Создать» (m8) */
.pd-quick__b.is-sel small{color:var(--pd-ink-2)}
.pd-quick__b.is-off{color:var(--pd-muted);cursor:default;box-shadow:inset 0 0 0 1px var(--pd-line)}
.pd-quick__b.is-off:hover{background:transparent}

/* Ползунок */
.pd-slider{padding:12px 10px 4px}
.pd-slider__track{position:relative;height:4px;border-radius:2px;background:var(--pd-page);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-slider__fill{position:absolute;inset:0 auto 0 0;width:calc(var(--v,0) * 100%);border-radius:2px;background:linear-gradient(90deg,var(--pd-accent),var(--pd-blue))}
.pd-slider__knob{position:absolute;top:50%;left:calc(var(--v,0) * 100%);width:14px;height:14px;border-radius:50%;background:#fff;transform:translate(-50%,-50%);box-shadow:0 0 0 3px rgba(8,102,255,.25),0 2px 6px rgba(0,0,0,.4)}
.pd-slider__scale{display:flex;justify-content:space-between;margin-top:8px;font-family:var(--pd-mono);font-size:var(--pd-fs-1);color:var(--pd-muted)}
/* Живой <input type=range> (длительность в доке, настройки Озвучки, кадр в «Кого озвучить») — тем же видом, что ползунок kit:
   тёмная дорожка, заливка до бегунка (--v 0…1 ставит kit.js), белый бегунок с синим ореолом. Был системный — светлая полоса
   Chrome на тёмной теме (приёмка 13.10) */
:is(.pd-slider input[type=range],input[type=range].ls-range){-webkit-appearance:none;appearance:none;display:block;width:100%;height:22px;margin:0;padding:0;background:transparent;cursor:pointer}
:is(.pd-slider input[type=range],input[type=range].ls-range)::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--pd-accent),var(--pd-blue)) 0 0/calc(var(--v,0) * 100%) 100% no-repeat,var(--pd-page);box-shadow:inset 0 0 0 1px var(--pd-border)}
:is(.pd-slider input[type=range],input[type=range].ls-range)::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;border:0;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(8,102,255,.25),0 2px 6px rgba(0,0,0,.4)}
:is(.pd-slider input[type=range],input[type=range].ls-range)::-moz-range-track{height:4px;border-radius:2px;background:var(--pd-page);box-shadow:inset 0 0 0 1px var(--pd-border)}
:is(.pd-slider input[type=range],input[type=range].ls-range)::-moz-range-progress{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--pd-accent),var(--pd-blue))}
:is(.pd-slider input[type=range],input[type=range].ls-range)::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(8,102,255,.25),0 2px 6px rgba(0,0,0,.4)}
:is(.pd-slider input[type=range],input[type=range].ls-range):focus-visible{outline:none}
:is(.pd-slider input[type=range],input[type=range].ls-range):focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 5px rgba(8,102,255,.55),0 2px 6px rgba(0,0,0,.4)}
:is(.pd-slider input[type=range],input[type=range].ls-range):focus-visible::-moz-range-thumb{box-shadow:0 0 0 5px rgba(8,102,255,.55),0 2px 6px rgba(0,0,0,.4)}

/* Меню «⋯» — с причинами недоступности строкой */
.pd-menu{position:absolute;z-index:var(--pd-z-pop);width:var(--pd-pop-w,280px);max-width:calc(100vw - 24px);padding:6px;border-radius:var(--pd-r-4);background:var(--pd-raised);box-shadow:var(--pd-sh-2);display:none}
.pd-menu.is-open{display:block;animation:pd-pop-in var(--pd-t-fast) var(--pd-ease)}
.pd-menu__item{display:flex;align-items:flex-start;gap:10px;width:100%;min-height:32px;padding:7px 10px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);text-align:left}
.pd-menu__item>.pd-i{width:15px;height:15px;color:var(--pd-muted);margin-top:1px}
.pd-menu__item:hover{background:var(--pd-hover);color:#fff}
.pd-menu__item b{font-weight:700}
.pd-menu__txt{flex:1;min-width:0}
.pd-menu__meta{margin-left:auto;font-family:var(--pd-mono);font-size:var(--pd-fs-2);font-weight:500;color:var(--pd-muted);white-space:nowrap}
.pd-menu__why{display:block;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-muted)}
.pd-menu__item.is-disabled{color:var(--pd-muted);cursor:default}
.pd-menu__item.is-disabled:hover{background:transparent;color:var(--pd-muted)}
.pd-menu__item.is-disabled>.pd-i{color:var(--pd-off)}
.pd-menu__item.is-danger{color:var(--pd-bad-ink)}
.pd-menu__item.is-danger>.pd-i{color:var(--pd-bad)}
.pd-menu__sep{height:1px;background:var(--pd-line);margin:4px 6px}
.pd-menu__label{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);padding:8px 10px 4px}
.pd-menu__label:last-child{padding-bottom:10px}  /* подпись-сноска внизу меню — с нижним полем, как у пунктов */

/* Подсказка по наведению: data-tip="…". Рисует kit.js плавающим .pd-tipbox в конце body — не обрезается
   overflow:hidden (ряд дока, главная кнопка с бликом) и не занимает ::after. На телефоне подсказок нет. */
.pd-tipbox{position:fixed;left:0;top:0;z-index:calc(var(--pd-z-toast) + 10);max-width:260px;width:max-content;padding:6px 9px;border-radius:var(--pd-r-2);background:#1b2a46;box-shadow:0 8px 20px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08);font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:700;line-height:1.4;color:#fff;white-space:normal;text-align:center;pointer-events:none;opacity:0;transform:translateY(3px);transition:opacity var(--pd-t-fast) var(--pd-ease),transform var(--pd-t-fast) var(--pd-ease)}
.pd-tipbox.is-on{opacity:1;transform:none}
.pd-tipbox.is-below{transform:translateY(-3px)}
.pd-tipbox.is-below.is-on{transform:none}
.pd-tipbox.is-left{transform:translateX(3px)}   /* data-tip-side="left" — слева от кнопки (запуск дока) */
.pd-tipbox.is-left.is-on{transform:none}

/* ───────────────────────── 11. Нижний лист (телефон) ───────────────────────── */
.pd-sheet{position:fixed;left:0;right:0;bottom:0;z-index:var(--pd-z-sheet);display:none;flex-direction:column;max-height:calc(100% - 16px - env(safe-area-inset-top));border-radius:16px 16px 0 0;background:linear-gradient(180deg,rgba(8,102,255,.06),transparent 80px),var(--pd-surface);box-shadow:0 -18px 50px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.07)}
.pd-sheet.is-open{display:flex;animation:pd-sheet-in var(--pd-t-slow) var(--pd-ease)}
.pd-sheet__grab{width:36px;height:4px;border-radius:2px;background:var(--pd-border-2);margin:9px auto 2px;flex:none}
.pd-sheet__hd{display:flex;align-items:center;gap:10px;padding:8px 16px 12px;flex:none}
.pd-sheet__hd b{font-size:var(--pd-fs-5);font-weight:800;letter-spacing:-.01em}
.pd-sheet__body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:4px 16px 18px}
.pd-sheet__body>*{flex-shrink:0}
.pd-sheet__foot{flex:none;padding:12px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--pd-line);background:var(--pd-surface)}
.pd-sheet__note{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-sheet__note .pd-num{color:var(--pd-ink-2)}

/* ───────────────────────── 12. Лента по дням ───────────────────────── */
.pd-day{margin-bottom:40px}
.pd-day:last-child{margin-bottom:0}  /* до дока остаётся ровно --pd-dock-h + 24 px */
/* «8 октября · четверг ———— 5 роликов · $1.60»: шрифт как до стекла (Geist 17/800 + 13.5/600), разделитель «·» — №5 */
.pd-day__hd{display:flex;align-items:center;gap:12px;min-height:18px;margin-bottom:12px}
.pd-day__title{font-size:var(--pd-fs-5);font-weight:800;letter-spacing:-.01em;white-space:nowrap}
.pd-day__date{margin-left:-6px;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted);white-space:nowrap}
.pd-day__date::before{content:"·";margin-right:6px;color:var(--pd-dim)}
.pd-day__ln{flex:1;height:1px;background:var(--pd-line)}
.pd-day__sum{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap}
.pd-day__sum b{font-family:var(--pd-mono);font-weight:500;color:var(--pd-ink-2)}
/* «Команда» с выбранным сотрудником: длинное имя сокращается с «…», число и сумма дня видны всегда (ревью 21.10: конец строки
   срезался без многоточия — «…Щедрина · 10 ролико»). Остаток — с white-space:pre: у флекс-элемента пробел в начале не съедается */
.pd-day__sum--who{display:flex;min-width:0}
.pd-day__who{min-width:0;overflow:hidden;text-overflow:ellipsis}
.pd-day__rest{flex:none;white-space:pre}

.pd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--pd-tile-min),100%),1fr));gap:18px 14px}
.pd-grid[data-density=dense]{--pd-tile-min:132px;gap:16px 12px}

/* ───────────────────────── 13. Плитка медиа ───────────────────────── */
.pd-tile{position:relative;min-width:0;border-radius:12px;cursor:pointer;container-type:inline-size;outline:none}
.pd-tile:focus-visible .pd-poster{box-shadow:0 0 0 2px var(--pd-blue),0 0 0 5px rgba(59,139,255,.25)}
/* №5: плитка плотная, рамка вместо тени (рамка — на ::after: внутренний inset у самого постера закрыла бы картинка) */
.pd-poster{position:relative;aspect-ratio:9/16;border-radius:var(--pd-r-4);overflow:hidden;isolation:isolate;background:var(--pd-surface-2);box-shadow:none}
.pd-poster--sq{aspect-ratio:1/1}
.pd-poster--wide{aspect-ratio:16/9}
.pd-poster>svg,.pd-poster>img,.pd-poster>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-poster::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:6;box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-tile:hover .pd-poster::after,.pd-tile.is-hover .pd-poster::after{box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-tile.is-flash .pd-poster{box-shadow:0 0 0 2px var(--pd-accent),0 0 0 5px rgba(8,102,255,.22)}

/* Ролик не 9:16 в рамке 9:16: размытый кадр за ним (эмбиент) */
.pd-amb{position:absolute;inset:0;overflow:hidden;z-index:0}
.pd-amb>*{position:absolute;inset:0;width:100%;height:100%;transform:scale(1.4);filter:blur(30px) brightness(.55) saturate(1.35)}
.pd-amb::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,transparent 35%,rgba(5,9,18,.5))}
.pd-frame{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);z-index:1;overflow:hidden;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.pd-frame>svg,.pd-frame>img,.pd-frame>video{width:100%;height:100%;display:block;object-fit:cover}

/* Плашки на постере — плотные, без размытия (№5 .badge); шрифт как до стекла */
.pd-plate{position:absolute;z-index:4;height:20px;display:inline-flex;align-items:center;gap:5px;padding:0 6px;border-radius:var(--pd-r-1);font-size:var(--pd-fs-1);font-weight:700;color:#fff;white-space:nowrap;background:rgba(11,18,32,.82);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.pd-plate .pd-i{width:12px;height:12px;color:var(--pd-sky)}
.pd-plate--tl{top:8px;left:8px;max-width:calc(100% - 16px)}
.pd-poster:has(.pd-plate--tr) .pd-plate--tl{max-width:calc(100% - 66px)}
.pd-plate--tr{top:8px;right:8px;font-family:var(--pd-mono);font-weight:600}
/* длительность — капсула (.dur), моно */
.pd-plate--br{right:8px;bottom:8px;height:20px;padding:0 7px;border-radius:10px;font-family:var(--pd-mono);font-weight:500;box-shadow:none}
.pd-plate--bl{left:8px;bottom:8px}
.pd-plate span{overflow:hidden;text-overflow:ellipsis}

/* Слой при наведении */
.pd-tile__ov{position:absolute;inset:0;z-index:5;opacity:0;transition:opacity var(--pd-t-fast);display:flex;align-items:flex-end;justify-content:space-between;padding:8px;background:linear-gradient(180deg,transparent 46%,rgba(5,9,18,.9))}
.pd-tile:hover .pd-tile__ov,.pd-tile:focus-within .pd-tile__ov,.pd-tile.is-hover .pd-tile__ov{opacity:1}
.pd-tile:hover .pd-plate--br,.pd-tile:focus-within .pd-plate--br,.pd-tile.is-hover .pd-plate--br{opacity:0}
.pd-tile__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:#fff;background:rgba(11,18,32,.8);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.pd-tile__play>.pd-i{width:16px;height:16px;margin-left:2px}
.pd-tile__acts{display:flex;gap:6px}
.pd-ob{position:relative;width:30px;height:30px;border-radius:var(--pd-r-3);display:grid;place-items:center;color:#fff;background:rgba(11,18,32,.82);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.pd-ob>.pd-i{width:15px;height:15px}
.pd-ob:hover{background:var(--pd-hover)}
.pd-ob::before{content:"";position:absolute;inset:-4px}
.pd-tile__more{display:none}

/* Подпись и мета */
.pd-tile__cap{padding:9px 0 0}
.pd-tile__txt{font-size:var(--pd-fs-3);font-weight:600;line-height:1.45;color:var(--pd-ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.76em}
.pd-tile__meta{display:flex;align-items:center;gap:6px;margin-top:5px;font-family:var(--pd-mono);font-size:var(--pd-fs-1);color:var(--pd-muted);white-space:nowrap;font-variant-numeric:tabular-nums}
/* знак модели первым в мете (вместо плашки на постере); полное имя — в подсказке */
.pd-tile__mdl{flex:none;width:13px;height:13px;border-radius:3px;display:inline-grid;place-items:center;overflow:hidden;color:var(--pd-ink-2)}
.pd-tile__mdl>.pd-i{width:13px;height:13px;stroke-width:2.2}
.pd-tile__ml{flex:1;min-width:0;display:flex;align-items:center;overflow:hidden}
.pd-tile__ml>span{overflow:hidden;text-overflow:ellipsis}
.pd-tile__ml i{font-style:normal;color:var(--pd-dim);margin:0 4px}
.pd-tile__who{display:inline-flex;align-items:center;gap:6px;font-family:var(--pd-font);font-weight:700;color:var(--pd-ink-2)}
.pd-tile__ml>.pd-tile__who{flex:0 1 auto;min-width:0}
.pd-tile__nm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pd-tile__ml>.pd-tile__tm,.pd-tile__ml>i{flex:none}
.pd-tile__price{color:var(--pd-ink-2);font-weight:500;flex:none;margin-left:auto}
.pd-tile__price.is-est{color:var(--pd-muted)}
.pd-tile__price.is-unsure{color:var(--pd-warn)}
.pd-tile__price s{color:var(--pd-muted)}
@container (max-width:190px){.pd-tile__meta .is-opt{display:none}.pd-tile__meta{gap:6px}.pd-tile__ml i{margin:0 3px}}
@container (max-width:220px){.pd-pstate__note>.pd-i{display:none}}
@container (max-width:150px){.pd-tile__txt{font-size:var(--pd-fs-2)}}

/* Состояния без готового файла */
.pd-pstate{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 12px}
.pd-pstate__blur{position:absolute;inset:-14%;z-index:0;filter:blur(18px) brightness(.42) saturate(.9)}
.pd-pstate__blur>*{width:100%;height:100%;display:block}
.pd-pstate__blur--dim{filter:blur(20px) brightness(.32) saturate(.6)}
.pd-pstate__shim{position:absolute;inset:0;z-index:1;background:linear-gradient(110deg,transparent 30%,rgba(94,208,250,.07) 50%,transparent 70%);background-size:250% 100%;animation:pd-shimmer 2.4s linear infinite}
.pd-pstate>*{position:relative;z-index:2}
.pd-pstate .pd-loader{margin-bottom:8px}
.pd-pstate__k{font-size:var(--pd-fs-3);font-weight:800;color:#fff}
.pd-pstate__timer{font-family:var(--pd-mono);font-size:var(--pd-fs-7);font-weight:500;letter-spacing:-.02em;line-height:1.1;margin:4px 0;color:#fff;font-variant-numeric:tabular-nums}
.pd-pstate__h{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.45}
.pd-pstate__h .pd-num{color:var(--pd-ink-2)}
.pd-pstate__title{font-size:var(--pd-fs-4);font-weight:800;color:#fff;margin-bottom:4px;line-height:1.3}
.pd-pstate__why{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* «Деньги не списаны» — чип тона */
.pd-pstate__note{display:inline-flex;align-items:center;gap:5px;height:18px;margin-top:8px;padding:0 6px;border-radius:var(--pd-r-1);font-size:var(--pd-fs-2);font-weight:700;line-height:1.35;white-space:nowrap;--pd-t:var(--pd-grey-rgb);color:rgb(var(--pd-t));background:rgb(var(--pd-t) / var(--pd-tone-bg))}
.pd-pstate__note>.pd-i{width:11px;height:11px}
.pd-pstate__note--good{--pd-t:var(--pd-good-rgb)}
.pd-pstate__note--warn{--pd-t:var(--pd-warn-rgb)}
.pd-pstate__note--sky{--pd-t:var(--pd-sky-rgb)}
/* «Списано $X — напишите владельцу» у неудачной задачи — с переносом: на узкой плитке (165–180 px) сумма и совет видны целиком,
   а не обрывок из середины (аудит денег 22.10, v1). Короткие чипы («Деньги не списаны», «списано $X» в работе) — в одну строку */
.pd-pstate__note--wrap{height:auto;min-height:18px;max-width:100%;padding:2px 6px;white-space:normal;text-align:center;justify-content:center}
.pd-pstate__note--wrap>.pd-i{flex:none}
.pd-pstate .pd-btn{margin-top:10px;height:30px;padding:0 11px;border-radius:var(--pd-r-3);color:#fff;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-pstate .pd-btn:hover{background:var(--pd-hover)}
.pd-pstate .pd-btn::before{content:"";position:absolute;inset:-5px}
.pd-ring{width:44px;height:44px;border-radius:var(--pd-r-4);display:grid;place-items:center;margin-bottom:12px;flex:none;background:rgb(var(--pd-t) / .12);color:rgb(var(--pd-t));box-shadow:inset 0 0 0 1px rgb(var(--pd-t) / .3)}
/* в плитке — значок цветом тона, без подложки и канта (.xic) */
.pd-pstate .pd-ring{width:auto;height:auto;margin-bottom:6px;background:none;box-shadow:none;border-radius:0}
.pd-pstate .pd-ring>.pd-i{width:24px;height:24px}
.pd-ring--s{width:34px;height:34px;border-radius:var(--pd-r-3);margin-bottom:4px}  /* в ячейке пачки, строке списка */
.pd-ring--s .pd-i{width:16px;height:16px}
.pd-hatch{position:absolute;inset:0;z-index:0;background:repeating-linear-gradient(45deg,rgba(15,26,46,.88) 0 9px,rgba(18,30,51,.88) 9px 18px)}
.pd-hatch--bad{background:repeating-linear-gradient(45deg,#160f1c 0 9px,#1a1220 9px 18px)}
.pd-hatch--warn{background:repeating-linear-gradient(45deg,#15130f 0 9px,#1a1712 9px 18px)}
.pd-hatch--off{opacity:.6}
/* состояния постера: цвет — на рамке ::after */
.pd-poster.is-error{background:#130e18}
.pd-poster.is-error::after{box-shadow:inset 0 0 0 1px rgba(255,99,105,.4)}
.pd-poster.is-unknown::after{box-shadow:inset 0 0 0 1px rgba(255,178,36,.4)}
.pd-poster.is-running::after{box-shadow:inset 0 0 0 1px rgba(94,208,250,.22)}

/* Полоса прогресса Blue→Sky */
.pd-progress{position:absolute;left:0;right:0;bottom:0;height:3px;z-index:4;background:rgba(255,255,255,.06);overflow:hidden}
.pd-progress i{display:block;height:100%;width:calc(var(--v,0) * 100%);max-width:96%;border-radius:0 2px 2px 0;background:linear-gradient(90deg,var(--pd-accent),var(--pd-sky));box-shadow:0 0 12px rgba(94,208,250,.5)}
.pd-progress--indet i{width:30%;animation:pd-indet 1.4s ease-in-out infinite}
.pd-progress--inline{position:relative;height:4px;border-radius:3px}

/* ───────────────────────── 14. Док-композер ───────────────────────── */
/* Над доком — зона --pd-dock-fade: лента гаснет за 16 px, дальше сплошной фон. «Призраков» нет:
   kit.js (PD.underDock) гасит целиком (.is-under-dock, без полупрозрачности) постер и рамку группы, от которых над
   зоной видно меньше 44 px, и каждую строку подписи плитки / заголовок дня / [data-under-dock], заходящую в зону. */
.pd-dockwrap{position:fixed;left:var(--pd-sb-w);right:0;bottom:0;z-index:var(--pd-z-dock);padding:var(--pd-dock-fade) var(--pd-pad-x) 14px var(--pd-pad-l);pointer-events:none;background:none}  /* №5: подложка под доком — ::before (§30) */
.pd-poster,.pd-tile__txt,.pd-tile__meta,.pd-day__hd,.pd-chain__ft,.pd-jobs,.pd-jobrow,.pd-acard,.pd-acard>*,[data-under-dock]{transition:opacity var(--pd-t) var(--pd-ease)}
.pd-poster.is-under-dock,.pd-tile__txt.is-under-dock,.pd-tile__meta.is-under-dock,.pd-day__hd.is-under-dock,.pd-chain__ft.is-under-dock,[data-under-dock].is-under-dock{opacity:0}
/* v4 (m2): списки и аудиокарточки — рамка как у постера (гаснет, если над зоной видно меньше 44 px), ряды и строки карточки — как подписи */
.pd-jobs.is-under-dock,.pd-jobrow.is-under-dock,.pd-acard.is-under-dock,.pd-acard>.is-under-dock{opacity:0}
.pd-dock{pointer-events:auto;position:relative;max-width:var(--pd-dock-max);margin:0 auto;padding:12px 14px;border-radius:var(--pd-r-5);background:var(--pd-dk-light),var(--pd-dk-fill);border:1px solid var(--pd-dk-edge);box-shadow:0 18px 44px rgba(0,0,0,.5),inset 0 1px 0 rgba(94,208,250,.08);--pd-muted:var(--pd-glass-muted)}
/* на стекле приглушённое светлее; у контролов на своей подложке — обычное */
.pd-dock :is(.pd-chip,.pd-fileslot,.pd-thumb,.pd-add,.pd-dock__prompt,.pd-mcomp__prompt){--pd-muted:#8b95a7}
.pd-dock.is-drop{box-shadow:0 18px 44px rgba(0,0,0,.5),0 0 0 2px var(--pd-accent),0 0 0 6px rgba(8,102,255,.18)}
.pd-dock__top{display:flex;align-items:flex-start;gap:12px;min-width:0}
.pd-dock__att{display:flex;align-items:center;gap:8px;flex:none}
.pd-dock__hint{align-self:center;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-muted)}
.pd-dock__hint b{color:var(--pd-ink-2);font-weight:700}
/* Промпт: до 3 строк (макет), длинный текст прокручивается колесом и пальцем (было overflow:hidden — ниже 3-й строки
   было не добраться, Озвучка 16.10); текст не влез (.is-scroll, kit.js fadeHint) — докрутили до конца, лента под доком не едет;
   короткое поле колесо не глушит. Рост поля при вводе пробовали 16.10 — отказались (прыжки ленты, касания) */
.pd-dock__prompt{position:relative;flex:1;min-width:0;max-height:calc(1.55em * 3);overflow-x:hidden;overflow-y:auto;scrollbar-color:rgba(255,255,255,.22) transparent;font-size:var(--pd-fs-4);font-weight:500;line-height:var(--pd-lh-read);color:#fff;padding-top:3px;caret-color:var(--pd-sky);outline:none}
.pd-dock__prompt::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-color:transparent;background-clip:padding-box}   /* Safari: без рамки цвета страницы на стекле */
.pd-dock__prompt.is-scroll{overscroll-behavior:contain}
.pd-dock__prompt:empty::before{content:attr(data-ph);color:var(--pd-muted)}
/* ниже видимого есть текст — затухание снизу (.pd-fade-b ставит kit.js fadeHint); докрученное до конца — без него */
.pd-dock__prompt.pd-fade-b{-webkit-mask-image:linear-gradient(#000 calc(100% - 22px),transparent);mask-image:linear-gradient(#000 calc(100% - 22px),transparent)}
/* Высоту поля задаёт человек (отчёт 20.10, п. 4; kit.js «Высота поля промпта»): ручка на верхнем крае дока — док прижат к низу,
   тянем вверх — поле выше. .has-ph — высота задана (--pd-ph, не выше половины окна): поле этой высоты и при коротком тексте */
.pd-dock__grip{position:absolute;top:-8px;left:50%;z-index:2;width:64px;height:16px;margin-left:-32px;display:flex;align-items:center;justify-content:center;border-radius:8px;cursor:ns-resize;touch-action:none;outline:none}
.pd-dock__grip::before{content:"";width:36px;height:4px;border-radius:2px;background:rgba(255,255,255,.2);box-shadow:0 0 0 1px rgba(3,7,15,.4);transition:background var(--pd-t-fast) var(--pd-ease),width var(--pd-t-fast) var(--pd-ease)}
.pd-dock__grip:hover::before,html.pd-resizing .pd-dock__grip::before{width:48px;background:var(--pd-sky)}
.pd-dock__grip:focus-visible::before{width:48px;background:var(--pd-sky);box-shadow:0 0 0 3px rgba(94,208,250,.3)}
html.pd-resizing,html.pd-resizing *{cursor:ns-resize!important;-webkit-user-select:none!important;user-select:none!important}
.pd-dock.has-ph .pd-dock__prompt{height:min(var(--pd-ph),50vh);max-height:none}
.pd-dock__fold{align-self:flex-start;margin:-4px -6px 0 0}
/* «Развернуть поле» (kit.js phMaxHTML): значок справа от «Свернуть» (в «Промптах Kling» — справа от поля); нажата — .is-on.
   Режим без промпта прячет колонку поля — и её */
.pd-dock__max{align-self:flex-start;margin:-4px -6px 0 -4px}
.pd-dock__pcol[hidden]~.pd-dock__max{display:none}
.pd-dock.is-empty .pd-dock__top{align-items:center}
.pd-dock.is-empty .pd-dock__prompt{flex-basis:100%;padding-top:0;margin-top:10px;min-height:1.55em}
.pd-dock.is-empty .pd-dock__top{flex-wrap:wrap}
.pd-dock.is-empty .pd-dock__prompt{order:3}
.pd-dock.is-empty .pd-dock__att{flex:1;min-width:0}
/* Много вложений (6+): миниатюры своей строкой, промпт под ними во всю ширину */
.pd-dock.is-many .pd-dock__top{flex-wrap:wrap;align-items:center}
.pd-dock.is-many .pd-dock__att{flex:1;min-width:0;flex-wrap:wrap}
.pd-dock.is-many .pd-dock__prompt{order:3;flex-basis:100%;margin-top:10px}
/* Слоты файлов вместе с промптом (Kling Motion Control: «Персонаж — фото» и «Движение — видео»): слоты своей строкой
   во всю ширину (рядом — «Свернуть»), промпт с проверками — под ними во всю ширину */
.pd-dock.has-slots .pd-dock__top{flex-wrap:wrap;row-gap:12px}
.pd-dock.has-slots .pd-dock__att{flex:1 1 0;min-width:0}
.pd-dock.has-slots .pd-dock__pcol{order:3;flex-basis:100%}
/* Подсказки о вложениях — колонкой рядом с миниатюрами (док не растёт на строку) */
.pd-dock__pcol{flex:1;min-width:0;display:flex;flex-direction:column}
.pd-dock__pcol>.pd-dock__prompt{flex:none}
.pd-dock__pcol>.pd-checks{margin:4px 0 0;padding:0;border:0}
.pd-check>.pd-checks__more{margin-left:4px;flex:none}
/* Перетаскивание файлов на док: .pd-dock.is-drop (кольцо) + плашка .pd-drop внутри дока */
.pd-drop{position:absolute;inset:6px;z-index:8;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:16px;padding:0 24px;text-align:left;background:rgba(9,20,42,.94);outline:2px dashed rgba(59,139,255,.75);outline-offset:-2px;pointer-events:none;animation:pd-fade var(--pd-t) var(--pd-ease)}
.pd-drop__ic{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex:none;color:#fff;background:var(--pd-fill-accent)}
.pd-drop b{display:block;font-size:var(--pd-fs-4);font-weight:800;color:#fff}
.pd-drop small{display:block;margin-top:3px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-ink-2)}
/* «Пачка» файлов под курсором при перетаскивании */
.pd-ghost{position:fixed;z-index:calc(var(--pd-z-dock) + 2);pointer-events:none;width:64px;height:64px}
.pd-ghost>span{position:absolute;inset:0;border-radius:14px;overflow:hidden;box-shadow:0 14px 30px rgba(0,0,0,.5),0 0 0 1.5px rgba(255,255,255,.5)}
.pd-ghost>span:nth-child(1){transform:rotate(-9deg) translate(-8px,4px)}
.pd-ghost>span:nth-child(2){transform:rotate(6deg) translate(8px,2px)}
.pd-ghost>span>svg,.pd-ghost>span>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-ghost>em{position:absolute;right:-12px;top:-10px;min-width:24px;height:24px;padding:0 6px;border-radius:8px;display:grid;place-items:center;font-style:normal;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;color:#fff;background:var(--pd-accent);box-shadow:0 0 0 2px var(--pd-page)}
.pd-ghost__cur{position:absolute;left:40px;top:44px;color:#fff;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}

.pd-add{position:relative;width:56px;height:56px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:none;color:var(--pd-ink-2);font-size:var(--pd-fs-1);font-weight:700;background:var(--pd-on-glass);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-add:hover{background:var(--pd-hover);color:#fff;box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-add[aria-disabled=true]{opacity:.5;cursor:default}
.pd-add[aria-disabled=true]:hover{background:var(--pd-on-glass);color:var(--pd-ink-2)}
.pd-add__n{font-family:var(--pd-mono);font-weight:500;color:var(--pd-muted)}
.pd-thumb{position:relative;width:56px;height:56px;border-radius:9px;overflow:hidden;flex:none;cursor:grab;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-thumb>svg,.pd-thumb>img{width:100%;height:100%;display:block;object-fit:cover}
/* номер — угловой тег (.tgI) */
.pd-thumb__n{position:absolute;left:0;top:0;min-width:18px;height:18px;padding:0 4px;border-radius:0 0 4px 0;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;line-height:18px;text-align:center;color:#fff;background:rgba(8,102,255,.94);box-shadow:none}
.pd-thumb__role{position:absolute;left:0;right:0;bottom:0;font-size:var(--pd-fs-1);font-weight:800;line-height:17px;text-align:center;white-space:nowrap;color:var(--pd-page);background:var(--pd-sky)}
.pd-thumb.has-role{box-shadow:0 0 0 1.5px var(--pd-sky)}
.pd-thumb__x{position:absolute;right:3px;top:3px;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;color:#fff;background:rgba(11,18,32,.82);opacity:0;transition:opacity var(--pd-t-fast)}
.pd-thumb__x::before{content:"";position:absolute;inset:-4px -4px 0 0}  /* без захода внутрь: нажатие в центр миниатюры — её меню (роли кадров 4.0), а не «Убрать» (16.10.2026) */
.pd-thumb:hover .pd-thumb__x,.pd-thumb:focus-within .pd-thumb__x{opacity:1}
.pd-thumb__dur{position:absolute;right:3px;bottom:3px;padding:0 4px;border-radius:4px;font-family:var(--pd-mono);font-size:var(--pd-fs-1);line-height:17px;color:#fff;background:rgba(11,18,32,.82)}
.pd-thumb.is-bad{box-shadow:0 0 0 1.5px var(--pd-bad)}
/* Загрузка большого файла: процент поверх миниатюры + полоса снизу */
.pd-up{position:absolute;inset:0;z-index:2;display:grid;place-items:center;background:rgba(5,9,18,.62);font-family:var(--pd-mono);font-size:var(--pd-fs-2);font-weight:600;color:#fff}
.pd-thumb>.pd-progress{z-index:3;height:4px}

/* Ряд параметров — всегда одна строка; kit.js ужимает ступенями data-fit=1..3 */
.pd-dock__row{display:flex;align-items:center;gap:6px;margin-top:10px;min-width:0}
.pd-dock__sep{width:1px;height:20px;background:var(--pd-border);margin:0 2px;flex:none}
.pd-dock__params{display:flex;align-items:center;gap:6px;min-width:0;flex:0 1 auto;overflow:hidden;padding:2px;margin:-2px}
.pd-dock__sp{flex:1 1 0;min-width:8px}
.pd-chip.is-compact .pd-chip__lbl,.pd-chip.is-compact .pd-chip__pre{display:none}
/* последний ход (kit.js fit): ряд листается вбок с затуханием справа (.pd-hf-r), а не срезается посреди чипа */
.pd-dock__params.is-scroll{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain}
.pd-dock__params.is-scroll::-webkit-scrollbar{display:none}
/* Ступени (kit.js PD.fit): 1 — плотнее и без слов «дорогой запуск» (ничего не теряем) → подписи тумблеров
   (data-compact 1…5) → 2 — без иконок у значений → подписи тумблеров «последними» (data-compact 6…9) → 3 — без имени модели */
.pd-dock__row:is([data-fit="1"],[data-fit="2"],[data-fit="3"]) .pd-costly span{display:none}
.pd-dock__row:is([data-fit="1"],[data-fit="2"],[data-fit="3"]),.pd-dock__row:is([data-fit="1"],[data-fit="2"],[data-fit="3"]) .pd-dock__params{gap:6px}
.pd-dock__row[data-fit="1"] .pd-chip{padding:0 9px;gap:6px}
.pd-dock__row[data-fit="1"] .pd-chip--model{padding:0 9px 0 5px}
.pd-dock__row:is([data-fit="2"],[data-fit="3"]) .pd-chip{padding:0 8px;gap:5px}
.pd-dock__row:is([data-fit="2"],[data-fit="3"]) .pd-chip--model{padding:0 8px 0 5px}
.pd-dock__row:is([data-fit="2"],[data-fit="3"]) .pd-chip--value>.pd-i{display:none}
.pd-dock__row[data-fit="3"] .pd-chip__name:not(.is-keep){display:none}  /* .is-keep — имя персонажа/голоса не прячем */
.pd-dock__row[data-fit="3"] .pd-dock__sep{margin:0 1px}

/* Строки проверок под рядом: квадратик + текст + исправление в один клик */
.pd-checks{margin:10px 0 0;padding-top:9px;border-top:1px solid rgba(44,60,92,.6);display:grid;gap:6px}
.pd-check{display:flex;align-items:center;gap:8px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-ink-2);min-width:0}
.pd-check .pd-dot{margin-top:0}
.pd-check__txt{flex:1;min-width:0}
.pd-check__txt b{color:#fff;font-weight:700}
.pd-check .pd-link{font-size:var(--pd-fs-2);flex:none}
.pd-check--bad .pd-check__txt b{color:var(--pd-bad-ink)}
/* несколько проверок: видна первая и «ещё N» */
.pd-checks__more{justify-self:start;display:inline-flex;align-items:center;gap:6px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);margin-left:14px}
.pd-checks__more:hover{color:#fff}
.pd-checks:not(.is-open) .pd-check:nth-child(n+2){display:none}
.pd-checks.is-open .pd-checks__more{display:none}
/* Нажали заблокированную кнопку — причина вспыхивает (studio.js revealBlock): красная строка проверки или пустой слот */
.pd-check.is-flash,.pd-fileslot.is-flash{animation:pd-flash 1.3s ease-out}
.pd-check.is-flash{border-radius:var(--pd-r-2)}
@keyframes pd-flash{0%,30%{background-color:rgb(var(--pd-bad-rgb)/.16);box-shadow:0 0 0 4px rgb(var(--pd-bad-rgb)/.16)}100%{background-color:transparent;box-shadow:0 0 0 4px transparent}}

/* Свёрнутый док — одна строка */
.pd-dock__line{display:none;align-items:center;gap:12px;min-width:0}
.pd-dock.is-collapsed{padding:8px 8px 8px 12px}
.pd-dock.is-collapsed .pd-dock__top,.pd-dock.is-collapsed .pd-dock__row,.pd-dock.is-collapsed .pd-checks{display:none}
.pd-dock.is-collapsed .pd-dock__line{display:flex}
.pd-stack{position:relative;display:flex;flex:none;padding-right:2px}
.pd-stack>span{width:32px;height:32px;border-radius:var(--pd-r-3);overflow:hidden;box-shadow:0 0 0 2px var(--pd-surface),0 0 0 3px rgba(255,255,255,.1)}
.pd-stack>span+span{margin-left:-12px}
.pd-stack>span>svg{width:100%;height:100%;display:block}
.pd-dock__ptxt{flex:1;min-width:0;font-size:var(--pd-fs-3);font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:text}
.pd-dock__ptxt.is-empty{color:var(--pd-muted)}  /* пустой промпт — подсказкой, как в развёрнутом доке, а не белым «введённым» текстом */
.pd-dock__sum{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;flex:none}
.pd-dock__sum b{font-family:var(--pd-mono);color:var(--pd-ink-2);font-weight:500}

/* Мобильная свёрнутая строка композера (видна только на телефоне: ≤860 px — display:flex) */
.pd-mdock{display:none;pointer-events:auto;align-items:center;gap:8px;height:68px;padding:0 10px 0 8px;border-radius:16px;background:linear-gradient(180deg,rgba(8,102,255,.09),transparent 60px),var(--pd-surface);border:1px solid var(--pd-border-2);box-shadow:0 14px 36px rgba(0,0,0,.55),inset 0 1px 0 rgba(94,208,250,.08);cursor:pointer}
.pd-mdock__stk{position:relative;width:38px;height:50px;flex:none}
.pd-mdock__stk>span{position:absolute;inset:0;border-radius:7px;overflow:hidden;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-mdock__stk>span>svg{width:100%;height:100%;display:block}
/* сколько вложений — угловой тег */
.pd-mdock__stk em{position:absolute;left:0;top:0;min-width:17px;height:17px;padding:0 3px;border-radius:0 0 4px 0;display:grid;place-items:center;font-style:normal;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;color:#fff;background:rgba(8,102,255,.94);box-shadow:none;z-index:1}
.pd-mdock__tx{flex:1;min-width:0}
.pd-mdock__tx p{display:flex;align-items:center;gap:6px;font-size:var(--pd-fs-3);font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}
.pd-mdock__tx p>.pd-i,.pd-mdock__tx p>.pd-glyph{width:15px;height:15px;flex:none}
.pd-mdock__tx small{display:block;margin-top:3px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-mdock__tx small .pd-num{color:var(--pd-ink-2)}
.pd-mdock__go{height:48px;padding:0 14px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;flex:none;font-family:var(--pd-mono);font-size:var(--pd-fs-4);font-weight:600;color:#fff;background:var(--pd-fill-accent);box-shadow:var(--pd-glow)}
/* Кнопка свёрнутого дока — всегда глагол + цена: «Создать · $2.52», «Сделать · бесплатно» */
.pd-mdock__go--verb{gap:8px;padding:0 5px 0 14px;font-family:var(--pd-font);font-size:var(--pd-fs-3);font-weight:800;letter-spacing:0}
.pd-mdock__go--verb.pd-mdock__go--solo{padding:0 16px}
.pd-mdock__price{height:38px;padding:0 9px;border-radius:var(--pd-r-3);display:inline-flex;align-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;background:rgba(11,18,32,.28);box-shadow:none;font-variant-numeric:tabular-nums}
.pd-mdock__price.is-free{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:800;color:#d9ffe9}
.pd-mdock__add{width:44px;height:44px;border-radius:10px}
/* причина — не больше двух строк с многоточием (три строки упирались в рамку кнопки 52 px, приёмка 13.10); полная — в title */
.pd-mdock__why{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pd-mdock__go.is-blocked{max-width:170px;padding:0 12px;white-space:normal;line-height:1.25;text-align:center;font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:800;color:var(--pd-bad-ink);background:rgba(255,99,105,.1);box-shadow:inset 0 0 0 1px rgba(255,99,105,.32)}
.pd-mdock__go.is-blocked.is-soft{color:var(--pd-muted);background:var(--pd-line);box-shadow:inset 0 0 0 1px var(--pd-border)}  /* мягкая причина («Нет связи») — серая */



/* Богатая строка выбора: модель, голос, режим (иконка, имя, цена, описание, варианты) */
.pd-opt{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:start;width:100%;padding:10px 12px;border-radius:10px;text-align:left;cursor:pointer}
.pd-opt:hover{background:var(--pd-hover)}
.pd-opt.is-sel{background:rgba(59,139,255,.10);box-shadow:inset 0 0 0 1px rgba(59,139,255,.32)}
.pd-opt__hd{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
/* имя и цена делят строку: имя уступает (переносится), цена не сжимается — раньше вместе были шире колонки и цена вылезала
   за рамку карточки на телефоне (приёмка 13.10) */
.pd-opt__name{min-width:0;font-size:var(--pd-fs-4);font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-opt__price{flex:none;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;text-align:right}
.pd-opt__price small{display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-opt__price b{font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;color:#fff;margin-right:4px}
.pd-opt__desc{font-size:var(--pd-fs-2);font-weight:600;line-height:1.5;color:var(--pd-muted);margin-top:3px}
.pd-opt__meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-top:6px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-opt__meta .pd-num{color:var(--pd-ink-2);font-size:var(--pd-fs-2)}
.pd-opt__meta .pd-i{color:var(--pd-muted)}
.pd-opt__meta>span{display:inline-flex;align-items:center;gap:6px}
.pd-opt .pd-seg{margin-top:8px;flex-wrap:wrap;max-width:100%}   /* у Kling 6 вариантов (с 4.0) — на узком экране в два ряда */
/* недоступная модель (не подключена, нет кредитов): строка видна с причиной (.pd-why), выбрать нельзя */
.pd-opt.is-off,.pd-opt[aria-disabled=true]{cursor:default}
.pd-opt.is-off:hover,.pd-opt[aria-disabled=true]:hover{background:none}
.pd-opt.is-off .pd-glyph,.pd-opt[aria-disabled=true] .pd-glyph{filter:grayscale(1);opacity:.55}
.pd-opt.is-off .pd-opt__name,.pd-opt.is-off .pd-opt__price b,.pd-opt[aria-disabled=true] .pd-opt__name,.pd-opt[aria-disabled=true] .pd-opt__price b{color:var(--pd-ink-2)}
.pd-opt .pd-why{margin-top:8px}

/* Значок соотношения сторон */
.pd-arshape{width:26px;height:26px;display:grid;place-items:center;flex:none;color:var(--pd-muted)}
.pd-arshape i{display:block;border:1.6px solid currentColor;border-radius:3px}
.is-sel>.pd-arshape{color:var(--pd-blue)}

/* Композер в листе телефона */
.pd-mcomp__model{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px 10px 10px;border-radius:12px;text-align:left;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-mcomp__model b{display:block;font-size:var(--pd-fs-4);font-weight:800}
.pd-mcomp__model b em{font-style:normal;color:var(--pd-sky)}
.pd-mcomp__model small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:1px}
.pd-mcomp__model>.pd-i{margin-left:auto;color:var(--pd-muted)}
.pd-mcomp__att{display:flex;gap:10px;margin:16px -16px 0;padding:4px 16px;overflow-x:auto;scrollbar-width:none}
.pd-mcomp__att::-webkit-scrollbar{display:none}
.pd-mcomp__att .pd-add,.pd-mcomp__att .pd-thumb{width:64px;height:64px;border-radius:10px}
/* лист телефона: крестик — в самом углу, 24 px (как номер слева вверху), зона — сам крестик. Было 28 px с отступом 3 и зоной
   inset:-11px: крестик доходил до центра миниатюры 64 px, и касание в центр (браузер «подтягивает» его к ближней кнопке) убирало
   файл вместо меню — роли кадров Kling 4.0 на телефоне не открывались. «Убрать» есть и в меню миниатюры (16.10.2026, ревью UX) */
.pd-mcomp__att .pd-thumb__x{opacity:1;top:0;right:0;width:24px;height:24px;border-radius:0 0 0 8px}
.pd-mcomp__att .pd-thumb__x::before{inset:0}
.pd-mcomp__att:not(:has(.pd-fileslot,.pd-thumb,.pd-add,.pd-file)){display:none}  /* вложений у режима нет — без пустой полосы 24 px под заголовком листа (Озвучка, приёмка 13.10) */
.pd-mcomp__prompt{margin-top:14px;border-radius:12px;padding:12px 14px;min-height:132px;background:var(--pd-page);box-shadow:inset 0 0 0 1px var(--pd-border);font-size:16px;font-weight:500;line-height:1.6;color:#fff}
.pd-mcomp__chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.pd-mcomp__chips .pd-chip{height:44px;padding:0 12px;border-radius:10px;font-size:var(--pd-fs-4);background:var(--pd-surface)}
.pd-mcomp__chips .pd-chip--model{display:none}
.pd-mcomp__chips .pd-chip>.pd-chip__ava{width:30px;height:30px;border-radius:8px;margin-left:-5px}  /* 12 − 5 = 7 = (44 − 30) / 2 */
.pd-mcomp .pd-checks{margin:14px 0 0;padding-top:12px}
.pd-mcomp .pd-check{align-items:flex-start;flex-wrap:wrap;font-size:var(--pd-fs-3)}
.pd-mcomp .pd-check .pd-dot{margin-top:6px}
.pd-mcomp .pd-check__txt{flex-basis:calc(100% - 20px)}
.pd-mcomp .pd-check .pd-link{margin-left:17px}

/* ───────────────────────── 15. Подтверждение дорогого запуска ───────────────────────── */
.pd-confirm{--pd-pop-w:380px;padding:16px 16px 12px}
/* «Дорогой запуск» — янтарный чип */
.pd-confirm__k{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 7px;border-radius:var(--pd-r-1);font-size:var(--pd-fs-3);font-weight:800;color:var(--pd-warn);background:rgba(255,178,36,.13)}
.pd-confirm__k>.pd-i{width:12px;height:12px}
.pd-confirm__t{font-size:var(--pd-fs-6);font-weight:800;letter-spacing:-.02em;line-height:1.25;margin-top:10px}
.pd-confirm__t .pd-num{font-weight:600}
.pd-confirm__d{font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2);line-height:1.55;margin-top:6px}
.pd-kvrows{margin-top:14px;border-radius:10px;background:rgba(11,18,32,.55);box-shadow:inset 0 0 0 1px var(--pd-border);padding:2px 12px}
.pd-kvrows__r{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted)}
.pd-kvrows__r+.pd-kvrows__r{border-top:1px solid var(--pd-line)}
.pd-kvrows__r b{font-family:var(--pd-mono);font-weight:500;color:#fff;font-size:var(--pd-fs-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.pd-kvrows__r b em{font-style:normal;color:var(--pd-muted)}
.pd-kvrows__r b:has(.pd-word,.pd-u,.pd-freeword){white-space:normal;text-align:right}  /* значение со словами может переноситься, числа — нет */
.pd-kvrows__r b .pd-num{white-space:nowrap}
.pd-kvrows__r .pd-good-ink{color:var(--pd-good)}.pd-kvrows__r .pd-bad-ink{color:var(--pd-bad-ink)}.pd-kvrows__r .pd-warn-ink{color:var(--pd-warn)}
.pd-kvrows__r .pd-freeword,.pd-kvrows__r .pd-word,.pd-kvrows__r .pd-u{font-family:var(--pd-font)}
.pd-kvrows__r.is-warn b .is-after{color:var(--pd-warn)}
.pd-confirm__safe{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-good)}
.pd-confirm__alts{display:grid;gap:6px;margin-top:10px}
.pd-alt{position:relative;display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:0 12px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);text-align:left;box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-alt:hover{background:var(--pd-hover);color:#fff}
.pd-alt b{color:#fff;font-weight:800}
.pd-alt .pd-num{margin-left:auto;color:var(--pd-ink-2);font-weight:600}
.pd-alt--good{background:rgba(53,208,127,.07);box-shadow:inset 0 0 0 1px rgba(53,208,127,.24)}
.pd-alt--good:hover{background:rgba(53,208,127,.13)}
.pd-alt--good .pd-num,.pd-alt--good>.pd-i{color:var(--pd-good)}
.pd-confirm__btns{display:flex;gap:8px;margin-top:14px}
.pd-confirm__btns .pd-btn{height:var(--pd-h-l)}
.pd-confirm__btns .pd-btn--primary{flex:1}
.pd-confirm__foot{margin-top:10px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);text-align:center}

/* ───────────────────────── 16. Окно задачи ───────────────────────── */
/* №5: затемнение .78 без размытия — backdrop-filter только у сайдбара и дока */
.pd-viewer{position:fixed;inset:0;z-index:var(--pd-z-modal);display:none;place-items:center;padding:24px;background:rgba(3,7,15,.78);-webkit-backdrop-filter:none;backdrop-filter:none}
.pd-viewer.is-open{display:grid;animation:pd-fade var(--pd-t) var(--pd-ease)}
.pd-viewer__win{width:min(1160px,100%);height:min(860px,100%);display:grid;grid-template-columns:minmax(0,1fr) 410px;border-radius:var(--pd-r-6);overflow:hidden;background:var(--pd-surface-2);box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.08)}
.pd-viewer__l{position:relative;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--pd-player)}
.pd-viewer__amb{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.pd-viewer__amb>*{position:absolute;inset:-10%;width:120%;height:120%;filter:blur(60px) brightness(.5) saturate(1.4);transform:scale(1.15)}
.pd-viewer__amb::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 70% 70% at 50% 48%,rgba(7,13,24,.25),rgba(7,13,24,.82))}
.pd-viewer__top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 0;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted)}
.pd-viewer__top .pd-num{color:var(--pd-ink-2)}
.pd-viewer__stage{position:relative;z-index:1;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px 80px}
.pd-viewer__media{position:relative;height:100%;max-height:100%;max-width:100%;aspect-ratio:9/16;border-radius:var(--pd-r-4);overflow:hidden;background:#000;box-shadow:0 24px 60px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.08)}
.pd-viewer__media>svg,.pd-viewer__media>img,.pd-viewer__media>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-viewer__media.is-wide{height:auto;width:100%;aspect-ratio:16/9}
.pd-viewer__media.is-square{aspect-ratio:1/1}
/* Любая пропорция (4:5, 2:3, 21:9…): style="--ar:4/5" + .is-ar — вписывается в сцену по ширине и высоте без искажения */
.pd-viewer__stage:has(.is-ar){container-type:size}
.pd-viewer__media.is-ar,.pd-stagebox.is-ar{height:auto;max-height:none;width:min(100cqw,calc(100cqh * var(--ar)));aspect-ratio:var(--ar)}
.pd-viewer__media.is-ar>svg{object-fit:fill}
.pd-viewer__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:#fff;background:rgba(19,31,51,.8);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.pd-viewer__nav:hover{background:var(--pd-hover)}
.pd-viewer__nav--prev{left:20px}
.pd-viewer__nav--next{right:20px}
/* ← на первой задаче, когда ниже есть ещё (studio.js leftHTML): назад некуда — кнопка притушена и не реагирует на наведение */
.pd-viewer__nav:disabled,.pd-mh .pd-iconbtn:disabled{opacity:.35}
.pd-viewer__nav:disabled:hover{background:rgba(19,31,51,.8)}
.pd-mh .pd-iconbtn:disabled:hover{background:var(--pd-surface);color:var(--pd-muted);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-viewer__kbd{position:relative;z-index:1;display:flex;align-items:center;gap:8px;padding:0 20px 16px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-viewer__kbd .pd-gap{width:10px}
.pd-kbd{min-width:18px;height:18px;padding:0 5px;border-radius:4px;display:inline-grid;place-items:center;font-family:var(--pd-font);font-size:var(--pd-fs-1);font-weight:700;color:var(--pd-ink-2);background:none;box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-mh{display:none}

/* Плеер (свои контролы, тёмные) */
.pd-player__ctrls{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:44px 16px 14px;background:linear-gradient(180deg,transparent,rgba(5,9,18,.88))}
.pd-player__scrub{position:relative;height:4px;border-radius:3px;background:rgba(255,255,255,.18);margin-bottom:12px}
.pd-player__scrub i{position:absolute;inset:0 auto 0 0;width:calc(var(--v,0) * 100%);border-radius:3px;background:linear-gradient(90deg,var(--pd-accent),var(--pd-sky))}
.pd-player__scrub b{position:absolute;left:calc(var(--v,0) * 100%);top:50%;width:13px;height:13px;border-radius:50%;background:#fff;transform:translate(-50%,-50%);box-shadow:0 2px 6px rgba(0,0,0,.4)}
.pd-player__bar{display:flex;align-items:center;gap:6px;color:#fff}
.pd-player__tm{font-family:var(--pd-mono);font-size:var(--pd-fs-2);color:var(--pd-ink-2);margin-left:4px;white-space:nowrap}
.pd-player__sp{flex:1}
.pd-player__b{width:32px;height:32px;border-radius:var(--pd-r-3);display:grid;place-items:center;flex:none;color:#fff}
.pd-player__b:hover{background:rgba(255,255,255,.1)}
/* Полный экран (отчёт 20.10, п. 13; studio.js toggleFull): разворачивается .pd-viewer__media вместе с кнопками плеера, ролик
   целиком — по бокам чёрные поля (было cover: у вертикального видно 28% кадра). :fullscreen и :-webkit-full-screen — отдельными
   правилами: непонятный браузеру селектор в списке выбросил бы правило целиком. Сам <video> на весь экран (iPhone, нативные
   кнопки лайтбокса) — тоже целиком. Без движения мыши 2,5 с кнопки прячутся (.is-idle) */
.pd-viewer__media:fullscreen{width:100%;height:100%;max-width:none;max-height:none;aspect-ratio:auto;border-radius:0;box-shadow:none;background:#000}
.pd-viewer__media:-webkit-full-screen{width:100%;height:100%;max-width:none;max-height:none;aspect-ratio:auto;border-radius:0;box-shadow:none;background:#000}
.pd-viewer__media:fullscreen>video{object-fit:contain}
.pd-viewer__media:-webkit-full-screen>video{object-fit:contain}
video:fullscreen{object-fit:contain!important}
video:-webkit-full-screen{object-fit:contain!important}
.pd-viewer__media>.pd-player__ctrls{transition:opacity var(--pd-t) var(--pd-ease)}
.pd-viewer__media.is-idle{cursor:none}
.pd-viewer__media.is-idle>.pd-player__ctrls{opacity:0}

/* Правая колонка */
.pd-viewer__side{display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--pd-line);background:var(--pd-surface)}
.pd-viewer__head{display:flex;align-items:center;gap:8px;padding:14px 14px 14px 20px;border-bottom:1px solid var(--pd-line);flex:none}
.pd-viewer__when{font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted);white-space:nowrap}
.pd-viewer__sp{flex:1}
.pd-viewer__body{flex:1;min-height:0;overflow:auto;padding:16px 20px 24px;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(#000 calc(100% - 28px),transparent);mask-image:linear-gradient(#000 calc(100% - 28px),transparent)}
.pd-viewer__foot{position:relative;flex:none;padding:14px 20px 16px;border-top:1px solid var(--pd-line);background:var(--pd-surface)}
.pd-viewer__acts{display:grid;grid-template-columns:1fr 1fr 40px;gap:8px;margin-top:8px}
.pd-viewer__acts .pd-btn{height:34px;padding:0 11px}
.pd-viewer__acts .pd-btn small{display:none}
.pd-viewer__note{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-muted)}
.pd-viewer__note .pd-i{margin-top:1px}
.pd-viewer__note--warn{color:var(--pd-warn)}

.pd-section+.pd-section{margin-top:18px}
/* метка блока; ссылка справа («Копировать») */
.pd-section__hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-muted)}
.pd-section__hd .pd-link{color:var(--pd-ink-2);font-size:var(--pd-fs-3)}
.pd-section__hd .pd-link .pd-i{color:var(--pd-muted)}

/* Карточка «модель · параметры · списано» */
.pd-modelcard{display:flex;align-items:center;gap:12px;min-width:0;padding:10px 12px 10px 10px;border-radius:10px;background:rgba(11,18,32,.45);box-shadow:inset 0 0 0 1px var(--pd-line)}
.pd-modelcard__txt{flex:1;min-width:0}
.pd-modelcard__name{font-size:var(--pd-fs-4);font-weight:800;line-height:1.3;color:#fff}
.pd-modelcard__p{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.pd-modelcard__cost{text-align:right;flex:none}
.pd-modelcard__cost b{display:block;font-family:var(--pd-mono);font-size:var(--pd-fs-4);font-weight:600;color:#fff}
.pd-modelcard__cost b s{color:var(--pd-muted);font-weight:500}
.pd-modelcard__cost span{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-modelcard__cost.is-good span{color:var(--pd-good)}
.pd-modelcard__cost.is-warn b,.pd-modelcard__cost.is-warn span{color:var(--pd-warn)}

.pd-prompt{padding:10px 12px;border-radius:10px;background:var(--pd-page);box-shadow:inset 0 0 0 1px var(--pd-border);font-size:var(--pd-fs-4);font-weight:600;line-height:var(--pd-lh-read);color:#fff}
.pd-refs{display:flex;gap:12px;flex-wrap:wrap}
.pd-refs__it{min-width:52px;max-width:140px}  /* подпись длиннее миниатюры («Кусок 1 · 0:06») — ячейка шире, миниатюра по центру */
.pd-refs__t{position:relative;width:52px;height:52px;margin:0 auto;border-radius:var(--pd-r-3);overflow:hidden;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-refs__t>svg,.pd-refs__t>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-refs__it>span{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:5px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}  /* только прямая подпись: вложенные .pd-num («Кусок 1 · 0:06») — в строку */
.pd-refs__it.is-bad .pd-refs__t{box-shadow:0 0 0 1.5px var(--pd-bad)}
.pd-refs__it.is-bad>span{color:var(--pd-bad-ink)}

/* Таблица параметров */
.pd-params{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border-radius:10px;overflow:hidden;background:var(--pd-line);box-shadow:0 0 0 1px var(--pd-line)}
.pd-params>div{background:var(--pd-surface-2);padding:8px 10px;min-width:0}
/* неполный последний ряд: последняя ячейка тянется до конца ряда — иначе пустые клетки показывают фон-линию светлой плашкой */
.pd-params>div:last-child:nth-child(3n+1){grid-column:1 / -1}
.pd-params>div:last-child:nth-child(3n+2){grid-column:span 2}
.pd-params dt{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-params dd{font-size:var(--pd-fs-3);font-weight:700;color:#fff;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-params dd.pd-num{font-weight:500}

/* Свёрнутые блоки «Ход задачи», «Техническое» */
.pd-details{margin-top:12px;border-radius:10px;box-shadow:inset 0 0 0 1px var(--pd-line)}
.pd-details>summary{list-style:none;display:flex;align-items:center;gap:8px;min-height:36px;padding:0 12px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);cursor:pointer}
.pd-details>summary::-webkit-details-marker{display:none}
.pd-details>summary>.pd-i{color:var(--pd-muted);transition:transform var(--pd-t-fast)}
.pd-details[open]>summary>.pd-i{transform:rotate(90deg)}
.pd-details>summary .pd-details__meta{margin-left:auto;font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-details__meta .pd-num{color:var(--pd-ink-2)}
.pd-details__body{padding:2px 12px 12px}
.pd-techrows{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:var(--pd-fs-2)}
.pd-techrows dt{color:var(--pd-muted);font-weight:600}
.pd-techrows dd{font-weight:600;color:var(--pd-ink-2);overflow-wrap:anywhere}
.pd-techrows dd.pd-mono,.pd-techrows dd.pd-num{font-weight:500;word-break:break-all}

/* Ход задачи — шаги */
.pd-steps{position:relative;display:grid;gap:12px;padding-left:2px}
.pd-step{position:relative;display:grid;grid-template-columns:48px 14px 1fr;gap:10px;align-items:start;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2)}
.pd-step__t{font-family:var(--pd-mono);font-size:var(--pd-fs-2);color:var(--pd-muted);padding-top:2px}
.pd-step__d{width:10px;height:10px;border-radius:3px;margin-top:5px;background:rgb(var(--pd-t,var(--pd-grey-rgb)));box-shadow:0 0 0 3px rgb(var(--pd-t,var(--pd-grey-rgb)) / .18)}
.pd-step:not(:last-child) .pd-step__d::after{content:"";position:absolute;left:62px;top:19px;bottom:-11px;width:1px;background:var(--pd-line)}
.pd-step small{display:block;font-size:var(--pd-fs-2);color:var(--pd-muted);margin-top:1px}
.pd-step.is-wait{color:var(--pd-muted)}
.pd-step.is-wait .pd-step__d{background:transparent;box-shadow:inset 0 0 0 1.5px var(--pd-border-2)}
.pd-step.is-now .pd-step__d{animation:pd-pulse 1.4s ease-in-out infinite}

/* «Дальше» — следующие шаги с ценами (только заполняют композер) */
.pd-next{display:grid;gap:8px}
.pd-next__it{position:relative;display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px 8px 8px;border-radius:10px;text-align:left;box-shadow:inset 0 0 0 1px var(--pd-line);background:rgba(11,18,32,.35)}
.pd-next__it:hover{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-next__ic{width:30px;height:30px;border-radius:var(--pd-r-3);display:grid;place-items:center;flex:none;color:var(--pd-blue);background:rgba(59,139,255,.12)}
.pd-next__txt{flex:1;min-width:0}
.pd-next__txt b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff}
.pd-next__txt small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:1px}
.pd-next__price{font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2);white-space:nowrap}
.pd-next__price.is-free{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:800;color:var(--pd-good)}

/* Блок причины (ошибка / неизвестно / инфо) */
.pd-errbox{--pd-t:var(--pd-bad-rgb);padding:12px 14px;border-radius:10px;background:rgb(var(--pd-t) / .07);box-shadow:inset 0 0 0 1px rgb(var(--pd-t) / .3)}
.pd-errbox__t{display:flex;align-items:center;gap:8px;font-size:var(--pd-fs-4);font-weight:800;color:#fff}
.pd-errbox__t .pd-i{color:rgb(var(--pd-t))}
.pd-errbox__d{font-size:var(--pd-fs-3);font-weight:600;line-height:1.55;color:var(--pd-ink-2);margin-top:6px}
.pd-errbox__ok{display:flex;align-items:center;gap:7px;margin-top:10px;font-size:var(--pd-fs-2);font-weight:800;color:var(--pd-good)}
.pd-errbox__ok.is-warn{color:var(--pd-warn)}
.pd-errbox--warn{--pd-t:var(--pd-warn-rgb)}
.pd-errbox--info{--pd-t:var(--pd-blue-rgb)}

/* Медиа без файла на сцене окна */
.pd-stagebox{position:relative;height:100%;max-height:100%;aspect-ratio:9/16;border-radius:var(--pd-r-4);overflow:hidden;display:grid;place-items:center;box-shadow:0 24px 60px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.08)}
.pd-stagebox .pd-pstate .pd-pstate__timer{font-size:40px}
.pd-stagebox .pd-pstate .pd-ring>.pd-i{width:32px;height:32px}
.pd-stagebox .pd-pstate__blur{inset:-20%;filter:blur(46px) brightness(.38) saturate(.9)}

/* Общая модалка (диалоги-мастера, подтверждения удаления) */
.pd-modal{position:fixed;inset:0;z-index:var(--pd-z-modal);display:none;grid-template-columns:minmax(0,1fr);place-items:center;padding:24px;background:rgba(3,7,15,.72)}  /* одна колонка minmax(0,1fr): длинная строка без переносов не раздувает окно шире экрана */
.pd-modal.is-open{display:grid;animation:pd-fade var(--pd-t) var(--pd-ease)}
.pd-modal__win{width:min(520px,100%);max-height:100%;display:flex;flex-direction:column;border-radius:var(--pd-r-5);background:var(--pd-raised);box-shadow:var(--pd-sh-3)}
/* высота окна — не больше экрана без полей .pd-modal (24 + 24): max-height:100% в сетке с авто-строкой не действует — строка
   растёт по окну, и высокое окно уходило низом с кнопками за край экрана, а .pd-modal__body не прокручивался («Голос по
   описанию» с плашкой на 1440×900, ревью 22.10). Теперь прокручивается тело окна, шапка и низ с кнопками — на экране.
   Телефон — своё правило ниже (лист снизу) */
@media (min-width:861px){.pd-modal__win{max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px)}}
.pd-modal__hd{display:flex;align-items:center;gap:12px;padding:14px 14px 10px 18px}
.pd-modal__hd b{flex:1;font-size:var(--pd-fs-5);font-weight:800}
.pd-modal__body{flex:1;min-height:0;overflow:auto;padding:2px 18px 14px;font-size:var(--pd-fs-3);font-weight:600;line-height:1.55;color:var(--pd-ink-2)}
.pd-modal__foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 14px 14px;border-top:1px solid var(--pd-line)}

/* ───────────────────────── 17. Тосты, полосы ───────────────────────── */
/* Стек тостов — справа снизу над доком (как на телефоне): шапку раздела с балансами и главной
   кнопкой не закрывает. Новый тост — ближе к доку. Над окном задачи — сверху по центру,
   при открытой шторке — левее неё. */
/* Нижний тост стоит в полосе над доком (--pd-dock-fade) и ленту не закрывает; видно не больше 2, остальные — «Ещё N» */
.pd-toasts{position:fixed;bottom:max(16px,calc(var(--pd-dock-h) - var(--pd-dock-fade) + 8px));right:28px;z-index:var(--pd-z-toast);display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px;pointer-events:none;width:min(380px,calc(100vw - 32px))}
.pd-toast.is-stacked{display:none}
.pd-toasts.is-all .pd-toast.is-stacked{display:flex}
.pd-toasts__more{position:absolute;right:calc(100% + 8px);bottom:0;pointer-events:auto;height:28px;padding:0 10px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-ink-2);white-space:nowrap;background:var(--pd-raised);box-shadow:0 10px 24px rgba(0,0,0,.4),0 0 0 1px rgba(255,255,255,.08)}  /* слева от тоста, в той же полосе над доком — ленту не закрывает */
.pd-toasts__more:hover{color:#fff;background:var(--pd-hover)}
.pd-toasts__more::before{content:"";position:absolute;inset:-7px -4px}  /* зона нажатия 44 px */
html.pd-has-viewer .pd-toasts,html.pd-has-modal .pd-toasts{bottom:auto;top:20px;right:auto;left:50%;transform:translateX(-50%);flex-direction:column;align-items:stretch}
html.pd-has-drawer .pd-toasts{right:calc(min(560px,100vw) + 20px)}
.pd-toast{--pd-t:var(--pd-good-rgb);pointer-events:auto;display:flex;align-items:center;gap:10px;width:100%;padding:10px 8px 10px 14px;border-radius:10px;background:var(--pd-raised);box-shadow:0 12px 30px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08),inset 3px 0 0 rgb(var(--pd-t));font-size:var(--pd-fs-3);font-weight:700;color:#fff;animation:pd-toast-in var(--pd-t-slow) var(--pd-ease)}
.pd-toast .pd-dot{width:7px;height:7px;border-radius:2px;background:rgb(var(--pd-t))}
.pd-toast__txt{flex:1;min-width:0;line-height:1.4;overflow-wrap:anywhere}
.pd-toast__txt small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:1px}
.pd-toast__x{position:relative;width:24px;height:24px;border-radius:var(--pd-r-2);display:grid;place-items:center;color:var(--pd-muted);flex:none}
.pd-toast__x:hover{background:var(--pd-hover);color:#fff}
.pd-toast__x::before{content:"";position:absolute;inset:-10px}
.pd-toast--warn{--pd-t:var(--pd-warn-rgb)}
.pd-toast--err{--pd-t:var(--pd-bad-rgb)}
.pd-toast--info{--pd-t:var(--pd-blue-rgb)}
.pd-toast.is-out{opacity:0;transform:translateY(6px);transition:opacity var(--pd-t),transform var(--pd-t)}

.pd-banner{--pd-t:var(--pd-warn-rgb);display:flex;align-items:center;gap:10px;min-height:36px;padding:6px 8px 6px 14px;margin-bottom:16px;border-radius:10px;background:var(--pd-surface-2);box-shadow:inset 0 0 0 1px var(--pd-border),inset 3px 0 0 rgb(var(--pd-t));font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2)}
.pd-banner>.pd-i{width:16px;height:16px;color:rgb(var(--pd-t))}
.pd-banner__txt{flex:1;min-width:0;line-height:1.4}
.pd-banner__txt b{color:#fff;font-weight:800}
.pd-banner--bad{--pd-t:var(--pd-bad-rgb)}
.pd-banner--info{--pd-t:var(--pd-blue-rgb)}
.pd-banner--good{--pd-t:var(--pd-good-rgb)}

/* ───────────────────────── 18. Пустые состояния, скелетоны ───────────────────────── */
.pd-empty{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:56px 20px 40px;isolation:isolate}
.pd-empty__ghosts{position:absolute;inset:0;z-index:-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--pd-tile-min),1fr));gap:18px 14px;align-content:start;overflow:hidden;-webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 0,transparent 30%,rgba(0,0,0,.5) 55%,transparent 95%);mask-image:radial-gradient(ellipse 80% 70% at 50% 0,transparent 30%,rgba(0,0,0,.5) 55%,transparent 95%)}
.pd-empty__ghosts i{aspect-ratio:9/16;border-radius:var(--pd-r-4);border:1px dashed var(--pd-border)}
.pd-empty__mark{margin-bottom:18px;transform:scale(1.35)}
.pd-empty__title{font-size:var(--pd-fs-6);font-weight:800;letter-spacing:-.02em;color:#fff}
.pd-empty__text{max-width:500px;margin-top:8px;font-size:var(--pd-fs-4);font-weight:500;line-height:1.6;color:var(--pd-muted)}
.pd-empty__ex{display:grid;gap:8px;width:min(620px,100%);margin-top:20px}
.pd-example{display:flex;align-items:flex-start;gap:12px;width:100%;padding:12px 14px;border-radius:10px;text-align:left;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-example:hover{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-example__txt{flex:1;font-size:var(--pd-fs-3);font-weight:600;line-height:1.55;color:var(--pd-ink-2)}
.pd-example__meta{flex:none;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);white-space:nowrap}
/* Ошибка вместо ленты/раздела («Чат недоступен», «Лента не загрузилась»): красное кольцо, причина, кнопки */
.pd-empty--error{--pd-t:var(--pd-bad-rgb)}
.pd-empty--error .pd-ring{width:44px;height:44px;border-radius:var(--pd-r-4);margin-bottom:14px}
.pd-empty--error .pd-empty__title{font-size:var(--pd-fs-5)}
.pd-empty--error .pd-empty__text{font-size:var(--pd-fs-3);color:var(--pd-ink-2)}
.pd-empty__acts{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px}

.pd-skel{position:relative;overflow:hidden;border-radius:var(--pd-r-3);background:linear-gradient(100deg,var(--pd-surface) 20%,#1d2c47 40%,var(--pd-surface) 60%);background-size:300% 100%;animation:pd-skel 1.6s linear infinite}
.pd-skel--tile{aspect-ratio:9/16;border-radius:var(--pd-r-4)}
.pd-skel--line{height:12px;border-radius:6px}
.pd-skel--line+.pd-skel--line{margin-top:8px}
.pd-skel--w60{width:60%}
.pd-skel--w40{width:40%}

/* ───────────────────────── 19. Таблица и шторка (админка) ───────────────────────── */
.pd-tablewrap{border-radius:var(--pd-r-4);background:var(--pd-surface-2);box-shadow:inset 0 0 0 1px var(--pd-border);overflow:auto}
.pd-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--pd-fs-3)}
.pd-table th{position:sticky;top:0;z-index:1;height:34px;padding:0 12px;text-align:left;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);white-space:nowrap;background:var(--pd-surface-2);border-bottom:1px solid var(--pd-border)}
.pd-table th.is-sort{color:var(--pd-ink-2)}
.pd-table th button{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.pd-table td{height:44px;padding:6px 12px;border-bottom:1px solid var(--pd-line);font-weight:600;color:var(--pd-ink-2);vertical-align:middle}
.pd-table tr:last-child td{border-bottom:0}
.pd-table tbody tr{cursor:pointer}
.pd-table tbody tr:hover td{background:rgba(24,38,66,.55)}
/* таблица в скруглённой панели: подсветка последней строки — по скруглению панели (было: квадратные углы наружу; приёмка 13.10) */
/* таблица — последнее в панели (после неё только свет .pd-rim) */
.pd-panel>.pd-table:not(:has(~ :not(.pd-rim)))>tbody:last-child>tr:last-child>td:first-child{border-bottom-left-radius:var(--pd-r-4)}
.pd-panel>.pd-table:not(:has(~ :not(.pd-rim)))>tbody:last-child>tr:last-child>td:last-child{border-bottom-right-radius:var(--pd-r-4)}
.pd-table tr.is-sel td{background:rgba(59,139,255,.08)}
.pd-table tr.is-off td{color:var(--pd-muted)}
.pd-table tr.is-off .pd-cell-user{opacity:.6}
.pd-table .is-num{text-align:right;font-family:var(--pd-mono);font-weight:500;white-space:nowrap;font-variant-numeric:tabular-nums}
.pd-table th.is-num{font-family:var(--pd-font);font-weight:700}
.pd-table .is-num.is-strong{color:#fff}
.pd-cell-user{display:flex;align-items:center;gap:12px;min-width:0}
.pd-cell-user b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff;white-space:nowrap}
.pd-cell-user small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}

.pd-drawer{position:fixed;top:0;right:0;bottom:0;z-index:var(--pd-z-drawer);width:min(560px,100vw);display:none;flex-direction:column;background:var(--pd-surface);box-shadow:-24px 0 60px rgba(0,0,0,.5),-1px 0 0 var(--pd-border)}
.pd-drawer.is-open{display:flex;animation:pd-drawer-in var(--pd-t-slow) var(--pd-ease)}
.pd-drawer__hd{display:flex;align-items:center;gap:12px;padding:14px 14px 12px 20px;border-bottom:1px solid var(--pd-line);flex:none}
.pd-drawer__hd b{flex:1;font-size:var(--pd-fs-5);font-weight:800}
.pd-drawer__body{flex:1;min-height:0;overflow:auto;padding:16px 20px;overscroll-behavior:contain}
.pd-drawer__foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 20px 14px;border-top:1px solid var(--pd-line);flex:none}

/* ───────────────────────── 20. Поля ввода ───────────────────────── */
.pd-field{display:grid;gap:7px}
.pd-field>.pd-seg,.pd-field>.pd-switch,.pd-field>.pd-btn{justify-self:start}  /* сегмент в поле — по содержимому, не на всю ширину */
.pd-field+.pd-field{margin-top:16px}
.pd-label{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted)}
.pd-hint{font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-muted)}
.pd-error{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-bad-ink)}
.pd-input,.pd-textarea,.pd-dropdown{width:100%;min-height:var(--pd-h-m);padding:0 10px;border-radius:var(--pd-r-3);border:0;background:var(--pd-page);box-shadow:inset 0 0 0 1px var(--pd-border);font-size:var(--pd-fs-3);font-weight:600;color:#fff}
.pd-input:hover,.pd-textarea:hover,.pd-dropdown:hover{box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-input:focus,.pd-textarea:focus,.pd-dropdown.is-open{outline:none;box-shadow:inset 0 0 0 1px var(--pd-accent),var(--pd-ring)}
.pd-input.is-invalid{box-shadow:inset 0 0 0 1px rgba(255,99,105,.6)}
.pd-input--mono{font-family:var(--pd-mono);font-weight:500}
.pd-textarea{padding:8px 10px;line-height:1.55;resize:vertical;min-height:88px}
.pd-inputgroup{position:relative;display:flex;align-items:center}
.pd-inputgroup>.pd-input{padding-left:28px}
.pd-inputgroup__pre{position:absolute;left:10px;font-family:var(--pd-mono);color:var(--pd-muted);pointer-events:none}
.pd-inputgroup__suf{position:absolute;right:10px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);pointer-events:none}
/* Свой выпадающий список (никаких системных <select>) */
.pd-dropdown{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;cursor:pointer}
.pd-dropdown>.pd-i{color:var(--pd-muted)}
.pd-dropdown__v{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* переключатель — квадратный, как в макете (.sw) */
.pd-switch{position:relative;width:28px;height:16px;flex:none;border-radius:5px;background:var(--pd-border);box-shadow:inset 0 0 0 1px var(--pd-border-2);transition:background var(--pd-t-fast)}
.pd-switch::after{content:"";position:absolute;left:2px;top:2px;width:12px;height:12px;border-radius:3px;background:var(--pd-muted);transition:transform var(--pd-t-fast) var(--pd-ease)}
.pd-switch::before{content:"";position:absolute;inset:-14px -8px}
.pd-switch[aria-checked=true]{background:var(--pd-accent);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.pd-switch[aria-checked=true]::after{transform:translateX(12px);background:#fff}
.pd-switchrow{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:36px}
.pd-switchrow__txt{font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2)}
.pd-switchrow__txt small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:1px}

.pd-check-box{position:relative;width:16px;height:16px;border-radius:4px;flex:none;box-shadow:inset 0 0 0 1.5px var(--pd-border-2);display:grid;place-items:center;color:transparent}
.pd-check-box[aria-checked=true]{background:var(--pd-accent);box-shadow:none;color:#fff}

/* ───────────────────────── 21. Аудио-строка с волной ───────────────────────── */
.pd-audio{display:flex;align-items:center;gap:12px;min-width:0;min-height:56px;padding:8px 12px 8px 10px;border-radius:var(--pd-r-4);background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-audio:hover{box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-audio__play{position:relative;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;color:#fff;background:var(--pd-fill-accent);box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
.pd-audio__play.is-idle{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-audio__main{flex:1;min-width:0;overflow:hidden}
.pd-audio__title{font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-audio__sub{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-wave{position:relative;display:flex;align-items:center;gap:2px;height:30px;margin-top:6px;overflow:hidden;cursor:pointer}
.pd-wave i{flex:1 1 0;min-width:0;max-width:4px;height:calc(var(--h,.5) * 100%);border-radius:2px;background:#33415c}
.pd-wave i.is-played{background:linear-gradient(180deg,var(--pd-sky),var(--pd-blue))}
/* цветной слой прогресса: та же раскладка столбиков, открывается слева по --p (0…1) — плавно, по кадрам (15.10.2026) */
.pd-wave__fill{position:absolute;inset:0;display:inherit;align-items:inherit;justify-content:inherit;gap:inherit;pointer-events:none;clip-path:inset(0 calc((1 - var(--p,0)) * 100%) 0 0)}
.pd-wave__fill i{background:linear-gradient(180deg,var(--pd-sky),var(--pd-blue))}
.pd-wave--skel i{background:var(--pd-line);animation:pd-pulse 1.4s ease-in-out infinite}
.pd-audio__tm{font-family:var(--pd-mono);font-size:var(--pd-fs-2);color:var(--pd-muted);white-space:nowrap;flex:none}
.pd-audio__acts{display:flex;gap:4px;flex:none}

/* ═══════════════════════════════════════════════════════════════════════════
   21a. Компоненты, поднятые из экранов (CRITIQUE §16) и из team.css.
   Соответствие «локальный класс → класс kit» — KIT.md, раздел 7.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Слово внутри моноширинного контейнера («авто», «бесплатно», «генерируется») */
.pd-word,b.pd-word,span.pd-word,small.pd-word,em.pd-word{font-family:var(--pd-font);font-weight:700;letter-spacing:0}
/* Единица или короткое слово рядом с числом в моно-контейнере: «10 с», «1 840 кр», «из», «МБ» — Manrope,
   вес и цвет как у числа. Разметку даёт PD.w('1 840 кр'); для обычного текста — PD.n('$5.90 из $30') */
.pd-u{font-family:var(--pd-font);font-weight:600;letter-spacing:0}

/* Подсказка прокрутки: у листа, поповера, меню, модалки и шторки внизу есть ещё содержимое.
   Класс .pd-fade-b ставит kit.js, пока до низа больше 4 px. */
.pd-sheet__body.pd-fade-b,.pd-modal__body.pd-fade-b,.pd-drawer__body.pd-fade-b{-webkit-mask-image:linear-gradient(#000 calc(100% - 40px),transparent);mask-image:linear-gradient(#000 calc(100% - 40px),transparent)}
.pd-pop.pd-fade-b::after,.pd-menu.pd-fade-b::after{content:"";position:sticky;display:block;bottom:-14px;height:40px;margin:-40px -10px -14px;background:linear-gradient(180deg,rgba(21,35,60,0),var(--pd-raised) 85%);pointer-events:none}

/* ── Знаки моделей: картинки, чат, аватары, озвучка, липсинк ── */
.pd-glyph--gpt{background:linear-gradient(150deg,#2a9a80,#135647)}
.pd-glyph--banana{background:linear-gradient(150deg,#c7922c,#7a530e)}
.pd-glyph--qwen{background:linear-gradient(150deg,#e2683f,#93361a)}
.pd-glyph--claude{background:linear-gradient(150deg,#1f7bff,#0b4fc4)}
.pd-glyph--gemini{background:linear-gradient(150deg,#3aa9d6,#1b5f8f)}
.pd-glyph--deepseek{background:linear-gradient(150deg,#24478f,#13254d)}
.pd-glyph--deepseek .pd-i{color:var(--pd-sky)}
.pd-glyph--heygen{background:linear-gradient(150deg,#35b6e8,#1b5f8f)}
.pd-glyph--eleven{background:linear-gradient(150deg,#2c3c5c,#141f35);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 0 0 1px rgba(255,255,255,.1)}
.pd-glyph--sync,.pd-glyph--clean{background:linear-gradient(150deg,#1f7bff,#0b4fc4)}
.pd-glyph--fast{background:linear-gradient(150deg,#3aa9d6,#1b5f8f)}
.pd-glyph--v2{background:linear-gradient(150deg,#3b4f78,#1e2b47)}
.pd-glyph--dialog{background:linear-gradient(135deg,#1f7bff 0%,#0b4fc4 52%,#1f8a55 100%)}
.pd-glyph--s{width:22px;height:22px;border-radius:7px}
.pd-glyph--s .pd-i{width:13px;height:13px}

/* ── Плашки на постере: тоны ── */
.pd-plate--warn{color:var(--pd-warn);background:rgba(40,27,4,.74);box-shadow:inset 0 0 0 1px rgba(255,178,36,.45)}
.pd-plate--bad{color:var(--pd-bad-ink);background:rgba(42,10,14,.74);box-shadow:inset 0 0 0 1px rgba(255,99,105,.45)}
.pd-plate--good{color:var(--pd-good);background:rgba(6,34,20,.74);box-shadow:inset 0 0 0 1px rgba(53,208,127,.4)}
.pd-plate--warn .pd-i{color:var(--pd-warn)}
.pd-plate--bad .pd-i{color:var(--pd-bad)}
.pd-plate--good .pd-i{color:var(--pd-good)}
.pd-plate--word{font-family:var(--pd-font);font-weight:700}

/* ── «Бесплатно» ── */
/* Плашка в шапке/доке: «Бесплатно, не входит в лимит» */
.pd-free{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 10px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-good);background:rgba(53,208,127,.08);box-shadow:inset 0 0 0 1px rgba(53,208,127,.22);white-space:nowrap;flex:none}
.pd-free .pd-i{color:var(--pd-good)}
/* Капсула на главной кнопке и цена в карточке модели */
.pd-go__price--free{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:800;letter-spacing:0}
.pd-modelcard__cost--free b{font-family:var(--pd-font);font-size:var(--pd-fs-3);font-weight:800;color:var(--pd-good)}
.pd-pop__meta--free,.pd-opt__price--free{font-family:var(--pd-font);font-weight:800;color:var(--pd-good)}

/* ── Поповер модели / режима / версии + «Что выбрать» ── */
.pd-modelpop{--pd-pop-w:480px;padding:6px}
.pd-modelpop .pd-opt__meta .pd-tag{height:18px}
.pd-choose{margin:4px 4px 2px;padding:10px 8px 4px;border-top:1px solid var(--pd-line)}
.pd-choose__t{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);margin-bottom:6px}
.pd-choose__r{display:flex;align-items:center;gap:10px;width:100%;min-height:32px;padding:0 8px;margin:0 -8px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2);text-align:left}
.pd-choose__r:hover{background:var(--pd-hover);color:#fff}
.pd-choose__r b{margin-left:auto;font-weight:800;color:#fff;white-space:nowrap}
.pd-choose__r .pd-i{color:var(--pd-muted)}

/* Богатая строка поповера: две строки слева, цена справа, время под ценой */
.pd-pop__row--rich{align-items:flex-start;padding:8px 8px 8px 10px}
.pd-pop__main{flex:1;min-width:0}
.pd-pop__main b{display:block;font-weight:800;color:#fff}
.pd-pop__price{margin-left:auto;flex:none;text-align:right;white-space:nowrap;font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;color:#fff}
.pd-pop__price small{display:block;font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:2px}
.pd-pop__price--free{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:800;color:var(--pd-good)}
.pd-pop__row--rich .pd-pop__ck{margin-top:2px}

/* ── Лимиты сотрудника: метр-кнопка в шапке и поповер «Лимиты на сегодня» ── */
.pd-meterbtn{position:relative;text-align:left;border-radius:var(--pd-r-3);padding:3px 6px 5px;margin:-3px -6px -5px}  /* метр (строка + полоса) — по центру подсветки при наведении */
.pd-meterbtn:hover{background:rgba(24,38,66,.5)}
.pd-limits{--pd-pop-w:340px}
.pd-limits .pd-meter{min-width:0;padding:10px 10px 12px}
.pd-limits .pd-meter+.pd-meter{border-top:1px solid var(--pd-line)}
.pd-limits .pd-meter small{display:block;margin-top:7px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.45;white-space:normal}

/* ── Балансы провайдеров (владелец): раскрытый список ── */
.pd-balpop{--pd-pop-w:340px}
.pd-balpop .pd-pop__row{cursor:default}
.pd-balpop .pd-pop__row:hover{background:transparent;color:var(--pd-ink-2)}
.pd-balpop .pd-pop__meta b{color:#fff;font-weight:500}
.pd-balpop .pd-pop__meta.is-warn b{color:var(--pd-warn)}
.pd-balpop .pd-pop__meta.is-bad b{color:var(--pd-bad-ink)}
.pd-balpop .pd-pop__meta.is-word b{font-family:var(--pd-font);font-weight:700;color:var(--pd-good)}

/* ── Легенда точками и образцы цвета ── */
.pd-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-legend__it{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.pd-legend__it .pd-num{color:var(--pd-ink-2)}
.pd-legend__it.is-off{color:var(--pd-muted);opacity:.85}
.pd-legend--lg{gap:8px 20px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2)}
.pd-legend--lg .pd-num{color:#fff}
button.pd-legend__it{position:relative;height:30px;padding:0 10px;margin:0 -10px;border-radius:9px}
button.pd-legend__it:hover{background:var(--pd-hover)}
.pd-sw{width:9px;height:9px;border-radius:2.5px;flex:none;background:var(--c,var(--pd-blue))}
.pd-sw--ghost{width:14px;height:0;border-radius:0;background:none;border-top:1.5px dashed rgba(139,149,167,.8)}
.pd-legend__it.is-off .pd-sw--ghost{border-top-color:var(--pd-off)}

/* ── Шаги мастера: ①—②—③ в строку ── */
.pd-stepper{display:flex;align-items:center;gap:8px;min-width:0}
.pd-modal .pd-stepper{padding:0 22px 16px}
.pd-stepper__s{display:inline-flex;align-items:center;gap:8px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);white-space:nowrap}
.pd-stepper__n{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:none;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;color:var(--pd-muted);box-shadow:inset 0 0 0 1.5px var(--pd-border-2)}
.pd-stepper__s.is-done{color:var(--pd-ink-2)}
.pd-stepper__s.is-done .pd-stepper__n{background:rgba(53,208,127,.14);box-shadow:none;color:var(--pd-good)}
.pd-stepper__s.is-now{color:#fff}
.pd-stepper__s.is-now .pd-stepper__n{background:var(--pd-accent);box-shadow:0 0 0 3px rgba(8,102,255,.22);color:#fff}
.pd-stepper__ln{flex:1;min-width:12px;height:1px;background:var(--pd-border)}

/* ── Шаги процесса строками: вход, подключение (номер, заголовок, подпись) ── */
.pd-steplist{display:grid;gap:4px}
.pd-steplist__it{display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:start;padding:8px 10px 8px 8px;border-radius:10px}
.pd-steplist__n{width:28px;height:28px;border-radius:var(--pd-r-3);display:grid;place-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted);box-shadow:inset 0 0 0 1.5px var(--pd-border-2)}
.pd-steplist__it b{display:block;font-size:var(--pd-fs-4);font-weight:700;color:#fff;line-height:1.35;padding-top:3px}
.pd-steplist__it small{display:block;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.45}
.pd-steplist__it.is-done .pd-steplist__n{color:var(--pd-page);background:var(--pd-good);box-shadow:none}
.pd-steplist__it.is-now{background:rgba(94,208,250,.07);box-shadow:inset 0 0 0 1px rgba(94,208,250,.24)}
.pd-steplist__it.is-now .pd-steplist__n{color:var(--pd-page);background:var(--pd-sky);box-shadow:0 0 0 4px rgba(94,208,250,.16);animation:pd-pulse 1.6s ease-in-out infinite}
.pd-steplist__it.is-done b,.pd-steplist__it.is-wait b{color:var(--pd-ink-2)}
/* Инструкция нумерованным списком: «1 Откройте… 2 Скопируйте…» */
.pd-howto{display:grid;gap:10px;counter-reset:pdh}
.pd-howto>li{list-style:none;display:grid;grid-template-columns:20px 1fr;gap:10px;font-size:var(--pd-fs-3);font-weight:600;line-height:1.5;color:var(--pd-ink-2)}
.pd-howto>li::before{counter-increment:pdh;content:counter(pdh);width:20px;height:20px;margin-top:1px;border-radius:5px;display:grid;place-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;color:var(--pd-sky);background:rgba(94,208,250,.10);box-shadow:inset 0 0 0 1px rgba(94,208,250,.22)}
.pd-howto b{color:#fff;font-weight:800}
/* «Как это работает» тремя карточками в пустом состоянии */
.pd-howcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;width:min(720px,100%)}
.pd-howcard{padding:14px;border-radius:var(--pd-r-4);text-align:left;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-howcard .pd-ring{width:32px;height:32px;border-radius:var(--pd-r-3);margin-bottom:10px}
.pd-howcard b{display:block;font-size:var(--pd-fs-3);font-weight:800}
.pd-howcard small{display:block;margin-top:4px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-muted)}

/* ── Поиск: иконка, подсказка «/», очистка, сколько найдено ── */
.pd-search{position:relative;display:flex;align-items:center;width:260px;min-width:0;flex:none}
.pd-search--fill{width:auto;flex:1 1 auto}
.pd-search>.pd-i{position:absolute;left:10px;width:15px;height:15px;color:var(--pd-muted);pointer-events:none}
.pd-search .pd-input{padding-left:32px;padding-right:34px;background:var(--pd-page)}
.pd-search .pd-kbd{position:absolute;right:7px;pointer-events:none}
/* пустое поле без подсказки клавиши: место справа не держим — плейсхолдер узкого поиска не обрезается («Найти по имен», приёмка 13.10) */
.pd-search:not(.has-value):not(:has(.pd-kbd)) .pd-input{padding-right:12px}
.pd-search.has-value .pd-kbd{display:none}
.pd-search__n{position:absolute;right:34px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;pointer-events:none;display:none}
.pd-search__n .pd-num{color:var(--pd-ink-2)}
.pd-search.has-value .pd-search__n{display:block}
.pd-search.has-value:has(.pd-search__n) .pd-input{padding-right:104px}
.pd-search__x{position:absolute;right:4px;width:24px;height:24px;border-radius:var(--pd-r-2);display:none;place-items:center;color:var(--pd-muted)}
.pd-search__x::before{content:"";position:absolute;inset:-6px}
.pd-search.has-value .pd-search__x{display:grid}
.pd-search__x:hover{background:var(--pd-hover);color:#fff}

/* ── Фильтр-чип со значением и сбросом («Сотрудник: Маша ✕») ── */
.pd-fchip{position:relative;height:var(--pd-h-s);padding:0 10px;border-radius:var(--pd-r-2);display:inline-flex;align-items:center;gap:6px;flex:none;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);white-space:nowrap;background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-fchip:hover{background:var(--pd-hover);color:#fff}
.pd-fchip>.pd-i{width:14px;height:14px;color:var(--pd-muted)}
.pd-fchip__v{color:#fff;font-weight:800}
.pd-fchip.is-open{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-accent),var(--pd-ring)}
.pd-fchip.is-on{background:rgba(59,139,255,.12);box-shadow:inset 0 0 0 1px rgba(59,139,255,.36);color:var(--pd-ink-2);padding-right:4px}
.pd-fchip.is-on>.pd-i{color:var(--pd-blue)}
.pd-fchip__x{position:relative;width:18px;height:18px;margin-left:2px;border-radius:5px;display:grid;place-items:center;flex:none;color:var(--pd-ink-2)}   /* не сжимается — ужимается имя (ревью 21.10: на телефоне крестик «Сотрудника» был 8–11 px вместо 18) */
.pd-fchip__x:hover{background:rgba(59,139,255,.2);color:#fff}
.pd-fchip__x::before{content:"";position:absolute;inset:-7px -4px}
/* «Сотрудник» в «Команде» лент генераторов (studio.js, 20.10): чип в ленте фильтров и список с поиском */
.pd-tb__who .pd-fchip__v{max-width:180px;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1320px) and (min-width:861px){.pd-tb__who .pd-fchip__v{max-width:120px}}   /* ноутбук: место ленте фильтров статусов */
.pd-tb__who>.pd-ava{margin-left:-3px}
.pd-whopop__q{padding:0 2px 8px}
.pd-whopop__list{max-height:320px;overflow:auto;overscroll-behavior:contain}
.pd-whopop__nm{display:flex;align-items:center;gap:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.pd-whopop__me{flex:none;font-size:var(--pd-fs-1);font-weight:600;color:var(--pd-muted)}
.pd-whopop__none{padding:10px 8px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-whopop__wait{padding:8px}

/* ── Строка файла: миниатюра или значок, имя с многоточием посередине, размер, ошибка, ✕ ── */
.pd-files{display:flex;flex-wrap:wrap;align-content:center;gap:8px;min-width:0}
.pd-files--col{display:grid;gap:8px}
.pd-file{position:relative;display:flex;align-items:center;gap:10px;min-width:0;max-width:100%;height:48px;padding:0 4px 0 6px;border-radius:10px;text-align:left;background:var(--pd-on-glass);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-files--col .pd-file{height:52px;padding:0 6px 0 8px}
.pd-file__t{width:36px;height:36px;border-radius:var(--pd-r-2);overflow:hidden;flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-file__t>svg,.pd-file__t>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-file__t--wide{width:76px;height:28px;border-radius:7px}
.pd-file__ic{width:36px;height:36px;border-radius:var(--pd-r-2);display:grid;place-items:center;flex:none;color:var(--pd-sky);background:rgba(94,208,250,.12)}
.pd-file__ic.is-play{color:#fff;background:linear-gradient(180deg,#1a74ff,var(--pd-accent));box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
.pd-file__tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.pd-file__n{display:flex;min-width:0;max-width:220px;font-size:var(--pd-fs-3);font-weight:700;color:#fff;white-space:nowrap}
.pd-files--col .pd-file__n{max-width:none}
.pd-file__n>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
.pd-file__n>span+span{flex:none}
.pd-file__m{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-file__m .pd-num{color:var(--pd-ink-2);font-size:var(--pd-fs-2)}
.pd-file__x{position:relative;width:24px;height:24px;border-radius:6px;display:grid;place-items:center;flex:none;color:var(--pd-muted)}
.pd-file__x:hover{background:var(--pd-hover);color:#fff}
.pd-file__x::before{content:"";position:absolute;inset:-8px -4px}
.pd-file .pd-progress--inline{margin-top:5px;width:100%}
.pd-file.is-bad{background:rgba(255,99,105,.06);box-shadow:inset 0 0 0 1px rgba(255,99,105,.5)}
.pd-file.is-bad .pd-file__m{color:var(--pd-bad-ink)}
.pd-file.is-bad .pd-file__ic{color:var(--pd-bad-ink);background:rgba(255,99,105,.12)}

/* ── Слот файла в доке/окне: видео или звук с заменой (липсинк, аватары, озвучка) ── */
.pd-fileslots{flex:1;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pd-fileslots--3{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.86fr)}
.pd-fileslots--1{grid-template-columns:minmax(0,1fr)}
.pd-fileslot{position:relative;display:flex;align-items:center;gap:10px;min-width:0;height:66px;padding:6px 8px 6px 6px;border-radius:10px;text-align:left;background:var(--pd-on-glass);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-fileslot__media{position:relative;width:40px;height:54px;border-radius:7px;overflow:hidden;flex:none;display:grid;place-items:center;color:var(--pd-ink-2);background:var(--pd-surface-2);box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-fileslot__media>svg:not(.pd-i),.pd-fileslot__media>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-fileslot__media--audio{width:40px;height:40px;color:#fff;background:linear-gradient(160deg,rgba(59,139,255,.3),rgba(94,208,250,.1))}
.pd-fileslot__media--audio>.pd-i{position:relative;z-index:1}
.pd-fileslot__media--tall{width:40px}
.pd-fileslot__play{position:relative;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;margin-left:4px;color:#fff;background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-fileslot__play:hover{background:var(--pd-accent);box-shadow:none}
.pd-fileslot__play::before{content:"";position:absolute;inset:-4px}
.pd-fileslot__txt{flex:0 1 auto;min-width:0;display:block}
.pd-fileslot:not(:has(.pd-wave)) .pd-fileslot__txt{flex:1 1 auto}
.pd-fileslot__name{display:block;font-size:var(--pd-fs-3);font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
.pd-fileslot__meta{display:flex;align-items:center;gap:6px;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;line-height:1.35}
.pd-fileslot__meta .pd-num{color:var(--pd-muted);font-size:var(--pd-fs-2)}
.pd-fileslot__meta>.pd-i{color:var(--pd-good)}
.pd-fileslot__meta i{font-style:normal;color:var(--pd-dim)}
.pd-fileslot__meta span{overflow:hidden;text-overflow:ellipsis}
/* подсказка пустого слота («Добавьте звук — MP3 или WAV до 5 мин») — вместо меты, одной строкой с многоточием */
.pd-fileslot__hint{display:block;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.35;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-fileslot .pd-wave{flex:1 1 0;min-width:40px;height:26px;margin:0}
.pd-fileslot__acts{display:flex;gap:2px;flex:none;margin-left:auto}
.pd-fileslot__acts .pd-iconbtn{width:22px;height:22px;border-radius:6px;background:none;box-shadow:none}
.pd-fileslot__acts .pd-iconbtn:hover{background:var(--pd-hover)}
.pd-fileslot__acts .pd-iconbtn>.pd-i{width:12px;height:12px}
.pd-fileslot.is-empty{cursor:pointer;background:transparent;box-shadow:none;outline:1.5px dashed rgba(139,149,167,.34);outline-offset:-1.5px}
.pd-fileslot.is-empty:hover{background:rgba(24,38,66,.45);outline-color:var(--pd-border-2)}
.pd-fileslot.is-empty .pd-fileslot__name{color:var(--pd-ink-2)}
.pd-fileslot.is-empty .pd-fileslot__media{background:rgba(59,139,255,.1);box-shadow:none;color:var(--pd-blue)}
.pd-fileslot.is-bad{box-shadow:inset 0 0 0 1.5px rgba(255,99,105,.6)}
.pd-fileslot.is-bad .pd-fileslot__meta{color:var(--pd-bad-ink)}
.pd-fileslot.is-bad .pd-fileslot__meta>.pd-i{color:var(--pd-bad)}

/* ── Аудиокарточка ленты: кто и когда, текст, плеер с волной ── */
.pd-acards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(420px,100%),1fr));gap:14px}
.pd-acard{--pd-t:var(--pd-grey-rgb);position:relative;min-width:0;display:flex;flex-direction:column;gap:10px;padding:12px 12px 10px 14px;border-radius:var(--pd-r-4);background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border);cursor:pointer}
.pd-acard:hover{box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-acard.is-playing{--pd-t:var(--pd-blue-rgb);background:linear-gradient(180deg,rgba(8,102,255,.08),rgba(8,102,255,0) 90px),var(--pd-surface);box-shadow:inset 0 0 0 1px rgba(59,139,255,.4)}
.pd-acard.is-running{--pd-t:var(--pd-sky-rgb);box-shadow:inset 0 0 0 1px rgba(94,208,250,.26)}
.pd-acard.is-error{--pd-t:var(--pd-bad-rgb);box-shadow:inset 0 0 0 1px rgba(255,99,105,.3),inset 3px 0 0 var(--pd-bad)}
.pd-acard.is-unknown{--pd-t:var(--pd-warn-rgb);box-shadow:inset 0 0 0 1px rgba(255,178,36,.3),inset 3px 0 0 var(--pd-warn)}
.pd-acard__hd{display:flex;align-items:center;gap:10px;min-width:0}
.pd-acard__who{min-width:0;display:flex;align-items:baseline;gap:8px;white-space:nowrap;overflow:hidden}
.pd-acard__who b{font-size:var(--pd-fs-3);font-weight:800;color:#fff;overflow:hidden;text-overflow:ellipsis}
.pd-acard__who span{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-acard__tm{margin-left:auto;font-family:var(--pd-mono);font-size:var(--pd-fs-2);color:var(--pd-muted);white-space:nowrap}
.pd-acard__more{margin:-6px -6px -6px 0}
.pd-acard__txt{font-size:var(--pd-fs-4);font-weight:500;line-height:1.5;color:var(--pd-ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pd-acard__txt b{color:#fff;font-weight:700}
.pd-acard__pl{display:flex;align-items:center;gap:12px;min-width:0}
.pd-acard>.pd-acard__pl{margin-top:auto}  /* карточки ряда растянуты сеткой — плееры по низу, а не сразу за текстом разной длины */
.pd-acard__pl .pd-wave{flex:1;min-width:0;margin:0;height:32px}
.pd-acard__pl .pd-audio__play{width:36px;height:36px}
.pd-acard__st{display:flex;align-items:center;gap:8px;font-size:var(--pd-fs-2);font-weight:700;color:rgb(var(--pd-t))}
.pd-acard--media{flex-direction:row;gap:14px}

/* ── Строка задачи (Сжатие, История): миниатюра · имя · «было → стало» · действия ── */
/* Одна сетка на весь список: строки — subgrid, поэтому колонка действий одной ширины во всех строках
   (строки с разным набором кнопок не сдвигают статус). Ширину колонки статуса можно задать: --pd-job-st */
.pd-jobs{display:grid;grid-template-columns:60px minmax(0,1fr) var(--pd-job-st,minmax(220px,270px)) auto;column-gap:20px;border-radius:var(--pd-r-4);background:var(--pd-surface-2);box-shadow:inset 0 0 0 1px var(--pd-border);overflow:hidden}
.pd-jobs>*{grid-column:1/-1}
.pd-jobrow{position:relative;display:grid;grid-template-columns:60px minmax(0,1fr) minmax(220px,270px) auto;grid-template-areas:"th inf st act";align-items:center;gap:20px;min-height:52px;padding:10px 14px 10px 12px;cursor:pointer;outline:none}
.pd-jobs>.pd-jobrow{grid-template-columns:subgrid}
.pd-jobrow+.pd-jobrow{border-top:1px solid var(--pd-line)}
.pd-jobrow:hover{background:rgba(24,38,66,.42)}
.pd-jobrow:focus-visible{box-shadow:inset 0 0 0 2px var(--pd-blue)}
.pd-jobrow.is-flash{background:linear-gradient(90deg,rgba(53,208,127,.08),transparent 60%)}
.pd-jobrow>.pd-thumb{grid-area:th}
.pd-jobrow__inf{grid-area:inf;min-width:0}
.pd-jobrow__name{font-size:var(--pd-fs-3);font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-jobrow__meta{display:flex;align-items:center;margin-top:3px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden}
.pd-jobrow__meta i{font-style:normal;color:var(--pd-dim);margin:0 6px}
.pd-jobrow__meta .pd-num{font-size:var(--pd-fs-2)}
.pd-jobrow__st{grid-area:st;min-width:0}
.pd-jobrow__act{grid-area:act;display:flex;align-items:center;justify-content:flex-end;gap:6px}
.pd-jobrow__more{display:none;grid-area:more}
/* Статус: «96.1 МБ → 37.2 МБ  −61%», причина, полоса размера */
.pd-jobst__top{display:flex;align-items:center;gap:8px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);white-space:nowrap;min-width:0}
.pd-jobst__top b{font-weight:800;color:#fff}
.pd-jobst__was{color:var(--pd-muted)}
.pd-jobst__arr{color:var(--pd-muted);width:14px;height:14px}
.pd-jobst__now{color:#fff}
.pd-jobst__sp{flex:1 1 auto;min-width:4px}
.pd-jobst__r{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-jobst__r .pd-num{font-size:var(--pd-fs-2);color:var(--pd-good)}
.pd-jobst__why{margin-top:4px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pd-jobst .pd-progress{margin-top:9px}
.pd-jobst--err .pd-jobst__top b{color:var(--pd-bad-ink)}
.pd-jobst--warn .pd-jobst__top b,.pd-jobst--warn .pd-jobst__r .pd-num{color:var(--pd-warn)}
.pd-sizebar{position:relative;height:4px;margin-top:9px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden}
.pd-sizebar i{position:absolute;inset:0 auto 0 0;width:calc(var(--v,0) * 100%);border-radius:inherit;background:var(--pd-good)}
.pd-sizebar--warn i{background:var(--pd-warn)}
.pd-sizebar--wait i{display:none}

/* ── Сравнение «было → стало» карточками (смена аккаунта, период к периоду) ── */
.pd-compare{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);align-items:stretch;gap:8px}
.pd-compare__c{min-width:0;padding:12px 14px;border-radius:10px;background:rgba(11,18,32,.5);box-shadow:inset 0 0 0 1px var(--pd-line)}
.pd-compare__c.is-new{background:rgba(53,208,127,.06);box-shadow:inset 0 0 0 1px rgba(53,208,127,.3)}
.pd-compare__k{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted)}
.pd-compare__c.is-new .pd-compare__k{color:var(--pd-good)}
.pd-compare__n{margin-top:6px;font-size:var(--pd-fs-4);font-weight:800;color:#fff}
.pd-compare__v{margin-top:10px;font-family:var(--pd-mono);font-size:var(--pd-fs-5);color:#fff}
.pd-compare__v.is-warn{color:var(--pd-warn)}
.pd-compare__s{margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-compare__ar{display:grid;place-items:center;color:var(--pd-muted)}
/* Строка «было → стало» в тексте: «$30 → $50» */
.pd-was{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.pd-was>s,.pd-was>.pd-was__a{color:var(--pd-muted);text-decoration:none}
.pd-was>.pd-i{width:14px;height:14px;color:var(--pd-muted)}
.pd-was>b{color:#fff}

/* ── До / после: шторка-сравнение на сцене (Сжатие) ── */
.pd-ba{position:relative;height:100%;max-height:100%;max-width:100%;aspect-ratio:9/16;border-radius:var(--pd-r-4);overflow:hidden;background:#000;box-shadow:0 30px 70px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.08);user-select:none;touch-action:pan-y}
.pd-ba__l{position:absolute;inset:0}
.pd-ba__l>svg,.pd-ba__l>img,.pd-ba__l>video{width:100%;height:100%;display:block;object-fit:cover}
.pd-ba__l--after{clip-path:inset(0 0 0 var(--x,50%))}
.pd-ba__h{position:absolute;top:0;bottom:0;left:var(--x,50%);z-index:3;width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.25),0 0 18px rgba(0,0,0,.4);cursor:ew-resize}
.pd-ba__h::before{content:"";position:absolute;inset:0 -20px}
.pd-ba__k{position:absolute;left:50%;top:44%;width:40px;height:40px;border-radius:50%;transform:translate(-50%,-50%);display:grid;place-items:center;color:var(--pd-page);background:#fff;box-shadow:0 6px 18px rgba(0,0,0,.45)}
.pd-ba .pd-plate--tl,.pd-ba .pd-plate--tr{font-family:var(--pd-font);font-weight:700;max-width:calc(50% - 16px)}
.pd-ba .pd-plate--bl,.pd-ba .pd-plate--br{max-width:calc(50% - 16px)}
.pd-ba .pd-plate b{font-family:var(--pd-mono);font-weight:500;color:var(--pd-ink-2)}
.pd-ba.is-side{aspect-ratio:9/8;background:transparent;box-shadow:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;overflow:visible}
.pd-ba.is-side .pd-ba__l{position:relative;border-radius:var(--pd-r-4);overflow:hidden;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.pd-ba.is-side .pd-ba__l--after{clip-path:none}
.pd-ba.is-side .pd-ba__h{display:none}

/* ── Календарь периода и сетка месяцев ── */
.pd-cal{padding:4px 6px 6px}
.pd-cal__hd{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0 10px}
.pd-cal__hd b{font-size:var(--pd-fs-3);font-weight:800}
.pd-cal__g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px 0}
.pd-cal__w{height:24px;display:grid;place-items:center;font-size:var(--pd-fs-1);font-weight:700;color:var(--pd-muted)}
.pd-cal__d{position:relative;height:30px;display:grid;place-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-2);font-weight:500;color:var(--pd-ink-2);isolation:isolate}
.pd-cal__d:hover{color:#fff}
.pd-cal__d.is-in{background:rgba(59,139,255,.14);color:#fff}
.pd-cal__d.is-a,.pd-cal__d.is-b{color:#fff}
.pd-cal__d.is-a{border-radius:10px 0 0 10px}
.pd-cal__d.is-b{border-radius:0 10px 10px 0}
.pd-cal__d.is-a.is-b{border-radius:10px}
.pd-cal__d.is-a::after,.pd-cal__d.is-b::after{content:"";position:absolute;inset:1px;border-radius:9px;background:var(--pd-accent);z-index:-1}
.pd-cal__d.is-today{box-shadow:inset 0 -2px 0 var(--pd-sky)}
.pd-cal__d.is-wk{color:rgba(201,212,229,.8)}
/* недоступная дата — серым --pd-muted (не темнее), без наведения */
.pd-cal__d.is-off{color:var(--pd-muted);cursor:default}
.pd-cal__d.is-off:hover{color:var(--pd-muted)}
.pd-monthgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 6px 6px}
.pd-monthgrid>button{position:relative;text-align:center;height:32px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-monthgrid>button:hover{background:var(--pd-hover);color:#fff}
.pd-monthgrid>button.is-sel{background:var(--pd-accent);color:#fff;box-shadow:none}

/* ── Лицо на кадре и карточки людей (липсинк, аватары) ── */
.pd-face{position:absolute;border-radius:16px;border:1.5px dashed rgba(255,255,255,.8);background:rgba(255,255,255,.04);box-shadow:0 0 0 1px rgba(0,0,0,.2);cursor:pointer}
.pd-face::before{content:"";position:absolute;inset:-6px}
.pd-face:hover{border-color:#fff;background:rgba(255,255,255,.09)}
.pd-face.is-sel{border:2px solid var(--pd-blue);background:rgba(59,139,255,.08);box-shadow:0 0 0 4px rgba(59,139,255,.22),0 0 36px rgba(59,139,255,.35)}
.pd-face__lbl{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);height:22px;padding:0 7px;border-radius:var(--pd-r-1);display:inline-flex;align-items:center;gap:6px;font-size:var(--pd-fs-2);font-weight:800;color:#fff;white-space:nowrap;background:rgba(9,15,28,.74);box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}
.pd-face.is-sel .pd-face__lbl{background:var(--pd-accent);box-shadow:0 6px 16px rgba(8,102,255,.45)}
.pd-persons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pd-person{display:flex;align-items:center;gap:12px;min-width:0;padding:8px 12px 8px 8px;border-radius:10px;text-align:left;background:rgba(11,18,32,.5);box-shadow:inset 0 0 0 1px var(--pd-line)}
button.pd-person:hover,.pd-person.is-btn:hover{background:var(--pd-hover);box-shadow:inset 0 0 0 1px var(--pd-border-2)}
.pd-person.is-sel{background:rgba(59,139,255,.1);box-shadow:inset 0 0 0 1px rgba(59,139,255,.4)}
.pd-person__ph{width:40px;height:50px;border-radius:10px;overflow:hidden;flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-person__ph>svg,.pd-person__ph>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-person__t{flex:1;min-width:0}
.pd-person__t b{display:flex;align-items:center;gap:7px;font-size:var(--pd-fs-3);font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-person__t small{display:block;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Крошечное лицо в строке текста */
.pd-faceicon{display:inline-block;width:18px;height:18px;border-radius:6px;overflow:hidden;vertical-align:-4px;margin-right:6px;box-shadow:0 0 0 1px rgba(255,255,255,.12)}
.pd-faceicon>svg{width:100%;height:100%;display:block}

/* ── QR-карточка и рамка браузера ── */
.pd-qr{display:flex;align-items:center;gap:16px;padding:14px;border-radius:var(--pd-r-4);background:rgba(11,18,32,.45);box-shadow:inset 0 0 0 1px var(--pd-line)}
.pd-qr__c{width:92px;height:92px;flex:none;padding:7px;border-radius:12px;background:#fff}
.pd-qr__c>svg{width:100%;height:100%;display:block}
.pd-qr b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff}
.pd-qr small{display:block;margin-top:4px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.5;color:var(--pd-muted)}
.pd-browser{border-radius:10px;overflow:hidden;background:#0a101d;box-shadow:0 0 0 1px var(--pd-border)}
.pd-browser__bar{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#131c2e;border-bottom:1px solid var(--pd-line)}
.pd-browser__dots{display:flex;gap:5px}
.pd-browser__dots i{width:8px;height:8px;border-radius:50%;background:#2a3753}
.pd-browser__url{position:relative;flex:1;min-width:0;height:28px;padding:0 10px;border-radius:8px;display:flex;align-items:center;gap:8px;font-family:var(--pd-mono);font-size:var(--pd-fs-2);color:var(--pd-ink-2);background:var(--pd-page);white-space:nowrap;overflow:hidden}
.pd-browser__url.is-hot{box-shadow:0 0 0 2px var(--pd-blue),0 0 0 6px rgba(59,139,255,.18)}
.pd-browser__url>.pd-i{width:13px;height:13px;color:var(--pd-muted);flex:none}
.pd-browser__url>span{overflow:hidden;text-overflow:ellipsis}
.pd-browser__url em{font-style:normal;color:#fff}
.pd-browser__pg{display:flex;align-items:center;gap:14px;padding:16px 18px 18px}
.pd-browser__pg>.pd-i{color:var(--pd-muted);width:28px;height:28px;flex:none}
.pd-browser__pg div{font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2)}
.pd-browser__pg small{display:block;margin-top:3px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-browser__cap{display:flex;align-items:center;gap:8px;padding:9px 12px;border-top:1px solid var(--pd-line);font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-blue);background:rgba(59,139,255,.06)}
/* Превью опубликованной страницы (светлая), вариант «телефон» */
.pd-browser--page{width:100%;height:100%;border-radius:14px;background:#f4ede4;box-shadow:0 30px 70px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.1)}
.pd-browser--page.is-phone{width:390px;max-width:100%;border-radius:28px;box-shadow:0 30px 70px rgba(0,0,0,.55),0 0 0 8px #141d2e,0 0 0 9px rgba(255,255,255,.12)}

/* ── Советы ── */
.pd-tips{list-style:none;display:grid;gap:7px}
.pd-tips>li{position:relative;padding-left:14px;font-size:var(--pd-fs-3);font-weight:600;line-height:1.5;color:var(--pd-ink-2)}
.pd-tips>li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:2px;background:var(--pd-good)}
.pd-tips--s>li{font-size:var(--pd-fs-2)}
.pd-tips--box{padding:12px 14px 14px;border-radius:10px;background:rgba(53,208,127,.05);box-shadow:inset 0 0 0 1px rgba(53,208,127,.2)}

/* ── Размеры модалки, ряд быстрых кнопок окна, шапка окна на телефоне ── */
.pd-modal__win--s{width:min(420px,100%)}
.pd-modal__win--m{width:min(580px,100%)}
.pd-modal__win--l{width:min(760px,100%)}
.pd-modal__win--xl{width:min(980px,100%)}
.pd-modal__hd .pd-glyph,.pd-modal__hd .pd-ring{margin:0}
.pd-viewer__acts--2{grid-template-columns:1fr 40px}
.pd-viewer__acts--2eq{grid-template-columns:1fr 1fr}  /* две равные кнопки («Все в ZIP» / «Копировать») */
.pd-viewer__acts--4{grid-template-columns:1fr 1fr 1fr 40px}
.pd-viewer__acts--4 .pd-btn{padding:0 10px;gap:7px}
.pd-mh__t{flex:1;min-width:0;font-size:var(--pd-fs-3);font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.pd-mh__done{margin-left:auto;height:44px;padding:0 14px;border-radius:10px;font-weight:800;color:var(--pd-blue)}

/* ── Подтверждение: обратимое — поповер у места, опасное — тон ── */
.pd-confirm--danger .pd-confirm__k{color:var(--pd-bad-ink)}
.pd-confirm--danger .pd-confirm__btns .pd-btn--danger{flex:1}
.pd-modal--danger .pd-modal__hd .pd-ring{width:32px;height:32px;border-radius:var(--pd-r-3)}

/* ── Тост с миниатюрой, с переходом и с «Вернуть» (обратный отсчёт) ── */
.pd-toast__thumb{width:36px;height:36px;border-radius:var(--pd-r-3);overflow:hidden;flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.12)}
.pd-toast__thumb>svg,.pd-toast__thumb>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-toast__go{background:rgba(59,139,255,.14);color:var(--pd-blue)}
.pd-toast__go:hover{background:rgba(59,139,255,.24);color:#fff}
.pd-toast--undo{position:relative;overflow:hidden;--pd-t:var(--pd-grey-rgb)}
.pd-toast__bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.06)}
.pd-toast__bar i{display:block;height:100%;width:calc(var(--v,1) * 100%);background:var(--pd-muted);transition:width 1s linear}

/* ── Панель-карточка с шапкой (Статистика, Сотрудники, Подключения) ── */
/* №5: панели плотные — сетка и пятно под ними не просвечивают */
.pd-panel{position:relative;min-width:0;border-radius:var(--pd-r-4);background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-panel__hd{display:flex;align-items:center;gap:12px;min-height:48px;padding:12px 14px 8px 16px}
.pd-panel__hdtxt{flex:1;min-width:0}
.pd-panel__t{font-size:var(--pd-fs-4);font-weight:800;letter-spacing:-.01em;line-height:1.3;color:#fff}
.pd-panel__sub{margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);line-height:1.4}
.pd-panel__sub .pd-num{color:var(--pd-ink-2)}
.pd-panel__body{padding:4px 16px 16px}
.pd-panel__foot{display:flex;align-items:center;gap:12px;min-height:40px;padding:6px 16px;border-top:1px solid var(--pd-line);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-panel .pd-table th{background:transparent}
.pd-panel .pd-table td{height:48px}
.pd-panel .pd-table th:first-child,.pd-panel .pd-table td:first-child{padding-left:16px}
.pd-panel .pd-table th:last-child,.pd-panel .pd-table td:last-child{padding-right:16px}
/* Раздел страницы: заголовок над блоком */
.pd-sec{margin-top:24px}
.pd-sec__hd{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}
.pd-sec__t{font-size:var(--pd-fs-5);font-weight:800;letter-spacing:-.01em;white-space:nowrap;color:#fff}
.pd-sec__sub{font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted);min-width:0}
.pd-sec__hd .pd-sp{align-self:center}

/* ── KPI с дельтой к прошлому периоду и спарклайном ── */
.pd-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.pd-kpi{position:relative;min-width:0;padding:12px 14px 10px 16px;border-radius:var(--pd-r-4);background:var(--pd-surface);box-shadow:inset 0 0 0 1px var(--pd-border);overflow:hidden}
.pd-kpi__lbl{display:flex;align-items:center;gap:8px;font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-muted);white-space:nowrap}
.pd-kpi__lbl .pd-i{width:13px;height:13px;color:var(--pd-muted)}
.pd-kpi__lbl [data-tip]{display:inline-grid;place-items:center;color:var(--pd-muted);cursor:help}
.pd-kpi__top{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:8px;min-width:0;min-height:26px}  /* со спарклайном и без — одна высота: значения ряда на одной линии */
.pd-kpi__val{font-family:var(--pd-mono);font-size:26px;font-weight:500;letter-spacing:-.03em;line-height:1.1;color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums}
.pd-kpi__val small{font-family:var(--pd-font);font-size:var(--pd-fs-4);font-weight:600;color:var(--pd-muted);letter-spacing:0;margin-left:4px}  /* «роликов», «кр» — Manrope */
.pd-kpi__row{display:flex;align-items:center;gap:8px;margin-top:8px;min-width:0;min-height:20px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap}
.pd-kpi__row>span:last-child{overflow:hidden;text-overflow:ellipsis}
.pd-kpi__spark{flex:none;width:64px;height:24px;margin-bottom:3px;overflow:visible}
.pd-kpi__spark path{fill:none;stroke:var(--pd-blue);stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.pd-kpi__spark .pd-kpi__area{fill:rgba(59,139,255,.14);stroke:none}
.pd-kpi__spark circle{fill:var(--pd-blue);stroke:var(--pd-surface-2);stroke-width:2}
.pd-delta{display:inline-flex;align-items:center;gap:3px;height:18px;padding:0 6px 0 4px;border-radius:5px;flex:none;font-family:var(--pd-mono);font-size:var(--pd-fs-1);font-weight:600;color:var(--pd-ink-2);background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}
.pd-delta .pd-i{width:12px;height:12px;stroke-width:2.4;color:var(--pd-muted)}
.pd-delta--good{color:var(--pd-good);background:rgba(53,208,127,.1)}
.pd-delta--good .pd-i{color:var(--pd-good)}
.pd-delta--bad{color:var(--pd-bad-ink);background:rgba(255,99,105,.1)}
.pd-delta--bad .pd-i{color:var(--pd-bad)}

/* ── Столбчатый график: стек, оси, сетка, призрак прошлого периода, подсказка ── */
.pd-chart{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr);grid-template-rows:var(--pd-ch-h,236px) auto;column-gap:8px}
.pd-chart__y{position:relative}
.pd-chart__y span{position:absolute;right:0;bottom:calc(var(--y) * 100%);transform:translateY(50%);font-family:var(--pd-mono);font-size:var(--pd-fs-1);color:var(--pd-muted);white-space:nowrap}
.pd-chart__plot{position:relative;min-width:0}
.pd-chart__grid i{position:absolute;left:0;right:0;bottom:calc(var(--y) * 100%);height:1px;background:rgba(28,41,64,.75)}
.pd-chart__grid i:first-child{background:var(--pd-border)}
.pd-chart__cols{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr))}
.pd-chart__col{position:relative;display:flex;align-items:flex-end;justify-content:center;height:100%;padding:0 1px;cursor:default}
.pd-chart__col::before{content:"";position:absolute;inset:0 1px;border-radius:6px;background:transparent;transition:background var(--pd-t-fast)}
.pd-chart__col.is-hot::before{background:rgba(59,139,255,.07)}
.pd-chart__stack{position:relative;width:min(64%,26px);height:calc(var(--h) * 100%);display:flex;flex-direction:column-reverse;gap:2px;border-radius:5px 5px 2px 2px;overflow:hidden;transition:opacity var(--pd-t-fast)}
.pd-chart__stack i{flex:var(--v) 1 0;min-height:2px;background:var(--c)}
.pd-chart.is-hover .pd-chart__col:not(.is-hot) .pd-chart__stack{opacity:.42}
.pd-chart__col.is-future::after{content:"";position:absolute;bottom:-2px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:1px;background:var(--pd-border-2)}
.pd-chart__ghost{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.pd-chart__ghost path{fill:none;stroke:#8b95a7;stroke-opacity:.55;stroke-width:1.5;stroke-dasharray:4 5;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.pd-chart__x{grid-column:2;position:relative;height:28px}
.pd-chart__x span{position:absolute;top:9px;transform:translateX(-50%);font-family:var(--pd-mono);font-size:var(--pd-fs-1);color:var(--pd-muted);white-space:nowrap}
.pd-chart__x span.is-today{color:#fff;font-weight:600}
.pd-chart__x span.is-today::after{content:"";position:absolute;left:50%;top:-8px;width:5px;height:5px;margin-left:-2.5px;border-radius:1.5px;background:var(--pd-blue)}
.pd-chart__tip{position:absolute;z-index:3;width:250px;padding:10px 12px 8px;border-radius:var(--pd-r-3);background:var(--pd-raised);box-shadow:var(--pd-sh-2);pointer-events:none;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-ink-2)}
.pd-chart__tip-hd{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px}
.pd-chart__tip-hd b{font-size:var(--pd-fs-3);font-weight:800;color:#fff}
.pd-chart__tip-hd .pd-num{font-size:var(--pd-fs-3);color:#fff;font-weight:600}
.pd-chart__tip-r{display:flex;align-items:center;gap:8px;min-height:22px}
.pd-chart__tip-r .pd-num{margin-left:auto;color:#fff}
.pd-chart__tip-cmp{display:flex;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--pd-line);color:var(--pd-muted)}
.pd-chart__tip-cmp .pd-num{color:var(--pd-ink-2)}
/* Мини-столбики активности (7/14 дней) */
.pd-mini{display:grid;grid-template-columns:repeat(var(--n),1fr);align-items:end;gap:6px;height:84px}
.pd-mini i{display:block;height:calc(var(--h) * 100%);min-height:3px;border-radius:4px 4px 2px 2px;background:linear-gradient(180deg,var(--pd-blue),rgba(59,139,255,.55))}
.pd-mini i.is-zero{background:var(--pd-line)}
.pd-mini i.is-today{background:linear-gradient(180deg,var(--pd-sky),rgba(94,208,250,.5))}
.pd-mini__x{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:6px;margin-top:6px;font-size:var(--pd-fs-1);font-weight:700;color:var(--pd-muted);text-align:center}
/* Доля — тонкая полоса + % */
.pd-share{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.pd-share__bar{position:relative;width:76px;height:5px;border-radius:3px;background:rgba(255,255,255,.06);overflow:hidden;flex:none}
.pd-share__bar i{position:absolute;inset:0 auto 0 0;width:calc(var(--v) * 100%);min-width:2px;border-radius:3px;background:var(--c,var(--pd-blue))}
.pd-share .pd-num{width:44px;text-align:right;color:var(--pd-ink-2)}

/* ── Ячейки таблиц и шторок ── */
.pd-ico{width:32px;height:32px;border-radius:var(--pd-r-3);display:grid;place-items:center;flex:none;color:var(--pd-ink-2);background-color:rgba(24,38,66,.8);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 0 0 1px var(--pd-border)}
.pd-ico .pd-i{width:15px;height:15px}
.pd-ico--l{width:36px;height:36px;border-radius:10px}
.pd-ico--l .pd-i{width:18px;height:18px}
.pd-ico--txt{font-size:var(--pd-fs-3);font-weight:800;color:#fff;letter-spacing:-.02em}
.pd-ico[class*=pd-glyph--]{color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 0 0 1px rgba(255,255,255,.06)}
.pd-name{display:flex;align-items:center;gap:12px;min-width:0}
.pd-name__txt{min-width:0}
.pd-name b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-name small{display:block;margin-top:1px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-chev{color:var(--pd-off);transition:color var(--pd-t-fast),transform var(--pd-t-fast)}
tr:hover .pd-chev,.pd-jobrow:hover .pd-chev{color:var(--pd-ink-2);transform:translateX(2px)}
.pd-zero{color:var(--pd-muted)}
.pd-cellsub{display:block;margin-top:2px;font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap}
.pd-cellsub--bad{color:var(--pd-bad-ink)}
.pd-freeword{font-family:var(--pd-font);font-size:var(--pd-fs-2);font-weight:800;color:var(--pd-good)}
.pd-seen{display:inline-flex;align-items:center;gap:7px;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2);white-space:nowrap}
.pd-seen .pd-dot{--pd-t:var(--pd-good-rgb);box-shadow:0 0 0 3px rgba(53,208,127,.16)}
.pd-seen.is-old{color:var(--pd-muted)}
.pd-seen.is-old .pd-dot{--pd-t:var(--pd-grey-rgb);box-shadow:none}
/* Мини-лимит в ячейке: «$5.90 из $30» + полоса */
.pd-lim{min-width:118px;max-width:150px}
.pd-lim .pd-meter__top{justify-content:flex-start}
.pd-lim__none{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);white-space:nowrap}
.pd-lim__none .pd-num{font-size:var(--pd-fs-3);color:#fff;margin-right:6px}
.pd-lim__up{display:inline-flex;align-items:center;margin-left:6px;font-family:var(--pd-font);font-size:var(--pd-fs-1);font-weight:800;color:var(--pd-sky)}
/* Список «ключ — значение» */
.pd-kv{display:grid;grid-template-columns:minmax(120px,auto) minmax(0,1fr);gap:0 18px;font-size:var(--pd-fs-3)}
.pd-kv dt,.pd-kv dd{padding:9px 0;border-top:1px solid var(--pd-line)}
.pd-kv dt:first-of-type,.pd-kv dd:first-of-type{border-top:0}
.pd-kv dt{font-weight:600;color:var(--pd-muted)}
.pd-kv dd{font-weight:700;color:#fff;min-width:0;overflow-wrap:anywhere}
.pd-kv dd .pd-num{font-weight:500}
.pd-kv dd small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);margin-top:1px}
/* Быстрые суммы: $15 · $30 · $50 · $100 · Без лимита («было» — пометкой) */
.pd-amounts{display:flex;flex-wrap:wrap;gap:6px}
.pd-amounts__b{position:relative;height:32px;padding:0 11px;border-radius:var(--pd-r-3);display:inline-flex;align-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:500;color:var(--pd-ink-2);box-shadow:inset 0 0 0 1px var(--pd-border)}
.pd-amounts__b:hover{background:var(--pd-hover);color:#fff}
.pd-amounts__b.is-txt{font-family:var(--pd-font);font-weight:700}
.pd-amounts__b.is-sel{background:var(--pd-hover);color:#fff;box-shadow:inset 0 0 0 1px var(--pd-accent),0 0 0 3px rgba(8,102,255,.14)}
.pd-amounts__b.is-was::after{content:"было";position:absolute;top:-10px;right:-4px;padding:0 5px;height:17px;border-radius:5px;display:grid;place-items:center;font-family:var(--pd-font);font-size:var(--pd-fs-1);font-weight:800;color:var(--pd-ink-2);background:var(--pd-line);box-shadow:0 0 0 2px var(--pd-raised)}
.pd-amounts__b[aria-disabled=true]{color:var(--pd-muted);box-shadow:inset 0 0 0 1px var(--pd-line);cursor:default}
.pd-amounts__b[aria-disabled=true]:hover{background:transparent}
/* Блок формы в шторке */
.pd-blk{padding:16px 0;border-top:1px solid var(--pd-line)}
.pd-blk:first-child{padding-top:4px;border-top:0}
.pd-blk__hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.pd-blk__t{font-size:var(--pd-fs-4);font-weight:800}
.pd-blk__t small{display:block;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-blk .pd-hint{margin-top:10px}
.pd-blk .pd-meter{margin-top:14px}
.pd-changed{display:inline-flex;align-items:center;gap:6px;height:18px;padding:0 6px;border-radius:5px;font-size:var(--pd-fs-1);font-weight:800;color:var(--pd-blue);background:rgba(59,139,255,.12)}
/* Причина недоступности — строкой, не title */
.pd-why{display:flex;align-items:flex-start;gap:8px;margin-top:10px;font-size:var(--pd-fs-2);font-weight:600;line-height:1.45;color:var(--pd-muted)}
.pd-why .pd-i{flex:none;margin-top:1px;color:var(--pd-muted)}
.pd-lockline{display:inline-flex;align-items:center;gap:6px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);white-space:nowrap}
/* Строка-подсказка под тулбаром */
.pd-note{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;margin:-6px 0 14px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-note .pd-i{color:var(--pd-muted)}
.pd-note b{color:var(--pd-ink-2);font-weight:700}
.pd-note .pd-num{color:var(--pd-ink-2)}
/* пункт строки-подсказки: обычный текст (с <b>, ссылками) переносится как текст, иконка — в строке */
.pd-note__it{display:block;min-width:0;line-height:1.45}
.pd-note__it>.pd-i{display:inline-block;vertical-align:-3px;margin-right:6px}
/* Короткая плашка-ярлык: «Только просмотр», «FREE» */
.pd-badge{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 7px;border-radius:5px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-muted);box-shadow:inset 0 0 0 1px var(--pd-border);white-space:nowrap}
.pd-scrim--drawer{z-index:calc(var(--pd-z-drawer) - 1)}
/* Мелкие помощники */
.pd-grow{flex:1;min-width:0}
.pd-small{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-good-ink{color:var(--pd-good)}
.pd-bad-ink{color:var(--pd-bad-ink)}
.pd-warn-ink{color:var(--pd-warn)}

/* ── Утилиты видимости (по ширине окна) ──
   xl ≤1320 · l ≤1100 · m ≤860 (телефон) · s ≤420 (узкий телефон).
   Утилиты с !important: они должны выигрывать у любого display экрана той же специфичности.
   .pd-show-m только прячет на десктопе, на телефоне свой display элемента не трогает (inline-grid кнопки остаётся). */
@media (max-width:1320px){.pd-hide-xl{display:none!important}}
@media (max-width:1100px){.pd-hide-l{display:none!important}}
@media (max-width:860px){.pd-hide-m{display:none!important}}
@media (max-width:420px){.pd-hide-s{display:none!important}}
@media (min-width:861px){.pd-show-m,.pd-only-m{display:none!important}}

/* ═══════════════════════════════════════════════════════════════════════════
   21b. Поднято из Видео в v3 (были локальными v-*): цепочка плиток, лента кадров,
   медиатека карточками, слоты фото мастера, сводка мастера. Соответствие — KIT.md, «Что изменилось в v3».
   ═══════════════════════════════════════════════════════════════════════════ */
/* Цепочка плиток группой (куски MiniMax → склейка): стоит в общей сетке ленты (subgrid), --n — сколько колонок */
.pd-chain{grid-column:span var(--n,2);display:grid;grid-template-columns:subgrid;row-gap:14px;position:relative;isolation:isolate;align-self:start;min-width:0}
.pd-chain::before{content:"";position:absolute;inset:-10px -10px -12px;z-index:-1;border-radius:16px;background:linear-gradient(180deg,rgba(94,208,250,.07),rgba(94,208,250,.015) 70%),rgba(15,26,46,.5);box-shadow:inset 0 0 0 1px rgba(94,208,250,.2);transition:opacity var(--pd-t) var(--pd-ease)}
.pd-chain.is-under-dock::before{opacity:0}  /* рамка группы над доком не торчит (kit.js) */
.pd-chain__ft{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0;padding:0 2px}
.pd-chain__ic{width:28px;height:28px;border-radius:var(--pd-r-3);display:grid;place-items:center;flex:none;color:var(--pd-sky);background:rgba(94,208,250,.12)}
.pd-chain__t{flex:1 1 140px;min-width:0}
.pd-chain__t b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-chain__t small{display:block;margin-top:1px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* кнопки цепочки переносятся и не шире группы: в цепочке из одного куска (одна колонка ленты) «Показать склейку» вылезала на
   соседнюю колонку (приёмка 13.10). .pd-chain--one — кнопки во всю ширину, подписи в две строки */
.pd-chain__acts{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto;min-width:0;max-width:100%}
.pd-chain__acts>.pd-btn{min-width:0}
.pd-chain--one .pd-chain__acts{flex:1 1 100%;margin-left:0}
.pd-chain--one .pd-chain__acts>.pd-btn{flex:1 1 auto;justify-content:center}
.pd-chain--one .pd-chain__t b,.pd-chain--one .pd-chain__t small{white-space:normal;text-wrap:balance}
.pd-grid[data-density=dense] .pd-chain--one .pd-chain__t small{display:none}
.pd-chain .pd-why{flex-basis:100%;margin-top:0}
.pd-chain__ar{position:absolute;left:-22px;top:calc((100% - 78px) / 2 - 12px);z-index:8;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;color:var(--pd-sky);background:#10203a;box-shadow:0 0 0 1px rgba(94,208,250,.35),0 4px 10px rgba(0,0,0,.4)}
.pd-grid[data-density=dense] .pd-chain__ar{left:-19px}

/* Лента кадров со скрабом (Извлечь кадр): превью, полоса кадров, маркер выбранного; ←/→, Shift — по 10 */
.pd-xf__stage{position:relative;height:min(44vh,400px);border-radius:var(--pd-r-4);overflow:hidden;display:grid;place-items:center;background:var(--pd-player);isolation:isolate}
.pd-xf__amb{position:absolute;inset:0;z-index:-1;overflow:hidden}
.pd-xf__amb>svg,.pd-xf__amb>img{position:absolute;inset:-10%;width:120%;height:120%;filter:blur(40px) brightness(.45) saturate(1.3)}
.pd-xf__frame{position:relative;height:100%;aspect-ratio:var(--ar,1);max-width:100%;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.1)}
.pd-xf__frame>svg,.pd-xf__frame>img,.pd-xf__cell>svg,.pd-xf__cell>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-xf__strip{position:relative;margin-top:12px;height:56px;border-radius:var(--pd-r-3);overflow:hidden;background:#050a14;box-shadow:inset 0 0 0 1px var(--pd-border);cursor:ew-resize;touch-action:none}
.pd-xf__cells{display:flex;height:100%}
.pd-xf__cell{position:relative;flex:1 1 0;min-width:0;height:100%;overflow:hidden;opacity:.5;transition:opacity var(--pd-t-fast)}
.pd-xf__cell:hover{opacity:.85}
.pd-xf__cell.is-past{opacity:.72}
.pd-xf__cell.is-sel{opacity:1}
.pd-xf__mark{position:absolute;top:0;bottom:0;left:calc(var(--k) / var(--n) * 100%);width:calc(100% / var(--n));min-width:4px;border-radius:6px;box-shadow:inset 0 0 0 2px var(--pd-blue),0 0 0 3px rgba(59,139,255,.25);pointer-events:none}
.pd-xf__mark::before{content:"";position:absolute;left:50%;top:-1px;width:12px;height:6px;transform:translateX(-50%);border-radius:0 0 4px 4px;background:var(--pd-blue)}
.pd-xf__row{display:flex;align-items:center;gap:10px;margin-top:12px;min-width:0}
.pd-xf__pos{font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted);white-space:nowrap}
.pd-xf__pos b{color:#fff;font-weight:600}
.pd-xf__pos .pd-num{color:var(--pd-ink-2)}

/* Медиатека карточками (персонажи Kling): обложка 3:4, выбор галочкой, «⋯», карточка «Новый» */
.pd-cgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 12px}
/* карточка бывает <button> (выбор персонажа «Аватаров») — кнопка центрирует содержимое по вертикали, и в ряду, растянутом
   сеткой до «фото + подпись», рамка карточки без подписи («Новый персонаж») съезжала вниз (приёмка 13.10). Колонка от верха */
.pd-ccard{position:relative;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;text-align:left}
.pd-ccard__ph{position:relative;display:block;width:100%;aspect-ratio:3/4;border-radius:var(--pd-r-4);overflow:hidden;background:var(--pd-surface-2);box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.pd-ccard__ph>svg:not(.pd-i),.pd-ccard__ph>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-ccard__ph .pd-skel{position:absolute;inset:0;border-radius:0}
.pd-ccard.is-sel .pd-ccard__ph{box-shadow:0 0 0 2px var(--pd-blue),0 0 0 5px rgba(59,139,255,.2)}
.pd-ccard__ck{position:absolute;right:8px;top:8px;z-index:2;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;color:transparent;background:rgba(9,15,28,.55);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55)}
.pd-ccard.is-sel .pd-ccard__ck{color:#fff;background:var(--pd-accent);box-shadow:0 2px 8px rgba(8,102,255,.5)}
.pd-ccard__cap{display:flex;align-items:flex-start;gap:2px;padding:8px 0 0 2px}
.pd-ccard__t{flex:1;min-width:0}
.pd-ccard__t b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-ccard__t small{display:block;margin-top:1px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-ccard__cap .pd-iconbtn{margin:-5px -6px 0 0}
.pd-ccard--new .pd-ccard__ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:0 10px;text-align:center;background:rgba(59,139,255,.05);box-shadow:none;outline:1.5px dashed rgba(139,149,167,.38);outline-offset:-1.5px;font-size:var(--pd-fs-3);font-weight:800;color:var(--pd-ink-2)}
.pd-ccard--new .pd-ccard__ph:hover{background:rgba(59,139,255,.1);outline-color:var(--pd-blue);color:#fff}
.pd-ccard--new .pd-ccard__ph>.pd-i{width:36px;height:36px;padding:9px;border-radius:10px;color:var(--pd-sky);background:rgba(94,208,250,.12)}
.pd-ccard--new small{font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
/* узкий телефон: карточка ~100 px шириной — значок и отступы меньше, иначе подпись ложится на пунктир (375/360) */
@media (max-width:400px){
  .pd-ccard--new .pd-ccard__ph{gap:5px;padding:0 6px;font-size:var(--pd-fs-2)}
  .pd-ccard--new .pd-ccard__ph>.pd-i{width:32px;height:32px;padding:8px;border-radius:11px}
}
@media (max-width:374px){ .pd-mhdr .pd-pill__lbl{display:none} }  /* 360: «Всего сегодня» не влезает рядом с логотипом — остаётся сумма */

/* Слоты фото мастера: главное фото крупнее, процент загрузки, «Заменить», ✕ */
.pd-photos{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:12px;align-items:end}
.pd-ph{position:relative;min-width:0;text-align:left}
.pd-ph__img{position:relative;aspect-ratio:3/4;border-radius:var(--pd-r-4);overflow:hidden;background:var(--pd-surface-2);box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-ph__img>svg:not(.pd-i),.pd-ph__img>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-ph b{display:block;margin-top:8px;font-size:var(--pd-fs-3);font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-ph small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-ph--main .pd-ph__img{box-shadow:0 0 0 1.5px var(--pd-sky)}
.pd-ph__re{position:absolute;left:8px;bottom:8px;z-index:2}
.pd-ph__x{position:absolute;right:6px;top:6px;z-index:2;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;color:#fff;background:rgba(9,15,28,.75)}
.pd-ph__x::before{content:"";position:absolute;inset:-6px}
.pd-ph__pct{position:absolute;inset:0;z-index:1;display:grid;place-items:center;font-family:var(--pd-mono);font-size:var(--pd-fs-3);font-weight:600;color:#fff;background:rgba(5,9,18,.6)}
.pd-ph .pd-progress{z-index:2;height:4px}
.pd-ph.is-empty .pd-ph__img{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:transparent;box-shadow:none;outline:1.5px dashed rgba(139,149,167,.38);outline-offset:-1.5px;font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-ink-2)}
.pd-ph.is-empty .pd-ph__img .pd-i{color:var(--pd-blue)}
.pd-ph.is-empty:hover .pd-ph__img{background:rgba(59,139,255,.07);outline-color:var(--pd-blue)}
/* Сводка мастера: миниатюра, что выбрано, «Изменить» */
.pd-wsum{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 8px;margin-bottom:16px;border-radius:10px;background:rgba(11,18,32,.45);box-shadow:inset 0 0 0 1px var(--pd-line)}
.pd-wsum__ph{position:relative;width:40px;height:52px;border-radius:10px;overflow:hidden;flex:none;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
.pd-wsum__ph>svg,.pd-wsum__ph>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-wsum b{display:block;font-size:var(--pd-fs-3);font-weight:800;color:#fff}
.pd-wsum small{display:block;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
.pd-wsum .pd-link{margin-left:auto}
/* Заголовок шторки/модалки в две строки: имя + подпись */
.pd-hdttl{flex:1;min-width:0}
.pd-hdttl b{display:block}
.pd-hdttl small{display:block;margin-top:2px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ───────────────────────── 22. Анимации ───────────────────────── */
@keyframes pd-pulse{0%,100%{opacity:1}50%{opacity:.4}}
@keyframes pd-pulse-soft{0%,100%{opacity:1}50%{opacity:.55}}
@keyframes pd-load{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes pd-shimmer{from{background-position:130% 0}to{background-position:-130% 0}}
@keyframes pd-skel{from{background-position:100% 0}to{background-position:-100% 0}}
@keyframes pd-indet{0%{transform:translateX(-100%)}100%{transform:translateX(340%)}}
@keyframes pd-pop-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes pd-toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes pd-sheet-in{from{transform:translateY(24px);opacity:.4}to{transform:none;opacity:1}}
@keyframes pd-drawer-in{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
@keyframes pd-fade{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}

/* Прозрачность: «уменьшить прозрачность» в ОС — плашки плотнее (стекло сайдбара и дока — §30) */
@media (prefers-reduced-transparency:reduce){
  .pd-plate,.pd-btn--glass,.pd-tile__play{background:rgba(9,15,28,.9)}
  .pd-viewer{background:rgba(3,7,15,.92)}
  .pd-mhdr{background:var(--pd-surface-2)}
}

/* ───────────────────────── 23. Адаптив ───────────────────────── */
/* ≤1320: шапка плотнее. Балансы пилюлей и подзаголовок — не по ширине окна, а по нехватке места (kit.js pheadFit) */
@media (max-width:1320px){
  .pd-phead__aside,.pd-stats{gap:18px}
}
/* Невысокие ноутбуки: плотнее, чтобы первый ряд не уходил под док (база №5 уже плотная — только то, что ниже базы) */
@media (max-height:860px) and (min-width:861px){
  .pd-main{padding-top:10px}
  .pd-tb{margin-bottom:12px}
  .pd-add,.pd-thumb{width:48px;height:48px}
  .pd-thumb__x{right:2px;top:2px;width:18px;height:18px}   /* на миниатюре 48 px крестик 20 px доставал до центра */
  .pd-dock__prompt{max-height:calc(1.55em * 3);font-size:var(--pd-fs-3)}   /* 3 строки и здесь: 2 — мало для промптов по 15–20 строк (отчёт 20.10, п. 4) */
  .pd-phead h1{font-size:26px}
}
@media (max-width:1100px){
  :root{--pd-pad-x:24px;--pd-pad-l:20px}
}

/* Телефон */
@media (max-width:860px){
  :root{--pd-sb-w:0px;--pd-pad-x:16px;--pd-pad-l:16px;--pd-dock-fade:36px;--pd-phead-h:48px}
  .pd-main{padding:0 16px calc(var(--pd-dock-h) + 28px)}
  /* шапка 56 px: меню, логотип, пилюля расхода — плотная, без размытия (g5-phone) */
  .pd-mhdr{display:flex;align-items:center;gap:4px;position:sticky;top:0;z-index:var(--pd-z-header);height:calc(56px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0 4px;margin:0 -16px;background:var(--pd-surface-2);border-bottom:1px solid var(--pd-line)}
  .pd-mhdr__burger{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;flex:none;color:var(--pd-ink-2)}
  .pd-mhdr__burger>.pd-i{width:20px;height:20px}
  .pd-mhdr__burger:hover{background:var(--pd-hover)}
  .pd-mhdr .pd-logo{gap:8px}
  .pd-mhdr .pd-logo__name{font-size:17px}
  .pd-mhdr .pd-logo__mark{width:16px;height:16px}
  .pd-mhdr .pd-logo__mark i{width:7px;height:7px}
  .pd-mhdr .pd-logo__mark i:nth-child(2),.pd-mhdr .pd-logo__mark i:nth-child(4){left:9px}
  .pd-mhdr .pd-logo__mark i:nth-child(3),.pd-mhdr .pd-logo__mark i:nth-child(4){top:9px}
  .pd-mhdr .pd-logo__mark i:nth-child(4){box-shadow:none}
  .pd-mhdr .pd-pill{padding:0 10px;gap:6px}
  .pd-mhdr .pd-pill::before{inset:-4px 0}  /* зона нажатия только по вертикали: сбоку она давала прокрутку страницы на 360 */
  .pd-player__b{position:relative;width:40px;height:40px}
  .pd-player__b::before{content:"";position:absolute;inset:-2px}
  .pd-player__ctrls{padding:40px 10px 10px}
  .pd-player__bar{gap:2px}  /* кнопки 40 px не сжимаются — плотнее промежутки */
  .pd-mhdr__sp{flex:1}

  /* сайдбар — шторка с группами */
  .pd-sb{inset:0 auto 0 0;width:min(316px,86vw);transform:translateX(-102%);transition:transform var(--pd-t-slow) var(--pd-ease);z-index:var(--pd-z-sheet-2);padding:calc(14px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));background:var(--pd-surface-2);border:0;border-right:1px solid var(--pd-line);border-radius:0 16px 16px 0;box-shadow:30px 0 80px rgba(0,0,0,.55);visibility:hidden}
  body.pd-nav-open .pd-sb{transform:none;visibility:visible}
  body.pd-nav-open .pd-scrim--nav{opacity:1;pointer-events:auto}
  .pd-scrim--nav{z-index:calc(var(--pd-z-sheet-2) - 1)}
  .pd-sb .pd-sb__close{display:grid}
  .pd-sb__top{padding:0 4px 8px 10px}
  .pd-nav{padding-bottom:20px}
  .pd-nav__item{height:44px;font-size:var(--pd-fs-4)}
  .pd-nav__group{padding:12px 12px 4px}

  /* шапка раздела строкой: слева h1, справа счётчики колонкой (g5-phone .tl) */
  .pd-phead{flex-direction:column;align-items:stretch;justify-content:center;gap:0;margin:14px 0 12px;min-height:var(--pd-phead-h)}
  .pd-phead__ic,.pd-phead .pd-phead__sub,.pd-phead__aside{display:none}   /* подзаголовок-чип (data-short) тоже: он раздвигал страницу шире экрана */
  .pd-phead__title{min-width:0}
  .pd-phead__txt{justify-content:space-between;align-items:flex-end;gap:12px}
  .pd-phead h1{font-size:var(--pd-fs-6);flex:none}
  .pd-phead__mline{display:flex;flex-direction:column;align-items:flex-end;gap:2px;margin-top:0;min-width:0;text-align:right}
  .pd-phead__mline>*{overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .pd-phead__mline>.pd-link{overflow:visible}   /* зона нажатия ::before не срезается */

  /* тулбар целиком листается вбок; затухание — .pd-hf-l/.pd-hf-r (kit.js), только с той стороны, где есть ещё */
  .pd-tb{margin:-4px -16px 16px;padding:4px 16px;overflow-x:auto;scrollbar-width:none}
  .pd-tb::-webkit-scrollbar{display:none}
  .pd-tb__sp{display:none}
  .pd-tb>*{flex-shrink:0}
  .pd-tb__scroll{flex:none;overflow:visible;padding:0;margin:0}
  .pd-tb>:last-child{margin-right:28px}
  /* .pd-tb--wrap: поиск своей строкой во всю ширину, ниже — лента фильтров с затуханием (Голоса, История, Сотрудники) */
  .pd-tb.pd-tb--wrap{flex-wrap:wrap;overflow:visible;row-gap:10px;-webkit-mask-image:none;mask-image:none}
  .pd-tb--wrap>.pd-search{flex:1 1 100%;width:100%;order:-1}
  .pd-tb--wrap>.pd-tb__scroll{flex:1 1 0;min-width:0;overflow-x:auto;padding:4px;margin:-4px}
  .pd-tb--wrap>:last-child{margin-right:0}
  .pd-seg{border-radius:12px}
  .pd-seg__btn{height:40px;min-width:44px;border-radius:10px}
  .pd-seg--s .pd-seg__btn{height:40px;padding:0 12px}
  .pd-seg--icon .pd-seg__btn{width:44px}
  .pd-filter{height:32px;padding:0 9px}
  /* в строке тулбара значки одной высоты с сегментом (40 + 2 × 2 = 44) */
  .pd-tb>.pd-btn,.pd-tb>.pd-iconbtn,.pd-tb>.pd-fchip,.pd-tb__scroll>.pd-fchip{height:44px;border-radius:12px}
  .pd-tb>.pd-iconbtn{width:44px}
  .pd-tb>.pd-iconbtn>.pd-i{width:18px;height:18px}
  .pd-seg__btn::before{content:"";position:absolute;inset:-2px 0}
  .pd-filter::before{content:"";position:absolute;inset:-6px 0}
  /* зоны нажатия ≥ 44 px: малые кнопки чуть выше + невидимое расширение */
  .pd-iconbtn::before{content:"";position:absolute;inset:-2px}
  .pd-iconbtn--s{width:36px;height:36px}
  .pd-iconbtn--s::before{inset:-4px}
  .pd-btn{height:40px}
  .pd-btn::before{content:"";position:absolute;inset:-2px 0}  /* 40 + 4 = 44 */
  .pd-btn--sm{height:36px;padding:0 13px}
  .pd-btn--sm::before{content:"";position:absolute;inset:-4px -2px}
  .pd-link{min-height:24px}
  .pd-link::before{inset:-10px -6px}
  .pd-ob::before{inset:-5px}
  .pd-thumb__x::before{inset:-11px}  /* 22 + 22 = 44 */
  .pd-file__ic.is-play{position:relative}
  .pd-file__ic.is-play::before{content:"";position:absolute;inset:-4px}  /* «Прослушать» 36 + 8 = 44 */
  .pd-check-box::before{content:"";position:absolute;inset:-12px}
  .pd-go,.pd-go.is-blocked{min-height:48px}
  .pd-go__price{height:36px}
  .pd-input,.pd-dropdown{min-height:var(--pd-h-touch);font-size:16px}
  .pd-textarea{font-size:16px}

  .pd-day{margin-bottom:16px}
  .pd-day__hd{margin-bottom:12px}
  .pd-day__title{font-size:var(--pd-fs-4)}
  .pd-day__sum b{font-size:var(--pd-fs-2)}
  .pd-grid,.pd-grid[data-density=dense]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}
  .pd-tile__cap{padding-top:8px}
  .pd-tile__ov{display:none}
  /* «⋯» справа сверху (g5 .more); плашка пропорции спускается под неё */
  .pd-tile__more{display:grid;position:absolute;right:6px;top:6px;bottom:auto;z-index:5;width:32px;height:32px;border-radius:var(--pd-r-3);background:rgba(11,18,32,.8)}
  .pd-tile__more::before{content:"";position:absolute;inset:-6px}
  .pd-plate--tr{top:44px}
  .pd-pstate{padding:0 10px}
  .pd-pstate__timer{font-size:26px}
  .pd-pstate__why{-webkit-line-clamp:2}
  .pd-pstate .pd-btn{height:36px;padding:0 14px;border-radius:9px}

  /* док → свёрнутая строка с safe-area, композер → лист */
  .pd-dockwrap{left:0;padding:var(--pd-dock-fade) 12px calc(12px + env(safe-area-inset-bottom))}
  .pd-dock{display:none}
  .pd-mdock{display:flex}
  .pd-sheet.is-open~.pd-dockwrap .pd-mdock{visibility:hidden}

  /* поповеры и меню — нижние листы */
  .pd-pop,.pd-menu{position:fixed;left:8px;right:8px;top:auto;bottom:calc(8px + env(safe-area-inset-bottom));width:auto;max-width:none;max-height:78vh;overflow:auto;border-radius:16px;z-index:calc(var(--pd-z-sheet-2) + 1);padding:10px 10px 14px;overscroll-behavior:contain}
  .pd-pop.is-open{max-height:min(78vh,calc(100dvh - 72px - env(safe-area-inset-top)))}
  .pd-pop::before,.pd-menu::before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--pd-border-2);margin:0 auto 6px}
  .pd-pop__row{min-height:48px;font-size:var(--pd-fs-4)}
  .pd-menu__item{min-height:48px;font-size:var(--pd-fs-4);align-items:center}
  .pd-menu__item.has-why{align-items:flex-start}
  .pd-quick__b{min-height:52px}
  .pd-confirm{padding:12px 16px 14px}

  /* окно задачи — на весь экран */
  .pd-viewer{padding:0;background:var(--pd-page)}
  .pd-viewer__win{width:100%;height:100%;display:block;overflow:auto;border-radius:0;box-shadow:none;background:var(--pd-page);overscroll-behavior:contain}
  .pd-viewer__l{display:block;overflow:visible}
  .pd-viewer__top,.pd-viewer__kbd,.pd-viewer__nav{display:none}
  .pd-mh{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:10;height:calc(60px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0;background:var(--pd-surface-2);border-bottom:1px solid var(--pd-line)}
  .pd-mh .pd-iconbtn{width:44px;height:44px}
  .pd-mh__cnt{flex:1;text-align:center;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-muted)}
  .pd-mh__cnt .pd-num{color:var(--pd-ink-2)}
  .pd-viewer__stage{padding:16px 16px 18px;height:auto}
  .pd-viewer__media,.pd-stagebox{height:auto;width:min(100%,calc(52vh * 9 / 16));margin:0 auto}
  .pd-viewer__media.is-wide{width:100%}
  .pd-viewer__media.is-square{width:min(100%,52vh)}
  .pd-viewer__side{display:flex;flex-direction:column;border-left:0;background:var(--pd-page)}
  .pd-viewer__head{order:0;border-bottom:0;padding:16px 16px 4px}
  .pd-viewer__head .pd-iconbtn{display:none}
  .pd-viewer__foot{order:1;border-top:0;padding:10px 16px 6px;background:none}
  .pd-viewer__body{order:2;overflow:visible;padding:18px 16px calc(28px + env(safe-area-inset-bottom));-webkit-mask-image:none;mask-image:none}
  .pd-viewer__acts{grid-template-columns:repeat(3,1fr)}
  .pd-viewer__acts .pd-btn{height:64px;flex-direction:column;gap:5px;border-radius:12px;font-size:var(--pd-fs-2)}
  .pd-viewer__acts .pd-btn .pd-btn__lbl{display:none}
  .pd-viewer__acts .pd-btn small{display:block;font-size:var(--pd-fs-2);font-weight:700}
  .pd-viewer__foot .pd-btn--lg{height:52px}
  .pd-params dd{font-size:var(--pd-fs-3)}
  .pd-params>div{padding:10px 11px}

  .pd-toasts{top:auto;bottom:max(calc(12px + env(safe-area-inset-bottom)),calc(var(--pd-dock-h) - var(--pd-dock-fade) + 8px));right:16px;left:16px;width:auto;align-items:stretch}
  .pd-toasts__more{right:46px;bottom:auto;top:-13px;height:26px;padding:0 10px;z-index:1}  /* телефон: на верхнем крае тоста, зона нажатия 44 — ::before */
  .pd-toasts__more::before{inset:-9px -4px}
  html.pd-has-viewer .pd-toasts,html.pd-has-modal .pd-toasts{top:calc(68px + env(safe-area-inset-top));left:16px;right:16px;transform:none}
  html.pd-has-drawer .pd-toasts{right:16px}
  .pd-banner{margin-bottom:16px;align-items:flex-start;padding-top:10px;padding-bottom:10px;flex-wrap:wrap;row-gap:8px}
  .pd-banner__txt{flex:1 1 calc(100% - 40px)}            /* текст — на всю строку, кнопка — под ним (было 7 строк в колонке 130 px; приёмка 13.10) */
  .pd-banner>.pd-btn{margin-left:28px}
  /* боковая шторка → нижний лист (из team.css) */
  .pd-drawer{top:auto;left:0;width:100%;max-height:calc(100% - 24px - env(safe-area-inset-top));border-radius:16px 16px 0 0;box-shadow:0 -18px 50px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.07)}
  .pd-drawer.is-open{animation:pd-sheet-in var(--pd-t-slow) var(--pd-ease)}
  .pd-drawer::before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--pd-border-2);margin:9px auto 0;flex:none}
  .pd-drawer__hd{padding:10px 12px 12px 16px}
  .pd-drawer__body{padding:16px}
  .pd-drawer__foot{padding:12px 16px calc(14px + env(safe-area-inset-bottom))}
  .pd-drawer__foot .pd-btn{height:48px}
  .pd-drawer .pd-iconbtn,.pd-modal__hd .pd-iconbtn{width:44px;height:44px}
  .pd-modal{padding:0;place-items:end stretch}
  .pd-modal__win{width:100%;max-height:calc(100dvh - 16px - env(safe-area-inset-top));border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom)}
  .pd-modal__foot .pd-btn{height:48px;flex:1}
  /* опасное действие на телефоне: «Отмена» первой, обе в ряд */
  .pd-modal__foot{flex-wrap:nowrap}
  .pd-empty{padding:28px 0 24px}
  .pd-empty__ghosts{display:none}
  .pd-tb .pd-hint,.pd-tb__vs:has(+ .pd-hint){display:none}
  .pd-empty__title{font-size:var(--pd-fs-5)}
  .pd-empty__text{font-size:var(--pd-fs-3)}
  .pd-example{flex-direction:column;gap:6px}
  .pd-audio{flex-wrap:wrap}
  .pd-table--cards thead{display:none}
  .pd-table--cards,.pd-table--cards tbody,.pd-table--cards tr,.pd-table--cards td{display:block;width:100%}
  .pd-table--cards tr{padding:12px 14px;border-bottom:1px solid var(--pd-line)}
  .pd-table--cards td{height:auto;padding:3px 0;border:0;display:flex;justify-content:space-between;gap:12px}
  .pd-table--cards td[data-label]::before{content:attr(data-label);font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted)}
  .pd-table--cards td.is-num{text-align:right}
}
/* 360: «Длительность» (Geist 12.5, как до стекла) в трети окна задачи — поля ячейки на 3 px уже */
@media (max-width:374px){ .pd-params>div{padding-left:8px;padding-right:8px} }
@media (min-width:861px){
  .pd-phead__mline{display:none}
  .pd-scrim--nav{display:none}
}

/* ───────────────────────── 24. Адаптив компонентов из раздела 21a ───────────────────────── */
@media (max-width:1320px){
  .pd-kpi__spark{display:none}
  .pd-kpi__row{align-items:flex-start}
  .pd-kpi__row>span:last-child{white-space:normal;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
}
@media (max-width:1180px){
  .pd-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pd-kpi__spark{display:block}
}
@media (max-width:860px){
  .pd-modelpop .pd-opt{padding:13px 12px}
  .pd-modelpop .pd-opt__name{white-space:normal;line-height:1.3}
  .pd-choose__r{min-height:44px}
  .pd-modelpop,.pd-limits,.pd-balpop{padding:10px 10px 14px}
  .pd-stepper{gap:6px}
  .pd-modal .pd-stepper{padding:0 16px 14px}
  .pd-stepper__lbl{display:none}
  .pd-stepper__s.is-now .pd-stepper__lbl{display:inline}
  .pd-howcards{grid-template-columns:1fr}
  .pd-search{width:100%}
  .pd-search .pd-kbd{display:none}
  .pd-search .pd-input{height:44px;font-size:16px;padding-left:36px}
  .pd-search>.pd-i{left:12px}
  .pd-search__x{width:36px;height:36px}
  .pd-fchip{height:var(--pd-h-touch)}
  .pd-fchip::before{content:"";position:absolute;inset:-2px 0}
  .pd-file__x{width:36px;height:36px}
  .pd-files--col .pd-file__x{width:44px;height:44px}
  .pd-fileslots,.pd-fileslots--3{grid-template-columns:1fr;gap:10px}
  .pd-fileslot{height:72px;padding:8px;border-radius:12px}
  .pd-fileslot__media{width:44px;height:56px;border-radius:8px}
  .pd-fileslot__media--audio{width:52px;height:52px}
  .pd-fileslot__media--tall{width:44px}
  .pd-fileslot__name{font-size:var(--pd-fs-4)}
  .pd-fileslot__play{width:44px;height:44px}
  .pd-fileslot__acts .pd-iconbtn{width:44px;height:44px}
  .pd-acard{padding:14px 12px 12px 14px}
  .pd-acard__txt{font-size:var(--pd-fs-3)}
  .pd-acard__pl .pd-audio__play{width:44px;height:44px}
  .pd-acard__pl .pd-wave{gap:1.5px}
  .pd-jobs{display:block}
  .pd-jobrow,.pd-jobs>.pd-jobrow{grid-template-columns:52px minmax(0,1fr) 44px;grid-template-areas:"th inf more" "st st st";gap:10px 12px;padding:12px}
  .pd-jobrow>.pd-thumb{width:52px;height:52px}
  .pd-jobrow__act{display:none}
  .pd-jobrow__more{display:grid}
  .pd-compare{grid-template-columns:1fr}
  .pd-compare__ar{transform:rotate(90deg);height:20px}
  .pd-ba,.pd-ba.is-side{height:auto;width:min(100%,calc(52vh * 9 / 16));margin:0 auto}
  .pd-ba.is-side{width:100%}
  .pd-cal__d{height:44px}
  .pd-monthgrid>button{height:44px}
  .pd-persons{grid-template-columns:1fr}
  .pd-person{min-height:60px}
  .pd-face__lbl{height:28px}
  .pd-qr{display:none}
  .pd-browser__url{font-size:var(--pd-fs-1)}
  .pd-browser--page{height:52vh}
  .pd-browser--page.is-phone{width:100%;border-radius:14px;box-shadow:0 0 0 1px rgba(255,255,255,.1)}
  .pd-tips--box{padding:12px 14px 14px}
  .pd-viewer__acts--2,.pd-viewer__acts--2eq{grid-template-columns:repeat(2,1fr)}
  .pd-viewer__acts--4{grid-template-columns:repeat(4,1fr)}
  .pd-kpis{gap:10px}
  .pd-kpi{padding:14px 14px 12px}
  .pd-kpi__val{font-size:21px;margin-top:6px}
  .pd-kpi__lbl{font-size:var(--pd-fs-2)}
  .pd-kpi__spark{display:none}
  .pd-kpi__row{margin-top:7px;align-items:flex-start}
  .pd-kpi__row>span:last-child{white-space:normal;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .pd-panel__hd{padding:14px 14px 8px 16px;min-height:0}
  .pd-panel__body{padding:4px 16px 16px}
  .pd-panel__foot{padding:6px 16px}
  .pd-sec{margin-top:26px}
  .pd-sec__hd{flex-wrap:wrap;gap:4px 10px}
  .pd-sec__t{font-size:var(--pd-fs-4)}
  .pd-sec__sub{font-size:var(--pd-fs-2)}
  .pd-amounts__b{height:44px;padding:0 14px}
  .pd-kv{grid-template-columns:minmax(104px,auto) minmax(0,1fr)}
  .pd-note{margin:-6px 0 16px}
  .pd-lim{max-width:none}
  .pd-day__hd{flex-wrap:wrap;row-gap:2px}
  .pd-day__hd .pd-day__ln{min-width:12px}
  /* 21b на телефоне */
  .pd-chain{grid-column:1/-1}
  .pd-chain::before{inset:-8px -8px -10px;border-radius:14px}
  .pd-chain__ar{left:-18px;top:calc((100% - 70px) / 2 - 12px)}
  .pd-chain>.pd-tile:nth-child(odd) .pd-chain__ar{display:none}
  .pd-chain__acts{width:100%}
  .pd-chain__acts .pd-btn{flex:1;height:44px}
  .pd-xf__stage{height:min(38vh,320px)}
  .pd-xf__strip{height:56px}
  .pd-xf__mark{min-width:18px}
  .pd-xf__mark::after{content:"";position:absolute;inset:-6px -13px;pointer-events:auto;cursor:ew-resize}  /* маркер — ползунок с зоной 44 px; события всплывают в полосу кадров */
  .pd-xf__row .pd-iconbtn{width:44px;height:44px}
  .pd-cgrid{gap:14px 10px}
  .pd-photos{grid-template-columns:1.35fr 1fr 1fr 1fr;gap:8px}
  .pd-ph b{font-size:var(--pd-fs-2)}
  .pd-ph small{display:none}
  .pd-ph__re{left:6px;bottom:6px}
  .pd-ph__x{width:32px;height:32px}
  .pd-drop,.pd-ghost{display:none}
}

/* ═══════════════════════════════════════════════════════════════════════════
   25. Поднято в v4 (CRITIQUE3 M4): пачка картинок в одной плитке (были локальными p-* в Картинках)
   Разметка: <div class="pd-tile"><div class="pd-poster pd-set is-multi" style="--h:280px;grid-template-columns:…">
               <div class="pd-set__cell">картинка + .pd-tile__ov</div>… плашки .pd-plate — на .pd-set</div>…</div>
   Ячейка в работе — .pd-set__pend (поверх ячеек, экран задаёт left/top/width/height), не получилась — .pd-set__fail
   (.pd-ring.pd-ring--s + b + small). Раскладку рядов по пропорциям считает экран.
   ═══════════════════════════════════════════════════════════════════════════ */
.pd-set{display:grid;gap:3px;height:var(--h);aspect-ratio:auto;background:#060b15}
.pd-set.is-slow{box-shadow:0 0 0 1px rgba(255,178,36,.34)}
.pd-set__cell{position:relative;overflow:hidden;min-width:0;min-height:0;background:var(--pd-surface-2)}
.pd-set__cell>svg,.pd-set__cell>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}  /* №5: без приближения кадра на наведении */
.pd-set__cell .pd-tile__ov{padding:8px}
/* действия — у картинки под курсором, а не у всей пачки */
.pd-tile:hover .pd-set__cell .pd-tile__ov,.pd-tile:focus-within .pd-set__cell .pd-tile__ov{opacity:0}
.pd-tile .pd-set__cell:hover .pd-tile__ov,.pd-tile .pd-set__cell.is-hover .pd-tile__ov,.pd-tile .pd-set__cell:focus-within .pd-tile__ov{opacity:1}
.pd-set__cell:hover .pd-tile__acts>*,.pd-set__cell.is-hover .pd-tile__acts>*,.pd-set__cell:focus-within .pd-tile__acts>*{transform:none;opacity:1}
.pd-set.is-multi .pd-set__cell::after{content:"";position:absolute;inset:0;z-index:6;pointer-events:none;transition:box-shadow var(--pd-t-fast)}
.pd-set.is-multi .pd-set__cell:hover::after,.pd-set.is-multi .pd-set__cell.is-hover::after{box-shadow:inset 0 0 0 2px rgba(255,255,255,.6)}
.pd-set:has(.is-hover)>.pd-plate--br{opacity:0}
.pd-set:has(.pd-plate--tr.pd-plate--warn) .pd-plate--tl{max-width:calc(100% - 104px)}
.pd-set__pend{position:absolute;z-index:3;overflow:hidden}
.pd-set__pend .pd-pstate{padding:10px 8px}
.pd-set__pend .pd-pstate__h{max-width:220px}
.pd-set__fail{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px;text-align:center}
.pd-set__fail b{font-size:var(--pd-fs-2);font-weight:800;color:#fff}
.pd-set__fail small{font-size:var(--pd-fs-2);font-weight:700;color:var(--pd-good)}
@media (max-width:860px){
  .pd-set__cell .pd-tile__ov{display:none}
  .pd-set>.pd-tile__more{z-index:8}
  .pd-fchip__x::before{inset:-9px}   /* сброс фильтра-чипа: зона 44 px (было локально в Статистике) */
  .pd-viewer__stage:has(.is-ar){container-type:normal}
  .pd-viewer__media.is-ar,.pd-stagebox.is-ar{width:min(100%,calc(52vh * var(--ar)));margin:0 auto}
}

/* ───────── Официальные знаки моделей (lobe-icons 1.95.1, MIT; 2026-10-10) ─────────
   Знак в фирменных цветах компании на нейтральной тёмной плитке; OpenAI и ElevenLabs — белый знак на чёрном, как их иконки приложений. */
.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,
.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync{
  background:linear-gradient(180deg,#17243b,#0d1627);color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 0 0 1px rgba(255,255,255,.08)}
.pd-glyph--gpt,.pd-glyph--eleven{background:#000;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 0 0 1px rgba(255,255,255,.16)}
.pd-glyph--deepseek .pd-i{color:#fff}
.pd-glyph:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:19px;height:19px}
.pd-glyph--l:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:27px;height:27px}
.pd-glyph--s:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:14px;height:14px}

/* ═══════════════════════════════════════════════════════════════════════════
   26. Шрифты: Geist — текст, Geist Mono — числа, цены, время (выбор Никиты 10.10 вместо Manrope и JetBrains Mono).
   Свои файлы public/vendor/fonts (без Google Fonts: блокировщик режет CDN). @font-face вставляет задача 04.6
   по ответу Google (поднаборы latin и cyrillic, переменный вес 100–900); без файлов — системный шрифт.
   ═══════════════════════════════════════════════════════════════════════════ */
/* Шрифты Geist и Geist Mono — свои файлы: @font-face в /vendor/fonts/fonts.css (подключён в index.html, блок @@FONTS; задача 04.6). */
:root{--pd-font:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;--pd-mono:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace}

/* ═══════════════════════════════════════════════════════════════════════════
   27. Скорость (спека §7) — поверх правил макета выше (перенос остаётся проверяемым: правки только здесь).
   • Размытые фоны — крошечное превью (~24 px) с сервера, которое растягивает браузер: само мягкое, без filter.
     Экран кладёт <img> c Job.outputs[0].blur / .tiny в .pd-amb, .pd-pstate__blur, .pd-viewer__amb.
   • Мерцания и «пробеги» — только transform/opacity (было background-position — перерисовка слоя каждый кадр).
   • backdrop-filter — только у дока и окна задачи; плашки на постерах и шапки телефона — плотная заливка без размытия.
   • Дни ленты вне экрана не рисуются (content-visibility), размер помнится (contain-intrinsic-size: auto).
   ═══════════════════════════════════════════════════════════════════════════ */
.pd-amb>*{filter:none;transform:scale(1.15);object-fit:cover}
.pd-amb::after{background:radial-gradient(ellipse at 50% 50%,transparent 35%,rgba(5,9,18,.5)),rgba(5,9,18,.42)}
.pd-pstate__blur,.pd-pstate__blur--dim,.pd-stagebox .pd-pstate__blur{filter:none}
.pd-pstate__blur>*{object-fit:cover;transform:scale(1.1)}
.pd-pstate__blur::after{content:"";position:absolute;inset:0;background:rgba(5,9,18,.58)}
.pd-pstate__blur--dim::after{background:rgba(5,9,18,.7)}
.pd-viewer__amb>*{filter:none;object-fit:cover}
.pd-viewer__amb::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 70% 70% at 50% 48%,rgba(5,9,18,.7),rgba(5,9,18,.86))}   /* не светлее макета: подписи «листать ленту», «закрыть» читаются на светлом ролике (приёмка 13.10) */
/* бегущий блик генерации и скелетона — сдвиг псевдоэлемента */
@keyframes pd-sweep{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.pd-pstate__shim{background:none;animation:none;overflow:hidden}
.pd-pstate__shim::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(94,208,250,.07) 50%,transparent 70%);transform:translateX(-100%);animation:pd-sweep 2.4s linear infinite}
.pd-skel{background:var(--pd-surface);animation:none}
.pd-skel::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.045) 50%,transparent 80%);transform:translateX(-100%);animation:pd-sweep 1.6s linear infinite}
/* стекло без размытия: плашки постера, кнопки на постере, подпись лица */
.pd-btn--glass,.pd-plate,.pd-tile__play,.pd-face__lbl{-webkit-backdrop-filter:none;backdrop-filter:none}
.pd-btn--glass,.pd-face__lbl,.pd-plate:not(.pd-plate--warn):not(.pd-plate--bad):not(.pd-plate--good){background:rgba(11,18,32,.82)}
.pd-tile__play{background:rgba(11,18,32,.8)}
/* дни вне экрана: браузер их не раскладывает и не рисует, пока до них не долистали */
/* поля по 12 px с отрицательным отступом: рамка цепочки (.pd-chain::before, −10 px) и кольцо «готово» не обрезаются содержимым дня */
.pd-day{content-visibility:auto;contain-intrinsic-size:auto 640px;padding:0 12px 12px;margin:0 -12px 12px}
/* строка ленты под видимым тостом (kit.js udToast) — гаснет, как над доком */
.pd-tile__txt.is-under-toast,.pd-tile__meta.is-under-toast,.pd-day__hd.is-under-toast,.pd-chain__ft.is-under-toast,.pd-jobrow.is-under-toast,.pd-acard>.is-under-toast,[data-under-dock].is-under-toast{opacity:0}
/* нет связи (оболочка ставит html.pd-offline): ленту чуть приглушаем, запуск блокирует студия */
html.pd-offline .pd-tile{opacity:.6}
@media (max-width:860px){
  .pd-mhdr{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--pd-surface-2)}
  .pd-mh{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--pd-surface-2)}
}
/* слабая машина (core/perf.js → html.pd-lowfx): затемнение под окном задачи плотнее */
html.pd-lowfx .pd-viewer{background:rgba(3,7,15,.94)}
html.pd-lowfx .pd-pstate__shim::before,html.pd-lowfx .pd-skel::after{animation:none;display:none}
html.pd-lowfx .pd-dot--pulse,html.pd-lowfx .pd-nav__badge--run .pd-dot{animation:none}
/* Высота дока не наследуется: kit.js (dockVars) ставит её только потребителям — .pd-main, .pd-toasts, [data-dock-h].
   Наследуемая переменная на <html> при сворачивании дока пересчитывала стили всех плиток ленты
   (замер 11.10: ≈35 мс при CPU ×4 на 300 плитках — длинная задача в кадре сворачивания). */
@property --pd-dock-h{syntax:'<length>';inherits:false;initial-value:0px}
/* «Под доком» гаснет мгновенно, без перехода opacity: при прокрутке край дока пересекают ~1100 строк за проход,
   и каждый переход пересчитывался главным потоком на каждом кадре (замер 13.10, «Картинки» 300 плиток, CPU ×4:
   без перехода 58.9 к/с против 55.2). Зона --pd-dock-fade над доком и так мягкая. Постер — motion.css §9 (без opacity). */
.pd-tile__txt,.pd-tile__meta,.pd-day__hd,.pd-chain__ft,.pd-jobs,.pd-jobrow,.pd-acard,.pd-acard>*,[data-under-dock]{transition:none}
/* Окно задачи — за 1 кадр (спека §7): затемнение сразу, само окно проявляется с 40 % и чуть поднимается. Было: всё окно с
   opacity 0 в первом кадре — первый видимый кадр только второй (приёмка 13.10, трасса «Картинок»: +1 кадр ≈ 25–40 мс при CPU ×4) */
.pd-viewer.is-open,.pd-modal.is-open{animation:none}
.pd-viewer.is-open>.pd-viewer__win,.pd-modal.is-open>.pd-modal__win{animation:pd-viewer-in var(--pd-t) var(--pd-ease)}
/* прогрев окна задачи в простое (studio.js warmSoon): раскладка есть, на экране ничего */
.pd-viewer.is-warm{display:grid;visibility:hidden;pointer-events:none}
@keyframes pd-viewer-in{from{opacity:.4;transform:translateY(6px) scale(.992)}to{opacity:1;transform:none}}
/* поповеры и меню — тоже видны с первого кадра (с 40 %, а не с нуля): спека §7 «открываются за 1 кадр» (приёмка 13.10) */
@keyframes pd-pop-in{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ═══════════════════════════════════════════════════════════════════════════
   28. Под настоящие файлы (в макетах — SVG): миниатюры, стопка, тост, вложения окна; значок звука в миниатюре
   ═══════════════════════════════════════════════════════════════════════════ */
.pd-thumb>img,.pd-thumb>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pd-thumb__ic{position:absolute;inset:0;display:grid;place-items:center;color:var(--pd-sky);background:var(--pd-surface-2)}
.pd-mdock__stk>span>img,.pd-stack>span>img,.pd-toast__thumb>img,.pd-refs__t>img{width:100%;height:100%;display:block;object-fit:cover}
.pd-studio-more{min-height:1px}
/* низ ленты студии (21.10, «Показать ещё»): кнопка подгрузки, «Загружаем…», ошибка с «Повторить», «Это все работы».
   Высота одна во всех состояниях — смена надписи не двигает ленту */
.pd-more{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;min-height:64px;padding:4px 0 12px}
.pd-more .pd-btn{min-width:180px;justify-content:center}
.pd-more .pd-btn.is-busy{cursor:default;opacity:.8}
.pd-more__t{display:inline-flex;align-items:center;gap:6px;font-size:var(--pd-fs-3);font-weight:600;color:var(--pd-ink-2)}
.pd-more--end{flex-wrap:nowrap;gap:12px;font-size:var(--pd-fs-2);font-weight:600;color:var(--pd-muted);text-align:center}
.pd-more__ln{flex:1;max-width:200px;height:1px;background:var(--pd-line)}
/* атрибут hidden главнее display:flex/grid правил kit (поле промпта .pd-dock__pcol и др.) — главный документ плана, договорённость 3 */
[hidden]{display:none!important}

/* ═══════════════════════════════════════════════════════════════════════════
   29. Финал части 05 (05.80) — просьбы экранов к kit (LOG-05, «Вопросы к части 04»). Правки поверх правил выше.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{--pd-amber:var(--pd-warn)}
/* значение чипа словом («как у фото», «Авто») — обычным шрифтом: в моно пробел шириной в цифру (правило 7 — моно только у чисел) */
.pd-chip__v--word{font-family:var(--pd-font);font-weight:600}
/* «Свернуть» без поля промпта (слоты Липсинка, Аватары «звук из файла») — у правого края, а не посередине дока */
.pd-dock__fold{margin-left:auto}
/* окно задачи: колонка кнопки не шире ячейки — длинная подпись с многоточием, «Ещё» не уезжает за край (Картинки: 3 кнопки + «Ещё») */
.pd-viewer__acts{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 40px}
.pd-viewer__acts--2{grid-template-columns:minmax(0,1fr) 40px}
.pd-viewer__acts--2eq{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.pd-viewer__acts--4{grid-template-columns:repeat(3,minmax(0,1fr)) 40px}
.pd-viewer__acts .pd-btn{min-width:0}
.pd-viewer__acts .pd-btn__lbl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* полоса «Внимание» явным модификатором (без модификатора .pd-banner и так янтарная) */
.pd-banner--warn{--pd-t:var(--pd-warn-rgb)}
/* роль миниатюры в меню студии: выбранная — белым, галочка справа */
.pd-menu__item.is-sel{color:#fff}
.pd-menu__ck{margin-left:auto;flex:none;color:var(--pd-blue)}
/* ▶/■ у звука в слоте студии: прослушать до запуска */
button.pd-fileslot__media{border:0;padding:0;font:inherit;cursor:pointer}
.pd-fileslot__aplay:hover{background:linear-gradient(160deg,rgba(59,139,255,.5),rgba(94,208,250,.2))}
.pd-fileslot__aplay[aria-pressed="true"]{background:var(--pd-accent)}
@media (max-width:860px){
  .pd-viewer__acts{grid-template-columns:repeat(3,minmax(0,1fr))}
  .pd-viewer__acts--2,.pd-viewer__acts--2eq{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pd-viewer__acts--4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* лист композера на телефоне: пустой промпт — с подсказкой, как в доке (приёмка 13.10: пустая рамка 132 px) */
.pd-mcomp__prompt:empty::before{content:attr(data-ph);color:var(--pd-muted)}
/* значок вместо превью в «В пачке» и «Вложениях» окна задачи (звук, видео без постера) — по центру, не на всю ячейку */
.pd-refs__t>svg.pd-i{width:26px;height:26px;margin:13px auto;color:var(--pd-sky)}   /* коробка 52: (52−26)/2 */

/* ═══════════════════════════════════════════════════════════════════════════
   30. Стекло №5 и точечная сетка (15.10, решение Никиты: вариант №5 «Лёгкое матовое стекло» + фон b2 «Точечная сетка»).
   Спека — redesign/VISUAL-GLASS5-SPEC.md §3. Фон — неподвижные слои под контентом, рисуются один раз; двигается только
   .pd-spot (transform, motion.js). backdrop-filter — ровно у двух неподвижных слоёв (сайдбар, док), только при @supports,
   с -webkit- парой, размытие литералом. Фон — обычный background-image на fixed-слое (без attachment), без анимаций в разделе.
   ═══════════════════════════════════════════════════════════════════════════ */
.pd-bg{position:fixed;inset:0;z-index:var(--pd-z-bg);pointer-events:none;contain:strict}
/* Свет и знак Pixel за стеклом сайдбара — ровно по карточке (10…232, то же скругление): раньше слой был шире и выше карточки,
   и свет выглядывал за её правый верхний край прямоугольником (замечание Никиты 15.10.2026) */
.pd-bk{position:absolute;left:10px;top:10px;bottom:10px;width:calc(var(--pd-sb-w) - 10px);border-radius:var(--pd-r-5);overflow:hidden;contain:strict;
  background:radial-gradient(230px 170px at 50% 3%,rgba(8,102,255,.24),transparent 72%),radial-gradient(260px 230px at 45% 84%,rgba(8,102,255,.14),transparent 70%)}
.pd-bk i{position:absolute;width:42px;height:42px;border-radius:10px}
.pd-bk i:nth-child(1){left:58px;bottom:230px;background:rgba(8,102,255,.66)}
.pd-bk i:nth-child(2){left:116px;bottom:230px;background:rgba(59,139,255,.5)}
.pd-bk i:nth-child(3){left:58px;bottom:172px;background:rgba(59,139,255,.5)}
.pd-bk i:nth-child(4){left:126px;bottom:162px;width:36px;height:36px;border-radius:9px;background:rgba(94,208,250,.6)}
@media (max-height:879px){.pd-bk i{display:none}}   /* знак ушёл бы под пункты меню — остаётся только свет */
/* Сетка начинается от края контентной колонки — на всех экранах точки в одних местах */
.pd-dots{position:absolute;left:var(--pd-sb-w);top:0;right:0;bottom:0;contain:strict;
  background:radial-gradient(circle at 1px 1px,rgba(186,208,248,.10) .72px,rgba(186,208,248,0) 1.2px) var(--pd-dot-x) var(--pd-dot-y)/var(--pd-dot-step) var(--pd-dot-step)}
/* У дока гуще (шаг 11): промежуточные узлы проявляются эллипсом вокруг дока; маска неподвижна */
.pd-dots::after{content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 1px 1px,rgba(120,172,255,.12) .72px,rgba(120,172,255,0) 1.2px) 22px 10px/22px 22px,
    radial-gradient(circle at 1px 1px,rgba(120,172,255,.12) .72px,rgba(120,172,255,0) 1.2px) 11px 21px/22px 22px,
    radial-gradient(circle at 1px 1px,rgba(120,172,255,.12) .72px,rgba(120,172,255,0) 1.2px) 22px 21px/22px 22px,
    radial-gradient(circle at 1px 1px,rgba(150,190,255,.06) .72px,rgba(150,190,255,0) 1.2px) 11px 10px/22px 22px;
  -webkit-mask-image:radial-gradient(ellipse 720px 300px at 50% calc(100% - 130px),#000 18%,rgba(0,0,0,.45) 55%,transparent 100%);
  mask-image:radial-gradient(ellipse 720px 300px at 50% calc(100% - 130px),#000 18%,rgba(0,0,0,.45) 55%,transparent 100%)}
html:not(.pd-has-dock) .pd-dots::after{display:none}   /* экраны без дока («Команда», формы) — без сгущения */
/* Пятно под курсором: сцена обрезает его по контентной колонке; двигаются только .pd-spot и его точки (transform) */
.pd-spots{position:absolute;left:var(--pd-sb-w);top:0;right:0;bottom:0;overflow:hidden;contain:strict;opacity:0;transition:opacity .3s var(--pd-ease)}
.pd-spots.is-on{opacity:1}
.pd-spot{position:absolute;left:0;top:0;width:440px;height:440px;margin:-220px 0 0 -220px;border-radius:50%;overflow:hidden;contain:strict;will-change:transform;transform:translate3d(-9999px,-9999px,0);
  background:radial-gradient(closest-side,rgba(8,102,255,.12),rgba(8,102,255,.10) 35%,rgba(8,102,255,.05) 68%,rgba(8,102,255,0));
  -webkit-mask-image:radial-gradient(closest-side,#000 35%,rgba(0,0,0,.6) 65%,transparent);mask-image:radial-gradient(closest-side,#000 35%,rgba(0,0,0,.6) 65%,transparent)}
.pd-spot i{position:absolute;left:0;top:0;width:462px;height:462px;will-change:transform;
  background:radial-gradient(circle at 1px 1px,rgba(94,208,250,.12) 1.05px,rgba(94,208,250,0) 1.5px) 0 0/22px 22px}
/* Где пятна нет (сетка остаётся — она неподвижна). pd-lowfx, pd-lock и окно задачи — motion.css §9 */
html.pd-lite .pd-spots,html.pd-has-modal .pd-spots{opacity:0}
@media (hover:none),(prefers-reduced-motion:reduce){.pd-spots{display:none}}

/* Стекло №1 (сайдбар) и №2 (док) — заливки из токенов §1, размытие только литералом */
.pd-sb{background:var(--pd-sb-light),var(--pd-sb-fill);border:1px solid var(--pd-sb-edge);box-shadow:inset 0 1px 0 rgba(94,208,250,.07)}
.pd-dock{background:var(--pd-dk-light),var(--pd-dk-fill);border:1px solid var(--pd-dk-edge);box-shadow:0 18px 44px rgba(0,0,0,.5),inset 0 1px 0 rgba(94,208,250,.08)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  @media (min-width:861px){
    html:not(.pd-lite) .pd-sb{-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}
    html:not(.pd-lite) .pd-dock{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
  }
}
/* Фокус в доке — мгновенно, без перехода тени */
.pd-dock:focus-within{box-shadow:0 0 0 1px rgba(59,139,255,.32),0 24px 70px rgba(8,102,255,.16),inset 0 1px 0 rgba(94,208,250,.08)}
/* Подложка под доком: неподвижная, внутри fixed-обёртки; яркий постер под стеклом не съедает текст */
.pd-dockwrap::before{content:"";position:absolute;left:0;right:0;top:-80px;bottom:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(11,18,32,0),rgba(11,18,32,.32) 26%,rgba(11,18,32,.55) 60%,rgba(11,18,32,.68) 88%,rgba(11,18,32,.9))}
html.ch-page .pd-dockwrap::before{top:auto;height:170px;background:linear-gradient(180deg,rgba(11,18,32,0),rgba(11,18,32,.5) 45%,rgba(11,18,32,.7))}
/* Постер под доком просвечивает сквозь стекло; подписи и строки под ним гаснут, как раньше (kit.js PD.underDock) */
@media (min-width:861px){.pd-poster.is-under-dock{opacity:1}.pd-chain.is-under-dock::before{opacity:1}}

/* Плотный режим: лёгкий режим, «уменьшить прозрачность», браузер без backdrop-filter */
html.pd-lite{--pd-sb-fill:#0f1a2e;--pd-dk-fill:#131f33;--pd-sb-edge:#1c2940;--pd-dk-edge:#2c3c5c}
html.pd-lite .pd-bk,html.pd-lite .pd-dockwrap::before{display:none}
@media (prefers-reduced-transparency:reduce){
  :root{--pd-sb-fill:#0f1a2e;--pd-dk-fill:#131f33;--pd-sb-edge:#1c2940;--pd-dk-edge:#2c3c5c}
  html:not(.pd-lite) .pd-sb,html:not(.pd-lite) .pd-dock{-webkit-backdrop-filter:none;backdrop-filter:none}   /* та же сила, что у правила стекла, и ниже него */
  .pd-bk,.pd-dockwrap::before{display:none}
}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  :root{--pd-sb-fill:#0f1a2e;--pd-dk-fill:#131f33;--pd-sb-edge:#1c2940;--pd-dk-edge:#2c3c5c}
  .pd-bk,.pd-dockwrap::before{display:none}
}

/* Лёгкий режим — строка сайдбара (kit.js sidebarHTML, shell.js) */
.pd-litesw{display:flex;align-items:center;gap:10px;width:100%;height:32px;margin-top:4px;padding:0 8px 0 10px;border-radius:var(--pd-r-3);font-size:var(--pd-fs-3);font-weight:700;color:var(--pd-ink-2);text-align:left;flex:none}
.pd-litesw:hover{background:rgba(24,38,66,.72);color:#fff}
.pd-litesw>.pd-i{width:16px;height:16px;color:var(--pd-muted)}
.pd-litesw>span:not(.pd-switch){flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pd-switch--s{width:28px;height:16px}
.pd-switch--s::before{display:none}
.pd-litesw[aria-checked=true] .pd-switch--s{background:var(--pd-accent);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.pd-litesw[aria-checked=true] .pd-switch--s::after{transform:translateX(12px);background:#fff}

/* Телефон (≤860, g5-phone): стекла, сетки и пятна нет — всё плотное */
@media (max-width:860px){
  .pd-bk,.pd-dots,.pd-spots,.pd-dockwrap::before,.pd-litesw{display:none}
  .pd-sb{background:var(--pd-surface-2);border:0;border-right:1px solid var(--pd-line);border-radius:0 16px 16px 0;-webkit-backdrop-filter:none;backdrop-filter:none}
  .pd-dock{-webkit-backdrop-filter:none;backdrop-filter:none}
  .pd-dockwrap{background:linear-gradient(180deg,rgba(11,18,32,0),rgba(11,18,32,.84) 46%,#0b1220 72%)}
  .pd-mhdr{background:var(--pd-surface-2);border-bottom:1px solid var(--pd-line);-webkit-backdrop-filter:none;backdrop-filter:none}
}

/* ═══════════════════════════════════════════════════════════════════════════
   30a. №5 поверх правил выше (здесь — то, что иначе перебивают поздние разделы 21a–29)
   ═══════════════════════════════════════════════════════════════════════════ */
/* знаки моделей — новые размеры плиток знака (база 28, --l 36, в чипе модели 22) */
.pd-glyph:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:18px;height:18px}
.pd-glyph--l:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:23px;height:23px}
.pd-chip--model>.pd-glyph:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:15px;height:15px}
.pd-glyph--s{width:20px;height:20px;border-radius:5px}
.pd-glyph--s:is(.pd-glyph--gpt,.pd-glyph--claude,.pd-glyph--gemini,.pd-glyph--deepseek,.pd-glyph--banana,.pd-glyph--qwen,.pd-glyph--seedance,.pd-glyph--minimax,.pd-glyph--kling,.pd-glyph--eleven,.pd-glyph--sync) .pd-i{width:14px;height:14px}
/* мета плитки: знак модели — без подложки (как в макете: значок 13 px в строке меты) */
.pd-tile__mdl>.pd-glyph{width:13px;height:13px;border-radius:3px;background:none;box-shadow:none}
/* слоты и промпт одной строкой на ≥1280 (Kling Motion, Липсинк, Аватары со звуком), как b2 */
@media (min-width:1280px){
  .pd-dock.has-slots .pd-dock__top{flex-wrap:nowrap;row-gap:0}
  .pd-dock.has-slots .pd-dock__att{flex:none}
  .pd-dock.has-slots .pd-dock__att .pd-fileslots{display:flex;gap:8px}
  .pd-dock.has-slots .pd-dock__att .pd-fileslot{width:212px;padding-right:28px}
  .pd-dock.has-slots .pd-dock__att .pd-fileslot__acts{position:absolute;right:4px;top:4px}
  .pd-dock.has-slots .pd-dock__pcol{order:0;flex:1 1 0;flex-basis:0}
  .pd-dock.has-slots .pd-dock__pcol>.pd-dock__prompt{min-height:66px;max-height:66px;padding:8px 12px;border-radius:10px;background:var(--pd-on-glass);box-shadow:inset 0 0 0 1px var(--pd-border)}
  .pd-dock.has-slots .pd-dock__pcol>.pd-dock__prompt:focus{box-shadow:inset 0 0 0 1px var(--pd-accent),0 0 0 3px rgba(8,102,255,.16)}
  .pd-dock.has-slots .pd-dock__pcol>.pd-dock__prompt.pd-fade-b{-webkit-mask-image:none;mask-image:none}   /* у поля своя рамка — маска стирала её низ и углы; хватает полосы прокрутки и срезанной строки */
  .pd-dock.has-slots.has-ph .pd-dock__pcol>.pd-dock__prompt{height:min(var(--pd-ph),50vh);max-height:none}   /* высоту задал человек — и у поля со слотами */
}
/* Ноутбук и шире: фильтры статусов не влезли в строку тулбара студии — второй строкой целиком, с переносом, без прокрутки
   (kit.js tbRows: .is-wrap); первой строке и так тесно — «Все модели» значком, как на телефоне (.is-icons; и в поиске по промптам,
   там кнопка в обёртке .pd-hide-m). Разделитель перед лентой фильтров во второй строке не нужен.
   Распорка .pd-tb__sp между лентой фильтров и «Все модели» — без своего промежутка flex: с ним между ними было 16 px вместо 8,
   и у дизайнера на 1024 фильтры уходили второй строкой, когда до одной не хватало 1,6 px (решение Никиты 21.10 — первой строкой,
   пока помещаются) */
@media (min-width:861px){
  .pd-tb--rows>.pd-tb__sp{margin-left:-8px}
  .pd-tb--rows.is-wrap{flex-wrap:wrap;row-gap:8px}
  .pd-tb--rows.is-wrap>.pd-tb__scroll{order:1;flex:1 1 100%;flex-wrap:wrap;row-gap:4px;overflow:visible;padding:0;margin:0}   /* без прокрутки запас 4 px под кант не нужен — и не вылезает за тулбар */
  .pd-tb--rows.is-wrap>.pd-tb__vs:has(+ .pd-tb__scroll){display:none}
  .pd-tb--rows.is-icons .pd-btn[data-sa="mfpop"]{width:var(--pd-h-m);padding:0;gap:0;font-size:0}
  .pd-tb--rows.is-icons .pd-btn[data-sa="mfpop"]>.pd-i:last-child:not(:first-child){display:none}
  .pd-tb--rows.is-shrink>.pd-search--fill{flex:0 1 auto}   /* поиск с текстом на 861–890: поле ужимается, «Закрыть» в тулбаре */
}
/* Телефон: тулбар студии в две строки — «Мои | Команда» во всю ширину + значки 44, ниже — фильтры статусов (g5-phone) */
@media (max-width:860px){
  .pd-tb.pd-tb--rows{flex-wrap:wrap;overflow:visible;margin:0 0 12px;padding:0;row-gap:4px;-webkit-mask-image:none;mask-image:none}
  .pd-tb--rows>.pd-tb__vs,.pd-tb--rows>.pd-tb__sp,.pd-tb--rows>.pd-seg--icon{display:none}
  .pd-tb--rows>.pd-seg:not(.pd-seg--icon){flex:1 1 0;order:0;min-width:0}
  .pd-tb--rows>.pd-seg:not(.pd-seg--icon)>.pd-seg__btn{flex:1 1 0}
  .pd-tb--rows>.pd-btn[data-sa="mfpop"]{order:1;width:44px;padding:0;gap:0;font-size:0;background:var(--pd-surface);color:var(--pd-ink-2)}
  .pd-tb--rows>.pd-btn[data-sa="mfpop"]>.pd-i{width:18px;height:18px;color:currentColor}
  .pd-tb--rows>.pd-btn[data-sa="mfpop"]>.pd-i:last-child:not(:first-child){display:none}
  .pd-tb--rows>.pd-btn--tone[data-sa="mfpop"]{background:rgb(var(--pd-t) / var(--pd-tone-bg));color:rgb(var(--pd-t))}
  .pd-tb--rows>.pd-iconbtn{order:2;color:var(--pd-ink-2)}
  .pd-tb--rows>.pd-tb__scroll{order:3;flex:1 1 100%;min-width:0;overflow-x:auto;gap:2px;margin:0 -16px;padding:4px 16px}
  .pd-tb--rows:not(:has(>.pd-seg:not(.pd-seg--icon)))>.pd-tb__scroll{order:0;flex:1 1 0;margin:0 0 0 -16px;padding-right:4px}
  .pd-tb--rows>.pd-tb__scroll>.pd-filter{height:32px}
  /* «Сотрудник» (studio.js): второй строкой, перед фильтрами статусов — они листаются справа от него. Перенос строки — ::after
     во всю ширину между первой строкой (order 0–2) и второй (order 3): у ленты фильтров больше нет basis 100% */
  .pd-tb--rows:has(>.pd-tb__who)::after{content:"";order:2;flex:0 0 100%;height:0;margin-top:-4px}
  .pd-tb--rows>.pd-tb__who{order:3;height:32px;max-width:58%;margin-top:4px;margin-bottom:4px}
  .pd-tb--rows:has(>.pd-tb__who)>.pd-tb__scroll{flex:1 1 0;margin-left:0;padding-left:6px}
  .pd-tb__who .pd-fchip__v{max-width:150px}
  .pd-whopop__list{max-height:none}
  .pd-tb--rows>:last-child{margin-right:0}
  .pd-tb--rows>.pd-search{order:0;flex:1 1 0;width:auto}
  /* переключатель на телефоне крупнее (зона нажатия — ::before) */
  .pd-switch:not(.pd-switch--s){width:36px;height:20px}
  .pd-switch:not(.pd-switch--s)::after{width:16px;height:16px}
  .pd-switch:not(.pd-switch--s)[aria-checked=true]::after{transform:translateX(16px)}
  .pd-switchrow{min-height:44px}
  /* «Ещё N» на верхнем крае тоста не наезжает на кнопку тоста (36 px): поля тоста 12 */
  .pd-toast{padding-top:12px;padding-bottom:12px}
}
.pd-tile__mdl{margin-right:6px}

/* ═══════════════════════════════════════════════════════════════════════════
   30b. Сверка с макетами b2/g5 (арт-директор, 15.10): только вид, поведение прежнее
   ═══════════════════════════════════════════════════════════════════════════ */
/* Пустая колонка вложений (Озвучка «Текст → речь»: слотов нет) не сдвигает промпт на 22 px от ряда чипов */
.pd-dock__att:empty,.pd-dock__att:has(>.pd-fileslots:empty:only-child){display:none}
/* Kling Motion на ≥1280 (слоты и промпт одной строкой, как b2): «Свернуть» — строкой шапки дока над ними,
   чтобы коробка промпта доходила до правого края — ровно по главной кнопке */
@media (min-width:1280px){
  .pd-dock.has-slots:not(.is-collapsed):has(>.pd-dock__top>.pd-dock__pcol:not([hidden])){padding-top:40px}
  .pd-dock.has-slots:not(.is-collapsed):has(>.pd-dock__top>.pd-dock__pcol:not([hidden])) .pd-dock__fold{position:absolute;top:8px;right:8px;margin:0}
  /* «Развернуть поле» — в той же строке шапки, в углу; «Свернуть» — левее неё */
  .pd-dock.has-slots:not(.is-collapsed):has(>.pd-dock__top>.pd-dock__pcol:not([hidden])) .pd-dock__max{position:absolute;top:8px;right:8px;margin:0}
  .pd-dock.has-slots:not(.is-collapsed):has(>.pd-dock__top>.pd-dock__pcol:not([hidden])) .pd-dock__fold:has(+.pd-dock__max){right:40px}
}
/* Рамка цепочки MiniMax — концентрична плитке: радиус постера 12 + поле 10 */
.pd-chain::before{border-radius:22px}
@media (max-width:860px){.pd-chain::before{border-radius:20px}}
