/* wave94_school_sync — стили серверного лидерборда, UI-полировки и заплаток.
 * Внешний <link>-стиль: НЕ трогается санитайзером динамических <style>. */

/* --- убрать ДУБЛЬ install-баннера (оставляем актуальный wave93a) --- */
.wave92d-install-banner { display: none !important; }

/* --- #7: спрятать МЁРТВЫЕ облачные кнопки (npoint/supabase не работают под
   CSP connect-src 'self'; заменены рабочей серверной синхрой /api) --- */
#wave86w-main-cloud-btn,
[data-wave68-action="sync"],
[data-wave68-action="leaders"] { display: none !important; }

/* --- приглушить вводящий в заблуждение «live»-пульс на офлайн-приложении --- */
.live-pill .live-dot { animation: none !important; }

/* --- мягкие плейсхолдеры пустых секций дашборда (не «голый заголовок») --- */
#grades:empty::after, #weak:empty::after, #activity:empty::after {
  content: "—"; display: block; text-align: center; opacity: .35;
  padding: 14px 0; font: 500 14px system-ui, sans-serif;
}

/* --- навигационные заплатки (#3 вход в экзамены, #4 выбор предмета) --- */
.school-exam-entry {
  position: fixed; left: 12px; bottom: calc(130px + env(safe-area-inset-bottom, 0));
  z-index: 9000; background: linear-gradient(135deg, #ff8a3d, #ff5e62);
  color: #fff; text-decoration: none; border-radius: 999px; padding: 11px 18px;
  font: 600 14px system-ui, sans-serif; box-shadow: 0 8px 22px rgba(255, 94, 98, .32);
  min-height: 44px; display: flex; align-items: center; gap: 6px;
}
.school-exam-entry:hover { filter: brightness(1.05); }
.school-exam-entry:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.school-jump-chooser {
  position: fixed; left: 12px; bottom: calc(76px + env(safe-area-inset-bottom, 0));
  z-index: 9000; background: linear-gradient(135deg, #10b981, #059669);
  color: #fff; border: none; border-radius: 999px; padding: 11px 18px;
  font: 600 14px system-ui, sans-serif; box-shadow: 0 8px 22px rgba(16, 185, 129, .32);
  cursor: pointer; min-height: 44px;
}
.school-jump-chooser:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }

/* при показанном баннере установки/обновления поднимаем плавающие кнопки выше,
   чтобы на телефоне они не перекрывались (класс ставит shim) */
body.school-banner-up .school-lb-btn,
body.school-banner-up .school-jump-chooser { bottom: calc(150px + env(safe-area-inset-bottom, 0)) !important; }
body.school-banner-up .school-exam-entry { bottom: calc(204px + env(safe-area-inset-bottom, 0)) !important; }

/* --- кнопка «Рейтинг» --- */
.school-lb-btn {
  position: fixed; left: 12px; bottom: calc(76px + env(safe-area-inset-bottom, 0));
  z-index: 9000; background: linear-gradient(135deg, #5b6cff, #8b5cf6);
  color: #fff; border: none; border-radius: 999px; padding: 11px 18px;
  font: 600 14px system-ui, sans-serif; box-shadow: 0 8px 22px rgba(91, 108, 255, .35);
  cursor: pointer; min-height: 44px; display: flex; gap: 6px; align-items: center;
}
.school-lb-btn:hover { filter: brightness(1.05); }
.school-lb-btn:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }

/* --- модалка --- */
.school-lb-ov {
  position: fixed; inset: 0; z-index: 14050;
  display: flex; align-items: center; justify-content: center; padding: 18px;
  background: rgba(10, 10, 25, .6);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
.school-lb-card {
  background: #fff; color: #13131f; border-radius: 20px;
  max-width: 460px; width: 100%; max-height: 82vh; overflow: auto;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .45); animation: school-lb-in .18s ease;
}
@keyframes school-lb-in { from { transform: translateY(14px) scale(.98); opacity: 0 } to { transform: none; opacity: 1 } }
@media (prefers-color-scheme: dark) { .school-lb-card { background: #1b1b2c; color: #eee } }

.school-lb-top {
  position: sticky; top: 0; background: linear-gradient(135deg, #5b6cff, #8b5cf6);
  color: #fff; padding: 16px 18px; display: flex; justify-content: space-between; align-items: center;
}
.school-lb-top h3 { margin: 0; font: 700 17px system-ui, sans-serif; }
.school-lb-top small { opacity: .85; font-weight: 500; }
.school-lb-x {
  background: rgba(255, 255, 255, .18); border: none; color: #fff;
  font-size: 20px; line-height: 1; cursor: pointer; width: 34px; height: 34px; border-radius: 50%; min-width: 34px;
}
.school-lb-tabs { display: flex; gap: 4px; padding: 8px 12px 0; position: sticky; top: 56px; background: inherit; }
.school-lb-tab {
  flex: 1; border: none; background: rgba(128, 128, 128, .12); color: inherit;
  padding: 9px 6px; border-radius: 10px 10px 0 0; font: 600 13px system-ui; cursor: pointer; min-height: 40px;
}
.school-lb-tab.active { background: rgba(91, 108, 255, .16); color: #5b6cff; }
@media (prefers-color-scheme: dark) { .school-lb-tab.active { color: #aab2ff; } }

.school-lb-list { padding: 8px 12px 4px; }
.school-lb-row { display: flex; align-items: center; gap: 12px; padding: 11px 10px; border-radius: 12px; }
.school-lb-row + .school-lb-row { border-top: 1px solid rgba(128, 128, 128, .16); }
.school-lb-row.me { background: rgba(91, 108, 255, .14); border-top-color: transparent; }
.school-lb-rank { width: 30px; text-align: center; font-size: 18px; font-variant-numeric: tabular-nums; opacity: .85; }
.school-lb-av {
  width: 34px; height: 34px; border-radius: 50%; background: #e7e9ff; color: #5b6cff;
  display: flex; align-items: center; justify-content: center; font: 700 14px system-ui; flex: 0 0 auto;
}
@media (prefers-color-scheme: dark) { .school-lb-av { background: #33335a; color: #bcbefe } }
.school-lb-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 14px system-ui; }
.school-lb-meta { font-size: 12px; opacity: .6; }
.school-lb-badge { display: inline-block; font: 600 11px system-ui; background: rgba(91, 108, 255, .14); color: #5b6cff; border-radius: 6px; padding: 1px 6px; margin-left: 6px; }
@media (prefers-color-scheme: dark) { .school-lb-badge { color: #aab2ff } }
.school-lb-xp { font: 700 15px system-ui; font-variant-numeric: tabular-nums; white-space: nowrap; }
.school-lb-me-pin {
  margin: 6px 12px 14px; padding: 11px 12px; border-radius: 12px; background: rgba(91, 108, 255, .14);
  font: 600 13px system-ui; display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.school-lb-empty { padding: 30px 16px; text-align: center; opacity: .7; font: 500 14px system-ui; line-height: 1.5; }

/* --- карточка «мои места» в дашборде --- */
.school-ranks-card {
  margin: 14px 0; padding: 16px 18px; border-radius: 16px;
  background: linear-gradient(135deg, rgba(91, 108, 255, .10), rgba(139, 92, 246, .10));
  border: 1px solid rgba(91, 108, 255, .22);
}
.school-ranks-card h3 { margin: 0 0 10px; font: 700 15px system-ui; }
.school-ranks-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 2px; font: 500 14px system-ui; }
.school-ranks-row + .school-ranks-row { border-top: 1px solid rgba(128, 128, 128, .14); }
.school-ranks-place { font: 700 14px system-ui; }
.school-ranks-empty { opacity: .65; font: 500 13px system-ui; }

/* прячем пустую карточку-шапку результата (иначе пустой прямоугольник) */
.rcard.school-rcard-empty { display: none !important; }

/* ── мобайл-полиш шапки index: убрать одинокую «Настройки» сверху + большой
      отступ перед navy-пилюлями (было padding-top:24px). Настройки встают в одну
      строку с пилюлями «Тренажёр · к диагностикам». ── */
@media (max-width: 640px) {
  body:has(.live-pill) header.header { padding-top: 8px; }
  body:has(.live-pill) #trainer-settings-host { margin-bottom: -34px; position: relative; z-index: 6; pointer-events: none; }
  body:has(.live-pill) #trainer-settings-host > * { pointer-events: auto; }
}

/* ── единообразный нижний навбар: на index лишний 5-й пункт «Спец» (на остальных
      страницах его нет → было 5 vs 4, скачок при переходе). Прячем «Спец» ТОЛЬКО
      в index-навбаре (он содержит data-key="index") → везде стабильно по 4. ── */
.wave24-bottom-nav:has(.wave24-nav-item[data-key="index"]) .wave24-nav-item[data-key="spec"] {
  display: none !important;
}

/* ── dashboard «Панель»: нативный .hero дублирует инжектируемую карточку профиля
      (#wave68-dashboard-holder) — «Ученик · Новичок · ур.1» дважды. Прячем hero
      ТОЛЬКО когда карточка отрисована (иначе — фолбэк на hero). ── */
body:has(#wave68-dashboard-holder) .w > .hero:has(#name) {
  display: none !important;
}

/* ── tests.html: одинокая «Настройки» сверху + большой отступ перед центр. титулом
      (bundle_shell вставляет #trainer-settings-host перед первым .w). Поднимаем
      кнопку в правый верхний угол абсолютом. Скоуплено body:has(#s-menu .tcard). ── */
@media (max-width: 640px) {
  body:has(#s-menu .tcard) #s-menu > .w { position: relative; padding-top: calc(8px + env(safe-area-inset-top, 0px)); }
  body:has(#s-menu .tcard) #trainer-settings-host {
    position: absolute; top: calc(8px + env(safe-area-inset-top, 0px)); right: 16px;
    margin: 0; padding: 0; max-width: none; z-index: 6;
  }
}

/* ── diagnostic: стена из ~500 экзам-пакетов скрыта, показ по выбору предмета
      (панель чипов рендерит shim → reorgDiagnostic). Нативные карточки/старт целы. ── */
#wave30-pack-host.school-pack-host-hidden { display: none !important; }
.wave30-pack-card.school-pack-hidden { display: none !important; }
.school-diag-panel { margin: 14px 0; padding: 14px; background: #fff; border: 1px solid rgba(128, 128, 128, .18); border-radius: 14px; }
.school-diag-title { font: 700 15px system-ui; margin-bottom: 10px; }
.school-diag-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.school-diag-chip { background: #f3f4f6; border: 1px solid rgba(128, 128, 128, .22); border-radius: 999px; padding: 7px 14px; font: 600 14px system-ui; cursor: pointer; color: #1a1a2e; }
.school-diag-chip.is-active { background: #22c55e; color: #fff; border-color: #22c55e; }
.school-diag-chip span { opacity: .55; font-weight: 500; margin-left: 3px; }
