/* v123 · ремонтная волна 11.08.2026: футеры, открытый каталог, планшетные раскладки
   11.08.2026 · грузится последним, поэтому снимает более ранние скрытия
   колонок Contact и Machine-readable (v100-final-mobile.css, v104-boss.css) */

/* десктоп: бренд уже, четыре колонки ровные, цель клика не меньше 24px по WCAG 2.2 AA */
@media (min-width: 1250px) {
  .site-footer .footer-grid { grid-template-columns: 1.15fr repeat(4, minmax(0, 1fr)); gap: 40px; }
  .site-footer .footer-grid > div a { min-height: 24px; display: flex; align-items: center; }
  .site-footer .footer-legal a { min-height: 24px; display: inline-flex; align-items: center; }
}

/* Планшет, один набор правил вместо двух конфликтующих (регрессия 11.08: поздняя
   двухколоночная сетка перекрывала четырёхколоночную и давала футер около 1330px
   с пустыми ячейками на 1024).
   Альбомный планшет от 900 до 1249: полоса бренда и четыре равные колонки ссылок. */
@media (min-width: 900px) and (max-width: 1249px) {
  .site-footer .footer-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 26px 26px !important; }
  .site-footer .footer-grid > .footer-brand-col { grid-column: 1 / -1; }
  .site-footer .footer-grid > div:not(.footer-brand-col) { display: flex !important; min-width: 0; margin-top: 0 !important; }
  .site-footer .footer-grid > div:nth-child(2) a { display: flex !important; }
  .site-footer .footer-grid > div:not(.footer-brand-col) a { min-height: 44px !important; display: flex; align-items: center; }
  .site-footer .footer-legal a { min-height: 44px !important; display: inline-flex; align-items: center; }
  .site-footer .footer-brand-col .hli--foot { min-height: 44px !important; }
}

/* Портретный планшет от 761 до 899: бренд строкой и сетка 2x2 */
@media (min-width: 761px) and (max-width: 899px) {
  .site-footer .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 28px 30px !important; }
  .site-footer .footer-grid > .footer-brand-col { grid-column: 1 / -1; }
  .site-footer .footer-grid > div:not(.footer-brand-col) { display: flex !important; min-width: 0; margin-top: 0 !important; }
  .site-footer .footer-grid > div:nth-child(2) a { display: flex !important; }
  .site-footer .footer-grid > div:not(.footer-brand-col) a { min-height: 44px !important; display: flex; align-items: center; }
  .site-footer .footer-legal a { min-height: 44px !important; display: inline-flex; align-items: center; }
  .site-footer .footer-brand-col .hli--foot { min-height: 44px !important; }
}

/* телефон: бренд строкой, ниже две колонки, тач-таргет 44 */
@media (max-width: 760px) {
  .site-footer .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 20px 18px !important; }
  .site-footer .footer-grid > .footer-brand-col { grid-column: 1 / -1; }
  .site-footer .footer-grid > div:not(.footer-brand-col) { display: flex !important; min-width: 0; margin-top: 0 !important; }
  .site-footer .footer-grid > div:nth-child(2) a:nth-of-type(n+3):not(:last-child) { display: flex !important; }
  .site-footer .footer-grid > div:not(.footer-brand-col) a { min-height: 44px !important; display: flex; align-items: center; }
  .site-footer .footer-legal a { min-height: 44px !important; display: inline-flex; align-items: center; }
  .site-footer .footer-brand-col .hli--foot { min-height: 44px !important; }
}

/* Каталог прошивок в ОТКРЫТОМ состоянии: кнопки версий и чипы моделей стояли на
   кромке своей панели. Отступ уже был добавлен 11.08 в v122-proofread.css, но CDN
   отдавал под тем же адресом старую копию файла без него (замер: 51 правило против
   36, отступ 16px против 0). Ключ кэша v122 обновлён, а сами поля продублированы
   здесь, чтобы результат не зависел от того, какую копию отдаст узел CDN. */
.vault-catalog { padding-left: 16px !important; padding-right: 16px !important; }
.vault-catalog .vault-controls { row-gap: 12px; align-items: flex-start; }
.vault-catalog .vault-versions,
.vault-catalog .vault-families { flex-wrap: wrap; min-width: 0; }
.vault-catalog .vault-controls :focus-visible { outline: 2px solid var(--gold, #e7c77d); outline-offset: 2px; border-radius: 8px; }
@media (min-width: 761px) {
  .vault-catalog { padding-left: 20px !important; padding-right: 20px !important; }
}


/* Открытый каталог прошивок на планшете (регрессия 11.08: на 1024 панель каталога
   сжималась примерно до 556px, а зазоры между кнопками семейств падали до 5px).
   Альбомный планшет 960-1180: две колонки, каталог не уже 600px, цель 48px, зазор 12px. */
@media (min-width: 960px) and (max-width: 1180px) {
  #downloads .vault-layout { grid-template-columns: minmax(0, 1fr) minmax(600px, 1.05fr) !important; gap: 28px !important; }
  #downloads .vault-families,
  #downloads .vault-versions { gap: 12px !important; }
  #downloads .vault-families button,
  #downloads .vault-versions button { min-height: 48px !important; }
}

/* Портретный планшет 761-959: печать и каталог друг под другом во всю ширину */
@media (min-width: 761px) and (max-width: 959px) {
  #downloads .vault-layout { grid-template-columns: minmax(0, 1fr) !important; gap: 22px !important; }
  #downloads .vault-seal,
  #downloads .vault-catalog { width: 100% !important; }
  #downloads .vault-families,
  #downloads .vault-versions { gap: 12px !important; }
  #downloads .vault-families button,
  #downloads .vault-versions button { min-height: 48px !important; }
}

/* Обод планеты: свечение показываем только когда JS привязал его к спроецированному
   силуэту сферы (v65-earth.js ставит data-bound-to-globe в конце resize).
   На время пересчёта, в том числе при повороте экрана, признак снимается и обод скрыт. */
.global-earth-emission { opacity: 0; transition: opacity .2s ease; }
.global-earth-emission[data-bound-to-globe="projected-silhouette"] { opacity: 1; }

/* Десктопный каталог: низ карточек и верх панели кнопок стояли на одной координате,
   зазор был ровно 0. Отделяем панель в собственную полосу управления с полем не
   меньше 20px сверху и снизу. Диапазон от 1180px, чтобы планшет и мобилка не менялись. */
@media (min-width: 1180px) {
  #downloads .vault-catalog .vault-controls {
    margin-top: 20px !important;
    padding-top: 14px;
    border-top: 1px solid rgba(231, 199, 125, .14);
  }
  #downloads .vault-catalog .vault-list { margin-top: 20px !important; }
  /* Полоса забирает 40px по вертикали. Возвращаем их обеим колонкам, иначе список
     прошивок стал бы короче, а печать и каталог разошлись бы по высоте. */
  #downloads .vault-seal,
  #downloads .seal-stagelet,
  #downloads .vault-catalog--first-layer { height: calc(clamp(430px, 38vw, 560px) + 40px) !important; }
}

/* Музей: предзагрузочный about:blank внутри iframe вспыхивает белым, поэтому сам
   iframe невидим до события load и двух отрисованных кадров, а на его месте стоит
   тёмная подложка рамки. Класс снимает v118-mobile-stability.js. */
#about .about-museum-frame { background: #030405; }
#about .about-museum-frame.is-museum-loading iframe { opacity: 0; visibility: hidden; }
#about .about-museum-frame.is-museum-ready iframe { opacity: 1; visibility: visible; transition: opacity .28s ease; }
