/* РКМенеджер · страницы сайта и блоки уроков, которых не было в макетах: таблицы с номерами и отметками,
   реплики, определения, пара «неправильно — правильно», объёмная схема в уроке, ссылка на материалы;
   уровни руководителей, тест РУКИ, заявка на тренинг, контакты, загрузка материалов, «Заявка принята», 404.
   Цвета — только переменными палитры. Подключается последним, после стилей варианта. */

/* ══ Мелочи ══ */
/* текст для программ чтения: на экране не виден, в дереве доступности есть */
.rk-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.rk-hint { font-size: var(--font-size-3); color: var(--text-secondary); }

/* ══ Урок: таблицы ══ */
/* номер строки — как на слайдах уроков: критерии и атрибуты пронумерованы */
.rk-num { display: inline-grid; place-items: center; min-width: 1.6em; height: 1.6em; margin-right: 10px; padding: 0 4px; border-radius: 6px;
  background: var(--bg-selection); color: var(--text-primary); font: 700 13px/1 var(--font-mono); vertical-align: 1px; }
/* номер и название строки — один строчный блок: колонка не уже номера и самого длинного слова, и название
   не переносится под номер (замечание владельца 27.09.2026: «Корректировка» в таблице ПРОК) */
.rk-rowh { display: inline-flex; align-items: baseline; gap: 10px; }
.rk-rowh > .rk-num { margin-right: 0; flex: none; }
/* отметка «да» — галочка маской, «нет» — короткая черта; слово остаётся для программ чтения */
.rk-table--yesno td { text-align: center; }
.rk-table--yesno thead th:not(:first-child) { text-align: center; }
.rk-yes, .rk-no { display: inline-block; width: 22px; height: 22px; vertical-align: middle; }
.rk-yes { background: var(--state-success);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat; }
.rk-no::before { content: ""; display: block; width: 10px; height: 2px; margin: 10px auto 0; border-radius: 1px; background: var(--border-default); }
@media (max-width: 639px) {
  /* на телефоне строка — карточка: отметки в ряд с подписью колонки */
  .rk-table--yesno td { display: flex; align-items: center; gap: 10px; text-align: left; }
  .rk-table--yesno td::before { min-width: 64px; }
}

/* ══ Урок: реплика, определения, «неправильно — правильно», объём, материалы ══ */
.rk-line { position: relative; padding: 10px 16px 10px 18px; border-left: 3px solid var(--action-primary); border-radius: 0 var(--radius-md) var(--radius-md) 0;
  background: var(--bg-menu); font-style: italic; }
.rk-defs { display: grid; gap: 12px; }
@media (min-width: 700px) { .rk-defs:has(> div + div) { grid-template-columns: 1fr 1fr; } }
.rk-defs > div { padding: 16px 18px; border: 1px solid var(--border-divider); border-radius: var(--rk-radius); background: var(--bg-card); }
.rk-defs dt { font-family: var(--font-heading); font-size: 18px; font-weight: 700; color: var(--text-primary); }
.rk-defs dd { margin: 4px 0 0; color: var(--text-secondary); }
.rk-dodont { display: grid; gap: 10px; }
.rk-dodont p { display: grid; grid-template-columns: 24px 1fr; gap: 12px; align-items: start; padding: 14px 16px; border-radius: var(--rk-radius); }
.rk-dodont .rk-ic { width: 24px; height: 24px; }
/* «неправильно» — вторым тоном, как врезка «Внимание»: красный ошибки тёплый; отличают значок и порядок пары */
.rk-dodont__bad { background: color-mix(in oklch, var(--entity-stream) 12%, var(--bg-card)); }
.rk-dodont__bad .rk-ic { color: var(--entity-stream); }
.rk-dodont__good { background: var(--state-success-bg); }
.rk-dodont__good .rk-ic { color: var(--state-success); }
/* объёмная схема в тексте урока — украшение: стоит по центру и не спорит с таблицей рядом */
.rk-obj { display: grid; place-items: center; min-height: 250px; margin-block: 8px; }
.rk-prose > .rk-obj, .rk-sec > .rk-obj { margin-top: 24px; }
.rk-dl { margin-top: 12px; }
.rk-dl__a { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--border-default);
  background: var(--bg-card); color: var(--text-primary); text-decoration: none; font-size: 15px; font-weight: 500; }
.rk-dl__a .rk-ic { width: 18px; height: 18px; color: var(--icon-tone); }
.rk-dl__a:hover { border-color: var(--border-hover); background: var(--bg-card-hover); }
.rk-levels-note { margin-top: 12px; color: var(--text-secondary); font-size: 15px; }

/* ══ Обычная страница: по центру ══ */
.rk-center__in { display: grid; justify-items: center; text-align: center; gap: 14px; max-width: 760px; }
.rk-center__in .rk-lead { margin-inline: auto; }
.rk-center__in .rk-actions { justify-content: center; margin-top: 12px; }
.rk-center__in .rk-crumbs ol { justify-content: center; margin-bottom: 4px; }
.rk-center__ic { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 50%; background: var(--bg-selection); color: var(--text-primary); }
.rk-center__ic .rk-ic { width: 36px; height: 36px; }
.rk-center__ic--ok { background: var(--state-success-bg); color: var(--state-success); }
/* «Запрос принят»: звонка ждут — шары ожидания системы (скил ambient-motion), рядом со словами */
.rk-wait-call { display: inline-flex; align-items: center; gap: 12px; color: var(--text-primary); }
.rk-wait-call .am-orbs { color: var(--brand-accent); }

/* ══ Уроки по уровням ══ */
.rk-levels { display: grid; gap: 28px; align-items: center; }
@media (min-width: 1000px) { .rk-levels { grid-template-columns: 320px minmax(0, 1fr); } }
.rk-levels__obj { display: grid; place-items: center; min-height: 280px; }
.rk-levels__list { --gk-min: 240px; }
.rk-level { position: relative; display: grid; gap: 6px; align-content: start; padding: 20px 22px; border-radius: var(--rk-radius); border: 1px solid var(--border-divider);
  background: var(--bg-card); box-shadow: var(--elev-1); }
.rk-level--open { border-color: color-mix(in oklch, var(--action-primary) 45%, var(--border-divider)); }
.rk-level__state { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: var(--font-size-3); color: var(--text-muted); }
.rk-level--open .rk-level__state { color: var(--rk-accent-ink); }
.rk-level__h { font-size: 22px; }
.rk-level__h a { color: var(--text-primary); text-decoration: none; }
.rk-level__h a::after { content: ""; position: absolute; inset: 0; z-index: 2; }   /* вся карточка — ссылка */
.rk-level:has(a):hover { background: var(--bg-card-hover); }
.rk-level:focus-within { outline: var(--border-strong) solid var(--border-focus); outline-offset: 3px; }
.rk-level__h a:focus-visible { outline: none; }
.rk-level__en { font-family: var(--font-mono); font-size: 13px; color: var(--text-muted); }
.rk-level__role { font-weight: 600; margin-top: 6px; }
.rk-level__share { font-size: 15px; color: var(--text-secondary); }

/* ══ Тест РУКИ ══ */
/* слева от вопросов — объёмная матрица РУКИ; на столе она не уезжает при прокрутке, уже — стоит над вопросами */
.rk-testgrid { display: grid; gap: 28px; align-items: start; }
.rk-testgrid__obj { display: grid; place-items: center; min-height: 260px; }
@media (min-width: 1000px) {
  .rk-testgrid { grid-template-columns: 300px minmax(0, 1fr); }
  .rk-testgrid__obj { position: sticky; top: calc(var(--rk-header-h) + 24px); }
}
@media (max-width: 699px) { .rk-testgrid__obj { min-height: 220px; } }
.rk-test { margin-top: 24px; }
.rk-test__head { display: grid; gap: 10px; margin-bottom: 18px; }
.rk-test__head[hidden] { display: none; }
.rk-test__bar { height: 6px; border-radius: 3px; }
.rk-test__count { font-family: var(--font-mono); font-size: var(--font-size-3); color: var(--text-secondary); }
.rk-q { margin: 0 0 18px; padding: 20px 22px 16px; border: 1px solid var(--border-divider); border-radius: var(--rk-radius); background: var(--bg-card); min-width: 0; }
.rk-q__legend { display: grid; gap: 4px; float: left; width: 100%; margin-bottom: 14px; padding: 0; font-family: var(--font-heading); font-weight: 700; font-size: 19px; line-height: 1.3; color: var(--text-primary); }
.rk-q__legend + * { clear: both; }
.rk-q__n { font-family: var(--font-mono); font-weight: 500; font-size: 13px; color: var(--rk-accent-ink); }
.rk-q__opts { display: grid; gap: 8px; }
.rk-opt { position: relative; display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: start; padding: 12px 14px; border: 1px solid var(--border-divider);
  border-radius: var(--radius-md); background: var(--bg-input); cursor: pointer; line-height: 1.45; }
.rk-opt:hover { border-color: var(--border-hover); }
.rk-opt input { width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--action-primary); }
.rk-opt:has(input:checked) { border-color: var(--action-primary); background: var(--bg-selection); }
.rk-opt:has(input:focus-visible) { outline: var(--border-strong) solid var(--border-focus); outline-offset: 2px; }
.rk-test__nav { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.rk-test__nav [hidden] { display: none; }
.rk-test__hint { margin-top: 10px; color: var(--text-error); font-size: 15px; }
.rk-test__hint[hidden] { display: none; }
/* пошаговый показ включает сценарий: без него видны все вопросы сразу и кнопка отправки */
.rk-test.is-stepped .rk-q:not(.is-current) { display: none; }
.rk-test.is-stepped .rk-q { margin-bottom: 12px; }

/* ══ Заявка на тренинг ══ */
.rk-formwrap { display: grid; gap: 28px; align-items: start; }
@media (min-width: 1000px) { .rk-formwrap { grid-template-columns: minmax(0, 560px) minmax(0, 1fr); } }
.rk-form { display: grid; gap: 20px; padding: clamp(20px, 3vw, 32px); border-radius: calc(var(--rk-radius) + 4px); background: var(--bg-card); border: 1px solid var(--border-divider); box-shadow: var(--elev-2); }
.rk-form__h { font-size: 21px; }
.rk-field { max-width: none; }
.rk-field .ui-label { font-size: 15px; }
/* поле крупнее, чем в рабочем интерфейсе системы: 16 пунктов — телефон не увеличивает страницу при вводе */
.rk-field .ui-box { height: 48px; font-size: 16px; }
.rk-field .ui-box:hover { border-color: var(--border-hover); }
.rk-field .ui-box:focus-visible { outline: var(--border-strong) solid var(--border-focus); outline-offset: 2px; border-color: var(--border-focus); }
.rk-field .ui-box:user-invalid { border-color: var(--border-error); }
.rk-phone { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 8px; }
.rk-textarea.ui-box { height: auto; min-height: 132px; padding-block: 12px; resize: vertical; line-height: 1.5; }
.rk-form .btn { justify-self: start; }
.rk-formside { display: grid; gap: 8px; padding: 20px 22px; border-radius: var(--rk-radius); background: var(--bg-menu); }
.rk-formside__h { font-family: var(--font-heading); font-weight: 700; font-size: 18px; }

/* ══ Контакты ══ */
.rk-contacts { --gk-min: 260px; }
.rk-contact { display: grid; gap: 8px; align-content: start; padding: 22px; border-radius: var(--rk-radius); border: 1px solid var(--border-divider); background: var(--bg-card); box-shadow: var(--elev-1); }
.rk-contact__ic { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: var(--bg-selection); color: var(--text-primary); }
.rk-contact__h { font-size: 20px; margin-top: 4px; }
.rk-contact__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.rk-contact__list a { display: inline-flex; align-items: center; gap: 6px; }

/* ══ Загрузка материалов ══ */
.rk-dlwait { display: grid; justify-items: center; gap: 12px; margin-top: 10px; }
.rk-dlwait__ring { display: none; width: 96px; height: 96px; place-items: center; }
.js .rk-dlwait__ring { display: grid; }                 /* отсчёт — только со сценарием */
.rk-dlwait__ring b { position: absolute; font: 700 26px var(--font-mono); color: var(--text-primary); font-variant-numeric: tabular-nums; }
.rk-dlwait__status { color: var(--text-secondary); }
.rk-tips { display: grid; gap: 18px; align-items: center; justify-items: center; margin-top: 18px; padding: 20px; border-radius: calc(var(--rk-radius) + 4px);
  background: var(--bg-card); border: 1px solid var(--border-divider); box-shadow: var(--elev-1); }
@media (min-width: 760px) { .rk-tips { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); justify-items: start; text-align: left; } }
.rk-tips__fig { margin: 0; width: 100%; }
.rk-tips__fig img { width: 100%; border-radius: var(--radius-md); }
.rk-tips__txt { display: grid; gap: 12px; }

/* ══ Схемы уроков в объёме — scripts/rk_schemes.py, решение владельца 26–27.09.2026 ══
   Плита неподвижна и немного развёрнута в перспективу, блоки подняты над ней, высота блока — ступень иерархии.
   При наведении наклоняется только блок под курсором; схема целиком не крутится, ничего не подсвечивается и не
   приглушается. Связи — по щелчку или Enter, выбранный блок при этом нажат, как кнопка. Окно сцены, положение плиты
   и поворот заданы в разметке каждой схемы; схема может быть плоской — .dg3--flat */
:root, [data-theme] {
  --rk-sch-edge-a: var(--text-secondary);
  --rk-sch-edge-b: var(--brand-accent);
  --rk-sch-edge-c: var(--state-info);
  --rk-sch-side: color-mix(in oklch, var(--bg-card) 78%, var(--text-primary));
}
.rk-scheme__wrap { overflow-x: auto; padding-block: 4px 6px; }
.dg3 { position: relative; min-width: 640px; perspective: 1500px; perspective-origin: 50% 20%; }
/* плоский вид — без перспективы, плита лежит лицом к смотрящему: схема команды урока 7, просьба владельца 28.09.2026 */
.dg3--flat { perspective: none; }
/* узкий вид — для телефона (замечание владельца 07.10.2026: схемы не умещались по длине): те же блоки и связи, разложенные
   сверху вниз. Какой вид показать, решает ширина колонки, а не экрана, — запрос контейнера к рисунку: уже 640 точек —
   узкий. Браузер без запросов контейнера покажет широкий вид с прокруткой вбок, как прежде */
.rk-scheme { container-type: inline-size; }
.rk-scheme__wrap--narrow { display: none; overflow-x: clip; }   /* сцена помещается с полем — прокрутке вбок взяться неоткуда */
.dg3--narrow { min-width: 0; }
@container (max-width: 639.98px) {
  .rk-scheme__wrap--wide { display: none; }
  .rk-scheme__wrap--narrow { display: block; }
}
/* два мира с одним поворотом: пол (плита, линии, подписи) рисуется первым, блоки — поверх, и плита не может лечь на
   блок, как бы браузер ни сортировал плоскости. Мир блоков пустыми местами не ловит указатель — щелчок доходит до
   линий на полу */
.dg3__world { position: absolute; transform-style: preserve-3d; }
.dg3__blocks { pointer-events: none; }
.dg3__blocks .bx { pointer-events: auto; }
/* место, размер, высота и цвета блока задаёт разметка схемы; здесь — значения по умолчанию */
.slab, .bx { --x: 0; --y: 0; --ink: var(--action-primary-text); }
.slab { position: absolute; left: calc(var(--x) * 1px); top: calc(var(--y) * 1px); width: calc(var(--w) * 1px); height: calc(var(--d) * 1px);
  transform-style: preserve-3d; transform: translateZ(calc(var(--z, 0) * 1px)); --hh: calc(var(--h) * 1px); }
.bx { position: absolute; left: calc(var(--x) * 1px); top: calc(var(--y) * 1px); width: calc(var(--w) * 1px); height: calc(var(--d) * 1px);
  transform-style: preserve-3d; --hh: calc(var(--h) * 1px); cursor: pointer; outline: none; }
/* тело блока наклоняется к курсору вокруг своей середины и поднимается на --lz: нижний угол остаётся на плите,
   а не уходит под неё — у низкого широкого блока край опускался глубже его высоты (замечание владельца 27.09.2026).
   Подъём считает rk-schemes.js по размерам блока и углам; тень остаётся на плите; переход — только на возврат */
.bx__b { position: absolute; inset: 0; transform-style: preserve-3d; transform-origin: 50% 50% calc(var(--h) * .5px);
  transform: translateZ(calc(var(--lz, 0) * 1px)) rotateX(var(--tx, 0deg)) rotateY(var(--ty, 0deg));
  transition: transform .45s cubic-bezier(.2, .7, .3, 1); }
.bx[data-tilt] > .bx__b { transition: none; will-change: transform; }
.bx:focus-visible > .bx__b { transform: none; }
/* нажатие — как у кнопки (просьба владельца 27.09.2026). Под указателем блок сразу уходит вниз и выравнивается;
   выбранный щелчком или Enter стоит утопленным, пока выделены его связи: кнопка с фиксацией, как и говорит
   aria-pressed. Нажатый блок — 45 % своей высоты, низ остаётся на плите: сдвиг вниз ровно на половину убавленной
   высоты. Грань темнеет по краям, тень на плите сжимается. Повторный щелчок, щелчок мимо или Esc отжимают блок
   с отскоком — признак data-release ставит rk-schemes.js: пока курсор на блоке, переходов нет */
.dg3 .bx:active > .bx__b, .dg3 .bx[aria-pressed="true"] > .bx__b {
  transform: translateZ(calc(var(--h) * -.275px)) scaleZ(.45); transition: transform .09s ease-out; }
/* в плоском виде опускание блока сверху не видно — нажатый блок ещё и чуть уменьшается, как кнопка под пальцем;
   отжатый возвращается с тем же отскоком */
.dg3--flat .bx:active > .bx__b, .dg3--flat .bx[aria-pressed="true"] > .bx__b {
  transform: translateZ(calc(var(--h) * -.275px)) scaleZ(.45) scale(.97); }
.dg3 .bx[data-release] > .bx__b { transition: transform .5s cubic-bezier(.34, 1.56, .64, 1); }
.dg3 .bx:active .t, .dg3 .bx[aria-pressed="true"] .t { box-shadow: inset 0 2px 7px color-mix(in oklch, var(--c) 55%, black); }
:is(.bx__b, .slab) > i, .bx > .sh { position: absolute; display: block; backface-visibility: hidden; -webkit-backface-visibility: hidden; }
:is(.bx__b, .slab) > .t { inset: 0; transform: translateZ(var(--hh)); }
:is(.bx__b, .slab) > .s { left: 0; right: 0; bottom: 0; height: var(--hh); transform-origin: 50% 100%; transform: rotateX(-90deg); }
:is(.bx__b, .slab) > .n { left: 0; right: 0; top: 0; height: var(--hh); transform-origin: 50% 0; transform: rotateX(90deg); }
:is(.bx__b, .slab) > .e { top: 0; bottom: 0; right: 0; width: var(--hh); transform-origin: 100% 50%; transform: rotateY(90deg); }
:is(.bx__b, .slab) > .w { top: 0; bottom: 0; left: 0; width: var(--hh); transform-origin: 0 50%; transform: rotateY(-90deg); }
.slab > .t { background: var(--bg-card); box-shadow: inset 0 0 0 1px var(--border-divider); }
.slab > .s, .slab > .n { background: var(--rk-sch-side); }
.slab > .e, .slab > .w { background: color-mix(in oklch, var(--rk-sch-side) 84%, var(--text-primary)); }
.bx__b > .t { display: grid; place-items: center; padding: 4px 8px; text-align: var(--ta, center); background: var(--c); color: var(--ink);
  font: 700 calc(var(--fs, 16) * 1px)/1.15 var(--font-heading); }
/* блок с рисунком: рисунок сверху, надпись под ним */
.bx__b > .t.pic { grid-template-rows: minmax(0, 1fr) auto; gap: 4px; padding: 8px 8px 6px; }
/* блок-картинка: верх — только фигура, вырезанная без чёрного фона, без надписи; имя блока — в aria-label и в строке
   сведений (замечание владельца 27.09.2026: проверяющие урока 10) */
.bx__b > .t.photo { grid-template-rows: minmax(0, 1fr); padding: 6px; }
.bx__b > .t img { width: 100%; height: 100%; min-height: 0; object-fit: contain; }
.bx__b > .t small { font-size: .78em; font-weight: 600; }
.bx__b > .t .ac { font-size: 1.3em; line-height: 1; }                /* первые буквы ПРОК — крупнее, как на слайде */
/* отметки перечня: галочка и крестик маской; «нет» — вторым тоном, тёплых тонов на сайте нет */
.bx__b > .t .ok, .bx__b > .t .no { display: inline-block; width: .95em; height: .95em; vertical-align: -.12em; }
.bx__b > .t .ok { background: var(--state-success);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / contain no-repeat; }
.bx__b > .t .no { background: var(--entity-stream);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'/%3E%3C/svg%3E") center / contain no-repeat; }
.bx__b > .s { background: color-mix(in oklch, var(--c) 70%, black); }
.bx__b > .n { background: color-mix(in oklch, var(--c) 82%, black); }
.bx__b > .e, .bx__b > .w { background: color-mix(in oklch, var(--c) 76%, black); }
.bx > .sh { inset: 0; transform: translateZ(0); box-shadow: calc(var(--h) * .22px) calc(var(--h) * .45px) calc(var(--h) * .5px + 6px) var(--rk-cut-shadow); }
.dg3 .bx > .sh { transition: opacity .15s, box-shadow .2s ease-out; }
.dg3 .bx:active > .sh, .dg3 .bx[aria-pressed="true"] > .sh {
  box-shadow: calc(var(--h) * .1px) calc(var(--h) * .2px) calc(var(--h) * .22px + 4px) var(--rk-cut-shadow); }
.bx:focus-visible .t { outline: 3px solid var(--border-focus); outline-offset: 3px; }
.dg3__svg { position: absolute; left: 0; top: 0; overflow: visible; transform: translateZ(.6px); font-family: var(--font-heading); }
.dg3__svg :focus { outline: none; }
.dg3 .area rect { fill: none; stroke: var(--border-default); stroke-width: 1.6; stroke-dasharray: 7 6; }
.dg3 .area text { fill: var(--text-secondary); font-size: 22px; font-weight: 800; }
.dg3 .area:focus-visible rect { stroke: var(--border-focus); stroke-width: 3; }
.dg3 .edge .vis { fill: none; stroke-width: 3.6; stroke-linejoin: round; }
.dg3 .edge.a .vis { stroke: var(--rk-sch-edge-a); }
.dg3 .edge.b .vis { stroke: var(--rk-sch-edge-b); }
.dg3 .edge.c .vis { stroke: var(--rk-sch-edge-c); }
/* невидимая полоса над линией: в линию толщиной в два пункта мышью не попасть */
.dg3 .edge .hit { fill: none; stroke: transparent; stroke-width: 16; pointer-events: stroke; }
.dg3 .edge:focus-visible .vis, .dg3 .edge.on .vis { stroke-width: 5.2; }
.dg3 .lbl { fill: var(--text-muted); font: italic 500 13px var(--font-text); }
.dg3 .dot { fill: var(--rk-sch-edge-a); }
.dg3 .area, .dg3 .edge, .dg3 .lbl { cursor: pointer; }
/* связи подсвечиваются только по щелчку или Enter — не при наведении */
.dg3 .area, .dg3 .edge, .dg3 .lbl, .dg3 .dot, .bx i { transition: opacity .15s; }
.dg3.focus .bx:not(.on) i, .dg3.focus .area:not(.on), .dg3.focus .edge:not(.on), .dg3.focus .lbl:not(.on), .dg3.focus .dot:not(.on) { opacity: .18; }
.dg3-foot { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; margin-top: 6px; }
.dg3-status { margin: 0; min-height: 1.5em; font-size: 14px; color: var(--text-secondary); }

/* ══ Окно «Написать» — просьба владельца 05.10.2026, тот же приём, что у rokuzmin.ru ══
   Кнопка — в шапке, в подвале и в контактах. Окно — элемент dialog: фокус держит браузер, Esc закрывает. Поля и
   подписи — из системы: ui-box, ui-label, ui-err, ui-x, кнопки-сферы. Ошибка поля — рамкой и подписью под полем,
   состояние отправки — строкой над кнопкой */
.rk-write { flex: none; }
@media (max-width: 520px) {
  /* в узкой шапке — только значок: подпись остаётся для программ чтения */
  .rk-write--head { width: 40px; padding: 0; justify-content: center; }
  .rk-write--head .rk-write__t { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}
.rk-footer__write { margin-top: 12px; }
.rk-dlg { width: min(100% - 32px, 520px); max-height: calc(100vh - 32px); max-height: calc(100svh - 32px); margin: auto; padding: 0; overflow: auto; overscroll-behavior: contain;
  border: 1px solid var(--border-divider); border-radius: var(--radius-lg); background: var(--bg-drawer); color: var(--text-primary); box-shadow: var(--elev-4); }
.rk-dlg::backdrop { background: color-mix(in srgb, var(--bg-veil) 60%, transparent); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
.rk-dlg[open] { animation: rk-dlg-in .26s var(--motion-ease-enter) both; }
@keyframes rk-dlg-in { from { opacity: 0; transform: translateY(14px) scale(.98); } }
/* подписи ошибок и ответ «отправлено» прячутся атрибутом hidden, а ui-err системы задаёт свой display — без этого
   правила подписи были бы видны сразу при открытии окна (так было на rokuzmin.ru 02.10.2026) */
.rk-dlg [hidden] { display: none !important; }
.rk-wform { display: grid; gap: 16px; padding: 22px 24px 24px; font-size: 16px; line-height: 1.45; }
.rk-dlg__head { display: flex; align-items: flex-start; gap: 12px; }
.rk-dlg__h { flex: 1; margin: 0; font-size: 22px; }
.rk-dlg__x { margin: -4px -8px 0 0; cursor: pointer; }
.rk-wform__view { display: grid; gap: 14px; }
.rk-wfield { display: grid; gap: 6px; }
.rk-wfield .ui-box { max-width: none; height: 46px; font-size: 16px; }
.rk-wfield textarea.ui-box { height: auto; min-height: 128px; padding: 10px 12px; resize: vertical; line-height: 1.45; }
.rk-wfield .ui-box:focus-visible { outline: var(--border-strong) solid var(--border-focus); outline-offset: 2px; border-color: var(--border-focus); }
.rk-wfield .ui-box[aria-invalid="true"] { border-color: var(--border-error); }
.rk-wfield__err { margin: 0; }
.rk-hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.rk-wform__alert p { margin: 0; padding: 10px 12px; border-radius: var(--radius-md); background: var(--state-error-bg); color: var(--text-error); font-size: 14px; }
.rk-wform__send { justify-self: start; }
.rk-wform__send[aria-busy="true"] { opacity: .75; cursor: progress; }
.rk-wdone { display: grid; justify-items: center; gap: 14px; padding: 18px 8px 8px; text-align: center; }
.rk-wdone__ic { width: 48px; height: 48px; color: var(--state-success); }
.rk-wdone__t { margin: 0; font: 800 21px/1.25 var(--font-heading); letter-spacing: -.01em; outline: none; text-wrap: balance; }
html.rk-modal { overflow: hidden; }
@media (max-width: 560px) { .rk-wform { padding: 18px 16px 20px; } .rk-dlg__h { font-size: 19px; } }
/* согласие на обработку данных — в окне «Написать» и в заявке на тренинг */
.rk-consent { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; line-height: 1.45; color: var(--text-secondary); }
.rk-consent input { width: 18px; height: 18px; margin: 1px 0 0; flex: none; accent-color: var(--action-primary); }
.rk-consent input[aria-invalid="true"] { outline: 2px solid var(--border-error); outline-offset: 1px; }

/* ══ Согласие на файлы cookie — просьба владельца 05.10.2026: внизу экрана, пока посетитель не выбрал ══
   Окно не закрывает собой страницу и не мешает читать: счётчик просто не включится, пока выбора нет */
.rk-cookie { position: fixed; z-index: 60; left: 16px; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); margin-inline: auto; max-width: 760px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; padding: 16px 18px; border-radius: var(--radius-lg);
  border: 1px solid var(--border-divider); background: var(--bg-drawer); color: var(--text-primary); box-shadow: var(--elev-4); font-size: 15px; line-height: 1.45; }
.rk-cookie[hidden] { display: none; }
.rk-cookie__t { flex: 1 1 320px; margin: 0; }
.rk-cookie__act { display: flex; flex-wrap: wrap; gap: 10px; }
/* политика и кнопка «Файлы cookie» в нижней строке подвала */
.rk-footer__legal a { color: var(--text-muted); text-decoration: underline; text-underline-offset: 3px; }
.rk-linkbtn { padding: 0; border: 0; background: none; color: var(--text-muted); font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.rk-linkbtn:hover, .rk-footer__legal a:hover { color: var(--text-primary); }

/* ══ Политика обработки персональных данных ══ */
.rk-legal .rk-sec { margin-top: 36px; }
.rk-legal .rk-sec:first-child { margin-top: 0; }

@media (prefers-reduced-motion: reduce) {
  .rk-dlg[open] { animation: none; }
  .rk-opt, .rk-level, .rk-dl__a { transition: none !important; }
  .bx__b, .dg3 *, .bx i { transition: none !important; }
}
