/* MultiBar 1.9.9 — редактор схемы зала: при включённых обоях экран редактора оставался прозрачным,
   и шапка приложения с нижним меню просвечивали сквозь него (элементы «налезали» друг на друга). */
html[data-wallpaper]:not([data-wallpaper="none"]) .hall-overlay.is-edit.mb-as-tab.open,
html[data-wallpaper]:not([data-wallpaper="none"]) .hall-overlay.is-edit.open {
    background: rgb(var(--bg-rgb)) !important; background-image: none !important;
}

/* История инвентаризации (Остатки) */
.res-hist-row { display: flex; gap: 8px; margin-top: 8px; }
.res-hist-row .btn-main { flex: 1 1 0; min-width: 0; padding: 11px 8px; font-size: 13px; }
.ih-tools { display: flex; gap: 8px; margin: 0 0 8px; }
.ih-row small { opacity: .6; font-weight: 500; }
.ih-row b { white-space: nowrap; }
.ih-neg { color: var(--danger, #e24c4c); font-style: normal; }
.ih-pos { color: var(--success, #1f9d6b); font-style: normal; }
#inv-hist-actions { display: flex; flex-wrap: wrap; gap: 8px; }
#inv-hist-actions .btn-main { flex: 1 1 100px; }

.bk-sub { margin: 10px 2px 4px; font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; opacity: .55; }

/* Помощник: подсказки с «×», история разговоров, звёздочка у своего сообщения */
.mb-ai-chipw { position: relative; display: inline-flex; align-items: center; flex: 0 0 auto !important; max-width: 100%; }
.mb-ai-chipw .mb-ai-chip { padding-right: 26px; }
.mb-ai-chipx { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; border: 0; border-radius: 50%; background: transparent; color: var(--primary); opacity: .7; font-size: 15px; line-height: 1; padding: 0; }
.mb-ai-link { flex: 0 0 100%; border: 0; background: transparent; color: var(--primary); font: inherit; font-size: 12.5px; font-weight: 700; text-align: left; padding: 6px 2px; }
.mb-ai-msg.me { position: relative; }
.mb-ai-star { margin-left: 6px; border: 0; background: transparent; color: inherit; opacity: .55; font-size: 14px; line-height: 1; padding: 0 0 0 2px; vertical-align: -1px; }
.mb-ai-star.on { opacity: 1; }
.mb-ai-hbtn.on { color: var(--primary); background: rgba(var(--primary-rgb), .12); }
.mb-ai-hist { display: flex; flex-direction: column; gap: 6px; }
.mb-ai-hist-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 2px; }
.mb-ai-hist-h b { font-size: 16px; }
.mb-ai-hist-h .mb-ai-link { flex: 0 0 auto; text-align: right; }
.mb-ai-hrow { display: flex; align-items: stretch; gap: 6px; }
.mb-ai-hopen { flex: 1 1 auto; min-width: 0; text-align: left; padding: 10px 12px; border-radius: 12px; border: 1.5px solid var(--border, rgba(127,127,127,.25)); background: rgba(var(--card-rgb), .7); color: var(--text); font: inherit; display: flex; flex-direction: column; gap: 2px; }
.mb-ai-hopen b { font-size: 14.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mb-ai-hopen small { font-size: 12px; opacity: .6; }
.mb-ai-hren, .mb-ai-hok, .mb-ai-hno { flex: 0 0 40px; border: 0; border-radius: 12px; background: transparent; color: var(--text-muted, inherit); opacity: .75; display: inline-flex; align-items: center; justify-content: center; }
.mb-ai-hok { color: var(--primary); opacity: 1; background: rgba(var(--primary-rgb), .12); }
.mb-ai-hin { flex: 1 1 auto; min-width: 0; font: inherit; font-size: 15px; padding: 10px 12px; border-radius: 12px; border: 1.5px solid var(--primary); background: rgba(var(--card-rgb), .9); color: inherit; outline: none; }
.mb-ai-hdel { flex: 0 0 40px; border: 0; border-radius: 12px; background: transparent; color: var(--danger, #e24c4c); opacity: .75; display: inline-flex; align-items: center; justify-content: center; }
.mb-ai-hist-empty { display: flex; flex-direction: column; gap: 6px; padding: 30px 8px; text-align: center; }
.mb-ai-hist-empty span { font-size: 13px; opacity: .6; }
.inv-w-hint { flex: 1 0 100%; font-size: 12px; color: var(--text-muted, #777); line-height: 1.35; margin-top: 4px; }
.inv-fact-footer { flex-wrap: wrap; }
.mb-ai-bar { position: relative; }
.mb-ai-mhint { position: absolute; left: 12px; right: 12px; bottom: 100%; margin-bottom: 6px; padding: 8px 12px; border-radius: 12px; background: rgba(var(--primary-rgb, 124,58,237), .95); color: #fff; font-size: 13px; text-align: center; pointer-events: none; }
.mb-ai-mhint[hidden] { display: none; }
.mb-ai-mic { touch-action: none; user-select: none; -webkit-user-select: none; }
.hf-chips { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
.hf-chips .hall-chip { flex: 0 0 auto; }
.hf-f input[type="time"], .hf-step input[type="time"] { min-height: 44px; font: inherit; }
.oh-it { align-items: center; }
.oh-del { flex: 0 0 auto; width: 32px; height: 32px; margin-left: 6px; border: 0; border-radius: 8px; background: transparent; color: var(--text-muted, #888); display: inline-flex; align-items: center; justify-content: center; }
.oh-del:active { background: rgba(239,68,68,.15); color: #ef4444; }
.oh-delg { display: block; width: 100%; margin-top: 6px; padding: 10px; border: 1px dashed rgba(239,68,68,.5); border-radius: 10px; background: transparent; color: #ef4444; font: inherit; font-size: 13px; }

/* 1.9.10: выход из чата — список не просвечивает сквозь уезжающую комнату (раньше был «призрак» ~0,3 с) */
.chat-screen[data-view="room"] .chat-list-pane { opacity: 0; transform: translateX(-12%); transition: transform .26s cubic-bezier(.2,.8,.2,1), opacity .12s ease, visibility 0s linear .26s; }
.chat-screen[data-view="list"] .chat-list-pane { transition: transform .26s cubic-bezier(.2,.8,.2,1), opacity .12s ease .14s, visibility 0s; }
.chat-screen[data-view="list"] .chat-room-pane { transition: transform .26s cubic-bezier(.2,.8,.2,1), opacity .12s ease, visibility 0s linear .26s; }
.chat-screen[data-view="list"] .chat-room-pane { opacity: 0; }
.chat-screen[data-view="room"] .chat-room-pane { opacity: 1; }
@media (min-width: 860px) { .chat-screen[data-view] > .chat-list-pane, .chat-screen[data-view] > .chat-room-pane { opacity: 1 !important; } }

/* 1.9.11: «Каталог заказа» — список поставщиков не прокручивается внутри себя (раньше нижние позиции пропадали под кнопкой «Закрыть»):
   листается весь экран каталога, внизу — запас под кнопку */
#orders-admin-overlay #orders-minimums-list, #orders-admin-overlay #orders-locations-list, #orders-admin-overlay .orders-cat-manager-list { max-height: none !important; overflow: visible !important; }
#orders-admin-overlay .orders-admin-body { padding-bottom: 24px !important; }
#orders-admin-overlay .overlay-actions { padding-top: 10px; border-top: 1px solid var(--border); background: var(--card, var(--bg)); }

/* порядок в «Истории заказов»: название — слева, количество — ровным столбцом справа, × — в одной колонке */
.oh-it { display: grid !important; grid-template-columns: minmax(0, 1fr) auto 32px; align-items: center; column-gap: 10px; }
.oh-it > span { min-width: 0; overflow-wrap: anywhere; }
.oh-it > b { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; min-width: 64px; }
.oh-it > .oh-del { margin: 0; justify-self: end; }
.oh-it:not(:has(.oh-del)) { grid-template-columns: minmax(0, 1fr) auto; }

/* помощник: кнопка «прослушать», метка фото, кнопки шапки */
.mb-ai-imgchip { position: absolute; left: 12px; bottom: 100%; margin-bottom: 6px; padding: 6px 12px; border: 0; border-radius: 999px; background: rgba(var(--primary-rgb), .95); color: #fff; font: inherit; font-size: 13px; }

/* 1.9.12: поле ввода помощника растёт (виден весь текст) */
textarea.mb-ai-in { height: 44px; min-height: 44px; max-height: 150px; resize: none; padding: 11px 14px; line-height: 20px; border-radius: 22px; box-sizing: border-box; overflow-y: hidden; font-family: inherit; }
.mb-ai-bar { align-items: flex-end; }


/* 1.9.23 — панель записи голоса, как в Claude */
.mb-ai-bar.rec > :not(.mb-ai-rec) { display: none !important; }
.mb-ai-rec { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 2px 2px 0; }
.mb-ai-rec[hidden] { display: none !important; }
.mb-ai-rec-txt { min-height: 44px; max-height: 120px; overflow-y: auto; padding: 10px 14px; border-radius: 18px; background: var(--bg); border: 1.5px solid var(--border); color: var(--text); font-size: 16px; line-height: 22px; word-break: break-word; }
.mb-ai-rec-txt.empty { color: var(--muted, #94a3b8); }
.mb-ai-rec-txt.warn { color: #f59e0b; }
.mb-ai-rec-row { display: flex; align-items: center; gap: 10px; }
.mb-ai-rec-st { display: inline-flex; align-items: center; gap: 8px; color: var(--text); font-size: 15px; font-variant-numeric: tabular-nums; }
.mb-ai-rec-dot { width: 10px; height: 10px; border-radius: 50%; background: #ef4444; animation: mbAiPulse 1.2s infinite; }
.mb-ai-rec-sp { flex: 1 1 auto; }
.mb-ai-rbtn { flex: 0 0 auto; width: 46px; height: 46px; border-radius: 50%; border: 0; display: inline-flex; align-items: center; justify-content: center; background: rgba(148,163,184,.18); color: var(--text); }
.mb-ai-rbtn.ok { background: rgba(var(--primary-rgb, 124,58,237), .18); color: var(--primary); }
.mb-ai-rbtn.go { background: var(--primary); color: #fff; }

/* 1.9.23 — «Вес бутылок» */
.inv-w-manage { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; box-sizing: border-box; margin: 8px 0 4px; padding: 11px 14px; border-radius: 12px; border: 1px solid var(--border); background: rgba(var(--primary-rgb, 124,58,237), .08); color: var(--primary); font-weight: 600; font-size: 15px; }
.inv-bw .inv-bw-list { max-height: 48vh; overflow-y: auto; margin: 6px 0; }
.inv-bw-row { padding: 10px 0; border-bottom: 1px solid var(--border); }
.inv-bw-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.inv-bw-n { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.inv-bw-del { flex: 0 0 auto; width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(239,68,68,.12); color: #ef4444; display: inline-flex; align-items: center; justify-content: center; }
.inv-bw-g { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.inv-bw-g label span { display: block; font-size: 12px; opacity: .7; margin-bottom: 2px; }
.inv-bw-g .sch-in { width: 100%; box-sizing: border-box; }
.inv-bw-add { display: flex; gap: 8px; align-items: center; margin: 8px 0; flex-wrap: wrap; }
.inv-bw-add .sch-in { flex: 1 1 180px; min-width: 0; }

/* 1.9.24 — несколько бутылок у позиции */
.inv-w-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; }
.inv-w-chips[hidden] { display: none; }
.inv-w-chip { padding: 8px 14px; border-radius: 18px; border: 1.5px solid var(--border); background: transparent; color: var(--text); font-size: 15px; font-weight: 600; }
.inv-w-chip.new { color: var(--primary); border-style: dashed; }
.inv-w-chip.on { background: var(--primary); border-color: var(--primary); color: #fff; }
.inv-bw-add1 { flex: 0 0 auto; padding: 6px 12px; border-radius: 16px; border: 1px solid var(--border); background: transparent; color: var(--primary); font-size: 14px; font-weight: 600; }
.inv-bw-b { display: flex; align-items: flex-end; gap: 8px; margin-bottom: 8px; }
.inv-bw-b .inv-bw-g { flex: 1 1 auto; min-width: 0; }
.inv-bw-b .inv-bw-del { margin-bottom: 4px; }

/* 1.9.25 — окно «Сохранение в облако» */
#header-save-indicator { cursor: pointer; }
.si-list { margin: 8px 0; padding-left: 18px; font-size: 14px; line-height: 1.5; }
.si-list .si-err { color: #ef4444; list-style: none; margin-left: -18px; margin-top: 6px; }

/* 1.9.25 — пункты шторки без права на них скрыты совсем (иначе display:flex из стилей перебивал атрибут hidden) */
#side-drawer .side-drawer-actions > button[hidden], .side-drawer-actions button[hidden] { display: none !important; }

/* ---------- 1.9.30: Зал — подробности брони и крупные подписи на столах ---------- */
.hl-in b { line-height: 1; }
.hl-in i { font-size: .7em; opacity: .85; }
.hl-in em { font-size: .6em; }
.hv-b { margin-top: 10px; padding: 11px 12px; border-radius: 14px; border: 1.5px solid var(--border); background: rgb(var(--card-rgb)); display: flex; flex-direction: column; gap: 6px; }
.hv-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.hv-time { font-size: 22px; font-weight: 800; }
.hv-r { display: flex; justify-content: space-between; gap: 12px; font-size: 14.5px; }
.hv-r span { opacity: .62; flex: 0 0 auto; }
.hv-r b { text-align: right; font-weight: 700; min-width: 0; overflow-wrap: anywhere; }
.hv-r a { color: var(--primary); text-decoration: none; }
.hv-act { display: flex; gap: 8px; margin-top: 4px; }
.hv-act .btn-main { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: 1 1 0; }

/* ---------- 1.9.31: фото в помощнике — миниатюра в сообщении, просмотр на весь экран ---------- */
.mb-ai-imgchip { display: flex; align-items: center; gap: 8px; padding: 5px 6px 5px 5px; border-radius: 16px; background: rgb(var(--card-rgb)); color: var(--text); border: 1.5px solid rgba(var(--primary-rgb), .6); box-shadow: 0 3px 12px rgba(0, 0, 0, .2); max-width: calc(100% - 24px); }
.mb-ai-imgchip-v { width: 46px; height: 46px; padding: 0; border: 0; border-radius: 11px; overflow: hidden; background: rgba(127, 127, 127, .2); flex: 0 0 auto; }
.mb-ai-imgchip-v img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mb-ai-thumb img { width: auto; height: auto; max-width: 210px; max-height: 190px; object-fit: contain; display: block; }
.mb-ai-imgchip-e { font-size: 22px; padding: 0 6px; }
.mb-ai-imgchip-n { font-size: 13px; font-weight: 700; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mb-ai-imgchip-x { width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(127, 127, 127, .22); color: inherit; font: inherit; font-size: 15px; flex: 0 0 auto; }
.mb-ai-msg.has-img { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.mb-ai-thumb { width: auto; height: auto; max-width: 100%; display: block; padding: 0; border: 0; border-radius: 14px; overflow: hidden; background: rgba(0, 0, 0, .15); cursor: zoom-in; }
.mb-ai-photo { position: fixed; inset: 0; z-index: 10200; background: rgba(0, 0, 0, .94); display: flex; flex-direction: column; opacity: 0; transition: opacity .18s ease; }
.mb-ai-photo.on { opacity: 1; }
.mb-ai-photo-x { position: absolute; top: calc(env(safe-area-inset-top, 0px) + 10px); right: 12px; z-index: 2; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .18); color: #fff; display: inline-flex; align-items: center; justify-content: center; }
.mb-ai-photo-sc { flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; overflow: auto; -webkit-overflow-scrolling: touch; padding: calc(env(safe-area-inset-top, 0px) + 60px) 8px calc(env(safe-area-inset-bottom, 0px) + 20px); box-sizing: border-box; }
.mb-ai-photo-sc img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 6px; }
.mb-ai-photo.zoom .mb-ai-photo-sc { display: block; }
.mb-ai-photo.zoom .mb-ai-photo-sc img { max-width: none; max-height: none; width: 250%; }
.mb-ai-photo-n { position: absolute; left: 0; right: 0; bottom: calc(env(safe-area-inset-bottom, 0px) + 10px); text-align: center; color: rgba(255, 255, 255, .7); font-size: 12px; padding: 0 16px; pointer-events: none; }

/* ---------- 1.9.32: строка «что сделано» в помощнике — нажатие открывает место действия ---------- */
button.mb-ai-act.go { border: 1.5px solid rgba(var(--primary-rgb), .35); font: inherit; font-size: 13px; font-weight: 700; min-height: 36px; padding: 6px 8px 6px 11px; text-align: left; cursor: pointer; max-width: 100%; -webkit-tap-highlight-color: transparent; }
button.mb-ai-act.go span { min-width: 0; white-space: normal; overflow-wrap: anywhere; line-height: 1.3; }
.mb-ai-act { flex: 0 0 auto; max-width: 100%; box-sizing: border-box; overflow-wrap: anywhere; }
button.mb-ai-act.go > .mb-icon:last-child { opacity: .75; margin-left: 2px; flex: 0 0 auto; }
button.mb-ai-act.go:active { transform: scale(.97); background: rgba(var(--primary-rgb), .18); }
.hb.flash { animation: hbflash 2.2s ease-out 1; }
@keyframes hbflash { 0%, 55% { box-shadow: 0 0 0 3px rgba(var(--primary-rgb), .75); } 100% { box-shadow: 0 0 0 0 rgba(var(--primary-rgb), 0); } }

/* ---------- 1.9.33: единый стиль надписей на схеме зала (размер и начертание настраиваются) ---------- */
.hall-cv .hl-in b { font-weight: 700; }
.hall-cv.fw-n .hl-in b { font-weight: 500; }
.hall-cv.fw-b .hl-in b { font-weight: 800; }
.hall-cv .hl-in i { font-weight: 600; }
.hall-cv.fw-n .hl-in i { font-weight: 500; }
.hs-seg { display: flex; gap: 4px; padding: 3px; border-radius: 12px; background: rgba(127, 127, 127, .14); }
.hs-seg button { flex: 1 1 0; height: 36px; border: 0; border-radius: 9px; background: transparent; color: var(--text); font: inherit; font-size: 13.5px; font-weight: 700; opacity: .72; }
.hs-seg button.on { background: rgb(var(--card-rgb)); opacity: 1; color: var(--primary); box-shadow: 0 1px 4px rgba(0, 0, 0, .12); }

/* 1.9.35: число мест на столе подписано «4 чел.» и отличается от номера стола */
.hl-in i { white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: clip; font-weight: 600; opacity: .9; margin-top: .12em; }

/* 1.9.37: опоздание брони */
.hb-late { display: inline-flex; align-items: center; gap: 4px; align-self: flex-start; margin: 4px 0 2px; font-size: 12px; font-weight: 800; line-height: 1.25; color: #b45309; background: rgba(249, 115, 22, .16); border: 1px solid rgba(249, 115, 22, .5); border-radius: 8px; padding: 2px 6px; font-variant-numeric: tabular-nums; }
.hb-late.long { color: #b91c1c; background: rgba(239, 68, 68, .16); border-color: rgba(239, 68, 68, .55); }
[data-theme^="dark"] .hb-late { color: #fdba74; } [data-theme^="dark"] .hb-late.long { color: #fca5a5; }
.hv-b .hb-late { margin: 2px 0 6px; }
.hl-e.late { background: rgba(249, 115, 22, .42); border-color: #ea580c; box-shadow: 0 0 0 2px rgba(249, 115, 22, .35); animation: hlLate 1.6s ease-in-out infinite; overflow: visible; }
@keyframes hlLate { 50% { box-shadow: 0 0 0 5px rgba(249, 115, 22, .12); } }
@media (prefers-reduced-motion: reduce) { .hl-e.late { animation: none; } }
.hl-late { position: absolute; top: -16px; right: -14px; z-index: 3; background: #ea580c; color: #fff; font-size: 11px; font-weight: 800; line-height: 1; padding: 3px 5px; border-radius: 8px; pointer-events: none; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.hall-leg i.lg-late { background: rgba(249, 115, 22, .42); border-color: #ea580c; }
/* 1.9.42: помощник без связи */
.mb-ai-net { display: flex; align-items: flex-start; gap: 8px; margin: 0 12px 6px; padding: 8px 12px; border-radius: 12px; font-size: 13px; line-height: 1.35; background: rgba(239, 68, 68, .12); color: #b91c1c; }
.mb-ai-net[hidden] { display: none; }
.mb-ai-net svg { flex: 0 0 auto; margin-top: 2px; }
[data-theme^="dark"] .mb-ai-net { color: #fca5a5; }
.mb-ai-msg.slowwait { font-size: 14px; opacity: .85; font-style: italic; }
/* ---------- 1.9.43: кольцо в шапке — крупнее, со свечением; им же показывается «потяни вниз» ---------- */
body .header-save-indicator.si-v2 { width: 28px !important; height: 28px !important; min-width: 28px; margin: 0 3px 0 0 !important; overflow: visible; }
body .header-save-indicator.si-v2 svg { width: 28px; height: 28px; }
body .header-save-indicator.si-v2 .si-g0 { stop-color: var(--primary); }
body .header-save-indicator.si-v2 .si-g1 { stop-color: #38bdf8; }
body .header-save-indicator.si-v2 .si-track { stroke: rgba(var(--primary-rgb), .26); stroke-width: 2.8; }
body .header-save-indicator.si-v2 .si-arc { stroke: url(#siGrad); stroke-width: 3; stroke-linecap: round; }
body .header-save-indicator.si-v2 .si-ring { filter: drop-shadow(0 0 3px rgba(var(--primary-rgb), .7)); }
/* свечение-«дыхание» вокруг кольца, пока идёт запись */
body .header-save-indicator.si-v2::before { content: ''; position: absolute; inset: -5px; border-radius: 50%; pointer-events: none; opacity: 0; background: radial-gradient(circle, rgba(var(--primary-rgb), .38) 0%, rgba(var(--primary-rgb), 0) 68%); }
body .header-save-indicator.si-v2.is-saving::before, body .header-save-indicator.si-v2.ptr-spin::before { animation: siHalo 1.5s ease-in-out infinite; }
body .header-save-indicator.si-v2.is-saving .si-ring, body .header-save-indicator.si-v2.ptr-spin .si-ring { animation: mbRingSpin .8s linear infinite; }
@keyframes siHalo { 0%, 100% { opacity: .25; transform: scale(.9); } 50% { opacity: 1; transform: scale(1.12); } }
/* готово: зелёное кольцо с галочкой, «хлопок» и круг-волна */
body .header-save-indicator.si-v2 .si-check { stroke: #22c55e; stroke-width: 2.6; filter: drop-shadow(0 0 4px rgba(34, 197, 94, .65)); }
body .header-save-indicator.si-v2 .si-check .si-done { stroke: rgba(34, 197, 94, .38); stroke-width: 2.4; }
body .header-save-indicator.si-v2.is-saved .si-check { animation: siPop .45s cubic-bezier(.2, 1.4, .4, 1); }
body .header-save-indicator.si-v2.is-saved::after { content: ''; position: absolute; inset: 0; border-radius: 50%; border: 2px solid rgba(34, 197, 94, .6); pointer-events: none; animation: siRipple .7s ease-out forwards; }
@keyframes siPop { 0% { transform: scale(.5); } 60% { transform: scale(1.22); } 100% { transform: scale(1); } }
@keyframes siRipple { from { opacity: .9; transform: scale(.9); } to { opacity: 0; transform: scale(1.9); } }
/* ошибка: красное с покачиванием и подсветкой */
body .header-save-indicator.si-v2 .si-alert { stroke: #ef4444; stroke-width: 2.6; filter: drop-shadow(0 0 4px rgba(239, 68, 68, .6)); }
body .header-save-indicator.si-v2.is-error::before { opacity: 1; background: radial-gradient(circle, rgba(239, 68, 68, .35) 0%, rgba(239, 68, 68, 0) 68%); animation: siHalo 1.2s ease-in-out infinite; }
/* нет связи: облачко с чертой, заметное и «дышит» */
body .header-save-indicator.si-v2.is-offline .si-offline { opacity: .95; stroke: #f59e0b; stroke-width: 2.2; animation: siBreath 2.4s ease-in-out infinite; }
@keyframes siBreath { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
/* жест «потяни вниз»: кольцо заполняется по мере натяжения, на пороге — «готово», потом крутится */
body .header-save-indicator.si-v2.ptr .si-ring { opacity: 1; transform: rotate(calc(var(--ptr, 0) * 300deg)) scale(calc(.8 + var(--ptr, 0) * .3)); transition: none; }
body .header-save-indicator.si-v2.ptr:not(.ptr-spin) .si-arc { animation: none; stroke-dasharray: calc(6px + var(--ptr, 0) * 38px) 60; stroke-dashoffset: 0; }
body .header-save-indicator.si-v2.ptr-ready:not(.ptr-spin)::before { opacity: 1; animation: none; }
body .header-save-indicator.si-v2.ptr-ready:not(.ptr-spin) .si-ring { transform: rotate(300deg) scale(1.2); }
body .header-save-indicator.si-v2.ptr-spin .si-ring { opacity: 1; transform: none; }
body .header-save-indicator.si-v2.ptr-spin .si-arc { animation: mbRingDash 1.2s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { body .header-save-indicator.si-v2::before, body .header-save-indicator.si-v2::after, body .header-save-indicator.si-v2 .si-check { animation: none !important; } }
/* ---------- 1.9.44/45: iPhone с главного экрана — меньше пустоты сверху (под «островом») и снизу (над индикатором «домой»);
   полоса-«заплатка» вверху экрана: iOS 26+ размывает верхний край, пока не найдёт полноширинный закрашенный fixed-блок у верха (тогда берёт его цвет) ---------- */
#mb-edge { display: none; }
html.mb-ios-pwa #mb-edge {
    display: block; position: fixed; top: 0; left: 0; width: 100%; height: max(12px, env(safe-area-inset-top, 0px)); z-index: 3; pointer-events: none;
    background-color: var(--bg, #13111c); background-image: var(--wp-bg, none); background-size: 100vw 100vh; background-position: 0 0; background-repeat: no-repeat;
}
html.mb-ios-pwa { --mb-sab: calc(env(safe-area-inset-bottom, 0px) * .2); }
html.mb-ios-pwa body { padding-top: max(15px, calc(env(safe-area-inset-top, 0px) - 8px)); }
html.mb-ios-pwa body.nav-tabs-bar { padding-bottom: calc(72px + var(--mb-sab)) !important; }
html.mb-ios-pwa body.nav-tabs-bar .tabs { padding-top: 14px; padding-bottom: calc(6px + var(--mb-sab)); }
/* ---------- 1.9.45: «Остатки» — на всю страницу, заголовки категорий сплошные, «Заберу» ---------- */
#res-list { max-height: none !important; overflow: visible !important; }
#res-list .res-group-title { position: sticky; top: 0; z-index: 4; display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0; padding: 9px 4px 6px; background: rgb(var(--card-rgb, 255, 255, 255)) !important; box-shadow: 0 1px 0 var(--border); }
#res-list .res-gt-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#res-list .res-gt-cols { flex: 0 0 auto; display: grid; grid-template-columns: 52px 52px 62px; gap: 6px; text-align: center; font-size: 10px; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--text); opacity: .55; }
@media (max-width: 400px) { #res-list .res-gt-cols { grid-template-columns: 42px 42px 52px; gap: 4px; } }
#res-list .res-row { cursor: pointer; }
#res-list .res-row.open { background: rgba(var(--primary-rgb), .07); border-bottom-color: transparent; }
#res-list .res-nm { font-weight: 600; }
#res-list .res-sub { font-size: 11px; opacity: .6; }
#res-list .res-fact { display: flex; flex-direction: column; justify-content: center; line-height: 1.2; }
#res-list .res-fact-sub { font-size: 9px; opacity: .6; }
#res-list .res-take-chip { display: inline-block; margin-top: 3px; padding: 1px 7px; border-radius: 999px; font-size: 11px; font-weight: 700; color: var(--primary); background: rgba(var(--primary-rgb), .12); }
#res-list .res-take { display: none; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr) minmax(0, 1fr); gap: 8px; align-items: end; padding: 4px 4px 12px; background: rgba(var(--primary-rgb), .07); border-bottom: 1px solid var(--border); }
#res-list .res-take.open { display: grid; }
#res-list .res-take-in { display: flex; flex-direction: column; gap: 3px; font-size: 11px; font-weight: 700; opacity: 1; position: relative; }
#res-list .res-take-in span, #res-list .res-take-out span { font-size: 10.5px; font-weight: 700; opacity: .6; }
#res-list .res-take-in input { width: 100%; box-sizing: border-box; height: 40px; padding: 0 30px 0 10px; border-radius: 10px; border: 1.5px solid var(--primary); background: rgb(var(--card-rgb, 255, 255, 255)); color: var(--text); font-size: 16px; font-weight: 700; }
#res-list .res-take-in small { position: absolute; right: 9px; bottom: 11px; font-size: 11px; opacity: .55; pointer-events: none; }
#res-list .res-take-out { display: flex; flex-direction: column; gap: 3px; }
#res-list .res-take-out b { display: flex; align-items: center; height: 40px; font-size: 16px; }
#res-list .res-take-out b.plus { color: var(--success, #28a745); } #res-list .res-take-out b.minus { color: var(--danger, #dc3545); }
/* #app-root с overflow-x:hidden становился «окном прокрутки» (overflow-y:auto) и ломал position:sticky у заголовков внутри — clip режет так же, но окном не является */
#app-root { overflow-x: clip; overflow-y: visible; }
html.mb-ios-pwa #res-list .res-group-title { top: env(safe-area-inset-top, 0px); }

/* 1.9.45: графики и табель — таблица лежит в аккуратной скруглённой рамке с отступами (раньше упиралась в края и выглядела обрезанной) */
.sch-wrap { margin: 4px 10px 12px; padding: 0; border: 1px solid var(--sch-line-strong, rgba(127,127,127,.35)); border-radius: 16px; background: var(--card, #fff); box-shadow: 0 6px 22px rgba(0,0,0,.08); overflow: auto; overscroll-behavior: contain; flex: 0 1 auto; max-height: 100%; align-self: stretch; }
.sch-wrap .sch-table { border-left: 0 !important; border-top: 0 !important; }
.sch-wrap .sch-table:last-of-type tr:last-child > td, .sch-wrap .sch-table:last-of-type tr:last-child > th { border-bottom: 0 !important; }
.sch-wrap .sch-table th:last-child, .sch-wrap .sch-table td:last-child { border-right: 0 !important; }
.sch-wrap .sch-table > thead > tr:first-child > th:first-child, .sch-wrap .sch-table > tbody:first-child > tr:first-child > th:first-child, .sch-wrap .sch-table > tbody:first-child > tr:first-child > td:first-child { border-top-left-radius: 15px; }

/* ===== 1.9.45: схема зала ===== */
/* кнопки масштаба / «на весь экран» — отдельной полосой над схемой, больше не лежат поверх неё */
.hall-cvbox { display: flex; flex-direction: column; gap: 6px; }
.hall-cvbar { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex: 0 0 auto; }
.hall-cvbar .hall-cv-tools, .hall-cvbar .hall-view-zoom { position: static; right: auto; top: auto; bottom: auto; box-shadow: none; }
.hall-cvbar .hall-cv-tools button { box-shadow: none; }
.hall-overlay:not(.is-edit) .hall-cvwrap { max-height: none; }
.hall-overlay:not(.is-edit) .hall-cvwrap.zoomed { max-height: 64vh; }
.hall-cvbox .hall-cvwrap { flex: 0 0 auto; }
@media (orientation: landscape) and (max-height: 620px) {
    .hall-overlay.open[data-htab="plan"]:not(.is-edit) .hall-cvbox .hall-cvwrap { flex: 1 1 0; height: auto; min-height: 0; max-height: none; }
}
.hall-overlay.is-full .hall-cvbox { display: flex !important; flex-direction: column; }
.hall-overlay.is-full .hall-cvbox .hall-cvwrap { flex: 1 1 0 !important; height: auto !important; min-height: 0 !important; max-height: none !important; }
/* всё, что вышло за границу зала, не рисуется (просмотр) */
.hall-cv:not(.edit) { overflow: hidden; }
/* редактор: поле вокруг схемы, видимая граница зала, крупные зоны нажатия у стен и входа */
.hall-ed-main .hall-cvwrap { padding: 14px; box-sizing: border-box; }
.hall-cv.edit { box-shadow: 0 0 0 2px rgba(var(--primary-rgb), .5); }
.hall-cv.edit .hl-wall::before, .hall-cv.edit .hl-door::before { content: ""; position: absolute; inset: -12px; }
.hl-wall > .hl-h, .hl-door > .hl-h { bottom: auto; top: 50%; margin-top: -11px; right: -12px; }
.hl-h { width: 26px; height: 26px; }
.hall-overlay.is-full .hall-cvbox .hall-cvwrap { background: var(--bg); }
@media (orientation: portrait) {
    .hall-overlay:not(.is-full):not(.is-edit) .hall-cvbox { margin-left: -8px; margin-right: -8px; }
}

/* 1.9.46: у каждой группы своя таблица; контур сегодняшнего дня замкнут снизу в каждой группе */
.sch-wrap .sch-table + .sch-table { margin-top: 12px; }
.sch-wrap .sch-table:first-of-type > tbody > tr:first-child > th:first-child { border-top-left-radius: 15px; }
.sch-table .sch-cnt td.today { box-shadow: inset 2px 0 0 rgba(var(--primary-rgb), .7), inset -2px 0 0 rgba(var(--primary-rgb), .7), inset 0 -2px 0 rgba(var(--primary-rgb), .7) !important; }
.ts-table tr:last-child .sch-c.today { box-shadow: inset 2px 0 0 rgba(var(--primary-rgb), .7), inset -2px 0 0 rgba(var(--primary-rgb), .7), inset 0 -2px 0 rgba(var(--primary-rgb), .7) !important; }

/* 1.9.46: поворот схемы в обе стороны (iPhone) и повёрнутые меню/окна — надписи читаются так же, как схема */
.hall-overlay.is-full.is-rot-ccw .hall-cvbox { transform: translate(-50%, -50%) rotate(-90deg); }
html.mb-hall-rot .mb-sheet-overlay, html.mb-hall-rot .sch-sheet-bg, html.mb-hall-rot .confirm-overlay {
    inset: auto !important; right: auto !important; bottom: auto !important; left: 50% !important; top: 50% !important;
    width: var(--vvh, 100dvh) !important; height: 100vw !important; transform: translate(-50%, -50%) rotate(90deg); transform-origin: 50% 50%;
}
html.mb-hall-rot-ccw .mb-sheet-overlay, html.mb-hall-rot-ccw .sch-sheet-bg, html.mb-hall-rot-ccw .confirm-overlay { transform: translate(-50%, -50%) rotate(-90deg); }

/* 1.9.48: история инвентаризации — таблицей; «в прошлый раз забрал» в Остатках */
.ih-sum { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0 0 8px; font-size: 12.5px; opacity: .85; }
.ih-sum b { font-weight: 800; }
.ih-tw { border: 1px solid var(--border, rgba(127,127,127,.25)); border-radius: 14px; overflow: auto; -webkit-overflow-scrolling: touch; background: var(--card-bg, rgba(255,255,255,.04)); }
.ih-table { width: 100%; border-collapse: collapse; font-size: 12px; font-variant-numeric: tabular-nums; }
.ih-table th, .ih-table td { padding: 6px 3px; text-align: right; white-space: nowrap; border-bottom: 1px solid rgba(127,127,127,.14); }
.ih-table th { position: sticky; top: 0; z-index: 1; background: rgb(var(--card-rgb, 255, 255, 255)); color: var(--text, inherit); font-size: 10px; font-weight: 800; letter-spacing: .02em; text-transform: uppercase; white-space: normal; line-height: 1.15; vertical-align: bottom; box-shadow: 0 1px 0 rgba(127,127,127,.3); }
.ih-table .ih-n { text-align: left; white-space: normal; min-width: 70px; width: 100%; overflow-wrap: anywhere; font-weight: 700; padding-left: 8px; padding-right: 4px; }
.ih-table th:last-child, .ih-table td:last-child { padding-right: 8px; }
.ih-table .ih-n small { display: block; font-weight: 500; opacity: .6; font-size: 11px; }
.ih-table tbody tr:nth-child(even):not(.ih-cat) td { background: rgba(127,127,127,.06); }
.ih-table tr.ih-cat td { text-align: left; font-weight: 800; font-size: 11.5px; text-transform: uppercase; letter-spacing: .03em; padding: 9px 8px 5px; background: rgba(127,127,127,.12); }
.ih-table td.ih-take { color: var(--primary, #3b82f6); font-weight: 800; }
.ih-table td.ih-prev { opacity: .75; }
.ih-table tbody tr:last-child td { border-bottom: 0; }
.res-prev-chip { margin-top: 3px; font-size: 11.5px; font-weight: 600; opacity: .7; }
#res-list .res-take-prev { grid-column: 1 / -1; margin: 2px 0 0; padding: 8px 12px; border-radius: 12px; border: 1px dashed rgba(127,127,127,.5); background: transparent; color: inherit; font: inherit; font-size: 13px; font-weight: 700; width: 100%; }

/* 1.9.48: своя клавиатура в повёрнутом режиме «Зала» — лежит так же, как повёрнутое окно (системную повернуть нельзя) */
.sch-sheet-bg.rkb-on { box-sizing: border-box; padding-bottom: var(--rkb-h, 0px) !important; }
.sch-sheet-bg.rkb-on .sch-sheet { border-radius: 22px; padding-bottom: 14px; max-height: 100%; }
.mb-rkb { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; box-sizing: border-box; padding: 6px 6px calc(6px + env(safe-area-inset-bottom)); background: var(--card, #2a2d35); border-top: 1px solid var(--border, rgba(127,127,127,.3)); display: flex; flex-direction: column; gap: 5px; user-select: none; -webkit-user-select: none; touch-action: manipulation; }
.mb-rkb .rkb-r { display: flex; gap: 4px; justify-content: center; }
.mb-rkb .rkb-k { flex: 1 1 0; min-width: 0; height: 38px; border-radius: 9px; border: 0; background: rgba(127,127,127,.2); color: var(--text, inherit); font: inherit; font-size: 17px; font-weight: 600; padding: 0; display: flex; align-items: center; justify-content: center; }
.mb-rkb .rkb-k:active { background: rgba(var(--primary-rgb), .45); }
.mb-rkb .rkb-k.fn { background: rgba(127,127,127,.34); font-size: 14px; flex-grow: 1.5; }
.mb-rkb .rkb-k.fn.on { background: rgba(var(--primary-rgb), .6); color: #fff; }
.mb-rkb .rkb-k.w2 { flex-grow: 2; }
.mb-rkb .rkb-k.sp { flex-grow: 5; font-size: 13px; font-weight: 500; }
.mb-rkb .rkb-k.done { background: var(--primary, #3b82f6); color: #fff; flex-grow: 2.5; }
.mb-rkb.pad { max-width: 420px; margin: 0 auto; }
.mb-rkb.pad .rkb-k { height: 40px; }

/* 1.9.48: «чистая схема» — только схема на весь экран, без шапки, нижней панели, кнопок и фона */
html.mb-hall-clean .header, html.mb-hall-clean #mb-edge, html.mb-hall-clean .drawer-edge-zone, html.mb-hall-full .header, html.mb-hall-full #mb-edge, html.mb-hall-full .drawer-edge-zone { display: none !important; }
html.mb-hall-clean .tabs, html.mb-hall-full .tabs { visibility: hidden !important; pointer-events: none !important; }
.hall-overlay.is-clean .hall-cvbar { display: none !important; }
.hall-overlay.is-clean .hall-cvbox, .hall-overlay.is-clean .hall-cvbox .hall-cvwrap { border: 0 !important; border-radius: 0 !important; margin: 0 !important; box-shadow: none !important; background: rgb(var(--bg-rgb)) !important; }
.hall-overlay.is-clean .hall-cv { box-shadow: none !important; }
.hall-clean-pill { position: absolute; top: 10px; right: 10px; z-index: 5; display: flex; gap: 8px; padding: 6px; border-radius: 999px; background: rgba(20, 22, 28, .72); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); opacity: 0; pointer-events: none; transform: translateY(-6px); transition: opacity .2s ease, transform .2s ease; }
.hall-clean-pill.on { opacity: 1; pointer-events: auto; transform: none; }
.hall-clean-pill button { width: 40px; height: 40px; border-radius: 50%; border: 0; background: rgba(255, 255, 255, .16); color: #fff; display: flex; align-items: center; justify-content: center; padding: 0; }
/* 1.9.49: чистая схема занимает весь экран, включая полосу у выреза камеры: отступы safe-area не нужны */
.hall-overlay.is-clean .hall-cvbox, .hall-overlay.is-clean.is-full .hall-cvbox { left: 0; right: 0; top: 0; bottom: 0; }
.hall-overlay.is-clean.is-rot .hall-cvbox { left: 50%; top: 50%; right: auto; bottom: auto; width: var(--vvh, 100dvh); height: 100vw; }

/* 1.9.49: кнопка «Изменить» в напитках — цвет темы, видна на любом фоне */
.select-row > .btn-delete-large.drink-edit-btn {
    background: rgba(var(--primary-rgb), 0.12) !important;
    border-color: var(--primary) !important;
    color: var(--primary) !important;
}
.select-row > .btn-delete-large.drink-edit-btn svg { stroke: currentColor !important; opacity: 1; }

/* 1.9.49: полный экран схемы — слева и справа без полосы под вырез камеры */
.hall-overlay.is-full:not(.is-clean):not(.is-rot) .hall-cvbox { left: 6px; right: 6px; }

/* 1.9.49: ТТК — без горизонтальной ленты подкатегорий; заголовки групп цветом темы */
#ttk-cats, .ttk-cats { display: flex; flex-wrap: wrap !important; overflow: visible !important; padding: 8px 0 6px; margin: 0; gap: 8px;
    -webkit-mask-image: none !important; mask-image: none !important; }
#ttk-cats > * { white-space: normal; }
#ttk-cats .ttk-cat-chip { border-color: rgba(var(--primary-rgb), .45); color: var(--primary); background: rgba(var(--primary-rgb), .08); }
.ttk-group { border: 1.5px solid rgba(var(--primary-rgb), .35); background: var(--card); box-shadow: 0 1px 0 rgba(var(--primary-rgb), .08); }
.ttk-group-head { background: linear-gradient(90deg, rgba(var(--primary-rgb), .22), rgba(var(--primary-rgb), .10)); color: var(--text); border-bottom: 1px solid rgba(var(--primary-rgb), .30); border-left: 5px solid var(--primary); padding-left: 9px; }
.ttk-group.is-collapsed .ttk-group-head { border-bottom-color: transparent; }
.ttk-group-ico { background: var(--primary); color: #fff; }
.ttk-group-count { background: rgba(var(--primary-rgb), .16); border-color: rgba(var(--primary-rgb), .40); color: var(--primary); font-weight: 800; }
.ttk-group-name { color: var(--primary); }
.ttk-group-body { padding-top: 10px; }

/* 1.9.50: графики и табель — имя и фамилия видны полностью (переносятся на вторую строку, а не обрезаются многоточием) */
.sch-table .sch-row .sch-name { min-width: 118px; max-width: 142px; width: 130px; white-space: normal; overflow: visible; text-overflow: clip; height: auto; min-height: 42px; }
.sch-table .sch-row .sch-name b, .sch-table .sch-row .sch-name small { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; word-break: normal; line-height: 1.15; }
.sch-table .sch-row .sch-name b { font-size: 13px; }

/* ---------- 1.9.51: Заказы — список категорий в окне «Добавить позицию» снова прокручивается ---------- */
#orders-admin-overlay .orders-cat-panel .orders-cat-manager-list { flex: 1 1 auto; min-height: 0; max-height: none !important; overflow-y: auto !important; overflow-x: hidden; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
#orders-admin-overlay .orders-cat-panel { overflow: hidden; }

/* ---------- 1.9.51: Заказы — заголовки категорий сплошные и не налезают друг на друга ---------- */
#orders-list .orders-group { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
#orders-list .orders-group-title { background: rgb(var(--card-rgb, 255, 255, 255)) !important; z-index: 6; }

/* ---------- 1.9.51: Списания — «Удалить» у каждого месяца ---------- */
#writeoffs .wo-month-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
#writeoffs .wo-month-name { min-width: 0; }
#writeoffs .wo-month-del { display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; border: 1px solid rgba(239, 68, 68, .4); background: rgba(239, 68, 68, .08); color: #ef4444; border-radius: 10px; padding: 5px 9px; font: inherit; font-size: 12px; font-weight: 700; letter-spacing: 0; cursor: pointer; }
#writeoffs .wo-month-del:active { background: rgba(239, 68, 68, .18); }

/* ---------- 1.9.53: журнал изменений — поиск и подгрузка старых записей ---------- */
.activity-log-search-row { margin: 0 0 8px; }
.activity-log-search-row .activity-log-search { width: 100%; box-sizing: border-box; font-size: 16px; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--border); background: var(--bg); color: var(--text); }
.activity-log-more { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 12px 18px; text-align: center; }
.activity-log-more small { font-size: 11px; opacity: .6; max-width: 320px; line-height: 1.35; }
/* 1.9.58: журнал — одна понятная логика «ещё» */
.activity-log-more .btn-main { width: 100%; max-width: 320px; min-height: 44px; }
.activity-log-more .alm-count { font-size: 12px; opacity: .75; min-height: 16px; }
.activity-log-scope { font-size: 12px; opacity: .7; padding: 6px 14px 4px; line-height: 1.3; }

/* 1.9.54: галочка сохранения — заполненный зелёный кружок с белой галочкой, которая «рисуется», и круговой всплеск */
body .header-save-indicator.si-v2 .si-check{stroke:#fff;stroke-width:2.9;filter:drop-shadow(0 2px 5px rgba(22,163,74,.55))}
body .header-save-indicator.si-v2 .si-check .si-done{fill:#22c55e;stroke:#16a34a;stroke-width:.6}
body .header-save-indicator.si-v2.is-saved .si-check path:not(.si-done){stroke-dasharray:16;stroke-dashoffset:16;animation:mbCheckDraw .38s ease-out forwards .12s}
body .header-save-indicator.si-v2.is-saved::before{opacity:1;background:radial-gradient(circle,rgba(34,197,94,.4) 0%,rgba(34,197,94,0) 68%)}
/* 1.9.54: помощник ответил, пока окно было закрыто — точка на кнопке */
.mb-ai-btn.has-reply{position:relative}
.mb-ai-btn.has-reply::after{content:'';position:absolute;top:2px;right:2px;width:10px;height:10px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 2px var(--card,#fff);animation:mbAiPing 1.6s ease-in-out infinite}
@keyframes mbAiPing{0%,100%{transform:scale(1)}50%{transform:scale(1.3)}}

/* 1.9.55: просмотр фото занимает весь экран (маленькая копия растягивается), двойное нажатие — приближение */
.mb-ai-photo-sc img { width: 100%; height: 100%; max-width: 100%; max-height: 100%; object-fit: contain; }
.mb-ai-photo.zoom .mb-ai-photo-sc img { width: 250%; height: auto; max-width: none; max-height: none; }
