/* ============================================================
   base.css — фундамент: сброс, шрифты, типографика, сетка, утилиты.
   Опирается на tokens.css (подключать tokens.css ПЕРЕД base.css).
   Дизайн-система: concept_fakedoor_B §1.
   ============================================================ */

/* --- Self-hosted шрифты (нулевой зарубежный egress; concept §1, §9.4) ---
   Файлы .woff2 кладутся в /assets/fonts/. Пути version-agnostic.
   ЗАВИСИМОСТЬ: положить реальные файлы Golos Text (400/500/600/700) и PT Serif (400/700).
   До этого сработает fallback-цепочка (локально установленный шрифт или sans-serif). */
@font-face{
  font-family:"Golos Text"; font-style:normal; font-weight:400;
  font-display:swap;
  src:url("/assets/fonts/golos-text-400.woff2") format("woff2");
}
@font-face{
  font-family:"Golos Text"; font-style:normal; font-weight:500;
  font-display:swap;
  src:url("/assets/fonts/golos-text-500.woff2") format("woff2");
}
@font-face{
  font-family:"Golos Text"; font-style:normal; font-weight:600;
  font-display:swap;
  src:url("/assets/fonts/golos-text-600.woff2") format("woff2");
}
@font-face{
  font-family:"Golos Text"; font-style:normal; font-weight:700;
  font-display:swap;
  src:url("/assets/fonts/golos-text-700.woff2") format("woff2");
}
@font-face{
  font-family:"PT Serif"; font-style:normal; font-weight:400;
  font-display:swap;
  src:url("/assets/fonts/pt-serif-400.woff2") format("woff2");
}
@font-face{
  font-family:"PT Serif"; font-style:normal; font-weight:700;
  font-display:swap;
  src:url("/assets/fonts/pt-serif-700.woff2") format("woff2");
}

/* --- Сброс (минимальный, современный) --- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body,h1,h2,h3,h4,p,ul,ol,li,figure,blockquote,dl,dd{ margin:0; }
ul[class],ol[class]{ list-style:none; padding:0; }
img,picture,svg{ display:block; max-width:100%; height:auto; }
button,input,select,textarea{ font:inherit; color:inherit; }
a{ color:var(--c-blue-link); text-decoration:none; }
a:hover{ text-decoration:underline; }

/* --- Базовая типографика (concept §1: body 17–18, lh 1.5) --- */
body{
  font-family:var(--font-ui);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  color:var(--c-text);
  background:var(--c-bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1{ font-size:var(--fs-h1); line-height:var(--lh-head); font-weight:700; color:var(--c-blue); }
h2{ font-size:var(--fs-h2); line-height:var(--lh-head); font-weight:700; color:var(--c-blue); }
h3{ font-size:var(--fs-h3); line-height:1.3; font-weight:600; color:var(--c-text); }
p{ margin-bottom:var(--sp-3); }
strong,b{ font-weight:600; }

/* --- Контейнер (мобайл-first) --- */
.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

/* --- Секции лендинга: вертикальный ритм.
   Скоупим на #landing, чтобы padding НЕ протекал в <section> внутри React-воронки
   (изоляция статики и воронки — зафиксированное решение). --- */
#landing > section{ padding-block:var(--sp-6); }
@media (min-width:560px){ #landing > section{ padding-block:var(--sp-7); } }
.section__title{ margin-bottom:var(--sp-5); }

/* --- Утилита: визуально скрытый, но доступный скринридеру заголовок --- */
.visually-hidden{
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%);
  white-space:nowrap; border:0;
}

/* --- Видимый фокус для клавиатурной навигации (доступность; аудитория 45+) --- */
:focus-visible{
  outline:3px solid var(--c-focus);
  outline-offset:2px;
  border-radius:2px;
}

/* --- noscript-уведомление --- */
.noscript-note{
  max-width:var(--container);
  margin:var(--sp-4) auto;
  padding:var(--sp-4);
  background:var(--c-bg-soft);
  border:1px solid var(--c-border-control);
  border-radius:var(--r-md);
  color:var(--c-text);
  text-align:center;
}

/* --- Высота вьюпорта: dvh/svh вместо vh (правило проекта) --- */
.min-screen{ min-height:100svh; min-height:100dvh; }
