/* ══════════════════════════════════════════════════════════
   ЭТАЖИ · БОССЫ · ПОДЗЕМЕЛЬЕ
   Подключается ПОСЛЕ theme.css. Продолжает её язык: те же слои,
   та же фаска, те же пять ступеней текста. Своих цветов не заводит —
   всё, что нужно оттенком, берётся color-mix от переменных темы.

   Состояния ловятся КЛАССАМИ, которые проставляют js/ui-floors.js,
   js/ui-boss.js и js/ui-dungeon.js: floor-card / boss-card и модификаторы
   is-current, is-visited, is-cleared, is-beaten, is-open, is-locked.
   Раньше здесь стояли зацепки по литералу цвета в атрибуте style
   (border:1.5px solid #f5c542 и подобные) — они молча переставали
   находить элементы, стоило поменять цвет в JS. Инлайновые стили в JS
   остались как запасной вид без темы, но оформление на них больше
   не опирается.

   Разбор того, что чинится:

   1. Список этажей — самый длинный экран после инвентаря, десять
      одинаковых карточек подряд. Раньше все десять весили одинаково:
      одна рамка 1.5px, три серых квадрата внутри и две кнопки. Найти
      глазом «где я сейчас» и «куда пускают дальше» можно было только
      прочитав текст в каждой. Теперь состояние карточки видно ДО чтения:
      цветная планка слева, тон шапки и подъём карточки над фоном.

   2. Три серых квадрата. Подпись 9px, число 14px, рамка одна на всех —
      цифры не читались как цифры. Теперь это утопленные гнёзда с фаской
      внутрь, подпись 10px по сетке, число 20px (ровно вдвое — обе
      величины попадают в пиксельную сетку Ark Pixel).

   3. Заперто ≠ невидимо. Плашка причины была набрана #446 по
      rgba(255,255,255,0.02) — это контраст 1.6 при норме 4.5, то есть
      единственная строка, объясняющая, почему тебя не пускают, была
      нечитаемой. Плюс вся карточка гасилась opacity 0.6 поверх этого.
      Теперь: прозрачность не трогаем (текст остаётся текстом), а
      «недоступность» показываем обесцвечиванием — пиксель-арт этажа
      сереет, и это читается быстрее, чем полупрозрачность.

   4. Шапка списка (CP · Этаж · N/10) прилипает к верху. Список
      прокручивается на четыре экрана, и «сколько всего этажей» —
      единственный ориентир, который нужен постоянно.
   ══════════════════════════════════════════════════════════ */

/* ── Общие для трёх экранов ступени состояния ──
   Один и тот же смысл — один и тот же цвет на всех трёх экранах:
   золото = ты здесь, зелёное = пройдено, оранжевое = босс побит,
   синее = открыто, но ещё не был, серое = закрыто.               */
:root {
  --fl-here:    var(--gold);
  --fl-done:    var(--success);
  --fl-cleared: var(--r-unique);
  --fl-new:     var(--info);
  --fl-locked:  var(--line-strong);
}

/* ══════════════════════════════════════════════════════════
   1. ШАПКА СПИСКА — липкая полоса
   Раньше уезжала вверх на первом же движении пальца.
   Отрицательные поля выводят её на края панели, чтобы она читалась
   как полоса состояния, а не как ещё одна карточка в списке.
   ══════════════════════════════════════════════════════════ */
#floorsBody > .floors-head {
  position: sticky;
  /* Прилипающий блок отсчитывается не от края прокрутки, а от края
     СОДЕРЖИМОГО — то есть ниже верхнего отступа .panel-body на 12px.
     Без поправки в эти 12 пикселей проглядывали проезжающие карточки. */
  top: -12px;
  z-index: 4;
  margin: -12px -14px var(--sp-3) !important;
  padding: var(--sp-2) var(--sp-4) !important;
  border: none !important;
  border-radius: 0 !important;
  border-bottom: 1px solid var(--line) !important;
  background:
    var(--sheen),
    linear-gradient(180deg, #17142a 0%, #100e1c 100%) !important;
  box-shadow: 0 1px 0 #07060d, 0 6px 12px rgba(0,0,0,0.45);
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
}
#floorsBody > .floors-head strong { color: var(--text) !important; }
#floorsBody > .floors-head .floors-head-cp strong { color: var(--gold) !important; }
#floorsBody > .floors-head .floors-head-cur { color: var(--text-3) !important; }
#floorsBody > .floors-head .floors-head-cur strong { color: var(--info) !important; }
#floorsBody > .floors-head .floors-head-count {
  color: var(--text-4) !important;
  font-size: var(--fs-1) !important;
}

/* ══════════════════════════════════════════════════════════
   2. КАРТОЧКА ЭТАЖА
   ══════════════════════════════════════════════════════════ */
#floorsBody .floor-card {
  position: relative;
  margin-bottom: var(--sp-3) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  background: linear-gradient(180deg, #1b1730 0%, #12101c 100%) !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.03),
    0 0 0 1px #07060d,
    0 2px 0 rgba(0,0,0,0.45) !important;
  /* --st — цвет состояния карточки, дальше им красится всё:
     планка слева, тон шапки, свечение. */
  --st: var(--fl-locked);
}

/* Планка состояния слева. Она и есть главный ориентир в длинном списке:
   при быстрой прокрутке читается только вертикальная лента цветов. */
#floorsBody .floor-card::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--st);
  box-shadow: 1px 0 0 rgba(0,0,0,0.55);
  pointer-events: none;
}

/* ── Лестница состояний ───────────────────────────────────
   Классы ставит renderFloors(): is-current — стоим здесь,
   is-visited — уже был, is-open — открыт, но ещё не заходил,
   is-locked — закрыт. Отдельно is-cleared: босс этажа побит
   (эта отметка накладывается на любое из состояний выше).      */
#floorsBody .floor-card.is-current {
  --st: var(--fl-here);
  border-color: color-mix(in srgb, var(--gold) 55%, var(--line)) !important;
  box-shadow:
    inset 0 0 0 1px rgba(245,197,66,0.10),
    0 0 0 1px #07060d,
    0 3px 0 rgba(0,0,0,0.5),
    0 0 16px var(--gold-glow) !important;
}
#floorsBody .floor-card.is-visited {
  --st: var(--fl-done);
  border-color: color-mix(in srgb, var(--success) 34%, var(--line)) !important;
}
#floorsBody .floor-card.is-open {
  --st: var(--fl-new);
  border-color: color-mix(in srgb, var(--info) 34%, var(--line)) !important;
}
#floorsBody .floor-card.is-locked {
  --st: var(--fl-locked);
  /* Прозрачность НЕ гасим: под ней лежит единственное объяснение,
     почему сюда не пускают. Вместо неё — обесцвечивание. */
  opacity: 1 !important;
  filter: saturate(0.45);
  border-color: var(--line-soft) !important;
  box-shadow: 0 0 0 1px #07060d !important;
}

/* ── Шапка карточки ── */
#floorsBody .floor-card-head {
  padding: var(--sp-2) var(--sp-3) var(--sp-2) 14px !important;
  gap: var(--sp-3) !important;
  border-bottom: 1px solid var(--line) !important;
  background:
    var(--sheen),
    linear-gradient(180deg,
      color-mix(in srgb, var(--st) 12%, transparent) 0%,
      transparent 100%),
    linear-gradient(180deg, #221d38 0%, #1a1730 100%) !important;
}

/* Иконка этажа — в утопленное гнездо. Раньше SVG стояли в потоке,
   и колонка иконок «дышала» по горизонтали от этажа к этажу. */
#floorsBody .floor-card-head > svg {
  width: 26px; height: 26px;
  flex: 0 0 auto;
  padding: 4px;
  border: 1px solid var(--line-soft);
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, #0e0c18 0%, #16131f 100%);
  box-shadow: var(--bevel-in);
}

/* Название этажа — вторым шрифтом и вдвое крупнее описания.
   Tiny5 живёт на сетке 8px, поэтому кегль только 16 (2 пикселя шрифта). */
#floorsBody .floor-name {
  /* Название и метки идут одной строкой, а когда не влезают — метка
     переезжает вниз целиком, а не разрывается посередине. */
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 4px var(--sp-2);
  font-family: var(--font-ui) !important;
  font-size: var(--fs-4) !important;
  line-height: 1.15;
  letter-spacing: 0 !important;
  color: var(--text) !important;
  text-shadow: 0 2px 0 rgba(0,0,0,0.65);
}
#floorsBody .floor-card.is-current .floor-name { color: var(--gold) !important; }
#floorsBody .floor-card.is-locked  .floor-name { color: var(--text-3) !important; }

/* Описание этажа — длинная фраза, поэтому системным шрифтом.
   Кириллица Ark Pixel в 10 пикселей на «щ» и «ж» вырождается,
   это то же правило, что в theme.css для .craft-desc. */
#floorsBody .floor-desc {
  font-family: -apple-system, 'Segoe UI', Roboto, sans-serif !important;
  font-size: 12px !important;
  line-height: 1.45;
  letter-spacing: 0.1px;
  margin-top: 4px !important;
  color: var(--text-3) !important;
  background-image: none !important;
}

/* Метки «ЗДЕСЬ» и «ПРОЙДЕН» — таблетки, а не рамки в тексте */
#floorsBody .floor-tag {
  display: inline-flex; align-items: center; gap: 4px;
  flex: 0 0 auto;
  font-family: var(--font) !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  padding: 2px 6px !important;
  border-radius: var(--r-sm) !important;
  text-shadow: 0 1px 0 rgba(0,0,0,0.8);
}
#floorsBody .floor-tag.is-here {
  color: var(--gold) !important;
  border-color: color-mix(in srgb, var(--gold) 60%, transparent) !important;
  background: color-mix(in srgb, var(--gold) 12%, var(--bg));
  box-shadow: 0 0 8px var(--gold-glow);
}
#floorsBody .floor-tag.is-cleared {
  color: var(--fl-cleared) !important;
  border-color: color-mix(in srgb, var(--fl-cleared) 55%, transparent) !important;
  background: color-mix(in srgb, var(--fl-cleared) 12%, var(--bg));
}
/* Зелёная галочка «был здесь» дублирует «ПРОЙДЕН» по смыслу —
   оставляем, но приглушаем, чтобы в шапке был один акцент, а не два. */
#floorsBody .floor-check { opacity: 0.75; }

/* Причина замка в шапке. Красный тут был лишним: «ещё +3 уровня» —
   это условие, а не ошибка. */
#floorsBody .floor-lock-note {
  flex: 0 0 auto;
  align-self: center;
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
  line-height: 1.5;
  filter: saturate(0.8);
}
#floorsBody .floor-lock-note span { color: var(--text-2) !important; }

/* ── Нижняя половина карточки ── */
#floorsBody .floor-card-body {
  padding: var(--sp-2) var(--sp-3) var(--sp-3) 14px !important;
  background:
    var(--grain),
    linear-gradient(180deg, #100e1a 0%, #0c0a14 100%) !important;
  background-blend-mode: overlay, normal;
  background-size: 120px 120px, auto;
}

/* ══════════════════════════════════════════════════════════
   3. ТРИ БЛОКА СТАТИСТИКИ
   Были «три серых квадрата»: одинаковая рамка, подпись мельче нормы,
   число почти в тот же кегль. Стали утопленные гнёзда с цветной
   верхней гранью — левый гейт (требование), два правых награда.
   ══════════════════════════════════════════════════════════ */
#floorsBody .floor-stats {
  gap: var(--sp-2) !important;
  margin-bottom: var(--sp-2) !important;
}
#floorsBody .floor-stat {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line-soft) !important;
  border-radius: var(--r-sm) !important;
  padding: 6px 4px 7px !important;
  background: linear-gradient(180deg, #0c0a14 0%, #141220 100%) !important;
  box-shadow: var(--bevel-in);
}
/* Цветная грань сверху — по ней три гнезда различаются с одного взгляда */
#floorsBody .floor-stat::before {
  content: '';
  position: absolute; left: 0; right: 0; top: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--cell, var(--line-strong)), transparent);
}
#floorsBody .floor-stat.is-req  { --cell: var(--info); }
#floorsBody .floor-stat.is-xp   { --cell: var(--magic); }
#floorsBody .floor-stat.is-gold { --cell: var(--gold); }

/* Подпись гнезда */
#floorsBody .floor-stat-lbl {
  font-size: var(--fs-1) !important;
  line-height: 1.2;
  letter-spacing: 0 !important;
  color: var(--text-3) !important;
}
/* Число. 20px — ровно две пиксельные клетки Ark Pixel, поэтому
   цифры остаются чёткими; вдвое больше подписи, поэтому читаются первыми. */
#floorsBody .floor-stat-val {
  font-size: var(--fs-3) !important;
  line-height: 1.3;
  margin-top: 2px;
  white-space: nowrap;
  text-shadow: 0 2px 0 rgba(0,0,0,0.7);
}
/* На узких экранах (360px и меньше) девятизначный диапазон «4290–4741»
   не влезал в гнездо: нужно 90px, есть 85. Уменьшать кегль до 16
   нельзя — Ark Pixel живёт на сетке 10/20/30, и на 16 цифры плывут.
   Поэтому кегль остаётся 20, а тесноту снимаем целым отрицательным
   межбуквенным: −1px это ровно один пиксель шрифта, сетка цела. */
@media (max-width: 380px) {
  #floorsBody .floor-stats { gap: 6px !important; }
  #floorsBody .floor-stat { padding: 6px 2px 7px !important; }
  #floorsBody .floor-stat-val { letter-spacing: -1px; }
}
/* Требование уровня: выполнено — зелёное, нет — приглушённо-красное */
#floorsBody .floor-stat-val.is-ok   { color: var(--success) !important; }
#floorsBody .floor-stat-val.is-bad  { color: var(--danger) !important; }
#floorsBody .floor-stat-val.is-xp   { color: var(--magic) !important; }
#floorsBody .floor-stat-val.is-gold { color: var(--gold) !important; }
/* Подстрочник «мощь ~500» */
#floorsBody .floor-stat-sub {
  font-size: var(--fs-1) !important;
  color: var(--text-4) !important;
  margin-top: 3px !important;
}
#floorsBody .floor-stat-sub.is-warn { color: var(--gold-dim) !important; }

/* ══════════════════════════════════════════════════════════
   4. КНОПКИ КАРТОЧКИ
   Три состояния действия должны выглядеть тремя разными вещами:
   главное — залитое, второстепенное — контурное, недоступное —
   вдавленная плашка, на которую даже не тянет нажать.
   ══════════════════════════════════════════════════════════ */
#floorsBody .floor-actions { gap: var(--sp-2) !important; }

/* «Дроп» — второстепенное. Раньше светился фиолетовым наравне с
   главной кнопкой и перетягивал внимание. */
#floorsBody .floor-btn-loot {
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  background: var(--sheen), linear-gradient(180deg, #221d36 0%, #16131f 100%) !important;
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.07), 0 2px 0 #07060d !important;
}
#floorsBody .floor-btn-loot:active {
  transform: translateY(2px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 0 0 #07060d !important;
}

/* «ВОЙТИ ВПЕРВЫЕ» — единственное по-настоящему новое действие
   на экране, поэтому оно одно залито золотом. */
#floorsBody .floor-btn-go.is-first {
  border: 1px solid var(--gold-dim) !important;
  border-radius: var(--r-sm) !important;
  color: #1a1405 !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0) 45%),
    linear-gradient(180deg, #f0bd3c 0%, #c2911f 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.45),
    0 2px 0 #6b4f0e,
    0 0 12px var(--gold-glow) !important;
  text-shadow: 0 1px 0 rgba(255,255,255,0.22) !important;
  letter-spacing: 1px !important;
}
/* «ПЕРЕЙТИ» на уже посещённый — обычная навигация, контурная кнопка */
#floorsBody .floor-btn-go.is-visited {
  border: 1px solid color-mix(in srgb, var(--success) 55%, var(--line)) !important;
  border-radius: var(--r-sm) !important;
  color: var(--success) !important;
  background:
    var(--sheen),
    linear-gradient(180deg,
      color-mix(in srgb, var(--success) 14%, var(--surface-2)) 0%,
      #14121f 100%) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 2px 0 #07060d !important;
  letter-spacing: 1px !important;
}
#floorsBody .floor-btn-go:active {
  transform: translateY(2px);
  filter: brightness(1.06);
}
/* Значок ▶ рисуется золотым — на золотой заливке он пропадал.
   Перекрашиваем пиксели самой иконки в цвет подписи. */
#floorsBody .floor-btn-go.is-first   svg rect { fill: #1a1405 !important; }
#floorsBody .floor-btn-go.is-visited svg rect { fill: var(--success) !important; }

/* Плашка «ТЕКУЩИЙ ЭТАЖ» — не кнопка, и выглядеть кнопкой не должна.
   Утоплена внутрь, а не поднята над поверхностью. */
#floorsBody .floor-plate.is-here {
  border: 1px solid color-mix(in srgb, var(--gold) 32%, var(--line)) !important;
  border-radius: var(--r-sm) !important;
  background: linear-gradient(180deg, #0d0b14 0%, #171224 100%) !important;
  box-shadow: var(--bevel-in), inset 0 0 18px color-mix(in srgb, var(--gold) 10%, transparent) !important;
  color: var(--gold) !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 1px !important;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}

/* Плашка причины замка. Было #446 по почти чёрному — контраст 1.6
   при норме 4.5. Это была самая нечитаемая строка экрана, и именно
   она отвечает на вопрос «почему меня не пускают». */
#floorsBody .floor-plate.is-locked {
  border: 1px solid var(--line-soft) !important;
  border-radius: var(--r-sm) !important;
  background: linear-gradient(180deg, #0b0912 0%, #131120 100%) !important;
  box-shadow: var(--bevel-in) !important;
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
#floorsBody .floor-plate.is-locked svg rect { fill: var(--text-4) !important; }

/* ══════════════════════════════════════════════════════════
   5. ЭКРАН БОССОВ
   Тот же скелет, что у этажей, но своя семантика: красное — бой,
   зелёное — уже позади, серое — не по силам.
   ══════════════════════════════════════════════════════════ */
#bossBody > .boss-head {
  margin-bottom: var(--sp-3) !important;
  padding: var(--sp-2) var(--sp-3) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  background: var(--sheen), linear-gradient(180deg, #1b1730 0%, #13111e 100%) !important;
  box-shadow: var(--bevel) !important;
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
}
#bossBody > .boss-head strong { color: var(--gold) !important; }
#bossBody > .boss-head .boss-head-ready { color: var(--success) !important; }
#bossBody > .boss-head .boss-head-wait  { color: var(--gold-dim) !important; }

#bossBody .boss-card {
  position: relative;
  margin-bottom: var(--sp-3) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  background: linear-gradient(180deg, #1b1730 0%, #12101c 100%) !important;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.03),
    0 0 0 1px #07060d,
    0 2px 0 rgba(0,0,0,0.45) !important;
  --st: var(--fl-locked);
}
#bossBody .boss-card::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--st);
  box-shadow: 1px 0 0 rgba(0,0,0,0.55);
  pointer-events: none;
}
#bossBody .boss-card.is-current {                        /* ТЕКУЩИЙ БОСС */
  --st: var(--danger);
  border-color: color-mix(in srgb, var(--danger) 45%, var(--line)) !important;
  box-shadow:
    inset 0 0 0 1px rgba(228,104,92,0.10),
    0 0 0 1px #07060d,
    0 3px 0 rgba(0,0,0,0.5),
    0 0 16px rgba(228,104,92,0.20) !important;
}
#bossBody .boss-card.is-beaten {                         /* УЖЕ ПОБЕЖДЁН */
  --st: var(--fl-done);
  border-color: color-mix(in srgb, var(--success) 30%, var(--line)) !important;
}
#bossBody .boss-card.is-open {                           /* ПО СИЛАМ, НО НЕ ТЕКУЩИЙ */
  --st: var(--fl-new);
  border-color: color-mix(in srgb, var(--info) 30%, var(--line)) !important;
}
#bossBody .boss-card.is-locked {                         /* НЕ ПО СИЛАМ */
  --st: var(--fl-locked);
  opacity: 1 !important;
  filter: saturate(0.4);
  border-color: var(--line-soft) !important;
  box-shadow: 0 0 0 1px #07060d !important;
}

#bossBody .boss-card-head {
  padding: var(--sp-2) var(--sp-3) var(--sp-2) 14px !important;
  gap: var(--sp-3) !important;
  border-bottom: 1px solid var(--line) !important;
  background:
    var(--sheen),
    linear-gradient(180deg,
      color-mix(in srgb, var(--st) 12%, transparent) 0%,
      transparent 100%),
    linear-gradient(180deg, #221d38 0%, #1a1730 100%) !important;
}
#bossBody .boss-card-head > .boss-icon svg {
  width: 28px; height: 28px;
  padding: 4px;
  border: 1px solid var(--line-soft);
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, #0e0c18 0%, #16131f 100%);
  box-shadow: var(--bevel-in);
}
#bossBody .boss-name {
  font-family: var(--font-ui) !important;
  font-size: var(--fs-4) !important;
  line-height: 1.15;
  letter-spacing: 0 !important;
  color: var(--text) !important;
  text-shadow: 0 2px 0 rgba(0,0,0,0.65);
}
#bossBody .boss-card.is-current .boss-name { color: var(--danger) !important; }
#bossBody .boss-card.is-locked  .boss-name { color: var(--text-3) !important; }

/* HP · ATK · CP — техническая строка, ей место в служебной ступени */
#bossBody .boss-meta {
  font-size: var(--fs-1) !important;
  color: var(--text-3) !important;
  margin-top: 4px !important;
}
/* Метка «ТЕКУЩИЙ» */
#bossBody .boss-tag.is-current {
  display: inline-block;
  vertical-align: 2px;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  padding: 2px 6px !important;
  border-radius: var(--r-sm) !important;
  color: var(--danger) !important;
  border-color: color-mix(in srgb, var(--danger) 55%, transparent) !important;
  background: color-mix(in srgb, var(--danger) 12%, var(--bg));
}
/* Сколько CP не хватает */
#bossBody .boss-lock-note {
  flex: 0 0 auto;
  align-self: center;
  color: var(--text-2) !important;
  font-size: var(--fs-1) !important;
  line-height: 1.5;
  filter: saturate(0.8);
}

#bossBody .boss-card-body {
  padding: var(--sp-2) var(--sp-3) var(--sp-3) 14px !important;
  background:
    var(--grain),
    linear-gradient(180deg, #100e1a 0%, #0c0a14 100%) !important;
  background-blend-mode: overlay, normal;
  background-size: 120px 120px, auto;
}

/* Гнёзда наград босса */
#bossBody .boss-stats {
  gap: var(--sp-2) !important;
  margin-bottom: var(--sp-2) !important;
}
#bossBody .boss-stat {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line-soft) !important;
  border-radius: var(--r-sm) !important;
  padding: 6px 4px 7px !important;
  background: linear-gradient(180deg, #0c0a14 0%, #141220 100%) !important;
  box-shadow: var(--bevel-in);
}
#bossBody .boss-stat::before {
  content: '';
  position: absolute; left: 0; right: 0; top: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--cell, var(--line-strong)), transparent);
}
#bossBody .boss-stat:nth-child(1) { --cell: var(--pixr); }
#bossBody .boss-stat:nth-child(2) { --cell: var(--gold); }
#bossBody .boss-stat:nth-child(3) { --cell: var(--magic); }
#bossBody .boss-stat-lbl {
  font-size: var(--fs-1) !important;
  color: var(--text-3) !important;
  line-height: 1.2;
}
#bossBody .boss-stat-val {
  font-size: var(--fs-3) !important;
  line-height: 1.3;
  margin-top: 2px;
  white-space: nowrap;
  text-shadow: 0 2px 0 rgba(0,0,0,0.7);
}
/* Названия редкостей («Необыкновенный») и проценты в цифру 20px не лезут */
#bossBody .boss-stat-val.is-word {
  font-size: var(--fs-1) !important;
  line-height: 1.4;
  /* Отступ подобран так, чтобы слово («Легендарный») стояло на той же
     высоте, что цифры 20px в соседних гнёздах, а не подпрыгивало вверх. */
  margin-top: 8px;
  white-space: normal;
}
#bossBody .boss-stat-val.is-pixr  { color: var(--pixr) !important; }
#bossBody .boss-stat-val.is-magic { color: var(--magic) !important; }
#bossBody .boss-stat-val.is-info  { color: var(--info) !important; }

/* Кнопка «Вызвать босса» — главное действие экрана. Не золотая:
   золото в игре означает «награда», а тут вызов драки. */
#bossBody .boss-btn-call {
  border: 1px solid var(--danger) !important;
  border-radius: var(--r-sm) !important;
  /* Подпись светлее самого --danger: чистый --danger по красной
     подложке даёт 5.1, осветлённый — 6.8, а кегль тут мелкий. */
  color: color-mix(in srgb, var(--danger) 78%, #fff) !important;
  background:
    var(--sheen),
    linear-gradient(180deg,
      color-mix(in srgb, var(--danger) 22%, var(--bg)) 0%,
      color-mix(in srgb, var(--danger) 10%, var(--bg)) 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.10),
    0 2px 0 #07060d,
    0 0 14px rgba(228,104,92,0.22) !important;
  text-shadow: 0 1px 0 rgba(0,0,0,0.7) !important;
  letter-spacing: 1px !important;
}
#bossBody .boss-btn-loot {
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  background: var(--sheen), linear-gradient(180deg, #221d36 0%, #16131f 100%) !important;
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.07), 0 2px 0 #07060d !important;
}
#bossBody button:active { transform: translateY(2px); filter: brightness(1.08); }

/* Плашки «нужно N CP» и «следующий бой через …» — тоже утопленные */
#bossBody .boss-plate {
  border-radius: var(--r-sm) !important;
  box-shadow: var(--bevel-in) !important;
  font-size: var(--fs-1) !important;
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
#bossBody .boss-plate.is-locked {
  border: 1px solid var(--line-soft) !important;
  background: linear-gradient(180deg, #0b0912 0%, #131120 100%) !important;
  color: var(--text-3) !important;
}
#bossBody .boss-plate.is-cooldown {
  border: 1px solid color-mix(in srgb, var(--danger) 32%, var(--line)) !important;
  background: linear-gradient(180deg, #0d0b14 0%, #1a1220 100%) !important;
  color: color-mix(in srgb, var(--danger) 70%, var(--text-2)) !important;
}

/* ══════════════════════════════════════════════════════════
   6. ПОДЗЕМЕЛЬЕ
   ══════════════════════════════════════════════════════════ */
.dungeon-tabs {
  position: sticky;
  top: -12px;                     /* та же поправка на отступ .panel-body */
  z-index: 4;
  margin: -12px -14px var(--sp-3) !important;
  padding: var(--sp-2) var(--sp-3) !important;
  gap: var(--sp-2) !important;
  background:
    var(--sheen),
    linear-gradient(180deg, #17142a 0%, #100e1c 100%);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 1px 0 #07060d, 0 6px 12px rgba(0,0,0,0.45);
}
.dungeon-sub-tab {
  padding: 8px 4px !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  background: var(--sheen), linear-gradient(180deg, #221d36 0%, #16131f 100%) !important;
  color: var(--text-3) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 2px 0 #07060d !important;
}
.dungeon-sub-tab.active {
  border-color: var(--gold) !important;
  color: var(--gold) !important;
  background: linear-gradient(180deg, #241f14 0%, #1a1710 100%) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 2px 0 #07060d, 0 0 10px var(--gold-glow) !important;
}
.dungeon-sub-tab:active { transform: translateY(2px); }

/* Пояснение режима: длинный абзац — значит системный шрифт и никакой
   фактуры под ним (иначе полосы --weave попадают внутрь букв). */
#dungeonSubContent > .dg-intro {
  border: 1px solid color-mix(in srgb, var(--magic) 30%, var(--line)) !important;
  border-radius: var(--r-sm) !important;
  padding: var(--sp-3) !important;
  margin-bottom: var(--sp-3) !important;
  background:
    var(--sheen),
    linear-gradient(180deg,
      color-mix(in srgb, var(--magic) 10%, var(--surface-2)) 0%,
      #14121f 100%) !important;
  box-shadow: var(--bevel) !important;
}
#dungeonSubContent > .dg-intro > .dg-intro-title {
  font-family: var(--font-ui) !important;
  font-size: var(--fs-4) !important;
  letter-spacing: 0 !important;
  color: var(--magic) !important;
  margin-bottom: var(--sp-2) !important;
  text-shadow: 0 2px 0 rgba(0,0,0,0.7);
  display: flex; align-items: center; gap: 6px;
}
#dungeonSubContent > .dg-intro > .dg-intro-desc {
  font-family: -apple-system, 'Segoe UI', Roboto, sans-serif !important;
  font-size: 12px !important;
  line-height: 1.5 !important;
  letter-spacing: 0.1px;
  color: var(--text-2) !important;
  background-image: none !important;
}

/* Попытки · рекорд · максимум */
#dungeonSubContent > .dg-stats {
  gap: var(--sp-2) !important;
  margin-bottom: var(--sp-3) !important;
}
#dungeonSubContent > .dg-stats > .dg-stat {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--line-soft) !important;
  border-radius: var(--r-sm) !important;
  padding: var(--sp-2) 4px 10px !important;
  background: linear-gradient(180deg, #0c0a14 0%, #141220 100%) !important;
  box-shadow: var(--bevel-in) !important;
}
#dungeonSubContent > .dg-stats > .dg-stat::before {
  content: '';
  position: absolute; left: 0; right: 0; top: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--cell, var(--line-strong)), transparent);
}
#dungeonSubContent .dg-stat.is-attempts { --cell: var(--success); }
#dungeonSubContent .dg-stat.is-best     { --cell: var(--gold); }
#dungeonSubContent .dg-stat.is-max      { --cell: var(--magic); }
#dungeonSubContent .dg-stat-lbl {
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  color: var(--text-3) !important;
  margin-bottom: 4px !important;
}
#dungeonSubContent .dg-stat-val {
  font-size: var(--fs-5) !important;
  line-height: 1.15;
  text-shadow: 0 2px 0 rgba(0,0,0,0.7);
}
#dungeonSubContent .dg-stat-val span {
  font-size: var(--fs-1) !important;
  color: var(--text-4) !important;
}
#dungeonSubContent .dg-stat-val.is-ok    { color: var(--success) !important; }
#dungeonSubContent .dg-stat-val.is-magic { color: var(--magic) !important; }
#dungeonSubContent .dg-drop-name.is-magic { color: var(--magic) !important; }

/* Таблица наград подземелья.
   Плашка «попытки кончились» делит с ней подложку и отступы —
   ниже у неё только свои рамка и фон. */
#dungeonSubContent > .dg-drops,
#dungeonSubContent > .dg-no-attempts {
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  padding: var(--sp-3) !important;
  margin-bottom: var(--sp-3) !important;
  background: var(--sheen), linear-gradient(180deg, #1a1730 0%, #13111e 100%) !important;
  box-shadow: var(--bevel) !important;
}
#dungeonSubContent > .dg-drops > .dg-drops-title {
  display: flex; align-items: center; gap: var(--sp-2);
  /* Заголовок раздела — основным шрифтом, не Tiny5: у Tiny5 пиксель
     равен 1/8 em, то есть чётко он ложится только на 16, 24 и 32.
     На десяти он даёт дробный пиксель и мылится, а этих подзаголовков
     в таблице дропа по семь штук на экран. Отличается заголовок не
     гарнитурой, а цветом и чертой справа. */
  font-family: var(--font) !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  color: var(--text-3) !important;
  margin-bottom: var(--sp-2) !important;
}
#dungeonSubContent > .dg-drops > .dg-drops-title::after {
  content: ''; flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--line-strong), transparent);
}
#dungeonSubContent > .dg-drops > .dg-drop-row {
  align-items: center;
  padding: 5px 0 !important;
  margin-bottom: 0 !important;
  border-bottom: 1px solid var(--line-soft);
}
#dungeonSubContent > .dg-drops > .dg-drop-row:last-child {
  border-bottom: none;
}
#dungeonSubContent > .dg-drops > .dg-drop-row > div {
  font-size: var(--fs-1) !important;
}
#dungeonSubContent > .dg-drops > .dg-drop-row > .dg-drop-val {
  color: var(--gold) !important;
}

/* Вход в подземелье — главное действие экрана */
#dungeonSubContent .dg-btn-enter {
  padding: var(--sp-3) !important;
  border: 1px solid var(--magic) !important;
  border-radius: var(--r-sm) !important;
  color: color-mix(in srgb, var(--magic) 75%, #fff) !important;
  font-size: var(--fs-2) !important;
  letter-spacing: 1px !important;
  background:
    var(--sheen),
    linear-gradient(180deg,
      color-mix(in srgb, var(--magic) 26%, var(--bg)) 0%,
      color-mix(in srgb, var(--magic) 12%, var(--bg)) 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.10),
    0 3px 0 #07060d,
    0 0 16px rgba(162,136,224,0.22) !important;
  text-shadow: 0 1px 0 rgba(0,0,0,0.7) !important;
  display: flex; align-items: center; justify-content: center; gap: var(--sp-2);
}
#dungeonSubContent .dg-btn-enter:active {
  transform: translateY(3px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 0 0 #07060d !important;
}
/* «Попытки кончились» — цвет был #4a3a6a по почти чёрному, контраст 1.9 */
#dungeonSubContent > .dg-no-attempts {
  border: 1px solid var(--line-soft) !important;
  border-radius: var(--r-sm) !important;
  background: linear-gradient(180deg, #0b0912 0%, #131120 100%) !important;
  box-shadow: var(--bevel-in) !important;
  color: var(--text-3) !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
}

/* ══════════════════════════════════════════════════════════
   7. МОДАЛКИ ДРОПА (этаж и босс)
   Таблица шансов — единственное место, где игрок сравнивает числа
   между строками. Значит: одинаковая высота строк, число всегда в
   одной колонке справа, всё остальное тише числа.
   ══════════════════════════════════════════════════════════ */
#floorLootCard, #bossLootCard {
  border-radius: var(--r-lg) var(--r-lg) 0 0;
  border-top: 1px solid var(--gold-dim);
  padding: var(--sp-4) var(--sp-4) 32px !important;
  background:
    var(--grain),
    radial-gradient(140% 60% at 50% 0%, rgba(143,111,212,0.12), transparent 60%),
    linear-gradient(180deg, #16131f 0%, #0e0c16 100%) !important;
  background-blend-mode: overlay, normal, normal;
  background-size: 120px 120px, auto, auto;
  box-shadow: 0 -2px 0 #07060d, 0 -14px 34px rgba(0,0,0,0.6);
}
/* Заголовок модалки */
#floorLootContent .loot-title,
#bossLootContent  .loot-title {
  font-family: var(--font-ui) !important;
  font-size: var(--fs-4) !important;
  letter-spacing: 0 !important;
  text-shadow: 0 2px 0 rgba(0,0,0,0.7);
}
#floorLootContent > .loot-head > svg,
#bossLootContent  > .loot-head > svg {
  padding: 5px;
  border: 1px solid var(--line-soft);
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, #0e0c18 0%, #16131f 100%);
  box-shadow: var(--bevel-in);
  flex: 0 0 auto;
}
/* Подсказка «тип предмета выбирается случайно» — абзац, значит система */
#floorLootContent > .loot-hint {
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  padding: var(--sp-2) 10px !important;
  background: linear-gradient(180deg, #1a1730 0%, #14121f 100%) !important;
  box-shadow: var(--bevel) !important;
  font-family: -apple-system, 'Segoe UI', Roboto, sans-serif !important;
  font-size: 12px !important;
  line-height: 1.45 !important;
  color: var(--text-2) !important;
  background-image: none !important;
}
/* Заголовки разделов таблицы — как .sec-title в theme.css */
#floorLootContent > .loot-sec,
#bossLootContent  > .loot-sec {
  display: flex; align-items: center; gap: var(--sp-2);
  /* Заголовок раздела — основным шрифтом, не Tiny5: у Tiny5 пиксель
     равен 1/8 em, то есть чётко он ложится только на 16, 24 и 32.
     На десяти он даёт дробный пиксель и мылится, а этих подзаголовков
     в таблице дропа по семь штук на экран. Отличается заголовок не
     гарнитурой, а цветом и чертой справа. */
  font-family: var(--font) !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  color: var(--text-3) !important;
  border-bottom: none !important;
  padding-bottom: 0 !important;
  margin: var(--sp-3) 0 var(--sp-1) !important;
}
#floorLootContent > .loot-sec::after,
#bossLootContent  > .loot-sec::after {
  content: ''; flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--line-strong), transparent);
}
#floorLootContent > .loot-sec span,
#bossLootContent  > .loot-sec span {
  flex: 0 1 auto;
  font-family: var(--font) !important;
  color: var(--text-4) !important;
}
/* Строка таблицы: тише, чем карточка, — их тут по два десятка подряд */
#floorLootContent .loot-row, #bossLootContent .loot-row {
  padding: 5px var(--sp-2) !important;
  min-height: 36px;
  margin-bottom: 2px;
  border-radius: var(--r-sm);
  font-size: var(--fs-1) !important;
  background: linear-gradient(180deg, #1a1730 0%, #15131f 100%) !important;
  border: 1px solid var(--line-soft) !important;
  box-shadow: none !important;
}
/* Значок строки — всегда в одинаковом гнезде 24+2, независимо от того,
   картинка это или нарисованный SVG. Иначе колонка значков «дышит»
   от строки к строке: у картинок 24px, у книжек 20px, у самоцвета 24. */
#floorLootContent .loot-row img, #bossLootContent .loot-row img,
#floorLootContent .loot-row svg, #bossLootContent .loot-row svg {
  flex: 0 0 auto;
  width: 24px; height: 24px;
  box-sizing: content-box;
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, #0e0c18 0%, #16131f 100%);
  box-shadow: var(--bevel-in);
  padding: 2px;
}
#floorLootContent .loot-rarity-badge, #bossLootContent .loot-rarity-badge {
  font-family: var(--font) !important;
  font-size: var(--fs-1) !important;
  border-radius: var(--r-sm) !important;
  padding: 2px 6px !important;
  white-space: nowrap;
}
/* Колонка шанса — единственное, что тут сравнивают */
#floorLootContent .loot-row > span:last-child,
#bossLootContent  .loot-row > span:last-child {
  font-size: var(--fs-1) !important;
  color: var(--gold) !important;
  min-width: 56px !important;
  text-shadow: 0 1px 0 rgba(0,0,0,0.8);
}
/* Сноска «% — шанс за убийство» */
#floorLootContent > .loot-note,
#bossLootContent  > .loot-note {
  font-family: -apple-system, 'Segoe UI', Roboto, sans-serif !important;
  font-size: 11px !important;
  color: var(--text-4) !important;
  margin-top: var(--sp-3) !important;
  background-image: none !important;
}
#floorLootContent > button, #bossLootContent > button {
  border: 1px solid var(--line-strong) !important;
  border-radius: var(--r-sm) !important;
  background: var(--sheen), linear-gradient(180deg, #2b2544 0%, #1a1730 100%) !important;
  color: var(--text-2) !important;
  font-size: var(--fs-2) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.10), 0 2px 0 #07060d !important;
}

/* ══════════════════════════════════════════════════════════
   8. ИТОГ ПОДЗЕМЕЛЬЯ И ПОБЕДА НАД БОССОМ
   ══════════════════════════════════════════════════════════ */
.boss-victory-box {
  border: 1px solid var(--gold-dim) !important;
  border-radius: var(--r-lg) !important;
  padding: var(--sp-5) var(--sp-4) !important;
  background:
    var(--grain),
    radial-gradient(120% 55% at 50% 0%, var(--gold-glow), transparent 62%),
    linear-gradient(180deg, #17142400 0%, #0d0b1500 40%),
    linear-gradient(180deg, #16131f 0%, #0e0c16 100%) !important;
  background-blend-mode: overlay, normal, normal, normal;
  background-size: 120px 120px, auto, auto, auto;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.04),
    0 0 0 1px #07060d,
    0 12px 40px rgba(0,0,0,0.65),
    0 0 34px var(--gold-glow) !important;
}
/* Поражение в подземелье приходит в ту же коробку, что победа над
   боссом. Золотой ореол на проигрыше читался как «ты выиграл». */
#dungeonResultModal .boss-victory-box:has(.dg-result-title.is-lose) {
  border-color: color-mix(in srgb, var(--danger) 45%, var(--line)) !important;
  background:
    var(--grain),
    radial-gradient(120% 55% at 50% 0%, rgba(228,104,92,0.16), transparent 62%),
    linear-gradient(180deg, #16131f 0%, #0e0c16 100%) !important;
  background-blend-mode: overlay, normal, normal;
  background-size: 120px 120px, auto, auto;
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,0.04),
    0 0 0 1px #07060d,
    0 12px 40px rgba(0,0,0,0.65),
    0 0 30px rgba(228,104,92,0.20) !important;
}

#dungeonResultContent > .dg-result-title,
#bossVictoryContent   > div[style*="font-size:20px"] {
  font-family: var(--font-ui) !important;
  font-size: var(--fs-5) !important;
  letter-spacing: 0 !important;
  text-shadow: 0 2px 0 rgba(0,0,0,0.75);
}
#dungeonResultContent > .dg-result-sub {
  font-size: var(--fs-1) !important;
  color: var(--text-3) !important;
}
#dungeonResultContent > .dg-result-box,
#bossVictoryContent   > div[style*="rgba(255,255,255,0.04)"] {
  border: 1px solid var(--line) !important;
  border-radius: var(--r-sm) !important;
  padding: var(--sp-3) !important;
  background: var(--sheen), linear-gradient(180deg, #1a1730 0%, #13111e 100%) !important;
  box-shadow: var(--bevel) !important;
}
#dungeonResultContent > .dg-result-box > .dg-result-box-title,
#bossVictoryContent   > div[style*="rgba(255,255,255,0.04)"] > div:first-child {
  display: flex; align-items: center; gap: var(--sp-2);
  /* Заголовок раздела — основным шрифтом, не Tiny5: у Tiny5 пиксель
     равен 1/8 em, то есть чётко он ложится только на 16, 24 и 32.
     На десяти он даёт дробный пиксель и мылится, а этих подзаголовков
     в таблице дропа по семь штук на экран. Отличается заголовок не
     гарнитурой, а цветом и чертой справа. */
  font-family: var(--font) !important;
  font-size: var(--fs-1) !important;
  letter-spacing: 0 !important;
  color: var(--text-3) !important;
  margin-bottom: var(--sp-2) !important;
}
#dungeonResultContent > .dg-result-box > .dg-result-box-title::after,
#bossVictoryContent   > div[style*="rgba(255,255,255,0.04)"] > div:first-child::after {
  content: ''; flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--line-strong), transparent);
}
#dungeonResultContent > .dg-result-box > .dg-result-row {
  padding: 5px 0;
  margin-bottom: 0 !important;
  border-bottom: 1px solid var(--line-soft);
  font-size: var(--fs-1) !important;
}
#dungeonResultContent > .dg-result-box > .dg-result-row:last-child {
  border-bottom: none;
}
#dungeonResultContent > .dg-result-box img,
#bossVictoryContent   > div[style*="rgba(255,255,255,0.04)"] img {
  border-radius: var(--r-sm);
  background: linear-gradient(180deg, #0e0c18 0%, #16131f 100%);
  box-shadow: var(--bevel-in);
  padding: 2px;
}
#dungeonResultContent > button,
#bossVictoryContent   > button {
  border: 1px solid var(--gold-dim) !important;
  border-radius: var(--r-sm) !important;
  color: #1a1405 !important;
  font-size: var(--fs-2) !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0) 45%),
    linear-gradient(180deg, #f0bd3c 0%, #c2911f 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.45),
    0 2px 0 #6b4f0e,
    0 0 12px var(--gold-glow) !important;
  text-shadow: 0 1px 0 rgba(255,255,255,0.22) !important;
}

/* ══════════════════════════════════════════════════════════
   9. ТОСТ «НОВЫЙ ЭТАЖ ОТКРЫТ»
   ══════════════════════════════════════════════════════════ */
#floorUnlock {
  border: 1px solid var(--gold-dim);
  border-radius: var(--r-md);
  padding: 10px var(--sp-5);
  background:
    var(--sheen),
    linear-gradient(180deg, #241f14 0%, #14111c 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.10),
    0 0 0 1px #07060d,
    0 6px 18px rgba(0,0,0,0.55),
    0 0 22px var(--gold-glow);
}
#floorUnlock .fu-title {
  font-family: var(--font-ui) !important;
  font-size: var(--fs-4) !important;
  letter-spacing: 0 !important;
  color: var(--gold);
  text-shadow: 0 2px 0 rgba(0,0,0,0.75);
}
#floorUnlock .fu-sub {
  font-size: var(--fs-1);
  color: var(--text-2);
}

/* ══════════════════════════════════════════════════════════
   10. У обоих шрифтов есть только Regular. font-synthesis: none
   в theme.css уже запрещает подделку, но в этих трёх экранах
   font-weight:bold стоит в инлайне сорок с лишним раз — снимаем
   его явно, чтобы правило не зависело от поддержки font-synthesis.
   Это единственная оставшаяся зацепка по инлайну: она ловит не
   состояние, а именно начертание, и уйдёт вместе с инлайн-стилями.
   ══════════════════════════════════════════════════════════ */
#floorsBody [style*="font-weight:bold"],
#bossBody [style*="font-weight:bold"],
#dungeonSubContent [style*="font-weight:bold"],
#floorLootContent [style*="font-weight:bold"],
#bossLootContent [style*="font-weight:bold"],
#dungeonResultContent [style*="font-weight:bold"],
#floorUnlock .fu-title { font-weight: 400 !important; }
