/* База: сброс, типографика, шкала размеров. Все значения – через токены.
   Размер текста задаётся ТОЛЬКО классами этой шкалы, в секциях font-size не пишется. */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--color-ink);color:var(--color-fg-muted);
  font-family:var(--font-text);font-size:var(--text-body);line-height:var(--leading-body);
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,svg,video{display:block;max-width:100%}
ul,ol{list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:var(--hairline) solid var(--color-accent-40);outline-offset:var(--space-4)}

/* --- шкала текста --- */
.display-xl{font-family:var(--font-display);font-weight:var(--weight-bold);
  font-size:var(--text-display-xl);line-height:var(--leading-tight);
  letter-spacing:var(--track-display);color:var(--color-fg)}
.display-l{font-family:var(--font-display);font-weight:var(--weight-bold);
  font-size:var(--text-display-l);line-height:var(--leading-display);
  letter-spacing:var(--track-display);color:var(--color-fg)}
.display-m{font-family:var(--font-display);font-weight:var(--weight-semibold);
  font-size:var(--text-display-m);line-height:var(--leading-display);
  letter-spacing:var(--track-title);color:var(--color-fg)}
.display-num{font-family:var(--font-display);font-weight:var(--weight-bold);
  font-size:var(--text-num);line-height:var(--leading-num);
  letter-spacing:var(--track-num);color:var(--color-fg);font-variant-numeric:tabular-nums}
.display-num-s{font-family:var(--font-display);font-weight:var(--weight-bold);
  font-size:var(--text-num-s);line-height:var(--leading-num);
  letter-spacing:var(--track-num);color:var(--color-fg);font-variant-numeric:tabular-nums}
.title{font-family:var(--font-display);font-weight:var(--weight-semibold);
  font-size:var(--text-title);line-height:var(--leading-title);
  letter-spacing:var(--track-title);color:var(--color-fg)}
.title-s{font-family:var(--font-display);font-weight:var(--weight-semibold);
  font-size:var(--text-title-s);line-height:var(--leading-title);
  letter-spacing:var(--track-nav);color:var(--color-fg)}
.title-xxs{font-family:var(--font-text);font-weight:var(--weight-regular);
  font-size:var(--text-title-xxs);line-height:var(--leading-title);color:var(--color-fg-dim)}
.body-l{font-size:var(--text-body-l);line-height:var(--leading-body-l)}
.body-m{font-size:var(--text-body);line-height:var(--leading-body)}
.body-s{font-size:var(--text-body-s);line-height:var(--leading-body-l)}
.credit{font-size:var(--text-credit);line-height:var(--leading-body-l)}
.nav{font-family:var(--font-display);font-weight:var(--weight-medium);
  font-size:var(--text-nav);line-height:var(--leading-title);letter-spacing:var(--track-nav)}
.menu{font-family:var(--font-display);font-weight:var(--weight-semibold);
  font-size:var(--text-menu);line-height:var(--leading-display);letter-spacing:var(--track-display)}

/* --- поверхности: один переключатель на цвет текста --- */
.on-sheet{color:var(--color-ink-on-sheet-muted)}
.on-sheet .display-xl,.on-sheet .display-l,.on-sheet .display-m,
.on-sheet .display-num,.on-sheet .display-num-s,
.on-sheet .title,.on-sheet .title-s{color:var(--color-ink-on-sheet)}
.on-sheet .title-xxs{color:var(--color-ink-on-sheet-dim)}

/* --- маска для построчного появления --- */
.line-mask{display:block;overflow:hidden}
body.is-modal-open{overflow:hidden}
/* ловушка для ботов Netlify: поле должно быть в разметке, но не для человека */
.is-hidden-field{position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap}

@media (max-width:768px){
  :root{--page-pad:var(--page-pad-s);--head-h:var(--head-h-s);--logo-h:var(--logo-h-s)}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:var(--dur-s);transition-duration:var(--dur-s)}
}
