/* 03 · Базовая типографика и элементы */
body{
  font-family:var(--font-body);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  font-weight:400;
  color:var(--ink);
  background:var(--bg);
  font-variant-numeric:tabular-nums;
}
h1,h2,h3,h4{font-family:var(--font-display);line-height:var(--lh-head);letter-spacing:-.02em;color:var(--blue-900);hyphens:none;overflow-wrap:break-word}
h1{font-size:var(--fs-h1);font-weight:800;line-height:var(--lh-tight);letter-spacing:-.03em}
h2{font-size:var(--fs-h2);font-weight:700}
h3{font-size:var(--fs-h3);font-weight:600}
h4{font-size:var(--fs-h4);font-weight:700}
p{max-width:var(--measure)}
p+p{margin-top:.85em}
strong,b{font-weight:700;color:var(--ink)}
em{font-style:italic}
small{font-size:var(--fs-xs)}
a:not([class]){color:var(--blue-600);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
a:not([class]):hover{color:var(--blue-800)}
::selection{background:var(--blue-100);color:var(--blue-900)}

.lead{font-size:var(--fs-lead);line-height:1.5;font-weight:500;color:var(--ink-2);max-width:60ch}
.kicker{
  font-family:var(--font-mono);font-size:var(--fs-kicker);font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);
  display:inline;line-height:1.5;
}
.kicker::before{content:'§';font-family:var(--font-display);font-size:1.05em;color:var(--blue-700);letter-spacing:0;margin-right:.45em;vertical-align:baseline}
.num,.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}
.text-muted{color:var(--ink-3)}
.text-blue{color:var(--blue-700)}
.text-green{color:var(--green-700)}
.text-warn{color:var(--warn-700)}
.center{text-align:center}
.center p,.center .lead{margin-inline:auto}

/* Ссылки-кнопки */
.link-ext{display:inline-flex;align-items:center;gap:.5em;color:var(--blue-600);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.link-ext:hover{color:var(--blue-800)}
.link-ext .icon{width:1em;height:1em}

/* Иконки */
.icon{width:1.35em;height:1.35em;flex:0 0 auto;stroke-width:1.75}
.icon-lg{width:2rem;height:2rem}
.icon-xl{width:2.75rem;height:2.75rem}
.icon-box{
  width:3.5rem;height:3.5rem;display:grid;place-items:center;flex:0 0 auto;
  border-radius:var(--r-sm);background:var(--blue-50);border:1px solid var(--line-blue);
}
.icon-box--green{background:var(--green-50);border-color:var(--green-100)}
.icon-box--lg{width:4.25rem;height:4.25rem;border-radius:var(--r-md)}

/* Таблицы данных */
.data-table{font-size:var(--fs-sm)}
.data-table th,.data-table td{padding:.75em .9em;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
.data-table thead th{
  font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3);background:var(--bg-soft);
  border-bottom:2px solid var(--line-strong);white-space:nowrap;
}
.data-table tbody tr:nth-child(even){background:var(--bg-soft)}
.data-table tbody tr:hover{background:var(--blue-50)}
.data-table .num{font-size:var(--fs-num);color:var(--blue-800)}

/* Изображения */
.media{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.media-frame{overflow:hidden;border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg-soft)}

/* Скроллбар (нативный — для мобильных, кастомный подключается классом .has-custom-scrollbar) */
@supports (scrollbar-width:thin){*{scrollbar-width:thin;scrollbar-color:var(--blue-500) var(--bg-soft)}}
