/* ═══════════════════════════════════════════════════════════════════════════════════
   ИЗДАТЕЛЬСКИЙ СЛОЙ · типографика и контуры печатного уровня
   ───────────────────────────────────────────────────────────────────────────────────
   Зачем: владелец 28.08 — «с текстом, с визуалом, с контурами, с детализацией оно до сих
   пор как искусственный интеллект выглядит». Замер подтвердил диагноз числом:
   font-feature-settings — 4 вхождения на 90 страниц, font-optical-sizing / font-kerning /
   font-variation-settings — 0, а контуров «border:1px» — 2075 одинаковых.
   Ровно это и читается как шаблон: шрифт работает в дефолте, рамки нарисованы одной кистью.

   Что делает слой (ничего не заменяет, только доводит):
   · включает то, что вариативные шрифты умеют и что до сих пор не было включено —
     кернинг, лигатуры, старостильные цифры в тексте и табличные в числах;
   · ставит висячую пунктуацию: кавычка и тире выносятся в поле, край текста становится
     ровным — так набирают книги, и именно этого не делает ни один шаблон;
   · даёт контурам вес: тонкая линия 0.5px и световой градиент вместо сплошной 1px;
   · вводит угловые засечки — рамка «печатной карточки» вместо скруглённого блока;
   · выравнивает оптику заголовков: отрицательный трекинг растёт с кеглем, как в наборе.

   Границы: палитра и семейства шрифтов канона не трогаются ни одним значением.
   Слой подключается ПОСЛЕ base.css и работает только там, где помечено классом,
   кроме базовых правил набора — они безопасны и действуют на весь документ.
   ═══════════════════════════════════════════════════════════════════════════════════ */

/* ── 1. НАБОР: то, что шрифт умеет, но что не было включено ───────────────────────── */
html{
  text-rendering:optimizeLegibility;
  font-kerning:normal;
  font-synthesis:none;              /* никаких псевдо-жирных и псевдо-курсивов */
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
body{
  font-feature-settings:"kern" 1,"liga" 1,"calt" 1;
  font-optical-sizing:auto;
  hanging-punctuation:first last;   /* Safari: кавычки и тире уходят в поле */
}
/* Старостильные цифры в тексте — они не выпирают из строчных, как дефолтные.
   Там, где цифры сравнивают (цены, таблицы, счётчики), включаются табличные — ниже. */
p,li,blockquote,figcaption,dd{
  font-variant-numeric:oldstyle-nums proportional-nums;
}
/* Числа, которые читают глазами по колонке, обязаны стоять в колонку */
.tnum,table,.price,.k-w,.kc-n,.kc-q,.scale-n,time,
[class*="num"],[class*="count"],[class*="price"]{
  font-variant-numeric:tabular-nums lining-nums;
  font-feature-settings:"tnum" 1,"lnum" 1;
}

/* ── 2. ОПТИКА ЗАГОЛОВКА: чем крупнее кегль, тем плотнее набор ────────────────────── */
h1{letter-spacing:-.028em}
h2{letter-spacing:-.021em}
h3{letter-spacing:-.014em}
h4,h5{letter-spacing:-.008em}
h1,h2,h3{text-wrap:balance}         /* висячих слов в заголовке не бывает */
p{text-wrap:pretty}
/* Заголовок серифом набирается со своей осью: у EB Garamond оптический размер работает */
h1,h2,h3,.serif,[class*="h1"]{font-optical-sizing:auto}

/* ── 3. ВИСЯЧАЯ ПУНКТУАЦИЯ ВРУЧНУЮ (для браузеров без hanging-punctuation) ────────── */
.hang{text-indent:-.4em}
.hang-q{margin-left:-.42em}         /* открывающая ёлочка уходит в поле */

/* ── 4. БУКВИЦА: первый абзац раздела начинается с буквы в три строки ─────────────── */
.dropcap::first-letter{
  float:left;
  font-family:var(--serif);
  font-size:3.02em;
  line-height:.84;
  padding:.06em .10em 0 0;
  margin:.02em .04em 0 0;
  color:var(--gold-hot);
  font-feature-settings:"kern" 1;
}
@supports (initial-letter:3){
  .dropcap::first-letter{float:none;initial-letter:3 3;padding:0;margin:0 .12em 0 0}
}

/* ── 5. КОНТУРЫ: линия имеет вес и направление, а не одну толщину ────────────────── */
/* Волосяная линия. На retina 0.5px — настоящая линия в один физический пиксель. */
.rule-hair{border:0;height:1px;background:linear-gradient(90deg,
  transparent 0,var(--line-2) 12%,var(--line-2) 88%,transparent 100%)}
@media (min-resolution:2dppx){
  .rule-hair{height:.5px}
}
/* Световая рамка: не сплошной кант, а градиент, который гаснет к нижнему краю —
   так ведёт себя настоящий свет, падающий на карточку сверху. */
.edge-light{
  position:relative;
  border:0;
  background-clip:padding-box;
}
.edge-light::before{
  content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;
  background:linear-gradient(160deg,
    rgba(243,217,164,.42) 0%, rgba(216,181,120,.18) 26%,
    rgba(216,181,120,.06) 58%, rgba(143,216,232,.10) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  pointer-events:none;
}
/* Угловые засечки — метка печатного листа. Рамки нет, есть четыре угла. */
.corner-marks{position:relative}
.corner-marks::before,.corner-marks::after{
  content:'';position:absolute;width:14px;height:14px;pointer-events:none;
  border-color:var(--line-2);border-style:solid;border-width:0;
}
.corner-marks::before{top:-1px;left:-1px;border-top-width:1px;border-left-width:1px}
.corner-marks::after{bottom:-1px;right:-1px;border-bottom-width:1px;border-right-width:1px}

/* ── 6. МАРГИНАЛИЯ: заметка на поле, как в научном издании ────────────────────────── */
.marginal{
  font-family:var(--mono);font-size:11px;line-height:1.5;letter-spacing:.06em;
  color:var(--dim);text-transform:uppercase;
}
@media (min-width:1180px){
  .has-marginals{position:relative}
  .marginal{position:absolute;left:calc(100% + 34px);width:190px;text-transform:none;
    font-size:11.5px;letter-spacing:.02em}
}

/* ── 7. ЦИТАТА: кавычка стоит в поле, а не съедает первую строку ──────────────────── */
.pullquote{
  font-family:var(--serif);font-size:clamp(20px,2.1vw,28px);line-height:1.34;
  color:var(--ink);position:relative;padding-left:1.1em;
  font-feature-settings:"kern" 1,"liga" 1;
}
.pullquote::before{
  content:'«';position:absolute;left:0;top:-.06em;
  font-size:1.9em;line-height:1;color:var(--gold);opacity:.55;
}

/* ── 8. ВЕРТИКАЛЬНЫЙ РИТМ: расстояния идут по одной сетке, а не подбираются ───────── */
.rhythm > * + *{margin-top:var(--rh,1.35rem)}
.rhythm > h2 + *,.rhythm > h3 + *{margin-top:calc(var(--rh,1.35rem) * .62)}
.rhythm > * + h2,.rhythm > * + h3{margin-top:calc(var(--rh,1.35rem) * 1.9)}

/* ── 9. ДОСТУПНОСТЬ И ПЕЧАТЬ ─────────────────────────────────────────────────────── */
@media print{
  .edge-light::before,.corner-marks::before,.corner-marks::after{display:none}
  .dropcap::first-letter{color:#000}
}
