/*
 * Каркас приложения Sloiko: шапка, подвал, раскладки кабинета и админки, оверлеи.
 * Токены — printlab-tokens.css, компоненты pl-* — printlab-components.css (копии из printlab-design/).
 * Здесь только значения из токенов (var(--…)); новые литеральные цвета не добавляем.
 */

[hidden] { display: none !important; }

a { color: var(--primary); }
a:hover { color: var(--primary-hover); }

.app-container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--space-24); }
.app-main { min-height: 60vh; }
.app-logo { display: inline-flex; align-items: center; flex: none; text-decoration: none; }
.app-logo__img { display: block; height: 36px; width: auto; }
.app-logo__img--dark, [data-theme="dark"] .app-logo__img--light { display: none; }
[data-theme="dark"] .app-logo__img--dark { display: block; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Числовые поля — без системных стрелок ▲▼ (нет в дизайн-системе); значение меняется вводом и клавишами ↑/↓. */
input[type="number"] { appearance: textfield; -moz-appearance: textfield; }
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }

/* ---------- Шапка сайта (PubHeader) ---------- */
.app-header { position: sticky; top: 0; z-index: var(--z-header); height: 72px; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: var(--space-32); padding: 0 var(--space-32); }
.app-header__nav { display: flex; gap: var(--space-24); font-size: 15px; font-weight: 600; flex-wrap: wrap; }
.app-header__nav a { color: var(--ink-muted); text-decoration: none; }
.app-header__nav a:hover, .app-header__nav a[aria-current] { color: var(--primary); }
.app-header__actions { margin-left: auto; display: flex; align-items: center; gap: var(--space-8); }
.app-header__actions .pl-btn--ghost.pl-btn--icon { color: var(--ink); }
.app-header__burger { display: none; }
.app-header__logo { display: inline-flex; flex: none; text-decoration: none; }
.app-header__logo-short { display: none; }
.app-header__avatar { margin-left: var(--space-8); text-decoration: none; }
.app-header__actions > turbo-cable-stream-source { display: none; }
.app-mobile-cabinet { display: none; }
.app-mobile-nav { display: flex; flex-direction: column; gap: var(--space-4); }
.app-mobile-nav a { display: flex; align-items: center; min-height: var(--touch-target); padding: 0 var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; font-weight: 600; }
.app-mobile-nav a[aria-current] { background: var(--primary-soft); color: var(--primary); }

@media (max-width: 1023px) {
  .app-header { height: 56px; gap: var(--space-4); padding: 0 var(--space-8) 0 var(--space-16); }
  .app-header .app-logo__img { height: 30px; }
  .app-header__nav, .app-header__cta { display: none; }
  .app-header__burger { display: inline-flex; }
}

/* Телефон: в строку — токены, уведомления, корзина и бургер; кабинет — в меню. На самых узких — знак вместо логотипа. */
@media (max-width: 479px) {
  .app-header__actions { gap: var(--space-4); }
  .app-header__avatar { display: none; }
  .app-mobile-cabinet { display: inline-flex; }
}
@media (max-width: 374px) {
  .app-header__logo-full { display: none; }
  .app-header__logo-short { display: inline-flex; }
}

/* ---------- Подвал (PubFooter) ---------- */
.app-footer { background: var(--surface); border-top: 1px solid var(--border); margin-top: var(--space-64); }
.app-footer__grid { max-width: var(--container-max); margin: 0 auto; padding: var(--space-48) var(--space-24) var(--space-32); display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--space-24); }
.app-footer__col { display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.app-footer__col a { color: var(--ink-muted); text-decoration: none; }
.app-footer__col a:hover { color: var(--primary); }
.app-footer__about { display: flex; flex-direction: column; gap: var(--space-12); font-size: 14px; line-height: 20px; }
.app-footer__bottom { max-width: var(--container-max); margin: 0 auto; padding: var(--space-16) var(--space-24) var(--space-32); border-top: 1px solid var(--border); display: flex; gap: var(--space-16); flex-wrap: wrap; align-items: center; font-size: 13px; color: var(--ink-subtle); }
.app-footer__bottom-end { margin-left: auto; display: flex; gap: var(--space-16); align-items: center; flex-wrap: wrap; }

@media (max-width: 1279px) {
  .app-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .app-footer__about { grid-column: 1 / -1; }
}

@media (max-width: 1023px) {
  .app-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: var(--space-32) var(--space-16); }
  .app-footer__about { grid-column: 1 / -1; }
  .app-footer__bottom { padding: var(--space-16); }
  .app-footer__bottom-end { margin-left: 0; }
}

/* ---------- Личный кабинет (CabNav): сайдбар как в админке — на всю высоту под шапкой, низ «Выйти · Свернуть» ---------- */
.cab-layout { display: flex; align-items: stretch; min-height: calc(100vh - 72px); }
.cab-layout__nav { position: sticky; top: 72px; height: calc(100vh - 72px); width: var(--sidebar-admin); flex: none; background: var(--surface); border-right: 1px solid var(--border); }
.cab-layout__main { flex: 1 1 auto; min-width: 0; max-width: 1032px; margin: 0 auto; padding: var(--space-32) var(--space-32) var(--space-64); display: flex; flex-direction: column; gap: var(--space-24); }
.cab-nav { height: 100%; display: flex; flex-direction: column; }
.cab-nav__profile { margin: var(--space-12) var(--space-12) 0; padding: var(--space-16); display: flex; flex-direction: column; gap: var(--space-12); }
.cab-nav__person { flex-wrap: nowrap; }
.cab-nav__avatar { width: 44px; height: 44px; font-size: 15px; flex: none; }
.cab-nav__who { min-width: 0; font-size: 15px; }
.cab-nav__who b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cab-nav__email { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cab-nav__badges { gap: var(--space-8); }
.cab-nav__list { flex: 1; overflow-y: auto; padding: var(--space-12); display: flex; flex-direction: column; gap: 2px; }
.cab-nav__link { position: relative; display: flex; align-items: center; gap: var(--space-12); min-height: var(--touch-target); padding: 0 var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; font-size: 14px; font-weight: 500; }
.cab-nav__link:hover { background: var(--surface-hover); color: var(--ink); }
.cab-nav__link[aria-current] { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.cab-nav__link--muted { color: var(--ink-muted); }
.cab-nav__icon { flex: none; }
.cab-nav__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cab-nav__badge { font-size: 12px; font-weight: 700; color: var(--accent-ink); }
.cab-nav__dot { display: none; top: 0; right: -4px; min-width: 16px; height: 16px; padding: 0 4px; font-size: 11px; line-height: 16px; }
.cab-nav__admin { display: flex; align-items: center; gap: var(--space-12); min-height: var(--touch-target); padding: 0 var(--space-12); margin: var(--space-12) var(--space-12) 0; border: 1px solid var(--primary); border-radius: var(--radius-md); background: var(--primary-soft); color: var(--primary); font-size: 14px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.cab-nav__admin:hover { background: var(--surface-hover); color: var(--primary); }
.cab-nav__admin svg { width: 20px; height: 20px; flex: none; }
.cab-nav__admin-arrow { margin-left: auto; }
.cab-nav__foot { padding: var(--space-12); border-top: 1px solid var(--border); display: flex; gap: var(--space-4); align-items: center; }
.cab-nav__foot .cab-nav__logout { flex: 1; }
.cab-nav__toggle { flex: none; width: var(--touch-target); min-width: var(--touch-target); height: var(--touch-target); }

/* Кабинет: меню свёрнуто до иконок (кнопка, cookie pl_cab_nav) — только на десктопе */
@media (min-width: 1024px) {
  .cab-nav__admin-arrow { display: none; }
  .cab-layout.is-nav-collapsed .cab-layout__nav { width: 72px; }
  .cab-layout.is-nav-collapsed .cab-nav__profile { padding: var(--space-8); margin: var(--space-12) var(--space-8) 0; align-items: center; background: none; border-color: transparent; box-shadow: none; }
  .cab-layout.is-nav-collapsed :is(.cab-nav__who, .cab-nav__badges, .cab-nav__label, .cab-nav__badge, .cab-nav__admin-arrow) { display: none; }
  .cab-layout.is-nav-collapsed .cab-nav__list { padding: var(--space-12) 0; align-items: center; }
  .cab-layout.is-nav-collapsed :is(.cab-nav__link, .cab-nav__admin) { width: var(--touch-target); justify-content: center; padding: 0; }
  .cab-layout.is-nav-collapsed .cab-nav__admin { margin: var(--space-8) auto 0; }
  .cab-layout.is-nav-collapsed .cab-nav__dot { display: block; }
  .cab-layout.is-nav-collapsed .cab-nav__foot { flex-direction: column; padding: var(--space-12) 0; }
  .cab-layout.is-nav-collapsed .cab-nav__foot .cab-nav__logout { flex: none; }
}

/* Mobile: меню — горизонтальная лента табов без иконок, «Выйти» — последним табом */
@media (max-width: 1023px) {
  .cab-layout { flex-direction: column; min-height: 0; }
  .cab-layout__nav { position: static; height: auto; width: 100%; background: none; border-right: 0; }
  .cab-layout__main { width: 100%; max-width: none; padding: var(--space-16) var(--space-16) var(--space-48); gap: var(--space-16); }
  .cab-nav { flex-direction: row; overflow-x: auto; gap: var(--space-8); padding: var(--space-16) var(--space-16) 0; }
  .cab-nav__list, .cab-nav__foot { display: contents; }
  .cab-nav__profile, .cab-nav__icon, .cab-nav__dot, .cab-nav__toggle { display: none; }
  .cab-nav__link { flex: none; white-space: nowrap; }
  .cab-nav__admin { flex: none; white-space: nowrap; margin: 0; }
}

/* Подсказка с названием пункта в свёрнутом меню (Stimulus nav-tooltip): справа от пункта, стрелка слева */
.nav-tooltip { position: fixed; z-index: var(--z-tooltip); pointer-events: none; white-space: nowrap; }
.nav-tooltip[hidden] { display: none; }
.nav-tooltip::after { left: -5px; top: calc(50% - 5px); bottom: auto; }

/* ---------- Админка (AdmNav) ---------- */
.adm-layout { min-height: 100vh; display: flex; }
.adm-layout__body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.adm-topbar { position: sticky; top: 0; z-index: var(--z-header); height: 64px; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: var(--space-16); padding: 0 var(--space-24); }
.adm-topbar h1 { margin: 0; }
.adm-topbar__actions { margin-left: auto; display: flex; gap: var(--space-8); align-items: center; }
.adm-main { padding: var(--space-24); }

.adm-nav { position: sticky; top: 0; height: 100vh; width: var(--sidebar-admin); flex: none; display: flex; flex-direction: column; background: var(--surface); border-right: 1px solid var(--border); }
.adm-nav__head { height: 64px; display: flex; align-items: center; gap: var(--space-8); padding: 0 20px; border-bottom: 1px solid var(--border); }
.adm-nav__logo { display: inline-flex; text-decoration: none; }
.adm-nav__logo .app-logo__img { height: 28px; }
.adm-nav__logo-short .app-logo__img { height: 32px; }
.adm-nav__logo-short { display: none; }
.adm-nav__list { flex: 1; overflow-y: auto; padding: var(--space-12); display: flex; flex-direction: column; gap: 2px; }
.adm-nav__group { display: block; padding: var(--space-16) var(--space-12) 6px; font: 700 11px/16px var(--font-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-subtle); }
.adm-nav__link { position: relative; display: flex; align-items: center; gap: var(--space-12); min-height: 40px; padding: 0 var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; font-size: 14px; font-weight: 500; }
.adm-nav__link:hover { background: var(--surface-hover); color: var(--ink); }
.adm-nav__link[aria-current] { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.adm-nav__label { flex: 1; }
.adm-nav__badge { font-size: 12px; font-weight: 700; color: var(--accent-ink); }
.adm-nav__dot { display: none; top: -4px; right: -2px; min-width: 16px; height: 16px; padding: 0 4px; font-size: 11px; line-height: 16px; }
.adm-nav__foot { padding: var(--space-12) var(--space-16); border-top: 1px solid var(--border); display: flex; gap: var(--space-4); align-items: center; }
.adm-nav__foot > .pl-avatar { flex: none; margin-right: 6px; }
.adm-nav__foot > .pl-btn { flex: none; width: 32px; min-width: 32px; }
.adm-nav__user { flex: 1; min-width: 0; font-size: 14px; line-height: 18px; }
.adm-nav__user b { display: block; hyphens: auto; overflow-wrap: break-word; }
.adm-nav__user span { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

/* Кнопка «Свернуть меню» (Stimulus sidebar): иконка — по состоянию раскладки */
.nav-toggle .nav-toggle__open, .is-nav-collapsed .nav-toggle .nav-toggle__close { display: none; }
.is-nav-collapsed .nav-toggle .nav-toggle__open { display: inline; }

/* Меню свёрнуто до иконок: кнопкой (.is-nav-collapsed, cookie pl_admin_nav) или на планшете 1024 */
.adm-layout.is-nav-collapsed .adm-nav { width: 72px; }
.adm-layout.is-nav-collapsed .adm-nav__head { justify-content: center; padding: 0; }
.adm-layout.is-nav-collapsed :is(.adm-nav__logo-full, .adm-nav__head .pl-badge, .adm-nav__group, .adm-nav__label, .adm-nav__badge, .adm-nav__user) { display: none; }
.adm-layout.is-nav-collapsed .adm-nav__logo-short { display: inline; }
.adm-layout.is-nav-collapsed .adm-nav__link { justify-content: center; min-height: var(--touch-target); padding: 0; }
.adm-layout.is-nav-collapsed .adm-nav__dot { display: block; }
.adm-layout.is-nav-collapsed .adm-nav__foot { flex-direction: column; justify-content: center; padding: var(--space-12) 0; }
.adm-layout.is-nav-collapsed .adm-nav__foot > .pl-avatar { margin-right: 0; }
@media (max-width: 1279px) {
  .adm-nav { width: 72px; }
  .adm-nav__head { justify-content: center; padding: 0; }
  .adm-nav__logo-full, .adm-nav__head .pl-badge, .adm-nav__group, .adm-nav__label, .adm-nav__badge, .adm-nav__user, .adm-nav__toggle { display: none; }
  .adm-nav__logo-short { display: inline; }
  .adm-nav__link { justify-content: center; min-height: var(--touch-target); padding: 0; }
  .adm-nav__dot { display: block; }
  .adm-nav__foot { flex-direction: column; justify-content: center; padding: var(--space-12) 0; }
  .adm-nav__foot > .pl-avatar { margin-right: 0; }
}

/* ---------- Оверлеи: модалка и drawer на нативном <dialog> ---------- */
dialog.pl-dialog { padding: 0; border: 0; background: transparent; color: var(--ink); max-width: none; max-height: none; overflow: visible; }
dialog.pl-dialog::backdrop { background: var(--scrim); }
dialog.pl-dialog--modal[open] { width: 100%; height: 100%; display: grid; place-items: center; }
dialog.pl-dialog--modal .pl-modal--m { width: 640px; }
dialog.pl-dialog--drawer[open] { position: fixed; inset: 0; width: 100%; height: 100%; }
dialog.pl-dialog--drawer .pl-drawer { position: fixed; }

@media (max-width: 767px) {
  dialog.pl-dialog--modal[open] { place-items: end stretch; }
  dialog.pl-dialog--modal .pl-modal { width: 100%; max-width: 100%; border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
  dialog.pl-dialog--drawer .pl-drawer { width: 100%; }
}

/* ---------- Тосты ---------- */
.app-toasts { position: fixed; right: var(--space-24); bottom: var(--space-24); z-index: var(--z-toast); display: flex; flex-direction: column-reverse; gap: var(--space-8); }
@media (max-width: 767px) {
  .app-toasts { left: var(--space-16); right: var(--space-16); bottom: var(--space-16); align-items: center; }
}

/* ---------- Ссылки в роли кнопок пагинации и вкладок ---------- */
.pl-pager a { min-width: 40px; height: 40px; padding: 0 var(--space-8); border-radius: var(--radius-md); color: var(--ink); font: 600 14px/40px var(--font-sans); font-variant-numeric: tabular-nums; text-align: center; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.pl-pager a:hover { background: var(--surface-hover); color: var(--ink); }
.pl-pager a[aria-current=page] { background: var(--primary); color: var(--on-primary); }
.pl-pager [aria-disabled=true] { color: var(--ink-disabled); pointer-events: none; }
.pl-pager-current { padding: 0 var(--space-4); font-size: 14px; color: var(--ink-muted); white-space: nowrap; }
a.pl-tab, a.pl-chip, a.pl-tokens-badge { text-decoration: none; }

/* ---------- Страницы ошибок ---------- */
.app-error { max-width: 1000px; margin: 0 auto; padding: var(--space-96) var(--space-24); display: flex; gap: var(--space-64); align-items: center; flex-wrap: wrap; }
.app-error__art { flex: none; max-width: 100%; height: auto; }
.app-error__text { flex: 1 1 400px; display: flex; flex-direction: column; gap: var(--space-16); }
.app-error__text h1, .app-error__text p { margin: 0; }
@media (max-width: 767px) {
  .app-error { padding: var(--space-48) var(--space-16); gap: var(--space-32); }
  .app-error__text h1 { font-size: 32px; line-height: 40px; }
}

/* ---------- Витрина компонентов /dev/ui ---------- */
.ui-section { display: flex; flex-direction: column; gap: var(--space-16); padding: var(--space-32) 0; border-bottom: 1px solid var(--border); }
.ui-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); align-items: start; }
.ui-printers { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ui-timeline { padding: 20px; max-width: 380px; }
.ui-chat { max-width: 560px; }
.ui-section h2 { margin: 0; }

/* ---------- Вход по коду (Auth, AuthCodeMobile) ---------- */
.auth-main { padding: var(--space-48) var(--space-24); display: flex; justify-content: center; }
.auth-card { width: 100%; max-width: 480px; padding: var(--space-32); display: flex; flex-direction: column; gap: 20px; }
.auth-form { display: flex; flex-direction: column; gap: 20px; }
.auth-switch { margin: 0; font-size: 14px; text-align: center; color: var(--ink-muted); }
.auth-back { display: none; }
.auth-mobile-only { display: none; }
@media (max-width: 767px) {
  .auth-main { padding: var(--space-32) var(--space-16); }
  .auth-card { padding: 0; border: 0; background: transparent; }
  .auth-back { display: inline-flex; margin-left: calc(-1 * var(--space-12)); }
  .auth-desktop-only { display: none; }
  .auth-mobile-only { display: block; }
  .pl-otp { justify-content: space-between; }
  .pl-otp input { width: 48px; }
}

/* ---------- Юридические документы (Legal) ---------- */
.legal { max-width: 1120px; margin: 0 auto; padding: var(--space-48) var(--space-24) var(--space-64); display: flex; gap: var(--space-48); align-items: flex-start; }
.legal__nav { flex: 0 0 260px; display: flex; flex-direction: column; gap: var(--space-4); position: sticky; top: 96px; }
.legal__link { padding: 10px var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; }
.legal__link:hover { background: var(--surface-hover); color: var(--ink); }
.legal__link[aria-current] { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.legal__article { flex: 1 1 auto; min-width: 0; max-width: 720px; display: flex; flex-direction: column; gap: 20px; font-size: 16px; line-height: 26px; }
.legal__toc { padding: 20px; display: flex; flex-direction: column; gap: 6px; font-size: 15px; }
.legal__body { display: flex; flex-direction: column; gap: 20px; }
.legal__body h2 { font: 600 24px/32px var(--font-sans); margin: var(--space-16) 0 0; scroll-margin-top: 96px; }
.legal__body p, .legal__body ul { margin: 0; }
.legal__body ul { padding-left: var(--space-24); }
.legal__versions { display: flex; gap: var(--space-12); padding-top: var(--space-16); border-top: 1px solid var(--border); font-size: 14px; color: var(--ink-muted); flex-wrap: wrap; }
@media (max-width: 1023px) {
  .legal { flex-direction: column; gap: var(--space-24); padding: var(--space-24) var(--space-16) var(--space-48); }
  .legal__nav { position: static; flex: none; width: 100%; }
}

/* ---------- Cookie-баннер ---------- */
.cookie-banner { position: fixed; left: var(--space-24); bottom: var(--space-24); z-index: var(--z-toast); width: 560px; max-width: calc(100% - 2 * var(--space-16)); padding: 20px; box-shadow: var(--shadow-toast); display: flex; gap: var(--space-16); align-items: flex-start; }
.cookie-banner .pl-empty-icon { width: 40px; height: 40px; margin: 0; flex: none; }
.cookie-banner .pl-empty-icon svg { width: 20px; height: 20px; }
@media (max-width: 767px) {
  .cookie-banner { left: var(--space-16); right: var(--space-16); bottom: var(--space-16); width: auto; }
}

/* ---------- Админка: общие блоки ---------- */
.adm-card { padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); }
.adm-card > h2 { margin: 0; }
.adm-scroll { overflow-x: auto; position: relative; }
.pricing-input--compact { height: 32px; }
.pricing-input--compact input { font-size: 14px; }
/* Планшет (меню свёрнуто): зоны касания не меньше 44 px */
@media (max-width: 1279px) {
  .adm-topbar { padding: 0 20px; }
  .adm-main { padding: 20px; }
  .adm-layout .pl-btn--s { height: var(--touch-target); }
  .adm-layout .pl-btn--icon.pl-btn--s { width: var(--touch-target); }
  .adm-layout .pl-chip--filter { height: var(--touch-target); padding: 0 14px; }
  .adm-layout .pl-input, .adm-layout .pricing-input--compact { min-height: var(--touch-target); }
  .adm-layout .pl-switch { min-height: var(--touch-target) !important; }
}

/* ---------- Админка: прайсинг ---------- */
.pricing { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.pricing__main { flex: 999 1 600px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.pricing__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-16); align-items: start; }
.pricing-time td { vertical-align: middle; }
.pricing-time .pricing-field { max-width: 140px; }
.pricing-time__fact { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-8); font-size: 14px; }
.pricing-time__technologies { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--space-12); }
.pricing__aside { flex: 1 1 340px; max-width: 400px; min-width: 0; position: sticky; top: 88px; display: flex; flex-direction: column; gap: var(--space-12); }
.pricing__pairs { display: grid; grid-template-columns: 1fr 120px; gap: var(--space-8); align-items: center; font-size: 14px; }
.pricing__pairs--wide { grid-template-columns: 1fr 130px; }
.pricing__group { margin-top: var(--space-4); }
.pricing-field { display: flex; flex-direction: column; gap: 2px; }
.pricing-field .pl-input { width: 100%; }
.pricing-row .pricing-field { width: 130px; }
.pricing-was, .pricing-changed-badge { display: none !important; }
.pricing-field.is-changed .pricing-was { display: flex !important; }
.pricing-row.is-changed { background: var(--warning-soft); }
.pricing-row.is-changed:hover { background: var(--warning-soft); }
.pricing-row.is-changed .pricing-changed-badge { display: inline-flex !important; height: 18px; font-size: 11px; }
.pricing__preview-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-8); }
.pricing__preview-head h2 { margin: 0; }
.pricing__sample { width: auto; gap: 6px; position: relative; }
.pricing__sample select { appearance: none; font-size: 13px; padding-right: 20px; cursor: pointer; }
.pricing__sample svg { position: absolute; right: 10px; pointer-events: none; }
[data-pricing-form-target="preview"] { display: flex; flex-direction: column; gap: 14px; }
.pricing__sample-info { display: flex; gap: var(--space-12); align-items: center; font-size: 13px; }
.pricing__sample-info b { font-size: 14px; }
.pricing__thumb { width: 64px; height: 64px; flex: none; color: var(--sample-color); }
.pricing__compare { display: grid; grid-template-columns: 1fr auto auto; gap: var(--space-8) var(--space-12); font-size: 14px; align-items: center; }
.pricing__compare > :nth-child(3n+2), .pricing__compare > :nth-child(3n) { text-align: right; }
.pricing__compare-head { font-size: 12px; }
.pricing__total { padding-top: var(--space-8); border-top: 1px solid var(--border); font-weight: 700; }
.pricing__note { font-size: 12px; }
.pricing .pl-alert { font-size: 13px; }
@media (max-width: 1279px) {
  .pricing__main { flex-basis: 520px; }
  .pricing-row .pricing-field { width: 124px; }
}
@media (max-width: 900px) {
  .pricing__grid { grid-template-columns: 1fr; }
  .pricing__aside { max-width: none; position: static; }
}

/* ---------- Админка: склад ---------- */
.stock-summary { display: inline-flex; gap: var(--space-8); }
.stock-search .pl-input { width: 240px; height: 36px; }
.stock-search input { font-size: 14px; }
.stock-table__qty { width: 260px; }
.stock-name { display: flex; gap: 10px; align-items: center; }
.stock-swatch { width: 24px; height: 24px; border-radius: var(--radius-full); background: var(--swatch); box-shadow: inset 0 0 0 1px var(--border-strong); flex: none; }
.stock-swatch--s { width: 16px; height: 16px; }
.stock-qty { display: flex; justify-content: space-between; font-size: 13px; }
.stock-table .pl-stock { gap: var(--space-4); }
.stock-threshold { width: 110px; }
.stock-switch-note { font-size: 12px; color: var(--ink-muted); }
.stock-table .pl-switch { min-height: 0; }
.stock-history-btn { text-decoration: none; }
.stock-history-btn__icon { display: none; }
.stock-history { display: flex; flex-direction: column; gap: var(--space-12); }
.stock-in { color: var(--success); }
.stock-out { color: var(--error); }
.stock-movement { display: flex; flex-direction: column; gap: 14px; color: var(--ink); }
.stock-movement__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-12); }
.stock-movement__result { font-size: 14px; }
.stock-select { position: relative; }
.stock-select select { appearance: none; cursor: pointer; padding-right: 24px; }
.stock-select > svg { position: absolute; right: var(--space-12); pointer-events: none; }
@media (max-width: 1279px) {
  .stock-table__qty { width: 200px; }
  .stock-threshold { width: 104px; }
  .stock-history-btn { width: var(--touch-target); padding: 0; justify-content: center; }
  .stock-history-btn__text { display: none; }
  .stock-history-btn__icon { display: inline-flex; }
}
.stock-history td:first-child { white-space: nowrap; }
.stock-movement__lead { margin: 0; font-size: 14px; }

/* Материалы и палитра (Admin::MaterialsController) */
.materials-admin { display: flex; flex-direction: column; gap: var(--space-24); }
.materials-admin__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-8) var(--space-16); }
.materials-admin__head h2 { margin: 0; }
.materials-admin__head .pl-muted { font-size: 14px; flex-basis: 100%; }
.materials-table__colors { display: flex; flex-wrap: wrap; gap: var(--space-4); margin: 0; padding: 0; list-style: none; }
.palette-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-8) var(--space-16); margin: 0; padding: 0; list-style: none; }
.palette-list__item { display: flex; align-items: center; gap: var(--space-12); min-height: var(--touch-target); }
.palette-list__name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.material-form { display: flex; flex-direction: column; gap: var(--space-16); max-width: 960px; }
.material-form__active .pl-switch { min-height: var(--control-height); }
.material-form__active .pl-muted { font-size: 14px; }
.material-form .adm-card > .pl-muted, .material-form .adm-card p { margin: 0; font-size: 14px; }
.material-colors { gap: var(--space-12); }
.material-color { cursor: pointer; }
.material-color input:focus-visible + .pl-swatch { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.color-form { display: flex; flex-direction: column; gap: 14px; color: var(--ink); }
.color-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-12); align-items: start; }
.color-form__hex { gap: var(--space-8); }
.pl-input .color-form__picker { flex: none; width: 32px; height: 32px; padding: 0; border: 0; border-radius: var(--radius-sm); background: none; cursor: pointer; }
.color-form__preview { display: flex; align-items: center; gap: var(--space-12); font-size: 14px; }
.color-form__preview .pl-swatch { cursor: default; }
.color-form__delete { margin-right: auto; }
.pl-modal-foot form:has(.color-form__delete) { margin-right: auto; }

/* ---------- «Не нашли нужный цвет или материал?» — ссылка под цветами, форма запроса (модалка и страница) ---------- */
.material-request-link { display: inline-flex; gap: var(--space-4); align-items: center; align-self: flex-start; padding: 0; border: 0; background: none; font: 500 13px/18px var(--font-sans); }
.material-request__lead { margin: 0; font-size: 14px; line-height: 20px; }
.material-request__actions { display: flex; gap: var(--space-8); justify-content: flex-end; flex-wrap: wrap; }
.material-request--sent { display: flex; flex-direction: column; gap: var(--space-16); }
.material-request-page { max-width: 720px; padding-block: var(--space-32); display: flex; flex-direction: column; gap: var(--space-24); }
.material-request-page h1 { margin: 0; }
.material-request-page__card { padding: var(--space-24); }
@media (max-width: 639px) {
  .material-request .color-form__row { grid-template-columns: minmax(0, 1fr); }
  .material-request-page__card { padding: var(--space-16); }
}

/* Инвентаризация склада */
.inventory { display: flex; flex-direction: column; gap: var(--space-16); }
.inventory > p { margin: 0; max-width: 720px; }
.inventory__note { max-width: 560px; }
.inventory-table__fact { width: 140px; }
/* Приход по накладной: шапка документа, табличная часть, итог. */
.receipt__head { display: grid; grid-template-columns: minmax(0, 1fr) 200px minmax(0, 2fr); gap: var(--space-16); max-width: 1080px; }
.receipt-table td { vertical-align: top; }
.receipt-table__qty, .receipt-table__price { width: 180px; }
.receipt-table td .pl-input { width: 100%; box-sizing: border-box; min-width: 0; }
.receipt-table td .pl-input input { width: 100%; min-width: 0; }
.receipt-table .pl-input { height: 40px; }
.receipt-table__sum { white-space: nowrap; padding-top: 22px; }
.receipt-table__remove { width: 40px; }
.receipt-table__after:empty { display: none; }
.receipt-table .pl-hint { display: block; margin-top: var(--space-4); }
.receipt__total { font-size: 15px; white-space: nowrap; }
/* Выбор складской позиции (Pl::StockItemPickerComponent): без JS — нативный select, с JS — поле с поиском и список-popover. */
.stock-picker { position: relative; cursor: pointer; }
.stock-picker__input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; color: inherit; outline: none; cursor: text; }
.stock-picker__select { flex: 1; min-width: 0; appearance: none; border: 0; background: transparent; font: inherit; color: inherit; }
.stock-picker.is-enhanced .stock-picker__select { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.stock-picker > svg { flex: none; pointer-events: none; color: var(--ink-muted); }
/* У popover браузер задаёт свои color/background (CanvasText/Canvas) — берём из темы. */
.stock-picker__menu[popover] { position: fixed; inset: auto; margin: 0; max-height: 320px; overflow: auto; box-sizing: border-box; color: var(--ink); background: var(--surface); }
.stock-picker__menu .pl-menu-group { position: sticky; top: calc(-1 * var(--space-4)); background: var(--surface); }
.stock-picker__option { font-size: 14px; }
.stock-picker__option .stock-swatch { flex: none; }
.stock-picker__name b { color: var(--primary); }
.stock-picker__option.is-selected { background: var(--primary-soft); color: var(--primary); font-weight: 600; }
.stock-picker__option.is-disabled { color: var(--ink-disabled); cursor: default; }
.inventory-regrades { display: flex; flex-direction: column; gap: var(--space-8); margin: 0; padding: 0; list-style: none; }
.inventory-regrades__text { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--space-8); font-size: 14px; }
.pricing__preview-head h2 { white-space: nowrap; }
.pricing__sample { min-width: 0; }

/* ---------- Подсказка (?) с тултипом (HelpTooltip) ---------- */
.app-help { position: relative; display: inline-flex; }
.app-help__tip { position: absolute; left: -8px; bottom: calc(100% + 10px); width: max-content; max-width: 280px; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .12s; font-weight: 400; }
.app-help:hover .app-help__tip, .app-help:focus-within .app-help__tip { opacity: 1; visibility: visible; }
.app-help__tip--media { display: flex; gap: var(--space-12); align-items: center; width: 300px; max-width: 300px; }
.app-help__sample { flex: none; width: 88px; height: 66px; border-radius: var(--radius-xs); background: var(--viewer-bed); display: grid; place-items: center; }
.app-help__face { fill: var(--sample); }
.app-help__face--side { filter: brightness(.86); }
.app-help__face--dark { filter: brightness(.7); }
.pl-swatch input:focus-visible + i { outline: var(--focus-width) solid var(--focus); outline-offset: 4px; }
.app-stepper--block { width: 100%; justify-content: space-between; }

/* ---------- Конфигуратор (ConfiguratorEmpty, ConfiguratorUpload, Main, ConfiguratorMobile) ---------- */
.cfg { max-width: 1376px; margin: 0 auto; padding: var(--space-24) var(--space-32) var(--space-48); }
.cfg__title { margin: 0; }
.cfg > .cfg__title { margin-bottom: 20px; }
.cfg__head { display: flex; align-items: center; gap: var(--space-16); flex-wrap: wrap; margin-bottom: 20px; }
.cfg__head-note { margin-left: auto; }
.cfg__file { padding: 6px var(--space-8) 6px 6px; gap: 10px; min-width: 0; }
.cfg__file .pl-file-ext { width: 32px; height: 32px; }
.cfg__file-name { font-size: 14px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfg__small { font-size: 13px; line-height: 18px; }
.cfg__center { justify-content: center; text-align: center; }
.cfg__note { font-size: 12px; line-height: 16px; text-align: center; }
.cfg__layout { display: flex; gap: var(--space-24); align-items: flex-start; flex-wrap: wrap; }
.cfg__main { flex: 999 1 640px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.cfg__aside { flex: 1 1 400px; max-width: 440px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.cfg__panel { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-24); }
.cfg__group { display: flex; flex-direction: column; gap: 10px; }
.cfg__group--tight { gap: 0; }
/* Резьбовые вставки: число штук — только когда услуга отмечена. */
.cfg__counted { display: flex; flex-direction: column; }
.cfg__count { display: none; align-items: center; justify-content: space-between; gap: var(--space-12); padding: 0 0 var(--space-8) 32px; }
.cfg__counted:has(> .pl-check input:checked) .cfg__count { display: flex; }
.cfg__pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.cfg__chips { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.cfg__chip.is-disabled { color: var(--ink-disabled); background: var(--fill-disabled); border-color: var(--border); cursor: not-allowed; }
.cfg__label-note { font-weight: 400; }
.pl-radio-card:has(input:focus-visible), .cfg__chip:has(input:focus-visible), .cfg__segment:has(input:focus-visible) { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.cfg__select { position: relative; padding-right: var(--space-8); }
.cfg__select select { appearance: none; -webkit-appearance: none; cursor: pointer; padding-right: var(--space-24); }
.cfg__select svg { position: absolute; right: var(--space-12); pointer-events: none; }
.cfg__segmented .cfg__segment { flex: 1; height: 40px; padding: 0 var(--space-12); border-radius: 6px; color: var(--ink-muted); font: 600 14px/20px var(--font-sans); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; text-align: center; }
.cfg__segmented .cfg__segment:hover { color: var(--ink); }
.cfg__segmented .cfg__segment.is-selected { background: var(--surface); color: var(--ink); box-shadow: 0 0 0 1px var(--border-strong); }
.cfg__desktop-only { display: inline; }
.cfg__mobile-only { display: none; }

/* До загрузки */
.cfg__upload { display: block; }
.cfg__drop { height: 560px; justify-content: center; gap: var(--space-12); color: var(--ink); position: relative; }
.cfg__drop:has(input:focus-visible) { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.cfg__drop-idle { display: flex; flex-direction: column; align-items: center; gap: var(--space-12); }
.cfg__drop-icon { width: 72px; height: 72px; border-radius: var(--radius-lg); }
.cfg__drop.is-error .cfg__drop-icon { background: var(--error-soft); color: var(--error); }
.cfg__drop-title { margin: 0; }
.cfg__drop-badges { display: flex; gap: var(--space-8); margin-top: var(--space-8); flex-wrap: wrap; justify-content: center; }
.cfg__drop-error { font-size: 14px; line-height: 20px; max-width: 480px; }
.cfg__drop-note { font-size: 13px; line-height: 18px; margin-top: var(--space-8); max-width: 480px; }
.cfg__drop-multi { font-size: 14px; line-height: 20px; }
.cfg__drop--login { cursor: default; text-align: center; padding-inline: var(--space-16); }
.cfg__drop-progress { width: min(440px, 100%); text-align: left; }
.cfg__steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.cfg__step { padding: var(--space-16); display: flex; gap: var(--space-12); align-items: flex-start; }
.cfg__step-num { color: var(--primary); }
.cfg__promo { padding: 20px; display: flex; gap: var(--space-12); align-items: flex-start; }
.cfg__promo-icon { width: 40px; height: 40px; margin: 0; flex: none; }
.cfg__promo-icon--brand { background: var(--primary-soft); color: var(--primary); }
.cfg__promo-icon--accent { background: var(--accent-soft); color: var(--accent-ink); }
.cfg__promo-body { display: flex; flex-direction: column; gap: var(--space-8); align-items: flex-start; }

/* Анализ */
.cfg__viewer { position: relative; height: 600px; overflow: hidden; background: var(--surface-sunken); }
.cfg__viewer--analysis { height: 640px; display: grid; place-items: center; }
.cfg__viewer-placeholder { position: absolute; inset: 0; width: 100%; height: 100%; }
.cfg__viewer-placeholder polygon { fill: var(--viewer-bed); stroke: var(--viewer-grid); }
.cfg__viewer-placeholder path { fill: var(--viewer-model); opacity: .55; }
.cfg__analysis { position: relative; width: min(420px, calc(100% - var(--space-32))); padding: var(--space-24); box-shadow: var(--shadow-popover); display: flex; flex-direction: column; gap: var(--space-16); }
.cfg__analysis-head { display: flex; gap: var(--space-12); align-items: center; }
.cfg__analysis-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.cfg__analysis-step { display: flex; gap: 10px; align-items: center; }
.cfg__analysis-step--done svg { color: var(--success); }
.cfg__analysis-step--pending { color: var(--ink-subtle); }
.cfg__spinner-s { width: 18px; height: 18px; }
.cfg__spinner-xs { width: 12px; height: 12px; }
.cfg__sk-bar { height: 8px; border-radius: 4px; }
.cfg__sk-line { height: 20px; }
.cfg__sk-text { height: 14px; }
.cfg__sk-value { height: 20px; width: 70px; margin-top: 2px; }
.cfg__sk-sum { width: 140px; height: 36px; }
.cfg__total-label { display: flex; flex-direction: column; gap: 2px; }
.cfg__recalc { display: flex; gap: 6px; align-items: center; font-size: 12px; color: var(--primary); }

/* 3D-вьюер */
.cfg__viewer-stage { position: absolute; inset: 0; }
.cfg__analysis-stage { position: relative; }
.cfg__analysis-stage > .cfg__analysis { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
.cfg__analysis-stage--viewer > .cfg__analysis { top: var(--space-16); left: var(--space-16); transform: none; width: min(360px, calc(100% - var(--space-32))); }
.cfg__canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; touch-action: none; cursor: grab; }
.cfg__canvas:active { cursor: grabbing; }
.cfg__viewer-info { position: absolute; inset: 0; pointer-events: none; }
.cfg__viewer-chips { position: absolute; top: var(--space-16); left: var(--space-16); display: flex; gap: var(--space-8); flex-wrap: wrap; }
.cfg__viewer-chips .pl-overlay-chip, .cfg__viewer-zones, .cfg__viewer-hint { height: 28px; }
.cfg__chip-mono { font-family: var(--font-mono); font-weight: 500; }
.cfg__viewer-zones { position: absolute; bottom: var(--space-16); left: var(--space-16); }
.cfg__zone-mark { width: 10px; height: 10px; border-radius: 2px; background: var(--warning-solid); }
.cfg__zone-mark--error { background: var(--error-solid); }
.cfg__viewer-hint { position: absolute; bottom: var(--space-16); right: var(--space-16); }
.cfg__views { position: absolute; top: var(--space-16); right: var(--space-16); display: flex; gap: var(--space-8); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-4); }
.cfg__views .pl-btn { color: var(--ink); }
.cfg__view[aria-pressed=true] { background: var(--primary-soft); color: var(--primary); }
.cfg__viewer-status { position: absolute; inset: 0; display: flex; gap: var(--space-12); align-items: center; justify-content: center; color: var(--ink-muted); font-size: 14px; text-align: center; padding: var(--space-24); }
.cfg__viewer-status.is-error .pl-spinner { display: none; }
.cfg__ruler { position: absolute; transform: translate(-50%, -50%); padding: 1px var(--space-8); border-radius: var(--radius-xs); background: var(--surface); border: 1px solid; font: 500 12px/18px var(--font-mono); color: var(--ink); pointer-events: none; white-space: nowrap; }
.cfg__ruler--x { border-color: var(--axis-x); }
.cfg__ruler--y { border-color: var(--axis-y); }
.cfg__ruler--z { border-color: var(--axis-z); }
.cfg__gizmo { position: absolute; left: var(--space-16); bottom: 56px; width: 80px; height: 80px; pointer-events: none; overflow: visible; }
.cfg__gizmo line { stroke-width: 2; stroke-linecap: round; }
.cfg__gizmo text { font: 500 11px var(--font-mono); text-anchor: middle; }
.cfg__gizmo-x { stroke: var(--axis-x); fill: var(--axis-x); }
.cfg__gizmo-y { stroke: var(--axis-y); fill: var(--axis-y); }
.cfg__gizmo-z { stroke: var(--axis-z); fill: var(--axis-z); }
.cfg__gizmo text { stroke: none; }

/* Масштаб */
.cfg__scale { padding: 20px var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); }
.cfg__scale-head { display: none; align-items: center; justify-content: space-between; }
.cfg__scale-fields { display: flex; gap: var(--space-24); align-items: flex-end; flex-wrap: wrap; }
.cfg__scale-pct { width: 140px; }
.cfg__scale-mm { width: 120px; }
.cfg__scale-hint { flex: 1 1 240px; padding-bottom: var(--space-12); font-size: 13px; line-height: 18px; }
.cfg__scale-hint svg { flex: none; }

/* Проверка печатаемости */
.cfg__checks { padding: 20px var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); }
.cfg__checks-head { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; }
.cfg__checks-head h2 { margin: 0; }
.cfg__checks-time { margin-left: auto; }
.app-finding__body { flex: 1; }
.pl-alert--warning .app-finding__tag { color: var(--warning); }
.pl-alert--error .app-finding__tag { color: var(--error); }
.app-finding:hover.pl-alert--warning { outline: 2px solid var(--warning-solid); outline-offset: -1px; }
.app-finding:hover.pl-alert--error, .app-finding.pl-alert--error { outline: 2px solid var(--error); outline-offset: -1px; }
.app-finding__show { align-self: center; }
.cfg__passed { display: flex; gap: var(--space-8); align-items: center; font-size: 14px; color: var(--success); }
.cfg__parts { padding: 20px var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); }
.cfg__parts-head { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; }
.cfg__parts-head h2 { margin: 0; }
.cfg__parts-add { margin-left: auto; cursor: pointer; }
.cfg__parts-add.is-loading { pointer-events: none; color: var(--ink-muted); }
.cfg__parts-note { margin: 0; }
.cfg__parts-error { margin: 0; }
.cfg__parts-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.cfg__part { display: flex; align-items: center; gap: var(--space-12); padding: var(--space-12) 0; border-top: 1px solid var(--border); flex-wrap: wrap; }
.cfg__part:first-child { border-top: 0; padding-top: 0; }
.cfg__part-ext { flex: none; }
.cfg__part-main { flex: 1 1 160px; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cfg__part-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfg__part-qty { flex: none; }
.cfg__part-look { display: flex; gap: var(--space-8); flex: 1 1 320px; flex-wrap: wrap; }
.cfg__part-select { flex: 1 1 150px; min-width: 0; }
.cfg__part-select .pl-input { gap: var(--space-8); }
.cfg__part-count { flex: none; color: var(--ink-muted); }

/* Цена */
.cfg__price { position: sticky; bottom: var(--space-16); box-shadow: var(--shadow-sticky); }
.cfg__lines { display: flex; flex-direction: column; gap: var(--space-8); }
.cfg__ready { display: flex; gap: var(--space-8); align-items: center; font-size: 13px; color: var(--ink-muted); flex-wrap: wrap; }
.cfg__ready b { color: var(--ink); }
.cfg__time-note { display: block; font-size: 12px; line-height: 16px; color: var(--ink-subtle); font-weight: 400; }
.cfg__actions { display: flex; flex-direction: column; gap: var(--space-8); }
.cfg__mobile-bar { display: none; }
/* На невысоких экранах закреплённая сводка закрыла бы параметры */
@media (max-height: 899px) { .cfg__price { position: static; } }

@media (max-width: 1023px) {
  .cfg { padding: var(--space-16) 0 140px; }
  .cfg > .cfg__title, .cfg__head, .cfg__steps { padding: 0 var(--space-16); }
  .cfg__head { gap: var(--space-8); margin-bottom: var(--space-8); }
  .cfg__head-note { display: none; }
  .cfg__head .cfg__title { width: 100%; }
  .cfg__layout { flex-direction: column; gap: var(--space-16); align-items: stretch; }
  .cfg__main, .cfg__aside { flex: none; max-width: none; width: 100%; }
  .cfg__aside, .cfg__main > .pl-card:not(.cfg__viewer), .cfg__upload { padding-left: var(--space-16); padding-right: var(--space-16); }
  .cfg__main > .cfg__scale, .cfg__main > .cfg__checks, .cfg__main > .cfg__parts, .cfg__aside > .pl-card, .cfg__aside > .pl-price-panel { margin: 0 var(--space-16); padding: var(--space-16); }
  .cfg__aside { padding: 0; }
  .cfg__viewer { height: 340px; border-radius: 0; border-left: 0; border-right: 0; }
  .cfg__viewer--analysis { height: 420px; }
  .cfg__analysis-stage--viewer > .cfg__analysis { position: static; width: auto; margin: var(--space-16); }
  .cfg__views { top: auto; bottom: var(--space-12); left: var(--space-12); right: var(--space-12); gap: 6px; }
  .cfg__views .cfg__view { flex: 1; height: 40px; }
  .cfg__views .pl-btn--icon { flex: none; width: 40px; }
  .cfg__viewer-zones, .cfg__gizmo { display: none; }
  .cfg__viewer-chips { top: var(--space-12); left: var(--space-12); }
  .cfg__drop { height: 360px; }
  .cfg__steps { grid-template-columns: 1fr; }
  .cfg__desktop-only { display: none; }
  .cfg__mobile-only { display: inline; }
  .cfg__mobile-flex { display: flex; }
  .cfg__scale-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
  .cfg__scale-pct, .cfg__scale-mm { width: auto; }
  .cfg__scale-mm--x, .cfg__scale-mm--y, .cfg__scale-lock { display: none; }
  .cfg__scale-hint { grid-column: 1 / -1; padding-bottom: 0; }
  .cfg__chip { height: var(--touch-target); }
  .cfg__price { position: static; box-shadow: none; }
  .cfg__price .cfg__actions { display: none; }
  .cfg__mobile-bar { display: flex; flex-direction: column; gap: var(--space-8); position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky); background: var(--surface); border-top: 1px solid var(--border); box-shadow: var(--shadow-sticky); padding: var(--space-12) var(--space-16) 20px; }
  .cfg__mobile-bar-row { display: flex; align-items: center; gap: var(--space-12); }
  .cfg__mobile-bar-sum { flex: 1; }
  .app-help__tip { left: 50%; transform: translateX(-50%); max-width: calc(100vw - var(--space-32)); }
  .app-help__tip::after { left: calc(50% - 5px); }
  .app-help__tip--media { width: min(300px, calc(100vw - var(--space-32))); }
}

/* ---------- Корзина (Cart, CartEmpty) ---------- */
.cart { max-width: 1200px; margin: 0 auto; padding: var(--space-32) var(--space-24) var(--space-64); }
.cart__title { margin: 0; }
.cart > .cart__title { margin-bottom: var(--space-24); }
.cart__head { display: flex; align-items: baseline; gap: var(--space-12); margin-bottom: var(--space-24); flex-wrap: wrap; }
.cart__layout { display: flex; gap: var(--space-24); align-items: flex-start; flex-wrap: wrap; }
.cart__items { flex: 999 1 640px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-12); }
.cart__aside { flex: 1 1 340px; max-width: 380px; min-width: 0; position: sticky; top: calc(72px + var(--space-24)); }
.cart__aside h2 { margin: 0; }
.cart__muted-value { color: var(--ink-muted) !important; font-weight: 500 !important; }
.cart__more { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.cart__empty { padding: var(--space-64) var(--space-24); }
.cart__empty h2 { margin: 0; }
.cart__empty p { max-width: 440px; }
.cart__empty-actions { display: flex; gap: var(--space-12); flex-wrap: wrap; justify-content: center; margin-top: var(--space-8); }
.cart__benefits { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); margin-top: var(--space-24); }
.cart__benefit { padding: 20px; display: flex; gap: var(--space-12); }
.cart-item { padding: 20px; display: flex; gap: 20px; flex-wrap: wrap; }
.cart-item__thumb { width: 120px; height: 120px; flex: none; }
.cart-item__image { width: 100%; height: 100%; object-fit: contain; }
.cart-item__body { flex: 1 1 280px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.cart-item__head { display: flex; gap: var(--space-12); align-items: flex-start; }
.cart-item__name { flex: 1; min-width: 0; }
.cart-item__name h2 { margin: 0; }
.cart-item__file { font-size: 12px; line-height: 16px; overflow-wrap: anywhere; }
.cart-item__badges { display: flex; gap: 6px; flex-wrap: wrap; }
.cart-item__warning { color: var(--warning); }
.cart-item__actions { display: flex; gap: var(--space-8); align-items: center; margin-top: var(--space-4); flex-wrap: wrap; }
.cart-item__spacer { flex: 1; }
.cart-item__delete { display: inline-flex; }

@media (max-width: 1023px) {
  .cart { padding: var(--space-16) var(--space-16) var(--space-48); }
  .cart__aside { position: static; max-width: none; flex-basis: 100%; }
  .cart__benefits { grid-template-columns: 1fr; }
  .cart-item { padding: var(--space-16); gap: var(--space-16); }
  .cart-item__thumb { width: 80px; height: 80px; }
}

/* ---------- Сегментированный выбор: ссылки и radio вместо кнопок ---------- */
.pl-segmented a, .pl-segmented .pl-segmented__option { height: 36px; padding: 0 var(--space-16); border-radius: var(--radius-sm); color: var(--ink-muted); font: 600 14px/20px var(--font-sans); text-decoration: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-8); }
.pl-segmented a:hover, .pl-segmented .pl-segmented__option:hover { color: var(--ink); }
.pl-segmented a.is-selected, .pl-segmented .pl-segmented__option:has(input:checked) { background: var(--surface); color: var(--ink); box-shadow: 0 0 0 1px var(--border-strong); }
.pl-segmented .pl-segmented__option:has(input:focus-visible) { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.pl-segmented--block .pl-segmented__option, .pl-segmented--block a { flex: 1; height: 40px; }

/* ---------- Кабинет: токены, рефералы, лояльность (CabTokens, CabReferral, CabLoyalty) ---------- */
.cab-title { margin: 0; }
.cab-lead { margin: var(--space-4) 0 0; }
.cab-small { font-size: 14px; }
.cab-caption { font-size: 12px; }
.cab-nowrap { white-space: nowrap; }
.cab-note { margin: 0; font-size: 13px; }
.cab-grid { display: grid; gap: var(--space-16); }
.cab-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cab-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cab-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-12); }
.cab-card { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); }
.cab-card--l { padding: 28px; gap: var(--space-16); }
.cab-card h2 { margin: 0; }
.cab-card__form { display: flex; flex-direction: column; gap: 14px; }
.cab-chips { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.cab-section { display: flex; flex-direction: column; gap: var(--space-12); }
.cab-section h2 { margin: 0; }
.cab-section__head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-12); }
.cab-table-more { display: flex; justify-content: center; padding: var(--space-12); border-top: 1px solid var(--border); }
.cab-kpi { padding: var(--space-16); }
.cab-kpi--accent { background: var(--accent-soft); border-color: transparent; }
.cab-kpi .pl-tokens { font-size: 28px; line-height: 36px; }
.cab-copy { display: flex; gap: var(--space-8); }
.cab-copy .pl-input { flex: 1; min-width: 0; }
.cab-copy__value { font-size: 14px; }
.cab-share { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.cab-person { display: flex; gap: var(--space-8); align-items: center; }
.cab-list { margin: 0; padding-left: 20px; }
.pl-acc-item[open] .pl-acc-body { display: block; }
.pl-acc-item[open] .pl-acc-head svg { transform: rotate(180deg); }
summary.pl-acc-head { list-style: none; cursor: pointer; }
summary.pl-acc-head::-webkit-details-marker { display: none; }

.tokens-balance { display: flex; align-items: center; gap: var(--space-12); }
.tokens-balance__coin { width: 44px; height: 44px; font-size: 20px; }
.tokens-balance__value { font-size: 48px; line-height: 56px; }
.tokens-stats { display: flex; gap: var(--space-24); padding-top: var(--space-12); border-top: 1px solid var(--border); font-size: 14px; flex-wrap: wrap; }

.loyalty-head { display: flex; align-items: center; gap: var(--space-16); flex-wrap: wrap; }
.loyalty-head__badge { margin-left: auto; height: 28px; font-size: 14px; }
.loyalty-medal { width: 64px; height: 64px; border-radius: 50%; flex: none; box-shadow: inset 0 0 0 4px color-mix(in srgb, var(--surface) 35%, transparent); }
.loyalty-medal--bronze { background: var(--loyalty-bronze); }
.loyalty-medal--silver { background: var(--loyalty-silver); }
.loyalty-medal--gold { background: var(--loyalty-gold); }
.loyalty-turnover { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: var(--space-8); }
.loyalty-progress { height: 12px; }
.loyalty-scale { display: flex; justify-content: space-between; margin-top: 6px; font: 500 12px var(--font-mono); color: var(--ink-subtle); }
.loyalty-card { padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); align-items: flex-start; }
.loyalty-card.is-current { border: 2px solid var(--primary); padding: 19px; }
.loyalty-card .t-h3 { margin: 0; }
.loyalty-card__caption { margin-top: -10px; }
.loyalty-card__perks { margin: 0; padding-left: 18px; font-size: 14px; line-height: 22px; color: var(--ink-muted); flex: 1; }

@media (max-width: 1023px) {
  .cab-grid--2, .cab-grid--3 { grid-template-columns: minmax(0, 1fr); }
  .cab-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cab-copy { flex-wrap: wrap; }
  .cab-copy .pl-input { flex-basis: 100%; }
  .loyalty-head__badge { margin-left: 0; }
}

/* ---------- Корзина: промокод и начисление токенов ---------- */
.cart__accrual { display: flex; justify-content: space-between; font-size: 13px; color: var(--ink-muted); }
.cart-promo { font-size: 14px; }
.cart-promo__toggle { cursor: pointer; color: var(--primary); font-weight: 600; min-height: var(--touch-target); display: flex; align-items: center; list-style: none; }
.cart-promo__toggle::-webkit-details-marker { display: none; }
.cart-promo__form { padding-top: var(--space-4); }
.cart-promo__row { display: flex; gap: var(--space-8); }
.cart-promo__row .pl-input { flex: 1; min-width: 0; }
.cart-promo--applied { display: flex; align-items: center; justify-content: space-between; gap: var(--space-8); flex-wrap: wrap; }
.cfg__cashback { margin-left: auto; }

/* ---------- Админка: скидки и бонусы (AdmDiscounts) ---------- */
.discounts { display: flex; flex-direction: column; gap: var(--space-16); }
.discounts__form { display: flex; flex-direction: column; gap: var(--space-16); }
.discounts__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); align-items: start; }
.discounts__switch { min-height: 32px; }
.discounts__pairs { display: grid; grid-template-columns: minmax(0, 1fr) 120px; gap: var(--space-8); align-items: center; font-size: 14px; }
.discounts__levels-grid { display: grid; grid-template-columns: auto minmax(88px, 1fr) 64px 64px; gap: var(--space-8) 6px; align-items: center; font-size: 14px; }
.discounts__head { display: flex; align-items: center; justify-content: space-between; }
.discounts__rules { display: flex; gap: var(--space-12); flex-wrap: wrap; align-items: center; }
.discounts__rule { padding: var(--space-12) var(--space-16); display: flex; gap: var(--space-12); align-items: center; background: var(--surface-sunken); border-color: transparent; }
.discounts__rule .pricing-field { width: 88px; }
.discounts__rule .pricing-field:has(input[name$="[threshold]"]) { width: 130px; }
.discounts__rule.is-changed { background: var(--warning-soft); }
.discounts__promos { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.discounts__promo-table { flex: 999 1 640px; min-width: 0; }
.discounts__toolbar-title { font-size: 16px; margin-right: var(--space-12); }
.discounts__usage { display: flex; gap: var(--space-8); align-items: center; }
.discounts__usage-bar { width: 80px; }
.discounts__promo-form { flex: 1 1 320px; max-width: 380px; }
.discounts__promo-fields { display: flex; flex-direction: column; gap: var(--space-12); }
.discounts__pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-12); }
.discounts__generate { height: var(--control-height); }
.discounts__check { padding: 0; min-height: 0; }
.discounts__promo-actions { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.users-tokens__form { display: flex; flex-direction: column; gap: var(--space-12); }
.pl-badge + .pl-badge, .pl-mono .pl-badge { margin-left: var(--space-8); }

/* Планшет: две колонки, уровни и форма промокода — на всю ширину */
@media (max-width: 1279px) {
  .discounts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .discounts__levels { grid-column: 1 / -1; }
  .discounts__levels-grid { grid-template-columns: 120px minmax(0, 1fr) 140px 140px; max-width: 720px; }
  .discounts__promo-form { flex-basis: 100%; max-width: none; }
  .discounts__promo-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12) var(--space-16); align-items: end; }
  .discounts__promo-fields .discounts__wide { grid-column: auto; }
  .discounts__promo-actions { grid-column: 1 / -1; }
  .adm-layout .pl-segmented .pl-segmented__option { height: 40px; }
}

/* ---------- Оформление заказа (Checkout, CheckoutMobile) ---------- */
.checkout-header { position: sticky; top: 0; z-index: var(--z-header); height: 64px; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: var(--space-24); padding: 0 var(--space-32); }
.checkout-header__cart { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--ink-muted); text-decoration: none; }
.checkout-header__cart:hover { color: var(--ink); }
.checkout-header__secure { margin-left: auto; display: inline-flex; align-items: center; gap: var(--space-8); font-size: 13px; color: var(--ink-muted); }
.checkout-header__back, .checkout-header__title, .checkout-header__count { display: none; }
.checkout { max-width: 1200px; margin: 0 auto; padding: var(--space-32) var(--space-24) 80px; }
.checkout__title { margin: 0 0 var(--space-24); }
.checkout__layout { display: flex; gap: var(--space-24); align-items: flex-start; flex-wrap: wrap; }
.checkout__main { flex: 999 1 640px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.checkout__aside { flex: 1 1 340px; max-width: 380px; min-width: 0; position: sticky; top: calc(64px + var(--space-24)); }
.checkout-section { padding: var(--space-24); display: flex; flex-direction: column; gap: 20px; }
.checkout-section__head { display: flex; align-items: center; gap: var(--space-12); }
.checkout-section__head h2 { margin: 0; flex: 1; }
.checkout-section__head--wrap { flex-wrap: wrap; }
.checkout-section__num { width: 28px; height: 28px; flex: none; border-radius: 50%; background: var(--primary-soft); color: var(--primary); display: grid; place-items: center; font-weight: 700; font-size: 14px; }
.checkout-items { display: flex; flex-direction: column; margin-top: calc(-1 * var(--space-4)); }
.checkout-item { display: flex; gap: var(--space-16); align-items: center; padding: var(--space-12) 0; border-bottom: 1px solid var(--border); }
.checkout-item:last-child { border-bottom: 0; }
.checkout-item__thumb { width: 56px; height: 56px; flex: none; }
.checkout-item__body { flex: 1; min-width: 0; }
.checkout-item__price { white-space: nowrap; }
.checkout-items__short { display: none; font-size: 14px; }
.checkout-buyer__type { align-self: flex-start; }
.checkout-buyer__company { display: flex; flex-direction: column; gap: var(--space-16); }
.checkout-buyer:has(input[name="checkout[buyer_type]"][value="person"]:checked) .checkout-buyer__company { display: none; }
.checkout-buyer__inn { max-width: 320px; }
.checkout-buyer__divider { margin: 0; }
.checkout-company { display: flex; flex-direction: column; gap: var(--space-16); margin-top: calc(-1 * var(--space-8)); }
.checkout-company:empty { display: none; }
.checkout-company__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.checkout-company__address { grid-column: 1 / -1; }
.checkout-company__address textarea { min-height: 48px; resize: none; }
/* выбрана сохранённая организация — поле ИНН не нужно */
.checkout-buyer__company:has(#checkout-company-id option:checked:not([value=""])) .checkout-buyer__new-inn { display: none; }
.checkout-buyer__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.checkout-buyer__profile { display: flex; align-items: center; gap: var(--space-16); flex-wrap: wrap; margin-top: calc(-1 * var(--space-4)); }
.checkout-check--inline { min-height: 0; padding: 0; }
.checkout-check--compact { min-height: 0; padding: var(--space-8) 0; }
.checkout-delivery { display: flex; flex-direction: column; gap: var(--space-8); }
.checkout-services { display: flex; flex-direction: column; gap: var(--space-16); }
.checkout-services--self-pickup + .checkout-delivery { display: none; }
.checkout-delivery__view { display: none; }
.checkout-delivery__filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.checkout-city { position: relative; min-width: 0; }
.checkout-cities__list { position: absolute; top: calc(100% + var(--space-4)); left: 0; right: 0; }
.checkout-cities__option { flex-wrap: wrap; gap: 0 var(--space-8); }
.checkout-cities__option .pl-muted { font-size: 13px; }
.checkout-cities__empty { padding-top: var(--space-4); }
.checkout-points__more { padding: var(--space-8) 0; text-align: center; }
.checkout-points { display: flex; flex-direction: column; gap: var(--space-16); }
.checkout-points__body { display: flex; gap: var(--space-16); flex-wrap: wrap; }
.checkout-points__list { flex: 1 1 300px; min-width: 0; max-height: 380px; overflow-y: auto; display: flex; flex-direction: column; gap: var(--space-8); padding: 2px; }
.checkout-points__empty { padding: var(--space-12) 0; }
.checkout-point { gap: 2px; flex: none; }
.checkout-point__address { font-weight: 700; font-size: 15px; padding-right: 28px; }
.checkout-point .pl-badge { margin-top: 6px; align-self: flex-start; }
.checkout-map { flex: 1 1 360px; min-width: 0; height: 380px; border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--border); position: relative; background: var(--surface-sunken); }
/* Через родителя: maplibre-gl.css после Turbo-перехода подключается последним, и его .maplibregl-map { position: relative } иначе перебьёт. */
.checkout-map .checkout-map__canvas { position: absolute; inset: 0; }
.checkout-map__canvas .maplibregl-ctrl-attrib, .contacts-map__canvas .maplibregl-ctrl-attrib { font-family: var(--font-sans); font-size: 11px; color: var(--ink-muted); background: var(--surface); }
.checkout-map__canvas .maplibregl-ctrl-attrib a, .contacts-map__canvas .maplibregl-ctrl-attrib a { color: inherit; }
[data-theme="dark"] .checkout-map__canvas .maplibregl-ctrl-attrib-button, [data-theme="dark"] .contacts-map__canvas .maplibregl-ctrl-attrib-button { filter: invert(1); }
.checkout-map__fallback { position: absolute; inset: 0; display: grid; place-items: center; padding: var(--space-16); text-align: center; }
.checkout-map__fallback[hidden] { display: none; }
.checkout-map__pin { width: 22px; height: 22px; padding: 0; border-radius: 50%; background: var(--surface); border: 3px solid var(--primary); cursor: pointer; display: grid; place-items: center; color: var(--on-primary); box-sizing: border-box; box-shadow: var(--shadow-popover); }
.checkout-map__pin:hover { background: var(--primary-soft); }
.checkout-map__pin:focus-visible { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.checkout-map__pin.is-selected { width: 36px; height: 36px; background: var(--primary); border: 0; z-index: 1; }
.checkout-point-quote { display: contents; }
.checkout-map__zoom { position: absolute; top: var(--space-12); right: var(--space-12); display: flex; flex-direction: column; gap: var(--space-4); }
.checkout-map__chip { position: absolute; left: var(--space-12); bottom: var(--space-12); }
.checkout-promo { max-width: 520px; }
.checkout-promo__row { display: flex; gap: var(--space-8); }
.checkout-promo__row .pl-input { flex: 1; min-width: 0; }
.checkout-promo__applied { align-items: center; padding: 10px var(--space-12); }
.checkout-promo__text { flex: 1; }
.checkout-promo__remove { color: var(--ink); }
.checkout-modes { display: flex; flex-direction: column; gap: 10px; }
.checkout-mode { gap: var(--space-8); }
.checkout-mode__value { font: 700 24px/32px var(--font-sans); }
.checkout-mode__value--discount { color: var(--success); }
.checkout-mode__value--tokens { color: var(--accent-ink); }
.checkout-mode.is-disabled .checkout-mode__value { color: var(--ink-disabled); }
.checkout-mode__tokens { font-size: 14px; }
.checkout-tokens { padding: var(--space-16); background: var(--surface-sunken); border-radius: var(--radius-md); }
.checkout-tokens .pl-slider-value { background: var(--surface); }
.checkout-tokens__value { display: flex; align-items: center; gap: var(--space-8); }
.checkout-tokens__label--disabled { color: var(--ink-disabled); }
.checkout-publication__models { display: flex; flex-direction: column; margin-top: calc(-1 * var(--space-8)); }
.checkout-publication__terms { display: none; margin-left: var(--space-32); padding: var(--space-16); border-left: 2px solid var(--primary-soft); flex-direction: column; gap: var(--space-8); }
.checkout-publication:has([data-publish]:checked) .checkout-publication__terms { display: flex; }
.checkout-publication__terms > .pl-check { padding: 0; min-height: 0; }
.checkout-publication__terms .pl-label { margin-top: var(--space-8); }
.checkout-publication__licenses { display: flex; flex-direction: column; }
.checkout-payment { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-12); }
.checkout-payment:has(> :nth-child(4)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.checkout-summary h2 { margin: 0; }
.checkout-mobile-bar.is-recalc .pl-num { color: var(--ink-disabled); }
.checkout-summary__tokens { display: inline-flex; gap: 6px; align-items: center; }
.checkout-summary__meta { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--ink-muted); }
.checkout-summary__meta > div { display: flex; justify-content: space-between; gap: var(--space-8); }
.checkout-summary__meta b { color: var(--ink); }
.checkout-mobile-lines, .checkout-mobile-bar { display: none; }

@media (max-width: 1023px) {
  .checkout-payment, .checkout-payment:has(> :nth-child(4)) { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 767px) {
  .checkout-header { height: 56px; gap: var(--space-4); padding: 0 var(--space-16) 0 var(--space-4); }
  .checkout-header__logo, .checkout-header__cart, .checkout-header__secure { display: none; }
  .checkout-header__back { display: inline-flex; color: var(--ink); }
  .checkout-header__title { display: inline; font-weight: 700; font-size: 17px; }
  .checkout-header__count { display: inline; margin-left: auto; font-size: 13px; color: var(--ink-muted); }
  .checkout { padding: var(--space-16) var(--space-16) 160px; }
  .checkout__title, .checkout__aside, .checkout-section__num { display: none; }
  .checkout__main { gap: var(--space-12); }
  .checkout-section { padding: var(--space-16); gap: var(--space-16); }
  .checkout-items { flex-direction: row; gap: var(--space-8); margin: 0; }
  .checkout-item { padding: 0; border: 0; }
  .checkout-item__body, .checkout-item__price { display: none; }
  .checkout-item__thumb { width: 64px; height: 64px; }
  .checkout-items__short { display: block; }
  .checkout-buyer__type { align-self: stretch; }
  .checkout-buyer__type .pl-segmented__option { flex: 1; height: 40px; }
  .checkout-buyer__inn { max-width: none; }
  .checkout-buyer__fields, .checkout-company__fields { grid-template-columns: minmax(0, 1fr); }
  .checkout-delivery__view { display: flex; }
  .checkout-delivery__filters { grid-template-columns: minmax(0, 1fr); gap: var(--space-8); }
  .checkout-delivery:has(input[value="list"]:checked) .checkout-map { display: none; }
  .checkout-delivery:has(input[value="map"]:checked) .checkout-points__list { max-height: 240px; }
  .checkout-map { flex-basis: 100%; height: 300px; }
  .checkout-points__list { max-height: none; overflow: visible; }
  .checkout-publication__terms { margin-left: 0; }
  .checkout-mobile-lines { display: flex; gap: var(--space-8); }
  .checkout-mobile-bar { display: flex; flex-direction: column; gap: 10px; position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky); background: var(--surface); border-top: 1px solid var(--border); box-shadow: var(--shadow-sticky); padding: var(--space-12) var(--space-16) var(--space-24); }
  .checkout-mobile-bar__row { display: flex; align-items: baseline; justify-content: space-between; }
}

/* ---------- Заказ в кабинете (до этапа 8 — подтверждение оформления) ---------- */
.order-head { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; margin-bottom: var(--space-16); }
.order-head .cab-title { margin: 0; }
.order-layout { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; margin-top: var(--space-16); }
.order-layout > .pl-card { flex: 999 1 480px; min-width: 0; }
.order-layout h2 { margin: 0; }
.order-aside { flex: 1 1 300px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.order-aside .pl-card { display: flex; flex-direction: column; gap: var(--space-8); }
.order-item__badges { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; }
.order-pay { display: flex; gap: var(--space-12); flex-wrap: wrap; margin-top: var(--space-12); }

/* ---------- Оплата: QR СБП, результат, чек (PayQR, PaySuccess, PayFailMobile) ---------- */
:root {
  /* QR-код всегда тёмный на светлом — его читают камеры банковских приложений, тема не важна. */
  --qr-bg: #ffffff;
  --qr-ink: #1b1f23;
}
.pay-header { height: 64px; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: var(--space-24); padding: 0 var(--space-32); }
.pay-header__end { margin-left: auto; display: flex; align-items: center; gap: var(--space-8); font-size: 13px; color: var(--ink-muted); }
.pay-header__number, .pay-ink { color: var(--ink); }
.pay-header__avatar { margin-left: var(--space-8); text-decoration: none; }
.pay-main { min-height: 60vh; }
.pay-page { max-width: 880px; margin: 0 auto; padding: var(--space-48) var(--space-24) var(--space-64); box-sizing: border-box; }
.pay-page--stack { display: flex; flex-direction: column; gap: var(--space-16); }
.pay-title { margin: 0; }
.pay-lead { margin: 0; }
.pay-text { margin: 0; line-height: 20px; }
.pay-inline-form { display: contents; }
.pay-actions { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.pay-actions--center { justify-content: center; margin-top: var(--space-12); }
.pay-footnote { text-align: center; font-size: 13px; margin-top: var(--space-24); }

.pl-qr { width: var(--qr-size); height: var(--qr-size); padding: calc(var(--qr-size) * 0.06); box-sizing: border-box; background: var(--qr-bg); border: 1px solid var(--border); border-radius: var(--radius-lg); flex: none; }
.pl-qr__code { display: block; width: 100%; height: 100%; }
.pl-qr__code path { fill: var(--qr-ink); }

.pay-qr { padding: 40px; display: flex; gap: var(--space-48); align-items: center; flex-wrap: wrap; }
.pay-qr__code { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: var(--space-16); }
.pay-qr__timer { display: flex; align-items: center; gap: var(--space-8); font-size: 14px; color: var(--ink-muted); }
.pay-qr__timer b { color: var(--ink); }
.pay-qr__body { flex: 1 1 320px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.pay-qr__amount { display: flex; align-items: baseline; gap: var(--space-12); font-size: 14px; }
.pay-steps { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: var(--space-8); color: var(--ink-muted); font-size: 15px; line-height: 22px; }
.pay-waiting { padding: 14px var(--space-16); display: flex; gap: var(--space-12); align-items: center; background: var(--surface-sunken); border-color: transparent; }

.pay-result { padding: 40px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--space-12); }
.pay-result__icon { width: 72px; height: 72px; border-radius: 50%; display: grid; place-items: center; margin-bottom: var(--space-4); }
.pay-result__icon--success { background: var(--success-soft); color: var(--success); }
.pay-result__icon--error { background: var(--error-soft); color: var(--error); }
.pay-result__icon--info { background: var(--info-soft); color: var(--info); }
.pay-result__icon--neutral { background: var(--surface-sunken); color: var(--ink-muted); }
.pay-result__spinner { width: 32px; height: 32px; border-width: 3px; }
.pay-result .pl-alert { width: 100%; box-sizing: border-box; text-align: left; }
.pay-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--space-12); width: 100%; margin-top: var(--space-16); }
.pay-fact { background: var(--surface-sunken); border-radius: var(--radius-md); padding: 14px var(--space-16); text-align: left; }
.pay-summary { width: 100%; box-sizing: border-box; padding: var(--space-16); margin-top: var(--space-12); display: flex; flex-direction: column; gap: var(--space-8); text-align: left; }

.pay-icon { width: 40px; height: 40px; margin: 0; flex: none; }
.pay-icon--primary { background: var(--primary-soft); color: var(--primary); }
.pay-icon--info { background: var(--info-soft); color: var(--info); }
.pay-icon--accent { background: var(--accent-soft); }
.pay-receipt { display: flex; gap: var(--space-12); align-items: center; padding: var(--space-16) 20px; flex-wrap: wrap; }
.pay-receipt__body { flex: 1 1 280px; }
.pay-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.pay-card { padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); }
.pay-card__head { display: flex; gap: var(--space-12); align-items: center; }
.pay-bot { display: flex; gap: var(--space-16); align-items: center; }
.pay-bot__actions { display: flex; flex-direction: column; gap: var(--space-8); align-items: flex-start; }
.pay-accrual { display: flex; align-items: baseline; gap: var(--space-8); }
.pay-accrual .pl-tokens { font-size: 28px; }
.pay-progress { display: flex; flex-direction: column; gap: 6px; }
.pay-progress__row { display: flex; justify-content: space-between; font-size: 13px; }

.pay-fail__actions { display: flex; flex-direction: column; gap: var(--space-8); max-width: 420px; margin: var(--space-24) auto 0; }

.pay-check { padding: var(--space-32); display: flex; flex-direction: column; gap: var(--space-16); max-width: 560px; margin: 0 auto; }
.pay-check__head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-12); }
.pay-check__lines { display: flex; flex-direction: column; gap: var(--space-12); }
.pay-check__line { display: flex; justify-content: space-between; gap: var(--space-16); font-size: 14px; }
.pay-check__qty { display: block; font-size: 12px; }
.pay-check__fiscal { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; padding-top: var(--space-16); border-top: 1px solid var(--border); }
.pay-check__attrs { display: grid; grid-template-columns: auto 1fr; gap: 6px var(--space-12); margin: 0; font-size: 14px; }
.pay-check__attrs dt { color: var(--ink-muted); }
.pay-check__attrs dd { margin: 0; }

@media (max-width: 767px) {
  .pay-header { height: 56px; padding: 0 var(--space-16); gap: var(--space-12); }
  .pay-page { padding: 40px var(--space-16) var(--space-16); }
  .pay-qr, .pay-result, .pay-check { padding: var(--space-24) var(--space-16); }
  .pay-qr { gap: var(--space-24); justify-content: center; }
  .pay-result .t-h2 { font-size: 24px; line-height: 32px; }
  .pay-cards { grid-template-columns: 1fr; }
  .pay-actions .pl-btn { flex: 1 1 100%; }
  .pay-fail { padding-bottom: 0; }
  .pay-fail .pay-result { background: transparent; border: 0; box-shadow: none; padding: 0; }
  .pay-fail__actions { position: sticky; bottom: 0; max-width: none; margin: var(--space-24) calc(-1 * var(--space-16)) 0; padding: var(--space-16) var(--space-16) var(--space-32); background: var(--surface); border-top: 1px solid var(--border); }
}

/* ---------- Счёт юрлицу (Invoice) ---------- */
.invoice { max-width: 1040px; margin: 0 auto; padding: var(--space-48) var(--space-24) var(--space-64); box-sizing: border-box; display: flex; gap: var(--space-24); align-items: flex-start; flex-wrap: wrap; }
.invoice__main { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.invoice__card { padding: var(--space-32); display: flex; flex-direction: column; gap: var(--space-16); }
.invoice__card--compact { padding: var(--space-24); gap: var(--space-12); }
.invoice__head { display: flex; gap: var(--space-16); align-items: center; }
.invoice__icon { width: 56px; height: 56px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); display: grid; place-items: center; flex: none; }
.invoice__requisites { display: grid; grid-template-columns: 180px 1fr; gap: 10px var(--space-16); font-size: 14px; line-height: 20px; margin: 0; }
.invoice__requisites dd { margin: 0; overflow-wrap: anywhere; }
.invoice__account { display: flex; gap: var(--space-8); align-items: center; }
.invoice__upload { padding: 20px var(--space-24); display: flex; gap: var(--space-16); align-items: center; flex-wrap: wrap; }
.invoice__upload-text { flex: 1 1 260px; display: flex; flex-direction: column; gap: var(--space-4); }
.invoice__file { margin-top: var(--space-8); }
.invoice__file-button { cursor: pointer; }
.invoice__file-button:has(input:focus-visible) { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.invoice__aside { flex: 1 1 300px; max-width: 360px; min-width: 0; }
.invoice__panel-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-8); }
.invoice__docs { display: flex; flex-direction: column; gap: var(--space-8); font-size: 13px; }
.invoice__doc { display: flex; gap: var(--space-8); align-items: center; }
@media (max-width: 767px) {
  .invoice { padding: var(--space-24) var(--space-16) var(--space-48); }
  .invoice__card { padding: 20px var(--space-16); }
  .invoice__requisites { grid-template-columns: 1fr; gap: 2px; }
  .invoice__requisites dd { margin-bottom: var(--space-8); }
  .invoice__aside { max-width: none; }
}

/* ---------- Админка: B2B и счета (AdmB2B, AdmB2BTablet) ---------- */
.b2b { display: flex; flex-direction: column; gap: var(--space-16); }
.b2b-tabs { border: 0; gap: 20px; align-self: stretch; }
.b2b-tabs .pl-tab { height: 64px; display: inline-flex; align-items: center; gap: 6px; }
.b2b-tabs__short { display: none; }
.b2b__kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.b2b__kpi--error { border-color: var(--error); }
.b2b__overdue, .b2b__overdue-date { color: var(--error); }
.b2b__overdue-date { font-weight: 700; }
.b2b__layout { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.b2b__table { flex: 999 1 640px; min-width: 0; }
.b2b__link { color: var(--ink); text-decoration: none; }
.b2b__link:hover { color: var(--primary); }
.b2b__inn { display: block; font-size: 12px; }
.b2b__panel { flex: 1 1 320px; max-width: 380px; padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); }
.b2b__panel-head { display: flex; flex-direction: column; gap: var(--space-4); }
.b2b__panel-head h2 { margin: 0; }
.b2b__form { display: flex; flex-direction: column; gap: var(--space-12); }
.b2b__form-actions { display: flex; flex-direction: column; gap: var(--space-8); }
.b2b__file { text-decoration: none; color: var(--ink); }
.b2b__select { width: 180px; height: 36px; }
.b2b__select select { font-size: 14px; }
@media (max-width: 1279px) {
  .b2b-tabs__long { display: none; }
  .b2b-tabs__short { display: inline; }
  .b2b__table { flex-basis: 100%; }
  .b2b__panel { flex-basis: 100%; max-width: none; }
  .b2b__form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12) var(--space-16); align-items: end; }
  .b2b__form .b2b__file, .b2b__form-actions { grid-column: 1 / -1; }
  .b2b__form-actions { flex-direction: row; }
  .b2b__form-actions .pl-btn--s { height: 44px; }
  .b2b__select { height: 44px; }
}
@media (max-width: 767px) {
  .b2b__kpis { grid-template-columns: 1fr; }
}

/* ---------- Выпадающие меню на <details> (фильтры, массовые действия, смена статуса) ---------- */
.orders-dd { position: relative; display: inline-flex; }
.orders-dd > summary { list-style: none; cursor: pointer; }
.orders-dd > summary::-webkit-details-marker { display: none; }
.orders-dd__menu { position: absolute; top: calc(100% + var(--space-4)); left: 0; min-width: 220px; max-height: 360px; color: var(--ink); font-weight: 400; }
.orders-dd--right .orders-dd__menu { left: auto; right: 0; }
.orders-dd--up .orders-dd__menu { top: auto; bottom: calc(100% + var(--space-4)); min-width: 120px; }
.orders-dd__menu .pl-menu-item { width: 100%; border: 0; background: transparent; font: inherit; font-size: 14px; color: inherit; text-align: left; text-decoration: none; }
.orders-dd__form { display: block; }
.orders-dd__check { min-height: 40px; padding: var(--space-8) var(--space-12); gap: var(--space-8); }
.orders-dd__period { display: flex; flex-direction: column; gap: var(--space-12); padding: var(--space-12); min-width: 240px; }
.orders-dd__actions { display: flex; gap: var(--space-8); }

/* ---------- Админка: заказы (AdmOrders, AdmOrdersTablet) ---------- */
.orders-tabs { border: 0; gap: 20px; margin-left: var(--space-16); align-self: stretch; }
.orders-tabs .pl-tab { height: 64px; display: inline-flex; align-items: center; gap: 6px; }
.orders__toolbar .pl-chip { gap: 6px; }
.orders__search { width: 260px; height: 36px; }
.orders__search input { font-size: 14px; }
.orders__clear { display: inline-flex; color: inherit; }
.orders__reset { margin-left: auto; }
.orders__bulkbar[hidden] { display: none; }
.orders__spacer { flex: 1; }
.orders__check { width: 44px; }
.orders__number { font-weight: 600; white-space: nowrap; }
.orders__table td.pl-num, .orders__due, .orders__table .pl-r { white-space: nowrap; }
.orders__client { white-space: nowrap; }
.orders__sort { color: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: 2px; }
.orders__client { display: inline-flex; gap: 6px; align-items: center; }
.orders__client .pl-badge { height: 18px; font-size: 11px; }
.orders__due--late { color: var(--error); font-weight: 700; }
.orders__due--urgent { color: var(--warning); font-weight: 700; }
.orders__action { white-space: nowrap; }
.orders__take { display: inline-block; }
.orders__footer { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); padding: var(--space-12) var(--space-16); border-top: 1px solid var(--border); }
.orders__range { display: inline-flex; align-items: center; gap: var(--space-4); font-size: 14px; }
.orders__per { display: inline-flex; align-items: center; gap: 2px; color: var(--ink-muted); }
.orders__footer .pl-row { justify-content: flex-end !important; }
.orders__narrow, .orders__short { display: none; }
.orders__sub { display: none; font-size: 12px; }
@media (max-width: 1279px) {
  .orders-tabs { margin-left: var(--space-8); gap: var(--space-12); }
  .orders__wide, .orders__long, .orders__wide-inline { display: none; }
  .orders__narrow, .orders__short { display: inline; }
  .orders__sub { display: block; margin-top: 2px; }
  .orders__table td { height: 64px; }
  .orders__search { width: 220px; height: var(--touch-target); }
  .orders__export span { display: none; }
  .orders__bulkbar { min-height: 56px; }
}

/* ---------- Админка: карточка заказа (AdmOrderCard, AdmOrderCardTablet) ---------- */
.order-card-topbar { height: auto; min-height: 64px; padding-top: var(--space-12); padding-bottom: var(--space-12); flex-wrap: wrap; gap: var(--space-12); }
.order-card-topbar h1 { font-family: var(--font-mono); }
.order-card-topbar__back { color: var(--ink); }
.order-card-topbar__meta { font-size: 14px; }
.order-card-actions { display: flex; gap: var(--space-8); align-items: center; }
.order-card-actions__operator { display: inline-flex; gap: 6px; align-items: center; font-size: 14px; }
.order-card-actions__status { height: 36px; font: inherit; font-size: 14px; color: var(--ink); gap: var(--space-8); }
.order-card-actions__form { display: inline-block; }
.order-card { display: flex; gap: var(--space-16); align-items: flex-start; }
.order-card__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.order-card__aside { flex: 0 1 400px; min-width: 340px; display: flex; flex-direction: column; gap: var(--space-16); }
.order-history { display: grid; grid-template-columns: 120px 1fr; gap: 10px var(--space-16); font-size: 14px; align-items: baseline; }
.order-history__time { font-size: 12px; }
.order-note { font-size: 14px; line-height: 20px; padding: 10px var(--space-12); border-radius: var(--radius-md); background: var(--warning-soft); overflow-wrap: anywhere; }
.order-note-form { display: flex; flex-direction: column; gap: var(--space-8); align-items: flex-start; }
.order-note-form .pl-input { align-self: stretch; }
.order-note-form textarea { min-height: 48px; font-size: 14px; }
.order-customer__head { display: flex; gap: var(--space-12); align-items: center; }
.order-customer__name { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.order-customer__stats { display: flex; gap: var(--space-16); flex-wrap: wrap; }
.order-payment__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-12); flex-wrap: wrap; }
.order-payment__head h2 { margin: 0; }
.order-payment__rows { display: flex; flex-direction: column; gap: var(--space-4); margin: 0; font-size: 14px; }
.order-payment__rows > div { display: flex; justify-content: space-between; gap: var(--space-12); }
.order-payment__rows dt { color: var(--ink-muted); }
.order-payment__rows dd { margin: 0; text-align: right; }
.order-payment__refunds { display: flex; flex-direction: column; gap: var(--space-8); padding-top: var(--space-12); border-top: 1px solid var(--border); }
.order-payment__refund { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4) var(--space-8); font-size: 14px; }
.order-payment__refund .pl-muted { flex-basis: 100%; }
.order-payment__note { margin: 0; }
.order-customer__delivery { font-size: 14px; padding: 10px var(--space-12); background: var(--surface-sunken); border-radius: var(--radius-md); display: flex; flex-direction: column; gap: 2px; }
.order-shipment { display: flex; flex-direction: column; gap: var(--space-8); margin-top: var(--space-8); padding-top: var(--space-8); border-top: 1px solid var(--border); }
.order-shipment:empty { display: none; }
.order-shipment__head { display: flex; align-items: center; gap: var(--space-8); flex-wrap: wrap; }
.order-shipment__history { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 2px; font-size: 13px; }
.order-shipment__actions { display: flex; flex-wrap: wrap; gap: var(--space-8); }
.order-shipment__form { display: contents; }
.order-shipment__fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-12); }
@media (max-width: 600px) { .order-shipment__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.order-modal-form { display: flex; flex-direction: column; gap: var(--space-16); }

.order-item-card { padding: 0; overflow: hidden; }
.order-item-card__tabs { padding: 0 20px; overflow-x: auto; }
.order-item-card__tabs .pl-tab { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.order-item-card__done { color: var(--success); }
.order-item-card__body { display: flex; gap: 20px; padding: 20px; flex-wrap: wrap; }
.order-item-card__preview { flex: 1 1 280px; height: 260px; border-radius: var(--radius-md); background: var(--surface-sunken); position: relative; display: grid; place-items: center; overflow: hidden; }
.order-item-card__thumb { max-width: 100%; max-height: 100%; object-fit: contain; }
.order-item-card__placeholder { color: var(--ink-subtle); }
.order-item-card__dims { position: absolute; left: var(--space-8); top: var(--space-8); font-family: var(--font-mono); font-weight: 500; }
.order-item-card__download { position: absolute; right: var(--space-8); bottom: var(--space-8); display: flex; gap: var(--space-8); }
.order-item-card__params { flex: 1 1 300px; display: grid; grid-template-columns: 140px 1fr; gap: var(--space-8) var(--space-12); font-size: 14px; align-content: start; }
.order-item-card__parts { border-top: 1px solid var(--border); padding: var(--space-16) 20px 20px; display: flex; flex-direction: column; gap: var(--space-12); }
.order-item-card__parts h3 { margin: 0; }
.order-item-card__part-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.order-item-card__part { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; }
.order-item-card__part-main { flex: 1 1 220px; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.model-parts { display: flex; flex-direction: column; gap: var(--space-12); margin-top: var(--space-16); }
.model-parts h3 { margin: 0; }
.model-parts__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--space-8) var(--space-16); }
.model-parts__item { display: flex; align-items: center; gap: var(--space-12); }
.model-parts__main { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: 14px; }
.order-item-card__dot, .cfg__part-dot { flex: none; width: 14px; height: 14px; border-radius: var(--radius-full); border: 1px solid var(--border-strong); }
.order-item-card__badges { display: flex; gap: var(--space-4); flex-wrap: wrap; }

.order-printing__head { display: flex; align-items: baseline; gap: var(--space-12); flex-wrap: wrap; }
.order-printing__head h2 { margin: 0; }
.order-printing__head .pl-chip { margin-left: auto; }
.order-printing__form-wrap { display: flex; flex-direction: column; gap: 14px; }
.order-printing__options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-12); }
.order-printer { gap: 6px; }
.order-printer .pl-chip { align-self: flex-start; }
.order-printer__name { font-size: 15px; padding-right: var(--space-24); }
.order-printing__more { display: none; align-self: flex-start; border: 0; background: none; padding: 0; font: inherit; font-size: 14px; }
.order-printing__start { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.order-printing__check { padding: 0; min-height: 0; font-size: 14px; }
.order-printing__stub { aspect-ratio: auto; height: 120px; display: grid; place-items: center; background: var(--surface-sunken); color: var(--ink-muted); font-size: 14px; text-align: center; padding: var(--space-16); }
.order-printing__actions { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.order-printing__form { display: inline-block; }
.order-jobs { display: flex; flex-direction: column; gap: var(--space-8); padding-top: var(--space-12); border-top: 1px solid var(--border); }
.order-jobs__row { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; font-size: 14px; }
.order-jobs__link { display: inline-flex; gap: var(--space-4); align-items: center; }
.pl-radio-card:has(> input:checked) { border: 2px solid var(--primary); padding: 15px; background: var(--primary-soft); }
.pl-radio-card:has(> input:checked) .pl-rc-dot { border: 6px solid var(--primary); }
.finish-job { display: flex; flex-direction: column; gap: var(--space-16); color: var(--ink); }
.finish-job__file { font: inherit; font-size: 14px; }
.finish-job__material { max-width: 200px; }
.print-duration { border: 0; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.print-duration .pl-label { padding: 0; }
.print-duration__fields { display: flex; gap: var(--space-8); }
.print-duration__input { width: 120px; }

/* Планшет: одна колонка, клиент и заметки слева от чата, история — внизу */
@media (max-width: 1279px) {
  .order-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-areas: "item item" "printing printing" "customer chat" "payment chat" "notes chat" "history history"; }
  .order-card__main, .order-card__aside { display: contents; }
  .order-item-card { grid-area: item; }
  .order-printing { grid-area: printing; }
  .order-customer { grid-area: customer; }
  .order-payment { grid-area: payment; }
  .order-card__notes { grid-area: notes; }
  .chat-card { grid-area: chat; }
  .order-card__history { grid-area: history; }
  .order-item-card__body { flex-wrap: nowrap; padding: var(--space-16); }
  .order-item-card__preview { flex: 0 0 280px; height: 240px; }
  .order-item-card__params { grid-template-columns: 120px 1fr; }
  .order-item-card__tabs .pl-tab { height: 48px; }
  .order-printing__options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .order-printer { min-height: 96px; }
  [data-controller~="printer-pick"]:not(.is-expanded) .order-printer.is-extra { display: none; }
  .order-printing__more { display: inline; }
  .order-printing__check { min-height: var(--touch-target); font-size: 15px; }
  .order-printing__submit { width: 100%; height: 56px; order: 3; }
  .order-card-actions__status { height: var(--touch-target); font-size: 15px; }
}

/* ---------- Чат по заказу (Chat) ---------- */
.chat-card { padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); min-width: 0; }
.chat-card__head { display: flex; align-items: center; gap: var(--space-8); flex-wrap: wrap; }
.chat-card__head h2 { margin: 0 var(--space-4) 0 0; }
.chat-card__scroll { max-height: 420px; overflow-y: auto; overscroll-behavior: contain; }
.chat-card__scroll:has(.pl-msg, .chat-system) .chat-card__empty { display: none; }
.chat-card__empty { margin: 0; }
.chat-card__form { display: flex; flex-direction: column; gap: var(--space-4); }
.chat-card .pl-msg-bubble { font-size: 14px; overflow-wrap: anywhere; }
.chat-card .pl-msg-bubble > span + .pl-msg-photo { margin-top: var(--space-8); }
.chat-card .pl-msg-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.chat-card .pl-composer textarea { font-size: 14px; }
.chat-msg { min-width: 0; }
.chat-msg .pl-msg-bubble.chat-msg__deleted { background: transparent; color: var(--ink-subtle); font-style: italic; border: var(--border-width) dashed var(--border); }
.chat-msg__delete-form { display: inline; }
.chat-msg__delete-form[hidden] { display: none; }
.chat-msg__delete { vertical-align: middle; }
.chat-system { text-align: center; font-size: 12px; color: var(--ink-subtle); }
:root {
  /* Просмотр фото во весь экран: фон заметно темнее обычной подложки модалок — в обеих темах. */
  --lightbox-scrim: rgba(10, 12, 14, 0.88);
}
dialog.chat-lightbox::backdrop { background: var(--lightbox-scrim); }
.chat-lightbox[open] { position: fixed; inset: 0; width: 100%; height: 100%; display: grid; place-items: center; padding: var(--space-24); }
.chat-lightbox img { max-width: 100%; max-height: calc(100vh - 2 * var(--space-48)); border-radius: var(--radius-md); box-shadow: var(--shadow-modal); }
.chat-lightbox .pl-btn { position: fixed; top: var(--space-16); right: var(--space-16); background: var(--surface); }
@media (max-width: 1279px) {
  .chat-card .pl-composer textarea { font-size: 15px; }
}

/* ---------- Live-поток камеры (LivePlayer) ---------- */
.live-player__media { position: absolute; inset: 0; display: grid; place-items: center; }
.live-player__media video, .live-player__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.live-player__media img:not([src]) { display: none; }
.live-player__state { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-8); font-size: 14px; color: var(--ink-inverse); background: var(--surface-inverse); }
.live-player__state[hidden] { display: none; }
.live-player__spinner { width: 24px; height: 24px; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: pl-spin .9s linear infinite; }
.live-player__camera { margin-left: auto; }
.live-player__line { display: flex; justify-content: space-between; gap: var(--space-12); font-size: 13px; }
.live-player__spacer { flex: 1; }
.live-player:fullscreen { border-radius: 0; }

/* ---------- Админка: принтеры (AdmPrinters, AdmPrintersTablet) ---------- */
/* Сводка в шапке высотой 64px — одной строкой; не хватает места (открыта панель) — прокрутка вбок. */
.printers-summary { display: flex; gap: var(--space-8); min-width: 0; overflow-x: auto; scrollbar-width: none; padding-right: var(--space-24);
                    mask-image: linear-gradient(to right, #000 calc(100% - var(--space-24)), transparent); }
.printers-summary .pl-chip { flex: none; white-space: nowrap; }
.adm-topbar:has(.printers-summary) :is(h1, .adm-topbar__actions) { flex: none; }
.printers__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.printers--with-panel { padding-right: 440px; }
.adm-layout:has(.printers--with-panel) .adm-topbar { padding-right: 440px; }
.printer-card { overflow: hidden; color: var(--ink); text-decoration: none; display: flex; flex-direction: column; }
.printer-card:hover { color: var(--ink); border-color: var(--border-strong); }
.printer-card.is-selected { outline: 2px solid var(--primary); outline-offset: -1px; }
.printer-card--fault { border-color: var(--error); }
.printer-card__cam { position: relative; aspect-ratio: 16 / 10; background: var(--surface-inverse); display: grid; place-items: center; color: var(--ink-subtle); }
.printer-card__cam--off { background: var(--surface-sunken); }
.printer-card__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.printer-card__nosignal { display: inline-flex; flex-direction: column; align-items: center; gap: var(--space-4); font-size: 12px; }
.printer-card__overlay { position: absolute; top: var(--space-8); left: var(--space-8); right: var(--space-8); display: flex; gap: 6px; }
.printer-card__cam-label { margin-left: auto; }
.printer-card__body { padding: var(--space-12) 14px; display: flex; flex-direction: column; gap: 6px; }
.printer-card__head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-8); font-size: 14px; }
.printer-card__head b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.printer-card__head .pl-chip { flex: none; }
.printer-card__meta, .printer-card__job { font-size: 12px; }
.printer-card__job { display: flex; justify-content: space-between; gap: var(--space-8); }
.printer-card__fault { display: flex; gap: 6px; align-items: center; font-size: 12px; color: var(--error); }
.printers-panel { position: fixed; top: 0; right: 0; bottom: 0; width: 416px; z-index: var(--z-drawer); border-left: 1px solid var(--border); }
.printers-panel__scrim { display: none; }
.printers-panel__body { display: flex; flex-direction: column; gap: var(--space-16); }
.printers-panel__tiles { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); font-size: 13px; }
.printers-panel__tile { padding: 10px; background: var(--surface-sunken); border-radius: var(--radius-md); }
.printers-panel__list { display: flex; flex-direction: column; gap: 6px; }
.printers-panel__jobs { display: grid; grid-template-columns: auto 1fr auto; gap: var(--space-8) var(--space-12); font-size: 13px; align-items: center; }
.printers-panel__foot { flex-direction: row; flex-wrap: wrap; }
.printers-panel__foot form { display: flex; }
.printers-panel__foot form .pl-btn { flex: 1; }
.printers-panel__narrow { flex: 1; }
.printers-panel__wide { flex: 2; }
.printers-panel__full { flex-basis: 100%; }
.printer-form { display: flex; flex-direction: column; gap: var(--space-16); color: var(--ink); }
.printer-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); align-items: start; }
.printer-form__row--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.printer-form__fieldset { border: 0; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.printer-status-options { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1279px) {
  .printers--with-panel { padding-right: 0; }
  .adm-layout:has(.printers--with-panel) .adm-topbar { padding-right: 20px; }
  .printers-panel { width: 440px; z-index: var(--z-modal); }
  .printers-panel__scrim { display: block; position: fixed; inset: 0; background: var(--scrim); z-index: var(--z-modal); }
  .printers-summary .pl-chip { display: none; }
  .printers-summary .pl-chip:nth-child(-n+3) { display: inline-flex; }
}

/* ---------- Заказ клиента: печать, таймлапс, чат, статус ---------- */
.order-main { flex: 999 1 480px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.order-live { display: flex; flex-direction: column; gap: var(--space-12); }
.order-live__head { display: flex; align-items: baseline; gap: var(--space-12); }
.order-live__note { display: flex; gap: var(--space-8); align-items: center; }
.order-live__progress { display: flex; flex-direction: column; gap: var(--space-8); }
.order-timelapse { width: 100%; border-radius: var(--radius-lg); background: var(--surface-inverse); aspect-ratio: 16 / 9; }
.order-timelapse__foot { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); }
.order-track { display: flex; justify-content: space-between; gap: var(--space-12); font-size: 14px; padding: 10px var(--space-12); background: var(--surface-sunken); border-radius: var(--radius-md); }
.order-shipment-track { display: flex; flex-direction: column; gap: var(--space-12); margin-top: var(--space-12); }
.order-shipment-track__list { margin: 0; padding: 0 0 0 var(--space-16); list-style: none; display: flex; flex-direction: column; gap: var(--space-8); border-left: 2px solid var(--border); }
.order-shipment-track__step { display: flex; flex-direction: column; font-size: 14px; position: relative; }
.order-shipment-track__step::before { content: ""; position: absolute; left: calc(-1 * var(--space-16) - 6px); top: 6px; width: 10px; height: 10px; border-radius: var(--radius-full); background: var(--border); }
.order-shipment-track__step.is-current { font-weight: 600; }
.order-shipment-track__step.is-current::before { background: var(--primary); }
.order-shipment-track__link { display: inline-flex; align-items: center; gap: var(--space-4); align-self: flex-start; }

/* ---------- Кабинет: обзор (CabOverview) ---------- */
.order-thumb { width: var(--thumb-size, 40px); height: var(--thumb-size, 40px); flex: none; }
.order-thumb__image { width: 100%; height: 100%; object-fit: cover; }
.order-thumb__icon { color: var(--thumb-color, var(--ink-subtle)); }
.overview-card { padding: 20px; display: flex; flex-direction: column; gap: var(--space-8); text-decoration: none; color: var(--ink); }
.overview-card:hover { color: var(--ink); border-color: var(--border-strong); }
.overview-card__value { display: flex; align-items: center; gap: var(--space-8); }
.overview-card__row { display: flex; justify-content: space-between; align-items: center; }
.overview-card__turnover { display: flex; align-items: baseline; gap: 6px; }
.overview-card__strong { color: var(--ink); }
.overview-card__code { font-size: 13px; padding: 6px 10px; background: var(--surface-sunken); border-radius: var(--radius-sm); align-self: flex-start; }
.overview-order { padding: var(--space-16); display: flex; gap: var(--space-16); text-decoration: none; color: var(--ink); }
.overview-order:hover { color: var(--ink); }
.overview-order__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.overview-order__head { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.overview-order__number { font-weight: 600; }
.overview-order__eta { margin-left: auto; }
.overview-order__live { align-self: center; }
.overview-action { padding: var(--space-16); display: flex; flex-direction: column; gap: var(--space-8); text-decoration: none; color: var(--ink); }
.overview-action svg { color: var(--primary); }
.overview-action:hover { color: var(--ink); }

@media (max-width: 1023px) {
  .overview-order { flex-wrap: wrap; }
  .overview-order .order-thumb { width: 64px; height: 64px; }
  .overview-order__live { align-self: flex-start; }
}

/* ---------- Кабинет: мои заказы и повтор (CabOrders) ---------- */
.orders-head { display: flex; align-items: center; gap: var(--space-16); flex-wrap: wrap; }
.orders-head__view { margin-left: auto; }
.orders-search { display: contents; }
.orders-search__input { width: 240px; height: 36px; }
.orders-search__input input { font-size: 14px; }
.orders-year { margin-left: auto; }
.orders-year summary { gap: 6px; }
.orders-sort { color: inherit; text-decoration: none; }
.orders-table__model { display: flex; gap: var(--space-8); align-items: center; }
.orders-table td { vertical-align: middle; }
.orders-table__actions { display: inline-flex; gap: var(--space-4); justify-content: flex-end; white-space: nowrap; }
.orders-empty { padding: var(--space-32) var(--space-16); }
.orders-pager { padding: var(--space-12) var(--space-16); border-top: 1px solid var(--border); }
.orders-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); padding: var(--space-16); }
.orders-card { padding: var(--space-16); display: flex; flex-direction: column; gap: var(--space-12); }
.orders-card__link { display: flex; gap: var(--space-12); color: var(--ink); text-decoration: none; }
.orders-card__link:hover { color: var(--ink); }
.orders-card__foot { display: flex; justify-content: space-between; align-items: center; gap: var(--space-8); }
.repeat-modal { width: 520px; max-width: 100%; }
.repeat-modal__body { display: flex; flex-direction: column; gap: var(--space-12); }
.repeat-modal__item { display: flex; gap: var(--space-12); align-items: center; color: var(--ink); }
.repeat-modal__text { flex: 1; min-width: 0; }
.repeat-modal__ready { display: flex; justify-content: space-between; color: var(--ink); }

@media (max-width: 1023px) {
  .orders-head__view { margin-left: 0; }
  .orders-search__input { width: 100%; }
  .orders-year { margin-left: 0; }
  .orders-cards { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Детали заказа (OrderDetails, OrderDone, OrderDetailsMobile) ---------- */
.order-page { max-width: 1200px; margin: 0 auto; padding: var(--space-24) var(--space-24) var(--space-64); display: flex; flex-direction: column; gap: var(--space-16); }
.order-page__head { display: flex; align-items: center; gap: var(--space-16); flex-wrap: wrap; margin: var(--space-4) 0 var(--space-8); }
.order-page__title { margin: 0; }
.order-page__number { font-size: 36px; font-weight: 600; }
.order-page__meta { font-size: 14px; }
.order-page__actions { margin-left: auto; display: flex; gap: var(--space-8); flex-wrap: wrap; }
.order-page__back { display: none; }
.order-page .order-layout { margin-top: 0; gap: var(--space-24); }
.order-page .order-aside { max-width: 380px; }
.order-review { padding: var(--space-16) 20px; display: flex; gap: var(--space-16); align-items: center; background: var(--accent-soft); border-color: transparent; flex-wrap: wrap; }
.order-review__text { flex: 1 1 300px; }
.order-params { gap: var(--space-4); }
.order-param { display: flex; gap: var(--space-16); padding: var(--space-12) 0; align-items: center; flex-wrap: wrap; }
.order-param__body { flex: 1 1 300px; min-width: 0; }
.order-param__body > .pl-hint { margin-top: var(--space-8); }
.order-param__price { text-align: right; }
.order-param__file { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); padding: var(--space-8) 0 var(--space-12); border-top: 1px solid var(--border); flex-wrap: wrap; }
.order-param__file + .order-param { border-top: 1px solid var(--border); }
.order-chat { scroll-margin-top: var(--space-16); }
.order-delivery { display: flex; gap: 10px; align-items: flex-start; }
.order-delivery__icon { color: var(--ink-muted); margin-top: 2px; }
.order-track__value { display: inline-flex; align-items: center; gap: var(--space-4); }
.order-docs { padding: 0; display: flex; flex-direction: column; }
.order-docs__title { margin: 0; padding: 20px 20px var(--space-8); }
.order-doc { display: flex; gap: 10px; align-items: center; padding: var(--space-12) 20px; border-bottom: 1px solid var(--border); }
.order-doc:last-child { border-bottom: 0; }
.order-doc__icon { color: var(--primary); }
.order-doc__body { flex: 1; min-width: 0; }
.documents-filter { display: flex; flex-wrap: wrap; gap: var(--space-8); margin-bottom: var(--space-16); }
.order-compact, .order-mobile-actions, .order-sticky { display: none; }
.order-compact { padding: var(--space-16); flex-direction: column; gap: var(--space-12); }
.order-compact__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-8); }
.order-compact__bar, .order-compact__labels { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-4); }
.order-compact__bar i { height: 6px; border-radius: 3px; background: var(--surface-sunken); box-shadow: inset 0 0 0 1px var(--border); }
.order-compact__bar i.is-done { background: var(--primary); box-shadow: none; }
.order-compact__bar i.is-current { background: var(--accent); box-shadow: none; }
.order-compact__labels { font-size: 11px; line-height: 14px; color: var(--ink-muted); }
.order-compact__labels b { color: var(--ink); }
.order-compact__more { align-self: flex-start; }
.order-timeline { scroll-margin-top: var(--space-16); }

@media (max-width: 767px) {
  .order-page { padding: var(--space-12) var(--space-16) 120px; gap: var(--space-12); }
  .order-page > .pl-crumbs, .order-page__actions, .order-page__meta { display: none; }
  .order-page__head { gap: var(--space-4); margin: 0; }
  .order-page__back { display: inline-flex; color: var(--ink); }
  .order-page__word { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .order-page__number { font-size: 18px; margin-right: var(--space-8); }
  .order-page .order-aside { max-width: none; }
  .order-compact { display: flex; }
  .order-param__price { text-align: left; }
  .order-mobile-actions { display: flex; flex-direction: column; gap: var(--space-4); }
  .order-sticky { display: flex; gap: var(--space-8); position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky); padding: var(--space-12) var(--space-16) var(--space-24); background: var(--surface); border-top: 1px solid var(--border); box-shadow: var(--shadow-sticky); }
  .order-sticky__chat { flex: 1; }
  .order-sticky > a:last-child { flex: 2; }
}

/* ---------- Центр уведомлений (CabNotifications) ---------- */
.notifications-head { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; }
.notifications-head__actions { margin-left: auto; display: flex; gap: var(--space-8); }
.notifications-group { display: flex; flex-direction: column; gap: var(--space-8); }
.notifications-list { overflow: hidden; }
.notification { display: flex; gap: var(--space-16); padding: var(--space-16) 20px; color: var(--ink-muted); text-decoration: none; border-bottom: 1px solid var(--border); }
.notification:last-child { border-bottom: 0; }
.notification:hover { background: var(--surface-hover); color: var(--ink-muted); }
.notification.is-unread { background: var(--primary-soft); color: var(--ink); }
.notification.is-unread:hover { color: var(--ink); }
.notification__dot { width: 8px; height: 8px; border-radius: 50%; margin-top: 8px; flex: none; }
.notification.is-unread .notification__dot { background: var(--primary); }
.notification__icon { flex: none; display: inline-flex; }
.notification__glyph { color: var(--primary); }
.notification__glyph--warning { color: var(--warning); }
.notification__text { flex: 1; min-width: 0; }
.notification__text b { color: var(--ink); }
.notification__number { font-size: 14px; }
.notification__link { color: var(--primary); text-decoration: underline; }
.notification__time { font-size: 13px; white-space: nowrap; }
.notifications-more { display: flex; justify-content: center; }

@media (max-width: 767px) {
  .notification { flex-wrap: wrap; gap: var(--space-8) var(--space-12); padding: var(--space-12) var(--space-16); }
  .notification__text { flex-basis: calc(100% - 40px); order: 3; }
  .notification__time { margin-left: auto; }
}

/* ---------- Настройки профиля (CabSettings) ---------- */
.settings-card { scroll-margin-top: var(--space-16); }
.settings-anchor { position: relative; top: calc(-1 * var(--space-16)); }
.settings-profile { display: flex; flex-direction: column; gap: var(--space-16); }
.settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.settings-actions { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.settings-link { border: 0; padding: 0; background: none; color: var(--primary); font: inherit; text-decoration: underline; cursor: pointer; }
.settings-pickup { justify-content: space-between; font: inherit; color: var(--ink); cursor: pointer; text-align: left; }
.settings-pickup__value { display: flex; gap: var(--space-8); align-items: center; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.settings-points { display: flex; flex-direction: column; gap: var(--space-16); }
.settings-points turbo-frame { display: block; max-height: 55vh; overflow-y: auto; padding: 2px; min-height: 120px; }
.settings-points__cities { display: flex; flex-direction: column; }
.settings-points__services { margin-bottom: var(--space-12); }
.settings-points__group { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.settings-row { display: flex; gap: var(--space-16); align-items: center; flex-wrap: wrap; }
.settings-row__text { flex: 1 1 320px; min-width: 0; }
.settings-company { display: flex; gap: var(--space-12); align-items: center; padding-top: var(--space-12); border-top: 1px solid var(--border); }
.settings-api-key { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; padding-top: var(--space-12); border-top: 1px solid var(--border); }
.settings-api-key .pl-btn { flex: none; }
.settings-api-new { display: flex; flex-direction: column; gap: var(--space-8); }
.settings-telegram { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.settings-telegram__qr { padding: var(--space-8); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); flex: none; }
.settings-telegram__icon { width: 64px; height: 64px; margin: 0; flex: none; }
.settings-telegram__text { flex: 1 1 280px; display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.settings-telegram__lead { font-size: 15px; line-height: 22px; }
.web-push-inline { display: contents; }
.settings-matrix { min-width: 560px; }
.settings-matrix__cell { text-align: center; }
.settings-switch { min-height: 0; }
.settings-consents { gap: var(--space-4); }
.settings-consent { display: flex; gap: var(--space-12); align-items: center; padding: var(--space-12) 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.settings-consent:last-child { border-bottom: 0; }
.settings-consent__title { font-size: 15px; }
.settings-danger { border-color: var(--error-soft); }
.settings-danger__title { color: var(--error); }
.settings-modal-text { margin: 0; color: var(--ink); }

@media (max-width: 767px) {
  .settings-grid { grid-template-columns: minmax(0, 1fr); }
  .settings-switch { min-height: var(--touch-target); }
}

/* ---------- Кабинет: организации ---------- */
.companies-head { display: flex; gap: var(--space-16); align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
.companies-list { display: flex; flex-direction: column; gap: var(--space-12); }
.companies-card { flex-direction: row; align-items: center; gap: var(--space-16); color: inherit; text-decoration: none; }
.companies-card:hover { border-color: var(--border-strong); }
.companies-card__icon { display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--radius-md); background: var(--primary-soft); color: var(--primary); flex: none; }
.companies-card__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--space-4); }
.companies-card__badges { display: flex; gap: var(--space-8); flex-wrap: wrap; margin-top: var(--space-4); }
.companies-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.companies-dl { display: grid; grid-template-columns: 160px 1fr; gap: 10px var(--space-16); font-size: 14px; line-height: 20px; margin: 0; }
.companies-dl dd { margin: 0; overflow-wrap: anywhere; }
.companies-invoices td { vertical-align: middle; }
.company-form { display: flex; flex-direction: column; gap: var(--space-16); }
.company-form__wide { grid-column: 1 / -1; }
.company-form__actions { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.invoice-companies { display: flex; flex-direction: column; gap: var(--space-8); margin-top: var(--space-12); }
.invoice-companies .pl-radio-card { padding-right: 48px; }
.invoice-companies .pl-radio-card:has(> input:checked) { padding-right: 47px; }

@media (max-width: 767px) {
  .companies-grid { grid-template-columns: minmax(0, 1fr); }
  .companies-dl { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .companies-dl dd { margin-bottom: var(--space-8); }
  .companies-invoices th:nth-child(3), .companies-invoices td:nth-child(3) { display: none; }
}

/* ---------- Отписка от писем ---------- */
.unsubscribe { display: grid; place-items: center; padding: var(--space-64) var(--space-16); }
.unsubscribe__card { max-width: 480px; padding: var(--space-32); display: flex; flex-direction: column; gap: var(--space-12); align-items: center; text-align: center; }
.unsubscribe__card h1, .unsubscribe__card p { margin: 0; }

/* ---------- Эмулятор Telegram-бота (/dev/telegram, макет TelegramBot) ---------- */
.tg-body { margin: 0; background: var(--surface-sunken); font-family: var(--font-sans); color: var(--ink); }
.tg { max-width: 420px; min-height: 100vh; margin: 0 auto; display: flex; flex-direction: column; background: color-mix(in srgb, var(--success-soft) 60%, var(--surface-sunken)); }
.tg__head { height: 64px; flex: none; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: var(--space-12); padding: 0 var(--space-16); }
.tg__avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--primary); color: var(--on-primary); display: grid; place-items: center; font-weight: 800; font-size: 15px; }
.tg__feed { flex: 1; padding: var(--space-16) var(--space-12); display: flex; flex-direction: column; gap: 10px; justify-content: flex-end; }
.tg__date { align-self: center; font-size: 12px; padding: var(--space-4) 10px; border-radius: var(--radius-full); background: var(--surface); color: var(--ink-muted); }
.tg__bubble { max-width: 300px; background: var(--surface); border-radius: 12px 12px 12px 4px; padding: 10px var(--space-12); font-size: 15px; line-height: 21px; display: flex; flex-direction: column; gap: 6px; }
.tg__time { font-size: 12px; align-self: flex-end; }
.tg__buttons { max-width: 300px; display: grid; gap: var(--space-4); }
.tg__buttons--2 { grid-template-columns: 1fr 1fr; }
.tg__button { display: grid; place-items: center; min-height: var(--touch-target); border-radius: var(--radius-md); background: var(--surface); color: var(--primary); font-weight: 600; font-size: 14px; text-decoration: none; }
.tg__composer { height: 56px; flex: none; background: var(--surface); border-top: 1px solid var(--border); display: flex; align-items: center; padding: 0 var(--space-12); gap: var(--space-8); }
.tg__input { flex: 1; border: 0; background: transparent; font: inherit; color: var(--ink); outline-offset: 4px; }
.order-track > span:first-child { white-space: nowrap; }

/* ---------- Отзыв и форма рекламации (Review, ClaimForm) ---------- */
.feedback-page { max-width: 720px; margin: 0 auto; padding: var(--space-32) var(--space-24) var(--space-64); display: flex; flex-direction: column; gap: 20px; }
.feedback-page h1 { margin: 0; }
.feedback-page__back { align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; font-size: 14px; color: var(--ink-muted); text-decoration: none; min-height: var(--touch-target); }
.feedback-page__back:hover { color: var(--ink); }
.feedback-page__head { display: flex; gap: var(--space-16); align-items: center; }
.feedback-page__sub { margin: var(--space-4) 0 0; }
.feedback-page__number { color: var(--ink); }
.feedback-page__reward { background: var(--accent-soft); align-items: center; }
.feedback-form { display: flex; flex-direction: column; gap: 20px; }
.feedback-card { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-24); }
.feedback-field { display: flex; flex-direction: column; gap: 10px; border: 0; margin: 0; padding: 0; min-width: 0; }
.feedback-field > legend { padding: 0; margin-bottom: 10px; }
.feedback-rating { display: flex; align-items: center; gap: var(--space-12); min-height: var(--touch-target); }
.feedback-hint { justify-content: space-between; display: flex; gap: var(--space-12); }
.feedback-reasons, .feedback-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-8); }
.feedback-reasons .pl-radio-card, .feedback-items .pl-radio-card { padding: 14px var(--space-16); }
.feedback-reasons .pl-radio-card.is-selected, .feedback-items .pl-radio-card.is-selected { padding: 13px 15px; }
.feedback-reasons .pl-rc-title { font-size: 15px; padding-right: var(--space-24); }
.feedback-reasons .pl-rc-dot, .feedback-items .pl-rc-dot { top: 14px; }
.feedback-items .pl-radio-card { flex-direction: row; align-items: center; gap: var(--space-12); padding-right: 44px; }
.feedback-quantity { max-width: 280px; }
.feedback-expectation { gap: 0; }
.feedback-expectation .pl-check { padding: 6px 0; min-height: var(--touch-target); }
.feedback-timelapse { align-items: center; padding: var(--space-12); border: 1px solid var(--border); border-radius: var(--radius-md); }
.feedback-timelapse .pl-box { margin-top: 0; }
.feedback-timelapse__preview { position: relative; flex: none; width: 96px; height: 54px; border-radius: var(--radius-sm); background: var(--surface-inverse); color: var(--ink-inverse); display: grid; place-items: center; overflow: hidden; }
.feedback-timelapse__preview video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .7; }
.feedback-timelapse__preview svg { position: relative; fill: currentColor; }
.feedback-anonymous { padding: 0; min-height: 0; }
.feedback-actions { display: flex; gap: var(--space-12); justify-content: flex-end; flex-wrap: wrap; }

/* Фото и видео: плитки 112 px с превью, удалением и прогрессом загрузки (FileUploader) */
.media-picker { display: flex; flex-direction: column; gap: 10px; }
.media-picker__grid { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.media-picker__add { width: 112px; height: 112px; padding: var(--space-8); justify-content: center; font: inherit; font-size: 13px; }
.media-picker__add svg { color: var(--primary); }
.media-tile { position: relative; width: 112px; height: 112px; border-radius: var(--radius-md); background: var(--surface-sunken); overflow: hidden; }
.media-tile__media { position: absolute; inset: 0; display: grid; place-items: center; font: 600 13px var(--font-mono); color: var(--ink-muted); }
.media-tile__media img, .media-tile__media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.media-tile.is-video { background: var(--surface-inverse); }
.media-tile.is-video .media-tile__media { color: var(--ink-inverse); }
.media-tile__play, .media-tile__duration { display: none; }
.media-tile.is-video .media-tile__play { display: grid; place-items: center; position: absolute; inset: 0; color: var(--ink-inverse); pointer-events: none; }
.media-tile.is-video .media-tile__play svg { fill: currentColor; }
.media-tile.is-video .media-tile__duration { display: block; position: absolute; right: 6px; bottom: 6px; font: 600 11px var(--font-mono); color: var(--ink-inverse); }
.media-tile__remove { position: absolute; top: var(--space-4); right: var(--space-4); }
.media-tile__progress { display: none; position: absolute; inset: 0; padding: var(--space-12); background: var(--surface-sunken); flex-direction: column; gap: var(--space-8); align-items: stretch; justify-content: center; text-align: center; font-size: 12px; }
.media-tile.is-uploading .media-tile__progress { display: flex; }
.media-tile.is-uploading .media-tile__remove { display: none; }

/* ---------- Рекламация клиента (Claim) ---------- */
.claim-request { gap: var(--space-12); }
.claim-request__text, .claim-card__text { margin: 0; font-size: 15px; line-height: 22px; overflow-wrap: anywhere; }
.claim-badges { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.claim-media { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.claim-media__tile { width: var(--tile-size); height: var(--tile-size); border-radius: var(--radius-md); background: var(--surface-sunken); display: grid; place-items: center; overflow: hidden; color: var(--ink-muted); font: 600 12px var(--font-mono); text-decoration: none; }
.claim-media__tile img { width: 100%; height: 100%; object-fit: cover; display: block; }
.claim-media__tile--video { background: var(--surface-inverse); color: var(--ink-inverse); }
.claim-media__tile--video svg { fill: currentColor; }
.claim-solution { gap: var(--space-8); }
.cab-card.claim-order-link { flex-direction: row; align-items: center; gap: var(--space-12); padding: var(--space-16) 20px; }

/* ---------- Админка: рекламации (AdmClaims, AdmClaimsTablet) ---------- */
.claims-filters { display: flex; gap: var(--space-8); margin-left: var(--space-12); flex-wrap: wrap; }
.claims { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.claims__list { flex: 1 1 420px; min-width: 0; }
.claims__detail { flex: 999 1 640px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.claims__row { position: relative; }
.claims__link { color: var(--ink); text-decoration: none; }
.claims__link::after { content: ""; position: absolute; inset: 0; }
.claims__link:hover { color: var(--primary); }
.claims__sub { display: block; font-size: 12px; }
.claims__overdue { color: var(--error); }
.claim-card { padding: var(--space-24); display: flex; flex-direction: column; gap: 20px; }
.claim-card__head { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.claim-card__head h2 { margin: 0; }
.claim-progress { list-style: none; margin: 0; padding: 0; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; font-size: 13px; }
.claim-card__stage { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; }
.claim-card__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.claim-card__col { display: flex; flex-direction: column; gap: var(--space-8); min-width: 0; }
.claim-card__col .claim-card__text { font-size: 14px; line-height: 20px; }
.claim-card__note { font-size: 14px; line-height: 20px; padding: var(--space-12); border-radius: var(--radius-md); background: var(--warning-soft); overflow-wrap: anywhere; }
.claim-card__inspection summary { cursor: pointer; color: var(--primary); min-height: 32px; display: flex; align-items: center; }
.claim-card__form { display: flex; flex-direction: column; gap: var(--space-8); align-items: flex-start; margin-top: var(--space-8); }
.claim-card__form .pl-input { align-self: stretch; }
.claim-decision { padding: 20px; border-radius: var(--radius-lg); border: 1px solid var(--border); display: flex; flex-direction: column; gap: 14px; }
.claim-decision__head { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.claim-decision__options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-12); }
.claim-decision__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
.claim-decision__actions { display: flex; gap: var(--space-8); justify-content: flex-end; flex-wrap: wrap; }
.claim-decision textarea { font-size: 14px; }

@media (max-width: 1279px) {
  .claims__list, .claims__detail { flex-basis: 100%; }
  .claim-card { padding: 20px; }
  .claim-card__stage .pl-btn--s, .claim-decision .pl-btn, .claim-card__form .pl-btn--s { height: var(--touch-target); }
  .claims-filters .pl-chip--filter { height: var(--touch-target); padding: 0 14px; }
}

/* ---------- Админка: входящие — обращения, заявки B2B, запросы цвета, отзывы на модерации (AdmInbox, AdmInboxTablet) ---------- */
.inbox-tabs { border: 0; gap: 20px; margin-left: var(--space-8); align-self: stretch; }
.inbox-tabs .pl-tab { height: 100%; text-decoration: none; }
.inbox-tabs .pl-tab::after { bottom: 0; }
.inbox { display: flex; flex-direction: column; gap: var(--space-16); }
.inbox__split { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.inbox__empty { flex: 999 1 560px; min-width: 0; }
.inbox__reviews { display: flex; flex-direction: column; gap: var(--space-12); }
.inbox__reviews-head { display: flex; align-items: baseline; justify-content: space-between; }
.inbox__reviews-head h2 { margin: 0; }
.inbox-list { flex: 0 0 360px; overflow: hidden; display: flex; flex-direction: column; }
.inbox-list__item { display: flex; flex-direction: column; gap: var(--space-4); padding: 14px var(--space-16); border-top: 1px solid var(--border); text-decoration: none; color: var(--ink); }
.inbox-list__item:first-child { border-top: 0; }
.inbox-list__item:hover { background: var(--surface-hover); color: var(--ink); }
.inbox-list__item.is-current { background: var(--primary-soft); box-shadow: inset 3px 0 0 var(--primary); }
.inbox-list__top { display: flex; gap: var(--space-8); align-items: center; min-width: 0; }
.inbox-list__top .pl-badge { height: 20px; flex: none; }
.inbox-list__name { font-size: 14px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inbox-list__item.is-new .inbox-list__name::after { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--primary); margin-left: 6px; vertical-align: middle; }
.inbox-list__time { margin-left: auto; font-size: 12px; flex: none; }
.inbox-list__preview { font-size: 13px; line-height: 18px; overflow-wrap: anywhere; }
.inbox-list__empty { margin: 0; padding: var(--space-16); font-size: 14px; }
.inbox-list__foot { padding: var(--space-12) var(--space-16); border-top: 1px solid var(--border); font-size: 14px; }
.inbox-list__foot:empty { display: none; }
.inbox-request { flex: 999 1 560px; min-width: 0; padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-16); }
.inbox-request__head { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.inbox-request__title { margin: 0; }
.inbox-request__assignee { margin-left: auto; }
.inbox-request__assignee summary { gap: var(--space-8); font-size: 14px; }
.inbox-request__facts { margin: 0; display: grid; grid-template-columns: 140px 1fr; gap: var(--space-8) var(--space-16); font-size: 14px; }
.inbox-request__facts dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.inbox-request__message { white-space: pre-line; }
.inbox-request__files { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.inbox-request__files a { font-size: 13px; }
.inbox-request__replies { display: flex; flex-direction: column; gap: var(--space-8); }
.inbox-reply { padding: var(--space-12) var(--space-16); border-radius: var(--radius-md); background: var(--surface-sunken); font-size: 14px; line-height: 20px; }
.inbox-reply__meta { font-size: 12px; }
.inbox-reply__body p { margin: var(--space-4) 0 0; }
.inbox-request__form { display: flex; flex-direction: column; gap: var(--space-12); }
.inbox-request__form textarea { font-size: 15px; }
.inbox-request__actions { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.inbox-swatch { display: inline-block; flex: none; width: 16px; height: 16px; border-radius: var(--radius-full); box-shadow: inset 0 0 0 1px var(--border-strong); vertical-align: -3px; }
.inbox-request__color { display: inline-flex; gap: var(--space-8); align-items: center; }
.inbox-request__templates { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.inbox-reviews { display: flex; flex-direction: column; gap: var(--space-16); }
.inbox-reviews__filters { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.inbox-reviews__filters .pl-chip { text-decoration: none; }
.review-card { scroll-margin-top: 80px; }
.inbox-reviews__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.review-card { padding: var(--space-16); display: flex; gap: var(--space-16); align-items: flex-start; }
.review-card__photo { position: relative; flex: none; width: 96px; height: 96px; border-radius: var(--radius-md); background: var(--surface-sunken); display: grid; place-items: center; overflow: hidden; text-decoration: none; }
.review-card__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.review-card__photo--empty { color: var(--ink-subtle); font-size: 12px; text-align: center; }
.review-card__more { position: absolute; right: var(--space-4); bottom: var(--space-4); padding: 0 6px; border-radius: var(--radius-sm); background: var(--surface); color: var(--ink); font: 600 12px/20px var(--font-sans); }
.review-card__body { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }
.review-card__top { display: flex; gap: var(--space-8); align-items: center; justify-content: space-between; }
.review-card__text { margin: 0; font-size: 14px; line-height: 20px; overflow-wrap: anywhere; white-space: pre-line; }
.review-card__meta { font-size: 12px; line-height: 18px; }
.review-card__flag, .review-card__reason { color: var(--error); }
.review-card__actions { display: flex; gap: 6px; flex-wrap: wrap; }
.order-review .pl-stars { margin-left: auto; }

@media (max-width: 1279px) {
  .inbox-reviews__grid { grid-template-columns: minmax(0, 1fr); }
  .inbox-list { flex-basis: 300px; }
  .inbox-request { padding: 20px; }
  .inbox-request__facts { grid-template-columns: 100px 1fr; gap: var(--space-8) var(--space-12); }
  .inbox-request__assignee-label { display: none; }
  .inbox-request__actions .pl-btn, .inbox-reviews__filters .pl-chip { min-height: var(--touch-target); }
  .review-card__actions .pl-btn--s { height: var(--touch-target); }
}

@media (max-width: 767px) {
  .feedback-page { padding: var(--space-16) var(--space-16) var(--space-48); }
  .feedback-card { padding: var(--space-16); }
  .feedback-reasons, .feedback-items { grid-template-columns: minmax(0, 1fr); }
  .feedback-actions .pl-btn { flex: 1; }
  .claim-card__grid, .claim-decision__options, .claim-decision__fields { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Каталог моделей (Catalog) ---------- */
.catalog { max-width: 1280px; margin: 0 auto; padding: var(--space-32) var(--space-24) var(--space-64); }
.catalog__head { display: flex; align-items: flex-end; gap: var(--space-24); flex-wrap: wrap; margin-bottom: var(--space-24); }
.catalog__title { margin: 0; }
.catalog__lead { margin: 6px 0 0; }
.catalog__search { margin-left: auto; width: 360px; max-width: 100%; }
.is-catalog-filters-open { overflow: hidden; }
.is-catalog-filters-open .cookie-banner { visibility: hidden; }
#catalog-results { display: block; scroll-margin-top: calc(72px + var(--space-16)); }
/* Рубрики — одна строка чипов с прокруткой, у краёв — затухание и стрелки. */
.catalog-cats { display: flex; align-items: center; gap: var(--space-8); margin-bottom: var(--space-16); }
.catalog-cats__strip { position: relative; display: flex; align-items: center; flex: 1; min-width: 0; }
.catalog-cats__all { flex: none; }
.catalog-cats__all-button { height: 36px; padding: 0 var(--space-12); border-radius: var(--radius-full); gap: 6px; font-size: 14px; }
.catalog-cats__all[open] .catalog-cats__all-button { background: var(--primary-soft); border-color: var(--primary); color: var(--primary); }
.catalog-cats__menu { width: min(760px, calc(100vw - 2 * var(--space-24))); max-height: 480px; padding: var(--space-8); box-sizing: border-box; }
.catalog-cats__menu-head { display: none; }
/* По алфавиту — сверху вниз по колонкам. */
.catalog-cats__grid { columns: 3; column-gap: var(--space-8); }
.catalog-cats__item { justify-content: space-between; text-decoration: none; color: var(--ink); break-inside: avoid; margin-bottom: 2px; }
.catalog-cats__item.is-selected { background: var(--primary-soft); color: var(--primary); font-weight: 600; }
.catalog-cats__item.is-empty, .catalog-cats__chip.is-empty { color: var(--ink-subtle); }
.catalog-cats__chip.is-empty { border-color: var(--border); }
.catalog-cats__list { display: flex; gap: var(--space-8); overflow-x: auto; scroll-snap-type: x proximity; scroll-padding-inline: 2px; scrollbar-width: none; flex: 1; min-width: 0; padding: 2px; }
.catalog-cats__list::-webkit-scrollbar { display: none; }
.catalog-cats__strip:not(.is-start) .catalog-cats__list { mask-image: linear-gradient(to right, transparent, var(--ink) var(--space-48)); }
.catalog-cats__strip:not(.is-end) .catalog-cats__list { mask-image: linear-gradient(to left, transparent, var(--ink) var(--space-48)); }
.catalog-cats__strip:not(.is-start):not(.is-end) .catalog-cats__list { mask-image: linear-gradient(to right, transparent, var(--ink) var(--space-48), var(--ink) calc(100% - var(--space-48)), transparent); }
.catalog-cats__chip { flex: none; scroll-snap-align: start; text-decoration: none; gap: 6px; }
.catalog-cats__chip .pl-subtle { font-weight: 500; }
/* Стрелки — рядом с полосой, а не поверх чипов: появляются только когда есть куда листать. */
.catalog-cats__arrow { flex: none; border-radius: var(--radius-full); }
.catalog-cats__arrow[hidden] { display: none; }
.catalog-cats__arrow--prev { margin-right: var(--space-4); }
.catalog-cats__arrow--next { margin-left: var(--space-4); }
/* Фильтры — строка кнопок с выпадающими блоками; на mobile — панель на весь экран. */
.catalog-facets { display: contents; }
.catalog-facets__toggle, .catalog-facets__head, .catalog-facets__foot { display: none; }
.catalog-facets__panel, .catalog-facets__list { display: contents; }
.catalog-facets__count { background: var(--primary); color: var(--on-primary); }
.catalog-facet__button { height: 40px; gap: var(--space-8); font-size: 14px; cursor: pointer; max-width: 280px; }
.catalog-facet__value { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.catalog-facet__name { white-space: nowrap; }
.catalog-facet.is-active .catalog-facet__name::after { content: ":"; }
.catalog-facet.is-active .catalog-facet__button { background: var(--primary-soft); border-color: var(--primary); color: var(--primary); }
.catalog-facet__button svg { flex: none; }
.catalog-facet[open] .catalog-facet__button svg { transform: rotate(180deg); }
.catalog-facet__menu { width: 320px; max-height: 420px; padding: var(--space-16); box-sizing: border-box; }
.catalog__tags { display: flex; flex-wrap: wrap; gap: var(--space-8); }
.catalog__tag { height: 32px; text-decoration: none; }
.catalog__tag .pl-subtle { font-weight: 500; }
.catalog__group { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.catalog__group legend { padding: 0; margin-bottom: var(--space-8); }
.catalog__group--checks { gap: 0; }
.catalog__check { min-height: 0; padding: 6px 0; }
.catalog__results { display: flex; flex-direction: column; gap: var(--space-16); }
.catalog__toolbar { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; margin-bottom: var(--space-16); }
.catalog__found { font-size: 14px; margin-left: auto; }
.catalog__chips { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; margin-bottom: var(--space-16); }
.catalog__chips .pl-chip--filter { text-decoration: none; gap: 6px; }
.catalog__sort-button { height: 40px; gap: var(--space-8); font-size: 14px; cursor: pointer; }
.catalog__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.catalog-range { position: relative; height: 24px; }
.catalog-range__track, .catalog-range__fill { position: absolute; top: 9px; height: 6px; border-radius: 3px; }
.catalog-range__track { left: 0; right: 0; background: var(--surface-sunken); border: 1px solid var(--border); box-sizing: border-box; }
.catalog-range__fill { left: 0; width: 100%; background: var(--primary); }
.catalog-range input[type=range] { position: absolute; inset: 0; width: 100%; margin: 0; background: none; pointer-events: none; appearance: none; -webkit-appearance: none; }
.catalog-range input[type=range]::-webkit-slider-runnable-track { background: transparent; height: 24px; }
.catalog-range input[type=range]::-moz-range-track { background: transparent; }
.catalog-range input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; pointer-events: auto; width: 22px; height: 22px; border-radius: 50%; background: var(--surface); border: 2px solid var(--primary); cursor: pointer; margin-top: 1px; }
.catalog-range input[type=range]::-moz-range-thumb { pointer-events: auto; width: 18px; height: 18px; border-radius: 50%; background: var(--surface); border: 2px solid var(--primary); cursor: pointer; }
.catalog-range input[type=range]:focus-visible::-webkit-slider-thumb { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.catalog-range__inputs { display: flex; gap: var(--space-8); align-items: center; }
.catalog-range__input { height: 40px; min-width: 0; flex: 1; }

/* Карточка модели (CatalogCard) */
.catalog-card { position: relative; overflow: hidden; display: flex; flex-direction: column; }
.catalog-card__media { position: relative; aspect-ratio: 4 / 3; background: var(--surface-sunken); display: grid; place-items: center; }
.catalog-card__image { width: 100%; height: 100%; object-fit: contain; display: block; }
.catalog-card__placeholder { color: var(--ink-subtle); }
.catalog-card__badges { position: absolute; top: var(--space-8); left: var(--space-8); display: flex; gap: var(--space-4); }
.catalog-card__fav { position: absolute; top: var(--space-8); right: var(--space-8); z-index: 1; }
.pl-fav-form { display: contents; }
.catalog-card__body { padding: var(--space-12) var(--space-16) var(--space-16); display: flex; flex-direction: column; gap: var(--space-8); flex: 1; }
.catalog-card__title { font-size: 15px; line-height: 20px; font-weight: 700; color: var(--ink); text-decoration: none; }
.catalog-card__title:hover { color: var(--primary); }
.catalog-card--interactive .catalog-card__title::after, .pl-card--interactive .catalog-card__title::after { content: ""; position: absolute; inset: 0; }
.catalog-card__author { display: flex; gap: var(--space-8); align-items: center; font-size: 13px; color: var(--ink-muted); }
.catalog-card__rating { margin-left: auto; }
.catalog-card__foot { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-8); margin-top: auto; }
.catalog-card__price { display: block; }
.catalog-card__note { font-size: 12px; display: block; }
.catalog-card__cart-form { position: relative; z-index: 1; }
.catalog-card--off .catalog-card__media { opacity: .5; }
.catalog-card__title--off { color: var(--ink-muted); }
.catalog-card__alert .pl-alert { padding: var(--space-8) 10px; font-size: 13px; }
.catalog-card__remove { align-self: flex-start; }

/* ---------- Карточка модели каталога (ModelPage) ---------- */
.model-page { max-width: 1200px; margin: 0 auto; padding: var(--space-24) var(--space-24) var(--space-64); display: flex; flex-direction: column; gap: var(--space-32); }
/* Две независимые колонки: слева просмотр и описание с отзывами, справа покупка и автор — без пустот под коротким просмотром. */
.model-page__layout { display: flex; gap: 40px; align-items: flex-start; }
.model-page__main { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-32); }
.model-page__aside { flex: 1 1 400px; max-width: 440px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-24); }
.model-page__media, .model-page__info { min-width: 0; display: flex; flex-direction: column; gap: var(--space-12); }
.model-page__buy { min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.model-page__side { min-width: 0; }
.model-viewer { position: relative; height: 560px; overflow: hidden; background: var(--surface-sunken); }
.model-viewer__chips { position: absolute; top: var(--space-16); left: var(--space-16); display: flex; gap: var(--space-8); pointer-events: none; }
.model-viewer__fav { position: absolute; top: var(--space-16); right: var(--space-16); display: flex; gap: var(--space-8); }
.model-gallery { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.model-gallery__item { width: 88px; height: 72px; border-radius: var(--radius-md); border: 1px solid var(--border); background: var(--surface-sunken); display: grid; place-items: center; overflow: hidden; color: var(--ink); cursor: pointer; padding: 0; }
.model-gallery__item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.model-gallery__item.is-selected { border: 2px solid var(--primary); color: var(--primary); font-size: 13px; font-weight: 600; cursor: default; }
.model-gallery__item--video { background: var(--ink); color: var(--surface); }
.model-page__intro { display: flex; flex-direction: column; gap: 10px; }
.model-page__title { margin: 0; }
.model-page__rating { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; font-size: 14px; }
.model-stars { gap: 0; }
.model-stars__off { color: var(--border-strong); }
.model-page__author { display: flex; gap: 10px; align-items: center; text-decoration: none; color: var(--ink); }
.model-page__author:hover { color: var(--primary); }
.model-page__author b { font-size: 15px; }
.model-page__author-meta { display: block; font-size: 13px; }
.model-page__badges { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.model-page__tags { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.model-page__tag { height: 32px; text-decoration: none; }
.model-page__complaint { display: inline-flex; gap: 6px; align-items: center; align-self: flex-start; font: inherit; font-size: 13px; color: var(--ink-muted); background: none; border: 0; padding: 0; min-height: 32px; cursor: pointer; text-decoration: underline; }
.model-page__complaint:hover { color: var(--ink); }
.model-page__manage { display: flex; gap: var(--space-8); flex-wrap: wrap; }

/* ---------- Галерея модели каталога: кабинет автора и правка в админке ---------- */
.catalog-gallery { display: flex; flex-direction: column; gap: var(--space-16); }
.catalog-gallery__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--gallery-cols, 4), minmax(0, 1fr)); gap: var(--space-16); }
.catalog-gallery__item { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
.catalog-gallery__tile { width: 100%; height: auto; aspect-ratio: 1; }
.catalog-gallery__badges { position: absolute; left: var(--space-8); top: var(--space-8); display: flex; gap: var(--space-4); flex-wrap: wrap; pointer-events: none; }
.catalog-gallery__actions { display: flex; gap: var(--space-4); align-items: center; }
.catalog-gallery__actions form { display: contents; }
.catalog-gallery__tools { position: absolute; top: var(--space-4); right: var(--space-4); display: flex; gap: var(--space-4); }
.catalog-gallery__tools form { display: contents; }
.catalog-gallery__tools .pl-btn.pl-btn--icon { width: 28px; min-width: 28px; height: 28px; padding: 0; border-radius: var(--radius-sm); }
.catalog-gallery__tools .pl-btn svg { width: 15px; height: 15px; }
.catalog-gallery__cover.is-active, .catalog-gallery__cover.is-active:disabled { background: var(--accent); color: var(--on-accent); border-color: transparent; cursor: default; }
.catalog-gallery__cover.is-active svg { fill: currentColor; }
.catalog-gallery__upload { display: flex; flex-direction: column; gap: var(--space-12); align-items: flex-start; }
.catalog-edit { display: flex; flex-direction: column; gap: var(--space-16); }
.catalog-edit__head { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; margin-bottom: var(--space-16); }
.catalog-edit__head h2 { margin: 0 var(--space-8) 0 0; }
.catalog-edit__body { display: flex; gap: var(--space-24); align-items: flex-start; flex-wrap: wrap; }
.catalog-edit__form { display: flex; flex-direction: column; gap: var(--space-16); flex: 1 1 420px; max-width: 720px; min-width: 0; }
.catalog-edit__preview { flex: 1 1 320px; display: flex; flex-direction: column; gap: var(--space-8); position: sticky; top: var(--space-16); }
.catalog-edit__preview .catalog-edit__viewer { flex: none; height: 380px; }
.catalog-edit__dims { font-size: 13px; }
.moderation__search { display: flex; gap: var(--space-8); margin-bottom: var(--space-16); flex-wrap: wrap; }
.moderation__search-input { flex: 1 1 280px; }
.moderation__model { display: flex; gap: var(--space-12); align-items: center; }
.moderation-media { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-16); }
.moderation-media__item { display: flex; flex-direction: column; gap: var(--space-12); padding: var(--space-12); }
.moderation-media__tile { width: 100%; height: auto; aspect-ratio: 1; }
.moderation-media__info { display: flex; flex-direction: column; gap: var(--space-4); font-size: 14px; }
.moderation-media__title { font-weight: 700; }
.moderation-media__actions { display: flex; gap: var(--space-8); }
@media (max-width: 767px) {
  .catalog-gallery__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.model-buy { padding: 20px; display: flex; flex-direction: column; gap: var(--space-16); }
.model-buy__options { display: flex; flex-direction: column; gap: var(--space-16); }
.model-buy__group { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.model-buy__group legend { padding: 0; margin-bottom: var(--space-8); }
.model-buy__color-name { font-weight: 400; }
.model-buy__chips { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.model-buy__requested { display: inline-flex; align-items: center; gap: var(--space-4); font-size: 13px; }
.model-buy__chip:has(input:focus-visible) { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.model-buy__chip.is-out { color: var(--ink-disabled); cursor: not-allowed; }
.model-buy__row { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); }
.model-buy__divider { margin: 0; }
.model-buy__price { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-12); }
.model-buy__note { font-size: 13px; }
.model-buy__discount { font-size: 14px; color: var(--success); }
.model-buy__meta { font-size: 14px; }
.model-buy__actions { display: flex; gap: var(--space-8); }
.model-buy__button { flex: 1; }
.model-buy__link { font-size: 14px; }
.model-page__section { display: flex; flex-direction: column; gap: var(--space-16); scroll-margin-top: var(--space-24); }
.model-page__section h2 { margin: var(--space-16) 0 0; }
.model-page__description p { margin: 0 0 var(--space-12); }
.model-page__facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-12); }
.model-page__fact { padding: 14px var(--space-16); display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.model-page__fact .pl-muted { font-size: 12px; }
.model-specs { display: grid; grid-template-columns: 220px 1fr; gap: 10px var(--space-16); margin: 0; font-size: 14px; }
.model-specs dt { color: var(--ink-muted); }
.model-specs dd { margin: 0; }
.model-reviews { display: flex; flex-direction: column; gap: var(--space-12); }
.model-review { padding: var(--space-16); display: flex; gap: var(--space-16); }
.model-review__photo { width: 120px; height: 120px; flex: none; border-radius: var(--radius-md); overflow: hidden; background: var(--surface-sunken); }
.model-review__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.model-review__body { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.model-review__text { margin: 0; font-size: 15px; line-height: 22px; overflow-wrap: anywhere; white-space: pre-line; }
.model-review__meta { font-size: 13px; }
.model-author { padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); text-decoration: none; color: var(--ink); }
.model-author:hover { color: var(--ink); border-color: var(--border-strong); }
.model-author__head { display: flex; gap: var(--space-16); align-items: center; }
.model-author__since { font-size: 13px; }
.model-author__stats { display: flex; gap: var(--space-24); font-size: 14px; }
.model-author__stats > div { display: flex; flex-direction: column; }
.model-author__stats .pl-muted { font-size: 12px; }
.model-author__link { color: var(--primary); font-size: 15px; }
.model-timelapse { width: 100%; border-radius: var(--radius-md); background: var(--ink); display: block; }
.complaint-form { display: flex; flex-direction: column; gap: var(--space-16); color: var(--ink); }
.complaint-form__subtitle { margin: 0; font-size: 14px; }
.complaint-form__who { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.complaint-form__who legend { padding: 0; margin-bottom: 6px; }
.complaint-form__radio, .complaint-form__consent { padding: var(--space-4) 0; min-height: 0; }
.complaint-form__consent > span:last-child { font-size: 14px; line-height: 20px; }
.complaint-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
.complaint-form__files { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.complaint-form__files .pl-btn { cursor: pointer; }
.complaint-form__files .pl-btn:has(input:focus-visible) { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.complaint-form__files-label { font-size: 13px; }
.cart-item__link { color: inherit; text-decoration: none; }
.cart-item__link:hover { color: var(--primary); }

/* ---------- Профиль автора (AuthorProfile) ---------- */
.author-page { max-width: 1200px; margin: 0 auto; padding: var(--space-32) var(--space-24) var(--space-64); display: flex; flex-direction: column; gap: var(--space-24); }
.author-hero { position: relative; padding: var(--space-32); display: flex; gap: var(--space-24); align-items: center; flex-wrap: wrap; }
.author-hero__share { position: absolute; top: var(--space-16); right: var(--space-16); }
.author-hero__avatar { width: 96px; height: 96px; font-size: 32px; }
.author-hero__about { flex: 1 1 400px; display: flex; flex-direction: column; gap: var(--space-8); }
.author-hero__name { margin: 0; }
.author-hero__bio { margin: 0; font-size: 15px; line-height: 22px; max-width: 560px; white-space: pre-line; }
.author-hero__since { font-size: 13px; }
.author-hero__stats { display: flex; gap: var(--space-32); }
.author-hero__label { font-size: 13px; }
.author-models { display: flex; flex-direction: column; gap: var(--space-24); }
.author-models__head { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; }
.author-models__head h2 { margin: 0; }
.author-models__chips { display: flex; gap: var(--space-8); flex-wrap: wrap; margin-left: var(--space-12); }
.author-models__chips .pl-chip--filter, .author-models__sort .pl-chip--filter, .cab-favorites__sort .pl-chip--filter { text-decoration: none; gap: 6px; }
.author-models__sort { margin-left: auto; }
.author-models__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.author-models__more, .cab-favorites__more { align-self: center; }

/* ---------- Кабинет: мои модели и избранное (CabModels, CabFavorites) ---------- */
.cab-models, .cab-favorites { display: flex; flex-direction: column; gap: 20px; }
.cab-models__head { display: flex; align-items: flex-end; gap: var(--space-16); flex-wrap: wrap; }
.cab-models__lead { margin: var(--space-4) 0 0; }
.cab-models__stats { margin-left: auto; display: flex; gap: var(--space-24); }
.cab-models__stat-label { font-size: 12px; }
.cab-models__list { display: flex; flex-direction: column; gap: var(--space-12); }
.cab-model { padding: var(--space-16); display: flex; flex-direction: column; gap: var(--space-12); }
.cab-model--error { border-color: var(--error); }
.cab-model__row { display: flex; gap: var(--space-16); align-items: center; flex-wrap: wrap; }
.cab-model__thumb { width: 80px; height: 80px; flex: none; }
.cab-model__thumb img { width: 100%; height: 100%; object-fit: contain; }
.cab-model__thumb--off { opacity: .6; }
.cab-model__info { flex: 1 1 260px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.cab-model__title { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; }
.cab-model__link { font-weight: 700; color: var(--ink); text-decoration: none; }
.cab-model__link:hover { color: var(--primary); }
.cab-model__meta { font-size: 13px; display: flex; gap: var(--space-4); align-items: center; flex-wrap: wrap; }
.cab-model__meta .pl-badge { height: 20px; }
.cab-model__numbers { display: flex; gap: var(--space-24); text-align: right; }
.cab-model__note { font-size: 13px; }
.cab-model__danger { color: var(--error); }
.cab-model__dispute { display: flex; flex-direction: column; gap: var(--space-12); }
.cab-model__dispute p { margin: 0; }
.cab-model-form { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-16); max-width: 720px; }
.cab-model-form__licenses { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-4); }
.cab-model-form__licenses legend { padding: 0; margin-bottom: var(--space-8); }
.cab-model-form__actions { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.cab-favorites__head { display: flex; align-items: center; gap: var(--space-12); flex-wrap: wrap; }
.cab-favorites__sort { margin-left: auto; }
.cab-favorites__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }

/* ---------- Админка: модерация каталога (AdmModeration, AdmModerationTablet) ---------- */
.moderation { display: flex; flex-direction: column; gap: var(--space-16); }
.moderation__queue { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.moderation__list { flex: 0 0 300px; overflow: hidden; }
.moderation__item { display: flex; gap: var(--space-12); align-items: center; padding: var(--space-12) var(--space-16); border-bottom: 1px solid var(--border); text-decoration: none; color: var(--ink); }
.moderation__item:last-child { border-bottom: 0; }
.moderation__pages { padding: var(--space-8) var(--space-12) var(--space-8) var(--space-16); }
.moderation__table-pages { margin-top: var(--space-16); }
.moderation__item:hover { background: var(--surface-hover); color: var(--ink); }
.moderation__item.is-selected { background: var(--primary-soft); box-shadow: inset 3px 0 0 var(--primary); }
.moderation__thumb { width: 48px; height: 48px; flex: none; }
.moderation__thumb img { width: 100%; height: 100%; object-fit: contain; }
.moderation__item-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.moderation__item-text b { font-size: 14px; }
.moderation__item-text .pl-muted { font-size: 12px; }
.moderation__card { flex: 999 1 560px; min-width: 0; padding: 20px; display: flex; flex-direction: column; gap: var(--space-16); }
.moderation__card-head { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.moderation__card-head h2 { margin: 0; }
.moderation__card-head .pl-badge { text-decoration: none; }
.moderation__submitted { font-size: 13px; margin-left: auto; }
.moderation__gallery { display: grid; gap: var(--space-12); }
.moderation__print { display: grid; gap: var(--space-12); }
.moderation__print h3, .moderation__gallery h3 { margin: 0; }
/* Рекомендуемые параметры печати модели каталога (admin/catalog_models/_print_settings). */
.print-settings { display: flex; flex-direction: column; gap: var(--space-16); }
.print-settings__fields { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-12) var(--space-16); }
.print-settings__fields .pl-input { height: 40px; }
.print-settings__summary { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-8) var(--space-16); margin: 0; font-size: 14px; }
.print-settings__parts { display: flex; flex-direction: column; gap: var(--space-8); }
.print-settings__parts h4 { margin: 0; }
.print-settings__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--radius-md); }
.print-settings__part { display: flex; align-items: center; gap: var(--space-12); padding: var(--space-8) var(--space-12); }
.print-settings__part + .print-settings__part { border-top: 1px solid var(--border); }
.print-settings__part-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; font-size: 14px; }
.print-settings__part-main b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.print-settings__part-select { flex: 0 1 280px; height: 40px; min-width: 0; }
.moderation__body { display: flex; gap: var(--space-16); flex-wrap: wrap; }
.moderation__preview { position: relative; flex: 1 1 320px; height: 300px; overflow: hidden; background: var(--surface-sunken); }
.moderation__facts { flex: 1 1 280px; display: grid; grid-template-columns: 130px 1fr; gap: 10px var(--space-12); font-size: 14px; align-content: start; margin: 0; }
.moderation__facts dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.moderation__author { display: flex; gap: 6px; align-items: center; }
.moderation__ok { color: var(--success); display: inline-flex; gap: var(--space-4); align-items: center; }
.moderation__bad { color: var(--error); }
.moderation__select { height: 36px; font-size: 14px; }
.moderation__category { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); }
.moderation__category .moderation__select { align-self: stretch; }
.moderation__texts { display: flex; flex-direction: column; gap: var(--space-12); }
.moderation__actions { display: flex; gap: var(--space-12); align-items: flex-end; flex-wrap: wrap; padding-top: var(--space-16); border-top: 1px solid var(--border); }
.moderation__reason { flex: 1 1 200px; }
.moderation__comment { flex: 1 1 200px; }
.moderation__table-title { font-size: 16px; }
.moderation__table td { vertical-align: middle; }
.moderation__sub { display: block; font-size: 12px; }
.moderation__model-link { color: var(--ink); text-decoration: none; }
.moderation__model-link:hover { color: var(--primary); }
.moderation__docs-link { font: inherit; color: var(--primary); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; min-height: 32px; }
.moderation__row-actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.moderation__tablet-only { display: none; }
.moderation__complaint { display: flex; flex-direction: column; gap: var(--space-16); color: var(--ink); }
.moderation__complaint .moderation__facts { grid-template-columns: 120px 1fr; }
.moderation__message-submit { align-self: flex-start; }
.moderation__text { margin: 0; font-size: 15px; line-height: 22px; white-space: pre-line; overflow-wrap: anywhere; }
.moderation__docs { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.moderation__doc { text-decoration: none; color: var(--ink); }
.moderation__dispute { padding: var(--space-12); border-radius: var(--radius-md); background: var(--warning-soft); font-size: 14px; line-height: 20px; }
.moderation__dispute p { margin: var(--space-4) 0 0; white-space: pre-line; }
.moderation__category-add { display: flex; gap: var(--space-8); margin-left: auto; }
.moderation__category-add .pl-input { width: 260px; height: 40px; }
.moderation__category-form .pl-input { height: 40px; }
.moderation__position { width: 88px; height: 40px; }

@media (max-width: 1279px) {
  .catalog__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .author-models__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .cab-favorites__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .moderation__list { flex-basis: 280px; }
  .moderation__preview { flex-basis: 100%; height: 260px; }
  .moderation__select { height: var(--touch-target); font-size: 15px; }
  .moderation .pl-btn--s, .moderation__category-add .pl-input, .moderation__category-form .pl-input, .moderation__position { height: var(--touch-target); }
  .moderation__col-wide { display: none; }
  .moderation__tablet-only { display: block; }
  .moderation__row-actions { flex-direction: column; align-items: stretch; }
  .print-settings__fields { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .print-settings__material { grid-column: 1 / -1; }
  .print-settings__fields .pl-input, .print-settings__part-select { height: var(--touch-target); }
  .receipt-table .pl-input { height: var(--touch-target); }
  .receipt-table__qty, .receipt-table__price { width: 130px; }
  .receipt-table__sum { padding-top: 24px; }
  .receipt__head { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .receipt__head > :last-child { grid-column: 1 / -1; }
}

@media (max-width: 1023px) {
  .catalog__head { align-items: stretch; }
  .catalog__search { margin-left: 0; flex: 1 1 240px; width: auto; }
  .catalog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-cats { margin-right: calc(-1 * var(--space-24)); }
  .catalog-cats__arrow { display: none; }
  .catalog-cats__chip, .catalog__tag, .catalog__chips .pl-chip--filter, .catalog-cats__all-button { height: var(--touch-target); }
  .catalog-cats__grid { columns: 2; }
  .catalog-facets__toggle { display: inline-flex; height: var(--touch-target); }
  .catalog-facets__panel { display: none; position: fixed; inset: 0; z-index: var(--z-drawer); background: var(--surface); flex-direction: column; }
  .catalog-facets__panel.is-open { display: flex; }
  .catalog-facets__head, .catalog-facets__foot { display: flex; }
  .catalog-facets__list { display: flex; flex-direction: column; flex: 1; overflow: auto; padding: var(--space-8) var(--space-16); }
  .catalog-facet { display: block; border-bottom: 1px solid var(--border); }
  .catalog-facet__button { width: 100%; max-width: none; height: auto; min-height: var(--touch-target); border: 0; background: transparent; padding: var(--space-12) 0; font-size: 16px; font-weight: 600; }
  .catalog-facet.is-active .catalog-facet__button { background: transparent; }
  .catalog-facet__button svg { margin-left: auto; }
  .catalog-facet__menu { position: static; width: auto; max-height: none; border: 0; box-shadow: none; padding: 0 0 var(--space-16); background: transparent; }
  .catalog-facet__menu .catalog__group > .pl-label { display: none; }
  .catalog__check { min-height: var(--touch-target); align-items: center; }
  .model-viewer { height: 420px; }
  /* Одна колонка: просмотр → покупка → описание и отзывы → автор. */
  .model-page__layout { flex-direction: column; align-items: stretch; gap: var(--space-32); }
  .model-page__main, .model-page__aside { display: contents; }
  .model-page__media { order: 1; }
  .model-page__buy { order: 2; }
  .model-page__info { order: 3; }
  .model-page__side { order: 4; }
  .author-models__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  .catalog, .model-page, .author-page { padding: var(--space-16) var(--space-16) var(--space-48); }
  .catalog__grid, .cab-favorites__grid { grid-template-columns: minmax(0, 1fr); }
  .catalog-cats { margin-right: calc(-1 * var(--space-16)); }
  .catalog-cats__all-button { width: var(--touch-target); padding: 0; justify-content: center; }
  .catalog-cats__all-label { display: none; }
  .catalog-cats__all[open] .catalog-cats__menu { position: fixed; inset: 0; z-index: var(--z-drawer); width: auto; max-height: none; border: 0; border-radius: 0; padding: 0; display: flex; flex-direction: column; }
  .catalog-cats__menu-head { display: flex; }
  .catalog-cats__grid { columns: 1; overflow: auto; padding: var(--space-8) var(--space-16) var(--space-24); }
  .catalog-cats__item { min-height: var(--touch-target); }
  .catalog__found { order: 3; flex-basis: 100%; margin-left: 0; }
  .catalog__sort { margin-left: auto; }
  .catalog__sort-button .pl-muted { display: none; }
  .model-page__tag { height: var(--touch-target); }
  .catalog__sort-button { height: var(--touch-target); }
  .model-viewer { height: 340px; }
  .model-viewer .cfg__gizmo { display: none; }
  .model-page__layout { gap: var(--space-24); }
  .model-page__facts { grid-template-columns: minmax(0, 1fr); }
  .model-specs { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .model-specs dd { margin-bottom: var(--space-8); }
  .model-review { flex-direction: column; }
  .model-buy__actions { flex-direction: column; }
  .complaint-form__grid { grid-template-columns: minmax(0, 1fr); }
  .author-hero { padding: 20px; }
  .author-hero__stats { gap: var(--space-24); flex-wrap: wrap; }
  .author-models__chips { margin-left: 0; }
  .author-models__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
  .cab-models__stats { margin-left: 0; }
  .cab-model__numbers { text-align: left; }
  .cab-model__actions .pl-btn--s, .catalog-card__cart, .catalog-card__remove { height: var(--touch-target); }
}

/* ---------- Публичные страницы: общие блоки (кнопки на тёмном фоне, разделы) ---------- */
.inverse-btn { background: var(--ink-inverse); color: var(--surface-inverse); }
.inverse-btn:hover { background: var(--ink-inverse); color: var(--surface-inverse); opacity: .9; }
.inverse-btn--outline { background: transparent; border: 1px solid var(--ink-inverse); color: var(--ink-inverse); }
.inverse-btn--outline:hover { background: transparent; color: var(--ink-inverse); }
.home-h2 { margin: 0; }
.home-section { padding-top: var(--space-96); display: flex; flex-direction: column; gap: var(--space-24); }
.home-section__head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-16); flex-wrap: wrap; }
.home-section__sub { margin: var(--space-8) 0 0; }
.home-section__link { font-size: 15px; }

/* ---------- Главная (Home, HomeMobile) ---------- */
.home-hero { padding-top: calc(var(--space-64) + var(--space-16)); padding-bottom: var(--space-96); display: flex; gap: var(--space-48); align-items: center; flex-wrap: wrap; }
.home-hero__text { flex: 1 1 440px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-24); }
.home-hero__title, .home-hero__lead { margin: 0; }
.home-hero__lead { max-width: 520px; }
.home-hero__actions { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.home-hero__facts { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--space-24); flex-wrap: wrap; font-size: 14px; color: var(--ink-muted); }
.home-hero__facts li { display: inline-flex; gap: 6px; align-items: center; }
.home-hero__facts svg { color: var(--success); }
.home-hero__visual { flex: 1 1 420px; min-width: 0; position: relative; height: 460px; }
.home-hero__stage { position: absolute; inset: 0 40px 40px 0; background: var(--surface-sunken); overflow: hidden; border-radius: var(--radius-xl); color: var(--ink); }
.home-hero__model { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; transition: opacity .3s; cursor: grab; touch-action: pan-y; }
.home-hero__model:active { cursor: grabbing; }
.home-hero__stage.is-live .home-hero__model { opacity: 1; }
.home-hero__stage.is-live .home-hero__poster { opacity: 0; transition: opacity .3s; }
.home-hero__size { position: absolute; left: var(--space-16); top: var(--space-16); font-family: var(--font-mono); font-weight: 500; }
.home-hero__quote { position: absolute; right: 0; bottom: 0; width: 260px; padding: var(--space-16); box-shadow: var(--shadow-popover); display: flex; flex-direction: column; gap: var(--space-8); }
.home-hero__quote-row { display: flex; justify-content: space-between; align-items: center; gap: var(--space-8); font-size: 13px; white-space: nowrap; }
.home-hero__quote-price { display: flex; align-items: baseline; justify-content: space-between; }
.home-hero__quote-price .t-price-l { font-size: 28px; }
.home-hero__quote-price .pl-tokens, .home-hero__quote-note { font-size: 13px; }

.home-steps { background: var(--surface); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.home-steps__inner { padding-top: var(--space-64); padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: var(--space-32); }
.home-steps__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-24); }
.home-step { display: flex; flex-direction: column; gap: 10px; }
.home-step__num { color: var(--primary); font-weight: 600; }
.home-step__text { font-size: 15px; line-height: 22px; }

.home-tech__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-24); }
.home-tech__card { padding: var(--space-32); display: flex; flex-direction: column; gap: var(--space-16); }
.home-tech__head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); }
.home-tech__text { margin: 0; font-size: 15px; line-height: 22px; }
.home-tech__facts { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-12); font-size: 14px; }
.home-tech__facts dt { font-size: 12px; }
.home-tech__facts dd { margin: 0; font-weight: 700; }

.home-services__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.home-service { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); color: var(--ink); text-decoration: none; transition: border-color .15s, box-shadow .15s; }
.home-service:hover { color: var(--ink); border-color: var(--primary); box-shadow: var(--shadow-popover); }
.home-service__icon { width: 44px; height: 44px; border-radius: var(--radius-md); background: var(--primary-soft); color: var(--primary); display: grid; place-items: center; }
.home-service__text { font-size: 15px; line-height: 22px; }
.home-service__more { margin-top: auto; padding-top: var(--space-4); display: inline-flex; gap: 6px; align-items: center; font-size: 15px; color: var(--primary); }
.home-service__more svg { transition: transform .15s; }
.home-service:hover .home-service__more svg { transform: translateX(3px); }

.home-samples__chips { margin-left: auto; display: flex; gap: var(--space-8); flex-wrap: wrap; }
.home-samples__grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--space-16); }
.home-sample { margin: 0; display: flex; flex-direction: column; gap: var(--space-8); font-size: 13px; }
.home-sample__tile { aspect-ratio: 1; border-radius: var(--radius-md); background: color-mix(in srgb, var(--ink) 14%, var(--surface)); display: grid; place-items: center; }

.home-reviews__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.home-review { overflow: hidden; display: flex; flex-direction: column; }
.home-review__media { position: relative; overflow: hidden; aspect-ratio: 4 / 3; background: color-mix(in srgb, var(--ink) 14%, var(--surface)); display: grid; place-items: center; color: var(--ink-subtle); }
.home-review__media img, .home-review__media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.home-review__chip { position: absolute; left: var(--space-12); bottom: var(--space-12); border: 0; cursor: pointer; }
/* Клик по всему превью таймлапса открывает модалку. */
.home-review__chip::after { content: ""; position: absolute; inset: -100vh -100vw; }
.home-review__video { display: block; width: 100%; max-height: 70vh; border-radius: var(--radius-md); background: var(--ink); }
.home-review__body { padding: var(--space-16); display: flex; flex-direction: column; gap: var(--space-8); }
.home-review__text { margin: 0; font-size: 15px; line-height: 22px; }
.home-review__meta { font-size: 13px; }

.home-popular__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.home-model { overflow: hidden; text-decoration: none; color: var(--ink); display: flex; flex-direction: column; }
.home-model:hover { color: var(--ink); }
.home-model__media { aspect-ratio: 4 / 3; background: var(--surface-sunken); display: grid; place-items: center; color: var(--ink-subtle); overflow: hidden; }
.home-model__media img { width: 100%; height: 100%; object-fit: cover; }
.home-model__body { padding: var(--space-12) var(--space-16) var(--space-16); display: flex; flex-direction: column; }
.home-model__title { font-size: 15px; }
.home-model__price { margin-top: 6px; }
.home-model__note { font-size: 12px; }

.home-perks { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.home-perk { padding: 28px; display: flex; flex-direction: column; gap: var(--space-12); }
.home-perk--tokens { background: var(--accent-soft); border-color: transparent; }
.home-perk__text { font-size: 15px; line-height: 22px; }
.home-perk__link { font-size: 15px; margin-top: auto; }
.home-perk__levels { display: flex; gap: 6px; }
.home-perk__level { height: 24px; font-size: 12px; }
.home-perk__level .pl-medal { width: 14px; height: 14px; }
.home-perk__icon { color: var(--primary); }

.home-b2b { border-radius: var(--radius-xl); background: var(--surface-inverse); color: var(--ink-inverse); padding: var(--space-48); display: flex; gap: var(--space-48); align-items: center; flex-wrap: wrap; }
.home-b2b__text { flex: 1 1 420px; display: flex; flex-direction: column; gap: var(--space-12); }
.home-b2b__overline { opacity: .75; }
.home-b2b__lead { margin: 0; font-size: 16px; line-height: 24px; opacity: .85; }
.home-b2b__actions { display: flex; gap: var(--space-12); flex-wrap: wrap; }

.home-blog { padding-bottom: var(--space-32); }
.home-blog__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }

/* ---------- Посадочные страницы «3D-печать …» (Landing): из секций главной; своё — цены, факты, текст, перелинковка ---------- */
.lnd-hero { padding-top: var(--space-48); display: flex; gap: var(--space-48); align-items: center; flex-wrap: wrap; }
.lnd-hero .pl-crumbs { font-size: 14px; }
.lnd-prices { flex: 1 1 380px; min-width: 0; max-width: 480px; padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); box-shadow: var(--shadow-popover); }
.lnd-prices__note { font-size: 13px; margin-top: calc(-1 * var(--space-8)); }
.lnd-prices__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.lnd-price { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; gap: var(--space-12); align-items: center; padding: var(--space-12) 0; border-bottom: 1px solid var(--border); }
.lnd-price__cube { width: 40px; height: 40px; border-radius: var(--radius-md); background: var(--surface-sunken); display: grid; place-items: center; padding: 6px; }
.lnd-price__name { display: flex; flex-direction: column; min-width: 0; font-size: 15px; }
.lnd-price__name .pl-muted { font-size: 13px; }
.lnd-price__sum { white-space: nowrap; }
.lnd-facts { margin: 0; padding: var(--space-24) var(--space-32); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); font-size: 15px; }
.lnd-facts dt { font-size: 13px; }
.lnd-facts dd { margin: var(--space-4) 0 0; font-weight: 700; }
.lnd-text { gap: var(--space-48); }
.lnd-text__section { max-width: 760px; display: flex; flex-direction: column; gap: var(--space-16); }
.lnd-text__p { margin: 0; font-size: 17px; line-height: 28px; color: var(--ink-muted); }
.lnd-text__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-12); font-size: 17px; line-height: 26px; }
.lnd-text__list li { display: flex; gap: var(--space-12); align-items: flex-start; }
.lnd-text__list svg { flex: none; margin-top: 4px; color: var(--success); }
.lnd-faq .faq-accordion { max-width: 860px; }
.lnd-pickup { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--space-16); align-items: start; }
.lnd-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.lnd-card { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-12); text-decoration: none; color: var(--ink); }
.lnd-card:hover { color: var(--ink); }
.lnd-card__text { font-size: 15px; line-height: 22px; }
.lnd-card__more { margin-top: auto; display: inline-flex; gap: 6px; align-items: center; color: var(--primary); }
.lnd-links { padding-bottom: var(--space-32); gap: var(--space-16); }
.lnd-links h2 { margin: 0; }
.lnd-links__group { display: flex; flex-direction: column; gap: var(--space-8); }
.lnd-links__chips { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.lnd-links__chips a.pl-chip { text-decoration: none; }
.home-samples__links { font-size: 14px; }
.article-page__landing { padding: var(--space-24); display: flex; gap: var(--space-16); align-items: center; flex-wrap: wrap; border-radius: var(--radius-lg); background: var(--primary-soft); }
.article-page__landing-text { flex: 1 1 260px; display: flex; flex-direction: column; font-size: 15px; line-height: 22px; color: var(--ink-muted); }
.article-page__landing-text b { font-size: 18px; line-height: 26px; color: var(--ink); }
@media (max-width: 1023px) {
  .lnd-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lnd-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lnd-prices { max-width: none; }
  .lnd-pickup { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .lnd-hero { padding: var(--space-24) var(--space-16) 0; gap: var(--space-24); }
  .lnd-hero .home-hero__facts { display: flex; gap: var(--space-8) var(--space-16); }
  .lnd-prices { padding: var(--space-16); }
  .lnd-facts { padding: var(--space-16); }
  .lnd-text { gap: var(--space-32); }
  .lnd-text__p, .lnd-text__list { font-size: 16px; line-height: 24px; }
  .lnd-cards { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 1023px) {
  .home-steps__list, .home-popular__grid, .home-perks, .home-services__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-samples__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .home-reviews__list, .home-blog__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .app-container.home-section, .home-hero { padding-left: var(--space-16); padding-right: var(--space-16); }
  .home-hero { padding-top: var(--space-32); padding-bottom: 40px; gap: var(--space-16); }
  .home-hero__title { font-size: 36px; line-height: 44px; }
  .home-hero__lead { font-size: 16px; line-height: 24px; }
  .home-hero__actions { flex-direction: column; align-items: stretch; }
  .home-hero__facts { display: none; }
  .home-hero__visual { flex-basis: 100%; height: 220px; order: 0; }
  .home-hero__stage { inset: 0; border-radius: var(--radius-lg); }
  .home-hero__quote { right: var(--space-12); bottom: var(--space-12); width: auto; padding: var(--space-8) var(--space-12); gap: 0; }
  .home-hero__quote-row, .home-hero__quote-note { display: none; }
  .home-hero__quote-price .t-price-l { font-size: 17px; line-height: 24px; }
  .home-section { padding-top: 40px; gap: var(--space-16); }
  .home-h2 { font-size: 24px; line-height: 32px; }
  .home-steps__inner { padding: 40px var(--space-16); gap: 20px; }
  .home-steps__list { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .home-perks, .home-services__grid { grid-template-columns: minmax(0, 1fr); }
  .home-services__grid { gap: var(--space-8); }
  .home-service { padding: var(--space-16); display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: var(--space-12); row-gap: 2px; align-items: center; }
  .home-service__icon { grid-row: span 2; width: 40px; height: 40px; }
  .home-service .t-h4 { font-size: 16px; line-height: 24px; }
  .home-service__text { font-size: 14px; line-height: 20px; }
  .home-service__more { display: none; }
  .home-step { display: grid; grid-template-columns: auto 1fr; column-gap: var(--space-12); row-gap: 0; }
  .home-step__text { grid-column: 2; font-size: 14px; line-height: 20px; }
  .home-step .t-h4 { font-size: 16px; line-height: 24px; }
  .home-tech__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-12); }
  .home-tech__card { padding: 20px; }
  .home-tech__facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-samples__chips { margin-left: 0; }
  .home-samples__grid, .home-reviews__list { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: var(--space-12); margin-right: calc(-1 * var(--space-16)); padding-right: var(--space-16); }
  .home-sample { width: 120px; flex: none; scroll-snap-align: start; }
  .home-review { width: 85%; flex: none; scroll-snap-align: start; }
  .home-popular__grid { gap: var(--space-12); }
  .home-model__body { padding: 10px var(--space-12) var(--space-12); }
  .home-model__title { font-size: 14px; }
  .home-perk { padding: 20px; }
  .home-b2b { padding: var(--space-24); gap: var(--space-24); }
  .home-b2b__actions { width: 100%; flex-direction: column; }
}

/* ---------- Карточка статьи (ArticleCard): главная, блог, «Читайте также» ---------- */
.article-card { text-decoration: none; color: var(--ink); display: flex; flex-direction: column; overflow: hidden; }
.article-card:hover { color: var(--ink); }
.article-card__body { display: flex; flex-direction: column; gap: var(--space-8); padding: 20px; }
.article-card__body .pl-badge { align-self: flex-start; }
.article-card__title { margin: 0; }
.article-card__lead { margin: 0; font-size: 14px; line-height: 20px; }
.article-card__meta { font-size: 13px; }
.article-card__cover { aspect-ratio: 16 / 9; background: var(--surface-sunken); display: grid; place-items: center; color: var(--ink-subtle); overflow: hidden; }
.article-card__cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.article-card--full .article-card__body { padding: var(--space-16) 20px 20px; }
.article-card--full .article-card__meta { font-size: 12px; }
.article-card--featured { flex-direction: row; flex-wrap: wrap; }
.article-card--featured .article-card__cover { flex: 1 1 520px; min-height: 340px; aspect-ratio: auto; }
.article-card--featured .article-card__body { flex: 1 1 400px; padding: 40px; gap: 14px; justify-content: center; }
.article-card--featured .article-card__lead { font-size: 16px; line-height: 24px; }
@media (max-width: 767px) {
  .article-card--featured .article-card__cover { min-height: 200px; }
  .article-card--featured .article-card__body { padding: var(--space-24) 20px; }
  .article-card--featured .t-h2 { font-size: 24px; line-height: 32px; }
}

/* ---------- Блог (Blog) ---------- */
.blog { padding-top: 40px; padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: 28px; }
.blog__head { display: flex; align-items: flex-end; gap: var(--space-24); flex-wrap: wrap; }
.blog__title { margin: 0; }
.blog__sub { margin: 6px 0 0; }
.blog__search { margin-left: auto; width: 320px; max-width: 100%; }
.blog__chips { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.blog__chips .pl-chip { text-decoration: none; }
.blog__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.blog__pager { display: flex; justify-content: center; }
@media (max-width: 1023px) { .blog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  .blog { padding: var(--space-24) var(--space-16) 40px; gap: 20px; }
  .blog__search { margin-left: 0; width: 100%; }
  .blog__chips { flex-wrap: nowrap; overflow-x: auto; margin-right: calc(-1 * var(--space-16)); padding-right: var(--space-16); }
  .blog__chips .pl-chip { flex: none; }
  .blog__grid { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Статья (Article) и текст rich text ---------- */
.article-page { max-width: 1120px; padding-top: var(--space-32); padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: var(--space-24); }
.article-page__head { display: flex; flex-direction: column; gap: var(--space-16); }
.article-page__title, .article-page__lead { margin: 0; max-width: 760px; }
.article-page__byline { display: flex; gap: var(--space-12); align-items: center; font-size: 14px; color: var(--ink-muted); }
.article-page__share { margin-left: auto; }
.article-page__share-end { display: flex; gap: var(--space-12); align-items: center; justify-content: space-between; flex-wrap: wrap; margin-top: var(--space-32); padding-top: var(--space-24); border-top: 1px solid var(--border); font-size: 14px; }
.article-page__cover { height: 400px; border-radius: var(--radius-xl); background: var(--surface-sunken); display: grid; place-items: center; color: var(--ink-subtle); overflow: hidden; }
.article-page__cover img { width: 100%; height: 100%; object-fit: cover; }
.article-page__layout { display: flex; gap: var(--space-48); align-items: flex-start; flex-wrap: wrap; }
.article-page__toc { flex: 0 0 240px; position: sticky; top: calc(72px + var(--space-24)); display: flex; flex-direction: column; gap: var(--space-4); }
.article-page__toc-title { margin-bottom: var(--space-8); }
.article-page__toc-link { padding: 6px var(--space-12); border-left: 2px solid var(--border); color: var(--ink-muted); font-size: 14px; text-decoration: none; }
.article-page__toc-link:hover { color: var(--primary); }
.article-page__toc-link.is-current { border-left-color: var(--primary); color: var(--primary); font-weight: 600; }
.article-page__body { flex: 999 1 560px; min-width: 0; max-width: 720px; display: flex; flex-direction: column; gap: 20px; }
.article-page__tags { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.article-page__related { display: flex; flex-direction: column; gap: var(--space-16); margin-top: var(--space-32); }
.article-page__related-title { margin: 0; }

/* Текст статьи: разметка Action Text (Trix) — абзацы-div, H2/H3, списки, врезка (blockquote), таблица и CTA-блок (вложения-контент) */
.trix-content { font-size: 18px; line-height: 30px; display: flex; flex-direction: column; gap: 20px; }
.trix-content > * { margin: 0; }
.trix-content h1, .trix-content h2 { font-size: 28px; line-height: 36px; font-weight: 700; letter-spacing: -0.01em; margin: var(--space-16) 0 0; scroll-margin-top: calc(72px + var(--space-16)); }
.trix-content h3 { font-size: 22px; line-height: 30px; font-weight: 700; margin: var(--space-8) 0 0; }
.trix-content > :first-child { margin-top: 0; }
.trix-content ul, .trix-content ol { padding-left: var(--space-24); display: flex; flex-direction: column; gap: var(--space-8); }
.trix-content blockquote { margin: 0; padding: var(--space-12) var(--space-16); border-radius: var(--radius-md); background: var(--info-soft); border: 1px solid var(--info); color: var(--ink); font-size: 16px; line-height: 24px; }
.trix-content pre { font-family: var(--font-mono); font-size: 14px; line-height: 20px; background: var(--surface-sunken); border-radius: var(--radius-md); padding: var(--space-12); overflow-x: auto; white-space: pre-wrap; }
.trix-content a { text-decoration: underline; }
.trix-content figure { margin: 0; }
.trix-content .attachment--preview img, .trix-content .attachment img { max-width: 100%; height: auto; border-radius: var(--radius-lg); display: block; }
.trix-content figcaption { font-size: 14px; line-height: 20px; color: var(--ink-muted); margin-top: var(--space-8); }
.trix-content .attachment__name, .trix-content .attachment__size { display: none; }
.trix-content .attachment--content { overflow-x: auto; }
.trix-content table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 22px; }
.trix-content th, .trix-content td { text-align: left; padding: 10px var(--space-12); border-bottom: 1px solid var(--border); vertical-align: top; }
.trix-content th { font-size: 13px; font-weight: 600; color: var(--ink-muted); background: var(--surface-sunken); }
.trix-content .article-cta { padding: 28px; display: flex; gap: var(--space-24); align-items: center; flex-wrap: wrap; border-radius: var(--radius-lg); background: var(--primary-soft); }
.trix-content .article-cta__text { flex: 1 1 280px; display: flex; flex-direction: column; font-size: 15px; line-height: 22px; color: var(--ink-muted); }
.trix-content .article-cta__text strong { font-size: 20px; line-height: 28px; color: var(--ink); }
.trix-content .article-cta .pl-btn { text-decoration: none; }
@media (max-width: 767px) {
  .article-page { padding: var(--space-16) var(--space-16) 40px; gap: var(--space-16); }
  .article-page__title { font-size: 28px; line-height: 36px; }
  .article-page__cover { height: 200px; border-radius: var(--radius-lg); }
  .article-page__toc { position: static; flex-basis: 100%; }
  .trix-content { font-size: 17px; line-height: 28px; }
  .trix-content h1, .trix-content h2 { font-size: 22px; line-height: 30px; }
}

/* ---------- Вопросы и ответы (Faq) ---------- */
.faq-page { max-width: 1120px; padding-top: var(--space-48); padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: var(--space-32); }
.faq-page__head { display: flex; flex-direction: column; gap: var(--space-16); align-items: center; text-align: center; }
.faq-page__title { margin: 0; }
.faq-page__search { width: 560px; max-width: 100%; }
.faq-page__input { height: 52px; }
.faq-page__input input[type=search]::-webkit-search-cancel-button { display: none; }
.faq-page__found { font-size: 14px; }
.faq-page__layout { display: flex; gap: 40px; align-items: flex-start; flex-wrap: wrap; }
.faq-page__nav { flex: 0 0 240px; display: flex; flex-direction: column; gap: var(--space-4); }
.faq-page__section { display: flex; justify-content: space-between; gap: var(--space-8); padding: 10px var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; }
.faq-page__section:hover { background: var(--surface-hover); color: var(--ink); }
.faq-page__section.is-current { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.faq-page__content { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-24); }
.faq-page__h2 { margin: 0; }
.faq-page__help { padding: var(--space-24); display: flex; gap: var(--space-16); align-items: center; flex-wrap: wrap; }
.faq-page__help-text { flex: 1 1 300px; font-size: 15px; }
.faq-mark { background: var(--accent-soft); color: inherit; border-radius: 3px; }
/* Аккордеон на <details>: тот же вид, что у кнопок pl-acc-head */
details.pl-acc-item > summary { list-style: none; cursor: pointer; }
details.pl-acc-item > summary::-webkit-details-marker { display: none; }
details.pl-acc-item[open] .pl-acc-head svg { transform: rotate(180deg); }
details.pl-acc-item[open] .pl-acc-body { display: block; }
.pl-acc-body > p { margin: 0 0 var(--space-8); }
.pl-acc-body > p:last-child { margin-bottom: 0; }
@media (max-width: 767px) {
  .faq-page { padding: var(--space-24) var(--space-16) 40px; gap: var(--space-24); }
  .faq-page__nav { flex: 1 1 100%; flex-direction: row; overflow-x: auto; margin-right: calc(-1 * var(--space-16)); }
  .faq-page__section { flex: none; min-height: var(--touch-target); align-items: center; }
  .pl-acc-body { padding-right: 0; }
}

/* ---------- Контакты (Contacts) и заявка B2B ---------- */
.contacts-page { padding-top: var(--space-48); padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: var(--space-32); }
.contacts-page__title { margin: 0; }
.contacts-page__layout { display: flex; gap: var(--space-32); align-items: flex-start; flex-wrap: wrap; }
.contacts-page__info { flex: 1 1 440px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.contacts-page__form { flex: 1 1 520px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); scroll-margin-top: calc(72px + var(--space-16)); }
.contacts-map { height: 280px; overflow: hidden; position: relative; background: var(--surface-sunken); }
.contacts-map svg { display: block; }
.contacts-map .contacts-map__canvas, .contacts-map__fallback { position: absolute; inset: 0; } /* через родителя — как .checkout-map__canvas */
.contacts-map__fallback[hidden], .contacts-map__zoom[hidden] { display: none; }
.contacts-map__zoom { position: absolute; top: var(--space-12); right: var(--space-12); display: flex; flex-direction: column; gap: var(--space-4); }
.contacts-map__pin { width: 36px; height: 36px; border-radius: 50%; background: var(--primary); color: var(--on-primary); display: grid; place-items: center; box-shadow: var(--shadow-popover); border: 3px solid var(--surface); box-sizing: border-box; }
.contacts-map__chip { position: absolute; left: var(--space-12); top: var(--space-12); max-width: calc(100% - 72px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.contacts-list { margin: 0; padding: var(--space-24); display: grid; grid-template-columns: 140px 1fr; gap: var(--space-12) var(--space-16); font-size: 15px; }
.contacts-list dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.contacts-list--plain { padding: 0; gap: var(--space-8) var(--space-16); font-size: 14px; }
.contacts-requisites { padding: var(--space-24); display: flex; flex-direction: column; gap: 10px; }
.contacts-requisites__link { font-size: 14px; }
.contacts-form { padding: var(--space-32); display: flex; flex-direction: column; gap: var(--space-16); }
.contacts-form__title { margin: 0; }
.contacts-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-16); }
.contacts-form .pl-check { padding: 0; min-height: 0; }
.contacts-sent { padding: 40px var(--space-24); }
.contacts-sent .t-h4 { margin: 0; }
.contacts-sent__icon { background: var(--success-soft); color: var(--success); }

/* Жалоба на нарушение прав (страница из подвала) */
.rights-page { padding-top: var(--space-48); padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: var(--space-32); }
.rights-page__head { display: flex; flex-direction: column; gap: var(--space-8); max-width: 720px; }
.rights-page__head h1, .rights-page__head p { margin: 0; }
.rights-page__layout { display: flex; gap: var(--space-32); align-items: flex-start; flex-wrap: wrap; }
.rights-page__form { flex: 1 1 560px; min-width: 0; scroll-margin-top: calc(72px + var(--space-16)); }
.rights-page__info { flex: 1 1 320px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.rights-page__card { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-16); }
.rights-page__card .t-h4 { margin: 0; }
.rights-page__form .pl-btn[type="submit"] { align-self: flex-start; }
.rights-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.rights-steps li { display: flex; gap: var(--space-12); align-items: flex-start; }
.rights-steps li > span:last-child { display: flex; flex-direction: column; gap: var(--space-4); font-size: 14px; line-height: 20px; }
.rights-steps__num { flex: none; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--primary-soft); color: var(--primary); font-weight: 700; font-size: 14px; }
.rights-page__list { margin: 0; padding-left: var(--space-24); display: flex; flex-direction: column; gap: var(--space-8); font-size: 14px; line-height: 20px; }
.rights-page__note { margin: 0; font-size: 13px; }
@media (max-width: 767px) {
  .rights-page { padding: var(--space-24) var(--space-16) 40px; gap: var(--space-24); }
  .rights-page__card { padding: var(--space-16); }
  .rights-page__form .pl-btn[type="submit"] { align-self: stretch; }
}
.file-list { display: flex; flex-direction: column; gap: var(--space-8); }
.file-list__items { display: flex; flex-direction: column; gap: var(--space-8); }
.file-list__items:empty { display: none; }
.file-list__add { align-self: flex-start; }
.cart__keep { margin: 0; font-size: 13px; line-height: 18px; }
.file-list__login { display: flex; align-items: center; gap: var(--space-8); margin: 0; font-size: 14px; }
.file-list__drop { padding: 20px; flex-direction: row; gap: var(--space-12); justify-content: flex-start; width: 100%; font: inherit; color: var(--ink); cursor: pointer; }
.file-list__drop .pl-drop-icon { width: 40px; height: 40px; }
.file-list__drop-text { display: flex; flex-direction: column; text-align: left; font-size: 15px; }
.file-list__drop-text .pl-muted { font-size: 13px; }
.file-list__progress { width: 100%; }
@media (max-width: 767px) {
  .contacts-page { padding: var(--space-24) var(--space-16) 40px; gap: var(--space-24); }
  .contacts-map { height: 240px; }
  .contacts-list { grid-template-columns: 1fr; gap: 2px; padding: 20px; }
  .contacts-list dd { margin-bottom: var(--space-8); }
  .contacts-form { padding: 20px; }
  .contacts-form__row { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Для бизнеса (Business) ---------- */
.biz-hero { background: var(--surface-inverse); color: var(--ink-inverse); }
.biz-hero__inner { padding-top: calc(var(--space-64) + var(--space-16)); padding-bottom: calc(var(--space-64) + var(--space-16)); display: flex; gap: var(--space-48); align-items: center; flex-wrap: wrap; }
.biz-hero__text { flex: 1 1 560px; display: flex; flex-direction: column; gap: 20px; }
.biz-hero__overline { opacity: .75; }
.biz-hero__title, .biz-hero__lead { margin: 0; }
.biz-hero__lead { opacity: .85; }
.biz-hero__actions { display: flex; gap: var(--space-12); flex-wrap: wrap; }
.biz-hero__stats { flex: 1 1 360px; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
.biz-stat { padding: 20px; border-radius: var(--radius-lg); border: 1px solid color-mix(in srgb, var(--ink-inverse) 20%, transparent); display: flex; flex-direction: column; }
.biz-stat__label { opacity: .75; font-size: 14px; }
.biz-benefits { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.biz-benefit { padding: var(--space-24); display: flex; flex-direction: column; gap: 10px; }
.biz-benefit__icon { color: var(--primary); }
.biz-benefit__text { font-size: 15px; line-height: 22px; }
.biz-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-24); }
.biz-step { display: flex; flex-direction: column; gap: var(--space-8); padding-top: var(--space-16); border-top: 2px solid var(--border); }
.biz-step.is-active { border-top-color: var(--primary); }
.biz-step__num { color: var(--ink-muted); font-weight: 600; }
.biz-step.is-active .biz-step__num { color: var(--primary); }
.biz-step__text { font-size: 14px; }
.biz-form-section { padding-top: calc(var(--space-64) + var(--space-16)); padding-bottom: var(--space-48); display: flex; gap: var(--space-48); align-items: flex-start; flex-wrap: wrap; scroll-margin-top: 72px; }
.biz-form-section__intro { flex: 1 1 360px; display: flex; flex-direction: column; gap: var(--space-12); }
.biz-form-section__lead { margin: 0; }
.biz-form-section__form { flex: 1 1 560px; min-width: 0; }
.biz-volume { border: 0; margin: 0; padding: 0; min-width: 0; }
@media (max-width: 1023px) { .biz-benefits, .biz-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  .biz-hero__inner { padding: 40px var(--space-16); gap: var(--space-24); }
  .biz-hero__title { font-size: 32px; line-height: 40px; }
  .biz-hero__actions { flex-direction: column; width: 100%; }
  .biz-benefits, .biz-steps { grid-template-columns: minmax(0, 1fr); }
  .biz-form-section { padding: 40px var(--space-16); gap: var(--space-16); }
  .biz-volume .pl-segmented { flex-wrap: wrap; }
  .biz-volume .pl-segmented__option { flex: 1 1 40%; min-height: var(--touch-target); }
}

/* ---------- Уровни лояльности · публичная (LoyaltyPublic) ---------- */
.loyalty-page { padding-top: var(--space-64); padding-bottom: var(--space-64); display: flex; flex-direction: column; gap: var(--space-64); }
.loyalty-page__intro { display: flex; flex-direction: column; gap: var(--space-16); max-width: 760px; }
.loyalty-page__title, .loyalty-page__lead { margin: 0; }
.loyalty-page__levels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-16); }
.loyalty-level { padding: 28px; display: flex; flex-direction: column; gap: var(--space-12); }
.loyalty-level.is-highlighted { padding: 27px; border: 2px solid var(--primary); }
.loyalty-level .pl-badge { align-self: flex-start; }
.loyalty-level__medal { width: 48px; height: 48px; border-radius: 50%; box-shadow: inset 0 0 0 3px color-mix(in srgb, var(--surface) 35%, transparent); }
.loyalty-level__medal--bronze { background: var(--loyalty-bronze); }
.loyalty-level__medal--silver { background: var(--loyalty-silver); }
.loyalty-level__medal--gold { background: var(--loyalty-gold); }
.loyalty-level__cashback { display: flex; align-items: baseline; gap: var(--space-8); }
.loyalty-level__percent { font-size: 48px; line-height: 56px; }
.loyalty-page__section { display: flex; flex-direction: column; gap: var(--space-16); }
.loyalty-table { font-size: 15px; }
.loyalty-table th:not(:first-child), .loyalty-table td { text-align: center; }
.loyalty-table tbody th { font-weight: 400; text-align: left; }
.loyalty-table__yes { color: var(--success); display: inline-flex; }
.loyalty-earn { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.loyalty-earn__card { padding: var(--space-24); display: flex; flex-direction: column; gap: var(--space-8); font-size: 14px; }
.loyalty-earn__card b { font-size: 16px; }
.loyalty-cta { padding: 40px; display: flex; gap: var(--space-24); align-items: center; flex-wrap: wrap; background: var(--accent-soft); border-color: transparent; }
.loyalty-cta__coin { width: 56px; height: 56px; font-size: 26px; }
.loyalty-cta__text { flex: 1 1 400px; font-size: 16px; }
.loyalty-page__note { margin: 0; font-size: 14px; }
@media (max-width: 1023px) { .loyalty-earn { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
  .loyalty-page { padding: var(--space-32) var(--space-16) 40px; gap: 40px; }
  .loyalty-page__title { font-size: 32px; line-height: 40px; }
  .loyalty-page__levels, .loyalty-earn { grid-template-columns: minmax(0, 1fr); }
  .loyalty-cta { padding: var(--space-24); }
}

/* ---------- Юридические документы: PDF, реквизиты, баннер новой редакции ---------- */
.legal__pdf { margin-left: auto; }
.legal__body h3 { font: 600 19px/28px var(--font-sans); margin: var(--space-8) 0 0; }
.legal__body ol { margin: 0; padding-left: var(--space-24); }
.legal-requisites { padding: var(--space-12) var(--space-16); border-radius: var(--radius-md); background: var(--surface-sunken); font-size: 14px; line-height: 22px; }
.legal-banner { background: var(--info-soft); border-bottom: 1px solid var(--border); }
.legal-banner__row { display: flex; gap: var(--space-12); align-items: center; padding-top: var(--space-12); padding-bottom: var(--space-12); font-size: 14px; line-height: 20px; }
.legal-banner__icon { color: var(--info); flex: none; }
.legal-banner__text { flex: 1; min-width: 0; }
.legal-banner__form { flex: none; }
@media (max-width: 767px) {
  .legal-banner__row { flex-wrap: wrap; padding-left: var(--space-16); padding-right: var(--space-16); }
  .legal-banner__form { width: 100%; }
  .legal-banner__form .pl-btn { width: 100%; min-height: var(--touch-target); }
}

/* ---------- Админка: общие поля и вкладки «Статьи / FAQ» ---------- */
.adm-input-s { height: 36px; font-size: 14px; }
.adm-input-s input, .adm-input-s select { font-size: 14px; }
.adm-topbar--tabs h1 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.adm-content-tabs { border: 0; gap: 20px; align-self: stretch; }
.adm-content-tabs .pl-tab { height: 100%; text-decoration: none; }
.adm-content-tabs .pl-tab::after { bottom: 0; }
@media (max-width: 1279px) { .adm-input-s { height: auto; min-height: var(--touch-target); } }

/* ---------- Редактор текста (Trix): панель, диалог ссылки, вставка таблицы и CTA ---------- */
.rte__toolbar { display: block; border-bottom: 1px solid var(--border); background: var(--surface); position: sticky; top: 64px; z-index: 2; border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.rte__row { display: flex; gap: var(--space-4); padding: var(--space-8) var(--space-12); flex-wrap: wrap; align-items: center; }
.rte__btn { color: var(--ink); min-width: 36px; padding: 0 var(--space-8); }
.rte__btn--text { font-weight: 600; }
.rte__btn.trix-active { background: var(--primary-soft); color: var(--primary); }
.rte__btn:disabled { color: var(--ink-disabled); }
.rte__sep { width: 1px; height: 20px; background: var(--border); margin: 0 var(--space-4); }
.rte__dialogs { position: relative; }
.rte__dialog { display: none; gap: var(--space-8); align-items: center; padding: var(--space-8) var(--space-12); border-top: 1px solid var(--border); background: var(--surface-sunken); flex-wrap: wrap; }
.rte__dialog.trix-active { display: flex; }
.rte__dialog-input { flex: 1 1 280px; }
.rte__dialog input[type=button] { font: inherit; }
.rte-insert { display: flex; flex-direction: column; gap: var(--space-16); }
.rte-insert__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
.rte-insert__check { padding: 0; min-height: 0; font-size: 14px; }
.rte-insert__actions { display: flex; gap: var(--space-8); }
trix-editor { display: block; outline: none; min-height: 320px; }
trix-editor:empty:not(:focus)::before { color: var(--ink-subtle); }
trix-editor [data-trix-mutable].attachment, trix-editor [data-trix-mutable] img { box-shadow: 0 0 0 2px var(--primary); border-radius: var(--radius-md); }
trix-editor .attachment { position: relative; display: block; }
trix-editor .attachment__toolbar { position: absolute; top: var(--space-8); right: var(--space-8); z-index: 1; }
trix-editor .trix-button-group { display: flex; }
trix-editor .trix-button--remove { width: 32px; height: 32px; border-radius: var(--radius-full); border: 1px solid var(--border-strong); background: var(--surface); color: var(--ink); font-size: 0; cursor: pointer; position: relative; }
trix-editor .trix-button--remove::before { content: "×"; font-size: 20px; line-height: 30px; }
trix-editor .attachment__metadata-container { display: none; }
trix-editor .attachment__caption-editor { width: 100%; border: 0; background: transparent; color: var(--ink-muted); font: inherit; font-size: 14px; outline: none; }
trix-editor .attachment__progress { width: 100%; height: 4px; accent-color: var(--primary); }
trix-editor .attachment--content { padding: var(--space-4); }

/* ---------- Админка: статьи блога (AdmArticles, AdmArticlesTablet) ---------- */
.articles-saved { font-size: 13px; margin-left: var(--space-12); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.articles-saved.is-error { color: var(--error); }
.articles-editor { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.articles-editor__list { flex: 0 0 260px; }
.articles-list { overflow: hidden; display: flex; flex-direction: column; }
.articles-list__search { padding: var(--space-12); }
.articles-list__search .pl-input input { font-size: 14px; }
.articles-list__items { display: flex; flex-direction: column; max-height: 70vh; overflow-y: auto; }
.articles-list__item { display: flex; flex-direction: column; gap: var(--space-4); padding: var(--space-12) var(--space-16); border-top: 1px solid var(--border); text-decoration: none; color: var(--ink); font-size: 14px; }
.articles-list__item:first-child { border-top: 0; }
.articles-list__item:hover { background: var(--surface-hover); color: var(--ink); }
.articles-list__item.is-current { background: var(--primary-soft); box-shadow: inset 3px 0 0 var(--primary); }
.articles-list__item .pl-badge { height: 18px; font-size: 11px; }
.articles-list__empty { margin: 0; padding: var(--space-12) var(--space-16); font-size: 14px; }
.articles-list__new { padding: var(--space-12); }
.articles-list__new-form { display: block; }
.articles-picker { display: none; flex: 1 1 100%; }
.articles-picker__button { width: 100%; max-width: 520px; justify-content: space-between; font-size: 15px; cursor: pointer; }
.articles-picker__menu { width: 360px; max-height: none; padding: 0; }
.articles-picker__menu .articles-list { border: 0; box-shadow: none; }
.articles-editor__form { flex: 999 1 560px; min-width: 0; display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.articles-editor__main { flex: 999 1 560px; min-width: 0; }
.articles-editor__paper { padding: var(--space-32) var(--space-48); display: flex; flex-direction: column; gap: var(--space-16); max-width: 760px; }
.articles-editor__title { border: 0; outline: 0; background: transparent; color: var(--ink); font: 700 36px/44px var(--font-sans); letter-spacing: -0.01em; padding: 0; width: 100%; }
.articles-editor__lead { border: 0; outline: 0; background: transparent; color: var(--ink-muted); font: 400 20px/30px var(--font-sans); padding: 0; resize: none; width: 100%; overflow: hidden; }
.articles-editor__title:focus-visible, .articles-editor__lead:focus-visible { box-shadow: 0 2px 0 var(--focus); }
.articles-editor__body { font-size: 17px; line-height: 28px; }
.articles-editor__aside { flex: 1 1 320px; max-width: 360px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.articles-editor__h { font-size: 15px; }
.articles-editor__cover-preview { height: 150px; border-radius: var(--radius-md); background: var(--surface-sunken); display: grid; place-items: center; position: relative; overflow: hidden; color: var(--ink-subtle); }
.articles-editor__cover-preview img { width: 100%; height: 100%; object-fit: cover; }
.articles-editor__cover-button { position: absolute; right: var(--space-8); bottom: var(--space-8); }
.articles-editor__cover-button:focus-within { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.articles-editor__prefix { font-size: 13px; margin-right: -4px; }
.articles-editor__counter { justify-content: space-between; }
.articles-editor__danger { display: flex; gap: var(--space-8); padding-top: var(--space-4); }
.articles-serp { padding: var(--space-12); border-radius: var(--radius-md); border: 1px solid var(--border); font-size: 13px; line-height: 18px; overflow-wrap: anywhere; }
.articles-serp__title { color: var(--info); font-size: 16px; line-height: 22px; margin-top: var(--space-4); }
.articles-serp__url { font-size: 12px; }
.tags-input { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.tags-input__chips { display: contents; }
.tags-input__chip { height: 28px; }
.tags-input__entry { width: 96px; height: 28px; border: 1px dashed var(--border-strong); border-radius: var(--radius-full); background: transparent; color: var(--ink); padding: 0 var(--space-12); font: 600 13px/1 var(--font-sans); outline: none; }
.tags-input__entry:focus { border-style: solid; border-color: var(--primary); }
.article-preview-bar { background: var(--warning-soft); border-bottom: 1px solid var(--border); font-size: 14px; }
.article-preview-bar__inner { display: flex; gap: var(--space-8); align-items: center; padding-top: var(--space-8); padding-bottom: var(--space-8); flex-wrap: wrap; }
.article-preview-bar__inner a { margin-left: auto; }
@media (max-width: 1279px) {
  .articles-editor__list { display: none; }
  .articles-picker { display: inline-flex; }
  .articles-editor__paper { padding: var(--space-24); }
  .articles-editor__aside { flex: 0 0 320px; }
  .rte__btn { min-width: 44px; height: 44px; }
  .tags-input__chip, .tags-input__entry { height: 44px; }
}

/* ---------- Админка: FAQ (AdmFaq, AdmFaqTablet) ---------- */
.faq-admin { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.faq-admin__nav { flex: 0 0 260px; padding: var(--space-8); display: flex; flex-direction: column; }
.faq-admin__section { display: flex; justify-content: space-between; gap: var(--space-8); padding: 10px var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; font-size: 14px; }
.faq-admin__section:hover { background: var(--surface-hover); color: var(--ink); }
.faq-admin__section.is-current { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.faq-admin__add { margin-top: var(--space-4); }
.faq-admin__main { flex: 999 1 640px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-8); }
.faq-admin__head { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; margin-bottom: var(--space-4); }
.faq-admin__head h2 { margin: 0 auto 0 0; }
.faq-admin__list { display: flex; flex-direction: column; gap: var(--space-8); }
.faq-admin__item.is-dragging { opacity: .5; }
.faq-admin__row { padding: 14px 20px; display: flex; gap: var(--space-12); align-items: center; }
.faq-admin__handle { border: 0; background: transparent; color: var(--ink-subtle); cursor: grab; padding: 0; width: 24px; height: 24px; display: grid; place-items: center; border-radius: var(--radius-xs); }
.faq-admin__handle:focus-visible { outline: var(--focus-width) solid var(--focus); }
.faq-admin__question { flex: 1; font-size: 15px; min-width: 0; }
.faq-admin__question.is-hidden { color: var(--ink-muted); }
.faq-admin__edit { padding: var(--space-16) 20px; outline: 2px solid var(--primary); outline-offset: -1px; scroll-margin-top: 80px; }
.faq-admin__form { display: flex; flex-direction: column; gap: var(--space-12); }
.faq-admin__edit-row { display: flex; gap: var(--space-12); align-items: center; min-width: 0; }
.faq-admin__grip { width: 24px; display: grid; place-items: center; }
.faq-admin__q { flex: 1; min-width: 0; }
.faq-admin__switch { min-height: 0; }
.faq-admin__indent { margin-left: 36px; }
.faq-admin__indent textarea { min-height: 72px; font-size: 15px; }
.faq-admin__actions { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; }
.faq-admin__meta { font-size: 12px; margin-left: auto; }
.faq-admin__hint { margin-top: var(--space-4); }
@media (max-width: 1279px) {
  .faq-admin__nav { flex-basis: 240px; }
  .faq-admin__section { min-height: var(--touch-target); align-items: center; }
  .faq-admin__handle { width: 44px; height: 44px; }
  .faq-admin__switch { min-height: var(--touch-target); }
}

/* ---------- Админка: настройки сервиса (/admin/settings) ---------- */
.service-settings { display: flex; flex-direction: column; gap: var(--space-16); max-width: 560px; }

/* ---------- Админка: юридические тексты и реквизиты (AdmLegal, AdmLegalTablet) ---------- */
.legal-admin { display: flex; gap: var(--space-16); align-items: flex-start; flex-wrap: wrap; }
.legal-admin__nav { flex: 0 0 260px; padding: var(--space-8); display: flex; flex-direction: column; }
.legal-admin__doc { display: flex; flex-direction: column; gap: 2px; padding: 10px var(--space-12); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; }
.legal-admin__doc b { font-size: 14px; }
.legal-admin__doc span { font-size: 12px; }
.legal-admin__doc:hover { background: var(--surface-hover); color: var(--ink); }
.legal-admin__doc.is-current { background: var(--primary-soft); color: var(--primary); }
.legal-admin__picker { display: none; flex: 1 1 100%; }
.legal-admin__picker-button { width: 100%; max-width: 520px; justify-content: space-between; font-size: 15px; cursor: pointer; }
.legal-admin__picker-menu { width: 360px; }
.legal-admin__picker-menu .legal-admin__doc { align-items: flex-start; }
.legal-admin__main { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-16); }
.legal-admin__card { overflow: hidden; }
.legal-admin__head { padding: var(--space-16) 20px; display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; border-bottom: 1px solid var(--border); }
.legal-admin__head h2 { margin: 0; }
.legal-admin__head--read { justify-content: space-between; }
.legal-admin__title { flex: 1 1 320px; }
.legal-admin__title input { font-weight: 700; }
.legal-admin__date { flex: 0 0 200px; }
.legal-admin__error { padding: var(--space-8) 20px 0; }
.legal-admin .rte__toolbar { position: static; border-radius: 0; background: var(--surface-sunken); }
.legal-admin__mode { margin-left: auto; height: 32px; padding: 2px; }
.legal-admin__mode a { height: 26px; font-size: 13px; }
.legal-admin__body { display: flex; flex-direction: column; gap: var(--space-12); padding: var(--space-24) var(--space-32); font-size: 15px; line-height: 24px; max-width: 760px; min-height: 320px; }
.legal-admin__body h2 { font: 700 18px/26px var(--font-sans); margin: var(--space-8) 0 0; }
.legal-admin__body h3 { font: 700 16px/24px var(--font-sans); margin: 0; }
.legal-admin__body > :first-child { margin-top: 0; }
.legal-admin__diff p, .legal-admin__diff h2, .legal-admin__diff h3, .legal-admin__diff div { margin: 0; }
.legal-admin__foot { padding: var(--space-16) 20px; border-top: 1px solid var(--border); display: flex; flex-direction: column; gap: var(--space-12); }
.legal-admin__foot textarea { min-height: 48px; font-size: 14px; }
.legal-admin__checks { display: flex; gap: var(--space-16); flex-wrap: wrap; }
.legal-admin__checks .pl-check { padding: 0; min-height: 0; font-size: 14px; }
.legal-admin__actions { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; flex-direction: row; }
.legal-admin__saved { font-size: 12px; margin-left: auto; }
.legal-admin__saved.is-error { color: var(--error); }
.legal-admin__note { font-size: 13px; }
.legal-admin__fields { padding: 20px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12) var(--space-16); }
.requisites-images { border-top: 1px solid var(--border); }
.requisites-images__preview { height: 96px; display: flex; align-items: center; justify-content: center; border: 1px dashed var(--border); border-radius: var(--radius-md); background: var(--surface-sunken); }
.requisites-images__preview img { max-height: 88px; max-width: 100%; object-fit: contain; }
.requisites-images__actions { display: flex; align-items: center; gap: var(--space-12); }
.legal-admin__versions { flex: 1 1 260px; max-width: 300px; padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); }
.legal-admin__versions h2 { margin: 0; }
.legal-admin__version-link { font-weight: 700; font-size: 14px; color: var(--ink); text-decoration: none; display: block; }
.legal-admin__version-link:hover, .legal-admin__version-link.is-viewing { color: var(--primary); }
.legal-admin__version-meta { font-size: 13px; display: block; }
.legal-admin__version-pdf { font-size: 13px; }
@media (max-width: 1279px) {
  .legal-admin__nav { display: none; }
  .legal-admin__picker { display: inline-flex; }
  .legal-admin__versions { flex: 0 0 280px; }
  .legal-admin__body { padding: 20px; }
  .legal-admin__checks .pl-check { min-height: var(--touch-target); }
  .legal-admin__fields { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- AI-генератор (AiGenerator, AiGeneratorMobile, AiNoTokensMobile) ---------- */
.app-main--screen { min-height: 0; }
.ai { display: flex; height: calc(100dvh - 72px); min-height: 560px; }
.ai__history { flex: 0 0 260px; box-sizing: border-box; border-right: 1px solid var(--border); background: var(--surface); padding: var(--space-16); overflow-y: auto; }
.ai-history { display: flex; flex-direction: column; gap: var(--space-4); }
.ai-history__new { margin-bottom: var(--space-12); }
.ai-history__group { padding: var(--space-12) var(--space-8) var(--space-4); }
.ai-history__new + .ai-history__group { padding-top: var(--space-8); }
.ai-history__item { display: block; padding: 10px var(--space-12); border-radius: var(--radius-md); color: var(--ink); font-size: 14px; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-history__item:hover { background: var(--surface-sunken); color: var(--ink); }
.ai-history__item[aria-current] { background: var(--primary-soft); color: var(--primary); font-weight: 600; }
.ai-history__empty { font-size: 14px; margin: 0; padding: 0 var(--space-8); }

.ai__chat { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; }
.ai__bar { display: none; }
.ai__scroll { flex: 1; min-height: 0; overflow-y: auto; }
.ai__thread { max-width: 760px; box-sizing: border-box; margin: 0 auto; padding: var(--space-24) var(--space-32); display: flex; flex-direction: column; gap: var(--space-16); }
.ai__intro { display: flex; flex-direction: column; align-items: center; text-align: center; gap: var(--space-8); padding: var(--space-48) var(--space-8) var(--space-8); }
.ai__intro h1, .ai__intro p { margin: 0; }
.ai__intro p { max-width: 440px; font-size: 15px; line-height: 22px; }
.ai__intro-icon { background: var(--primary-soft); color: var(--primary); }
.ai__examples { display: flex; gap: var(--space-8); flex-wrap: wrap; justify-content: center; margin-top: var(--space-16); }

.ai-msg--bot { max-width: 100%; }
.ai-msg__avatar { background: var(--accent-soft); color: var(--accent-ink); flex: none; }
.ai-msg__body { flex: 1; min-width: 0; }
.ai-msg__bubble { display: flex; flex-direction: column; gap: var(--space-8); }
.ai-msg--bot .ai-msg__bubble { gap: var(--space-12); }
.ai-msg__bubble--error { background: var(--error-soft); color: var(--error); }
.ai-msg__image img { display: block; width: 160px; height: 110px; object-fit: cover; border-radius: var(--radius-sm); }
.ai-msg__bubble b a, .ai-msg__bubble a b { color: inherit; }
.ai-progress .ai-msg__bubble { gap: var(--space-8); }
.ai-progress__eta { font-size: 12px; }

.ai-variants { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-8); }
.ai-variant__form { display: contents; }
.ai-variant { width: 100%; box-sizing: border-box; border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: var(--surface); padding: var(--space-8); display: flex; flex-direction: column; gap: var(--space-4); align-items: center; cursor: pointer; font: inherit; color: var(--ink); }
.ai-variant:hover { border-color: var(--primary); }
.ai-variant.is-chosen { border: 2px solid var(--primary); padding: 7px; background: var(--primary-soft); color: var(--primary); cursor: default; }
.ai-variant__image { display: block; width: 100%; height: 88px; object-fit: contain; }
.ai-variant__image--empty { display: grid; place-items: center; color: var(--ink-subtle); }
.ai-variant__label { font-size: 13px; line-height: 18px; font-weight: 600; text-align: center; }
.ai-variant.is-chosen .ai-variant__label { font-weight: 700; }
.ai-reference { cursor: default; }
.ai-reference:hover { border-color: var(--border-strong); }
.ai-reference.is-chosen:hover { border-color: var(--primary); }
.ai-reference__zoom { display: block; width: 100%; border-radius: var(--radius-sm); }
.ai-reference__zoom:focus-visible { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.ai-reference__image { height: 120px; object-fit: cover; border-radius: var(--radius-sm); }
.ai-reference__form { display: block; width: 100%; }
.ai-reference__cost { display: inline-flex; align-items: center; gap: var(--space-4); font-size: 13px; }
.ai-msg__image--s img { width: 64px; height: 64px; }
/* Картинки генератора маленькие (512 px) — в просмотре растягиваем до высоты экрана (клик мимо картинки закрывает просмотр). */
.ai .chat-lightbox img { width: min(100%, calc(100vh - 2 * var(--space-48))); height: auto; object-fit: contain; }

.ai-composer { max-width: 760px; width: 100%; box-sizing: border-box; margin: 0 auto; padding: var(--space-16) var(--space-32) var(--space-24); display: flex; flex-direction: column; gap: var(--space-8); }
.ai-composer .pl-alert { margin: 0; }
.ai-composer__chips { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.ai-composer__options { display: flex; flex-direction: column; gap: var(--space-4); }
.ai-composer__count { display: flex; align-items: center; gap: var(--space-8) var(--space-12); flex-wrap: wrap; font-size: 14px; }
.ai-composer__count[hidden], .ai-composer__clean[hidden] { display: none; }
.ai-composer__segmented .pl-segmented__option { height: 32px; min-width: 40px; padding: 0 var(--space-12); }
.ai-composer__price { font-size: 13px; }
.ai-composer__clean { align-self: stretch; padding: var(--space-4) 0; font-size: 14px; min-height: 0; }
.ai-composer__clean .pl-check-price { display: inline-flex; align-items: center; gap: var(--space-4); }
.ai-composer__note { display: flex; gap: var(--space-8); align-items: center; font-size: 14px; margin: 0; }
.ai-composer__spinner { width: 16px; height: 16px; flex: none; }
.ai-composer__form { display: flex; flex-direction: column; gap: var(--space-8); }
.ai-composer__box:focus-within { border-color: var(--primary); }
.ai-composer__box textarea { min-width: 0; max-height: 160px; }
.ai-composer__attach { position: relative; cursor: pointer; }
.ai-composer__attach:focus-within { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.ai-composer__send { flex: none; }
.ai-composer__send-icon { display: none; }
.ai-composer__cost { display: inline-flex; align-items: center; gap: var(--space-4); font-size: 13px; opacity: .9; }
.ai-composer__attachment { display: flex; align-items: center; gap: var(--space-8); align-self: flex-start; max-width: 100%; box-sizing: border-box; padding: var(--space-4) var(--space-4) var(--space-4) var(--space-8); border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); font-size: 14px; }
.ai-composer__attachment.is-error { border-color: var(--error-solid); color: var(--error); }
.ai-composer__thumb { width: 40px; height: 40px; object-fit: cover; border-radius: var(--radius-sm); flex: none; }
.ai-composer__file { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-composer__hint { display: flex; justify-content: space-between; gap: var(--space-8); flex-wrap: wrap; font-size: 12px; line-height: 16px; color: var(--ink-muted); }
.ai-composer__balance { display: inline-flex; gap: var(--space-4); align-items: center; }

.ai-voice { display: flex; align-items: center; gap: var(--space-8); padding: 6px; border: 1px solid var(--error-solid); border-radius: var(--radius-lg); background: var(--error-soft); }
.ai-voice > .pl-btn--ghost { color: var(--ink); }
.ai-voice__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--error-solid); flex: none; animation: pl-pulse 1.4s ease-in-out infinite; }
.ai-voice__wave { flex: 1; min-width: 0; display: flex; align-items: center; gap: 3px; height: 44px; overflow: hidden; color: var(--error-solid); }
.ai-voice__wave i { flex: none; width: 3px; height: 8px; border-radius: 2px; background: currentColor; animation: ai-wave 1.1s ease-in-out infinite; }
.ai-voice__wave i:nth-child(2n) { animation-delay: -.35s; }
.ai-voice__wave i:nth-child(3n) { animation-delay: -.7s; }
.ai-voice__wave i:nth-child(5n) { animation-delay: -.2s; }
.ai-voice__time { font-size: 14px; color: var(--ink); margin-right: var(--space-8); }
@keyframes ai-wave { 0%, 100% { height: 6px; } 50% { height: 30px; } }
@media (prefers-reduced-motion: reduce) {
  .ai-voice__wave i { animation: none; height: 16px; }
}

.ai__panel { flex: 1 1 380px; max-width: 420px; min-width: 0; box-sizing: border-box; border-left: 1px solid var(--border); background: var(--surface); padding: 20px; overflow-y: auto; }
.ai-panel { display: flex; flex-direction: column; gap: var(--space-16); }
.ai-panel__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-8); }
.ai-findings__badge { padding: 0; border: 0; background: none; font: inherit; cursor: help; border-radius: var(--radius-sm); }
.ai-findings__badge:focus-visible { outline: var(--focus-width) solid var(--focus); outline-offset: 2px; }
.ai-findings__tip { top: calc(100% + 10px); bottom: auto; left: auto; right: 0; z-index: 5; }
.ai-findings__tip::after { left: auto; right: 24px; top: -5px; bottom: auto; }
.ai-findings__list { margin: 0; padding-left: var(--space-16); display: flex; flex-direction: column; gap: var(--space-4); }
.ai-findings__item.is-error { font-weight: 600; }
.ai-findings__hint { display: block; margin-top: var(--space-8); opacity: .8; }
.ai-panel--empty { align-items: center; text-align: center; gap: var(--space-8); padding-top: var(--space-48); }
.ai-panel--empty p { margin: 0; font-size: 14px; }
.ai-panel__section { display: flex; flex-direction: column; gap: var(--space-8); }
.ai-panel__price { display: flex; justify-content: space-between; gap: var(--space-8); font-size: 14px; padding: 10px var(--space-12); background: var(--surface-sunken); border-radius: var(--radius-md); }

.ai-viewer { position: relative; height: 300px; flex: none; border-radius: var(--radius-lg); background: var(--surface-sunken); overflow: hidden; }
.ai-viewer--compact { height: 180px; border-radius: var(--radius-md); background: var(--surface); }
.ai-viewer__stage { position: absolute; inset: 0; }
.ai-viewer .cfg__ruler, .ai-viewer .cfg__gizmo { display: none; }
.ai-viewer__size { position: absolute; top: var(--space-12); left: var(--space-12); font-family: var(--font-mono); font-weight: 500; pointer-events: none; }
.ai-viewer__views { position: absolute; left: var(--space-12); right: var(--space-12); bottom: var(--space-12); display: flex; gap: var(--space-4); padding: var(--space-4); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); }
.ai-viewer__views .pl-btn { flex: 1; color: var(--ink); }
.ai-viewer--compact .ai-viewer__views { display: none; }

.ai-versions { list-style: none; margin: 0; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; }
.ai-versions > li:not(:last-child) { border-bottom: 1px solid var(--border); }
.ai-versions__item { display: flex; gap: 10px; align-items: center; padding: 10px var(--space-12); color: var(--ink); text-decoration: none; font-size: 14px; }
a.ai-versions__item:hover { background: var(--surface-sunken); color: var(--ink); }
.ai-versions__item.is-pending { background: var(--surface-sunken); }
.ai-versions__item.is-current, a.ai-versions__item.is-current:hover { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.ai-versions__mark { width: 16px; height: 16px; box-sizing: border-box; border-radius: 50%; border: 1.5px solid var(--border-strong); flex: none; }
.ai-versions__item.is-current .ai-versions__mark { background: var(--primary); border-color: var(--primary); }
.ai-versions__spinner { width: 16px; height: 16px; flex: none; }
.ai-versions__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-versions__time { font-size: 12px; font-weight: 400; }

.ai-inline { display: none; flex-direction: column; gap: var(--space-8); }

@media (max-width: 1199px) {
  .ai__history { display: none; }
  .ai__bar { display: flex; align-items: center; gap: var(--space-4); flex: none; height: 56px; padding: 0 var(--space-12) 0 var(--space-4); background: var(--surface); border-bottom: 1px solid var(--border); }
  .ai__bar .pl-btn--ghost { color: var(--ink); }
  .ai__bar-title { flex: 1; min-width: 0; font-weight: 700; font-size: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}
@media (max-width: 1023px) {
  .ai { height: calc(100dvh - 56px); }
}
@media (max-width: 767px) {
  .ai__panel { display: none; }
  .ai__thread { padding: var(--space-16); gap: var(--space-12); }
  .ai-msg.pl-msg--me { max-width: 88%; }
  .ai-inline { display: flex; }
  .ai__intro { padding-top: var(--space-24); }
  .ai__examples { flex-direction: column; align-self: stretch; }
  .ai__example { height: var(--touch-target); justify-content: flex-start; border-radius: var(--radius-md); }
  .ai-composer { max-width: none; padding: var(--space-12) var(--space-16) var(--space-24); background: var(--surface); border-top: 1px solid var(--border); }
  .ai-composer__send { width: var(--touch-target); padding: 0; }
  .ai-composer__send-text, .ai-composer__cost { display: none; }
  .ai-composer__send-icon { display: inline-block; }
  .ai-variant__image { height: 64px; }
  .ai-reference__image { height: 88px; }
  .ai-composer__price { flex-basis: 100%; }
}

/* ---------- Дашборд (AdmDashboard) ---------- */
.dash { display: flex; flex-direction: column; gap: var(--space-16); }
.dash-search { width: 320px; height: 36px; margin-left: var(--space-24); }
.dash-search input { font-size: 14px; }
.dash-period { display: flex; gap: var(--space-12); align-items: center; flex-wrap: wrap; }
.dash-period--top .orders-dd__menu { left: auto; right: 0; }
.dash-period--main { display: none; }
.dash-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-16); }
.dash-kpi { padding: 20px; }
.dash-kpi__label { font-size: 13px; }
.dash-kpi__delta { font-size: 13px; color: var(--ink-muted); }
.dash-kpi__delta--up { color: var(--success); }
.dash-kpi__delta--down { color: var(--error); }
.dash-row { display: grid; gap: var(--space-16); }
.dash-row--main { grid-template-columns: 2fr 1fr; }
.dash-row--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dash-card { padding: 20px; display: flex; flex-direction: column; gap: var(--space-12); min-width: 0; }
.dash-card h2 { margin: 0; }
.dash-card__head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); }
.dash-card__link { font-size: 13px; }
.dash-card__note { font-size: 12px; margin: 0; }
.dash-chart { position: relative; }
.dash-chart svg { display: block; }
.dash-chart__axis { font-family: var(--font-sans); font-size: 11px; fill: var(--ink-subtle); }
.dash-chart__tooltip { position: absolute; pointer-events: none; white-space: nowrap; max-width: none; }
.dash-chart__tooltip span { display: block; }
.dash-chart__table { max-height: 240px; overflow-y: auto; }
.dash-bar { height: 12px; margin-top: var(--space-4); }
.dash-bar--thin { height: 10px; margin-top: 0; }
.dash-bar > i { display: block; height: 100%; border-radius: 0 var(--radius-xs) var(--radius-xs) 0; background: var(--primary); }
.dash-statuses { display: grid; grid-template-columns: 150px 1fr 32px; gap: 10px var(--space-12); align-items: center; font-size: 13px; }
.dash-statuses__chip { text-decoration: none; justify-self: start; }
.dash-funnel { display: flex; flex-direction: column; gap: 10px; font-size: 13px; }
.dash-funnel__line, .dash-stock__line { display: flex; justify-content: space-between; gap: var(--space-8); }
.dash-stock__line { font-size: 14px; }
.dash-tokens { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-12); }
.dash-tokens__cell { padding: var(--space-12); background: var(--surface-sunken); border-radius: var(--radius-md); }
.dash-tokens__cell .pl-muted { font-size: 12px; }
.dash-tokens__sources { display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.dash-tokens__sources > div { display: flex; justify-content: space-between; }

@media (max-width: 1279px) {
  .dash-search { flex: 1; max-width: 360px; height: auto; margin-left: var(--space-16); }
  .dash-period--top { display: none; }
  .dash-period--main { display: flex; }
  .adm-layout .dash-period .pl-segmented a { height: 40px; }
  .dash-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dash-row--main { grid-template-columns: minmax(0, 1fr); }
  .dash-statuses { grid-template-columns: 170px 1fr 40px; }
}
@media (max-width: 900px) {
  .dash-row--three { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Пользователи и операторы (AdmUsers) ---------- */
.users--with-panel { padding-right: 440px; }
.adm-layout:has(.users--with-panel) .adm-topbar { padding-right: 440px; }
.users__toolbar { flex-wrap: wrap; }
.users__search { width: 240px; height: 36px; }
.users__search input { font-size: 14px; }
.users__person { display: flex; gap: 10px; align-items: center; color: var(--ink); text-decoration: none; }
.users__person:hover b { color: var(--primary); }
.users__name b { font-size: 14px; }
.users__name .pl-badge { height: 18px; font-size: 11px; }
.users__name .pl-muted { display: block; font-size: 12px; }
.users__row.is-selected { background: var(--primary-soft); }
.users-panel__body { display: flex; flex-direction: column; gap: 18px; }
.users-panel__facts { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: var(--space-8) var(--space-12); font-size: 14px; align-items: center; }
.users-panel__facts > span { overflow-wrap: anywhere; }
.users-panel__switch, .users-panel__text { font-size: 14px; margin: 0; }
.users-panel__link { font-size: 13px; }
.users-panel__foot { flex-direction: row; flex-wrap: wrap; }
.users-panel__foot > .pl-btn, .users-panel__form { flex: 1 1 auto; display: flex; }
.users-panel__form .pl-btn { flex: 1; }
.users-panel__locked { flex: 1 1 auto; }
.users-panel__locked .pl-btn { flex: 1; }
.users-panel__locked .app-help__tip { left: auto; right: -8px; transform: none; }
.users-panel__locked .app-help__tip::after { left: auto; right: 16px; }
.users-tokens { padding: var(--space-16); border-radius: var(--radius-md); background: var(--surface-sunken); display: flex; flex-direction: column; gap: 10px; font-size: 14px; }
.users-tokens__submit { align-self: flex-start; }
.users-tokens:has(input[value="debit"]:checked) .users-tokens__kind { display: none; }
.users-tokens textarea { min-height: 44px; font-size: 14px; }

@media (max-width: 1279px) {
  .users--with-panel { padding-right: 0; }
  .adm-layout:has(.users--with-panel) .adm-topbar { padding-right: 20px; }
  .users__search { height: auto; }
}
@media (max-width: 1100px) {
  .users__wide { display: none; }
}

/* ---------- Журнал аудита (AdmAudit) ---------- */
.audit { display: flex; flex-direction: column; gap: var(--space-16); }
.audit__note { font-size: 13px; }
.audit__filters { padding: var(--space-12) var(--space-16); display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; }
.audit__search { width: 240px; height: 36px; }
.audit__search input { font-size: 14px; }
.audit__period { margin-left: auto; }
.audit__day { margin: 0; }
.audit__list { overflow: hidden; }
.audit__more { align-self: center; }
.audit-row { border-bottom: 1px solid var(--border); }
.audit-row:last-child { border-bottom: 0; }
.audit-row[open] { background: var(--surface-hover); }
.audit-row__head { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; gap: var(--space-16); padding: 14px 20px; align-items: center; cursor: pointer; list-style: none; }
.audit-row__head::-webkit-details-marker { display: none; }
.audit-row__head:focus-visible { outline: var(--focus-width) solid var(--focus); outline-offset: -2px; }
.audit-row__time { font-size: 12px; }
.audit-row__text { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; font-size: 14px; min-width: 0; }
.audit-row__summary { display: contents; }
.audit-row__system { background: var(--surface-sunken); color: var(--ink-muted); }
.audit-row__toggle svg { transition: transform .15s; }
.audit-row[open] .audit-row__toggle svg { transform: rotate(180deg); }
.audit-row__details { display: grid; grid-template-columns: 160px auto 24px minmax(0, 1fr); gap: var(--space-8) var(--space-12); font-size: 13px; align-items: center;
  margin: 0 20px 14px calc(96px + 20px + var(--space-16)); padding: var(--space-12); border-radius: var(--radius-md); background: var(--surface); }
.audit-row__details > span { overflow-wrap: anywhere; justify-self: start; }
.audit-row__wide { grid-column: span 3; }

@media (max-width: 1279px) {
  .audit__search { flex: 1 1 100%; width: auto; height: auto; }
  .audit-row__head { grid-template-columns: 80px minmax(0, 1fr) auto; gap: var(--space-12); padding: 14px var(--space-16); }
  .audit-row__details { margin-left: var(--space-16); margin-right: var(--space-16); grid-template-columns: 140px auto 24px minmax(0, 1fr); }
}

/* Mini App: сайт внутри Telegram или MAX (data-mini-app на <html>). Навигацию «назад» даёт кнопка мессенджера,
   выход не нужен (вход — по данным мессенджера), подвал лишний; в Telegram тема берётся из Telegram — переключатель скрыт. */
.mini-app-entry { text-align: center; }
.mini-app-entry__state { display: flex; flex-direction: column; align-items: center; gap: var(--space-12); }
.mini-app-entry__state[hidden] { display: none; }
[data-mini-app] .app-footer,
[data-mini-app] .cab-nav__logout,
[data-mini-app="telegram"] [data-controller="theme"] { display: none; }
[data-mini-app] .cab-nav__foot { justify-content: flex-end; }
[data-mini-app] .app-toasts { bottom: calc(var(--space-24) + env(safe-area-inset-bottom)); }
.tg__menu-button { flex: none; margin: 0 var(--space-12) var(--space-8); }

/* Страница «Реквизиты» (/requisites): в раскладке юридических документов, список — как реквизиты на «Контактах». */
.legal__nav-title { margin-bottom: var(--space-8); }
.requisites__title { margin: 0; }
.requisites__lead { margin: 0; }
.requisites__card { padding: var(--space-24); }
.requisites__list { grid-template-columns: 200px 1fr; font-size: 15px; }
@media (max-width: 767px) {
  .requisites__card { padding: 20px; }
  .requisites__list { grid-template-columns: 1fr; gap: 2px; padding: 0; }
  .requisites__list dd { margin-bottom: var(--space-8); }
}


/* Статус оплаты и возвраты денег в итоге заказа (кабинет) */
.order-payment-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-12); flex-wrap: wrap; }
.order-payment-head h2 { margin: 0; }
.order-refund-line span .cfg__small { display: block; }

/* «Поделиться» (Pl::ShareButtonComponent) */
.share-btn > summary.pl-btn { gap: 6px; }
.share-btn .orders-dd__menu { min-width: 200px; z-index: var(--z-dropdown); }
.share-btn__icon { width: var(--touch-target); height: var(--touch-target); border-radius: var(--radius-full); border-color: var(--border); background: var(--surface); color: var(--ink-muted); }
.share-btn__icon:hover, .share-btn[open] .share-btn__icon { color: var(--ink); border-color: var(--border-strong); }

/* ---------- Рассылки (AdmCampaigns) ---------- */
.campaigns { display: flex; flex-direction: column; gap: var(--space-16); }
.campaigns__name { display: flex; flex-direction: column; gap: var(--space-4); color: var(--ink); text-decoration: none; }
.campaigns__name:hover b { color: var(--primary); }
.campaigns__name .pl-muted { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; font-size: 13px; }
.campaign-editor .articles-editor__paper { max-width: none; padding: var(--space-24) var(--space-32); }
.campaign-editor .articles-editor__title { font-size: 28px; line-height: 36px; }
.campaign-editor__head { display: flex; gap: var(--space-12); align-items: center; justify-content: space-between; flex-wrap: wrap; padding: var(--space-16) var(--space-32) 0; }
.campaign-editor__pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-12); }
.campaign-editor__trio { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-12); }
.campaign-editor__checks { display: flex; flex-wrap: wrap; gap: var(--space-4) var(--space-16); }
.campaign-editor__body { min-height: 220px; font-size: 15px; line-height: 22px; }
.campaign-editor__danger { display: flex; gap: var(--space-8); flex-wrap: wrap; }
.campaign-audience { display: flex; flex-direction: column; gap: var(--space-8); padding: var(--space-12) var(--space-16); border-radius: var(--radius-md); background: var(--surface-sunken); }
.campaign-audience__total { display: flex; align-items: baseline; gap: var(--space-8); }
.campaign-audience__channels { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4) var(--space-16); font-size: 13px; }
.campaign-audience__channels li { display: flex; justify-content: space-between; gap: var(--space-8); color: var(--ink-muted); }
.campaign-audience__channels b { color: var(--ink); }
.campaign-message { display: flex; flex-direction: column; gap: var(--space-8); }
.campaign-message__bubble { padding: var(--space-12) var(--space-16); border-radius: var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-xs); background: var(--surface-sunken); font-size: 14px; line-height: 20px; }
.campaign-message__bubble p { margin: var(--space-4) 0 0; white-space: pre-line; color: var(--ink-muted); }
.campaign-message__button { display: block; padding: var(--space-8); border-radius: var(--radius-md); background: var(--primary-soft); color: var(--primary); font-size: 14px; font-weight: 600; text-align: center; }
.campaign-message__hint { display: block; margin: 0; }
.campaign-message code { font-family: var(--font-mono); white-space: nowrap; }
.campaign-launch { display: flex; flex-direction: column; gap: var(--space-16); }
.campaign-launch p { margin: 0; }
.campaign-launch:has(input[name="when"][value="now"]:checked) .pl-field { display: none; }
.campaign-head h1 { margin: 0; }
.campaign-head__meta { display: flex; gap: var(--space-8); align-items: center; flex-wrap: wrap; margin-top: var(--space-8); font-size: 14px; }
.campaign-automation-stats { padding-top: var(--space-12); border-top: 1px solid var(--border); }
@media (max-width: 1100px) {
  .campaigns__wide { display: none; }
}
@media (max-width: 767px) {
  .campaign-editor__pair, .campaign-editor__trio { grid-template-columns: 1fr; }
  .campaign-editor .articles-editor__paper { padding: var(--space-16); }
  .campaign-editor__head { padding: var(--space-16) var(--space-16) 0; }
}

/* Подписка на новости в кабинете */
.news-banner__actions { display: flex; gap: var(--space-8); flex-wrap: wrap; }
