/* ============================================
   base.css — токены, reset, типографика, утилиты
   Дизайн-система: Ink/Cream + акцент, Playfair Display
   (крупные заголовки) + Golos Text (текст, подзаголовки)
   + IBM Plex Mono (метки, лейблы)
   ============================================ */

:root {
  /* Тёмные нейтральные */
  --ink-950: oklch(14% 0.01 60);   /* фон тёмный */
  --ink-900: oklch(18% 0.012 60);  /* поверхность на тёмном */
  --ink-800: oklch(23% 0.013 58);  /* граница на тёмном */
  --ink-700: oklch(30% 0.014 58);  /* разделитель на тёмном */
  --ink-500: oklch(58% 0.02 60);   /* приглуш. текст на тёмном */

  /* Тёмная «приподнятая» поверхность — светлее чистого чёрного (#212121)
     для hero, тёмных секций и врезок */
  --surface-dark: #212121;
  --surface-dark-100: #2c2c2c;   /* карточка на surface-dark */
  --surface-dark-border: #3a3a3a;

  /* Светлые нейтральные (тёплый крем) */
  --cream-50: oklch(96% 0.016 80);   /* фон светлый */
  --cream-100: oklch(92% 0.02 76);   /* карточка на светлом */
  --cream-200: oklch(87% 0.025 74);  /* граница на светлом */
  --cream-400: oklch(74% 0.03 68);   /* приглуш. текст на тёмном фоне */

  /* Текст */
  --text-dark: oklch(19% 0.012 60);    /* заголовки/текст на светлом */
  --text-muted: oklch(40% 0.02 55);    /* вторичный текст на светлом */
  --text-inverse: oklch(97% 0.01 85);  /* текст на тёмном */

  /* Акцент · настраивается в Tweaks */
  --accent: #3F5A46;                                        /* Accent/600 · база */
  --accent-700: color-mix(in oklch, var(--accent) 80%, black);
  --accent-500: color-mix(in oklch, var(--accent) 85%, white); /* hover */
  --accent-300: color-mix(in oklch, var(--accent) 45%, white);
  --accent-100: color-mix(in oklch, var(--accent) 15%, white);
  --accent-hover: var(--accent-500);
  --accent-press: var(--accent-700);
  --line-muted: oklch(70% 0.02 62);
  --line-muted-hover: oklch(45% 0.02 58);

  /* Шрифты */
  --font-display: "Playfair Display", "Georgia", serif;
  --font-body: "Golos Text", "Helvetica Neue", Arial, sans-serif;
  --font-mono: "IBM Plex Mono", "SF Mono", monospace;

  /* Сетка отступов, кратно 8px */
  --sp-1: 8px;
  --sp-2: 16px;
  --sp-3: 24px;
  --sp-4: 32px;
  --sp-5: 40px;
  --sp-6: 48px;
  --sp-8: 64px;
  --sp-10: 80px;
  --sp-12: 96px;

  /* Радиусы: прямоугольные кнопки со скруглением, единый радиус для карточек */
  --radius-btn: 10px;
  --radius-card: 18px;

  /* Анимации */
  --transition: 200ms ease;

  --container: 1200px;
}

/* ---------- Reset ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 24px;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.65;
  color: var(--text-dark);
  background: var(--cream-50);
  overflow-x: hidden;
}

h1, h2, h3, h4, p, ul, ol, dl, dd, figure, blockquote {
  margin: 0;
}

ul[class], ol[class] {
  padding: 0;
  list-style: none;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  color: inherit;
}

button, input, select, textarea {
  font: inherit;
  color: inherit;
}

/* ---------- Типографика ---------- */
h1, h2 {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -0.01em;
  color: var(--text-dark);
}

h3, h4 {
  font-family: var(--font-body);
  font-weight: 700;
  line-height: 1.3;
  color: var(--text-dark);
}

.section--dark h1,
.section--dark h2,
.section--dark h3,
.section--dark h4 {
  color: var(--text-inverse);
}

.eyebrow {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
}

/* На тёмном фоне базовый акцент слишком тёмный — используем Accent/300 */
.section--dark .eyebrow,
.hero .eyebrow {
  color: var(--accent-300);
}

/* ---------- Контейнер и секции ---------- */
.container {
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--sp-3);
}

.container--narrow {
  max-width: 880px;
}

.section {
  padding-block: var(--sp-10);
}

.section--alt {
  background: var(--cream-100);
}

.section--dark {
  background: var(--surface-dark);
  color: var(--text-inverse);
}

.section__eyebrow {
  margin-bottom: var(--sp-2);
}

.section__title {
  font-size: clamp(28px, 4vw, 42px);
  max-width: 20em;
  margin-bottom: var(--sp-3);
}

.section__lead {
  max-width: 42em;
  color: var(--text-muted);
  margin-bottom: var(--sp-6);
}

.section--dark .section__lead {
  color: var(--cream-400);
}

.section__lead--quote {
  font-style: italic;
}

/* Фиксированная строка заголовка: не переносится, размер подстроен под ширину */
.section__title-line {
  display: block;
  white-space: nowrap;
}

.section__title--nowrap {
  white-space: nowrap;
  max-width: none;
  font-size: clamp(13px, 3.85vw, 42px);
}

.section__title--two-lines {
  font-size: clamp(23px, 4vw, 42px);
}

.section__cta {
  margin-top: var(--sp-6);
  text-align: center;
}

/* ---------- Доступность ---------- */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  top: -100px;
  left: var(--sp-2);
  z-index: 200;
  padding: var(--sp-1) var(--sp-2);
  background: var(--ink-950);
  color: var(--text-inverse);
  border-radius: var(--radius-btn);
  transition: top var(--transition);
}

.skip-link:focus {
  top: var(--sp-2);
}

:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
}

/* ---------- Появление при скролле ---------- */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 500ms ease, transform 500ms ease;
}

.reveal.is-visible {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
