/* ============================================================
   КЕЙС УРОВНЯ A — РУЧНОЙ ДОБОР ПОД ALCHEMY
   Anna Gorodetskaya — Portfolio · 13 сент 2026

   Рукописный файл — counterpart site/css/alchemy-tune.css для
   кейса, тот же статус (никогда не перегенерируется). Подключается
   в buildCase() после caseCss (=case-jelly.css) через ключ
   caseTuneCss, ровно как alchemy-tune.css цепляется после
   homeCss — см. build.mjs.

   Здесь ровно две задачи, обе не решаются мостом токенов
   (design/system/_alchemy-bridge.css), потому что мост может
   только переименовать переменную, а не добавить отсутствующий
   компонент или залить хардкод-цвет:

   1. .jcontact — блок Next в конце каждого кейса. У jelly вся эта
      секция (фон, отступы, типографика) описана в skin-jelly.css,
      а не в case-jelly.css — а skin-jelly.css эта тема не грузит
      и не может: это переключатель всего сайта, а не одной
      страницы. Здесь — минимальный порт тех же правил на токены
      моста, плюс фамильяр (button.alchemy-control) вместо полосы
      портрета: фамильяр не полноэкранный фон, а декоративный
      элемент сбоку, поэтому .jcontact__art здесь не растягивается
      на всю секцию, как у jelly.

   2. Два хардкод-цвета case-jelly.css, которые мост не достаёт
      (color-mix/var читает только имена, а не литералы): плум-
      градиент рамки ведущего/ключевого кадра и один розовый
      хэйрлайн под обложкой. См. отчёт агента, 13.09.2026.

   (Третий пункт — подавление зависшей кроп-шторки — здесь был
   раньше частным случаем; 13.09.2026 обобщён и унесён в
   design/system/_alchemy-bridge.css, см. §3 ниже.)
   ============================================================ */

/* ------------------------------------------------------------
   1. NEXT-БЛОК (.jcontact) — порт тех же правил, что в
      skin-jelly.css, на токены моста и фамильяр вместо портрета.
   ------------------------------------------------------------ */

.jcontact {
  position: relative;
  min-height: 560px;
  padding: 72px var(--margin);
  overflow: hidden;
  background: var(--g-hero);
  border-top: 1px solid var(--rule);
}
.jcontact__content { position: relative; z-index: 1; max-width: 620px; }
.jcontact .t-meta { margin-bottom: 25px; color: var(--ink-55); }
.jcontact__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(44px, 5.4vw, 82px);
  font-variation-settings: "wght" 500;
  line-height: 1.02;
  letter-spacing: -0.055em;
}
.jcontact__title em { color: var(--accent); }
.jcontact__body { margin: 22px 0 30px; max-width: 460px; font-size: 16px; line-height: 1.65; color: var(--ink-80); }
/* Уточнение 13.09.2026: базовые .ch__row/.ch__btn (флекс, зазор,
   форма и цвет — почта заливкой, мессенджер контуром) теперь даёт
   design/system/_alchemy-bridge.css на КАЖДОЙ странице темы — до
   этого правки здесь были единственным местом, где кнопки Next
   вообще что-то получали (см. отчёт агента, 13.09.2026: дефект был
   на 12 из 18 страниц с блоком Next). Ничего лишним не стало и
   ничего убирать не нужно: три строки ниже не повторяют рецепт
   моста, а ТОЛЬКО уточняют его для этого конкретного блока —
   минимальная ширина кнопки и порядок (почта первой) специфичны
   для .jcontact именно кейса A, у остальных пятнадцати страниц с
   Next такой раскладки нет. Зазор 15px продублирован тут и в
   мосте намеренно одним числом (см. комментарий в бридже) — при
   правке одного менять оба. */
.jcontact__ch .ch__row { display: flex; flex-wrap: wrap; gap: 15px; }
.jcontact__ch .ch__btn { min-width: 160px; }
.jcontact__ch .ch__btn[href^="mailto"] { order: -1; }

/* Фамильяр — декоративный акцент справа, тот же приём, что
   .silver-contact на главной (skin-alchemy.css), а не полноэкранный
   фон: уроборосу нечего "покрывать", он объект, а не фотография. */
.jcontact__art {
  position: absolute;
  z-index: 0;
  right: clamp(0px, 4vw, 64px);
  top: 50%;
  width: clamp(200px, 26vw, 420px);
  transform: translateY(-50%);
}

@media (max-width: 760px) {
  .jcontact { min-height: 0; padding: 48px var(--margin) 300px; }
  .jcontact__art {
    right: 50%;
    top: auto;
    bottom: 36px;
    width: clamp(160px, 55vw, 260px);
    transform: translate(50%, 0);
  }
  .jcontact__body { font-size: 15px; }
}

/* ------------------------------------------------------------
   2. ОСТАТОК — два хардкод-цвета case-jelly.css, не читаемых
      токенами (см. §4 отчёта: что оставлено, что переопределено).

   Плум-градиент linear-gradient(135deg,#4A1F45,#2A1330) — подложка
   ведущего и ключевого кадра там, где картинка не закрывает рамку
   целиком (object-fit:contain). На тёмном оливковом грунте alchemy
   этот маджента-плум читается инородным пятном рядом с --g-hero/
   --g-work — заменён на диагональ из двух уже объявленных токенов
   темы, тот же угол 135deg, никакого нового цвета не изобретено.

   Розовый хэйрлайн (rgba(181,118,155,0.4), низ обложки) и тень
   на ink (rgba(67,26,60,0.2) под .cs__media img) — оставлены как
   есть: проверено в браузере (lg-signature, urban-russia), обе
   читаются как обычная тонкая линия/мягкая тень, а не как
   узнаваемый чужой цвет. Править нечего.
   ------------------------------------------------------------ */

.jcase .case__hero,
.jcase .case__hero.bleed,
.jcase .cs__media--key {
  background: linear-gradient(135deg, var(--g-work), var(--ground));
}

/* ------------------------------------------------------------
   3. КРОП-ШТОРКА, ОСТАЮЩАЯСЯ НАД ОБЛОЖКОЙ — перенесено 13.09.2026.

   Правило [data-m="crop"].is-in::after{content:none} раньше жило
   здесь частным случаем (.jcase .case__hero.is-in::after) — только
   для обложки кейса A. Обобщено и перенесено в
   design/system/_alchemy-bridge.css, который грузится на КАЖДОЙ
   странице темы: как только briefCss/practiceCss тоже подключат
   case-jelly.css/practice-jelly.css, та же утечка была бы видна и
   там, а частный селектор её бы не поймал. Один источник вместо
   двух — см. бридж, там же полное объяснение дефекта.
   ------------------------------------------------------------ */
