/* Жидкое стекло шапок приложения: гость (body.gv2), стаф (body.sv2), сотрудник QRush во вкладке «Админ» (body.pf-app).
   Вид выбран владельцем на телефоне 20.10.2026 («Жидкое»: плотность 64, размытие 10, насыщенность 158, блик 67,
   белое, легкая тень, во всю ширину, отсвет сверху, кнопки стеклом); значения - переменные ниже, одни на всех.
   Стекло рисует ::before шапки: при полоске ролей (parts/demo_bar.php) оно тянется вверх до края экрана, полоска
   прозрачная. Без размытия (старый WebView) фон почти сплошной, чтобы текст под шапкой не мешал.
   Подключается в parts/app_hotel_header.php, parts/app_header.php, pages/app/staff_manage.php, pages/app/platform.php
   ПОСЛЕ guest-v2.css / staff-v2.css / platform-app.css. Headless WebKit размытие не рисует: проверять в Chromium. */
:root {
    --glass-bg: linear-gradient(180deg, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0) 60%), rgba(255, 255, 255, .64);
    --glass-filter: blur(10px) saturate(158%);
    --glass-shadow: inset 0 1px 0 rgba(255, 255, 255, .67), inset 0 -1px 0 rgba(255, 255, 255, .4), inset 0 0 0 1px rgba(255, 255, 255, .23),
        0 4px 12px -6px rgba(17, 24, 39, .10);   /* тень снизу слабее (владелец 20.10.2026, было 0 6px 16px -8px .16) */
    --glass-btn-bg: rgba(255, 255, 255, .28);
    --glass-btn-line: rgba(255, 255, 255, .55);
    --glass-btn-filter: blur(10px) saturate(180%);
    --glass-btn-shadow: inset 0 1px 0 rgba(255, 255, 255, .7), 0 2px 8px rgba(0, 0, 0, .08);
    --glass-up: calc(-1 * (var(--dlbar-h, 58px) + var(--safe-top, env(safe-area-inset-top, 0px))));
    --glass-plain: rgba(255, 255, 255, .64);   /* то же стекло без отсвета сверху: низ шапки и прилипшая карусель */
}
/* высоту полоски ролей (--dlbar-h) задает body (parts/demo_bar.php), а на :root ее нет - там --glass-up бралась с
   запасным 58px и после увеличения полоски до 64 сверху оставалась серая щель в 6px (владелец 20.10.2026). Считаем на body */
body { --glass-up: calc(-1 * (var(--dlbar-h, 58px) + var(--safe-top, env(safe-area-inset-top, 0px)))); }

/* шапки: гость - отель и экраны с .app-hd, стаф - еще шапка управления разделом, «Админ» - шапка диалога.
   html впереди перебивает белый фон шапок из guest-v2.css / staff-v2.css / platform-app.css */
html body.gv2 :is(.ah-top, .app-hd), html body.sv2 :is(.ah-top, .app-hd, .stman__top), html body.pf-app .pf-top {
    background: transparent; box-shadow: none; border-bottom: 0; isolation: isolate; }
html body.gv2 :is(.ah-top, .app-hd)::before, html body.sv2 :is(.ah-top, .app-hd, .stman__top)::before, html body.pf-app .pf-top::before {
    content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background: var(--glass-bg); -webkit-backdrop-filter: var(--glass-filter); backdrop-filter: var(--glass-filter); box-shadow: var(--glass-shadow); }

/* низ шапки скруглен, как верх нижнего меню: у стафа - панель с кнопками (staff-v2.css .staff-fbar), у гостя - меню
   .ah-tabbar--v2 (владелец 20.10.2026) */
html body:is(.sv2, .gv2) :is(.ah-top, .app-hd, .stman__top)::before { border-radius: 0 0 20px 20px; }

/* полоска ролей: над шапкой прозрачная, стекло шапки под ней до края экрана. Где шапки нет (оверлей у гостя прячет
   шапку отеля, список чатов в «Админ») - стеклом сама полоска */
html body.has-demobar:not(.ah-overlay) :is(.ah-top, .app-hd, .stman__top)::before { top: var(--glass-up); }
html body:is(.gv2, .sv2).has-demobar:not(.ah-overlay):has(.ah-top, .app-hd, .stman__top) .dmb { background: transparent; box-shadow: none; }
html body:is(.gv2, .sv2).has-demobar.ah-overlay .dmb, html body.pf-app.has-demobar:not(.pf-in-room) .dmb {
    background: var(--glass-bg); -webkit-backdrop-filter: var(--glass-filter); backdrop-filter: var(--glass-filter); box-shadow: var(--glass-shadow); }
html body.pf-app.has-demobar.pf-in-room .dmb { background: transparent; box-shadow: none; }
html body.pf-app.has-demobar.pf-in-room .pf-top::before { top: var(--glass-up); }

/* «Админ»: список чатов прокручивается под полоску ролей, иначе под стеклом нечему просвечивать.
   Оболочка с самого верха, отступ под полоску - у списка */
body.pf-app.has-demobar:not(.pf-in-room) .pf-shell { top: var(--pf-top, 0px); height: var(--pf-h, 100%); }
body.pf-app.has-demobar:not(.pf-in-room) .pf-main { padding-top: var(--pf-bar); }

/* кнопки в шапках - стеклом. Переключатель ролей и шестеренка на полоске - сплошные, как переключатель «Заказов» гостя (parts/demo_bar.php) */
html body:is(.gv2, .sv2, .pf-app) :is(.ah-top, .app-hd, .stman__top, .pf-top) :is(.ah-top__btn, .acc__back, .osv__back, .vis__gear, .vis__logout, .stview__back, .stman__back, .pf-top__back):not(.ah-top__sp, .acc__back--sp) {   /* пустые места под скрытые кнопки не красим */
    background: var(--glass-btn-bg); border-color: var(--glass-btn-line);
    -webkit-backdrop-filter: var(--glass-btn-filter); backdrop-filter: var(--glass-btn-filter); box-shadow: var(--glass-btn-shadow); }

/* липкие карусели категорий под шапкой (Еда и Магазин .food-cats, Туры .tvp-cats, у стафа в управлении .fa2-catnav,
   .tva-catnav) - тем же стеклом; чипы, кроме выбранного, стеклом как кнопки (владелец 20.10.2026) */
html body:is(.gv2, .sv2) :is(.food-cats, .tvp-cats, .fa2-catnav, .tva-catnav) {
    background: var(--glass-bg); -webkit-backdrop-filter: var(--glass-filter); backdrop-filter: var(--glass-filter); box-shadow: var(--glass-shadow); }
html body:is(.gv2, .sv2) :is(.food-cat, .tvp-cat):not(.is-active) {
    background: var(--glass-btn-bg); border-color: var(--glass-btn-line);
    -webkit-backdrop-filter: var(--glass-btn-filter); backdrop-filter: var(--glass-btn-filter); box-shadow: var(--glass-btn-shadow); }

/* карусель прилипла к шапке (js/glass-stick.js: .is-stuck, body.cats-stuck): одно стекло на двоих, иначе на стыке двух
   размытий виден шов (владелец 20.10.2026). Скрипт кладет под шапку и карусель слой .glass-cap от верха экрана до низа
   карусели, свои подложки у них убираем. Слой ниже обоих (z 4 < карусель 5 < шапка 40), содержимое страницы под ним */
.glass-cap { display: none; }
html body.cats-stuck .glass-cap { display: block; position: fixed; left: 0; right: 0; top: 0; z-index: 4; pointer-events: none;
    height: var(--glass-cap-h, 0px); border-radius: 0 0 20px 20px;
    background: var(--glass-bg); -webkit-backdrop-filter: var(--glass-filter); backdrop-filter: var(--glass-filter); box-shadow: var(--glass-shadow); }
html body.cats-stuck:is(.gv2, .sv2) :is(.ah-top, .app-hd, .stman__top)::before { opacity: 0; }
html body.cats-stuck:is(.gv2, .sv2).has-demobar:not(.ah-overlay) .dmb { background: transparent; box-shadow: none; }
html body:is(.gv2, .sv2) :is(.food-cats, .tvp-cats, .fa2-catnav, .tva-catnav).is-stuck {
    background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; box-shadow: none; border-radius: 0; }

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    :root { --glass-bg: rgba(255, 255, 255, .96); --glass-plain: rgba(255, 255, 255, .96); --glass-btn-bg: #fff; }
}

/* нижнее меню гостя: сплошное белое, без линии-бортика сверху, тень как у шапки, только вверх (владелец 20.10.2026:
   стекло на меню не нужно, тень оставить). html впереди перебивает тень с линией из guest-v2.css */
html body.gv2 .ah-tabbar.ah-tabbar--v2 { background: #fff; box-shadow: 0 -4px 12px -6px rgba(17, 24, 39, .10); }

/* вкладка «Админ» (редакторы и настройки): под стеклом серый фон страницы (#f4f5f7), и шапка с полоской ролей серела -
   там шапка сплошная белая, как на остальных вкладках (владелец 20.10.2026) */
html body:is(.app-manage, .stman-open) { --glass-bg: #fff; }

/* чипы каруселей категорий (Еда, Магазин, Экскурсии у гостя и стафа, управление разделами в «Админе», их скелетоны) -
   скругленный прямоугольник, как наши кнопки, а не овал (владелец 24.10.2026) */
html body :is(.food-cat, .tvp-cat, .fa2-catnav__pill, .tva-catnav__pill, .qsk-chip) { border-radius: 12px; }
/* неактивные чипы каруселей - без белой обводки и светлой кромки, остается мягкая тень (владелец 24.10.2026) */
html body:is(.gv2, .sv2) :is(.food-cat, .tvp-cat):not(.is-active) { border-color: transparent; box-shadow: 0 2px 8px rgba(0, 0, 0, .08); }

/* Одно затемнение и одно появление у всех шторок и окон приложения (владелец 26.10.2026: «пройди по всем шторкам, должно
   быть одинаковым»). Эталон - шторки «Работа» и «Мои места» (parts/demo_bar.php .dmb-sh): цвет .38, затемнение проступает за
   .25s, шторка выезжает за .32s, и все - поверх верхнего меню (.dmb, слой 70): «Добавить гостя» и корзина были под ним.
   Файл подключается последним и у гостя, и у стафа, поэтому правило здесь, одно на всех */
:root { --qr-dim: rgba(17, 24, 39, .38); }
:is(.cartsheet__ov, .bksheet__ov, .sndsheet__ov, .osh__ov, .ghw__ov, .ghw__shade, .qhelp__ov, .pf-sheet__ov, .asvc-pop__ov,
    .rebook__ov, .osv-confirm__ov, .inv-pop__ov, .tour-pop__ov, .ntf-panel__ov, .pvdl__ov) { background: var(--qr-dim); }
:is(.optpop, .auth-role, .rate, .auth-pop, .hd-intro) { background: var(--qr-dim); }
:is(.cartsheet, .bksheet, .qhelp, .asvc-pop, .optpop, .auth-pop) { z-index: 96; }
:is(.cartsheet__ov, .bksheet__ov, .sndsheet__ov) { animation: qrDimIn .25s ease; }
:is(.cartsheet__box, .bksheet__box, .sndsheet__box) { animation: qrSheetUp .32s cubic-bezier(.22, .9, .3, 1); }
/* тень шторки как у эталона: густая тень давала над шторкой темную полосу, затемнение казалось другим */
:is(.cartsheet__box, .bksheet__box, .sndsheet__box, .osh__box) { box-shadow: 0 -8px 30px rgba(17, 24, 39, .12); }
@keyframes qrDimIn { from { opacity: 0; } }
@keyframes qrSheetUp { from { transform: translateY(100%); } }
