/* ============================================================
   НИЖНЯЯ НАВИГАЦИЯ И FAB — LUNAR DOCK v5 «LIQUID GLASS»
   Дизайн: плавающий пилл, как нижнее меню нативных приложений.
   - Подложка слегка затемнена, прозрачность ~0.80 + backdrop-blur
     (тёмная тема — тёмное стекло, светлая — молочное).
   - «Жидкое стекло»: мягкий верхний блик-спекуляр (::before),
     светящаяся внутренняя кромка сверху, тёмная снизу, большой
     мягкий float-shadow — пилл «висит» над контентом.
   - Активный пункт — светлая пилюля, подпись выезжает (как было).
   - Убраны старые эффекты: пробегающие блики (streaks) и
     glow-фильтры иконок — чистое стекло без лишнего.
   Совместимость с тумблерами эффектов (Опции → Визуальные эффекты):
   - fx-no-blur: блюр снимается kill-правилом в 16-fx.css, док
     автоматически уплотняется (правила --dock-bg там обновлены);
   - fx-no-fx: тени/свечения исчезают, геометрия не ломается
     (центрирование оставлено на left:50% + translate3d(-50%));
   - fx-no-anim: пружины/пульсации отключаются глобально.
   ============================================================ */
/* --- токены дока (тема-зависимые; на :root, чтобы их видели и док, и FAB) --- */
:root{--dock-bg:rgba(15,15,20,.80);--dock-border:rgba(255,255,255,.14);--dock-edge:inset 0 1px 0 rgba(255,255,255,.16),inset 0 -1px 0 rgba(0,0,0,.30),inset 0 0 0 1px rgba(255,255,255,.04);--dock-shadow:0 14px 38px rgba(0,0,0,.44),0 4px 14px rgba(0,0,0,.28);--sheen:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.02) 34%,transparent 58%);--nav-active-bg:rgba(255,255,255,.14);--nav-active-edge:inset 0 1px 0 rgba(255,255,255,.20);--nav-active-shadow:0 4px 14px rgba(0,0,0,.26);--badge-ring:rgba(13,13,18,.92)}
[data-theme="light"]{--dock-bg:rgba(255,255,255,.80);--dock-border:rgba(35,45,110,.12);--dock-edge:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -1px 0 rgba(35,45,110,.06),inset 0 0 0 1px rgba(255,255,255,.35);--dock-shadow:0 14px 36px rgba(35,45,90,.18),0 4px 12px rgba(35,45,90,.10);--sheen:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,.12) 34%,transparent 58%);--nav-active-bg:#fff;--nav-active-edge:inset 0 0 0 1px rgba(35,45,110,.07);--nav-active-shadow:0 4px 14px rgba(35,45,110,.16);--badge-ring:rgba(255,255,255,.95)}
/* --- контейнер: плавающий пилл --- */
.bottom-nav{position:fixed;bottom:calc(14px + env(safe-area-inset-bottom,0px));left:50%;right:auto;inset-inline-start:50%;transform:translate3d(-50%,0,0);width:min(430px,calc(100% - 24px));background:var(--dock-bg);backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--dock-border);border-radius:999px;padding:6px;display:flex;align-items:center;gap:2px;box-shadow:var(--dock-shadow),var(--dock-edge);z-index:1000;transition:transform .38s cubic-bezier(.32,.72,.34,1),bottom .3s ease,opacity .3s ease}
/* спекуляр: мягкое «жидкое» стекло поверх подложки, под пунктами */
.bottom-nav::before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--sheen);pointer-events:none}
/* --- пункт меню: неактивный = иконка, активный = пилюля с подписью --- */
.nav-item{background:none;border:none;color:var(--text-muted);display:flex;align-items:center;justify-content:center;flex:1 1 0;height:52px;padding:0;border-radius:999px;cursor:pointer;transition:color .3s ease,background-color .3s ease,transform .16s ease,box-shadow .3s ease;font-family:'Inter',sans-serif;position:relative;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.nav-item:focus:not(:focus-visible){outline:none}
.nav-item:focus-visible{outline:2px solid var(--pill-border);outline-offset:-5px}
.nav-item svg{width:24px;height:24px;flex-shrink:0;transition:transform .45s cubic-bezier(.34,1.56,.64,1)}
/* обёртка иконки: бейдж якорится к углу иконки, а не к центру кнопки */
.nav-ic{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-item > span:not(.nav-ic){max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-size:12.5px;font-weight:700;letter-spacing:.2px;line-height:1;transform:translateX(-6px);transition:max-width .45s cubic-bezier(.22,1,.36,1),opacity .28s ease,transform .45s cubic-bezier(.22,1,.36,1),color .3s ease}
@media(hover:hover){.nav-item:hover{color:var(--text-secondary)}}
.nav-item:active{transform:scale(.92)}
.nav-item:active svg{transform:scale(.9)}
/* --- активный пункт: светлая пилюля-стекло, подпись выезжает --- */
.nav-item.active{color:var(--text);background:var(--nav-active-bg);box-shadow:var(--nav-active-edge),var(--nav-active-shadow)}
.nav-item.active > span:not(.nav-ic){max-width:120px;opacity:1;transform:translateX(0);margin-left:8px;margin-right:3px}
.nav-item.active svg{transform:scale(1.06) translateY(-1px)}
.nav-item.hidden{display:none}
/* --- бейдж уведомлений: угол иконки (внутри .nav-ic) --- */
.nav-badge{position:absolute;top:-8px;right:-9px;left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:linear-gradient(180deg,#ff6a5e,#ff453a);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 3px var(--badge-ring),0 2px 10px rgba(255,69,58,.45);z-index:5;animation:navBadgeIn .35s cubic-bezier(.34,1.56,.64,1) both;pointer-events:none}
/* точка админа (v9): тот же угол иконки + мягкая пульсация */
.nav-badge.dot{min-width:9px;width:9px;height:9px;padding:0;top:-4px;right:-6px;border-radius:50%;animation:navBadgeIn .35s cubic-bezier(.34,1.56,.64,1) both,navDotPulse 2.4s ease-in-out 1s infinite}
@keyframes navDotPulse{0%,100%{box-shadow:0 0 0 3px var(--badge-ring),0 0 0 0 rgba(255,69,58,.42)}50%{box-shadow:0 0 0 3px var(--badge-ring),0 0 0 6px rgba(255,69,58,0)}}
/* v5: keyframes восстановлены — ссылка на navBadgeIn была по всему сайту,
   а определения нигде не было (бейджи появлялись без pop-анимации) */
@keyframes navBadgeIn{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
/* --- FAB «создать тикет»: стеклянная «луна» в стиле дока --- */
.fab-ticket-btn,#fabTicketBtn{position:fixed;bottom:calc(90px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);width:54px;height:54px;padding:0;border-radius:50%;background:var(--dock-bg);color:var(--text);border:1px solid var(--dock-border);box-shadow:var(--dock-shadow),var(--dock-edge);backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);display:none;align-items:center;justify-content:center;cursor:pointer;z-index:1001;transition:transform .3s ease,bottom .38s cubic-bezier(.32,.72,.34,1),opacity .3s ease,background .3s,color .3s,box-shadow .3s}
.fab-ticket-btn.visible,#fabTicketBtn.visible{display:flex!important;animation:fabPop .4s cubic-bezier(.175,.885,.32,1.275)}
body:has(#createTicketOverlay.active) .fab-ticket-btn,body:has(#createTicketOverlay.active) #fabTicketBtn{display:none!important}
.fab-ticket-btn svg,#fabTicketBtn svg{width:24px;height:24px;stroke:currentColor;stroke-width:2.4;fill:none;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
@media(hover:hover){.fab-ticket-btn:hover{background:var(--text);color:var(--bg)}.fab-ticket-btn:hover svg{transform:rotate(90deg) scale(1.05)}}
.fab-ticket-btn:active{transform:translateX(-50%) scale(.92)}
/* --- авто-скрытие дока при скролле вниз (body.nav-dock-hidden, JS 08-navigation v3) ---
   Док уезжает вниз + FAB «ныряет» следом (через bottom/opacity — совместимо с fx-no-fx) --- */
body.nav-dock-hidden .bottom-nav{transform:translate3d(-50%,calc(100% + 26px),0);opacity:0;pointer-events:none}
body.nav-dock-hidden .fab-ticket-btn,body.nav-dock-hidden #fabTicketBtn{bottom:calc(env(safe-area-inset-bottom,0px) - 84px);opacity:0;pointer-events:none}
/* --- уважение к системной настройке «меньше движения» --- */
@media (prefers-reduced-motion:reduce){.bottom-nav,.bottom-nav::before,.nav-item,.nav-item svg,.nav-item span,.nav-badge,.fab-ticket-btn,#fabTicketBtn,.fab-ticket-btn svg{animation:none!important;transition:none!important}}
