@font-face{font-family:'Evolventa';src:url('/assets/fonts/Evolventa-Regular.woff2') format('woff2');font-weight:100 550;font-style:normal;font-display:swap}
@font-face{font-family:'Evolventa';src:url('/assets/fonts/Evolventa-Bold.woff2') format('woff2');font-weight:551 900;font-style:normal;font-display:swap}
html,body{margin:0;padding:0;background:#08070A;color:#FFFFFF;height:100%;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}
body{font-family:'Evolventa',-apple-system,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:#FFA53A}a:hover{color:#FFC46B}
button{-webkit-tap-highlight-color:transparent}
button:active{filter:brightness(.92)}
#app{position:fixed;inset:0;margin:0 auto;max-width:560px;height:var(--tg-viewport-stable-height,100%);overflow:hidden}
#app.desk{position:static;max-width:none;height:auto;min-height:100vh;overflow:visible}
/* экраны: новый въезжает поверх, старый плавно уходит */
.scr{position:absolute;inset:0;z-index:1}
#app.desk .scr{position:relative;inset:auto;min-height:100vh}
.scr-in{animation:scrIn .46s cubic-bezier(.22,1,.36,1) both}
.scr-back{animation:scrBack .46s cubic-bezier(.22,1,.36,1) both}
.scr-tab-r{animation:tabR .4s cubic-bezier(.22,1,.36,1) both}
.scr-tab-l{animation:tabL .4s cubic-bezier(.22,1,.36,1) both}
.scr-out{z-index:0;pointer-events:none;animation:outFwd .42s cubic-bezier(.33,1,.68,1) both}
.scr-out.out-back{animation-name:outBack}.scr-out.out-l{animation-name:outL}.scr-out.out-r{animation-name:outR}
@keyframes scrIn{from{opacity:0;transform:translate3d(36px,0,0)}to{opacity:1;transform:none}}
@keyframes scrBack{from{opacity:0;transform:translate3d(-36px,0,0)}to{opacity:1;transform:none}}
@keyframes tabR{from{opacity:0;transform:translate3d(20px,0,0)}to{opacity:1;transform:none}}
@keyframes tabL{from{opacity:0;transform:translate3d(-20px,0,0)}to{opacity:1;transform:none}}
@keyframes outFwd{to{opacity:0;transform:translate3d(-48px,0,0) scale(.985)}}
@keyframes outBack{to{opacity:0;transform:translate3d(48px,0,0) scale(.985)}}
@keyframes outL{to{opacity:0;transform:translate3d(-20px,0,0)}}
@keyframes outR{to{opacity:0;transform:translate3d(20px,0,0)}}
/* десктоп: только мягкое появление поверх (сайдбар не мигает) */
#app.desk .scr-in,#app.desk .scr-back,#app.desk .scr-tab-r,#app.desk .scr-tab-l{animation:deskIn .32s ease-out both}
#app.desk .scr-out{position:absolute;top:0;left:0;right:0;animation:none}
@keyframes deskIn{from{opacity:0}to{opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes toastIn{0%{opacity:0;transform:translate(-50%,-12px)}100%{opacity:1;transform:translate(-50%,0)}}
@keyframes spinner{to{transform:rotate(360deg)}}
@keyframes skel{0%{background-position:-200px 0}100%{background-position:200px 0}}
.g-toast{position:fixed;left:50%;top:calc(14px + var(--tg-content-safe-area-inset-top,0px));z-index:100;min-height:40px;max-width:calc(100% - 40px);box-sizing:border-box;padding:9px 16px;border-radius:20px;background:rgba(36,32,40,0.82);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:0.5px solid rgba(255,255,255,0.18);display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#fff;animation:toastIn .3s cubic-bezier(.2,.9,.3,1) both;transition:opacity .3s,transform .3s;line-height:1.3}
.g-toast.out{opacity:0;transform:translate(-50%,-12px)}
.g-sheet-bg{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,0.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;flex-direction:column;justify-content:flex-end;animation:fadeIn .2s both;transition:opacity .2s}
.g-sheet{max-width:560px;width:100%;margin:0 auto;max-height:88%;overflow-y:auto;box-sizing:border-box;border-radius:28px 28px 0 0;background:#141217;border-top:0.5px solid rgba(255,190,110,0.35);box-shadow:0 -20px 60px rgba(255,140,39,0.18);padding:10px 16px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;animation:sheetUp .35s cubic-bezier(.2,.9,.3,1) both;transition:transform .25s}
.g-sheet.out{transform:translateY(100%)}
.g-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;animation:fadeIn .25s ease-out both}
.g-spin{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,140,39,0.2);border-top-color:#FF8C27;animation:spinner .8s linear infinite}
.g-mini-spin{display:inline-block;width:16px;height:16px;border-radius:50%;border:2.5px solid rgba(26,14,0,0.25);border-top-color:#1A0E00;animation:spinner .7s linear infinite;vertical-align:middle}
input,textarea{-webkit-appearance:none;appearance:none}
input[type=search]::-webkit-search-cancel-button{display:none}
@media (prefers-reduced-motion:reduce){.scr-in,.scr-back,.scr-tab-r,.scr-tab-l,.scr-out,.g-toast,.g-sheet,.g-sheet-bg{animation:none}}
/* в макетах контент помещался в 844px; с реальными данными список длиннее — карточки в прокручиваемых колонках не должны сжиматься */
.scr div[style*="overflow-y: auto"] > *{flex-shrink:0}
/* вбок прокручиваемые колонки не двигаются (фокус в поле ввода раньше сдвигал экран из-за широкого свечения) */
.scr div[style*="overflow-y: auto"]{overflow-x:hidden;overflow-x:clip}
#app:not(.desk) .scr > div{overflow:clip!important}

/* стиль бренда: никаких заглавных из css */
#app *,#overlay *,#tabbar *,.g-toast *{text-transform:none!important}
/* в telegram (в т.ч. десктоп) полосы прокрутки не показываем — отступы слева и справа одинаковые */
html.tg,html.tg body{overflow:hidden}
html.tg *{scrollbar-width:none}
html.tg *::-webkit-scrollbar{display:none;width:0;height:0}

/* нижнее меню — одно на все экраны (меню из макетов внутри экранов скрыто), apple liquid glass */
#app:not(.desk) .scr nav[aria-label^="разделы"]{display:none!important}
#tabbar{position:absolute;left:50%;bottom:24px;z-index:30;height:62px;padding:4px;box-sizing:border-box;border-radius:31px;display:flex;gap:2px;
  transform:translateX(-50%) translateZ(0);isolation:isolate;
  background:linear-gradient(180deg,rgba(255,255,255,0.10),rgba(255,255,255,0.02) 55%,rgba(255,255,255,0.05)),rgba(28,25,32,0.40);
  -webkit-backdrop-filter:blur(20px) saturate(220%) brightness(1.06);backdrop-filter:blur(20px) saturate(220%) brightness(1.06);
  border:0.5px solid rgba(255,255,255,0.2);
  box-shadow:inset 0 1px 0.5px rgba(255,255,255,0.4),inset 0 -1px 1px rgba(255,255,255,0.08),inset 1px 0 1px rgba(255,255,255,0.06),inset -1px 0 1px rgba(255,255,255,0.06),0 16px 40px rgba(0,0,0,0.55),0 2px 8px rgba(0,0,0,0.35);
  touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;
  transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .35s ease}
#tabbar::before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;
  background:radial-gradient(140% 90% at 25% -20%,rgba(255,255,255,0.22),rgba(255,255,255,0) 55%),radial-gradient(80% 60% at 90% 125%,rgba(255,170,80,0.14),rgba(255,170,80,0) 70%)}
#tabbar.hide{transform:translate(-50%,160%) translateZ(0);opacity:0;pointer-events:none}
#app.desk #tabbar{display:none}
.lg-lens{position:absolute;top:4px;bottom:4px;left:0;border-radius:27px;pointer-events:none;transform-origin:50% 50%;transition:opacity .25s;
  background:radial-gradient(120% 140% at 50% -10%,rgba(255,214,160,0.40),rgba(255,150,50,0.17) 55%,rgba(255,140,39,0.11));
  box-shadow:inset 0 1px 0.5px rgba(255,236,205,0.7),inset 0 -1px 1px rgba(255,170,80,0.35),inset 0 0 0 0.5px rgba(255,205,150,0.45),inset 0 0 14px rgba(255,190,120,0.16),0 6px 18px rgba(255,140,39,0.26)}
.lg-tab{position:relative;z-index:1;cursor:pointer;-webkit-user-drag:none;border-radius:27px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#E7E2E9;text-decoration:none;font-size:10px;font-weight:500;
  -webkit-tap-highlight-color:transparent;transition:color .25s ease}
.lg-tab svg{transition:transform .45s cubic-bezier(.3,1.6,.5,1),filter .3s}
.lg-tab.on{color:#FFA53A}
.lg-tab.on svg{transform:translateY(-1px) scale(1.08);filter:drop-shadow(0 0 6px rgba(255,140,39,0.55))}
.lg-adm{color:#FFC46B}
.lg-dot{position:absolute;top:5px;right:18px;width:7px;height:7px;border-radius:4px;background:linear-gradient(135deg,#FF8C27,#FCB825);box-shadow:0 0 8px rgba(255,140,39,0.9)}
/* блик на карточках: отдельный слой, анимация не встает на паузу */
.scr .sh{animation-name:gShine!important;animation-play-state:running!important;transform:skewX(-20deg);will-change:left}
@keyframes gShine{0%{left:-35%;transform:skewX(-20deg)}55%,100%{left:135%;transform:skewX(-20deg)}}

/* открыта клавиатура: меню уезжает вниз, не перекрывает поле ввода */
/* кнопка «купить» на главной опускается к клавиатуре (меню спрятано) */
.scr div[style*="bottom: 100px"]{transition:bottom .3s cubic-bezier(.22,1,.36,1)}
html.kb .scr div[style*="bottom: 100px"]{bottom:12px!important}
html.kb #tabbar{transform:translate(-50%,160%) translateZ(0);opacity:0;pointer-events:none}

@keyframes g-rot{to{transform:rotate(360deg)}}
/* десктоп-админка: боковая панель закреплена — меню и «обновить» всегда на экране */
@media (min-width:900px){#app.desk .scr aside{position:sticky;top:0;align-self:flex-start;height:100vh;overflow-y:auto;scrollbar-width:none}}
