/* 13 окт. 2026 (просьбы владельца): табличка главного меню «Забег дня» + «Лучшие» (js/menuboard.js), окно «Профиль»
   (js/profile.js), «Пригласить» в лобби (js/invite.js), колесо меток для команды (js/pings.js), «Забег дня» в табло соло.
   Главное меню — строками без тяжёлых плит (решение владельца 10 окт.), поэтому табличка — тёмное стекло с тонкой
   фиолетовой кромкой и латунными уголками, как у мини-карты; кадр меню 1920×1080 (px), растёт и уменьшается вместе с ним. */

/* =====================================================================================================================
   ТАБЛИЧКА ГЛАВНОГО МЕНЮ — справа, вровень с пунктами меню (mb-right, 13 окт. 2026, просьба владельца; правый край —
   у угла окна: right ставит menuboard.js), или прежнее место между пунктами меню и чёрной дырой (mb-mid, ?board=mid)
   ===================================================================================================================== */
#M-board { display: none; }
html.ns .lobby-stage #M-board {
  position: absolute; display: flex; flex-direction: column; gap: 15px; z-index: 3; box-sizing: border-box;
  font-family: var(--ns-font); color: var(--ns-text); text-shadow: 0 1px 0 rgba(0, 0, 0, .6);
}
html.ns .lobby-stage #M-board.mb-mid { left: 612px; top: 516px; width: 408px; }
/* top 315 (просьбы владельца — «пробел у таблички на уровне Арена тест», потом «подними ещё чутка»): промежуток между
   «Забегом дня» и «Лучшими» (середина — 315 + 190 + 7.5 = 512.5) — в строке «Арены (тест)», ближе к её верху
   (#M-menu top 382 в ns-test.css, пункт 503–562).
   Табличка лежит на кольце чёрной дыры — стекло плотнее, чтобы яркий диск не просвечивал сквозь текст и «Играть» */
html.ns .lobby-stage #M-board.mb-right { left: auto; right: 44px; top: 315px; width: 408px; --mb-bg: rgba(11, 8, 18, .9); }
html.ns .lobby-stage #M-board.vhide { display: none; }
html.ns .lobby-stage #M-board .mb-sec {
  --cc: #c99a3a;
  position: relative; padding: 14px 18px 15px;
  background:
    linear-gradient(var(--cc), var(--cc)) 0 0 / 12px 3px no-repeat, linear-gradient(var(--cc), var(--cc)) 0 0 / 3px 12px no-repeat,
    linear-gradient(var(--cc), var(--cc)) 100% 0 / 12px 3px no-repeat, linear-gradient(var(--cc), var(--cc)) 100% 0 / 3px 12px no-repeat,
    linear-gradient(var(--cc), var(--cc)) 0 100% / 12px 3px no-repeat, linear-gradient(var(--cc), var(--cc)) 0 100% / 3px 12px no-repeat,
    linear-gradient(var(--cc), var(--cc)) 100% 100% / 12px 3px no-repeat, linear-gradient(var(--cc), var(--cc)) 100% 100% / 3px 12px no-repeat,
    var(--mb-bg, rgba(11, 8, 18, .74));
  box-shadow: inset 0 0 0 1px rgba(167, 116, 230, .26), 0 12px 30px rgba(0, 0, 0, .45);
}
/* заголовок раздела — как «РЕЙТИНГ · ГЕРОИ» под меню */
html.ns #M-board .mb-h { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
html.ns #M-board .mb-ttl { font: 700 calc(14px * var(--tk, 1)) / 1 var(--ns-font); letter-spacing: .24em; text-transform: uppercase; color: var(--ns-gold-hi); }
html.ns #M-board .mb-left { font: 500 calc(13px * var(--tk, 1)) / 1 var(--ns-font); color: var(--ns-text-3); white-space: nowrap; }
/* забег дня: герой дня на светящемся пятне, имя, пояснение, ваш лучший результат, «Играть» */
html.ns #M-board .mb-dcard { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 6px 15px; align-items: center; margin-top: 12px; }
html.ns #M-board .mb-port { display: flex; align-items: flex-end; justify-content: center; height: 84px; background: radial-gradient(closest-side, rgba(167, 116, 230, .34), rgba(167, 116, 230, 0) 72%) 50% 70% / 100% 70% no-repeat; }
html.ns #M-board .mb-port canvas { display: block; image-rendering: pixelated; }
html.ns #M-board .mb-dtx { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
html.ns #M-board .mb-hero { font: 800 calc(26px * var(--tk, 1)) / 1.05 var(--k-title, 'Exo 2'); letter-spacing: .01em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html.ns #M-board .mb-dnote { font: 500 calc(13px * var(--tk, 1)) / 1.3 var(--ns-font); color: var(--ns-text-2); }
html.ns #M-board .mb-dme { font: 600 calc(14px * var(--tk, 1)) / 1.35 var(--ns-font); color: var(--ns-violet-text); }
html.ns #M-board .mb-dme b { color: var(--ns-gold-hi); font-weight: 800; }
html.ns #M-board .mb-play {
  grid-column: 1 / -1; height: auto !important; margin: 6px 0 0; padding: 9px 12px !important; border: 0 !important; border-image: none !important;
  background: rgba(217, 180, 106, .1) !important; box-shadow: inset 0 0 0 1px rgba(217, 180, 106, .55); cursor: var(--cur-hand, pointer);
  font: 700 calc(19px * var(--tk, 1)) / 1.1 var(--ns-font); letter-spacing: .06em; text-transform: none; color: var(--ns-gold-hi); text-shadow: 0 1px 0 rgba(0, 0, 0, .6);
  transition: background .15s, color .15s, box-shadow .15s;
}
html.ns #M-board .mb-play::before, html.ns #M-board .mb-play::after, html.ns #M-board .mb-tab::after { display: none; }
html.ns #M-board .mb-play:hover { background: rgba(217, 180, 106, .22) !important; box-shadow: inset 0 0 0 1px var(--ns-gold-hi), 0 0 14px rgba(217, 180, 106, .25); color: #fff4d6; }
/* вкладки «Рейтинг · Соло · День» — словами, выбранная — золото с чертой */
html.ns #M-board .mb-tabs { display: flex; gap: 0; margin: -4px -6px 9px; box-shadow: inset 0 -1px 0 rgba(167, 116, 230, .22); }
html.ns #M-board .mb-tab {
  position: relative; height: auto !important; width: auto !important; flex: 1 1 0; padding: 7px 6px 10px !important; margin: 0; border: 0 !important; border-image: none !important; background: none !important;
  font: 700 calc(13px * var(--tk, 1)) / 1 var(--ns-font); letter-spacing: .2em; text-transform: uppercase; color: var(--ns-violet-text); cursor: var(--cur-hand, pointer); text-shadow: none;
}
html.ns #M-board .mb-tab::before { display: none; }
html.ns #M-board .mb-tab:hover { color: #f6efff; }
html.ns #M-board .mb-tab.on { color: var(--ns-gold-hi); box-shadow: inset 0 -2px 0 var(--ns-gold); }
/* строки топа: место, герой, ник, число */
html.ns #M-board .mb-list { display: flex; flex-direction: column; gap: 1px; min-height: 120px; }
html.ns #M-board .mb-row { display: grid; grid-template-columns: 26px 36px minmax(0, 1fr) auto; align-items: center; gap: 0 9px; min-height: 36px; padding: 0 6px; cursor: var(--cur-hand, pointer); transition: background .12s; }
html.ns #M-board .mb-row:nth-child(even) { background: rgba(255, 255, 255, .025); }
html.ns #M-board .mb-row:hover { background: rgba(167, 116, 230, .14); }
html.ns #M-board .mb-row.me { background: rgba(217, 180, 106, .1); box-shadow: inset 3px 0 0 var(--ns-gold); }
html.ns #M-board .mb-row.gap { margin-top: 6px; border-top: 1px dashed rgba(167, 116, 230, .3); }
html.ns #M-board .mb-pl { font: 800 calc(15px * var(--tk, 1)) / 1 var(--k-title, 'Exo 2'); font-style: normal; text-align: center; color: var(--ns-text-3); }
html.ns #M-board .mb-pl.p1 { color: #ffd34a; } html.ns #M-board .mb-pl.p2 { color: #cfd6e0; } html.ns #M-board .mb-pl.p3 { color: #d7995c; }
html.ns #M-board .mb-row canvas.pt { justify-self: center; height: 30px; width: auto; image-rendering: pixelated; }
html.ns #M-board .mb-nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 calc(16px * var(--tk, 1)) / 1.2 var(--ns-font); color: var(--ns-text); }
html.ns #M-board .mb-row.me .mb-nm { color: var(--ns-gold-hi); }
html.ns #M-board .mb-v { display: grid; justify-items: end; line-height: 1.05; white-space: nowrap; }
html.ns #M-board .mb-v b { font: 800 calc(16px * var(--tk, 1)) / 1.05 var(--k-title, 'Exo 2'); color: var(--ns-text); font-variant-numeric: tabular-nums; }
html.ns #M-board .mb-v small { display: none; }
html.ns #M-board .mb-v em { font: 600 calc(11px * var(--tk, 1)) / 1.2 var(--ns-font); font-style: normal; color: var(--ns-text-3); letter-spacing: .04em; }
html.ns #M-board .mb-empty { padding: 30px 12px; text-align: center; font: 500 calc(14px * var(--tk, 1)) / 1.5 var(--ns-font); color: var(--ns-text-2); }
/* заставка: табличка появляется вместе с пунктами меню (intro.css) */
html.ns-intro .lobby-stage #M-board { opacity: 0; translate: 40px 0; }
html.ns-intro.ns-intro-in .lobby-stage #M-board { opacity: 1; translate: 0 0; transition: opacity .6s ease-out .35s, translate .8s cubic-bezier(.16, .84, .24, 1) .35s; }

/* =====================================================================================================================
   ОКНО «ПРОФИЛЬ» — шаблон окна набора (ns-kit.css: .modal > .panel), внутри — шапка, сетка чисел, три столбца, матчи
   ===================================================================================================================== */
#profile-pop .pf-body { min-height: 300px; }
html.ns.nskit #profile-pop > .prof-panel { --k-pt: 8px; --k-px: 30px; --k-pb: 14px; width: 1260px; max-width: none; }
html.ns #profile-pop { --text: var(--k-text); --text-2: var(--k-text-2); --text-3: var(--k-text-3); }
html.ns #profile-pop canvas { image-rendering: pixelated; }
html.ns #profile-pop .pf-empty { padding: 120px 24px; text-align: center; color: var(--k-text-2); font: 500 calc(17px * var(--fs, 1)) / 1.6 var(--k-font); }
html.ns #profile-pop .pf-empty b { color: var(--k-text); font: 800 calc(28px * var(--fs, 1)) / 1.4 var(--k-title); }
html.ns #profile-pop .pf-head { display: flex; align-items: flex-end; gap: 24px; padding: 6px 6px 15px; box-shadow: inset 0 -3px 0 #0b0a0e, inset 0 -6px 0 #221e2a; }
html.ns #profile-pop .pf-port { display: flex; align-items: flex-end; justify-content: center; min-width: 150px; min-height: 120px; padding-bottom: 12px; }
html.ns.nskit #profile-pop .pf-port { background: var(--k-pedestal) center bottom / 126px 48px no-repeat; image-rendering: pixelated; }
html.ns #profile-pop .pf-who { min-width: 0; padding-bottom: 12px; }
html.ns #profile-pop .pf-name { display: flex; align-items: baseline; gap: 15px; color: var(--k-text); font: 800 calc(48px * var(--fs, 1)) / 1.05 var(--k-title); }
html.ns #profile-pop .pf-you { color: var(--k-gold); font: 700 calc(14px * var(--fs, 1)) / 1 var(--k-font); letter-spacing: .2em; text-transform: uppercase; }
html.ns #profile-pop .pf-rk { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 15px; margin-top: 9px; color: var(--k-text-2); font: 600 calc(17px * var(--fs, 1)) / 1.3 var(--k-font); }
html.ns #profile-pop .pf-rank { display: inline-flex; align-items: center; gap: 9px; color: var(--rc, var(--k-gold)); font: 800 calc(20px * var(--fs, 1)) / 1 var(--k-title); }
html.ns #profile-pop .pf-rank i { width: 15px; height: 15px; background: var(--rc, var(--k-gold)); clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
html.ns #profile-pop .pf-elo b { color: var(--k-text); font-weight: 800; }
html.ns #profile-pop .pf-since { margin-top: 6px; color: var(--k-text-3); font: 600 calc(15px * var(--fs, 1)) / 1.3 var(--k-font); }
/* сетка чисел — 5 × 2 */
html.ns #profile-pop .pf-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 3px; margin: 15px 0 0; }
html.ns #profile-pop .pf-cell { display: flex; flex-direction: column; gap: 4px; padding: 10px 15px 12px; background: var(--k-1); box-shadow: inset 0 3px 0 var(--k-2); }
html.ns #profile-pop .pf-cell span { color: var(--k-text-3); font: 700 calc(13px * var(--fs, 1)) / 1.2 var(--k-font); letter-spacing: .08em; text-transform: uppercase; }
html.ns #profile-pop .pf-cell b { color: var(--k-text); font: 800 calc(26px * var(--fs, 1)) / 1.1 var(--k-title); font-variant-numeric: tabular-nums; }
html.ns #profile-pop .pf-cell small { color: var(--k-text-2); font: 600 calc(14px * var(--fs, 1)) / 1.2 var(--k-font); }
/* три столбца: любимые герои, предметы, соло и забег дня */
html.ns #profile-pop .pf-cols { display: grid; grid-template-columns: 1.15fr 1.15fr 1fr; gap: 24px; margin-top: 18px; }
html.ns #profile-pop .pf-h { margin: 0 0 9px; padding-bottom: 6px; color: var(--k-gold-hi); font: 700 calc(14px * var(--fs, 1)) / 1 var(--k-font); letter-spacing: .2em; text-transform: uppercase; box-shadow: inset 0 -2px 0 rgba(217, 180, 106, .25); }
html.ns #profile-pop .pf-h2 { margin-top: 15px; }
html.ns #profile-pop .pf-none { color: var(--k-text-3); font: 500 calc(15px * var(--fs, 1)) / 1.5 var(--k-font); }
html.ns #profile-pop .pf-hero { display: grid; grid-template-columns: 42px minmax(0, 1fr); grid-template-rows: auto auto; gap: 0 9px; align-items: center; padding: 4px 0; }
html.ns #profile-pop .pf-hero canvas.pt { grid-row: 1 / 3; justify-self: center; height: 36px; width: auto; }
html.ns #profile-pop .pf-hero b { font: 700 calc(17px * var(--fs, 1)) / 1.2 var(--k-font); }
html.ns #profile-pop .pf-hero span { color: var(--k-text-2); font: 600 calc(14px * var(--fs, 1)) / 1.2 var(--k-font); }
html.ns #profile-pop .pf-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 12px; }
html.ns #profile-pop .pf-item { display: grid; grid-template-columns: 36px minmax(0, 1fr); grid-template-rows: auto auto; gap: 0 9px; align-items: center; cursor: var(--cur-arrow, default); }
html.ns #profile-pop .pf-item img { grid-row: 1 / 3; width: 36px; height: 36px; image-rendering: pixelated; background: var(--k-0); box-shadow: inset 0 0 0 3px var(--k-2); }
html.ns #profile-pop .pf-item b { color: var(--k-text); font: 700 calc(14px * var(--fs, 1)) / 1.15 var(--k-font); }
html.ns #profile-pop .pf-item span { color: var(--k-text-2); font: 700 calc(14px * var(--fs, 1)) / 1.2 var(--k-font); }
html.ns #profile-pop .pf-solo { color: var(--k-text-2); font: 600 calc(16px * var(--fs, 1)) / 1.45 var(--k-font); }
html.ns #profile-pop .pf-solo b { color: var(--k-text); font: 800 calc(26px * var(--fs, 1)) / 1.1 var(--k-title); }
html.ns #profile-pop .pf-solo small { color: var(--k-text-3); font-size: calc(14px * var(--fs, 1)); }
html.ns #profile-pop .pf-day { display: grid; grid-template-columns: 1fr auto auto; gap: 12px; align-items: baseline; padding: 3px 0; color: var(--k-text-2); font: 600 calc(15px * var(--fs, 1)) / 1.3 var(--k-font); }
html.ns #profile-pop .pf-day b { color: var(--k-text); font: 800 calc(17px * var(--fs, 1)) / 1 var(--k-title); }
html.ns #profile-pop .pf-day small { color: var(--k-text-3); font-size: calc(13px * var(--fs, 1)); }
html.ns #profile-pop .pf-day.today span { color: var(--k-gold-hi); }
/* последние матчи — строки, нажатие — итоги матча */
html.ns #profile-pop .pf-recent { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px 15px; }
html.ns #profile-pop .pf-rec { display: grid; grid-template-columns: 36px 84px minmax(0, 1fr) 64px 118px 40px; align-items: center; gap: 0 9px; min-height: 42px; padding: 0 9px; background: var(--k-1); cursor: var(--cur-hand, pointer); color: var(--k-text-2); font: 600 calc(15px * var(--fs, 1)) / 1.2 var(--k-font); }
html.ns #profile-pop .pf-rec:hover { background: var(--k-3); }
html.ns #profile-pop .pf-rec canvas.pt { justify-self: center; height: 30px; width: auto; }
html.ns #profile-pop .pf-rec.win { box-shadow: inset 3px 0 0 var(--k-gold); }
html.ns #profile-pop .pf-rec.win .pf-rp { color: var(--k-gold-hi); }
html.ns #profile-pop .pf-rp { color: var(--k-text); font-weight: 800; }
html.ns #profile-pop .pf-rh { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
html.ns #profile-pop .pf-rk { margin: 0; font-variant-numeric: tabular-nums; }
html.ns #profile-pop .pf-rd { color: var(--k-text-3); white-space: nowrap; }
html.ns #profile-pop .pf-rr { text-align: right; font-weight: 800; }
html.ns #profile-pop .pf-rr.up { color: var(--k-life); } html.ns #profile-pop .pf-rr.down { color: #e9776b; }
html.ns #profile-pop .pf-foot { display: flex; margin-top: 12px; padding-top: 12px; box-shadow: inset 0 3px 0 #0b0a0e, inset 0 6px 0 #221e2a; }
html.ns #profile-pop .pf-esc { margin-left: auto; color: var(--k-text-3); font: 500 calc(14px * var(--fs, 1)) / 1 var(--k-font); }
html.ns #profile-pop .pf-esc kbd.k { margin-right: 6px; }
/* прежний вид (?ui=old) — простое окно */
html:not(.ns) #profile-pop .panel { width: 1000px; max-width: 96vw; }
html:not(.ns) #profile-pop .pf-grid, html:not(.ns) #profile-pop .pf-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; }
/* ник в «Рейтинге» — нажатие открывает профиль */
html.ns #stats-pop .st-table td.who .nk { cursor: var(--cur-hand, pointer); }
html.ns #stats-pop .st-table td.who .nk:hover { text-decoration: underline; text-underline-offset: 3px; }

/* =====================================================================================================================
   ЛОББИ: «Пригласить» и строка со ссылкой
   ===================================================================================================================== */
#btn-invite.ok { color: var(--k-life, #7fcf8e) !important; }
#invite-pop { display: flex; align-items: center; gap: 9px; margin: 6px 0 9px; padding: 9px 12px; background: rgba(11, 8, 18, .8); box-shadow: inset 0 0 0 1px rgba(127, 207, 142, .45); }
#invite-pop.hidden { display: none; }
#invite-pop .iv-t { flex: none; color: var(--k-text-2, #b3a991); font: 600 14px / 1.2 var(--ns-font, sans-serif); }
#invite-pop .iv-in { flex: 1 1 auto; min-width: 0; height: 30px; padding: 0 9px; border: 0; background: #0e0c12; box-shadow: inset 0 0 0 1px #3d3549; color: var(--k-text, #efe6d3); font: 600 14px / 30px var(--ns-font, monospace); }
#invite-pop .iv-x { flex: none; height: 30px !important; min-width: 30px; padding: 0 !important; }

/* =====================================================================================================================
   КОЛЕСО МЕТОК (держать «Метку», по умолчанию V): 4 метки вокруг курсора, выбранная — залита своим цветом
   ===================================================================================================================== */
#pingwheel { position: fixed; z-index: 60; width: 0; height: 0; pointer-events: none; transform: scale(var(--rz, 1)); }
#pingwheel.hidden { display: none; }
#pingwheel .pw-c { position: absolute; left: -9px; top: -9px; width: 18px; height: 18px; border-radius: 50%; box-shadow: 0 0 0 2px rgba(255, 255, 255, .55), 0 0 0 4px rgba(0, 0, 0, .5); }
#pingwheel .pw-o {
  position: absolute; left: calc(var(--dx) * 104px); top: calc(var(--dy) * 66px); transform: translate(-50%, -50%); white-space: nowrap;
  padding: 7px 14px; background: rgba(12, 9, 20, .88); box-shadow: inset 0 0 0 2px var(--pc), 0 6px 16px rgba(0, 0, 0, .5);
  color: var(--pc); font: 800 16px / 1 var(--ns-font, sans-serif); text-shadow: 0 1px 0 #000; transition: background .08s, color .08s;
}
#pingwheel .pw-o.on { background: var(--pc); color: #120a18; text-shadow: none; }

/* =====================================================================================================================
   СОЛО: «Забег дня» над временем на табло, строка общего рекорда в итогах
   ===================================================================================================================== */
#solohud .sh-day { display: none; }
#solohud.daily .sh-day { display: block; margin-bottom: 3px; color: var(--ns-gold-hi, #f3d897); font: 800 12px / 1 var(--ns-font, sans-serif); letter-spacing: .22em; text-transform: uppercase; }
#solofin .sf-gen { margin-top: 6px; opacity: .8; font-size: .86em; }
