* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink);
  background: var(--paper);
  /* Тёплая «бумага» с тонкой точечной разметкой */
  background-image: radial-gradient(rgba(47, 71, 81, 0.11) 1px, transparent 1.6px);
  background-size: 26px 26px;
}

/* Едва заметное зерно поверх бумаги — фактура, а не ornament */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23g)'/%3E%3C/svg%3E");
  opacity: 0.045;
}

h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 400;
  color: var(--ink);
  margin: 0 0 14px;
}

h1 { font-size: 34px; }
h2 { font-size: 24px; }
h3 { font-size: 19px; }

a { color: var(--ink); text-decoration: none; }
a:hover { color: var(--ink-soft); }

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

.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 20px;
}

.muted { color: var(--muted); font-size: 14px; }
.lead { font-size: 18px; color: var(--ink-soft); }
.empty { color: var(--muted); font-style: italic; }

.prose p { margin: 0 0 12px; }

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--accent);
  color: var(--ink);
  padding: 10px 18px;
  z-index: 200;
  border-radius: 0 0 8px 0;
  font-family: var(--font-display);
  font-size: 13px;
}
.skip-link:focus { left: 0; }

:focus-visible { outline: none; box-shadow: var(--ring); border-radius: 4px; }

code {
  background: var(--paper-2);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  font-size: 14px;
}

/* Табличные цифры: колонки чисел не «пляшут» — критично для таблиц
   направлений и блоков статистики. */
.fact b, .spec-val, .step .num, .stat b {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* ---------- Китайская локаль ----------
   Russo One и PT Sans не содержат CJK-глифов: китайский текст падает на
   системный шрифт, и латинский трекинг разрывает иероглифы. Поэтому для zh
   трекинг и uppercase сбрасываются, leading растёт, кегль заголовка
   уменьшается (иероглиф шире латинской буквы), а контраст заголовков
   строится размером, а не насыщенностью. */
html[lang="zh-hans"] {
  --font-display: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-body: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
}

html[lang="zh-hans"] body { line-height: 1.7; }

html[lang="zh-hans"] h1,
html[lang="zh-hans"] h2,
html[lang="zh-hans"] h3 { letter-spacing: 0; }

html[lang="zh-hans"] .hero-eyebrow,
html[lang="zh-hans"] .index,
html[lang="zh-hans"] .spec-label,
html[lang="zh-hans"] .cta-form label,
html[lang="zh-hans"] .rail a span {
  letter-spacing: 0;
  text-transform: none;
}

html[lang="zh-hans"] .hero h1 { font-size: clamp(32px, 4.4vw, 54px); line-height: 1.18; }
html[lang="zh-hans"] .section-title { font-size: clamp(24px, 2.8vw, 30px); line-height: 1.25; }

