* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #080c14; color: #e2e8f0; height: 100vh; display: flex; flex-direction: column; }

/* ── Шапка ── */
.header { background: #0f1219; color: #e2e8f0; padding: 0 20px; display: flex; align-items: center; gap: 16px; height: 52px; flex-shrink: 0; border-bottom: 0.5px solid #1a2035; }
.header h1 { font-size: 15px; font-weight: 600; color: #fff; letter-spacing: -.01em; }
.header span { font-size: 12px; color: #4a5568; }
.header-input { display: flex; gap: 8px; margin-left: auto; align-items: center; }
.header input[type=text] { width: 320px; padding: 8px 12px; border: 1px solid #2d3748; border-radius: 8px; font-size: 13px; background: #0f1219; color: #e2e8f0; outline: none; transition: border-color .15s; }
.header input[type=text]:focus { border-color: #4f7ef8; }
.header input[type=text]::placeholder { color: #4a5568; }
.btn { padding: 8px 16px; border: none; border-radius: 8px; font-size: 13px; cursor: pointer; font-weight: 500; transition: all .15s; white-space: nowrap; }
.btn:disabled { opacity: 0.35; cursor: not-allowed; }
.btn-primary { background: #4f7ef8; color: #fff; }
.btn-primary:hover:not(:disabled) { background: #3d6ef0; }
.btn-secondary { background: #1e2536; color: #94a3b8; border: 1px solid #2d3748; }
.btn-secondary:hover:not(:disabled) { background: #252d3d; color: #e2e8f0; }
.btn-blue { background: #4f7ef8; color: #fff; }
.btn-blue:hover:not(:disabled) { background: #3d6ef0; }

/* Auth-блок в правой части шапки: «Войти/Регистрация» для гостя,
   email+«Кабинет»+«Выйти» для залогиненного. */
.header-auth {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: 12px;
  padding-left: 12px;
  border-left: 1px solid #1a2035;
}
.auth-btn {
  padding: 7px 13px;
  font-size: 12px;
  border-radius: 6px;
  text-decoration: none;
  border: 1px solid transparent;
  cursor: pointer;
  font-family: inherit;
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  line-height: 1;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.auth-btn-ghost {
  background: transparent;
  color: #94a3b8;
  border-color: #2d3748;
}
.auth-btn-ghost:hover {
  color: #e2e8f0;
  border-color: #4a5568;
}
.auth-btn-primary {
  background: #4f7ef8;
  color: #fff;
}
.auth-btn-primary:hover {
  background: #3d6ef0;
}
.auth-btn-icon {
  padding: 7px 10px;
  background: transparent;
  color: #94a3b8;
  border-color: #2d3748;
  font-size: 14px;
}
.auth-btn-icon:hover {
  color: #e2e8f0;
  border-color: #4a5568;
}
.auth-email {
  font-size: 12px;
  color: #94a3b8;
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Кнопка «Скачать PDF» в шапках отчётов (одиночный + сводный).
   Размещается через rep-head / sum-head как inline-элемент. */
.btn-pdf-export {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 500;
  color: #94a3b8;
  background: transparent;
  border: 1px solid #2d3748;
  border-radius: 6px;
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
  margin-left: auto;
}
.btn-pdf-export:hover {
  background: #1e2536;
  border-color: #3d4760;
  color: #e2e8f0;
}
.btn-pdf-export:active {
  transform: scale(0.97);
}
.btn-pdf-export svg {
  flex-shrink: 0;
  opacity: 0.75;
}
.btn-pdf-export:hover svg {
  opacity: 1;
}
.btn-pdf-export:disabled,
.btn-pdf-export.loading {
  cursor: wait;
  opacity: 0.7;
}
.btn-pdf-export.loading {
  border-color: #4f7ef8;
  color: #4f7ef8;
}
.btn-pdf-export .spin {
  animation: btn-pdf-spin 0.9s linear infinite;
  opacity: 1;
}
@keyframes btn-pdf-spin {
  to { transform: rotate(360deg); }
}

/* ── Layout ── */
.app { display: flex; flex: 1; overflow: hidden; padding: 10px; gap: 10px; background: #080c14; }

/* ── Сайдбар ── */
.sidebar { width: 260px; flex-shrink: 0; background: #1a1f2e; display: flex; flex-direction: column; overflow: hidden; border: 0.5px solid #252d3d; border-radius: 10px; }
.sidebar-header { padding: 16px 16px 12px; }
.sidebar-title { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: #4a5568; }
.ops-list { flex: 1; overflow-y: auto; padding: 4px 0; }
.ops-list::-webkit-scrollbar { width: 4px; }
.ops-list::-webkit-scrollbar-track { background: transparent; }
.ops-list::-webkit-scrollbar-thumb { background: #2d3748; border-radius: 2px; }

/* Пункт меню — без иконок и крыжиков */
.op-item { display: flex; align-items: center; gap: 0; padding: 8px 16px; cursor: pointer; border-left: 2px solid transparent; transition: all .1s; position: relative; }
.op-item:hover { background: #1e2536; }
.op-item.active { background: #1e2a45; border-left-color: #4f7ef8; }
.op-item.active .op-label { color: #e2e8f0; }
.op-item.op-running .op-label { color: #f59e0b; }
.op-item.op-error .op-label { color: #f87171; }
.op-item.op-done .op-label { color: #94a3b8; }

/* ── Гибрид: свёрнутые слоты группового аудита ─────────────────────────────
   Родитель .op-item-collapsed-parent — компактная одностроковая запись о
   завершённом слоте. Шеврон справа поворачивается при разворачивании.
   Дочерние op-item'ы по умолчанию скрыты (display:none), показываются при
   .op-child-visible. Визуально они «вложены» — отступ слева больше. */
.op-item.op-item-collapsed-parent {
  padding-right: 14px;
}
.op-item.op-item-collapsed-parent .op-label { flex: 1; }
.op-slot-score {
  font-size: 11px;
  font-weight: 600;
  color: #22c55e;
  margin-right: 8px;
}
.op-slot-tag {
  font-size: 11px;
  color: #64748b;
  margin-right: 8px;
}
.op-slot-tag.op-slot-error {
  color: #f87171;
}
.op-slot-chevron {
  color: #4a5568;
  transition: transform .15s;
  flex-shrink: 0;
}
.op-item-collapsed-parent.op-item-expanded .op-slot-chevron {
  transform: rotate(90deg);
}

.op-item.op-item-collapsed-child {
  display: none;
  padding-left: 32px;
}
.op-item.op-item-collapsed-child.op-child-visible {
  display: flex;
}
.op-label { font-size: 13px; color: #64748b; flex: 1; line-height: 1.4; }
.op-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; margin-right: 10px; }
.op-dot.running { background: #f59e0b; animation: pulse 1.5s infinite; }
.op-dot.done { background: #22c55e; }
.op-dot.error { background: #ef4444; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .4; } }

.action-panel { padding: 12px 14px; border-top: 1px solid #252d3d; display: none; flex-direction: column; gap: 8px; }
.action-panel p { font-size: 12px; color: #4a5568; line-height: 1.5; }
.action-btns { display: flex; flex-direction: column; gap: 6px; }
.action-btns .btn { width: 100%; text-align: left; font-size: 12px; padding: 7px 12px; }

/* Плашка «Тестовый аудит проведён» — заменяет кнопку btn-now после успеха.
   Не интерактивная, просто индикатор. Зелёная, с галочкой. */
.test-audit-pill {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  font-size: 12px;
  color: #22c55e;
  background: rgba(34, 197, 94, 0.08);
  border: 1px solid rgba(34, 197, 94, 0.25);
  border-radius: 6px;
  line-height: 1.4;
  cursor: default;
}
.test-audit-pill svg { flex-shrink: 0; }

/* ── Правая панель ── */
.content { flex: 1; overflow-y: auto; padding: 24px; background: #1a1f2e; border-radius: 10px; }
.content::-webkit-scrollbar { width: 6px; }
.content::-webkit-scrollbar-track { background: transparent; }
.content::-webkit-scrollbar-thumb { background: #2d3748; border-radius: 3px; }
.content-empty { display: flex; align-items: center; justify-content: center; height: 200px; color: #4a5568; font-size: 14px; }

.content-block { border-radius: 10px; padding: 20px 24px; margin-bottom: 16px; }
.content-block-title { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: #4a5568; margin-bottom: 14px; }

/* Контент */
.summary-text { font-size: 14px; line-height: 1.7; color: #cbd5e1; }
.segments { display: flex; flex-direction: column; gap: 10px; }
.segment { padding: 12px 14px; background: #0f1219; border-radius: 8px; border-left: 2px solid #4f7ef8; }
.segment-name { font-size: 13px; font-weight: 600; color: #e2e8f0; margin-bottom: 4px; }
.segment-desc { font-size: 13px; color: #94a3b8; line-height: 1.5; }
.segment-need { font-size: 12px; color: #64748b; margin-top: 4px; }

.focus-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
.persona-card { padding: 12px 14px; border: 1px solid #252d3d; border-radius: 8px; background: #0f1219; }
.persona-name { font-size: 13px; font-weight: 600; color: #e2e8f0; margin-bottom: 3px; }
.persona-meta { font-size: 12px; color: #64748b; }
.tasks-row { display: flex; gap: 8px; flex-wrap: wrap; }
.task-pill { padding: 4px 10px; border-radius: 6px; font-size: 12px; }
.task-pill.info { background: #1e3a5f; color: #60a5fa; }
.task-pill.objection { background: #3b1f2e; color: #f472b6; }

.dialog-meta { font-size: 13px; color: #64748b; margin-bottom: 16px; padding-bottom: 14px; border-bottom: 1px solid #252d3d; line-height: 1.6; }
.dialog-meta strong { color: #e2e8f0; font-size: 15px; }

.messages { display: flex; flex-direction: column; gap: 12px; padding-top: 4px; }
.msg-wrap { display: flex; flex-direction: column; }
.msg-wrap.client { align-items: flex-end; }
.msg-wrap.operator { align-items: flex-start; }
.msg-label { font-size: 11px; color: #4a5568; margin-bottom: 4px; }
.msg-time { font-size: 11px; color: #4a5568; margin-left: 6px; }
.msg-bubble { max-width: 70%; padding: 10px 14px; border-radius: 12px; font-size: 14px; line-height: 1.55; }
.msg-bubble.client { background: #4f7ef8; color: #fff; border-bottom-right-radius: 3px; }
.msg-bubble.operator { background: #252d3d; color: #e2e8f0; border-bottom-left-radius: 3px; }

/* Системные маркеры — пометки от движка между репликами:
   «Форма ПД заполнена», «Согласие 152-ФЗ дано», «Итог 152-ФЗ: ...».
   Центрированная плашка с иконкой щит/чек/предупреждение. Семантика:
   - .msg-system (без модификатора) — нейтральное событие (форма показана)
   - .msg-system.ok                 — соблюдение (согласие получено, политика показана)
   - .msg-system.danger             — нарушение (ПД без согласия, политика отсутствует)
   Фильтрация из счётчиков и оценки скорости — через role !== 'system'
   в evaluate_dialog, computeLeadStatsByDialogs и других местах. */
.msg-system { align-self: center; display: inline-flex; align-items: center; gap: 6px;
              padding: 4px 10px; border-radius: 6px; font-size: 11px;
              background: #1a2035; color: #94a3b8; border: 0.5px solid #252d3d; }
.msg-system svg { stroke: currentColor; flex-shrink: 0; }
.msg-system .msg-time { color: inherit; opacity: 0.6; margin-left: 4px; }
.msg-system.ok     { background: #0f2616; color: #4ade80; border-color: #1a3a25; }
.msg-system.danger { background: #2a1010; color: #f87171; border-color: #4a1818; }

.pd-badge { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 11px; font-weight: 500; }
.pd-badge.yes { background: #14532d; color: #4ade80; }
.pd-badge.no { background: #450a0a; color: #f87171; }
.pd-badge.partial { background: #451a03; color: #fb923c; }

.eval-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 16px; }
.eval-cell { text-align: center; padding: 14px 8px; background: #0f1219; border-radius: 8px; border: 1px solid #252d3d; }
.eval-score { font-size: 26px; font-weight: 700; }
.eval-score.h { color: #4ade80; }
.eval-score.m { color: #fb923c; }
.eval-score.l { color: #f87171; }
.eval-label { font-size: 11px; color: #64748b; margin-top: 4px; }
.eval-comment { font-size: 11px; color: #94a3b8; margin-top: 6px; line-height: 1.4; text-align: left; }

.verdict-box { padding: 14px 16px; background: #0f1219; border-radius: 8px; border-left: 3px solid #4f7ef8; font-size: 13px; line-height: 1.7; color: #cbd5e1; }
.converted-badge { display: inline-block; padding: 4px 12px; border-radius: 6px; font-size: 12px; font-weight: 600; }
.converted-badge.yes { background: #14532d; color: #4ade80; }
.converted-badge.no { background: #450a0a; color: #f87171; }

.report-scores { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 16px; }
.report-score { text-align: center; padding: 14px; background: #0f1219; border-radius: 8px; border: 1px solid #252d3d; }
.report-score-num { font-size: 24px; font-weight: 700; }
.report-score-num.h { color: #4ade80; }
.report-score-num.m { color: #fb923c; }
.report-score-num.l { color: #f87171; }
.report-score-label { font-size: 11px; color: #64748b; margin-top: 4px; }
.conversion-row { display: flex; align-items: center; gap: 14px; padding: 16px; background: #0f1219; border-radius: 8px; margin-bottom: 14px; border: 1px solid #252d3d; }
.conv-num { font-size: 36px; font-weight: 700; }
.conv-num.h { color: #4ade80; }
.conv-num.m { color: #fb923c; }
.conv-num.l { color: #f87171; }
.conv-label { font-size: 13px; color: #64748b; }
.two-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.col-block h4 { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: #64748b; margin-bottom: 8px; }
.col-block ul { list-style: none; display: flex; flex-direction: column; gap: 6px; }
.col-block.good li { padding: 8px 12px; background: #14532d22; color: #4ade80; border-radius: 6px; font-size: 13px; line-height: 1.4; border: 1px solid #14532d; }
.col-block.bad li { padding: 8px 12px; background: #45000022; color: #f87171; border-radius: 6px; font-size: 13px; line-height: 1.4; border: 1px solid #450a0a; }
.recs ul { list-style: none; display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.recs li { padding: 10px 14px; background: #1e2a45; border-left: 3px solid #4f7ef8; border-radius: 0 6px 6px 0; font-size: 13px; color: #93c5fd; line-height: 1.5; }

.spin { display: inline-block; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
input[type="time"]::-webkit-calendar-picker-indicator,
input[type="date"]::-webkit-calendar-picker-indicator { filter: invert(0.7); cursor: pointer; }
.pcol-item { padding: 5px 0; text-align: center; font-size: 12px; color: #64748b; cursor: pointer; border-radius: 4px; }
.pcol-item:hover { background: #1e2a45; color: #60a5fa; }
.pcol-item.pac { background: #1e3a5f; color: #93c5fd; font-weight: 500; }
.pcol-item.pbl { color: #2d3748; cursor: not-allowed; }
.persona-card-anim {
  background: #1a1f2e; border: 0.5px solid #252d3d; border-radius: 8px;
  padding: 12px 14px; width: calc(50% - 5px);
  opacity: 0; transform: translateY(10px);
  transition: opacity .35s ease, transform .35s ease;
}
.persona-card-anim.show { opacity: 1; transform: translateY(0); }
.eval-tooltip { position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%); background:#0f1219; border:0.5px solid #2d3748; border-radius:7px; padding:8px 10px; font-size:11px; color:#94a3b8; white-space:nowrap; z-index:100; pointer-events:none; line-height:1.6; }
.eval-tooltip::after { content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:5px solid transparent; border-top-color:#2d3748; }
.cal-day { font-size: 12px; color: #64748b; text-align: center; padding: 5px 2px; border-radius: 5px; cursor: pointer; }
.cal-day:hover { background: #252d3d; color: #e2e8f0; }
.cal-day.cal-other { color: #252d3d; cursor: default; pointer-events: none; }
.cal-day.cal-today { color: #60a5fa; font-weight: 500; }
.cal-day.cal-selected { background: #4f7ef8; color: #fff; }

/* ── PROTECTED-плашка: сайт защищён от автоматического доступа ─────────── */
.protected-banner {
  display: flex; gap: 16px;
  padding: 18px 20px; margin: 8px 0;
  background: #2a1a1f; border: 1px solid #5a2a3a;
  border-left: 3px solid #f87171;
  border-radius: 8px;
}
.protected-banner-icon {
  flex-shrink: 0; color: #f87171; padding-top: 2px;
}
.protected-banner-body { flex: 1; min-width: 0; }
.protected-banner-title {
  font-size: 14px; font-weight: 600; color: #fca5a5; margin-bottom: 6px;
}
.protected-banner-text {
  font-size: 13px; color: #e2e8f0; line-height: 1.5; margin-bottom: 8px;
}
.protected-banner-tag {
  display: inline-block;
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 11px; color: #94a3b8;
  background: #1a1f2e; border: 1px solid #2d3748;
  padding: 2px 8px; border-radius: 4px; margin-bottom: 10px;
}
.protected-banner-hint {
  font-size: 12px; color: #94a3b8; line-height: 1.6;
}

/* ── Сводный отчёт: детальная сводка 152-ФЗ ───────────────────────────────
   Счётчики по system-маркерам (форма ПД / запрос ПД в чате / увод канала).
   Каждая строка — иконка (✓/!/✗) + название категории + счётчик с плюрализацией.
   Источник: window._dialogEvalIds → renderSummaryPDDetail() в 11-summary.js. */
.sum-pd-list {
  display: flex; flex-direction: column; gap: 8px;
}
.sum-pd-row {
  display: grid; grid-template-columns: 22px 1fr auto; align-items: center;
  gap: 12px; font-size: 14px; line-height: 1.4;
}
.sum-pd-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border-radius: 50%;
}
.sum-pd-icon-ok      { background: #0f2616; color: #4ade80; }
.sum-pd-icon-neutral { background: #2a1f08; color: #fbbf24; }
.sum-pd-icon-danger  { background: #2a1010; color: #f87171; }
.sum-pd-label  { color: #e2e8f0; }
.sum-pd-cnt    { font-weight: 500; color: #cbd5e1; }
.sum-pd-cnt-danger { color: #f87171; }

/* ── Сводный отчёт: топ-3 худших диалогов ──────────────────────────────────
   Карточки с цветным border-left, аватаром, оценкой и краткой проблемой.
   Кликабельны — открывают одиночный отчёт через selectOp(opId).
   Источник: window._dialogEvalIds → renderSummaryTopWorst() в 11-summary.js. */
.sum-worst-list {
  display: flex; flex-direction: column; gap: 8px;
}
.sum-worst-item {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 14px 16px;
  background: #1a1f2e;
  border: 0.5px solid #2d3748;
  border-left-width: 3px;
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.15s;
}
.sum-worst-item:hover { background: #232a3d; }
.sum-worst-low { border-left-color: #f87171; }
.sum-worst-med { border-left-color: #fbbf24; }
.sum-worst-good,
.sum-worst-na  { border-left-color: #4a5568; }

.sum-worst-ava {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 50%;
  font-weight: 500; font-size: 13px; flex-shrink: 0;
}
.sum-worst-ava-low { background: #2a1010; color: #fca5a5; }
.sum-worst-ava-med { background: #2a1f08; color: #fbbf24; }
.sum-worst-ava-good,
.sum-worst-ava-na  { background: #1a2035; color: #94a3b8; }

.sum-worst-body { flex: 1; min-width: 0; }
.sum-worst-name { font-size: 14px; font-weight: 500; color: #e2e8f0; margin-bottom: 2px; }
.sum-worst-meta { font-size: 12px; color: #94a3b8; margin-bottom: 6px; }
.sum-worst-problem { font-size: 13px; color: #cbd5e1; line-height: 1.5; }

.sum-worst-score-col {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  flex-shrink: 0;
}
.sum-worst-score { font-size: 18px; font-weight: 500; }

/* ─── PDF print-mode ──────────────────────────────────────────────────────────
   Playwright headless открывает /audit/<id>?print=1, фронт через index.html
   bootstrap проставляет body.print-mode. Переключаемся на светлую тему,
   крупный шрифт, скрываем sidebar/header/action panel/statusbar/кнопки.
   13-restore.js откроет нужный отчёт и установит body.print-ready —
   Playwright ждёт этот флаг перед page.pdf(). */
body.print-mode {
  background: #ffffff !important;
  color: #1a1a1a !important;
  font-size: 12pt;
}

body.print-mode .header,
body.print-mode .sidebar,
body.print-mode .statusbar,
body.print-mode .action-panel,
body.print-mode .status-bar,
body.print-mode .restore-error {
  display: none !important;
}

body.print-mode .content {
  margin-left: 0 !important;
  padding: 0 !important;
  max-width: 100% !important;
  width: 100% !important;
}

body.print-mode .content-block {
  background: #ffffff !important;
  border-color: #d0d4dc !important;
  padding: 16px !important;
  box-shadow: none !important;
}

/* Светлая палитра сообщений */
body.print-mode .msg-operator { background: #eef3fb !important; color: #1a2e4a !important; }
body.print-mode .msg-client   { background: #f0f5ec !important; color: #1f3a18 !important; }
body.print-mode .msg-system   { background: #f5f4ee !important; color: #4a3f1a !important; }
body.print-mode .msg-system.ok      { background: #e6f4ea !important; color: #1a4a2a !important; }
body.print-mode .msg-system.danger  { background: #fbeaea !important; color: #5c1a1a !important; }
body.print-mode .msg-system.neutral { background: #fef6e7 !important; color: #5c3f0c !important; }

/* Отключаем анимации/reveal */
body.print-mode *,
body.print-mode *::before,
body.print-mode *::after {
  animation: none !important;
  transition: none !important;
}
body.print-mode .reveal {
  opacity: 1 !important;
  transform: none !important;
}

/* Page-break-friendly */
body.print-mode .content-block { page-break-before: auto; page-break-after: auto; }
body.print-mode .sum-sec       { page-break-inside: avoid; }
body.print-mode .msg-row,
body.print-mode .rep-crit-row,
body.print-mode .sum-worst-item { page-break-inside: avoid; }
body.print-mode h1, body.print-mode h2, body.print-mode h3,
body.print-mode .sum-sec-title, body.print-mode .content-block-title {
  page-break-after: avoid;
}

/* Кнопка PDF — в print-mode не нужна (рекурсия) */
body.print-mode .btn-pdf-export { display: none !important; }
