/* Lumen — слой полировки поверх styles.css (глубина + микровзаимодействия + motion).
   Только визуальные улучшения, без изменения логики/разметки. Уважает prefers-reduced-motion.
   Цель: поднять уже зрелую CRM до «живого премиума» консистентно на всех экранах. */

/* ГЛОБАЛЬНОЕ ПРАВИЛО ПЕРЕНОСОВ: ни одного «висячего» слова на отдельной строке.
   balance — заголовки (строки равной длины, слово не вылетает вниз одно);
   pretty  — абзацы/подписи (браузер не оставляет одинокое слово последней строкой). */
h1, h2, h3, h4, h5, h6,
.ha-title, .sh-h-t, .plo-h1, .lc-name, .pc2-name, .pd2-name,
[class*="-title"], [class*="-name"], [class*="-head"] > b, .modal-hd b {
  text-wrap: balance;
}
p, li, .sub, .muted, .sd, .sl, .lc-hint, .lc-sub, .card-sub, .empty, figcaption,
.pc2-loc, .prpop-l, .cmp-ai-fw, .cmp-ai-note, .set-row .sd {
  text-wrap: pretty;
}

:root {
  --pol-ease: cubic-bezier(.22, .61, .36, 1);
  --pol-sh-1: 0 1px 2px rgba(20, 19, 17, .045), 0 2px 8px rgba(20, 19, 17, .05);
  --pol-sh-2: 0 6px 18px rgba(20, 19, 17, .08), 0 16px 40px rgba(20, 19, 17, .10);
  --pol-accent-soft: color-mix(in srgb, var(--accent, #1a1815) 8%, transparent);
  --pol-accent-line: color-mix(in srgb, var(--accent, #1a1815) 16%, transparent);
  /* ── фирменное шампань-золото «Ателье» (акценты, не заливка) ── */
  --gold: #c9a25a;
  --gold-soft: #d6c7a8;
  --pol-gold-line: color-mix(in srgb, var(--gold) 34%, transparent);
  --pol-gold-glow: 0 0 26px -10px color-mix(in srgb, var(--gold) 65%, transparent);
}
/* золотую тень карточек чуть теплее */
.ov-w:hover, .ovx-kcard:hover { box-shadow: var(--pol-sh-2), 0 0 0 1px var(--pol-gold-line); }

/* ── КАРТОЧКИ: глубина + мягкий подъём при наведении ── */
.ov-w, .card, .glass, .ovx-kcard {
  transition: transform .30s var(--pol-ease), box-shadow .30s var(--pol-ease), border-color .30s var(--pol-ease);
}
.ov-w { box-shadow: var(--pol-sh-1); }
.ov-w:hover, .ovx-kcard:hover {
  transform: translateY(-3px);
  box-shadow: var(--pol-sh-2);
}
/* интерактивные карточки-строки задач/лидов — тонкий отклик */
.qfab-act:hover, .ov-seq-node:hover, .ov-cmp-row:hover { transform: translateY(-1px); }

/* ── НАВИГАЦИЯ: плавный hover + акцент-бар активного пункта ── */
.nav-item, .nav-subitem {
  position: relative;
  border-radius: 10px;
  transition: background .2s var(--pol-ease), color .2s var(--pol-ease), transform .14s var(--pol-ease);
}
.nav-item:hover, .nav-subitem:hover { background: var(--pol-accent-soft); }
.nav-item:active, .nav-subitem:active { transform: scale(.985); }
.nav-item.active { background: color-mix(in srgb, var(--accent, #1a1815) 11%, transparent); }
.nav-item.active::before {
  content: ''; position: absolute; left: 3px; top: 22%; bottom: 22%;
  width: 3px; border-radius: 3px;
  background: linear-gradient(180deg, var(--gold-soft), var(--gold));
  box-shadow: 0 0 10px -2px color-mix(in srgb, var(--gold) 60%, transparent);
  animation: polBar .32s var(--pol-ease) both;
}
@keyframes polBar { from { transform: scaleY(0); opacity: 0 } to { transform: scaleY(1); opacity: 1 } }

/* ── КНОПКИ: подъём + отклик нажатия + фокус-кольцо ── */
.btn {
  transition: transform .14s var(--pol-ease), box-shadow .22s var(--pol-ease), filter .2s var(--pol-ease), background .2s var(--pol-ease);
}
.btn:hover { transform: translateY(-1px); filter: brightness(1.03); }
.btn:active { transform: translateY(0) scale(.975); }
.btn:focus-visible { outline: 2px solid var(--pol-gold-line); outline-offset: 2px; }
.btn-accent:hover { box-shadow: 0 6px 18px color-mix(in srgb, var(--accent, #1a1815) 24%, transparent), var(--pol-gold-glow); }

/* выделенные чипы/табы — тёплая золотая рамка вместо жёсткой чёрной */
.chip-t.on, .bill-plan.on, .tab.on, [class*="chip"].on { border-color: var(--pol-gold-line) !important; }

/* ── ПОЛЯ ВВОДА: плавный фокус с мягким кольцом ── */
input, textarea, select {
  transition: border-color .2s var(--pol-ease), box-shadow .2s var(--pol-ease), background .2s var(--pol-ease);
}
input:focus, textarea:focus, select:focus {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--gold) 20%, transparent);
  border-color: var(--pol-gold-line) !important;
}

/* ── ЗАГОЛОВКИ РАЗДЕЛОВ: чуть больше воздуха и характера ── */
.page-title { letter-spacing: .005em; }

/* ── АТЕЛЬЕ: крупные числа-герои — серифные (Cormorant), тихая роскошь ── */
.bal-amt, .cff-v, .ovx-kc-v, .cnt {
  font-family: 'Cormorant', Georgia, serif !important;
  font-weight: 500; letter-spacing: .01em;
}
/* заголовки кастомных карточек — чуть теплее и с воздухом */
.card-title { letter-spacing: .12em; }

/* ── СМЕНА РАЗДЕЛА: мягкое проявление контента (тонко, не мешает ре-рендеру) ── */
@media (prefers-reduced-motion: no-preference) {
  #app .page-title { animation: polFade .4s var(--pol-ease) both; }
}
@keyframes polFade { from { opacity: 0; transform: translateY(4px) } to { opacity: 1; transform: none } }

/* ── СКРОЛЛБАР: тонкий, в палитре ── */
* { scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--ink, #141311) 22%, transparent) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--ink, #141311) 18%, transparent);
  border-radius: 10px; border: 2px solid transparent; background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--ink, #141311) 34%, transparent); background-clip: padding-box; }

/* ── УВАЖЕНИЕ К prefers-reduced-motion ── */
@media (prefers-reduced-motion: reduce) {
  .ov-w, .ovx-kcard, .qfab-act, .ov-seq-node, .ov-cmp-row, .btn, .nav-item, .nav-subitem { transition: none !important; }
  .ov-w:hover, .ovx-kcard:hover, .btn:hover, .qfab-act:hover, .ov-seq-node:hover, .ov-cmp-row:hover { transform: none !important; }
  .nav-item.active::before, #app .page-title { animation: none !important; }
}

/* ---------- Гейт баланса (продление аренды номеров) ---------- */
.modal-bd.bg-block { background: rgba(24, 22, 20, .58); backdrop-filter: blur(6px); }
#billingGate .modal { border-top: 3px solid var(--accent, #b8863c); }
.bg-badge { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; margin-bottom: 6px; }
.bg-badge.bg-soon { background: #f4ecd8; color: #8a6d1f; }
.bg-badge.bg-overdue { background: #fbe6d6; color: #b3541e; }
.bg-badge.bg-suspended { background: #f7d9d9; color: #b02a2a; }
.bg-amt { display: flex; justify-content: space-between; align-items: center; gap: 14px; background: var(--bg-2, #f6f2ea); border: 1px solid var(--stroke, #e5ddcf); border-radius: 14px; padding: 14px 16px; margin: 4px 0 12px; }
.bg-amt-n { font-family: var(--serif, Cormorant, Georgia, serif); font-size: 30px; font-weight: 700; line-height: 1; color: var(--ink, #23201c); }
.bg-amt-n span { font-family: inherit; font-size: 14px; font-weight: 500; opacity: .6; margin-left: 2px; }
.bg-amt-l { font-size: 11.5px; color: var(--muted, #8a8378); margin-top: 5px; }
.bg-amt-due { text-align: right; }
.bg-amt-d { font-weight: 600; color: var(--ink, #23201c); margin-top: 3px; }
.bg-claim { font-size: 12.5px; color: #6d8a4f; background: #eef4e3; border-radius: 10px; padding: 9px 12px; margin-bottom: 12px; }
#billingGate .m-actions { display: flex; gap: 8px; flex-wrap: wrap; }
#billingGate .btn-ghost { background: transparent; border: 1px solid var(--stroke, #e5ddcf); color: var(--muted, #8a8378); }

/* ---------- Карта объектов (Leaflet, стиль Ателье) ---------- */
#prMap .leaflet-container { font-family: inherit; background: #eef0ea; }
.prpin { cursor: pointer; }   /* весь 34×34 div иконки — хит-зона (dot/pulse = pointer-events:none) */
.prpin-dot { position: absolute; left: 50%; top: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; pointer-events: none; border-radius: 50%; background: var(--accent, #b8863c); border: 2.5px solid #fff; box-shadow: 0 2px 6px rgba(70, 55, 25, .45); z-index: 2; }
.prpin-pulse { position: absolute; left: 50%; top: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: 50%; background: var(--accent, #b8863c); opacity: .5; pointer-events: none; animation: prpinp 2.2s ease-out infinite; }
@keyframes prpinp { 0% { transform: scale(1); opacity: .5; } 70% { transform: scale(3.2); opacity: 0; } 100% { opacity: 0; } }
.leaflet-popup-content-wrapper { border-radius: 16px; box-shadow: 0 18px 52px -12px rgba(40, 32, 15, .34), 0 2px 8px rgba(40,32,15,.1); padding: 0; overflow: hidden; border: 1px solid rgba(255,255,255,.5); }
.leaflet-popup-content { margin: 0; width: 252px !important; }
.leaflet-popup-tip { box-shadow: 0 8px 20px rgba(40, 32, 15, .18); }
.prpop-wrap .leaflet-popup-content-wrapper { animation: prpopIn .26s cubic-bezier(.2,.7,.3,1); }
@keyframes prpopIn { from { opacity: 0; transform: translateY(8px) scale(.97); } to { opacity: 1; transform: none; } }
.prpop-img { position: relative; height: 132px; background-size: cover; background-position: center; }
.prpop-imgsh { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.28) 0%, transparent 34%, transparent 62%, rgba(0,0,0,.14) 100%); }
.prpop-roi { position: absolute; left: 10px; bottom: 10px; z-index: 2; display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 750; color: #fff; background: linear-gradient(135deg, #d9822b, #b8501c); padding: 4px 9px 4px 7px; border-radius: 20px; box-shadow: 0 4px 12px rgba(180,80,28,.4); backdrop-filter: blur(2px); }
.prpop-roi svg { width: 13px; height: 13px; }
.prpop-b { padding: 12px 14px 14px; }
.prpop-n { font-family: var(--serif, Cormorant, Georgia, serif); font-size: 19px; font-weight: 700; color: #23201c; line-height: 1.14; letter-spacing: .1px; }
.prpop-l { display: flex; align-items: center; gap: 4px; font-size: 11.5px; color: #8a8378; margin-top: 4px; }
.prpop-l svg { width: 12px; height: 12px; flex: 0 0 auto; opacity: .7; }
.prpop-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.prpop-chip { font-size: 10.5px; font-weight: 650; color: #6b6459; background: #f4efe4; border: 1px solid #ebe3d2; padding: 3px 8px; border-radius: 7px; white-space: nowrap; }
.prpop-hook { font-size: 11.5px; color: #7c756a; line-height: 1.42; margin-top: 9px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.prpop-p { font-size: 15px; font-weight: 750; color: var(--accent, #b8863c); margin: 10px 0 11px; }
.prpop-acts { display: flex; flex-direction: column; gap: 6px; }
.prpop-open, .prpop-hydrate, .prpop-cmp { width: 100%; justify-content: center; box-sizing: border-box; }
.prpop-cmp svg { width: 13px; height: 13px; }
:root[data-night] .leaflet-popup-content-wrapper { background: #14110c; border-color: rgba(255,255,255,.08); }
:root[data-night] .prpop-n { color: #f0e9dc; }
:root[data-night] .prpop-chip { background: #241f16; border-color: #332c1f; color: #b8ad99; }

/* ---------- Карта объектов: стиль Ателье на бесплатных OSM-тайлах ---------- */
.prmap-atelier .leaflet-tile-pane { filter: grayscale(.82) sepia(.14) brightness(1.05) contrast(.9) saturate(.85); }
.prmap-atelier .leaflet-control-zoom a { background: #fffdf9; color: #6a5a2f; border: 1px solid #e5ddcf; font-weight: 700; }
.prmap-atelier .leaflet-control-zoom a:hover { background: var(--accent, #b8863c); color: #fff; }
.prpin:hover .prpin-dot { transform: translate(-50%,-50%) scale(1.35); }
.prpin-dot { transition: transform .18s cubic-bezier(.34,1.56,.64,1); }

/* ---------- Кастомные стрелки number-инпутов (стиль Ателье, вся CRM) ---------- */
input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
input[type=number] { -moz-appearance: textfield; }
.num-step { position: relative; display: inline-block; }
.num-step > input[type=number] { padding-right: 26px !important; width: 100%; }
.num-step-btns { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 1px; z-index: 2; }
.num-step-btns button { width: 18px; height: 13px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--stroke, #e5ddcf); background: var(--bg-2, #f6f2ea); color: var(--accent, #b8863c); border-radius: 4px; cursor: pointer; padding: 0; transition: background .12s, color .12s; }
.num-step-btns button:hover { background: var(--accent, #b8863c); color: #fff; border-color: var(--accent, #b8863c); }
.num-step-btns button svg { width: 9px; height: 9px; }
.num-step-btns .num-up svg { transform: rotate(-90deg); }
.num-step-btns .num-dn svg { transform: rotate(90deg); }
.num-step-btns .num-up { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.num-step-btns .num-dn { border-top-left-radius: 0; border-top-right-radius: 0; }

/* ---------- Сверка наличия юнитов: превью diff ---------- */
.rec-diff { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.rec-diff > div { background: var(--bg-2, #f6f2ea); border: 1px solid var(--stroke, #e5ddcf); border-radius: 12px; padding: 12px 14px; font-size: 13px; line-height: 1.5; }
.rec-diff b { font-size: 20px; }

/* ---------- Журнал истории карточки объекта ---------- */
.pd-hist { margin-top: 14px; border-top: 1px solid var(--stroke, #e5ddcf); padding-top: 10px; }
.pd-hist > summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--muted, #8a8378); display: flex; align-items: center; gap: 6px; list-style: none; }
.pd-hist > summary::-webkit-details-marker { display: none; }
.pd-hist > summary svg { width: 14px; height: 14px; }
.pd-hist-list { margin-top: 10px; display: flex; flex-direction: column; gap: 7px; }
.pd-hist-row { display: flex; gap: 10px; font-size: 12px; align-items: baseline; }
.pd-hist-at { color: var(--muted, #8a8378); white-space: nowrap; font-variant-numeric: tabular-nums; flex: 0 0 auto; }
.pd-hist-ac { color: var(--ink, #23201c); flex: 1; }
.pd-hist-src { font-size: 11px; }

/* ---------- Лайтбокс-галерея фото объекта ---------- */
.lg-ov { position: fixed; inset: 0; z-index: 9999; background: rgba(22,20,17,.94); display: grid; grid-template-columns: 64px 1fr 64px; grid-template-rows: 1fr auto auto; gap: 8px; padding: 24px 16px 16px; animation: lgIn .18s ease; }
@keyframes lgIn { from { opacity: 0 } to { opacity: 1 } }
.lg-stage { grid-column: 2; grid-row: 1; display: flex; align-items: center; justify-content: center; min-height: 0; }
.lg-img { max-width: 100%; max-height: 78vh; border-radius: 12px; box-shadow: 0 20px 60px rgba(0,0,0,.5); object-fit: contain; }
.lg-nav { grid-row: 1; align-self: center; width: 52px; height: 52px; border-radius: 50%; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.22); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background .15s; }
.lg-nav:hover { background: var(--accent, #b8863c); border-color: var(--accent, #b8863c); }
.lg-nav svg { width: 22px; height: 22px; }
.lg-prev { grid-column: 1; } .lg-prev svg { transform: rotate(180deg); }
.lg-next { grid-column: 3; } .lg-next svg { transform: none; }
.lg-close { position: absolute; top: 16px; right: 20px; width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.22); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.lg-close:hover { background: rgba(255,255,255,.2); }
.lg-close svg { width: 18px; height: 18px; }
.lg-count { grid-column: 2; grid-row: 2; text-align: center; color: rgba(255,255,255,.75); font-size: 13px; font-variant-numeric: tabular-nums; }
.lg-strip { grid-column: 1 / -1; grid-row: 3; display: flex; gap: 8px; overflow-x: auto; padding: 6px 8px; scrollbar-width: thin; justify-content: safe center; }
.lg-th { flex: 0 0 auto; width: 76px; height: 52px; border-radius: 8px; background-size: cover; background-position: center; cursor: pointer; opacity: .5; border: 2px solid transparent; transition: opacity .15s, border-color .15s; }
.lg-th:hover { opacity: .85; }
.lg-th.on { opacity: 1; border-color: var(--accent, #b8863c); }
@media (max-width: 640px) { .lg-ov { grid-template-columns: 0 1fr 0; padding: 16px 4px 10px; } .lg-nav { position: absolute; z-index: 2; } .lg-prev { left: 8px; } .lg-next { right: 8px; } }

/* ---------- Сплит-режим карты: список слева, карта справа ---------- */
.pr-split { display: grid; grid-template-columns: 360px minmax(0,1fr); gap: 14px; height: calc(100vh - 240px); min-height: 500px; }
@media (max-width: 900px) { .pr-split { grid-template-columns: 1fr; height: auto; } .pr-split-map { height: 60vh; } }
.pr-split-list { overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding-right: 4px; scrollbar-width: thin; }
.pr-split-map { position: relative; border-radius: 16px; overflow: hidden; min-height: 520px; border: 1px solid var(--stroke, #e5ddcf); background: var(--bg-2, #f6f2ea); }
.pr-split-map #prMap { height: 100%; width: 100%; min-height: 520px; }
.prm-row { display: flex; gap: 10px; padding: 8px; border: 1px solid var(--stroke, #e5ddcf); border-radius: 12px; cursor: pointer; background: var(--card, #fffdf9); transition: border-color .12s, box-shadow .12s; align-items: center; }
.prm-row:hover { border-color: var(--accent, #b8863c); }
.prm-row.active { border-color: var(--accent, #b8863c); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b8863c) 16%, transparent); }
.prm-row-th { width: 68px; height: 50px; border-radius: 8px; background: var(--bg-2, #f6f2ea) center/cover; flex: 0 0 auto; }
.prm-row-b { min-width: 0; flex: 1; }
.prm-row-n { font-weight: 600; font-size: 13px; color: var(--ink, #23201c); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prm-row-l { font-size: 11px; color: var(--muted, #8a8378); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prm-row-p { font-size: 12.5px; color: var(--accent, #b8863c); font-weight: 700; margin-top: 2px; }
.prm-stub, .prpop-stub { font-size: 9px; background: #efe7d6; color: #8a6d1f; padding: 1px 5px; border-radius: 5px; font-weight: 700; vertical-align: middle; }
.prpop-stub { position: absolute; right: 10px; top: 10px; z-index: 2; background: rgba(255,255,255,.92); box-shadow: 0 2px 8px rgba(0,0,0,.18); }
/* ── enrich-модалка: спиннер + метка гэпа ── */
.enr-loading { display: flex; align-items: center; gap: 10px; color: var(--muted); }
.enr-spin { display: inline-block; width: 15px; height: 15px; border: 2px solid color-mix(in srgb, var(--accent) 30%, transparent); border-top-color: var(--accent); border-radius: 50%; animation: enrSpin .7s linear infinite; vertical-align: -2px; margin-right: 6px; }
@keyframes enrSpin { to { transform: rotate(360deg); } }
.enr-gap { font-size: 9.5px; font-weight: 700; color: #b8501c; background: #fbe9dd; padding: 1px 6px; border-radius: 6px; vertical-align: middle; margin-left: 6px; }
/* ── премиум моушн-лоадер (вращающееся кольцо + пульс-ядро + бегущие точки) ── */
.lm-load { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 13px; padding: 26px 0; }
/* глобальный оверлей-лоадер поверх карты/модалок (z: 4600 > modal 4000 > leaflet) */
.lm-overlay { position: fixed; inset: 0; z-index: 4600; display: grid; place-items: center; background: rgba(20,17,12,.55); backdrop-filter: blur(4px); animation: prpopIn .18s ease; }
.lm-overlay .lm-load { background: var(--bg-2, #faf7f0); border-radius: 20px; padding: 30px 44px; box-shadow: 0 30px 70px -18px rgba(0,0,0,.6); }
:root[data-night] .lm-overlay .lm-load { background: #17130d; }
.lm-orb { position: relative; width: 44px; height: 44px; }
.lm-orb i { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 90deg, transparent 0 20%, color-mix(in srgb, var(--accent, #b8863c) 88%, transparent) 90%); -webkit-mask: radial-gradient(farthest-side, #0000 calc(100% - 3.5px), #000 0); mask: radial-gradient(farthest-side, #0000 calc(100% - 3.5px), #000 0); animation: lmSpin .95s cubic-bezier(.55,.15,.45,.85) infinite; }
.lm-orb b { position: absolute; left: 50%; top: 50%; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border-radius: 50%; background: var(--accent, #b8863c); animation: lmPulse 1.5s ease-out infinite; }
@keyframes lmSpin { to { transform: rotate(360deg); } }
@keyframes lmPulse { 0% { transform: scale(.65); box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent, #b8863c) 45%, transparent); } 70% { transform: scale(1); box-shadow: 0 0 0 11px transparent; } 100% { transform: scale(.65); box-shadow: 0 0 0 0 transparent; } }
.lm-load-tx { font-size: 12.5px; color: var(--muted); letter-spacing: .2px; }
.lm-load-tx::after { content: ''; display: inline-block; width: 14px; text-align: left; animation: lmDots 1.4s steps(1,end) infinite; }
@keyframes lmDots { 0% { content: ''; } 25% { content: '·'; } 50% { content: '··'; } 75% { content: '···'; } }
@media (prefers-reduced-motion: reduce) { .lm-orb i { animation-duration: 2s; } .lm-orb b, .lm-load-tx::after { animation: none; } }
/* Higgsfield-эмблема лоадера: домик в золотых кольцах + вращающийся световой sweep + дыхание */
.lm-hf { position: relative; width: 66px; height: 66px; border-radius: 50%; overflow: hidden; box-shadow: 0 10px 30px -8px rgba(184,134,60,.5), inset 0 0 0 1px rgba(255,215,150,.14); animation: hfBreath 3.2s ease-in-out infinite; }
.lm-hf img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lm-hf-sweep { position: absolute; inset: -20%; border-radius: 50%; background: conic-gradient(from 0deg, transparent 0 62%, rgba(255,224,170,.5) 82%, rgba(255,240,210,.15) 92%, transparent 100%); mix-blend-mode: screen; animation: hfSweep 2.1s linear infinite; }
@keyframes hfSweep { to { transform: rotate(360deg); } }
@keyframes hfBreath { 0%, 100% { transform: scale(.97); } 50% { transform: scale(1.03); } }
@media (prefers-reduced-motion: reduce) { .lm-hf-sweep { animation-duration: 5s; } .lm-hf { animation: none; } }
/* web (сеть/орбита) — центр + 3 орбитальных спутника */
.lmw { position: relative; width: 48px; height: 48px; }
.lmw-c { position: absolute; left: 50%; top: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%; background: var(--accent, #b8863c); box-shadow: 0 0 12px color-mix(in srgb, var(--accent) 60%, transparent); }
.lmw i { position: absolute; inset: 0; border-radius: 50%; animation: lmwSpin 1.5s linear infinite; }
.lmw i::after { content: ''; position: absolute; top: -1px; left: 50%; width: 7px; height: 7px; margin-left: -3.5px; border-radius: 50%; background: color-mix(in srgb, var(--accent) 75%, #fff); }
.lmw i:nth-child(3) { animation-duration: 2.1s; animation-direction: reverse; transform: rotate(60deg); }
.lmw i:nth-child(4) { animation-duration: 1.1s; transform: rotate(120deg); opacity: .7; }
@keyframes lmwSpin { to { transform: rotate(360deg); } }
/* card (сборка карточки) — блоки складываются волной */
.lmc { display: flex; align-items: flex-end; gap: 5px; height: 40px; }
.lmc span { width: 9px; border-radius: 3px; background: linear-gradient(180deg, var(--accent, #b8863c), color-mix(in srgb, var(--accent) 55%, #1a1a1a)); animation: lmcBar 1.1s ease-in-out infinite; }
.lmc span:nth-child(1) { height: 16px; animation-delay: 0s; } .lmc span:nth-child(2) { height: 28px; animation-delay: .12s; } .lmc span:nth-child(3) { height: 22px; animation-delay: .24s; } .lmc span:nth-child(4) { height: 34px; animation-delay: .36s; }
@keyframes lmcBar { 0%, 100% { transform: scaleY(.5); opacity: .55; } 50% { transform: scaleY(1); opacity: 1; } }
/* price (стопка строк прайса) — строки набегают */
.lmp { display: flex; flex-direction: column; gap: 4px; width: 52px; }
.lmp i { height: 6px; border-radius: 3px; background: color-mix(in srgb, var(--accent, #b8863c) 30%, var(--line)); overflow: hidden; position: relative; animation: lmpIn .9s ease-in-out infinite; }
.lmp i::after { content: ''; position: absolute; inset: 0; width: 40%; background: var(--accent, #b8863c); border-radius: 3px; animation: lmpFill 1.3s ease-in-out infinite; }
.lmp i:nth-child(2)::after { animation-delay: .2s; } .lmp i:nth-child(3)::after { animation-delay: .4s; } .lmp i:nth-child(4)::after { animation-delay: .6s; }
@keyframes lmpFill { 0% { width: 0; } 60% { width: 100%; } 100% { width: 100%; opacity: .3; } }
@keyframes lmpIn { 0%, 100% { opacity: .6; } 50% { opacity: 1; } }
/* pdf (скан документа) — лист + бегущая линия сканера */
.lmd { position: relative; width: 38px; height: 46px; }
.lmd-sheet { position: absolute; inset: 0; border-radius: 5px; background: color-mix(in srgb, var(--accent, #b8863c) 10%, #fff); border: 1.5px solid color-mix(in srgb, var(--accent) 40%, var(--line)); box-shadow: 0 4px 12px -6px color-mix(in srgb, var(--accent) 45%, transparent); }
.lmd-scan { position: absolute; left: 4px; right: 4px; height: 3px; border-radius: 3px; background: var(--accent, #b8863c); box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 70%, transparent); animation: lmdScan 1.4s cubic-bezier(.5,0,.5,1) infinite; }
@keyframes lmdScan { 0% { top: 6px; } 50% { top: 37px; } 100% { top: 6px; } }
/* search (радар) — луч + импульсы */
.lms { position: relative; width: 46px; height: 46px; border-radius: 50%; border: 1.5px solid color-mix(in srgb, var(--accent, #b8863c) 30%, transparent); }
.lms-sweep { position: absolute; inset: -1.5px; border-radius: 50%; background: conic-gradient(from 0deg, color-mix(in srgb, var(--accent) 45%, transparent), transparent 65%); -webkit-mask: radial-gradient(#0000 30%, #000 31%); mask: radial-gradient(#0000 30%, #000 31%); animation: lmwSpin 1.4s linear infinite; }
.lms-dot { position: absolute; width: 6px; height: 6px; border-radius: 50%; background: var(--accent, #b8863c); left: 62%; top: 34%; animation: lmsPing 2s ease-out infinite; }
.lms-dot.d2 { left: 32%; top: 60%; animation-delay: 1s; }
@keyframes lmsPing { 0% { transform: scale(.4); opacity: 0; } 30% { opacity: 1; } 100% { transform: scale(1.4); opacity: 0; } }
/* ── юниты: сводные карточки групп (тип · площадь · цена · наличие) ── */
.u-empty { font-size: 12px; padding: 8px 0; }
.ugrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 9px; margin: 4px 0 2px; }
.ugrp { border: 1px solid var(--line); border-radius: 11px; padding: 10px 12px; background: var(--bg-2, #faf7f0); transition: border-color .15s, transform .15s; }
.ugrp:hover { border-color: color-mix(in srgb, var(--accent) 40%, var(--line)); transform: translateY(-1px); }
.ugrp-out { opacity: .62; }
.ugrp-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.ugrp-lbl { font-size: 14px; font-weight: 750; color: var(--ink, #23201c); }
.ugrp-area { font-size: 11px; color: var(--muted); white-space: nowrap; }
.ugrp-bot { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-top: 6px; }
.ugrp-price { font-size: 13px; font-weight: 700; color: var(--accent, #b8863c); }
.ugrp-av { font-size: 10.5px; color: var(--good, #6d8a4f); white-space: nowrap; }
.ugrp-av i { color: var(--muted); font-style: normal; }
.u-all { margin-top: 12px; }
.u-all > summary { cursor: pointer; font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 6px; padding: 6px 0; list-style: none; }
.u-all > summary::-webkit-details-marker { display: none; }
.u-all > summary svg { width: 13px; height: 13px; }
.u-all[open] > summary { color: var(--ink, #23201c); font-weight: 600; }
.u-tbl { margin-top: 6px; }
.u-tbl .u-price { color: var(--accent, #b8863c); font-weight: 700; white-space: nowrap; }
.u-tbl tr.u-sold { opacity: .5; }
.u-badge.sold { font-size: 9.5px; font-weight: 700; color: #b23; background: #fde8e8; padding: 2px 7px; border-radius: 6px; }
:root[data-night] .ugrp { background: #1a160f; }
/* ── районы локаций на карте: мягкие зоны + подписи ── */
.przone { cursor: pointer; transition: fill-opacity .18s, stroke-width .18s; }
.przone:hover { fill-opacity: .28; }
.przone-lbl { pointer-events: none; }
.przone-lbl span { display: inline-block; transform: translate(-50%, -50%); white-space: nowrap; font-family: var(--serif, Cormorant, Georgia, serif); font-size: 13px; font-weight: 800; letter-spacing: .2px; color: #4a3c22; padding: 3px 10px; border-radius: 20px; background: color-mix(in srgb, var(--zc, #d9a5a8) 42%, #fff); border: 1.5px solid color-mix(in srgb, var(--zc, #d9a5a8) 78%, #6b5426); box-shadow: 0 3px 10px -3px rgba(70,55,25,.4), inset 0 1px 0 rgba(255,255,255,.5); text-shadow: 0 1px 0 rgba(255,255,255,.55); }
.przone-lbl.on span { color: #fff; background: color-mix(in srgb, var(--zc, #d9a5a8) 88%, #000); font-size: 14px; box-shadow: 0 6px 18px -4px rgba(70,55,25,.55); }
:root[data-night] .przone-lbl span { color: #1a160f; }
/* явный сегментированный тумблер вида «Списком / На карте» — на видном месте, не спрятанная кнопка */
.prv-seg { display: inline-flex; gap: 2px; padding: 3px; background: var(--blue-100, #eef2f8); border: 1px solid var(--stroke); border-radius: 11px; flex: 0 0 auto; }
.prv-seg-b { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 0; background: none; color: var(--ink-2, #5a6474); font-size: 13px; font-weight: 600; border-radius: 8px; cursor: pointer; transition: background var(--dur-fast, .15s), color var(--dur-fast, .15s), box-shadow var(--dur-fast, .15s); white-space: nowrap; }
.prv-seg-b svg { width: 15px; height: 15px; }
.prv-seg-b:hover { color: var(--ink); }
.prv-seg-b.on { background: var(--card, #fff); color: var(--accent); box-shadow: 0 2px 8px rgba(20, 30, 55, .12); }

/* язык карточки = штатный select (enhanceControls → .cs), кнопка под тёмный hero — стекло как pd2-ghost;
   дропдаун (.cs-list) едет через openPop на body-слое (fixed, скроллируемый, поверх всего, стиль Ателье) */
.pd2-lang { min-width: 150px; }
.pd2-lang .cs-btn { background: rgba(6, 17, 38, .72); color: #fff; border: 1px solid rgba(255, 255, 255, .5); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); font-weight: 600; box-shadow: 0 4px 14px rgba(0, 0, 0, .35); text-shadow: 0 1px 4px rgba(0, 0, 0, .6); }
.pd2-lang .cs-btn:hover { background: rgba(6, 17, 38, .82); border-color: rgba(255, 255, 255, .6); }
.pd2-lang .cs-chev svg { color: rgba(255, 255, 255, .8); }
/* конвертация цены в базовую валюту */
.px-conv { font-size: .82em; font-weight: 600; color: var(--muted, #8a8378); white-space: nowrap; margin-left: 4px; }
.pd2-conv { font-size: 12px; color: rgba(255,255,255,.72); margin-top: 3px; }
.pd2-conv .muted { color: rgba(255,255,255,.5); }
.pd2-cur { height: 30px; border-radius: 8px; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.14); color: #fff; font-size: 13px; font-weight: 700; padding: 0 6px; cursor: pointer; -webkit-appearance: none; appearance: none; margin-left: 4px; }
.pd2-cur option { color: #23201c; }
#prBaseCur { min-width: 74px; }
/* ── умный поиск (Tier 3): inline-уведомление под поиском ── */
.pr-tier { border: 1px solid color-mix(in srgb, var(--accent) 26%, var(--line)); background: color-mix(in srgb, var(--accent) 5%, var(--bg-2, #fff)); border-radius: 12px; padding: 11px 13px; margin: 0 0 14px; animation: pfSlide .22s ease; }
.pr-tier-hd { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--ink, #23201c); }
.pr-tier-hd svg { width: 15px; height: 15px; color: var(--accent); flex: 0 0 auto; }
.pr-tier-acts { margin-top: 9px; }
.pr-tier-load { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); padding: 10px 0 4px; }
.pr-tier-cand { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-top: 1px solid var(--line); }
.pr-tier-cand:first-child { margin-top: 8px; }
.ptc-info { min-width: 0; flex: 1; }
.ptc-nm { font-size: 13px; font-weight: 650; color: var(--ink, #23201c); display: flex; align-items: center; gap: 7px; }
.ptc-sub { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.ptc-match { font-size: 9px; font-weight: 700; padding: 1px 6px; border-radius: 6px; text-transform: uppercase; letter-spacing: .3px; }
.ptc-match.high { color: #1a7a4a; background: #e0f2e9; }
.ptc-match.medium { color: #8a6d1f; background: #f4ecd8; }
.ptc-match.low { color: #8a8378; background: #efece6; }
.ptc-add { flex: 0 0 auto; }
.pr-zonechip { background: color-mix(in srgb, var(--accent, #b8863c) 16%, var(--bg-2, #fff)) !important; border-color: color-mix(in srgb, var(--accent) 45%, var(--line)) !important; color: var(--ink, #23201c) !important; font-weight: 650; }
.pr-zonechip b { color: var(--accent, #b8863c); margin-left: 2px; font-size: 14px; }
.pr-zonechip svg { width: 13px; height: 13px; }
/* контрол тепловой карты (раскраска пинов по метрике) */
.prmetric { position: absolute; top: 12px; right: 12px; z-index: 620; background: rgba(255,255,255,.94); border: 1px solid rgba(70,55,25,.14); border-radius: 12px; padding: 6px; box-shadow: 0 8px 24px -8px rgba(40,32,15,.3); backdrop-filter: blur(6px); }
.prmetric-btns { display: flex; gap: 3px; }
.prmetric-b { font-size: 11.5px; font-weight: 650; color: #6b6459; background: none; border: 0; padding: 5px 9px; border-radius: 8px; cursor: pointer; }
.prmetric-b:hover { background: rgba(184,134,60,.1); }
.prmetric-b.on { background: var(--accent, #b8863c); color: #fff; }
.prmetric-lg { display: flex; align-items: center; gap: 6px; font-size: 10px; color: #8a8378; margin-top: 6px; padding: 0 3px 2px; }
.prmetric-grad { flex: 1; height: 7px; border-radius: 4px; background: linear-gradient(90deg, #4c8a4f, #e0bd50, #b4501c); min-width: 60px; }
.prmetric-grad.rev { background: linear-gradient(90deg, #b4501c, #e0bd50, #4c8a4f); }
.prmetric-sw { display: inline-block; width: 10px; height: 10px; border-radius: 50%; vertical-align: -1px; }
.prmetric-nd { margin-left: 8px; display: inline-flex; align-items: center; gap: 3px; }
/* кластеры пинов (markercluster) — стилизуем сами под Ателье */
.prcluster { display: flex; align-items: center; justify-content: center; }
.prcluster span { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; border-radius: 50%; font-size: 13px; font-weight: 750; color: #fff; background: radial-gradient(circle at 35% 28%, color-mix(in srgb, var(--accent, #b8863c) 82%, #fff), var(--accent, #b8863c)); border: 2.5px solid #fff; box-shadow: 0 4px 14px -3px rgba(70,55,25,.55); transition: transform .18s cubic-bezier(.34,1.56,.64,1); }
.prcluster:hover span { transform: scale(1.08); }
/* контрол «обвести область» */
.prdraw { position: absolute; top: 12px; left: 12px; z-index: 620; display: flex; gap: 6px; }
.prdraw-b { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 650; color: #6b6459; background: rgba(255,255,255,.94); border: 1px solid rgba(70,55,25,.14); border-radius: 12px; padding: 7px 11px; cursor: pointer; box-shadow: 0 8px 24px -8px rgba(40,32,15,.3); backdrop-filter: blur(6px); transition: background .15s, color .15s; }
.prdraw-b svg { width: 15px; height: 15px; }
.prdraw-b:hover { background: var(--accent, #b8863c); color: #fff; }
.prdraw-b.has { background: color-mix(in srgb, var(--accent, #b8863c) 16%, #fff); border-color: color-mix(in srgb, var(--accent, #b8863c) 45%, rgba(70,55,25,.14)); color: var(--ink, #23201c); }
.prdraw-clr { display: inline-flex; align-items: center; justify-content: center; width: 32px; background: rgba(255,255,255,.94); border: 1px solid rgba(70,55,25,.14); border-radius: 12px; cursor: pointer; color: #8a8378; box-shadow: 0 8px 24px -8px rgba(40,32,15,.3); }
.prdraw-clr:hover { color: #b4501c; }
.prdraw-clr svg { width: 14px; height: 14px; }
.prlasso-drawing, .prlasso-drawing .leaflet-grab, .prlasso-drawing .leaflet-interactive, .prlasso-drawing .leaflet-container { cursor: crosshair !important; }
.prlasso-hint { position: absolute; left: 50%; top: 12px; transform: translateX(-50%); z-index: 650; font-size: 11.5px; font-weight: 600; color: #fff; background: rgba(40,32,15,.86); padding: 6px 12px; border-radius: 20px; box-shadow: 0 6px 18px -6px rgba(0,0,0,.5); pointer-events: none; white-space: nowrap; }
.prlasso-poly { filter: drop-shadow(0 2px 6px rgba(70,55,25,.25)); }
.pr-zonechip svg { width: 13px; height: 13px; }
:root[data-night] .prdraw-b, :root[data-night] .prdraw-clr { background: rgba(30,26,18,.9); color: #c9c0ad; border-color: rgba(255,255,255,.1); }
:root[data-night] .prdraw-b:hover { color: #fff; }
/* ─── Карточка объекта: режим ПРОСМОТРА (.pd2.is-read) — красивый read-view, правки по кнопке «Редактировать» ─── */
/* поля/селекты → чистый текст (без рамок/фона), не редактируются */
.pd2.is-read input.gi, .pd2.is-read textarea, .pd2.is-read input[data-f], .pd2.is-read input[data-cf], .pd2.is-read .cs-btn {
  border: 0 !important; background: transparent !important; box-shadow: none !important; padding: 0 !important; pointer-events: none; resize: none; cursor: default;
}
.pd2.is-read .cs-chev, .pd2.is-read .num-step-btns { display: none !important; }
.pd2.is-read .cs, .pd2.is-read .cs-btn { min-width: 0 !important; width: auto !important; }
/* скрыть весь edit-хром в просмотре: добавление, удаление, обложка-сеттер, курирование, «этап оплаты» */
.pd2.is-read .lc-note-row,
.pd2.is-read .pd-x, .pd2.is-read .pd-cover-set, .pd2.is-read .pd-curate,
.pd2.is-read .lc-cx, .pd2.is-read [data-imgdel], .pd2.is-read [data-laydel], .pd2.is-read [data-matdel],
.pd2.is-read .pd-editonly, .pd2.is-read #prowAdd, .pd2.is-read #uAdd { display: none !important; }
/* чипы тегов/удобств: в просмотре только выбранные, как статичные метки */
.pd2.is-read .chip-t:not(.on) { display: none !important; }
.pd2.is-read .chip-t.on { pointer-events: none; cursor: default; }
/* пустые поля-инпуты в просмотре не занимают лишнего (плейсхолдер не показываем) */
.pd2.is-read input::placeholder, .pd2.is-read textarea::placeholder { color: transparent !important; }
/* заголовок-имя в просмотре — крупнее и как текст */
.pd2.is-read .pd2-name { font-weight: 700 !important; }

/* ×-удаление на карточке цепочки (в списке «Мои цепочки») — появляется на ховере, не мешает клику по карточке */
.seq-card-top { position: relative; }
.seq-card-del { margin-left: auto; display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 6px; color: var(--ink-3, #97a0af); opacity: 0; transition: opacity .15s, background .15s, color .15s; flex: 0 0 auto; }
.seq-card:hover .seq-card-del { opacity: .8; }
.seq-card-del:hover { opacity: 1; background: color-mix(in srgb, var(--bad, #e05252) 15%, transparent); color: var(--bad, #e05252); }
.seq-card-del svg { width: 13px; height: 13px; }

/* OTP-лента: код крупно, отправитель мелко (чтобы не путали номер WhatsApp-отправителя с получателем) */
.otp-msg { display: flex; align-items: center; gap: 12px; }
.otp-code-big { font-size: 22px; font-weight: 800; letter-spacing: 3px; color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent); border-radius: 9px; padding: 4px 12px; flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.otp-msg-body { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.otp-msg-body .warm-txt { font-size: 12px; color: var(--ink-2, #5a6474); }
.otp-msg-body i { font-size: 10.5px; color: var(--ink-3, #97a0af); font-style: normal; }

/* баннер «вышла новая версия» — мягкий нудж сверху по центру, не рвёт работу */
.ver-nudge { position: fixed; top: 16px; left: 50%; transform: translateX(-50%); z-index: 4700; display: flex; align-items: center; gap: 10px; background: var(--card, #fff); color: var(--ink, #1a2030); border: 1px solid var(--stroke, #e6e0d3); border-radius: 13px; padding: 8px 10px 8px 14px; box-shadow: 0 18px 44px -14px rgba(20,30,55,.32), 0 3px 10px rgba(20,30,55,.08); font-size: 13px; font-weight: 600; animation: prcmpIn .3s cubic-bezier(.2,.8,.3,1); }
.ver-nudge svg { width: 15px; height: 15px; color: var(--accent); }
.ver-nudge .ver-x { display: inline-grid; place-items: center; width: 26px; height: 26px; border: 0; background: none; color: var(--ink-3, #97a0af); border-radius: 8px; cursor: pointer; }
.ver-nudge .ver-x:hover { background: var(--blue-100, #eef2f8); color: var(--ink); }
.ver-nudge .ver-x svg { width: 13px; height: 13px; }

/* видимость карточки объекта: бейдж «Личная» на списке + read-only бейдж на карточке */
.pc2-priv { position: absolute; top: 10px; left: 10px; z-index: 2; display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; font-weight: 700; color: #fff; background: rgba(20, 30, 55, .72); backdrop-filter: blur(6px); border-radius: 7px; padding: 3px 7px; letter-spacing: .2px; }
.pd2-vis-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: #fff; background: rgba(6, 17, 38, .55); border: 1px solid rgba(255, 255, 255, .28); border-radius: 9px; padding: 6px 11px; }

/* тумблер «не затирать заполненное» в массовом дополнении — выделен акцентной плашкой */
.be-gaprow { background: color-mix(in srgb, var(--accent) 8%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 24%, transparent); border-radius: 11px; }
.be-gaprow .sl { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; }
.be-gaprow .sl svg { width: 14px; height: 14px; color: var(--accent); }

/* панель массовых действий — ровная СЕТКА кнопок (число колонок считает JS так, чтобы не было «висячей» кнопки) */
.bulk-bar { flex-direction: column !important; align-items: stretch !important; flex-wrap: nowrap !important; gap: 9px !important; max-width: 94vw; padding: 11px 13px !important; box-sizing: border-box; }
.bb-head { display: flex; align-items: center; gap: 8px; }
.bb-head .bb-clear { margin-left: auto; }
.bb-acts { display: grid; grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); gap: 7px; }
.bb-acts .btn { width: 100%; justify-content: center; white-space: nowrap; }

/* панель сравнения — глобальная (body, fixed), светлое стекло в стиле CRM */
.prcmp { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 3500; display: flex; align-items: center; gap: 14px; background: var(--card, rgba(255,255,255,.97)); color: var(--ink, #1a2030); border: 1px solid var(--stroke, #e6e0d3); border-radius: 16px; padding: 9px 11px 9px 15px; box-shadow: 0 24px 60px -16px rgba(20,30,55,.28), 0 4px 14px rgba(20,30,55,.08); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); max-width: min(94vw, 880px); animation: prcmpIn .3s cubic-bezier(.2,.8,.3,1); }
@keyframes prcmpIn { from { opacity: 0; transform: translate(-50%, 20px); } to { opacity: 1; transform: translate(-50%, 0); } }
.prcmp-cnt { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--ink-2, #5a6474); white-space: nowrap; }
.prcmp-cnt svg { width: 15px; height: 15px; color: var(--accent); }
.prcmp-cnt b { color: var(--accent); font-weight: 800; }
.prcmp-items { display: flex; gap: 8px; flex-wrap: wrap; }
.prcmp-chip { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--ink); background: var(--blue-100, #eef2f8); border: 1px solid var(--stroke, #e6e0d3); border-radius: 11px; padding: 4px 8px 4px 4px; transition: background .15s; }
.prcmp-chip:hover { background: color-mix(in srgb, var(--accent) 10%, var(--blue-100, #eef2f8)); }
.prcmp-th { width: 34px; height: 28px; border-radius: 7px; background: #dfe5ee center/cover; flex: 0 0 auto; box-shadow: inset 0 0 0 1px rgba(20,30,55,.06); }
.prcmp-chip b { cursor: pointer; color: var(--ink-3, #97a0af); font-size: 16px; line-height: 1; padding: 0 3px; transition: color .15s; } .prcmp-chip b:hover { color: var(--bad, #e05252); }
.prcmp-acts { display: flex; gap: 7px; flex: 0 0 auto; }
.prcmp-clear { padding: 8px 9px; }
.prcmp-clear svg { width: 14px; height: 14px; }
/* модалка сравнения — премиум-вид */
.cmp-tbl { display: grid; gap: 0; font-size: 13px; border: 1px solid var(--stroke, #e6e0d3); border-radius: 16px; overflow: hidden; background: var(--card, #fff); box-shadow: 0 10px 34px -14px rgba(20,30,55,.18); }
.cmp-tbl > div { padding: 12px 14px; border-bottom: 1px solid var(--line, #eef0f3); display: flex; align-items: center; justify-content: center; text-align: center; }
/* липкая шапка с фото-карточками */
.cmp-h { border-bottom: 0 !important; background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 8%, var(--card, #fff)), var(--card, #fff)); position: sticky; top: 0; z-index: 2; padding: 16px 14px 14px !important; align-items: stretch !important; }
.cmp-card { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 9px; width: 100%; }
.cmp-th { width: 100%; height: 104px; border-radius: 12px; background: #eef1f5 center/cover; box-shadow: 0 6px 16px -6px rgba(20,30,55,.28); }
.cmp-card b { font-size: 13.5px; line-height: 1.3; font-weight: 750; color: var(--ink); }
/* первый столбец — метки, выключены из центрирования, аккуратный аптайп */
.cmp-l { font-size: 10.5px; color: var(--ink-3, #97a0af); font-weight: 800; text-transform: uppercase; letter-spacing: .5px; justify-content: flex-start !important; text-align: left !important; }
.cmp-v { font-weight: 650; position: relative; color: var(--ink); }
.cmp-v.cmp-win { background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 18%, transparent), color-mix(in srgb, var(--accent) 8%, transparent)); color: var(--accent); font-weight: 850; border-radius: 9px; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 32%, transparent); }
.cmp-star { color: #cda34a; margin-left: 5px; font-size: 12px; vertical-align: 1px; }
/* последняя строка без нижней линии */
.cmp-tbl > div:nth-last-child(-n+3) { border-bottom: 0; }
.cmp-ai { margin-top: 16px; }
.cmp-ai-box { margin-top: 14px; display: flex; flex-direction: column; gap: 12px; }
.cmp-ai-sum { font-size: 13.5px; line-height: 1.55; color: var(--ink, #23201c); background: color-mix(in srgb, var(--accent) 6%, var(--bg-2, #faf7f0)); border-radius: 10px; padding: 12px 14px; }
.cmp-ai-verd { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
.cmp-ai-v { border: 1px solid var(--line); border-radius: 10px; padding: 11px 12px; }
.cmp-ai-v > b { font-size: 13px; }
.cmp-ai-fw { font-size: 11.5px; color: var(--muted); margin: 3px 0 7px; }
.cmp-ai-pros, .cmp-ai-cons { margin: 0; padding-left: 16px; font-size: 12px; line-height: 1.5; }
.cmp-ai-pros li { color: #4a7a4f; } .cmp-ai-cons li { color: #a35; }
.cmp-ai-best { display: flex; flex-wrap: wrap; gap: 14px; font-size: 12.5px; padding: 10px 14px; background: color-mix(in srgb, var(--accent) 8%, transparent); border-radius: 10px; }
.cmp-ai-note { font-size: 12.5px; font-style: italic; color: var(--muted); display: flex; gap: 6px; align-items: flex-start; }
.cmp-ai-note svg { width: 14px; height: 14px; color: var(--accent); flex: 0 0 auto; margin-top: 2px; }
.prpop-cmp.on { background: color-mix(in srgb, var(--accent) 18%, #fff); border-color: var(--accent); color: var(--accent); }
.cmp-share-ok { margin-top: 10px; font-size: 12.5px; color: var(--muted); }
.cmp-share-row { display: flex; gap: 6px; margin-top: 6px; }
.cmp-share-row input { flex: 1; font-size: 12px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg-2, #faf7f0); color: var(--ink, #23201c); }
/* авто-организация папок */
.fold-auto { border-style: solid !important; border-color: color-mix(in srgb, var(--accent) 40%, var(--line)) !important; color: var(--accent, #b8863c); }
.fold-auto:hover { background: color-mix(in srgb, var(--accent) 8%, transparent); }
.ao-opts { display: grid; gap: 8px; margin: 4px 0; }
.ao-opt { text-align: left; display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg-2, #faf7f0); cursor: pointer; transition: border-color .15s, transform .1s; }
.ao-opt:hover { border-color: var(--accent, #b8863c); transform: translateY(-1px); }
.ao-opt b { font-size: 14px; color: var(--ink, #23201c); }
.ao-opt span { font-size: 12px; color: var(--muted); }
.ao-opt:disabled { opacity: .5; cursor: default; }
/* отбор+подписи фото */
.btn-xs { font-size: 10.5px; padding: 3px 8px; height: auto; margin-left: 8px; vertical-align: middle; }
.pd-curate svg { width: 12px; height: 12px; }
.pd-img { position: relative; }
.pd-img-cap { position: absolute; left: 0; right: 0; bottom: 0; font-size: 10px; font-weight: 600; color: #fff; background: linear-gradient(180deg, transparent, rgba(0,0,0,.72)); padding: 12px 8px 5px; border-radius: 0 0 8px 8px; pointer-events: none; }
.pd-img.is-cover { outline: 2px solid var(--accent, #b8863c); outline-offset: -2px; }
.pd-cover-badge { position: absolute; left: 6px; top: 6px; font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #fff; background: var(--accent, #b8863c); padding: 2px 7px; border-radius: 6px; }
.pd-cover-set { position: absolute; left: 6px; top: 6px; display: inline-flex; align-items: center; gap: 3px; font-size: 9px; font-weight: 700; color: #fff; background: rgba(0,0,0,.5); border: 0; padding: 3px 7px; border-radius: 6px; cursor: pointer; opacity: 0; transition: opacity .15s; }
.pd-img:hover .pd-cover-set { opacity: 1; }
.pd-cover-set svg { width: 10px; height: 10px; }
.pd-cover-set:hover { background: var(--accent, #b8863c); }
:root[data-night] .prmetric { background: rgba(20,17,12,.92); border-color: rgba(255,255,255,.1); }
:root[data-night] .prmetric-b { color: #b8ad99; }

/* ---------- Расширенный фильтр объектов (сворачиваемая панель) ---------- */
.pf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px 14px; }
.pf-f { display: flex; flex-direction: column; gap: 5px; font-size: 12px; }
.pf-f > span { font-weight: 600; color: var(--muted, #8a8378); display: flex; align-items: center; gap: 6px; }
.pf-range { display: flex; gap: 6px; }
.pf-range input { width: 50%; min-width: 0; }
.pf-unit { font-size: 10px; font-weight: 700; padding: 1px 6px; border: 1px solid var(--stroke, #e5ddcf); border-radius: 6px; background: var(--bg-2, #f6f2ea); color: var(--accent, #b8863c); cursor: pointer; }
.pf-unit:hover { background: var(--accent, #b8863c); color: #fff; }

/* плавное появление панели фильтров (было дёрганно) */
@keyframes pfSlide { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: none; } }
#prFiltPanel { animation: pfSlide .22s cubic-bezier(.22,.61,.36,1); transform-origin: top; }

/* фикс «Дизайн документа»: один inner в сворачиваемом гриде (были 2 ребёнка → наложение) */
.ds-fold-inner { padding: 0 14px 14px; }

/* === Каталог «Подборки клиентов» (ТЗ v3 §8) === */
.cc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.cc-table{width:100%;border-collapse:collapse;background:var(--card,#fff);border:1px solid var(--stroke);border-radius:14px;overflow:hidden}
.cc-table th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:13px 16px;border-bottom:1px solid var(--stroke);background:rgba(0,0,0,.015)}
.cc-table td{padding:12px 16px;border-bottom:1px solid var(--stroke);font-size:13.5px;vertical-align:middle}
.cc-table tbody tr:last-child td{border-bottom:0}
.cc-table tbody tr:hover{background:rgba(0,0,0,.02)}
.cc-nm b{font-weight:600}
.cc-leg{display:inline-block;margin-left:8px;font-size:10.5px;color:var(--muted);background:rgba(0,0,0,.05);border-radius:100px;padding:2px 8px}
.cc-st{font-weight:600;font-size:12px}
.cc-st.st-draft{color:#b26a00}.cc-st.st-ready,.cc-st.st-published{color:#2e7d52}
.cc-acts{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.cc-empty{padding:48px 20px;text-align:center;color:var(--muted);border:1px dashed var(--stroke);border-radius:14px}

/* === Карточка клиента · «Материалы» (ТЗ v3 §13) === */
.lc-materials{display:flex;flex-direction:column;gap:7px}
.lc-mat-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--stroke);border-radius:10px}
.lc-mat-ic{display:flex;color:var(--muted)}.lc-mat-ic svg{width:17px;height:17px}
.lc-mat-b{flex:1;min-width:0}.lc-mat-b b{display:block;font-size:13px;font-weight:600}.lc-mat-b span{font-size:11.5px;color:var(--muted)}
.lc-mat-b .cc-leg{font-size:10px}
.lc-mat-acts{margin-top:9px}

/* ── Встроенный редактор документа в оболочке CRM (editor-mode) ──────────────
   Основное меню → узкая полоса 48px (раскрытие по наведению/клику, overlay без
   сдвига рабочей области); редактор занимает всю область в iframe. */
.app.editor-mode .sidebar{
  position:absolute; left:0; top:0; height:100vh; width:12px; z-index:60;
  overflow:hidden; padding:16px 0 12px;
  transition:width .2s var(--ease-soft,ease), box-shadow .18s ease;
  will-change:width;
  /* свёрнуто = тонкая кромка-триггер 12px, СОДЕРЖИМОЕ РАСТВОРЕНО (ничего не торчит криво);
     наведение → широкий раздел 236px. Содержимое прячем целиком (правило ниже). */
}
/* растворяем ВСЁ содержимое в свёрнутом виде — остаётся только кромка для наведения */
.app.editor-mode .sidebar > *{ transition:opacity .16s ease; }
.app.editor-mode .sidebar:not(:hover):not(.nav-open):not(.nav-pinned) > *{ opacity:0; pointer-events:none; }
.app.editor-mode .main{ margin-left:12px; transition:margin-left .2s var(--ease-soft,ease); }
.app.editor-mode .topbar{ display:none; }
.app.editor-mode .content{ padding:0; overflow:hidden; height:100vh; }
.app.editor-mode .content .pe-frame{ width:100%; height:100%; border:0; display:block; background:var(--bg,#0b0e14); }
/* раскрытие: наведение (с задержкой ~220мс), фокус внутри, или класс nav-open (клик/планшет) */
.app.editor-mode .sidebar:hover,
.app.editor-mode .sidebar:focus-within,
.app.editor-mode.nav-open .sidebar{
  width:236px; overflow-y:auto; padding:20px 12px 14px;
  box-shadow:28px 0 70px -20px rgba(4,8,20,.65);
  transition-delay:.2s;
}
.app.editor-mode.nav-open .sidebar{ transition-delay:0s; }
/* закреплено: меню остаётся открытым и сдвигает рабочую область */
.app.editor-mode.nav-pinned .sidebar{ width:236px; overflow-y:auto; padding:20px 12px 14px; box-shadow:none; transition-delay:0s; }
.app.editor-mode.nav-pinned .main{ margin-left:236px; }
/* в свёрнутом виде прячем текстовые подписи (иконки остаются по левому краю) */
.app.editor-mode .sidebar .brand-name,
.app.editor-mode .sidebar .navsearch,
.app.editor-mode .sidebar .nav-label,
.app.editor-mode .sidebar .agency-tx,
.app.editor-mode .sidebar .agency-chev,
.app.editor-mode .sidebar .nav-item{ white-space:nowrap; }
.app.editor-mode .sidebar .brand-name,
.app.editor-mode .sidebar .navsearch,
.app.editor-mode .sidebar .nav-label,
.app.editor-mode .sidebar .agency-tx,
.app.editor-mode .sidebar .agency-chev{ opacity:0; transition:opacity .12s ease; pointer-events:none; }
.app.editor-mode .sidebar:hover .brand-name,
.app.editor-mode .sidebar:hover .navsearch,
.app.editor-mode .sidebar:hover .nav-label,
.app.editor-mode .sidebar:hover .agency-tx,
.app.editor-mode .sidebar:hover .agency-chev,
.app.editor-mode.nav-open .sidebar .brand-name,
.app.editor-mode.nav-open .sidebar .navsearch,
.app.editor-mode.nav-open .sidebar .nav-label,
.app.editor-mode.nav-open .sidebar .agency-tx,
.app.editor-mode.nav-open .sidebar .agency-chev,
.app.editor-mode.nav-pinned .sidebar .brand-name,
.app.editor-mode.nav-pinned .sidebar .navsearch,
.app.editor-mode.nav-pinned .sidebar .nav-label,
.app.editor-mode.nav-pinned .sidebar .agency-tx,
.app.editor-mode.nav-pinned .sidebar .agency-chev{ opacity:1; pointer-events:auto; }
/* подпись пункта (nav-item-tx), каретка пространства и бейдж «в доработке» — тоже прячем в свёрнутом,
   иначе текст обрезается кромкой 48px (баг со скрина). Показываем только при раскрытии. */
.app.editor-mode .sidebar .nav-item-tx,
.app.editor-mode .sidebar .nav-caret,
.app.editor-mode .sidebar .nav-dev{ opacity:0; transition:opacity .12s ease; pointer-events:none; }
.app.editor-mode .sidebar:hover .nav-item-tx,
.app.editor-mode .sidebar:focus-within .nav-item-tx,
.app.editor-mode.nav-open .sidebar .nav-item-tx,
.app.editor-mode.nav-pinned .sidebar .nav-item-tx,
.app.editor-mode .sidebar:hover .nav-caret,
.app.editor-mode .sidebar:focus-within .nav-caret,
.app.editor-mode.nav-open .sidebar .nav-caret,
.app.editor-mode.nav-pinned .sidebar .nav-caret,
.app.editor-mode .sidebar:hover .nav-dev,
.app.editor-mode.nav-open .sidebar .nav-dev,
.app.editor-mode.nav-pinned .sidebar .nav-dev{ opacity:1; pointer-events:auto; }
/* иконки по центру узкой полосы (без текста рядом они не должны липнуть к левому краю) */
.app.editor-mode .sidebar:not(:hover):not(.nav-open):not(.nav-pinned) .nav-item{ justify-content:center; padding-left:0; padding-right:0; }

/* ── Каталог «Презентации объектов» (референс-мокап №1) ───────────────────── */
.po-crumb{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:4px;margin:0 0 10px}
.po-crumb svg{width:13px;height:13px;opacity:.6}
.po-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 18px}
.po-h1{font-size:30px;font-weight:700;letter-spacing:-.02em;margin:0 0 4px}
.po-sub{font-size:13.5px;color:var(--muted)}
.po-new{border-radius:11px;padding:11px 18px;font-weight:600}
.po-toolbar{display:flex;align-items:center;gap:10px;margin:0 0 18px;flex-wrap:wrap}
.po-search{flex:1;min-width:220px;display:flex;align-items:center;gap:9px;background:var(--card,#fff);border:1px solid var(--stroke);border-radius:11px;padding:0 13px;height:42px}
.po-search svg{width:16px;height:16px;opacity:.5;flex:none}
.po-search input{flex:1;border:0;background:transparent;outline:0;font-size:14px;color:inherit}
.po-sel{height:42px;border:1px solid var(--stroke);border-radius:11px;background:var(--card,#fff);padding:0 34px 0 14px;font-size:13.5px;font-weight:500;color:inherit;cursor:pointer;
  -webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.po-viewtog{display:inline-flex;border:1px solid var(--stroke);border-radius:11px;overflow:hidden;height:42px}
.po-viewtog button{border:0;background:var(--card,#fff);width:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted)}
.po-viewtog button svg{width:17px;height:17px}
.po-viewtog button.on{background:var(--ink,#141414);color:#fff}
.po-viewtog button+button{border-left:1px solid var(--stroke)}

.po-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;margin-bottom:30px}
.po-card{background:var(--card,#fff);border:1px solid var(--stroke);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .16s,transform .16s}
.po-card:hover{box-shadow:0 14px 40px -18px rgba(20,20,30,.32)}
.po-thumb{height:178px;background:#e9e6e0 center/cover no-repeat;flex:none}
.po-cb{padding:15px 16px 16px;display:flex;flex-direction:column;gap:2px}
.po-ct{font-size:17px;font-weight:650;letter-spacing:-.01em}
.po-obj{align-self:flex-start;border:0;background:transparent;padding:3px 0;color:var(--muted);font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:3px}
.po-obj svg{width:13px;height:13px;opacity:.7}
.po-obj:hover{color:var(--accent,#6b4f2a)}
.po-metaline{font-size:12.5px;color:var(--muted)}
.po-saved{font-size:12px;color:var(--muted);opacity:.8;margin-bottom:9px}
.po-pill{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;margin-bottom:13px}
.po-pill i{width:7px;height:7px;border-radius:50%;flex:none}
.po-pub{background:rgba(46,125,50,.1);color:#2e7d32}.po-pub i{background:#2e9b43}
.po-changed{background:rgba(201,138,30,.12);color:#b67a16}.po-changed i{background:#e0a020}
.po-draft{background:rgba(90,100,110,.1);color:#5a646e}.po-draft i{background:#8a949e}
.po-acts{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
.po-acts>button{border-radius:9px;height:34px!important;min-height:34px!important;box-sizing:border-box;padding:0 11px;font-size:12.5px;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.po-acts>button svg{width:13px;height:13px}
.po-acts .btn-accent{padding:0 13px}
.po-more{width:34px;padding:0!important;flex:none}
.po-more svg{width:16px;height:16px;opacity:.65}

.po-list{display:flex;flex-direction:column;gap:9px;margin-bottom:30px}
.po-lrow{display:flex;align-items:center;gap:14px;background:var(--card,#fff);border:1px solid var(--stroke);border-radius:13px;padding:10px 14px}
.po-lthumb{width:64px;height:48px;border-radius:9px;background:#e9e6e0 center/cover no-repeat;flex:none}
.po-lmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.po-lmain b{font-size:14.5px;font-weight:620}
.po-lmain span{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.po-lrow .po-pill{margin:0}
.po-lsaved{font-size:12.5px;color:var(--muted);white-space:nowrap}

.po-empty{padding:40px 0;text-align:center;border:1px dashed var(--stroke);border-radius:14px;color:var(--muted);font-size:13.5px;margin-bottom:30px}

.po-recent{background:var(--card,#fff);border:1px solid var(--stroke);border-radius:16px;padding:18px 20px 8px;margin-bottom:24px}
.po-recent-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.po-recent-hd b{font-size:16px;font-weight:650}
.po-rtable{display:flex;flex-direction:column}
.po-rhead,.po-rr{display:grid;grid-template-columns:140px 1fr 1fr 180px;gap:14px;align-items:center}
.po-rhead{padding:0 4px 9px;border-bottom:1px solid var(--stroke)}
.po-rhead span{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.po-rr{padding:12px 4px;border-bottom:1px solid var(--stroke)}
.po-rr:last-child{border-bottom:0}
.po-ric{display:none}
.po-rdate{font-size:13px;font-weight:600;display:flex;flex-direction:column}
.po-rdate span{font-size:11.5px;font-weight:400;color:var(--muted)}
.po-rpres b{font-size:13.5px;font-weight:600;display:block}
.po-rpres span{font-size:11.5px;color:var(--muted)}
.po-rchange{font-size:13px}
.po-ruser{display:flex;align-items:center;gap:9px}
.po-rava{width:30px;height:30px;border-radius:50%;background:var(--ink,#1a1a1a);color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:none}
.po-ruser b{font-size:13px;font-weight:600;display:block}
.po-ruser span{font-size:11.5px;color:var(--muted)}
@media(max-width:720px){.po-rhead,.po-rr{grid-template-columns:1fr 1fr}.po-rdate{grid-column:1}.po-ruser{grid-column:2}.po-rpres,.po-rchange{grid-column:1/-1}}

/* #603: свёрнутая карточка «ИИ запланировал сообщение» в диалоге — одна строка */
.chat-chain.ntp2.ntp2-collapsed{display:flex;align-items:center;gap:11px;padding:8px 14px}
.ntp2-collapsed .ntp2-ic{width:30px;height:30px;border-radius:9px}
.ntp2-collapsed .ntp2-ic svg{width:16px;height:16px}
.ntp2-collapsed .ntp2-info{flex:1;min-width:0}
.ntp2-collapsed .ntp2-ctrls{display:flex;align-items:center;gap:6px;flex:none}
.ntp2-collapsed .ntp2-send{padding:6px 11px}

/* #578/#585: бейдж невалидного номера лида */
.ph-inv{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:600;color:#b4461f;background:rgba(201,80,30,.1);border:1px solid rgba(201,80,30,.22);border-radius:6px;padding:1px 6px;margin-left:5px;vertical-align:middle;white-space:nowrap}
.ph-inv svg{width:11px;height:11px}

/* #580: баннер невалидного номера в карточке лида + действие «в спам» */
.lc-badphone{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:rgba(201,80,30,.08);border:1px solid rgba(201,80,30,.2);border-radius:10px;padding:9px 12px;margin:10px 0}
.lc-badphone-tx{flex:1;min-width:150px;font-size:12px;color:#8a4420;display:inline-flex;align-items:center;gap:6px;line-height:1.4}
.lc-badphone-tx svg{width:14px;height:14px;flex:none}
.lc-badphone .btn{flex:none;white-space:nowrap}

/* ICP-match: бейдж «профильный лид» (похож на квал/закрытых клиентов) — позитивный зелёный */
.icp-b{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:600;color:#0f7a56;background:rgba(18,155,110,.1);border:1px solid rgba(18,155,110,.22);border-radius:6px;padding:1px 6px;margin-left:5px;vertical-align:middle;white-space:nowrap}
.icp-b svg{width:11px;height:11px}
.lc-icp{display:flex;align-items:center;gap:10px;background:rgba(18,155,110,.07);border:1px solid rgba(18,155,110,.18);border-radius:10px;padding:9px 12px;margin:10px 0}
.lc-icp-tx{flex:1;font-size:12px;color:#0f6b4c;display:inline-flex;align-items:center;gap:6px;line-height:1.4}
.lc-icp-tx svg{width:14px;height:14px;flex:none;color:#129b6e}
.lc-icp-tx b{color:#0b5a40}
/* ICP: столбец «Профиль» в таблице лидов */
.tbl-icpv{font-size:11.5px;font-weight:700;color:#8b8983}
.tbl-icpv.hi{color:#0f7a56}
.tbl-icpv.mid{color:#b88309}
/* МИНИ-маркеры в плотной таблице лидов: иконка-точка вместо полноразмерных пилюль «профиль N%»/«невалидный №» */
.icp-dot,.ph-dot{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:5px;margin-left:5px;vertical-align:middle;flex:none}
.icp-dot svg,.ph-dot svg{width:11px;height:11px}
.icp-dot{color:#0f7a56;background:rgba(18,155,110,.12)}
.icp-dot.mid{color:#b88309;background:rgba(184,131,9,.12)}
.ph-dot{color:#b4461f;background:rgba(201,80,30,.12)}
/* ICP: виджет «Профильные лиды» на Обзоре */
.ov-prof{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.ov-prof-c{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line,#e7e3db);border-radius:10px;cursor:pointer;transition:background .12s}
.ov-prof-c:hover{background:rgba(18,155,110,.05)}
.ov-prof-ava{flex:none;width:30px;height:30px;border-radius:50%;background:rgba(18,155,110,.14);color:#0f7a56;font-size:11px;font-weight:700;display:grid;place-items:center}
.ov-prof-id{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.ov-prof-nm{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-prof-meta{font-size:11px;color:var(--ink-3,#8b8983);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ov-prof-score{flex:none;font-size:13px;font-weight:700;color:#0f7a56;background:rgba(18,155,110,.1);border-radius:8px;padding:3px 8px}

/* Предупреждение о бэкапе WhatsApp перед OTP-перерегистрацией (номер logged_out) */
.num-otp-warn{display:flex;gap:8px;align-items:flex-start;background:rgba(201,80,30,.07);border:1px solid rgba(201,80,30,.2);border-radius:10px;padding:9px 11px;margin:0 0 8px;font-size:11px;line-height:1.45;color:#8a4420}
.num-otp-warn svg{width:14px;height:14px;flex:none;margin-top:1px}
.num-otp-warn b{color:#6d3417}

/* W/T → минималистичные иконки WhatsApp/Telegram в индикаторе каналов */
.tbl-cdot svg{width:12px;height:12px;display:block}
.lead-card .geo-row .tbl-cdot svg{width:11px;height:11px}

/* ===== Yesim OTP-активация — motion-графика приёма кода ===== */
.yact-feed-hd{display:flex;align-items:center;gap:8px;margin:16px 0 8px}
.yact-feed-hd b{font-size:13px}
.yact-live{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3)}
.yact-live i{width:7px;height:7px;border-radius:50%;background:#2fa98c;animation:yactPulse 1.6s infinite}
@keyframes yactPulse{0%{box-shadow:0 0 0 0 rgba(47,169,140,.55)}70%{box-shadow:0 0 0 7px rgba(47,169,140,0)}100%{box-shadow:0 0 0 0 rgba(47,169,140,0)}}
.yact-feed{min-height:168px;border:1px solid var(--stroke);border-radius:14px;padding:8px;background:var(--bg-2);display:flex;flex-direction:column;gap:8px}
/* ждём код — сканер */
.yact-scan{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 16px;text-align:center;position:relative;min-height:150px}
.yact-scan-rings{position:absolute;top:34px;width:80px;height:80px;pointer-events:none}
.yact-scan-rings i{position:absolute;inset:0;margin:auto;width:52px;height:52px;border:2px solid var(--accent);border-radius:16px;opacity:0;animation:yactRing 2.4s ease-out infinite}
.yact-scan-rings i:nth-child(2){animation-delay:.8s}
.yact-scan-rings i:nth-child(3){animation-delay:1.6s}
@keyframes yactRing{0%{transform:scale(.7);opacity:.5}100%{transform:scale(1.9);opacity:0}}
.yact-scan-core{width:52px;height:52px;border-radius:16px;background:var(--accent);color:#fff;display:grid;place-items:center;position:relative;z-index:1;box-shadow:0 12px 30px -10px var(--accent);animation:yactFloat 3s ease-in-out infinite}
.yact-scan-core svg{width:24px;height:24px}
@keyframes yactFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.yact-scan-tx{margin-top:18px;font-size:14px;font-weight:650;color:var(--ink-1);display:inline-flex;align-items:flex-end;gap:1px;line-height:1.15}
.yact-dots{display:inline-flex;gap:3px;margin-left:6px;margin-bottom:3px;align-self:flex-end}
.yact-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.3;animation:yactDot 1.4s infinite}
.yact-dots i:nth-child(2){animation-delay:.2s}
.yact-dots i:nth-child(3){animation-delay:.4s}
@keyframes yactDot{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.yact-scan-sub{margin-top:9px;font-size:11.5px;color:var(--ink-3);max-width:270px;line-height:1.5}
.yact-scan-sub b{color:var(--ink-2)}
/* карточка кода */
.yact-code-card{border:1px solid var(--stroke);border-radius:12px;padding:12px 14px;background:var(--card)}
.yact-code-card.in{animation:yactCardIn .5s cubic-bezier(.2,.9,.3,1.3) both,yactGlow 1.9s ease-out .3s 1}
@keyframes yactCardIn{0%{opacity:0;transform:translateY(14px) scale(.96)}100%{opacity:1;transform:none}}
@keyframes yactGlow{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}100%{box-shadow:0 0 0 12px transparent}}
.yact-code-top{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--ink-3);margin-bottom:9px}
.yact-code-from{font-weight:650;color:var(--ink-2)}
.yact-code-row{display:flex;align-items:center;gap:12px;margin-bottom:9px}
.yact-code-big{display:flex;gap:5px;font-family:'SF Mono',ui-monospace,Menlo,monospace;font-size:27px;font-weight:800;letter-spacing:1px;color:var(--navy-900)}
.yact-code-big span{display:inline-block}
.yact-code-card.in .yact-code-big span{animation:yactDigit .45s cubic-bezier(.2,.9,.3,1.3) both}
.yact-code-card.in .yact-code-big span:nth-child(1){animation-delay:.26s}
.yact-code-card.in .yact-code-big span:nth-child(2){animation-delay:.32s}
.yact-code-card.in .yact-code-big span:nth-child(3){animation-delay:.38s}
.yact-code-card.in .yact-code-big span:nth-child(4){animation-delay:.44s}
.yact-code-card.in .yact-code-big span:nth-child(5){animation-delay:.50s}
.yact-code-card.in .yact-code-big span:nth-child(6){animation-delay:.56s}
.yact-code-card.in .yact-code-big span:nth-child(7){animation-delay:.62s}
.yact-code-card.in .yact-code-big span:nth-child(8){animation-delay:.68s}
@keyframes yactDigit{0%{opacity:0;transform:translateY(-12px) rotateX(-70deg)}100%{opacity:1;transform:none}}
.yact-copy{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--stroke);border-radius:9px;background:var(--bg-1);padding:7px 12px;font-size:12px;font-weight:600;cursor:pointer;color:var(--ink-1);transition:all .15s;white-space:nowrap}
.yact-copy:hover{border-color:var(--accent);color:var(--accent)}
.yact-copy.ok{background:#2fa98c;border-color:#2fa98c;color:#fff;animation:yactPop .3s}
@keyframes yactPop{0%{transform:scale(.9)}50%{transform:scale(1.06)}100%{transform:scale(1)}}
.yact-copy svg{width:14px;height:14px}
.yact-code-txt{font-size:12px;color:var(--ink-3);line-height:1.5}
@media (prefers-reduced-motion:reduce){.yact-scan-rings i,.yact-scan-core,.yact-dots i,.yact-live i,.yact-code-card.in,.yact-code-card.in .yact-code-big span{animation:none!important}}

/* ===== Подрядчик → доступ в CRM (синхронизация аналитика↔роли) ===== */
.rbac-ctbadge{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:7px;font-size:10px;font-weight:650;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);vertical-align:middle}
.ce-crm-linked{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap;border:1px solid var(--stroke);border-radius:11px;padding:11px 13px;background:var(--bg-2)}
.ce-crm-who{min-width:0}
.ce-crm-st{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:7px;font-size:10px;font-weight:650;vertical-align:middle}
.ce-crm-st.ok{background:rgba(47,169,140,.14);color:#2fa98c}
.ce-crm-st.wait{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}
.ce-crm-acts{display:flex;gap:7px;flex-shrink:0}

/* ===== Защита цепочек от выгорания (automations) ===== */
.cg-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 0}
.cg-row>div:first-child{min-width:0}
.cg-hr{border:0;border-top:1px solid var(--stroke);margin:8px 0}

/* ── Чистая карточка лида на доске (редизайн 2026): имя крупно, минимум шума, действие — только когда нужно ── */
.lead-card{padding:11px 13px}
.lead-card .lc-name-row{display:flex;align-items:center;gap:6px}
.lead-card .lc-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;letter-spacing:-.01em;color:var(--navy-900)}
.lead-card .lc-flag{flex:0 0 auto;display:inline-flex;color:var(--warn)}
.lead-card .lc-flag svg{width:13px;height:13px}
.lead-card .lc-unread{flex:0 0 auto;background:var(--accent);color:#fff;border-radius:9px;padding:1px 6px;font-size:10px;font-weight:700;line-height:1.5}
.lead-card .lc-ctx{margin-top:3px;font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lead-card .lc-act{display:flex;align-items:center;gap:4px;margin-top:7px;font-size:11px;line-height:1.3;color:var(--ink-2)}
.lead-card .lc-act svg{width:12px;height:12px;flex:0 0 auto}
.lead-card .lc-act.over{color:var(--bad,#C0392B);font-weight:600}
.lead-card .lc-foot2{display:flex;align-items:center;gap:6px;margin-top:8px}
.lead-card .lc-resp{display:flex;align-items:center;gap:5px;min-width:0;flex:1}
.lead-card .lc-ava{flex:0 0 auto;width:18px;height:18px;border-radius:50%;background:var(--bg-2);color:var(--ink-2);font-size:9.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.lead-card .lc-rnm{font-size:11px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lead-card .lc-rnm.muted{color:var(--ink-3)}
.lead-card .lc-aidot{display:inline-flex;align-items:center;color:var(--accent);opacity:.72;border:0;padding:0;background:none;flex:0 0 auto}
.lead-card .lc-aidot svg{width:13px;height:13px}
/* чекбокс выделения не должен налезать на имя — освобождаем место при наведении/выделении (класс .top переименован в .lc-name-row) */
.lead-card .lc-name-row{transition:padding-left .22s var(--ease-spring,ease)}
.lead-card:hover .lc-name-row,.lead-card.sel .lc-name-row{padding-left:24px !important}
.lead-card .lc-tm{flex:0 0 auto;margin-left:auto;font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.lead-card .lc-reveal{display:flex;align-items:center;gap:8px;max-height:0;opacity:0;overflow:hidden;margin-top:0;font-size:11px;color:var(--ink-3);transition:max-height .2s ease,opacity .2s ease,margin-top .2s ease}
.lead-card .lc-reveal .tbl-cdot{width:16px;height:16px;font-size:9px;border-radius:5px}
.lead-card:hover .lc-reveal{max-height:28px;opacity:1;margin-top:7px}
@media (hover:none){.lead-card:hover .lc-reveal{max-height:0;opacity:0;margin-top:0}}

/* ── Кликабельные счётчики квалов + попап «квал-лиды» (ручная правка статуса) ── */
.ql-clk{cursor:pointer;border-bottom:1px dashed color-mix(in srgb,var(--accent) 55%,transparent)}
.ql-clk:hover{color:var(--accent)}
.ql-clk-card{cursor:pointer}
.ql-clk-card:hover b{color:var(--accent)}
.ql-sum{font-size:12.5px;color:var(--ink-2);padding:2px 8px 10px;border-bottom:1px solid var(--stroke);margin-bottom:6px}
.ql-sum b{color:var(--navy-900)}
.ql-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:9px}
.ql-row:hover{background:var(--bg-2)}
.ql-fl{flex:0 0 auto;font-size:14px}
.ql-nm{flex:1;min-width:0;display:flex;flex-direction:column;font-size:13px;font-weight:600;color:var(--navy-900);overflow:hidden}
.ql-nm i{font-style:normal;font-weight:400;font-size:11px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ql-rst{flex:0 0 auto;font-size:10.5px;color:var(--ink-3);background:none;border:1px solid var(--stroke);border-radius:7px;padding:3px 8px;cursor:pointer}
.ql-rst:hover{color:var(--navy-900);border-color:var(--ink-3)}
.ql-tog{flex:0 0 auto;font-size:11.5px;font-weight:600;border-radius:8px;padding:5px 11px;cursor:pointer;border:1px solid var(--stroke);background:var(--card);color:var(--ink-3)}
.ql-tog.on{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.ql-tog:hover{border-color:var(--accent)}

/* RBAC: раздел, закрытый ролью — пунктир (кликабелен, открывается персонально); открыт сверх роли — акцент */
.rbac-sec.byrole{border-style:dashed}
.rbac-sec.byrole:hover{transform:translateY(-1px)}
.rbac-sec.granted{border-style:solid;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 60%,transparent)}

.ql-nm.ql-open{background:none;border:0;text-align:left;font-family:inherit;cursor:pointer;padding:0}
.ql-nm.ql-open:hover,.ql-nm.ql-open:hover i{color:var(--accent)}
.ql-nm.ql-open i svg{width:11px;height:11px;vertical-align:-1px;opacity:.55}
.ql-pot{flex:0 0 auto;font-size:10px;font-weight:600;color:var(--warn);background:var(--warn-bg);border-radius:7px;padding:2px 7px}
.lc-qlback{display:inline-flex;align-items:center;gap:5px;background:var(--bg-2);border:1px solid var(--stroke);border-radius:9px;padding:6px 12px;font-size:12px;font-weight:600;color:var(--ink-2);cursor:pointer;margin:0 0 12px;font-family:inherit}
.lc-qlback:hover{color:var(--accent);border-color:var(--accent)}
.lc-qlback svg{width:13px;height:13px;transform:rotate(180deg)}

.cd-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:9px;cursor:pointer}
.cd-row:hover{background:var(--bg-2)}
.cd-nm{display:flex;flex-direction:column;min-width:0;font-size:13px;font-weight:600;color:var(--navy-900)}
.cd-nm i{font-style:normal;font-weight:400;font-size:11px;color:var(--ink-3)}
.lc-ctrl-row{margin:0 0 12px}
.lc-ctrl{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer}
.lc-ctrl i{font-style:normal;font-weight:400;font-size:11px;color:var(--ink-3)}
/* скор-карта ИИ-звонка (голосовой агент) */
.lc-vc{border:1px solid var(--stroke);border-radius:13px;background:var(--card,#fff);padding:14px 15px;margin-bottom:12px}
.lc-vc-hd{display:flex;align-items:center;gap:8px;font-size:14px}
.lc-vc-hd svg{width:16px;height:16px;color:var(--accent)}
.lc-vc-hd b{font-weight:650}
.lc-vc-meta{color:var(--muted);font-size:12px}
.lc-vc-score{margin-left:auto;font-size:21px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.lc-vc-score small{font-size:11px;font-weight:600;color:var(--muted)}
.lc-vc-score.hi{color:#15935a}.lc-vc-score.mid{color:#b9770f}.lc-vc-score.lo{color:#d23b3b}
.lc-vc-verdict{margin-top:9px;font-size:13px;color:var(--ink-2);line-height:1.5}
.lc-vc-jts{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.lc-vc-jt{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;background:var(--bg-2);border:1px solid var(--stroke);border-radius:999px;padding:4px 10px}
.lc-vc-jt i{font-style:normal;font-weight:500;color:var(--muted)}
.lc-vc-dims{margin-top:12px;display:flex;flex-direction:column;gap:7px}
.lc-vc-dim{display:grid;grid-template-columns:118px 1fr 26px;align-items:center;gap:9px;font-size:12px}
.lc-vc-dim>span:first-child{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-vc-bar{height:6px;border-radius:999px;background:var(--stroke);overflow:hidden}
.lc-vc-bar i{display:block;height:100%;background:var(--accent);border-radius:999px}
.lc-vc-dim b{text-align:right;font-weight:650;font-variant-numeric:tabular-nums}
.lc-vc-fix{display:flex;gap:8px;align-items:flex-start;margin-top:11px;font-size:12.5px;color:var(--ink-2);background:var(--accent-weak,rgba(120,110,90,.08));border-radius:9px;padding:9px 11px}
.lc-vc-fix svg{width:15px;height:15px;color:var(--accent);flex:0 0 auto;margin-top:1px}
.lc-vc-tr{font-size:12.5px;line-height:1.6;color:var(--ink-2);max-height:280px;overflow:auto}
/* панель ROI реанимации */
.wroi{margin-bottom:14px}
.wroi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--stroke);border-radius:12px;overflow:hidden;margin-top:12px}
.wroi-t{background:var(--card,#fff);padding:14px 16px;display:flex;flex-direction:column;gap:3px}
.wroi-v{font-size:22px;font-weight:720;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink)}
.wroi-v small{font-size:12px;font-weight:600;color:var(--muted)}
.wroi-k{font-size:12px;color:var(--muted)}
.wroi-t.hi .wroi-v{color:#15935a}
.wroi-t.ok .wroi-v{color:var(--accent)}
/* ═══════════ Помощник брокера — премиум-виджет + моушен ═══════════ */
.lasst{position:fixed;right:22px;bottom:92px;z-index:849;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.lasst[hidden]{display:none}
/* ── пилюля ── */
.lasst-pill{position:relative;display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 15px 0 13px;border-radius:21px;border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);font-size:13.5px;font-weight:650;letter-spacing:-.01em;cursor:pointer;box-shadow:0 8px 24px -10px rgba(6,17,38,.3);transition:transform .35s cubic-bezier(.34,1.56,.46,1),box-shadow .3s,border-color .3s;overflow:hidden}
.lasst-pill:hover{transform:translateY(-2px);box-shadow:0 14px 32px -10px rgba(6,17,38,.4)}
.lasst-pill:active{transform:translateY(0) scale(.98)}
.lasst-pill .lasst-orb{position:absolute;left:-30%;top:-60%;width:70%;height:220%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%);opacity:0;transition:opacity .4s;pointer-events:none}
.lasst-pill.has{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.lasst-pill.has .lasst-orb{opacity:1;animation:laOrb 3.4s ease-in-out infinite}
@keyframes laOrb{0%,100%{transform:translateX(0) scale(1);opacity:.5}50%{transform:translateX(30%) scale(1.15);opacity:.9}}
.lasst-ic{width:18px;height:18px;display:inline-flex;color:var(--accent);flex:0 0 auto}
.lasst-ic svg{width:18px;height:18px}
.lasst-ic .sp-a{transform-origin:12px 9px;animation:laTw 3.2s ease-in-out infinite}
.lasst-ic .sp-b{transform-origin:19px 17px;opacity:.85;animation:laTw 3.2s ease-in-out .5s infinite}
@keyframes laTw{0%,100%{transform:scale(1);opacity:1}45%{transform:scale(.6) rotate(-12deg);opacity:.55}}
.lasst-badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 88%,#fff),var(--accent));color:#fff;font-size:11.5px;font-weight:750;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 8px -2px color-mix(in srgb,var(--accent) 60%,transparent)}
.lasst-badge.pop{animation:laPop .5s cubic-bezier(.34,1.8,.5,1)}
@keyframes laPop{0%{transform:scale(1)}35%{transform:scale(1.45)}100%{transform:scale(1)}}
/* ── панель ── */
.lasst-panel{width:356px;max-width:calc(100vw - 32px);max-height:min(74vh,580px);overflow:auto;background:var(--card,#fff);border:1px solid var(--line);border-radius:18px;padding:0 16px 16px;box-shadow:0 28px 64px -18px rgba(6,17,38,.5),0 2px 8px -2px rgba(6,17,38,.2);transform-origin:bottom right}
.lasst.open .lasst-panel:not([hidden]){animation:laPanel .32s cubic-bezier(.16,1,.3,1)}
.lasst-panel[hidden]{display:none}
@keyframes laPanel{0%{opacity:0;transform:translateY(14px) scale(.94)}100%{opacity:1;transform:translateY(0) scale(1)}}
.lasst-panel::-webkit-scrollbar{width:0}
/* header (липкий, с градиентом) */
.la-hd{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:8px;padding:15px 0 11px;margin-bottom:2px;background:linear-gradient(var(--card,#fff) 72%,transparent)}
.la-hd-ic{width:17px;height:17px;color:var(--accent);display:inline-flex}.la-hd-ic svg{width:17px;height:17px}
.la-hd-ic .sp-a{transform-origin:12px 9px;animation:laTw 3.2s ease-in-out infinite}
.la-hd b{font-size:14.5px;letter-spacing:-.01em}
.la-pos{font-size:11.5px;color:var(--muted);margin-left:auto;font-variant-numeric:tabular-nums}
.la-x{width:28px;height:28px;border-radius:9px;border:0;background:transparent;color:var(--muted);font-size:15px;cursor:pointer;transition:.15s}.la-x:hover{background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}
/* сегменты по типу */
.la-segs{display:flex;gap:5px;margin:0 0 12px;overflow-x:auto;scrollbar-width:none}.la-segs::-webkit-scrollbar{display:none}
.la-seg{flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:11px;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer;transition:.18s cubic-bezier(.2,.9,.3,1);white-space:nowrap}
.la-seg i{font-style:normal;font-size:10.5px;padding:0 5px;border-radius:7px;background:color-mix(in srgb,var(--ink) 8%,transparent);min-width:15px;text-align:center}
.la-seg.on{background:var(--ink);color:var(--card,#fff);border-color:var(--ink)}.la-seg.on i{background:rgba(255,255,255,.22)}
.la-seg.qf.on{background:#15935a;border-color:#15935a}.la-seg.as.on{background:var(--accent);border-color:var(--accent)}.la-seg.cl.on{background:#c47f2e;border-color:#c47f2e}
/* карточка */
.la-card{animation:laFade .34s cubic-bezier(.16,1,.3,1) both}
.la-card.slide-l{animation:laSlideL .3s cubic-bezier(.16,1,.3,1) both}
.la-card.slide-r{animation:laSlideR .3s cubic-bezier(.16,1,.3,1) both}
@keyframes laFade{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:none}}
@keyframes laSlideL{0%{opacity:0;transform:translateX(26px)}100%{opacity:1;transform:none}}
@keyframes laSlideR{0%{opacity:0;transform:translateX(-26px)}100%{opacity:1;transform:none}}
.la-top{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.la-ava{width:40px;height:40px;flex:0 0 auto;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#fff;background:linear-gradient(135deg,hsl(var(--h,220) 62% 58%),hsl(calc(var(--h,220) + 24) 64% 48%));box-shadow:0 5px 14px -5px hsl(var(--h,220) 60% 50% / .55)}
.la-top-m{flex:1;min-width:0}
.la-lead{font-size:15px;font-weight:700;color:var(--ink);cursor:pointer;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.la-lead:hover{color:var(--accent)}
.la-meta{display:flex;align-items:center;gap:7px;margin-top:3px;flex-wrap:wrap}
.la-age{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--muted)}.la-age svg{width:11px;height:11px;opacity:.7}
.la-age.warn{color:#c47f2e;font-weight:600}
.la-src{font-size:10.5px;color:var(--muted);background:color-mix(in srgb,var(--ink) 6%,transparent);padding:1px 7px;border-radius:7px}
.la-score{flex:0 0 auto;min-width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--ink);background:color-mix(in srgb,var(--accent) 12%,transparent);font-variant-numeric:tabular-nums}
.la-tbadge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;padding:4px 9px;border-radius:9px;margin-bottom:9px}
.la-tbadge svg{width:13px;height:13px}
.la-tbadge.qf{color:#15935a;background:color-mix(in srgb,#15935a 11%,transparent)}
.la-tbadge.as{color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,transparent)}
.la-tbadge.cl{color:#c47f2e;background:color-mix(in srgb,#c47f2e 12%,transparent)}
.la-title{font-size:16.5px;font-weight:720;letter-spacing:-.015em;line-height:1.25;margin-bottom:4px}
.la-reason{font-size:12.5px;color:var(--muted);line-height:1.5}
/* переход стадий */
.la-stage{display:flex;align-items:center;gap:0;margin:12px 0}
.la-sp{font-size:11.5px;font-weight:600;padding:5px 11px;border-radius:9px;white-space:nowrap}
.la-sp.from{background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--muted)}
.la-sp.to{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);animation:laStageTo .5s .15s cubic-bezier(.34,1.56,.46,1) both}
@keyframes laStageTo{0%{opacity:0;transform:translateX(-8px) scale(.9)}100%{opacity:1;transform:none}}
.la-arr{display:inline-flex;color:var(--muted);margin:0 2px;animation:laArr 1.4s ease-in-out infinite}.la-arr svg{width:16px;height:16px}
@keyframes laArr{0%,100%{transform:translateX(0);opacity:.55}50%{transform:translateX(3px);opacity:1}}
/* шкала уверенности */
.la-conf{margin:13px 0 2px}
.la-conf-h{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);margin-bottom:5px}.la-conf-h b{color:var(--ink);font-variant-numeric:tabular-nums}
.la-conf-bar{height:6px;border-radius:3px;background:color-mix(in srgb,var(--ink) 8%,transparent);overflow:hidden}
.la-conf-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#15935a,color-mix(in srgb,#15935a 70%,var(--accent)));animation:laBar .7s .1s cubic-bezier(.16,1,.3,1) both;transform-origin:left}
@keyframes laBar{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}
/* почему + критерии */
.la-why{display:inline-flex;align-items:center;gap:3px;margin:11px 0 0;background:none;border:0;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;padding:0}.la-why svg{width:13px;height:13px;transition:transform .2s}
.la-why-body{margin:9px 0 2px;display:flex;flex-direction:column;gap:8px}
.la-cr{display:flex;gap:9px;align-items:flex-start;font-size:12px;animation:laCr .34s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--i,0)*45ms + 60ms)}
@keyframes laCr{0%{opacity:0;transform:translateY(5px)}100%{opacity:1;transform:none}}
.la-cr-d{width:9px;height:9px;border-radius:50%;margin-top:3px;flex:0 0 auto;position:relative}
.la-cr.ok .la-cr-d{background:#15935a}.la-cr.miss .la-cr-d{background:#c47f2e}.la-cr.warn .la-cr-d{background:#e0b03b;box-shadow:0 0 0 3px color-mix(in srgb,#e0b03b 20%,transparent)}
.la-cr b{font-weight:600}.la-cr i{display:block;color:var(--muted);font-style:italic;margin-top:1px;line-height:1.4}
/* действия */
.la-row{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}
.la-btn.la-dismiss{color:var(--ink-2)}
.la-btn.la-dismiss:hover{background:color-mix(in srgb,#c0392b 10%,transparent);border-color:color-mix(in srgb,#c0392b 35%,var(--line));color:#a5281a}
.la-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 15px;border-radius:12px;font-size:13px;font-weight:650;cursor:pointer;border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);transition:transform .14s,box-shadow .2s,background .2s}
.la-btn svg{width:15px;height:15px}
.la-btn:active{transform:scale(.96)}
.la-btn.la-primary{flex:1 1 100%;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 90%,#fff),var(--accent));border-color:transparent;color:#fff;box-shadow:0 8px 20px -8px color-mix(in srgb,var(--accent) 65%,transparent)}
.la-btn.la-primary:hover{box-shadow:0 12px 26px -8px color-mix(in srgb,var(--accent) 70%,transparent)}
.la-btn.la-primary:disabled{opacity:.7;cursor:default}
.la-btn.la-ghost:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}
.la-btn.la-icon{width:38px;padding:0;font-size:18px;line-height:1}
.la-noperm{flex:1;font-size:12px;color:var(--muted)}
.la-spin{width:15px;height:15px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:laSpin .7s linear infinite}
@keyframes laSpin{to{transform:rotate(360deg)}}
/* выбор брокера */
.la-brokers{display:flex;flex-direction:column;gap:6px;margin-top:13px;animation:laFade .28s both}
.la-brk{display:flex;align-items:center;gap:10px;text-align:left;padding:9px 11px;border-radius:12px;border:1px solid var(--line);background:var(--card,#fff);font-size:13px;font-weight:600;cursor:pointer;transition:.15s}
.la-brk:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent);transform:translateX(2px)}
.la-brk-a{width:28px;height:28px;flex:0 0 auto;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;background:linear-gradient(135deg,hsl(var(--h,220) 62% 58%),hsl(calc(var(--h,220) + 24) 64% 48%))}
/* навигация по очереди */
.la-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.la-navb{width:30px;height:30px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.la-navb svg{width:15px;height:15px}.la-navb#laPrev svg{transform:rotate(180deg)}
.la-navb:hover:not(:disabled){background:color-mix(in srgb,var(--ink) 6%,transparent)}.la-navb:disabled{opacity:.3;cursor:default}
.la-dots{display:flex;gap:6px;align-items:center}
.la-dot{width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--ink) 20%,transparent);cursor:pointer;transition:.25s cubic-bezier(.34,1.56,.46,1)}
.la-dot.on{width:18px;border-radius:3px;background:var(--accent)}
.la-all{margin-top:13px;width:100%;background:none;border:0;border-top:1px solid var(--line);padding:12px 0 0;color:var(--muted);font-size:12px;cursor:pointer;text-align:left;transition:.15s}.la-all:hover{color:var(--ink)}
/* готово (успех) */
.la-done{display:flex;flex-direction:column;align-items:center;gap:14px;padding:18px 0 4px;animation:laFade .3s both}
.la-celebrate{position:relative;width:64px;height:64px}
.la-ckmk{width:64px;height:64px}
.la-ckmk circle{fill:none;stroke:#15935a;stroke-width:3;stroke-dasharray:151;stroke-dashoffset:151;animation:laCircle .5s cubic-bezier(.65,0,.45,1) forwards}
.la-ckmk path{fill:none;stroke:#15935a;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:laCheck .35s .45s cubic-bezier(.65,0,.45,1) forwards}
@keyframes laCircle{to{stroke-dashoffset:0}}@keyframes laCheck{to{stroke-dashoffset:0}}
.la-spk{position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;background:#15935a;opacity:0;animation:laSpark .6s .5s cubic-bezier(.2,.8,.3,1) forwards}
.la-spk.s1{--tx:-34px;--ty:-20px}.la-spk.s2{--tx:34px;--ty:-22px}.la-spk.s3{--tx:-30px;--ty:24px}.la-spk.s4{--tx:32px;--ty:22px;background:var(--accent)}.la-spk.s5{--tx:0;--ty:-38px;background:var(--accent)}
@keyframes laSpark{0%{opacity:1;transform:translate(-50%,-50%) scale(.3)}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(1)}}
.la-done-t{font-size:15px;font-weight:700;color:var(--ink)}
.la-done .la-row{width:100%}
/* служебное */
.la-empty{font-size:12.5px;color:var(--muted);line-height:1.55;padding:22px 6px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.la-empty span{display:block}.la-empty-ic{width:34px;height:34px;color:color-mix(in srgb,var(--accent) 70%,var(--muted))}.la-empty-ic svg{width:34px;height:34px}
.la-empty2{font-size:12px;color:var(--muted);padding:6px 0}
.la-skel{display:flex;flex-direction:column;gap:10px;padding:10px 0}.la-skel i{height:15px;border-radius:8px;background:linear-gradient(90deg,color-mix(in srgb,var(--ink) 7%,transparent),color-mix(in srgb,var(--ink) 12%,transparent),color-mix(in srgb,var(--ink) 7%,transparent));background-size:200% 100%;animation:laShimmer 1.3s linear infinite}.la-skel i:nth-child(2){width:72%}.la-skel i:nth-child(3){width:46%}
@keyframes laShimmer{to{background-position:-200% 0}}
.la-list{display:flex;flex-direction:column;gap:3px}
.la-li{display:flex;align-items:center;gap:9px;justify-content:space-between;padding:10px 11px;border-radius:11px;border:1px solid transparent;background:transparent;cursor:pointer;text-align:left;transition:.14s}.la-li:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}
.la-li b{font-size:13px;font-weight:600}.la-li span{font-size:11px;color:var(--muted)}
.la-menu{position:fixed;z-index:950;background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 38px -12px rgba(6,17,38,.42);padding:5px;min-width:160px;display:flex;flex-direction:column;animation:laFade .14s both}
.la-menu button{text-align:left;padding:9px 11px;border:0;background:transparent;border-radius:9px;font-size:13px;color:var(--ink);cursor:pointer}.la-menu button:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}
@media (max-width:560px){.lasst{right:12px;left:12px;bottom:84px;align-items:stretch}.lasst-panel{width:auto}.lasst-pill{align-self:flex-end}}
@media (prefers-reduced-motion:reduce){.lasst-panel,.la-card,.la-cr,.la-conf-bar i,.la-sp.to,.la-done,.la-brokers,.la-menu{animation:none!important}.la-ckmk circle,.la-ckmk path{animation-duration:.01s}.la-spk,.la-arr,.lasst-pill.has .lasst-orb,.lasst-ic .sp-a,.lasst-ic .sp-b,.la-hd-ic .sp-a{animation:none}.la-skel i{animation:none}}

/* спиннер на кнопке покупки номера (предохранитель от двойного клика) */
.nc-spin{display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ncSpin .7s linear infinite;vertical-align:-1px;margin-right:6px}
@keyframes ncSpin{to{transform:rotate(360deg)}}

/* ── Карта доступов (mind-карта команды) ── */
.roles-viewbar{display:flex;justify-content:flex-end;margin:0 0 12px}
.rmap-wrap{margin-top:2px}
.rmap-hint{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-bottom:11px;line-height:1.5}
.rmap-hint>svg{width:15px;height:15px;color:var(--accent);flex:none}
.rmap-hint>span{flex:1;min-width:200px}
.rmap-reset{flex:none}
.rmap-canvas{position:relative;overflow:auto;border:1px solid var(--stroke);border-radius:16px;min-height:420px;background:radial-gradient(circle at 1px 1px, color-mix(in srgb,var(--ink-1,#222) 9%,transparent) 1px, transparent 0) 0 0/22px 22px, var(--bg-2)}
.rmap-links{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;z-index:0}
.rmap-link{fill:none;stroke:color-mix(in srgb,var(--accent) 42%,var(--stroke));stroke-width:2}
.rmap-node{position:absolute;width:258px;box-sizing:border-box;background:var(--card);border:1px solid var(--stroke);border-radius:14px;padding:11px 12px;box-shadow:0 8px 20px -13px rgba(16,24,48,.3);z-index:1;touch-action:none}
.rmap-node:hover{box-shadow:0 10px 24px -12px rgba(16,24,48,.38)}
.rmap-node.dragging{box-shadow:0 18px 38px -10px rgba(16,24,48,.45);z-index:6;opacity:.98;cursor:grabbing}
.rmap-agency{width:204px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 13%,var(--card)),var(--card));border-color:color-mix(in srgb,var(--accent) 30%,var(--stroke))}
.rmap-logo{width:30px;height:30px;border-radius:9px;background:color-mix(in srgb,var(--accent) 16%,transparent);display:grid;place-items:center;color:var(--accent);margin-bottom:7px}
.rmap-logo svg{width:17px;height:17px}
.rmap-ag-nm b{display:block;font-size:14px;color:var(--ink-1)}
.rmap-ag-nm i{font-size:10.5px;color:var(--muted)}
.rmap-role{width:232px}
.rmap-role-hd{display:flex;align-items:center;gap:7px}
.rmap-role-hd b{font-size:13.5px;color:var(--ink-1)}
.rmap-role-hd span{font-size:11px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-radius:20px;padding:1px 7px;font-weight:600}
.rmap-role-sub{display:block;font-size:10.5px;color:var(--muted);margin:3px 0 7px}
.rmap-p-hd{display:flex;align-items:center;gap:8px}
.rmap-ava{width:28px;height:28px;border-radius:50%;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-size:11px;font-weight:700;display:grid;place-items:center;overflow:hidden;flex:none}
.rmap-ava img{width:100%;height:100%;object-fit:cover}
.rmap-p-id{flex:1;min-width:0}
.rmap-p-id b{display:block;font-size:13px;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rmap-roleSel{font-size:10.5px;padding:1px 5px;margin-top:2px;max-width:100%}
.rmap-del{flex:none;opacity:.45;padding:2px}
.rmap-del:hover{opacity:1;color:var(--bad,#c0392b)}
.rmap-del svg{width:13px;height:13px}
.rmap-secs{display:flex;flex-wrap:wrap;gap:4px;margin-top:9px}
.rmap-sec{font-size:10px;padding:2px 7px;border-radius:7px;border:1px solid var(--stroke);background:var(--bg-2);color:var(--ink-2);cursor:pointer;line-height:1.55;transition:background .1s,border-color .1s,color .1s,opacity .1s;white-space:nowrap}
.rmap-sec.on{background:color-mix(in srgb,#129b6e 12%,transparent);border-color:color-mix(in srgb,#129b6e 32%,var(--stroke));color:#0f7a56}
.rmap-sec.off{opacity:.5}
.rmap-sec.byrole{border-style:dashed}
.rmap-sec.granted{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:color-mix(in srgb,var(--accent) 34%,var(--stroke));color:var(--accent);border-style:solid}

/* ── Карта доступов v2: компактные узлы + отделы ── */
.rmap-secs[hidden]{display:none}
.rmap-groupbar{display:flex;align-items:center;gap:10px;margin:0 0 12px;flex-wrap:wrap}
.rmap-groupbar .rmap-gl{font-size:12px;color:var(--muted)}
.rmap-groupbar .seg-toggle{flex:none}
.rmap-groupbar [data-deptadd]{margin-left:auto}
/* сводка доступа (плотность + N/M), сворачивает чипы */
.rmap-acc{display:flex;align-items:center;gap:8px;width:100%;margin-top:9px;padding:6px 8px;border:1px solid var(--stroke);border-radius:9px;background:var(--bg-2);cursor:pointer;transition:border-color .12s,background .12s}
.rmap-acc:hover{border-color:color-mix(in srgb,var(--accent) 30%,var(--stroke))}
.rmap-acc-bar{display:flex;gap:1.5px;flex:1;min-width:0;height:14px;align-items:center}
.rmap-acc-bar i{flex:1;height:100%;border-radius:1.5px;background:color-mix(in srgb,var(--ink-3,#999) 22%,transparent)}
.rmap-acc-bar i.on{background:#2FA98C}
.rmap-acc-n{flex:none;font-size:11px;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}
.rmap-acc-chev{flex:none;display:grid;place-items:center;color:var(--muted);transition:transform .15s}
.rmap-acc-chev svg{width:13px;height:13px}
.rmap-acc.open .rmap-acc-chev{transform:rotate(180deg)}
/* общий узел-группа (роль/отдел) */
.rmap-cnt{font-size:11px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-radius:20px;padding:1px 7px;font-weight:600;margin-left:auto}
.rmap-role-ic{display:grid;place-items:center;color:var(--accent)}
.rmap-role-ic svg{width:15px;height:15px}
.rmap-role-hd{display:flex;align-items:center;gap:7px}
/* отдел */
.rmap-dept{width:238px;border-left:3px solid var(--dept,#2563EB)}
.rmap-dept-hd{display:flex;align-items:center;gap:8px}
.rmap-dept-emoji{font-size:19px;line-height:1;background:none;border:0;padding:0;cursor:default}
.rmap-dept-nm{font-size:14px;color:var(--ink-1);outline:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.rmap-dept-menu{flex:none;opacity:.5;padding:2px}
.rmap-dept-menu:hover{opacity:1;color:var(--accent)}
.rmap-dept-menu svg{width:14px;height:14px}
.rmap-dept-none{border-left-style:dashed;opacity:.92}
.rmap-dept-hint{display:block;font-size:10.5px;color:var(--muted);margin-top:6px;line-height:1.4}
.rmap-node.droptarget{box-shadow:0 0 0 3px color-mix(in srgb,var(--dept,#2563EB) 60%,transparent);border-color:var(--dept,#2563EB)}
.rmap-deptSel{margin-top:8px;width:100%;font-size:11px}
/* модалка отдела */
.dept-ed .lc-lbl{display:block;font-size:11.5px;color:var(--ink-2);margin-bottom:5px;font-weight:600}
.dept-emoji-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:5px}
.dept-em{font-size:19px;line-height:1;aspect-ratio:1;border:1px solid var(--stroke);border-radius:9px;background:var(--bg-2);cursor:pointer;transition:border-color .1s,background .1s}
.dept-em:hover{background:var(--card)}
.dept-em.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.dept-color-grid{display:flex;gap:8px;flex-wrap:wrap}
.dept-col{width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer;box-shadow:0 0 0 1px var(--stroke)}
.dept-col.on{border-color:var(--card);box-shadow:0 0 0 2px var(--ink-2)}
.btn.btn-danger{background:color-mix(in srgb,#c0392b 14%,transparent);color:#c0392b;border-color:color-mix(in srgb,#c0392b 30%,var(--stroke))}
