/* eco_blocks.css — небольшой scoped-слой для двух блоков «событийного движка»,
 * живущих на shell-страницах (НЕ ecosystem.css):
 *   1) каталог событий на лендинге (/),
 *   2) блок «Специальные мероприятия» в ЛК Прогрессуса (/profile).
 * Использует токены shell.css (--shell-*) с фолбэками — они есть на обеих
 * страницах. Все классы префикснуты .eco- чтобы не конфликтовать с лендингом. */

.eco-cat {
  max-width: var(--shell-max, 1440px);
  margin: 0 auto;
  padding: 64px var(--shell-pad, clamp(20px, 4vw, 64px));
}
.eco-cat__label {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--shell-mute, #9DB3CC); margin: 0 0 8px;
  display: inline-flex; align-items: center; gap: 10px;
}
.eco-cat__label::before { content: ""; width: 8px; height: 8px; background: var(--shell-accent-warm, #6BA9D9); }
.eco-cat__title { font-size: clamp(24px, 3vw, 36px); letter-spacing: -0.02em; margin: 0 0 28px; color: var(--shell-fg, #06182E); font-weight: 500; }
.eco-cat__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; }

.eco-card {
  display: flex; flex-direction: column; text-decoration: none;
  border: 1px solid var(--shell-line, rgba(6,24,46,.18));
  background: var(--shell-bg, transparent); color: var(--shell-fg, #06182E);
  transition: border-color 200ms ease, transform 200ms ease;
}
.eco-card:hover { border-color: var(--shell-accent-warm, #6BA9D9); transform: translateY(-2px); }
.eco-card__cover { aspect-ratio: 16 / 9; background: var(--shell-line, rgba(6,24,46,.08)) center/cover no-repeat; }
.eco-card__cover--empty { background: linear-gradient(135deg, var(--shell-accent, #3A86C8), var(--shell-accent-warm, #6BA9D9)); opacity: .85; }
.eco-card__body { padding: 16px 18px 20px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.eco-card__dates { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: 0.04em; color: var(--shell-mute, #9DB3CC); }
.eco-card__name { font-size: 18px; letter-spacing: -0.01em; margin: 0; font-weight: 500; }
.eco-card__desc { font-size: 14px; line-height: 1.5; color: var(--shell-mute, #9DB3CC); margin: 0; }
.eco-card__cta { margin-top: auto; font-size: 13px; color: var(--shell-accent-warm, #6BA9D9); padding-top: 6px; }

/* ── Блок «Специальные мероприятия» в ЛК Прогрессуса ─────────────────────── */
.eco-lk-block { margin: 0 0 24px; }
.eco-lk-block__inner {
  border: 1px solid var(--shell-line, rgba(6,24,46,.18));
  padding: 18px 20px; border-radius: 0;
}
.eco-lk-block--active .eco-lk-block__inner {
  border-color: var(--shell-accent, #3A86C8);
  border-left-width: 4px;
  background: color-mix(in oklab, var(--shell-accent, #3A86C8) 8%, transparent);
}
.eco-lk-block__title { font-size: 16px; font-weight: 600; margin: 0 0 4px; color: var(--shell-fg, #06182E); }
.eco-lk-block__sub { font-size: 13px; color: var(--shell-mute, #9DB3CC); margin: 0 0 12px; }
.eco-lk-item { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-top: 1px solid var(--shell-line, rgba(6,24,46,.12)); flex-wrap: wrap; }
.eco-lk-item__name { font-weight: 500; }
.eco-lk-item__status { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 11px; color: var(--shell-mute, #9DB3CC); border: 1px solid var(--shell-line, rgba(6,24,46,.18)); padding: 2px 8px; }
.eco-btn {
  display: inline-block; text-decoration: none; cursor: pointer;
  font-size: 13px; font-weight: 500; padding: 8px 14px;
  background: var(--shell-accent, #3A86C8); color: #EEF2F7; border: none;
}
.eco-btn:hover { background: var(--shell-accent-warm, #6BA9D9); }
.eco-btn--ghost { background: transparent; color: var(--shell-accent-warm, #6BA9D9); border: 1px solid var(--shell-line-strong, rgba(6,24,46,.45)); }
.eco-lk-item .eco-btn { margin-left: auto; }
/* Роли + действия в строке мероприятия (ЛК Прогрессуса) */
.eco-lk-item__info { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.eco-lk-role { font-size: 11px; font-weight: 500; padding: 2px 8px; border-radius: 4px;
  background: var(--shell-accent-soft, rgba(58,134,200,.14)); color: var(--shell-accent, #3A86C8); }
.eco-lk-item__actions { display: inline-flex; gap: 8px; margin-left: auto; flex-wrap: wrap; }
.eco-lk-item__actions .eco-btn { margin-left: 0; }
.eco-lk-block__more { display: inline-block; margin-top: 12px; font-size: 13px;
  color: var(--shell-accent-warm, #6BA9D9); text-decoration: none; font-weight: 500; }
.eco-lk-block__more:hover { text-decoration: underline; }

/* ═══ ЛК экосистемы (/lk) — shell-страница в стиле лендинга/ЛК центра ═══════ */
/* Шрифт: shell.css задаёт Geist только на shell-компонентах, а body-шрифт страницы
   ставят инлайном (на /lk это запрещено строгим CSP). Ставим на контейнерах. */
.eco-cat, .banner-impersonation {
  font-family: "Geist", -apple-system, "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
/* Фон/цвет страницы ЛК — на /lk строгий CSP, инлайн body{} нельзя, ставим классом.
   Токены --shell-* темнеют/светлеют по data-theme (как на лендинге/ЛК центра). */
body.lk2-page { margin: 0; min-height: 100vh; background: var(--shell-bg, #0E2645); color: var(--shell-fg, #E6ECF3); }
/* Фоновая «нейросеть» для всех разделов ЛК — слои узлов и связи (синий accent на
   низкой прозрачности, читается и в светлой, и в тёмной теме). Фиксированный
   backdrop за контентом. */
body.lk2-page::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background: url("/static/img/neural-bg.svg") center / cover no-repeat;
  opacity: 0.5;
}
:root[data-theme="dark"] body.lk2-page::before { opacity: 0.65; }

/* Шапка профиля (фото + контакты) — как в ЛК Прогрессуса */
.lk2-profile { display: flex; gap: 20px; align-items: flex-start; padding: 22px;
  margin: 8px 0 4px; border: 1px solid var(--shell-line, rgba(6,24,46,.18)); }
.lk2-avatar { width: 72px; height: 72px; border-radius: 50%; flex-shrink: 0; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: var(--shell-accent, #3A86C8); color: #EEF2F7; font-weight: 600; font-size: 24px; }
.lk2-avatar img { width: 100%; height: 100%; object-fit: cover; }
.lk2-profile__main { flex: 1; min-width: 0; }
.lk2-profile__name { margin: 0 0 12px; font-size: clamp(20px, 2.4vw, 28px); font-weight: 600; letter-spacing: -0.01em; }
.lk2-profile__meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px 24px; margin-bottom: 14px; }
.lk2-profile__meta > div { display: flex; flex-direction: column; gap: 2px; font-size: 14px; min-width: 0; }
.lk2-profile__meta span:last-child { overflow: hidden; text-overflow: ellipsis; }
.lk2-meta-k { font-family: "JetBrains Mono", monospace; font-size: 10px; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--shell-mute, #9DB3CC); }
.lk2-profile__edit { align-self: flex-start; }

/* Минималистичные line-иконки карточек */
.lk2-ico-wrap { display: inline-flex; width: 42px; height: 42px; align-items: center; justify-content: center;
  border: 1px solid var(--shell-line, rgba(6,24,46,.18)); color: var(--shell-accent-warm, #6BA9D9); margin-bottom: 2px; }
.lk2-ico { width: 22px; height: 22px; }
.eco-card--locked .lk2-ico-wrap { color: var(--shell-accent-coral, #F08C6E); }

/* Карточка мероприятия: обложка (фото) или нейро-SVG заглушка */
.eco-card--ev { padding: 0; overflow: hidden; }
.ev-cover-wrap { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: #0A1E38; }
.ev-cover-wrap .ev-cover { width: 100%; height: 100%; object-fit: cover; display: block; }
.ev-cover--v0 { color: #6BA9D9; } .ev-cover--v1 { color: #5DC09E; }
.ev-cover--v2 { color: #B79CE6; } .ev-cover--v3 { color: #E5B964; }
.ev-badge { position: absolute; top: 8px; left: 8px; font-family: "JetBrains Mono", monospace;
  font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; padding: 2px 8px;
  background: rgba(6,24,46,.75); color: #E6ECF3; }
.eco-card--ev .eco-card__body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 8px; }
.eco-card--ev .eco-card__desc { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

@media (max-width: 560px) { .lk2-profile { flex-direction: column; } }
.lk2-sub { color: var(--shell-mute, #9DB3CC); margin: -16px 0 8px; font-size: 14px; }
.lk2-label {
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--shell-mute, #9DB3CC); margin: 44px 0 18px;
  display: inline-flex; align-items: center; gap: 10px;
}
.lk2-label::before { content: ""; width: 8px; height: 8px; background: var(--shell-accent-warm, #6BA9D9); }
.lk2-back { display: inline-block; margin-bottom: 14px; font-size: 13px; color: var(--shell-accent-warm, #6BA9D9); text-decoration: none; }
.lk2-back:hover { text-decoration: underline; }
.lk2-empty { margin-top: 24px; }
.lk2-grid--muted { opacity: 0.72; }
.lk2-form { max-width: 600px; }
.lk2-form h1 { font-size: clamp(22px, 3vw, 32px); margin: 4px 0 10px; }

/* Карточка-плитка (направление / роль) — без обложки, иконка + текст */
.eco-card--tile { padding: 20px; gap: 8px; }
.eco-tile__icon { font-size: 30px; line-height: 1; }
.eco-card--tile .eco-card__name { margin: 0; }
.eco-card--locked { opacity: 0.92; }
.eco-card--locked .eco-card__cta { color: var(--shell-accent-coral, #F08C6E); }

/* Бейджи ролей в карточке мероприятия */
.eco-roles { display: flex; flex-wrap: wrap; gap: 6px; }
.eco-role { font-size: 11px; font-weight: 500; padding: 2px 8px;
  border: 1px solid var(--shell-line, rgba(6,24,46,.18)); color: var(--shell-accent-warm, #6BA9D9); }

/* Баннер надзора (impersonation) на shell-странице */
.banner-impersonation { display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  padding: 10px var(--shell-pad, clamp(20px,4vw,64px)); background: var(--shell-accent-coral, #F08C6E);
  color: #06182E; font-size: 13px; }
.banner-impersonation.is-act-as { background: #b23a1e; color: #fff; }
.banner-impersonation form { margin: 0 0 0 auto; }
.banner-impersonation .btn { background: #06182E; color: #fff; border: none; padding: 6px 12px;
  cursor: pointer; font-size: 12px; font-weight: 500; }
.banner-impersonation .btn:hover { background: #0E2645; }

@media (max-width: 600px) {
  .eco-cat { padding: 40px var(--shell-pad, 20px); }
}

/* ── Настройки события: сетка дат + превью обложки ───────────────────── */
.form-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 560px) { .form-grid-2 { grid-template-columns: 1fr; } }
.cover-prev { margin-top: 10px; border-radius: 12px; overflow: hidden;
  border: 1px solid var(--shell-line, rgba(6,24,46,.14)); max-width: 360px; }
.cover-prev img { display: block; width: 100%; height: auto; max-height: 180px; object-fit: cover; }
.cover-prev.is-empty { display: none; }

/* ── Участники: тулбар, чипы-сводка, статус-селект ───────────────────── */
.mem-toolbar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.mem-toolbar input[type="search"] { flex: 1 1 240px; min-width: 200px; }
.mem-toolbar select { flex: 0 0 auto; min-width: 150px; }
.mem-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.mem-chip { font-size: 12px; padding: 4px 10px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--shell-line, rgba(6,24,46,.16)); color: var(--shell-fg, #06182E);
  background: var(--shell-surface, rgba(255,255,255,.5)); transition: border-color .15s, transform .1s; }
.mem-chip:hover { border-color: var(--shell-accent, #2B6CB0); transform: translateY(-1px); }
.mem-chip b { font-weight: 700; }
.mem-status { padding: 4px 8px !important; min-width: 140px; font-size: 13px; }
.mem-del { color: var(--shell-accent-coral, #d9594a) !important; }
.mem-roles-view { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.mem-roles-edit-btn { padding: 2px 6px !important; line-height: 1; }
.mem-roles-edit { margin-top: 8px; padding: 10px; border-radius: 10px;
  border: 1px solid var(--shell-line, rgba(6,24,46,.16)); background: var(--shell-surface, rgba(255,255,255,.45)); }
.mem-role-checks { display: flex; flex-direction: column; gap: 4px; }
.mem-role-check { display: flex; align-items: center; gap: 8px; font-size: 13px; cursor: pointer; }
.mem-role-check input { width: auto; margin: 0; }
.mem-checkin { white-space: nowrap; }
.mem-checkin.is-in { background: var(--shell-accent-mint, #3aa676) !important; color: #fff !important; border-color: transparent !important; }
.mem-chip--checkin { border-color: var(--shell-accent-mint, #3aa676); }
.mem-checked-only { white-space: nowrap; margin: 0; display: inline-flex; align-items: center; gap: 6px; }
.mem-checked-only input { width: auto; margin: 0; }

/* ── Обзор события (дашборд) ──────────────────────────────────────────── */
.ov-section { margin-bottom: 22px; }
.ov-head { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  flex-wrap: wrap; margin-bottom: 10px; }
.ov-head h3 { margin: 0; font-size: 16px; }
.ov-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
.ov-tile { border: 1px solid var(--shell-line, rgba(6,24,46,.14)); border-radius: 14px;
  padding: 16px 18px; background: var(--shell-surface, rgba(255,255,255,.5)); }
.ov-num { font-size: 26px; font-weight: 700; line-height: 1.15; color: var(--shell-fg, #06182E);
  font-variant-numeric: tabular-nums; }
/* Текстовые/бейдж-значения (статус, регистрация) — не растягиваем как число */
.ov-val { font-size: 15px; font-weight: 600; line-height: 1.3; min-height: 30px;
  display: flex; align-items: center; color: var(--shell-fg, #06182E); }
.ov-label { margin-top: 6px; font-size: 12px; color: var(--shell-fg-muted, #5a6b80); }
.ov-tile.ov-mint { border-color: var(--shell-accent-mint, #3aa676); }
.ov-tile.ov-mint .ov-num { color: var(--shell-accent-mint, #3aa676); }

/* ── Партнёры: drag + предпросмотр публичной карточки ─────────────────── */
.drag-grip { cursor: grab; user-select: none; font-size: 18px; color: var(--shell-fg-muted, #7384); text-align: center; }
tr[draggable] { cursor: grab; }
tr.dragging { opacity: .5; background: var(--shell-surface, rgba(43,108,176,.08)); }
.pp-preview { }
.pp-card { border: 1px solid var(--shell-line, rgba(6,24,46,.16)); border-radius: 14px;
  padding: 16px; max-width: 360px; background: var(--shell-surface, rgba(255,255,255,.55)); }
.pp-logo { max-width: 160px; max-height: 80px; object-fit: contain; display: block; margin-bottom: 8px; }
.pp-name { font-weight: 700; font-size: 16px; }
.pp-desc { color: var(--shell-fg, #06182E); }

/* ── Спикеры: миниатюра фото ──────────────────────────────────────────── */
.sp-name { display: flex; align-items: center; gap: 10px; }
.sp-thumb { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
  background: var(--shell-surface, rgba(6,24,46,.06)); }
.sp-thumb--empty { display: inline-block; border: 1px dashed var(--shell-line, rgba(6,24,46,.2)); }

/* ── Объявления: гибкий фильтр получателей ────────────────────────────── */
.an-filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px; padding: 14px; border-radius: 12px;
  border: 1px solid var(--shell-line, rgba(6,24,46,.14)); background: var(--shell-surface, rgba(255,255,255,.45)); }
.an-filters .mono-label { margin-bottom: 6px; }
.an-filters .form-checkbox { display: flex; align-items: center; gap: 8px; margin: 2px 0; font-size: 14px; }
.an-filters .form-checkbox input { width: auto; margin: 0; }

/* ── Вкладка «Регистрация»: формы ──────────────────────────────────────── */
.reg-grid { display: grid; grid-template-columns: minmax(260px, 360px) 1fr; gap: 16px; align-items: start; }
@media (max-width: 820px) { .reg-grid { grid-template-columns: 1fr; } }
.reg-form-row { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 0; border-top: 1px solid var(--shell-line, rgba(6,24,46,.12)); flex-wrap: wrap; }
.reg-form-row:first-child { border-top: 0; }
.reg-soon { padding: 12px 14px; border-radius: 10px; border: 1px dashed var(--shell-line, rgba(6,24,46,.2));
  opacity: .7; background: var(--shell-surface, rgba(255,255,255,.4)); }
.btn-danger { color: var(--shell-accent-coral, #d9594a) !important; }
.reg-presets { padding: 12px; border-radius: 10px; background: var(--shell-surface, rgba(43,108,176,.06));
  border: 1px solid var(--shell-line, rgba(6,24,46,.14)); }
.reg-presets .reg-preset { margin: 0 4px 4px 0; }
/* Виджет-сниппет для Тильды + предпросмотр */
.embed-code-wrap { position: relative; }
.embed-code { width: 100%; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px; line-height: 1.5; padding: 10px 12px; border-radius: 10px;
  border: 1px solid var(--shell-line, rgba(6,24,46,.18)); background: var(--shell-surface, rgba(6,24,46,.04));
  color: var(--shell-ink, #06182e); resize: vertical; white-space: pre; overflow-x: auto; }
.embed-preview { border: 1px dashed var(--shell-line, rgba(6,24,46,.2)); border-radius: 10px; padding: 10px;
  background: var(--shell-surface, rgba(255,255,255,.5)); }
.embed-preview-frame { width: 100%; border: 0; min-height: 480px; background: transparent; display: block; }

/* ═══ Редактор схемы зала / выставки (event-admin → «Схема») ═══ */
.fp-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 8px 0 12px;
  padding: 8px 10px; border-radius: 10px; border: 1px solid var(--shell-line, rgba(6,24,46,.14));
  background: var(--shell-surface, rgba(43,108,176,.05)); }
.fp-top__lbl { font-size: 13px; color: var(--shell-muted, #5a6b7e); }
.fp-sel { padding: 6px 8px; border-radius: 8px; border: 1px solid var(--shell-line, rgba(6,24,46,.18));
  background: var(--shell-card, #fff); color: var(--shell-ink, #06182e); max-width: 260px; }
.fp-spacer { flex: 1 1 auto; }
.fp-zoom { display: flex; align-items: center; gap: 4px; }
.fp-zoom__lbl { font-size: 12px; min-width: 42px; text-align: center; color: var(--shell-muted, #5a6b7e); }
.fp-empty { text-align: center; padding: 32px; }
.btn.is-dirty { box-shadow: 0 0 0 3px rgba(224,163,62,.45); }

.fp-body { display: grid; grid-template-columns: 138px 1fr 268px; gap: 12px; align-items: start; }
.fp-body[hidden] { display: none; }  /* grid перебивает UA [hidden] — возвращаем */
@media (max-width: 980px) { .fp-body { grid-template-columns: 1fr; } }
.fp-tools { display: flex; flex-direction: column; gap: 6px; }
.fp-tool { text-align: left; padding: 8px 10px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--shell-line, rgba(6,24,46,.16)); background: var(--shell-card, #fff);
  color: var(--shell-ink, #06182e); font: inherit; font-size: 13px; }
.fp-tool:hover { border-color: var(--shell-accent, #2b6cb0); }
.fp-tool.is-active { background: var(--shell-accent, #2b6cb0); color: #fff; border-color: var(--shell-accent, #2b6cb0); }
.fp-tools__hint { font-size: 11px; line-height: 1.45; color: var(--shell-muted, #5a6b7e); margin-top: 4px; }

.fp-canvas-wrap { position: relative; border-radius: 12px; overflow: hidden;
  border: 1px solid var(--shell-line, rgba(6,24,46,.16)); }
.fp-canvas { width: 100%; height: 600px; display: block; touch-action: none;
  background: var(--shell-surface, #eef2f7); cursor: grab; }
.fp-canvas:active { cursor: grabbing; }
.fp-creating .fp-canvas { cursor: crosshair; }
.fp-legend { position: absolute; left: 8px; bottom: 8px; display: flex; gap: 10px; flex-wrap: wrap;
  padding: 6px 10px; border-radius: 8px; background: rgba(255,255,255,.86);
  border: 1px solid rgba(6,24,46,.12); backdrop-filter: blur(4px); }
.fp-leg { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: #1c2b3a; }
.fp-leg__sw { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.fp-leg--free .fp-leg__sw { background: #3aa76d; }
.fp-leg--reserved .fp-leg__sw { background: #e0a33e; }
.fp-leg--sold .fp-leg__sw { background: #3b73c4; }
.fp-leg--own .fp-leg__sw { background: #7a5af0; }

.fp-inspector { border: 1px solid var(--shell-line, rgba(6,24,46,.16)); border-radius: 12px;
  padding: 12px; background: var(--shell-card, #fff); }
.fp-in { width: 100%; padding: 7px 9px; border-radius: 8px; box-sizing: border-box;
  border: 1px solid var(--shell-line, rgba(6,24,46,.18)); background: var(--shell-card, #fff);
  color: var(--shell-ink, #06182e); font: inherit; font-size: 13px; }

/* SVG-сцена */
.fp-hall { fill: #ffffff; }
.fp-hall-grid { pointer-events: none; }
.fp-grid-line { stroke: rgba(6,24,46,.09); stroke-width: 1; fill: none; }
.fp-hall-frame { fill: none; stroke: rgba(6,24,46,.40); stroke-width: 2; pointer-events: none; }
.fp-hit { fill: transparent; }
.fp-booth { stroke: rgba(0,0,0,.28); stroke-width: 1; cursor: move; }
.fp-booth--free { fill: #3aa76d; }
.fp-booth--reserved { fill: #e0a33e; }
.fp-booth--sold { fill: #3b73c4; }
.fp-booth--own { fill: #7a5af0; }
.fp-booth.is-sel { stroke: #06182e; stroke-width: 1.5; }
.fp-booth-num { fill: #fff; font-size: 12px; font-weight: 700; pointer-events: none;
  font-family: Inter, system-ui, sans-serif; }
.fp-booth-pt { fill: rgba(255,255,255,.9); font-size: 9px; pointer-events: none;
  font-family: Inter, system-ui, sans-serif; }
.fp-el { cursor: move; }
.fp-el--wall { fill: #4a5568; stroke: #2d3748; stroke-width: 1; }
.fp-el--door { fill: #b9d3ef; stroke: #3b73c4; stroke-width: 1; }
.fp-el--zone { fill: rgba(123,90,240,.12); stroke: #7a5af0; stroke-width: 1.5; stroke-dasharray: 5 4; }
.fp-el--rect { fill: rgba(6,24,46,.05); stroke: #5a6b7e; stroke-width: 1; }
.fp-el.is-sel { stroke-width: 2; }
.fp-el-text { fill: #1c2b3a; font-size: 14px; font-weight: 600; font-family: Inter, system-ui, sans-serif; cursor: move; }
.fp-el-label { fill: #3a2b6b; font-size: 11px; font-weight: 600; pointer-events: none; font-family: Inter, system-ui, sans-serif; }
.fp-sel-outline { fill: none; stroke: #06182e; stroke-width: 1; stroke-dasharray: 4 3; pointer-events: none; }
.fp-handle { fill: #fff; stroke: #06182e; stroke-width: 1.5; cursor: nwse-resize; }
.fp-rot-line { stroke: #06182e; stroke-width: 1; stroke-dasharray: 2 2; pointer-events: none; }
.fp-rot-handle { fill: #2b6cb0; stroke: #fff; stroke-width: 1.5; cursor: grab; }

[data-theme="dark"] .fp-canvas { background: #0f1722; }
[data-theme="dark"] .fp-hall { fill: #16202e; }
[data-theme="dark"] .fp-grid-line { stroke: rgba(255,255,255,.07); }
[data-theme="dark"] .fp-hall-frame { stroke: rgba(255,255,255,.30); }
[data-theme="dark"] .fp-el-text { fill: #e6edf5; }
[data-theme="dark"] .fp-legend { background: rgba(16,24,34,.86); border-color: rgba(255,255,255,.12); }
[data-theme="dark"] .fp-leg { color: #cdd8e3; }
[data-theme="dark"] .fp-sel-outline, [data-theme="dark"] .fp-handle { stroke: #cdd8e3; }
[data-theme="dark"] .fp-booth.is-sel { stroke: #cdd8e3; }

/* ═══ Публичная интерактивная карта зала (виджет для Тильды) ═══ */
.fpm-body { margin: 0; background: #f6f8fb; color: #0f1e37;
  font-family: Inter, system-ui, -apple-system, sans-serif; -webkit-font-smoothing: antialiased; }
.fpm-app { display: flex; flex-direction: column; height: 100vh; min-height: 360px; overflow: hidden; }
.fpm-embed .fpm-app { height: 100vh; }

/* topbar */
.fpm-top { display: flex; align-items: center; gap: 10px; padding: 10px 14px;
  background: #fff; border-bottom: 1px solid #e7ecf3; flex-wrap: wrap; z-index: 5; }
.fpm-top__title { font-weight: 700; font-size: 16px; color: #0f1e37; margin-right: 4px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 32vw; }
.fpm-embed .fpm-top__title { max-width: 26vw; }
.fpm-plansel { padding: 7px 10px; border-radius: 9px; border: 1px solid #dbe3ee; background: #fff;
  color: #0f1e37; font: inherit; font-size: 13px; }
.fpm-search { position: relative; flex: 1 1 200px; min-width: 150px; max-width: 340px; }
.fpm-search__ic { position: absolute; left: 10px; top: 50%; transform: translateY(-50%);
  width: 16px; height: 16px; color: #94a3b8; pointer-events: none; }
.fpm-search input { width: 100%; box-sizing: border-box; padding: 9px 12px 9px 32px; border-radius: 10px;
  border: 1px solid #e2e8f0; background: #f5f7fb; color: #0f1e37; font: inherit; font-size: 13px; outline: none; transition: border-color .15s, background .15s; }
.fpm-search input:focus { border-color: #2b6cb0; background: #fff; }
.fpm-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.fpm-chip { padding: 6px 11px; border-radius: 999px; border: 1px solid #dbe3ee; background: #fff;
  color: #475569; font: inherit; font-size: 12px; cursor: pointer; transition: all .15s; }
.fpm-chip:hover { border-color: #2b6cb0; color: #2b6cb0; }
.fpm-chip.is-on { background: #2b6cb0; border-color: #2b6cb0; color: #fff; }

/* main */
.fpm-main { flex: 1; display: flex; min-height: 0; position: relative; }
.fpm-mapwrap { flex: 1; position: relative; overflow: hidden; background:
  radial-gradient(circle at 30% 20%, #fbfcfe 0%, #eef2f8 100%); }
.fpm-svg { position: absolute; inset: 0; width: 100%; height: 100%; touch-action: none; cursor: grab; }
.fpm-svg:active { cursor: grabbing; }

/* SVG-сцена */
.fpm-hall { fill: #ffffff; }
.fpm-hallgrid { pointer-events: none; }
.fpm-grid { stroke: #eef2f7; stroke-width: 1; fill: none; vector-effect: non-scaling-stroke; }
.fpm-decor { pointer-events: none; }
.fpm-decor-rect { fill: #eef2f7; stroke: #e2e8f0; stroke-width: 1; vector-effect: non-scaling-stroke; }
.fpm-decor--wall .fpm-decor-rect { fill: #cbd5e1; stroke: none; }
.fpm-decor--door .fpm-decor-rect { fill: #dbeafe; stroke: #93c5fd; }
.fpm-decor--zone .fpm-decor-rect { fill: rgba(43,108,176,.06); stroke: #c2d2e6; stroke-dasharray: 7 5; }
.fpm-decor-text { fill: #64748b; font-size: 14px; font-weight: 600; }
.fpm-decor-label { fill: #7385a0; font-size: 11px; font-weight: 600; }

.fpm-booth { transition: opacity .2s; }
.fpm-booth.is-click { cursor: pointer; }
.fpm-booth.is-dim { opacity: .32; }
.fpm-booth-bg { fill: #ffffff; stroke: #dbe3ee; stroke-width: 1.5; vector-effect: non-scaling-stroke;
  transition: stroke .15s, fill .15s; }
.fpm-booth--free .fpm-booth-bg { fill: #eef2f7; stroke: #dde5ee; }
.fpm-booth--reserved .fpm-booth-bg { fill: #fdf4e6; stroke: #f0d9a8; }
.fpm-booth--anon .fpm-booth-bg { fill: #e9eef5; stroke: #d6deea; }
.fpm-booth.is-click:hover .fpm-booth-bg, .fpm-booth.is-hover .fpm-booth-bg { stroke: #2b6cb0; stroke-width: 2.5; }
.fpm-booth.is-sel .fpm-booth-bg { stroke: #2b6cb0; stroke-width: 3.5; }
.fpm-booth-logo, .fpm-booth-tx, .fpm-num, .fpm-numbg { pointer-events: none; }
.fpm-booth-tx { fill: #1e293b; font-size: 12px; font-weight: 600; }
.fpm-booth--free .fpm-booth-tx, .fpm-booth--reserved .fpm-booth-tx, .fpm-booth--anon .fpm-booth-tx { fill: #8a98ab; font-weight: 500; }
.fpm-numbg { fill: rgba(15,30,55,.72); }
.fpm-num { fill: #fff; font-size: 10px; font-weight: 700; }

/* оверлеи */
.fpm-zoom { position: absolute; right: 12px; bottom: 12px; display: flex; flex-direction: column;
  border-radius: 10px; overflow: hidden; box-shadow: 0 4px 16px rgba(15,30,55,.16); background: #fff; }
.fpm-zoom button { width: 38px; height: 36px; border: 0; border-bottom: 1px solid #eef2f7; background: #fff;
  color: #334155; font-size: 18px; cursor: pointer; line-height: 1; }
.fpm-zoom button:last-child { border-bottom: 0; font-size: 14px; }
.fpm-zoom button:hover { background: #f1f5f9; color: #2b6cb0; }
.fpm-legend { position: absolute; left: 12px; top: 12px; display: flex; gap: 12px; flex-wrap: wrap;
  padding: 7px 12px; border-radius: 10px; background: rgba(255,255,255,.92); backdrop-filter: blur(6px);
  box-shadow: 0 2px 10px rgba(15,30,55,.1); font-size: 12px; color: #334155; }
.fpm-leg { display: inline-flex; align-items: center; gap: 6px; }
.fpm-leg__sw { width: 11px; height: 11px; border-radius: 3px; display: inline-block; border: 1px solid rgba(15,30,55,.12); }
.fpm-leg--occupied .fpm-leg__sw { background: #fff; border-color: #2b6cb0; }
.fpm-leg--reserved .fpm-leg__sw { background: #fdf4e6; border-color: #e0a33e; }
.fpm-leg--free .fpm-leg__sw { background: #eef2f7; }
.fpm-tip { position: absolute; pointer-events: none; z-index: 8; max-width: 200px; padding: 7px 10px;
  border-radius: 9px; background: #0f1e37; color: #fff; font-size: 12px; line-height: 1.4;
  box-shadow: 0 6px 20px rgba(15,30,55,.3); }
.fpm-tip__sub { color: #b7c4d6; font-size: 11px; }

/* карточка партнёра */
.fpm-card { position: absolute; right: 14px; top: 14px; width: 286px; max-width: calc(100% - 28px);
  background: #fff; border-radius: 16px; padding: 18px; box-shadow: 0 16px 48px rgba(15,30,55,.22);
  z-index: 9; animation: fpmCardIn .22s cubic-bezier(.2,.7,.3,1); }
@keyframes fpmCardIn { from { opacity: 0; transform: translateY(-8px) scale(.97); } to { opacity: 1; transform: none; } }
.fpm-card__x { position: absolute; right: 10px; top: 10px; width: 28px; height: 28px; border: 0; border-radius: 8px;
  background: #f1f5f9; color: #64748b; font-size: 18px; line-height: 1; cursor: pointer; }
.fpm-card__x:hover { background: #e2e8f0; color: #0f1e37; }
.fpm-card__logo { height: 72px; display: flex; align-items: center; justify-content: center; margin-bottom: 12px;
  background: #f7f9fc; border-radius: 12px; padding: 10px; }
.fpm-card__logo img { max-height: 100%; max-width: 100%; object-fit: contain; }
.fpm-card__name { font-size: 17px; font-weight: 700; color: #0f1e37; padding-right: 26px; line-height: 1.25; }
.fpm-card__meta { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 8px; }
.fpm-chip2 { padding: 3px 9px; border-radius: 999px; background: #eaf1fb; color: #2b6cb0; font-size: 11px; font-weight: 600; }
.fpm-card__stand { font-size: 12px; color: #64748b; font-weight: 600; }
.fpm-card__desc { margin-top: 12px; font-size: 13px; line-height: 1.5; color: #475569; max-height: 160px; overflow: auto; }
.fpm-card__site { display: inline-block; margin-top: 14px; padding: 9px 14px; border-radius: 10px;
  background: #2b6cb0; color: #fff; font-size: 13px; font-weight: 600; text-decoration: none; }
.fpm-card__site:hover { background: #245c98; }

.fpm-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 6px; text-align: center; padding: 20px; }
.fpm-empty[hidden] { display: none; }  /* flex перебивает UA [hidden] */
.fpm-empty__t { font-size: 17px; font-weight: 700; color: #334155; }
.fpm-empty__s { font-size: 13px; color: #94a3b8; }

/* директория */
.fpm-dir { width: 286px; flex-shrink: 0; background: #fff; border-left: 1px solid #e7ecf3;
  display: flex; flex-direction: column; min-height: 0; }
.fpm-dir.is-hidden { display: none; }
.fpm-dir__head { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px;
  font-size: 13px; font-weight: 700; color: #475569; border-bottom: 1px solid #eef2f7; }
.fpm-dir__close { display: none; border: 0; background: none; font-size: 22px; color: #94a3b8; cursor: pointer; line-height: 1; }
.fpm-dir__list { flex: 1; overflow-y: auto; padding: 6px; }
.fpm-dir__empty { padding: 16px; font-size: 13px; color: #94a3b8; text-align: center; }
.fpm-di { display: flex; align-items: center; gap: 11px; width: 100%; text-align: left; padding: 9px 10px;
  border: 0; background: none; border-radius: 11px; cursor: pointer; transition: background .14s; }
.fpm-di:hover { background: #f5f7fb; }
.fpm-di.is-active { background: #eaf1fb; }
.fpm-di.is-off { display: none; }
.fpm-di__logo { width: 40px; height: 40px; flex-shrink: 0; border-radius: 9px; background: #f1f5f9;
  display: flex; align-items: center; justify-content: center; overflow: hidden; font-size: 13px; font-weight: 700; color: #2b6cb0; }
.fpm-di__logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.fpm-di__body { display: flex; flex-direction: column; min-width: 0; }
.fpm-di__name { font-size: 13.5px; font-weight: 600; color: #1e293b; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fpm-di__sub { font-size: 11.5px; color: #94a3b8; }

.fpm-dirbtn { position: absolute; left: 12px; bottom: 12px; padding: 10px 16px; border-radius: 999px;
  border: 0; background: #0f1e37; color: #fff; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer;
  box-shadow: 0 6px 20px rgba(15,30,55,.28); z-index: 7; }

.fpm-foot { padding: 7px 14px; text-align: center; font-size: 11px; color: #94a3b8; background: #fff; border-top: 1px solid #eef2f7; }
.fpm-foot a { color: #64748b; text-decoration: none; font-weight: 600; }

/* адаптив: директория → выезжающая панель */
@media (max-width: 759px) {
  .fpm-dir { position: absolute; right: 0; top: 0; bottom: 0; width: min(320px, 86%); z-index: 12;
    transform: translateX(100%); transition: transform .26s cubic-bezier(.2,.7,.3,1); box-shadow: -12px 0 40px rgba(15,30,55,.18); }
  .fpm-dir.is-open { transform: none; }
  .fpm-dir__close { display: block; }
  .fpm-card { left: 10px; right: 10px; top: auto; bottom: 10px; width: auto; }
  .fpm-top__title { max-width: 40vw; }
}

/* ═══ ЛК партнёра: вкладки, плитки, мини-карта стенда ═══ */
.lkp-tabs { display: flex; gap: 4px; flex-wrap: wrap; margin: 12px 0 18px;
  border-bottom: var(--hairline, 1px) solid var(--line, rgba(6,24,46,.14)); }
.lkp-tab { padding: 9px 15px; border: 0; background: none; cursor: pointer; font: inherit;
  font-size: 14px; color: var(--mute, #5a6b7e); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.lkp-tab:hover { color: var(--fg, #06182e); }
.lkp-tab.is-active { color: var(--accent, #2b6cb0); border-bottom-color: var(--accent, #2b6cb0); font-weight: 600; }
.lkp-pane[hidden] { display: none; }
.lkp-hello { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.lkp-hello__name { font-size: 20px; font-weight: 700; color: var(--fg, #06182e); }
.lkp-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); gap: 12px; margin-bottom: 16px; }
.lkp-tile { padding: 14px 16px; border-radius: var(--radius-md, 12px); border: var(--hairline, 1px) solid var(--line, rgba(6,24,46,.12));
  background: var(--surface, #fff); }
.lkp-tile__v { font-size: 22px; font-weight: 700; color: var(--fg, #06182e); line-height: 1.1; }
.lkp-tile__l { font-size: 12px; color: var(--mute, #5a6b7e); margin-top: 3px; }
.lkp-map { border-radius: var(--radius-md, 12px); overflow: hidden; border: var(--hairline, 1px) solid var(--line, rgba(6,24,46,.14)); background: #f6f8fb; }
.lkp-map svg { width: 100%; height: auto; max-height: 380px; display: block; }
.lkp-m-hall { fill: #ffffff; }
.lkp-m-el { fill: #eef2f7; stroke: #e2e8f0; stroke-width: 1; vector-effect: non-scaling-stroke; }
.lkp-m-el--wall { fill: #cbd5e1; stroke: none; }
.lkp-m-el--zone { fill: rgba(43,108,176,.06); stroke: #c2d2e6; stroke-width: 1; stroke-dasharray: 4 3; vector-effect: non-scaling-stroke; }
.lkp-m-el--door { fill: #dbeafe; stroke: #93c5fd; }
.lkp-m-booth { fill: #e9eef5; stroke: #cbd5e1; stroke-width: 1; vector-effect: non-scaling-stroke; }
.lkp-m-booth.is-mine { fill: #2b6cb0; stroke: #1f5288; stroke-width: 1.5; }
.lkp-m-num { fill: #fff; font-weight: 700; font-family: Inter, system-ui, sans-serif; }

/* ── ЛК партнёра: бейджи, чат, новости (Φ-C) ── */
.lkp-badge { display: inline-block; min-width: 16px; padding: 0 5px; border-radius: 9px;
  background: var(--accent, #2b6cb0); color: #fff; font-size: 11px; font-weight: 700;
  line-height: 16px; text-align: center; vertical-align: middle; }
.lkp-thread { display: flex; flex-direction: column; gap: 8px; max-height: 420px; overflow-y: auto;
  padding: 4px; }
.lkp-msg { max-width: 78%; padding: 9px 12px; border-radius: 12px; }
.lkp-msg--me { align-self: flex-end; background: var(--accent, #2b6cb0); color: #fff; border-bottom-right-radius: 3px; }
.lkp-msg--org { align-self: flex-start; background: var(--surface-2, rgba(6,24,46,.05)); color: var(--fg, #06182e); border-bottom-left-radius: 3px; }
.lkp-msg__b { font-size: 14px; line-height: 1.45; white-space: normal; word-wrap: break-word; }
.lkp-msg__t { font-size: 10.5px; margin-top: 4px; opacity: .7; }
.lkp-msg--me .lkp-msg__t { color: rgba(255,255,255,.85); }
.lkp-news { padding: 12px 14px; border: var(--hairline, 1px) solid var(--line, rgba(6,24,46,.12));
  border-radius: 10px; margin-bottom: 10px; background: var(--surface, #fff); }
.lkp-news.is-pinned { border-color: var(--accent, #2b6cb0); border-left-width: 3px; }
.lkp-news__h { font-size: 15px; font-weight: 700; color: var(--fg, #06182e); }
.lkp-news__b { font-size: 14px; line-height: 1.5; color: var(--fg, #06182e); margin-top: 6px; opacity: .92; }
.lkp-news__t { font-size: 11px; color: var(--mute, #5a6b7e); margin-top: 8px; }

/* ── ЛК партнёра: документы (Φ-D) ── */
.lkp-doc { padding: 12px 14px; border: var(--hairline, 1px) solid var(--line, rgba(6,24,46,.12));
  border-radius: 10px; margin-bottom: 10px; background: var(--surface, #fff); }
.lkp-doc__h { font-size: 15px; color: var(--fg, #06182e); }
.lkp-doc__d { font-size: 13px; color: var(--mute, #5a6b7e); margin-top: 4px; line-height: 1.5; }
.lkp-doc__a { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 10px; }
.lkp-doc__chk { margin: 0; }
.lkp-doc__ok { color: #2e9e6b; font-weight: 600; font-size: 13px; }

/* ── ЛК партнёра: лиды (Φ-E) ── */
.lkp-lead-st { max-width: 170px; }

/* ═══ Билеты (event-admin → «Билеты») ═══ */
.tk-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 8px 0 14px; }
.tk-stat { padding: 14px 16px; border-radius: var(--radius-md, 12px); border: var(--hairline, 1px) solid var(--line, rgba(6,24,46,.14));
  background: var(--surface, #fff); }
.tk-stat__v { font-size: 26px; font-weight: 700; color: var(--fg, #06182e); line-height: 1; font-variant-numeric: tabular-nums; }
.tk-stat__l { font-size: 12px; color: var(--mute, #5a6b7e); margin-top: 4px; }
.tk-scanwrap { max-width: 420px; border-radius: 12px; overflow: hidden; background: #0b1220; }
.tk-video { width: 100%; display: block; aspect-ratio: 4/3; object-fit: cover; }
.tk-hidden { display: none; }
.tk-manual { max-width: 320px; }
.tk-scanres { margin-top: 10px; padding: 14px 16px; border-radius: 12px; font-size: 16px; font-weight: 700; }
.tk-scanres--ok { background: #e8f5ee; color: #1c6b46; }
.tk-scanres--warn { background: #fdf4e6; color: #9a6a16; }
.tk-scanres--err { background: #fdeceb; color: #b5302a; }
.tk-rows { display: flex; flex-direction: column; }
.tk-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap;
  padding: 10px 0; border-top: 1px solid var(--shell-line, rgba(6,24,46,.1)); }
.tk-row:first-child { border-top: 0; }

/* ═══ ОПЛАТА (R4): публичный checkout /pay/* ═══ */
.pay-body { min-height: 100vh; margin: 0; display: flex; align-items: flex-start; justify-content: center;
  background: var(--bg, #eef2f7); padding: 24px 16px 48px; }
.pay-body > .pay-wrap { position: relative; z-index: 1; }   /* над фоном дизайн-кода (#formbg/#cosmos) */
.pay-logo { display: block; max-height: 60px; max-width: 70%; margin: 0 auto 10px; object-fit: contain; }
.pay-sub--pre { white-space: pre-line; }   /* переносы строк из шаблона текста (без HTML) */
.pay-result { margin: 8px 0 6px; }
.pay-wrap { width: 100%; max-width: 460px; }
.pay-card { background: var(--surface, #fff); border: 1px solid var(--line, rgba(6,24,46,.1));
  border-radius: 18px; padding: 26px 24px; box-shadow: 0 18px 50px rgba(6,24,46,.10); }
.pay-card--center { text-align: center; }
.pay-brand { font-weight: 800; letter-spacing: .2px; color: var(--accent, #2b6cb0); font-size: 15px; }
.pay-event { color: var(--mute, #5a6b7e); font-size: 13px; margin-top: 2px; }
.pay-test { display: inline-block; margin-top: 10px; font-size: 12px; font-weight: 600; color: #9a6a16;
  background: #fdf4e6; border-radius: 999px; padding: 3px 10px; }
.pay-title { font-size: 22px; font-weight: 800; color: var(--fg, #06182e); margin: 14px 0 2px; }
.pay-desc { color: var(--mute, #5a6b7e); font-size: 13px; margin-bottom: 6px; }
.pay-items { margin: 16px 0 8px; border-top: 1px solid var(--line, rgba(6,24,46,.1)); }
.pay-item { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0;
  border-bottom: 1px solid var(--line, rgba(6,24,46,.08)); }
.pay-item__t { color: var(--fg, #06182e); }
.pay-x { color: var(--mute, #5a6b7e); }
.pay-amt { font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.pay-promo { margin: 16px 0; }
.pay-promo-note { margin: 16px 0; font-size: 13px; color: var(--mute, #5a6b7e);
  padding: 8px 12px; border: 1px dashed var(--line, rgba(6,24,46,.2)); border-radius: 8px; }
.promo-tiers { max-height: 160px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px;
  border: var(--hairline) solid var(--line); border-radius: 8px; padding: 8px; }
.pay-label { display: block; font-size: 12px; color: var(--mute, #5a6b7e); margin-bottom: 6px; }
.pay-promo-row { display: flex; gap: 8px; }
.pay-in { flex: 1; min-width: 0; padding: 10px 12px; border-radius: 10px; font: inherit;
  border: 1px solid var(--line, rgba(6,24,46,.2)); background: var(--bg, #f6f8fb); color: var(--fg, #06182e); }
.pay-in:focus { outline: 2px solid var(--accent, #2b6cb0); outline-offset: 1px; }
.pay-msg { font-size: 12px; margin-top: 6px; }
.pay-msg[hidden] { display: none; }
.pay-msg--ok { color: #1f7a44; }
.pay-msg--err { color: #b5302a; }
.pay-totals { margin: 14px 0 6px; }
.pay-totals--mini { margin: 18px 0; }
.pay-row { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0;
  color: var(--mute, #5a6b7e); font-size: 14px; }
.pay-row[hidden] { display: none; }
.pay-row--disc { color: #1f7a44; }
.pay-row--total { color: var(--fg, #06182e); font-weight: 800; font-size: 18px; padding-top: 10px;
  border-top: 1px solid var(--line, rgba(6,24,46,.1)); margin-top: 4px; }
.pay-row--ref { justify-content: flex-end; color: var(--mute, #5a6b7e); font-size: 12px; padding-top: 2px; }
.pay-actions { margin-top: 18px; display: flex; flex-direction: column; gap: 10px; }
.pay-btn { width: 100%; text-align: center; padding: 13px 16px; font-size: 16px; font-weight: 700; }
.pay-sim { width: 100%; }
.pay-unavail { background: #fdf4e6; color: #9a6a16; border-radius: 10px; padding: 12px 14px; font-size: 13px; }
.pay-poll { margin-top: 12px; text-align: center; color: var(--mute, #5a6b7e); font-size: 13px; }
.pay-poll[hidden] { display: none; }
.pay-state { margin-top: 18px; text-align: center; border-radius: 12px; padding: 14px; font-weight: 700; }
.pay-state--ok { background: #e8f6ee; color: #1f7a44; }
.pay-state--bad { background: #fdeceb; color: #b5302a; }
.pay-foot { margin-top: 18px; color: var(--mute, #5a6b7e); font-size: 11.5px; line-height: 1.5; text-align: center; }
.pay-ico { font-size: 44px; line-height: 1; margin: 14px 0 6px; }
.pay-ico--ok { color: #1f7a44; }
.pay-ico--bad { color: #b5302a; }
.pay-sub { color: var(--mute, #5a6b7e); font-size: 14px; margin-bottom: 6px; }

/* ═══ Магазин в ЛК (R4) ═══ */
.shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; margin-top: 12px; }
.shop-item { display: flex; flex-direction: column; justify-content: space-between; gap: 10px;
  border: 1px solid var(--line, rgba(6,24,46,.12)); border-radius: 12px; padding: 14px; background: var(--surface, #fff); }
.shop-item__title { font-weight: 600; color: var(--fg, #06182e); }
.shop-item__buy { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  flex-wrap: wrap; border-top: 1px solid var(--line, rgba(6,24,46,.08)); padding-top: 10px; }
.shop-price { font-weight: 800; font-size: 18px; color: var(--fg, #06182e); font-variant-numeric: tabular-nums; }
/* Объёмные скидки в витрине ЛК: подсказка о порогах + поле количества. */
.shop-tier-hint { flex: 1 0 100%; line-height: 1.35; }
.shop-qty { display: inline-flex; align-items: center; gap: 6px; }
.shop-qty__inp { width: 64px; }
/* Виды витрины товаров: list (строки) / cards (по умолч.) / rich (с картинкой). */
.shop-item__img { width: 100%; height: 150px; object-fit: cover; border-radius: 8px; }
.shop--list { grid-template-columns: 1fr; }
.shop--list .shop-item { flex-direction: row; align-items: center; }
.shop--list .shop-item__main { flex: 1; }
.shop--list .shop-item__buy { border-top: none; padding-top: 0; flex: 0 0 auto; flex-direction: column; align-items: flex-end; gap: 6px; }
.shop-orders { display: flex; flex-direction: column; margin-top: 8px; }
.shop-order { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 10px 0; border-top: 1px solid var(--line, rgba(6,24,46,.1)); }
.shop-order:first-child { border-top: 0; }
.shop-order__main { min-width: 0; }

/* ═══ Админ-вкладка «Оплаты» (R4) ═══ */
.pay-urls { margin-top: 8px; display: flex; flex-direction: column; gap: 8px; }
.pay-url { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pay-url__k { font-size: 12px; font-weight: 600; color: var(--mute, #5a6b7e); min-width: 90px; }
.pay-url code { font-size: 12px; background: var(--bg, #f1f5f9); padding: 4px 8px; border-radius: 6px;
  word-break: break-all; color: var(--fg, #06182e); }
.pay-editor { margin-top: 14px; padding: 16px; border: 1px solid var(--line, rgba(6,24,46,.14));
  border-radius: 12px; background: var(--bg, #f7f9fc); }
.pay-editor[hidden] { display: none; }
/* Объёмные скидки: компактные строки порогов «от N шт — скидка». */
.pay-tier-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.pay-tier-row > span { color: var(--mute, #5a6b7e); font-size: 14px; }
.pay-tier-row .inp-xs { width: 88px; flex: 0 0 auto; }
.pay-tier-row .t-kind { width: auto; flex: 0 0 auto; }
.pay-tier-row .t-del { padding: 6px 10px; }
.pay-set { font-size: 11px; font-weight: 600; color: #1f7a44; }
.pay-sub2 { font-size: 12px; font-weight: 600; color: var(--mute, #5a6b7e); margin: 12px 0 4px;
  text-transform: uppercase; letter-spacing: .03em; }
/* .form-row задаёт display:grid/flex и перебивает UA-правило [hidden] → возвращаем. */
.form-row[hidden] { display: none; }

/* ═══ Виджет программы (встраивание в Тильду, /events/<slug>/program) ═══ */
.prg-body { margin: 0; background: var(--bg, #eef2f7); color: var(--fg, #06182e);
  font-family: 'Inter', system-ui, sans-serif; min-height: 100vh; }
.prg-app { max-width: 920px; margin: 0 auto; padding: 18px 16px 28px; }
.prg-embed .prg-app { padding-top: 12px; }
.prg-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.prg-top__title { font-size: 22px; font-weight: 800; }
.prg-dl { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 999px;
  border: 1px solid var(--line, rgba(6,24,46,.16)); background: var(--surface, #fff); color: var(--fg, #06182e);
  font: inherit; font-size: 13px; font-weight: 600; text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: border-color .16s ease, background .16s ease, color .16s ease, transform .12s ease; }
.prg-dl:hover { border-color: var(--accent, #2b6cb0); color: var(--accent, #2b6cb0); transform: translateY(-1px); }
.prg-dl svg { flex-shrink: 0; }
.prg-controls { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.prg-modes { display: inline-flex; border: 1px solid var(--line, rgba(6,24,46,.14)); border-radius: 999px; overflow: hidden; background: var(--surface, #fff); }
.prg-mode { border: 0; background: transparent; padding: 7px 14px; font: inherit; font-size: 13px; cursor: pointer; color: var(--mute, #5a6b7e); }
.prg-mode.is-active { background: var(--accent, #2b6cb0); color: #fff; }
.prg-search { position: relative; flex: 1; min-width: 200px; }
.prg-search__ic { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--mute, #5a6b7e); }
.prg-search input { width: 100%; box-sizing: border-box; padding: 9px 12px 9px 34px; border-radius: 10px;
  border: 1px solid var(--line, rgba(6,24,46,.2)); background: var(--surface, #fff); color: var(--fg, #06182e); font: inherit; }
.prg-search input:focus { outline: 2px solid var(--accent, #2b6cb0); outline-offset: 1px; }
.prg-filters { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.prg-chip { border: 1px solid var(--line, rgba(6,24,46,.16)); background: var(--surface, #fff); color: var(--fg, #06182e);
  border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 12.5px; cursor: pointer; }
.prg-chip.is-active { background: var(--accent, #2b6cb0); color: #fff; border-color: var(--accent, #2b6cb0); }
.prg-chip--type { font-style: italic; }
.prg-main { margin-top: 16px; }
.prg-group { margin-bottom: 22px; }
.prg-group__h { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--mute, #5a6b7e); padding-bottom: 6px; border-bottom: 2px solid var(--accent, #2b6cb0); margin-bottom: 4px; }
.prg-card { display: flex; gap: 14px; padding: 13px 0; border-bottom: 1px solid var(--line, rgba(6,24,46,.1)); }
.prg-card__time { min-width: 60px; font-variant-numeric: tabular-nums; font-weight: 700; color: var(--accent, #2b6cb0); font-size: 14px; padding-top: 1px; }
.prg-card__body { flex: 1; min-width: 0; }
.prg-card__head { display: flex; gap: 8px; flex-wrap: wrap; align-items: baseline; justify-content: space-between; }
.prg-card__title { font-size: 16px; font-weight: 600; margin: 0; }
.prg-badges { display: inline-flex; gap: 5px; flex-wrap: wrap; }
.prg-badge { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: var(--bg, #eef2f7);
  color: var(--mute, #5a6b7e); border: 1px solid var(--line, rgba(6,24,46,.1)); white-space: nowrap; }
.prg-badge--hall { color: var(--accent, #2b6cb0); }
.prg-badge--warn { background: #fdf4e6; color: #9a6a16; border-color: transparent; }
.prg-badge--reg { background: #e8f6ee; color: #1f7a44; border-color: transparent; }
.prg-card__desc { color: var(--mute, #5a6b7e); font-size: 13.5px; margin-top: 5px; line-height: 1.5; }
.prg-sps { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 9px; }
.prg-sp { display: flex; align-items: center; gap: 8px; }
.prg-sp__ph { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center; background: var(--accent, #2b6cb0);
  color: #fff; font-size: 13px; font-weight: 700; }
.prg-sp__txt { font-size: 13px; line-height: 1.25; }
.prg-sp__aff { display: block; color: var(--mute, #5a6b7e); font-size: 12px; }
.prg-card__link { display: inline-block; margin-top: 7px; font-size: 13px; color: var(--accent, #2b6cb0); text-decoration: none; }
.prg-none { color: var(--mute, #5a6b7e); padding: 20px 0; }
.prg-empty { text-align: center; padding: 48px 16px; }
.prg-empty__t { font-size: 17px; font-weight: 700; }
.prg-empty__s { color: var(--mute, #5a6b7e); margin-top: 6px; }
/* Поле email для создания ЛК спикеру (раздел «Спикеры») */
.sp-acc-email { min-width: 160px; }

/* Детальная программа в виджете (модераторы / блоки / доклады) */
.prg-detail { margin-top: 10px; padding-left: 12px; border-left: 2px solid var(--line, rgba(6,24,46,.12));
  display: flex; flex-direction: column; gap: 8px; }
.prg-mods { font-size: 13px; color: var(--mute, #5a6b7e); }
.prg-blocktheme { font-weight: 700; font-size: 13.5px; margin-top: 2px; }
.prg-talk__t { font-weight: 600; font-size: 14px; }
.prg-talk__tm { color: var(--accent, #2b6cb0); font-variant-numeric: tabular-nums; }
.prg-talk__auth { font-size: 12.5px; color: var(--fg, #06182e); margin-top: 2px; }
.prg-talk__desc { font-size: 12.5px; color: var(--mute, #5a6b7e); margin-top: 3px; line-height: 1.5; }
.prg-cred { color: var(--mute, #5a6b7e); font-weight: 400; }
.prg-foot { margin-top: 24px; text-align: center; color: var(--mute, #5a6b7e); font-size: 12px; }
.prg-foot a { color: var(--accent, #2b6cb0); text-decoration: none; }
.prg-skel__row { height: 56px; border-radius: 10px; margin-bottom: 10px;
  background: linear-gradient(90deg, var(--surface,#fff) 25%, var(--bg,#eef2f7) 50%, var(--surface,#fff) 75%);
  background-size: 400% 100%; animation: prg-shim 1.3s infinite; }
@keyframes prg-shim { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* ── Гибрид-скин программы для «стеклянных» дизайн-кодов (cosmos / glass) ──
   Базовый вид плоский и чистый (под остальные 8 стилей); для cosmos и glass
   добавляем матовое стекло как в Tilda-вставке: мягкий градиент-фон + фростед
   карточки групп и контролов. data-design ставится на <html> страницы виджета. */
[data-design="cosmos"] .prg-body,
[data-design="glass"] .prg-body {
  background:
    radial-gradient(900px 600px at 8% 2%, color-mix(in oklab, var(--accent) 16%, transparent), transparent 55%),
    radial-gradient(820px 620px at 96% 18%, color-mix(in oklab, var(--accent-mint, var(--accent)) 14%, transparent), transparent 55%),
    var(--bg);
}
[data-design="cosmos"] .prg-group,
[data-design="glass"] .prg-group {
  padding: 8px 18px 4px; border: 1px solid var(--line); border-radius: 18px;
  background: var(--surface);
  -webkit-backdrop-filter: blur(16px) saturate(150%); backdrop-filter: blur(16px) saturate(150%);
  box-shadow: 0 18px 44px -26px rgba(0,0,0,.45);
}
[data-design="cosmos"] .prg-modes, [data-design="glass"] .prg-modes,
[data-design="cosmos"] .prg-search input, [data-design="glass"] .prg-search input,
[data-design="cosmos"] .prg-dl, [data-design="glass"] .prg-dl {
  -webkit-backdrop-filter: blur(12px) saturate(140%); backdrop-filter: blur(12px) saturate(140%);
}
[data-design="cosmos"] .prg-card, [data-design="glass"] .prg-card { border-bottom-color: var(--line); }

.prg-snip { width: 100%; box-sizing: border-box; font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 12px; line-height: 1.5; border: 1px solid var(--line, rgba(6,24,46,.16)); border-radius: 10px;
  padding: 10px 12px; background: var(--bg, #f6f8fb); color: var(--fg, #06182e); resize: vertical; }

/* Редактор детальной программы (модераторы / блоки / доклады) */
.pd-list { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.pd-person { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.pd-person input { flex: 1; min-width: 120px; }
.pd-person .pd-role { flex: 0 0 auto; }
.pd-del { flex: 0 0 auto; padding: 5px 10px; }
.pd-block { border: 1px solid var(--line, rgba(6,24,46,.16)); border-radius: 10px; padding: 10px;
  background: var(--surface, #fff); }
.pd-theme { flex: 1; font-weight: 600; }
.pd-talks { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.pd-talk { border-left: 3px solid var(--line, rgba(6,24,46,.18)); padding: 6px 0 8px 10px; }
.pd-talk-head { display: flex; gap: 6px; align-items: center; }
.pd-talk-head .pd-time { flex: 0 0 88px; }
.pd-talk-head .pd-title { flex: 1; }
.pd-talk-sps { display: flex; flex-direction: column; gap: 5px; margin: 6px 0; }

/* Лимиты по категориям (квоты билетов) в редакторе сессии */
.quota-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 5px 0;
  border-bottom: 1px solid var(--line, rgba(6,24,46,.1)); }
.quota-row:last-child { border-bottom: 0; }
.quota-row__name { flex: 1; min-width: 140px; font-weight: 500; }
.quota-inp { width: 92px; }

/* Кадровщик промо-фото 16:9 (перетаскивание + масштаб) */
.crop-stage { position: relative; width: 100%; max-width: 520px; aspect-ratio: 16 / 9; margin-top: 12px;
  overflow: hidden; border-radius: 10px; background: #0b1322; cursor: grab; touch-action: none;
  border: 1px solid var(--line, rgba(6,24,46,.16)); user-select: none; }
.crop-stage:active { cursor: grabbing; }
.crop-stage img { position: absolute; max-width: none; user-select: none; -webkit-user-drag: none; }
.crop-zoom { display: flex; align-items: center; gap: 10px; max-width: 520px; }
.crop-zoom input { flex: 1; }

/* Менеджер промо-фото сессии (редактор программы) */
.promo-admin-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.promo-admin-cell { position: relative; width: 96px; height: 64px; border-radius: 8px; overflow: hidden;
  border: 1px solid var(--line, rgba(6,24,46,.16)); }
.promo-admin-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.promo-admin-del { position: absolute; top: 3px; right: 3px; width: 20px; height: 20px; border-radius: 50%;
  border: 0; background: rgba(8,12,20,.62); color: #fff; font-size: 14px; line-height: 1; cursor: pointer;
  display: grid; place-items: center; }

/* Редактор порядка блоков ЛК (раздел «Оформление») */
.lkord { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column;
  gap: 6px; max-width: 560px; }
.lkord__item { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 9px 12px; border: 1px solid var(--line, rgba(6,24,46,.16)); border-radius: 10px;
  background: var(--surface, #fff); }
.lkord__label { font-weight: 500; }
.lkord__btns { display: flex; gap: 6px; flex-shrink: 0; }
.lkord__btns .btn { padding: 4px 11px; line-height: 1; font-size: 15px; }

/* Хаб «Интеграции»: панель живого предпросмотра встраиваемого виджета */
.intg-prevwrap { border: 1px dashed var(--line, rgba(6,24,46,.22)); border-radius: 12px;
  padding: 10px; background: var(--surface, #fff); }
.intg-prev { width: 100%; min-height: 420px; border: 0; border-radius: 8px; background: #fff; display: block; }

/* Виджет входа в ЛК — ЗЕРКАЛО CSS из static/js/login-widget.js (для предпросмотра в
   админке: /event-admin CSP режет инлайн-<style>, поэтому классы нужны в файле). */
.pgl { --pgl-accent:#2b6cb0; --pgl-bg:#fff; --pgl-fg:#0a1e38; --pgl-mute:#5b6b80; --pgl-line:rgba(10,30,60,.16); --pgl-field:#fff;
  font-family: inherit; display: block; max-width: 420px; box-sizing: border-box; }
.pgl[data-pgl-theme="dark"] { --pgl-bg:#0e2238; --pgl-fg:#eaf1f9; --pgl-mute:#9fb0c4; --pgl-line:rgba(255,255,255,.18); --pgl-field:#13283f; }
.pgl * { box-sizing: border-box; }
.pgl-card { background: var(--pgl-bg); color: var(--pgl-fg); border: 1px solid var(--pgl-line); border-radius: 14px; padding: 20px; }
.pgl-card__title { font-size: 18px; font-weight: 700; margin: 0 0 6px; }
.pgl-card__text { font-size: 14px; color: var(--pgl-mute); margin: 0 0 14px; line-height: 1.45; }
.pgl-btn { display: block; width: 100%; text-align: center; text-decoration: none; cursor: pointer; border: 0; border-radius: 10px;
  padding: 12px 18px; font-size: 15px; font-weight: 600; background: var(--pgl-accent); color: #fff; font-family: inherit; }
.pgl-btn:hover { filter: brightness(1.07); }
.pgl-link { color: var(--pgl-accent); text-decoration: none; font-weight: 600; font-size: 15px; }
.pgl-form { display: flex; flex-direction: column; gap: 9px; }
.pgl-inp { width: 100%; padding: 11px 13px; border: 1px solid var(--pgl-line); border-radius: 10px; font-size: 15px;
  background: var(--pgl-field); color: var(--pgl-fg); font-family: inherit; }
.pgl-inp::placeholder { color: var(--pgl-mute); }
.pgl-alt { display: block; text-align: center; margin-top: 10px; color: var(--pgl-mute); text-decoration: none; font-size: 13px; }
.pgl-alt:hover { color: var(--pgl-accent); }

/* ═══════════════════════════════════════════════════════════════════════════
 * Тумблер (switch) — переиспользуемый переключатель вкл/выкл.
 * Разметка: <label class="switch"><input type="checkbox">
 *             <span class="switch__track"></span><span class="switch__thumb"></span></label>
 * ═══════════════════════════════════════════════════════════════════════════ */
.switch { position: relative; display: inline-flex; align-items: center; flex-shrink: 0;
  width: 46px; height: 26px; cursor: pointer; vertical-align: middle; }
.switch input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.switch__track { position: absolute; inset: 0; background: var(--surface-2);
  border: var(--hairline) solid var(--line-strong); border-radius: 999px;
  transition: background .18s ease, border-color .18s ease; }
.switch__thumb { position: absolute; top: 50%; left: 4px; transform: translateY(-50%);
  width: 16px; height: 16px; background: var(--mute); border-radius: 50%;
  transition: left .18s ease, background .18s ease; pointer-events: none; }
.switch input:checked ~ .switch__track { background: var(--accent-mint); border-color: var(--accent-mint); }
.switch input:checked ~ .switch__thumb { left: 24px; background: var(--on-accent); }
.switch input:focus-visible ~ .switch__track { box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent-mint) 35%, transparent); }
.switch input:disabled { cursor: not-allowed; }
.switch input:disabled ~ .switch__track { opacity: .45; }
/* Тумблер с подписью в ряд (используется в настройках вместо .form-checkbox) */
.switch-row { display: flex; align-items: flex-start; gap: 12px; margin-top: var(--space-3); }
.switch-row__txt { flex: 1; min-width: 0; }
.switch-row__txt b { display: block; font-size: 14px; font-weight: 600; color: var(--fg); }
.switch-row__txt span { display: block; font-size: var(--fs-sm); color: var(--mute); margin-top: 1px; }
label.switch-row__txt { cursor: pointer; }

/* ═══════════════════════════════════════════════════════════════════════════
 * Вкладка «Разделы»: модули мероприятия как карточки с тумблером.
 * ═══════════════════════════════════════════════════════════════════════════ */
.mod-list { display: flex; flex-direction: column; gap: var(--space-3); }
.mod-row { display: flex; align-items: flex-start; gap: var(--space-4); padding: var(--space-4);
  background: var(--surface-2); border: var(--hairline) solid var(--line);
  transition: border-color .18s ease, opacity .18s ease; }
.mod-row.is-off { opacity: .62; }
.mod-row.is-on { border-color: color-mix(in oklab, var(--accent-mint) 45%, var(--line)); }
.mod-row__main { flex: 1; min-width: 0; }
.mod-row__title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 15px; font-weight: 600; color: var(--fg); }
.mod-row__ico { font-size: 18px; line-height: 1; }
.mod-row__desc { color: var(--mute); font-size: var(--fs-sm); margin-top: 3px; line-height: 1.45; }
.mod-row__link { display: inline-flex; align-items: center; gap: 5px; margin-top: 9px;
  font-size: var(--fs-sm); font-weight: 600; color: var(--accent-warm); }
.mod-row__link:hover { text-decoration: underline; }
.mod-row__sw { padding-top: 1px; }

/* ═══════════════════════════════════════════════════════════════════════════
 * Конструктор форм регистрации (стиль Google Forms): билдер + живое превью.
 * ═══════════════════════════════════════════════════════════════════════════ */
/* Панель выбора формы (чипы форм + создание) */
.fb-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: var(--space-4); }
.fb-chip { display: inline-flex; align-items: center; gap: 7px; padding: 8px 13px; cursor: pointer;
  background: var(--surface); border: var(--hairline) solid var(--line-strong); color: var(--fg);
  font-size: 14px; font-family: var(--font-sans); border-radius: 9px; transition: border-color .15s, background .15s; }
.fb-chip:hover { border-color: var(--accent-warm); }
.fb-chip.is-active { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.fb-chip__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent-mint); flex-shrink: 0; }
.fb-chip__dot.is-off { background: var(--accent-amber); }
.fb-chip.is-active .fb-chip__dot { background: var(--on-accent); }

/* Под-вкладки редактора формы */
.fb-tabs { display: flex; gap: 4px; border-bottom: var(--hairline) solid var(--line); margin-bottom: var(--space-4); flex-wrap: wrap; }
.fb-tab { padding: 9px 16px; cursor: pointer; background: transparent; border: 0;
  border-bottom: 2px solid transparent; color: var(--mute); font-size: 14px; font-weight: 600;
  font-family: var(--font-sans); margin-bottom: -1px; }
.fb-tab:hover { color: var(--fg); }
.fb-tab.is-active { color: var(--accent); border-bottom-color: var(--accent); }
.fb-pane { display: none; }
.fb-pane.is-active { display: block; }

/* Сетка «билдер + живое превью» */
.fb-build { display: grid; grid-template-columns: 1fr minmax(300px, 380px); gap: var(--space-4); align-items: start; }
@media (max-width: 920px) { .fb-build { grid-template-columns: 1fr; } }
.fb-preview-col { position: sticky; top: 12px; }
@media (max-width: 920px) { .fb-preview-col { position: static; } }

/* Заблокированное ядро анкеты (ФИО/email/организация) */
.fb-core { border: var(--hairline) dashed var(--line-strong); padding: var(--space-3) var(--space-4);
  background: var(--surface-2); margin-bottom: var(--space-3); }
.fb-core__head { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); color: var(--mute); margin-bottom: 8px; }
.fb-core__list { display: flex; flex-wrap: wrap; gap: 6px; }
.fb-core__item { display: inline-flex; align-items: center; gap: 5px; font-size: 13px;
  padding: 4px 10px; background: var(--surface); border: var(--hairline) solid var(--line); color: var(--fg); }

/* Карточка вопроса (поля анкеты) */
.fb-q { background: var(--surface); border: var(--hairline) solid var(--line-strong);
  border-left: 3px solid var(--accent); padding: var(--space-3) var(--space-4); margin-bottom: var(--space-3); }
.fb-q.is-dragging { opacity: .5; }
.fb-q__head { display: flex; align-items: center; gap: 10px; }
.fb-q__grip { cursor: grab; color: var(--mute); font-size: 16px; line-height: 1; flex-shrink: 0; user-select: none; }
.fb-q__grip:active { cursor: grabbing; }
.fb-q__label { flex: 1; min-width: 0; font-weight: 600; font-size: 15px !important; }
.fb-q__type { flex: 0 0 auto; width: auto !important; min-width: 200px; max-width: 230px; padding: 8px 10px !important; font-size: 13px !important; }
.fb-q__del { flex-shrink: 0; padding: 6px 9px !important; line-height: 1; }
.fb-q__opts { margin: 10px 0 4px; padding-left: 26px; display: flex; flex-direction: column; gap: 6px; }
.fb-q__opt { display: flex; align-items: center; gap: 8px; }
.fb-q__opt-mark { color: var(--mute); font-size: 14px; flex-shrink: 0; }
.fb-q__opt input { flex: 1; padding: 7px 10px !important; font-size: 14px !important; }
.fb-q__opt-del { border: 0; background: transparent; color: var(--mute); cursor: pointer; font-size: 17px; line-height: 1; padding: 0 4px; flex-shrink: 0; }
.fb-q__opt-del:hover { color: var(--accent-coral); }
.fb-q__foot { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 12px;
  padding-top: 10px; border-top: var(--hairline) solid var(--line); }
.fb-q__help { flex: 1; min-width: 160px; padding: 7px 10px !important; font-size: 13px !important; }
.fb-q__req { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--mute); cursor: pointer; white-space: nowrap; }
.fb-q__saved { font-size: var(--fs-xs); color: var(--accent-mint); opacity: 0; transition: opacity .2s; }
.fb-q__saved.is-on { opacity: 1; }

/* Кнопка добавления вопроса + меню типов */
.fb-add { position: relative; }
.fb-add__menu { position: absolute; left: 0; top: 100%; z-index: 20; margin-top: 6px; min-width: 280px;
  background: var(--surface); border: var(--hairline) solid var(--line-strong); box-shadow: var(--shadow-md);
  padding: 6px; max-height: 360px; overflow: auto; }
.fb-add__item { display: flex; align-items: center; gap: 11px; width: 100%; text-align: left;
  padding: 9px 11px; background: transparent; border: 0; cursor: pointer; color: var(--fg); font-family: var(--font-sans); }
.fb-add__item:hover { background: var(--surface-2); }
.fb-add__item-ico { font-size: 17px; width: 22px; text-align: center; flex-shrink: 0; }
.fb-add__item-txt b { display: block; font-size: 14px; font-weight: 600; }
.fb-add__item-txt span { display: block; font-size: 12px; color: var(--mute); }

/* Живое превью анкеты (как видит участник) */
.fb-preview { border: var(--hairline) solid var(--line); background: var(--surface); color: var(--fg); padding: var(--space-4); }
.fb-preview__cap { display: flex; align-items: center; gap: 7px; font-family: var(--font-mono);
  font-size: var(--fs-xs); letter-spacing: .07em; text-transform: uppercase; color: var(--mute); margin-bottom: var(--space-3); }
.fb-preview__cap::before { content: "👁"; font-size: 13px; }
.fb-preview__title { font-size: 18px; font-weight: 600; margin: 0 0 4px; }
.fb-preview__desc { font-size: 13px; color: var(--mute); margin: 0 0 14px; }
.fb-pf { padding: 13px 0; margin: 0; }
.fb-pf:first-child { padding-top: 0; }
.fb-pf + .fb-pf { border-top: var(--hairline) solid var(--line); }   /* черточки между пунктами */
.fb-pf__lbl { display: block; font-size: 13px; font-weight: 600; color: var(--fg); margin-bottom: 5px; }
.fb-pf__req { color: var(--accent-coral); margin-left: 2px; }
.fb-pf__ctrl { width: 100%; padding: 9px 11px; font-size: 14px; background: var(--surface-2);
  border: var(--hairline) solid var(--line); color: var(--mute); pointer-events: none; }
.fb-pf__ctrl--ta { min-height: 58px; }
.fb-pf__opt { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--fg); margin: 4px 0; }
.fb-pf__opt-mark { width: 15px; height: 15px; border: var(--hairline) solid var(--line-strong); flex-shrink: 0; }
.fb-pf__opt-mark--radio { border-radius: 50%; }
.fb-pf__hint { font-size: 12px; color: var(--mute); margin-top: 3px; }
.fb-pf__consent { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; color: var(--mute); }
.fb-empty-q { text-align: center; color: var(--mute); font-size: 14px; padding: 22px; border: var(--hairline) dashed var(--line-strong); margin-bottom: var(--space-3); }
.fb-q__optadd { align-self: flex-start; }

/* Редактор тарифов билета (вкладка «Оплата участия») */
.fb-tiers { display: flex; flex-direction: column; gap: 8px; }
.fb-tier-card { border: var(--hairline) solid var(--line); border-radius: var(--radius-sm);
  padding: var(--space-3); display: flex; flex-direction: column; gap: 6px; background: var(--surface); }
.lk2-page .fb-tier-desc, .lk2-page .fb-tier-image { padding: 7px 10px !important; font-size: 13px !important; }
.fb-tier-row { display: flex; align-items: center; gap: 8px; }
/* .lk2-page-префикс обязателен: иначе `.lk2-page input[type=text]{width:100%}` (0,2,1)
   перебивает ширину тарифных полей (0,2,0) → цена раздувалась на всю строку, имя схлопывалось. */
.lk2-page .fb-tier-row .fb-tier-name { flex: 1 1 auto; width: auto; min-width: 0; padding: 8px 10px; font-size: 14px; }
.lk2-page .fb-tier-row .fb-tier-price { flex: 0 0 120px; width: 120px; padding: 8px 10px; font-size: 14px; text-align: right; }
.fb-tier-cur { color: var(--mute); font-size: 14px; flex-shrink: 0; }
/* Ограничения доступа к тарифу (список/код/время) в редакторе формы. */
.tier-move { background: none; border: var(--hairline) solid var(--line); border-radius: 6px; cursor: pointer;
  width: 26px; height: 26px; line-height: 1; flex: 0 0 auto; color: var(--fg); }
.tier-move:disabled { opacity: .4; cursor: default; }
.tier-restrict { margin-top: 6px; padding: 10px; border: 1px dashed var(--line); border-radius: var(--radius-sm); }
.tier-restrict__h { font-size: 12px; color: var(--mute); margin-bottom: 6px; }
.tier-restrict__row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.tier-restrict__row[hidden] { display: none; }   /* класс display:flex иначе перебивает hidden */
.tier-restrict__row .inc-lbl { flex: 1; margin: 0; }   /* бонусы тарифа: чекбокс товара + кол-во */
.inc-qty { width: 64px; }
.tier-restrict__row > span { color: var(--mute); font-size: 13px; }
.r-box { margin: 2px 0 8px 22px; }
.r-box[hidden] { display: none; }
.r-list-count { font-size: 13px; color: var(--mute); }
.lk2-page .tier-restrict__row input[type="datetime-local"] { width: auto; flex: 1 1 170px; min-width: 0; }
.lk2-page .r-narrow { width: 110px !important; flex: 0 0 110px; }
.fb-paystatus { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: var(--space-3);
  padding: 10px 14px; border: var(--hairline) solid var(--line); font-size: var(--fs-sm); }
.fb-paystatus[hidden] { display: none; }   /* класс display:flex иначе перебивает атрибут hidden */
.fb-paystatus__txt { flex: 1; min-width: 200px; color: var(--fg); }
.fb-paystatus .btn { flex-shrink: 0; }
.fb-paystatus--ok { border-color: var(--accent-mint); background: color-mix(in oklab, var(--accent-mint) 9%, var(--surface)); }
.fb-paystatus--warn { border-color: var(--accent-amber); background: color-mix(in oklab, var(--accent-amber) 10%, var(--surface)); }
/* Превью чипов выбора в конструкторе (статичные, как на публичной форме).
   Маркер: круг = один выбор (radio), квадрат = несколько (checkbox). */
.fb-opt--pf { cursor: default; }
.fb-opt--radio::before { border-radius: 50%; }
.fb-opt--check::before { border-radius: 5px; }
/* Оформление анкеты: строка загрузки файла + превью логотипа/фона. */
.fb-upl { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fb-upl input[type="file"] { flex: 1 1 180px; min-width: 0; font-size: 13px; }
.fb-brand-thumb { display: block; max-height: 60px; max-width: 220px; object-fit: contain;
  border: var(--hairline) solid var(--line); border-radius: var(--radius-sm); background: var(--surface-2); padding: 4px; }
/* Две колонки для редактора страниц после оплаты (успех/ошибка). */
.pp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 720px) { .pp-grid { grid-template-columns: 1fr; } }

/* ═══ Галерея «Оформление» (дизайн-коды) ═══ */
.dz-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: var(--space-3); }
.dz-theme-tg { display: inline-flex; align-items: center; gap: 6px; }
.dz-tg.is-active { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.dz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--space-4); }
.dz-card { display: flex; flex-direction: column; gap: 8px; padding: var(--space-3);
  background: var(--surface); border: var(--hairline) solid var(--line); transition: border-color .15s; }
.dz-card.is-chosen { border-color: var(--accent); box-shadow: 0 0 0 2px color-mix(in oklab, var(--accent) 40%, transparent); }
.dz-card__head { display: flex; align-items: baseline; gap: 8px; }
.dz-card__head b { font-size: 15px; font-weight: 600; }
.dz-num { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--mute); }
.dz-vibe { font-size: var(--fs-sm); color: var(--mute); line-height: 1.45; min-height: 2.6em; }
.dz-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.dz-tag { display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-mono);
  font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--mute);
  border: var(--hairline) solid var(--line); padding: 3px 7px; }
.dz-tag__dot { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
.dz-preview { padding: 14px; border: var(--hairline) solid var(--line); border-radius: 10px; overflow: hidden; }
.dz-preview .card { margin-bottom: 0; }
.dz-card__foot { display: flex; flex-direction: column; gap: 7px; margin-top: auto; }
.dz-fonts { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--mute); }

/* Инлайн-редактор зала (раздел «Программа») — без inline style="" (CSP strict). */
.hall-edit { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.hall-edit .hall-ed-name { width: auto; max-width: 220px; padding: 6px 9px; font-size: 14px; }
.hall-edit .hall-ed-cap { width: 80px; padding: 6px 9px; font-size: 14px; }

/* Раздел «Вставки» — без inline style="" (CSP strict): моноширинный редактор + превью. */
.lk2-page .embed-src { font-family: var(--font-mono); font-size: 13px; line-height: 1.5; white-space: pre; }
.embed-pv { width: 100%; height: 520px; border: var(--hairline) solid var(--line); background: #fff; }
/* Плашка «раздел для продвинутых» */
.adv-note { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; margin-bottom: var(--space-4);
  border: var(--hairline) solid var(--accent-amber); background: color-mix(in oklab, var(--accent-amber) 9%, var(--surface)); }
.adv-note__ico { font-size: 18px; line-height: 1.3; flex-shrink: 0; }
.adv-note b { color: var(--fg); }
.adv-note span { color: var(--mute); font-size: var(--fs-sm); }

/* Аккордеон-секции в карточке партнёра (снижает перегруз: разделы свёрнуты). */
.ep-sect { border: var(--hairline) solid var(--line); margin-top: var(--space-3); }
.ep-sect > summary { cursor: pointer; padding: 11px 14px; font-weight: 600; font-size: 15px; color: var(--fg);
  list-style: none; display: flex; align-items: center; gap: 9px; background: var(--surface-2); }
.ep-sect > summary::-webkit-details-marker { display: none; }
.ep-sect > summary::before { content: "▸"; color: var(--mute); transition: transform .15s ease; }
.ep-sect[open] > summary::before { transform: rotate(90deg); }
.ep-sect__body { padding: 14px; }
