        /* ── Переход между страницами раздела ──────────────────────────────
           Анимируем ТОЛЬКО прозрачность и поворот: обе величины считает
           видеокарта, без пересчёта раскладки и перерисовки, поэтому на слабом
           телефоне тоже ровно. Блер сюда намеренно не берём — он перерисовывает
           всю площадь каждый кадр. */
        @view-transition { navigation: auto; }
        /* Страница только растворяется, на месте и без масштаба.
           Раньше она уезжала вглубь (Scale down), но рядом с переворотом карты
           получались два независимых движения в разные стороны — глаз читал их
           как два несвязанных объекта. Движение теперь одно, карта: страница
           под ней просто меняется, не перетягивая внимание.
           Затухание и проявление идут внахлёст — браузер сам смешивает снимки
           (mix-blend-mode: plus-lighter), поэтому это именно растворение одного
           в другое, а не «погасло — зажглось» с провалом в пустоту посередине. */
        ::view-transition-old(root) { animation: arcPageOut .5s ease both; }
        ::view-transition-new(root) { animation: arcPageIn  .5s ease .16s both; }
        @keyframes arcPageOut { to   { opacity: 0; } }
        @keyframes arcPageIn  { from { opacity: 0; } }

        /* Панели при переходе между статьями не меняются — закрепляем их:
           браузер их вообще не анимирует, меняется только область статьи.
           Меньше площади в анимации = быстрее, и переход перестаёт читаться
           как перезагрузка страницы. */
        .arc-menu { view-transition-name: arcana-menu; }
        ::view-transition-group(arcana-menu) { animation: none; }
        ::view-transition-old(arcana-menu)   { display: none; }
        ::view-transition-new(arcana-menu)   { animation: none; }

        /* Карта — общий элемент двух страниц: имя одно и то же, поэтому браузер
           узнаёт её и не рисует заново, а растворяет старую в новой.
           ⚠️ Никакого поворота. Переворот здесь не работал: старая и новая — это
           два отдельных снимка, они не могут быть одним вращающимся телом, и
           вместо единого оборота получалось наложение — одна крутится, вторая
           уже стоит. Растворение таким недостатком не страдает: оно по своей
           природе про два изображения, и переход читается как одно движение. */
        .arc-cardpic { view-transition-name: arcana-card; }
        ::view-transition-group(arcana-card) { animation-duration: .8s; }
        ::view-transition-old(arcana-card),
        ::view-transition-new(arcana-card) {
            animation-duration: .8s;
            animation-timing-function: cubic-bezier(.4, 0, .2, 1);
        }
        /* Приходя с обзорной страницы, где карты нет, растворять не из чего —
           там она просто появляется, чуть подрастая. */
        ::view-transition-new(arcana-card):only-child {
            animation: arcCardIn .5s ease both;
        }
        @keyframes arcCardIn { from { opacity: 0; transform: scale(.94); } }

        /* Анимации отключаются, если человек попросил их не показывать. */
        @media (prefers-reduced-motion: reduce) {
            ::view-transition-old(root), ::view-transition-new(root),
            ::view-transition-old(arcana-card), ::view-transition-new(arcana-card) { animation: none; }
        }

        /* Меню — ФИКСИРОВАННОЙ ширины, сжимается только правая колонка.
           280px посчитаны от самого длинного пункта («2 Arcanum - The High
           Priestess», 196px текста) плюс отступ 32px, который появляется при
           наведении, плюс паддинги меню и списка. При процентной ширине пункты
           переносились на вторую строку, как только окно становилось уже.
           ⚠️ minmax(0, 1fr), а не 1fr: у 1fr минимум равен min-content, и
           широкий элемент в статье (длинное слово, таблица) распирал бы колонку. */
        .arc-grid { display: grid; grid-template-columns: 280px minmax(0, 1fr);
                    gap: 20px; align-items: start; }

        /* Меню липнет к верху и занимает высоту экрана; список внутри прокручивается
           сам, не утаскивая страницу. 100dvh, а не 100vh: на мобильных браузерах
           панель адреса съедает часть vh, и низ списка оказывался под ней. */
        .arc-menu {
            position: sticky; top: 20px; align-self: start;
            height: calc(100dvh - 40px);
            background: #ADC5BC; border-radius: 25px; corner-shape: superellipse(1.1);
            padding: 18px 10px 18px 16px; display: flex; flex-direction: column; overflow: hidden;
        }
        .arc-menu-title {
            display: flex; align-items: center; gap: 6px;
            font-size: 12px; letter-spacing: .06em; text-transform: uppercase;
            /* Разделителя между заголовком и списком нет — отбивку держит
               нижний отступ. Список начинается сразу под ним. */
            color: #3D5853; margin: 2px 0 10px 6px; flex: 0 0 auto;
        }
        .arc-menu-title svg { flex: 0 0 auto; }
        .arc-menu-list { position: relative; overflow-y: auto; overscroll-behavior: contain;
                         padding-right: 6px; flex: 1 1 auto;
                         /* touch-action: pan-y говорит браузеру заранее, что здесь
                            возможна только вертикальная прокрутка. При auto он ждёт,
                            не окажется ли жест масштабированием или двойным тапом, и
                            это ожидание успевает отдать прокрутку всей странице. */
                         touch-action: pan-y; }

        /* Бегущая подсветка. Абсолютная внутри прокручиваемого списка — значит
           едет вместе с содержимым при скролле и не требует пересчёта.
           Двигаем transform, а не top: он считается композитором, без пересборки
           раскладки на каждый кадр. */
        .arc-hl {
            position: absolute; left: 0; top: 0; z-index: 0;
            border-radius: 13px; corner-shape: superellipse(1.1);
            background: rgba(213,228,222,.3);
            opacity: 0; pointer-events: none;
            transition: transform .3s cubic-bezier(.22,1,.36,1),
                        width .3s cubic-bezier(.22,1,.36,1),
                        height .3s cubic-bezier(.22,1,.36,1),
                        opacity .18s ease;
        }
        /* Нативную полосу прячем: она забирала ширину у пунктов. Вместо неё —
           собственный ползунок .arc-sb, лежащий ПОВЕРХ списка (как overlay-
           скроллбар на тач-устройствах) и всплывающий при заходе курсора. */
        .arc-menu-list::-webkit-scrollbar { display: none; }
        .arc-menu-list { scrollbar-width: none; -ms-overflow-style: none; }

        .arc-sb {
            /* right: 10px = ровно внутренний край списка. При 6px ползунок
               седлал границу: 2px внутри списка, 4px в отступе меню — и читался
               как приклеенный к краю панели снаружи. */
            position: absolute; right: 10px; width: 5px; border-radius: 5px;
            /* Цвет подсветки меню (#D5E4DE), но плотнее: на полосе в 5px
               прозрачность .3 визуально сливается с фоном — проверено. */
            background: rgba(213,228,222,.55);
            opacity: 0; pointer-events: none;
            transition: opacity .25s ease;
        }
        /* Виден, пока курсор в меню, и ещё секунду после прокрутки — чтобы
           положение было понятно и когда листаешь колесом, не наводя мышь. */
        .arc-menu:hover .arc-sb,
        .arc-sb.is-scrolling { opacity: 1; }

        .arc-link {
            display: block; padding: 12px; margin-bottom: 2px; border-radius: 13px;
            corner-shape: superellipse(1.1);
            color: #061210; text-decoration: none; font-size: 14px; font-weight: 600; line-height: 1.35;
            transition: background-color .45s ease, color .45s ease,
                        padding-left .25s cubic-bezier(.4, 0, .2, 1);
        }
        /* Стрелка и сдвиг текста — тот же приём, что в выпадающем списке точек
           матрицы (.matrix-points-menu li в destiny-matrix.php): стрелка лежит
           на месте будущего отступа и проявляется, пока текст отъезжает вправо. */
        .arc-link::before {
            content: '→';
            font-family: system-ui, sans-serif;
            position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
            font-size: 12px; font-weight: 400; color: #3D5853;
            opacity: 0; pointer-events: none;
            transition: opacity .2s ease;
        }
        /* На тёмной плашке #3D5853 почти сливается с фоном — там стрелка
           берёт тот же цвет, что и номер аркана. */
        .arc-link.is-active::before { color: #ADC5BC; }
        .arc-link:hover,
        .arc-link.is-active { padding-left: 32px; }
        .arc-link:hover::before,
        .arc-link.is-active::before { opacity: 1; }
        /* Поштучного ховера нет: подсветка одна на весь список и переезжает
           за курсором (см. .arc-hl и скрипт внизу файла). */
        .arc-link { position: relative; z-index: 1; }
        .arc-link.is-active { background: #15211F; color: #D5E4DE; }
        /* Номер — светлым, название — тёмным. Раньше номер гасился прозрачностью,
           но она примешивала фон, и оттенок «плавал» между обычным пунктом,
           подсветкой и активной плашкой. Теперь цвет задан явно. */
        /* Полужирным только название аркана; номер и слово «Arcanum» остаются
           обычным весом — иначе строка читается как один сплошной заголовок. */
        .arc-link .n { color: #3D5853; font-weight: 400; font-variant-numeric: tabular-nums; }
        .arc-link.is-active .n { color: #ADC5BC; }

        /* Статья */
        .arc-article {
            /* Единая мера строки — ВСЯ ширина колонки. Все элементы статьи стоят
               в одной колонке и считаются от одного параметра, поэтому их правые
               края совпадают на любом экране.

               ⚠️ Ни ch, ни px здесь не годятся. ch — ширина символа ТЕКУЩЕГО
               шрифта: 72ch у заголовка в 60px и у текста в 17px дают разную
               ширину, края расходились на сотню пикселей. Фиксированные px
               ровняют края, но перестают тянуться за колонкой — на широком
               мониторе справа зияет пустота, на узком строка не помещается. */
            --arc-measure: 100%;
            background: #F2F7F5; border-radius: 25px; corner-shape: superellipse(1.1);
            padding: 44px 48px 52px; min-height: calc(100dvh - 40px);
            /* isolation превращает панель в отдельный слой. Только благодаря
               этому z-index: -1 у холста означает «над собственным фоном, под
               текстом», а не «под всей страницей».
               overflow: clip, а не hidden: hidden сделал бы панель контейнером
               прокрутки и сломал прилипание правой колонки с картой. */
            isolation: isolate; overflow: clip;
        }
        /* Капля за курсором (assets/js/arcana-fluid.js). Холст вылезает
           отрицательными полями под внутренние отступы панели, иначе жидкость
           обрывалась бы в 48px от края.
           sticky, а не absolute: статья бывает в несколько экранов, и холст во
           всю её высоту съел бы память видеокарты. Так он всегда ровно в экран
           и едет за прокруткой. */
        .arc-fluid-zone { position: relative; }
        /* Холст ровно по зоне плюс вылет под внутренние отступы панели, чтобы
           жидкость доходила до её краёв.
           ⚠️ Именно absolute. Был sticky с отрицательными полями — и уезжал
           далеко ниже зоны: прилипание держит элемент за его ПОЛЯ, а нижнее поле
           было отрицательным и почти обнуляло высоту, так что удерживать было
           нечего. Absolute снимает и это, и заодно вопрос со схлопыванием полей,
           из-за которого заголовок липнул к краю. */
        .arc-fluid {
            position: absolute; z-index: -1; pointer-events: none;
            display: block; top: -44px; left: -48px;
            /* ⚠️ Размер задаём явно, а не парой left/right + top/bottom. Canvas —
               замещаемый элемент: при auto-размерах браузер берёт его собственный
               размер (300×150) и противоположную привязку просто игнорирует. */
            width: calc(100% + 96px);
            /* Холст продолжается на 240px ниже зоны, и эти 240px плавно
               сходят на нет маской. Раньше он обрывался ровно по нижней
               границе калькулятора — жидкость срезало по линейке.
               Маска непрозрачна ровно до низа зоны: 240px снизу вычитаются из
               полной высоты холста, а те же 240px к ней прибавлены. */
            height: calc(100% + 44px + 240px);
            -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 240px), transparent 100%);
            mask-image: linear-gradient(to bottom, #000 calc(100% - 240px), transparent 100%);
        }
        /* ⚠️ font-weight: 500, а НЕ 700. Bricolage Grotesque подключён единственным
           начертанием (BricolageGrotesque-500.woff2). При 700 браузер не находит
           жирный файл и синтезирует толщину сам — буквы «раздуваются» и заметно
           отличаются от H1 на главной, где вес родной. Трекинг -0.05em — единая
           шкала сайта (см. assets/css/page-title.css). */
        /* Размер тянется от ширины экрана, как у .page-h1 на остальных страницах.
           Потолок 60px, а не 82px: заголовок аркана длиннее («1 Arcana in the
           Destiny Matrix — The Magician») и на 82px занимал бы три строки.
           Межстрочный 0.9 — как у заголовков на главной: заголовок почти всегда
           переносится на две строки, и при 1.1 они расползались. */
        .arc-article h1 {
            font-family: 'Bricolage Grotesque', 'Inter Tight', sans-serif;
            font-size: 60px; line-height: 0.9; font-weight: 500; letter-spacing: -0.05em;
            color: #052A2C; margin: 0 0 18px;
            /* Заголовок чуть уже колонки: длинная строка в 60px кеглем читается
               тяжело. Ступени 90 → 95 → 100 %, чтобы переход между размерами
               экрана не был скачком. */
            max-width: 90%;
        }
        /* Первый абзац — выделенный блок в том же оформлении, что и заглушка
           ненаписанной статьи: один визуальный язык на весь раздел. */
        .arc-lead {
            background: #DFE9E5;
            border-radius: 18px; corner-shape: superellipse(1.1);
            padding: 26px 28px; margin: 0 0 28px; max-width: var(--arc-measure);
            font-size: 16px; line-height: 1.6; color: #3D5853;
        }
        /* Жирный НЕ перекрашиваем: цвет остаётся общий (#3D5853), как в заглушке.
           Выделение идёт только насыщенностью — иначе блок распадается на тёмные
           и светлые куски и перестаёт читаться как единый текст. */
        .arc-lead b, .arc-lead strong { font-weight: 700; }
        .arc-lead p { margin: 0 0 14px; }
        .arc-lead p:last-child { margin-bottom: 0; }
        /* Ссылка внутри лида — не выделяется ни цветом, ни жирным: плашка должна
           читаться единым текстом. Кликабельность держится на одном тонком
           подчёркивании, как у ссылок в теле статьи.
           ⚠️ CTA-переход (`p.arc-cta > a`) сюда не попадает: у него своё правило
           ниже, с более высокой специфичностью. */
        .arc-lead a { color: inherit; font-weight: inherit;
                      text-decoration: underline;
                      text-decoration-color: rgba(61,88,83,.35);
                      text-decoration-thickness: 1px; text-underline-offset: 3px;
                      transition: color .35s ease, text-decoration-color .35s ease; }
        .arc-lead a:hover { color: #FF6291; text-decoration-color: #FF6291; }
        /* На обзорной странице лид стоит не плашкой, а обычным текстом под H1 —
           плашка тут же над сеткой плиток того же цвета выглядела бы как ещё
           одна плитка. Ширина 70% против 90% у H1: строка в 16px при полной
           ширине колонки уезжает за комфортные для чтения ~75 знаков. */
        .arc-lead--plain {
            /* ⚠️ Скругление и corner-shape обязательно сбрасывать. Они достались
               от плашки .arc-lead, и на прозрачном фоне их не видно — но браузер
               всё равно обрезает содержимое по этой форме. Отступов у абзаца
               теперь нет, текст стоит вплотную к углам, и у первой буквы первой
               и последней строк срезало край. Rimma нашла причину. */
            background: none; padding: 0; max-width: 70%;
            border-radius: 0; corner-shape: round;
        }
        .arc-body { font-size: 17px; line-height: 1.7; color: #062A2C; max-width: var(--arc-measure); }

        /* Внутренность статьи: 75 % текст, 25 % колонка с картой и навигацией.
           Доли, а не пиксели, — иначе на другом экране колонки разъезжаются.
           Из каждой вычитается половина зазора, иначе сумма превысит 100 %. */
        .arc-inner { display: grid; grid-template-columns: calc(75% - 16px) calc(25% - 16px);
                     gap: 32px; align-items: start; }
        .arc-col { min-width: 0; }   /* без этого длинное слово распирает колонку */

        /* Правая колонка едет за читателем: карта и оглавление всегда под рукой.
           40px от верха — как просила Rimma. */
        .arc-aside { position: sticky; top: 40px; }

        /* Карта — те же файлы и та же подача, что в трактовках на калькуляторе. */
        .arc-cardpic {
            display: block; width: 100%; height: auto;
            border-radius: 20px; corner-shape: superellipse(1.1);
        }

        /* Навигация по статье */
        .arc-toc { margin-top: 22px; }
        .arc-toc-title {
            font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
            color: #8FA39D; margin-bottom: 10px;
        }
        .arc-toc a {
            display: block; padding: 7px 0 7px 12px; margin-bottom: 2px;
            border-left: 2px solid rgba(6,42,44,.12);
            color: #3D5853; text-decoration: none; font-size: 13px; line-height: 1.35;
            transition: color .35s ease, border-color .35s ease;
        }
        .arc-toc a:hover { color: #062A2C; border-left-color: #6BAB93; }
        .arc-toc a.is-current { color: #062A2C; border-left-color: #062A2C; font-weight: 600; }

        /* Переход по якорю не должен прятать заголовок под верхний край. */
        .arc-body h2 { scroll-margin-top: 40px; }

        /* ⚠️ font-weight и line-height задаём ЯВНО: Tailwind (output.css) сбрасывает
           заголовкам жирность до inherit — из-за этого h2/h3 выглядели тоньше, чем
           в трактовках, где стоит font-bold. Межстрочный 1.1 — как просила Rimma:
           при переносе длинного заголовка на две строки зазор был огромным. */
        .arc-body h2 { font-size: 24px; font-weight: 700; line-height: 1.1; margin: 40px 0 12px; }
        /* Главные разделы статьи отбиваются линией — той же, что делит блок
           калькулятора и общую статью на /arcana. Только H2: подзаголовки внутри
           раздела резать нельзя, иначе один связный блок рассыпается. */
        .arc-body h2 { padding-top: 34px; border-top: 1px solid rgba(6,42,44,.1); }
        .arc-body h3 { font-size: 19px; font-weight: 700; line-height: 1.1; margin: 26px 0 10px; }

        /* Блок «читать дальше» в конце статьи: подпись обычным абзацем и список
           ссылок. Заголовком он быть не должен (не раздел статьи и не место
           в оглавлении), но отбивку линией сохраняет — иначе список прилипает
           к последнему ответу FAQ и читается как его продолжение.
           Ловим по структуре, а не по классу: абзац, за которым идёт последний
           список статьи. Классов в теле статьи не держим, оформление живёт здесь. */
        .arc-body > p:has(+ ul:last-child) {
            margin-top: 40px; padding-top: 34px;
            border-top: 1px solid rgba(6,42,44,.1);
        }
        .arc-body p { margin: 0 0 16px; }

        /* Ссылка-переход, стоящая ОТДЕЛЬНЫМ абзацем («Calculate my Destiny Matrix»),
           оформляется как .link-arrow из assets/css/ui.css — тот же элемент, что
           «Dive Deeper» на главной: жирная подпись и стрелка глифом в ::after.
           ⚠️ Класс проставляет arcana_mark_cta() на выводе, в базе разметка чистая.
           Раньше здесь стоял селектор `p > a:only-child`, и он ловил ЛЮБУЮ ссылку
           внутри абзаца — :only-child не видит текст вокруг. Ссылка в середине
           предложения превращалась в кнопку со стрелкой. */
        .arc-lead p.arc-cta > a,
        .arc-body p.arc-cta > a {
            display: inline-block; font-weight: 700;
            text-decoration: none; color: inherit;
        }
        .arc-lead p.arc-cta > a::after,
        .arc-body p.arc-cta > a::after { content: '\2192'; font-weight: 300; margin-left: 3px; }
        .arc-lead p.arc-cta > a:hover,
        .arc-body p.arc-cta > a:hover { opacity: .7; color: inherit; }

        /* Ссылки внутри статьи. Без подчёркивания цвет текста и цвет ссылки
           совпадают, и переход на страницу аркана не читается как кликабельный. */
        /* ⚠️ Толщину задаём явно: браузер считает её от начертания, и под жирными
           названиями арканов линия выходила вдвое толще, чем под обычным текстом. */
        .arc-body a { color: #062A2C; text-decoration: underline;
                      text-decoration-color: rgba(6,42,44,.28);
                      text-decoration-thickness: 1px; text-underline-offset: 3px;
                      transition: color .35s ease, text-decoration-color .35s ease; }
        .arc-body a:hover { color: #FF6291; text-decoration-color: #FF6291; }

        /* Сопутствующий блок (пошаговая инструкция) — та же плашка, что у лида
           под заголовком. Тег <aside>, а не div с классом: в теле статьи классов
           быть не должно, оформление живёт здесь. */
        .arc-body aside {
            background: #DFE9E5;
            border-radius: 18px; corner-shape: superellipse(1.1);
            padding: 26px 28px; margin: 0 0 18px;
            font-size: 16px; line-height: 1.6; color: #3D5853;
        }
        .arc-body aside > :last-child { margin-bottom: 0; }
        .arc-body aside li::marker { color: #3D5853; }

        /* Вынесенная мысль: отбита линиями сверху и снизу, кегль крупнее текста.
           Tailwind сбрасывает отступы blockquote — задаём явно. */
        .arc-body blockquote {
            margin: 34px 0; padding: 26px 0;
            border-top: 1px solid rgba(6,42,44,.1);
            border-bottom: 1px solid rgba(6,42,44,.1);
            font-size: 22px; line-height: 1.45; color: #062A2C;
        }
        /* Следом идёт H2 со своей верхней линией — иначе две черты подряд. */
        .arc-body blockquote + h2 { border-top: none; padding-top: 0; }

        /* Маркеры списков Tailwind тоже снимает (list-style: none в preflight) —
           возвращаем точки, иначе перечисление читается сплошным текстом. */
        .arc-body ul { list-style: disc; margin: 0 0 18px; padding-left: 22px; }
        .arc-body ol { list-style: decimal; margin: 0 0 18px; padding-left: 22px; }
        .arc-body li { display: list-item; margin-bottom: 7px; }
        /* Маркеры и цифры — в цвет текста: зелёные точки читались как отдельный
           декоративный элемент и спорили с текстом. */
        .arc-body li::marker { color: #062A2C; }

        .arc-ru { font-size: 14px; color: #6B8079; margin: 0 0 22px; }

        /* Заглушка для ненаписанной статьи */
        .arc-soon {
            background: #DFE9E5; border-radius: 18px; corner-shape: superellipse(1.1);
            padding: 26px 28px; color: #3D5853; font-size: 16px; line-height: 1.6; max-width: var(--arc-measure);
        }

        /* Обзорная плитка на /arcana */
        /* Плитки сомкнуты: щель 1px, и на стыке четырёх скруглённых углов фон
           проступает четырёхлучевой звездой. Размер звезды задаёт РАДИУС, а не
           щель, — поэтому 1px хватает, а радиус трогать нельзя. */
        .arc-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 1px; margin-top: 8px; }
        .arc-card {
            /* Матовая полупрозрачная плашка: тот же #DFE9E5, но на 55%.
               ⚠️ БЕЗ backdrop-filter. Матовое стекло на 22 плитках поверх живого
               WebGL-холста Chrome не вытягивает — пропадают и плитки, и боковое
               меню (проверено на проде 2026-08-11).
               Размытие тут и не нужно: за плитками только жидкость, а у неё нет
               ни одной резкой границы — она и так мягкая. Размывать нечего,
               поэтому обычная прозрачность даёт тот же матовый вид даром. */
            display: block; background: rgba(223, 233, 229, .55);
            border-radius: 18px; corner-shape: superellipse(1.1);
            padding: 18px 20px; text-decoration: none; color: #061210;
            /* Уход длиннее входа: 0.8с против 0.38с. Симметричный переход и
               читался как «топорное перекрашивание» — обе стороны шли с одной
               скоростью, и глазу не за что зацепиться. Так плитка отзывается
               сразу, а отпускает медленно, будто цвет стекает.
               Кривая с почти вертикальным началом и очень пологим хвостом —
               основное изменение проходит быстро, а последняя четверть тянется. */
            transition: background-color .8s cubic-bezier(.19, 1, .22, 1),
                        color .8s cubic-bezier(.19, 1, .22, 1);
        }
        /* ⚠️ Без backdrop-filter — как и все плашки этой страницы. Размытие
           поверх WebGL-холста валило страницу целиком (2026-08-11), а даёт оно
           здесь ноль: за плиткой только жидкость, у неё нет резких границ. */
        .arc-card:hover { background: rgba(6, 18, 16, .65); color: #D8E5E0; }
        .arc-card:hover .num { color: #C9DAD4; }
        /* Правило ховера действует на ВХОД, базовое — на выход. Отсюда и разная
           длительность: перебиваем её только здесь. */
        .arc-card:hover, .arc-card:hover .num { transition-duration: .38s; }
        .arc-card .num { font-size: 11px; color: #3D5853; letter-spacing: .05em;
                         transition: color .8s cubic-bezier(.19, 1, .22, 1); }
        .arc-card .ru { font-size: 13px; color: #8FA39D; margin-top: 2px; }
        .arc-card .nm { font-size: 16px; font-weight: 700; margin-top: 4px; }

        /* Блок «посчитать матрицу» под плиткой арканов. Оформление — та же плашка,
           что и у самого калькулятора на /destiny-matrix (.calc-card.calc-card-glass),
           только без табов и полей ввода. Стили скопированы оттуда: home.css на этой
           странице не подключён, поэтому кнопка описана здесь целиком. */
        .arc-calc {
            margin-top: 40px; padding: 32px;
            border-radius: 24px; corner-shape: superellipse(1.1);
            /* Стекло ровно как у плиток арканов: тот же цвет, та же
               прозрачность, без рамки и без backdrop-filter (он тут стоял по
               наследству от стеклянной карточки на /destiny-matrix и валил
               страницу поверх WebGL-холста).
               Меняешь плитки — поменяй и здесь, значение продублировано. */
            background: rgba(223, 233, 229, .55);
            max-width: var(--arc-measure);
        }
        .arc-calc h2 {
            font-size: 24px; font-weight: 700; line-height: 1.1;
            color: #062A2C; margin: 0 0 14px;
        }
        /* = .birth-date-prompt калькулятора */
        .arc-calc p { font-size: 17px; line-height: 1.5; color: #000; font-weight: 600; margin: 0 0 12px; }
        /* Пояснение под ним — обычным весом, чтобы не спорило со строкой-призывом */
        .arc-calc .arc-calc-note { font-size: 16px; line-height: 1.6; color: #3D5853; font-weight: 400; margin: 0 0 20px; }

        /* Кнопка — копия .arcana-cta.calc-cta из assets/css/home.css */
        .arc-calc .arcana-cta {
            display: inline-flex; align-items: center; justify-content: center; gap: 10px;
            max-width: 100%; background: linear-gradient(to right, #FF6291, #FF755E);
            color: #000; border: none; cursor: pointer; text-decoration: none;
            position: relative; overflow: hidden; margin-top: 8px;
            /* Боковые отступы в процентах от кнопки, а не 86px намертво.
               На планшете (912px) колонка статьи ужимается до ~370px, и две
               фиксированные полосы по 86px съедали её так, что надпись
               переносилась на две строки. Проценты ужимаются вместе с колонкой,
               а на широком экране упираются в прежние 86px. */
            /* 27px сверху и снизу — ровно столько, чтобы строка начиналась ниже
               бейджа и при этом стояла по центру кнопки. При 24px «Chart»
               подлезал под бейдж на планшетной ширине. */
            padding: 27px clamp(16px, 12%, 86px); border-radius: 18px;
            font-weight: 800; font-size: 17px; line-height: 1.3;
            transition: color .4s ease .15s;
        }
        .arc-calc .arcana-cta::before {
            content: ''; position: absolute; left: 80%; top: 50%; width: 67px; height: 65px;
            background: #051210;
            clip-path: path('M43.7028 0C36.1296 29.2921 36.9014 30.7618 66.4978 32.1811C35.996 33.6007 34.317 35.153 23.7647 64.4542C31.4198 34.8456 30.5484 33.6639 0 32.2271C31.4373 30.7903 33.0398 29.6086 43.7028 0Z');
            transform: translate(-50%, -50%) scale(0); transform-origin: center;
            transition: transform .8s cubic-bezier(.65, 0, .35, 1); pointer-events: none;
        }
        .arc-calc .arcana-cta > * { position: relative; z-index: 1; }
        .arc-calc .arcana-cta:hover { color: #FF6B7A; }
        .arc-calc .arcana-cta:hover::before { transform: translate(-50%, -50%) scale(50); }
        .arc-calc .arcana-cta:hover > span {
            background: linear-gradient(to right, #FF6291, #FF755E);
            -webkit-background-clip: text; background-clip: text;
            -webkit-text-fill-color: transparent; color: transparent;
        }
        .arc-calc .cta-label { position: static; white-space: nowrap; }
        /* Бейдж вынесен из потока и лежит поверх правого отступа — на ширину не влияет */
        .arc-calc .free-badge {
            display: inline-flex; align-items: center; color: #000; font-size: 12px; font-weight: 700;
            line-height: 1; padding: 6px 12px; border-radius: 999px; letter-spacing: .02em; flex-shrink: 0;
            background: linear-gradient(to right, #B7E4C7, #8FCBA5);
        }
        /* Бейдж привязан к правому верхнему углу КНОПКИ, а не к концу надписи.
           Раньше он висел сразу за текстом и помещался только за счёт огромного
           бокового отступа в 86px. Как только отступ стал процентным, на
           планшете он ужался до 37px, и бейдж срезало краем кнопки. */
        .arc-calc .cta-free-badge {
            position: absolute; left: auto; bottom: auto; right: 10px; top: 8px;
            font-size: 11px; padding: 4px 9px;
            background: #051210; white-space: nowrap; pointer-events: none;
            opacity: 1; transition: opacity .4s ease .5s;
        }
        .arc-calc .arcana-cta:hover .cta-free-badge { opacity: 0; transition: opacity .4s ease 0s; }
        .arc-calc .cta-free-badge-text {
            background: linear-gradient(to right, #FF6291, #FF755E);
            -webkit-background-clip: text; background-clip: text;
            -webkit-text-fill-color: transparent; color: transparent;
        }

        /* Общая статья раздела — под блоком калькулятора на /arcana.
           Тело печатается теми же правилами .arc-body, что и статьи арканов. */
        .arc-general { margin-top: 44px; padding-top: 34px; border-top: 1px solid rgba(6,42,44,.1);
                       scroll-margin-top: 20px; }
        /* Пункт меню без номера. Отдельной чертой больше не отбивается — стоит
           в общем потоке кнопок, разделитель уехал под заголовок меню. */
        .arc-link-method { font-weight: 600; }
        /* Вступление общей статьи оформлено как заглушка под заголовком: в тексте
           оно обёрнуто в <aside> и подхватывает общее правило `.arc-body aside`
           (та же плашка, что у .arc-lead). Отдельного правила не нужно —
           раньше здесь висел `> p:first-child`, но он оформлял только первый
           абзац, и второй вываливался из плашки. */
        .arc-general-title {
            font-family: 'Bricolage Grotesque', 'Inter Tight', sans-serif;
            /* -.0435em — это ровно -2px при кегле 46px, как просила Rimma.
               Держим в em, а не в px: на мобильной ширине кегль падает до
               30-38px, и фиксированные -2px стали бы там -0.067em — буквы
               начали бы слипаться. В em поджатие едет за размером. */
            font-size: 46px; font-weight: 500; line-height: .9; letter-spacing: -.0435em;
            color: #052A2C; margin: 0 0 18px; max-width: 90%;
        }
        /* Планшетная полоса: две колонки ещё есть, но правая уже узкая — на
           853px под текст остаётся около 285px из 381. Боковые отступы панели
           режем с 48px до 20px, это возвращает контенту 56px ширины.
           Холст капли идёт следом: он вылезает под отступы отрицательными
           координатами, и числа обязаны совпадать. */
        @media (min-width: 821px) and (max-width: 1100px) {
            /* Меню на планшете мельче на два пункта, и за счёт этого колонка
               ужимается с 280px до 230px — 50px уходят статье.
               250px подобраны перебором с ОТКЛЮЧЁННЫМ переходом: у пункта плавно
               едет padding-left, и при замере сразу после наведения браузер
               возвращает ещё старое значение — на 230px казалось, что переносов
               нет, а вживую «2 Arcanum - The High Priestess» ломался на две
               строки. Порог — 244px, взяли 250px с запасом. */
            .arc-grid { grid-template-columns: 250px minmax(0, 1fr); }
            .arc-link { font-size: 12px; }
            .arc-menu-title { font-size: 11px; }
            .arc-article { padding: 28px 20px 34px; }
            .arc-fluid { top: -28px; left: -20px; width: calc(100% + 40px); height: calc(100% + 28px + 240px); }
            /* Две колонки вместо одной. Автоподбор оставлял одну: колонка статьи
               здесь 411–690px, а минимум плитки 210px требует 421px на две.
               Отступы внутри плитки режем до 14px — при десктопных 20px на самой
               узкой границе (821px) под текст остаётся ровно 145px, столько же,
               сколько занимает «The High Priestess», и название срывалось на
               вторую строку. */
            .arc-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
            .arc-card { padding: 14px; }
        }
        @media (max-width: 820px) { .arc-general-title { font-size: clamp(30px, 7vw, 38px); } }

        /* Подпись автора под статьёй */
        .arc-author { margin-top: 44px; padding-top: 26px; border-top: 1px solid rgba(6,42,44,.1); }
        .arc-author-row { display: flex; align-items: center; gap: 11px; }
        /* Диаметр = высоте двух строк подписи (имя ~18px + строка роли ~16px
           + отступ 2px), чтобы кружок не выпирал над текстом. */
        .arc-author-pic {
            width: 38px; height: 38px; flex: 0 0 38px; border-radius: 50%;
            object-fit: cover; background: #ADC5BC;
        }
        /* Пока фото нет — кружок с инициалами того же размера, без «дырки» в вёрстке */
        .arc-author-ini {
            display: inline-flex; align-items: center; justify-content: center;
            color: #062A2C; font-size: 13px; font-weight: 600; letter-spacing: .02em;
        }
        .arc-author-name { font-size: 15px; font-weight: 700; line-height: 1.2; color: #062A2C; }
        .arc-author-role { font-size: 12px; line-height: 1.35; color: #8FA39D; margin-top: 2px; }

        /* Предыдущий / следующий */
        .arc-nav { display: flex; justify-content: space-between; gap: 14px; margin-top: 44px;
                   padding-top: 22px; border-top: 1px solid rgba(6,42,44,.1); }
        .arc-nav a { color: #3D5853; text-decoration: none; font-size: 14px; max-width: 46%; }
        .arc-nav a:hover { color: #062A2C; }
        .arc-nav .dir { display: block; font-size: 12px; color: #8FA39D; margin-bottom: 2px; }

        @media (max-width: 1279px) { .arc-article h1 { font-size: 52px; } }
        @media (max-width: 1100px) {
            .arc-article h1 { font-size: 44px; max-width: 95%; }
            .arc-general-title { max-width: 95%; }
            .arc-lead--plain { max-width: 85%; }
        }
        @media (max-width: 1100px) {
            /* Колонка в 20 % от узкой статьи — уже нечитаемая полоска: карта
               уезжает наверх, оглавление прячем (слева и так есть меню арканов). */
            .arc-inner { grid-template-columns: 1fr; gap: 20px; }
            .arc-aside { position: static; display: flex; gap: 20px; align-items: flex-start; }
            .arc-cardpic { width: 150px; flex: 0 0 150px; }
            .arc-toc { margin-top: 0; }
        }
        /* Планшетная полоса: две колонки ещё есть, но правая уже узкая — на
           853px под текст остаётся около 285px из 381. Боковые отступы панели
           режем с 48px до 20px, это возвращает контенту 56px ширины.
           Холст капли идёт следом: он вылезает под отступы отрицательными
           координатами, и числа обязаны совпадать. */
        @media (min-width: 821px) and (max-width: 1100px) {
            /* Меню на планшете мельче на два пункта, и за счёт этого колонка
               ужимается с 280px до 230px — 50px уходят статье.
               250px подобраны перебором с ОТКЛЮЧЁННЫМ переходом: у пункта плавно
               едет padding-left, и при замере сразу после наведения браузер
               возвращает ещё старое значение — на 230px казалось, что переносов
               нет, а вживую «2 Arcanum - The High Priestess» ломался на две
               строки. Порог — 244px, взяли 250px с запасом. */
            .arc-grid { grid-template-columns: 250px minmax(0, 1fr); }
            .arc-link { font-size: 12px; }
            .arc-menu-title { font-size: 11px; }
            .arc-article { padding: 28px 20px 34px; }
            .arc-fluid { top: -28px; left: -20px; width: calc(100% + 40px); height: calc(100% + 28px + 240px); }
            /* Две колонки вместо одной. Автоподбор оставлял одну: колонка статьи
               здесь 411–690px, а минимум плитки 210px требует 421px на две.
               Отступы внутри плитки режем до 14px — при десктопных 20px на самой
               узкой границе (821px) под текст остаётся ровно 145px, столько же,
               сколько занимает «The High Priestess», и название срывалось на
               вторую строку. */
            .arc-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
            .arc-card { padding: 14px; }
        }
        @media (max-width: 820px) {
            .arc-toc { display: none; }
            .arc-aside { display: block; }
            .arc-cardpic { width: 140px; }
            /* На узком экране колонка в 15 % нечитаема: меню уезжает наверх,
               перестаёт липнуть и показывает список в свою высоту.
               ⚠️ minmax(0, 1fr), а НЕ 1fr. У 1fr минимальный размер равен
               min-content содержимого, и самый широкий элемент внутри распирает
               колонку шире экрана — вся страница уезжала вбок. */
            .arc-grid { grid-template-columns: minmax(0, 1fr); }
            /* min(210px, 100%) — на экране уже 210px плитка сжимается вместе с
               ним, а не держит свою минимальную ширину. */
            .arc-cards { grid-template-columns: repeat(auto-fill, minmax(min(210px, 100%), 1fr)); }
            /* Боковые отступы кнопки в 86px были рассчитаны на десктоп: вместе с
               надписью они давали 248px неснижаемой ширины — это и распирало
               страницу больше всего. */
            .arc-calc { padding: 24px 18px; }
            /* Кнопка масштабируется целиком, а не по кускам. Единственная
               величина в пикселях — кегль, он тянется за шириной экрана:
               clamp(11px, 3.4vw, 17px). Всё остальное задано в em, то есть в
               долях этого кегля, и уменьшается вместе с ним пропорционально:
               отступы, скругление, бейдж. На 320px кнопка просто становится
               меньше, а не ломается по частям.
               Отступы сверху и снизу одинаковые — надпись стоит ровно по центру. */
            .arc-calc .arcana-cta {
                width: 100%;
                font-size: clamp(12px, 4.1vw, 17px);
                padding: 1.6em 1em;
                border-radius: 1.05em;
            }

            /* Бейдж прижат к правому верхнему углу самой кнопки. На десктопе он
               привязан к концу надписи и лежит в её широком правом отступе — здесь
               отступа нет, поэтому точка отсчёта другая. Верхний падинг кнопки
               увеличен под него, чтобы надпись не подлезала. */
            /* На узких экранах бейдж тоже в долях кегля — уменьшается вместе
               с кнопкой. Привязка к углу задана в общем правиле выше. */
            .arc-calc .cta-free-badge {
                right: .7em; top: .55em; font-size: .7em; padding: .35em .8em;
            }
            /* 320 → 373: ровно на один пункт больше (шаг пункта 51px + 2px поля).
               Просила Rimma — чтобы под палец попадало больше списка. */
            /* ⚠️ relative, а НЕ static. Задача была снять прилипание, но при
               static меню перестаёт быть точкой отсчёта для абсолютных детей —
               и ползунок уезжал считаться от страницы, вылезая за панель.
               ⚠️⚠️ И обязательно top: auto. В базовом правиле стоит top: 20px для
               прилипания; у relative это смещение работает буквально — меню
               уезжало на 20px вниз и съедало зазор до статьи. */
            .arc-menu { position: relative; top: auto; height: auto; max-height: 373px; }
            /* Пункты на мобильном выше: палец крупнее курсора, и 43px по высоте
               меньше рекомендованных 44px на касание. */
            .arc-link { padding: 16px 12px; }
            .arc-article { padding: 28px 22px 34px; min-height: 0; }
            .arc-fluid { top: -28px; left: -22px; width: calc(100% + 44px); height: calc(100% + 28px + 240px); }
            .arc-article h1 { font-size: clamp(32px, 7.5vw, 40px); max-width: 100%; }
            .arc-general-title { max-width: 100%; }
            .arc-lead--plain { max-width: 100%; }
            .arc-lead { font-size: 16px; }
        }

        /* Начиная с 391px плиток в ряду ровно две. Автоподбор сам бы этого не дал:
           при минимуме в 210px две колонки требуют 421px чистой ширины, а на 412px
           под контент остаётся 328px — он оставлял одну.
           ⚠️ Блок стоит ОТДЕЛЬНО, после мобильного медиазапроса, а не внутри него.
           В прошлый раз я вклинил его в середину, разорвал `max-width: 820px`
           пополам, и вся вторая половина правил — меню, отступы панели, кнопка —
           перестала действовать на экранах уже 391px. */
        @media (min-width: 391px) and (max-width: 820px) {
            .arc-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
            .arc-card { padding: 14px; }
        }
        /* От 620px — три колонки. Порог не круглый, а посчитанный: самое длинное
           название «The High Priestess» занимает 145px, плюс 28px отступов внутри
           плитки — значит плитка не должна быть уже 173px. Три такие плитки с
           двумя щелями требуют 521px под контент, то есть 605px экрана. Взяли 620
           с запасом; ниже этого порога третья колонка ломала бы названия. */
        @media (min-width: 620px) and (max-width: 820px) {
            .arc-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
        }


/* Вложенный пункт оглавления (заголовок h3 с data-nav): сдвинут и мельче —
   иначе плоский список из 19 пунктов не читается как структура. */
.arc-toc a.is-sub { padding-left: 26px; font-size: 12px; opacity: .82; }
