/* Оформление документации Р13.Орбита.
 *
 * Источник: «Фирменный стиль 1b „Аппарат“», редакция 1.0, 08.2026.
 * Значения ниже взяты из гайда, а не подобраны на глаз:
 *
 *   палитра      синий #1B1D59, кость #E9E5DB, сигнал #A2382E (не более 5%
 *                площади), сталь #85868F, кость светлая #F3F0E8, графит #3A3B42
 *   пропорции    кость 62%, синий 28%, сталь 6%, сигнал 4%
 *   гарнитуры    Oswald (заголовки, капслок), Onest (набор), JetBrains Mono (цифры, код)
 *   геометрия    радиус 0 везде, тени не используются, шаг отступов 8 px,
 *                линия-отбивка 2 px синего под заголовком раздела
 *
 * Сигнальный цвет применяется ровно в двух местах: уголок-скобка обложки
 * (правый нижний, как требует раздел «Сетка, диагональ, кадр») и врезки
 * с предупреждением. Для ссылок, иконок навигации и заголовков гайд его
 * запрещает.
 *
 * Шрифты подключаются локально: документация должна собираться и работать
 * в закрытом контуре без доступа в интернет.
 */

/* Три гарнитуры гайда, по одному переменному файлу на подмножество символов.
   Все три с открытой лицензией, тексты лицензий лежат рядом со шрифтами.
   Начертания берутся из одного файла (переменная ось веса), поэтому набор
   400/500/600/700 не требует отдельных загрузок. */

/* Заголовочная: Oswald, только капслок */
@font-face {
    font-family: 'Oswald';
    font-style: normal;
    font-weight: 200 700;
    font-display: swap;
    src: url('../fonts/oswald-cyrillic-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
    font-family: 'Oswald';
    font-style: normal;
    font-weight: 200 700;
    font-display: swap;
    src: url('../fonts/oswald-latin-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
        U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122,
        U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Наборная: Onest */
@font-face {
    font-family: 'Onest';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/onest-cyrillic-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
    font-family: 'Onest';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/onest-latin-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
        U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122,
        U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Служебная: JetBrains Mono, числа, подписи, метрики, код */
@font-face {
    font-family: 'JetBrains Mono';
    font-style: normal;
    font-weight: 100 800;
    font-display: swap;
    src: url('../fonts/jetbrains-mono-cyrillic-wght-normal.woff2') format('woff2-variations');
    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: 100 800;
    font-display: swap;
    src: url('../fonts/jetbrains-mono-latin-wght-normal.woff2') format('woff2-variations');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
        U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122,
        U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    /* Палитра гайда */
    --orbita-blue: #1b1d59;
    --orbita-blue-deep: #15173f;
    --orbita-bone: #e9e5db;
    --orbita-bone-light: #f3f0e8;
    --orbita-signal: #a2382e;
    --orbita-steel: #85868f;
    --orbita-graphite: #3a3b42;

    /* Обводка и сетка: 1,5 px синего и 1 px стали из гайда */
    --orbita-border: rgba(27, 29, 89, 0.22);
    --orbita-grid: rgba(133, 134, 143, 0.45);

    /* Гарнитуры: заголовочная, наборная, служебная */
    --orbita-font-display: 'Oswald', 'Segoe UI', system-ui, sans-serif;
    --orbita-font-body: 'Onest', -apple-system, BlinkMacSystemFont, 'Segoe UI',
        system-ui, sans-serif;
    --orbita-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular,
        'SF Mono', Menlo, Consolas, monospace;

    /* Шаг отступов кратен 8 px */
    --orbita-step: 8px;
}

[data-md-color-scheme='orbita'] {
    --md-primary-fg-color: var(--orbita-blue);
    --md-primary-fg-color--light: #2b2e6e;
    --md-primary-fg-color--dark: var(--orbita-blue-deep);
    --md-primary-bg-color: var(--orbita-bone);
    --md-primary-bg-color--light: rgba(233, 229, 219, 0.7);

    /* Акцент интерфейса синий: сигнальный для ссылок гайд запрещает */
    --md-accent-fg-color: var(--orbita-blue-deep);
    --md-accent-fg-color--transparent: rgba(27, 29, 89, 0.1);

    --md-default-bg-color: var(--orbita-bone);
    --md-default-fg-color: var(--orbita-graphite);
    --md-default-fg-color--light: var(--orbita-steel);
    --md-default-fg-color--lighter: var(--orbita-steel);
    --md-default-fg-color--lightest: rgba(133, 134, 143, 0.3);

    --md-typeset-color: var(--orbita-graphite);
    --md-typeset-a-color: var(--orbita-blue);

    --md-code-bg-color: var(--orbita-bone-light);
    --md-code-fg-color: var(--orbita-graphite);

    --md-footer-bg-color: var(--orbita-blue);
    --md-footer-bg-color--dark: var(--orbita-blue-deep);
}

/* Радиусы в системе отсутствуют: уровень задаётся плашкой и обводкой */
.md-typeset table:not([class]),
.md-typeset pre > code,
.md-typeset code,
.md-typeset kbd,
.md-typeset .admonition,
.md-typeset details,
.md-typeset .tabbed-labels > label,
.md-search__form,
.md-search__inner,
.md-search__output,
.md-nav__link,
.md-button,
.orbita-card,
.orbita-hero,
.orbita-figure {
    border-radius: 0;
}

/* Тени не используются */
.md-header,
.md-search__form,
.md-search__output,
.md-typeset .admonition,
.md-typeset details,
.md-typeset table:not([class]),
.orbita-card {
    box-shadow: none;
}

/* Типографика.
   Шкала гайда рассчитана на обложки (H1 64/58). На странице документации
   заголовок страницы соответствует уровню «раздел страницы» (40/38),
   заголовок блока уровню «заголовок блока» (24/26). Кегль 64 остаётся
   только на обложке главной. */
body,
input,
button,
select {
    font-family: var(--orbita-font-body);
}

code,
kbd,
pre {
    font-family: var(--orbita-font-mono);
}

.md-typeset {
    font-size: 0.72rem;
    line-height: 1.57;
    hyphens: none;
    text-align: left;
}

/* Строка набора не длиннее 72 знаков */
.md-content__inner {
    max-width: 46rem;
}

.md-typeset h1,
.md-typeset h2,
.md-typeset h3 {
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--orbita-blue);
    font-weight: 600;
}

.md-typeset h1 {
    font-size: 1.9rem;
    line-height: 1.05;
    margin: 0 0 calc(var(--orbita-step) * 3);
}

/* Линия-отбивка 2 px синего идёт под каждым заголовком раздела */
.md-typeset h2 {
    font-size: 1.15rem;
    line-height: 1.1;
    margin-top: calc(var(--orbita-step) * 6);
    padding-bottom: var(--orbita-step);
    border-bottom: 2px solid var(--orbita-blue);
}

.md-typeset h3 {
    font-size: 0.85rem;
    line-height: 1.2;
    margin-top: calc(var(--orbita-step) * 4);
}

.md-typeset h4 {
    font-family: var(--orbita-font-body);
    font-weight: 600;
    color: var(--orbita-blue);
    text-transform: none;
}

/* Лид-абзац: вводная мысль после заголовка страницы */
.md-typeset h1 + p {
    font-size: 0.82rem;
    line-height: 1.55;
}

/* Ссылки в тексте подчёркнуты всегда. Гайд запрещает подчёркивание как
   средство акцента, но ссылка это элемент интерфейса, а не выделение. */
.md-typeset a:not(.md-button):not(.headerlink):not(.orbita-card) {
    text-decoration: underline;
    text-underline-offset: 0.15em;
    text-decoration-thickness: 1px;
}

/* Курсив как средство акцента не используется: акцент цветом */
.md-typeset em {
    font-style: normal;
    font-weight: 600;
    color: var(--orbita-blue);
}

.md-typeset strong {
    color: var(--orbita-blue);
}

/* Шапка и навигация: синий держит структуру */
.md-header {
    border-bottom: 1px solid rgba(233, 229, 219, 0.15);
}

.md-header__title {
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 500;
}

.md-tabs {
    background-color: var(--orbita-blue-deep);
}

/* Капслок с трекингом шире строчного набора, поэтому кегль и шаг уменьшены:
   восемь разделов верхнего уровня должны укладываться в строку без обрезки. */
.md-tabs__link {
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-size: 0.58rem;
    opacity: 0.72;
}

.md-tabs__item {
    padding: 0 0.4rem;
}

.md-tabs__link--active,
.md-tabs__link:hover {
    opacity: 1;
}

.md-nav__title {
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-size: 0.66rem;
    color: var(--orbita-steel);
}

.md-nav__link--active,
.md-nav__link--active code {
    color: var(--orbita-blue);
    font-weight: 600;
}

/* Логотип монохромный синий, на синей шапке выворачиваем в кость.
   В боковом меню шапка светлая, там знак остаётся исходного цвета. */
.md-header .md-logo img {
    height: 1.5rem;
    width: auto;
    filter: brightness(0) invert(1);
}

/* Название продукта уже есть в самом логотипе, дублировать его текстом не нужно.
   Только на широких экранах: на узких логотип скрывается темой, и название
   в шапке остаётся единственным опознавательным знаком.
   Скрываем именно надпись (.md-ellipsis), а не весь topic: внутри того же
   элемента Material рендерит переключатель версий (.md-version). */
@media screen and (min-width: 76.25em) {
    .md-header__title .md-header__topic:first-child > .md-ellipsis {
        visibility: hidden;
    }
}

/* Таблицы: шапка на плашке кость светлая, сетка 1 px стали */
.md-typeset table:not([class]) {
    border: 1px solid var(--orbita-border);
    font-size: 0.66rem;
}

.md-typeset table:not([class]) th {
    background-color: var(--orbita-bone-light);
    color: var(--orbita-blue);
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 500;
    border-bottom: 2px solid var(--orbita-blue);
}

.md-typeset table:not([class]) td {
    border-top: 1px solid var(--orbita-grid);
}

/* Код и мономаркеры */
.md-typeset pre > code {
    font-size: 0.64rem;
    border: 1px solid var(--orbita-border);
}

.md-typeset code {
    background-color: var(--orbita-bone-light);
    border: 1px solid var(--orbita-border);
    padding: 0 0.3em;
    font-size: 0.85em;
}

.md-typeset kbd {
    background-color: var(--orbita-bone-light);
    border: 1px solid var(--orbita-border);
    box-shadow: none;
    color: var(--orbita-blue);
}

/* Врезки: плашка и обводка вместо тени, левая линия 2 px */
.md-typeset .admonition,
.md-typeset details {
    background-color: var(--orbita-bone-light);
    border: 1px solid var(--orbita-border);
    border-left: 2px solid var(--orbita-blue);
    font-size: 0.68rem;
}

.md-typeset .admonition-title,
.md-typeset summary {
    background-color: transparent;
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 500;
    color: var(--orbita-blue);
}

.md-typeset .admonition-title::before,
.md-typeset summary::before {
    background-color: var(--orbita-blue);
}

/* Единственное место в тексте, где появляется сигнальный цвет */
.md-typeset .admonition.danger,
.md-typeset .admonition.warning {
    border-left-color: var(--orbita-signal);
}

.md-typeset .danger > .admonition-title,
.md-typeset .warning > .admonition-title {
    color: var(--orbita-signal);
}

.md-typeset .danger > .admonition-title::before,
.md-typeset .warning > .admonition-title::before {
    background-color: var(--orbita-signal);
}

/* Табы контента */
.md-typeset .tabbed-labels > label {
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-size: 0.66rem;
}

/* Карточки разделов: плашка кость светлая, обводка, без тени и смещения */
.orbita-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: calc(var(--orbita-step) * 2);
    margin: calc(var(--orbita-step) * 3) 0;
}

.orbita-card {
    display: block;
    padding: calc(var(--orbita-step) * 2);
    background-color: var(--orbita-bone-light);
    border: 1px solid var(--orbita-border);
    color: inherit !important;
    text-decoration: none !important;
    transition: border-color 0.12s linear;
}

.orbita-card:hover {
    border-color: var(--orbita-blue);
}

.orbita-card__title {
    display: block;
    font-family: var(--orbita-font-display);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 500;
    font-size: 0.78rem;
    color: var(--orbita-blue);
    margin-bottom: var(--orbita-step);
}

.orbita-card__text {
    display: block;
    font-size: 0.66rem;
    line-height: 1.5;
    color: var(--orbita-graphite);
}

/* Обложка главной: светлая схема, линия-отбивка под заголовком,
   скобки-уголки, из них правый нижний сигнальный. */
.orbita-hero {
    position: relative;
    margin: 0 0 calc(var(--orbita-step) * 4);
    padding: calc(var(--orbita-step) * 5) calc(var(--orbita-step) * 4);
    background-color: var(--orbita-bone-light);
    border: 1px solid var(--orbita-border);
}

.orbita-hero::before,
.orbita-hero::after {
    content: '';
    position: absolute;
    width: calc(var(--orbita-step) * 3);
    height: calc(var(--orbita-step) * 3);
}

.orbita-hero::before {
    top: -1px;
    left: -1px;
    border-top: 2px solid var(--orbita-blue);
    border-left: 2px solid var(--orbita-blue);
}

.orbita-hero::after {
    right: -1px;
    bottom: -1px;
    border-bottom: 2px solid var(--orbita-signal);
    border-right: 2px solid var(--orbita-signal);
}

.md-typeset .orbita-hero h1 {
    margin: 0 0 calc(var(--orbita-step) * 2);
    padding-bottom: calc(var(--orbita-step) * 2);
    border-bottom: 2px solid var(--orbita-blue);
    font-size: 2.6rem;
    line-height: 1;
    color: var(--orbita-blue);
}

.md-typeset .orbita-hero p {
    margin: 0;
    max-width: 42rem;
    font-size: 0.82rem;
    line-height: 1.55;
    color: var(--orbita-graphite);
}

.orbita-hero__meta {
    margin-top: calc(var(--orbita-step) * 3);
    font-family: var(--orbita-font-mono);
    font-size: 0.6rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--orbita-steel);
}

/* Схемы: плашка кость светлая, подпись моно сталью */
.orbita-figure {
    margin: calc(var(--orbita-step) * 3) 0;
    padding: calc(var(--orbita-step) * 3);
    background-color: var(--orbita-bone-light);
    border: 1px solid var(--orbita-border);
    overflow-x: auto;
}

.orbita-figure svg {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 0 auto;
}

.md-typeset .orbita-figure figcaption {
    max-width: none;
    margin: calc(var(--orbita-step) * 2) auto 0;
    text-align: center;
    font-family: var(--orbita-font-mono);
    font-size: 0.6rem;
    font-style: normal;
    letter-spacing: 0.04em;
    line-height: 1.5;
    color: var(--orbita-steel);
}

/* Подвал: служебная разметка мономаркером */
.md-footer-meta {
    background-color: var(--orbita-blue-deep);
}

.md-footer-copyright,
.md-footer__title,
.md-footer__direction {
    font-family: var(--orbita-font-mono);
    font-size: 0.6rem;
    letter-spacing: 0.04em;
}

/* Печать: документация уходит в комплект поставки на бумаге */
@media print {
    .md-header,
    .md-tabs,
    .md-sidebar,
    .md-footer {
        display: none;
    }

    .orbita-hero::before,
    .orbita-hero::after {
        display: none;
    }
}
