/* ═══════════════════════════════════════════════════════════════════
   PREMIUM LAYER — визуальный слой поверх inline-CSS из index.html
   ───────────────────────────────────────────────────────────────────
   Подключается ПОСЛЕ основного <style>, поэтому при равной
   специфичности выигрывает. Логику сайта не трогает.
   Управляется js/features/fx.js.

   Правила игры:
   • всё, что непрерывно анимируется, — только под body.high
   • body.low и prefers-reduced-motion получают статичную, но
     красивую версию (глубина, свечение, стекло — без движения)
   • акцентные цвета берём из var(--accent)/var(--accent2), чтобы
     VIP-тема (см. profile.js → applyThemeAccent) перекрашивала и
     этот слой
   ═══════════════════════════════════════════════════════════════════ */

/* ────────────────────────── 0. ТОКЕНЫ ────────────────────────── */
:root{
  /* У Bebas Neue НЕТ кириллицы → раньше русские заголовки рисовались
     случайным системным шрифтом. Oswald — узкий гротеск с кириллицей.
     Если смешать в одной строке Bebas (латиница) и Oswald (кириллица),
     размеры глифов не совпадают — поэтому весь display-текст набран
     Oswald, а Bebas оставлен только для брендовых знаков (--font-brand). */
  --font-display:'Oswald','Bebas Neue','Arial Narrow',sans-serif;
  --font-brand:'Bebas Neue','Oswald','Arial Narrow',sans-serif;
  /* --line, --line-hi и цвета поверхностей — токены тем в <style> index.html (T-086: тёмная / светлая) */
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --ac-10:color-mix(in srgb,var(--accent) 10%,transparent);
  --ac-18:color-mix(in srgb,var(--accent) 18%,transparent);
  --ac-30:color-mix(in srgb,var(--accent) 30%,transparent);
  --ac-55:color-mix(in srgb,var(--accent) 55%,transparent);
  --ac2-30:color-mix(in srgb,var(--accent2) 30%,transparent);
  --tw-18:color-mix(in srgb,var(--tw) 18%,transparent);
  --tw-30:color-mix(in srgb,var(--tw) 30%,transparent);
  --tg-18:color-mix(in srgb,var(--tg) 18%,transparent);
}
::selection{background:var(--ac-55);color:#fff}
/* Раскрытый список <select> рисует система — без этого на Windows он белый (светлая тема — color-scheme:light у :root) */
:root:not([data-theme="light"]) select{color-scheme:dark}
select option,select optgroup{background:var(--bg2);color:var(--text)}
html{scroll-padding-top:5rem}

/* Единый вид всех display-заголовков: Bebas для латиницы, Oswald для
   кириллицы + верхний регистр, чтобы гарнитуры не «прыгали» */
.sec-title,.about-title,.hub-name,.dc-title,.stat-val,.poll-question,.lb-head-title,
.chat-title,.empty-state-title,.footer-logo,.pp-title,.pp-card-name,.stream-title,
.goal-bar-amount,.lb-rank,.lb-amount,.sub-banner-title,.gauth-head h3,.privacy-head h2,
.clicker-score,.donation-alert-title,.nav-logo,.avatar-inner{
  text-transform:uppercase;font-weight:600;
}
.nav-logo,.footer-logo,.avatar-inner{font-family:var(--font-brand);font-weight:400}

/* ─────────────────── 1. ФОНОВЫЙ «ВОЗДУХ» СТРАНИЦЫ ─────────────────── */
#ambient{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;--sp:0}
.amb{position:absolute;border-radius:50%;will-change:transform}
.amb.a1{width:72vmax;height:72vmax;left:-30vmax;top:-26vmax;
  background:radial-gradient(closest-side,var(--ac-18),transparent);
  transform:translate3d(calc(var(--sp)*6vmax),calc(var(--sp)*46vmax),0)}
.amb.a2{width:62vmax;height:62vmax;right:-28vmax;top:6vmax;
  background:radial-gradient(closest-side,var(--tw-18),transparent);
  transform:translate3d(calc(var(--sp)*-5vmax),calc(var(--sp)*34vmax),0)}
.amb.a3{width:58vmax;height:58vmax;left:14vmax;bottom:-34vmax;
  background:radial-gradient(closest-side,var(--tg-18),transparent);
  transform:translate3d(calc(var(--sp)*-8vmax),calc(var(--sp)*-28vmax),0)}
body.low .amb{will-change:auto}

/* ───────────────────────────── 2. NAV ───────────────────────────── */
#nav{
  padding:.7rem 2rem;
  background:linear-gradient(180deg,rgba(var(--bg-rgb),.9),rgba(var(--bg-rgb),.74));
  border-bottom:none;
  box-shadow:0 1px 0 var(--line);
  transition:padding .35s var(--ease-out),box-shadow .35s,background .35s;
}
#nav::after{
  content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--ac-55),var(--tw-30),transparent);
  opacity:0;transition:opacity .4s;
}
#nav.scrolled{padding:.5rem 2rem;background:rgba(var(--bg-rgb),.88);box-shadow:0 1px 0 var(--line),0 12px 44px rgba(0,0,0,.6)}
#nav.scrolled::after{opacity:1}

.nav-logo{
  font-size:1.75rem;letter-spacing:.14em;line-height:1;
  background:linear-gradient(110deg,var(--text-hi) 0%,var(--text-hi) 35%,var(--accent) 70%,var(--accent2) 100%);
  background-size:200% 100%;background-position:0 0;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  transition:background-position .7s var(--ease-out);
}
.nav-logo:hover{background-position:100% 0}

/* только десктоп: в мобильном меню .nav-links — absolute-панель под шапкой, её position/gap не трогаем */
@media(min-width:1181px){.nav-links{position:relative;gap:.15rem}}
.nav-links a,.nav-more-btn{
  position:relative;z-index:1;padding:.55rem .82rem;border-radius:999px;
  font-size:.7rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);transition:color .25s;
}
.nav-links a:hover,.nav-more-btn:hover,.nav-more.open .nav-more-btn{color:var(--text)}
.nav-links a.active-route{color:var(--text-hi)}
/* 1181–1599 px: пункты шапки плотнее — иначе «Войти» уезжал за правый край (16.10.2026) */
@media(min-width:1181px) and (max-width:1599px){.nav-links a,.nav-more-btn{padding:.5rem .58rem;letter-spacing:.06em}}
.nav-links a.nav-donate{
  margin-left:.5rem;padding:.55rem 1.15rem;color:#fff!important;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 8px 24px -8px var(--ac-55),inset 0 1px 0 rgba(255,255,255,.35);
  transition:transform .3s var(--ease-spring),box-shadow .3s;
}
.nav-links a.nav-donate:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 12px 30px -8px var(--ac-55),inset 0 1px 0 rgba(255,255,255,.4)}

/* Скользящая «пилюля» активного раздела */
.nav-ind{
  position:absolute;top:50%;left:0;height:34px;margin-top:-17px;width:0;border-radius:999px;
  background:linear-gradient(180deg,var(--ac-18),var(--ac-10));
  box-shadow:inset 0 0 0 1px var(--ac-30),0 0 26px -6px var(--ac-55);
  transition:transform .5s var(--ease-out),width .5s var(--ease-out),opacity .3s;
  opacity:0;pointer-events:none;z-index:0;
}
.nav-ind.on{opacity:1}

/* «Ещё ▾» — редкие разделы убраны с глаз */
.nav-more{position:relative;display:inline-flex}
.nav-more-btn{font-family:inherit;background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem}
.nm-caret{width:6px;height:6px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translate(-1px,-2px);transition:transform .35s var(--ease-out)}
.nav-more.open .nm-caret{transform:rotate(225deg) translate(-1px,-2px)}
.nav-more.has-active .nav-more-btn{color:var(--text-hi)}
.nav-more-panel{
  position:absolute;top:calc(100% + 14px);left:50%;min-width:200px;padding:.45rem;border-radius:18px;
  background:rgba(var(--panel-rgb),.95);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  border:1px solid var(--line-hi);box-shadow:var(--sh-2),0 0 0 1px rgba(0,0,0,.04);
  opacity:0;visibility:hidden;transform:translate(-50%,-8px) scale(.97);transform-origin:top center;
  transition:opacity .2s,transform .35s var(--ease-out),visibility .2s;
}
.nav-more.open .nav-more-panel{opacity:1;visibility:visible;transform:translate(-50%,0)}
.nav-more-panel a{display:block;padding:.7rem .95rem;border-radius:12px;white-space:nowrap}
.nav-more-panel a:hover{background:rgba(var(--fg-rgb),.06)}
.nav-more-panel a.active-route{color:var(--accent);background:var(--ac-10)}

.lang-btn,.global-auth-btn{background:rgba(var(--fg-rgb),.035);border-color:var(--line-hi);transition:border-color .25s,background .25s,color .25s,transform .3s var(--ease-spring)}
.lang-btn:hover,.global-auth-btn:hover{background:rgba(var(--fg-rgb),.07);transform:translateY(-1px)}

@media(max-width:1180px){
  .nav-ind{display:none}
  .nav-more{display:contents}
  .nav-more-btn{display:none}
  .nav-more-panel{
    position:static;display:contents;opacity:1;visibility:visible;transform:none!important;
    background:none;border:none;box-shadow:none;padding:0;backdrop-filter:none;
  }
  .nav-more-panel a{display:inline;padding:0;border-radius:0;background:none!important}
  .nav-links a{padding:.15rem 0;font-size:.78rem}
  .nav-links a.nav-donate{margin-left:0;align-self:center;padding:.6rem 1.3rem}
}

/* ───────────────────── 3. HERO — «прямой эфир» ───────────────────── */
.hero{
  padding:5.4rem 1.5rem 7.8rem;isolation:isolate;
  --px:0;--py:0;--cx:0;
}
.hero-bg{
  background:
    /* свечение за словом (статичное — дешевле, чем drop-shadow на анимируемом тексте) */
    radial-gradient(34% 17% at 50% 47%,var(--ac-30),transparent 72%),
    radial-gradient(46% 24% at 50% 50%,var(--tw-18),transparent 74%),
    radial-gradient(58% 48% at 50% 34%,color-mix(in srgb,var(--accent) 15%,transparent),transparent 72%),
    radial-gradient(ellipse 70% 60% at 10% 58%,color-mix(in srgb,var(--accent) 19%,transparent),transparent 62%),
    radial-gradient(ellipse 60% 70% at 90% 44%,color-mix(in srgb,var(--tw) 20%,transparent),transparent 62%),
    radial-gradient(ellipse 55% 42% at 50% -8%,color-mix(in srgb,var(--tg) 15%,transparent),transparent 62%);
}
.hero-grid{display:none}
/* Орбы авроры и так радиальные градиенты с плавным затуханием — filter:blur(80px)
   на трёх анимируемых слоях ничего не давал, но был самым дорогим эффектом героя */
.aurora-orb{filter:none}
.hero-bg,.hero-aurora,.hero-canvas{
  -webkit-mask-image:linear-gradient(to bottom,#000 72%,transparent 100%);
          mask-image:linear-gradient(to bottom,#000 72%,transparent 100%);
}

/* Курсор-прожектор (HIGH, десктоп) */
.hero-spot{
  position:absolute;left:0;top:0;width:860px;height:860px;margin:-430px 0 0 -430px;border-radius:50%;
  pointer-events:none;z-index:0;opacity:0;transition:opacity .7s;will-change:transform;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 24%,transparent),color-mix(in srgb,var(--tw) 9%,transparent) 55%,transparent);
}
body.high .hero.pointer .hero-spot{opacity:1}

/* Созвездие (canvas, рисуется из fx.js) */
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:0;transition:opacity 1.4s}
body.high .hero-canvas{opacity:.95}

/* Неоновый пол в перспективе — уходит к горизонту */
.hero-floor{
  position:absolute;left:-25%;right:-25%;bottom:0;height:46%;pointer-events:none;z-index:0;
  perspective:460px;perspective-origin:50% 0;overflow:hidden;
  -webkit-mask-image:linear-gradient(to top,transparent 0%,#000 24%,rgba(0,0,0,.6) 52%,transparent 94%);
          mask-image:linear-gradient(to top,transparent 0%,#000 24%,rgba(0,0,0,.6) 52%,transparent 94%);
}
.hero-floor-plane{position:absolute;left:0;right:0;bottom:0;height:260%;transform-origin:50% 100%;transform:rotateX(72deg)}
.hero-floor-grid{
  position:absolute;left:0;right:0;top:-72px;bottom:0;
  background-image:
    linear-gradient(90deg,color-mix(in srgb,var(--accent) 42%,transparent) 1.5px,transparent 1.5px),
    linear-gradient(0deg,color-mix(in srgb,var(--tw) 42%,transparent) 1.5px,transparent 1.5px);
  background-size:72px 72px;
  box-shadow:0 0 90px 30px color-mix(in srgb,var(--accent) 12%,transparent) inset;
}
body.high .hero-floor-grid{animation:floorScroll 2.2s linear infinite;will-change:transform}
@keyframes floorScroll{to{transform:translateY(72px)}}

/* Вход элементов героя — единственная «оркестровая» анимация загрузки */
.hero .hx{animation:hxIn 1s var(--ease-out) backwards;animation-delay:var(--d,0s)}
@keyframes hxIn{from{opacity:0;transform:translateY(24px)}}
.hero.seen .hx{animation:none}

/* Плашка «ближайший эфир» */
.hero-pill{
  position:relative;z-index:3;display:inline-flex;align-items:center;gap:.7rem;
  padding:.55rem 1.1rem .55rem .85rem;margin-bottom:2.8rem;border-radius:999px;
  font-size:.76rem;font-weight:600;color:rgba(var(--text-rgb),.82);
  background:rgba(var(--panel-rgb),.62);border:1px solid var(--line-hi);
  transition:border-color .3s,background .3s,transform .4s var(--ease-spring);
}
.hero-pill[hidden]{display:none}
.hero-pill:hover{border-color:var(--ac-55);background:var(--ac-10);transform:translateY(-2px)}
.hero-pill b{font-weight:800;color:var(--text-hi)}
.hero-pill em{font-style:normal;color:var(--muted)}
.pill-dot{width:9px;height:9px;flex:none;border-radius:50%;background:var(--tw);box-shadow:0 0 0 0 var(--tw-30)}
.hero-pill.is-live{border-color:var(--ac-55);background:var(--ac-10)}
.hero-pill.is-live .pill-dot{background:var(--accent);box-shadow:0 0 0 0 var(--ac-55)}
body.high .pill-dot{animation:pillPulse 2s ease-out infinite}
@keyframes pillPulse{0%{box-shadow:0 0 0 0 currentColor}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}}
.hero-pill .pill-dot{color:var(--tw-30)}
.hero-pill.is-live .pill-dot{color:var(--ac-55)}

/* Аватар + орбита платформ */
.avatar{
  width:132px;height:132px;margin-bottom:2.85rem;z-index:3;
  translate:calc(var(--px)*-14px) calc(var(--py)*-10px);
  animation:none;
}
body.high .avatar{animation:avatarIn 1.2s var(--ease-out) .05s backwards,float 6s ease-in-out 1.3s infinite}
@keyframes avatarIn{from{opacity:0;transform:scale(.55) rotate(-25deg)}}
.hero.seen .avatar{animation:float 6s ease-in-out infinite}
body:not(.high) .avatar,body:not(.high) .hero.seen .avatar{animation:none}
.avatar-inner{font-size:2.9rem;letter-spacing:.06em}
.orbit{position:absolute;inset:-34px;border-radius:50%;z-index:4;pointer-events:none}
.orbit::before{content:'';position:absolute;inset:0;border-radius:50%;border:1px dashed rgba(var(--fg-rgb),.15)}
body.high .orbit{animation:spin 28s linear infinite}
.sat{
  position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;pointer-events:auto;
  transform:rotate(var(--a)) translateX(100px) rotate(calc(var(--a)*-1));
}
.sat-i{
  display:grid;place-items:center;width:100%;height:100%;border-radius:50%;
  font-size:.78rem;font-weight:800;line-height:1;color:var(--sc);
  background:rgba(var(--panel-rgb),.9);border:1.5px solid var(--sc);
  box-shadow:0 0 20px -2px color-mix(in srgb,var(--sc) 75%,transparent),inset 0 0 10px color-mix(in srgb,var(--sc) 28%,transparent);
  transition:transform .35s var(--ease-spring);
}
body.high .sat-i{animation:spin 28s linear infinite reverse}
.sat:hover .sat-i,.sat:focus-visible .sat-i{transform:scale(1.4)}
.avatar:hover .orbit,.avatar:hover .sat-i{animation-play-state:paused}
@media(hover:none){.sat{width:34px;height:34px;margin:-17px 0 0 -17px}}

/* Логотип-слово: глянцевый градиент, блик, RGB-сплит, глитч */
.wordmark{
  position:relative;z-index:3;margin:0;
  font-family:var(--font-brand);font-weight:400;
  font-size:clamp(4.4rem,min(15.5vw,24vh),11.5rem);line-height:.86;letter-spacing:.035em;
  translate:calc(var(--px)*8px) calc(var(--py)*5px);
}
.wordmark .wm{
  position:relative;z-index:2;display:inline-block;padding:0 .04em;
  background:
    linear-gradient(180deg,var(--wm-hi,rgba(255,255,255,.95)) 0%,var(--wm-mid,rgba(255,255,255,.4)) 36%,rgba(255,255,255,0) 64%),
    linear-gradient(105deg,transparent 42%,rgba(255,255,255,.9) 50%,transparent 58%),
    linear-gradient(90deg,var(--accent) 0%,var(--accent) 34%,var(--accent2) 100%);
  background-size:100% 100%,260% 100%,100% 100%;
  background-position:0 0,160% 0,0 0;
  background-repeat:no-repeat;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
}
body.high .wordmark .wm{animation:wmSheen 7s 3s var(--ease-out) infinite}
@keyframes wmSheen{0%{background-position:0 0,160% 0,0 0}42%,100%{background-position:0 0,-60% 0,0 0}}
.wordmark::before,.wordmark::after{
  content:attr(data-text);position:absolute;left:0;right:0;top:0;z-index:1;
  text-align:center;padding:0 .04em;pointer-events:none;opacity:.9;
}
.wordmark::before{color:var(--tg);translate:calc(var(--cx)*-1px - 3px) 0}
.wordmark::after{color:var(--tw);translate:calc(var(--cx)*1px + 3px) 0}
body.high .wordmark{animation:wmLock 1.35s .3s var(--ease-out) backwards}
@keyframes wmLock{
  from{opacity:0;transform:scale(1.07);clip-path:inset(-30% 100% -30% -10%)}
  60%{opacity:1}
  to{clip-path:inset(-30% -10% -30% -10%)}
}
body.high .wordmark::before{animation:chromaL 1.3s .35s var(--ease-out) backwards,glitchL 9s 3.5s infinite}
body.high .wordmark::after{animation:chromaR 1.3s .35s var(--ease-out) backwards,glitchR 9s 3.5s infinite}
@keyframes chromaL{from{transform:translateX(-56px)}}
@keyframes chromaR{from{transform:translateX(56px)}}
@keyframes glitchL{
  0%,90%,100%{transform:none;clip-path:none}
  91%{transform:translate(-9px,2px);clip-path:inset(8% 0 58% 0)}
  92%{transform:translate(7px,-2px);clip-path:inset(58% 0 10% 0)}
  93%{transform:translate(-5px,0);clip-path:inset(30% 0 38% 0)}
  94%{transform:none;clip-path:none}
}
@keyframes glitchR{
  0%,90%,100%{transform:none;clip-path:none}
  91%{transform:translate(9px,-2px);clip-path:inset(52% 0 14% 0)}
  92%{transform:translate(-7px,2px);clip-path:inset(12% 0 56% 0)}
  93%{transform:translate(5px,0);clip-path:inset(36% 0 30% 0)}
  94%{transform:none;clip-path:none}
}

/* Подзаголовок: эквалайзер + сменяющиеся фразы */
.hero-sub{
  position:relative;z-index:3;display:flex;align-items:center;justify-content:center;gap:.85rem;
  margin-top:1.3rem;font-family:var(--font-display);font-weight:500;
  font-size:clamp(1.15rem,2.5vw,1.65rem);letter-spacing:.16em;text-transform:uppercase;color:rgba(var(--text-rgb),.93);
}
.eq{display:inline-flex;align-items:flex-end;gap:3px;height:18px}
.eq i{width:3px;height:100%;border-radius:2px;background:linear-gradient(var(--accent),var(--accent2));transform-origin:bottom;transform:scaleY(.4)}
body.high .eq i{animation:eq 1s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:-.35s!important}
.eq i:nth-child(3){animation-delay:-.7s!important}
@keyframes eq{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
.role-rot{display:inline-grid;justify-items:start;text-align:left}
.role-rot span{
  grid-area:1/1;white-space:nowrap;opacity:0;transform:translateY(70%);filter:blur(5px);
  transition:opacity .5s,transform .7s var(--ease-out),filter .5s;
}
.role-rot span:first-child{opacity:1;transform:none;filter:none}
.role-rot.js span{opacity:0;transform:translateY(70%);filter:blur(5px)}
.role-rot.js span.on{opacity:1;transform:none;filter:none}
.role-rot.js span.off{opacity:0;transform:translateY(-70%);filter:blur(5px)}
/* Без движения (Low / reduce-motion) показываем одну фразу, без пустого места под остальные */
body:not(.high) .role-rot span{display:none}
body:not(.high) .role-rot span.on,body:not(.high) .role-rot:not(.js) span:first-child{display:inline;opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){.role-rot span:not(:first-child){display:none}}

.hero-desc{
  position:relative;z-index:3;max-width:530px;margin-top:1rem;font-size:.96rem;line-height:1.75;
  color:rgba(var(--text-rgb),.7);
}

/* Кнопки: одна главная, две вторичные, остальные соцсети — компактные чипы */
.hero-cta{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:2rem}
.hero-btn{
  position:relative;display:inline-flex;align-items:center;gap:.65rem;height:52px;padding:0 1.55rem 0 1.15rem;
  border-radius:16px;font-size:.8rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#fff;
  overflow:hidden;isolation:isolate;
  translate:var(--tx,0px) var(--ty,0px);
  transition:translate .35s var(--ease-out),box-shadow .35s,background .3s,border-color .3s;
}
.hero-btn::after{
  content:'';position:absolute;inset:0;z-index:-1;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.38) 50%,transparent 70%);
  transform:translateX(-130%);transition:transform .8s var(--ease-out);
}
.hero-btn:hover::after{transform:translateX(130%)}
.hero-btn .hb-ic{
  display:grid;place-items:center;width:30px;height:30px;border-radius:10px;font-size:.85rem;line-height:1;
  background:rgba(255,255,255,.18);
}
.hero-btn.is-yt{
  background:linear-gradient(135deg,#ff4040,#d90429);
  box-shadow:0 14px 34px -10px rgba(255,64,64,.75),inset 0 1px 0 rgba(255,255,255,.4);
  height:56px;font-size:.84rem;
}
.hero-btn.is-yt:hover{box-shadow:0 18px 44px -8px rgba(255,64,64,.9),inset 0 1px 0 rgba(255,255,255,.5)}
.hero-btn.is-tw{
  background:linear-gradient(180deg,rgba(145,71,255,.24),rgba(145,71,255,.1));
  border:1px solid rgba(145,71,255,.55);color:#efe6ff;
  box-shadow:0 10px 30px -12px rgba(145,71,255,.7);
}
.hero-btn.is-tw:hover{border-color:#b18cff;box-shadow:0 16px 40px -10px rgba(145,71,255,.9)}
.hero-btn.is-tw .hb-ic{background:rgba(145,71,255,.35)}
.hero-btn.is-don{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 12px 32px -10px var(--ac-55),inset 0 1px 0 rgba(255,255,255,.4);
}
.hero-btn.is-don:hover{box-shadow:0 18px 44px -8px var(--ac-55),inset 0 1px 0 rgba(255,255,255,.5)}
.hero-btn:active{scale:.97}

.hero-chips{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:.55rem;margin-top:1rem}
.chip{
  --cc:var(--accent);
  display:inline-flex;align-items:center;gap:.55rem;padding:.4rem 1rem .4rem .42rem;border-radius:999px;
  font-size:.74rem;font-weight:700;color:rgba(var(--text-rgb),.84);
  background:rgba(var(--fg-rgb),.04);border:1px solid var(--line);
  translate:var(--tx,0px) var(--ty,0px);
  transition:border-color .3s,background .3s,box-shadow .3s,color .3s,translate .35s var(--ease-out);
}
.chip .ic{
  display:grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:.7rem;font-weight:800;line-height:1;
  color:var(--cc);background:color-mix(in srgb,var(--cc) 18%,transparent);
}
.chip:hover{
  color:var(--text-hi);border-color:color-mix(in srgb,var(--cc) 65%,transparent);
  background:color-mix(in srgb,var(--cc) 12%,transparent);
  box-shadow:0 10px 26px -10px color-mix(in srgb,var(--cc) 80%,transparent);
}

/* Бегущая строка-навигация внизу героя */
.hero-marquee{
  position:absolute;left:-4%;right:-4%;bottom:1.2rem;z-index:2;overflow:hidden;
  transform:rotate(-1.3deg);
  border-block:1px solid var(--line);
  background:linear-gradient(90deg,var(--ac-10),var(--tw-18),var(--tg-18));
}
.mq-track{display:flex;width:max-content;will-change:transform}
body.high .mq-track{animation:mq var(--mq-dur,46s) linear infinite}
.hero-marquee:hover .mq-track{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.mq-group{display:flex;align-items:center;flex:none}
.mq-item{
  font-family:var(--font-display);font-weight:500;text-transform:uppercase;
  font-size:clamp(1.55rem,3.3vw,2.55rem);letter-spacing:.12em;line-height:1;padding:.62rem 1.5rem;
  color:transparent;-webkit-text-stroke:1px rgba(var(--fg-rgb),.38);
  transition:color .3s,-webkit-text-stroke-color .3s,text-shadow .3s;white-space:nowrap;
}
.mq-item:hover,.mq-item:focus-visible{color:var(--text-hi);-webkit-text-stroke-color:var(--accent);text-shadow:0 0 26px var(--accent)}
.mq-sep{
  flex:none;width:15px;height:15px;background:linear-gradient(135deg,var(--accent),var(--accent2));
  clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);
}
body.high .mq-sep{animation:spin 9s linear infinite}

/* Подсказка «вниз» */
.scroll-hint{
  display:none;position:absolute;left:50%;bottom:7.4rem;z-index:3;transform:translateX(-50%);
  flex-direction:column;align-items:center;gap:.5rem;background:none;border:none;cursor:pointer;
  font-family:'Montserrat',sans-serif;font-size:.6rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);
  transition:color .3s;
}
.scroll-hint:hover{color:var(--text-hi)}
.scroll-hint .mouse{width:20px;height:32px;border-radius:12px;border:1.5px solid currentColor;position:relative}
.scroll-hint .mouse::after{content:'';position:absolute;left:50%;top:6px;width:3px;height:6px;margin-left:-1.5px;border-radius:2px;background:var(--accent)}
body.high .scroll-hint .mouse::after{animation:wheel 1.8s var(--ease-out) infinite}
@keyframes wheel{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(11px)}}
@media(min-height:960px) and (min-width:700px){.scroll-hint{display:flex}}

/* Низкие экраны (ноутбуки 768) — ужимаем героя, чтобы всё влезло */
@media(max-height:780px){
  .hero{padding-top:5.2rem;padding-bottom:9rem}
  .avatar{width:104px;height:104px;margin-bottom:2.6rem}
  .orbit{inset:-30px}.sat{transform:rotate(var(--a)) translateX(82px) rotate(calc(var(--a)*-1))}
  .hero-pill{margin-bottom:2.1rem}
  .avatar-inner{font-size:2.3rem}
}

/* Совсем низкие окна (маленькие ноутбуки с панелями браузера) */
@media(max-height:720px){
  .hero-desc{display:none}
  .hero-cta{margin-top:1.5rem}
  .hero-sub{margin-top:1rem}
}

/* Телефон */
@media(max-width:640px){
  .hero{padding:5.4rem 1rem 8.5rem}
  .hero-floor{height:34%}
  .hero-pill{font-size:.7rem;padding:.5rem .9rem .5rem .75rem;margin-bottom:2.3rem;max-width:100%;white-space:nowrap}
  .hero-pill em{display:none}
  .avatar{width:112px;height:112px;margin-bottom:2.5rem}
  .orbit{inset:-30px}.sat{transform:rotate(var(--a)) translateX(86px) rotate(calc(var(--a)*-1))}
  .wordmark{font-size:min(25vw,6.9rem)}
  .hero-desc{font-size:.9rem}
  .hero-btn{height:50px;padding:0 1.25rem 0 1rem;font-size:.76rem}
  .hero-btn.is-yt{width:100%;justify-content:center;height:54px}
  .hero-cta{width:100%;max-width:400px}
  .hero-btn.is-tw,.hero-btn.is-don{flex:1 1 calc(50% - .4rem);justify-content:center;padding:0 .8rem}
  .hero-marquee{bottom:1.2rem}
  .mq-item{padding:.5rem 1.1rem}
}

/* ───────────── 4. КАРТОЧКИ: свет, следующий за курсором ─────────────
   JS (fx.js) пишет --mx/--my в карточку под курсором. Кайма и подсветка
   рисуются многослойным background — без псевдоэлементов, потому что
   ::before/::after у карточек уже заняты (полоски сверху/снизу).        */
:is(.stat-card,.hub-card,.about-card,.dc,.vcard,.sound-btn,.day-card){
  --mx:-400px;--my:-400px;--cc:var(--accent);
  border:1px solid transparent;
  background:
    radial-gradient(260px circle at var(--mx) var(--my),rgba(var(--fg-rgb),.075),transparent 70%) padding-box,
    linear-gradient(var(--card),var(--card)) padding-box,
    radial-gradient(210px circle at var(--mx) var(--my),color-mix(in srgb,var(--cc) 80%,transparent),transparent 65%) border-box,
    linear-gradient(var(--line),var(--line)) border-box;
  background-origin:border-box;
}
:is(.goal-bar-wrap,.lb-wrap,.poll-wrap,.clicker-wrap,.chat-wrap,.stream-box){
  --mx:-400px;--my:-400px;--cc:var(--tw);
  border:1px solid transparent;
  background:
    linear-gradient(var(--card),var(--card)) padding-box,
    radial-gradient(360px circle at var(--mx) var(--my),color-mix(in srgb,var(--cc) 65%,transparent),transparent 65%) border-box,
    linear-gradient(var(--line),var(--line)) border-box;
  background-origin:border-box;
}
.goal-bar-wrap,.lb-wrap,.poll-wrap,.clicker-wrap{--cc:var(--accent)}

/* Наклон 3D (HIGH, только у крупных карточек) */
body.high :is(.stat-card,.hub-card,.about-card,.dc){
  transform-style:preserve-3d;
  transition:transform .2s ease-out,box-shadow .35s;
}
body.high :is(.stat-card,.hub-card,.about-card,.dc):hover{
  transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-7px) scale(1.015);
}

/* ─────────────────── 5. ЗАГОЛОВКИ РАЗДЕЛОВ ─────────────────── */
.sec-title{
  font-size:clamp(2.5rem,5.6vw,4.3rem);letter-spacing:.05em;line-height:1;color:var(--text-hi);
  padding-left:1.35rem;margin-bottom:3rem;text-shadow:0 2px 30px rgba(0,0,0,.5);
}
.sec-title::before{
  width:5px;border-radius:4px;
  background:linear-gradient(var(--accent),var(--accent2));
  box-shadow:0 0 22px var(--ac-55);
}
.sec-title::after{
  content:'';position:absolute;left:1.35rem;bottom:-.7rem;height:2px;width:0;border-radius:2px;
  background:linear-gradient(90deg,var(--accent),var(--accent2),transparent);
  transition:width 1.2s .2s var(--ease-out);
}
.sec-title.in::after,body:not(.high) .sec-title::after{width:min(240px,48%)}
.sec-title-row{margin-bottom:3rem}
.divider{
  height:1px;margin-bottom:4.2rem;
  background:linear-gradient(90deg,transparent,var(--ac-30) 30%,var(--tw-30) 70%,transparent);
  box-shadow:0 0 24px var(--ac-18);
}
.wrap{padding-top:5.4rem;padding-bottom:4.2rem}

/* ───────────────── 6. СТАТИСТИКА ("Мои платформы") ───────────────── */
.sc1,.sc2,.sc3{--cc:var(--yt)}
.sc4{--cc:var(--tw)}
.sc5{--cc:var(--tg)}
.stat-card{padding:1.7rem 1rem 1.4rem;border-radius:18px}
.stat-card>div:first-child{
  display:grid;place-items:center;width:48px;height:48px;margin:0 auto .85rem!important;border-radius:15px;
  color:var(--cc);background:color-mix(in srgb,var(--cc) 14%,transparent);
  border:1px solid color-mix(in srgb,var(--cc) 35%,transparent);
  transition:transform .4s var(--ease-spring);
}
.stat-card:hover>div:first-child{transform:scale(1.12) rotate(-6deg)}
.stat-val{font-size:2.7rem;letter-spacing:.06em;text-shadow:0 0 28px color-mix(in srgb,var(--cc) 50%,transparent)}
.stat-lbl{font-size:.64rem;letter-spacing:.16em;color:#a9a9c4;margin-top:.5rem}
.stat-card::after{height:3px;transition:height .3s}
.stat-card:hover::after{height:5px}
body.high .stat-card.sc4 .stat-val{position:relative}
body.high .stat-card.sc4 .stat-val::before{
  content:'';position:absolute;left:-1.25rem;top:50%;width:9px;height:9px;margin-top:-4px;border-radius:50%;
  background:var(--tw);box-shadow:0 0 0 0 var(--tw-30);animation:pillPulse 1.8s ease-out infinite;color:var(--tw-30);
}
/* подписи платформ были почти невидимыми (inline opacity .5 + 0.58rem) */
.stat-card>div:last-child{font-size:.62rem!important;letter-spacing:.14em!important;color:color-mix(in srgb,var(--cc) 70%,var(--text-hi))!important;opacity:.85}
#statsNote{opacity:.75!important}

/* ─────────────────── 7. ВИДЕО, СТРИМ, ВКЛАДКИ ─────────────────── */
.stream-live-badge{
  padding:.42rem 1rem;box-shadow:0 8px 26px -8px var(--ac-55);
}
.auto-stream-player{
  border-radius:20px;
  box-shadow:0 0 0 1px var(--line-hi),0 40px 90px -30px var(--tw-30),0 0 0 6px rgba(var(--fg-rgb),.02);
}
.tab{padding:.55rem 1.25rem;background:rgba(var(--fg-rgb),.03)}
.tab.a-yt{background:linear-gradient(180deg,rgba(255,64,64,.22),rgba(255,64,64,.08));box-shadow:0 8px 24px -10px rgba(255,64,64,.7)}
.tab.a-tw{background:linear-gradient(180deg,rgba(145,71,255,.24),rgba(145,71,255,.08));box-shadow:0 8px 24px -10px rgba(145,71,255,.7)}
.shuffle-btn{background:rgba(var(--fg-rgb),.03)}
.yt-toolbar{border-radius:16px;background:rgba(var(--fg-rgb),.025)}
.video-search-input{border-radius:14px;background:rgba(var(--fg-rgb),.03)}
.video-search-input:focus{box-shadow:0 0 0 4px var(--ac-10)}

/* Карточки видео. БАГ: было animation:fadeUp … both — fill-mode «forwards»
   навсегда фиксировал transform и hover-подъём не работал. */
.vcard{border-radius:18px;animation-fill-mode:backwards}
.vcard:nth-child(1){animation-delay:.02s}.vcard:nth-child(2){animation-delay:.07s}
.vcard:nth-child(3){animation-delay:.12s}.vcard:nth-child(4){animation-delay:.17s}
.vcard:nth-child(5){animation-delay:.22s}.vcard:nth-child(6){animation-delay:.27s}
.vcard:nth-child(7){animation-delay:.32s}.vcard:nth-child(8){animation-delay:.37s}
.vcard:nth-child(n+9){animation-delay:.42s}
.vthumb::after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:60%;pointer-events:none;
  background:linear-gradient(to top,rgba(var(--bg-rgb),.8),transparent);opacity:.55;transition:opacity .35s;
}
.vcard:hover .vthumb::after{opacity:.9}
.play-ov{background:radial-gradient(circle,rgba(0,0,0,.15),rgba(0,0,0,.5))}
.play-circle{transform:scale(.6);transition:transform .45s var(--ease-spring);box-shadow:0 0 0 0 rgba(255,255,255,.5),0 8px 26px rgba(0,0,0,.5)}
.vcard:hover .play-circle{transform:scale(1)}
body.high .vcard:hover .play-circle{animation:ringPulse 1.6s ease-out infinite}
@keyframes ringPulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.55),0 8px 26px rgba(0,0,0,.5)}80%,100%{box-shadow:0 0 0 18px transparent,0 8px 26px rgba(0,0,0,.5)}}
.vtitle{font-size:.86rem}
.empty-state{border-radius:20px;background:rgba(var(--fg-rgb),.02);border-style:dashed;border-color:var(--line-hi)}

/* ───────────────── 8. «ОБО МНЕ», РАСПИСАНИЕ, СОЦСЕТИ ───────────────── */
.about-card{padding:2rem 1.7rem;border-radius:20px}
.about-icon{
  display:grid;place-items:center;width:58px;height:58px;margin-bottom:1.2rem;border-radius:18px;font-size:1.7rem;
  background:linear-gradient(135deg,var(--ac-18),var(--tw-18));border:1px solid var(--line-hi);
  transition:transform .45s var(--ease-spring);
}
.about-card:hover .about-icon{transform:scale(1.12) rotate(-8deg)}
.about-title{font-size:1.55rem;letter-spacing:.06em}
.about-text{color:#a9a9c4}

.day-card{padding:1rem .4rem;border-radius:14px}
.day-live{font-family:var(--font-display);font-weight:500;font-size:1.15rem;letter-spacing:.06em;color:#d9c8ff}
.day-card.today{box-shadow:0 0 0 1px var(--tw),0 14px 40px -12px var(--tw-30)}
body.high .day-card.today{animation:todayGlow 2.6s ease-in-out infinite}
@keyframes todayGlow{0%,100%{box-shadow:0 0 0 1px var(--tw),0 14px 40px -12px var(--tw-30)}50%{box-shadow:0 0 0 1px var(--tw),0 14px 54px -6px color-mix(in srgb,var(--tw) 55%,transparent)}}
.stream-countdown{
  padding:.65rem 1.3rem;background:linear-gradient(90deg,var(--ac-10),var(--tw-18));
  border-color:var(--ac-30);
}

.hub-card{padding:1.9rem 1.2rem;border-radius:20px;--cc:var(--accent)}
/* 7 карточек: 4 + 3, где последняя («Донат») растягивается на 2 колонки — без «дырки» в сетке */
.hub-grid{grid-template-columns:repeat(4,1fr)}
.hub-grid>.hub-card:last-child{grid-column:span 2;--card:color-mix(in srgb,var(--accent) 8%,#111119)}
@media(max-width:999px){.hub-grid{grid-template-columns:repeat(3,1fr)}.hub-grid>.hub-card:last-child{grid-column:1/-1}}
@media(max-width:560px){.hub-grid{grid-template-columns:repeat(2,1fr)}}
.hc-yt{--cc:var(--yt)}.hc-tt{--cc:var(--tt)}.hc-tw{--cc:var(--tw)}
.hc-vk{--cc:var(--vk)}.hc-vkv{--cc:#5bc4ff}.hc-tg{--cc:var(--tg)}
.hub-icon{
  display:grid!important;place-items:center;width:58px;height:58px;margin:0 auto .9rem!important;border-radius:18px;
  font-size:1.6rem!important;color:var(--cc);font-weight:800;
  background:color-mix(in srgb,var(--cc) 14%,transparent);
  border:1px solid color-mix(in srgb,var(--cc) 38%,transparent);
  transition:transform .45s var(--ease-spring),box-shadow .35s;
}
.hub-card:hover .hub-icon{transform:scale(1.14) rotate(-8deg);box-shadow:0 12px 30px -8px color-mix(in srgb,var(--cc) 75%,transparent)}
.hub-name{font-size:1.45rem;letter-spacing:.07em}
.hub-handle{color:#b3b3cc}
.hub-card:hover{box-shadow:0 22px 50px -18px color-mix(in srgb,var(--cc) 60%,transparent)}

/* ─────────────────────────── 9. ДОНАТ ─────────────────────────── */
.dc{border-radius:24px;padding:2.2rem 1.8rem;border-top:1px solid transparent!important}
/* верхняя цветная полоса — псевдоэлементом (inline border-top был только у одной из карточек) */
.dc::before{content:'';position:absolute;left:0;right:0;top:0;height:3px;background:var(--dc-top,var(--accent))}
.dc-voice{--dc-top:#f5a623}
.dc-title{font-size:2rem;letter-spacing:.06em}
.dc-icon{
  display:grid;place-items:center;width:58px;height:58px;border-radius:18px;font-size:1.7rem;
  background:linear-gradient(135deg,var(--ac-18),var(--tw-18));border:1px solid var(--line-hi);
}
.dc-desc{color:#b0b0c9}
.dc-btn,.cta-tw,.yt-sub,.lb-login-btn,.pwa-install,.push-btn{position:relative;overflow:hidden;isolation:isolate}
.dc-btn::after,.cta-tw::after,.yt-sub::after,.lb-login-btn::after,.pwa-install::after{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);
  transform:translateX(-130%);transition:transform .8s var(--ease-out);
}
.dc-btn:hover::after,.cta-tw:hover::after,.yt-sub:hover::after,.lb-login-btn:hover::after,.pwa-install:hover::after{transform:translateX(130%)}
.dc-btn{padding:.95rem 1.7rem;border-radius:16px}

.goal-bar-wrap{padding:1.7rem 1.9rem;border-radius:22px}
.goal-bar-amount{font-size:1.9rem;letter-spacing:.06em}
.goal-bar-track{height:16px;box-shadow:inset 0 2px 5px rgba(0,0,0,.55)}
.goal-bar-fill{position:relative;box-shadow:0 0 26px var(--ac-55)}
.goal-bar-fill::after{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%);
  background-size:220% 100%;background-position:180% 0;
}
body.high .goal-bar-fill::after{animation:barShine 2.8s ease-in-out infinite}
@keyframes barShine{to{background-position:-80% 0}}

.lb-wrap,.poll-wrap,.clicker-wrap{border-radius:24px}
.lb-item{transition:background .2s,transform .3s var(--ease-out)}
.lb-item:hover{transform:translateX(5px);background:rgba(var(--fg-rgb),.05)}
.lb-rank.r1{text-shadow:0 0 18px rgba(255,215,0,.65)}
.lb-rank.r2{text-shadow:0 0 14px rgba(192,192,192,.4)}
.lb-rank.r3{text-shadow:0 0 14px rgba(205,127,50,.45)}
.lb-tab,.chat-tab{transition:color .25s,border-color .25s,background .25s}
.lb-tab:hover,.chat-tab:hover{background:rgba(var(--fg-rgb),.03)}
.poll-opt{border-radius:14px}
.poll-opt-fill{background:linear-gradient(90deg,var(--ac-18),var(--ac-10))}
.clicker-score{font-size:4.4rem;text-shadow:0 0 40px var(--ac-55)}
.clicker-wrap::before{
  content:'';position:absolute;left:50%;top:38%;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,var(--ac-18),transparent);
}

.sound-btn{border-radius:18px;padding:1.2rem .8rem}
.sound-btn .s-icon{transition:transform .4s var(--ease-spring)}
.sound-btn:hover .s-icon{transform:scale(1.25) rotate(-8deg)}
.sound-btn:hover{border-color:transparent}
.sound-btn.playing{box-shadow:0 0 0 1px var(--tw),0 14px 40px -12px var(--tw-30)}

.chat-wrap{border-radius:24px}
.chat-header{background:linear-gradient(180deg,rgba(var(--fg-rgb),.03),transparent)}
.chat-input:focus{box-shadow:0 0 0 3px var(--tw-18)}
.chat-send{border-radius:10px;background:linear-gradient(135deg,var(--tw),#6d28d9);transition:transform .25s var(--ease-spring),opacity .2s}
.chat-send:hover{transform:scale(1.06);opacity:1}

/* Кнопка режима производительности — чуть аккуратнее */
#perfToggle{border-color:var(--line-hi);background:rgba(var(--bg-rgb),.85)}
#perfToggle:hover{box-shadow:0 0 30px -6px var(--ac-55)}

/* ───────────────────────────── 10. ФУТЕР ───────────────────────────── */
footer{
  padding-top:4.5rem;border-top:none;overflow:hidden;
  background:linear-gradient(180deg,transparent,var(--ac-10));
}
footer::before{
  content:'';position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--ac-55),var(--tw-30),transparent);
}
.footer-logo{font-size:4rem;letter-spacing:.14em;line-height:1;filter:drop-shadow(0 0 30px var(--ac-30))}
.footer-links a{position:relative;padding-bottom:3px}
.footer-links a::after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--accent);
  transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out);
}
.footer-links a:hover::after{transform:scaleX(1)}
.footer-copy{color:rgba(var(--fg-rgb),.28)}

/* ───────────── 11. ПОЯВЛЕНИЕ КАРТОЧЕК (только HIGH) ─────────────
   animation-fill-mode:backwards — после окончания анимация «отпускает»
   свойства, и hover/tilt работают как обычно.                          */
body.high .reveal.visible :is(.stats-row,.about-grid,.hub-grid,.donate-grid,.sched-grid,.soundboard)>*{
  animation:cardIn .85s var(--ease-out) backwards;
  animation-delay:calc(var(--i,0)*75ms + 100ms);
}
@keyframes cardIn{from{opacity:0;transform:translateY(30px) scale(.93);filter:blur(7px)}}

/* Клик-искры (canvas создаёт fx.js) */
#fxSparks{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:9990}

/* Тост «переключились на лёгкий режим» */
.fx-toast{
  position:fixed;left:50%;bottom:1.6rem;z-index:9600;max-width:min(92vw,440px);
  padding:.85rem 1.2rem;border-radius:14px;font-size:.78rem;line-height:1.5;color:var(--text);text-align:center;
  background:rgba(var(--panel-rgb),.96);border:1px solid var(--line-hi);box-shadow:var(--sh-2);
  transform:translate(-50%,20px);opacity:0;transition:opacity .35s,transform .45s var(--ease-out);
}
.fx-toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:768px){.fx-toast{bottom:calc(58px + env(safe-area-inset-bottom) + .9rem)}}

/* ───────────── 12. LOW-режим и «уменьшить движение» ─────────────
   Статичная версия: глубина, свечение и стекло остаются,
   движение и задержки убираем.                                       */
body.low *{animation-delay:0s!important}
body.low .hero-spot,body.low .hero-canvas{display:none}
body.low .wordmark .wm{background-position:0 0,160% 0,0 0}
body.low :is(.stat-card,.hub-card,.about-card,.dc):hover{transform:none}
body.low .orbit,body.low .sat-i{animation:none!important}
/* body:not(.high) — см. подробное объяснение в index.html рядом с первым
   таким блоком: явный выбор 🚀 High в переключателе теперь важнее
   системного prefers-reduced-motion, а не блокируется им намертво. */
@media (prefers-reduced-motion:reduce){
  body:not(.high) *{animation-delay:0s!important}
  body:not(.high) .hero-spot,body:not(.high) .hero-canvas,body:not(.high) #fxSparks{display:none!important}
  body:not(.high) .wordmark .wm{background-position:0 0,160% 0,0 0!important}
  body:not(.high) .orbit,body:not(.high) .sat-i,body:not(.high) .mq-track{animation:none!important}
  body:not(.high) :is(.stat-card,.hub-card,.about-card,.dc):hover{transform:none!important}
}

/* ═══════════════════════════════════════════════════════════════════
   13. ПРОФИЛЬ И МИНИ-ПРОФИЛЬ
   ───────────────────────────────────────────────────────────────────
   Раньше все панели профиля были плоскими прямоугольниками var(--card) —
   единственная часть сайта, не получившая стеклянный слой из разделов
   выше. Структуру/JS не трогаем: только фон, свечение, кнопки и вход
   элементов. Цветовой акцент — через --pfc (задаётся классом
   .pf-card-gold/-tw/-accent/-danger/-muted или напрямую по #id ниже),
   его же читает общий "прожектор" из блока 4 (--cc:var(--pfc,...)).
   ═══════════════════════════════════════════════════════════════════ */

/* Разлогинен — тот же стеклянный язык, что и у остальных карточек сайта */
#profileLoggedOut{
  background:linear-gradient(180deg,rgba(var(--fg-rgb),.03),rgba(var(--fg-rgb),0)) padding-box,var(--card) padding-box;
  border:1px solid var(--line-hi);border-radius:22px;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.6);
}

/* ---- Шапка профиля: классы вместо прежних inline-стилей разметки (вид тот же; профиль 2.0 — css/ui2.css, html.ui2) ---- */
.pf-banner{position:relative;height:180px;border-radius:16px;background:linear-gradient(135deg,rgba(255,45,85,.25),rgba(145,71,255,.25));background-size:cover;background-position:center;overflow:hidden}
.pf-banner-edit{position:absolute;top:.8rem;right:.8rem;gap:.4rem}
.pf-ovbtn{background:rgba(0,0,0,.5);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.2);color:#fff;border-radius:8px;padding:.5rem .9rem;font-size:.72rem;cursor:pointer;font-weight:700;font-family:inherit}
button.pf-ovbtn{padding:.5rem .7rem;font-weight:400}
.pf-hrow{display:flex;align-items:flex-end;gap:1.2rem;margin-top:-48px;margin-left:1.5rem;position:relative;z-index:2}
.pf-avw{position:relative}
.pf-ava{width:96px;height:96px;border-radius:50%;border:4px solid var(--bg);background:var(--tw);display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:800;color:#fff;background-size:cover;background-position:center}
.pf-ava-edit{position:absolute;bottom:0;right:0;width:30px;height:30px;border-radius:50%;background:var(--accent);border:3px solid var(--bg);align-items:center;justify-content:center;cursor:pointer;font-size:.8rem}
.pf-ava-del{position:absolute;bottom:0;left:-8px;width:26px;height:26px;border-radius:50%;background:rgba(255,45,85,.85);border:3px solid var(--bg);color:#fff;cursor:pointer;font-size:.65rem}
.pf-info{padding-bottom:.5rem;flex:1;min-width:0}
.pf-nickline{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.pf-nick{font-size:1.3rem;font-weight:800}
.pf-vipbadge{background:linear-gradient(135deg,#ffd700,#ff9500);color:#000;font-size:.62rem;font-weight:800;padding:.15rem .5rem;border-radius:5px;letter-spacing:.5px}
.pf-link{background:none;border:none;color:var(--tw-t);cursor:pointer;font-size:.7rem;font-weight:700;font-family:inherit}
.pf-statusline{margin-top:.4rem}
.pf-status{color:var(--muted);font-size:.78rem;font-style:italic}
.pf-emailline{display:flex;align-items:center;gap:.4rem}
.pf-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.7rem;margin-top:1.2rem}
.psc-i{font-size:1.25rem}
.psc-v{font-weight:800;font-size:.82rem;margin-top:.3rem}
.psc-l{font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-top:.15rem}

/* ---- Баннер и аватар ---- */
#profileBanner{
  border-radius:22px;border:1px solid var(--line-hi);
  box-shadow:0 30px 70px -28px rgba(0,0,0,.65),inset 0 0 0 1px rgba(var(--fg-rgb),.03);
}
#profileBanner::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(var(--bg-rgb),0) 45%,rgba(var(--bg-rgb),.55) 100%);
}
body.high #profileBanner.profile-banner-empty{
  background-image:
    radial-gradient(60% 90% at 15% 20%,var(--ac-30),transparent 60%),
    radial-gradient(60% 90% at 85% 90%,var(--tw-30),transparent 60%),
    linear-gradient(135deg,rgba(255,45,85,.22),rgba(145,71,255,.22))!important;
}

#profileAvatarImg{
  box-shadow:0 18px 40px -14px rgba(0,0,0,.7),inset 0 0 0 1px rgba(var(--fg-rgb),.06);
  transition:transform .35s var(--ease-spring);
}
body.high #profileAvatarImg:hover{transform:scale(1.04) rotate(-2deg)}
/* Свечение по роли/уровню (цвет прилетает из JS через --ring-rgb) —
   было статичным box-shadow, теперь ещё и дышит в HIGH */
.profile-avatar-glow{box-shadow:0 0 0 3px rgb(var(--ring-rgb)),0 0 30px -4px rgb(var(--ring-rgb)),0 18px 40px -14px rgba(0,0,0,.7)!important}
body.high .profile-avatar-glow{animation:ringGlow 2.4s ease-in-out infinite}
@keyframes ringGlow{
  0%,100%{box-shadow:0 0 0 3px rgb(var(--ring-rgb)),0 0 20px -2px rgb(var(--ring-rgb)),0 18px 40px -14px rgba(0,0,0,.7)}
  50%{box-shadow:0 0 0 3px rgb(var(--ring-rgb)),0 0 38px 2px rgb(var(--ring-rgb)),0 18px 40px -14px rgba(0,0,0,.7)}
}

#profileAvatarEditBtn{transition:transform .25s var(--ease-spring)}
#profileAvatarEditBtn:hover{transform:scale(1.12)}
#profileBannerEditBtn label,#profileBannerEditBtn button{transition:background .2s,transform .2s var(--ease-spring)}
#profileBannerEditBtn label:hover,#profileBannerEditBtn button:hover{background:rgba(0,0,0,.7)!important;transform:translateY(-1px)}

.role-badge{box-shadow:0 2px 10px -3px rgba(0,0,0,.5)}
#profileVipBadge{box-shadow:0 4px 16px -4px rgba(255,180,0,.55)}
body.high #profileVipBadge{animation:badgePopIn .45s var(--ease-spring) both,badgeShimmer 3s 1s ease-in-out infinite}
@keyframes badgeShimmer{0%,100%{filter:brightness(1)}50%{filter:brightness(1.2)}}

/* ---- Общая стеклянная карточка разделов профиля ---- */
.pf-card{position:relative;padding:1.2rem;border-radius:18px;box-shadow:0 22px 50px -30px rgba(0,0,0,.6)}
.pf-card::before{content:'';position:absolute;left:0;right:0;top:0;height:2px;background:var(--pfc,var(--accent));opacity:.85;z-index:1}
.pf-card-gold{--pfc:#ffd36a}
.pf-card-tw{--pfc:var(--tw)}
.pf-card-accent{--pfc:var(--accent)}
.pf-card-danger{--pfc:#ff2d55}
.pf-card-muted{--pfc:rgba(var(--fg-rgb),.3)}

.pf-kicker{font-size:.66rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}

/* Панели с готовым #id и своим акцентом (структуру/inline display:none не трогаем) */
#profileStaffVipPanel,#profileStaffPanel{--pfc:var(--tw)}
#donateLoginPanel,#profileVipPromo,#profileVipPerksPanel{--pfc:#ffd36a}
#profileAdminPanel{--pfc:#ff2d55}
#profileStaffVipPanel,#profileStaffPanel,#donateLoginPanel,#profileVipPromo,#profileVipPerksPanel,#profileAdminPanel{
  position:relative;border-radius:18px;box-shadow:0 22px 50px -30px rgba(0,0,0,.6);
}
#profileStaffVipPanel::before,#profileStaffPanel::before,#donateLoginPanel::before,#profileVipPromo::before,#profileVipPerksPanel::before,#profileAdminPanel::before{
  content:'';position:absolute;left:0;right:0;top:0;height:2px;background:var(--pfc);opacity:.85;z-index:1
}
/* Прогресс-бар до следующего уровня (див рисуется в JS инлайново, цепляемся по стилю) */
#profileVipPerksPanel div[style*="height:8px"]{box-shadow:0 0 16px -2px #ffd700}

/* ---- Статы профиля: лёгкие стеклянные плитки ---- */
.profile-stat-card{
  border-radius:16px;padding:.9rem .7rem;text-align:center;
  box-shadow:0 14px 30px -18px rgba(0,0,0,.55);
}

/* ---- Единый стиль кнопок профиля ---- */
.pf-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  padding:.6rem 1.2rem;border-radius:10px;border:none;cursor:pointer;
  font-family:'Montserrat',sans-serif;font-weight:700;font-size:.8rem;color:#fff;
  transition:transform .25s var(--ease-spring),box-shadow .25s,background .2s;
  translate:var(--tx,0px) var(--ty,0px);
}
.pf-btn:hover{transform:translateY(-2px)}
.pf-btn:active{transform:translateY(0) scale(.97)}
.pf-btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 10px 26px -10px var(--ac-55)}
.pf-btn-gold{background:linear-gradient(135deg,#ffd700,#ff9500);color:#000;box-shadow:0 10px 26px -10px rgba(255,180,0,.6)}
.pf-btn-tw{background:linear-gradient(135deg,var(--tw),#6d28d9);box-shadow:0 10px 26px -10px var(--tw-30)}
.pf-btn-ghost{background:rgba(var(--fg-rgb),.05);border:1.5px solid var(--line-hi);color:var(--text);box-shadow:none}
.pf-btn-ghost:hover{background:rgba(var(--fg-rgb),.09)}
.pf-btn-danger{background:rgba(255,45,85,.1);border:1.5px solid rgba(255,45,85,.32);color:var(--accent);box-shadow:none}
.pf-btn-danger:hover{background:rgba(255,45,85,.18)}
.pf-btn-sm{padding:.5rem .95rem;font-size:.75rem;border-radius:8px}

.profile-admin-btn{
  border-radius:12px;
  background:linear-gradient(180deg,rgba(255,45,85,.14),rgba(255,45,85,.05));
  border:1.5px solid rgba(255,45,85,.3)!important;
  transition:transform .25s var(--ease-spring),background .2s,box-shadow .25s;
}
.profile-admin-btn:hover{transform:translateY(-2px);background:rgba(255,45,85,.22);box-shadow:0 12px 26px -12px rgba(255,45,85,.6)}

/* ---- Мини-профиль — общая мини-карточка игрока: css/ui2.css (.d37m, T-086) ---- */

/* ---- Курсор-прожектор и магнит теперь и на профиле ---- */
:is(.pf-card,.profile-stat-card,#profileLoggedOut){
  --mx:-400px;--my:-400px;--cc:var(--pfc,var(--accent));
  border:1px solid transparent;
  background:
    radial-gradient(240px circle at var(--mx) var(--my),rgba(var(--fg-rgb),.06),transparent 70%) padding-box,
    linear-gradient(180deg,rgba(var(--fg-rgb),.025),rgba(var(--fg-rgb),0)),var(--card) padding-box,
    radial-gradient(200px circle at var(--mx) var(--my),color-mix(in srgb,var(--cc) 70%,transparent),transparent 65%) border-box,
    linear-gradient(var(--line-hi),var(--line-hi)) border-box;
  background-origin:border-box;
}
#profileStaffVipPanel,#profileStaffPanel,#donateLoginPanel,#profileVipPromo,#profileVipPerksPanel,#profileAdminPanel{
  --mx:-400px;--my:-400px;
  border:1px solid transparent;
  background:
    radial-gradient(240px circle at var(--mx) var(--my),rgba(var(--fg-rgb),.06),transparent 70%) padding-box,
    var(--card) padding-box,
    radial-gradient(200px circle at var(--mx) var(--my),color-mix(in srgb,var(--pfc) 65%,transparent),transparent 65%) border-box,
    linear-gradient(var(--line-hi),var(--line-hi)) border-box;
  background-origin:border-box;
}

@media(max-width:768px){
  #profileBanner{height:150px!important}
  .pf-card{padding:1rem}
}

/* ═══════════════════════════════════════════════════════════════════
   ГЛАВНАЯ v2 — «видео сразу»: герой в две колонки с новым роликом,
   Twitch-плашка вместо вечного офлайн-плеера, сортировка ленты,
   блок «Сообщество». Разметка — index.html (#hero, #content, #community),
   логика — youtube.js (renderFeatured, setVidSort), twitch.js.
   ═══════════════════════════════════════════════════════════════════ */

/* ── Герой: сетка ── */
.hero-inner{position:relative;z-index:3;width:100%;max-width:1240px;display:flex;flex-direction:column;align-items:center}
.hero-main{display:flex;flex-direction:column;align-items:center;min-width:0}
.hero-feature{position:relative;z-index:3;width:100%;max-width:520px;margin-top:2.6rem;text-align:left}

@media(min-width:1100px){
  .hero{padding-bottom:8.5rem}
  .hero-inner{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:clamp(2rem,4vw,4.5rem);align-items:center}
  .hero-feature{margin-top:0;max-width:none;justify-self:stretch}
  .wordmark{font-size:clamp(4.4rem,min(9.2vw,19vh),9.6rem)}
  .hero-pill{margin-bottom:2.2rem}
  .avatar{margin-bottom:2.4rem}
  /* В колонке три кнопки в ряд не влезают — главная «Подписаться» на всю ширину, под ней две */
  .hero-cta{width:100%;max-width:440px}
  .hero-btn.is-yt{width:100%;justify-content:center}
  .hero-btn.is-tw,.hero-btn.is-don{flex:1 1 calc(50% - .4rem);justify-content:center}
}

/* ── Карточка нового видео ── */
.hf-label{
  display:inline-flex;align-items:center;gap:.55rem;margin-bottom:.8rem;
  font-family:var(--font-display);font-size:.9rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--text-hi);
}
.hf-dot{width:9px;height:9px;border-radius:50%;background:var(--yt);box-shadow:0 0 12px var(--yt);color:rgba(255,64,64,.55)}
body.high .hf-dot{animation:pillPulse 2s ease-out infinite}

.hf-card{
  display:block;width:100%;padding:0;text-align:left;cursor:pointer;font:inherit;color:inherit;
  border-radius:20px;overflow:hidden;
  background:var(--hf-bg,linear-gradient(180deg,rgba(24,22,38,.92),rgba(14,13,24,.92)));
  border:1px solid var(--line-hi);
  box-shadow:0 30px 70px -30px rgba(0,0,0,.9),0 20px 60px -30px var(--ac-55);
  transition:transform .45s var(--ease-out),box-shadow .45s,border-color .3s;
}
.hf-card:hover,.hf-card:focus-visible{
  transform:translateY(-4px);border-color:rgba(255,64,64,.6);
  box-shadow:0 36px 80px -30px rgba(0,0,0,.9),0 26px 70px -24px rgba(255,64,64,.55);
}
.hf-card:focus-visible{outline:2px solid var(--yt);outline-offset:3px}
.hf-thumb{position:relative;display:block;aspect-ratio:16/9;background:#0b0b12;overflow:hidden}
.hf-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.hf-thumb img[hidden]{display:none}
.hf-card:hover .hf-thumb img{transform:scale(1.045)}
.hf-thumb::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.55));pointer-events:none}
.hf-ph{
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.03) 25%,rgba(255,255,255,.09) 37%,rgba(255,255,255,.03) 63%);
  background-size:400% 100%;
}
body.high .hf-ph{animation:skeletonShimmer 1.4s ease infinite}
.hf-play{
  position:absolute;left:50%;top:50%;z-index:2;display:grid;place-items:center;
  width:74px;height:74px;margin:-37px 0 0 -37px;border-radius:50%;
  font-size:1.5rem;color:#fff;padding-left:5px;
  background:linear-gradient(135deg,#ff4040,#d90429);
  box-shadow:0 12px 34px -6px rgba(255,64,64,.85),0 0 0 8px rgba(255,64,64,.18);
  transition:transform .35s var(--ease-spring),box-shadow .35s;
}
.hf-card:hover .hf-play{transform:scale(1.1);box-shadow:0 14px 40px -6px rgba(255,64,64,.95),0 0 0 12px rgba(255,64,64,.2)}
.hf-dur{
  position:absolute;right:.7rem;bottom:.7rem;z-index:2;padding:.2rem .5rem;border-radius:6px;
  font-size:.72rem;font-weight:800;letter-spacing:.04em;color:#fff;background:rgba(0,0,0,.78);
}
.hf-dur[hidden]{display:none}
.hf-info{display:block;padding:1rem 1.15rem 1.15rem}
.hf-title{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  font-size:1.02rem;font-weight:800;line-height:1.35;color:var(--text-hi);
}
.hf-meta{display:block;margin-top:.45rem;font-size:.76rem;color:var(--muted);white-space:pre}

.hf-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:.8rem}
.hf-stat{
  display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.75rem .4rem;border-radius:14px;
  background:rgba(var(--fg-rgb),.035);border:1px solid var(--line);
}
.hf-stat b{font-family:var(--font-display);font-size:1.45rem;line-height:1.05;color:var(--text-hi)}
.hf-stat .stat-val.skeleton{width:60px;height:1.45rem}
.hf-stat span{font-size:.64rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.hf-note{margin-top:.6rem;font-size:.72rem;color:var(--muted);text-align:center}
.hf-note[hidden]{display:none}
.hf-note a{color:var(--yt)}

@media(max-width:640px){
  .hero-feature{margin-top:2.2rem}
  .hf-play{width:62px;height:62px;margin:-31px 0 0 -31px;font-size:1.25rem}
  .hf-stat b{font-size:1.2rem}
}

/* ── Контент под героем ── */
#content{padding-top:3.5rem}

/* ── Twitch ── */
.tw-block{
  margin-bottom:3.5rem;border-radius:18px;overflow:hidden;
  background:linear-gradient(90deg,rgba(145,71,255,.14),rgba(145,71,255,.04));
  border:1px solid rgba(145,71,255,.3);
  transition:border-color .3s,box-shadow .3s;
}
.tw-head{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem 1.1rem;padding:.9rem 1.1rem}
.tw-status{display:inline-flex;align-items:center;gap:.6rem;font-weight:800;font-size:.9rem;color:var(--tw-status,#efe6ff)}
.tw-dot{width:10px;height:10px;border-radius:50%;background:rgba(var(--fg-rgb),.3);flex:none}
.tw-next{font-size:.8rem;color:var(--muted)}
.tw-next b{color:var(--text-hi);font-weight:700}
.tw-next em{font-style:normal}
.tw-actions{display:flex;gap:.5rem;margin-left:auto;flex-wrap:wrap}
.tw-btn{
  display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .95rem;border-radius:10px;cursor:pointer;
  font:inherit;font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#fff;
  background:var(--tw);border:1px solid var(--tw);transition:filter .2s,background .2s,transform .2s;
}
.tw-btn:hover{filter:brightness(1.15);transform:translateY(-1px)}
.tw-btn-ghost{background:transparent;border-color:rgba(145,71,255,.45);color:var(--tw-ghost,#d9c8ff)}
.tw-btn-ghost:hover{background:rgba(145,71,255,.14)}
.tw-player{display:none;padding:0 1.1rem 1.1rem}
.tw-block.open .tw-player{display:block}
.tw-player .auto-stream-player{padding-bottom:56.25%}

.tw-block.is-offline .tw-dot{background:#6b6b85}
.tw-block.is-live{
  border-color:rgba(255,45,85,.6);
  background:linear-gradient(90deg,rgba(255,45,85,.16),rgba(145,71,255,.1));
  box-shadow:0 20px 60px -30px rgba(255,45,85,.7);
}
.tw-block.is-live .tw-dot{background:var(--accent);box-shadow:0 0 12px var(--accent);color:var(--ac-55)}
body.high .tw-block.is-live .tw-dot{animation:pillPulse 2s ease-out infinite}
.tw-block.is-live .tw-status{color:var(--text-hi);font-size:1rem}

@media(max-width:640px){
  .tw-actions{margin-left:0;width:100%;flex-wrap:nowrap}
  .tw-btn{flex:1 1 auto;justify-content:center;white-space:nowrap;padding:.55rem .6rem;font-size:.66rem}
  .tw-player{padding:0 .6rem .6rem}
  .tw-chat{display:none}
}

/* ── Лента видео ── */
.vid-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.4rem}
.vid-head .sec-title{margin-bottom:0}
.vid-sort{display:inline-flex;gap:.25rem;padding:.3rem;border-radius:14px;background:rgba(var(--fg-rgb),.04);border:1px solid var(--line)}
.vs-opt{
  padding:.5rem .95rem;border-radius:10px;border:0;cursor:pointer;background:transparent;
  font:inherit;font-size:.74rem;font-weight:800;letter-spacing:.03em;color:var(--muted);
  transition:background .2s,color .2s;
}
.vs-opt:hover:not(.active){color:var(--text-hi)}
.vs-opt.active{background:linear-gradient(135deg,#ff4040,#d90429);color:#fff;box-shadow:0 8px 20px -10px rgba(255,64,64,.9)}

.vid-tools{display:flex;gap:.7rem;align-items:stretch;margin-bottom:1.3rem}
.vid-tools .video-search-wrap{flex:1;margin-bottom:0}
.vid-tools .yt-toolbar{margin-bottom:0;padding:.4rem .55rem;flex-wrap:nowrap}
@media(max-width:640px){
  .vid-sort{width:100%}
  .vs-opt{flex:1;padding:.55rem .3rem;font-size:.68rem;white-space:nowrap}
  .vid-tools .view-toggle{display:none}
}

.vid-more-wrap{display:flex;justify-content:center;margin-top:1.6rem}
.vid-more{
  padding:.85rem 2rem;border-radius:14px;cursor:pointer;font:inherit;font-size:.78rem;font-weight:800;
  letter-spacing:.06em;text-transform:uppercase;color:var(--text-hi);
  background:rgba(var(--fg-rgb),.05);border:1px solid var(--line-hi);transition:background .2s,border-color .2s,transform .2s;
}
.vid-more:hover{background:rgba(255,64,64,.12);border-color:rgba(255,64,64,.5);transform:translateY(-2px)}
.vid-more[hidden]{display:none}

/* ── Сообщество ── */
/* 4 → 2 → 1 колонки: без «сироты» на средней ширине */
.cm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
@media(min-width:1000px){.cm-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}
@media(max-width:480px){.cm-grid{grid-template-columns:1fr}}
.cm-card{
  --cc:var(--accent);
  position:relative;display:flex;flex-direction:column;gap:.5rem;padding:1.4rem 1.3rem 1.2rem;border-radius:18px;overflow:hidden;
  background:linear-gradient(160deg,color-mix(in srgb,var(--cc) 13%,transparent),rgba(var(--fg-rgb),.02) 60%);
  border:1px solid color-mix(in srgb,var(--cc) 26%,transparent);
  transition:transform .4s var(--ease-out),border-color .3s,box-shadow .4s;
}
.cm-card:hover{
  transform:translateY(-5px);border-color:color-mix(in srgb,var(--cc) 60%,transparent);
  box-shadow:0 24px 50px -24px color-mix(in srgb,var(--cc) 75%,transparent);
}
.cm-ic{
  display:grid;place-items:center;width:48px;height:48px;border-radius:14px;font-size:1.45rem;
  background:color-mix(in srgb,var(--cc) 20%,transparent);
}
.cm-title{font-family:var(--font-display);font-size:1.35rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-hi);margin-top:.3rem}
.cm-text{font-size:.84rem;line-height:1.6;color:rgba(var(--text-rgb),.68);flex:1}
.cm-go{font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--cc);margin-top:.3rem}

.cm-join{
  display:flex;align-items:center;justify-content:space-between;gap:1.2rem;flex-wrap:wrap;
  margin-top:1.3rem;padding:1.2rem 1.4rem;border-radius:18px;
  background:linear-gradient(90deg,var(--ac-18),color-mix(in srgb,var(--accent2) 12%,transparent));
  border:1px solid var(--ac-30);
}
.cm-join-text{display:flex;flex-direction:column;gap:.25rem}
.cm-join-text b{font-size:1.05rem;color:var(--text-hi)}
.cm-join-text span{font-size:.84rem;color:rgba(var(--text-rgb),.72)}
.cm-join-btn{
  padding:.9rem 1.7rem;border-radius:14px;border:0;cursor:pointer;
  font:inherit;font-size:.8rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  box-shadow:0 12px 30px -10px var(--ac-55);transition:transform .2s,box-shadow .2s;
}
.cm-join-btn:hover{transform:translateY(-2px);box-shadow:0 16px 38px -10px var(--ac-55)}
body.is-authed .cm-join{display:none}
@media(max-width:640px){.cm-join-btn{width:100%}}

/* 05.11.2026: раздел-приложение занимает экран с первого кадра — подвал не мелькает вверху и не уезжает вниз, когда раздел
   дорисуется (CLS: /chat, /play/<игра>) */
#chat,#games-page,#profile-page,#forum-page,#ideas-page,#lfg-page,#shop-page,#invite-page,#adv-page,#phone-page{min-height:100vh}

/* Рекламные блоки на главной — без лишних отступов, если AdSense ничего не отдал */
#ad-mid,#ad-top{padding-top:0;padding-bottom:0}
/* 05.11.2026: место под рекламу держим заранее (вёрстка не прыгает, когда блок приходит), подпись «Реклама». Сеть ничего не
   отдала (data-ad-status="unfilled") или блокировщик — решает js/core/ad-places.js (settle, у <ins> метка data-guard): ниже экрана
   место убирает, на экране — своя подсказка той же высоты (CLS 0). Без ad-places.js (data-guard нет) — убрать сразу, как раньше */
#ad-mid:not(.ad-empty):has(>ins.adsbygoogle)::before,#ad-top:not(.ad-empty):has(>ins.adsbygoogle)::before{content:'Реклама';display:block;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:1rem 0 .3rem;opacity:.7;text-align:center}
#ad-mid>ins.adsbygoogle,#ad-top>ins.adsbygoogle{min-height:280px}
@media(max-width:768px){#ad-mid>ins.adsbygoogle,#ad-top>ins.adsbygoogle{min-height:300px}}
#ad-mid:has(>ins.adsbygoogle[data-ad-status="unfilled"]:not([data-guard])),#ad-top:has(>ins.adsbygoogle[data-ad-status="unfilled"]:not([data-guard])){display:none!important}

/* Рекламный блок без ID из AD_SLOTS (config.js) — не показываем пустое место */
.ad-empty{display:none!important}

/* «Кто такой dan4ik37»: 4 карточки — 4 → 2 → 1, без «сироты» 3+1 */
.about-grid{grid-template-columns:repeat(2,1fr)}
@media(min-width:1000px){.about-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:480px){.about-grid{grid-template-columns:1fr}}

/* Панель администратора в профиле: свёрнута по умолчанию и не кричит.
   Стили только внутри #profileAdminPanel — .profile-admin-btn ещё и на форуме. */
.pf-admin{padding:0!important;background:rgba(var(--fg-rgb),.02)!important;border:1px solid var(--line)!important}
.pf-admin-summary{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.95rem 1.2rem;cursor:pointer;
  list-style:none;font-size:.82rem;font-weight:800;color:rgba(var(--text-rgb),.8);user-select:none;
}
.pf-admin-summary::-webkit-details-marker{display:none}
.pf-admin-summary::after{content:'▾';font-size:.8rem;color:var(--muted);transition:transform .25s}
.pf-admin-details[open] .pf-admin-summary::after{transform:rotate(180deg)}
.pf-admin-hint{margin-left:auto;font-size:.7rem;font-weight:600;color:var(--muted)}
.pf-admin-summary:hover{color:var(--text-hi)}
.pf-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem;padding:0 1.2rem 1.2rem}
#profileAdminPanel .profile-admin-btn{
  border:1px solid var(--line-hi);background:transparent;color:rgba(var(--text-rgb),.82);
  box-shadow:none;font-weight:600;
}
#profileAdminPanel .profile-admin-btn:hover{border-color:var(--ac-55);background:var(--ac-10);color:var(--text-hi);transform:none;box-shadow:none}

/* Название в карточке — ссылка на /v/<id>, внешне как раньше */
a.vtitle{color:inherit;text-decoration:none}
a.vtitle:hover{color:var(--text-hi);text-decoration:underline;text-decoration-color:rgba(255,64,64,.6);text-underline-offset:3px}

/* Кнопки под видео в окне: подписка, поделиться, страница ролика */
.modal-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.9rem}
.modal-act{display:inline-flex;align-items:center;gap:.35rem;padding:.55rem .95rem;border-radius:10px;cursor:pointer;
  font:inherit;font-size:.74rem;font-weight:800;color:var(--text-hi);text-decoration:none;
  background:rgba(var(--fg-rgb),.05);border:1px solid var(--line-hi);transition:background .2s,border-color .2s}
.modal-act:hover{background:rgba(var(--fg-rgb),.1)}
.modal-act-yt{background:linear-gradient(135deg,#ff4040,#d90429);border-color:transparent;color:#fff}
.modal-act-yt:hover{background:linear-gradient(135deg,#ff5555,#e0102f)}

/* ═══════════════════════════════════════════════════════════════════
   SHORTS — ряд на главной и вертикальная лента (js/features/shorts.js)
   ═══════════════════════════════════════════════════════════════════ */
body.no-shorts [data-route="shorts"]{display:none!important}

/* ── Ряд превью на главной ── */
.sh-row{margin-bottom:3rem}
.sh-row[hidden]{display:none}
.sh-row-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}
.sh-row-head .sec-title{margin-bottom:0}
.sh-row-all{font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);white-space:nowrap}
.sh-row-track{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,170px);gap:.9rem;
  overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.6rem;scrollbar-width:thin;
}
.sh-card{
  position:relative;display:block;aspect-ratio:9/16;border-radius:16px;overflow:hidden;scroll-snap-align:start;
  background:#0b0b12;border:1px solid var(--line);transition:transform .35s var(--ease-out),border-color .3s,box-shadow .35s;
}
.sh-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sh-card::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.85))}
.sh-card:hover{transform:translateY(-4px);border-color:rgba(255,64,64,.55);box-shadow:0 20px 40px -20px rgba(255,64,64,.7)}
.sh-card-title{
  position:absolute;left:.7rem;right:.7rem;bottom:1.9rem;z-index:1;font-size:.76rem;font-weight:800;line-height:1.3;color:#fff;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.sh-card-views{position:absolute;left:.7rem;bottom:.6rem;z-index:1;font-size:.68rem;font-weight:700;color:rgba(255,255,255,.75)}

/* ── Лента ── */
.shorts-page{position:relative;z-index:1;padding-top:var(--sh-top,64px)}
body[data-route="shorts"] footer,body[data-route="shorts"] #donateFab,body[data-route="shorts"] #scrollTop{display:none!important}
.sh-feed{
  height:calc(100vh - 64px);overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;
  scrollbar-width:none;outline:none;
}
.sh-feed::-webkit-scrollbar{display:none}
.sh-item{
  position:relative;height:100%;scroll-snap-align:start;scroll-snap-stop:always;
  display:flex;align-items:center;justify-content:center;gap:1rem;padding:.8rem 0;
}
.sh-frame{
  position:relative;height:100%;aspect-ratio:9/16;max-width:100%;border-radius:18px;overflow:hidden;
  background:#000;border:1px solid var(--line);box-shadow:0 30px 70px -30px rgba(0,0,0,.95);
}
.sh-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.8)}
.sh-player{position:absolute;inset:0;z-index:1}
.sh-player iframe{width:100%;height:100%;border:0}
.sh-info{
  position:absolute;left:0;right:0;bottom:0;z-index:2;padding:3rem 1rem 1rem;pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.8));
}
/* Пока играет — поверх плеера YouTube ничего нет (правила YouTube «Required Minimum Functionality»: никаких наложений перед
   встроенным плеером). До 05.11.2026 подпись гасла через 2,5 с, но оставалась над плеером, а невидимая «Подписаться» ловила нажатия */
.sh-item.is-active .sh-info{display:none}
.sh-title{font-size:.9rem;font-weight:800;line-height:1.35;color:#fff;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.sh-meta{margin-top:.3rem;font-size:.72rem;color:rgba(var(--fg-rgb),.7)}
.sh-sub{
  pointer-events:auto;display:inline-flex;margin-top:.7rem;padding:.5rem .9rem;border-radius:10px;
  font-size:.72rem;font-weight:800;color:#fff;background:linear-gradient(135deg,#ff4040,#d90429);
}
.sh-side{display:flex;flex-direction:column;gap:.8rem;align-self:flex-end;margin-bottom:1rem}
.sh-btn{
  display:flex;flex-direction:column;align-items:center;gap:.2rem;width:54px;padding:.55rem 0;border-radius:16px;cursor:pointer;
  font:inherit;color:#fff;text-decoration:none;background:rgba(var(--fg-rgb),.07);border:1px solid var(--line-hi);
  transition:background .2s,transform .2s;
}
.sh-btn span{font-size:1.3rem;line-height:1}
.sh-btn small{font-size:.6rem;font-weight:700;color:rgba(var(--fg-rgb),.75)}
.sh-btn:hover{background:rgba(var(--fg-rgb),.14);transform:scale(1.06)}
.sh-btn.sh-like{width:64px;text-align:center}
.sh-btn.sh-like small{line-height:1.2}
.sh-btn .vl-mark{color:#9fe870}
.sh-btn .vl-mark:empty{display:none}
/* Звук выключен — кнопка звука заметная, это главное действие */
.sh-feed.is-muted .sh-sound{background:linear-gradient(135deg,var(--accent),var(--accent2));border-color:transparent}
body.high .sh-feed.is-muted .sh-item.is-active .sh-sound{animation:pillPulse 2s ease-out infinite;color:var(--ac-55)}

.sh-end-box,.sh-empty{
  display:flex;flex-direction:column;align-items:center;gap:.8rem;text-align:center;max-width:360px;padding:2rem;
}
.sh-end-box span{font-size:.85rem;color:var(--muted)}
.sh-empty{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%)}
.sh-empty[hidden]{display:none}
.sh-empty-ic{font-size:2.6rem}

/* Телефон: ролик на всю ширину, кнопки — полосой ПОД плеером (до 05.11.2026 висели поверх плеера справа — правила YouTube
   запрещают наложения перед встроенным плеером) */
@media(max-width:640px){
  .sh-item{padding:0;gap:0}
  .sh-frame{width:100%;height:100%;aspect-ratio:auto;border-radius:0;border:0}
  .sh-player{bottom:58px}
  .sh-thumb{height:calc(100% - 58px)}
  .sh-side{position:absolute;left:.6rem;right:.6rem;bottom:8px;z-index:3;margin:0;flex-direction:row;justify-content:flex-end;align-items:center;gap:.5rem}
  .sh-btn,.sh-btn.sh-like{flex-direction:row;width:auto;padding:.45rem .75rem;gap:.35rem;background:rgba(var(--fg-rgb),.08)}
  .sh-btn span{font-size:1.05rem}
  .sh-btn small br{display:none}
  .sh-info{bottom:58px;padding-right:1rem}
  .sh-row-track{grid-auto-columns:minmax(130px,42vw)}
}

/* ═══════════════════════════════════════════════════════════════════
   ДОСКА ИДЕЙ (#/ideas, js/features/ideas.js)
   ═══════════════════════════════════════════════════════════════════ */
body.no-ideas [data-route="ideas"]{display:none!important}
#ideas-page{max-width:900px}
.id-head .sec-title{margin-bottom:.8rem}
.id-lead{max-width:640px;font-size:.9rem;line-height:1.7;color:rgba(var(--text-rgb),.7);margin-bottom:1.6rem}
.id-setup{padding:1rem 1.2rem;border-radius:14px;background:rgba(var(--fg-rgb),.03);border:1px dashed var(--line-hi);font-size:.85rem;color:var(--muted)}
.id-setup[hidden],.id-form[hidden],.id-guest[hidden],.id-tools[hidden]{display:none}

.id-form{display:flex;flex-direction:column;gap:.6rem;padding:1.1rem;border-radius:18px;margin-bottom:1.6rem;
  background:linear-gradient(160deg,var(--ac-10),rgba(var(--fg-rgb),.02) 60%);border:1px solid var(--ac-30)}
.id-input{width:100%;padding:.8rem 1rem;border-radius:12px;border:1px solid var(--line-hi);background:var(--in-bg,rgba(0,0,0,.25));
  color:var(--text);font:inherit;font-size:.9rem;transition:border-color .2s,box-shadow .2s}
.id-input:focus{outline:none;border-color:var(--ac-55);box-shadow:0 0 0 4px var(--ac-10)}
.id-textarea{resize:vertical;min-height:60px}
.id-form-row{display:flex;align-items:center;gap:.8rem}
.id-count{font-size:.72rem;color:var(--muted)}
.id-form-msg{flex:1;font-size:.78rem;color:var(--gold-t)}
.id-submit{padding:.75rem 1.4rem;border-radius:12px;border:0;cursor:pointer;font:inherit;font-size:.8rem;font-weight:800;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 10px 26px -12px var(--ac-55);transition:transform .2s}
.id-submit:hover{transform:translateY(-2px)}
.id-submit:disabled{opacity:.6;cursor:wait;transform:none}
.id-guest{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1rem 1.2rem;margin-bottom:1.6rem;
  border-radius:16px;background:rgba(var(--fg-rgb),.03);border:1px solid var(--line);font-size:.86rem;color:rgba(var(--text-rgb),.8)}

.id-tools{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;margin-bottom:1.1rem}
.id-filters{display:flex;gap:.35rem;flex-wrap:wrap}
.id-chip{padding:.4rem .8rem;border-radius:999px;cursor:pointer;font:inherit;font-size:.72rem;font-weight:700;color:var(--muted);
  background:transparent;border:1px solid var(--line);transition:color .2s,border-color .2s,background .2s}
.id-chip:hover{color:var(--text-hi)}
.id-chip.active{color:var(--text-hi);border-color:var(--ac-55);background:var(--ac-10)}
.id-status{font-size:.85rem;color:var(--muted);text-align:center;padding:.5rem 0}
.id-status:empty{display:none}

.id-list{display:flex;flex-direction:column;gap:.7rem}
.id-card{display:flex;gap:1rem;padding:1rem 1.1rem;border-radius:16px;background:var(--card);border:1px solid var(--line);
  border-left:3px solid var(--st,var(--line-hi));transition:border-color .25s,transform .25s}
.id-card:hover{transform:translateX(2px)}
.id-card.st-planned{--st:var(--tw)}
.id-card.st-done{--st:#2ecc71}
.id-card.st-rejected{--st:#555;opacity:.7}
.id-card.id-focus{border-color:#ffd166;box-shadow:0 0 0 2px rgba(255,209,102,.35)}   /* /ideas/<номер> — эта идея (ideas.js focusIdea) */
.id-vote{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;width:54px;height:62px;border-radius:12px;cursor:pointer;
  font:inherit;color:var(--muted);background:rgba(var(--fg-rgb),.04);border:1px solid var(--line);transition:all .2s}
.id-vote:hover:not(:disabled){color:var(--text-hi);border-color:var(--ac-55)}
.id-vote.voted{color:#fff;background:linear-gradient(160deg,var(--accent),var(--accent2));border-color:transparent;box-shadow:0 8px 22px -10px var(--ac-55)}
.id-vote:disabled{cursor:default;opacity:.6}
.id-vote-arrow{font-size:.8rem;line-height:1}
.id-vote-n{font-family:var(--font-display);font-size:1.2rem;line-height:1}
.id-main{min-width:0;flex:1}
.id-top{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}
.id-badge{flex:none;padding:.15rem .55rem;border-radius:999px;font-size:.62rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  color:var(--st,var(--muted));border:1px solid currentColor}
.id-card.st-new .id-badge{color:var(--muted)}
.id-title{font-size:.98rem;font-weight:800;line-height:1.35;color:var(--text-hi);word-break:break-word}
.id-body{margin-top:.35rem;font-size:.84rem;line-height:1.6;color:rgba(var(--text-rgb),.7);white-space:pre-line;word-break:break-word}
.id-watch{display:inline-flex;margin-top:.6rem;padding:.4rem .8rem;border-radius:9px;font-size:.74rem;font-weight:800;color:#fff;
  background:linear-gradient(135deg,#ff4040,#d90429)}
.id-meta{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;margin-top:.55rem;font-size:.72rem;color:var(--muted)}
.id-author{color:rgba(var(--text-rgb),.85);font-weight:700}
.id-link{margin-left:auto;background:none;border:0;cursor:pointer;font:inherit;font-size:.72rem;color:var(--muted);text-decoration:underline}
.id-link:hover{color:var(--accent)}
.id-admin{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.7rem;padding-top:.7rem;border-top:1px dashed var(--line)}
@media(max-width:640px){
  .id-card{gap:.7rem;padding:.9rem}
  .id-vote{width:46px;height:56px}
  .id-tools .vid-sort{width:100%}
}

/* ═══════════════════════════════════════════════════════════════════
   XP И УРОВНИ (js/features/xp.js)
   ═══════════════════════════════════════════════════════════════════ */
body.no-xp .lv-badge,body.no-xp #profileXpCard,body.no-xp #xpTopWeek{display:none!important}

/* Бейдж Lv N рядом с ником; рамки по порогам 5/10/20/30 */
.lv-badge:empty{display:none}
.lv-badge{
  display:inline-flex;align-items:center;margin-left:.35rem;padding:.05rem .38rem;border-radius:6px;vertical-align:middle;
  font-size:.6rem;font-weight:800;letter-spacing:.02em;line-height:1.35;color:#cfcfe6;
  background:rgba(var(--fg-rgb),.07);border:1px solid rgba(var(--fg-rgb),.12);
}
.lv-badge.lv-t5{color:#7ee3ff;border-color:rgba(41,182,246,.5);background:rgba(41,182,246,.12)}
.lv-badge.lv-t10{color:#c9a8ff;border-color:rgba(145,71,255,.6);background:rgba(145,71,255,.15)}
.lv-badge.lv-t20{color:var(--gold-t);border-color:rgba(255,209,102,.6);background:rgba(255,209,102,.12)}
.lv-badge.lv-t30{color:#fff;border-color:transparent;background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 0 12px -2px var(--ac-55)}

/* Карточка на профиле */
.pf-xp .xp-row{display:flex;align-items:center;gap:1.1rem}
.xp-lvl{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:84px;height:84px;border-radius:22px;
  background:linear-gradient(160deg,var(--ac-18),rgba(145,71,255,.14));border:1px solid var(--ac-30)}
.xp-lvl span{font-size:.58rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.xp-lvl b{font-family:var(--font-display);font-size:2.3rem;line-height:1;color:var(--text-hi)}
.xp-lvl b.lv-t10{color:#c9a8ff}.xp-lvl b.lv-t20{color:var(--gold-t)}
.xp-lvl b.lv-t30{background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.xp-bar-wrap{flex:1;min-width:0}
.xp-bar-top{display:flex;justify-content:space-between;gap:.6rem;font-size:.78rem;color:var(--muted);margin-bottom:.4rem}
.xp-bar-top b{color:var(--text-hi);font-size:.95rem}
.xp-bar{height:10px;border-radius:999px;background:rgba(var(--fg-rgb),.07);overflow:hidden}
.xp-bar i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent2));
  box-shadow:0 0 14px var(--ac-55);transition:width 1s var(--ease-out)}
.xp-today{margin-top:.4rem;font-size:.72rem;color:#7ee3a0}
.xp-week{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.9rem}
.xp-week:empty{display:none}
.xp-week-t{font-size:.72rem;color:var(--muted);margin-right:.2rem}
.xp-chip{padding:.2rem .55rem;border-radius:999px;font-size:.7rem;color:rgba(var(--text-rgb),.8);background:rgba(var(--fg-rgb),.05);border:1px solid var(--line)}
.xp-chip b{color:#7ee3a0}
.xp-help{margin-top:.9rem}
.xp-help summary{cursor:pointer;font-size:.76rem;font-weight:700;color:var(--muted)}
.xp-help summary:hover{color:var(--text-hi)}
.xp-rules{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.5rem;margin-top:.7rem}
.xp-rule{display:flex;gap:.6rem;align-items:flex-start;padding:.6rem .7rem;border-radius:12px;background:rgba(var(--fg-rgb),.03);border:1px solid var(--line)}
.xp-rule>span{font-size:1.1rem}
.xp-rule b{display:block;font-size:.78rem;color:var(--text-hi)}
.xp-rule small{font-size:.7rem;color:var(--muted);line-height:1.5}

/* Топ недели на главной */
.xp-top{margin-top:1.3rem;padding:1.1rem 1.3rem;border-radius:18px;background:rgba(var(--fg-rgb),.025);border:1px solid var(--line)}
.xp-top[hidden]{display:none}
.xp-top-head{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;margin-bottom:.7rem}
.xp-top-head b{font-size:1rem;color:var(--text-hi)}
.xp-top-head span{font-size:.74rem;color:var(--muted)}
.xp-top-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem}
.xp-top-item{display:flex;align-items:center;gap:.5rem;padding:.55rem .75rem;border-radius:12px;background:rgba(var(--fg-rgb),.03);border:1px solid var(--line)}
.xp-top-place{width:1.6rem;text-align:center;font-weight:800;color:var(--muted)}
.xp-top-nick{flex:1;min-width:0;font-size:.84rem;font-weight:800;color:var(--text-hi);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xp-top-item .lv-badge{margin-left:0}
.xp-top-xp{font-size:.74rem;font-weight:800;color:#7ee3a0;white-space:nowrap}

/* Всплывашка «+5 XP» */
.xp-toast{
  position:fixed;left:50%;bottom:1.5rem;z-index:9800;display:flex;align-items:center;gap:.6rem;
  padding:.7rem 1.1rem;border-radius:14px;font-size:.84rem;font-weight:800;color:var(--text-hi);
  background:rgba(var(--panel-rgb),.96);border:1px solid var(--ac-55);box-shadow:0 18px 40px -12px var(--ac-55);
  transform:translate(-50%,160%);opacity:0;transition:transform .45s var(--ease-spring),opacity .3s;pointer-events:none;
}
.xp-toast.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}
.xp-toast button{padding:.35rem .7rem;border-radius:9px;border:0;cursor:pointer;font:inherit;font-size:.74rem;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2))}
@media(max-width:640px){.xp-toast{bottom:5rem;max-width:calc(100% - 2rem)}.pf-xp .xp-row{gap:.8rem}.xp-lvl{width:70px;height:70px}.xp-lvl b{font-size:1.9rem}}

/* ── Ряд Shorts v2: отдельная панель, чтобы не сливаться с сеткой «Видео» ── */
.sh-row{
  position:relative;margin-bottom:4rem;padding:1.4rem 1.4rem 1.2rem;border-radius:26px;overflow:hidden;
  background:
    radial-gradient(80% 120% at 0% 0%,color-mix(in srgb,var(--tw) 22%,transparent),transparent 60%),
    radial-gradient(70% 120% at 100% 100%,var(--ac-18),transparent 60%),
    rgba(var(--fg-rgb),.02);
  border:1px solid color-mix(in srgb,var(--tw) 30%,transparent);
  box-shadow:0 30px 70px -40px color-mix(in srgb,var(--tw) 70%,transparent);
}
.sh-row-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.1rem}
.sh-row-title{display:flex;align-items:center;gap:.8rem}
.sh-bolt{
  display:grid;place-items:center;width:46px;height:46px;border-radius:14px;font-size:1.4rem;
  background:linear-gradient(135deg,var(--tw),var(--accent));box-shadow:0 10px 26px -10px var(--tw);
}
.sh-row-h{font-family:var(--font-display);font-size:clamp(1.6rem,3vw,2.2rem);font-weight:600;letter-spacing:.06em;text-transform:uppercase;line-height:1;color:var(--text-hi)}
.sh-row-sub{display:block;margin-top:.25rem;font-size:.76rem;color:rgba(var(--text-rgb),.62)}
.sh-row-nav{display:flex;align-items:center;gap:.45rem}
.sh-arrow{
  display:grid;place-items:center;width:38px;height:38px;border-radius:12px;cursor:pointer;
  font:inherit;font-size:1.3rem;line-height:1;color:var(--text-hi);background:rgba(var(--fg-rgb),.06);border:1px solid var(--line-hi);
  transition:background .2s,border-color .2s;
}
.sh-arrow:hover{background:rgba(var(--fg-rgb),.12);border-color:color-mix(in srgb,var(--tw) 60%,transparent)}
.sh-row-play{
  margin-left:.3rem;padding:.6rem 1rem;border-radius:12px;font-size:.74rem;font-weight:800;letter-spacing:.04em;color:#fff;
  background:linear-gradient(135deg,var(--tw),var(--accent));box-shadow:0 10px 24px -12px var(--tw);transition:transform .2s;
}
.sh-row-play:hover{transform:translateY(-2px)}
.sh-row-track{
  grid-auto-columns:minmax(160px,180px);gap:.8rem;padding-bottom:.2rem;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 60px),transparent);
          mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 60px),transparent);
}
.sh-row-track::-webkit-scrollbar{display:none}
.sh-card{border-radius:18px;border-color:rgba(var(--fg-rgb),.1)}
.sh-card-play{
  position:absolute;left:50%;top:42%;z-index:2;display:grid;place-items:center;width:46px;height:46px;margin:-23px 0 0 -23px;
  border-radius:50%;font-size:1rem;padding-left:3px;color:#fff;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.35);
  backdrop-filter:blur(4px);opacity:0;transform:scale(.8);transition:opacity .25s,transform .3s var(--ease-spring);
}
.sh-card:hover .sh-card-play{opacity:1;transform:none}
.sh-card:hover{border-color:color-mix(in srgb,var(--tw) 70%,transparent);box-shadow:0 20px 40px -20px var(--tw)}
@media(hover:none){.sh-card-play{opacity:.9;transform:none;width:38px;height:38px;margin:-19px 0 0 -19px}}
@media(max-width:640px){
  .sh-row{padding:1.1rem .9rem 1rem;border-radius:20px;margin-left:-.4rem;margin-right:-.4rem}
  .sh-arrow{display:none}
  .sh-row-nav{width:100%}
  .sh-row-play{margin-left:0;flex:1;text-align:center}
  .sh-row-track{grid-auto-columns:minmax(120px,36vw)}
}

/* «Новое с прошлого визита»: счётчик на «Видео», точка в таб-баре, метка NEW на карточках */
.new-count{
  display:inline-grid;place-items:center;min-width:17px;height:17px;margin-left:.35rem;padding:0 .3rem;border-radius:999px;
  font-size:.6rem;font-weight:800;line-height:1;color:#fff;background:var(--yt);vertical-align:1px;box-shadow:0 0 10px rgba(255,64,64,.6);
}
.new-count[hidden],.new-dot[hidden]{display:none}
.new-dot{position:absolute;top:-2px;right:-7px;width:8px;height:8px;border-radius:50%;background:var(--yt);box-shadow:0 0 8px var(--yt)}
.vnew{
  position:absolute;left:.55rem;top:.55rem;z-index:3;padding:.15rem .45rem;border-radius:6px;
  font-size:.6rem;font-weight:900;letter-spacing:.08em;color:#fff;background:linear-gradient(135deg,#ff4040,#d90429);
  box-shadow:0 4px 14px -4px rgba(255,64,64,.9);
}
body.high .vnew{animation:pillPulse 2.4s ease-out infinite;color:#fff}

/* Подвал: вторая строка — разделы сайта */
.footer-site{margin-top:.6rem;opacity:.75}
.footer-site a{font-size:.72rem}

/* Опрос: подсказка гостю */
.poll-hint{margin-top:.8rem;font-size:.78rem;color:var(--muted)}
.poll-hint:empty{display:none}
.poll-hint button{margin-left:.4rem;padding:.3rem .7rem;border-radius:8px;border:0;cursor:pointer;font:inherit;font-size:.74rem;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2))}

/* ═══════════════════════════════════════════════════════════════════
   УВЕДОМЛЕНИЯ 🔔 (js/features/notifications.js)
   ═══════════════════════════════════════════════════════════════════ */
.notif-wrap{position:relative;margin-right:.45rem}
.notif-wrap[hidden]{display:none}
.notif-btn{
  position:relative;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;cursor:pointer;
  color:rgba(var(--text-rgb),.8);background:rgba(var(--fg-rgb),.035);border:1.5px solid var(--line-hi);
  transition:color .2s,border-color .2s,background .2s;
}
.notif-btn:hover,.notif-wrap.open .notif-btn{color:var(--text-hi);border-color:var(--ac-55);background:var(--ac-10)}
.notif-count{
  position:absolute;top:-5px;right:-6px;min-width:18px;height:18px;padding:0 .3rem;border-radius:999px;
  display:grid;place-items:center;font-size:.6rem;font-weight:900;line-height:1;color:#fff;
  background:var(--accent);border:2px solid var(--bg);box-shadow:0 0 12px var(--ac-55);
}
.notif-count[hidden]{display:none}
.notif-count.bump{animation:notifBump .5s var(--ease-spring)}
@keyframes notifBump{0%{transform:scale(.4)}60%{transform:scale(1.25)}100%{transform:scale(1)}}

.notif-panel{
  position:absolute;right:-.5rem;top:calc(100% + .7rem);z-index:700;width:380px;max-height:min(70vh,560px);
  display:flex;flex-direction:column;border-radius:18px;overflow:hidden;
  background:rgba(var(--panel-rgb),.98);border:1px solid var(--line-hi);box-shadow:var(--sh-2),0 0 0 1px rgba(var(--fg-rgb),.02);
  opacity:0;visibility:hidden;transform:translateY(-6px) scale(.98);transform-origin:top right;
  transition:opacity .2s,transform .25s var(--ease-out),visibility 0s .25s;
}
.notif-wrap.open .notif-panel{opacity:1;visibility:visible;transform:none;transition:opacity .2s,transform .25s var(--ease-out)}
.notif-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1rem .7rem;border-bottom:1px solid var(--line)}
.notif-head b{font-size:.92rem;color:var(--text-hi)}
.notif-readall{background:none;border:0;cursor:pointer;font:inherit;font-size:.72rem;font-weight:700;color:var(--accent)}
.notif-readall[hidden]{display:none}
.notif-readall:hover{text-decoration:underline}
.notif-list{overflow-y:auto;overscroll-behavior:contain;padding:.35rem}
.notif-item{
  position:relative;display:flex;gap:.7rem;width:100%;padding:.7rem .75rem;border-radius:12px;border:0;cursor:pointer;
  text-align:left;font:inherit;color:inherit;background:transparent;transition:background .15s;
}
.notif-item:hover{background:rgba(var(--fg-rgb),.05)}
.notif-item.unread{background:var(--ac-10)}
.notif-item.unread::after{content:'';position:absolute;right:.7rem;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent)}
.notif-ic{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;font-size:1rem;font-weight:900;color:var(--text-hi);background:rgba(var(--fg-rgb),.06)}
.notif-text{display:flex;flex-direction:column;gap:.15rem;min-width:0;padding-right:1rem}
.notif-title{font-size:.8rem;line-height:1.4;color:rgba(var(--text-rgb),.88)}
.notif-title b{color:var(--text-hi)}
.notif-body{font-size:.74rem;line-height:1.4;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.notif-time{font-size:.66rem;color:rgba(141,141,170,.8)}
.notif-empty{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:2rem 1.2rem;text-align:center}
.notif-empty div{font-size:2rem;opacity:.6}
.notif-empty b{color:var(--text-hi);font-size:.9rem}
.notif-empty span{font-size:.76rem;color:var(--muted);line-height:1.5}

.notif-toast{
  position:fixed;right:1.2rem;top:5rem;z-index:9800;display:flex;align-items:center;gap:.6rem;max-width:340px;
  padding:.7rem .9rem;border-radius:14px;cursor:pointer;font:inherit;font-size:.8rem;text-align:left;color:rgba(var(--text-rgb),.9);
  background:rgba(var(--panel-rgb),.97);border:1px solid var(--ac-55);box-shadow:0 18px 40px -12px var(--ac-55);
  transform:translateX(120%);opacity:0;transition:transform .45s var(--ease-spring),opacity .3s;
}
.notif-toast.show{transform:none;opacity:1}
.notif-toast b{color:var(--text-hi)}

@media(max-width:640px){
  .notif-wrap{margin-right:.3rem}
  .notif-btn{width:34px;height:34px}
  .notif-panel{position:fixed;left:.6rem;right:.6rem;top:3.6rem;width:auto;max-height:calc(100vh - 9rem)}
  .notif-toast{left:.8rem;right:.8rem;top:4.2rem;max-width:none;transform:translateY(-150%)}
  .notif-toast.show{transform:none}
}

/* Узкий телефон: шапка с колокольчиком должна помещаться (лого, язык, 🔔, профиль, меню) */
@media(max-width:480px){
  #nav,#nav.scrolled{padding-left:.9rem;padding-right:.9rem}   /* .scrolled (2rem по бокам) уводил ☰ за край экрана на 360 px */
  body.is-authed #globalAuthLabel{display:none}
  body.is-authed .global-auth-btn{padding:.38rem .6rem}
}

/* ── Приватность профиля (js/features/profile.js → renderPrivacySettings) ── */
.pv-box{margin-top:1.1rem;padding-top:1rem;border-top:1px solid var(--line)}
.pv-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;font-size:.8rem;margin-bottom:.6rem;cursor:pointer}
.pv-row select{background:rgba(var(--fg-rgb),.06);border:1.5px solid var(--border);border-radius:8px;padding:.35rem .5rem;color:var(--text);font-family:'Montserrat',sans-serif;font-size:.76rem;cursor:pointer}
.pv-check{justify-content:flex-start;align-items:flex-start;line-height:1.45}
.pv-check input{width:16px;height:16px;flex-shrink:0;margin-top:.1rem;accent-color:var(--accent)}
.pv-status{font-size:.72rem;min-height:1rem;color:var(--muted)}
.pv-note{font-size:.68rem;line-height:1.55;color:var(--muted);opacity:.85;margin-top:.3rem}

/* ── Прогрессия (progression.sql): рамки по уровню, титулы, ачивки, награды ── */
/* Рамка с 5 уровня — outline, не спорит со свечением роли/VIP (box-shadow) */
.lv-frame-5{outline:3px solid rgba(126,227,255,.85);outline-offset:5px}
/* С 30 уровня — радужное кольцо; крутится только в «Мощном» режиме */
.lv-frame-30{position:relative}
.lv-frame-30::after{content:'';position:absolute;inset:-13px;border-radius:50%;padding:5px;pointer-events:none;filter:drop-shadow(0 0 6px rgba(255,209,102,.45));
  background:conic-gradient(from 0deg,#ffd166,#7ee3ff,#c9a8ff,#ff9ecf,#ffd166);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
body.high .lv-frame-30::after{animation:lvFrameSpin 6s linear infinite}
@keyframes lvFrameSpin{to{transform:rotate(360deg)}}

.nick-title{display:inline-block;margin-left:.35rem;padding:.05rem .45rem;border-radius:6px;font-size:.62rem;font-weight:700;
  color:var(--gold-t);background:rgba(255,209,102,.1);border:1px solid rgba(255,209,102,.3);white-space:nowrap;vertical-align:middle}
.nick-title[hidden]{display:none}
.nick-title-lg{font-size:.7rem;margin-left:0}
/* T-141: уровень сезона рядом с ником (xp.js xpSeasonHtml) и в мини-карточке; цвет текста — от темы (--fg-rgb) */
.ss-badge{display:inline-flex;align-items:center;gap:.15rem;margin-left:.3rem;padding:.05rem .38rem;border-radius:6px;vertical-align:middle;font-size:.6rem;font-weight:800;line-height:1.35;color:rgb(var(--fg-rgb));background:rgba(167,139,250,.14);border:1px solid rgba(167,139,250,.38);white-space:nowrap}

.ach-summary{font-size:.66rem;font-weight:700;color:var(--muted);letter-spacing:0;text-transform:none}
.ach-badge .ach-xp{font-size:.52rem;font-weight:800;color:var(--gold-t);opacity:.85}
.ach-badge.locked .ach-xp{color:var(--muted)}
.ach-badge.special{background:linear-gradient(160deg,var(--ac-18),rgba(145,71,255,.14));border:1px solid var(--ac-30)}
.ach-badge.special .ach-title{color:var(--text-hi)}

.title-picker{margin-top:.9rem;padding-top:.8rem;border-top:1px solid var(--line);font-size:.78rem}
.title-picker .tp-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap}
.title-picker select{background:rgba(var(--fg-rgb),.06);border:1.5px solid var(--border);border-radius:8px;padding:.35rem .5rem;color:var(--text);font-family:'Montserrat',sans-serif;font-size:.76rem;max-width:100%}
.title-picker .tp-lock{color:var(--muted);font-size:.74rem}
.title-picker .tp-status{display:block;font-size:.7rem;min-height:1rem;margin-top:.3rem}

.xp-rewards{display:flex;flex-direction:column;gap:.35rem;margin-top:.5rem}
.xp-reward{display:grid;grid-template-columns:2.2rem 1.4rem 1fr auto;align-items:center;gap:.3rem;font-size:.74rem;color:var(--muted);
  padding:.35rem .5rem;border-radius:8px;background:rgba(var(--fg-rgb),.03)}
.xp-reward-lv{font-weight:800;color:var(--text);font-size:.72rem}
.xp-reward.got{color:var(--text);background:rgba(34,197,94,.08)}
.xp-reward.got b{color:var(--ok-t)}
.xp-reward-note{font-size:.7rem;color:var(--muted);padding:.2rem .5rem}
.xp-reward-note a{color:var(--accent)}
.pv-lock{font-size:.66rem;color:var(--gold-t);font-weight:700;white-space:nowrap}

/* Топ донатов: период (js/features/leaderboard.js → setLbPeriod) */
.lb-period{display:flex;gap:.4rem;justify-content:center;padding:.8rem 1rem .2rem}
.lb-period button{border:1px solid var(--border);background:rgba(var(--fg-rgb),.04);color:var(--muted);border-radius:999px;
  padding:.3rem .8rem;font-size:.68rem;font-weight:700;cursor:pointer;font-family:'Montserrat',sans-serif}
.lb-period button.active{color:var(--text-hi);border-color:var(--accent);background:var(--ac-18)}

/* ═══ ИГРЫ (#/games) ═══ */
@media(max-width:999px){.cm-grid .cm-card:last-child:nth-child(odd){grid-column:1/-1}}
.gm-lead{font-size:.82rem;color:var(--muted);margin:-.4rem 0 1.2rem}
.gm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}
.gm-card{--gc:var(--accent);position:relative;display:flex;flex-direction:column;gap:.45rem;padding:1.3rem 1.2rem 1.1rem;border-radius:18px;
  background:linear-gradient(160deg,color-mix(in srgb,var(--gc) 14%,transparent),rgba(255,255,255,.02) 65%);
  border:1px solid color-mix(in srgb,var(--gc) 28%,transparent);color:var(--text);text-decoration:none;transition:transform .25s var(--ease-out),border-color .25s}
.gm-card:hover{transform:translateY(-4px);border-color:var(--gc)}
.gm-ic{font-size:2rem;line-height:1}
.gm-title{font-family:var(--font-display);font-size:1.15rem;letter-spacing:1px;text-transform:uppercase}
.gm-desc{font-size:.76rem;line-height:1.55;color:var(--muted);flex:1}
.gm-foot{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.3rem}
.gm-play{font-size:.74rem;font-weight:800;color:var(--gc)}
.gm-rec{font-size:.66rem;color:#ffd166;font-weight:700}
.gm-top{margin-top:1.6rem;background:var(--card);border:1px solid var(--border);border-radius:18px;padding:1.1rem}
.gm-top-head{font-size:.85rem;margin-bottom:.7rem}
.gm-tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.8rem}
.gm-tab{border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--muted);border-radius:999px;padding:.3rem .75rem;font-size:.7rem;font-weight:700;cursor:pointer;font-family:'Montserrat',sans-serif}
.gm-tab.active{color:#fff;border-color:var(--accent);background:var(--ac-18)}
.gm-top-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.gm-top-item{display:flex;align-items:center;gap:.5rem;font-size:.8rem;padding:.35rem .5rem;border-radius:10px;background:rgba(255,255,255,.03)}
.gm-top-place{width:1.6rem;text-align:center;font-weight:800}
.gm-top-nick{color:var(--text);font-weight:700;text-decoration:none}
.gm-top-score{margin-left:auto;font-weight:800;color:#ffd166;font-size:.76rem}
.gm-top-empty,.gm-top-note{font-size:.74rem;color:var(--muted);padding:.4rem}
.gm-stage{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:1rem 1.1rem 1.3rem}
.gm-stage[hidden],#gamesHub[hidden]{display:none}
.gm-stage-bar{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem}
.gm-stage-bar b{font-family:var(--font-display);letter-spacing:1px;font-size:1.1rem;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gm-stage-bar button{flex:none;white-space:nowrap}
@media(max-width:520px){.gm-stage-bar{gap:.5rem}.gm-stage-bar button span{display:none}.gm-stage-bar b{font-size:1rem}}
.gm-back,.gm-mute{border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:10px;padding:.4rem .7rem;font-size:.74rem;cursor:pointer;font-family:'Montserrat',sans-serif}
.gm-loading{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:2.5rem 0;color:var(--muted);font-size:.8rem}

/* общие элементы игр */
.ct-setup{display:flex;flex-direction:column;gap:.8rem;max-width:560px;margin:0 auto}
.ct-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;font-size:.8rem;font-weight:700}
.ct-opts{display:flex;gap:.35rem;flex-wrap:wrap}
.ct-opt{border:1.5px solid var(--border);background:rgba(255,255,255,.04);color:var(--muted);border-radius:10px;padding:.4rem .75rem;font-size:.74rem;font-weight:700;cursor:pointer;font-family:'Montserrat',sans-serif}
.ct-opt.active{color:#fff;border-color:var(--accent);background:var(--ac-18)}
.ct-note{font-size:.72rem;color:var(--muted);line-height:1.5}
.ct-start{align-self:center;border:none;border-radius:12px;padding:.75rem 1.6rem;font-weight:800;font-size:.85rem;cursor:pointer;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent2));font-family:'Montserrat',sans-serif;box-shadow:0 10px 26px -12px var(--ac-55)}
.ct-stats{text-align:center;font-size:.74rem;color:var(--muted)}
.ct-rules{font-size:.74rem;color:var(--muted);line-height:1.6}
.ct-rules summary{cursor:pointer;font-weight:700;color:var(--text)}
.ct-top{display:flex;align-items:center;gap:.6rem 1rem;flex-wrap:wrap;margin-bottom:.8rem;font-size:.78rem}
.ct-badge{padding:.2rem .6rem;border-radius:8px;background:var(--ac-18);color:#fff;font-weight:800;font-size:.7rem}
.ct-score{color:var(--muted)}
.ct-score b{color:var(--text)}
.ct-timer{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums}
.ct-timer.low{color:#f87171}
.ct-timer[hidden]{display:none}
.ct-status{font-size:.8rem;line-height:1.5;min-height:1.3rem;margin:.6rem 0}
.ct-status.err{color:#f87171}.ct-status.win{color:#22c55e}.ct-status.hint{color:#ffd166}
.ct-actions{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:.6rem}
.ct-actions button:not(.ct-start){border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:10px;padding:.5rem .9rem;font-size:.76rem;cursor:pointer;font-family:'Montserrat',sans-serif}

/* Города */
.ct-chain{display:flex;flex-direction:column;gap:.4rem;max-height:340px;overflow-y:auto;padding:.3rem;scroll-behavior:smooth}
.ct-city{max-width:78%;padding:.5rem .8rem;border-radius:14px;display:flex;flex-direction:column;gap:.1rem;animation:ctIn .25s var(--ease-out)}
.ct-city.bot{align-self:flex-start;background:rgba(255,255,255,.05);border:1px solid var(--border)}
.ct-city.me{align-self:flex-end;background:var(--ac-18);border:1px solid var(--ac-30)}
.ct-name{font-weight:800;font-size:.9rem}
.ct-name u{text-decoration:none;color:#ffd166;border-bottom:2px solid #ffd166}
.ct-meta{font-size:.64rem;color:var(--muted)}
@keyframes ctIn{from{opacity:0;transform:translateY(6px)}}
body.low .ct-city{animation:none}
.ct-input{display:flex;gap:.5rem}
.ct-input input{flex:1;min-width:0;background:rgba(255,255,255,.06);border:1.5px solid var(--border);border-radius:12px;padding:.7rem .9rem;color:var(--text);font-family:'Montserrat',sans-serif;font-size:.9rem;outline:none}
.ct-input input:focus{border-color:var(--accent)}
.ct-input button{border:none;border-radius:12px;padding:0 1.1rem;font-size:1rem;cursor:pointer;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2))}

/* Угадай видео */
.gv-intro{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.9rem;padding:1rem 0;font-size:.84rem;line-height:1.6;max-width:520px;margin:0 auto}
.gv-big{font-size:3rem;font-family:var(--font-display)}
.gv-frame{position:relative;aspect-ratio:16/9;border-radius:14px;overflow:hidden;background:#000;max-width:640px;margin:0 auto}
.gv-frame img{width:100%;height:100%;object-fit:cover;display:block;user-select:none}
.gv-bar{position:absolute;left:0;right:0;bottom:0;height:5px;background:rgba(0,0,0,.4)}
.gv-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.gv-opts{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;max-width:640px;margin:.8rem auto 0}
@media(max-width:560px){.gv-opts{grid-template-columns:1fr}}
.gv-opt{text-align:left;border:1.5px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:12px;padding:.65rem .8rem;font-size:.76rem;line-height:1.4;cursor:pointer;font-family:'Montserrat',sans-serif}
.gv-opt:hover:not(:disabled){border-color:var(--accent)}
.gv-opt.right{border-color:#22c55e;background:rgba(34,197,94,.15)}
.gv-opt.wrong{border-color:#f87171;background:rgba(248,113,113,.12)}
.gv-link{align-self:center;color:var(--tw);font-size:.8rem;font-weight:700}
.gv-game .ct-status{text-align:center}

/* 2048 */
.g2{max-width:420px;margin:0 auto}
.g2-new{margin-left:auto;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:10px;padding:.35rem .7rem;font-size:.72rem;cursor:pointer}
.g2-new.g2-reset{margin-left:0}
.g2-undo:disabled{opacity:.4;cursor:default}
.g2-wrap{position:relative;touch-action:none}
.g2-board{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:8px;padding:8px;border-radius:14px;background:rgba(255,255,255,.05);aspect-ratio:1}
.g2-cell{border-radius:10px;background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:clamp(1rem,6vw,1.7rem);color:#fff;font-variant-numeric:tabular-nums}
.g2-cell.fresh{animation:g2Pop .18s var(--ease-out)}
@keyframes g2Pop{from{transform:scale(.6)}}
.g2-cell.v2{background:#3b3551}.g2-cell.v4{background:#4b3f6b}.g2-cell.v8{background:#7b3fa6}.g2-cell.v16{background:#9147ff}
.g2-cell.v32{background:#c2379a}.g2-cell.v64{background:#ff2d55}.g2-cell.v128{background:#ff6b35;font-size:clamp(.9rem,5vw,1.5rem)}
.g2-cell.v256{background:#ff9f43;font-size:clamp(.9rem,5vw,1.5rem)}.g2-cell.v512{background:#f7c948;color:#1a1020;font-size:clamp(.9rem,5vw,1.5rem)}
.g2-cell.v1024{background:#ffd166;color:#1a1020;font-size:clamp(.8rem,4.2vw,1.3rem)}
.g2-cell.v2048,.g2-cell.v4096{background:linear-gradient(135deg,#ffd166,#22c55e);color:#1a1020;font-size:clamp(.8rem,4.2vw,1.3rem);box-shadow:0 0 18px rgba(255,209,102,.5)}
.g2-over{position:absolute;inset:0;border-radius:14px;background:rgba(8,8,14,.82);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center;font-weight:800}
.g2-over[hidden]{display:none}
.g2 .ct-note{text-align:center;margin-top:.6rem}

/* Крестики-нолики */
.tt{max-width:360px;margin:0 auto}
.tt .ct-status{margin:0}
.tt-board{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:8px;aspect-ratio:1}
.tt-cell{border-radius:14px;border:1.5px solid var(--border);background:rgba(255,255,255,.04);font-size:clamp(1.8rem,10vw,2.8rem);cursor:pointer;display:flex;align-items:center;justify-content:center;color:inherit}
.tt-cell:hover:not(:disabled){border-color:var(--accent)}
.tt-cell:disabled{cursor:default}
.tt-cell.win{background:rgba(34,197,94,.18);border-color:#22c55e}

/* Реакция */
.rx{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:.8rem}
.rx-pad{height:260px;border-radius:18px;border:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;color:#fff;
  background:rgba(255,255,255,.06);font-family:var(--font-display);font-size:1.8rem;letter-spacing:1px;touch-action:manipulation;user-select:none}
.rx-pad small{font-family:'Montserrat',sans-serif;font-size:.74rem;letter-spacing:0;opacity:.8}
.rx-pad.wait{background:#b91c3c}.rx-pad.go{background:#16a34a}.rx-pad.early{background:#7c2d12}.rx-pad.shown,.rx-pad.done{background:#4b3f6b}
.rx-tries{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;font-size:.74rem;color:var(--muted)}
/* «Города» онлайн */
.ct-duel-btn{align-self:center;border:1.5px solid var(--tw);background:var(--tw-18);color:#fff;border-radius:12px;padding:.6rem 1.3rem;font-weight:800;font-size:.8rem;cursor:pointer;font-family:'Montserrat',sans-serif}
.ct-lobby{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.8rem;max-width:520px;margin:0 auto;font-size:.84rem;line-height:1.6}
.ct-link{display:flex;gap:.4rem;width:100%}
.ct-link input{flex:1;min-width:0;background:rgba(255,255,255,.06);border:1.5px solid var(--border);border-radius:10px;padding:.55rem .7rem;color:var(--text);font-size:.74rem;font-family:monospace}
.ct-link button{border:none;border-radius:10px;padding:0 .9rem;font-weight:700;font-size:.74rem;cursor:pointer;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2));white-space:nowrap}

/* Шашки */
.ck{max-width:480px;margin:0 auto}
.ck .ct-status{margin:0 0 0 auto}
.ck-board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);aspect-ratio:1;border-radius:12px;overflow:hidden;border:3px solid #3a2a1c;user-select:none}
.ck-cell{position:relative;display:flex;align-items:center;justify-content:center}
.ck-cell.l{background:#e8d3b0}.ck-cell.d{background:#8b5a36}
.ck-cell.can{cursor:pointer}
.ck-cell.can::after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 0 2px rgba(255,209,102,.55)}
.ck-cell.sel{background:#b07a3c}
.ck-cell.last{background:#9c6a3e}
.ck-cell.pend{background:#4f8f5f;box-shadow:inset 0 0 0 3px #22c55e}
.ck-cell.tgt{cursor:pointer}
.ck-cell.tgt::before{content:'';width:32%;height:32%;border-radius:50%;background:rgba(34,197,94,.75);position:absolute}
.ck-p{width:78%;height:78%;border-radius:50%;position:relative;z-index:1;box-shadow:inset 0 -4px 0 rgba(0,0,0,.25),0 3px 6px rgba(0,0,0,.35)}
.ck-p.w{background:radial-gradient(circle at 35% 30%,#fff,#d9d4cc)}
.ck-p.b{background:radial-gradient(circle at 35% 30%,#555,#161616)}
.ck-p.k::after{content:'♛';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:clamp(.8rem,4.5vw,1.3rem);color:#e0a800}

/* Реклама (js/core/ads-core.js) */
.d37-ad{display:block;margin:1.2rem auto 0;max-width:970px;min-height:90px;text-align:center}
.d37-ad[hidden]{display:none}
.d37-ad-label{display:block;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:.3rem;opacity:.7}
/* Морской бой */
.sb{max-width:820px;margin:0 auto}
.sb .ct-status{margin:0}
.sb-boards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.2rem;align-items:start}
.sb-wrap{max-width:400px;width:100%;margin:0 auto}
/* Телефон: поле соперника (куда стреляешь) — сверху, своё — меньше под ним */
@media(max-width:640px){.sb-boards{display:flex;flex-direction:column}.sb-boards .sb-wrap:nth-child(2){order:-1}.sb-boards .sb-wrap:first-child:not(:only-child){max-width:240px}}
.sb-label{font-size:.74rem;font-weight:800;color:var(--muted);text-align:center;margin-bottom:.35rem;text-transform:uppercase;letter-spacing:.06em}
.sb-board{display:grid;grid-template-columns:repeat(11,1fr);gap:2px;aspect-ratio:1;user-select:none}
.sb-hd{display:flex;align-items:center;justify-content:center;font-size:.6rem;color:var(--muted);font-weight:700}
.sb-cell{border:0;border-radius:3px;background:rgba(56,189,248,.1);padding:0;cursor:default;position:relative;color:inherit;font-size:0}
.sb-board.active .sb-cell:not(:disabled){cursor:crosshair}
.sb-board.active .sb-cell:not(:disabled):hover{background:rgba(56,189,248,.35)}
.sb-board.active{outline:2px solid var(--ac-55);outline-offset:4px;border-radius:4px}
.sb-cell.ship{background:#64748b}
.sb-cell.ship.rest{background:rgba(100,116,139,.55)}
.sb-cell.miss::after{content:'';position:absolute;left:50%;top:50%;width:22%;height:22%;margin:-11% 0 0 -11%;border-radius:50%;background:rgba(240,240,248,.45)}
.sb-cell.hit{background:#f97316}
.sb-cell.hit::after,.sb-cell.sunk::after{content:'✕';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:clamp(.55rem,2.4vw,.9rem);font-weight:900;color:#fff}
.sb-cell.sunk{background:#b91c1c}
.sb-cell.aim{background:rgba(255,209,102,.5)}
.sb-cell.last{box-shadow:inset 0 0 0 2px #ffd166}
/* расстановка руками (sea.js): «рука» с кораблями, призрак под мышью, нельзя — красным */
#sMine .sb-cell:not(:disabled){cursor:pointer}
.sb-cell.ghost{background:rgba(34,197,94,.45)}
.sb-cell.ghost.no,.sb-cell.bad{background:rgba(239,68,68,.55)}
.sb-cell.bad{animation:unNo .26s ease-in-out}
.sb-hand{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.35rem .7rem;min-height:2.2rem;margin-bottom:.5rem;font-size:.76rem;color:var(--muted)}
.sb-hand b{color:var(--text)}
.sb-hand-ok{color:#86efac;font-weight:700}
.sb-ship{display:inline-flex;align-items:center;gap:2px;padding:.2rem .35rem;border-radius:8px;border:1px solid transparent}
.sb-ship i{width:12px;height:12px;border-radius:2px;background:#64748b}
.sb-ship em{font-style:normal;font-weight:800;margin-left:.25rem;color:var(--text)}
.sb-ship.next{border-color:#22c55e;background:rgba(34,197,94,.12)}
.sb-ship.next i{background:#22c55e}
.sb-edit button:disabled,#sGo:disabled{opacity:.4;cursor:default}
/* Змейка */
.sn{max-width:420px;margin:0 auto}
.sn-wrap{position:relative;touch-action:none}
.sn-canvas{display:block;width:100%;aspect-ratio:1;border-radius:14px;border:1px solid var(--border)}
.sn-over{position:absolute;inset:0;border-radius:14px;background:rgba(8,8,14,.78);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7rem;text-align:center;padding:1rem}
.sn-over[hidden]{display:none}
.sn-over b{font-family:var(--font-display);font-size:1.8rem;letter-spacing:1px}
.sn-over span{font-size:.78rem;color:var(--muted)}
.sn-over .ct-start[hidden]{display:none}
.sn-pad{display:grid;grid-template-columns:repeat(3,56px);grid-template-rows:repeat(2,48px);gap:6px;justify-content:center;margin-top:.8rem}
.sn-pad button{border:1px solid var(--border);background:rgba(255,255,255,.05);color:var(--text);border-radius:12px;font-size:1rem;cursor:pointer;touch-action:manipulation}
.sn-pad button:first-child{grid-column:2;grid-row:1}
/* ◀ ▼ ▶ — нижним рядом (раньше ◀ уезжал вверх, правее ▲) */
.sn-pad button:nth-child(2){grid-column:1;grid-row:2}.sn-pad button:nth-child(3){grid-column:2;grid-row:2}.sn-pad button:nth-child(4){grid-column:3;grid-row:2}
.sn-pad button:active{background:var(--ac-18)}
@media(hover:hover) and (pointer:fine){.sn-pad{display:none}}
/* Найди пару */
.mm{max-width:520px;margin:0 auto}
.mm-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
@media(max-width:480px){.mm-grid{grid-template-columns:repeat(4,1fr);gap:6px}.mm-card{aspect-ratio:1}}
/* Открыта игра на телефоне — большой заголовок раздела не нужен, место под игру */
@media(max-width:640px){#games-page:has(#gamesStage:not([hidden])) .sec-title-row{display:none}}
.mm-card{aspect-ratio:3/4;border-radius:12px;border:1.5px solid var(--border);background:linear-gradient(135deg,var(--ac-18),rgba(255,255,255,.03));cursor:pointer;position:relative;padding:0;color:inherit;transition:transform .25s,background .25s}
.mm-card span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transition:opacity .2s}
.mm-back{font-family:var(--font-display);font-size:1.5rem;color:rgba(255,255,255,.35)}
.mm-face{font-size:clamp(1.5rem,7vw,2.2rem);opacity:0}
.mm-card.up{background:rgba(255,255,255,.08)}
.mm-card.up .mm-face{opacity:1}.mm-card.up .mm-back{opacity:0}
.mm-card.got{border-color:#22c55e;background:rgba(34,197,94,.14);cursor:default}
body.low .mm-card{transition:none}
.mm .ct-status{text-align:center}
/* «Поддержать стрим» после победы/рекорда */
.gm-support{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin-top:1rem;padding:.8rem 1rem;border-radius:14px;
  background:linear-gradient(90deg,var(--ac-18),rgba(255,209,102,.08));border:1px solid var(--ac-30);font-size:.8rem;line-height:1.45}
.gm-support[hidden]{display:none}
.gm-support div{flex:1;min-width:200px}
.gm-support a,.gm-support button{border:none;border-radius:10px;padding:.55rem .9rem;font-weight:800;font-size:.76rem;cursor:pointer;text-decoration:none;color:#fff;font-family:'Montserrat',sans-serif;white-space:nowrap}
.gm-support .sp-don{background:linear-gradient(135deg,var(--accent),var(--accent2))}
.gm-support .sp-share{background:rgba(255,255,255,.07);border:1px solid var(--border)}
.gm-support .sp-x{background:none;color:var(--muted);padding:.3rem .5rem}

/* 5 букв */
.wd{max-width:440px;margin:0 auto;display:flex;flex-direction:column;gap:.7rem}
.wd-modes{display:flex;gap:.4rem;justify-content:center}
.wd-modes button{border:1.5px solid var(--border);background:rgba(255,255,255,.04);color:var(--muted);border-radius:10px;padding:.4rem .8rem;font:700 .74rem 'Montserrat',sans-serif;cursor:pointer}
.wd-modes button.on{color:#fff;border-color:var(--accent);background:var(--ac-18)}
.wd-grid{display:grid;gap:6px;width:min(100%,330px);margin:0 auto}
.wd-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.wd-tile{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:2px solid var(--border);border-radius:8px;font:800 clamp(1.3rem,7vw,1.9rem)/1 'Montserrat',sans-serif;text-transform:uppercase;color:#fff}
.wd-tile.typed{border-color:rgba(255,255,255,.45)}
.wd-tile.rev{animation:wdFlip .45s var(--d,0ms) both}
.wd-tile.g{background:#16a34a;border-color:#16a34a}.wd-tile.y{background:#ca8a04;border-color:#ca8a04}.wd-tile.n{background:#3f3f46;border-color:#3f3f46}
@keyframes wdFlip{0%{transform:rotateX(0);background:transparent;border-color:rgba(255,255,255,.45)}49%{background:transparent;border-color:rgba(255,255,255,.45)}50%{transform:rotateX(90deg)}100%{transform:rotateX(0)}}
.wd-row.shake{animation:wdShake .35s}
@keyframes wdShake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
body.low .wd-tile.rev,body.low .wd-row.shake{animation:none}
@media(prefers-reduced-motion:reduce){body:not(.high) .wd-tile.rev,body:not(.high) .wd-row.shake{animation:none}}
.wd .wd-status{text-align:center;margin:0;min-height:1.2rem}
.wd-kb{display:flex;flex-direction:column;gap:6px;user-select:none}
.wd-kb div{display:flex;gap:4px;justify-content:center}
.wd-kb button{flex:1 1 0;min-width:0;max-width:42px;height:50px;border:0;border-radius:7px;background:rgba(255,255,255,.12);color:var(--text);font:700 .95rem 'Montserrat',sans-serif;text-transform:uppercase;cursor:pointer;padding:0;touch-action:manipulation}
.wd-kb button.wide{flex:1.6 1 0;max-width:68px;font-size:.62rem}
.wd-kb button.g{background:#16a34a}.wd-kb button.y{background:#ca8a04}.wd-kb button.n{background:#27272a;color:#71717a}
.wd-end{display:flex;flex-direction:column;gap:.8rem;padding-top:.4rem}
.wd-end[hidden]{display:none}
.wd-word{text-align:center;font-size:.9rem}
.wd-stats{display:flex;justify-content:center;gap:1.2rem;text-align:center;font-size:.66rem;color:var(--muted)}
.wd-stats b{display:block;font-size:1.4rem;color:var(--text)}
.wd-dist{display:flex;flex-direction:column;gap:3px;font-size:.72rem}
.wd-dist div{display:flex;gap:.4rem;align-items:center}
.wd-dist i{font-style:normal;font-weight:800;background:#3f3f46;width:var(--w);text-align:right;padding:.1rem .4rem;border-radius:4px}
.wd-dist i.me{background:#16a34a}
.wd-next{text-align:center}
.wd-hintbar{display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;font-size:.76rem;color:var(--muted);min-height:1.8rem}
.wd-hint{border:1px solid rgba(255,209,102,.45);background:rgba(255,209,102,.08);color:#ffd166;border-radius:999px;padding:.3rem .8rem;font:700 .72rem 'Montserrat',sans-serif;cursor:pointer}
.wd-hint:disabled{opacity:.5;cursor:default}
.wd-hinttext b{color:#ffd166}
.wd-hinttext a{color:var(--accent)}
@media(max-width:480px){.gm-stage .wd{margin:0 -.85rem}.wd-kb div{gap:3px}.wd-kb button{height:46px;font-size:.88rem}}
/* Лови донаты */
.ca{display:flex;flex-direction:column;gap:.6rem;align-items:center}
.ca-wrap{position:relative;width:100%;max-width:560px;display:flex;justify-content:center}
.ca-wrap canvas{border-radius:16px;touch-action:none;display:block}
.ca-over{position:absolute;inset:0;border-radius:16px;background:rgba(8,8,14,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;text-align:center;padding:1rem}
.ca-over[hidden]{display:none}
.ca-title{font-family:var(--font-display);font-size:1.6rem;letter-spacing:1px}
.ca-score{font-size:.8rem;color:var(--muted);max-width:340px;line-height:1.5}
.ca-score b{color:#ffd166}

/* Задание дня (js/features/games.js → renderDailyQuest) */
.dq{display:flex;align-items:center;gap:.9rem;padding:1rem 1.1rem;margin-bottom:1.2rem;border-radius:16px;
  background:linear-gradient(135deg,rgba(255,209,102,.12),rgba(255,45,85,.08));border:1px solid rgba(255,209,102,.35)}
.dq[hidden]{display:none}
.dq-ic{font-size:1.8rem}
.dq-body{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:0;font-size:.8rem}
.dq-body b{font-size:.68rem;letter-spacing:1px;text-transform:uppercase;color:#ffd166}
.dq-body small{font-size:.66rem;color:var(--muted)}
.dq-btn{border:none;border-radius:10px;padding:.5rem .9rem;font-weight:800;font-size:.74rem;cursor:pointer;color:#1a1020;background:#ffd166;font-family:'Montserrat',sans-serif;text-decoration:none;white-space:nowrap}
.dq-btn.ghost{background:transparent;color:#ffd166;border:1px solid rgba(255,209,102,.5)}
.dq-done{font-size:.74rem;color:#22c55e;font-weight:700;white-space:nowrap}
@media(max-width:560px){.dq{flex-wrap:wrap}.dq-btn,.dq-done{margin-left:auto}}

/* Сезонный путь и задания недели (js/features/games.js → renderQuests, renderProfileQuests; games-more.sql). --sc — цвет темы сезона */
.sq{--sc:#ffd166;margin-bottom:1.2rem;padding:1rem 1.1rem;border-radius:16px;background:linear-gradient(135deg,rgba(255,255,255,.05),rgba(155,109,255,.07));
  border:1px solid rgba(255,255,255,.12);border-color:color-mix(in srgb,var(--sc) 45%,transparent);min-width:0}
.sq[hidden]{display:none}
.sq.sq-w{--sc:#7dd3fc}
.sq-in{margin-bottom:.7rem;padding:.75rem .85rem}
.sq-h{display:flex;align-items:center;gap:.75rem}
.sq-ic{font-size:1.7rem;line-height:1}
.sq-t{display:flex;flex-direction:column;gap:.12rem;flex:1;min-width:0}
.sq-t b{font-size:.7rem;letter-spacing:1px;text-transform:uppercase;color:var(--sc)}
.sq-t small,.sq-sub{font-size:.66rem;color:var(--muted)}
.sq-sub{margin-top:.35rem}
.sq-sub a,.sq-how a,.sq-more a{color:var(--sc)}
.sq-lv{font-size:.72rem;color:var(--muted);white-space:nowrap}
.sq-lv b{font-size:1.05rem;color:var(--text)}
.sq-bar,.sq-pb{display:block;height:8px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:.6rem}
.sq-bar i,.sq-pb i{display:block;height:100%;border-radius:inherit;background:var(--sc);min-width:2px}
.sq-path{display:flex;gap:.35rem;overflow-x:auto;overscroll-behavior-x:contain;padding:.6rem 0 .35rem;margin-top:.2rem;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}
.sq-path::-webkit-scrollbar{height:5px}.sq-path::-webkit-scrollbar-track{background:transparent}.sq-path::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:9px}
@media(pointer:coarse){.sq-path{scrollbar-width:none}.sq-path::-webkit-scrollbar{display:none}}
.sq-c{flex:0 0 auto;width:46px;display:flex;flex-direction:column;align-items:center;gap:.05rem;padding:.3rem 0;border-radius:10px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);opacity:.6;font-size:1.05rem;line-height:1.2}
.sq-c::before{content:attr(data-lv);font-size:.56rem;line-height:1.4;color:var(--muted)}
.sq-c small{font-size:.58rem;color:#ffd166;font-weight:700}
.sq-c.big{border-color:rgba(255,255,255,.2)}
.sq-c.ready{opacity:1;border-color:var(--sc);box-shadow:0 0 0 1px var(--sc) inset}
.sq-c.got{opacity:1;background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.45)}
.sq-c.got::before{content:attr(data-lv) ' ✓';color:#22c55e}
.sq-f{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.5rem;margin-top:.55rem}
.sq-how{flex:1 1 100%;font-size:.7rem;color:var(--muted)}
.sq-how summary{cursor:pointer;color:var(--text);font-weight:700;padding:.2rem 0}
.sq-how ul{margin:.3rem 0 0 1.1rem;padding:0;display:grid;gap:.2rem}
.sq-picks{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;margin:.45rem 0}
.sq-picks span{flex:1 1 100%;font-size:.66rem}
.sq-pick{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);color:var(--text);border-radius:99px;padding:.35rem .7rem;
  font:600 .7rem 'Montserrat',sans-serif;cursor:pointer;min-height:32px}
.sq-pick.on{border-color:var(--sc);background:rgba(255,255,255,.1)}
.sq-list{list-style:none;margin:.65rem 0 0;padding:0;display:grid;gap:.45rem}
.sq-q{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:12px;background:rgba(255,255,255,.035)}
.sq-q.ready{background:rgba(255,209,102,.1)}
.sq-q.ok{opacity:.7}
.sq-qi{font-size:1.2rem;width:1.6rem;text-align:center}
.sq-qb{flex:1;min-width:0;font-size:.74rem;display:flex;flex-direction:column;gap:.15rem}
.sq-qb .sq-pb{margin-top:.15rem;height:6px}
.sq-qb small{font-size:.62rem;color:var(--muted)}
.sq-more{text-align:right}
@media(max-width:560px){.sq{padding:.85rem .8rem}.sq-q{flex-wrap:wrap}.sq-q .dq-btn,.sq-q .dq-done{margin-left:auto}.sq-c{width:42px}}
/* Рамка сезона на аватаре (надевает игрок; data-ss — тема, season_themes в games-more.sql) — вместо рамки уровня, как «Посол» */
.lv-frame-ss{position:relative;outline:3px solid var(--ssc,#ffd166);outline-offset:5px;filter:drop-shadow(0 0 9px rgba(255,255,255,.22))}
.lv-frame-ss::after{content:var(--sse,'🏆');position:absolute;right:-6px;bottom:-6px;font-size:1.05rem;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}
.profile-avatar-glow.lv-frame-ss{outline-color:var(--ssc,#ffd166)!important}
.lv-frame-ss[data-ss="jan"]{--ssc:#7dd3fc;--sse:'🐧'}.lv-frame-ss[data-ss="feb"]{--ssc:#93c5fd;--sse:'🧊'}
.lv-frame-ss[data-ss="mar"]{--ssc:#f472b6;--sse:'🌷'}.lv-frame-ss[data-ss="apr"]{--ssc:#38bdf8;--sse:'💧'}
.lv-frame-ss[data-ss="may"]{--ssc:#facc15;--sse:'🐝'}.lv-frame-ss[data-ss="jun"]{--ssc:#4ade80;--sse:'🍉'}
.lv-frame-ss[data-ss="jul"]{--ssc:#22d3ee;--sse:'🐢'}.lv-frame-ss[data-ss="aug"]{--ssc:#a78bfa;--sse:'🌠'}
.lv-frame-ss[data-ss="sep"]{--ssc:#fb923c;--sse:'📚'}.lv-frame-ss[data-ss="oct"]{--ssc:#f97316;--sse:'🎃'}
.lv-frame-ss[data-ss="nov"]{--ssc:#d97706;--sse:'☂️'}.lv-frame-ss[data-ss="dec"]{--ssc:#ef4444;--sse:'🎁'}

/* ⚔️ Соревнование (js/games/versus.js) */
.vs-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.6rem;margin-bottom:.8rem;padding:.7rem .9rem;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid var(--border)}
.vs-side{display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:0}
.vs-side small{font-size:.66rem;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vs-side b{font-family:var(--font-display);font-size:1.6rem;letter-spacing:1px;font-variant-numeric:tabular-nums}
.vs-side.me b{color:var(--accent)}.vs-side.opp b{color:var(--tw)}
.vs-side i{font-style:normal;font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.vs-mid{font-size:1.4rem}
.vs-note{text-align:center;font-size:.82rem;margin-bottom:.6rem}
.vs-note:empty{display:none}
.vs-result{display:flex;flex-direction:column;gap:.2rem;font-size:1rem}
.vs-result span{font-family:var(--font-display);font-size:1.4rem;letter-spacing:1px}
.vs-hint{font-size:.76rem;color:#ffd166;min-height:1rem}
.gm-top-head{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap}
.gm-period{display:flex;gap:.3rem}
.gm-period button{border:1px solid var(--border);background:transparent;color:var(--muted);border-radius:999px;padding:.25rem .65rem;font-size:.66rem;font-weight:700;cursor:pointer;font-family:'Montserrat',sans-serif}
.gm-period button.active{color:#fff;border-color:var(--tw);background:var(--tw-18)}
.gm-tab.duel{border-color:rgba(255,209,102,.4);color:#ffd166}
.gm-tab.duel.active{background:rgba(255,209,102,.15);border-color:#ffd166;color:#fff}

/* ═══ Поиск по сайту (js/ui/hotkeys.js) ═══ */
.site-search-btn{flex:none;width:38px;height:38px;border-radius:12px;border:1px solid var(--border);background:rgba(var(--fg-rgb),.04);color:var(--text);font-size:1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.site-search-btn:hover{border-color:var(--accent)}
#cmdPalette{position:fixed;inset:0;z-index:10050;display:none}
#cmdPalette.open{display:block}
.cmdp-backdrop{position:absolute;inset:0;background:rgba(4,4,10,.72);backdrop-filter:blur(4px)}
.cmdp-box{position:relative;max-width:620px;margin:10vh auto 0;background:var(--card,#111119);border:1px solid var(--border);border-radius:18px;box-shadow:var(--sh-2);overflow:hidden;display:flex;flex-direction:column;max-height:75vh}
.cmdp-field{display:flex;align-items:center;gap:.6rem;padding:.8rem 1rem;border-bottom:1px solid var(--border)}
.cmdp-field input{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--text);font:600 1rem 'Montserrat',sans-serif}
.cmdp-field input::-webkit-search-cancel-button{display:none}
.cmdp-field kbd{font:700 .62rem 'Montserrat',sans-serif;color:var(--muted);border:1px solid var(--border);border-radius:6px;padding:.15rem .4rem;cursor:pointer}
.cmdp-list{overflow-y:auto;padding:.4rem;overscroll-behavior:contain}
.cmdp-group{font-size:.62rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:.6rem .6rem .25rem}
.cmdp-item{display:flex;align-items:center;gap:.7rem;padding:.5rem .6rem;border-radius:10px;text-decoration:none;color:var(--text);cursor:pointer}
.cmdp-item.active,.cmdp-item:hover{background:var(--ac-18)}
.cmdp-ic{flex:none;width:48px;height:28px;border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:rgba(var(--fg-rgb),.05);font-size:.85rem}
.cmdp-ic img{width:100%;height:100%;object-fit:cover}
.cmdp-item[data-kind="game"] .cmdp-ic{display:none}
.cmdp-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.cmdp-item-label{font-size:.84rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdp-txt small{font-size:.68rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdp-item-go{flex:none;font-size:.7rem;color:var(--muted);opacity:0}
.cmdp-item.active .cmdp-item-go{opacity:1}
.cmdp-empty{padding:1.6rem;text-align:center;color:var(--muted);font-size:.84rem}
@media(max-width:640px){.cmdp-box{margin:0;max-width:none;border-radius:0 0 18px 18px;max-height:85vh}.site-search-btn{width:34px;height:34px}}

/* ═══ «Сегодня на сайте» на главной (renderToday в games.js) ═══ */
.today{padding-top:1.2rem;padding-bottom:0}
.today:empty{display:none}
.today-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:.8rem}
button.today-card{font:inherit;text-align:left;cursor:pointer;width:100%}
@media(max-width:1100px) and (min-width:769px){.today-grid{grid-template-columns:1fr 1fr}}
.today-card{display:flex;align-items:center;gap:.8rem;padding:.85rem 1rem;border-radius:16px;background:var(--card);border:1px solid var(--border);text-decoration:none;color:var(--text);transition:border-color .2s,transform .2s;min-width:0}
.today-card:hover{border-color:var(--ac-55);transform:translateY(-2px)}
.today-card.hot{border-color:rgba(34,197,94,.55);background:linear-gradient(135deg,rgba(34,197,94,.14),var(--card) 70%)}
.today-card .ti{font-size:1.6rem;flex:none}
.today-card .tt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.today-card b{font-size:.9rem}
.today-card small{font-size:.72rem;color:var(--muted);line-height:1.35}
body.low .today-card{transition:none}
@media(max-width:768px){.today-grid{grid-template-columns:1fr;gap:.5rem}.today-card{padding:.7rem .9rem}.today-card:not(.hot) small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:768px){.bt-label{letter-spacing:.2px}}

/* Узкий телефон: шапка с кнопкой поиска 🔍 — «Войти» только значком, иначе ☰ уезжает за край */
@media(max-width:420px){#globalAuthLabel{display:none}.global-auth-btn{padding:.38rem .6rem}}

/* Телефон, раздел «Игры»: плавающие кнопки (режим производительности, «наверх») закрывали край поля
   «Морского боя» и клавишу ⌫ в «5 букв» — в играх их прячем */
@media(max-width:768px){body[data-route="games"] #perfToggle,body[data-route="games"] #scrollTop{display:none!important}}

/* Плашка «НОВОЕ» в герое главной — ведёт в игры (первый экран был только про YouTube) */
.hero-new{display:inline-flex;align-items:center;gap:.6rem;max-width:100%;margin:0 0 1.1rem;padding:.38rem .5rem .38rem .4rem;border-radius:999px;border:1px solid rgba(34,197,94,.45);background:rgba(34,197,94,.08);color:var(--text);text-decoration:none;font-size:.78rem;font-weight:600;transition:border-color .2s,background .2s}
.hero-new:hover{border-color:rgba(34,197,94,.8);background:rgba(34,197,94,.14)}
.hero-new b{flex:none;padding:.18rem .5rem;border-radius:999px;background:#16a34a;color:#fff;font-size:.6rem;letter-spacing:.08em}
.hero-new span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero-new i{font-style:normal;color:var(--ok-t);font-weight:800;padding-right:.3rem}
@media(max-width:768px){.hero-new{font-size:.72rem;margin-bottom:.9rem}}

/* Телефон: колонка героя была шире экрана (логотип 25vw ≈ 400px на 375px) — описание обрезалось по краям.
   Колонка — ровно по ширине, логотип 21vw (влезает в 343px), плашка «НОВОЕ» сжимается с многоточием */
@media(max-width:640px){.hero-main{width:100%}.wordmark{font-size:min(21vw,6.9rem)}.hero-new{max-width:100%}}
.hero-new .hn-s{display:none}
@media(max-width:640px){.hero-new .hn-l{display:none}.hero-new .hn-s{display:inline}}
/* Телефон: вкладка режима производительности — только значок, уже (заходила на текст героя) */
@media(max-width:768px){#perfToggle{padding:.45rem .25rem;opacity:.75}#perfToggle .pt-lbl{display:none}}

/* ═══ Профиль: доводка (03.10) ═══ */
/* Цветная полоска карточки торчала за скруглёнными углами на всю ширину — теперь внутри, с отступами */
.pf-card::before{left:18px;right:18px;border-radius:0 0 3px 3px;opacity:.7}
/* Закрытые ачивки было почти не видно (32%) — читаемо, но всё ещё «серые» */
.ach-badge.locked{opacity:.5}
.ach-badge.locked .ach-icon{filter:grayscale(1)}
.ach-grid .ach-more{display:none}
.ach-grid.all .ach-more{display:flex}
.ach-toggle{display:block;margin:.8rem auto 0;border:1px solid var(--border);background:rgba(var(--fg-rgb),.04);color:var(--text);border-radius:10px;padding:.5rem 1rem;font:700 .74rem 'Montserrat',sans-serif;cursor:pointer}
.ach-toggle:hover{border-color:var(--accent)}
/* «Не загружается картинка?» — свёрнуто */
.pf-upload-help summary{cursor:pointer;list-style:none;opacity:.8}
.pf-upload-help summary::-webkit-details-marker{display:none}
.pf-upload-help[open] summary{margin-bottom:.3rem}
/* Игры в профиле */
.pgs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.55rem}
.pgs-item{--gc:var(--accent);display:flex;align-items:center;gap:.65rem;padding:.6rem .75rem;border-radius:12px;background:rgba(var(--fg-rgb),.03);border:1px solid var(--border);text-decoration:none;color:var(--text);transition:border-color .2s}
.pgs-item:hover{border-color:var(--gc)}
.pgs-ic{font-size:1.4rem;flex:none}
.pgs-txt{display:flex;flex-direction:column;min-width:0}
.pgs-txt b{font-size:.8rem}
.pgs-txt small{font-size:.66rem;color:var(--muted);line-height:1.35}
.pgs-empty{font-size:.78rem;color:var(--muted)}
.pgs-empty a{color:var(--accent)}

/* ═══ Рамки аватара по уровню (xp.js → avatarFrameClass): 5 неон · 15 золото · 30 радуга · 50 пламя · 100 бриллиант ═══ */
.lv-frame-5{outline:3px solid rgba(126,227,255,.85);outline-offset:5px;filter:drop-shadow(0 0 8px rgba(126,227,255,.35))}
.lv-frame-15{outline:3px solid #ffd166;outline-offset:5px;filter:drop-shadow(0 0 10px rgba(255,209,102,.45))}
.lv-frame-15::after{content:'';position:absolute;inset:-12px;border-radius:50%;border:1px solid rgba(255,209,102,.55);pointer-events:none}
.lv-frame-15,.lv-frame-50,.lv-frame-100{position:relative}
.lv-frame-50::after,.lv-frame-100::after{content:'';position:absolute;inset:-13px;border-radius:50%;padding:5px;pointer-events:none;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
.lv-frame-50::after{background:conic-gradient(from 0deg,#ff2d55,#ff6b35,#ffd166,#ff6b35,#ff2d55,#ff6b35,#ffd166,#ff2d55);filter:drop-shadow(0 0 10px rgba(255,107,53,.65))}
.lv-frame-100::after{background:conic-gradient(from 0deg,#e0f7ff,#7ee3ff,#ffffff,#c9a8ff,#e0f7ff,#7ee3ff,#ffffff,#c9a8ff,#e0f7ff);filter:drop-shadow(0 0 12px rgba(160,230,255,.75))}
body.high .lv-frame-50::after{animation:lvFrameSpin 4s linear infinite}
body.high .lv-frame-100::after{animation:lvFrameSpin 7s linear infinite,lvFrameGlow 2.4s ease-in-out infinite alternate}
@keyframes lvFrameGlow{to{filter:drop-shadow(0 0 20px rgba(200,240,255,.95))}}

/* ═══ Охота за секретами (js/features/secrets.js, secrets.sql) ═══ */
.d37-secret{border:0;background:none;padding:.15rem .3rem;font-size:.85rem;line-height:1;color:rgba(255,209,102,.38);cursor:pointer;vertical-align:middle;transition:color .2s,transform .2s}
.d37-secret:hover{color:var(--gold-t);transform:scale(1.3)}
.d37-secret.found{display:none}
body.high .d37-secret{animation:secretTwinkle 3.2s ease-in-out infinite}
@keyframes secretTwinkle{0%,100%{opacity:.6}50%{opacity:1;text-shadow:0 0 8px rgba(255,209,102,.8)}}
.gm-secret-spot,.xp-secret-spot{text-align:right;margin-top:.4rem}
.sh{display:flex;gap:.9rem;align-items:flex-start;margin:0 0 1rem;padding:.9rem 1.1rem;border-radius:16px;background:linear-gradient(135deg,rgba(255,209,102,.08),var(--card) 60%);border:1px solid rgba(255,209,102,.3)}
.sh[hidden]{display:none}
.sh-ic{font-size:1.7rem;flex:none}
.sh-body{display:flex;flex-direction:column;gap:.35rem;min-width:0;font-size:.8rem;line-height:1.45}
.sh-body>b{font-size:.92rem}
.sh-star{font-style:normal;color:var(--gold-t)}
.sh-dots{display:flex;gap:.3rem;align-items:center}
.sh-dots i{font-style:normal;color:rgba(var(--fg-rgb),.18);font-size:1rem}
.sh-dots i.on{color:var(--gold-t);text-shadow:0 0 8px rgba(255,209,102,.7)}
.sh-dots small{margin-left:.4rem;color:var(--muted)}
.sh-done{color:var(--ok-t);font-weight:700}
.sh-done a{color:var(--accent)}
.sh details summary{cursor:pointer;color:var(--muted);font-size:.74rem}
.sh ol{margin:.4rem 0 0 1.1rem;color:var(--muted);font-size:.74rem;display:flex;flex-direction:column;gap:.2rem}
.sh li.got{color:var(--ok-t);text-decoration:line-through}
/* Радужный ник — награда охоты (в чате .cu-nick, в профиле #profileNick) */
.nick-rainbow{background:linear-gradient(90deg,#ff2d55,#ff9f43,#ffd166,#22c55e,#29b6f6,#9147ff,#ff2d55);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent!important;-webkit-text-fill-color:transparent}
body.high .nick-rainbow{animation:nickRainbow 4s linear infinite}
@keyframes nickRainbow{to{background-position:200% center}}
/* Золотой ник — награда за 40 уровень (nick_fx в economy.sql; радуга сильнее золота) */
.nick-gold{background:linear-gradient(90deg,#a86b05,#f2b91e 30%,#fff3c4 50%,#f2b91e 70%,#a86b05);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent!important;-webkit-text-fill-color:transparent}
body.high .nick-gold{animation:nickRainbow 6s linear infinite}
#d37SecretToast{position:fixed;left:50%;bottom:5rem;transform:translate(-50%,20px);padding:.75rem 1.2rem;border-radius:14px;background:var(--panel);border:1px solid rgba(255,209,102,.45);color:var(--text-hi);font-size:.85rem;font-weight:700;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;z-index:9700;max-width:90vw;text-align:center}
#d37SecretToast.show{opacity:1;transform:translate(-50%,0)}

.gm-support div a{color:var(--gold-t);padding:0;background:none;font-weight:800}

/* ═══ «Задонатил, а VIP не пришёл?» (js/features/donation-claims.js) ═══ */
.dc-box{margin-top:.9rem;border-top:1px solid var(--border);padding-top:.7rem}
.dc-box summary{cursor:pointer;font-size:.78rem;font-weight:700;color:#ffd700}
.dc-hint{font-size:.72rem;color:var(--muted);line-height:1.55;margin:.5rem 0 .6rem}
.dc-form{display:flex;flex-direction:column;gap:.55rem}
.dc-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.7rem;color:var(--muted);font-weight:700;flex:1;min-width:130px}
.dc-form input{background:rgba(var(--fg-rgb),.06);border:1.5px solid var(--border);border-radius:8px;padding:.55rem .7rem;color:var(--text);font:600 .85rem 'Montserrat',sans-serif;outline:none;color-scheme:dark}
.dc-form input:focus{border-color:#ffd700}
.dc-row{display:flex;gap:.5rem;flex-wrap:wrap}
.dc-form button{align-self:flex-start}
.dc-result{font-size:.76rem;line-height:1.5;min-height:1rem}
.dc-result.ok{color:var(--ok-t)}.dc-result.wait{color:var(--gold-t)}.dc-result.err{color:var(--bad-t)}
.dc-admin-empty{font-size:.74rem;color:var(--muted);margin-top:.8rem}
.dc-claim{display:flex;gap:.7rem;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:.6rem .7rem;margin-top:.45rem;border-radius:10px;background:rgba(var(--fg-rgb),.03);border:1px solid var(--border)}
.dc-claim-body{display:flex;flex-direction:column;gap:.15rem;font-size:.74rem;min-width:0}
.dc-claim-body a{color:var(--text)}
.dc-claim-body small,.dc-claim-body span{color:var(--muted)}
.dc-warn{color:#ffb020!important}
.dc-claim-act{display:flex;gap:.4rem}
.dc-claim-act button{border:none;border-radius:8px;padding:.45rem .75rem;font:700 .72rem 'Montserrat',sans-serif;cursor:pointer;color:#fff}
.dc-ok{background:#16a34a}.dc-no{background:rgba(var(--fg-rgb),.08)}

/* ═══ Чат на телефоне: на весь экран между шапкой и нижним меню (было окошко 420px, видно ~5 сообщений) ═══ */
@media(max-width:768px){
  /* шапка сайта на телефоне закреплена поверх страницы (54px) — отступаем под неё */
  body[data-route="chat"] #chat{padding-top:62px!important;padding-bottom:0}
  body[data-route="chat"] #chat .sec-title,body[data-route="chat"] #chat .divider{display:none}
  body[data-route="chat"] #chat .chat-wrap{height:calc(100dvh - 62px - 58px - .7rem - env(safe-area-inset-bottom));min-height:380px}
  body[data-route="chat"] .chat-frame{min-height:0}
  body[data-route="chat"] #perfToggle{display:none!important}
}
/* Шапка чата на телефоне: название в одну строку, «Сайт/Twitch» не дублируем (есть вкладки) — иначе 🔍 обрезалась */
@media(max-width:480px){.chat-header{padding:.7rem .8rem;gap:.5rem}.chat-title{font-size:1rem;letter-spacing:1px;white-space:nowrap}#chatSubtitle{display:none}.chat-header .chat-auth-btn{flex:none}}
/* Кнопка ⛶ и полноэкранный чат (toggleChatFull в chat.js) */
.chat-full-btn{background:none;border:1px solid var(--border);border-radius:8px;width:30px;height:30px;color:var(--text);cursor:pointer;font-size:.85rem;display:inline-flex;align-items:center;justify-content:center}
body.chat-full{overflow:hidden}
/* у #chat свой слой (.wrap: position:relative; z-index:1) — без этого шапка сайта и подвал рисуются поверх чата */
body.chat-full #chat{z-index:9500!important}
body.chat-full #chat .chat-wrap{position:fixed;inset:0;height:100dvh!important;min-height:0;border-radius:0;z-index:9500;border:0;padding-bottom:env(safe-area-inset-bottom)}
body.chat-full #bottomTabbar,body.chat-full #perfToggle,body.chat-full #scrollTop,body.chat-full .chat-toast{display:none!important}
body.chat-full .chat-full-btn{border-color:var(--accent);color:var(--text-hi)}

/* «Профиль не найден / не загрузился» (renderProfilePage) — отдельная плашка, разметку профиля не трогаем */
.profile-not-found{text-align:center;color:var(--muted);padding:3rem 1rem;display:none}
.profile-not-found .pnf-ico{font-size:2.4rem;margin-bottom:.6rem}
.profile-not-found b{display:block;color:var(--text);font-size:1.1rem;margin-bottom:.3rem}
.profile-not-found p{margin:0 0 1rem;font-size:.85rem}

/* Телефон, открыта игра (body.game-on, games.js): нижнее меню прячем — оно закрывало низ поля, а промах
   мимо «ВВОД» в «5 букв» уводил из игры. Выйти — кнопка ← в шапке игры или меню ☰ */
@media(max-width:768px){
  body.game-on #bottomTabbar{display:none!important}
  body.game-on{padding-bottom:env(safe-area-inset-bottom)}
  body.game-on #games-page{padding-top:64px}
  body.game-on .gm-stage{padding-top:.6rem}
  /* «5 букв»: поле по высоте экрана — чтобы клавиатура целиком помещалась без прокрутки.
     --wd-chrome — всё, что выше и ниже поля (шапка сайта, шапка игры, режимы, подсказка, клавиатура);
     высота поля ≈ 1,2 × ширины */
  .wd{--wd-chrome:404px}
  .wd-grid{width:min(100%,330px,max(200px,calc((100dvh - var(--wd-chrome)) / 1.2)))}
}
/* Низкий экран (360×640 и т.п.): клавиатура и отступы плотнее */
@media(max-width:768px) and (max-height:700px){
  .wd{--wd-chrome:384px;gap:.45rem}
  .wd-kb{gap:5px}
  .wd-kb button{height:40px}
}

/* iPhone увеличивает страницу при фокусе на поле с шрифтом мельче 16px и не возвращает обратно
   (чат, вход, личные сообщения, «Города»…) — на телефоне все поля 16px */
@media(max-width:768px){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),textarea,select{font-size:16px!important}
}

/* Чат на сенсорном экране: кнопки сообщения (😊 📌 🔨 ✕) висели поверх строки с ником и значками (Lv, VIP).
   Ставим их в общий ряд справа — пузырь сообщения сам сужается, ничего не перекрыто */
@media(hover:none){
  .chat-msg .msg-react-btn,.chat-msg .msg-del-btn,.chat-msg .msg-ban-btn,.chat-msg .msg-pin-btn{position:static;flex:none;align-self:flex-start;margin-left:-.3rem}
  .chat-msg .msg-pin-btn{opacity:1;display:flex;order:1}
  .chat-msg .msg-react-btn{order:2}
  .chat-msg .msg-ban-btn{order:3}
  .chat-msg .msg-del-btn{order:4}
}

/* ═══ VIP на виду: кнопка в шапке, подсказка на странице доната, переход из /vip к нужным блокам профиля ═══ */
.nav-links a.nav-vip{color:var(--gold-t);border:1px solid rgba(255,209,102,.35);margin-left:.3rem}
.nav-links a.nav-vip:hover{color:#ffe08a;border-color:rgba(255,209,102,.7)}
.donate-vip{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:1.2rem;padding:1rem 1.2rem;border-radius:18px;
  background:linear-gradient(90deg,rgba(255,209,102,.1),rgba(255,149,0,.05));border:1px solid rgba(255,209,102,.3)}
.donate-vip .dv-ic{font-size:1.8rem;line-height:1}
.donate-vip .dv-body{flex:1;min-width:220px;display:flex;flex-direction:column;gap:.25rem}
.donate-vip .dv-body b{color:var(--text)}
.donate-vip .dv-body span{font-size:.8rem;color:var(--muted);line-height:1.55}
.donate-vip .dv-login{color:var(--gold-t);user-select:all}
.donate-vip .dv-act{display:flex;gap:.5rem;flex-wrap:wrap}
.dv-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:.55rem 1rem;border-radius:12px;border:0;cursor:pointer;
  font:800 .74rem 'Montserrat',sans-serif;text-decoration:none;color:#000;background:linear-gradient(135deg,#ffd700,#ff9500)}
.dv-btn.ghost{background:rgba(var(--fg-rgb),.05);border:1px solid var(--border);color:var(--text)}
.dl-copy{display:inline-flex;align-items:center;min-height:34px;padding:.35rem .75rem;border-radius:9px;border:1px solid rgba(255,209,102,.4);background:rgba(255,209,102,.08);
  color:var(--gold-t);font:700 .72rem 'Montserrat',sans-serif;cursor:pointer;text-decoration:none}
.dl-copy.dl-go{border-color:var(--ac-30);background:var(--ac-10);color:var(--text)}
#donateLoginPanel,#profileVipPromo{scroll-margin-top:80px;transition:box-shadow .4s}
.pf-focus{box-shadow:0 0 0 2px #ffd166,0 0 40px -6px rgba(255,209,102,.6)!important}

/* Вход/регистрация: переключатель — кнопкой (была ссылка 14px), в чате — вход в аккаунт рядом с «гостем» */
.auth-switch{display:block;margin-top:.2rem;padding:.75rem 1rem;border-radius:12px;border:1px solid rgba(145,71,255,.35);background:rgba(145,71,255,.08);
  color:var(--text)!important;text-decoration:none!important;font-size:.8rem;font-weight:700}
.auth-switch:hover{border-color:var(--tw)}
.chat-auth-alt{font-size:.72rem;color:var(--muted);text-align:center;line-height:1.4}
.chat-auth-alt button{background:none;border:0;padding:.35rem .2rem;color:var(--tw);font:700 .74rem 'Montserrat',sans-serif;cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* Меню ☰ на телефоне/планшете: пункты были ~20px в высоту и шириной с текст — промахивались. Теперь плитки 44px в две колонки */
@media(max-width:1180px){
  /* фон — сплошной: полупрозрачный под размытием шапки (backdrop-filter у #nav) просвечивал героем; колонки — поровну (длинные
     «Разместить рекламу», «Установить приложение» раньше раздвигали сетку за край экрана) — T-086 */
  .nav-links{gap:.35rem!important;padding:.8rem 1rem 1rem!important;max-height:calc(100dvh - 56px);overflow-y:auto;background:var(--bg)!important}
  .nav-links.open{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))}
  .nav-links a:not(.nav-donate),.nav-links .nav-more-panel a{display:flex!important;align-items:center;gap:.3rem;min-height:44px;padding:.55rem .85rem!important;
    border-radius:12px!important;background:rgba(var(--fg-rgb),.035)!important;color:var(--text);white-space:normal;overflow-wrap:anywhere;line-height:1.25}
  .nav-links a.active-route{background:var(--ac-18)!important}
  .nav-links a.nav-vip{margin-left:0;justify-content:center}
  .nav-links a.nav-donate{display:flex!important;align-items:center;justify-content:center;min-height:44px;align-self:stretch}
  /* Кнопки шапки: зона нажатия больше, вид прежний */
  .hamburger{position:relative}
  .hamburger::after{content:'';position:absolute;inset:-10px -8px}
  .global-auth-btn,.lang-btn,.site-search-btn{position:relative}
  .global-auth-btn::after,.lang-btn::after,.site-search-btn::after{content:'';position:absolute;inset:-8px 0}
}

/* Один ободок у аватара: если есть рамка за уровень (lv-frame-*), цвет роли/VIP — только мягкое свечение,
   без своего сплошного кольца (раньше было два кольца подряд: красное роли + голубое рамки) */
.profile-avatar-glow[class*="lv-frame-"]{box-shadow:0 0 34px -6px rgb(var(--ring-rgb)),0 18px 40px -14px rgba(0,0,0,.7)!important}
body.low .profile-avatar-glow[class*="lv-frame-"]{box-shadow:0 0 22px -4px rgba(var(--ring-rgb),.55)!important}

/* Поиск: «ничего не нашлось» — куда идти дальше */
.cmdp-empty-act{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:.9rem}
.cmdp-empty-act a{display:inline-flex;align-items:center;min-height:40px;padding:.45rem .9rem;border-radius:10px;border:1px solid var(--border);
  background:rgba(var(--fg-rgb),.04);color:var(--text);text-decoration:none;font-weight:700;font-size:.78rem}
.cmdp-empty-act a:hover{border-color:var(--accent)}

/* Текст на сайте снова можно выделять и копировать (было onselectstart="return false" на всё: ник, логин для
   доната, сообщения). Не выделяются только кнопки — чтобы частые нажатия не подсвечивали их текст */
button,.bt-item,.dc-btn,.hub-card{-webkit-user-select:none;user-select:none}

/* Шапка игры на телефоне: «📣 Вызов» — с подписью (главная кнопка «позвать друга»), кнопки — не меньше 40px */
@media(max-width:520px){
  .gm-stage-bar .gm-chal span{display:inline}
  .gm-back,.gm-mute{min-height:40px;min-width:40px}
}

/* Переключатель режима — теперь <button> (доступен с клавиатуры): сброс стилей кнопки.
   На телефоне в Shorts он закрывал кнопки ролика справа — там прячем, как в играх и чате */
#perfToggle{font:inherit;color:inherit;margin:0}
@media(max-width:768px){body[data-route="shorts"] #perfToggle{display:none!important}}

/* Подвал на телефоне: ссылки были 16px в высоту при шрифте 10,7px — а через них идут в архив, игры канала, VIP */
@media(max-width:768px){
  .footer-links{gap:.4rem .5rem}
  .footer-links a{display:inline-flex;align-items:center;min-height:36px;padding:.35rem .7rem;border-radius:10px;background:rgba(var(--fg-rgb),.03);font-size:.7rem}
  .footer-links a::after{display:none}
}

/* Аватар с рамкой за уровень — ровно одно кольцо: без цветного свечения роли/VIP вокруг картинки
   (мягкое красное свечение у админа читалось как второе тонкое кольцо). Роль видна по значку у ника */
.profile-avatar-glow[class*="lv-frame-"],body.low .profile-avatar-glow[class*="lv-frame-"]{box-shadow:0 18px 40px -14px rgba(0,0,0,.7)!important}

/* Аватар: ОДНО кольцо, по которому видно, кто ты. Рамка за уровень (lv-frame-5/15) перекрашивается в цвет роли
   (админ — красный, модератор — фиолетовый, помощник — зелёный) или VIP (золото/серебро/бронза) и светится этим цветом.
   У обычных игроков рамка своего цвета (голубая, золотая…). Рамки 30/50/100 — особые (радуга, пламя, бриллиант) — не трогаем */
.profile-avatar-glow.lv-frame-5,.profile-avatar-glow.lv-frame-15{outline-color:rgb(var(--ring-rgb))!important;filter:drop-shadow(0 0 9px rgba(var(--ring-rgb),.75))}
.profile-avatar-glow.lv-frame-15::after{border-color:rgba(var(--ring-rgb),.6)!important}
body.high .profile-avatar-glow.lv-frame-5,body.high .profile-avatar-glow.lv-frame-15{animation:ringPulse 2.4s ease-in-out infinite}
@keyframes ringPulse{0%,100%{filter:drop-shadow(0 0 6px rgba(var(--ring-rgb),.6))}50%{filter:drop-shadow(0 0 14px rgba(var(--ring-rgb),.95))}}
@media(prefers-reduced-motion:reduce){body:not(.high) .profile-avatar-glow.lv-frame-5,body:not(.high) .profile-avatar-glow.lv-frame-15{animation:none}}
.about-more{margin:-.4rem 0 1rem}
.about-more a{color:var(--accent);font-weight:700;font-size:.85rem}

/* «5 букв»: напоминание о новом слове дня (push, push-words.sql) */
.wd-remind{display:block;margin:.6rem auto 0;min-height:42px;padding:.5rem 1.1rem;border-radius:12px;border:1px solid rgba(255,209,102,.45);
  background:rgba(255,209,102,.08);color:var(--gold-t);font:800 .8rem 'Montserrat',sans-serif;cursor:pointer}
.wd-remind[hidden]{display:none}
.wd-remind:disabled{opacity:.8;cursor:default}

/* «Сегодня на сайте» — 6 карточек: ПК 3×2, планшет 2×3; телефон — слово дня во всю ширину, остальные в 2 столбца
   (высота блока как была при 4 карточках в столбик) */
.today-grid{grid-template-columns:1.2fr 1fr 1fr}
@media(max-width:768px){
  .today-grid{grid-template-columns:1fr 1fr}
  .today-card.hot-slot{grid-column:1/-1}
  .today-card:not(.hot-slot){padding:.6rem .7rem;gap:.5rem}
  .today-card:not(.hot-slot) .ti{font-size:1.3rem}
  .today-card:not(.hot-slot) b{font-size:.8rem}
}
@media(max-width:1100px) and (min-width:769px){.today-grid{grid-template-columns:1fr 1fr}}
@media(max-width:768px){.today-grid>.today-card:last-child{grid-column:1/-1}}

/* «🟢 Сейчас на сайте: N» над «Сегодня на сайте» (renderTodayOnline в games.js, счёт — presence чата) */
.today-online{display:inline-block;line-height:1.45;margin:0 0 .7rem;padding:.4rem .85rem;border-radius:999px;background:rgba(34,197,94,.1);
  border:1px solid rgba(34,197,94,.35);color:var(--text);text-decoration:none;font-size:.8rem;font-weight:600}
.today-online[hidden]{display:none}
.today-online i{display:inline-block;vertical-align:.08em;margin-right:.45rem;width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e}
.today-online b{color:#4ade80}

/* «🆕 Новое на сайте» (whatsNewHtml в games.js) */
.whatsnew{position:relative;display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin:0 0 .8rem;padding:.7rem 2.6rem .7rem 1rem;border-radius:16px;
  background:linear-gradient(90deg,rgba(56,189,248,.12),rgba(145,71,255,.1));border:1px solid rgba(56,189,248,.35)}
.whatsnew b{font-size:.85rem;white-space:nowrap}
.wn-links{display:flex;gap:.4rem;flex-wrap:wrap}
.wn-links a{display:inline-flex;align-items:center;min-height:34px;padding:.3rem .7rem;border-radius:999px;background:rgba(var(--fg-rgb),.06);border:1px solid var(--border);
  color:var(--text);text-decoration:none;font-size:.76rem;font-weight:700;white-space:nowrap}
.wn-links a:hover{border-color:rgba(56,189,248,.6)}
.wn-x{position:absolute;top:.45rem;right:.5rem;border:0;background:none;color:var(--muted);font-size:.95rem;cursor:pointer;padding:.35rem .45rem}
@media(max-width:768px){.wn-links{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;width:100%}.wn-links::-webkit-scrollbar{display:none}}

/* Текст только для поисковиков и экранных дикторов (например, пояснение в H1 главной) */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* «5 букв»: архив прошлых дней (renderArchive в words.js); режимы — в два ряда на узком экране */
.wd-modes{flex-wrap:wrap}
.wd-arch-note{text-align:center;color:var(--muted);font-size:.82rem;margin:0}
.wd-arch{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:.45rem}
.wd-arch button{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .3rem;border-radius:12px;border:1.5px solid var(--border);
  background:rgba(var(--fg-rgb),.04);color:var(--text);cursor:pointer;font-family:'Montserrat',sans-serif}
.wd-arch button b{font-size:.95rem}
.wd-arch button small{font-size:.66rem;color:var(--muted);white-space:nowrap}
.wd-arch button.win{border-color:rgba(34,197,94,.55);background:rgba(34,197,94,.1)}
.wd-arch button.lose{border-color:rgba(255,45,85,.45);background:rgba(255,45,85,.08)}
.wd-arch button.part{border-color:rgba(255,209,102,.5)}
.wd-arch button:hover{border-color:var(--accent)}

/* Вход через Google (виден, когда провайдер включён в Supabase) */
#gauthOauth[hidden]{display:none}
.auth-google{display:flex;align-items:center;justify-content:center;gap:.6rem;width:100%;min-height:46px;padding:.65rem 1rem;border-radius:12px;border:1px solid rgba(var(--fg-rgb),.18);
  background:#fff;color:#1f1f1f;font:700 .9rem 'Montserrat',sans-serif;cursor:pointer}
.auth-google:hover{background:#f1f1f1}
.auth-google .g-ic{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font:800 .9rem Arial,sans-serif;
  color:#fff;background:conic-gradient(#ea4335 0 25%,#fbbc05 0 50%,#34a853 0 75%,#4285f4 0)}
.auth-or{display:flex;align-items:center;gap:.6rem;margin:.9rem 0 .8rem;color:var(--muted);font-size:.72rem}
.auth-or::before,.auth-or::after{content:'';flex:1;height:1px;background:var(--border)}

/* Профиль: «Придумай ник» для ника по умолчанию user_… (renderProfilePage) */
.pf-nick-prompt{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;margin-bottom:1rem;padding:.8rem 1rem;border-radius:14px;
  background:rgba(145,71,255,.1);border:1px solid rgba(145,71,255,.4);font-size:.85rem}
.pf-nick-prompt[hidden]{display:none}

/* «Угадай игру по эмодзи» (js/games/emoji.js) */
.em{max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:.8rem}
.em-top{display:flex;justify-content:space-between;font-size:.8rem;font-weight:800;color:var(--muted)}
.em-score{color:var(--gold-t)}
.em-bar{height:6px;border-radius:99px;background:rgba(var(--fg-rgb),.08);overflow:hidden}
.em-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#22c55e,#ffd166,#ff2d55)}
.em-q{display:flex;align-items:center;justify-content:center;min-height:120px;padding:.6rem;border-radius:18px;background:rgba(var(--fg-rgb),.04);border:1px solid var(--border);
  font-size:clamp(2.4rem,11vw,3.6rem);letter-spacing:.12em;text-align:center;line-height:1.2}
.em-opts{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}
.em-opts button{min-height:56px;padding:.6rem .7rem;border-radius:14px;border:1.5px solid var(--border);background:rgba(var(--fg-rgb),.05);color:var(--text);
  font:800 .9rem 'Montserrat',sans-serif;cursor:pointer;touch-action:manipulation;transition:border-color .15s,background .15s}
.em-opts button:hover:not(:disabled){border-color:var(--accent)}
.em-opts button.ok{border-color:#22c55e;background:rgba(34,197,94,.2)}
.em-opts button.bad{border-color:#ff2d55;background:rgba(255,45,85,.2)}
.em-opts button:disabled{cursor:default}
.em-end[hidden]{display:none}
.em-res{display:flex;flex-direction:column;align-items:center;gap:.25rem;text-align:center}
.em-res b{font-size:1.8rem;color:var(--gold-t)}
.em-marks{font-size:1.2rem;letter-spacing:.1em}
@media(max-width:400px){.em-opts button{font-size:.82rem}}
.em-q.done{font-size:clamp(1.4rem,6vw,2rem);letter-spacing:0}

/* ── Мой персонаж и гардероб (js/core/avatar.js, js/games/wardrobe.js) ── */
.gm-me{display:flex;align-items:center;gap:.8rem;margin:0 0 1rem;padding:.6rem .9rem;border-radius:16px;background:linear-gradient(135deg,rgba(155,109,255,.16),rgba(255,111,181,.1));border:1px solid rgba(155,109,255,.35)}
.gm-me[hidden]{display:none}
.gm-me-char{flex:none;width:56px;height:56px;display:block}
.gm-me-char canvas{width:56px;height:56px;display:block}
.gm-me-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem;font-size:.8rem;color:var(--muted)}
.gm-me-body>b{color:var(--text);font-size:.92rem}
.gm-me-body .js-coins{color:#ffd166}
.gm-me-btn{flex:none;border:none;border-radius:11px;padding:.55rem .85rem;font:800 .76rem 'Montserrat',sans-serif;cursor:pointer;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43);text-decoration:none;white-space:nowrap}
.gm-me-btn.ghost{color:var(--text);background:rgba(255,255,255,.08);border:1px solid var(--border)}
@media(max-width:480px){.gm-me{flex-wrap:wrap}.gm-me-body{flex-basis:calc(100% - 70px)}.gm-me-btn{flex:1;text-align:center}}

.wr{display:flex;flex-direction:column;gap:.9rem}
.wr-top{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1rem;align-items:start}
.wr-stage{border-radius:18px;overflow:hidden;background:radial-gradient(circle at 50% 30%,#2a2140,#120e1c);border:1px solid var(--border)}
.wr-cv{display:block;width:100%;height:220px}
.wr-side{display:flex;flex-direction:column;gap:.6rem}
.wr-wallet{font-size:1.5rem;font-weight:900;color:#ffd166}
.wr-wallet span{font-size:.8rem;color:var(--muted);font-weight:700}
.wr-earn,.wr-acts,.wr-try-row{display:flex;flex-wrap:wrap;gap:.45rem}
.wr-btn{border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:11px;padding:.5rem .8rem;font:800 .75rem 'Montserrat',sans-serif;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.3rem}
.wr-btn:hover:not(:disabled){border-color:var(--accent)}
.wr-btn.gold{border:none;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43)}
.wr-btn:disabled{opacity:.5;cursor:default}
.wr-done{font-size:.75rem;color:var(--muted);align-self:center}
.wr-try{padding:.7rem .8rem;border-radius:14px;background:rgba(255,209,102,.08);border:1px dashed rgba(255,209,102,.5);display:flex;flex-direction:column;gap:.45rem;font-size:.8rem}
.wr-try[hidden]{display:none}
.wr-try-vip,.wr-try-need{font-size:.72rem;color:var(--muted)}
.wr-try-vip a{color:#ffd166}
.wr-tabs{display:flex;gap:.35rem;overflow-x:auto;scrollbar-width:none;padding-bottom:.1rem}
.wr-tabs::-webkit-scrollbar{display:none}
.wr-tabs button{flex:none;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:999px;padding:.45rem .8rem;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer;white-space:nowrap}
.wr-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}
.wr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:.5rem}
.wr-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.45rem .3rem .5rem;border-radius:14px;border:1.5px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);cursor:pointer;font-family:'Montserrat',sans-serif}
.wr-card canvas{width:66px;height:66px}
.wr-card b{font-size:.7rem;line-height:1.2;text-align:center}
.wr-card:hover{border-color:rgba(255,255,255,.3)}
.wr-card.on{border-color:#4ade80;background:rgba(74,222,128,.1)}
.wr-card.trying{border-color:#ffd166;background:rgba(255,209,102,.1)}
.wr-card.locked canvas{opacity:.85}
.wr-tag{font-size:.62rem;font-weight:800;color:var(--muted)}
.wr-tag.on{color:#4ade80}
.wr-tag.price{color:#ffd166}
@media(max-width:640px){.wr-top{grid-template-columns:1fr}.wr-tabs button span{display:none}.wr-tabs button{font-size:1rem;padding:.4rem .7rem}.wr-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}}

/* ── «Орда» (js/games/horde.js) ── */
.hd{display:flex;flex-direction:column;gap:.6rem}
.hd-wrap{position:relative;border-radius:16px;overflow:hidden;background:#16111f;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.hd-cv{display:block;width:100%;touch-action:none;cursor:crosshair}
.hd-hud{position:absolute;top:16px;right:8px;display:flex;gap:6px;z-index:2}
.hd-hud[hidden]{display:none}
.hd-btn{width:38px;height:38px;border-radius:12px;border:1px solid rgba(255,255,255,.18);background:rgba(10,8,16,.55);color:#fff;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
.hd-ov{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;gap:.7rem;padding:1.1rem 1rem;background:rgba(12,8,20,.86);overflow-y:auto;text-align:center;color:#fff}
.hd-ov>:first-child{margin-top:auto}
.hd-ov>:last-child{margin-bottom:auto}
.hd-ov[hidden]{display:none}
.hd-full{position:fixed!important;inset:0;z-index:10050;border-radius:0}
.hd-lock,.hd-lock body{overflow:hidden!important}
.hd-head{display:flex;align-items:center;gap:.8rem;text-align:left;max-width:520px}
.hd-me{flex:none;display:flex;flex-direction:column;align-items:center;gap:.1rem;text-decoration:none;color:#ffd166;font-size:.62rem;font-weight:800}
.hd-me img{width:72px;height:auto}
.hd-title{font-family:var(--font-display,inherit);font-size:1.45rem;font-weight:900;letter-spacing:.5px}
.hd-sub{font-size:.82rem;color:#d4cde4;line-height:1.45;max-width:460px}
.hd-label{font-size:.68rem;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#a99fc0}
.hd-big{font-size:3rem;line-height:1}
.hd-hint{font-size:.72rem;color:#b9b0cc;max-width:420px;line-height:1.45}
.hd-hint a{color:#ffd166}
.hd-best{font-size:.78rem;color:#d4cde4}
.hd-best b{color:#ffd166}
.hd-heroes{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem;width:min(100%,520px)}
.hd-hero{position:relative;display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.55rem .35rem;border-radius:14px;border:1.5px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);color:#fff;cursor:pointer;font-family:'Montserrat',sans-serif}
.hd-hero .ic{font-size:1.7rem;line-height:1.1}
.hd-hero b{font-size:.78rem}
.hd-hero small{font-size:.62rem;color:#bdb6cf}
.hd-hero.sel{border-color:#4ade80;background:rgba(74,222,128,.12)}
.hd-hero.locked .ic{filter:grayscale(1);opacity:.6}
.hd-price{font-size:.64rem;font-weight:800;color:#ffd166}
.hd-tag{font-size:.6rem;font-weight:800;color:#4ade80}
.hd-wallet{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.45rem;font-size:.9rem;font-weight:800;color:#ffd166}
.hd-mini{border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.07);color:#fff;border-radius:10px;padding:.45rem .75rem;font:800 .72rem 'Montserrat',sans-serif;cursor:pointer}
.hd-mini.gold{border:none;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43)}
.hd-lv{display:grid;gap:.5rem;width:min(100%,460px)}
.hd-card{display:flex;align-items:center;gap:.75rem;text-align:left;padding:.7rem .8rem;border-radius:14px;border:1.5px solid rgba(255,255,255,.15);background:rgba(255,255,255,.07);color:#fff;cursor:pointer;font-family:'Montserrat',sans-serif;touch-action:manipulation}
.hd-card:hover,.hd-card:focus-visible{border-color:var(--accent);background:rgba(255,255,255,.12)}
.hd-card .ic{font-size:1.8rem;flex:none;width:2.3rem;text-align:center}
.hd-card-b{flex:1;min-width:0}
.hd-card b{display:block;font-size:.9rem}
.hd-card small{display:block;color:#cfc8de;font-size:.74rem;line-height:1.35;margin-top:.1rem}
.hd-card .tag{font-size:.64rem;font-weight:800;color:#ffd166;white-space:nowrap}
.hd-card kbd{flex:none;font:800 .65rem 'Montserrat',sans-serif;color:#a99fc0;border:1px solid rgba(255,255,255,.2);border-radius:6px;padding:.1rem .35rem}
.hd-card.evo{border-color:#ffd166;background:linear-gradient(135deg,rgba(255,209,102,.18),rgba(255,159,67,.1))}
@media(pointer:coarse){.hd-card kbd{display:none}}
.hd-col{display:flex;flex-direction:column;gap:.5rem;width:min(100%,360px)}
.hd-col button{width:100%}
.hd-alt{border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.07);color:#fff;border-radius:12px;padding:.7rem 1rem;font:800 .82rem 'Montserrat',sans-serif;cursor:pointer}
.hd-alt:disabled,.hd-ov button:disabled{opacity:.45;cursor:default}
.hd-stats{display:flex;gap:1rem;font-size:.85rem;color:#d4cde4}
.hd-stats b{color:#fff;font-size:1.05rem}
.hd-score{font-size:1.5rem;font-weight:900;color:#ffd166}
.hd-coins{font-size:.9rem;font-weight:800;color:#ffd166}
.hd-vip{font-size:.65rem;padding:.1rem .4rem;border-radius:6px;background:rgba(255,209,102,.2);margin-left:.3rem}
.hd-x2{border:none;border-radius:12px;padding:.65rem 1rem;font:800 .8rem 'Montserrat',sans-serif;cursor:pointer;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43)}
.hd-build{display:flex;flex-wrap:wrap;justify-content:center;gap:.3rem;max-width:420px}
.hd-build span{position:relative;font-size:1.25rem;padding:.2rem .3rem;border-radius:8px;background:rgba(255,255,255,.07)}
.hd-build i{position:absolute;right:-2px;bottom:-4px;font-style:normal;font-size:.55rem;font-weight:900;color:#ffd166}
.hd-shop{display:grid;gap:.45rem;width:min(100%,440px)}
.hd-up{display:flex;align-items:center;gap:.6rem;text-align:left;padding:.55rem .7rem;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1)}
.hd-up .ic{font-size:1.5rem;flex:none}
.hd-up-b{flex:1;min-width:0;display:flex;flex-direction:column}
.hd-up-b b{font-size:.84rem}
.hd-up-b small{font-size:.68rem;color:#bdb6cf}
.hd-pips{font-size:.7rem;letter-spacing:2px;color:#ffd166}
.hd-buy{flex:none;border:none;border-radius:10px;padding:.5rem .7rem;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43)}
.hd-max{font-size:.72rem;font-weight:900;color:#4ade80}
.hd-note{text-align:center}
@media(max-width:420px){.hd-heroes{grid-template-columns:repeat(2,1fr)}.hd-title{font-size:1.25rem}.hd-head{flex-direction:column;text-align:center}}

/* «Орда» вдвоём: ссылка в лобби, плашка «ты упал» */
.hd-link{width:min(100%,440px);display:flex;gap:.4rem}
.hd-link input{flex:1;min-width:0;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#fff;padding:.55rem .7rem;font:600 .75rem 'Montserrat',sans-serif}
.hd-link button{flex:none;border:none;border-radius:10px;padding:.5rem .8rem;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer;background:var(--accent);color:#fff}
.hd-dead{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.6rem .9rem;border-radius:14px;background:rgba(12,8,20,.85);border:1px solid rgba(255,77,109,.5);color:#fff;font-size:.75rem;text-align:center;width:max-content;max-width:calc(100% - 24px)}
.hd-dead[hidden]{display:none}
.hd-dead b{font-size:.9rem}
.hd-dead-btns{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center}
.hd-dead-btns button{border:none;border-radius:10px;padding:.45rem .7rem;font:800 .72rem 'Montserrat',sans-serif;cursor:pointer;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43)}
.hd-dead-btns button:disabled{opacity:.45;cursor:default}

/* ── «Башни» (js/games/td.js) ── */
.td{display:flex;flex-direction:column;gap:.55rem}
.td-bar{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.82rem;font-weight:800;min-height:2.2rem}
.td-st{padding:.3rem .55rem;border-radius:10px;background:rgba(255,255,255,.06);white-space:nowrap}
.td-st.gold b{color:#ffd166}
.td-st.mate{color:#7dd3fc;font-size:.74rem}
.td-sp{flex:1}
.td-b{border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:10px;padding:.45rem .7rem;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer;white-space:nowrap}
.td-b.go{background:var(--accent);border-color:var(--accent);color:#fff}
.td-b.gold{border:none;color:#1b1626;background:linear-gradient(135deg,#ffd166,#ff9f43)}
.td-b:disabled{opacity:.45;cursor:default}
.td-wrap{position:relative;display:flex;justify-content:center;min-height:380px}
.td-cv{display:block;border-radius:12px;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.td-ov{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;gap:.65rem;padding:1rem;border-radius:12px;background:rgba(12,10,18,.86);overflow-y:auto;text-align:center;color:#fff}
.td-ov>:first-child{margin-top:auto}
.td-ov>:last-child{margin-bottom:auto}
.td-ov[hidden]{display:none}
.td-title{font-family:var(--font-display,inherit);font-size:1.4rem;font-weight:900}
.td-sub{font-size:.82rem;color:#d4cde4;line-height:1.45;max-width:440px}
.td-hint{font-size:.72rem;color:#b9b0cc;max-width:420px;line-height:1.45}
.td-maps{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center}
.td-map{display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:84px;padding:.5rem .6rem;border-radius:12px;border:1.5px solid rgba(255,255,255,.15);background:rgba(255,255,255,.05);color:#fff;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer}
.td-map span{font-size:1.4rem}
.td-map.sel{border-color:#4ade80;background:rgba(74,222,128,.12)}
.td-col{display:flex;flex-direction:column;gap:.5rem;width:min(100%,340px)}
.td-col button{width:100%}
.td-alt{border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.07);color:#fff;border-radius:12px;padding:.7rem 1rem;font:800 .82rem 'Montserrat',sans-serif;cursor:pointer}
.td-alt:disabled,.td-ov button:disabled{opacity:.45;cursor:default}
.td-mini{border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.07);color:#fff;border-radius:10px;padding:.45rem .75rem;font:800 .72rem 'Montserrat',sans-serif;cursor:pointer}
.td-stats{display:flex;gap:1rem;font-size:.85rem;color:#d4cde4}
.td-stats b{color:#fff;font-size:1.05rem}
.td-score{font-size:1.45rem;font-weight:900;color:#ffd166}
.td-coins{font-size:.88rem;font-weight:800;color:#ffd166}
.td-vip{font-size:.65rem;padding:.1rem .4rem;border-radius:6px;background:rgba(255,209,102,.2);margin-left:.3rem}
.td-link{width:min(100%,440px);display:flex;gap:.4rem}
.td-link input{flex:1;min-width:0;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#fff;padding:.55rem .7rem;font:600 .75rem 'Montserrat',sans-serif}
.td-link button{flex:none;border:none;border-radius:10px;padding:.5rem .8rem;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer;background:var(--accent);color:#fff}
.td-panel{position:relative;min-height:3.2rem;padding:.55rem .6rem;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid var(--border)}
.td-panel:empty{display:none}
.td-pt{font-size:.72rem;font-weight:800;color:var(--muted);margin-bottom:.35rem}
.td-builds{display:grid;grid-template-columns:repeat(5,1fr);gap:.35rem;padding-right:1.6rem}
.td-bt{display:flex;flex-direction:column;align-items:center;gap:.05rem;padding:.4rem .2rem;border-radius:12px;border:1.5px solid var(--border);background:rgba(255,255,255,.05);color:var(--text);cursor:pointer;font-family:'Montserrat',sans-serif}
.td-bt:hover:not(:disabled){border-color:var(--accent)}
.td-bt .ic{font-size:1.35rem;line-height:1.1}
.td-bt b{font-size:.64rem}
.td-bt i{font-style:normal;font-size:.66rem;font-weight:800;color:#ffd166}
.td-bt small{display:none}
.td-bt:disabled{opacity:.4;cursor:default}
@media(min-width:700px){.td-bt small{display:block;font-size:.58rem;color:var(--muted);text-align:center;line-height:1.25}}
.td-ti{display:flex;align-items:center;gap:.6rem;padding-right:1.6rem}
.td-ti .ic{font-size:1.6rem}
.td-ti b{display:block;font-size:.85rem}
.td-ti small{display:block;font-size:.7rem;color:var(--muted)}
.td-acts,.td-sends{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.45rem}
.td-max{font-size:.74rem;font-weight:800;color:#4ade80;align-self:center}
.td-x{position:absolute;top:.4rem;right:.4rem;width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);cursor:pointer}

/* ── Стол на 2–4 игроков (js/games/table.js) ── */
.tb-lobby{display:flex;flex-direction:column;align-items:center;gap:.7rem;max-width:520px;margin:0 auto;text-align:center}
.tb-title{font-family:var(--font-display);font-size:1.35rem;font-weight:900}
.tb-note{font-size:.76rem;color:var(--muted);line-height:1.45}
.tb-seats{list-style:none;padding:0;margin:0;display:grid;gap:.4rem;width:100%}
.tb-seat{display:flex;align-items:center;gap:.45rem;padding:.55rem .8rem;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid var(--border);text-align:left;font-size:.84rem}
.tb-seat.me{border-color:var(--accent)}
.tb-seat.empty{color:var(--muted);border-style:dashed}
.tb-seat small{color:var(--muted)}
.tb-add,.tb-x{margin-left:auto;border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:8px;padding:.25rem .55rem;font:800 .72rem 'Montserrat',sans-serif;cursor:pointer}

/* ── «Одна!» (js/games/uno.js) ── */
.un-menu{display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center;padding:.4rem 0}
.un-logo{display:flex;gap:.25rem;padding-top:.6rem}
.un-logo .uc{cursor:default}
.un-logo .uc:nth-child(1){transform:rotate(-10deg) translateY(6px)}
.un-logo .uc:nth-child(3){transform:rotate(10deg) translateY(6px)}
.un-title{font-family:var(--font-display);font-size:2.1rem;font-weight:900;letter-spacing:1px}
.un-sub{font-size:.82rem;color:var(--muted);max-width:460px;line-height:1.45}
.un-bots{display:flex;align-items:center;gap:.35rem;font-size:.82rem;font-weight:800}
.un-n{width:38px;height:38px;border-radius:10px;border:1.5px solid var(--border);background:rgba(255,255,255,.05);color:var(--text);font:900 .9rem 'Montserrat',sans-serif;cursor:pointer}
.un-n.sel{border-color:var(--accent);background:var(--ac-18)}
.un-rules{max-width:480px;text-align:left;font-size:.78rem;color:var(--muted);line-height:1.5}
.un-rules summary{cursor:pointer;font-weight:800;color:var(--text);text-align:center}

.uc{--uc:#555;position:relative;flex:none;display:flex;align-items:center;justify-content:center;width:56px;height:84px;border-radius:10px;border:3px solid #fff;background:var(--uc);color:#fff;font:900 1rem 'Montserrat',sans-serif;box-shadow:0 3px 8px rgba(0,0,0,.4);cursor:pointer;padding:0;overflow:hidden;transition:transform .15s,filter .15s;touch-action:manipulation}
.uc::before{content:'';position:absolute;inset:16% 6%;border-radius:50%;background:rgba(255,255,255,.95);transform:rotate(-28deg)}
.uc-c{position:relative;z-index:1;font-size:1.3rem;color:var(--uc);letter-spacing:-1px}
.uc-t,.uc-b{position:absolute;z-index:1;font-size:.6rem;line-height:1}
.uc-t{top:4px;left:5px}
.uc-b{bottom:4px;right:5px;transform:rotate(180deg)}
.c-r{--uc:#e5383b}.c-y{--uc:#f2b705}.c-g{--uc:#2a9d4b}.c-b{--uc:#2b6fd6}
.uc.c-w{background:#1d1d24}
.uc.c-w::before{background:conic-gradient(#e5383b 0 25%,#f2b705 0 50%,#2a9d4b 0 75%,#2b6fd6 0)}
.uc.c-w .uc-c{color:#fff;text-shadow:0 1px 3px #000}
.uc.c-back{background:repeating-linear-gradient(45deg,#2a1d3d 0 6px,#231833 6px 12px)}
.uc.c-back::before{background:#e5383b;inset:22% 10%}
.uc.c-back .uc-c{color:#fff;font-size:1.1rem}
.uc.c-back small{position:absolute;z-index:1;bottom:3px;left:0;right:0;text-align:center;font-size:.6rem}
.uc.big{width:72px;height:108px;border-width:4px}
.uc.big .uc-c{font-size:1.7rem}
.uc:disabled{cursor:default}
.uc.dim{filter:brightness(.5) saturate(.6)}
.uc.ok{transform:translateY(-10px);box-shadow:0 0 0 2px #fff,0 6px 18px rgba(255,255,255,.35)}
.un{position:relative;display:flex;flex-direction:column;gap:.55rem}
.un-opps{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}
.un-opp{position:relative;display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:88px;padding:.45rem .6rem;border-radius:14px;background:rgba(255,255,255,.05);border:1.5px solid transparent;font-size:.72rem}
.un-opp.turn{border-color:var(--accent);box-shadow:0 0 14px var(--ac-30)}
.un-av{width:42px;height:42px;font-size:1.9rem;line-height:42px;text-align:center;object-fit:contain}
.un-cnt{display:flex;align-items:center;gap:.25rem;color:var(--muted);font-size:.74rem;font-weight:800}
.un-mini{display:inline-block;width:12px;height:17px;border-radius:3px;border:1.5px solid #fff;background:repeating-linear-gradient(45deg,#2a1d3d 0 3px,#3a2754 3px 6px);box-shadow:3px 0 0 -1px #2a1d3d,3px 0 0 0 rgba(255,255,255,.6)}
.uc .un-logo-t{font-size:.72rem;color:#fff;letter-spacing:0;transform:rotate(-28deg)}
.un-said{position:absolute;top:-6px;right:-6px;font-style:normal;font-weight:900;font-size:.62rem;padding:.15rem .35rem;border-radius:8px;background:#ff2d55;color:#fff}
.un-table{display:flex;align-items:center;justify-content:center;gap:1.1rem;margin:.4rem 0}
.un-deck{width:72px;height:108px}
.un-deck:not(:disabled):hover{transform:translateY(-4px)}
.un-info{display:flex;flex-direction:column;align-items:center;gap:.35rem}
.un-dot{display:inline-block;width:24px;height:24px;border-radius:50%;background:var(--uc);border:2px solid #fff}
.un-dot.big{width:58px;height:58px;cursor:pointer;border-width:3px}
.un-dot.big:hover{transform:scale(1.08)}
.un-dir{font-size:1.5rem;color:var(--muted)}
.un-log{text-align:center;font-size:.78rem;color:var(--muted);min-height:1.2em}
.un-status{text-align:center;font-weight:800;font-size:.92rem;min-height:1.3em}
.un-acts{display:flex;justify-content:center;align-items:center;gap:.5rem;flex-wrap:wrap;min-height:2.4rem}
.un-btn{border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:12px;padding:.55rem .9rem;font:800 .8rem 'Montserrat',sans-serif;cursor:pointer}
.un-btn.uno{border:none;color:#fff;background:linear-gradient(135deg,#ff2d55,#ff9f43)}
.un-btn.uno.urgent{animation:unPulse .6s ease-in-out infinite alternate}
.un-btn.catch{border:none;color:#1b1626;background:#facc15}
@keyframes unPulse{to{transform:scale(1.08)}}
.un-hand{display:flex;justify-content:safe center;overflow-x:auto;padding:1rem .5rem .6rem;scrollbar-width:thin}
.un-hand .uc+.uc{margin-left:-14px}
.un-hand.many .uc+.uc{margin-left:-24px}
.un-wild{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.9rem;border-radius:16px;background:rgba(10,8,16,.82)}
.un-wild[hidden]{display:none}
.un-wt{font-weight:900;font-size:1.1rem}
.un-wc{display:flex;gap:.8rem}
/* выбор карты (uno.js, durak.js): нажал — карта поднялась; ещё раз / «Сходить» — ход */
.un-hand{padding-top:1.9rem}
.uc.ok,.dk.ok{position:relative;z-index:1}
.uc.sel,.dk.sel{transform:translateY(-24px)!important;z-index:3;box-shadow:0 0 0 3px #22c55e,0 10px 24px rgba(34,197,94,.45)!important;filter:none!important}
.uc.no,.dk.no{animation:unNo .26s ease-in-out}
@keyframes unNo{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.un-hand.picking .uc.ok:not(.sel),.un-hand.picking .dk.ok:not(.sel){transform:translateY(-6px)}
.un-deck.gk-armed{box-shadow:0 0 0 3px #f59e0b,0 6px 18px rgba(245,158,11,.4)}
.un-deck.gk-armed .uc-c{font-size:.95rem}
.un-wild .un-btn{margin-top:.3rem;background:#24202f}
.un-status{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.3rem}
@media(max-width:480px){.uc{width:50px;height:76px}.uc.big,.un-deck{width:64px;height:96px}.un-hand .uc+.uc{margin-left:-18px}.un-hand.many .uc+.uc{margin-left:-28px}}

/* ── «Дурак» (js/games/durak.js) — разметка стола общая с «Одна!» (.un-*) ── */
.dk-menu{display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center;padding:.4rem 0}
.dk-logo{display:flex;gap:.2rem;padding-top:.6rem}
.dk-logo .dk{cursor:default}
.dk-logo .dk:nth-child(1){transform:rotate(-10deg) translateY(6px)}
.dk-logo .dk:nth-child(3){transform:rotate(10deg) translateY(6px)}
.dk{position:relative;flex:none;width:56px;height:82px;border-radius:9px;border:1px solid #cfd2da;background:linear-gradient(180deg,#fff,#eef0f5);color:#1b1d26;font-family:Georgia,'Times New Roman',serif;box-shadow:0 3px 8px rgba(0,0,0,.35);cursor:pointer;padding:0;transition:transform .15s,filter .15s;touch-action:manipulation}
.dk.red{color:#d42a3b}
.dk-t{position:absolute;top:4px;left:5px;display:flex;flex-direction:column;align-items:center;font-weight:700;font-size:.9rem;line-height:1}
.dk-t i{font-style:normal;font-size:.8rem}
.dk-m{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.9rem}
.dk.sm{width:48px;height:70px}
.dk.sm .dk-m{font-size:1.5rem}
.dk:disabled{cursor:default}
.dk.dim{filter:brightness(.6)}
.dk.ok{transform:translateY(-10px);box-shadow:0 0 0 2px #ffd166,0 6px 16px rgba(255,209,102,.35)}
.dk-mid{display:flex;align-items:center;gap:.9rem;margin:.4rem 0;min-height:112px}
.dk-deck{position:relative;flex:none;width:96px;height:112px}
.dk-trump{position:absolute;left:34px;top:10px;transform:rotate(90deg)}
.dk-back{position:absolute;left:0;top:10px;width:50px;height:72px;border-radius:9px;border:2px solid #fff;background:repeating-linear-gradient(45deg,#7f1d1d 0 5px,#991b1b 5px 10px);display:flex;align-items:center;justify-content:center;box-shadow:0 3px 8px rgba(0,0,0,.4)}
.dk-back b{font:900 .85rem 'Montserrat',sans-serif;color:#fff;background:rgba(0,0,0,.45);padding:.1rem .35rem;border-radius:6px}
.dk-tr{position:absolute;left:0;right:0;bottom:-4px;font-size:.7rem;font-weight:800;color:var(--muted);text-align:center}
.dk-tr b{font-size:1.1rem;color:var(--text)}
.dk-tr b.redt{color:#ef4444}
.dk-table{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:.6rem .9rem;justify-content:center;align-items:flex-start}
.dk-pair{position:relative;width:62px;height:84px}
.dk-on{position:absolute;left:14px;top:12px}
.dk-empty{color:var(--muted);font-size:.8rem}
/* отбиваясь: небитые карты стола можно нажать; подходящие для выбранной — пунктир, выбранная — зелёная */
.dk.tfree{box-shadow:0 0 0 2px rgba(255,255,255,.35),0 3px 8px rgba(0,0,0,.35)}
.dk.tgt{box-shadow:0 0 0 3px #facc15,0 4px 14px rgba(250,204,21,.45);transform:translateY(-3px)}
.dk.tsel{box-shadow:0 0 0 3px #22c55e,0 4px 16px rgba(34,197,94,.5);transform:translateY(-3px)}
.dk-role{position:absolute;top:-6px;left:-6px;font-style:normal;font-size:.95rem}
.un-opp.out{opacity:.55}
.dk-hand .dk+.dk{margin-left:-12px}
.dk-hand.many .dk+.dk{margin-left:-22px}
@media(max-width:480px){.dk{width:50px;height:74px}.dk.sm{width:42px;height:62px}.dk-pair{width:54px;height:74px}.dk-on{left:11px;top:10px}.dk-deck{width:76px}}

/* ── «Бильярд» (js/games/pool.js) ── */
.pl-menu{display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center;padding:.4rem 0}
.pl-logo{font-size:3.4rem;line-height:1}
.pl-levels{display:flex;gap:.35rem}
.un-n.wide{width:auto;padding:0 .8rem}
.pl{display:flex;flex-direction:column;gap:.5rem}
.pl-top{display:flex;align-items:stretch;gap:.5rem}
.pl-pl{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem;padding:.45rem .6rem;border-radius:12px;background:rgba(255,255,255,.05);border:1.5px solid transparent;font-size:.78rem}
.pl-pl.right{text-align:right;align-items:flex-end}
.pl-pl.turn{border-color:var(--accent);box-shadow:0 0 12px var(--ac-30)}
.pl-g{display:flex;flex-wrap:wrap;gap:.15rem;align-items:center;color:var(--muted);font-size:.7rem}
.pl-g i{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--bc);color:#fff;font:800 .55rem 'Montserrat',sans-serif;font-style:normal;text-shadow:0 0 2px #000}
.pl-g i.st{background:linear-gradient(180deg,#f8f8f2 0 28%,var(--bc) 28% 72%,#f8f8f2 72%)}
.pl-vs{align-self:center;font-size:1.3rem}
.pl-wrap{display:flex;justify-content:center;align-items:flex-start;gap:.5rem}
.pl-cv{display:block;border-radius:14px;touch-action:none;user-select:none;-webkit-user-select:none;cursor:crosshair}
.pl-power{position:relative;flex:none;width:34px;align-self:stretch;min-height:200px;border-radius:12px;background:rgba(255,255,255,.07);border:1px solid var(--border);overflow:hidden;touch-action:none;cursor:ns-resize}
.pl-power-in{position:absolute;left:0;right:0;top:0;height:0;background:linear-gradient(180deg,#22c55e,#facc15,#ef4444)}
.pl-power span{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-size:.55rem;font-weight:800;color:var(--muted);writing-mode:vertical-rl;transform:rotate(180deg);margin:0 auto}
.pl-msg{font-weight:600;font-size:.8rem;line-height:1.45}

/* Телефон, открыта игра: поле — почти во всю ширину (у страницы и у рамки игры — по узкому отступу) */
@media(max-width:520px){
  body.game-on #games-page{padding-left:.45rem;padding-right:.45rem}
  body.game-on .gm-stage{padding-left:.45rem;padding-right:.45rem;border-radius:14px}
}

/* ── «Лудо» (js/games/ludo.js) ── */
.ld{display:flex;flex-direction:column;gap:.5rem}
.ld-players{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center}
.ld-pl{display:flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border-radius:10px;background:rgba(255,255,255,.05);border:1.5px solid transparent;font-size:.74rem}
.ld-pl.turn{border-color:var(--pc);box-shadow:0 0 10px var(--pc)}
.ld-pl small{color:var(--muted)}
.ld-dot{width:12px;height:12px;border-radius:50%;background:var(--pc);border:2px solid #fff}
.ld-wrap{display:flex;justify-content:center}
.ld-cv{display:block;border-radius:12px;box-shadow:0 4px 18px rgba(0,0,0,.4);touch-action:manipulation;cursor:pointer}
.ld-ctl{display:flex;align-items:center;justify-content:center;gap:.8rem}
.ld-die{width:64px;height:64px;border-radius:16px;border:2px solid var(--border);background:#fff;color:#111;font-size:2.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ld-die.go{border-color:var(--accent);box-shadow:0 0 0 3px var(--ac-30);animation:unPulse .7s ease-in-out infinite alternate}
.ld-die:disabled{opacity:.6;cursor:default;animation:none}

/* ── «Нарды» (js/games/nardy.js) ── */
.nd{display:flex;flex-direction:column;gap:.45rem}
.nd-top{display:flex;justify-content:center}
.nd-pl{display:flex;align-items:center;gap:.4rem;padding:.35rem .7rem;border-radius:10px;background:rgba(255,255,255,.05);border:1.5px solid transparent;font-size:.76rem}
.nd-pl.turn{border-color:var(--accent);box-shadow:0 0 10px var(--ac-30)}
.nd-pl small{color:var(--muted)}
.nd-chip{width:14px;height:14px;border-radius:50%;border:2px solid #9ca3af}
.nd-chip.w{background:#f5f5f4}.nd-chip.b{background:#1f2937}
.nd-cv{display:block;border-radius:12px;box-shadow:0 4px 18px rgba(0,0,0,.4);touch-action:manipulation;cursor:pointer}

/* Разделы витрины игр (games.js: GAME_CATS / GAME_TAGS) */
.gm-cats{display:flex;gap:.4rem;overflow-x:auto;scrollbar-width:none;margin:0 0 .9rem;padding-bottom:.15rem}
.gm-cats::-webkit-scrollbar{display:none}
.gm-cat{flex:none;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);border-radius:999px;padding:.5rem .85rem;font:800 .76rem 'Montserrat',sans-serif;cursor:pointer;white-space:nowrap}
.gm-cat i{font-style:normal;color:var(--muted);font-weight:700;margin-left:.15rem}
.gm-cat.active{background:var(--accent);border-color:var(--accent);color:#fff}
.gm-cat.active i{color:rgba(255,255,255,.75)}

/* ── «Арена» (js/games/arena.js) ── */
.ar{display:flex;flex-direction:column;gap:.45rem}
.ar-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.8rem;color:#ffd166;letter-spacing:1px}
.ar-top b{letter-spacing:0;color:var(--text)}
.ar-top .ar-g{color:#4ade80}.ar-top .ar-r{color:#ff4d6d}
.ar-vs{font-size:.78rem;color:var(--muted)!important}
.ar-wrap{position:relative;display:flex;justify-content:center}
.ar-cv{display:block;border-radius:14px;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 4px 18px rgba(0,0,0,.4)}
.ar-sup{--sp:0%;position:absolute;right:10px;bottom:10px;width:58px;height:58px;border-radius:50%;border:3px solid rgba(255,255,255,.4);font-size:1.6rem;color:#fff;cursor:pointer;background:conic-gradient(#facc15 var(--sp),rgba(0,0,0,.45) 0);touch-action:none}
.ar-sup.ready{border-color:#fff;box-shadow:0 0 18px #facc15;animation:unPulse .5s ease-in-out infinite alternate}
.ar-ov{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7rem;border-radius:14px;background:rgba(12,8,20,.82);text-align:center;color:#fff}
.ar-ov[hidden]{display:none}

/* Персонаж из гардероба: в профиле рядом с аватаркой и в рекордах */
.pf-char{position:absolute;right:-40px;bottom:-6px;width:50px;display:block;filter:drop-shadow(0 3px 6px rgba(0,0,0,.45));transition:transform .2s}
.pf-char[hidden]{display:none}
.pf-char img{width:100%;height:auto;display:block}
.pf-char:hover{transform:translateY(-3px) scale(1.06)}
.gm-top-char{width:22px;height:auto;vertical-align:middle;margin-right:.25rem}

/* ── «Шахматы» (js/games/chess.js) ── */
.ch{position:relative;display:flex;flex-direction:column;gap:.45rem;align-items:center}
.ch-pl{display:flex;align-items:center;gap:.5rem;width:min(100%,480px);font-size:.8rem}
.ch-lost{font-size:1rem;color:var(--muted);letter-spacing:-2px}
.ch-board{display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);width:min(100%,480px);aspect-ratio:1;border-radius:8px;overflow:hidden;box-shadow:0 4px 18px rgba(0,0,0,.45);border:3px solid #5b3417}
.ch-sq{position:relative;min-width:0;min-height:0;overflow:hidden;border:none;padding:0;margin:0;cursor:pointer;display:flex;align-items:center;justify-content:center;touch-action:manipulation}
.ch-sq.light{background:#f0d9b5}.ch-sq.dark{background:#b58863}
.ch-sq.last.light{background:#f6eb72}.ch-sq.last.dark{background:#dcc34b}
.ch-sq.sel{box-shadow:inset 0 0 0 3px #22c55e}
.ch-sq.check{background:radial-gradient(circle,#ff4d4d 20%,transparent 75%),#b58863}
.ch-sq.dot::after{content:'';width:26%;height:26%;border-radius:50%;background:rgba(0,0,0,.25)}
.ch-sq.cap::after{content:'';position:absolute;inset:4%;border-radius:50%;border:4px solid rgba(0,0,0,.28)}
.ch-p{font-size:clamp(1.6rem,8.5vw,2.9rem);line-height:1;user-select:none;font-family:'Segoe UI Symbol','DejaVu Sans','Noto Sans Symbols2',serif}
.ch-p.w{color:#fff;text-shadow:0 0 2px #000,0 0 1px #000,1px 1px 0 #333}
.ch-p.b{color:#1b1b1b;text-shadow:0 0 1px #fff}
.ch-f,.ch-r{position:absolute;font-style:normal;font-size:.55rem;font-weight:800;opacity:.6;color:#3b2a1a}
.ch-f{right:3px;bottom:1px}.ch-r{left:3px;top:1px}
.ch-moves{width:min(100%,480px);max-height:4.5em;overflow-y:auto;font-size:.74rem;color:var(--muted);line-height:1.6}
.ch-promo{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;background:rgba(10,8,16,.8);border-radius:12px;font-weight:800}
.ch-promo button{width:64px;height:64px;margin:0 .2rem;border-radius:12px;border:2px solid #fff;background:#f0d9b5;cursor:pointer}

.ch-svg{width:86%;height:86%;pointer-events:none;stroke-linejoin:round;stroke-linecap:round}
.ch-svg.w{fill:#fbfbfb;stroke:#1d1d1d;stroke-width:1.6}
.ch-svg.b{fill:#2a2a2e;stroke:#0b0b0d;stroke-width:1.6}
.ch-svg .ch-dt{fill:none;stroke-width:1.6}
.ch-svg.w .ch-dt{stroke:#1d1d1d}
.ch-svg.b .ch-dt{stroke:#e8e8e8}
.ch-svg.mini{width:16px;height:16px;margin-right:-3px}
.ch-promo button .ch-svg{width:80%;height:80%}
.ch-promo .ch-promo-back{width:auto;height:auto;min-height:42px;padding:.5rem 1rem;background:#24202f;color:var(--text);border:1px solid var(--border)}
/* онлайн: ход на доске ждёт «✅ Сходить» */
.ch-sq.pend.light{background:#a7e3b8}.ch-sq.pend.dark{background:#6fbf88}
.ch-sq.pend{box-shadow:inset 0 0 0 3px #16a34a}
.ch .un-status{text-align:center}

/* ── «Блоки» (js/games/blocks.js) ── */
.bl{display:flex;flex-direction:column;align-items:center}
.bl .ct-top{width:min(100%,440px);margin-bottom:.4rem}
.bl-combo{color:#facc15;font-weight:800}
.bl-wrap{position:relative;width:min(100%,440px)}
.bl-cv{display:block;width:100%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:pointer}
.bl-over{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;padding:1rem;text-align:center;background:rgba(10,8,24,.84);border-radius:14px}
.bl-over[hidden]{display:none}
.bl-t{font-size:1.2rem;font-weight:900}
.bl-big{font-size:2.2rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1}
.bl-s{font-size:.78rem;color:var(--muted);max-width:320px;line-height:1.45}
.bl-s b{color:var(--text)}
.bl-col{display:flex;flex-direction:column;gap:.45rem;width:min(100%,290px)}
.bl-col .ct-start{align-self:stretch}
.bl-col button:disabled{opacity:.45;cursor:default}
.bl-coins{font-size:.85rem;font-weight:700}
.bl-note{text-align:center;margin-top:.5rem;max-width:440px}

/* ── Пасьянсы «Косынка» и «Паук» (js/games/solitaire.js) ── */
.sl{display:flex;flex-direction:column;gap:.5rem}
.sl-bar{display:flex;align-items:center;gap:.35rem .8rem;flex-wrap:wrap;font-size:.78rem;color:var(--muted)}
.sl-st b{color:var(--text);font-variant-numeric:tabular-nums}
.sl-st.low b{color:#f87171}
.sl-btns{margin-left:auto;display:flex;gap:.35rem}
.sl-btns button{border:1px solid var(--border);background:rgba(255,255,255,.05);color:var(--text);border-radius:10px;padding:.38rem .6rem;font:700 .74rem 'Montserrat',sans-serif;cursor:pointer;white-space:nowrap}
.sl-btns button:disabled{opacity:.4;cursor:default}
@media(max-width:560px){.sl-btns button span{display:none}.sl-btns button{font-size:.95rem;padding:.3rem .6rem}}
.sl-opts{display:flex;gap:.3rem;flex-wrap:wrap}
.sl-opts button{border:1px solid var(--border);background:transparent;color:var(--muted);border-radius:999px;padding:.28rem .75rem;font:700 .7rem 'Montserrat',sans-serif;cursor:pointer}
.sl-opts button.on{background:var(--accent);border-color:var(--accent);color:#fff}
.sl-wrap{position:relative;border-radius:14px;padding:8px;background:radial-gradient(ellipse at 50% 0%,#1f7a4d,#0e3b26 78%);box-shadow:inset 0 0 40px rgba(0,0,0,.35)}
.sl-board{position:relative;isolation:isolate;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;min-height:180px}
.ssl{position:absolute;left:0;top:0;width:var(--cw);height:var(--ch);box-sizing:border-box;border-radius:calc(var(--cw)*.1);border:2px dashed rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.3);font:800 calc(var(--cw)*.36) 'Montserrat',sans-serif}
.ssl[data-pile="st"]{cursor:pointer}
.scd{position:absolute;left:0;top:0;width:var(--cw);height:var(--ch);box-sizing:border-box;border-radius:calc(var(--cw)*.1);transition:transform .2s ease;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.45)}
.scd:not(.up){background:#4c1d95 repeating-linear-gradient(45deg,#4c1d95 0 4px,#6d28d9 4px 8px);border:2px solid #f5f3ff}
.scd.up{background:#fdfdfb;border:1px solid #bdc1cb}
.scd.noanim,.scd.drag{transition:none}
.scd.drag{box-shadow:0 10px 24px rgba(0,0,0,.5)}
.scd-f{display:none;position:absolute;inset:0;color:#17171f;overflow:hidden;border-radius:inherit}
.scd.up .scd-f{display:block}
.scd-f.red{color:#d0202f}
.scd-f b{position:absolute;left:6%;top:3%;font:800 calc(var(--cw)*.33)/1 'Montserrat',sans-serif;letter-spacing:-.06em}
.scd-f i,.scd-f u{font-style:normal;text-decoration:none;line-height:1;font-family:'Segoe UI Symbol','Noto Sans Symbols2','DejaVu Sans',sans-serif}
.scd-f i{position:absolute;right:7%;top:5%;font-size:calc(var(--cw)*.27)}
.scd-f u{position:absolute;left:0;right:0;bottom:8%;text-align:center;font-size:calc(var(--cw)*.56)}
.scd-f u.fc{font:900 calc(var(--cw)*.46)/1 'Montserrat',sans-serif;bottom:12%}
.scd.hint,.ssl.hint{animation:slHint .5s ease-in-out 3}
@keyframes slHint{50%{box-shadow:0 0 0 3px #facc15,0 0 16px #facc15}}
.scd.shake{animation:slShake .3s}
@keyframes slShake{25%{margin-left:-4px}75%{margin-left:4px}}
.sl-over{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;padding:1rem;text-align:center;background:rgba(5,22,13,.84);border-radius:14px}
.sl-over[hidden]{display:none}
.sl-t{font-size:1.2rem;font-weight:900}
.sl-big{font-size:2.1rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1}
.sl-s{font-size:.78rem;color:#cbd5e1;max-width:330px;line-height:1.45}
.sl-col{display:flex;flex-direction:column;gap:.45rem;width:min(100%,280px)}
.sl-col .ct-start{align-self:stretch}
.sl-coins{font-size:.85rem;font-weight:700}
@media(max-width:560px){.sl-wrap{padding:5px;margin:0 -6px}}
.sl-num{font-size:.74rem;color:var(--muted);align-self:center;margin-right:.2rem}.sl-num b{color:var(--text)}

/* ── «Сапёр» (js/games/miner.js) ── */
.mn{display:flex;flex-direction:column;align-items:center;gap:.5rem}
.mn-lv{justify-content:center}
.mn-bar{display:flex;align-items:center;justify-content:center;gap:.8rem;font-size:.85rem;color:var(--muted)}
.mn-cnt b{color:var(--text);font-variant-numeric:tabular-nums;display:inline-block;min-width:2.4ch}
.mn-face{font-size:1.5rem;line-height:1;background:rgba(255,255,255,.07);border:1px solid var(--border);border-radius:12px;padding:.25rem .45rem;cursor:pointer}
.mn-flag{font-size:1rem;background:transparent;border:1px solid var(--border);border-radius:10px;padding:.3rem .5rem;cursor:pointer;opacity:.55}
.mn-flag.on{opacity:1;background:rgba(239,68,68,.2);border-color:#ef4444}
.mn-wrap{position:relative;max-width:100%;overflow-x:auto}
.mn-grid{--cs:24px;display:grid;grid-template-columns:repeat(var(--w),var(--cs));gap:2px;padding:6px;background:#1b2140;border-radius:12px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
.mc{width:var(--cs);height:var(--cs);border-radius:5px;background:linear-gradient(180deg,#5463a6,#3c4880);box-shadow:inset 0 1px 0 rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font:900 calc(var(--cs)*.6)/1 'Montserrat',sans-serif;cursor:pointer}
.mc:not(.op):hover{filter:brightness(1.15)}
.mc.op{background:#10142a;box-shadow:none;cursor:default}
.mc.fl,.mc.mine,.mc.boom{font-size:calc(var(--cs)*.56)}
.mc.boom{background:#991b1b}
.mc.n1{color:#60a5fa}.mc.n2{color:#4ade80}.mc.n3{color:#f87171}.mc.n4{color:#a78bfa}.mc.n5{color:#fb923c}.mc.n6{color:#22d3ee}.mc.n7{color:#f472b6}.mc.n8{color:#e5e7eb}
.mn-note{text-align:center;max-width:520px}

/* ── «Маджонг Коннект» (js/games/mahjong.js) ── */
.mj{display:flex;flex-direction:column;align-items:center;gap:.45rem}
.mj-bar{display:flex;align-items:center;gap:.4rem .9rem;flex-wrap:wrap;width:100%;max-width:760px;font-size:.8rem;color:var(--muted)}
.mj-st b{color:var(--text);font-variant-numeric:tabular-nums}
.mj-btns{margin-left:auto;display:flex;gap:.35rem}
.mj-btns button{border:1px solid var(--border);background:rgba(255,255,255,.05);color:var(--text);border-radius:10px;padding:.35rem .6rem;font:700 .8rem 'Montserrat',sans-serif;cursor:pointer}
.mj-time{position:relative;width:100%;max-width:760px;height:14px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.mj-time i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#22c55e,#a3e635);border-radius:999px;transition:width .25s linear}
.mj-time i.low{background:linear-gradient(90deg,#ef4444,#f97316)}
.mj-time span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:800 .62rem 'Montserrat',sans-serif;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.mj-note{font-size:.72rem;color:var(--muted)}
.mj-wrap{position:relative;width:fit-content;max-width:100%;margin:0 auto}
.mj-board{position:relative;border-radius:14px;background:radial-gradient(ellipse at 50% 0%,#1e3a5f,#0f1f36 80%);box-shadow:inset 0 0 30px rgba(0,0,0,.4);touch-action:manipulation;user-select:none;-webkit-user-select:none}
.mj-path{position:absolute;left:0;top:0;pointer-events:none;z-index:5}
.mj-path polyline{fill:none;stroke:#facc15;stroke-width:4;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 4px #facc15)}
.mj-t{position:absolute;left:0;top:0;width:calc(var(--tw) - 3px);height:calc(var(--th) - 4px);padding:0;border:none;border-radius:8px;background:linear-gradient(180deg,#fffdf5,#ebe2c8);box-shadow:0 3px 0 #b9a57a,0 4px 6px rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .22s ease,opacity .25s,scale .25s}
.mj-t span{font-size:calc(var(--tw) * .58);line-height:1;pointer-events:none}
.mj-t.noanim{transition:none}
.mj-t.sel{background:linear-gradient(180deg,#fff7c2,#fde68a);box-shadow:0 3px 0 #d97706,0 0 0 3px #facc15}
.mj-t.hint{animation:mjHint .5s ease-in-out 3}
@keyframes mjHint{50%{box-shadow:0 3px 0 #b9a57a,0 0 0 4px #22c55e,0 0 14px #22c55e}}
.mj-t.no{animation:slShake .3s}
.mj-t.gone{opacity:0;scale:.6;pointer-events:none}
.mj-float{position:absolute;left:50%;top:40%;transform:translateX(-50%);font:900 1.1rem 'Montserrat',sans-serif;color:#facc15;text-shadow:0 2px 6px rgba(0,0,0,.7);pointer-events:none;animation:mjFloat .9s ease-out forwards;z-index:6;white-space:nowrap}
@keyframes mjFloat{to{transform:translate(-50%,-40px);opacity:0}}

/* ── «Судоку» (js/games/sudoku.js) ── */
.sd{display:flex;flex-direction:column;align-items:center;gap:.5rem}
.sd-lv{justify-content:center}
.sd-bar{display:flex;gap:.9rem;font-size:.8rem;color:var(--muted);width:min(100%,460px);justify-content:space-between}
.sd-bar b{color:var(--text);font-variant-numeric:tabular-nums}
.sd-wrap{position:relative;width:min(100%,460px)}
.sd-grid{display:grid;grid-template-columns:repeat(9,1fr);aspect-ratio:1;border:3px solid #64748b;border-radius:10px;overflow:hidden;background:#0f172a;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.sc{position:relative;display:flex;align-items:center;justify-content:center;border-right:1px solid #334155;border-bottom:1px solid #334155;font:700 clamp(1rem,5.2vw,1.55rem)/1 'Montserrat',sans-serif;color:#e2e8f0;cursor:pointer}
.sc:nth-child(9n){border-right:none}.sc:nth-child(n+73){border-bottom:none}
.sc.br{border-right:3px solid #64748b}.sc.bb{border-bottom:3px solid #64748b}
.sc.gv{color:#f8fafc;font-weight:800}
.sc.us{color:#60a5fa}
.sc.bad{color:#f87171;background:rgba(239,68,68,.16)}
.sc.peer{background:rgba(148,163,184,.12)}
.sc.same{background:rgba(96,165,250,.22)}
.sc.sel{background:rgba(96,165,250,.42)}
.sc.flash{animation:sdFlash .42s ease}
@keyframes sdFlash{50%{background:rgba(250,204,21,.45)}}
.nt{position:absolute;inset:2px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}
.nt i{font:600 clamp(.42rem,1.9vw,.6rem)/1 'Montserrat',sans-serif;font-style:normal;color:#94a3b8;display:flex;align-items:center;justify-content:center}
.sd-pad{display:grid;grid-template-columns:repeat(9,1fr);gap:4px;width:min(100%,460px)}
.sd-pad button{position:relative;border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:10px;padding:.55rem 0 .7rem;cursor:pointer;font-family:'Montserrat',sans-serif}
.sd-pad button b{font-size:1.25rem;font-weight:800}
.sd-pad button i{position:absolute;left:0;right:0;bottom:2px;font-style:normal;font-size:.55rem;color:var(--muted)}
.sd-pad button.done{opacity:.25}
.sd-tools{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:min(100%,460px)}
.sd-tools button{display:flex;flex-direction:column;align-items:center;gap:.15rem;border:none;background:transparent;color:var(--text);font-size:1.15rem;cursor:pointer;padding:.3rem 0;border-radius:10px}
.sd-tools button span{font:600 .62rem 'Montserrat',sans-serif;color:var(--muted)}
.sd-tools button.on{background:rgba(96,165,250,.18)}
.sd-tools button.on span{color:#60a5fa}
.sd-top{width:min(100%,460px);background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:12px;padding:.6rem .8rem;font-size:.78rem}
.sd-top ol{margin:.4rem 0 0;padding-left:1.3rem}
.sd-top li{display:flex;justify-content:space-between;gap:.5rem;padding:.12rem 0}
.sd-top li b{font-variant-numeric:tabular-nums}
.sd-done{display:flex;flex-direction:column;align-items:center;gap:.6rem;text-align:center;padding:1.2rem .5rem}

/* ── «Мир Денчика» (js/games/world.js) ── */
.wld{display:flex;flex-direction:column;gap:.45rem;width:100%}
.wld-top{display:flex;align-items:center;gap:.4rem .8rem;flex-wrap:wrap;font-size:.78rem;color:var(--muted)}
.wld-top b{color:var(--text);font-size:.95rem}
.wld-topbtns{margin-left:auto;display:flex;gap:.35rem}
.wld-topbtns button{border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:10px;padding:.35rem .6rem;font:700 .74rem 'Montserrat',sans-serif;cursor:pointer}
/* ☰ Меню (T-043) — одно на игру: настройки, персонаж, полный экран, как играть, выход; заметнее остальных, подпись видна и на телефоне */
.wld-topbtns .wld-menubtn{background:var(--accent,#7c3aed);border-color:transparent;color:#fff}
@media (pointer:coarse){.wld-topbtns button{min-height:40px;min-width:40px}}
/* спрятанные кнопки панели (🎬 вне городов, 🏯 вне боевой зоны) — спрятаны и в узкой панели телефона лёжа (там у кнопок display:grid) */
.wld-topbtns [hidden]{display:none!important}
.wld-wrap{position:relative;height:min(68vh,640px);min-height:340px;border-radius:14px;overflow:hidden;background:#1d4428;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.wld-cv{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:pointer}
.wld-log{position:absolute;left:8px;bottom:8px;max-width:min(72%,400px);font-size:.74rem;line-height:1.35;pointer-events:none;z-index:2}
.wld-log div{background:rgba(10,8,24,.66);padding:.18rem .55rem;border-radius:9px;margin-top:3px;color:#e5e7eb;word-break:break-word}
.wld-log b{color:#fde68a}.wld-log .me b{color:#93c5fd}.wld-log .sys{color:#fde68a}
.wld-pop{position:absolute;right:8px;top:8px;width:min(94%,350px);max-height:calc(100% - 16px);overflow:auto;background:rgba(17,14,32,.96);border:1px solid var(--border);border-radius:14px;padding:.7rem;z-index:3;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.wld-ch{display:flex;gap:.6rem;align-items:center}
.wld-ch img{width:58px;height:58px;flex:none}
.wld-ch b{font-size:.95rem}
.wld-bs{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}
.wld-b{font-size:.64rem;font-weight:800;background:rgba(255,255,255,.08);border-radius:999px;padding:.1rem .45rem}
.wld-b.dim{color:var(--muted)}
.wld-x{margin-left:auto;align-self:flex-start;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer;padding:.1rem .3rem}
.wld-acts{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.6rem}
.wld-acts button,.wld-acts a{border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:10px;padding:.45rem .7rem;font:700 .74rem 'Montserrat',sans-serif;cursor:pointer;text-decoration:none}
.wld-acts .ct-start{border:none}
.wld-acts .warn{border-color:#ef4444;color:#fca5a5}
.wld-sub{margin-top:.6rem}
.wld-sublbl{font-size:.72rem;color:var(--muted);margin-bottom:.35rem}
.wld-chips{display:flex;flex-wrap:wrap;gap:.3rem}
.wld-chips button{border:1px solid var(--border);background:rgba(255,255,255,.05);color:var(--text);border-radius:999px;padding:.3rem .6rem;font:700 .7rem 'Montserrat',sans-serif;cursor:pointer}
.wld-ph{display:flex;align-items:center;gap:.5rem;font-size:1rem}
.wld-pe{font-size:1.7rem}
.wld-panel p{font-size:.8rem;color:#d1d5db;margin:.5rem 0 0;line-height:1.5}
.wld-live{color:#f87171}
.wld-modes{display:flex;flex-direction:column;gap:.45rem;margin-top:.55rem}
.wld-mode{display:grid;grid-template-columns:auto 1fr;gap:.25rem .6rem;align-items:center;background:rgba(255,255,255,.04);border-radius:12px;padding:.5rem}
.wld-mi{font-size:1.6rem;grid-row:span 2}
.wld-mt b{font-size:.82rem}
.wld-mt small{display:block;color:var(--muted);font-size:.66rem;line-height:1.35}
.wld-mb{grid-column:2;display:flex;flex-wrap:wrap;gap:.3rem}
.wld-mb button{border:1px solid var(--border);background:rgba(255,255,255,.06);color:var(--text);border-radius:9px;padding:.3rem .55rem;font:700 .68rem 'Montserrat',sans-serif;cursor:pointer}
.wld-mb .ct-start{padding:.32rem .7rem;font-size:.7rem;border:none}
.wld-inv{position:absolute;left:50%;top:10px;transform:translateX(-50%);background:rgba(17,14,32,.97);border:2px solid #facc15;border-radius:14px;padding:.6rem .8rem;z-index:4;font-size:.82rem;text-align:center;width:min(92%,360px);box-shadow:0 10px 30px rgba(0,0,0,.5)}
.wld-inv .wld-acts{justify-content:center}
.wld-status{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7rem;background:rgba(10,8,24,.74);color:#fff;text-align:center;padding:1rem;z-index:5;font-weight:700;line-height:1.5}
.wld-status[hidden]{display:none}
.wld-hint{position:absolute;left:50%;top:10px;transform:translateX(-50%);width:max-content;max-width:min(92%,520px);background:rgba(10,8,24,.72);color:#e5e7eb;font-size:.72rem;padding:.35rem .7rem;border-radius:10px;pointer-events:none;z-index:1;text-align:center;animation:wldHint 12s forwards}
@keyframes wldHint{0%,85%{opacity:1}100%{opacity:0}}
.wld-bar{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.wld-emos{display:flex;gap:.2rem;flex-wrap:wrap}
.wld-emos button{font-size:1.1rem;line-height:1;background:rgba(255,255,255,.06);border:1px solid var(--border);border-radius:10px;padding:.3rem .38rem;cursor:pointer}
.wld-say{flex:1;display:flex;gap:.3rem;min-width:200px}
.wld-say input{flex:1;min-width:0;background:rgba(255,255,255,.06);border:1px solid var(--border);border-radius:10px;padding:.55rem .7rem;color:var(--text);font:600 .82rem 'Montserrat',sans-serif}
.wld-say button{background:var(--accent);border:none;color:#fff;border-radius:10px;padding:0 .95rem;font-size:1rem;cursor:pointer}
@media(max-width:560px){
  body.game-on .wld-wrap{height:calc(100dvh - 250px);min-height:300px}
  .wld-emos button{font-size:.98rem;padding:.24rem .3rem}
  .wld-topbtns button span{display:none}
  .wld-topbtns .wld-menubtn span{display:inline}
  .wld-log{font-size:.68rem;max-width:84%}
  .wld-say{min-width:100%}
}
.wld-gl{position:absolute;inset:0;display:block;touch-action:none;cursor:pointer}
.wld-wrap.is3d{background:#9fd6ff;touch-action:none}
.wld-tags{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.wld-tag{position:absolute;left:0;top:0;display:flex;flex-direction:column;align-items:center;will-change:transform}
.wld-tname{font:800 13px 'Montserrat',sans-serif;white-space:nowrap;text-shadow:0 0 3px #0a0818,0 1px 2px #0a0818,0 0 1px #0a0818}
.wld-npc .wld-tname{color:#fde68a}
.wld-wrap.mir-under .wld-gl{filter:saturate(1.15) brightness(.82)}
.wld-tbub{background:#fff;color:#111827;font:600 13px/1.3 'Montserrat',sans-serif;padding:.3rem .6rem;border-radius:11px;max-width:210px;margin-bottom:7px;position:relative;box-shadow:0 2px 8px rgba(0,0,0,.3);text-align:center;word-break:break-word}
.wld-tbub::after{content:'';position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-top-color:#fff;border-bottom:0}
.wld-tbub[hidden],.wld-temo[hidden]{display:none}
.wld-temo{font-size:30px;line-height:1;margin-bottom:2px}
/* ── 3D-редактор персонажа (js/games/charedit.js): гардероб и окно в «Мире Денчика» ── */
.ce-wait{display:grid;place-items:center;min-height:320px;color:var(--muted);font:700 .95rem 'Montserrat',sans-serif}
.ce{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:12px;height:min(80vh,760px);min-height:540px}
.ce-stage{position:relative;border-radius:18px;overflow:hidden;min-height:300px;background:radial-gradient(120% 90% at 50% 78%,#3d3285 0%,#1e1945 55%,#120f28 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.ce-view{position:absolute;inset:0}
.ce-gl{display:block;touch-action:none;cursor:grab}
.ce-gl:active{cursor:grabbing}
.ce-top{position:absolute;left:10px;right:10px;top:10px;display:flex;justify-content:space-between;align-items:center;gap:8px;pointer-events:none}
.ce-top>*{pointer-events:auto}
.ce-wallet{background:rgba(10,8,24,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:.38rem .85rem;font:800 .95rem 'Montserrat',sans-serif;color:#ffd84d}
.ce-done{border:0;border-radius:999px;padding:.5rem 1.1rem;font:800 .9rem 'Montserrat',sans-serif;color:#fff;cursor:pointer;background:linear-gradient(135deg,#22c55e,#16a34a);box-shadow:0 4px 14px rgba(34,197,94,.35)}
.ce-2d{position:absolute;right:10px;bottom:64px;width:64px;height:64px;border-radius:14px;background:rgba(10,8,24,.5);border:1px solid rgba(255,255,255,.1)}
.ce-tools{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;gap:5px;background:rgba(10,8,24,.58);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:5px}
.ce-tools button{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:#fff;font-size:1.1rem;cursor:pointer;line-height:1}
.ce-tools button:hover{background:rgba(255,255,255,.16)}
.ce-tools button.on{background:var(--accent,#9b6dff)}
.ce-panel{display:flex;flex-direction:column;min-height:0;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:18px;overflow:hidden}
.ce-cats{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:8px;border-bottom:1px solid rgba(255,255,255,.07)}
.ce-cats button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:.45rem .1rem;border:0;border-radius:12px;background:transparent;color:#cbd5e1;font:700 .7rem 'Montserrat',sans-serif;cursor:pointer;min-width:0}
.ce-cats button i{font-style:normal;font-size:1.35rem;line-height:1}
.ce-cats button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ce-cats button.on{background:linear-gradient(135deg,rgba(155,109,255,.38),rgba(255,111,181,.26));color:#fff}
.ce-subs{display:flex;gap:6px;padding:8px 10px 0;overflow-x:auto;scrollbar-width:none}
.ce-subs::-webkit-scrollbar{display:none}
.ce-subs[hidden]{display:none}
.ce-subs button{flex:none;padding:.42rem .9rem;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#e2e8f0;font:700 .8rem 'Montserrat',sans-serif;cursor:pointer}
.ce-subs button.on{background:#fff;color:#16122e;border-color:#fff}
.ce-body{flex:1;min-height:0;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}
.ce-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.ce-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px 8px;border-radius:14px;border:2px solid transparent;background:rgba(255,255,255,.05);color:#e2e8f0;cursor:pointer;font:700 .72rem/1.15 'Montserrat',sans-serif;text-align:center;min-width:0}
.ce-card:hover{background:rgba(255,255,255,.09)}
.ce-card canvas{width:72px;height:72px;border-radius:10px;background:radial-gradient(circle at 50% 60%,rgba(155,109,255,.22),transparent 70%)}
.ce-card .ce-emo{font-size:2.3rem;line-height:72px;height:72px}
.ce-card b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.ce-card.on{border-color:#a78bfa;background:rgba(155,109,255,.2)}
.ce-tag{font-style:normal;font-size:.64rem;font-weight:800;padding:.08rem .45rem;border-radius:999px;background:rgba(255,255,255,.1);color:#cbd5e1}
.ce-tag.on{background:#22c55e;color:#04210f}
.ce-tag.price{background:rgba(255,216,77,.15);color:#ffd84d}
.ce-sl{display:flex;flex-direction:column;gap:8px;padding:12px 14px;background:rgba(255,255,255,.04);border-radius:14px;color:#e2e8f0;font:600 .86rem 'Montserrat',sans-serif}
.ce-sl b{color:#fff}
.ce-sl input{width:100%;accent-color:#a78bfa;height:22px}
.ce-pal{padding:10px 12px 12px;background:rgba(255,255,255,.04);border-radius:14px}
.ce-pal-h{display:flex;align-items:center;gap:8px;margin-bottom:9px;color:#fff;font:700 .86rem 'Montserrat',sans-serif}
.ce-pal-cur{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.75);flex:none;background:#888}
.ce-pal-name{color:#94a3b8;font-weight:600;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ce-sws{display:flex;flex-wrap:wrap;gap:8px}
.ce-sw{position:relative;width:34px;height:34px;border-radius:50%;border:2px solid rgba(255,255,255,.18);cursor:pointer;padding:0;background:#888;color:#fff;font-size:1rem;line-height:1;flex:none}
.ce-sw.auto{background:rgba(255,255,255,.08)}
.ce-sw.on{box-shadow:0 0 0 2px #120f28,0 0 0 4px #fff}
.ce-sw i{position:absolute;right:-5px;bottom:-5px;font-size:.62rem;font-style:normal;filter:drop-shadow(0 1px 1px #000)}
.ce-sw-custom{background:conic-gradient(#ff3b3b,#ffd23f,#3bff6a,#3bd8ff,#3b5bff,#d23bff,#ff3b3b);font-size:.95rem}
.ce-pick{margin-top:12px;display:flex;flex-direction:column;gap:9px}
.ce-pick[hidden]{display:none}
.ce-sv{width:100%;height:130px;border-radius:12px;touch-action:none;cursor:crosshair;display:block}
.ce-hue{width:100%;height:18px;border-radius:9px;touch-action:none;cursor:pointer;display:block}
.ce-hexrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ce-hexsw{width:30px;height:30px;border-radius:8px;border:2px solid rgba(255,255,255,.3);flex:none}
.ce-hex{width:104px;padding:.38rem .6rem;border-radius:10px;border:1px solid rgba(255,255,255,.15);background:rgba(0,0,0,.25);color:#fff;font:700 .9rem ui-monospace,Consolas,monospace;text-transform:lowercase}
.ce-hint{color:var(--muted);font-size:.72rem}
.ce-try{margin:8px 10px 0;padding:10px 12px;border-radius:14px;background:linear-gradient(135deg,rgba(255,216,77,.13),rgba(255,111,181,.1));border:1px solid rgba(255,216,77,.28);display:flex;flex-direction:column;gap:8px;font:600 .82rem 'Montserrat',sans-serif;color:#fde68a}
.ce-try[hidden]{display:none}
.ce-try-t{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ce-chip{display:inline-flex;align-items:center;gap:4px;background:rgba(0,0,0,.25);border-radius:999px;padding:.18rem .3rem .18rem .65rem;color:#fff;font-weight:700}
.ce-chip button{border:0;background:rgba(255,255,255,.12);color:#fff;border-radius:50%;width:20px;height:20px;font-size:.7rem;cursor:pointer}
.ce-try-vip{color:#fcd34d;font-size:.78rem}
.ce-try-vip a{color:#fff}
.ce-try-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.ce-need{color:#fca5a5;font-size:.76rem}
.ce-btn{border:0;border-radius:12px;padding:.55rem 1rem;font:800 .82rem 'Montserrat',sans-serif;cursor:pointer;color:#fff;background:rgba(255,255,255,.1)}
.ce-btn.gold{background:linear-gradient(135deg,#ffd84d,#f59e0b);color:#3b2400}
.ce-btn:disabled{opacity:.5;cursor:default}
.ce-earn{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px 10px;border-top:1px solid rgba(255,255,255,.07)}
.ce-note{color:var(--muted);font-size:.74rem;flex:1 1 200px}
/* части тела: голова, туловище, руки, ноги по отдельности (charedit.js → «Части») */
.ce-parts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.ce-parts button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:.45rem .1rem;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#e2e8f0;font:700 .68rem 'Montserrat',sans-serif;cursor:pointer;min-width:0}
.ce-parts button i{font-style:normal;font-size:1.15rem;line-height:1}
.ce-parts button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ce-parts button.on{background:linear-gradient(135deg,rgba(155,109,255,.38),rgba(255,111,181,.26));border-color:#a78bfa;color:#fff}
.ce-ptools{display:flex;flex-wrap:wrap;gap:6px}
.ce-ptools button{flex:1 1 auto;padding:.42rem .7rem;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#e2e8f0;font:700 .76rem 'Montserrat',sans-serif;cursor:pointer;white-space:nowrap}
.ce-ptools button.on{background:#fff;color:#16122e;border-color:#fff}
.ce-ptools button:disabled,.ce-tools button:disabled{opacity:.4;cursor:default}
.ce-phint{color:var(--muted);font:600 .74rem/1.35 'Montserrat',sans-serif}
.ce-tag.gem{background:rgba(126,240,255,.14);color:#7ef0ff}
.ce-chip.gem{background:rgba(70,40,140,.45)}
.ce-try-gem{color:#a5f3fc;font-size:.78rem}
.ce-try-gem a{color:#fff;font-weight:800}
@media(max-width:480px){
  .ce-parts{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ce-cats button{font-size:.6rem}
  .ce-tools button{width:36px;height:36px}
}
@media(max-width:860px){
  .ce{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto;min-height:0}
  .ce-stage{height:44vh;min-height:260px}
  .ce-body{overflow:visible}
  .ce-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}
}
/* окно редактора в «Мире Денчика»: поверх всего сайта */
.wld-edit{position:fixed;inset:0;z-index:100000;background:rgba(9,7,22,.94);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px}
.wld-edit .ce{width:min(1180px,100%);height:min(92vh,880px);min-height:0}
@media(max-width:860px){
  .wld-edit{padding:6px;padding-bottom:max(6px,env(safe-area-inset-bottom));align-items:stretch}
  .wld-edit .ce{grid-template-rows:40% minmax(0,1fr);height:100%}
  .wld-edit .ce-stage{height:auto;min-height:0}
  .wld-edit .ce-body{overflow-y:auto}
}
html.wld-editing,html.wld-editing body{overflow:hidden}
/* ── Студия игр (js/games/studio.js): игры игроков ── */
.st{display:flex;flex-direction:column;gap:12px;color:var(--text,#e2e8f0)}
.st-empty{padding:18px;border-radius:14px;background:rgba(255,255,255,.04);color:var(--muted,#94a3b8);font:600 .9rem 'Montserrat',sans-serif;text-align:center}
.st-empty a{color:var(--accent,#a78bfa)}
.st-hero{padding:18px 20px;border-radius:18px;background:linear-gradient(135deg,rgba(155,109,255,.25),rgba(255,111,181,.16) 60%,rgba(56,189,248,.12));border:1px solid rgba(255,255,255,.1)}
.st-hero h2{margin:0 0 6px;font:900 1.5rem 'Oswald','Montserrat',sans-serif;letter-spacing:.02em}
.st-hero p{margin:0;color:#cbd5e1;font:500 .92rem/1.5 'Montserrat',sans-serif;max-width:760px}
.st-h{margin:8px 0 0;font:800 1.05rem 'Montserrat',sans-serif;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.st-sort{display:inline-flex;gap:4px}
.st-sort button{border:1px solid rgba(255,255,255,.14);background:transparent;color:#cbd5e1;border-radius:999px;padding:.25rem .7rem;font:700 .75rem 'Montserrat',sans-serif;cursor:pointer}
.st-sort button.on{background:#fff;color:#16122e}
.st-tpls{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.st-tpl{display:flex;flex-direction:column;gap:5px;padding:14px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);color:inherit;text-decoration:none;transition:transform .15s,background .15s}
.st-tpl:hover{transform:translateY(-2px);background:rgba(255,255,255,.09)}
.st-tpl-ic{font-size:2rem;line-height:1}
.st-tpl b{font:800 1rem 'Montserrat',sans-serif}
.st-tpl small{color:#94a3b8;font:500 .8rem/1.4 'Montserrat',sans-serif;flex:1}
.st-go{color:var(--accent,#a78bfa);font:800 .82rem 'Montserrat',sans-serif}
.st-tpl-code{background:linear-gradient(135deg,rgba(56,189,248,.14),rgba(34,197,94,.1));border-color:rgba(56,189,248,.25)}
.st-list{display:flex;flex-direction:column;gap:6px}
.st-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.04)}
.st-row-ic{font-size:1.7rem;width:40px;text-align:center;flex:none}
.st-row-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.st-row-b b{font:800 .92rem 'Montserrat',sans-serif;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-row-b small{color:#94a3b8;font:600 .74rem 'Montserrat',sans-serif}
.st-row-a{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.st-chip{display:inline-block;padding:.05rem .45rem;border-radius:999px;background:rgba(255,255,255,.1);font:700 .7rem 'Montserrat',sans-serif;color:#e2e8f0}
.st-chip.st-public{background:rgba(34,197,94,.2);color:#86efac}
.st-chip.st-review{background:rgba(250,204,21,.18);color:#fde68a}
.st-chip.st-link{background:rgba(56,189,248,.18);color:#bae6fd}
.st-chip.st-banned{background:rgba(239,68,68,.2);color:#fca5a5}
.st-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:0;border-radius:11px;padding:.5rem .85rem;font:800 .8rem 'Montserrat',sans-serif;cursor:pointer;color:#fff;background:var(--accent,#7c5cff);text-decoration:none;white-space:nowrap}
.st-btn:hover{filter:brightness(1.1)}
.st-btn.gold{background:linear-gradient(135deg,#ffd84d,#f59e0b);color:#3b2400}
.st-btn.ghost{background:rgba(255,255,255,.08);color:#e2e8f0}
.st-btn.ghost.danger{color:#fca5a5}
.st-btn.on{background:rgba(255,77,109,.25)}
.st-btn:disabled{opacity:.5;cursor:default}
.st-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.st-card{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 10px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);color:inherit;text-decoration:none;text-align:center}
.st-card:hover{background:rgba(255,255,255,.09)}
.st-card-ic{font-size:2.4rem;line-height:1.1}
.st-card b{font:800 .9rem 'Montserrat',sans-serif;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-card small{color:#94a3b8;font:600 .72rem 'Montserrat',sans-serif}
.st-rules{color:var(--muted,#94a3b8);font:500 .78rem/1.5 'Montserrat',sans-serif;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.03)}
.st-top{display:flex;align-items:center;gap:12px;font:800 .95rem 'Montserrat',sans-serif}
.st-back{color:#cbd5e1;text-decoration:none;font:700 .85rem 'Montserrat',sans-serif}
.st-saved{margin-left:auto;color:#86efac;font:600 .75rem 'Montserrat',sans-serif}
.st-ed-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:14px;align-items:start}
.st-prev{position:sticky;top:76px;display:flex;flex-direction:column;gap:8px}
.st-frame-box{position:relative;height:min(64vh,620px);min-height:320px;border-radius:16px;overflow:hidden;background:#0d0b1a;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.st-frame-box.st-big{height:min(72vh,720px)}
.st-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#0d0b1a}
.st-prev-bar{display:flex;align-items:center;gap:10px}
.st-score{color:#fde68a;font:800 .9rem 'Montserrat',sans-serif}
.st-err{padding:10px 12px;border-radius:12px;background:rgba(239,68,68,.15);border:1px solid rgba(239,68,68,.35);color:#fecaca;font:600 .8rem/1.45 'Montserrat',sans-serif}
.st-err[hidden]{display:none}
.st-form{display:flex;flex-direction:column;gap:10px;min-width:0}
.st-f{display:flex;flex-direction:column;gap:5px;font:700 .8rem 'Montserrat',sans-serif;color:#cbd5e1;min-width:0}
.st-f i{font-style:normal;color:#94a3b8;font-weight:500}
.st-f input:not([type=range]):not([type=checkbox]):not([type=radio]):not([type=color]),.st-f textarea,.st-idea{width:100%;box-sizing:border-box;padding:.55rem .7rem;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.25);color:#fff;font:600 .9rem 'Montserrat',sans-serif}
.st-f input[type=range]{width:100%;accent-color:var(--accent,#a78bfa)}
.st-f2{display:flex;gap:10px}
.st-f2 .st-f:first-child{width:92px;flex:none}
.st-grow{flex:1}
.st-emoji-in{font-size:1.3rem !important;text-align:center}
.st-emo-row{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.st-emo-row input{flex:1 1 140px}
.st-emo{border:0;background:rgba(255,255,255,.06);border-radius:8px;width:34px;height:34px;font-size:1.15rem;cursor:pointer;padding:0}
.st-emo:hover{background:rgba(255,255,255,.14)}
.st-emojis-in{font-size:1.15rem !important}
.st-color{flex-direction:row;align-items:center;justify-content:space-between}
.st-color input{width:54px;height:34px;border:0;background:none;padding:0;cursor:pointer}
.st-check{flex-direction:row;align-items:center;gap:8px;cursor:pointer}
.st-check input{width:18px;height:18px;accent-color:var(--accent,#a78bfa)}
.st-qa{display:flex;flex-direction:column;gap:8px}
.st-q{padding:10px;border-radius:12px;background:rgba(255,255,255,.04);display:flex;flex-direction:column;gap:6px}
.st-q-h{display:flex;align-items:center;gap:6px}
.st-q-h input{flex:1}
.st-x{border:0;background:rgba(255,255,255,.08);color:#fca5a5;border-radius:8px;width:30px;height:30px;cursor:pointer}
.st-q-a{display:flex;align-items:center;gap:8px}
.st-q-a input[type=radio]{accent-color:#22c55e;width:18px;height:18px;flex:none}
.st-q-a input:not([type=radio]){padding:.4rem .6rem !important;font-size:.84rem !important}
.st-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}
.st-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.st-status small{flex:1 1 100%;color:#94a3b8;font:500 .78rem/1.45 'Montserrat',sans-serif}
.st-ai{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:14px;background:linear-gradient(135deg,rgba(56,189,248,.1),rgba(155,109,255,.1));border:1px solid rgba(56,189,248,.22)}
.st-ai b{font:800 .9rem 'Montserrat',sans-serif}
.st-ai small{color:#94a3b8;font:500 .76rem/1.45 'Montserrat',sans-serif}
.st-ai-row{display:flex;flex-wrap:wrap;gap:6px}
.st-code{min-height:260px;font:500 .78rem/1.45 ui-monospace,Consolas,monospace !important;white-space:pre;tab-size:2;resize:vertical}
.st-size.bad{color:#fca5a5}
.st-play-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.st-play-ic{font-size:2.4rem;line-height:1}
.st-play-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.st-play-t b{font:900 1.2rem 'Montserrat',sans-serif}
.st-play-t small{color:#94a3b8;font:600 .8rem 'Montserrat',sans-serif}
.st-play-a{display:flex;gap:6px}
.st-result{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:14px;background:rgba(250,204,21,.1);border:1px solid rgba(250,204,21,.25);font:700 .92rem 'Montserrat',sans-serif}
.st-result[hidden],.st-ad[hidden]{display:none}
.st-descr{margin:0;color:#cbd5e1;font:500 .9rem/1.5 'Montserrat',sans-serif}
.st-cta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:14px;background:linear-gradient(135deg,rgba(155,109,255,.18),rgba(255,111,181,.12));font:700 .88rem 'Montserrat',sans-serif}
.st-warn{color:#94a3b8;font:500 .74rem 'Montserrat',sans-serif;text-align:center}
.st-mod-link[hidden]{display:none}
@media(max-width:860px){
  .st-ed-grid{grid-template-columns:1fr}
  .st-prev{position:static}
  .st-frame-box{height:52vh;min-height:300px}
  .st-frame-box.st-big{height:calc(100dvh - 230px);min-height:360px}
  .st-row{flex-wrap:wrap}
}
.st-author{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08)}
.st-author[hidden],.st-more[hidden]{display:none}
.st-au-ava{width:64px;height:64px;border-radius:50%;overflow:hidden;flex:none;display:block;background:radial-gradient(circle at 50% 60%,rgba(155,109,255,.35),rgba(20,16,40,.9));box-shadow:0 0 0 2px rgba(255,255,255,.12)}
.st-au-ava img,.st-au-ava canvas{width:100%;height:100%;object-fit:cover;display:block}
.st-au-b{flex:1;min-width:180px;display:flex;flex-direction:column;gap:3px}
.st-au-lbl{color:#94a3b8;font:700 .68rem 'Montserrat',sans-serif;text-transform:uppercase;letter-spacing:.06em}
.st-au-nick{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font:800 1.05rem 'Montserrat',sans-serif}
.st-au-nick a{color:inherit;text-decoration:none}
.st-au-nick a:hover{text-decoration:underline}
.st-au-b small{color:#94a3b8;font:600 .78rem/1.45 'Montserrat',sans-serif}
.st-au-a{display:flex;gap:6px;flex-wrap:wrap}
.st-card-au{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap}
.st-play-t small a{color:#c4b5fd;text-decoration:none;font-weight:800}
.st-play-t small a:hover{text-decoration:underline}

/* «Мир Денчика» 3D (js/games/mir.js): панель стола — сверху, приглашение — пониже, чтобы не накрывали друг друга */
.mir .mir-tb{top:10px;border-color:#22c55e;z-index:4}
.mir .wld-inv:not(.mir-tb){top:auto;bottom:34%}
.mir .wld-wrap{background:#9fd6ff}
.mir .wld-gl{cursor:grab}
.mir .wld-gl:active{cursor:grabbing}
@media (max-width:640px){.mir .mir-tb{font-size:.76rem}.mir .wld-hint{top:auto;bottom:118px}}
.mir .wld-wrap::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at 50% 45%,rgba(0,0,0,0) 58%,rgba(10,8,30,.28) 100%)}

/* ═══ «Студия 3D» (#/games/studio3d, js/games/studio3d.js) — редактор поверх сайта, как Roblox Studio ═══ */
html.s3-open,html.s3-open body{overflow:hidden}
.s3-stub{max-width:420px;margin:2rem auto;padding:1.4rem;border-radius:16px;background:var(--card,#16161f);text-align:center;display:grid;gap:.6rem}
.s3{position:fixed;inset:0;z-index:100000;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#1b1d24;color:#e6e8ee;font:13px/1.35 Montserrat,system-ui,sans-serif;-webkit-user-select:none;user-select:none}
/* T-123: кнопки движка (.e-btn) и интерфейса 2.0 (.e2-*) — свои, серые квадраты редактора на них не ложатся (:where — вес правила тот же) */
.s3 button:where(:not(.e-btn):not([class*="e2-"])){background:#3a3d48;color:#e6e8ee;border:1px solid #4a4e5c;border-radius:7px;padding:5px 9px;font-weight:600;font-size:13px;line-height:1.2;font-family:inherit;cursor:pointer;white-space:nowrap}
.s3 button:where(:not(.e-btn):not([class*="e2-"])):hover{background:#464a57}
.s3 button:where(:not(.e-btn):not([class*="e2-"])).on{background:#2563eb;border-color:#60a5fa;color:#fff}
.s3 button.warn{background:#7f1d1d;border-color:#b91c1c}
.s3 input[type=text],.s3 input[type=number],.s3 select,.s3-name{background:#16171d;color:#e6e8ee;border:1px solid #4a4e5c;border-radius:7px;padding:5px 8px;font-weight:500;font-size:13px;line-height:1.2;font-family:inherit;min-width:0;-webkit-user-select:text;user-select:text}
.s3 input[type=range]{width:100%;accent-color:#3b82f6}
.s3 [hidden]{display:none!important}
.s3-top{display:flex;align-items:center;gap:4px;padding:6px;background:#2b2d36;border-bottom:1px solid #3a3d48;overflow-x:auto;scrollbar-width:none}
.s3-top::-webkit-scrollbar{display:none}
.s3-top>*{flex:none}
@media (max-width:1560px){.s3-tools button span,.s3-top [data-panel] span{display:none}}
@media (max-width:1180px){.s3-top button span{display:none}}
.s3-name{width:150px;font-weight:700}
.s3-sep{flex:none;width:1px;height:22px;background:#4a4e5c;margin:0 3px}
.s3-grow{flex:1}
.s3-tools{display:flex;gap:2px}
.s3-dd{position:relative}
.s3 .s3-play{background:#16a34a;border-color:#22c55e;color:#fff;font-weight:800;padding:6px 14px}
.s3.s3-playing .s3-play{background:#dc2626;border-color:#f87171}
.s3-playing .s3-top>*:not(.s3-play):not(.s3-grow):not([data-a="exit"]):not(.s3-pinfo):not(.gs-s3){display:none}
.s3-main{position:relative;display:grid;grid-template-columns:220px minmax(0,1fr) 290px;min-height:0}
.s3-playing .s3-main{grid-template-columns:minmax(0,1fr)}
.s3-playing .s3-left,.s3-playing .s3-right{display:none}
.s3-left,.s3-right{background:#23252d;overflow:auto;min-height:0;scrollbar-width:thin}
.s3-left{border-right:1px solid #3a3d48}
.s3-right{border-left:1px solid #3a3d48}
.s3-ph{position:sticky;top:0;z-index:1;padding:7px 10px;font-weight:800;font-size:12px;background:#2b2d36;border-bottom:1px solid #3a3d48}
.s3-row{padding:4px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:2px solid transparent}
.s3-row:hover{background:rgba(255,255,255,.06)}
.s3-row.sel{background:rgba(37,99,235,.35);border-left-color:#60a5fa}
.s3-root{font-weight:700;color:#9fc4ff}
.s3-ph{display:flex;align-items:center;gap:6px}
.s3 .s3-find{flex:1;min-width:0;padding:3px 7px;font-size:12px;border-radius:6px}
.s3-view{position:relative;min-width:0;min-height:0;overflow:hidden;background:#9fd6ff}
.s3-gl{display:block;width:100%;height:100%;touch-action:none;cursor:default}
.s3-hint,.s3-msg{position:absolute;left:50%;transform:translateX(-50%);z-index:3;padding:6px 12px;border-radius:10px;background:rgba(12,10,24,.72);color:#fff;font-size:12.5px;font-weight:600;text-align:center;max-width:min(92%,640px);pointer-events:none}
.s3-hint{top:10px}
.s3-msg{bottom:14px;font-weight:800}
.s3-msg.ok{background:rgba(22,101,52,.9)}
.s3-msg.bad{background:rgba(153,27,27,.9)}
.s3-bottom{display:flex;flex-direction:column;height:200px;background:#23252d;border-top:1px solid #3a3d48;min-height:0}
.s3-minB .s3-bottom{height:auto}
.s3-minB .s3-out,.s3-minB .s3-code{display:none!important}
.s3-btabs{display:flex;align-items:center;gap:4px;padding:4px 6px;background:#2b2d36}
.s3-btabs button{padding:4px 9px;font-size:12px}
.s3-out{flex:1;overflow:auto;padding:6px 10px;font-size:12px;line-height:1.5;font-family:Consolas,"Cascadia Mono",monospace;-webkit-user-select:text;user-select:text}
.s3-ol{white-space:pre-wrap;word-break:break-word}
.s3-ol.err{color:#f87171}
.s3-ol.warn{color:#fbbf24}
.s3-ol.sys{color:#93c5fd}
.s3-code{flex:1;display:flex;flex-direction:column;min-height:0}
.s3-codebar{display:flex;align-items:center;gap:6px;padding:4px 6px;flex-wrap:wrap}
.s3-codebar select{max-width:230px}
.s3-wasminfo{font-size:12px;color:#9aa3b5}
.s3 .s3-wasm{background:#7c3aed;border-color:#a78bfa;color:#fff}
.s3-ai a{color:#93c5fd;font-weight:700}
.s3-cname{font-weight:700;color:#fbbf24}
.s3-ta{flex:1;min-height:0;resize:none;border:0;outline:none;padding:8px 12px;background:#16171d;color:#e6e8ee;font-size:13px;line-height:1.5;font-family:Consolas,"Cascadia Mono",monospace;tab-size:2;white-space:pre;overflow:auto;-webkit-user-select:text;user-select:text}
.s3-menu{position:absolute;z-index:6;min-width:230px;max-height:70vh;overflow:auto;display:flex;flex-direction:column;gap:2px;padding:6px;border-radius:10px;background:#2b2d36;border:1px solid #4a4e5c;box-shadow:0 12px 30px rgba(0,0,0,.45)}
.s3-menu button{text-align:left;background:transparent;border-color:transparent;width:100%}
.s3-menu button:hover{background:#3a3d48}
.s3-menu hr{border:0;border-top:1px solid #3a3d48;margin:3px 0;width:100%}
.s3-menu small{color:#9aa3b5;font-weight:500}
.s3-mh{padding:6px 8px 2px;font-size:11px;font-weight:800;color:#9aa3b5}
.s3-mrow{display:flex;gap:2px}
.s3-menu .s3-mnote{max-width:280px;padding:4px 8px;font-size:11px}
.s3-mlist{display:flex;flex-direction:column;gap:2px}
.s3-dlg{position:absolute;inset:0;z-index:9;display:grid;place-items:center;padding:12px;background:rgba(9,8,20,.6)}
.s3-dlg-in{width:min(440px,100%);max-height:100%;overflow:auto;display:grid;gap:10px;padding:16px 18px;border-radius:14px;background:#23252d;border:1px solid #3a3d48;box-shadow:0 18px 50px rgba(0,0,0,.5)}
.s3-dlg-in>b{font-size:16px}
.s3-dlg-in textarea{background:#16171d;color:#e6e8ee;border:1px solid #4a4e5c;border-radius:7px;padding:6px 8px;font:inherit;resize:vertical;-webkit-user-select:text;user-select:text}
.s3-pubres{font-size:13px;line-height:1.5;word-break:break-all}
.s3-pubres a{color:#93c5fd}
.s3-pinfo{display:flex;align-items:center;gap:8px;font-size:13px;white-space:nowrap}
.s3-pinfo[hidden]{display:none}
.s3-pinfo a{color:#cbd5e1;text-decoration:none;font-weight:700}
.s3-player .s3-left,.s3-player .s3-right,.s3-player .s3-bottom{display:none!important}
.s3-player .s3-main{grid-template-columns:minmax(0,1fr)!important}
.s3-player .s3-top>*:not(.s3-play):not(.s3-grow):not([data-a="exit"]):not(.s3-name):not(.s3-pinfo):not(.gs-s3){display:none!important}
.s3-player .s3-top>.s3-name{display:inline-block!important;border-color:transparent;background:transparent;font-size:15px}
.s3-tut{position:absolute;left:10px;bottom:10px;z-index:3;display:grid;gap:4px;max-width:min(300px,80%);padding:10px 12px;border-radius:12px;background:rgba(12,10,24,.84);color:#fff;font-size:12.5px;box-shadow:0 6px 20px rgba(0,0,0,.35)}
.s3-tut b{font-size:13.5px}
.s3-tut .ok{color:#86efac}
.s3 .s3-tut button{justify-self:start;margin-top:2px;padding:3px 8px;font-size:11px}
.s3-playing .s3-tut{display:none}
.s3-bub{position:absolute;left:0;top:0;max-width:220px;padding:6px 10px;border-radius:12px;background:#fff;color:#1b1d24;font-size:13px;font-weight:700;line-height:1.3;box-shadow:0 4px 14px rgba(0,0,0,.3);pointer-events:none;white-space:normal}
.s3-bub::after{content:'';position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-top-color:#fff;border-bottom:0}
.s3-busy{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;display:grid;gap:6px;padding:16px 22px;border-radius:14px;background:rgba(12,10,24,.88);color:#fff;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.s3-busy b{font-size:15px}
.s3-busy span{font-size:13px;color:#cbd5e1}
.s3-mrow button:first-child{flex:1;overflow:hidden;text-overflow:ellipsis}
.s3-mrow button:last-child{width:auto;flex:none}
.s3-props{display:flex;flex-direction:column;gap:9px;padding:9px 10px 16px}
.s3-lbl{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#aab2c3}
.s3-lbl b{color:#fff}
.s3-chk{display:flex;align-items:center;gap:7px;font-size:12.5px;cursor:pointer}
.s3-chk input{width:16px;height:16px;accent-color:#3b82f6}
.s3-v3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.s3-v3 label{display:flex;align-items:center;gap:3px;font-weight:800;font-size:11px}
.s3-v3 label:nth-child(1){color:#f87171}
.s3-v3 label:nth-child(2){color:#4ade80}
.s3-v3 label:nth-child(3){color:#60a5fa}
.s3 .s3-v3 input{width:100%;padding:4px 5px}
.s3-pal{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px}
.s3 .s3-pal button{aspect-ratio:1;padding:0;border:2px solid rgba(255,255,255,.12);border-radius:6px;min-width:0}
.s3 .s3-pal button.on{border-color:#fff;box-shadow:0 0 0 2px #2563eb}
.s3-cpick{position:relative;display:grid;place-items:center;aspect-ratio:1;border-radius:6px;background:#3a3d48;cursor:pointer;font-size:14px;overflow:hidden}
.s3-cpick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.s3-mats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.s3 .s3-mats button,.s3 .s3-grid4 button{display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 2px;font-size:17px;min-width:0}
.s3-mats small,.s3-grid4 small{font-size:10px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.s3-grid2{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.s3-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-top:4px}
.s3-grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
.s3-note{margin:0;font-size:12px;line-height:1.5;color:#9aa3b5}
.s3-loading{position:absolute;inset:0;z-index:10;display:grid;place-items:center;padding:20px;text-align:center;background:#1b1d24;font-size:18px;font-weight:800}
.s3 .s3-mob{display:none}
.s3-hud{position:absolute;inset:0;z-index:3;pointer-events:none}
.s3-stats{position:absolute;right:10px;top:10px;min-width:150px;padding:7px 11px;border-radius:10px;background:rgba(12,10,24,.66);color:#fff;font-size:13px}
.s3-stats>b{display:block;margin-bottom:3px;color:#fbbf24}
.s3-stats div{display:flex;justify-content:space-between;gap:14px}
.s3-health{position:absolute;left:10px;top:10px;width:min(200px,40vw);height:11px;border-radius:7px;background:rgba(0,0,0,.45);overflow:hidden;border:1px solid rgba(255,255,255,.25)}
.s3-health i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#22c55e,#86efac);transition:width .2s}
.s3-health.low i{background:linear-gradient(90deg,#dc2626,#f87171)}
.s3-labels{position:absolute;left:50%;top:34px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px}
.s3-labels div{padding:4px 12px;border-radius:9px;background:rgba(12,10,24,.66);color:#fff;font-weight:800;font-size:14px}
/* Студия 3D по сети: комната (ссылка, сколько игроков), ожидание мира, подписи над игроками, таблица игроков */
.s3-mp{position:absolute;left:10px;top:28px;z-index:4;display:grid;gap:5px;max-width:min(250px,62%);padding:8px 10px;border-radius:12px;background:rgba(12,10,24,.8);color:#fff;font-size:12px;box-shadow:0 6px 20px rgba(0,0,0,.35)}
.s3-mph{display:flex;align-items:center;justify-content:space-between;gap:10px}
.s3-mph b{font-size:13px}
.s3-mph span{color:#fbbf24;font-weight:800}
.s3-mps{color:#cbd5e1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s3-mpr{display:flex;gap:4px;flex-wrap:wrap}
.s3 .s3-mpr button{padding:3px 9px;font-size:12px}
.s3-mpwait{position:absolute;inset:0;z-index:7;display:grid;place-items:center;align-content:center;gap:10px;padding:20px;text-align:center;background:rgba(15,16,24,.88);color:#fff;font-size:17px;font-weight:800;line-height:1.4}
.s3-mpwait small{font-size:12.5px;font-weight:600;color:#9aa3b5}
.s3-mpwait .s3-mpr{justify-content:center}
.s3 .s3-mpwait .s3-mpr button{padding:6px 14px;font-size:13px}
.s3-tags{position:absolute;inset:0;overflow:hidden}
.s3-tag{position:absolute;left:0;top:0;padding:2px 8px;border-radius:8px;background:rgba(12,10,24,.55);color:#fff;font-weight:800;font-size:12px;white-space:nowrap}
.s3-tag[hidden]{display:none}
.s3-lb{border-collapse:collapse;font-size:12.5px}
.s3-lb th{padding:0 0 3px 12px;color:#fbbf24;font-weight:800;text-align:right;white-space:nowrap}
.s3-lb td{padding:1px 0 1px 12px;text-align:right;white-space:nowrap}
.s3-lb th:first-child,.s3-lb td:first-child{padding-left:0;text-align:left}
.s3-lb td:first-child{max-width:130px;overflow:hidden;text-overflow:ellipsis}
.s3-lb tr.me td{color:#93c5fd}
@media (max-width:760px){.s3-mp .s3-mps{display:none}.s3-view:has(.s3-mp) .s3-labels{top:96px}}
@media (max-width:760px){
  .s3-top button span{display:none}
  .s3-name{width:96px}
  .s3-main{grid-template-columns:minmax(0,1fr)}
  .s3-left,.s3-right{position:absolute;top:0;bottom:0;z-index:4;width:min(82vw,290px);transition:transform .2s;box-shadow:0 0 24px rgba(0,0,0,.5)}
  .s3-left{left:0;transform:translateX(-105%)}
  .s3-right{right:0;transform:translateX(105%)}
  .s3-showL .s3-left,.s3-showR .s3-right{transform:none}
  .s3 .s3-mob{display:inline-block}
  .s3-bottom{height:150px;padding-bottom:env(safe-area-inset-bottom)}
}

/* ── Свой курсор («Мощное»): поверх всех окон сайта (студия, редактор персонажа, поиск — выше 10000), а в 3D-редакторах —
   обычная стрелка: свой курсор там отстаёт и мешает целиться ── */
#cursorTrail{z-index:2147483646}
#cursorDot{z-index:2147483647}
body.high .s3,body.high .s3 *,body.high .wld-edit,body.high .wld-edit *{cursor:auto}
body.high .s3 button,body.high .s3 a,body.high .s3 select,body.high .s3 label,body.high .s3 .s3-row,body.high .wld-edit button,body.high .wld-edit a{cursor:pointer}
html.s3-open #cursorTrail,html.s3-open #cursorDot,body:has(.wld-edit) #cursorTrail,body:has(.wld-edit) #cursorDot{display:none!important}

/* ── Unity-игры (js/games/unity-host.js): окно сборки нужной формы (--ar, --arn — из «формы окна»), полоса под игрой,
   комната (код, ссылка, игроки, хост 👑), рекорды игры, страница «Как сделать». Остальное — классы «Студии игр» (st-*) ── */
.un-hero-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.un-box{position:relative;width:min(100%,calc(var(--arn,1.7778) * min(76vh,720px)));aspect-ratio:var(--ar,16 / 9);margin:0 auto;border-radius:16px;overflow:hidden;background:#0d0b1a;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.un-box.un-full{width:100%;aspect-ratio:auto;height:min(78vh,760px);min-height:320px}
.un-box:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;border-radius:0}
.un-box:-webkit-full-screen{width:100vw;height:100vh;aspect-ratio:auto;border-radius:0}
.un-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#000}
.un-load{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px;text-align:center;color:#e2e8f0;font:700 .95rem 'Montserrat',sans-serif;background:#0d0b1a}
.un-load small{color:#94a3b8;font:600 .78rem 'Montserrat',sans-serif}
.un-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.un-bar .un-score{margin-left:auto}
.un-sdk{color:#94a3b8;font:700 .74rem 'Montserrat',sans-serif}
.un-sdk.ok{color:#86efac}
.un-sdk.warn{color:#fde68a}
.un-note{padding:10px 12px;border-radius:12px;background:rgba(250,204,21,.1);border:1px solid rgba(250,204,21,.3);color:#fde68a;font:600 .8rem/1.45 'Montserrat',sans-serif}
.un-note a{color:#fff}
.un-note[hidden],.un-room[hidden],.un-top[hidden],.un-mod-link[hidden]{display:none}
.un-room{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:14px;background:rgba(56,189,248,.08);border:1px solid rgba(56,189,248,.22)}
.un-room-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font:800 .9rem 'Montserrat',sans-serif}
.un-room-h small{color:#94a3b8;font:600 .76rem 'Montserrat',sans-serif}
.un-room-h code{padding:.05rem .45rem;border-radius:6px;background:rgba(255,255,255,.1);font:700 .85rem ui-monospace,Consolas,monospace;letter-spacing:.06em}
.un-room-a{display:flex;flex-wrap:wrap;gap:6px}
.un-seats{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.un-seats li{padding:.3rem .65rem;border-radius:999px;background:rgba(255,255,255,.07);font:600 .8rem 'Montserrat',sans-serif}
.un-seats li.me{background:rgba(155,109,255,.25)}
.un-seats small{color:#94a3b8}
.un-badge{color:#7dd3fc !important}
.un-url-hint{margin-top:-4px;font:600 .76rem/1.4 'Montserrat',sans-serif}
.un-url-hint.ok{color:#86efac}
.un-url-hint.bad{color:#fca5a5}
.un-ed .st-f select{width:100%;box-sizing:border-box;padding:.55rem .7rem;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.25);color:#fff;font:600 .9rem 'Montserrat',sans-serif}
.un-ed .st-f select option{background:#16122e}
.un-ed .un-f2 .st-f:first-child{width:auto;flex:1}
.un-top-list{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
.un-top-list li{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:10px;background:rgba(255,255,255,.04);font:600 .85rem 'Montserrat',sans-serif}
.un-top-list li a{color:inherit;text-decoration:none}
.un-top-list li b{margin-left:auto;color:#fde68a}
.un-top-pl{width:26px;text-align:center}
.un-got{font-style:normal;color:#86efac}
.un-mod-url{word-break:break-all;color:#7dd3fc !important}
.un-steps{margin:0;padding-left:1.3rem;display:flex;flex-direction:column;gap:12px;color:#e2e8f0;font:500 .9rem/1.55 'Montserrat',sans-serif}
.un-steps b{font-weight:800}
.un-steps .st-btn{margin:4px 6px 4px 0}
.un-pre{margin:6px 0;padding:10px 12px;border-radius:10px;background:rgba(0,0,0,.35);overflow:auto;color:#c4b5fd;font:500 .78rem/1.5 ui-monospace,Consolas,monospace;white-space:pre}
.un-help code,.un-p code{padding:0 .3rem;border-radius:5px;background:rgba(255,255,255,.08);font:600 .82em ui-monospace,Consolas,monospace}
.un-p{margin:0;color:#cbd5e1;font:500 .88rem/1.55 'Montserrat',sans-serif}
ul.un-p{padding-left:1.2rem;display:flex;flex-direction:column;gap:4px}
.un-help a,.un-steps a{color:var(--accent,#a78bfa)}
@media(max-width:640px){
  .un-box.un-full{height:calc(100dvh - 240px);min-height:320px}
  .un-bar .un-score{margin-left:0}
}

/* ── «Мир Денчика»: район участков — стройка базы (js/games/mir-base.js) ── */
.mb-hud{position:absolute;inset:0;pointer-events:none;z-index:3;font-family:'Montserrat',system-ui,sans-serif}
.mb-hud>*{pointer-events:auto}
.mb-hud>.mb-tags{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.mb-hud [hidden]{display:none!important}
.mb-tag,.mb-bub{position:absolute;left:0;top:0;will-change:transform;white-space:nowrap}
.mb-tag{display:grid;gap:3px;justify-items:center;padding:4px 8px 5px;border-radius:9px;background:rgba(12,10,24,.78);color:#fff;font-size:11px;pointer-events:none}
.mb-tag b{font-weight:800}
.mb-tag i{display:block;width:62px;height:5px;border-radius:4px;background:rgba(255,255,255,.2);overflow:hidden}
.mb-tag u{display:block;height:100%;background:linear-gradient(90deg,#facc15,#4ade80);text-decoration:none}
.mb-bub{pointer-events:auto;border:2px solid #fff;border-radius:999px;padding:4px 10px;background:linear-gradient(180deg,#f97316,#c2410c);color:#fff;font:800 12px 'Montserrat',sans-serif;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.35);animation:mbBub 1.6s ease-in-out infinite}
@keyframes mbBub{50%{margin-top:-4px}}
.mb-fab{position:absolute;left:10px;top:10px;display:flex;align-items:center;gap:.3rem;border:2px solid #fde68a;border-radius:12px;padding:.45rem .8rem;background:linear-gradient(180deg,#f59e0b,#b45309);color:#fff;font:800 .82rem 'Montserrat',sans-serif;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.mb-top{position:absolute;left:50%;top:8px;transform:translateX(-50%);width:max-content;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;justify-content:center;max-width:calc(100% - 16px);padding:.35rem .45rem;border-radius:12px;background:rgba(17,14,32,.88);border:1px solid var(--border);color:#fff;font-size:.78rem}
.mb-res{padding:.2rem .5rem;border-radius:8px;background:rgba(255,255,255,.07);white-space:nowrap}
.mb-res b{font-weight:800}
.mb-top button{border:1px solid var(--border);background:rgba(255,255,255,.08);color:#fff;border-radius:9px;padding:.3rem .6rem;font:800 .74rem 'Montserrat',sans-serif;cursor:pointer}
.mb-top .mb-done{background:#16a34a;border-color:#22c55e}
.mb-top .mb-gift{background:#a855f7;border-color:#c084fc;animation:mbBub 1.6s ease-in-out infinite}
.mb-sel{position:absolute;right:8px;top:54px;width:min(calc(100% - 16px),330px);max-height:calc(100% - 200px);overflow:auto;padding:.6rem .7rem;border-radius:14px;background:rgba(17,14,32,.95);border:1px solid var(--border);color:#e5e7eb;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.mb-sh{display:flex;align-items:center;gap:.5rem;font-size:.92rem;color:#fff}
.mb-sel p{margin:.4rem 0 0;font-size:.76rem;line-height:1.5;color:#d1d5db}
.mb-sel .wld-acts button[disabled]{opacity:.55;cursor:not-allowed}
.mb-ghost{position:absolute;left:50%;bottom:136px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 16px);display:flex;align-items:center;gap:.35rem;padding:.35rem;border-radius:12px;background:rgba(17,14,32,.9);border:1px solid var(--border)}
.mb-ghost button{white-space:nowrap;border:1px solid var(--border);background:rgba(255,255,255,.08);color:#fff;border-radius:9px;padding:.4rem .7rem;font:800 .8rem 'Montserrat',sans-serif;cursor:pointer}
.mb-ghost .ct-start{border:none}
.mb-why{max-width:46vw;color:#fca5a5;font-size:.72rem;font-weight:700;padding:0 .2rem}
.mb-why:empty{display:none}
.mb-cat{position:absolute;left:8px;right:8px;bottom:8px;padding:.4rem .45rem .5rem;border-radius:14px;background:rgba(17,14,32,.92);border:1px solid var(--border)}
.mb-tabs{display:flex;align-items:center;gap:.3rem;margin-bottom:.35rem;overflow-x:auto;scrollbar-width:none}
.mb-tabs button{flex:none;border:1px solid var(--border);background:rgba(255,255,255,.05);color:var(--muted);border-radius:999px;padding:.25rem .65rem;font:800 .72rem 'Montserrat',sans-serif;cursor:pointer}
.mb-tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}
.mb-lim{margin-left:auto;flex:none;font-size:.7rem;color:var(--muted);padding-right:.2rem}
.mb-cards{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.15rem;scrollbar-width:thin;overscroll-behavior:contain}
.mb-card{flex:none;width:92px;display:grid;justify-items:center;gap:1px;padding:.35rem .25rem;border-radius:11px;border:1.5px solid var(--border);background:rgba(255,255,255,.05);color:#fff;cursor:pointer;font-family:'Montserrat',sans-serif;position:relative}
.mb-card:hover{border-color:var(--accent)}
.mb-card.on{border-color:#facc15;background:rgba(250,204,21,.14)}
.mb-card.poor .mb-cc{color:#fca5a5}
.mb-card[disabled]{opacity:.5;cursor:not-allowed}
.mb-ce{font-size:1.45rem;line-height:1.2}
.mb-card b{font-size:.68rem;line-height:1.15;text-align:center;font-weight:800}
.mb-cc{font-size:.64rem;color:#fde68a;font-weight:700;white-space:nowrap}
.mb-cn{position:absolute;top:3px;right:5px;font-size:.58rem;color:var(--muted);font-weight:700}
.mb-note{position:absolute;left:50%;top:54px;transform:translateX(-50%);width:max-content;max-width:min(92%,460px);padding:.45rem .8rem;border-radius:10px;background:rgba(12,10,24,.85);color:#fde68a;font-size:.74rem;font-weight:700;text-align:center;pointer-events:none}
.mb-small{font-size:.72rem!important;color:#fde68a!important}
.mb-streets{max-height:180px;overflow:auto}
.wld-wrap.mb-building .e-btns,.wld-wrap.mb-building .wld-log,.wld-wrap.mb-building .e-stam{display:none}
@media (max-width:640px){
  .mb-fab span{display:none}
  .mb-card{width:78px}
  .mb-sel{max-height:40%}
  .mb-top{font-size:.7rem;gap:.25rem}
}
body:not(.high) .mb-bub,body:not(.high) .mb-top .mb-gift{animation:none}

/* ═══ 💎 Магазин кристаллов (#/shop — js/features/shop.js, js/core/premium.js): значок в шапке, витрина, окно оплаты ═══ */
.nav-gems{flex:none;display:inline-flex;align-items:center;gap:.25rem;height:38px;padding:0 .7rem;margin-left:.45rem;border-radius:12px;
  border:1px solid rgba(255,209,102,.35);background:rgba(255,209,102,.06);color:#ffe08a;font:800 .78rem 'Montserrat',sans-serif;text-decoration:none;white-space:nowrap}
.nav-gems:hover{border-color:rgba(255,209,102,.7);background:rgba(255,209,102,.12)}
.nav-gems[hidden]{display:none}
.nav-gems b:empty{display:none}
@media(max-width:640px){.nav-gems{display:none!important}}
@media(min-width:1181px){body.is-authed .nav-links a.nav-shop{display:none}}
.nav-links a.nav-shop{color:#ffe08a}
.shp-load{padding:2rem 0;text-align:center;color:var(--muted);font-size:.85rem}
.shp-head{display:flex;gap:1.1rem;align-items:center;flex-wrap:wrap}
.shp-gem{font-size:3rem;line-height:1;filter:drop-shadow(0 10px 26px rgba(120,200,255,.45))}
.shp-head-body{flex:1;min-width:240px}
.shp-head-body h3{font-family:var(--font-display);font-weight:600;font-size:1.25rem;letter-spacing:.02em;margin-bottom:.35rem}
.shp-head-body p{font-size:.82rem;color:rgba(var(--text-rgb),.82);line-height:1.6}
.shp-note{margin-top:.6rem;padding:.55rem .8rem;border-radius:10px;background:rgba(255,209,102,.08);border:1px solid rgba(255,209,102,.25);font-size:.78rem;color:#ffe08a}
.shp-note a{color:var(--text-hi);text-decoration:underline}
.shp-wallet{display:flex;flex-direction:column;align-items:center;gap:.2rem;min-width:130px;text-align:center}
.shp-wallet small{font-size:.7rem;color:var(--muted)}
.shp-wallet .shp-warn{color:#ffb020}
.shp-bal{font-family:var(--font-display);font-size:1.7rem;font-weight:600;color:#bfe6ff;white-space:nowrap}
.shp-ways{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}
.shp-way-top{display:flex;gap:.7rem;align-items:flex-start;margin-bottom:.8rem}
.shp-flag{font-size:1.6rem;line-height:1.1}
.shp-way h4{font-size:.95rem;font-weight:800;margin-bottom:.25rem}
.shp-way p{font-size:.78rem;color:var(--muted);line-height:1.55}
.shp-packs{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}
.shp-pack{position:relative;display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.8rem .4rem .7rem;border-radius:14px;cursor:pointer;
  border:1.5px solid rgba(145,200,255,.22);background:linear-gradient(180deg,rgba(120,190,255,.08),rgba(var(--fg-rgb),.02));color:var(--text);font-family:'Montserrat',sans-serif;
  transition:transform .2s var(--ease-spring),border-color .2s}
.shp-pack:hover{transform:translateY(-2px);border-color:rgba(145,200,255,.6)}
.shp-pack[aria-disabled="true"]{opacity:.65}
.shp-pack-gems{font-family:var(--font-display);font-size:1.15rem;font-weight:600;color:#cfeaff;white-space:nowrap}
.shp-pack small{font-size:.62rem;color:var(--muted);text-align:center;line-height:1.3}
.shp-pack b{margin-top:.25rem;font-size:.82rem;color:var(--text-hi)}
.shp-bonus{position:absolute;top:-8px;right:-4px;padding:.1rem .4rem;border-radius:999px;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;font-size:.6rem;font-weight:800}
.shp-small{font-size:.72rem;color:var(--muted);line-height:1.55;margin-top:.6rem}
.shp-small a,.shp-steps a:not(.dl-copy),.shp-legal a{color:var(--text);text-decoration:underline;text-underline-offset:3px}
.shp-soon{margin-top:.7rem;padding:.6rem .8rem;border-radius:10px;background:rgba(var(--fg-rgb),.04);border:1px dashed var(--line-hi);font-size:.76rem;color:var(--muted)}
.shp-don-table{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.7rem}
.shp-don-table span{padding:.3rem .6rem;border-radius:999px;background:rgba(var(--fg-rgb),.04);border:1px solid var(--border);font-size:.72rem;color:var(--muted)}
.shp-don-table b{color:#cfeaff}
.shp-mode{display:grid;grid-template-columns:1fr 1fr;gap:.45rem;margin-bottom:.7rem}
.shp-mode button{display:flex;flex-direction:column;gap:.15rem;text-align:left;padding:.6rem .7rem;border-radius:12px;cursor:pointer;border:1.5px solid var(--border);
  background:rgba(var(--fg-rgb),.03);color:var(--text);font-family:'Montserrat',sans-serif}
.shp-mode button b{font-size:.8rem}
.shp-mode button small{font-size:.66rem;color:var(--muted);line-height:1.35}
.shp-mode button.on{border-color:#ffd166;background:rgba(255,209,102,.1)}
.shp-steps{padding-left:1.2rem;display:flex;flex-direction:column;gap:.45rem;font-size:.8rem;line-height:1.55;margin:.2rem 0 .9rem}
.shp-login{color:var(--gold-t);user-select:all;word-break:break-all}
.shp-don-btn{width:100%;text-decoration:none}
.shp-h{font-family:var(--font-display);font-weight:600;font-size:1.15rem;letter-spacing:.04em;text-transform:uppercase;margin:1.6rem 0 .3rem}
.shp-spend-note{margin:0 0 .6rem}
.shp-block{margin-top:1rem}
.shp-block-head{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;flex-wrap:wrap;margin-bottom:.7rem}
.shp-block-head b{font-size:.92rem}
.shp-block-head span{font-size:.72rem;color:var(--muted)}
.shp-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem}
.shp-item{display:flex;flex-direction:column;gap:.2rem;padding:.75rem .8rem;border-radius:12px;background:rgba(var(--fg-rgb),.03);border:1px solid var(--border)}
.shp-item b{font-size:.8rem}
.shp-item small{font-size:.66rem;color:var(--muted)}
.shp-item .pf-btn{margin-top:.35rem}
.shp-item .pf-btn:disabled,.shp-gift .pf-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.shp-price{font-family:var(--font-display);font-size:1.05rem;font-weight:600;color:#cfeaff}
.shp-gift{display:flex;gap:.45rem;flex-wrap:wrap}
.shp-gift input{flex:1;min-width:160px;background:rgba(var(--fg-rgb),.06);border:1.5px solid var(--border);border-radius:9px;padding:.5rem .7rem;color:var(--text);font:600 .8rem 'Montserrat',sans-serif;outline:none}
.shp-gift input:focus{border-color:var(--tw)}
.shp-row{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.5rem 0;border-top:1px solid var(--line);font-size:.76rem}
.shp-row:first-of-type{border-top:0}
.shp-row small{color:var(--muted);margin-right:.3rem}
.shp-row .plus{color:#4ade80;font-weight:800;white-space:nowrap}
.shp-row .minus{color:#fca5a5;font-weight:800;white-space:nowrap}
.shp-row button{border:none;border-radius:8px;padding:.4rem .7rem;font:700 .7rem 'Montserrat',sans-serif;cursor:pointer;color:#fff}
.shp-wait{color:#ffe08a}
.shp-parents ul{padding-left:1.1rem;display:flex;flex-direction:column;gap:.4rem;font-size:.78rem;color:rgba(var(--text-rgb),.82);line-height:1.55}
.shp-parents ul a{color:var(--text);text-decoration:underline}
.shp-legal{margin-top:.8rem;font-size:.72rem;color:var(--muted)}
.shp-adm-sec{padding:.7rem 0;border-top:1px solid var(--line)}
.shp-adm-sec:first-child{border-top:0;padding-top:0}
.shp-adm-sec>b{display:block;font-size:.8rem;margin-bottom:.4rem}
.shp-adm-hist{margin:0 0 .5rem 1rem;padding-left:.6rem;border-left:2px solid var(--line-hi)}
.shp-adm-set{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.5rem .8rem;align-items:end;font-size:.74rem;color:var(--muted)}
.shp-adm-set label{display:flex;flex-direction:column;gap:.25rem}
.shp-adm-set label:has(input[type=checkbox]){flex-direction:row;align-items:center;gap:.4rem}
.shp-adm-set input[type=number]{background:rgba(var(--fg-rgb),.06);border:1.5px solid var(--border);border-radius:8px;padding:.45rem .6rem;color:var(--text);font:600 .8rem 'Montserrat',sans-serif}
.shp-overlay{position:fixed;inset:0;z-index:9600;display:none;align-items:center;justify-content:center;padding:1rem;background:rgba(0,0,0,.78);backdrop-filter:blur(8px)}
.shp-overlay.open{display:flex}
.shp-modal{width:100%;max-width:440px;max-height:calc(100dvh - 2rem);overflow-y:auto;padding:1.4rem;border-radius:18px;background:var(--card);border:1px solid rgba(145,200,255,.3);box-shadow:0 30px 80px -20px rgba(0,0,0,.8)}
.shp-modal h4{font-size:1.05rem;font-weight:800;margin-bottom:.9rem}
.shp-modal p{font-size:.82rem;line-height:1.6}
.shp-methods{display:flex;flex-direction:column;gap:.4rem}
.shp-method{display:flex;gap:.6rem;align-items:flex-start;padding:.6rem .7rem;border-radius:12px;border:1.5px solid var(--border);background:rgba(var(--fg-rgb),.03);cursor:pointer}
.shp-method:has(input:checked){border-color:#7cc4ff;background:rgba(124,196,255,.08)}
.shp-method input{margin-top:.2rem;accent-color:#7cc4ff}
.shp-method span{display:flex;flex-direction:column;gap:.1rem}
.shp-method b{font-size:.82rem}
.shp-method small{font-size:.68rem;color:var(--muted)}
.shp-consent{display:flex;gap:.55rem;align-items:flex-start;margin-top:.9rem;padding:.6rem .7rem;border-radius:12px;background:rgba(255,209,102,.07);border:1px solid rgba(255,209,102,.25);font-size:.78rem;line-height:1.5;cursor:pointer}
.shp-consent input{margin-top:.2rem;width:18px;height:18px;flex:none;accent-color:#ffd166}
.shp-modal-err{min-height:1rem;margin-top:.5rem;font-size:.76rem;color:#fca5a5}
.shp-modal-act{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap;margin-top:1rem}
.shp-modal-act .pf-btn{text-decoration:none}
@media(max-width:820px){.shp-ways{grid-template-columns:1fr}}
@media(max-width:560px){.shp-head .shp-gem{display:none}.shp-head-body{min-width:0}}
@media(max-width:820px) and (min-width:561px){.shp-packs{grid-template-columns:repeat(5,1fr)}}
@media(max-width:480px){.shp-mode{grid-template-columns:1fr}.shp-packs{grid-template-columns:repeat(2,1fr)}.shp-pack:last-child:nth-child(odd){grid-column:span 2}.shp-wallet{flex-direction:row;flex-wrap:wrap;justify-content:center;width:100%}.shp-items{grid-template-columns:1fr 1fr}}
/* 💎 в своём профиле (блок «Логин для доната») и на плашке «Мой персонаж» в играх */
.pg-box{margin-top:.8rem;padding-top:.75rem;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.55rem}
.pg-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;font-size:.85rem}
.pg-row b{color:#cfeaff;font-size:1rem}
.pg-mode{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;font-size:.72rem;color:var(--muted)}
.pg-mode button{min-height:34px;padding:.3rem .7rem;border-radius:9px;border:1px solid var(--border);background:rgba(var(--fg-rgb),.04);color:var(--text);font:700 .72rem 'Montserrat',sans-serif;cursor:pointer}
.pg-mode button.on{border-color:#ffd166;background:rgba(255,209,102,.12);color:#ffe08a}
.gm-gems{color:#cfeaff;text-decoration:none;white-space:nowrap}
.gm-gems:hover{text-decoration:underline}

/* ═══ Полный экран игр, ⚙️ Настройки, меню паузы (js/core/fullscreen.js, js/core/settings.js) — классы gs-* ═══ */
/* Полный экран: игра закреплена во всё окно, сайт вокруг спрятан. Предки — без transform/z-index (иначе fixed — от них) */
html.gs-full,html.gs-full body{overflow:hidden!important;overscroll-behavior:none}
html.gs-full #nav,html.gs-full #bottomTabbar,html.gs-full #perfToggle,html.gs-full #scrollTop,html.gs-full #donateFab,html.gs-full #readProgress,
html.gs-full #pwaBanner,html.gs-full .d37-live,html.gs-full #cursorTrail,html.gs-full #cursorDot,html.gs-full .chat-toast,
html.gs-full #gamesSupport,html.gs-full #gamesAd{display:none!important}
.gs-anc{transform:none!important;filter:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;perspective:none!important;contain:none!important;will-change:auto!important;z-index:auto!important;opacity:1!important;animation:none!important}
.gs-fs{position:fixed!important;inset:0!important;margin:0!important;max-width:none!important;width:auto!important;height:auto!important;border-radius:0!important}
#gamesStage.gs-fs,.un-box.gs-fs{z-index:9100}
/* шапка игры остаётся сверху, игра — всё остальное */
#gamesStage.gs-fs{display:flex;flex-direction:column;gap:6px;border:0;background:#0b0a14;
  padding:max(6px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
#gamesStage.gs-fs[hidden]{display:none}
#gamesStage.gs-fs>.gm-stage-bar{margin:0;flex:none}
#gamesStage.gs-fs #gamesStageBox{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain}
/* телефон лёжа: игра выше экрана — уменьшена целиком (games.js gamesFit) */
#gamesStage.gs-fs #gamesStageBox.gm-fit{transform-origin:50% 0;overflow:visible}
html.gs-compact #gamesStage.gs-fs #gamesStageBox:not(.gm-fit){overflow-x:hidden}
/* «Мир Денчика»: своя панель — шапка игры не нужна; панель мира — полоской сверху, чат — снизу, 3D — всё между */
#gamesStage.gs-fs.gm-own-bar{padding:0;gap:0}
#gamesStage.gs-fs.gm-own-bar>.gm-stage-bar{display:none}
#gamesStage.gs-fs.gm-own-bar #gamesStageBox{overflow:hidden}
.gs-fs .wld{height:100%;gap:0}
.gs-fs .wld-top{flex:none;padding:max(6px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 6px max(10px,env(safe-area-inset-left));background:#0e0c1a;border-bottom:1px solid rgba(255,255,255,.07)}
.gs-fs .wld-wrap{flex:1;height:auto!important;min-height:0!important;border-radius:0}
.gs-fs .wld-bar{flex:none;padding:6px max(10px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:#0e0c1a}
#gamesStage.gs-fs:not(.gm-own-bar) .wld-wrap{border-radius:10px}
/* у «Мира», «Кубомира» (своя панель, gm-own-bar) и «Подземья» (своё меню, gm-own-menu) ⚙️ 🔄 ⛶ — в их меню ☰ (одно место на действие), в шапке игры их нет */
#gamesStage:is(.gm-own-bar,.gm-own-menu)>.gm-stage-bar :is(.gs-setbtn,.gs-rotbtn,.gs-fullbtn){display:none!important}
/* узкий экран во весь экран: панель мира — одной строкой (название прячем, остаётся «👥 N игроков» и кнопки) */
@media(max-width:560px){.gs-fs .wld-top{flex-wrap:nowrap;gap:.4rem}.gs-fs .wld-top>b,.gs-fs .wldShard{display:none}.gs-fs .wldOnline{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.gs-fs .wld-topbtns{gap:4px}.gs-fs .wld-topbtns button{padding:.35rem .5rem}}
/* «Орда»: холст — во всё место (размер считает horde.js), подсказка под полем не нужна */
.gs-fs .hd{height:100%;gap:0}
.gs-fs .hd-note{display:none}
.gs-fs .hd-wrap{border-radius:10px}
/* Unity-игра: окно игры без своей формы — во весь экран; выход — кнопка поверх (gs-exit) */
.un-box.gs-fs{aspect-ratio:auto!important;background:#000}
.gs-exit{position:absolute;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));z-index:6;width:42px;height:42px;border-radius:12px;border:1px solid rgba(255,255,255,.25);background:rgba(10,8,20,.6);color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}
/* «Студия 3D» и так во всё окно — полный экран убирает панели браузера; вырез экрана — отступами */
.s3.gs-fs{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#1b1d24}
.s3 .gs-s3{display:inline-flex;gap:4px;align-items:center}
.s3 .gs-s3 button{display:inline-flex;align-items:center;justify-content:center;min-width:34px}

/* Кнопки ⛶ / ⚙️ / 🔄 */
.gs-ico{display:block;flex:none}
.gs-fullbtn,.gs-setbtn,.gs-rotbtn{display:inline-flex;align-items:center;justify-content:center;gap:.3rem}
.gm-stage-bar .gs-fullbtn.on{border-color:var(--accent);color:#fff}
.gs-rotbtn{display:none!important}
@media (pointer:coarse) and (orientation:portrait){.gs-rotbtn{display:inline-flex!important}}
.gs-chatbtn{display:none!important}
/* узкий телефон: в шапке игры место для ⚙️ ⛶ 🔄 — подпись «Вызов» прячем (значок 📣 остаётся) */
@media(max-width:430px){.gm-stage-bar .gm-chal span{display:none}}

/* Телефон лёжа (html.gs-compact): шапка игры — узкой колонкой слева, у «Мира» — значки поверх 3D справа, чат — по 💬 */
html.gs-compact #gamesStage.gs-fs:not(.gm-own-bar){flex-direction:row;padding-top:max(4px,env(safe-area-inset-top));padding-bottom:max(4px,env(safe-area-inset-bottom))}
html.gs-compact #gamesStage.gs-fs:not(.gm-own-bar)>.gm-stage-bar{flex-direction:column;justify-content:flex-start;align-items:center;width:44px;gap:6px;overflow-y:auto;scrollbar-width:none}
html.gs-compact #gamesStage.gs-fs .gm-stage-bar>b,html.gs-compact #gamesStage.gs-fs .gm-stage-bar button span{display:none}
html.gs-compact #gamesStage.gs-fs .gm-stage-bar button{width:40px;min-width:40px;height:40px;padding:0;display:grid;place-items:center}
html.gs-compact .gs-fs .wld{position:relative}
html.gs-compact .gs-fs .wld-wrap{position:absolute;inset:0}
html.gs-compact .gs-fs .wld-top{position:absolute;top:0;right:0;z-index:8;flex-wrap:nowrap;gap:6px;padding:max(4px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) 0 0;background:none;border:0;pointer-events:none}
html.gs-compact .gs-fs .wld-top>b,html.gs-compact .gs-fs .wldShard{display:none}
html.gs-compact .gs-fs .wldOnline{background:rgba(10,8,24,.6);color:#e5e7eb;border-radius:9px;padding:.2rem .5rem;font-size:.66rem;white-space:nowrap}
html.gs-compact .gs-fs .wld-topbtns{pointer-events:auto;gap:4px;margin-left:0}
html.gs-compact .gs-fs .wld-topbtns button{width:38px;height:38px;padding:0;display:grid;place-items:center;background:rgba(10,8,24,.62);border-color:rgba(255,255,255,.2);color:#fff}
html.gs-compact .gs-fs .wld-topbtns button span{display:none}
html.gs-compact .gs-fs .gs-chatbtn{display:grid!important}
html.gs-compact .gs-fs .wld-topbtns button.gs-chatbtn.on{background:var(--accent,#7c3aed);border-color:transparent}
html.gs-compact .gs-fs .wld-topbtns .wld-menubtn{background:var(--accent,#7c3aed);border-color:transparent}
html.gs-compact .gs-fs .wld-bar{display:none;position:absolute;z-index:8;top:calc(48px + env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));padding:6px;border-radius:12px;background:rgba(14,12,26,.94);box-shadow:0 8px 24px rgba(0,0,0,.4)}
html.gs-compact .gs-fs .wld.gs-chat .wld-bar{display:flex;flex-wrap:nowrap}
html.gs-compact .gs-fs .wld.gs-chat .wld-say{min-width:0}
/* что сверху 3D-вида — ниже значков */
html.gs-compact .gs-fs .wld-wrap .wld-hint,html.gs-compact .gs-fs .mir .mir-tb,html.gs-compact .gs-fs .wld-inv,html.gs-compact .gs-fs .mb-top{top:calc(50px + env(safe-area-inset-top))}
html.gs-compact .gs-fs .mir .wld-inv:not(.mir-tb){top:auto}
html.gs-compact .gs-fs .wld-pop{top:calc(50px + env(safe-area-inset-top));max-height:calc(100% - 58px - env(safe-area-inset-top))}
html.gs-compact .gs-fs .mb-note{top:calc(96px + env(safe-area-inset-top))}
html.gs-compact .gs-fs .mb-sel{top:calc(96px + env(safe-area-inset-top));max-height:calc(100% - 200px)}
html.gs-compact .gs-fs .mb-fab{top:max(10px,env(safe-area-inset-top));left:max(10px,env(safe-area-inset-left))}
html.gs-compact .gs-fs .wld-log{left:max(8px,env(safe-area-inset-left));max-height:34%;overflow:hidden}
/* Настройки: размер и прозрачность кнопок телефона, левша (джойстик справа — input.js), масштаб интерфейса игр.
   Подписи кнопок висят под ними — место под подписи внутри блока (иначе при увеличении их срезает край экрана) */
.e-hud .e-btns{bottom:max(2px,env(safe-area-inset-bottom));padding-bottom:16px;transform:scale(var(--gs-touch,1));transform-origin:100% 100%;opacity:var(--gs-touch-a,1)}
html.gs-lefty .e-btns{right:auto!important;left:max(12px,env(safe-area-inset-left));transform-origin:0 100%;direction:rtl}
html.gs-lefty .e-btn{direction:ltr}
.wld-top,.wld-bar,.wld-pop,.wld-inv,.wld-log,.e-hud,.mb-hud>:not(.mb-tags),.s3-hud,.gm-stage-bar{zoom:var(--gs-ui,1)}
.wld-tname{font-size:calc(13px * var(--gs-ui,1))}
.wld-tbub{font-size:calc(13px * var(--gs-ui,1))}
html.gs-notags .wld-tname,html.gs-notags .s3-tag{display:none!important}
html.gs-nobub .wld-tbub,html.gs-nobub .s3-bub{display:none!important}

/* Окно «⚙️ Настройки» (T-043: «⭐ Главное», 🔍 поиск в шапке, «↺ Сбросить» вкладки, крупно на телефоне, стрелки и геймпад) */
html.gs-set-open,html.gs-set-open body{overflow:hidden}
.gs-set{position:fixed;inset:0;z-index:100500;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));
  background:var(--gs-scrim,rgba(6,5,14,.72));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-family:'Montserrat',system-ui,sans-serif;color:var(--gs-tx,#e6e8ee);cursor:auto}
.gs-set [hidden],.gs-menu [hidden]{display:none!important}
.gs-set-box{width:min(860px,100%);height:min(680px,100%);display:flex;flex-direction:column;background:var(--gs-bg,#14121f);border:1px solid rgba(var(--fg-rgb),.1);border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.6);overflow:hidden}
.gs-set-head{display:flex;align-items:center;gap:.5rem .7rem;flex-wrap:wrap;padding:.7rem .8rem .7rem 1.1rem;border-bottom:1px solid rgba(var(--fg-rgb),.08)}
.gs-set-head b{font-size:1.08rem;white-space:nowrap}
.gs-set-head small{color:var(--gs-mut,#9ca3af);font-size:.72rem;white-space:nowrap}
.gs-set-search{flex:1 1 220px;max-width:360px;margin-left:auto;display:flex;align-items:center;gap:.45rem;height:38px;padding:0 .7rem;border-radius:11px;border:1px solid rgba(var(--fg-rgb),.12);background:rgba(var(--fg-rgb),.05);cursor:text}
.gs-set-search:focus-within{border-color:var(--accent,#7c3aed);background:rgba(var(--fg-rgb),.08)}
.gs-set-search span{font-size:.85rem;opacity:.75}
.gs-set-find{flex:1;min-width:0;height:100%;border:0;background:none;color:var(--text-hi);font:600 .86rem 'Montserrat',system-ui,sans-serif;outline:none;-webkit-appearance:none;appearance:none}
.gs-set-find::placeholder{color:var(--gs-mut,#8b8fa3)}
.gs-set-find::-webkit-search-cancel-button{filter:var(--gs-inv,invert(1));opacity:.6;cursor:pointer}
.gs-set .gs-set-find:focus-visible{outline:none}
.gs-set-x{flex:none;width:38px;height:38px;border-radius:10px;border:1px solid rgba(var(--fg-rgb),.12);background:rgba(var(--fg-rgb),.05);color:var(--gs-tx,#e6e8ee);font-size:1rem;cursor:pointer}
.gs-set-main{flex:1;min-height:0;display:grid;grid-template-columns:200px minmax(0,1fr)}
.gs-set-tabs{display:flex;flex-direction:column;gap:3px;padding:.6rem;border-right:1px solid rgba(var(--fg-rgb),.08);overflow-y:auto;scrollbar-width:none;overscroll-behavior:contain}
.gs-set-tabs::-webkit-scrollbar{display:none}
.gs-set-tabs button{display:flex;align-items:center;gap:.6rem;text-align:left;border:0;background:none;color:var(--gs-sub,#cbd5e1);padding:.62rem .75rem;border-radius:11px;font:700 .86rem 'Montserrat',system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.gs-set-tabs button span{font-size:1.05rem;width:1.3em;text-align:center}
.gs-set-tabs button:hover{background:rgba(var(--fg-rgb),.05)}
.gs-set-tabs button.on{background:var(--ac-10,rgba(124,58,237,.18));color:var(--text-hi);box-shadow:inset 3px 0 0 var(--accent,#7c3aed)}
.gs-set-tabs button[data-tab="main"]:not(.on){color:var(--gs-main,#fde68a)}
.gs-set-body{overflow-y:auto;padding:.2rem 1.2rem 1.2rem;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scroll-padding:12px}
.gs-sec{margin:1.1rem 0 .1rem;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gs-acc,#a78bfa)}
.gs-sec small{text-transform:none;letter-spacing:0;color:var(--gs-mut,#9ca3af);font-weight:600}
.gs-row{display:flex;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid rgba(var(--fg-rgb),.06)}
.gs-row.dis{opacity:.5}
.gs-lbl{flex:1;min-width:0}
.gs-lbl b{display:block;font-size:.9rem;font-weight:700}
.gs-lbl small{display:block;color:var(--gs-mut,#9ca3af);font-size:.74rem;line-height:1.45;margin-top:.18rem}
.gs-ctl{flex:none;display:flex;justify-content:flex-end;max-width:64%}
/* много вариантов (5+) — под названием во всю ширину: подсказка остаётся в одну строку */
.gs-row:has(.gs-seg>:nth-child(5)){flex-wrap:wrap;gap:.55rem}
.gs-row:has(.gs-seg>:nth-child(5)) .gs-lbl{flex-basis:100%}
.gs-row:has(.gs-seg>:nth-child(5)) .gs-ctl{width:100%;max-width:none;justify-content:flex-start}
.gs-row:has(.gs-seg>:nth-child(5)) .gs-seg{justify-content:flex-start}
.gs-seg{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:3px;padding:3px;border-radius:12px;background:rgba(var(--fg-rgb),.06)}
.gs-seg button{border:0;background:none;color:var(--gs-sub,#cbd5e1);padding:.45rem .72rem;border-radius:9px;font:700 .78rem 'Montserrat',system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.gs-seg button:hover:not(:disabled){color:var(--text-hi);background:rgba(var(--fg-rgb),.06)}
.gs-seg button.on{background:var(--accent,#7c3aed);color:#fff}
.gs-seg button:disabled{cursor:not-allowed}
.gs-sw{position:relative;display:inline-block;width:50px;height:28px;flex:none}
.gs-sw input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
.gs-sw i{position:absolute;inset:0;border-radius:99px;background:rgba(var(--fg-rgb),.16);transition:background .2s}
.gs-sw i::after{content:'';position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.4);transition:transform .2s}
.gs-sw input:checked+i{background:var(--accent,#7c3aed)}
.gs-sw input:checked+i::after{transform:translateX(22px)}
.gs-sw input:focus-visible+i{outline:2px solid var(--text-hi);outline-offset:2px}
.gs-range{display:flex;align-items:center;gap:.7rem;width:min(260px,46vw)}
.gs-range.dis{opacity:.45}
.gs-range input{flex:1;min-width:0;accent-color:var(--accent,#7c3aed);height:28px}
.gs-range output{min-width:3.4em;text-align:right;font-weight:800;font-size:.82rem;white-space:nowrap}
.gs-range output small{font-weight:600;color:var(--gs-mut,#9ca3af)}
.gs-vol{display:flex;align-items:center;gap:.8rem}
.gs-vol .gs-range{width:min(250px,44vw)}
.gs-note{color:var(--gs-mut,#9ca3af);font-size:.76rem;line-height:1.5;margin:.9rem 0 0}
.gs-btn{border:1px solid rgba(var(--fg-rgb),.16);background:rgba(var(--fg-rgb),.06);color:var(--gs-tx,#e6e8ee);border-radius:10px;padding:.55rem .95rem;font:700 .8rem 'Montserrat',system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.gs-btn:hover{background:rgba(var(--fg-rgb),.1)}
.gs-btn.primary{background:var(--accent,#7c3aed);border-color:transparent;color:#fff}
.gs-btn.ghost{background:none}
.gs-set-foot{display:flex;align-items:center;gap:.6rem;padding:.7rem 1.1rem;border-top:1px solid rgba(var(--fg-rgb),.08)}
.gs-grow{flex:1}
/* 🔍 поиск: вкладки секциями, у каждой — заголовок-ссылка «вкладка →»; подзаголовки и заметки вкладок не нужны */
.gs-sres{margin-top:.5rem}
.gs-sres-h{display:flex;align-items:center;gap:.5rem;width:100%;margin:.5rem 0 0;padding:.4rem 0;border:0;background:none;color:var(--gs-acc,#a78bfa);font:800 .72rem 'Montserrat',system-ui,sans-serif;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;text-align:left}
.gs-sres-h span{font-size:.95rem}
.gs-sres-h i{font-style:normal;margin-left:auto;opacity:.7}
.gs-sres-h:hover{color:var(--gs-acc2,#c4b5fd)}
.gs-sres .gs-sec,.gs-sres .gs-note,.gs-sres .gs-keyh,.gs-sres .gs-keynote{display:none}
.gs-sempty{margin-top:1.6rem!important;text-align:center}
/* фокус: клавиатура — рамка; геймпад (класс gs-pad у окна или меню) — рамка у любого фокуса */
.gs-set :focus-visible,.gs-menu :focus-visible{outline:2px solid #a78bfa;outline-offset:2px}
.gs-pad :focus{outline:3px solid #a78bfa!important;outline-offset:2px}
.gs-pad .gs-sw input:focus+i{outline:3px solid #a78bfa;outline-offset:3px}
.gs-keyg{margin-top:.5rem}
.gs-keyh{font-size:.74rem;font-weight:800;color:var(--gs-sub,#cbd5e1);margin:.6rem 0 .25rem}
.gs-krow{display:grid;grid-template-columns:minmax(0,1fr) 112px 112px 34px;gap:6px;align-items:center;padding:3px 0;font-size:.8rem}
.gs-krow>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gs-tx,#e6e8ee)}
.gs-key{height:32px;border-radius:9px;border:1px solid rgba(var(--fg-rgb),.14);background:rgba(var(--fg-rgb),.05);color:var(--text-hi);font:700 .76rem 'Montserrat',system-ui,sans-serif;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 .4rem}
.gs-key:hover:not(:disabled){border-color:rgba(var(--fg-rgb),.5);background:rgba(var(--fg-rgb),.09)}
.gs-key:disabled{opacity:.55;cursor:not-allowed}
.gs-key.cap{border-color:#facc15;color:#fde68a;background:rgba(250,204,21,.12);animation:gsBlink 1s ease-in-out infinite}
.gs-key.bad{border-color:#ef4444;color:#fca5a5}
@keyframes gsBlink{50%{background:rgba(250,204,21,.03)}}
.gs-kreset{width:34px;height:32px;border-radius:9px;border:1px solid rgba(var(--fg-rgb),.12);background:none;color:var(--gs-sub,#cbd5e1);cursor:pointer}
.gs-kreset:disabled{opacity:.25;cursor:default}
.gs-keynote{margin:.7rem 0 .2rem;padding:.55rem .75rem;border-radius:10px;background:rgba(34,197,94,.12);color:var(--gs-ok,#bbf7d0);font-size:.78rem;line-height:1.45}
.gs-keynote.warn{background:rgba(239,68,68,.12);color:var(--gs-bad,#fecaca)}
.gs-navset{cursor:pointer}
/* палец: всё, что нажимают, — не меньше 40–44 px; поле поиска 16px — iPhone не приближает страницу при вводе */
@media (pointer:coarse){
  .gs-set-tabs button{min-height:44px}
  .gs-seg button{min-height:40px;padding:.5rem .8rem}
  .gs-btn{min-height:44px}
  .gs-set-x{width:44px;height:44px}
  .gs-set-search{height:44px}
  .gs-set-find{font-size:16px}
  .gs-sw{width:56px;height:32px}
  .gs-sw i::after{width:26px;height:26px}
  .gs-sw input:checked+i::after{transform:translateX(24px)}
  .gs-range input{height:40px}
  .gs-key,.gs-kreset{height:42px}
  .gs-row{padding:.85rem 0}
}
/* телефон: окно на весь экран, без размытия под ним (мир за окном рисуется дальше — размытие каждый кадр стоило бы дорого) */
@media(max-width:640px),(max-height:520px){
  .gs-set{padding:0;align-items:stretch;background:var(--gs-bg,#14121f);-webkit-backdrop-filter:none;backdrop-filter:none}
  .gs-set-box{width:100%;height:100%;border-radius:0;border:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
}
@media(max-width:640px){
  .gs-set-head{padding:.55rem .7rem .6rem .9rem}
  .gs-set-head small{display:none}
  .gs-set-x{margin-left:auto}
  .gs-set-search{order:3;flex-basis:100%;max-width:none;margin-left:0}
  .gs-set-main{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}
  .gs-set-tabs{flex-direction:row;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid rgba(var(--fg-rgb),.08);padding:.45rem;scroll-snap-type:x proximity;touch-action:pan-x}
  .gs-set-tabs button{flex:none;padding:.5rem .7rem;scroll-snap-align:center}
  .gs-set-tabs button.on{box-shadow:inset 0 -3px 0 var(--accent,#7c3aed)}
  .gs-set-body{padding:.1rem .9rem 1rem}
  .gs-row{flex-wrap:wrap;gap:.5rem}
  .gs-row:has(.gs-sw):not(:has(.gs-vol)){flex-wrap:nowrap}
  .gs-ctl{max-width:100%}
  .gs-row:not(:has(.gs-sw)) .gs-ctl,.gs-row:has(.gs-vol) .gs-ctl{width:100%;justify-content:flex-start}
  .gs-seg{justify-content:flex-start}
  .gs-range,.gs-vol{width:100%}
  .gs-vol .gs-range{width:auto;flex:1}
  .gs-krow{grid-template-columns:minmax(0,1fr) 84px 84px 34px;font-size:.74rem}
  .gs-set-foot{padding:.55rem .9rem}
}
@media(max-height:520px) and (min-width:641px){
  .gs-set-main{grid-template-columns:170px minmax(0,1fr)}
  .gs-set-head,.gs-set-foot{padding-top:.45rem;padding-bottom:.45rem}
}

/* Меню игры (одно: ☰ на экране, Esc, Start геймпада): продолжить, настройки, персонаж, полный экран, как играть, выйти */
.gs-menu{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:rgba(6,5,14,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-family:'Montserrat',system-ui,sans-serif;cursor:auto}
.gs-menu-box{width:min(330px,calc(100% - 32px));max-height:calc(100% - 24px);overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:7px;padding:1rem;border-radius:18px;background:rgba(20,18,31,.96);border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 60px rgba(0,0,0,.55)}
.gs-menu-head{text-align:center;margin-bottom:.35rem;color:#fff}
.gs-menu-head b{display:block;font-size:1.12rem}
.gs-menu-head small{display:block;color:#9ca3af;font-size:.72rem;margin-top:.2rem}
.gs-menu-it{display:flex;align-items:center;gap:.7rem;padding:.72rem 1rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);color:#fff;font:700 .92rem 'Montserrat',system-ui,sans-serif;cursor:pointer;text-align:left}
.gs-menu-it:hover,.gs-menu-it:focus-visible{background:rgba(124,58,237,.32);border-color:rgba(167,139,250,.6);outline:none}
.gs-menu-it.primary{background:var(--accent,#7c3aed);border-color:transparent}
.gs-menu-it.warn{color:#fca5a5}
.gs-mi-ic{width:1.5em;text-align:center;flex:none}
/* группы пунктов (it.group) и плитки: столбцом не влезает — settings.js fit() ставит gs-mg (2 столбца) / gs-mg3 (3 столбца) */
.gs-menu-sec{grid-column:1/-1;margin:.4rem .3rem -.1rem;color:#9ca3af;font:800 .64rem 'Montserrat',system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.gs-menu-box.gs-mg{width:min(560px,calc(100% - 24px));display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:.8rem}
.gs-menu-box.gs-mg3{width:min(760px,calc(100% - 24px));grid-template-columns:1fr 1fr 1fr}
.gs-menu-box.gs-mg .gs-menu-head,.gs-menu-box.gs-mg .gs-menu-it.primary,.gs-menu-box.gs-mg .gs-menu-it.warn{grid-column:1/-1}
.gs-menu-box.gs-mg .gs-menu-head{margin-bottom:.1rem}
.gs-menu-box.gs-mg .gs-menu-it{min-height:42px;padding:.5rem .75rem;font-size:.86rem}
.gs-menu-box.gs-mg .gs-menu-sec{margin:.25rem .3rem 0}
.gs-menu-box.gs-mgc{gap:5px;padding:.6rem}
.gs-menu-box.gs-mgc .gs-menu-head b{font-size:1rem}
.gs-menu-box.gs-mgc .gs-menu-it{min-height:40px!important;padding:.35rem .55rem;gap:.45rem;font-size:.76rem;line-height:1.15}
/* палец: пункты крупнее; без размытия (3D под меню рисуется каждый кадр) */
@media (pointer:coarse){
  .gs-menu{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(6,5,14,.72)}
  .gs-menu-it{min-height:50px}
  .gs-menu-box.gs-mg .gs-menu-it{min-height:44px}
}
/* низкий экран (телефон лёжа): пункты в два столбца — меню без прокрутки */
@media (max-height:460px) and (min-width:560px){
  .gs-menu-box{width:min(560px,calc(100% - 24px));display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:.75rem}
  .gs-menu-head,.gs-menu-it.primary{grid-column:1/-1}
  .gs-menu-head{margin-bottom:.1rem}
  .gs-menu-it{min-height:44px;padding:.5rem .8rem}
}

/* 🔄 нет поворота (iPhone) — подсказка «Поверни телефон» */
.gs-rothint{position:fixed;inset:0;z-index:100400;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(6,5,14,.88);font-family:'Montserrat',system-ui,sans-serif}
.gs-rothint-box{max-width:340px;display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center;color:#fff}
.gs-rothint-box b{font-size:1.15rem}
.gs-rothint-box small{color:#cbd5e1;font-size:.8rem;line-height:1.5}
.gs-rothint-ph{font-size:64px;line-height:1;animation:gsRot 2s ease-in-out infinite}
@keyframes gsRot{0%,20%{transform:rotate(0)}50%,80%{transform:rotate(-90deg)}100%{transform:rotate(0)}}
.gs-rothint-x{margin-top:.3rem;border:0;border-radius:12px;padding:.65rem 1.4rem;background:var(--accent,#7c3aed);color:#fff;font:800 .9rem 'Montserrat',system-ui,sans-serif;cursor:pointer}
@media(orientation:landscape){.gs-rothint{display:none}}

/* ═══ 💛 Донатер (premium.sql, js/core/premium.js D37Donor, profile.js renderVipPromo; 22.10.2026) ═══ */
#profileVipPromo .vp-lead{font-size:.78rem;color:var(--muted);line-height:1.6;margin-bottom:.6rem}
#profileVipPromo .vp-lead b{color:var(--text)}
#profileVipPromo .vp-sep{margin:.9rem 0 0;padding-top:.7rem;border-top:1px solid rgba(var(--fg-rgb),.08)}
#profileVipPromo .vp-rows{margin-bottom:.7rem}
#profileVipPromo .vp-row{display:flex;gap:.5rem;align-items:baseline;padding:.3rem 0;border-top:1px solid rgba(var(--fg-rgb),.06)}
#profileVipPromo .vp-row>span:first-child{flex:0 0 5.2rem;font-weight:800}
#profileVipPromo .vp-row>span:last-child{flex:1;font-size:.72rem;color:var(--muted)}
#profileVipPromo .vp-note{font-size:.7rem;color:var(--muted);line-height:1.5;margin-bottom:.7rem}
#profileVipPromo .vp-act{display:flex;gap:.7rem;align-items:center;flex-wrap:wrap}
.dn-badge{display:inline-block;margin-left:.3rem;padding:.06rem .38rem;border-radius:5px;font-size:.62rem;font-weight:800;line-height:1.4;vertical-align:middle;white-space:nowrap;
  background:rgba(var(--dn,255,205,70),.18);color:rgb(var(--dn,255,205,70))}
.dn-badge[hidden],.mv-role[hidden]{display:none}
.lb-dn{display:inline-block;margin-left:.35rem;padding:.04rem .34rem;border-radius:5px;font-size:.6rem;font-weight:800;vertical-align:middle;background:rgba(255,205,70,.16);color:#ffcd46}
.lb-anon .lb-name{opacity:.75;font-style:italic}
.dc-admin .dc-sub{margin:.9rem 0 .4rem}
.dc-admin .dc-msg{display:block;font-size:.72rem;color:var(--muted);font-style:italic;word-break:break-word}
.shp-adm-period{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.4rem 0 .6rem}
@media(max-width:480px){#profileVipPromo .vp-row{flex-direction:column;gap:.1rem}#profileVipPromo .vp-row>span:first-child{flex:none}}

/* T-141 (хвост T-091): быстрее переходы — карточки игр и нижние разделы главной не раскладываются и не рисуются, пока не видны
   (content-visibility; размер-заглушка держит прокрутку). Откат — удалить эти 2 строки */
.gm-card{content-visibility:auto;contain-intrinsic-size:auto 170px}
#community{content-visibility:auto;contain-intrinsic-size:auto 900px}
