/* ============================================================
   ЛАМИНА AI — base
   Локальные шрифты, reset, базовая типографика, фокус, выделение,
   утилиты, killswitch на prefers-reduced-motion.
   Ни одного внешнего запроса: шрифты самохост, картинок-иконок нет.
   ============================================================ */

/* --- Локальные шрифты. Файлы вариативные (один файл — диапазон
   начертаний), латиница и кириллица разнесены по unicode-range,
   чтобы браузер не тянул лишний субсет. --- */

@font-face{
  font-family:'Onest'; font-style:normal; font-weight:400 700; font-display:swap;
  src:url('../fonts/onest-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Onest'; font-style:normal; font-weight:400 700; font-display:swap;
  src:url('../fonts/onest-cyrillic.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Unbounded'; font-style:normal; font-weight:400 800; font-display:swap;
  src:url('../fonts/unbounded-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Unbounded'; font-style:normal; font-weight:400 800; font-display:swap;
  src:url('../fonts/unbounded-cyrillic.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'JetBrains Mono'; font-style:normal; font-weight:400 600; font-display:swap;
  src:url('../fonts/jetbrainsmono-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2122,U+2191,U+2193,U+2212,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'JetBrains Mono'; font-style:normal; font-weight:400 600; font-display:swap;
  src:url('../fonts/jetbrainsmono-cyrillic.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

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

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  /* Шапка липкая: якорь вида /product/#kopilot иначе уводит начало
     секции под неё. Отступ ≈ высота свёрнутой шапки. */
  scroll-padding-top:5.5rem;
}

body{
  min-height:100svh;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-text);
  font-size:var(--fs-base);
  line-height:var(--lh-normal);
  letter-spacing:var(--ls-body);
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden; /* страховка от переполнения: горизонтальной прокрутки быть не должно ни на одной ширине */
}

img, picture, svg, video, canvas{ display:block; max-width:100%; height:auto; }
input, button, textarea, select{ font:inherit; color:inherit; }
button{ background:none; border:0; cursor:pointer; }
a{ color:inherit; text-decoration:none; }
ul, ol{ list-style:none; }

/* --- Типографика --- */
h1, h2, h3, h4{
  font-family:var(--font-display);
  font-weight:600;
  line-height:var(--lh-tight);
  letter-spacing:var(--ls-tight);
  color:var(--ink);
  word-break:normal;
}
/* Перенос внутри слова — только на узком экране. Дисплейная гарнитура
   широкая, кириллица длиннее латиницы, и на 360px «35 часов» набиралось
   шире колонки. На десктопе это правило вредно: вместе с text-wrap:balance,
   которая ужимает блок до сбалансированной ширины, оно рвало «персональных»
   на «персональн / ых» посреди слова там, где места на самом деле хватало. */
@media (max-width:767px){
  h1, h2, h3, h4{ overflow-wrap:break-word; }
}
/* text-wrap:balance подбирает строки под ОДИНАКОВУЮ длину, ради этого
   расширяя блок до max-content: на 360px заголовок отдавал scrollWidth
   373 при клиентских 328, и страница ехала вбок. На узком экране
   балансировать нечего — там две-три строки во всю ширину, — поэтому
   включаем её только с 768px, где место для манёвра есть. */
@media (min-width:768px){
  h1, h2, h3, h4{ text-wrap:balance; }
}
h2{ line-height:var(--lh-head); }
h3{ line-height:var(--lh-snug); letter-spacing:var(--ls-snug); }
h4{ line-height:var(--lh-sub);  letter-spacing:var(--ls-micro); }

/* --fs-hero отдан герою главной отдельным правилом (.hero h1).
   Голый h1 служебной страницы набирается шкалой внутренних страниц —
   иначе заголовок «Согласие на обработку персональных данных»
   набирается дисплейным кеглем и рвётся по слогам. */
h1{ font-size:clamp(2rem, 1.2rem + 3vw, 3.25rem); }
h2{ font-size:var(--fs-3xl); }
h3{ font-size:var(--fs-2xl); }
h4{ font-size:var(--fs-lg); }

p{ color:var(--ink); }
p + p{ margin-top:var(--sp-4); }

p.lead{
  font-size:var(--fs-md); color:var(--muted); line-height:var(--lh-loose);
  max-width:min(100%, var(--measure-lead));
}

strong, b{ font-weight:600; }
small{ font-size:var(--fs-sm); }

/* Ссылка внутри прозы обязана отличаться не только цветом (WCAG 1.4.1):
   подчёркивание с отступом от базовой линии. */
.prose a, a.link{
  color:var(--deep-ink);
  text-decoration:underline;
  text-underline-offset:.18em;
  text-decoration-thickness:1px;
  transition:color var(--dur-fast) var(--ease-out);
}
.prose a:hover, a.link:hover{ color:var(--ink); }

.mono{
  font-family:var(--font-mono);
  letter-spacing:var(--ls-wider);
  text-transform:uppercase;
  font-size:var(--fs-xs);
}

/* Длинная проза: согласие, FAQ, юридические тексты. */
.prose{ max-width:min(100%, var(--measure-text)); }
.prose h2{ font-size:var(--fs-xl); margin-top:var(--sp-7); }
.prose h3{ font-size:var(--fs-lg); margin-top:var(--sp-6); }
.prose p, .prose li{ color:var(--ink); line-height:var(--lh-loose); }
.prose ul, .prose ol{ margin:var(--sp-4) 0; padding-left:var(--sp-5); }
.prose ul li{ list-style:disc; margin-bottom:var(--sp-2); }
.prose ol li{ list-style:decimal; margin-bottom:var(--sp-2); }

/* --- Выделение текста --- */
::selection{ background:rgba(var(--deep-rgb), .18); color:var(--ink); }

/* --- Скроллбар --- */
html{ scrollbar-color:var(--line-control) var(--soft); scrollbar-width:thin; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:var(--soft); }
::-webkit-scrollbar-thumb{
  background:var(--line-control); border-radius:var(--r-full);
  border:2px solid var(--soft);
}
::-webkit-scrollbar-thumb:hover{ background:var(--muted); }

/* --- Фокус обязан быть виден везде. Кольцо не снимаем нигде: это
   единственный ориентир клавиатурной навигации. --- */
:focus{ outline:none; }
:focus-visible{
  outline:2px solid var(--focus-ring);
  outline-offset:3px;
  border-radius:4px;
}
/* В тёмной секции синее кольцо на #05070D теряется — перекрашиваем. */
.section--dark :focus-visible, .footer :focus-visible{
  outline-color:var(--ink-invert);
}

/* --- Утилиты --- */
.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}

.skip-link{
  position:fixed; top:-100px; left:var(--sp-4); z-index:var(--z-modal);
  background:var(--paper); color:var(--ink);
  padding:var(--sp-3) var(--sp-5); border-radius:var(--r-sm);
  border:1px solid var(--line-control); box-shadow:var(--shadow-md);
  transition:top var(--dur-base) var(--ease-out);
}
.skip-link:focus{ top:var(--sp-4); }

/* --- Глобальный killswitch: prefers-reduced-motion гасит ВСЁ движение,
   включая плавную прокрутку и scroll-snap-доводку. --- */
@media (prefers-reduced-motion:reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  html{ scroll-behavior:auto; }
}

/* --- Печать: страницу распечатывают на переговорах у производственника.
   Тёмные плашки в печати съедают тонер и выходят серой кашей. --- */
@media print{
  .header, .footer, .skip-link, .hero__form{ display:none !important; }
  .section--dark{ background:#FFF !important; color:#000 !important; }
  .section--dark *{ color:#000 !important; }
  a[href^="http"]::after{ content:" (" attr(href) ")"; font-size:.8em; }
}
