/* ============================================================
   RUBY — базовый слой: сброс, шрифты, холст макета
   ============================================================ */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
}

body {
  background: var(--c-white);
  color: var(--c-ink);
  font-family: var(--f-text);
  -webkit-font-smoothing: antialiased;
  text-rendering: geometricPrecision;
}

h1,
h2,
h3,
h4,
p,
figure,
ul,
ol {
  margin: 0;
  padding: 0;
}

ul,
ol {
  list-style: none;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}

img,
svg {
  display: block;
}

/* --- Холст -------------------------------------------------
   Макет Figma — фиксированные 1920 px. Страница собирается
   в холсте такой ширины; на более узком экране холст
   масштабируется целиком (см. scripts/stage.js), чтобы
   не изобретать несуществующую в макете мобильную вёрстку. */
.stage {
  position: relative;
  width: var(--canvas-w);
  margin: 0 auto;
  /* clip, а не hidden: hidden делает холст контейнером прокрутки,
     и липкая шапка перестаёт держаться у верха окна */
  overflow: clip;
  transform-origin: top left;
}

.stage-viewport {
  overflow-x: hidden;
}

/* Полоса страницы: секция во всю ширину холста.
   Координаты детей = координаты Figma минус верх полосы. */
.band {
  position: relative;
  width: var(--canvas-w);
}

/* Абсолютно позиционированный элемент внутри полосы. */
.abs {
  position: absolute;
}

/* Текстовые роли макета. */
.t-h1 {
  font-family: var(--f-display);
  font-weight: 400;
  font-size: var(--t-h1-size);
  line-height: var(--t-h1-lh);
  color: var(--c-ink);
  /* слово длиннее строки (узкий телефон) переносится, а не уходит за край */
  overflow-wrap: break-word;
}

.t-body {
  font-family: var(--f-text);
  font-weight: 400;
  font-size: var(--t-body-size);
  line-height: var(--t-body-lh);
  color: var(--c-ink);
}

/* Текст только для программ чтения с экрана */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* Ссылка «Перейти к содержимому»: первое, что получает фокус по Tab.
   Спрятана визуально, появляется только при фокусе с клавиатуры —
   так пользователь клавиатуры и скринридера может пропустить шапку
   и сразу попасть в контент. Мышью её не видно. */
.skip-link {
  position: absolute;
  left: 8px;
  top: -64px;
  z-index: 1000;
  padding: 12px 20px;
  font-family: var(--f-text);
  font-weight: 500;
  font-size: 16px;
  line-height: 20px;
  color: var(--c-white, #fff);
  background: var(--c-black, #000);
  border-radius: 4px;
  text-decoration: none;
  transition: top .15s ease;
}

.skip-link:focus {
  top: 8px;
}
