/* Self-hosted Archivo (variable font, weights 400-800, normal style).
   Downloaded from Google Fonts (fonts.gstatic.com), same subsets Google
   was already serving for this family: latin, latin-ext, vietnamese. */

@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/archivo/archivo-vietnamese.woff2') format('woff2-variations');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/archivo/archivo-latin-ext.woff2') format('woff2-variations');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/archivo/archivo-latin.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Self-hosted Manrope (variable font, weights 400-800, normal style).
   Files copied from /opt/btc-site's own already-self-hosted Manrope
   (same font, same next/font-downloaded Google Fonts subsets). */

@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/manrope/manrope-cyrillic-ext.woff2') format('woff2-variations');
  unicode-range: U+460-52F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/manrope/manrope-cyrillic.woff2') format('woff2-variations');
  unicode-range: U+301, U+400-45F, U+490-491, U+4B0-4B1, U+2116;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/manrope/manrope-greek.woff2') format('woff2-variations');
  unicode-range: U+370-377, U+37A-37F, U+384-38A, U+38C, U+38E-3A1, U+3A3-3FF;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/manrope/manrope-vietnamese.woff2') format('woff2-variations');
  unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/manrope/manrope-latin-ext.woff2') format('woff2-variations');
  unicode-range: U+100-2BA, U+2BD-2C5, U+2C7-2CC, U+2CE-2D7, U+2DD-2FF, U+304, U+308, U+329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100%;
  font-display: swap;
  src: url('fonts/manrope/manrope-latin.woff2') format('woff2-variations');
  unicode-range: U+0000-00FF, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* E03 09.09.2026: fallback-начертания на системном Arial/Liberation Sans (то,
   во что резолвится system-ui/sans-serif на большинстве десктопов) с метриками
   ascent/descent/line-gap/size-adjust, подогнанными под Archivo/Manrope — гасит
   сдвиг строк при FOUT→FOIT-свопе (font-display: swap уже был, самих метрик не
   было). Числа — из hhea/OS-2 таблиц реальных файлов шрифтов (fontTools),
   не подобраны на глаз: ascent/descent/line-gap = доля от unitsPerEm целевого
   шрифта; size-adjust = отношение среднего размера символа (xAvgCharWidth)
   целевого шрифта к Arial/Liberation Sans. Это гасит МЕНЬШИЙ из двух сдвигов
   аудита (шрифтовой); основной сдвиг — от прихода данных, лечится резервированием
   места в разметке (index/catalog/prebuilt.html), не тут. [проверил fontTools:
   archivo-latin.woff2, manrope-latin.woff2, LiberationSans-Regular.ttf] */
@font-face {
  font-family: 'Archivo Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica Neue'), local('Helvetica');
  ascent-override: 87.8%;
  descent-override: 21%;
  line-gap-override: 0%;
  size-adjust: 106.8%;
}
@font-face {
  font-family: 'Manrope Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica Neue'), local('Helvetica');
  ascent-override: 106.6%;
  descent-override: 30%;
  line-gap-override: 0%;
  size-adjust: 97.57%;
}


/* 09.09.2026, решение владельца «кнопка должна нажиматься»: у каждой настоящей
   кнопки витрины видимое нажатие. Десктопные страницы прототипа собраны из
   div-ов с инлайновым стилем; с 17.09.2026 действия на них переведены в
   <button data-btc-act>, и это правило накрывает их тоже. */
button:active:not([disabled]):not([aria-disabled="true"]),
a[role="button"]:active,
[data-btc-press]:active {
  transform: translateY(1px) scale(.985);
  filter: brightness(.95);
}

/* D01 (10.09.2026): шапка «Кабинет» — инлайновый style-hover="...background:
   #ffffff..." в разметке (index/catalog/product/... — 21 html) превращается
   support.js в динамический класс .scpN:hover{...!important}; N нестабилен
   между страницами/перезагрузками, класс на элемент не повесить одним
   правилом. В тёмной теме белый фон + светлый var(--ink) текст ("Кабинет")
   почти нечитаем. Бьём по атрибуту style (background: var(--panel) есть
   только у этой кнопки — у одноимённой ссылки в футере фона нет), поэтому
   правило общее на все страницы с этой шапкой и HTML трогать не нужно;
   специфичность [style*=] + тип a выше специфичности .scpN, побеждает
   независимо от порядка вставки стилей. */
a[href="/account"][style*="background: var(--panel)"]:hover {
  background: var(--panel-solid) !important;
  color: var(--ink) !important;
}

/* === btc: семантические кнопки (data-btc-act) === */
/* 17.09.2026. Действия витрины (Купить / В корзину / Отправить заказ / Добавить
   и прочие) раньше были <div onClick> — с клавиатуры недостижимы, скринридер
   не называл их кнопками. Теперь это <button type="button" data-btc-act>.
   Инлайновый style= в разметке сильнее этого правила, поэтому здесь только то,
   чего в инлайне нет: сброс собственных стилей <button> (шрифт, фон, рамка,
   выравнивание) — иначе у кнопок без своего фона вылезал бы серый системный.
   Видимый фокус с клавиатуры добавляется здесь же: на десктопных страницах
   своего :focus-visible не было вообще. */
button[data-btc-act] {
  font: inherit;
  color: inherit;
  text-align: inherit;
  letter-spacing: inherit;
  background: none;
  border: 0;
  margin: 0;
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
  cursor: pointer;
}
button[data-btc-act]:focus-visible,
a:focus-visible,
input:focus-visible,
summary:focus-visible {
  outline: 2px solid var(--accent-text, #dd0a0a);
  outline-offset: 2px;
}

/* === btc: скелетон загрузки === */
/* 17.09.2026. Пока ./data/builds.json не пришёл, хиро главной показывает
   скелетон в форме той же карточки, а не выдуманный товар. Блик серый
   (rgba(128,128,128,...)) намеренно: одинаково читается и в светлой, и в
   тёмной теме, отдельных правил на тему не нужно. */
.btc-skel {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, var(--plate-a), var(--plate-b));
  border: 1px solid var(--hairline);
}
.btc-skel::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent 0%, rgba(128,128,128,.16) 50%, transparent 100%);
  animation: btc-skel-shine 1.5s ease-in-out infinite;
}
@keyframes btc-skel-shine { to { transform: translateX(100%); } }
@media (prefers-reduced-motion: reduce) { .btc-skel::after { animation: none; } }

/* Текст только для скринридера: видимого скелетона он «не видит». */
.btc-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
