/* Дизайн-токены и общие правила: :root, сбросы, типографика.
   Извлечено как есть из prototype/src/styles.css (без строки @import шрифтов —
   шрифты подключаются своими файлами в задаче 24). Формы, размеры и радиусы —
   как в прототипе; hover/focus/tap-target/контраст добавлены и поправлены
   в задаче 19 (токены состояний и общий сброс фокуса — ниже, точечная
   правка --ink-soft — там же, где токен). Утилит вроде .visually-hidden в
   источнике нет, добавлять не за чем — если только не появляется элемент,
   которого в прототипе тоже никогда не было (см. следующее предложение).
   Исключения из этого правила — оба ниже. .skip-link: элемента нет в
   прототипе, он новый (задача 3, открытый вопрос 2), поэтому и стиль для
   него не "перенесён", а написан. .visually-hidden: добавлен задачей 23
   ровно по той же причине — под поле-ловушку для ботов в форме (app/
   components/Form.tsx), которого в SPA-прототипе тоже быть не могло, он
   ничего не отправлял. */

/* Шрифты (задача 24). Прототип грузил Golos Text (400/500/600) и Lora
   (400/500) строкой @import url("https://fonts.googleapis.com/css2?family=
   Golos+Text:wght@400;500;600&family=Lora:wght@400;500&display=swap") —
   первая строка prototype/src/styles.css. Внешний запрос блокирует
   отрисовку и на каждого посетителя уходят к Google адрес, заголовки, IP;
   для сайта российского детского сада это ещё и вопрос 152-ФЗ. Ниже —
   те же файлы, что отдавал бы этот @import, только со своего домена:
   скачаны один раз вручную инструментом tools/fetch-fonts.mjs (см. его
   шапку) и лежат в репозитории (public/fonts/ → dist/fonts/ при сборке,
   build.mjs).

   Лицензия — SIL Open Font License 1.1 у обоих семейств. Проверено не по
   памяти, а чтением: 2026-08-21 получены OFL.txt из первоисточника,
   репозитория google/fonts (github.com/google/fonts, ofl/golostext/OFL.txt
   и ofl/lora/OFL.txt). Раздел PERMISSION & CONDITIONS прямо разрешает
   embed/redistribute (п. 2: "Original or Modified Versions... may be
   bundled, redistributed and/or sold with any software"), условие одно —
   при копии должно остаться уведомление об авторстве и текст лицензии,
   в т.ч. машиночитаемо, "within text or binary files". Файлы ниже — те
   же байты, что отдаёт сам Google (никакой пересборки/субсеттинга нашими
   силами), поэтому уже несут это в таблице name самого woff2 (проверено
   инспекцией через fonttools: NameID 0 — копирайт, NameID 14 — ссылка на
   https://scripts.sil.org/OFL), способом не отличающимся от того, каким
   условие выполняет сама Google Fonts.

   Объявлений десять (5 начертаний × 2 подмножества), а физических файлов
   четыре: у обоих семейств внутри переменная ось wght (variable font;
   Golos Text 400–900, Lora 400–700 — проверено той же инспекцией через
   fonttools), и Google для cyrillic/latin отдаёт по ОДНОМУ файлу сразу на
   все запрошенные начертания — три @font-face Golos Text (400/500/600)
   на латиницу указывают в CSS2-ответе Google на один и тот же URL, так
   же с двумя начертаниями Lora. Ниже — то же самое устройство, не
   самодеятельность (см. также комментарий и downloadFaces() в
   tools/fetch-fonts.mjs, откуда взяты url() и unicode-range).

   unicode-range — дословно то, что отдаёт Google в CSS2-ответе на
   family=Golos+Text:wght@400;500;600&family=Lora:wght@400;500 (запрошено
   с User-Agent современного браузера, иначе Google отдаёт устаревший
   набор). Значения совпадают у Golos Text и Lora — Google использует один
   и тот же диапазон под "cyrillic"/"latin" во многих семействах, это не
   опечатка. Взяты ровно два подмножества из тех, что даёт Google
   (cyrillic-ext, cyrillic, latin-ext, latin, у Lora ещё math/symbols/
   vietnamese) — кириллица и латиница, см. задачу 24, п.3 "Разрешение
   неоднозначностей": вьетнамского текста или математических символов на
   сайте детского сада нет, а "-ext" — это акценты и буквы вне базового
   набора, тоже не встречаются (буквы вне A–Za–z и Ё/ё-А–я — не
   используются в текстах сайта, см. app/content). */
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/golos-text-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/golos-text-latin.woff2") format("woff2");
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/golos-text-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/golos-text-latin.woff2") format("woff2");
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonts/golos-text-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Golos Text";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonts/golos-text-latin.woff2") format("woff2");
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/lora-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/lora-latin.woff2") format("woff2");
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/lora-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/lora-latin.woff2") format("woff2");
  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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  font-family: "Golos Text", Arial, sans-serif;
  color: #254533;
  background: #e8e4da;
  font-synthesis: none;
  --milk: #f7f2e8;
  --paper: #fffdf8;
  --forest: #294b36;
  --olive: #87962f;
  --sage: #dfe6d5;
  --wood: #d7b98d;
  /* Задача 19: было #5b6a62 — 4,23:1 на самом тёмном фоне, где токен
     реально стоит (.program-grain, #eadcc7), при требуемых 4,5. Токен один
     на ~15 мест (надзаголовки intro/directions/formats/day и подписи
     program-* /kindergarten-*), поэтому правится здесь один раз — буквы
     нигде не тронуты, только значение. */
  --ink-soft: #536059;
  --line: rgba(41, 75, 54, .18);

  /* Кольцо фокуса одно на весь сайт: одинаковый жест — одинаковый вид.
     Два слоя, светлый и тёмный, чтобы кольцо читалось и на молочном фоне,
     и на зелёной заливке кнопки. */
  --focus-ring: 0 0 0 3px #fffdf8, 0 0 0 6px #2f5a3f;
  --hover-lift: translateY(-2px);
  --press-lift: translateY(0);
  --state-speed: 140ms;
}

/* Никто не должен получить кольцо шириной в экран: правило общее и раннее,
   дальше классы только уточняют. Ложится на КАЖДЫЙ фокусируемый элемент
   сайта, включая те, что не попали в INTERACTIVE_CLASSES (простые ссылки
   меню, соцсети в подвале и т.п.) — у них своего правила фокуса может не
   быть, но это не оставляет их без кольца. */
:where(a, button, input, select, textarea, summary):focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
  border-radius: inherit;
}

/* Островки (задача 21) прячут неактивные панели и закрытое меню атрибутом
   hidden, а не своим классом — но добрая половина сайта уже несёт
   авторский display (grid/flex/…) на том же элементе, а авторские правила
   в каскаде побеждают дефолт браузера [hidden] { display:none }
   безусловно, даже при равной или меньшей специфичности: происхождение
   правила (author vs user-agent) сравнивается раньше специфичности.
   !important поднимает это правило в более высокий по приоритету слой
   ("author !important"), который побеждает уже любое авторское display
   без !important — единственный способ дать hidden сработать
   везде, не расставляя [hidden] по каждому классу отдельно. */
[hidden] { display: none !important; }

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 98px; }
body { margin: 0; min-width: 320px; background: var(--milk); color: var(--forest); -webkit-font-smoothing: antialiased; }
button, a { font: inherit; }
a { color: inherit; }
button { color: inherit; }
img { display: block; width: 100%; }
h1, p, figure { margin-top: 0; }
h1 { font-family: "Lora", Georgia, serif; font-weight: 400; letter-spacing: -.042em; }

/* Глобальный глушитель движения (задача 20) — единственное место на сайте,
   где prefers-reduced-motion: reduce проверяется напрямую; motion.css и
   переходы состояний (задача 19, ниже в этом каскаде: pages.css) его не
   повторяют, полагаясь на этот блок. Не отключает анимации/переходы
   (transition: none и подобное убрали бы и сам факт состояния — например,
   заливку кнопки при наведении), а сжимает их длительность почти до нуля:
   конечное состояние остаётся тем же, просто без движения к нему. Одного
   scroll-behavior: auto (как было до этой задачи) уже недостаточно — теперь
   в игре keyframe-анимации появления (motion.css) и переход стрелки в
   ссылке, которых не было в задаче 19. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Скип-ссылка «К содержанию» (задача 3): спрятана в покое сдвигом за верхний
   край, по фокусу возвращается на место — видна и читаема с клавиатуры. */
.skip-link {
  position: absolute;
  top: -3rem;
  left: 1rem;
  z-index: 100;
  padding: .6em 1.1em;
  border-radius: 8px;
  background: var(--forest);
  color: #fff;
  text-decoration: none;
  transition: transform var(--state-speed) var(--ease-out), background-color var(--state-speed) var(--ease-out), box-shadow var(--state-speed) var(--ease-out);
}
.skip-link:focus {
  top: 1rem;
}
/* Заливка — форест, тот же приём, что у сплошных кнопок (задача 19,
   .primary-button и рядом в pages.css): один шаг темнее, контраст с белым
   текстом только растёт. :hover — на случай если ссылку навели мышью уже
   после того, как она показалась по фокусу. */
.skip-link:hover { background: #23402e; transform: var(--hover-lift); }
.skip-link:focus-visible { box-shadow: var(--focus-ring); }
.skip-link:active { transform: var(--press-lift); }

/* Поле-ловушка для ботов в форме (задача 23, app/components/Form.tsx):
   стандартный приём clip+position, не display:none — элемент остаётся в
   DOM и доступен программному заполнению (то, что и должно поймать
   примитивного бота), просто ужат до 1×1px и обрезан по границе, так что
   зрячий посетитель ничего не видит. tabIndex={-1}/aria-hidden="true" на
   самом поле убирают его из табуляции и из дерева доступности —
   от .skip-link эта утилита независима и с ним не связана.

   Внутри самих форм этого правила одного не хватает — см. комментарий
   и правило input.visually-hidden ниже: без него ужатие до 1×1px не
   происходит, хотя посетитель всё равно ничего не видит (обзор задачи
   23, отчёт задачи 23). */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Обзор задачи 23: голого .visually-hidden (специфичность 0-1-0) внутри
   .contact-form/.vacancy-form не хватает — полевые правила pages.css
   .contact-form input:not([type="checkbox"]) (0-2-1) и .vacancy-form
   input:not([type="checkbox"]):not([type="file"]) (0-3-1) специфичнее и
   к тому же стоят позже в каскаде (pages.css склеивается после base.css,
   build.mjs). Ловушка внутри формы получала их width: 100%, padding:
   12px 14px и border вместо 1×1 — незаметно для глаза только потому,
   что overflow/clip/position из правила выше их не пересекают и остаются
   в силе сами по себе, но это единственная оставшаяся линия защиты
   из заявленных, а не одна из них. Четыре повтора класса поднимают
   специфичность input.visually-hidden до 0-4-1 — на класс выше худшего
   из двух полевых правил (0-3-1), безусловно, без !important и без
   зависимости от порядка файлов в сборке. min-width/min-height — не
   специфичностный конфликт, а отсутствовавшее у правила выше объявление:
   .contact-form/.vacancy-form input задают min-height: 50px, а используемая
   высота блока — max(height, min-height); без явного min-height здесь
   чужие 50px остались бы в силе даже после победы по специфичности над
   остальными свойствами. Замер до/после — в отчёте задачи 23. */
input.visually-hidden.visually-hidden.visually-hidden.visually-hidden {
  width: 1px;
  height: 1px;
  min-width: 0;
  min-height: 1px;
  padding: 0;
  border: 0;
}

/* Стили страниц и компонентов. Перенесено как есть из prototype/src/styles.css
   (всё, что не токены/сбросы/типографика в base.css и не движение в motion.css).
   Порядок правил внутри сохранён — CSS зависит от каскада. Правила :hover и :focus
   оставлены как есть, их приведёт к общему виду Task 19. */

/* Club development */
.club-development-page main {
  overflow: hidden;
  background: #f7f3e9;
}

.club-development-hero {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
  max-width: 1440px;
  margin: 0 auto;
  padding: clamp(5rem, 9vw, 9rem) clamp(1.5rem, 6vw, 5rem);
  background: linear-gradient(135deg, #fbf8f0 0 52%, #e8efdc 52% 100%);
}

.club-development-hero-copy {
  max-width: 680px;
}

.club-development-hero-copy h1 {
  margin: 0.7rem 0 1.6rem;
  color: #204f39;
  font-family: var(--font-display);
  font-size: clamp(2.75rem, 4.4vw, 4.9rem);
  font-weight: 400;
  line-height: 0.98;
  letter-spacing: -0.04em;
}

.club-development-hero-copy > p:not(.eyebrow):not(.club-development-hero-note) {
  max-width: 650px;
  margin: 0;
  color: #4d6158;
  font-size: clamp(1.12rem, 1.45vw, 1.3rem);
  line-height: 1.65;
}

.club-development-hero-note {
  max-width: 640px;
  margin: 1.4rem 0 0;
  padding-left: 1.1rem;
  border-left: 3px solid #91a13a;
  color: #254f39;
  font-size: clamp(1.02rem, 1.25vw, 1.16rem);
  font-weight: 600;
  line-height: 1.55;
}

.club-development-hero-image {
  aspect-ratio: 3 / 2;
  margin: 0;
  overflow: hidden;
  border-radius: 7rem 2.2rem 7rem 2.2rem;
  box-shadow: 0 2rem 4rem rgba(44, 78, 56, 0.12);
}

.club-development-hero-image img,
.club-development-group-image img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.club-development-hero-image img {
  object-fit: contain;
}

.club-development-groups {
  max-width: 1440px;
  margin: 0 auto;
  padding: clamp(1rem, 4vw, 4rem) clamp(1.5rem, 6vw, 5rem) clamp(5rem, 9vw, 9rem);
}

.club-development-group {
  display: grid;
  grid-template-columns: minmax(230px, 0.34fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  padding: clamp(3rem, 6vw, 5.8rem) 0;
  border-top: 1px solid rgba(42, 84, 57, 0.22);
}

.club-development-group:first-child {
  border-top: 0;
}

.club-development-group.has-image {
  grid-template-columns: minmax(220px, 0.32fr) minmax(0, 0.68fr);
}

.club-development-group-heading span {
  display: inline-grid;
  width: 3rem;
  height: 3rem;
  place-items: center;
  margin-bottom: 1.3rem;
  border: 1px solid #9cac75;
  border-radius: 50%;
  color: #687b28;
  font-weight: 800;
}

.club-development-group-heading h2,
.club-development-cta h2 {
  margin: 0;
  color: #204f39;
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 4vw, 4.4rem);
  font-weight: 400;
  line-height: 1.04;
}

.club-development-directions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem clamp(2rem, 4vw, 4.5rem);
}

.club-development-directions.count-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.club-development-direction {
  padding-top: 1.6rem;
  border-top: 2px solid #b7c595;
}

.club-development-direction.has-image { padding-top: 0; overflow: hidden; border-top: 0; border-radius: 2rem; background: rgba(255,253,248,.72); }
.club-development-direction-image { aspect-ratio: 3 / 2; margin: 0 0 1.7rem; overflow: hidden; border-radius: 2rem; background: #e5eadb; }
.club-development-direction-image img { display: block; width: 100%; height: 100%; object-fit: contain; }
.club-development-direction.has-image h3, .club-development-direction.has-image p { margin-left: 1.4rem; margin-right: 1.4rem; }
.club-development-direction.has-image p { margin-bottom: 1.6rem; }

.club-development-group:first-child,
.club-development-group.logic-technology,
.club-development-group.school-speech { display: block; padding-top: clamp(3rem,5vw,5rem); }
.club-development-group:first-child .club-development-group-heading,
.club-development-group.logic-technology .club-development-group-heading,
.club-development-group.school-speech .club-development-group-heading { margin-bottom: 2.2rem; }
.club-development-group:first-child .club-development-group-heading h2,
.club-development-group.logic-technology .club-development-group-heading h2,
.club-development-group.school-speech .club-development-group-heading h2 { max-width: none; }
.club-development-group:first-child .club-development-directions,
.club-development-group.logic-technology .club-development-directions { grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(1.5rem,3vw,3rem); }
.club-development-group:first-child .club-development-direction-copy,
.club-development-group.logic-technology .club-development-direction-copy { white-space: pre-line; }
.club-development-group.school-speech .club-development-directions { grid-template-columns: repeat(3,minmax(0,1fr)); gap: clamp(1rem,2vw,1.5rem); }
.club-development-group.school-speech .club-development-direction { display: flex; flex-direction: column; min-height: 100%; padding: clamp(1.35rem,2.2vw,1.8rem); border: 1px solid rgba(42,84,57,.16); border-radius: 1.6rem; background: rgba(255,253,248,.76); }
.club-development-group.school-speech .club-development-direction:nth-child(2) { background: #edf1e4; }
.club-development-group.school-speech .club-development-direction:nth-child(3) { background: #f1eadc; }
.club-development-group.school-speech .club-development-direction h3 { font-size: clamp(1.55rem,2vw,2rem); }
.club-development-group.school-speech .club-development-direction p { font-size: 1rem; line-height: 1.58; }
.club-development-group.school-speech .club-development-direction-link { margin-top: auto; padding-top: .78rem; transform: translateY(.45rem); }
.school-speech-visual { display: grid; grid-template-columns: auto minmax(40px,1fr) auto minmax(40px,1fr) auto; align-items: center; gap: 1rem; max-width: 800px; margin: -1rem 0 2rem; }
.school-speech-visual > div { display: inline-flex; align-items: center; gap: .55rem; padding: .65rem .85rem; border: 1px solid #b7c595; border-radius: 999px; color: #315640; background: rgba(255,255,255,.54); font-size: .9rem; font-weight: 750; white-space: nowrap; }
.school-speech-visual > div:nth-of-type(2) { background: #edf1e4; }
.school-speech-visual > div:nth-of-type(3) { background: #f1eadc; }
.school-speech-visual > i { height: 2px; border-radius: 999px; background: linear-gradient(90deg,#a8b779,#d1bd91); }
.club-development-group.mama-baby-section { grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); gap: 1.5rem clamp(2rem,4vw,4rem); }
.mama-baby-section .club-development-group-heading { grid-column: 1 / -1; margin-bottom: .6rem; }
.mama-baby-section .club-development-group-heading h2 { max-width: none; font-size: clamp(2.3rem,3.4vw,3.7rem); }
.mama-baby-section .club-development-group-image { grid-column: 1; aspect-ratio: 4/3; margin: 0; border-radius: 2rem 5rem 2rem 2rem; }
.mama-baby-section .club-development-group-image img { object-fit: contain; }
.club-development-group.mama-baby-section .club-development-directions { grid-column: 2; grid-template-columns: 1fr; }
.mama-baby-section .club-development-direction { padding: 0; border-top: 0; }
.mama-baby-section .club-development-direction h3 { margin-bottom: .7rem; font-size: clamp(2rem,3vw,3.1rem); }
.club-development-direction-age { display: inline-flex; width: fit-content; margin-bottom: 1.2rem; padding: .55rem .8rem; border-radius: 999px; color: #315640; background: #e8eedb; font-size: .95rem; font-weight: 800; }
.mama-baby-section .club-development-direction-copy { font-size: 1.02rem; line-height: 1.58; }
.club-development-benefits { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem; margin-top: 1.4rem; }
.club-development-benefits > div { padding: 1rem; border-radius: 1.2rem; background: rgba(237,241,228,.75); }
.club-development-benefits > div:nth-child(2n) { background: #f1eadc; }
.club-development-benefits strong { display: block; margin-bottom: .35rem; color: #315640; font-size: .96rem; line-height: 1.3; }
.club-development-benefits span { display: block; color: #5a6a62; font-size: .88rem; line-height: 1.45; }
.mama-baby-section .club-development-direction-note { margin-top: 1.1rem; padding-left: 1rem; border-left: 3px solid #a7b66e; color: #64706a; font-size: .9rem; line-height: 1.5; } /* было #68756e — 4,35:1, задача 19 */
.mama-baby-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .85rem 1.2rem; margin-top: 1.3rem; }
.mama-baby-actions .primary-button { color: #fff; text-decoration: none; }
.mama-baby-actions > a:not(.primary-button) { color: #315640; font-size: .94rem; font-weight: 750; text-decoration: none; }
.mama-baby-actions .mama-baby-secondary-action { display: inline-flex; align-items: center; gap: .38rem; min-height: 2.75rem; padding: .62rem .85rem; border: 1px solid #aebd79; border-radius: 999px; background: rgba(255,255,255,.56); transition: background .2s ease,border-color .2s ease; }
.mama-baby-actions .mama-baby-secondary-action:hover { border-color: #879823; background: #edf1e4; }
.club-directions-update { position: relative; display: grid; grid-template-columns: 82px minmax(0,1fr) auto; align-items: center; gap: clamp(1.5rem,3vw,2.5rem); max-width: 1280px; margin: 0 auto clamp(2rem,4vw,3.5rem); padding: clamp(1.6rem,3vw,2.4rem); border: 1px solid rgba(42,84,57,.16); border-radius: 1.6rem 3.8rem 1.6rem 1.6rem; background: #edf1e4; }
.club-directions-update h2 { margin: .35rem 0 .65rem; color: #204f39; font-family: var(--font-display); font-size: clamp(1.7rem,2.5vw,2.6rem); font-weight: 400; line-height: 1.1; }
.club-directions-update p:not(.eyebrow) { max-width: 780px; margin: 0; color: #586961; font-size: .98rem; line-height: 1.58; }
.club-directions-update > a { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; min-height: 3rem; padding: .75rem 1rem; border: 1px solid #879823; border-radius: 999px; color: #315640; background: rgba(255,255,255,.58); font-weight: 800; text-align: center; text-decoration: none; white-space: nowrap; }
.club-directions-update > a:hover { background: #fffdf8; }
.club-directions-update-mark { position: relative; width: 74px; height: 74px; border: 1px solid #aebd79; border-radius: 50%; }
.club-directions-update-mark::before { content: ""; position: absolute; inset: 15px; border: 1px dashed #aebd79; border-radius: 50%; }
.club-directions-update-mark span { position: absolute; width: 11px; height: 11px; border-radius: 50%; background: #879823; }
.club-directions-update-mark span:nth-child(1) { top: 3px; left: 30px; }
.club-directions-update-mark span:nth-child(2) { right: 5px; bottom: 15px; background: #c79870; }
.club-directions-update-mark span:nth-child(3) { left: 7px; bottom: 12px; background: #749694; }
.club-development-educator { margin: 0 1.4rem 1.5rem; padding: 1rem 1.1rem; border-radius: 1.1rem; background: #edf1e4; color: #53645b; }
.club-development-educator strong { display: block; margin-bottom: .42rem; color: #315640; font-size: .98rem; line-height: 1.35; }
.club-development-educator span { display: block; font-size: .92rem; line-height: 1.52; }
.club-development-direction-link { display: inline-flex; align-items: center; gap: .45rem; margin: 0 1.4rem 1.6rem; color: #617524; font-weight: 800; text-decoration: none; }
.club-development-direction-link:hover { color: #315640; }
.club-development-direction:not(.has-image) .club-development-direction-link { width: fit-content; margin: 1.45rem 0 0; padding: .78rem 1rem; border-radius: 999px; background: #edf1e4; line-height: 1.25; }
.club-development-direction:not(.has-image) .club-development-direction-link:hover { background: #e2e9d4; }
.club-development-group.school-speech .club-development-direction:not(.has-image) .club-development-direction-link { margin-top: auto; transform: translateY(.45rem); }

.club-direction-page { background: #fbf8ef; }
.club-direction-page main { overflow: hidden; }
.club-direction-hero { display: grid; grid-template-columns: minmax(0,.86fr) minmax(520px,1.14fr); align-items: center; gap: clamp(2.5rem,5vw,6rem); max-width: 1440px; margin: 0 auto; padding: clamp(4rem,8vw,8rem) clamp(1.5rem,6vw,5rem); }
.club-direction-hero-copy h1 { max-width: 760px; margin: .8rem 0 1.6rem; color: #204f39; font-family: var(--font-display); font-size: clamp(3.2rem,5.4vw,6rem); font-weight: 400; line-height: .98; }
.club-direction-hero-copy > p:last-child { max-width: 650px; margin: 0; color: #50645b; font-size: clamp(1.08rem,1.5vw,1.3rem); line-height: 1.65; }
.club-direction-hero figure { aspect-ratio: 3/2; margin: 0; overflow: hidden; border-radius: 5rem 1.6rem 5rem 1.6rem; background: #e8eddf; }
.club-direction-hero img { width: 100%; height: 100%; object-fit: contain; display: block; }
.direction-section { max-width: 1280px; margin: 0 auto; padding: clamp(4rem,7vw,7rem) clamp(1.5rem,5vw,4rem); border-top: 1px solid rgba(42,84,57,.18); }
.direction-section h2, .direction-cta h2 { margin: .65rem 0 0; color: #204f39; font-family: var(--font-display); font-size: clamp(2.35rem,4vw,4.2rem); font-weight: 400; line-height: 1.05; }
.direction-section p { color: #50645b; font-size: 1.08rem; line-height: 1.7; }
.club-direction-intro, .direction-format { display: grid; grid-template-columns: minmax(0,.88fr) minmax(0,1.12fr); gap: clamp(3rem,7vw,7rem); align-items: start; }
.club-direction-intro > p, .direction-format > p { margin: .3rem 0 0; font-size: clamp(1.1rem,1.6vw,1.35rem); }
.direction-projects header, .direction-route header { max-width: 830px; margin-bottom: 2.5rem; }
.direction-project-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1rem; }
.direction-project-grid.count-3 { grid-template-columns: repeat(3,minmax(0,1fr)); }
.direction-project-grid > div { min-height: 150px; padding: 1.5rem; border-radius: 1.5rem; background: #edf1e4; }
.direction-project-grid span { color: #84922e; font-weight: 800; }
.direction-project-grid h3 { margin: 2rem 0 0; color: #315640; font-family: var(--font-display); font-size: 1.55rem; font-weight: 400; line-height: 1.15; }
.direction-route { max-width: 1440px; border-top: 0; border-radius: 4rem 1.5rem 4rem 1.5rem; background: #204f39; }
.direction-route .eyebrow, .direction-route h2, .direction-route p { color: #fff; }
.direction-route-steps { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: .75rem; }
.direction-route-steps.compact { grid-template-columns: repeat(5,minmax(0,1fr)); }
.direction-route-steps > div { position: relative; min-height: 120px; padding: 1.1rem; border: 1px solid rgba(255,255,255,.24); border-radius: 1.2rem; }
.direction-route-steps span { display: block; margin-bottom: 1.5rem; color: #c5d465; font-weight: 800; }
.direction-route-steps strong { color: #fff; font-size: .98rem; line-height: 1.35; }
.direction-route > p { max-width: 820px; margin: 2rem 0 0; color: rgba(255,255,255,.78); }
.direction-skills { display: grid; grid-template-columns: minmax(0,1fr) minmax(360px,.8fr); gap: clamp(3rem,7vw,7rem); }
.direction-skills h2 { margin-bottom: 1.3rem; }
.direction-tags { display: flex; flex-wrap: wrap; align-content: center; gap: .8rem; }
.direction-tags span { padding: .8rem 1.05rem; border: 1px solid #b7c595; border-radius: 999px; color: #315640; background: rgba(255,255,255,.55); }
.direction-teacher { max-width: 1000px; text-align: center; }
.direction-teacher p:last-child { max-width: 780px; margin: 1.5rem auto 0; }
.direction-section-note { margin: 1.5rem 0 0; }
.direction-cta { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 3rem; max-width: 1320px; margin: 0 auto 6rem; padding: clamp(2.5rem,5vw,4.5rem); border-radius: 2rem 5rem 2rem 2rem; background: #e9efdd; }
.direction-cta > div:last-child { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 1rem 1.4rem; }
.direction-cta > div:last-child > a:not(.button) { display: inline-flex; align-items: center; gap: .35rem; color: #315640; font-weight: 700; text-decoration: none; }

.programming-page .club-direction-hero { grid-template-columns: minmax(0,1fr) minmax(480px,1fr); gap: clamp(2.5rem,4vw,4.5rem); padding-top: clamp(3rem,5vw,5rem); padding-bottom: clamp(3.5rem,6vw,5.5rem); }
.programming-page .club-direction-hero-copy h1 { max-width: 650px; font-size: clamp(2.25rem,3vw,3.4rem); line-height: 1.06; }
.direction-back-link { display: inline-flex; margin-bottom: 1.5rem; color: #687b28; font-weight: 750; text-decoration: none; }
.direction-back-link:hover { color: #204f39; }
.direction-hero-cta { display: inline-flex; width: fit-content; margin-top: 1.6rem; text-decoration: none; }
.programming-page .direction-section { padding-top: clamp(3rem,5vw,4.8rem); padding-bottom: clamp(3rem,5vw,4.8rem); }
.programming-page .direction-section h2,
.programming-page .direction-cta h2 { font-size: clamp(1.85rem,2.45vw,2.7rem); line-height: 1.1; }
.programming-page .club-direction-intro,
.programming-page .direction-format { gap: clamp(2.5rem,5vw,5rem); }
.programming-page .club-direction-intro > p,
.programming-page .direction-format > p { font-size: clamp(1.05rem,1.35vw,1.2rem); }
.programming-page .direction-projects header { margin-bottom: 1.7rem; }
.programming-page .direction-project-grid > div { min-height: 118px; padding: 1.2rem; }
.programming-page .direction-project-grid h3 { margin-top: 1.35rem; font-size: 1.35rem; }
.programming-path-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin: 2.4rem 0 1.25rem; }
.programming-path-heading .eyebrow { margin: 0; }
.programming-path-heading h3 { max-width: 500px; margin: 0; color: #204f39; font-family: var(--font-display); font-size: clamp(1.65rem,2.4vw,2.5rem); font-weight: 400; line-height: 1.1; text-align: right; }
.programming-project-path .direction-route-steps > div { min-height: 94px; border-color: rgba(42,84,57,.22); background: rgba(237,241,228,.45); }
.programming-project-path .direction-route-steps span { margin-bottom: 1rem; color: #84922e; }
.programming-project-path .direction-route-steps strong { color: #315640; }
.programming-project-path > p { max-width: 820px; margin: 1.3rem 0 0; }
.programming-page .direction-skills { gap: clamp(2.5rem,5vw,5rem); }
.programming-page .direction-teacher { max-width: 1060px; padding: clamp(2.4rem,4vw,3.5rem) clamp(1.5rem,5vw,4rem); border-radius: 1.7rem; background: #edf1e4; text-align: left; }
.programming-page .direction-teacher h2 { max-width: 700px; }
.programming-page .direction-teacher p:last-child { max-width: 820px; margin: 1rem 0 0; }
.programming-page .direction-cta { margin-bottom: 4rem; padding: clamp(2.2rem,4vw,3.5rem); background: #204f39; }
.programming-page .direction-cta .eyebrow { color: #cbd89f; }
.programming-page .direction-cta h2 { color: #fffaf0; }
.programming-page .direction-cta > div:last-child { max-width: 560px; }
.programming-page .direction-cta .primary-button { flex: 0 0 auto; color: #fff; background: #879823; text-decoration: none; }
.programming-page .direction-cta > div:last-child > a:not(.button):not(.primary-button) { color: #fffaf0; }

.lego-page .club-direction-hero { grid-template-columns: minmax(0,1fr) minmax(480px,1fr); gap: clamp(2.5rem,4vw,4.5rem); padding-top: clamp(3rem,5vw,5rem); padding-bottom: clamp(3.5rem,6vw,5.5rem); }
.lego-page .club-direction-hero-copy h1 { max-width: 650px; font-size: clamp(2.25rem,3vw,3.4rem); line-height: 1.06; }
.lego-page .direction-section { padding-top: clamp(3rem,5vw,4.8rem); padding-bottom: clamp(3rem,5vw,4.8rem); }
.lego-page .direction-section h2,
.lego-page .direction-cta h2 { font-size: clamp(1.85rem,2.45vw,2.7rem); line-height: 1.1; }
.lego-page .direction-route { padding-top: clamp(2.8rem,4vw,4rem); padding-bottom: clamp(2.8rem,4vw,4rem); }
.lego-page .direction-route header { margin-bottom: 1.6rem; }
.lego-page .direction-route-steps > div { min-height: 96px; }
.lego-page .direction-route > p { margin-top: 1.35rem; }
.lego-page .direction-projects header { margin-bottom: 1.7rem; }
.lego-page .direction-project-grid > div { min-height: 118px; padding: 1.2rem; }
.lego-page .direction-project-grid h3 { margin-top: 1.35rem; font-size: 1.35rem; }
.lego-page .club-direction-intro { gap: clamp(2.5rem,5vw,5rem); }
.lego-page .club-direction-intro > p { font-size: clamp(1.05rem,1.35vw,1.2rem); }
.lego-page .direction-skills { gap: clamp(2.5rem,5vw,5rem); }
.lego-page .direction-tags { gap: .65rem; }
.lego-page .direction-tags span { padding: .68rem .9rem; font-size: .96rem; }
.lego-page .direction-teacher { max-width: 1060px; padding: clamp(2.4rem,4vw,3.5rem) clamp(1.5rem,5vw,4rem); border-radius: 1.7rem; background: #edf1e4; text-align: left; }
.lego-page .direction-teacher h2 { max-width: 760px; }
.lego-page .direction-teacher p:last-child { max-width: 850px; margin: 1rem 0 0; }
.lego-page .direction-cta { margin-bottom: 4rem; padding: clamp(2.2rem,4vw,3.5rem); background: #204f39; }
.lego-page .direction-cta .eyebrow { color: #cbd89f; }
.lego-page .direction-cta h2 { color: #fffaf0; }
.lego-page .direction-cta > div:last-child { max-width: 560px; }
.lego-page .direction-cta .primary-button { flex: 0 0 auto; color: #fff; background: #879823; text-decoration: none; }
.lego-page .direction-cta > div:last-child > a:not(.button):not(.primary-button) { color: #fffaf0; }

.painting-page .club-direction-hero { grid-template-columns: minmax(0,.95fr) minmax(500px,1.05fr); gap: clamp(2.5rem,4vw,4.5rem); padding-top: clamp(3rem,5vw,5rem); padding-bottom: clamp(3.5rem,6vw,5.5rem); }
.painting-page .club-direction-hero-copy h1 { max-width: 650px; font-size: clamp(2.25rem,3vw,3.4rem); line-height: 1.06; }
.painting-page .direction-section { padding-top: clamp(3rem,5vw,4.8rem); padding-bottom: clamp(3rem,5vw,4.8rem); }
.painting-page .direction-section h2, .painting-page .direction-cta h2 { font-size: clamp(1.85rem,2.45vw,2.7rem); line-height: 1.1; }
.painting-principle, .painting-results { display: grid; grid-template-columns: minmax(0,1fr) minmax(380px,.9fr); align-items: start; gap: clamp(2.5rem,5vw,5rem); }
.painting-principle > p { margin-top: .35rem; font-size: clamp(1.05rem,1.35vw,1.2rem); }
.painting-techniques header { max-width: 760px; margin-bottom: 1.8rem; }
.painting-technique-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1rem; }
.painting-technique-grid article { min-height: 190px; padding: 1.35rem; border-radius: 1.5rem; background: #edf1e4; }
.painting-technique-grid span { color: #84922e; font-weight: 800; }
.painting-technique-grid h3 { margin: 1.3rem 0 .65rem; color: #315640; font-family: var(--font-display); font-size: 1.4rem; font-weight: 400; }
.painting-technique-grid p { margin: 0; font-size: .98rem; line-height: 1.55; }
.painting-route { padding-top: clamp(2.8rem,4vw,4rem); padding-bottom: clamp(2.8rem,4vw,4rem); }
.painting-route header { margin-bottom: 1.6rem; }
.painting-route .direction-route-steps > div { min-height: 96px; }
.painting-route > p { margin-top: 1.35rem; }
.painting-results .direction-tags { align-content: start; }
.painting-programs { position: relative; }
.painting-programs header { max-width: 820px; margin-bottom: 2rem; }
.painting-programs header > p:last-child { margin: .8rem 0 0; }
.art-tools { position: absolute; top: clamp(3rem,5vw,4.8rem); right: clamp(1.5rem,5vw,4rem); width: 180px; height: 105px; transform: rotate(3deg); }
.art-palette { position: absolute; right: 0; bottom: 0; width: 112px; height: 78px; border: 2px solid rgba(72,87,59,.22); border-radius: 55% 45% 52% 48%; background: #e5d1ad; box-shadow: 0 10px 24px rgba(54,74,47,.08); }
.art-palette::after { content: ""; position: absolute; right: 18px; top: 14px; width: 20px; height: 24px; border-radius: 50%; background: #fbf8ef; box-shadow: inset 0 0 0 2px rgba(72,87,59,.12); }
.art-palette i { position: absolute; width: 17px; height: 17px; border-radius: 50%; }
.art-palette i:nth-child(1) { left: 18px; top: 15px; background: #91a75f; }
.art-palette i:nth-child(2) { left: 44px; top: 10px; background: #c67c61; }
.art-palette i:nth-child(3) { left: 23px; top: 42px; background: #648e91; }
.art-palette i:nth-child(4) { left: 52px; top: 40px; background: #d5aa4d; }
.art-brush { position: absolute; left: 12px; bottom: 14px; width: 118px; height: 8px; border-radius: 999px; background: #b88757; transform-origin: left center; }
.art-brush::after { content: ""; position: absolute; right: -26px; top: -4px; width: 33px; height: 16px; border-radius: 0 70% 70% 0; background: #526b4f; }
.brush-one { transform: rotate(-32deg); }
.brush-two { bottom: 2px; transform: rotate(-18deg); background: #d0a26d; }
.painting-programs > div { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; }
.painting-programs article { position: relative; display: flex; flex-direction: column; padding: clamp(1.4rem,2.5vw,2rem); border: 1px solid rgba(42,84,57,.16); border-radius: 1.8rem .7rem 1.8rem .7rem; background-color: rgba(255,253,248,.88); background-image: repeating-linear-gradient(0deg,rgba(80,105,75,.025) 0,rgba(80,105,75,.025) 1px,transparent 1px,transparent 5px); }
.painting-programs article::before { content: ""; position: absolute; top: -8px; left: 50%; width: 52px; height: 17px; transform: translateX(-50%) rotate(-2deg); background: rgba(210,189,145,.54); border-radius: 2px; }
.painting-program-head { display: flex; justify-content: space-between; align-items: center; }
.painting-program-head span { color: #84922e; font-weight: 800; }
.painting-program-head small { padding: .45rem .75rem; border-radius: 999px; color: #315640; background: #edf1e4; font-weight: 800; }
.painting-programs h3 { margin: 1.25rem 0 .8rem; color: #204f39; font-family: var(--font-display); font-size: clamp(1.65rem,2.2vw,2.2rem); font-weight: 400; }
.painting-programs article > p { margin: 0; font-size: 1rem; line-height: 1.58; }
.painting-programs ul { display: grid; gap: .5rem; margin: 1.1rem 0; padding-left: 1.15rem; color: #50645b; line-height: 1.42; }
.painting-programs article > strong { margin-top: auto; padding-top: 1rem; border-top: 1px solid rgba(42,84,57,.16); color: #315640; font-size: .94rem; line-height: 1.5; }
.painting-approach { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(2rem,4vw,4rem); }
.painting-approach > div:last-child { padding: clamp(1.6rem,3vw,2.5rem); border-radius: 2rem .7rem 2rem .7rem; background: #edf1e4; }
.painting-approach h3 { margin: 0 0 1rem; color: #204f39; font-family: var(--font-display); font-size: clamp(1.7rem,2.2vw,2.35rem); font-weight: 400; }
.painting-approach p { margin: 1rem 0 0; }
.painting-atmosphere { position: relative; min-height: 350px; padding-right: min(42vw,510px); overflow: hidden; }
.painting-atmosphere > p:not(.eyebrow) { max-width: 700px; }
.painting-atmosphere > div { position: absolute; top: 50%; right: 5%; width: min(34vw,390px); height: 260px; transform: translateY(-50%); }
.paint-mark { position: absolute; display: block; border-radius: 48% 52% 45% 55%; filter: saturate(.75); opacity: .78; }
.mark-one { inset: 8% 20% 30% 2%; background: #afbf7c; transform: rotate(-8deg); }
.mark-two { inset: 32% 2% 5% 28%; background: #d89d7a; transform: rotate(9deg); }
.mark-three { inset: 4% 3% 48% 55%; background: #7da4a0; transform: rotate(16deg); }
.art-easel { position: absolute; inset: 2% 8% 3% 8%; z-index: 2; }
.easel-canvas { position: absolute; top: 3%; left: 18%; width: 64%; height: 62%; overflow: hidden; border: 8px solid #c99d6d; border-radius: 3px; background: #f6eedb; box-shadow: 0 8px 20px rgba(47,67,45,.15); transform: rotate(-2deg); }
.easel-canvas b { position: absolute; display: block; border-radius: 50% 44% 56% 48%; opacity: .82; }
.easel-canvas b:nth-child(1) { left: 8%; top: 17%; width: 56%; height: 26%; background: #9fb674; transform: rotate(-8deg); }
.easel-canvas b:nth-child(2) { right: 5%; top: 34%; width: 48%; height: 31%; background: #d89472; transform: rotate(12deg); }
.easel-canvas b:nth-child(3) { left: 19%; bottom: 8%; width: 64%; height: 20%; background: #779b9c; transform: rotate(-3deg); }
.easel-ledge { position: absolute; left: 10%; top: 64%; width: 80%; height: 8%; border-radius: 4px; background: #ad7849; transform: rotate(-1deg); }
.easel-leg { position: absolute; top: 65%; width: 8px; height: 37%; border-radius: 4px; background: #a87346; transform-origin: top; }
.leg-left { left: 35%; transform: rotate(14deg); }
.leg-right { right: 35%; transform: rotate(-14deg); }
.painting-final-cta > div:first-child > p:last-child { max-width: 650px; margin: 1rem 0 0; color: rgba(255,250,240,.76); line-height: 1.6; }

.school-preparation-page { background: #fbf8ef; }
.school-preparation-page main { overflow: hidden; }
.school-preparation-hero { max-width: 1040px; margin: 0 auto; padding: clamp(3.5rem,7vw,6.5rem) clamp(1.5rem,5vw,4rem) clamp(3rem,5vw,4.5rem); text-align: center; }
.school-preparation-hero .direction-back-link { justify-content: center; }
.school-preparation-hero h1 { margin: .7rem 0 1.25rem; color: #204f39; font-family: var(--font-display); font-size: clamp(2.7rem,4.5vw,4.8rem); font-weight: 400; line-height: 1.02; }
.school-preparation-hero > p:not(.eyebrow) { max-width: 820px; margin: 0 auto; color: #50645b; font-size: clamp(1.08rem,1.5vw,1.28rem); line-height: 1.65; }
.school-preparation-hero .primary-button { width: fit-content; margin: 1.7rem auto 0; text-decoration: none; }
.preparation-scenarios { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(1.2rem,2.5vw,2.2rem); max-width: 1440px; margin: 0 auto; padding: 0 clamp(1.5rem,5vw,4rem) clamp(4rem,7vw,6.5rem); }
.preparation-scenario { overflow: hidden; border: 1px solid rgba(42,84,57,.17); border-radius: 2rem 5rem 2rem 2rem; background: rgba(255,253,248,.84); }
.preparation-scenario.laboratory { border-radius: 5rem 2rem 2rem 2rem; background: #edf1e4; }
.preparation-scenario figure { aspect-ratio: 4/3; margin: 0; overflow: hidden; background: #e5eadb; }
.preparation-scenario figure img { display: block; width: 100%; height: 100%; object-fit: contain; }
.preparation-scenario > div { padding: clamp(1.5rem,3vw,2.6rem); }
.preparation-scenario h2, .preparation-path h2, .preparation-choice h2, .preparation-cta h2 { margin: .55rem 0 1.15rem; color: #204f39; font-family: var(--font-display); font-size: clamp(2rem,2.8vw,3rem); font-weight: 400; line-height: 1.08; }
.preparation-scenario > div > p:not(.eyebrow) { margin: .75rem 0 0; color: #50645b; font-size: 1.04rem; line-height: 1.62; }
.scenario-tags { display: flex; flex-wrap: wrap; gap: .6rem; margin: 1.35rem 0; }
.scenario-tags span { padding: .58rem .78rem; border: 1px solid #b7c595; border-radius: 999px; color: #315640; background: rgba(255,255,255,.5); font-size: .9rem; }
.scenario-action { display: inline-flex; align-items: center; gap: .45rem; margin-top: .3rem; padding: .8rem 1rem; border-radius: 999px; color: #fff; background: #294b36; font-weight: 750; text-decoration: none; }
.laboratory .scenario-action { color: #fff; background: #294b36; }
.preparation-path { max-width: 1380px; margin: 0 auto; padding: clamp(3rem,5vw,4.5rem) clamp(1.5rem,5vw,4rem); border-radius: 4rem 1.4rem 4rem 1.4rem; color: #fff; background: #204f39; }
.preparation-path > div:first-child { max-width: 800px; }
.preparation-path .eyebrow, .preparation-path h2 { color: #fff; }
.preparation-path p { max-width: 820px; margin: 0; color: rgba(255,255,255,.76); font-size: 1.06rem; line-height: 1.62; }
.preparation-path-steps { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; margin: 2rem 0 1.5rem; }
.preparation-path-steps > div { min-height: 110px; padding: 1rem; border: 1px solid rgba(255,255,255,.24); border-radius: 1.2rem; }
.preparation-path-steps span { display: block; margin-bottom: 1.3rem; color: #cbd96e; font-weight: 800; }
.preparation-path-steps strong { color: #fff; line-height: 1.35; }
.preparation-choice { max-width: 1280px; margin: 0 auto; padding: clamp(4rem,7vw,6.5rem) clamp(1.5rem,5vw,4rem); }
.preparation-choice header { max-width: 700px; margin-bottom: 2rem; }
.preparation-choice > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.preparation-choice article { padding: clamp(1.5rem,3vw,2.5rem); border-radius: 1.7rem; background: #edf1e4; }
.preparation-choice article:last-child { background: #f0e8d8; }
.preparation-choice h3 { margin: 0 0 1rem; color: #204f39; font-family: var(--font-display); font-size: clamp(1.55rem,2.2vw,2.2rem); font-weight: 400; line-height: 1.15; }
.preparation-choice ul { display: grid; gap: .65rem; margin: 0; padding-left: 1.2rem; color: #50645b; line-height: 1.5; }
.preparation-choice > p { max-width: 820px; margin: 1.5rem 0 0; color: #50645b; font-size: 1.06rem; line-height: 1.6; }
.preparation-cta { display: grid; grid-template-columns: minmax(0,1fr) minmax(390px,.7fr); align-items: center; gap: 3rem; max-width: 1320px; margin: 0 auto 5rem; padding: clamp(2.5rem,5vw,4.5rem); border-radius: 2rem 5rem 2rem 2rem; background: #e9efdd; }
.preparation-cta > div:first-child > p:last-child { max-width: 700px; margin: 0; color: #50645b; line-height: 1.6; }
.preparation-cta > div:last-child { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: .9rem 1.2rem; }
.preparation-cta .primary-button { color: #fff; text-decoration: none; }
.preparation-cta > div:last-child > a:not(.primary-button) { color: #315640; font-weight: 750; text-decoration: none; }
.painting-works { text-align: center; }
.painting-works > p:not(.eyebrow) { max-width: 700px; margin: 1rem auto 2rem; }
.painting-works > div { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; max-width: 920px; margin: 0 auto; }
.work-swatch { display: block; aspect-ratio: 4/5; border-radius: 1.5rem .5rem 1.5rem .5rem; box-shadow: inset 0 0 0 10px rgba(255,255,255,.5); }
.swatch-one { background: radial-gradient(circle at 35% 38%,#d8a341 0 9%,transparent 10%),linear-gradient(145deg,#dce7bf 0 45%,#729a87 46% 65%,#f0c975 66%); }
.swatch-two { background: repeating-radial-gradient(ellipse at 55% 40%,#e3a68d 0 10%,#f5dd9a 11% 20%,#7e9b6a 21% 29%); }
.swatch-three { background: linear-gradient(25deg,#7796a0 0 28%,#efe0b0 29% 48%,#c78066 49% 70%,#a8bd79 71%); }
.swatch-four { background: radial-gradient(circle at 30% 70%,#758f68 0 13%,transparent 14%),radial-gradient(circle at 65% 35%,#d9876e 0 18%,transparent 19%),#e8d6a0; }
.painting-page .direction-cta { margin-bottom: 4rem; padding: clamp(2.2rem,4vw,3.5rem); background: #204f39; }
.painting-page .direction-cta .eyebrow { color: #cbd89f; }
.painting-page .direction-cta h2 { color: #fffaf0; }
.painting-page .direction-cta > div:last-child { max-width: 590px; }
.painting-page .direction-cta .primary-button { flex: 0 0 auto; color: #fff; background: #879823; text-decoration: none; }
.painting-page .direction-cta > div:last-child > a:not(.button):not(.primary-button) { color: #fffaf0; }

.club-development-direction h3 {
  margin: 0 0 1rem;
  color: #204f39;
  font-family: var(--font-display);
  font-size: clamp(1.7rem, 2.3vw, 2.45rem);
  font-weight: 400;
  line-height: 1.12;
}

.club-development-direction p {
  margin: 0;
  color: #50645b;
  font-size: 1.06rem;
  line-height: 1.65;
}
.club-development-direction-copy { white-space: pre-line; }

.club-development-group-image {
  grid-column: 2;
  aspect-ratio: 16 / 8;
  margin: 0 0 0.5rem;
  overflow: hidden;
  border-radius: 2rem 6rem 2rem 6rem;
}

.club-development-group.has-image .club-development-directions {
  grid-column: 2;
}

.club-development-cta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3rem;
  align-items: center;
  max-width: 1280px;
  margin: 0 auto clamp(3rem, 6vw, 6rem);
  padding: clamp(2rem, 3.5vw, 3.2rem);
  border: 1px solid rgba(158,128,79,.2);
  border-radius: 2rem 5rem 2rem 2rem;
  color: #315640;
  background: linear-gradient(135deg,#f6efe2 0%,#f2e8d7 100%);
}

.club-development-cta h2 {
  max-width: 760px;
  margin: 0.45rem 0 .8rem;
  color: #204f39;
  font-size: clamp(2rem,3vw,3.2rem);
  line-height: 1.08;
}

.club-development-cta > div > p:last-child {
  max-width: 720px;
  margin: 0;
  color: #586961;
  font-size: 1rem;
  line-height: 1.55;
}

.club-development-cta-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.8rem;
  max-width: 470px;
}

.club-development-cta-actions .button {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  min-height: 3.25rem;
  padding: 0.85rem 1.3rem;
  border-radius: 999px;
  text-decoration: none;
  white-space: nowrap;
}
.club-development-cta-actions .button-accent { color: #fff; background: #294b36; }
.club-development-cta-secondary { display: inline-flex; align-items: center; gap: .35rem; padding: .45rem .2rem; color: #315640; font-size: .94rem; font-weight: 750; text-decoration: none; }
.club-development-cta-secondary:hover { color: #718022; }

.button-light {
  color: #24553b;
  background: #fffaf0;
}

.button-outline-light {
  color: #fffaf0;
  border: 1px solid rgba(255, 255, 255, 0.55);
  background: transparent;
}

.button-accent {
  color: #193f2b;
  background: #dfe98d;
}

@media (max-width: 900px) {
  .club-development-hero,
  .club-development-group,
  .club-development-group.has-image,
  .club-development-cta {
    grid-template-columns: 1fr;
  }

  .club-development-hero {
    background: linear-gradient(165deg, #fbf8f0 0 58%, #e8efdc 58% 100%);
  }

  .club-development-group-image,
  .club-development-group.has-image .club-development-directions {
    grid-column: 1;
  }

  .club-development-directions.count-3 {
    grid-template-columns: 1fr;
  }

  .club-development-cta {
    margin-inline: 1.5rem;
  }

  .club-development-cta-actions {
    justify-content: flex-start;
    max-width: none;
  }
}

@media (max-width: 640px) {
  .club-development-hero {
    gap: 2rem;
    padding: 3.5rem 1.2rem 4rem;
  }

  .club-development-hero-copy h1 {
    font-size: clamp(2.7rem, 13vw, 4rem);
  }

  .club-development-hero-image {
    aspect-ratio: 4 / 3;
    border-radius: 3.5rem 1.2rem 3.5rem 1.2rem;
  }

  .club-development-groups {
    padding: 0 1.2rem 4rem;
  }

  .club-development-group,
  .club-development-group.has-image {
    gap: 1.8rem;
    padding: 3.5rem 0;
  }

  .club-development-directions {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .club-development-group:first-child .club-development-directions,
  .club-development-group.logic-technology .club-development-directions,
  .club-development-group.school-speech .club-development-directions {
    grid-template-columns: 1fr;
  }
  .school-speech-visual { grid-template-columns: 1fr; gap: .55rem; margin-top: -.6rem; }
  .school-speech-visual > div { width: fit-content; }
  .school-speech-visual > i { width: 2px; height: 20px; margin-left: 1.6rem; background: linear-gradient(#a8b779,#d1bd91); }
  .club-development-group.mama-baby-section { grid-template-columns: 1fr; }
  .mama-baby-section .club-development-group-heading,
  .mama-baby-section .club-development-group-image,
  .club-development-group.mama-baby-section .club-development-directions { grid-column: 1; }
  .mama-baby-section .club-development-group-image { order: 2; }
  .club-development-group.mama-baby-section .club-development-directions { order: 3; }
  .club-development-benefits { grid-template-columns: 1fr; }
  .mama-baby-actions .primary-button { width: 100%; justify-content: center; text-align: center; }
  .club-directions-update { grid-template-columns: 54px 1fr; gap: 1rem; margin: 0 1.2rem 2rem; padding: 1.35rem; border-radius: 1.4rem 2.8rem 1.4rem 1.4rem; }
  .club-directions-update-mark { width: 52px; height: 52px; align-self: start; }
  .club-directions-update-mark::before { inset: 11px; }
  .club-directions-update-mark span:nth-child(1) { top: 1px; left: 20px; }
  .club-directions-update-mark span:nth-child(2) { right: 2px; bottom: 10px; }
  .club-directions-update-mark span:nth-child(3) { left: 3px; bottom: 8px; }
  .club-directions-update > a { grid-column: 1 / -1; width: 100%; white-space: normal; }

  .club-direction-hero, .club-direction-intro, .direction-format, .direction-skills, .direction-cta { grid-template-columns: 1fr; }
  .club-direction-hero { gap: 2rem; padding-top: 3rem; }
  .club-direction-hero-copy h1 { font-size: clamp(2.7rem,12vw,4.3rem); }
  .club-direction-hero figure { border-radius: 3rem 1.2rem 3rem 1.2rem; }
  .direction-project-grid, .direction-project-grid.count-3 { grid-template-columns: 1fr 1fr; }
  .direction-route { border-radius: 2.5rem 1rem 2.5rem 1rem; }
  .direction-route-steps, .direction-route-steps.compact { grid-template-columns: 1fr 1fr; }
  .direction-cta { margin: 0 1.2rem 4rem; }
  .direction-cta > div:last-child { justify-content: flex-start; }
  .programming-page .club-direction-hero-copy h1 { font-size: clamp(2.15rem,8.5vw,3.1rem); }
  .programming-page .club-direction-hero { grid-template-columns: 1fr; }
  .lego-page .club-direction-hero { grid-template-columns: 1fr; }
  .lego-page .club-direction-hero-copy h1 { font-size: clamp(2.15rem,8.5vw,3.1rem); }
  .painting-page .club-direction-hero { grid-template-columns: 1fr; }
  .painting-page .club-direction-hero-copy h1 { font-size: clamp(2.15rem,8.5vw,3.1rem); }
  .painting-principle, .painting-results { grid-template-columns: 1fr; }
  .painting-technique-grid, .painting-works > div { grid-template-columns: 1fr 1fr; }
  .painting-programs > div, .painting-approach { grid-template-columns: 1fr; }
  .art-tools { position: relative; top: auto; right: auto; width: 160px; height: 90px; margin: -1rem 0 1.5rem auto; }
  .painting-atmosphere { min-height: auto; padding-right: 1.5rem; padding-bottom: 15rem; }
  .painting-atmosphere > div { top: auto; right: 8%; bottom: 1.5rem; width: 84%; height: 190px; transform: none; }
  .preparation-scenarios, .preparation-choice > div, .preparation-cta { grid-template-columns: 1fr; }
  .preparation-scenario, .preparation-scenario.laboratory { border-radius: 2.5rem 1rem 2.5rem 1rem; }
  .preparation-path { border-radius: 2.5rem 1rem 2.5rem 1rem; }
  .preparation-path-steps { grid-template-columns: 1fr 1fr; }
  .preparation-cta { margin: 0 1.2rem 4rem; }
  .preparation-cta > div:last-child { justify-content: flex-start; }
  .programming-path-heading { display: block; }
  .programming-path-heading h3 { margin-top: .6rem; text-align: left; }
  .programming-page .direction-project-grid { grid-template-columns: 1fr 1fr; }

  .club-development-group-image {
    aspect-ratio: 4 / 3;
    border-radius: 1.3rem 3.5rem 1.3rem 3.5rem;
  }

  .club-development-cta {
    gap: 2rem;
    margin: 0 1.2rem 4rem;
    padding: 1.8rem 1.35rem;
    border-radius: 1.7rem 3.2rem 1.7rem 1.7rem;
  }

  .club-development-cta-actions,
  .club-development-cta-actions .button {
    width: 100%;
  }

  .club-development-cta-actions .button {
    justify-content: center;
    text-align: center;
  }
  .club-development-cta-secondary { width: 100%; padding: .45rem 0; }
}

/* Schedule page */
.schedule-page { background: #f7f3e9; color: #214f39; min-height: 100vh; }
.schedule-page main { padding-top: 0; }
.schedule-hero { width: min(1180px, calc(100% - 48px)); margin: 0 auto; padding: 44px 0 50px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 64px; }
.schedule-hero h1 { margin: 12px 0 22px; font-family: var(--font-display); font-size: clamp(46px, 5vw, 70px); font-weight: 400; line-height: 1; }
.schedule-hero > div > p:last-child { max-width: 760px; margin-bottom: 0; color: #52665d; font-size: 19px; line-height: 1.6; }
.schedule-hero-button { white-space: nowrap; }
.schedule-details { padding: 68px max(24px, calc((100% - 1180px) / 2)) 76px; background: #edf1e5; }
.schedule-details-heading { display: flex; align-items: end; justify-content: space-between; gap: 32px; margin-bottom: 32px; }
.schedule-details-heading p { margin-bottom: 8px; }
.schedule-details h2, .schedule-note h2, .schedule-cta h2 { margin: 0; font-family: var(--font-display); font-weight: 400; line-height: 1.08; }
.schedule-details h2 { font-size: clamp(36px, 3.5vw, 52px); }
.schedule-cta { width: min(1180px, calc(100% - 48px)); margin: 0 auto 72px; padding: 38px; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 54px; border: 1px solid rgba(42, 83, 53, .14); border-radius: 30px 30px 66px 30px; background: #e7eddc; }
.schedule-cta h2 { max-width: 630px; margin: 8px 0 12px; font-size: clamp(34px, 3.6vw, 50px); }
.schedule-cta div > p:last-child { margin-bottom: 0; color: #52665d; font-size: 17px; }
.schedule-cta-actions { display: grid; grid-template-columns: 1fr; gap: 10px; align-items: center; }
.schedule-cta-actions .primary-button { justify-content: center; }
.schedule-cta-actions > a:not(.primary-button) { display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 9px 4px; color: #315943; font-weight: 700; text-decoration: none; }
.schedule-details-heading > div { min-width: 0; }
.schedule-details-heading > p { max-width: 360px; margin: 0; color: #5a6b61; line-height: 1.5; text-align: right; }
.kindergarten-season-note { margin-top: 22px; padding: 18px 21px; display: grid; grid-template-columns: 190px minmax(0,1fr); gap: 24px; border-left: 3px solid #9baa52; border-radius: 0 18px 18px 0; background: rgba(255,253,247,.72); }
.kindergarten-season-note strong { color: #315943; }
.kindergarten-season-note p { margin: 0; color: #586960; line-height: 1.55; }
.kindergarten-after-hours { width: min(1180px,calc(100% - 48px)); margin: 48px auto; padding: 30px 36px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 42px; border: 1px solid rgba(42,83,53,.15); border-radius: 28px 52px 28px 28px; background: #f0e7da; }
.kindergarten-after-hours h2 { margin: 7px 0 11px; font-family: var(--font-display); font-size: clamp(29px,3vw,42px); font-weight: 400; line-height: 1.1; }
.kindergarten-after-hours div > p:last-child { margin: 0; color: #56665d; font-size: 16px; line-height: 1.55; }
.kindergarten-after-hours > a { padding: 14px 20px; display: inline-flex; align-items: center; gap: 9px; border: 1px solid #84952c; border-radius: 999px; background: #fffdf7; color: #315943; font-weight: 700; text-decoration: none; white-space: nowrap; }

/* Schedule infographic redesign */
.schedule-board-section { background: #f6f7ef; }
.schedule-infographic { display: grid; grid-template-columns: minmax(300px,.7fr) minmax(0,1.55fr); gap: 22px; align-items: start; }
.schedule-rhythm-panel,.schedule-week-panel { border: 1px solid rgba(42,83,53,.12); border-radius: 30px; background: rgba(255,253,248,.94); box-shadow: 0 18px 42px rgba(45,76,52,.055); }
.schedule-rhythm-panel { padding: 28px 24px 25px; }
.schedule-week-panel { padding: 28px; }
.schedule-rhythm-panel > header,.schedule-week-panel > header { margin-bottom: 20px; }
.schedule-rhythm-panel h3,.schedule-week-panel h3 { margin: 5px 0 0; font-family: var(--font-display); font-size: clamp(32px,3vw,44px); font-weight: 400; line-height: 1.05; }
.schedule-rhythm-panel ol { position: relative; margin: 0; padding: 0; list-style: none; }
.schedule-rhythm-panel ol::before { content: ""; position: absolute; top: 28px; bottom: 28px; left: 67px; width: 1px; background: #b7ca87; }
.schedule-rhythm-panel li { position: relative; min-height: 72px; padding: 8px 0; display: grid; grid-template-columns: 56px 48px minmax(0,1fr); gap: 10px; align-items: center; }
.schedule-rhythm-panel time { color: #78952e; font-size: 13px; font-weight: 800; line-height: 1.25; }
.schedule-icon { z-index: 1; width: 46px; height: 46px; display: grid; place-items: center; border: 5px solid #fffdf8; border-radius: 50%; color: #657f24; background: #e5edcf; }
.schedule-icon.is-lilac { color: #7857a6; background: #eee7f6; }
.schedule-icon.is-blue { color: #3a8094; background: #deeff1; }
.schedule-icon.is-peach { color: #bd674e; background: #fae2d8; }
.schedule-icon.is-yellow { color: #a87826; background: #f7ecc7; }
.schedule-rhythm-panel li div { min-width: 0; padding: 12px 13px; border: 1px solid rgba(42,83,53,.09); border-radius: 16px; background: #fff; }
.schedule-rhythm-panel strong,.schedule-rhythm-panel small { display: block; }
.schedule-rhythm-panel strong { color: #294f3b; font-size: 14px; line-height: 1.3; }
.schedule-rhythm-panel small { margin-top: 4px; color: #68776f; font-size: 11px; line-height: 1.4; }
.schedule-shared-start { padding: 17px 18px; display: grid; grid-template-columns: auto auto minmax(0,1fr); gap: 7px 13px; align-items: center; border: 1px solid rgba(116,146,43,.28); border-radius: 20px; background: #edf2df; }
.schedule-shared-days { padding: 7px 10px; border-radius: 999px; background: #7f9e39; color: #fff; font-size: 11px; font-weight: 800; letter-spacing: .04em; }
.schedule-shared-start time { color: #6f872b; font-size: 13px; font-weight: 800; white-space: nowrap; }
.schedule-shared-start > div { min-width: 0; display: flex; align-items: center; gap: 8px; color: #315943; }
.schedule-shared-start > div strong { font-size: 14px; line-height: 1.3; }
.schedule-shared-start > small { grid-column: 3; color: #627169; font-size: 11px; }
.schedule-main-label { margin: 20px 0 12px; color: #6f812f; font-size: 12px; font-weight: 800; letter-spacing: .035em; text-transform: uppercase; }
.schedule-week-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.schedule-week-card { overflow: hidden; border: 1px solid rgba(42,83,53,.11); border-radius: 20px; background: #fff; }
.schedule-week-card.is-friday { grid-column: 1 / -1; }
.schedule-week-card > header { min-height: 54px; padding: 11px 14px; display: flex; align-items: center; gap: 10px; background: #e7edd9; }
.schedule-week-card.is-lilac > header { background: #eee8f3; }
.schedule-week-card.is-blue > header { background: #e2eef0; }
.schedule-week-card.is-peach > header { background: #f6e7df; }
.schedule-week-card.is-yellow > header { background: #f5edcf; }
.schedule-week-card > header > span { width: 36px; height: 30px; display: grid; place-items: center; border-radius: 999px; background: rgba(255,255,255,.78); color: #657c27; font-size: 11px; font-weight: 800; }
.schedule-week-card h4 { margin: 0; color: #294f3b; font-size: 17px; }
.schedule-week-card > header small { margin-left: auto; color: #82662d; font-size: 10px; font-weight: 800; text-transform: uppercase; }
.schedule-week-card > div { padding: 5px 14px 10px; }
.schedule-week-card section { position: relative; padding: 11px 0; display: grid; grid-template-columns: 78px 32px minmax(0,1fr); gap: 7px; align-items: start; border-bottom: 1px solid rgba(42,83,53,.09); }
.schedule-week-card section:last-child { border-bottom: 0; }
.schedule-week-card section time { padding-top: 5px; color: #78912f; font-size: 11px; font-weight: 800; white-space: nowrap; }
.schedule-activity-icon { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; color: #65802d; background: #eff3e6; }
.schedule-week-card section div strong,.schedule-week-card section div small { display: block; }
.schedule-week-card section div strong { color: #345345; font-size: 13px; line-height: 1.35; }
.schedule-week-card section div small { margin-top: 3px; color: #6b7971; font-size: 10px; line-height: 1.35; }
.schedule-week-card.is-friday > div { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
.schedule-week-card.is-friday section { grid-template-columns: 78px 32px minmax(0,1fr); }
.schedule-week-card.is-friday section:nth-child(3),.schedule-week-card.is-friday section:nth-child(4) { border-bottom: 0; }
@media (max-width: 980px) {
  .schedule-infographic { grid-template-columns: 1fr; }
  .schedule-rhythm-panel ol { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
  .schedule-rhythm-panel ol::before { display: none; }
  .schedule-rhythm-panel li { grid-template-columns: 58px 46px minmax(0,1fr); }
  .schedule-details-heading { align-items: start; }
  .schedule-details-heading > p { max-width: 300px; text-align: left; }
  .kindergarten-after-hours { grid-template-columns: 1fr; gap: 22px; }
  .kindergarten-after-hours > a { justify-self: start; }
}
@media (max-width: 760px) {
  .schedule-rhythm-panel,.schedule-week-panel { padding: 21px 16px; border-radius: 24px; }
  .schedule-rhythm-panel ol { grid-template-columns: 1fr; }
  .schedule-rhythm-panel li { min-height: 68px; grid-template-columns: 62px 44px minmax(0,1fr); gap: 7px; }
  .schedule-rhythm-panel li div { padding: 10px 11px; }
  .schedule-shared-start { grid-template-columns: auto 1fr; }
  .schedule-shared-start > div,.schedule-shared-start > small { grid-column: 1 / -1; }
  .schedule-shared-start > div { flex-wrap: wrap; }
  .schedule-week-cards { grid-template-columns: 1fr; }
  .schedule-week-card.is-friday { grid-column: auto; }
  .schedule-week-card.is-friday > div { display: block; }
  .schedule-week-card.is-friday section { border-bottom: 1px solid rgba(42,83,53,.09); }
  .schedule-week-card.is-friday section:last-child { border-bottom: 0; }
  .schedule-week-card section { grid-template-columns: 82px 32px minmax(0,1fr); }
  .schedule-page main { padding-top: 0; }
  .schedule-hero { width: min(100% - 32px, 580px); padding: 26px 0 38px; grid-template-columns: 1fr; align-items: start; gap: 24px; }
  .schedule-hero h1 { font-size: clamp(42px, 12vw, 56px); }
  .schedule-hero > div > p:last-child { font-size: 18px; }
  .schedule-hero-button { justify-self: stretch; justify-content: center; }
  .schedule-details { padding: 48px 16px 54px; }
  .schedule-details-heading { display: block; margin-bottom: 26px; }
  .schedule-details-heading > p { margin-top: 12px; }
  .schedule-details h2 { font-size: 38px; }
  .schedule-note, .schedule-cta { width: calc(100% - 32px); grid-template-columns: 1fr; gap: 24px; padding: 26px 22px; border-radius: 26px 42px 26px 26px; }
  .schedule-cta { margin-bottom: 52px; }
  .schedule-cta h2 { font-size: 36px; }
  .schedule-cta-actions { grid-template-columns: 1fr; }
  .schedule-cta-actions .primary-button { grid-column: auto; text-align: center; }
  .kindergarten-season-note { padding: 18px; grid-template-columns: 1fr; gap: 7px; }
  .kindergarten-after-hours { width: calc(100% - 32px); margin: 32px auto; padding: 25px 21px; border-radius: 25px 42px 25px 25px; }
  .kindergarten-after-hours h2 { font-size: 30px; }
  .kindergarten-after-hours > a { width: 100%; justify-content: center; text-align: center; white-space: normal; }
}

/* Weekend club page */
.weekend-club-page { background: #f7f3e9; }
.weekend-club-page main { padding-top: 0; }
.weekend-club-hero { width: min(1180px,calc(100% - 48px)); margin: 0 auto; padding: 42px 0 62px; display: grid; grid-template-columns: minmax(0,1.25fr) minmax(300px,.55fr); gap: 72px; align-items: end; }
.weekend-club-hero h1 { max-width: 820px; margin: 12px 0 22px; font-family: var(--font-display); font-size: clamp(2.8rem,4.7vw,4.4rem); font-weight: 400; line-height: 1.01; }
.weekend-club-hero > div > p:not(.eyebrow) { max-width: 800px; margin: 0; color: #506158; font-size: 19px; line-height: 1.6; }
.weekend-club-hero .primary-button { margin-top: 28px; }
.weekend-club-hero > aside { display: grid; gap: 12px; }
.weekend-club-hero > aside div { padding: 20px 22px; display: flex; justify-content: space-between; align-items: baseline; gap: 18px; border: 1px solid rgba(42,83,53,.14); border-radius: 20px; background: #edf1df; }
.weekend-club-hero > aside div:last-child { background: #f1e7da; }
.weekend-club-hero > aside span { color: #637168; font-size: 14px; }
.weekend-club-hero > aside strong { color: #315943; font-family: var(--font-display); font-size: 24px; font-weight: 400; white-space: nowrap; }
.weekend-shifts { padding: 68px max(24px,calc((100% - 1180px)/2)) 76px; background: #eaf0e1; }
.weekend-shifts > header { max-width: 850px; margin-bottom: 34px; }
.weekend-shifts h2,.weekend-flow h2,.weekend-confidence h2,.weekend-family-time h2,.weekend-club-cta h2 { margin: 8px 0 15px; font-family: var(--font-display); font-size: clamp(2.35rem,3.7vw,3.4rem); font-weight: 400; line-height: 1.07; }
.weekend-shifts > header > p:last-child,.weekend-flow > header > p:last-child { margin: 0; color: #52635a; font-size: 17px; line-height: 1.58; }
.weekend-shift-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.weekend-shift-card { overflow: hidden; display: flex; flex-direction: column; border: 1px solid rgba(42,83,53,.14); border-radius: 30px 30px 58px 30px; background: rgba(255,253,247,.92); }
.weekend-shift-card.second-shift { border-radius: 30px 58px 30px 30px; background: #fbf5eb; }
.weekend-shift-card figure { margin: 0; overflow: hidden; }
/* height: auto добавлен в задаче 13, в прототипе его не было (тот же
   паттерн, что и .kindergarten-hero-photo img/.kindergarten-group-photo img
   чуть выше по этому файлу, зафиксированный в задаче 6, — см. комментарий
   там). Правило само по себе не меняется (тот же aspect-ratio/object-fit),
   но без явного height: auto высота <img> берётся из HTML-атрибута height,
   который <Picture> (задача 4) проставляет всегда, — а это пиксельный
   размер исходника (1448×1086), а не итоговая ширина карточки. Без auto
   аспект перестаёт работать: картинка растягивается до 1086px высоты
   вместо ожидаемых ~433px (578px ширины карточки × 3/4), и секция
   weekend-shifts становится на ~600px выше, чем в прототипе, где <img>
   писали без атрибутов и высота и так была auto. */
.weekend-shift-card img { width: 100%; height: auto; aspect-ratio: 4/3; object-fit: cover; object-position: center; }
.weekend-shift-card > div { flex: 1; padding: 27px 29px 31px; display: flex; flex-direction: column; }
.weekend-shift-time { margin: 0 0 8px; color: #758424; font-size: 14px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.weekend-shift-card h3 { margin: 0; font-family: var(--font-display); font-size: 32px; font-weight: 400; }
.weekend-teacher { margin: 7px 0 18px; display: block; color: #506158; font-size: 15px; font-weight: 700; }
.weekend-shift-card > div > p:not(.weekend-shift-time) { color: #52635a; font-size: 16px; line-height: 1.58; }
.weekend-shift-card aside { margin: 20px 0; padding: 17px 18px; border-left: 3px solid #8a9a2d; border-radius: 0 16px 16px 0; background: #eef1df; }
.weekend-shift-card aside strong,.weekend-shift-card aside span { display: block; }
.weekend-shift-card aside strong { color: #315943; }
.weekend-shift-card aside span { margin-top: 6px; color: #5c6b62; font-size: 14px; line-height: 1.5; }
.weekend-shift-card .primary-button { margin-top: auto; align-self: flex-start; }
.weekend-shift-choice { margin-top: 24px; padding: 29px 31px; border: 1px solid rgba(42,83,53,.14); border-radius: 26px 26px 50px 26px; background: rgba(255,253,247,.76); }
.weekend-shift-choice-heading h3 { margin: 7px 0 24px; font-family: var(--font-display); font-size: clamp(2rem,3vw,2.7rem); font-weight: 400; line-height: 1.08; }
.weekend-shift-choice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.weekend-shift-choice-grid > div { padding: 20px 22px; border-radius: 19px; background: #edf1df; }
.weekend-shift-choice-grid > div:last-child { background: #f1e7da; }
.weekend-shift-choice-grid strong { display: block; margin-bottom: 8px; color: #315943; font-size: 18px; }
.weekend-shift-choice-grid p,.weekend-shift-choice-footer p { margin: 0; color: #56655c; line-height: 1.58; }
.weekend-shift-choice-footer { margin-top: 19px; padding-top: 19px; display: flex; justify-content: space-between; align-items: center; gap: 28px; border-top: 1px solid rgba(42,83,53,.13); }
.weekend-shift-choice-footer p { max-width: 760px; }
.weekend-shift-choice-footer .primary-button { flex: 0 0 auto; }
.weekend-flow { width: min(1180px,calc(100% - 48px)); margin: 0 auto; padding: 72px 0; }
.weekend-flow > header { max-width: 820px; }
.weekend-flow ol { margin: 36px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; list-style: none; }
.weekend-flow li { min-height: 175px; padding: 22px; display: grid; grid-template-columns: 38px 1fr; gap: 14px; border: 1px solid rgba(42,83,53,.13); border-radius: 22px; background: #fffdf7; }
.weekend-flow li > span { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: #dfe8ce; color: #60761e; font-size: 12px; font-weight: 700; }
.weekend-flow h3 { margin: 5px 0 9px; font-family: var(--font-display); font-size: 21px; font-weight: 400; line-height: 1.2; }
.weekend-flow li p { margin: 0; color: #5c6b62; font-size: 14px; line-height: 1.52; }
.weekend-flow > aside { margin-top: 18px; padding: 20px 24px; display: flex; gap: 22px; align-items: baseline; border-radius: 18px; background: #f2e8da; }
.weekend-flow > aside strong { color: #315943; white-space: nowrap; }
.weekend-flow > aside p { margin: 0; color: #56655c; line-height: 1.55; }
.weekend-confidence { padding: 68px max(24px,calc((100% - 1180px)/2)); display: grid; grid-template-columns: 1.1fr .9fr; gap: 60px; align-items: center; background: #e3ebd9; }
.weekend-confidence > div > p:last-child,.weekend-family-time > div > p:last-child { margin: 0; color: #52635a; font-size: 17px; line-height: 1.62; }
.weekend-confidence ul { margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; list-style: none; }
.weekend-confidence li { min-height: 66px; padding: 14px 16px; display: flex; align-items: center; border: 1px solid rgba(42,83,53,.13); border-radius: 17px; background: rgba(255,253,247,.68); color: #345a45; font-weight: 600; }
.weekend-family-time { width: min(1180px,calc(100% - 48px)); margin: 0 auto; padding: 70px 0; display: grid; grid-template-columns: 1.05fr .95fr; gap: 58px; align-items: center; }
.weekend-family-time > aside { padding: 27px 29px; border: 1px solid rgba(42,83,53,.14); border-radius: 24px 46px 24px 24px; background: #f0e6d9; }
.weekend-family-time h3 { margin: 0 0 11px; font-family: var(--font-display); font-size: 26px; font-weight: 400; }
.weekend-family-time aside p { margin: 0; color: #58665e; line-height: 1.58; }
.weekend-club-cta { width: min(1180px,calc(100% - 48px)); margin: 0 auto 72px; padding: 36px 39px; display: grid; grid-template-columns: 1fr auto; gap: 48px; align-items: center; border: 1px solid rgba(42,83,53,.14); border-radius: 30px 30px 62px 30px; background: #e4ead8; }
.weekend-club-cta h2 { margin-bottom: 10px; }
.weekend-club-cta > div > p:last-child { max-width: 740px; margin: 0; color: #53635a; line-height: 1.58; }
.contact-trial-choice { grid-column: 1/-1; padding: 15px 16px; display: flex !important; flex-direction: row !important; align-items: flex-start; gap: 10px !important; border: 1px solid rgba(122,135,63,.28); border-radius: 14px; background: #eef1df; }
/* В статике чекбокс пробной смены скрыт атрибутом hidden (его снимает
   остров forms.js при ?trial=1), а display: flex !important строкой выше —
   наследие прототипа, где элемент рисовал React только при ?trial=1 и
   правило боролось с базовым flex-direction полей формы. !important
   перебивает UA-стиль hidden → без этой строки чекбокс был бы виден всем. */
.contact-trial-choice[hidden] { display: none !important; }
.contact-trial-choice input { width: auto !important; min-height: 0 !important; margin-top: 3px; accent-color: var(--olive); }
.contact-trial-choice span { font-weight: 600; line-height: 1.45; }

@media (max-width: 760px) {
  .weekend-club-page main { padding-top: 0; }
  .weekend-club-hero { width: calc(100% - 32px); padding: 30px 0 42px; grid-template-columns: 1fr; gap: 28px; }
  .weekend-club-hero h1 { font-size: 2.55rem; }
  .weekend-club-hero > div > p:not(.eyebrow) { font-size: 17px; }
  .weekend-club-hero .primary-button { width: 100%; justify-content: center; text-align: center; }
  .weekend-shifts { padding: 48px 16px 54px; }
  .weekend-shifts h2,.weekend-flow h2,.weekend-confidence h2,.weekend-family-time h2,.weekend-club-cta h2 { font-size: 2.2rem; }
  .weekend-shift-grid { grid-template-columns: 1fr; gap: 16px; }
  .weekend-shift-card,.weekend-shift-card.second-shift { border-radius: 24px 24px 42px 24px; }
  .weekend-shift-card > div { padding: 23px 20px 26px; }
  .weekend-shift-card h3 { font-size: 29px; }
  .weekend-shift-card .primary-button { width: 100%; justify-content: center; text-align: center; }
  .weekend-shift-choice { margin-top: 16px; padding: 24px 19px; border-radius: 24px 24px 42px 24px; }
  .weekend-shift-choice-heading h3 { margin-bottom: 19px; font-size: 2rem; }
  .weekend-shift-choice-grid { grid-template-columns: 1fr; gap: 10px; }
  .weekend-shift-choice-grid > div { padding: 18px 17px; }
  .weekend-shift-choice-footer { align-items: stretch; flex-direction: column; gap: 18px; }
  .weekend-shift-choice-footer .primary-button { width: 100%; justify-content: center; text-align: center; }
  .weekend-flow { width: calc(100% - 32px); padding: 52px 0; }
  .weekend-flow ol { margin-top: 28px; grid-template-columns: 1fr; gap: 10px; }
  .weekend-flow li { min-height: 0; padding: 19px 17px; }
  .weekend-flow > aside { padding: 19px; align-items: flex-start; flex-direction: column; gap: 7px; }
  .weekend-confidence { padding: 50px 16px 54px; grid-template-columns: 1fr; gap: 30px; }
  .weekend-confidence ul { grid-template-columns: 1fr; gap: 8px; }
  .weekend-confidence li { min-height: 54px; }
  .weekend-family-time { width: calc(100% - 32px); padding: 52px 0; grid-template-columns: 1fr; gap: 28px; }
  .weekend-family-time > aside { padding: 23px 20px; }
  .weekend-club-cta { width: calc(100% - 32px); margin-bottom: 52px; padding: 27px 21px; grid-template-columns: 1fr; gap: 23px; border-radius: 26px 26px 44px 26px; }
  .weekend-club-cta .primary-button { width: 100%; justify-content: center; }
}

.approval-shell { min-height: 100vh; padding-bottom: 58px; }
.approval-header { min-height: 78px; padding: 17px 4vw; display: flex; align-items: center; justify-content: space-between; gap: 28px; position: sticky; top: 0; z-index: 20; background: var(--forest); color: white; box-shadow: 0 8px 28px rgba(32,55,40,.15); }
.approval-header > div { display: flex; align-items: center; gap: 19px; }
.approval-header .brand-word { color: white; }
.approval-header strong { font-size: 15px; font-weight: 500; }
.approval-header p { margin: 0; color: rgba(255,255,255,.72); font-size: 14px; }
.preview-labels { max-width: 1560px; margin: 31px auto 10px; padding: 0 28px; display: grid; grid-template-columns: minmax(0,1fr) 310px; gap: 30px; color: #69766f; font-size: .65rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.preview-stage { max-width: 1560px; margin: 0 auto; padding: 0 28px; display: grid; grid-template-columns: minmax(0,1fr) 310px; gap: 30px; align-items: start; }
.desktop-frame { overflow: hidden; border-radius: 20px; background: var(--milk); box-shadow: 0 24px 70px rgba(40,52,44,.17); }
.phone-frame { height: 790px; padding: 11px; overflow: hidden; position: sticky; top: 103px; border-radius: 39px; background: #17231c; box-shadow: 0 24px 70px rgba(40,52,44,.22); }
.phone-speaker { width: 76px; height: 18px; position: absolute; top: 10px; left: calc(50% - 38px); z-index: 5; border-radius: 0 0 11px 11px; background: #17231c; }

.desktop-site { min-width: 0; background: var(--milk); }
.site-header { height: 86px; padding: 0 4.6%; display: grid; grid-template-columns: 116px 1fr auto auto; align-items: center; gap: 24px; position: sticky; top: 0; z-index: 30; border-bottom: 1px solid rgba(41,75,54,.16); background: rgba(247,242,232,.97); box-shadow: 0 7px 24px rgba(35,60,42,.06); backdrop-filter: blur(12px); }
.brand-lockup { display: inline-flex; align-items: center; color: var(--forest); }
.brand-symbol { width: 80px; height: 78px; display: block; flex: 0 0 auto; }
.brand-symbol img { width: 100%; height: 100%; object-fit: contain; }
.site-header nav { display: flex; justify-content: center; gap: clamp(20px,2.15vw,34px); white-space: nowrap; }
.site-header nav a { color: #294b36; font-size: 16px; font-weight: 600; text-decoration: none; }
.site-header nav a:hover { color: var(--olive); }
.header-button { min-height: 46px; padding: 0 20px; display: inline-flex; align-items: center; border-radius: 999px; background: var(--olive); color: white; font-size: 16px; font-weight: 600; text-decoration: none; }
.menu-button { width: 42px; height: 42px; display: none; place-items: center; border: 1px solid rgba(41,75,54,.2); border-radius: 50%; background: rgba(255,253,248,.75); }
.site-header .mobile-navigation { display: none; }
@media (min-width: 861px) and (max-width: 1400px) {
  .site-header { padding-inline: 2.5%; grid-template-columns: 84px minmax(0,1fr) auto auto; gap: 14px; }
  .site-header nav { gap: clamp(12px,1.2vw,18px); }
  .site-header nav a { font-size: clamp(13px,1.18vw,15px); letter-spacing: -.015em; }
  .site-header .header-button { padding-inline: 16px; font-size: 15px; }
}

.desktop-hero { min-height: calc(100svh - 86px); padding: 38px 4.6% 42px; display: grid; grid-template-columns: .94fr 1.06fr; gap: 36px; align-items: center; position: relative; isolation: isolate; overflow: hidden; }
.desktop-hero::before { content: ""; position: absolute; inset: 64px 2.4% 80px 38%; z-index: -1; border-radius: 44% 10% 36% 18% / 22% 12% 24% 20%; background: var(--sage); }
.hero-copy { position: relative; z-index: 3; padding-right: clamp(64px, 9vw, 112px); }
.category-lockup { margin-bottom: 21px; padding-left: 15px; border-left: 3px solid var(--olive); }
.primary-category { margin-bottom: 6px; color: var(--forest); font-size: 19px; font-weight: 600; letter-spacing: .015em; }
.secondary-category { margin-bottom: 0; color: #65723f; font-size: 16px; font-weight: 500; } /* было #6f7d45 — 4,01:1 на --milk, задача 19 */
.hero-copy h1 { max-width: 690px; margin-bottom: 22px; font-size: clamp(2.45rem,3.35vw,3.65rem); line-height: 1.07; }
.hero-description { max-width: 660px; margin-bottom: 0; color: #344f3e; font-size: 19px; line-height: 1.62; }
.hero-actions { margin-top: 25px; display: flex; align-items: center; gap: 13px; flex-wrap: wrap; }
.primary-button { min-height: 49px; padding: 0 21px; display: inline-flex; align-items: center; gap: 9px; border-radius: 999px; background: var(--forest); color: white; font-size: 16px; font-weight: 600; text-decoration: none; }
.hero-channels { max-width: 660px; margin-top: 17px; padding: 14px 15px; display: grid; grid-template-columns: minmax(180px,1fr) auto; align-items: center; gap: 16px; border: 1px solid rgba(41,75,54,.24); border-radius: 14px 34px 14px 34px; background: rgba(255,253,248,.7); backdrop-filter: blur(8px); }
.hero-channels-copy { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.hero-channels-copy strong { color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 18px; font-weight: 500; line-height: 1.2; }
.hero-channels-copy span { color: #53645a; font-size: 13px; line-height: 1.4; }
.hero-channel-links { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.hero-channel-links a { min-width: 148px; min-height: 42px; padding: 0 13px; display: grid; grid-template-columns: 21px 1fr; align-items: center; gap: 7px; border: 1px solid rgba(41,75,54,.34); border-radius: 999px; background: rgba(255,253,248,.72); color: var(--forest); font-size: 13px; font-weight: 650; text-decoration: none; transition: transform .2s ease, border-color .2s ease, background-color .2s ease; }
.hero-channel-links a:hover { transform: translateY(-1px); border-color: var(--forest); background: #fffdf8; }
.hero-channel-links a > span { white-space: nowrap; }
.hero-channel-icon { width: 21px; height: 21px; display: block; object-fit: contain; }
/* MAX-иконка теперь идёт через <Picture> (задача 4) — это <picture>, оборачивающий
   <img>, а не голый <img>, как в прототипе; сам .hero-channel-icon у Picture
   садится на <picture> (className), а размер/object-fit нужно докинуть внутрь,
   на настоящий <img> — тот же приём, что .brand-symbol/.brand-symbol img у Logo. */
.hero-channel-icon img { width: 100%; height: 100%; object-fit: contain; }
.hero-channel-telegram { color: #229ed9; }
.desktop-photo-window { height: min(560px,calc(100svh - 152px)); min-height: 455px; margin: 0; position: relative; z-index: 2; overflow: hidden; border-radius: 36% 8% 34% 10% / 24% 9% 28% 12%; box-shadow: 0 22px 55px rgba(47,69,51,.12); }
.desktop-photo-window img { height: 100%; object-fit: cover; object-position: 100% 50%; }
.desktop-photo-window figcaption { position: absolute; right: 18px; bottom: 16px; padding: 8px 12px; border-radius: 999px; background: rgba(35,73,49,.82); color: white; font-family: "Lora", Georgia, serif; font-size: 14px; }
.mobile-hero-photo { display: none; }
.anchor-target { height: 1px; }

.program-intro { min-height: 560px; padding: 68px 6.2% 72px; display: grid; grid-template-columns: .82fr 1.18fr; align-items: center; gap: 6%; position: relative; overflow: hidden; background: #eef0df; border-top: 1px solid rgba(41,75,54,.13); }
.program-intro::before { content: ""; width: 260px; height: 90px; position: absolute; left: -40px; top: -28px; border-bottom: 1.5px solid var(--olive); border-radius: 50%; transform: rotate(4deg); opacity: .75; }
.program-intro-copy { position: relative; z-index: 2; }
.program-kicker { margin-bottom: 17px; color: #576321; font-size: 15px; font-weight: 600; letter-spacing: .09em; } /* было #647226 — 3,91:1 на самом тёмном фоне (program-directions-head, #eadcc7), задача 19 */
.program-intro h2 { margin: 0 0 20px; font-family: "Lora", Georgia, serif; font-size: clamp(2.4rem,3.5vw,3.6rem); font-weight: 400; line-height: 1.06; letter-spacing: -.042em; }
.program-intro-copy > p:last-of-type { max-width: 560px; margin-bottom: 25px; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }
.program-intro-copy > a { min-height: 44px; padding: 0 18px; display: inline-flex; align-items: center; gap: 9px; border: 1px solid rgba(41,75,54,.35); border-radius: 999px; color: var(--forest); font-size: 16px; font-weight: 600; text-decoration: none; }
.program-flower-window { width: min(100%,560px); aspect-ratio: 1/1; margin: 0 auto; position: relative; overflow: hidden; border-radius: 46% 46% 18% 46% / 24% 24% 18% 24%; background: var(--paper); box-shadow: 0 22px 58px rgba(42,67,48,.11); }
.program-flower-window img { width: 100%; height: 100%; padding: 12px; object-fit: contain; }

.mobile-site { height: 100%; overflow-y: auto; border-radius: 28px; background: var(--milk); scrollbar-width: none; }
.mobile-site::-webkit-scrollbar { display: none; }
.mobile-header { height: 59px; padding: 0 17px; display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 4; border-bottom: 1px solid var(--line); background: rgba(247,242,232,.96); }
.mobile-header .brand-symbol { width: 49px; height: 48px; }
.mobile-header button { width: 40px; height: 40px; display: grid; place-items: center; border: 0; background: transparent; }
.mobile-site main { padding: 27px 17px 39px; }
.mobile-previous-tail { margin: -27px -17px 0; padding: 25px 17px 31px; position: relative; overflow: hidden; background: var(--milk); border-bottom: 1px solid var(--line); }
.mobile-previous-tail::after { content: ""; width: 155px; height: 55px; position: absolute; right: -25px; bottom: -28px; border-top: 1.5px solid var(--olive); border-radius: 50%; transform: rotate(-9deg); }
.mobile-previous-tail > span { display: block; margin-bottom: 7px; color: #6f7d25; font-size: 13px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; }
.mobile-previous-tail > strong { display: block; font-family: "Lora", Georgia, serif; font-size: 1.13rem; font-weight: 400; line-height: 1.2; }
.mobile-previous-tail .mobile-program { margin-top: 17px; background: rgba(255,253,248,.65); }
.mobile-copy .category-lockup { margin-bottom: 16px; }
.mobile-copy .primary-category { font-size: 17px; }
.mobile-copy .secondary-category { font-size: 15px; }
.mobile-copy h1 { margin-bottom: 16px; font-size: 1.78rem; line-height: 1.04; }
.mobile-copy .hero-description { font-size: 16px; line-height: 1.58; }
.mobile-copy .hero-actions { display: none; }
.mobile-photo-window { height: 235px; margin: 20px 0 16px; position: relative; overflow: hidden; border-radius: 11px 64px 11px 64px; background: var(--sage); }
.mobile-photo-window img { height: 100%; object-fit: cover; object-position: 100% 50%; }
.mobile-photo-window figcaption { position: absolute; left: 9px; bottom: 9px; padding: 6px 8px; border-radius: 999px; background: rgba(35,73,49,.8); color: white; font-family: "Lora", Georgia, serif; font-size: .52rem; }
.mobile-primary, .mobile-program { width: 100%; min-height: 48px; display: flex; align-items: center; justify-content: center; gap: 8px; border-radius: 999px; font-size: 16px; font-weight: 600; text-decoration: none; }
.mobile-primary { background: var(--forest); color: white; }
.mobile-program { margin-top: 9px; border: 1px solid rgba(41,75,54,.26); color: var(--forest); }
.mobile-program svg:first-child { color: var(--olive); }
.program-intro-mobile { min-height: 0; margin: 0 -17px -39px; padding: 43px 17px 48px; display: flex; flex-direction: column; gap: 25px; background: #eef0df; }
.program-intro-mobile::before { width: 145px; height: 55px; top: -20px; left: -30px; }
.program-intro-mobile h2 { font-size: 1.9rem; }
.program-intro-mobile .program-intro-copy > p:last-of-type { font-size: 16px; line-height: 1.62; }
.program-intro-mobile .program-intro-copy > a { width: 100%; justify-content: center; }
.program-intro-mobile .program-flower-window { width: 100%; border-radius: 60px 12px 60px 12px; }
.program-intro-mobile .program-flower-window img { padding: 8px; }

.program-details { padding: 82px 6.2% 92px; position: relative; background: #f7f2e8; border-top: 1px solid var(--line); }
.review-ribbon { width: max-content; max-width: 100%; margin: 0 0 24px auto; padding: 8px 12px; border: 1px solid rgba(113,128,37,.35); border-radius: 999px; color: #65721f; background: #f0f1dc; font-size: 13px; font-weight: 600; }

.program-action { display: grid; grid-template-columns: minmax(420px,1fr) minmax(430px,1fr); align-items: stretch; gap: clamp(34px,4.5vw,70px); }
.program-action-photo { min-height: 0; aspect-ratio: 3 / 4; margin: 0; position: relative; align-self: center; overflow: hidden; border-radius: 92px 18px 92px 18px; background: var(--sage); box-shadow: 0 24px 60px rgba(38,64,45,.13); }
.program-action-photo img { height: 100%; object-fit: cover; object-position: 50% 50%; }
.program-action-photo figcaption { position: absolute; left: 18px; bottom: 17px; padding: 9px 14px; border-radius: 999px; background: rgba(35,73,49,.84); color: white; font-size: 14px; font-weight: 500; }
.program-action-copy { padding: 25px 0 12px; align-self: center; }
.program-action-copy h2 { margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.25rem,3.05vw,3.25rem); font-weight: 400; line-height: 1.08; letter-spacing: -.042em; }
.directions-heading h2 { margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.4rem,3.3vw,3.55rem); font-weight: 400; line-height: 1.06; letter-spacing: -.042em; }
.action-lead { max-width: 680px; margin: 24px 0 0; color: #455a4d; font-size: 18px; line-height: 1.65; }
.living-principles { margin-top: 34px; border-bottom: 1px solid var(--line); }
.living-principles > div { padding: 17px 0; display: grid; grid-template-columns: 42px 1fr; gap: 14px; border-top: 1px solid var(--line); }
.living-principles span { padding-top: 3px; color: #748225; font-size: 13px; font-weight: 600; letter-spacing: .08em; }
.living-principles p { margin: 0; color: #455a4d; font-size: 18px; line-height: 1.58; }
.living-principles strong { color: var(--forest); font-weight: 600; }

.directions-heading { max-width: 900px; margin: 104px 0 38px; }
.directions-heading > p:last-child { max-width: 680px; margin: 22px 0 0; color: var(--ink-soft); font-size: 18px; line-height: 1.62; }
.direction-stories { display: grid; gap: 25px; }
.direction-story { min-height: 400px; display: grid; grid-template-columns: 1.12fr .88fr; overflow: hidden; border: 1px solid rgba(41,75,54,.12); border-radius: 70px 15px 70px 15px; background: rgba(255,253,248,.86); box-shadow: 0 18px 50px rgba(41,63,47,.07); }
.direction-story:nth-child(even) { grid-template-columns: .88fr 1.12fr; border-radius: 15px 70px 15px 70px; }
.direction-story:nth-child(even) .direction-photo { order: 2; }
.direction-photo { min-height: 400px; margin: 0; overflow: hidden; }
.direction-photo img { height: 100%; object-fit: cover; }
.direction-story.emotions .direction-photo img { object-position: 52% 48%; }
.direction-story.stagecraft .direction-photo img { object-position: 48% 50%; }
.direction-story.thematic .direction-photo img { object-position: 50% 48%; }
.desktop-photo-window img, .program-action-photo img, .direction-photo img, .route-format figure img { filter: saturate(.95) contrast(1.04) brightness(.985); }
.direction-copy { padding: clamp(35px,4.5vw,66px); display: flex; flex-direction: column; justify-content: center; }
.direction-number { color: #657326; font-size: 14px; font-weight: 600; letter-spacing: .09em; }
.direction-copy h3 { max-width: 430px; margin: 24px 0 17px; font-family: "Lora", Georgia, serif; font-size: clamp(1.85rem,2.5vw,2.75rem); font-weight: 400; line-height: 1.08; letter-spacing: -.035em; }
.direction-copy p { margin: 0; color: #526259; font-size: 18px; line-height: 1.62; }
.direction-copy small { margin-top: 28px; color: #5c6927; font-size: 15px; font-weight: 600; line-height: 1.48; } /* было #5f6c28 — 4,46:1 на самом тёмном из трёх фонов (.thematic, #eee1d0), задача 19 */
.direction-story.emotions .direction-copy { background: #f4e8e3; }
.direction-story.stagecraft .direction-copy { background: #eef0df; }
.direction-story.thematic .direction-copy { background: #eee1d0; }

.program-result { margin-top: 30px; padding: 32px 34px; display: grid; grid-template-columns: minmax(230px,.82fr) minmax(340px,1.18fr); align-items: start; gap: 20px 38px; border-radius: 15px 44px 15px 44px; background: var(--forest); color: white; }
.program-result > div { display: grid; gap: 8px; }
.program-result span { color: #c9d36c; font-size: 13px; font-weight: 600; letter-spacing: .08em; }
.program-result strong { font-family: "Lora", Georgia, serif; font-size: 22px; font-weight: 400; line-height: 1.25; }
.program-result p { margin: 0; color: rgba(255,255,255,.88); font-size: 17px; line-height: 1.6; }
.program-result a { min-height: 48px; padding: 0 19px; display: inline-flex; align-items: center; gap: 8px; grid-column: 2; justify-self: start; border: 1px solid rgba(255,255,255,.38); border-radius: 999px; color: white; font-size: 16px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.program-result a { border-color: var(--olive); background: var(--olive); }
.program-result a:hover { background: #96a73a; }

.program-details-mobile { margin: 39px -17px -39px; padding: 46px 17px 62px; }
.program-details-mobile .review-ribbon { margin: 0 0 19px; font-size: 11px; }
.program-details-mobile .program-action { display: flex; flex-direction: column; gap: 27px; }
.program-details-mobile .program-action-photo { min-height: 0; height: 315px; border-radius: 52px 10px 52px 10px; }
.program-details-mobile .program-action-photo img { object-position: 50% 54%; }
.program-details-mobile .program-action-photo figcaption { left: 11px; bottom: 11px; padding: 7px 10px; font-size: 11px; }
.program-details-mobile .program-action-copy { padding: 0; }
.program-details-mobile .program-action-copy h2, .program-details-mobile .directions-heading h2 { font-size: 2rem; }
.program-details-mobile .action-lead { margin-top: 18px; font-size: 16px; line-height: 1.62; }
.program-details-mobile .living-principles { margin-top: 25px; }
.program-details-mobile .living-principles > div { padding: 15px 0; grid-template-columns: 33px 1fr; gap: 9px; }
.program-details-mobile .living-principles span { font-size: 11px; }
.program-details-mobile .living-principles p { font-size: 16px; line-height: 1.55; }
.program-details-mobile .directions-heading { margin: 72px 0 27px; }
.program-details-mobile .directions-heading > p:last-child { margin-top: 16px; font-size: 16px; line-height: 1.58; }
.program-details-mobile .direction-stories { gap: 15px; }
.program-details-mobile .direction-story, .program-details-mobile .direction-story:nth-child(even) { min-height: 0; display: flex; flex-direction: column; border-radius: 46px 9px 46px 9px; }
.program-details-mobile .direction-story:nth-child(even) { border-radius: 9px 46px 9px 46px; }
.program-details-mobile .direction-story:nth-child(even) .direction-photo { order: 0; }
.program-details-mobile .direction-photo { width: 100%; min-height: 0; height: 230px; }
.program-details-mobile .direction-story.emotions .direction-photo img { object-position: 49% 50%; }
.program-details-mobile .direction-story.stagecraft .direction-photo img { object-position: 50% 52%; }
.program-details-mobile .direction-story.thematic .direction-photo img { object-position: 52% 50%; }
.program-details-mobile .direction-copy { padding: 25px 21px 28px; }
.program-details-mobile .direction-number { font-size: 11px; }
.program-details-mobile .direction-copy h3 { margin: 15px 0 13px; font-size: 1.56rem; }
.program-details-mobile .direction-copy p { font-size: 16px; line-height: 1.57; }
.program-details-mobile .direction-copy small { margin-top: 18px; font-size: 13px; }
.program-details-mobile .program-result { margin-top: 16px; padding: 26px 21px; grid-template-columns: 1fr; gap: 16px; border-radius: 9px 34px 9px 34px; }
.program-details-mobile .program-result strong { font-size: 20px; }
.program-details-mobile .program-result p { font-size: 16px; }
.program-details-mobile .program-result a { width: 100%; grid-column: 1; justify-content: center; margin-top: 3px; white-space: normal; text-align: center; }

.formats-section { padding: 88px 6.2% 96px; position: relative; overflow: hidden; background: #e6eadb; border-top: 1px solid var(--line); }
.formats-section::before { content: ""; width: 340px; height: 110px; position: absolute; right: -55px; top: -52px; border-bottom: 2px solid var(--olive); border-radius: 50%; transform: rotate(-7deg); opacity: .65; }
.formats-heading { max-width: 880px; position: relative; z-index: 1; }
.formats-review { position: relative; z-index: 2; }
.formats-heading h2 { margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.7rem,4vw,4.25rem); font-weight: 400; line-height: 1.03; letter-spacing: -.045em; }
.formats-heading > p:last-child { max-width: 780px; margin: 23px 0 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }

.kindergarten-format { margin-top: 47px; display: grid; grid-template-columns: minmax(500px,1.28fr) minmax(390px,.72fr); overflow: hidden; border: 1px solid rgba(41,75,54,.13); border-radius: 90px 18px 90px 18px; background: var(--paper); box-shadow: 0 24px 65px rgba(43,64,47,.1); }
/* Задача 5, открытый вопрос 1: без скрипта (остров — задача 21) в разметке
   лежат сразу все шесть кадров InteriorCarousel, а не один активный, как в
   прототипе (state activeSlide). display:flex + overflow-x:auto +
   scroll-snap-type превращают .interior-carousel в горизонтальную ленту:
   каждый .interior-slide — flex:none (не сжимается, ширина 100% контейнера
   уже задана ниже) и scroll-snap-align, чтобы свайп/прокрутка аккуратно
   останавливались на кадре. Нативный скроллбар не прячем: до задачи 21 это
   единственная подсказка, что внутри больше одного кадра.

   scroll-behavior: smooth (задача 21) — стрелки острова (app/islands/
   carousel.js) двигают scrollLeft напрямую, а не через scrollTo({behavior}),
   именно чтобы анимация подчинялась этому свойству, а не JS-параметру:
   тогда общий глушитель @media(prefers-reduced-motion: reduce) в base.css
   (scroll-behavior: auto !important) выключает её тем же способом, что и
   везде на сайте. Свайпу/колесу это свойство не мешает — оно относится
   только к скроллу, вызванному программно. */
.interior-carousel { min-height: 0; position: relative; overflow: hidden; background: #e7e8e2; display: flex; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; }
.interior-slide { width: 100%; height: auto; margin: 0; display: flex; flex: none; flex-direction: column; position: relative; overflow: hidden; scroll-snap-align: start; }
.interior-slide img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
.interior-slide figcaption { min-height: 54px; padding: 0 19px; display: flex; align-items: center; justify-content: space-between; gap: 20px; background: var(--forest); color: white; }
.interior-slide figcaption span { font-size: 16px; font-weight: 600; }
.interior-slide figcaption small { color: rgba(255,255,255,.86); font-size: 14px; }
.carousel-arrow { width: 44px; height: 44px; display: grid; place-items: center; position: absolute; top: 43%; z-index: 2; transform: translateY(-50%); border: 1px solid rgba(255,255,255,.8); border-radius: 50%; background: rgba(255,253,248,.94); color: var(--forest); box-shadow: 0 8px 25px rgba(34,56,40,.18); cursor: pointer; }
.carousel-arrow:hover { background: white; }
.carousel-previous { left: 17px; }
.carousel-next { right: 17px; }
.carousel-dots { position: absolute; left: 50%; bottom: 68px; z-index: 2; display: flex; gap: 8px; transform: translateX(-50%); }
.carousel-dots button { width: 9px; height: 9px; padding: 0; border: 1px solid rgba(255,255,255,.95); border-radius: 50%; background: rgba(41,75,54,.5); box-shadow: 0 1px 4px rgba(0,0,0,.12); cursor: pointer; }
.carousel-dots button.active { width: 25px; border-radius: 999px; background: white; }
.kindergarten-copy { padding: clamp(42px,5vw,72px); display: flex; flex-direction: column; justify-content: center; background: #f3e9d9; }
.format-number { color: #616d27; font-size: 13px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; } /* было #6d7b2c — 3,86:1 на --f3e9d9, задача 19 */
.kindergarten-copy h3, .route-format h3 { margin: 20px 0 17px; font-family: "Lora", Georgia, serif; font-weight: 400; line-height: 1.08; letter-spacing: -.035em; }
.kindergarten-copy h3 { font-size: clamp(2.35rem,3.4vw,3.55rem); }
.kindergarten-copy p, .route-format p { margin: 0; color: #526259; font-size: 18px; line-height: 1.62; }
.kindergarten-copy a, .route-format a, .formats-help a { min-height: 48px; padding: 0 18px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; align-self: flex-start; border: 1px solid rgba(41,75,54,.28); border-radius: 999px; color: var(--forest); font-size: 16px; font-weight: 600; text-decoration: none; }
.kindergarten-copy a { margin-top: 29px; background: var(--forest); color: white; }

.route-formats { margin-top: 25px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 25px; }
.route-format { display: flex; flex-direction: column; overflow: hidden; border: 1px solid rgba(41,75,54,.12); border-radius: 16px 64px 16px 64px; background: var(--paper); box-shadow: 0 18px 50px rgba(43,64,47,.07); }
.route-format:nth-child(2) { border-radius: 64px 16px 64px 16px; }
.route-format figure { height: 275px; margin: 0; overflow: hidden; background: var(--sage); }
.route-format figure img { height: 100%; object-fit: cover; }
.route-format.development figure img { object-position: 50% 50%; }
.route-format.weekend figure img { object-position: 50% 50%; }
.route-format.mama-baby figure img { object-position: 50% 50%; }
.route-format > div { min-height: 390px; padding: 34px 30px 31px; display: flex; flex-direction: column; }
.route-format h3 { font-size: clamp(1.75rem,2.25vw,2.3rem); }
.route-format p { flex: 1; }
.route-format a { margin-top: 26px; border-color: rgba(41,75,54,.48); background: rgba(255,253,248,.7); }
.route-format.development > div { background: #f4e8e3; }
.route-format.weekend > div { flex: 1; background: #f1ead9; }
.route-format.mama-baby > div { flex: 1; background: #edf0df; }

.formats-help { margin-top: 25px; padding: 27px 31px; display: flex; align-items: center; justify-content: space-between; gap: 28px; border-radius: 16px 45px 16px 45px; background: var(--forest); color: white; }
.formats-help p { max-width: 720px; margin: 0; color: rgba(255,255,255,.79); font-size: 17px; line-height: 1.55; }
.formats-help strong { color: white; font-weight: 600; }
.formats-help a { flex: 0 0 auto; border-color: rgba(255,255,255,.4); color: white; }

.day-section { padding: 94px 6.2% 102px; position: relative; overflow: clip; background: #f7f2e8; border-top: 1px solid var(--line); }
.day-section::before { content: ""; width: 410px; height: 170px; position: absolute; left: -105px; top: 245px; border: 2px solid rgba(135,150,47,.52); border-radius: 50%; transform: rotate(-13deg); }
.day-heading { max-width: 930px; position: relative; z-index: 1; }
.day-heading h2 { margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.7rem,4vw,4.25rem); font-weight: 400; line-height: 1.03; letter-spacing: -.045em; }
.day-heading > p:last-child { max-width: 800px; margin: 23px 0 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }
.day-layout { margin-top: 48px; display: grid; grid-template-columns: minmax(470px,.92fr) minmax(520px,1.08fr); gap: clamp(42px,5vw,78px); align-items: start; }
.day-photo { margin: 0; position: sticky; top: 116px; overflow: hidden; border-radius: 18px 88px 18px 88px; background: var(--sage); box-shadow: 0 26px 70px rgba(43,64,47,.14); }
.day-photo img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; filter: saturate(.95) contrast(1.02); }
.day-photo figcaption { min-height: 96px; padding: 18px 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px; background: var(--forest); color: white; }
.day-photo figcaption span { flex: 0 0 auto; white-space: nowrap; font-family: "Lora", Georgia, serif; font-size: clamp(17px,1.7vw,20px); line-height: 1.18; }
.day-photo figcaption small { flex: 1 1 auto; min-width: 0; max-width: 190px; color: rgba(255,255,255,.8); font-size: 14px; line-height: 1.4; text-align: right; }
.day-timeline { position: relative; }
.day-timeline::before { content: ""; width: 2px; position: absolute; top: 30px; bottom: 30px; left: 27px; background: linear-gradient(var(--olive), rgba(135,150,47,.18)); }
.day-moment { min-height: 142px; padding: 0 0 28px; display: grid; grid-template-columns: 56px 1fr; gap: 24px; position: relative; }
.day-marker { width: 56px; height: 56px; display: grid; place-items: center; position: relative; z-index: 1; border: 7px solid #f7f2e8; border-radius: 50%; background: var(--olive); color: white; box-shadow: 0 0 0 1px rgba(135,150,47,.22); }
.day-marker span { font-size: 12px; font-weight: 600; letter-spacing: .06em; }
.day-moment-copy { padding: 2px 0 26px; border-bottom: 1px solid rgba(41,75,54,.16); }
.day-moment:last-child .day-moment-copy { border-bottom: 0; }
.day-moment time { color: #6c7928; font-size: 14px; font-weight: 600; letter-spacing: .05em; }
.day-moment h3 { margin: 9px 0 9px; font-family: "Lora", Georgia, serif; font-size: clamp(1.45rem,2vw,2rem); font-weight: 400; line-height: 1.15; letter-spacing: -.025em; }
.day-moment p { margin: 0; color: #405447; font-size: 18px; line-height: 1.62; }
.day-footer { margin-top: 24px; padding: 27px 31px; display: flex; align-items: center; justify-content: space-between; gap: 30px; border-radius: 18px 48px 18px 48px; background: #e5ead8; }
.day-footer p { max-width: 760px; margin: 0; color: #405447; font-size: 17px; line-height: 1.58; }
.day-footer a { min-height: 50px; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; flex: 0 0 auto; border-radius: 999px; background: var(--forest); color: white; font-size: 16px; font-weight: 600; text-decoration: none; }

.care-section { padding: 76px 6.2% 96px; position: relative; overflow: clip; background: #eef0df; border-top: 1px solid rgba(41,75,54,.12); }
.care-section::before { content: ""; width: 420px; height: 170px; position: absolute; right: -120px; top: 72px; border: 2px solid rgba(135,150,47,.46); border-radius: 50%; transform: rotate(12deg); }
.care-heading { max-width: 930px; position: relative; z-index: 1; }
.care-heading h2 { max-width: 850px; margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.7rem,4vw,4.25rem); font-weight: 400; line-height: 1.03; letter-spacing: -.045em; }
.care-heading > p:last-child { max-width: 800px; margin: 17px 0 0; color: #405447; font-size: 18px; line-height: 1.62; }
.care-overview { margin-top: 34px; display: grid; grid-template-columns: minmax(520px,1.08fr) minmax(460px,.92fr); gap: clamp(42px,5vw,76px); align-items: center; }
.care-main-photo { margin: 0; overflow: hidden; border-radius: 76px 16px 76px 16px; background: var(--paper); box-shadow: 0 26px 68px rgba(43,64,47,.14); }
.care-main-photo img { width: 100%; height: auto; display: block; aspect-ratio: 4 / 3; object-fit: contain; filter: saturate(.95) contrast(1.02); }
.care-main-photo figcaption { min-height: 82px; padding: 18px 23px; display: flex; align-items: center; justify-content: space-between; gap: 18px; background: var(--forest); color: white; }
.care-main-photo figcaption span { max-width: 420px; font-family: "Lora", Georgia, serif; font-size: clamp(18px,1.7vw,23px); line-height: 1.22; }
.care-main-photo figcaption small { flex: 0 0 auto; color: rgba(255,255,255,.76); font-size: 14px; }
.care-directions { border-top: 1px solid rgba(41,75,54,.2); }
.care-direction { padding: 20px 0; display: grid; grid-template-columns: 52px 1fr; gap: 16px; position: relative; border-bottom: 1px solid rgba(41,75,54,.2); }
.care-direction > span { width: 38px; height: 38px; display: grid; place-items: center; position: relative; border: 1px solid rgba(108,121,40,.36); border-radius: 50% 50% 50% 12px; background: rgba(255,253,248,.5); color: #667226; font-size: 13px; font-weight: 700; letter-spacing: .06em; }
.care-direction h3 { margin: 0 0 8px; font-family: "Lora", Georgia, serif; font-size: clamp(1.38rem,1.8vw,1.8rem); font-weight: 400; line-height: 1.15; }
.care-direction p { margin: 0; color: #405447; font-size: 17px; line-height: 1.58; }
.care-stories { margin-top: 66px; display: grid; grid-template-columns: minmax(360px,1.12fr) minmax(300px,.88fr) minmax(280px,.8fr); gap: clamp(18px,2vw,29px); align-items: start; }
.care-story { margin: 0; position: relative; overflow: hidden; border-radius: 16px 58px 16px 58px; background: var(--paper); box-shadow: 0 18px 46px rgba(43,64,47,.1); }
.care-story:nth-child(2) { border-radius: 58px 16px 58px 16px; }
.care-story-independence { margin-top: 68px; }
.care-story-arrival { margin-top: 24px; }
.care-story img { width: 100%; height: auto; display: block; object-fit: contain; filter: saturate(.95) contrast(1.02); }
.care-story-cooperation img, .care-story-independence img { aspect-ratio: 3 / 2; }
.care-story-arrival img { aspect-ratio: 3 / 2; }
.care-story figcaption { min-height: 126px; padding: 23px 24px 25px; display: flex; flex-direction: column; gap: 8px; }
.care-story-cooperation figcaption { min-height: 118px; }
.care-story-independence figcaption { min-height: 144px; }
.care-story figcaption strong { color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 21px; font-weight: 400; line-height: 1.2; }
.care-story figcaption span { color: #405447; font-size: 16px; line-height: 1.52; }
.care-footer { margin-top: 31px; padding: 25px 28px; display: flex; align-items: center; justify-content: space-between; gap: 30px; border: 1px solid rgba(41,75,54,.16); border-radius: 18px 48px 18px 48px; background: rgba(255,253,248,.68); color: var(--forest); }
.care-footer > p { max-width: 520px; margin: 0; color: #405447; font-size: 17px; line-height: 1.58; }
.care-footer > div { display: flex; justify-content: flex-end; gap: 12px; }
.care-footer a { min-height: 50px; padding: 0 19px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid rgba(41,75,54,.44); border-radius: 999px; color: var(--forest); font-size: 15px; font-weight: 600; line-height: 1.25; text-decoration: none; text-align: center; }
.care-footer a:first-child { border-color: var(--forest); background: var(--forest); color: white; }
.care-footer a:last-child { border-color: var(--olive); background: var(--olive); color: white; }

.team-section { padding: 88px 6.2% 100px; position: relative; overflow: hidden; background: var(--milk); border-top: 1px solid rgba(41,75,54,.12); }
.team-section::before { content: ""; width: 390px; height: 130px; position: absolute; left: -105px; top: 100px; border-bottom: 2px solid rgba(135,150,47,.52); border-radius: 50%; transform: rotate(-8deg); }
.team-heading { display: grid; grid-template-columns: minmax(560px,1.26fr) minmax(320px,.74fr); align-items: end; gap: clamp(42px,6vw,92px); position: relative; z-index: 1; }
.team-heading h2 { max-width: 970px; margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.55rem,3.75vw,4rem); font-weight: 400; line-height: 1.06; letter-spacing: -.044em; }
.team-heading > p { max-width: 500px; margin: 0 0 6px; color: #405447; font-size: 18px; line-height: 1.65; }
.team-leader { max-width: 730px; margin: 54px auto 0 0; padding: 22px; display: grid; grid-template-columns: minmax(220px,300px) 1fr; align-items: center; gap: clamp(28px,4vw,58px); border-radius: 76px 16px 76px 16px; background: #e6eadb; }
.team-leader .team-photo { width: 100%; }
.team-leader figcaption { display: flex; flex-direction: column; gap: 9px; }
.team-leader figcaption span { color: #576321; font-size: 14px; font-weight: 600; letter-spacing: .075em; } /* тот же цвет, что и .program-kicker — задача 19 */
.team-leader figcaption strong { font-family: "Lora", Georgia, serif; font-size: clamp(2.15rem,3.2vw,3.35rem); font-weight: 400; line-height: 1; }
.team-staff { max-width: 880px; margin: 38px auto 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.team-member { min-width: 0; margin: 0; }
.team-staff .team-member { padding: 14px; display: grid; grid-template-columns: minmax(135px,165px) 1fr; align-items: center; gap: clamp(18px,2vw,26px); border: 1px solid rgba(41,75,54,.13); border-radius: 42px 12px 42px 12px; background: rgba(255,253,248,.72); }
.team-staff .team-member:nth-child(2), .team-staff .team-member:nth-child(3) { border-radius: 12px 50px 12px 50px; }
.team-photo { aspect-ratio: 4 / 5; position: relative; overflow: hidden; border-radius: 58px 13px 58px 13px; background: #e8eadf; box-shadow: 0 16px 38px rgba(43,64,47,.08); }
.team-staff .team-member:nth-child(2) .team-photo, .team-staff .team-member:nth-child(3) .team-photo { border-radius: 13px 58px 13px 58px; }
.team-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; filter: saturate(.94) contrast(1.015); }
.team-member figcaption { display: flex; flex-direction: column; gap: 7px; }
.team-member figcaption strong { font-family: "Lora", Georgia, serif; font-size: clamp(1.18rem,1.55vw,1.45rem); font-weight: 400; line-height: 1.18; }
.team-member figcaption span { max-width: 245px; color: #53645a; font-size: 15px; line-height: 1.48; }
.team-footer { margin-top: 45px; padding-top: 25px; display: flex; align-items: center; justify-content: space-between; gap: 30px; border-top: 1px solid rgba(41,75,54,.18); }
.team-footer p { max-width: 620px; margin: 0; color: #53645a; font-size: 17px; line-height: 1.58; }
.team-footer a { min-height: 50px; padding: 0 21px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; flex: 0 0 auto; border-radius: 999px; background: var(--forest); color: white; font-size: 16px; font-weight: 600; text-decoration: none; }

.life-section { padding: 88px 6.2% 104px; position: relative; overflow: hidden; background: #e6eadb; border-top: 1px solid rgba(41,75,54,.12); }
.life-section::before { content: ""; width: 430px; height: 155px; position: absolute; right: -120px; top: 86px; border: 2px solid rgba(135,150,47,.46); border-radius: 50%; transform: rotate(10deg); }
.life-heading { max-width: 1080px; position: relative; z-index: 1; }
.life-heading h2 { max-width: 1040px; margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.65rem,4vw,4.25rem); font-weight: 400; line-height: 1.04; letter-spacing: -.045em; }
.life-heading > p:last-child { max-width: 900px; margin: 22px 0 0; color: #405447; font-size: 18px; line-height: 1.65; }
.life-stories { margin-top: 49px; display: grid; grid-template-columns: minmax(470px,1.1fr) minmax(430px,.9fr); gap: clamp(24px,3.1vw,49px); align-items: start; }
.life-story { margin: 0; overflow: hidden; border: 1px solid rgba(41,75,54,.12); background: rgba(255,253,248,.88); box-shadow: 0 22px 56px rgba(43,64,47,.09); }
.life-story figure { margin: 0; overflow: hidden; background: #dfe5d6; }
.life-story img { width: 100%; height: 100%; display: block; object-fit: cover; filter: saturate(.94) contrast(1.025) brightness(1.01); }
.life-story-featured { border-radius: 92px 18px 92px 18px; }
.life-story-featured figure { aspect-ratio: 3 / 4; }
.life-story-featured img { object-fit: contain; }
.life-story-copy { padding: 28px 30px 32px; }
.life-story-copy > span { color: #687528; font-size: 13px; font-weight: 700; letter-spacing: .075em; text-transform: uppercase; }
.life-story-copy h3 { margin: 15px 0 12px; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.65rem,2.2vw,2.35rem); font-weight: 400; line-height: 1.12; letter-spacing: -.03em; }
.life-story-copy p { margin: 0; color: #405447; font-size: 17px; line-height: 1.62; }
.life-supporting-stories { display: grid; gap: 31px; }
.life-supporting-stories .life-story { display: grid; grid-template-columns: minmax(190px,.88fr) minmax(230px,1.12fr); align-items: stretch; border-radius: 18px 62px 18px 62px; }
.life-supporting-stories .life-story:nth-child(2) { border-radius: 62px 18px 62px 18px; }
.life-supporting-stories figure { min-height: 360px; }
.life-story-creative img { object-position: 50% 66%; }
.life-story-together img { object-position: 50% 58%; }
.life-supporting-stories .life-story-copy { padding: 28px 27px 30px; display: flex; flex-direction: column; justify-content: center; }
.life-supporting-stories .life-story-copy h3 { font-size: clamp(1.45rem,1.8vw,1.9rem); }
.life-supporting-stories .life-story-copy p { font-size: 16px; line-height: 1.58; }
.life-channels { max-width: 1180px; margin: 43px auto 0; padding: 29px 31px; position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0,1.25fr) auto; gap: 36px; align-items: center; border: 1px solid rgba(41,75,54,.15); border-radius: 18px 52px 18px 52px; background: rgba(255,253,248,.74); }
.life-channels-copy > span { color: #687528; font-size: 13px; font-weight: 700; letter-spacing: .075em; text-transform: uppercase; }
.life-channels-copy h3 { margin: 10px 0 8px; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.6rem,2.2vw,2.2rem); font-weight: 400; line-height: 1.14; letter-spacing: -.025em; }
.life-channels-copy p { max-width: 720px; margin: 0; color: #4a5c50; font-size: 16px; line-height: 1.58; }
.life-channel-actions { width: min(100%,440px); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px; }
.life-channel-actions a { min-height: 52px; padding: 0 16px; display: grid; grid-template-columns: 22px minmax(0,1fr) 18px; align-items: center; gap: 8px; border: 1px solid rgba(41,75,54,.46); border-radius: 999px; background: rgba(255,253,248,.8); color: var(--forest); font-size: 15px; font-weight: 650; text-decoration: none; transition: transform .2s ease, background-color .2s ease, border-color .2s ease; }
.life-channel-actions a:hover { transform: translateY(-2px); border-color: var(--forest); background: #fffdf8; }
.life-channel-actions a > span { text-align: center; white-space: nowrap; }
.life-channel-icon { width: 22px; height: 22px; display: block; object-fit: contain; }
/* См. комментарий у .hero-channel-icon img — тот же приём для MAX-иконки здесь. */
.life-channel-icon img { width: 100%; height: 100%; object-fit: contain; }
.life-channel-icon-telegram { color: #229ed9; }
.life-channel-arrow { opacity: .72; }

.reviews-section { padding: 90px 6.2% 106px; position: relative; overflow: hidden; background: var(--milk); border-top: 1px solid rgba(41,75,54,.12); }
.reviews-section::before { content: "“"; position: absolute; right: 4.5%; top: 20px; color: rgba(135,150,47,.1); font-family: "Lora", Georgia, serif; font-size: 210px; line-height: 1; }
.reviews-heading { display: grid; grid-template-columns: minmax(540px,1.25fr) minmax(280px,.75fr); align-items: end; gap: clamp(36px,6vw,88px); position: relative; z-index: 1; }
.reviews-heading h2 { max-width: 880px; margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.65rem,4vw,4.2rem); font-weight: 400; line-height: 1.04; letter-spacing: -.045em; }
.reviews-heading > p { max-width: 420px; margin: 0 0 7px; color: #405447; font-size: 18px; line-height: 1.62; }
.reviews-grid { max-width: 1180px; margin: 51px auto 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px 27px; align-items: start; }
.review-card { min-height: 310px; padding: 31px 32px 29px; display: flex; flex-direction: column; border: 1px solid rgba(41,75,54,.14); background: rgba(230,234,219,.64); box-shadow: 0 18px 46px rgba(43,64,47,.065); }
.review-card:nth-child(1) { border-radius: 18px 72px 18px 72px; }
.review-card:nth-child(2) { margin-top: 38px; border-radius: 72px 18px 72px 18px; background: rgba(255,253,248,.84); }
.review-card:nth-child(3) { margin-top: -15px; border-radius: 64px 16px 64px 16px; background: rgba(255,253,248,.84); }
.review-card:nth-child(4) { margin-top: 23px; border-radius: 16px 64px 16px 64px; }
.review-rating { color: #8a992f; font-size: 17px; letter-spacing: .13em; }
.review-card blockquote { margin: 25px 0 29px; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.2rem,1.55vw,1.48rem); font-weight: 400; line-height: 1.48; }
.review-card footer { margin-top: auto; padding-top: 18px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-top: 1px solid rgba(41,75,54,.14); }
.review-card footer strong { color: var(--forest); font-size: 15px; font-weight: 700; }
.review-source { display: inline-flex; align-items: center; justify-content: flex-end; gap: 9px; color: #5d6b61; font-size: 13px; line-height: 1.3; text-align: right; }
.yandex-mark { width: 32px; height: 32px; display: inline-grid; place-items: center; flex: 0 0 auto; border-radius: 50%; background: #fff; color: #e7312b; font-family: Arial, sans-serif; font-size: 20px; font-weight: 700; box-shadow: 0 0 0 1px rgba(41,75,54,.12); }
.reviews-action { margin-top: 47px; display: flex; justify-content: center; }
.reviews-action a { min-height: 52px; padding: 0 23px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border-radius: 999px; background: var(--forest); color: white; font-size: 16px; font-weight: 650; text-decoration: none; }

.pricing-announcement { margin: 0; padding: 42px 3.2%; display: grid; grid-template-columns: minmax(0,1.08fr) minmax(440px,.92fr); gap: clamp(28px,4vw,64px); position: relative; overflow: hidden; border-top: 1px solid rgba(41,75,54,.12); background: #f4efe4; }
.pricing-announcement::before { content: ""; position: absolute; inset: 0; opacity: .38; background: radial-gradient(circle at 18% 20%,rgba(255,255,255,.95),transparent 35%), radial-gradient(circle at 80% 78%,rgba(212,194,160,.35),transparent 33%); pointer-events: none; }
.pricing-announcement-copy { min-height: 540px; padding: 58px clamp(36px,4.5vw,74px); display: flex; flex-direction: column; align-items: flex-start; justify-content: center; position: relative; z-index: 2; border: 1px solid rgba(255,255,255,.82); border-radius: 36px; background: rgba(255,252,245,.8); box-shadow: 0 25px 70px rgba(82,69,43,.08); }
.pricing-announcement h2 { max-width: 760px; margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.8rem,4.4vw,5rem); font-weight: 400; line-height: 1; letter-spacing: -.052em; }
.pricing-announcement-copy > p:not(.program-kicker) { max-width: 680px; margin: 28px 0 31px; color: #4a5148; font-size: 18px; line-height: 1.58; }
.pricing-announcement-copy > a { min-height: 54px; padding: 0 25px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border-radius: 13px; background: linear-gradient(135deg,#8d9a5c,#76844b); color: white; font-size: 16px; font-weight: 650; text-decoration: none; box-shadow: 0 12px 26px rgba(91,108,55,.2); }
.pricing-announcement-visual { min-height: 540px; padding: 44px clamp(24px,3vw,48px); display: flex; align-items: center; position: relative; z-index: 2; overflow: hidden; border-radius: 100px 36px 36px 100px; }
.pricing-texture-panel { position: absolute; inset: 0; overflow: hidden; background: linear-gradient(100deg,#e4cda8,#f0dfc1 48%,#d9bd91); box-shadow: inset 0 0 0 1px rgba(255,255,255,.68); }
.pricing-texture-panel::before { content: ""; position: absolute; inset: 0; opacity: .17; background: repeating-linear-gradient(91deg,rgba(104,72,35,.26) 0 1px,transparent 1px 20px), radial-gradient(ellipse at 80% 22%,transparent 0 20%,rgba(116,78,39,.2) 21% 22%,transparent 23% 38%); }
.pricing-texture-panel span { width: 115px; height: 1px; position: absolute; right: 8%; bottom: 14%; border-radius: 999px; background: rgba(92,104,62,.52); transform-origin: right center; }
.pricing-texture-panel span:nth-child(1) { transform: rotate(22deg); }
.pricing-texture-panel span:nth-child(2) { width: 48px; bottom: 23%; transform: rotate(-34deg); }
.pricing-texture-panel span:nth-child(3) { width: 32px; height: 15px; right: 12%; bottom: 25%; border-radius: 100% 0 100% 0; background: rgba(105,119,71,.62); transform: rotate(24deg); }
.pricing-announcement-formats { width: min(100%,520px); position: relative; z-index: 2; }
.pricing-announcement-formats > div { min-height: 112px; margin-bottom: 18px; padding: 20px 24px; display: grid; grid-template-columns: 62px 1fr; align-items: center; gap: 18px; border: 1px solid rgba(255,255,255,.82); border-radius: 24px; background: rgba(255,252,246,.9); box-shadow: 0 13px 34px rgba(78,61,35,.12); }
.pricing-announcement-formats > div:nth-child(2) { margin-left: 0; }
.pricing-announcement-formats .format-symbol { width: 66px; height: 66px; display: grid; place-items: center; border-radius: 50%; background: #eef0dc; color: #6f7a3f; font-size: 35px; line-height: 1; }
.pricing-announcement-formats p { margin: 0; }
.pricing-announcement-formats strong, .pricing-announcement-formats small { display: block; }
.pricing-announcement-formats strong { color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.4rem,2vw,2rem); font-weight: 400; line-height: 1.2; }
.pricing-announcement-formats small { margin-top: 9px; color: #536057; font-size: 16px; }
.pricing-announcement-formats .pricing-fee-note { width: max-content; margin: 6px 0 0 auto; padding: 10px 16px; border-radius: 999px; background: rgba(255,252,246,.82); color: #536057; font-size: 14px; box-shadow: 0 8px 22px rgba(78,61,35,.08); }
.pricing-fee-note span { margin-right: 7px; color: #7a873f; font-weight: 700; }

.acquaintance-section { padding: 86px 6.2% 94px; position: relative; overflow: hidden; background: #e8ecdd; }
.acquaintance-section::after { content: ""; width: 360px; height: 130px; position: absolute; right: -75px; top: 22px; border-bottom: 1px solid rgba(128,145,50,.45); border-radius: 50%; transform: rotate(-7deg); }
.acquaintance-heading { max-width: 980px; position: relative; z-index: 1; }
.acquaintance-heading h2 { max-width: 900px; margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(2.8rem,4.7vw,5rem); font-weight: 400; line-height: 1.02; letter-spacing: -.05em; }
.acquaintance-heading > p:last-child { max-width: 800px; margin: 25px 0 0; color: #46564c; font-size: 18px; line-height: 1.62; }
.acquaintance-steps { margin-top: 49px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.acquaintance-steps article { min-height: 220px; padding: 28px; display: grid; grid-template-columns: 54px 1fr; align-items: start; gap: 19px; border: 1px solid rgba(41,75,54,.13); border-radius: 18px 48px 18px 48px; background: rgba(255,252,245,.76); }
.acquaintance-steps article:nth-child(even) { border-radius: 48px 18px 48px 18px; }
.acquaintance-step-number { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50% 50% 50% 12px; background: var(--forest); color: white; font-size: 13px; font-weight: 700; }
.acquaintance-steps h3 { margin: 0 0 12px; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.32rem,1.65vw,1.72rem); font-weight: 400; line-height: 1.18; }
.acquaintance-steps p { margin: 0; color: #536057; font-size: 16px; line-height: 1.58; }
.acquaintance-action { margin-top: 16px; padding: 27px 31px; display: flex; align-items: center; justify-content: space-between; gap: 34px; border-radius: 18px 48px 18px 48px; background: var(--forest); color: white; }
.acquaintance-action p { max-width: 760px; margin: 0; color: rgba(255,255,255,.86); font-size: 17px; line-height: 1.55; }
.acquaintance-action a { min-height: 52px; padding: 0 22px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; flex: 0 0 auto; border-radius: 999px; background: #dce49f; color: var(--forest); font-size: 15px; font-weight: 700; text-decoration: none; }

.faq-section { padding: 92px 6.2% 102px; background: var(--cream); }
.faq-heading { max-width: 900px; }
.faq-heading h2 { margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(2.8rem,4.7vw,5rem); font-weight: 400; line-height: 1.02; letter-spacing: -.05em; }
.faq-heading > p:last-child { margin: 24px 0 0; color: #536057; font-size: 18px; line-height: 1.6; }
.faq-groups { margin-top: 48px; display: grid; gap: 46px; }
.faq-group { display: grid; grid-template-columns: minmax(190px,.34fr) minmax(0,1fr); gap: clamp(30px,5vw,80px); align-items: start; }
.faq-group > h3 { margin: 8px 0 0; color: #76812e; font-size: 14px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.faq-list { border-top: 1px solid rgba(41,75,54,.2); }
.faq-list details { border-bottom: 1px solid rgba(41,75,54,.2); }
.faq-list summary { padding: 24px 4px; display: flex; align-items: center; justify-content: space-between; gap: 24px; cursor: pointer; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.25rem,1.75vw,1.7rem); line-height: 1.25; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary i { width: 32px; height: 32px; flex: 0 0 auto; position: relative; border: 1px solid rgba(41,75,54,.28); border-radius: 50%; }
.faq-list summary i::before, .faq-list summary i::after { content: ""; width: 12px; height: 1px; position: absolute; left: 9px; top: 15px; background: var(--forest); transition: transform .2s ease; }
.faq-list summary i::after { transform: rotate(90deg); }
.faq-list details[open] summary i::after { transform: rotate(0); }
.faq-list details > p { max-width: 860px; margin: -2px 52px 23px 4px; color: #536057; font-size: 16px; line-height: 1.66; }
.faq-list details > a { margin: -8px 0 25px 4px; display: inline-flex; align-items: center; gap: 7px; color: #647229; font-size: 15px; font-weight: 700; text-decoration: none; }
.faq-action { margin-top: 48px; padding-left: calc(34% + clamp(30px,5vw,80px)); }
.faq-action a { min-height: 54px; padding: 0 24px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border-radius: 999px; background: var(--forest); color: white; font-size: 15px; font-weight: 700; text-decoration: none; }

.contact-section { padding: 94px 6.2% 104px; position: relative; overflow: hidden; border-top: 1px solid rgba(41,75,54,.12); background: #edf0df; }
.contact-section::after { content: ""; width: 370px; height: 150px; position: absolute; right: -90px; top: 38px; border: 1px solid rgba(135,150,47,.42); border-radius: 50%; transform: rotate(-9deg); pointer-events: none; }
.contact-heading { max-width: 920px; position: relative; z-index: 1; }
.contact-heading h2 { margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(2.8rem,4.7vw,5rem); font-weight: 400; line-height: 1.02; letter-spacing: -.05em; }
.contact-heading > p:last-child { max-width: 760px; margin: 24px 0 0; color: #536057; font-size: 18px; line-height: 1.6; }
.contact-layout { margin-top: 50px; display: grid; grid-template-columns: minmax(0,.9fr) minmax(430px,1.1fr); gap: clamp(34px,6vw,90px); align-items: start; }
.contact-details { display: grid; gap: 13px; }
.contact-detail { padding: 23px 24px; display: grid; grid-template-columns: 42px 1fr; gap: 14px; border: 1px solid rgba(41,75,54,.15); border-radius: 16px 40px 16px 40px; background: rgba(255,253,248,.67); }
.contact-detail:nth-child(even) { border-radius: 40px 16px 40px 16px; }
.contact-detail > svg { margin-top: 2px; color: #75832c; }
.contact-detail span, .contact-message > span, .contact-form-heading > span { display: block; margin-bottom: 7px; color: #616e26; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } /* было #71802c — 3,76:1 на самом тёмном фоне (.contact-detail на #edf0df), задача 19 */
.contact-detail a, .contact-detail strong { color: var(--forest); font-size: 18px; font-weight: 600; line-height: 1.45; text-decoration: none; }
.contact-detail-call a { font-family: "Lora", Georgia, serif; font-size: clamp(1.7rem,2.4vw,2.5rem); font-weight: 400; }
.contact-detail p { margin: 8px 0 0; color: #59675f; font-size: 15px; line-height: 1.55; }
.contact-detail .contact-route { margin-top: 14px; display: inline-flex; align-items: center; gap: 7px; color: #657328; font-size: 14px; font-weight: 700; }
.contact-map { overflow: hidden; border: 1px solid rgba(41,75,54,.15); border-radius: 40px 16px 40px 16px; background: rgba(255,253,248,.68); }
.contact-map iframe, .contact-map-frame { width: 100%; height: 285px; }
.contact-map iframe { display: block; border: 0; }
/* Задача 21: .contact-map-frame — плейсхолдер вместо <iframe> (Contact.tsx,
   открытый вопрос 1), тех же размеров, что и сам iframe (общий селектор
   строкой выше), с одной кнопкой «Показать карту» внутри — её острову
   подставлять некуда, если тут не будет видимого центрированного места.
   Кнопка сама — та же "чип"-семья, что и ссылки в .contact-map-actions
   ниже (border/radius/фон дословно те же значения), только с cursor:pointer
   и без text-decoration, который ссылкам не нужен, а кнопке чужд. */
.contact-map-frame { display: flex; align-items: center; justify-content: center; background: rgba(41,75,54,.05); }
.contact-map-actions a, .contact-map-show { min-height: 44px; padding: 9px 13px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid rgba(41,75,54,.23); border-radius: 999px; background: rgba(255,253,248,.84); color: var(--forest); font-size: 13px; font-weight: 650; line-height: 1.25; text-align: center; text-decoration: none; }
.contact-map-show { cursor: pointer; }
.contact-map-actions a:first-child { border-color: rgba(135,150,47,.55); }
.contact-hours dl { margin: 4px 0 0; }
.contact-hours dl > div { padding: 10px 0; display: flex; justify-content: space-between; gap: 20px; border-bottom: 1px solid rgba(41,75,54,.12); }
.contact-hours dl > div:last-child { border-bottom: 0; }
.contact-hours dt, .contact-hours dd { margin: 0; font-size: 15px; line-height: 1.4; }
.contact-hours dt { color: var(--forest); font-weight: 600; }
.contact-hours dd { color: #59675f; text-align: right; }
.contact-message { padding: 22px 24px; border-radius: 40px 16px 40px 16px; background: var(--forest); color: white; }
.contact-message > span { color: #dce49f; }
.contact-message p { margin: 0 0 15px; color: rgba(255,255,255,.82); font-size: 15px; line-height: 1.5; }
.contact-message > div { display: flex; gap: 8px; flex-wrap: wrap; }
.contact-message > div > span, .contact-message > div > a { min-height: 39px; padding: 0 13px; display: inline-flex; align-items: center; gap: 7px; border: 1px solid rgba(255,255,255,.3); border-radius: 999px; color: white; font-size: 13px; font-weight: 600; text-decoration: none; }
.contact-message img { width: 20px; height: 20px; object-fit: contain; }
.contact-form { padding: clamp(28px,4vw,46px); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; border-radius: 24px 70px 24px 70px; background: var(--paper); box-shadow: 0 22px 55px rgba(42,67,48,.1); }
.contact-form-heading { grid-column: 1 / -1; margin-bottom: 7px; }
.contact-form-heading h3 { margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.85rem,2.7vw,2.8rem); font-weight: 400; line-height: 1.08; }
.contact-form-heading p { margin: 15px 0 0; color: #5b6961; font-size: 15px; line-height: 1.55; }
.contact-form label { display: grid; gap: 7px; color: var(--forest); font-size: 13px; font-weight: 600; }
/* Было label:nth-of-type(6) — позиционный селектор поля комментария; после
   вставки «Имени ребёнка» и чекбокса пробной смены позиция поехала бы, в
   90050fe прототип заменил его семантическим классом .contact-message-field
   — перенесено вместе со строкой статуса отправки. */
.contact-message-field, .contact-consent, .contact-form button, .contact-form-note, .contact-form-status { grid-column: 1 / -1; }
.contact-consent a, .vacancy-consent a { color: var(--forest); text-underline-offset: 2px; }
.contact-form button:disabled { opacity: .68; cursor: wait; }
.contact-form-status { min-height: 0; margin: -4px 0 0; color: #657168; font-size: 14px; line-height: 1.5; }
.contact-form-status:empty { display: none; }
.contact-form-status.is-success { color: #2f6843; font-weight: 600; }
.contact-form-status.is-error { color: #9a3f32; font-weight: 600; }
.vacancy-form button:disabled { opacity: .68; cursor: wait; }
.vacancy-form-status { min-height: 0; margin: 0; color: #657168; font-size: 14px; line-height: 1.5; }
.vacancy-form-status:empty { display: none; }
.vacancy-form-status.is-success { color: #2f6843; font-weight: 600; }
.vacancy-form-status.is-error { color: #9a3f32; font-weight: 600; }
.contact-form label > small { color: #646d67; font-weight: 400; } /* было #7b877f — задача 19 */
.contact-form input:not([type="checkbox"]), .contact-form select, .contact-form textarea { width: 100%; min-height: 50px; padding: 12px 14px; border: 1px solid rgba(41,75,54,.22); border-radius: 13px; background: #fbfaf4; color: var(--forest); font: inherit; font-size: 15px; }
.contact-form textarea { min-height: 88px; resize: vertical; }
/* Задача 19: было kольцо в 12% прозрачности (0 0 0 3px rgba(135,150,47,.12))
   поверх outline:none в базовом правиле — на молочном фоне почти не видно.
   outline:none переехал сюда, в само правило фокуса, и снимается вместе с
   заменой (кольцо сайта, --focus-ring) — так его не теряет ни один из двух
   слоёв кольца, а нефокусированное поле не трогает outline вовсе. */
.contact-form input:focus-visible, .contact-form select:focus-visible, .contact-form textarea:focus-visible { outline: none; border-color: #7c8b30; box-shadow: var(--focus-ring); }
.contact-form .contact-consent { display: flex; grid-template-columns: none; align-items: flex-start; gap: 9px; color: #667169; font-size: 12px; font-weight: 400; line-height: 1.45; }
.contact-consent input { margin-top: 2px; accent-color: var(--olive); }
.contact-form button { min-height: 54px; padding: 0 22px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 999px; background: var(--forest); color: white; font-size: 15px; font-weight: 700; cursor: pointer; }
.contact-form-note { color: #69726c; font-size: 11px; line-height: 1.45; } /* было #7a857e — 3,77:1 на --paper, задача 19 */

.site-footer { border-top: 7px solid var(--forest); background: #f7f2e8; }
.footer-main { padding: 56px 6.2% 48px; display: grid; grid-template-columns: 1.15fr .85fr .9fr 1.1fr; gap: clamp(28px,4vw,66px); }
.footer-brand .brand-symbol { width: 88px; height: 86px; }
.footer-brand > strong { max-width: 255px; margin-top: 17px; display: block; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 19px; font-weight: 400; line-height: 1.35; }
.footer-brand > p { margin: 17px 0 0; color: #627068; font-size: 14px; line-height: 1.55; }
.footer-nav, .footer-connect, .footer-work { display: flex; flex-direction: column; align-items: flex-start; }
.footer-nav > span, .footer-connect > span, .footer-work > span { margin-bottom: 17px; color: #72802d; font-size: 12px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.footer-nav > a { margin-bottom: 10px; color: var(--forest); font-size: 14px; font-weight: 550; text-decoration: none; }
.footer-nav > a:hover { color: var(--olive); }
.footer-phone { color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 21px; text-decoration: none; }
.footer-write { margin-top: 11px; display: inline-flex; align-items: center; gap: 6px; color: #657328; font-size: 13px; font-weight: 700; text-decoration: none; }
.footer-connect small { margin-top: 25px; color: #657169; font-size: 12px; }
.footer-socials { margin-top: 10px; display: flex; gap: 8px; flex-wrap: wrap; }
.footer-socials a { min-height: 38px; padding: 0 12px; display: inline-flex; align-items: center; gap: 6px; border: 1px solid rgba(41,75,54,.22); border-radius: 999px; background: rgba(255,253,248,.75); color: var(--forest); font-size: 12px; font-weight: 650; text-decoration: none; }
.footer-socials a:first-child svg { color: #229ed9; }
.footer-socials img { width: 19px; height: 19px; object-fit: contain; }
.footer-work > strong { color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 21px; font-weight: 400; line-height: 1.25; }
.footer-work > p { margin: 13px 0 17px; color: #627068; font-size: 14px; line-height: 1.55; }
.footer-work > a { min-height: 42px; padding: 0 16px; display: inline-flex; align-items: center; gap: 7px; border: 1px solid rgba(41,75,54,.27); border-radius: 999px; color: var(--forest); font-size: 13px; font-weight: 700; text-decoration: none; }
.footer-legal { margin: 0 6.2%; padding: 25px 0; display: flex; justify-content: space-between; gap: 38px; border-top: 1px solid rgba(41,75,54,.16); }
.footer-legal p { margin: 0; display: flex; gap: 14px 20px; flex-wrap: wrap; color: #626d66; font-size: 11px; line-height: 1.45; } /* было #6b766f — 4,23:1 на --milk, сайт целиком, задача 19 */
.footer-legal p strong { color: #475b4e; font-weight: 600; }
.footer-legal nav { display: flex; gap: 18px; flex-wrap: wrap; justify-content: flex-end; }
.footer-legal nav a { color: #58675e; font-size: 11px; line-height: 1.45; }
.footer-bottom { padding: 15px 6.2% 18px; background: var(--forest); color: rgba(255,255,255,.73); font-size: 11px; }

.vacancy-page main { background: var(--milk); }
.vacancy-hero { min-height: 610px; padding: 58px 6.2% 68px; display: grid; grid-template-columns: 1.05fr .95fr; gap: 6%; align-items: center; overflow: hidden; }
.vacancy-hero-copy h1 { max-width: 800px; margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(3.2rem,5.7vw,6rem); font-weight: 400; line-height: .98; letter-spacing: -.055em; }
.vacancy-hero-copy > p:not(.program-kicker) { max-width: 690px; margin: 28px 0 0; color: #506057; font-size: 19px; line-height: 1.65; }
.vacancy-hero-copy > a { min-height: 51px; margin-top: 29px; padding: 0 21px; display: inline-flex; align-items: center; gap: 9px; border-radius: 999px; background: var(--forest); color: white; font-size: 15px; font-weight: 700; text-decoration: none; }
.vacancy-hero-visual { aspect-ratio: 1 / .85; display: grid; place-items: center; align-content: center; position: relative; overflow: hidden; border-radius: 46% 16% 46% 16% / 24% 16% 24% 16%; background: linear-gradient(145deg,#dfebd3,#d5ba91); box-shadow: 0 24px 58px rgba(42,67,48,.1); }
.vacancy-hero-visual::before { content: ""; width: 76%; height: 72%; position: absolute; border: 1px solid rgba(255,255,255,.74); border-radius: 50% 50% 20% 50%; }
.vacancy-hero-visual > strong { margin-top: 18px; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 36px; font-weight: 400; }
.vacancy-hero-visual > small { margin-top: 5px; color: #526052; font-size: 12px; letter-spacing: .08em; }
.vacancy-tree { width: 190px; height: 190px; display: block; position: relative; border-bottom: 7px solid rgba(41,75,54,.68); border-radius: 50%; }
.vacancy-tree::before { content: ""; width: 14px; height: 130px; position: absolute; left: 88px; bottom: 0; border-radius: 999px 999px 0 0; background: rgba(41,75,54,.74); transform: rotate(2deg); }
.vacancy-tree::after { content: ""; width: 105px; height: 85px; position: absolute; left: 45px; bottom: 62px; border: 8px solid rgba(41,75,54,.64); border-bottom: 0; border-radius: 60% 60% 0 0; }
.vacancy-tree i { width: 38px; height: 24px; position: absolute; z-index: 1; border-radius: 70% 20% 70% 20%; background: #f7f2e8; transform: rotate(-25deg); }
.vacancy-tree i:nth-child(1) { left: 22px; top: 48px; }.vacancy-tree i:nth-child(2) { left: 58px; top: 12px; transform: rotate(20deg); }.vacancy-tree i:nth-child(3) { left: 105px; top: 3px; }.vacancy-tree i:nth-child(4) { right: 9px; top: 43px; transform: rotate(28deg); }.vacancy-tree i:nth-child(5) { left: 40px; top: 96px; transform: rotate(18deg); }.vacancy-tree i:nth-child(6) { right: 36px; top: 91px; }.vacancy-tree i:nth-child(7) { left: 82px; top: 66px; transform: rotate(38deg); }
.vacancy-values { padding: 84px 6.2%; display: grid; grid-template-columns: .9fr 1.1fr; gap: 7%; align-items: start; background: #edf0df; }
.vacancy-values h2, .vacancy-directions h2, .vacancy-resume h2 { margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(2.5rem,4.1vw,4.3rem); font-weight: 400; line-height: 1.04; letter-spacing: -.045em; }
.vacancy-values > div > p:last-child, .vacancy-directions-heading > p:last-child, .vacancy-resume-copy > p:last-child { margin: 23px 0 0; color: #57665d; font-size: 17px; line-height: 1.62; }
.vacancy-values ol { margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 13px; list-style: none; }
.vacancy-values li { min-height: 155px; padding: 25px; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid rgba(41,75,54,.14); border-radius: 16px 42px 16px 42px; background: rgba(255,253,248,.7); color: var(--forest); font-family: "Lora", Georgia, serif; font-size: 20px; line-height: 1.28; }
.vacancy-values li:nth-child(even) { border-radius: 42px 16px 42px 16px; }
.vacancy-values li span { color: #76842e; font-family: "Golos Text",Arial,sans-serif; font-size: 11px; font-weight: 700; }
.vacancy-directions { padding: 88px 6.2%; display: grid; grid-template-columns: .9fr 1.1fr; gap: 7%; align-items: center; }
.vacancy-directions > div:last-child { display: flex; gap: 10px; flex-wrap: wrap; align-content: center; }
.vacancy-directions > div:last-child span { min-height: 48px; padding: 0 17px; display: inline-flex; align-items: center; border: 1px solid rgba(41,75,54,.2); border-radius: 999px; background: var(--paper); color: var(--forest); font-size: 14px; }
.vacancy-resume { padding: 88px 6.2% 96px; display: grid; grid-template-columns: .72fr 1.28fr; gap: 7%; align-items: start; background: #e4ead9; }
.vacancy-resume-copy { position: sticky; top: 125px; }
.vacancy-form { padding: clamp(28px,4vw,48px); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; border-radius: 24px 70px 24px 70px; background: var(--paper); box-shadow: 0 22px 55px rgba(42,67,48,.1); }
.vacancy-form label { display: grid; gap: 7px; color: var(--forest); font-size: 13px; font-weight: 600; }
.vacancy-form label > small { color: #646d67; font-weight: 400; } /* было #7b877f — 3,42:1 на фоне поля загрузки (#f7f5ec), задача 19 */
.vacancy-form input:not([type="checkbox"]):not([type="file"]), .vacancy-form select, .vacancy-form textarea { width: 100%; min-height: 50px; padding: 12px 14px; border: 1px solid rgba(41,75,54,.22); border-radius: 13px; background: #fbfaf4; color: var(--forest); font: inherit; font-size: 15px; }
.vacancy-form textarea { min-height: 92px; resize: vertical; }
/* Тот же приём, что у .contact-form — см. комментарий там (задача 19).
   Специфичность здесь, в отличие от .contact-form, не равна: у базового
   правила строкой выше два :not() (класс + 2 атрибута + тип = 0,3,1),
   у голого ".vacancy-form input:focus-visible" — только (0,2,1). Базовое
   правило побеждало всегда, независимо от порядка в файле: кольцо на фокусе
   было, а рамка оставалась тусклой (rgba(41,75,54,.22)). Повтор класса —
   ".vacancy-form.vacancy-form input" — поднимает специфичность ровно до
   (0,3,1), вровень с базовым правилом; дальше, как и у .contact-form
   (там специфичности изначально равны), решает порядок в файле — это
   правило ниже. select/textarea не затронуты — там база слабее фокуса и
   так. */
.vacancy-form.vacancy-form input:focus-visible, .vacancy-form select:focus-visible, .vacancy-form textarea:focus-visible { outline: none; border-color: #7c8b30; box-shadow: var(--focus-ring); }
.vacancy-form-wide { grid-column: 1 / -1; }
.vacancy-upload { padding: 17px; border: 1px dashed rgba(41,75,54,.34); border-radius: 14px; background: #f7f5ec; }
.vacancy-upload input { color: #5f6d64; font-size: 13px; }
.vacancy-consent { display: flex !important; align-items: flex-start; gap: 9px !important; color: #667169 !important; font-size: 12px !important; font-weight: 400 !important; line-height: 1.45; }
.vacancy-consent input { margin-top: 2px; accent-color: var(--olive); }
.vacancy-form button { min-height: 54px; padding: 0 22px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 999px; background: var(--forest); color: white; font-size: 15px; font-weight: 700; cursor: pointer; }
.vacancy-form-note { color: #69726c; font-size: 11px; line-height: 1.45; } /* было #7a857e — тот же токен, что и .contact-form-note, задача 19 */
.vacancy-more { padding: 34px 6.2%; display: flex; align-items: center; justify-content: space-between; gap: 30px; background: var(--forest); color: white; }
.vacancy-more > div { display: flex; flex-direction: column; gap: 6px; }
.vacancy-more > div span { color: #cfd89b; font-size: 12px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.vacancy-more > div strong { font-family: "Lora",Georgia,serif; font-size: 22px; font-weight: 400; }
.vacancy-more nav { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.vacancy-more a { min-height: 42px; padding: 0 15px; display: inline-flex; align-items: center; border: 1px solid rgba(255,255,255,.28); border-radius: 999px; color: white; font-size: 12px; font-weight: 600; text-decoration: none; }

.pricing-page { padding: 28px 2.8% 36px; background: #f7f3ea; }
.pricing-page-hero { min-height: 520px; padding: 0; display: grid; grid-template-columns: .9fr 1.1fr; position: relative; overflow: hidden; border: 1px solid rgba(41,75,54,.12); border-radius: 32px; background: rgba(255,253,248,.86); box-shadow: 0 16px 50px rgba(75,65,44,.08); }
.pricing-page-hero-copy { padding: clamp(54px,7vw,94px) clamp(42px,5vw,82px); position: relative; z-index: 2; }
.pricing-page-hero h1 { max-width: 780px; margin: 0; font-size: clamp(3.1rem,5vw,5.4rem); line-height: 1; }
.pricing-page-hero-copy > p:last-child { max-width: 650px; margin: 28px 0 0; color: #405447; font-size: 18px; line-height: 1.62; }
.pricing-page-hero-photo { margin: 0; min-height: 520px; position: relative; overflow: hidden; border-radius: 110px 0 0 110px; background: #e5ead8; }
.pricing-page-hero-photo img { width: 100%; height: 100%; position: absolute; inset: 0; object-fit: cover; object-position: 50% 45%; }
.visit-formats { padding: 25px 0 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; align-items: stretch; }
.visit-format-card { padding: 29px 31px 32px; border: 1px solid rgba(83,92,64,.17); border-radius: 27px; background: rgba(255,253,248,.92); box-shadow: 0 12px 34px rgba(75,65,44,.055); }
.visit-format-card:nth-child(2) { background: rgba(250,249,241,.94); }
.visit-format-card > header { display: grid; grid-template-columns: 48px 1fr; align-items: center; gap: 15px; }
.visit-format-card > header > span { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%; background: #eef0dc; color: #687528; font-size: 12px; font-weight: 700; }
.visit-format-card h2 { margin: 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.65rem,2.1vw,2.4rem); font-weight: 400; line-height: 1.12; letter-spacing: -.03em; }
.visit-format-price { margin: 23px 0 21px; display: flex; align-items: baseline; gap: 8px; }
.visit-format-price strong { color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(2.55rem,3.5vw,3.9rem); font-weight: 400; line-height: 1; letter-spacing: -.045em; }
.visit-format-price span { color: #617067; font-size: 15px; }
.visit-format-schedule { padding: 15px 0; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-top: 1px solid rgba(41,75,54,.14); border-bottom: 1px solid rgba(41,75,54,.14); }
.visit-format-schedule span { color: #617067; font-size: 14px; }
.visit-format-schedule strong { color: var(--forest); font-size: 17px; }
.visit-format-includes { margin-top: 23px; }
.visit-format-includes h3 { margin: 0 0 14px; color: var(--forest); font-size: 13px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.visit-format-includes ul { margin: 0; padding: 0; display: grid; gap: 9px; list-style: none; }
.visit-format-includes li { padding-left: 23px; position: relative; color: #405447; font-size: 15px; line-height: 1.5; }
.visit-format-includes li::before { content: "✓"; width: 15px; height: 15px; position: absolute; left: 0; top: .22em; display: grid; place-items: center; border: 1px solid rgba(122,135,63,.45); border-radius: 50%; color: #7a873f; font-size: 9px; font-weight: 700; }
.visit-format-closing { margin: 25px 0 0; padding-top: 20px; border-top: 1px solid rgba(41,75,54,.13); color: #536057; font-size: 15px; line-height: 1.58; }
.entrance-fee-card { grid-column: 1 / -1; padding: 26px 31px; display: grid; grid-template-columns: minmax(260px,.75fr) minmax(250px,.42fr) minmax(400px,1.25fr); align-items: center; gap: 31px; border-radius: 27px; background: #f6eadb; color: var(--forest); }
.entrance-fee-card > header > span { background: rgba(255,253,248,.72); color: #9a7747; }
.entrance-fee-card .visit-format-price { margin: 0; }
.entrance-fee-copy strong { display: block; margin-bottom: 8px; color: var(--forest); font-size: 15px; line-height: 1.45; }
.entrance-fee-copy p { margin: 0; color: #4d574f; font-size: 16px; line-height: 1.58; }
.pricing-page-cta { margin-top: 18px; padding: 34px 37px; display: flex; align-items: center; justify-content: space-between; gap: 42px; border: 1px solid rgba(83,92,64,.15); border-radius: 27px; background: linear-gradient(105deg,#fbfaf2,#eef0df); }
.pricing-page-cta > div:first-child { max-width: 760px; }
.pricing-page-cta h2 { margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2rem,3vw,3.25rem); font-weight: 400; line-height: 1.06; letter-spacing: -.04em; }
.pricing-page-cta p:last-child { margin: 13px 0 0; color: #405447; font-size: 16px; line-height: 1.55; }
.pricing-page-actions { display: flex; align-items: center; gap: 13px; flex: 0 0 auto; }
.pricing-page-actions a { min-height: 52px; padding: 0 21px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border-radius: 13px; font-size: 15px; font-weight: 650; text-decoration: none; }
.pricing-primary-action { background: linear-gradient(135deg,#8d9a5c,#76844b); color: white; box-shadow: 0 10px 24px rgba(91,108,55,.18); }
.pricing-secondary-action { border-bottom: 1px dashed rgba(41,75,54,.5); color: var(--forest); }

/* Club pricing */
.club-pricing-page { background: #f7f3e9; }
.club-pricing-page main { padding-top: 100px; }
.club-pricing-hero { width: min(1180px,calc(100% - 48px)); margin: 0 auto; padding: 56px 0 48px; }
.club-pricing-hero > div:first-child { display: block; }
.club-pricing-hero h1 { max-width: 780px; margin: 10px 0 0; font-size: clamp(3rem,5vw,4.8rem); line-height: 1; }
.club-pricing-hero > div:first-child > p:last-child { max-width: 720px; margin: 22px 0 0; color: #506158; font-size: 19px; line-height: 1.6; }
.club-pricing-guides { margin-top: 38px; display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; }
.club-pricing-guides div { padding: 20px 22px; display: flex; align-items: baseline; justify-content: space-between; gap: 18px; border: 1px solid rgba(42,83,53,.13); border-radius: 20px; background: rgba(255,253,247,.82); }
.club-pricing-guides span { color: #5d6c63; font-size: 14px; }
.club-pricing-guides strong { color: #315943; font-family: var(--font-display); font-size: 23px; font-weight: 400; white-space: nowrap; }
.club-price-list { padding: 64px max(24px,calc((100% - 1180px)/2)) 72px; background: #edf1e5; }
.club-price-list-heading { margin-bottom: 28px; display: flex; justify-content: space-between; align-items: end; gap: 30px; }
.club-price-list-heading p { margin-bottom: 8px; }
.club-price-list-heading h2 { margin: 0; font-family: var(--font-display); font-size: clamp(2.25rem,3.8vw,3.5rem); font-weight: 400; line-height: 1.05; }
.club-price-table { overflow: hidden; border: 1px solid rgba(42,83,53,.14); border-radius: 26px; background: rgba(255,253,247,.9); }
.club-price-row { min-height: 76px; display: grid; grid-template-columns: minmax(260px,1.45fr) repeat(3,minmax(145px,.72fr)); align-items: stretch; border-top: 1px solid rgba(42,83,53,.11); }
.club-price-row:first-child { border-top: 0; }
.club-price-row > * { padding: 19px 21px; display: flex; align-items: center; border-left: 1px solid rgba(42,83,53,.1); }
.club-price-row > *:first-child { border-left: 0; }
.club-price-header { min-height: 54px; background: #e1e8d5; color: #476052; font-size: 13px; font-weight: 700; letter-spacing: .035em; text-transform: uppercase; }
.club-price-row h3 { margin: 0; color: #294f3b; font-family: var(--font-display); font-size: 20px; font-weight: 400; line-height: 1.25; }
.club-price-row > div { justify-content: space-between; gap: 10px; }
.club-price-row > div > span { display: none; color: #64736a; font-size: 13px; }
.club-price-row strong { color: #40564b; font-size: 16px; font-weight: 600; white-space: nowrap; }
.club-price-row .club-price-best { background: rgba(222,232,204,.55); }
.club-price-row .club-price-unavailable { color: #758078; font-size: 14px; font-weight: 500; white-space: normal; }
.club-pricing-member-note,.club-pricing-current-note,.club-pricing-cta { width: min(1180px,calc(100% - 48px)); margin: 42px auto 0; border: 1px solid rgba(42,83,53,.14); }
.club-pricing-member-note { padding: 32px 38px; display: grid; grid-template-columns: 118px 1fr; gap: 34px; align-items: center; border-radius: 30px 52px 30px 30px; background: #f1e7da; }
.club-pricing-member-note > div:first-child { width: 104px; height: 104px; display: grid; place-content: center; text-align: center; border: 1px solid rgba(131,108,71,.28); border-radius: 50%; background: rgba(255,253,247,.65); color: #815f46; }
.club-pricing-member-note > div:first-child span { font-size: 12px; font-weight: 700; text-transform: uppercase; }
.club-pricing-member-note > div:first-child strong { font-family: var(--font-display); font-size: 30px; font-weight: 400; }
.club-pricing-member-note h2,.club-pricing-current-note h2,.club-pricing-cta h2 { margin: 7px 0 11px; font-family: var(--font-display); font-size: clamp(2rem,3vw,2.8rem); font-weight: 400; line-height: 1.08; }
.club-pricing-member-note p:last-child,.club-pricing-current-note p:last-child { max-width: 850px; margin: 0; color: #53635a; font-size: 16px; line-height: 1.58; }
.club-pricing-current-note { padding: 32px 38px; display: grid; grid-template-columns: 1fr auto; gap: 42px; align-items: center; border-radius: 30px; background: #f8f5ed; }
.club-pricing-current-note > a { padding: 16px 22px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; border: 1px solid #82951d; border-radius: 999px; background: #fffdf7; color: #24563c; font-weight: 700; text-decoration: none; white-space: nowrap; }
.club-pricing-cta { margin-bottom: 72px; padding: 34px 38px; display: grid; grid-template-columns: 1fr auto; gap: 48px; align-items: center; border-radius: 30px 30px 62px 30px; background: #e4ebd9; }
.club-pricing-cta h2 { margin-bottom: 0; }
.club-pricing-cta > div:last-child { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; }
.club-pricing-cta .primary-button { grid-column: 1/-1; justify-content: center; }
.club-pricing-cta > div:last-child > a:not(.primary-button) { padding: 8px 3px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; color: #315943; font-size: 14px; font-weight: 700; text-decoration: none; }

.team-page { background: var(--milk); }
.team-page-hero { padding: 88px 6.2% 64px; position: relative; overflow: hidden; background: #e6eadb; }
.team-page-hero::after { content: ""; width: 430px; height: 150px; position: absolute; right: -90px; top: 15px; border-bottom: 2px solid rgba(135,150,47,.5); border-radius: 50%; transform: rotate(-7deg); }
.team-page-hero h1 { max-width: 980px; margin: 0; font-size: clamp(3rem,5vw,5.3rem); line-height: 1; }
.team-page-hero > p:last-child { max-width: 900px; margin: 27px 0 0; color: #405447; font-size: 18px; line-height: 1.68; }
.team-profile { padding: 82px 6.2% 92px; display: grid; grid-template-columns: minmax(330px,.7fr) minmax(560px,1.3fr); gap: clamp(48px,7vw,110px); align-items: start; scroll-margin-top: 160px; border-bottom: 1px solid rgba(41,75,54,.12); }
.team-profile:not(.team-profile-even) { background: rgba(230,234,219,.48); }
.team-profile-even { grid-template-columns: minmax(560px,1.3fr) minmax(330px,.7fr); }
.team-profile-even .team-profile-photo { grid-column: 2; }
.team-profile-even .team-profile-content { grid-column: 1; grid-row: 1; }
.team-profile-founder { padding-top: 94px; background: var(--milk); }
.team-profile-photo { margin: 0; position: sticky; top: 114px; overflow: hidden; border-radius: 84px 16px 84px 16px; background: var(--paper); box-shadow: 0 24px 60px rgba(43,64,47,.12); }
/* height: auto добавлен в задаче 17, в прототипе его не было (тот же
   паттерн, что и .kindergarten-hero-photo img/.kindergarten-group-photo img
   и .weekend-shift-card img выше по этому файлу, зафиксированный в задачах
   6 и 13 — см. комментарии там). Правило само по себе не меняется (тот же
   aspect-ratio/object-fit), но без явного height: auto высота <img> берётся
   из HTML-атрибута height, который <Picture> (задача 4) проставляет всегда,
   — а это пиксельный размер исходника, а не итоговая высота карточки. Без
   auto аспект перестаёт работать, и фотография растягивается на всю высоту
   исходника вместо ожидаемых 4:5. width трогать не нужно: его уже даёт
   глобальный сброс "img { display: block; width: 100%; }" в app/styles/
   base.css (перенесён из прототипа как есть, строка 29) — у .team-profile-
   photo img нет собственного правила width, которое могло бы его
   перебить. */
.team-profile-photo img { aspect-ratio: 4 / 5; object-fit: cover; height: auto; }
.team-profile-photo figcaption { padding: 22px 24px 25px; display: flex; flex-direction: column; gap: 6px; background: var(--forest); color: white; }
.team-profile-photo figcaption strong { font-family: "Lora", Georgia, serif; font-size: 28px; font-weight: 400; }
.team-profile-photo figcaption span { color: rgba(255,255,255,.84); font-size: 15px; line-height: 1.45; }
.team-profile-founder .team-profile-photo { border-radius: 96px 18px 96px 18px; }
.team-profile-founder .team-profile-photo figcaption { background: #697728; }
.team-profile-content h2 { max-width: 650px; margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.35rem,3.6vw,3.75rem); font-weight: 400; line-height: 1.05; letter-spacing: -.04em; }
.team-profile-intro { max-width: 760px; margin: 24px 0 35px; color: #405447; font-size: 18px; line-height: 1.68; }
.team-profile-intro p { margin: 0 0 17px; }
.team-profile-intro p:last-child { margin-bottom: 0; }
.team-profile-facts { border-top: 1px solid rgba(41,75,54,.18); }
.team-profile-facts article { padding: 22px 0; display: grid; grid-template-columns: 46px 1fr; gap: 17px; border-bottom: 1px solid rgba(41,75,54,.18); }
.team-profile-facts article > span { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50% 50% 50% 10px; background: #e6eadb; color: #657326; font-size: 12px; font-weight: 700; }
.team-profile-facts h3 { margin: 0 0 7px; font-family: "Lora", Georgia, serif; font-size: 23px; font-weight: 400; }
.team-profile-facts p { margin: 0; color: #53645a; font-size: 16px; line-height: 1.55; }
.team-profile-directions { margin-top: 29px; padding: 26px 28px 28px; border-radius: 16px 48px 16px 48px; background: #e6eadb; }
.team-profile-directions h3 { margin: 0; font-family: "Lora", Georgia, serif; font-size: 24px; font-weight: 400; }
.team-profile-directions ul { margin: 18px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 11px 24px; list-style: none; }
.team-profile-directions li { padding-left: 20px; position: relative; color: #405447; font-size: 16px; line-height: 1.5; }
.team-profile-directions li::before { content: ""; width: 8px; height: 8px; position: absolute; left: 0; top: .52em; border-radius: 50% 50% 50% 2px; background: #87962f; }
.team-page-cta { margin: 0; padding: 76px 6.2% 84px; display: flex; align-items: flex-end; justify-content: space-between; gap: 50px; background: var(--forest); color: white; }
.team-page-cta > div { max-width: 850px; }
.team-page-cta .program-kicker { color: #dbe5a8; }
.team-page-cta h2 { margin: 0; font-family: "Lora", Georgia, serif; font-size: clamp(2.4rem,4vw,4.3rem); font-weight: 400; line-height: 1.04; letter-spacing: -.04em; }
.team-page-cta p:last-child { max-width: 790px; margin: 24px 0 0; color: rgba(255,255,255,.82); font-size: 18px; line-height: 1.65; }
.team-page-cta a { min-height: 54px; padding: 0 24px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; flex: 0 0 auto; border-radius: 999px; background: #dce49f; color: var(--forest); font-size: 16px; font-weight: 700; text-decoration: none; }

.formats-section-mobile { margin: 39px -17px -39px; padding: 50px 17px 62px; }
.formats-section-mobile .formats-review { width: 100%; margin: 0 0 19px; font-size: 11px; line-height: 1.4; }
.formats-section-mobile::before { width: 170px; height: 60px; right: -35px; top: -28px; }
.formats-section-mobile .formats-heading h2 { font-size: 2.05rem; }
.formats-section-mobile .formats-heading > p:last-child { margin-top: 17px; font-size: 16px; line-height: 1.62; }
.formats-section-mobile .kindergarten-format { margin-top: 29px; display: flex; flex-direction: column; border-radius: 52px 10px 52px 10px; }
.formats-section-mobile .interior-carousel { min-height: 0; }
.formats-section-mobile .interior-slide { height: auto; }
.formats-section-mobile .interior-slide img { height: auto; aspect-ratio: 4 / 3; }
.formats-section-mobile .interior-slide figcaption { min-height: 48px; padding: 0 12px; }
.formats-section-mobile .interior-slide figcaption span { font-size: 14px; }
.formats-section-mobile .interior-slide figcaption small { font-size: 13px; }
.formats-section-mobile .carousel-arrow { width: 38px; height: 38px; top: 41.5%; }
.formats-section-mobile .carousel-previous { left: 10px; }
.formats-section-mobile .carousel-next { right: 10px; }
.formats-section-mobile .carousel-dots { bottom: 59px; }
.formats-section-mobile .kindergarten-copy { padding: 29px 22px 31px; }
.formats-section-mobile .kindergarten-copy h3 { margin: 15px 0 13px; font-size: 2rem; }
.formats-section-mobile .kindergarten-copy p, .formats-section-mobile .route-format p { font-size: 17px; line-height: 1.58; }
.formats-section-mobile .kindergarten-copy a { width: 100%; align-self: stretch; margin-top: 23px; }
.formats-section-mobile .route-formats { margin-top: 15px; grid-template-columns: 1fr; gap: 15px; }
.formats-section-mobile .route-format, .formats-section-mobile .route-format:nth-child(2) { border-radius: 10px 46px 10px 46px; }
.formats-section-mobile .route-format:nth-child(2) { border-radius: 46px 10px 46px 10px; }
.formats-section-mobile .route-format figure { height: 230px; }
.formats-section-mobile .route-format > div { min-height: 0; padding: 26px 22px 29px; }
.formats-section-mobile .route-format h3 { margin: 15px 0 13px; font-size: 1.65rem; }
.formats-section-mobile .route-format a { width: 100%; align-self: stretch; margin-top: 22px; }
.formats-section-mobile .formats-help { padding: 26px 21px; align-items: stretch; flex-direction: column; border-radius: 10px 36px 10px 36px; }
.formats-section-mobile .formats-help p { font-size: 17px; }
.formats-section-mobile .formats-help a { width: 100%; }

.approval-note { max-width: 1504px; margin: 27px auto 0; padding: 31px 38px; display: grid; grid-template-columns: repeat(3,1fr); gap: 34px; border-radius: 19px; background: #f8f4ec; }
.approval-note div { display: grid; grid-template-columns: 145px 1fr; align-items: start; gap: 17px; }
.approval-note span { color: #6f7d25; font-size: 14px; font-weight: 600; letter-spacing: .06em; line-height: 1.45; text-transform: uppercase; }
.approval-note p { margin: 0; color: #526259; font-size: 16px; line-height: 1.58; }

@media (max-width: 980px) {
  .approval-header { position: static; align-items: flex-start; flex-direction: column; gap: 6px; }
  .approval-header p { display: none; }
  .preview-labels { display: none; }
  .preview-stage { padding-top: 24px; grid-template-columns: 1fr; }
  .desktop-frame { max-height: 770px; overflow: auto; }
  .phone-frame { width: 310px; margin: 0 auto; position: static; }
  .approval-note { margin-left: 28px; margin-right: 28px; grid-template-columns: 1fr; gap: 24px; }
}

@media (max-width: 620px) {
  .approval-shell { padding-bottom: 28px; }
  .approval-header { padding: 15px 17px; }
  .approval-header > div { display: flex; }
  .preview-stage { padding: 18px 12px 0; }
  .desktop-frame { display: none; }
  .phone-frame { width: min(100%,340px); height: 760px; }
  .approval-note { margin: 18px 12px 0; padding: 24px 20px; }
  .approval-note div { grid-template-columns: 1fr; gap: 7px; }
}

@media (min-width: 861px) and (max-width: 1200px) {
  .hero-channels { display: block; }
  .hero-channel-links { min-width: 0; margin-top: 12px; }
  .hero-channel-links a { min-width: 0; }
}

@media (max-width: 860px) {
  html { scroll-padding-top: 82px; }
  .site-header { height: 72px; padding: 0 15px; grid-template-columns: auto 1fr auto auto; gap: 9px; }
  .site-header .brand-symbol { width: 57px; height: 56px; }
  .site-header nav { display: none; }
  .site-header .header-button { min-height: 40px; padding: 0 14px; font-size: 15px; }
  .menu-button { display: grid; }
  .site-header .mobile-navigation { position: absolute; top: calc(100% + 1px); left: 12px; right: 12px; padding: 12px; flex-direction: column; gap: 0; border: 1px solid rgba(41,75,54,.16); border-radius: 0 0 24px 24px; background: rgba(255,253,248,.98); box-shadow: 0 18px 35px rgba(35,60,42,.14); }
  .site-header.menu-open .mobile-navigation { display: flex; }
  .site-header .mobile-navigation a { padding: 13px 14px; border-bottom: 1px solid rgba(41,75,54,.1); font-size: 16px; }
  .site-header .mobile-navigation a:last-child { border-bottom: 0; }

  /* #menu (задача 3): шапка и подвал теперь делят один <nav id="menu">
     вместо десктопной nav + .mobile-navigation прототипа, и без скрипта
     (остров появится в задаче 21) его нечему скрывать по .menu-open — он
     должен читаться сам по себе. .site-header nav выше гасит любой <nav>
     display:none; здесь тот же вид, что был у .mobile-navigation, но по
     id и без условия — специфичность id перебивает правило по тегу. */
  #menu {
    display: flex;
    flex-direction: column;
    position: absolute;
    top: calc(100% + 1px);
    left: 12px;
    right: 12px;
    padding: 12px;
    gap: 0;
    border: 1px solid rgba(41,75,54,.16);
    border-radius: 0 0 24px 24px;
    background: rgba(255,253,248,.98);
    box-shadow: 0 18px 35px rgba(35,60,42,.14);
  }
  #menu a { padding: 13px 14px; border-bottom: 1px solid rgba(41,75,54,.1); font-size: 16px; }
  #menu a:last-child { border-bottom: 0; }

  .desktop-hero { min-height: 0; padding: 30px 17px 48px; display: flex; flex-direction: column; gap: 0; }
  .desktop-hero::before { inset: 205px -70px 305px 12%; border-radius: 40% 12% 38% 18%; }
  .category-lockup { margin-bottom: 17px; padding-left: 12px; }
  .primary-category { font-size: 17px; }
  .secondary-category { font-size: 15px; }
  .hero-copy { padding-right: 0; }
  .hero-copy h1 { max-width: none; margin-bottom: 20px; font-size: clamp(2.05rem,9.1vw,2.45rem); line-height: 1.08; }
  .mobile-hero-photo { height: 310px; margin: 0 0 21px; display: block; position: relative; overflow: hidden; border-radius: 12px 68px 12px 68px; background: var(--sage); box-shadow: 0 18px 42px rgba(47,69,51,.12); }
  .mobile-hero-photo img { height: 100%; object-fit: cover; object-position: 76% 50%; filter: saturate(.93) contrast(1.025); }
  .mobile-hero-photo figcaption { position: absolute; left: 10px; bottom: 10px; padding: 7px 10px; border-radius: 999px; background: rgba(35,73,49,.82); color: white; font-family: "Lora", Georgia, serif; font-size: 13px; }
  .desktop-photo-window { display: none; }
  .hero-description { max-width: none; color: #344f3e; font-size: 17px; line-height: 1.62; }
  .hero-actions { margin-top: 22px; align-items: stretch; flex-direction: column; gap: 10px; }
  .primary-button { width: 100%; min-height: 50px; justify-content: center; text-align: center; font-size: 16px; }
  .hero-channels { width: 100%; max-width: none; margin-top: 14px; padding: 15px; display: block; border-radius: 10px 34px 10px 34px; }
  .hero-channels-copy { gap: 4px; }
  .hero-channels-copy strong { font-size: 18px; }
  .hero-channels-copy span { font-size: 13px; line-height: 1.42; }
  .hero-channel-links { margin-top: 12px; }
  .hero-channel-links a { min-width: 0; min-height: 43px; padding: 0 10px; font-size: 13px; }

  .program-intro { min-height: 0; padding: 50px 17px 54px; display: flex; flex-direction: column; gap: 27px; }
  .program-intro::before { width: 150px; height: 55px; top: -22px; left: -34px; }
  .program-kicker { margin-bottom: 14px; font-size: 14px; }
  .program-intro h2 { font-size: 2.05rem; }
  .program-intro-copy > p:last-of-type { margin-bottom: 0; color: #455a4d; font-size: 16px; line-height: 1.62; }
  .program-flower-window { width: 100%; max-width: 490px; border-radius: 60px 12px 60px 12px; }
  .program-flower-window img { padding: 8px; }

  .program-details { padding: 52px 17px 64px; }
  .program-action { display: flex; flex-direction: column; gap: 28px; }
  .program-action-photo { width: 100%; height: 390px; aspect-ratio: auto; border-radius: 56px 11px 56px 11px; }
  .program-action-photo img { object-position: 50% 52%; }
  .program-action-photo figcaption { left: 11px; bottom: 11px; padding: 7px 10px; font-size: 13px; }
  .program-action-copy { padding: 0; }
  .program-action-copy h2 { font-size: 2rem; }
  .action-lead { margin-top: 18px; font-size: 16px; line-height: 1.62; }
  .living-principles { margin-top: 25px; }
  .living-principles > div { padding: 15px 0; grid-template-columns: 34px 1fr; gap: 9px; }
  .living-principles span { font-size: 13px; }
  .living-principles p { font-size: 16px; line-height: 1.56; }
  .directions-heading { margin: 72px 0 28px; }
  .directions-heading h2 { font-size: 2rem; }
  .direction-stories { gap: 16px; }
  .direction-story, .direction-story:nth-child(even) { min-height: 0; display: flex; flex-direction: column; border-radius: 48px 10px 48px 10px; }
  .direction-story:nth-child(even) { border-radius: 10px 48px 10px 48px; }
  .direction-story:nth-child(even) .direction-photo { order: 0; }
  .direction-photo { width: 100%; min-height: 0; height: 255px; }
  .direction-story.emotions .direction-photo img { object-position: 49% 50%; }
  .direction-story.stagecraft .direction-photo img { object-position: 50% 52%; }
  .direction-story.thematic .direction-photo img { object-position: 52% 50%; }
  .direction-copy { padding: 26px 22px 29px; }
  .direction-number { font-size: 13px; }
  .direction-copy h3 { margin: 15px 0 13px; font-size: 1.62rem; }
  .direction-copy p { font-size: 16px; line-height: 1.58; }
  .direction-copy small { margin-top: 18px; font-size: 14px; }
  .program-result { margin-top: 17px; padding: 27px 22px; grid-template-columns: 1fr; gap: 16px; border-radius: 10px 36px 10px 36px; }
  .program-result strong { font-size: 21px; }
  .program-result p { font-size: 16px; line-height: 1.6; }
  .program-result a { width: 100%; grid-column: 1; justify-content: center; margin-top: 3px; white-space: normal; text-align: center; }

  .formats-section { padding: 54px 17px 64px; }
  .formats-section::before { width: 170px; height: 60px; right: -35px; top: -28px; }
  .formats-heading h2 { font-size: 2.08rem; }
  .formats-heading > p:last-child { margin-top: 17px; font-size: 16px; line-height: 1.62; }
  .kindergarten-format { margin-top: 30px; display: flex; flex-direction: column; border-radius: 54px 10px 54px 10px; }
  .interior-carousel { min-height: 0; }
  .interior-slide { height: auto; }
  .interior-slide img { height: auto; aspect-ratio: 4 / 3; }
  .interior-slide figcaption { min-height: 50px; padding: 0 13px; }
  .interior-slide figcaption span { font-size: 14px; }
  .interior-slide figcaption small { font-size: 13px; }
  .carousel-arrow { width: 40px; height: 40px; top: 41.5%; }
  .carousel-previous { left: 10px; }
  .carousel-next { right: 10px; }
  .carousel-dots { bottom: 62px; }
  .kindergarten-copy { padding: 29px 22px 31px; }
  .kindergarten-copy h3 { margin: 15px 0 13px; font-size: 2rem; }
  .kindergarten-copy p, .route-format p { font-size: 17px; line-height: 1.58; }
  .kindergarten-copy a { width: 100%; align-self: stretch; margin-top: 23px; }
  .route-formats { margin-top: 16px; grid-template-columns: 1fr; gap: 16px; }
  .route-format, .route-format:nth-child(2) { border-radius: 10px 48px 10px 48px; }
  .route-format:nth-child(2) { border-radius: 48px 10px 48px 10px; }
  .route-format figure { height: 245px; }
  .route-format > div { min-height: 0; padding: 26px 22px 29px; }
  .route-format h3 { margin: 15px 0 13px; font-size: 1.7rem; }
  .route-format a { width: 100%; align-self: stretch; margin-top: 22px; }
  .formats-help { padding: 26px 21px; align-items: stretch; flex-direction: column; border-radius: 10px 36px 10px 36px; }
  .formats-help p { font-size: 17px; }
  .formats-help a { width: 100%; }

  .day-section { padding: 54px 17px 66px; }
  .day-section::before { width: 190px; height: 74px; left: -62px; top: 210px; }
  .day-heading h2 { font-size: 2.08rem; }
  .day-heading > p:last-child { margin-top: 17px; font-size: 16px; line-height: 1.62; }
  .day-layout { margin-top: 30px; display: flex; flex-direction: column; gap: 32px; }
  .day-photo { width: 100%; position: relative; top: auto; border-radius: 10px 54px 10px 54px; }
  .day-photo img { aspect-ratio: 3 / 2; object-fit: contain; }
  .day-photo figcaption { min-height: 76px; padding: 14px 15px; }
  .day-photo figcaption span { white-space: normal; font-size: 17px; line-height: 1.18; }
  .day-photo figcaption small { max-width: 145px; font-size: 12px; }
  .day-timeline::before { left: 20px; }
  .day-moment { min-height: 0; padding-bottom: 20px; grid-template-columns: 42px 1fr; gap: 14px; }
  .day-marker { width: 42px; height: 42px; border-width: 5px; }
  .day-marker span { font-size: 10px; }
  .day-moment-copy { padding: 0 0 20px; }
  .day-moment time { font-size: 13px; }
  .day-moment h3 { margin: 7px 0 8px; font-size: 1.43rem; }
  .day-moment p { color: #405447; font-size: 17px; line-height: 1.6; }
  .day-footer { margin-top: 4px; padding: 25px 21px; align-items: stretch; flex-direction: column; border-radius: 10px 38px 10px 38px; }
  .day-footer p { font-size: 16px; line-height: 1.58; }
  .day-footer a { width: 100%; min-height: 52px; padding: 11px 16px; text-align: center; }

  .care-section { padding: 49px 17px 64px; }
  .care-section::before { width: 190px; height: 72px; right: -68px; top: 58px; }
  .care-heading h2 { font-size: 2.08rem; }
  .care-heading > p:last-child { margin-top: 14px; font-size: 16px; line-height: 1.62; }
  .care-overview { margin-top: 25px; display: flex; flex-direction: column; gap: 29px; }
  .care-main-photo { width: 100%; border-radius: 50px 10px 50px 10px; }
  .care-main-photo figcaption { min-height: 76px; padding: 15px 16px; align-items: flex-start; flex-direction: column; gap: 5px; }
  .care-main-photo figcaption span { font-size: 18px; }
  .care-main-photo figcaption small { font-size: 13px; }
  .care-direction { padding: 19px 0; grid-template-columns: 42px 1fr; gap: 11px; }
  .care-direction > span { width: 34px; height: 34px; font-size: 12px; }
  .care-direction h3 { font-size: 1.48rem; }
  .care-direction p { font-size: 16px; line-height: 1.6; }
  .care-stories { margin-top: 42px; display: flex; flex-direction: column; gap: 16px; }
  .care-story, .care-story:nth-child(2) { width: 100%; margin-top: 0; border-radius: 10px 48px 10px 48px; }
  .care-story:nth-child(2) { border-radius: 48px 10px 48px 10px; }
  .care-story img { height: auto; object-fit: contain; }
  .care-story figcaption { min-height: 0; padding: 21px 20px 23px; }
  .care-story figcaption strong { font-size: 20px; }
  .care-story figcaption span { font-size: 16px; line-height: 1.55; }
  .care-story-arrival { max-width: 520px; align-self: center; }
  .care-footer { margin-top: 17px; padding: 23px 20px; align-items: stretch; flex-direction: column; border-radius: 10px 38px 10px 38px; }
  .care-footer > p { font-size: 16px; line-height: 1.58; }
  .care-footer > div { flex-direction: column; }
  .care-footer a { width: 100%; min-height: 52px; padding: 11px 16px; font-size: 16px; }

  .team-section { padding: 53px 17px 66px; }
  .team-section::before { width: 190px; height: 70px; left: -75px; top: 112px; }
  .team-heading { display: block; }
  .team-heading h2 { font-size: 2.08rem; line-height: 1.08; }
  .team-heading > p { margin-top: 18px; font-size: 16px; line-height: 1.62; }
  .team-leader { width: min(100%,340px); margin: 31px auto 0; padding: 13px; display: block; border-radius: 48px 10px 48px 10px; }
  .team-leader figcaption { padding: 17px 7px 8px; gap: 6px; }
  .team-leader figcaption span { font-size: 12px; }
  .team-leader figcaption strong { font-size: 2.1rem; }
  .team-staff { width: min(100%,560px); margin: 27px auto 0; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 15px 13px; }
  .team-staff .team-member { padding: 10px; display: block; border: 1px solid rgba(41,75,54,.13); border-radius: 34px 9px 34px 9px; background: rgba(255,253,248,.72); }
  .team-staff .team-member:nth-child(2), .team-staff .team-member:nth-child(3) { border-radius: 9px 34px 9px 34px; }
  .team-photo, .team-staff .team-member:nth-child(2) .team-photo, .team-staff .team-member:nth-child(3) .team-photo { border-radius: 40px 9px 40px 9px; }
  .team-staff .team-member:nth-child(2) .team-photo, .team-staff .team-member:nth-child(3) .team-photo { border-radius: 9px 40px 9px 40px; }
  .team-member figcaption { padding: 12px 6px 5px; gap: 4px; }
  .team-member figcaption strong { font-size: 19px; }
  .team-member figcaption span { font-size: 14px; line-height: 1.42; }
  .team-footer { margin-top: 35px; padding-top: 23px; align-items: stretch; flex-direction: column; gap: 19px; }
  .team-footer p { font-size: 16px; line-height: 1.58; }
  .team-footer a { width: 100%; min-height: 52px; padding: 11px 16px; text-align: center; }

  .life-section { padding: 53px 17px 68px; }
  .life-section::before { width: 190px; height: 72px; right: -70px; top: 96px; }
  .life-heading h2 { font-size: 2.08rem; line-height: 1.08; }
  .life-heading > p:last-child { margin-top: 17px; font-size: 16px; line-height: 1.62; }
  .life-stories { margin-top: 31px; display: flex; flex-direction: column; gap: 17px; }
  .life-story-featured { border-radius: 54px 10px 54px 10px; }
  .life-story-featured figure { aspect-ratio: auto; }
  .life-story-featured img { height: auto; object-fit: contain; }
  .life-story-copy { padding: 23px 21px 26px; }
  .life-story-copy > span { font-size: 12px; }
  .life-story-copy h3 { margin-top: 13px; font-size: 1.65rem; }
  .life-story-copy p { font-size: 16px; line-height: 1.6; }
  .life-supporting-stories { gap: 17px; }
  .life-supporting-stories .life-story, .life-supporting-stories .life-story:nth-child(2) { display: block; border-radius: 10px 48px 10px 48px; }
  .life-supporting-stories .life-story:nth-child(2) { border-radius: 48px 10px 48px 10px; }
  .life-supporting-stories figure { min-height: 0; }
  .life-supporting-stories img { height: auto; object-fit: contain; object-position: 50% 50%; }
  .life-supporting-stories .life-story-copy { padding: 23px 21px 26px; }
  .life-supporting-stories .life-story-copy h3 { font-size: 1.58rem; }
  .life-supporting-stories .life-story-copy p { font-size: 16px; line-height: 1.6; }
  .life-channels { margin-top: 22px; padding: 23px 21px 24px; display: block; border-radius: 10px 42px 10px 42px; }
  .life-channels-copy > span { font-size: 12px; }
  .life-channels-copy h3 { margin-top: 9px; font-size: 1.58rem; line-height: 1.17; }
  .life-channels-copy p { font-size: 16px; line-height: 1.6; }
  .life-channel-actions { width: 100%; margin-top: 20px; display: grid; grid-template-columns: 1fr; gap: 10px; }
  .life-channel-actions a { width: 100%; min-height: 52px; padding: 11px 16px; }

  .reviews-section { padding: 54px 17px 69px; }
  .reviews-section::before { right: -18px; top: 12px; font-size: 128px; }
  .reviews-heading { display: block; }
  .reviews-heading h2 { font-size: 2.08rem; line-height: 1.08; }
  .reviews-heading > p { margin-top: 17px; font-size: 16px; line-height: 1.58; }
  .reviews-grid { margin-top: 31px; display: flex; flex-direction: column; gap: 15px; }
  .review-card, .review-card:nth-child(1), .review-card:nth-child(2), .review-card:nth-child(3), .review-card:nth-child(4) { min-height: 0; margin-top: 0; padding: 25px 21px 23px; border-radius: 10px 46px 10px 46px; }
  .review-card:nth-child(even) { border-radius: 46px 10px 46px 10px; }
  .review-card blockquote { margin: 20px 0 24px; font-size: 18px; line-height: 1.52; }
  .review-card footer { align-items: flex-start; flex-direction: column; gap: 10px; }
  .review-source { justify-content: flex-start; text-align: left; }
  .reviews-action { margin-top: 29px; }
  .reviews-action a { width: 100%; min-height: 52px; padding: 12px 15px; text-align: center; }

  .pricing-announcement { padding: 17px; display: block; }
  .pricing-announcement-copy { width: 100%; min-height: 0; padding: 42px 24px 38px; border-radius: 24px; }
  .pricing-announcement h2 { font-size: 2.35rem; line-height: 1.02; }
  .pricing-announcement-copy > p:not(.program-kicker) { margin: 19px 0 25px; font-size: 16px; line-height: 1.58; }
  .pricing-announcement-copy > a { width: 100%; min-height: 52px; padding: 12px 15px; text-align: center; }
  .pricing-announcement-visual { width: 100%; min-height: 0; height: auto; margin-top: 12px; padding: 20px 15px 18px; position: relative; right: auto; top: auto; bottom: auto; border-radius: 58px 18px 18px 58px; }
  .pricing-texture-panel { border-radius: inherit; }
  .pricing-announcement-formats { width: 100%; display: grid; grid-template-columns: 1fr; gap: 10px; position: relative; left: auto; top: auto; transform: none; }
  .pricing-announcement-formats > div { min-height: 82px; margin: 0; padding: 14px 16px; display: grid; grid-template-columns: 44px 1fr; align-items: center; gap: 12px; border-radius: 18px; }
  .pricing-announcement-formats > div:nth-child(2) { margin-left: 0; }
  .pricing-announcement-formats .format-symbol { width: 38px; height: 38px; font-size: 22px; }
  .pricing-announcement-formats strong { font-size: 18px; }
  .pricing-announcement-formats small { margin-top: 5px; font-size: 13px; }
  .pricing-announcement-formats .pricing-fee-note { grid-column: 1 / -1; margin: 0 auto; padding: 7px 12px; font-size: 12px; }

  .acquaintance-section { padding: 54px 17px 66px; }
  .acquaintance-section::after { width: 170px; height: 60px; right: -55px; top: 9px; }
  .acquaintance-heading h2 { font-size: 2.2rem; line-height: 1.06; }
  .acquaintance-heading > p:last-child { margin-top: 18px; font-size: 16px; line-height: 1.6; }
  .acquaintance-steps { margin-top: 31px; grid-template-columns: 1fr; gap: 12px; }
  .acquaintance-steps article, .acquaintance-steps article:nth-child(even) { min-height: 0; padding: 22px 18px; grid-template-columns: 42px 1fr; gap: 14px; border-radius: 10px 38px 10px 38px; }
  .acquaintance-step-number { width: 38px; height: 38px; font-size: 11px; }
  .acquaintance-steps h3 { margin-top: 0; font-size: 1.45rem; }
  .acquaintance-steps p { font-size: 16px; line-height: 1.58; }
  .acquaintance-action { margin-top: 12px; padding: 25px 21px; display: block; border-radius: 10px 38px 10px 38px; }
  .acquaintance-action p { font-size: 16px; line-height: 1.58; }
  .acquaintance-action a { width: 100%; min-height: 52px; margin-top: 21px; padding: 12px 15px; text-align: center; }

  .faq-section { padding: 58px 17px 70px; }
  .faq-heading h2 { font-size: 2.2rem; line-height: 1.06; }
  .faq-heading > p:last-child { margin-top: 18px; font-size: 16px; }
  .faq-groups { margin-top: 36px; gap: 38px; }
  .faq-group { display: block; }
  .faq-group > h3 { margin: 0 0 14px; }
  .faq-list summary { padding: 20px 2px; gap: 14px; font-size: 1.3rem; }
  .faq-list summary i { width: 30px; height: 30px; }
  .faq-list summary i::before, .faq-list summary i::after { left: 8px; top: 14px; }
  .faq-list details > p { margin: -1px 38px 21px 2px; font-size: 16px; line-height: 1.62; }
  .faq-list details > a { margin-left: 2px; }
  .faq-action { margin-top: 38px; padding-left: 0; }
  .faq-action a { width: 100%; min-height: 52px; padding: 12px 15px; }

  .contact-section { padding: 58px 17px 70px; }
  .contact-section::after { width: 190px; height: 70px; right: -70px; top: 12px; }
  .contact-heading h2 { font-size: 2.2rem; line-height: 1.06; }
  .contact-heading > p:last-child { margin-top: 18px; font-size: 16px; }
  .contact-layout { margin-top: 34px; display: block; }
  .contact-detail { padding: 21px 18px; grid-template-columns: 34px 1fr; gap: 10px; }
  .contact-detail-call a { font-size: 1.8rem; }
  .contact-detail a, .contact-detail strong { font-size: 16px; }
  .contact-map iframe, .contact-map-frame { height: 255px; }
  .contact-map-actions { grid-template-columns: 1fr; }
  .contact-hours dl > div { display: block; }
  .contact-hours dd { margin-top: 3px; text-align: left; }
  .contact-message { padding: 21px 18px; }
  .contact-form { margin-top: 14px; padding: 27px 18px 30px; display: block; border-radius: 16px 48px 16px 48px; }
  .contact-form-heading { margin-bottom: 22px; }
  .contact-form-heading h3 { font-size: 1.9rem; }
  .contact-form label { margin-top: 15px; }
  .contact-form .contact-consent { margin-top: 19px; }
  .contact-form button { width: 100%; margin-top: 20px; }
  .contact-form-note { display: block; margin-top: 13px; }

  .site-footer { border-top-width: 5px; }
  .footer-main { padding: 39px 20px 34px; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 34px 20px; }
  .footer-brand { grid-column: 1 / -1; }
  .footer-brand .brand-symbol { width: 75px; height: 73px; }
  .footer-brand > strong { max-width: 280px; margin-top: 12px; font-size: 18px; }
  .footer-brand > p { margin-top: 13px; }
  .footer-nav > span, .footer-connect > span, .footer-work > span { margin-bottom: 14px; }
  .footer-work { grid-column: 1 / -1; padding-top: 28px; border-top: 1px solid rgba(41,75,54,.14); }
  .footer-phone { font-size: 17px; }
  .footer-legal { margin: 0 20px; padding: 23px 0; display: block; }
  .footer-legal p { display: grid; gap: 5px; }
  .footer-legal nav { margin-top: 18px; display: grid; gap: 9px; justify-content: start; }
  .footer-bottom { padding: 15px 20px 18px; }

  .vacancy-hero { min-height: 0; padding: 47px 17px 58px; display: flex; flex-direction: column; gap: 34px; align-items: stretch; }
  .vacancy-hero-copy h1 { font-size: 2.65rem; line-height: 1.01; }
  .vacancy-hero-copy > p:not(.program-kicker) { margin-top: 21px; font-size: 16px; line-height: 1.6; }
  .vacancy-hero-copy > a { width: 100%; justify-content: center; }
  .vacancy-hero-visual { width: 100%; aspect-ratio: 1 / .9; }
  .vacancy-tree { transform: scale(.82); }
  .vacancy-values, .vacancy-directions, .vacancy-resume { padding: 58px 17px 66px; display: block; }
  .vacancy-values h2, .vacancy-directions h2, .vacancy-resume h2 { font-size: 2.2rem; line-height: 1.06; }
  .vacancy-values > div > p:last-child, .vacancy-directions-heading > p:last-child, .vacancy-resume-copy > p:last-child { margin-top: 18px; font-size: 16px; }
  .vacancy-values ol { margin-top: 32px; grid-template-columns: 1fr; }
  .vacancy-values li { min-height: 125px; padding: 21px; }
  .vacancy-directions > div:last-child { margin-top: 30px; display: grid; grid-template-columns: 1fr; }
  .vacancy-directions > div:last-child span { min-height: 47px; }
  .vacancy-resume-copy { position: static; }
  .vacancy-form { margin-top: 31px; padding: 26px 18px 29px; display: block; border-radius: 16px 48px 16px 48px; }
  .vacancy-form label { margin-top: 15px; }
  .vacancy-form button { width: 100%; margin-top: 20px; }
  .vacancy-form-note { margin-top: 13px; display: block; }
  .vacancy-more { padding: 30px 20px; display: block; }
  .vacancy-more nav { margin-top: 22px; display: grid; justify-content: stretch; }
  .vacancy-more a { justify-content: center; text-align: center; }

  .pricing-page { padding: 12px 11px 18px; }
  .pricing-page-hero { min-height: 0; display: block; border-radius: 22px; }
  .pricing-page-hero-copy { padding: 44px 20px 38px; }
  .pricing-page-hero h1 { font-size: 2.5rem; line-height: 1.02; }
  .pricing-page-hero-copy > p:last-child { margin-top: 20px; font-size: 16px; line-height: 1.62; }
  .pricing-page-hero-photo { min-height: 0; height: 300px; border-radius: 65px 0 0; }
  .pricing-page-hero-photo img { object-position: 48% 43%; }
  .visit-formats { padding: 13px 0 0; display: flex; flex-direction: column; gap: 12px; }
  .visit-format-card, .visit-format-card:nth-child(2) { width: 100%; margin-top: 0; padding: 25px 21px 27px; border-radius: 22px; }
  .visit-format-card > header { grid-template-columns: 38px 1fr; gap: 10px; }
  .visit-format-card > header > span { width: 34px; height: 34px; }
  .visit-format-card h2 { font-size: 1.78rem; }
  .visit-format-price { margin: 24px 0 22px; }
  .visit-format-price strong { font-size: 2.8rem; }
  .visit-format-schedule { padding: 15px 0; }
  .visit-format-includes { margin-top: 22px; }
  .visit-format-includes li { font-size: 16px; }
  .visit-format-closing { margin-top: 22px; padding-top: 18px; font-size: 15px; line-height: 1.58; }
  .entrance-fee-card { display: block; padding: 27px 21px 29px; border-radius: 22px; }
  .entrance-fee-card .visit-format-price { margin: 25px 0 19px; }
  .entrance-fee-copy strong { margin-bottom: 9px; font-size: 15px; line-height: 1.5; }
  .entrance-fee-copy p { font-size: 16px; line-height: 1.6; }
  .pricing-page-cta { margin-top: 12px; padding: 34px 21px 30px; display: block; border-radius: 22px; }
  .pricing-page-cta h2 { font-size: 2.2rem; }
  .pricing-page-cta p:last-child { margin-top: 18px; font-size: 16px; line-height: 1.6; }
  .pricing-page-actions { margin-top: 27px; align-items: stretch; flex-direction: column; }
  .pricing-page-actions a { width: 100%; min-height: 52px; padding: 12px 15px; text-align: center; }

  .club-pricing-page main { padding-top: 78px; }
  .club-pricing-hero { width: calc(100% - 32px); padding: 30px 0 36px; }
  .club-pricing-hero > div:first-child { display: block; }
  .club-pricing-hero h1 { margin-top: 9px; font-size: 2.75rem; }
  .club-pricing-hero > div:first-child > p:last-child { margin-top: 19px; font-size: 17px; line-height: 1.58; }
  .club-pricing-guides { margin-top: 26px; grid-template-columns: 1fr; gap: 9px; }
  .club-pricing-guides div { padding: 15px 17px; }
  .club-price-list { padding: 46px 16px 52px; }
  .club-price-list-heading { display: block; margin-bottom: 24px; }
  .club-price-list-heading h2 { font-size: 2.35rem; }
  .club-price-table { border: 0; border-radius: 0; background: transparent; overflow: visible; }
  .club-price-row.club-price-header { display: none; }
  .club-price-row { min-height: 0; margin-top: 12px; padding: 20px 18px; display: grid; grid-template-columns: 1fr; border: 1px solid rgba(42,83,53,.14); border-radius: 22px; background: rgba(255,253,247,.92); }
  .club-price-row:first-of-type { margin-top: 0; }
  .club-price-row > * { padding: 0; border: 0; }
  .club-price-row h3 { padding-bottom: 15px; font-size: 22px; border-bottom: 1px solid rgba(42,83,53,.11); }
  .club-price-row > div { min-height: 44px; padding: 11px 0; border-top: 1px solid rgba(42,83,53,.09); }
  .club-price-row h3 + div { border-top: 0; }
  .club-price-row > div > span { display: inline; }
  .club-price-row .club-price-best { margin: 0 -8px -4px; padding: 12px 8px 8px; border-radius: 11px; }
  .club-pricing-member-note,.club-pricing-current-note,.club-pricing-cta { width: calc(100% - 32px); }
  .club-pricing-member-note { margin-top: 30px; padding: 25px 21px; grid-template-columns: 1fr; gap: 20px; border-radius: 26px 42px 26px 26px; }
  .club-pricing-member-note > div:first-child { width: 82px; height: 82px; }
  .club-pricing-member-note > div:first-child strong { font-size: 25px; }
  .club-pricing-member-note h2,.club-pricing-current-note h2,.club-pricing-cta h2 { font-size: 2.15rem; }
  .club-pricing-current-note { margin-top: 24px; padding: 25px 21px; grid-template-columns: 1fr; gap: 22px; border-radius: 26px; }
  .club-pricing-current-note > a { white-space: normal; text-align: center; }
  .club-pricing-cta { margin-top: 24px; margin-bottom: 52px; padding: 26px 21px; grid-template-columns: 1fr; gap: 22px; border-radius: 26px 26px 44px 26px; }
  .club-pricing-cta > div:last-child { grid-template-columns: 1fr; }
  .club-pricing-cta .primary-button { grid-column: auto; text-align: center; }

  .team-page-hero { padding: 52px 17px 44px; }
  .team-page-hero::after { width: 190px; height: 70px; right: -70px; top: 32px; }
  .team-page-hero h1 { font-size: 2.45rem; line-height: 1.03; }
  .team-page-hero > p:last-child { margin-top: 19px; font-size: 16px; line-height: 1.62; }
  .team-profile { padding: 50px 17px 61px; display: flex; flex-direction: column; gap: 32px; scroll-margin-top: 135px; }
  .team-profile-founder { padding-top: 58px; }
  .team-profile-photo { width: min(100%,310px); margin: 0 auto; position: relative; top: auto; border-radius: 54px 10px 54px 10px; }
  .team-profile-founder .team-profile-photo { width: min(100%,330px); border-radius: 62px 11px 62px 11px; }
  .team-profile-photo figcaption { padding: 18px 20px 21px; }
  .team-profile-photo figcaption strong { font-size: 24px; }
  .team-profile-photo figcaption span { font-size: 14px; }
  .team-profile-content h2 { font-size: 2.05rem; }
  .team-profile-intro { margin: 19px 0 28px; font-size: 16px; line-height: 1.64; }
  .team-profile-intro p { margin-bottom: 15px; }
  .team-profile-facts article { padding: 19px 0; grid-template-columns: 40px 1fr; gap: 11px; }
  .team-profile-facts article > span { width: 32px; height: 32px; }
  .team-profile-facts h3 { font-size: 21px; }
  .team-profile-facts p { font-size: 16px; }
  .team-profile-directions { padding: 22px 20px 24px; border-radius: 10px 38px 10px 38px; }
  .team-profile-directions h3 { font-size: 22px; }
  .team-profile-directions ul { grid-template-columns: 1fr; gap: 10px; }
  .team-profile-directions li { font-size: 16px; }
  .team-page-cta { padding: 52px 17px 60px; display: block; }
  .team-page-cta h2 { font-size: 2.25rem; }
  .team-page-cta p:last-child { margin-top: 20px; font-size: 16px; line-height: 1.62; }
  .team-page-cta a { width: 100%; margin-top: 28px; }
}

@media (max-width: 360px) {
  .hero-channel-links { grid-template-columns: 1fr; }
}

/* Internal page: Author's program */
.program-page main { overflow: hidden; }
.program-page h2, .program-page h3 { font-family: "Lora", Georgia, serif; font-weight: 400; letter-spacing: -.035em; }
.program-page-hero { min-height: calc(100svh - 86px); padding: 46px 4.6% 58px; display: grid; grid-template-columns: .88fr 1.12fr; gap: 4.5vw; align-items: center; background: linear-gradient(115deg,#f7f2e8 0 48%,#e7ecd9 48% 100%); }
.program-page-hero-copy h1 { max-width: 680px; margin: 0; font-size: clamp(2.9rem,4.4vw,5.15rem); line-height: .99; }
.program-page-hero-copy > p:not(.program-kicker) { max-width: 650px; margin: 27px 0 0; color: #455a4d; font-size: 19px; line-height: 1.65; }
.program-page-hero-copy > a { min-height: 51px; margin-top: 30px; padding: 0 21px; display: inline-flex; align-items: center; gap: 9px; border-radius: 999px; background: var(--forest); color: white; font-weight: 600; text-decoration: none; }
.program-page-hero-photo { width: 100%; height: auto; min-height: 0; aspect-ratio: 3/2; margin: 0; position: relative; overflow: hidden; border-radius: 95px 18px 95px 18px; box-shadow: 0 24px 65px rgba(39,65,46,.14); }
.program-page-hero-photo img { height: 100%; object-fit: cover; object-position: center; }
.program-page-hero-photo figcaption { position: absolute; left: 20px; bottom: 18px; padding: 9px 14px; border-radius: 999px; background: rgba(41,75,54,.88); color: white; font-size: 14px; }

.program-seven { padding: 96px 6.2% 104px; position: relative; background: #eef0df; }
.program-seven::after { content: ""; width: 280px; height: 100px; position: absolute; right: -60px; top: 32px; border-top: 1.5px solid var(--olive); border-radius: 50%; transform: rotate(-8deg); }
.program-seven-heading { max-width: 830px; }
.program-seven-heading h2, .program-system-copy h2, .program-grain-heading h2, .program-ages h2, .program-directions-head h2, .program-life-result h2, .program-page-cta h2 { margin: 0; font-size: clamp(2.55rem,4vw,4.25rem); line-height: 1.03; }
.program-seven-heading > p:last-child, .program-system-copy > p:last-child, .program-grain-heading > p:last-child { max-width: 730px; margin: 23px 0 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }
.program-seven-visual { margin-top: 48px; display: grid; grid-template-columns: .88fr 1.12fr; align-items: center; gap: 22px; }
.program-seven-flower, .program-seven-photo { margin: 0; overflow: hidden; background: var(--paper); box-shadow: 0 20px 55px rgba(39,65,46,.1); }
.program-seven-flower { aspect-ratio: 1; padding: 12px; position: relative; border-radius: 46% 46% 18% 46% / 24% 24% 18% 24%; }
.program-seven-flower img { height: 100%; object-fit: contain; }
.program-petal-hotspots { position: absolute; inset: 12px; }
.program-petal-hotspots button { width: 24%; aspect-ratio: 1; padding: 0; position: absolute; translate: -50% -50%; border: 2px solid transparent; border-radius: 50%; background: transparent; cursor: pointer; transition: border-color .22s ease, background-color .22s ease, box-shadow .22s ease, transform .22s ease; }
.program-petal-hotspots button:nth-child(1) { left: 22%; top: 51%; }
.program-petal-hotspots button:nth-child(2) { left: 32%; top: 76%; }
.program-petal-hotspots button:nth-child(3) { left: 65%; top: 76%; }
.program-petal-hotspots button:nth-child(4) { left: 78%; top: 51%; }
.program-petal-hotspots button:nth-child(5) { left: 69%; top: 27%; }
.program-petal-hotspots button:nth-child(6) { left: 50%; top: 17%; }
.program-petal-hotspots button:nth-child(7) { left: 29%; top: 28%; }
.program-petal-hotspots button:hover, .program-petal-hotspots button:focus-visible, .program-petal-hotspots button[aria-pressed="true"] { border-color: rgba(41,75,54,.62); background: rgba(255,253,248,.13); box-shadow: 0 0 0 7px rgba(255,253,248,.52), 0 10px 24px rgba(41,75,54,.16); transform: scale(1.04); outline: none; }
.program-seven-photo { aspect-ratio: 3/2; border-radius: 18px 88px 18px 88px; }
.program-seven-photo img { height: 100%; object-fit: cover; }
.program-seven-interactive { margin-top: 25px; }
.program-seven-list { display: flex; justify-content: center; gap: 9px; flex-wrap: wrap; }
.program-seven-list button { min-height: 42px; padding: 0 14px; display: inline-flex; align-items: center; gap: 8px; border: 1px solid rgba(41,75,54,.19); border-radius: 999px; background: rgba(255,253,248,.66); color: var(--forest); font: inherit; font-weight: 600; cursor: pointer; transition: color .2s ease, background-color .2s ease, border-color .2s ease, transform .2s ease; }
.program-seven-list button:hover, .program-seven-list button:focus-visible, .program-seven-list button[aria-selected="true"] { border-color: var(--forest); background: var(--forest); color: white; outline: none; box-shadow: var(--focus-ring); transform: translateY(-2px); }
.program-seven-list i { color: #748225; font-size: 11px; font-style: normal; }
.program-seven-list button[aria-selected="true"] i, .program-seven-list button:hover i, .program-seven-list button:focus-visible i { color: #d5dc8e; }
.program-side-description { max-width: 850px; min-height: 132px; margin: 18px auto 0; padding: 25px 28px; display: grid; grid-template-columns: 48px 1fr; gap: 18px; border: 1px solid rgba(41,75,54,.16); border-radius: 16px 48px 16px 48px; background: rgba(255,253,248,.82); box-shadow: 0 14px 38px rgba(39,65,46,.07); }
.program-side-description > span { padding-top: 4px; color: #748225; font-size: 13px; font-weight: 700; letter-spacing: .08em; }
.program-side-description h3 { margin: 0 0 8px; font-size: 27px; }
.program-side-description p { margin: 0; color: var(--ink-soft); font-size: 17px; line-height: 1.58; }

.program-system-story { padding: 76px 4.6% 66px; display: grid; grid-template-columns: .8fr 1.2fr; gap: 2.8vw; align-items: center; position: relative; background: var(--milk); }
.program-system-copy { min-width: 0; position: relative; z-index: 2; }
.program-system-copy > p:last-of-type { max-width: 650px; margin: 30px 0 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }
.program-system-description { min-height: 126px; margin-top: 30px; padding: 20px 22px; display: grid; grid-template-columns: 34px 1fr; gap: 12px; border: 1px solid rgba(41,75,54,.16); border-radius: 14px 42px 14px 42px; background: rgba(255,253,248,.84); box-shadow: 0 14px 34px rgba(39,65,46,.07); }
.program-system-description > span { padding-top: 4px; color: #748225; font-size: 12px; font-weight: 700; letter-spacing: .08em; }
.program-system-description h3 { margin: 0 0 7px; font-size: 24px; }
.program-system-description p { margin: 0; color: var(--ink-soft); font-size: 16px; line-height: 1.55; }
.program-system-tree { width: 100%; aspect-ratio: 16/9; margin: 0; position: relative; overflow: hidden; border-radius: 28px 72px 28px 72px; background: #f9f5ed; box-shadow: 0 23px 58px rgba(39,65,46,.1); }
.program-system-tree::before { content: ""; position: absolute; inset: 0 52% 0 0; z-index: 1; background: linear-gradient(90deg,#f9f5ed 82%,rgba(249,245,237,0)); pointer-events: none; }
.program-system-tree img { width: 100%; height: 100%; object-fit: cover; }
.program-tree-controls { position: absolute; inset: 0; z-index: 2; }
.program-tree-branch, .program-tree-root { min-height: 38px; padding: 7px 13px; position: absolute; display: inline-flex; align-items: center; justify-content: center; border: 1px solid rgba(41,75,54,.55); border-radius: 999px; background: rgba(255,253,248,.91); color: var(--forest); font: inherit; font-size: clamp(12px,1vw,15px); font-weight: 650; white-space: nowrap; box-shadow: 0 7px 20px rgba(39,65,46,.08); }
.program-tree-branch { cursor: pointer; transition: color .2s ease, background-color .2s ease, border-color .2s ease, transform .2s ease; }
.program-tree-branch:hover, .program-tree-branch:focus-visible, .program-tree-branch[aria-pressed="true"] { border-color: var(--forest); background: var(--forest); color: white; outline: none; box-shadow: var(--focus-ring); transform: translateY(-2px); }
.program-tree-branch.branch-1 { left: 43%; top: 56%; }
.program-tree-branch.branch-2 { right: 3.4%; top: 21%; }
.program-tree-branch.branch-3 { right: 1%; top: 52%; }
.program-tree-root { left: 66.5%; bottom: 2.6%; transform: translateX(-50%); z-index: 2; }
.program-system-final { grid-column: 1/-1; margin: 22px 0 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.35rem,1.9vw,1.75rem); text-align: center; }

.program-grain { padding: 96px 6.2% 108px; background: #eadcc7; }
.program-grain-heading { max-width: 820px; }
.program-grain-grid { margin-top: 45px; display: grid; grid-template-columns: 1.18fr .9fr .9fr; gap: 18px; align-items: start; }
.program-grain-grid article { overflow: hidden; border-radius: 16px 62px 16px 62px; background: rgba(255,253,248,.92); box-shadow: 0 18px 44px rgba(76,57,34,.08); }
.program-grain-grid article:nth-child(2) { margin-top: 48px; }
.program-grain-grid article:nth-child(3) { margin-top: 95px; }
.program-grain-grid figure { aspect-ratio: 3/2; margin: 0; overflow: hidden; }
.program-grain-grid img { height: 100%; object-fit: cover; }
.program-grain-grid article > div { padding: 24px 24px 27px; }
.program-grain-grid span, .program-page-direction > div > span { color: #748225; font-size: 12px; font-weight: 600; letter-spacing: .09em; }
.program-grain-grid h3 { margin: 9px 0 10px; font-size: 27px; }
.program-grain-grid p { margin: 0; color: var(--ink-soft); font-size: 16px; line-height: 1.58; }

.program-ages { padding: 92px 6.2% 102px; display: grid; grid-template-columns: 1.05fr .95fr .95fr; gap: 20px; background: #f7f2e8; }
.program-ages > div { padding-right: 4vw; }
.program-ages article { min-height: 330px; padding: 35px 32px; border: 1px solid var(--line); border-radius: 64px 14px 64px 14px; background: rgba(255,253,248,.82); }
.program-ages article:last-child { margin-top: 55px; background: #e7ecd9; }
.program-ages article span { color: #626e24; font-size: 13px; font-weight: 600; letter-spacing: .06em; } /* было #687526 — 4,18:1 на --e7ecd9, задача 19 */
.program-ages article h3 { margin: 45px 0 18px; font-size: 31px; line-height: 1.08; }
.program-ages article p { margin: 0; color: var(--ink-soft); font-size: 17px; line-height: 1.62; }

.program-page-directions { padding: 100px 6.2% 110px; background: #eef0df; }
.program-directions-head { max-width: 900px; margin-bottom: 43px; }
.program-directions-head nav { margin-top: 27px; display: flex; flex-wrap: wrap; gap: 9px; }
.program-directions-head nav a { padding: 10px 14px; border: 1px solid rgba(41,75,54,.25); border-radius: 999px; font-size: 14px; font-weight: 600; text-decoration: none; }
.program-page-direction { min-height: 0; margin-top: 22px; display: grid; grid-template-columns: 1.12fr .88fr; align-items: center; scroll-margin-top: 105px; overflow: hidden; border-radius: 80px 16px 80px 16px; background: var(--paper); }
.program-page-direction:nth-of-type(even) { grid-template-columns: .88fr 1.12fr; border-radius: 16px 80px 16px 80px; }
.program-page-direction:nth-of-type(even) figure { order: 2; }
.program-page-direction figure { width: calc(100% - 26px); min-height: 0; aspect-ratio: 3/2; margin: 26px 0 26px 26px; overflow: hidden; border-radius: 58px 16px 76px 16px; }
.program-page-direction:nth-of-type(even) figure { margin: 26px 26px 26px 0; border-radius: 16px 58px 16px 76px; }
.program-page-direction figure img { height: 100%; object-fit: cover; }
.program-page-direction > div { padding: clamp(34px,4.6vw,68px); display: flex; flex-direction: column; justify-content: center; }
.program-page-direction h3 { margin: 20px 0 18px; font-size: clamp(2rem,2.8vw,3.1rem); line-height: 1.06; }
.program-page-direction p { margin: 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }
.program-page-direction small { margin-top: 28px; color: #626e24; font-size: 14px; font-weight: 600; line-height: 1.5; } /* тот же цвет, что и .program-ages article span — задача 19 */

.program-life-result { padding: 94px 6.2% 102px; display: grid; grid-template-columns: .9fr 1.1fr; gap: 7vw; background: var(--milk); }
.program-life-result ul { margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; list-style: none; }
.program-life-result li { min-height: 105px; padding: 23px 22px; display: flex; align-items: center; border: 1px solid var(--line); border-radius: 12px 38px 12px 38px; background: rgba(255,253,248,.75); font-size: 17px; line-height: 1.5; }
.program-page-cta { padding: 68px 6.2%; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 40px; background: var(--forest); color: white; }
.program-page-cta .program-kicker { color: #c9d36c; }
.program-page-cta > div > p:last-child { max-width: 760px; margin: 21px 0 0; color: rgba(255,255,255,.82); font-size: 18px; line-height: 1.62; }
.program-page-cta > a { min-height: 52px; padding: 0 21px; display: inline-flex; align-items: center; gap: 9px; border-radius: 999px; background: var(--olive); color: white; font-weight: 600; text-decoration: none; white-space: nowrap; }

@media (max-width: 760px) {
  .program-page-hero { min-height: 0; padding: 46px 17px 58px; display: flex; flex-direction: column; background: linear-gradient(180deg,#f7f2e8 0 58%,#e7ecd9 58% 100%); }
  .program-page-hero-copy h1 { font-size: 2.65rem; line-height: 1.01; }
  .program-page-hero-copy > p:not(.program-kicker) { margin-top: 21px; font-size: 16px; line-height: 1.62; }
  .program-page-hero-copy > a { width: 100%; justify-content: center; text-align: center; }
  .program-page-hero-photo { aspect-ratio: 3/2; border-radius: 58px 12px 58px 12px; }
  .program-seven, .program-system-story, .program-grain, .program-ages, .program-page-directions, .program-life-result { padding: 60px 17px 68px; }
  .program-seven-heading h2, .program-system-copy h2, .program-grain-heading h2, .program-ages h2, .program-directions-head h2, .program-life-result h2, .program-page-cta h2 { font-size: 2.25rem; }
  .program-seven-heading > p:last-child, .program-system-copy > p:last-child, .program-grain-heading > p:last-child { font-size: 16px; }
  .program-seven-visual { margin-top: 32px; display: flex; flex-direction: column; }
  .program-seven-flower, .program-seven-photo { width: 100%; }
  .program-seven-list { justify-content: flex-start; }
  .program-seven-list button { min-height: 40px; padding: 0 12px; font-size: 14px; }
  .program-side-description { min-height: 0; padding: 22px 19px; grid-template-columns: 32px 1fr; gap: 8px; border-radius: 12px 38px 12px 38px; }
  .program-side-description h3 { font-size: 23px; }
  .program-side-description p { font-size: 15px; }
  .program-system-story { display: block; }
  .program-system-copy > p:last-of-type { margin-top: 22px; font-size: 16px; }
  .program-system-description { min-height: 145px; margin-top: 25px; }
  .program-system-tree { margin-top: 28px; aspect-ratio: 4/5; border-radius: 20px 52px 20px 52px; }
  .program-system-tree::before { display: none; }
  .program-system-tree img { width: 222%; max-width: none; height: 100%; position: absolute; inset: 0 0 0 auto; object-fit: cover; object-position: right center; }
  .program-tree-branch, .program-tree-root { min-height: 35px; padding: 6px 10px; font-size: 12px; }
  .program-tree-branch.branch-1 { left: 5%; top: 53%; }
  .program-tree-branch.branch-2 { right: 3%; top: 21%; }
  .program-tree-branch.branch-3 { right: 2%; top: 51%; }
  .program-tree-root { left: 31%; bottom: 3%; min-width: 126px; }
  .program-system-final { margin-top: 23px; font-size: 1.35rem; line-height: 1.35; }
  .program-grain-grid { margin-top: 32px; display: flex; flex-direction: column; }
  .program-grain-grid article:nth-child(2), .program-grain-grid article:nth-child(3) { margin-top: 0; }
  .program-grain-grid article { border-radius: 12px 48px 12px 48px; }
  .program-ages { display: block; }
  .program-ages > div { padding-right: 0; }
  .program-ages article, .program-ages article:last-child { min-height: 0; margin-top: 20px; padding: 28px 23px; }
  .program-ages article h3 { margin-top: 24px; }
  .program-directions-head nav { display: grid; }
  .program-directions-head nav a { text-align: center; }
  .program-page-direction, .program-page-direction:nth-of-type(even) { min-height: 0; display: flex; flex-direction: column; border-radius: 12px 52px 12px 52px; }
  .program-page-direction:nth-of-type(even) figure { order: 0; }
  .program-page-direction figure, .program-page-direction:nth-of-type(even) figure { width: calc(100% - 28px); min-height: 0; aspect-ratio: 3/2; margin: 14px 14px 0; border-radius: 42px 10px 42px 10px; }
  .program-page-direction > div { padding: 28px 22px 32px; }
  .program-page-direction h3 { font-size: 2rem; }
  .program-page-direction p { font-size: 16px; }
  .program-life-result { display: block; }
  .program-life-result ul { margin-top: 31px; grid-template-columns: 1fr; }
  .program-life-result li { min-height: 0; }
  .program-page-cta { padding: 58px 17px 64px; display: block; }
  .program-page-cta > div > p:last-child { font-size: 16px; }
  .program-page-cta > a { width: 100%; margin-top: 27px; justify-content: center; text-align: center; }
}

/* Kindergarten internal page */
.nutrition-page h1, .nutrition-page h2, .nutrition-page h3 { font-family: "Lora",Georgia,serif; font-weight: 400; }
.nutrition-page h2 { margin: 8px 0 18px; font-size: clamp(2.35rem,4vw,4.25rem); line-height: 1.05; letter-spacing: -.035em; }
.nutrition-hero { min-height: calc(100svh - 86px); padding: 54px 4.6% 66px; display: grid; grid-template-columns: .9fr 1.1fr; gap: 4vw; align-items: center; background: linear-gradient(125deg,#f7f2e8 0 57%,#e7ecd9 57% 100%); }
.nutrition-back { display: inline-flex; margin-bottom: 30px; color: #68762b; font-weight: 600; text-decoration: none; }
.nutrition-hero h1 { max-width: 730px; margin: 14px 0 23px; font-size: clamp(2.8rem,4.65vw,5.15rem); line-height: 1.01; }
.nutrition-hero > div > p:not(.eyebrow) { max-width: 700px; margin: 0; color: var(--ink-soft); font-size: 17px; line-height: 1.66; }
.nutrition-hero aside { max-width: 650px; margin-top: 21px; padding: 15px 18px; border-left: 3px solid var(--olive); border-radius: 0 18px 18px 0; background: rgba(255,253,248,.64); color: var(--forest); font-size: 15px; line-height: 1.52; }
.nutrition-hero .primary-button { margin-top: 25px; text-decoration: none; }
.nutrition-hero figure { margin: 0; overflow: hidden; border-radius: 92px 18px 92px 18px; box-shadow: 0 24px 60px rgba(39,65,46,.12); }
.nutrition-hero figure img { width: 100%; aspect-ratio: 3/2; object-fit: cover; }
.nutrition-rhythm { padding: 92px 6.2% 100px; background: #fbf8f1; }
.nutrition-rhythm header { max-width: 850px; }
.nutrition-rhythm header > p:last-child, .nutrition-seasons-copy > p:last-child { max-width: 750px; color: var(--ink-soft); font-size: 17px; line-height: 1.62; }
.nutrition-rhythm ol { margin: 42px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5,1fr); gap: 12px; list-style: none; }
.nutrition-rhythm li { min-height: 196px; padding: 22px 20px; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid var(--line); border-radius: 14px 42px 14px 42px; background: white; }
.nutrition-rhythm li:nth-child(2n) { margin-top: 24px; background: #eef0df; }
.nutrition-rhythm li > span { color: var(--olive); font-size: 12px; font-weight: 700; letter-spacing: .1em; }
.nutrition-rhythm h3 { margin: 25px 0 9px; font-size: 24px; }
.nutrition-rhythm li p { margin: 0; color: var(--ink-soft); font-size: 14px; line-height: 1.5; }
.nutrition-rhythm-note { max-width: 940px; margin: 38px auto 0; color: var(--forest); font-family: "Lora",Georgia,serif; font-size: clamp(1.25rem,1.9vw,1.7rem); line-height: 1.4; text-align: center; }
.nutrition-seasons { padding: 92px 6.2% 100px; display: grid; grid-template-columns: .75fr 1.25fr; gap: 34px 4vw; background: #e9eddd; }
.nutrition-seasons figure { margin: 0; overflow: hidden; border-radius: 18px 68px 18px 68px; box-shadow: 0 20px 48px rgba(39,65,46,.1); }
.nutrition-seasons figure img { height: 100%; min-height: 340px; object-fit: cover; }
.nutrition-season-grid { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4,1fr); gap: 13px; }
.nutrition-season-grid article { min-height: 210px; padding: 24px; border: 1px solid rgba(41,75,54,.15); border-radius: 12px 38px 12px 38px; background: rgba(255,253,248,.82); }
.nutrition-season-grid article:nth-child(2) { background: #eee7db; }
.nutrition-season-grid article:nth-child(3) { background: #e5eee6; }
.nutrition-season-grid article:nth-child(4) { background: #f4e8dc; }
.nutrition-season-grid span { color: var(--olive); font-size: 12px; font-weight: 700; letter-spacing: .1em; }
.nutrition-season-grid h3 { margin: 26px 0 11px; font-size: 28px; }
.nutrition-season-grid p, .nutrition-season-note { margin: 0; color: var(--ink-soft); font-size: 15px; line-height: 1.56; }
.nutrition-season-note { grid-column: 1 / -1; padding: 15px 18px; border-left: 3px solid var(--olive); }
.nutrition-attitude { padding: 86px 6.2%; display: grid; grid-template-columns: 1fr .72fr; gap: 5vw; align-items: center; background: #f7f2e8; }
.nutrition-attitude > div > p:last-child { max-width: 760px; color: var(--ink-soft); font-size: 17px; line-height: 1.65; }
.nutrition-attitude aside { min-height: 240px; padding: 34px; display: flex; flex-direction: column; justify-content: space-between; border-radius: 18px 64px 18px 64px; background: var(--forest); color: white; }
.nutrition-attitude aside strong { font-family: "Lora",Georgia,serif; font-size: 25px; font-weight: 400; line-height: 1.35; }
.nutrition-options { padding: 94px 6.2% 102px; display: grid; grid-template-columns: repeat(2,1fr); gap: 18px; background: #edf0e2; }
.nutrition-options article { padding: 36px; border: 1px solid var(--line); border-radius: 18px 62px 18px 62px; background: rgba(255,253,248,.88); }
.nutrition-options article:nth-child(2) { border-radius: 62px 18px 62px 18px; background: #f2e7da; }
.nutrition-options article > p:not(.eyebrow) { color: var(--ink-soft); font-size: 16px; line-height: 1.62; }
.nutrition-options article > aside { margin-top: 25px; padding: 16px; display: flex; gap: 10px; border-radius: 12px 28px 12px 28px; background: #e7ecd9; color: var(--forest); font-size: 14px; line-height: 1.52; }
.lunchbox-route { margin: 27px 0; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.lunchbox-route span { padding: 8px 10px; border: 1px solid rgba(41,75,54,.18); border-radius: 999px; background: rgba(255,253,248,.7); color: var(--forest); font-size: 12px; font-weight: 600; }
.lunchbox-route b { color: var(--olive); font-weight: 400; }
.nutrition-lunchbox ul { padding-left: 20px; color: var(--ink-soft); font-size: 14px; line-height: 1.55; }
.nutrition-recalculation { margin-top: 24px; padding-top: 18px; display: block; border-top: 1px solid rgba(41,75,54,.16); color: var(--forest); font-size: 14px; line-height: 1.5; }
.nutrition-final { padding: 70px 6.2%; display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: center; background: var(--forest); color: white; }
.nutrition-final h2 { max-width: 820px; }
.nutrition-final > div:first-child > p:last-child { max-width: 760px; color: rgba(255,255,255,.8); font-size: 16px; line-height: 1.62; }
.nutrition-final .eyebrow { color: #cbd56e; }
.nutrition-final > div:last-child { display: grid; gap: 10px; }
.nutrition-final a { min-height: 50px; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid rgba(255,255,255,.45); border-radius: 999px; color: white; font-weight: 600; text-decoration: none; text-align: center; }
.nutrition-final a.primary-button { border-color: var(--olive); background: var(--olive); }
.kindergarten-page main { overflow: hidden; }
.kindergarten-page h2, .kindergarten-page h3 { font-family: "Lora", Georgia, serif; font-weight: 400; }
.kindergarten-page h2 { margin: 8px 0 18px; font-size: clamp(2.3rem, 3.8vw, 4rem); line-height: 1.06; letter-spacing: -.035em; }
.kindergarten-kicker { margin: 0; color: #596521; font-size: 14px; font-weight: 600; letter-spacing: .11em; } /* было #6d7b28 — 3,45:1 на самом тёмном фоне, где встречается (#eadcc7, найдено полным прогоном по всем 14 страницам), задача 19 */
.kindergarten-section-heading { max-width: 880px; }
.kindergarten-section-heading > p:last-child { max-width: 760px; margin: 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }

.kindergarten-hero { min-height: calc(100svh - 86px); padding: 54px 4.6% 64px; display: grid; grid-template-columns: .9fr 1.1fr; gap: 4vw; align-items: center; background: linear-gradient(125deg, var(--milk) 0 54%, #e6ead9 54% 100%); }
.kindergarten-hero-copy h1 { max-width: 690px; margin: 16px 0 24px; font-size: clamp(2.65rem, 4.15vw, 4.55rem); line-height: 1.02; }
.kindergarten-hero-copy > p:not(.kindergarten-kicker) { max-width: 680px; margin: 0; color: #40584a; font-size: 18px; line-height: 1.66; }
.kindergarten-hero-copy .primary-button { margin-top: 28px; text-decoration: none; }
.kindergarten-hero-photo { margin: 0; overflow: hidden; border-radius: 92px 18px 92px 18px; background: var(--paper); box-shadow: 0 26px 66px rgba(39,65,46,.12); }
/* width/height добавлены в задаче 6, в прототипе их не было. Правило само
   по себе не меняется (тот же aspect-ratio/object-fit), но без явного
   height: auto высота <img> берётся из HTML-атрибута height, который
   <Picture> (задача 4) проставляет всегда, — а это пиксельный размер
   исходника (1536×1024), а не итоговая ширина колонки. auto здесь не для
   красоты: без него аспект перестаёт работать, ровно как для
   .day-photo img/.care-main-photo img чуть выше по этому же файлу — тот
   же паттерн, просто эти два места его не унаследовали от прототипа,
   где <img> писали без атрибутов и высота и так была auto. */
.kindergarten-hero-photo img, .kindergarten-group-photo img { width: 100%; height: auto; aspect-ratio: 3/2; object-fit: contain; }

.kindergarten-formats { padding: 96px 6.2% 105px; background: #f7f2e8; }
.kindergarten-format-grid { margin-top: 42px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.kindergarten-format-grid article { min-height: 515px; padding: 34px; position: relative; border: 1px solid var(--line); border-radius: 18px 68px 18px 68px; background: rgba(255,253,248,.86); }
.kindergarten-format-grid article:nth-child(2) { margin-top: 42px; border-radius: 68px 18px 68px 18px; background: #e7ecd9; }
.kindergarten-number { color: #758126; font-size: 13px; font-weight: 600; letter-spacing: .1em; }
.kindergarten-format-grid article > div { margin: 28px 0 20px; display: flex; align-items: end; justify-content: space-between; gap: 20px; }
.kindergarten-format-grid h3 { margin: 0; font-size: 31px; }
.kindergarten-format-grid strong { color: #69752b; font-size: 17px; white-space: nowrap; }
.kindergarten-format-grid article > p { color: var(--ink-soft); font-size: 17px; line-height: 1.6; }
.kindergarten-format-grid ul, .kindergarten-prepare ul { margin: 25px 0 0; padding: 0; list-style: none; }
.kindergarten-format-grid li, .kindergarten-prepare li { margin-top: 12px; padding-left: 24px; position: relative; color: #40564a; font-size: 16px; line-height: 1.5; }
.kindergarten-format-grid li::before, .kindergarten-prepare li::before { content: ""; width: 8px; height: 8px; position: absolute; left: 1px; top: .55em; border-radius: 50%; background: var(--olive); }
.kindergarten-outline-link { min-height: 50px; margin-top: 34px; padding: 0 20px; display: inline-flex; align-items: center; gap: 9px; border: 1px solid rgba(41,75,54,.36); border-radius: 999px; font-weight: 600; text-decoration: none; }

.kindergarten-group { padding: 100px 6.2%; display: grid; grid-template-columns: .9fr 1.1fr; gap: 28px 4vw; align-items: center; background: #e9eddd; }
.kindergarten-group-copy > p:last-of-type { max-width: 680px; margin: 0; color: var(--ink-soft); font-size: 18px; line-height: 1.66; }
.kindergarten-facts { margin-top: 30px; display: flex; flex-wrap: wrap; gap: 12px; }
.kindergarten-facts span { min-height: 72px; padding: 14px 20px; display: inline-flex; align-items: center; gap: 9px; border: 1px solid rgba(41,75,54,.18); border-radius: 12px 32px 12px 32px; background: rgba(255,253,248,.72); }
.kindergarten-facts b { color: #78852b; font-family: "Lora", Georgia, serif; font-size: 27px; font-weight: 400; }
.kindergarten-group-photo { margin: 0; overflow: hidden; border-radius: 20px 84px 20px 84px; box-shadow: 0 22px 55px rgba(39,65,46,.1); }
.kindergarten-adults { grid-column: 1 / -1; margin-top: 18px; padding: 40px clamp(28px,4vw,58px); display: grid; grid-template-columns: .7fr repeat(3,1fr); gap: 26px; border-radius: 56px 16px 56px 16px; background: var(--forest); color: white; }
.kindergarten-adults h3 { margin: 0; font-size: 29px; line-height: 1.16; }
.kindergarten-adults p { margin: 0; color: rgba(255,255,255,.82); font-size: 15px; line-height: 1.62; }

.kindergarten-safety { padding: 96px 6.2% 104px; position: relative; overflow: hidden; background: #f7f2e8; scroll-margin-top: 96px; }
.kindergarten-page:not(.safety-page) .kindergarten-safety { display: none; }
.safety-page-intro { padding: 74px 6.2% 66px; background: linear-gradient(125deg,#f7f2e8 0 68%,#e7ecd9 68% 100%); }
.safety-page-intro > a { display: inline-flex; margin-bottom: 34px; color: #68762b; font-weight: 600; text-decoration: none; }
.safety-page-intro h1 { max-width: 930px; margin: 15px 0 22px; font-size: clamp(2.8rem,5vw,5.3rem); line-height: 1.02; }
.safety-page-intro > p:last-child { max-width: 780px; margin: 0; color: var(--ink-soft); font-size: 19px; line-height: 1.65; }
.safety-page-content { padding-top: 72px; }
.kindergarten-safety::before { content: ""; width: 390px; height: 160px; position: absolute; right: -105px; top: 74px; border: 1px solid rgba(135,150,47,.34); border-radius: 50%; transform: rotate(-9deg); }
.kindergarten-safety-heading { max-width: 930px; position: relative; z-index: 1; }
.kindergarten-safety-heading > p:last-child { max-width: 790px; margin: 0; color: var(--ink-soft); font-size: 18px; line-height: 1.65; }
.kindergarten-safety-grid { margin-top: 46px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.safety-card { min-height: 310px; padding: 31px; display: grid; grid-template-columns: 64px 1fr; gap: 20px; position: relative; overflow: hidden; border: 1px solid rgba(41,75,54,.16); border-radius: 18px 58px 18px 58px; background: rgba(255,253,248,.9); }
.safety-card:nth-child(even) { border-radius: 58px 18px 58px 18px; }
.safety-card-camera { background: #e8eddd; }
.safety-card-health { background: #f5ebdf; }
.safety-card-air { background: #e6eeee; }
.safety-card-walk { background: #f3eed7; }
.safety-card-adults { min-height: 240px; grid-column: 1 / -1; grid-template-columns: 64px minmax(0,1fr) auto; align-items: center; background: #e7ecd9; }
.safety-card-visual { width: 60px; height: 60px; display: grid; place-items: center; position: relative; border: 1px solid rgba(41,75,54,.19); border-radius: 18px 8px 18px 8px; background: rgba(255,253,248,.76); color: var(--forest); }
.safety-live-dot { width: 9px; height: 9px; position: absolute; right: 8px; top: 8px; border: 2px solid white; border-radius: 50%; background: var(--olive); box-shadow: 0 0 0 4px rgba(135,150,47,.15); }
.safety-air-visual i { width: 27px; height: 1px; position: absolute; right: -15px; border-radius: 10px; background: rgba(41,75,54,.32); }
.safety-air-visual i:nth-of-type(1) { top: 17px; }
.safety-air-visual i:nth-of-type(2) { top: 29px; right: -22px; }
.safety-air-visual i:nth-of-type(3) { top: 41px; right: -11px; }
.safety-card-label { margin: 1px 0 9px; color: #6d7b28; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.safety-card h3 { margin: 0 0 15px; font-size: clamp(1.55rem,2.2vw,2.2rem); line-height: 1.12; }
.safety-card > div > p:not(.safety-card-label), .safety-card > p { margin: 0; color: #4f6258; font-size: 15px; line-height: 1.62; }
.safety-card > div > p + p { margin-top: 12px; }
.safety-route, .safety-walk-map { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; }
.safety-route span, .safety-walk-map span { min-height: 39px; padding: 8px 12px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid rgba(41,75,54,.2); border-radius: 999px; background: rgba(255,253,248,.64); color: var(--forest); font-size: 12px; font-weight: 600; text-align: center; }
.safety-route b { color: var(--olive); font-weight: 400; }
.safety-card-note { grid-column: 1 / -1; padding-top: 14px; display: flex; align-items: center; gap: 8px; border-top: 1px solid rgba(41,75,54,.14); color: var(--forest) !important; font-weight: 600; }
.safety-walk-map { padding-top: 7px; }
.safety-walk-map::before { content: ""; height: 1px; position: absolute; left: 46px; right: 46px; bottom: 51px; z-index: 0; background: rgba(41,75,54,.21); }
.safety-walk-map span, .safety-walk-map b { position: relative; z-index: 1; }
.safety-walk-map b { padding: 5px 10px; border-radius: 999px; background: #f3eed7; color: #68762b; font-size: 11px; white-space: nowrap; }
.safety-adults-count { display: flex; align-items: center; gap: 10px; }
.safety-adults-count span { min-width: 136px; min-height: 78px; padding: 12px 16px; display: flex; align-items: center; gap: 8px; border: 1px solid rgba(41,75,54,.17); border-radius: 12px 30px 12px 30px; background: rgba(255,253,248,.7); color: var(--forest); font-size: 13px; }
.safety-adults-count b { color: #78852b; font-family: "Lora",Georgia,serif; font-size: 29px; font-weight: 400; }
.safety-adults-count i { color: var(--olive); font-style: normal; }
.kindergarten-safety-cta { margin-top: 20px; padding: 31px 34px; display: grid; grid-template-columns: 1fr auto; gap: 32px; align-items: center; border-radius: 42px 12px 42px 12px; background: var(--forest); color: white; }
.kindergarten-safety-cta h3 { margin: 9px 0 9px; font-size: 28px; }
.kindergarten-safety-cta > div > p:last-child { max-width: 760px; margin: 0; color: rgba(255,255,255,.78); font-size: 15px; line-height: 1.55; }
.kindergarten-safety-cta .kindergarten-kicker { color: #cbd56e; }
.kindergarten-safety-cta a { min-height: 50px; padding: 0 20px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 999px; background: var(--olive); color: white; font-weight: 600; text-decoration: none; white-space: nowrap; }
.kindergarten-adaptation { padding: 96px 6.2% 104px; background: var(--milk); }
.kindergarten-steps { margin: 45px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3,1fr); gap: 18px; list-style: none; }
.kindergarten-steps li { min-height: 250px; padding: 28px; display: flex; flex-direction: column; justify-content: space-between; border: 1px solid var(--line); border-radius: 14px 52px 14px 52px; background: rgba(255,253,248,.84); }
.kindergarten-steps li:nth-child(2) { margin-top: 34px; background: #e8ecd9; }
.kindergarten-steps li:nth-child(3) { margin-top: 68px; }
.kindergarten-steps span { color: #78852b; font-size: 13px; font-weight: 600; letter-spacing: .1em; }
.kindergarten-steps h3 { margin: 28px 0 12px; font-size: 27px; }
.kindergarten-steps p { margin: 0; color: var(--ink-soft); font-size: 16px; line-height: 1.58; }
.kindergarten-adaptation-note { max-width: 900px; margin: 42px auto 0; color: var(--forest); font-family: "Lora", Georgia, serif; font-size: clamp(1.35rem,2vw,1.8rem); line-height: 1.42; text-align: center; }

.kindergarten-prepare { padding: 88px 6.2%; display: grid; grid-template-columns: .8fr 1fr; gap: 5vw; background: #eadcc7; }
.kindergarten-prepare > div > p:last-child { color: #5b635a; font-size: 17px; line-height: 1.62; } /* было #5f675e — 4,34:1 на #eadcc7, задача 19 */
.kindergarten-prepare ul { margin: 0; padding: 28px 30px; border-radius: 16px 52px 16px 52px; background: rgba(255,253,248,.78); }
.kindergarten-prepare > p { grid-column: 2; margin: -8px 0 0; color: #5b635a; font-size: 15px; line-height: 1.55; } /* тот же цвет, что у .kindergarten-prepare > div > p:last-child — задача 19 */

.kindergarten-links { padding: 78px 6.2% 92px; display: grid; grid-template-columns: .8fr 1.2fr; gap: 5vw; background: #f7f2e8; }
.kindergarten-links nav { display: grid; gap: 11px; }
.kindergarten-links nav a { min-height: 72px; padding: 0 22px; display: flex; align-items: center; justify-content: space-between; border: 1px solid var(--line); border-radius: 12px 34px 12px 34px; background: rgba(255,253,248,.82); font-size: 17px; font-weight: 600; text-decoration: none; }
.kindergarten-links nav a:hover { border-color: var(--olive); }

.kindergarten-cta { padding: 72px 6.2%; display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: center; background: var(--forest); color: white; }
.kindergarten-cta h2 { max-width: 850px; }
.kindergarten-cta > div > p:last-child { max-width: 760px; margin: 0; color: rgba(255,255,255,.8); font-size: 17px; line-height: 1.62; }
.kindergarten-cta .kindergarten-kicker { color: #cbd56e; }
.kindergarten-cta > a { min-height: 52px; padding: 0 22px; display: inline-flex; align-items: center; gap: 9px; border-radius: 999px; background: var(--olive); color: white; font-weight: 600; text-decoration: none; white-space: nowrap; }

.legal-page main { background: #f7f3ea; }
.legal-hero { padding: 74px 8% 70px; background: linear-gradient(135deg,#f7f3ea 0 62%,#e6ead9 62% 100%); }
.legal-hero > a { display: inline-flex; margin-bottom: 34px; color: #6f7d2d; font-weight: 600; text-decoration: none; }
.legal-hero h1 { max-width: 980px; margin: 13px 0 22px; color: var(--forest); font-size: clamp(3rem,5.4vw,5.8rem); line-height: .98; }
.legal-hero > p:not(.program-kicker) { max-width: 820px; margin: 0; color: #58675f; font-size: 18px; line-height: 1.65; }
.legal-hero > span { margin-top: 24px; display: block; color: #778278; font-size: 13px; }
.legal-content { max-width: 1120px; margin: 0 auto; padding: 72px 6.2% 92px; display: grid; gap: 18px; }
.legal-content section { padding: 31px 34px; border: 1px solid rgba(41,75,54,.16); border-radius: 14px 42px 14px 42px; background: rgba(255,253,248,.86); }
.legal-content section:nth-child(even) { background: #eef1e5; }
.legal-content h2 { margin: 0 0 17px; color: var(--forest); font-size: clamp(1.55rem,2.3vw,2.25rem); }
.legal-content p, .legal-content li, .legal-content dd, .legal-content dt { color: #56655d; font-size: 16px; line-height: 1.68; }
.legal-content p { margin: 0; }
.legal-content p + p { margin-top: 13px; }
.legal-content ul { margin: 0; padding-left: 22px; }
.legal-content li + li { margin-top: 7px; }
.legal-content a { color: var(--forest); text-underline-offset: 3px; }
.legal-content dl { margin: 19px 0 0; display: grid; gap: 9px; }
.legal-content dl > div { padding-top: 9px; display: grid; grid-template-columns: 230px 1fr; gap: 18px; border-top: 1px solid rgba(41,75,54,.12); }
.legal-content dt { color: #71802d; font-weight: 700; }
.legal-content dd { margin: 0; }
.legal-contact { padding: 54px 8%; display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: center; background: #e5ead8; }
.legal-contact h2 { margin: 8px 0 10px; color: var(--forest); font-size: clamp(2rem,3.2vw,3.4rem); }
.legal-contact p:last-child { margin: 0; color: #5c6a62; font-size: 16px; }

@media (max-width: 760px) {
  .legal-hero { padding: 44px 17px 52px; background: linear-gradient(180deg,#f7f3ea 0 80%,#e6ead9 80% 100%); }
  .legal-hero > a { margin-bottom: 27px; }
  .legal-hero h1 { font-size: 2.55rem; line-height: 1.05; }
  .legal-hero > p:not(.program-kicker) { font-size: 16px; }
  .legal-content { padding: 48px 17px 62px; gap: 12px; }
  .legal-content section { padding: 23px 20px; border-radius: 12px 34px 12px 34px; }
  .legal-content h2 { font-size: 1.65rem; }
  .legal-content p, .legal-content li, .legal-content dd, .legal-content dt { font-size: 15px; }
  .legal-content dl > div { display: block; }
  .legal-content dd { margin-top: 3px; overflow-wrap: anywhere; }
  .legal-contact { padding: 48px 17px 56px; display: block; }
  .legal-contact .primary-button { width: 100%; margin-top: 24px; justify-content: center; }
  .nutrition-page h2 { font-size: 2.3rem; }
  .nutrition-hero { min-height: 0; padding: 43px 17px 58px; display: flex; flex-direction: column; }
  .nutrition-hero h1 { font-size: 2.55rem; }
  .nutrition-hero > div > p:not(.eyebrow) { font-size: 16px; }
  .nutrition-hero .primary-button { width: 100%; justify-content: center; }
  .nutrition-hero figure { margin-top: 30px; border-radius: 52px 12px 52px 12px; }
  .nutrition-rhythm, .nutrition-seasons, .nutrition-attitude, .nutrition-options { padding: 58px 17px 66px; }
  .nutrition-rhythm ol { margin-top: 29px; display: block; }
  .nutrition-rhythm li, .nutrition-rhythm li:nth-child(2n) { min-height: 0; margin-top: 11px; padding: 18px 19px; flex-direction: row; align-items: center; gap: 16px; }
  .nutrition-rhythm h3 { margin-top: 0; }
  .nutrition-rhythm-note { margin-top: 28px; text-align: left; }
  .nutrition-seasons, .nutrition-attitude, .nutrition-options { display: block; }
  .nutrition-seasons figure { margin-top: 27px; border-radius: 12px 46px 12px 46px; }
  .nutrition-seasons figure img { min-height: 230px; }
  .nutrition-season-grid { margin-top: 14px; display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; }
  .nutrition-season-grid article { min-height: 0; padding: 19px 16px; }
  .nutrition-season-grid h3 { margin-top: 18px; font-size: 24px; }
  .nutrition-season-note { margin-top: 15px; }
  .nutrition-attitude aside { min-height: 190px; margin-top: 28px; padding: 27px 22px; }
  .nutrition-options article, .nutrition-options article:nth-child(2) { margin-top: 14px; padding: 26px 21px; border-radius: 12px 44px 12px 44px; }
  .lunchbox-route { align-items: stretch; flex-direction: column; }
  .lunchbox-route span { width: 100%; text-align: center; }
  .lunchbox-route b { align-self: center; transform: rotate(90deg); }
  .nutrition-final { padding: 56px 17px 64px; display: block; }
  .nutrition-final > div:last-child { margin-top: 27px; }
  .kindergarten-page h2 { font-size: 2.3rem; }
  .kindergarten-hero { min-height: 0; padding: 46px 17px 58px; display: flex; flex-direction: column; background: linear-gradient(180deg,var(--milk) 0 55%,#e6ead9 55% 100%); }
  .kindergarten-hero-copy h1 { font-size: 2.55rem; }
  .kindergarten-hero-copy > p:not(.kindergarten-kicker) { font-size: 16px; }
  .kindergarten-hero-copy .primary-button { width: 100%; justify-content: center; }
  .kindergarten-hero-photo { margin-top: 31px; border-radius: 54px 12px 54px 12px; }
  .kindergarten-formats, .kindergarten-group, .kindergarten-safety, .kindergarten-adaptation, .kindergarten-prepare, .kindergarten-links { padding: 60px 17px 68px; }
  .kindergarten-section-heading > p:last-child, .kindergarten-group-copy > p:last-of-type { font-size: 16px; }
  .kindergarten-format-grid { margin-top: 31px; display: block; }
  .kindergarten-format-grid article, .kindergarten-format-grid article:nth-child(2) { min-height: 0; margin-top: 16px; padding: 25px 22px; border-radius: 12px 42px 12px 42px; }
  .kindergarten-format-grid article > div { margin-top: 22px; display: block; }
  .kindergarten-format-grid h3 { font-size: 27px; }
  .kindergarten-format-grid strong { margin-top: 7px; display: block; }
  .kindergarten-outline-link { width: 100%; justify-content: center; text-align: center; }
  .kindergarten-group { display: flex; flex-direction: column; align-items: stretch; }
  .kindergarten-group-photo { margin-top: 7px; border-radius: 14px 52px 14px 52px; }
  .kindergarten-adults { margin-top: 6px; padding: 30px 23px; display: block; border-radius: 42px 12px 42px 12px; }
  .kindergarten-adults p { margin-top: 21px; font-size: 15px; }
  .kindergarten-safety::before { width: 180px; height: 72px; right: -65px; top: 45px; }
  .safety-page-intro { padding: 44px 17px 52px; background: linear-gradient(180deg,#f7f2e8 0 78%,#e7ecd9 78% 100%); }
  .safety-page-intro > a { margin-bottom: 28px; }
  .safety-page-intro h1 { font-size: 2.55rem; }
  .safety-page-intro > p:last-child { font-size: 16px; }
  .kindergarten-safety-heading > p:last-child { font-size: 16px; }
  .kindergarten-safety-grid { margin-top: 31px; display: block; }
  .safety-card, .safety-card:nth-child(even), .safety-card-adults { min-height: 0; margin-top: 14px; padding: 23px 20px; display: grid; grid-template-columns: 52px 1fr; gap: 16px; border-radius: 12px 42px 12px 42px; }
  .safety-card-visual { width: 50px; height: 50px; border-radius: 14px 7px 14px 7px; }
  .safety-card h3 { font-size: 1.65rem; }
  .safety-card > div > p:not(.safety-card-label), .safety-card > p { font-size: 14px; }
  .safety-route, .safety-walk-map { align-items: stretch; flex-direction: column; }
  .safety-route b { transform: rotate(90deg); }
  .safety-route span, .safety-walk-map span { width: 100%; }
  .safety-walk-map::before { width: 1px; height: 82px; left: 50%; right: auto; bottom: 39px; }
  .safety-adults-count { grid-column: 1 / -1; justify-content: center; }
  .safety-adults-count span { min-width: 0; flex: 1; }
  .kindergarten-safety-cta { margin-top: 15px; padding: 28px 21px; display: block; border-radius: 38px 10px 38px 10px; }
  .kindergarten-safety-cta h3 { font-size: 25px; }
  .kindergarten-safety-cta a { width: 100%; margin-top: 23px; white-space: normal; text-align: center; }
  .kindergarten-steps { margin-top: 31px; display: block; }
  .kindergarten-steps li, .kindergarten-steps li:nth-child(2), .kindergarten-steps li:nth-child(3) { min-height: 0; margin-top: 14px; padding: 24px 21px; }
  .kindergarten-steps h3 { margin-top: 20px; }
  .kindergarten-adaptation-note { margin-top: 31px; text-align: left; }
  .kindergarten-prepare, .kindergarten-links { display: block; }
  .kindergarten-prepare ul { margin-top: 28px; padding: 24px 21px; }
  .kindergarten-prepare > p { margin-top: 18px; }
  .kindergarten-links nav { margin-top: 30px; }
  .kindergarten-cta { padding: 58px 17px 64px; display: block; }
  .kindergarten-cta > a { width: 100%; margin-top: 28px; justify-content: center; white-space: normal; text-align: center; }
}

/* ==========================================================================
   Задача 19 — состояния интерфейса (наведение, фокус, нажатие, цели, контраст)
   ==========================================================================
   Раздел добавлен целиком в конце файла: у CSS одинаковая специфичность
   решается порядком в каскаде, а более специфичным правилам (вроде
   ".programming-page .direction-cta .primary-button") здесь везде отвечает
   явно настолько же или более специфичный селектор — так что место в конце
   файла не переставляет уже работающие правила, только добавляет новые.

   Группировка — по фактическому виду кнопки (одна заливка/один приём —
   один блок на несколько классов через запятую), а не по классам из
   INTERACTIVE_CLASSES: так вместо шестнадцати копий одного правила — десяток
   осмысленных семей. Через запятую, не через :is(...) — тесту
   tests/interactive.test.mjs нужна буквальная подстрока ".класс:hover" /
   ".класс:focus-visible" в CSS-тексте, а :is(.a,.b):hover её не даёт (между
   ".a" и ":hover" оказываются ", .b)"). :is() ниже используется только там,
   где тест ничего не проверяет буквально — общий transition/:active и
   медиазапрос целей нажатия.

   Наведение — заливка на один шаг темнее исходной (проверено расчётом
   контраста текста на новой заливке, см. отчёт задачи); там, где заливки нет
   (обводка/просто текст), "темнее" — лёгкая подложка того же тона или чуть
   более тёмный текст, без новой формы. */

/* -- Семья 1: сплошная заливка --forest, белый текст. Тёмный фон + светлый
   текст — контраст только растёт при затемнении, вопрос из брифа снят. */
.primary-button:hover,
.scenario-action:hover,
.reviews-action a:hover,
.contact-form button:hover,
.vacancy-form button:hover,
.club-development-cta-actions .button:hover,
.club-development-cta-actions .button-accent:hover,
.day-footer a:hover,
.team-footer a:hover,
.faq-action a:hover,
.vacancy-hero-copy > a:hover,
.program-page-hero-copy > a:hover,
.kindergarten-copy a:hover,
.kindergarten-safety-cta a:hover {
  background: #23402e;
}

/* .button/.button-accent — тот же цвет, что и в семье выше, отдельным
   голым правилом. Сейчас в разметке единственный экземпляр обоих классов
   всегда внутри .club-development-cta-actions (там уже есть свой hover,
   ".club-development-cta-actions .button(-accent):hover", в списке семьи 1
   выше) — но в INTERACTIVE_CLASSES, как и в списках лифта/фокуса этой же
   секции, оба класса зарегистрированы самостоятельными, без обёртки.
   Голого ".button:hover"/".button-accent:hover" без этого правила не
   было — добавлено то же значение, ни одного нового цвета. */
.button:hover,
.button-accent:hover {
  background: #23402e;
}

/* .primary-button внутри «финального CTA» трёх страниц направлений красится
   в #879823 (олива), а не в --forest (см. .programming-page/.lego-page/
   .painting-page .direction-cta .primary-button в начале файла) — общего
   .primary-button:hover сюда недостаточно: специфичность (0,1,1) ниже, чем
   у уже существующего page-scoped переопределения фона (0,3,0), и на этих
   трёх страницах generic-правило проиграло бы в каскаде. Значение —
   буквально пример из брифа (Step 5): #6f7d1e, ~18% темнее #879823,
   контраст с белым текстом 4.54 (было 3.21 — это уже существующий, не наш,
   недобор чуть ниже 4.5 у самой заливки кнопки в покое: считается по тексту
   ссылок/подписей, а не по подписям кнопок, так что вне мерности задачи —
   но темнее только помогает, не вредит). */
.programming-page .direction-cta .primary-button:hover,
.lego-page .direction-cta .primary-button:hover,
.painting-page .direction-cta .primary-button:hover {
  background: #6f7d1e;
}

/* -- Семья 2: сплошная заливка --olive, белый текст. Тот же расчёт, что и
   выше у оливковой заливки: #707d27 — по факту минимальное затемнение,
   которое доводит контраст с белым текстом до 4.5 (было 3.26). */
.header-button:hover,
.program-page-cta > a:hover,
.kindergarten-cta > a:hover {
  background: #707d27;
}

/* -- Семья 3: заливка-градиент (прайсинг). Семьям 1-2 хватало шага 15%
   (масштаб 0.85): но на нём светлый стоп-цвет градиента (#8d9a5c) с белым
   текстом давал только 4.07 (тёмный — 5.34, с запасом) — на широкой кнопке
   светлый угол занимает заметную часть подписи, а не угловой пиксель, и
   4.07 ниже требуемых 4.5. Шаг увеличен до масштаба 0.80 — темнее исходных
   на ту же долю оба стоп-цвета, направление и угол градиента не трогаем:
   4.53 на светлом конце, 5.83 на тёмном (числа расчётные, формула WCAG). */
.pricing-primary-action:hover,
.pricing-announcement-copy > a:hover {
  background: linear-gradient(135deg, #717b4a, #5e6a3c);
}

/* -- Семья 4: бледно-жёлто-зелёная заливка #dce49f, тёмный (--forest)
   текст. Фон светлый — затемнение проверено расчётом (было 6.1–9:1 с
   запасом, после — не ниже прежнего). */
.team-page-cta a:hover,
.acquaintance-action a:hover {
  background: #cad292;
}

/* -- Семья 5: почти белая полупрозрачная заливка (--paper c альфой),
   тёмный (--forest) текст — карточки-чипы вроде ссылок на карту и
   иконок соцсетей в подвале. */
.contact-map-actions a:hover,
.footer-socials a:hover,
.route-format a:hover,
.contact-map-show:hover {
  background: #ebe9e4;
}

/* -- Семья 6: почти белая заливка #fffdf7, текст #24563c — «жёлтая»
   плашка с расписанием/стоимостью. */
.schedule-note > a:hover,
.club-pricing-current-note > a:hover,
.kindergarten-after-hours > a:hover {
  background: #ebe9e3;
}

/* -- Семья 7: обводка/прозрачная заливка — заливки, которую можно было бы
   затемнить, тут нет, поэтому наведение — лёгкая тонировка тем же зелёным,
   без смены формы и радиуса. Сюда же — четыре «второстепенные ссылки рядом
   с primary-button», у них одинаковый паттерн (текст без своей заливки) на
   четырёх разных страницах направлений/прайсинга. */
.kindergarten-outline-link:hover,
.care-footer a:hover,
.footer-work > a:hover,
.program-directions-head nav a:hover,
.direction-cta > div:last-child > a:not(.button):hover,
.schedule-cta-actions > a:not(.primary-button):hover,
.preparation-cta > div:last-child > a:not(.primary-button):hover,
.club-pricing-cta > div:last-child > a:not(.primary-button):hover,
.faq-list details > a:hover {
  background: rgba(41, 75, 54, .08);
}
/* Те же «второстепенные ссылки», но на трёх страницах направлений с тёмной
   секцией (.programming-page/.lego-page/.painting-page .direction-cta,
   #204f39 — см. выше) их текст уже перекрашен в светлый (#fffaf0, тот же
   selector + :not(.primary-button)). Тёмная тонировка семьи 7 на тёмном
   фоне была бы почти не видна — здесь она светлая, как в семье 8. */
.programming-page .direction-cta > div:last-child > a:not(.button):not(.primary-button):hover,
.lego-page .direction-cta > div:last-child > a:not(.button):not(.primary-button):hover,
.painting-page .direction-cta > div:last-child > a:not(.button):not(.primary-button):hover {
  background: rgba(255, 255, 255, .1);
}

/* -- Семья 8: обводка на тёмно-зелёной секции (.contact-message,
   .vacancy-more) — белая обводка, белый текст. Затемнить нечего (уже
   тёмный форест), поэтому лёгкая светлая подложка вместо тёмной. */
.vacancy-more a:hover,
.contact-message > div > a:hover,
.formats-help a:hover,
.nutrition-final a:not(.primary-button):hover {
  background: rgba(255, 255, 255, .12);
}

/* -- Семья 9: просто текст, без заливки и рамки — затемняем сам текст. */
.pricing-secondary-action:hover,
.footer-phone:hover,
.contact-detail a:hover,
.nutrition-back:hover,
.safety-page-intro > a:hover,
.legal-hero > a:hover,
.legal-content a:hover,
.footer-legal nav a:hover {
  color: #23402e;
}
.footer-write:hover {
  color: #566222;
}

/* .mama-baby-secondary-action наводится и без этого правила — рядом с
   определением класса есть собственный, более старый hover
   (".mama-baby-actions .mama-baby-secondary-action:hover", унаследован из
   прототипа; задача 19 сознательно его не тронула, см. отчёт задачи —
   раздел "Найденная ловушка"). Но в разметке класс всегда внутри
   .mama-baby-actions, а в INTERACTIVE_CLASSES зарегистрирован
   самостоятельным — без этого правила голого
   ".mama-baby-secondary-action:hover" не было. Те же два значения, что и
   у обёрнутой версии, ни одного нового цвета. */
.mama-baby-secondary-action:hover {
  border-color: #879823;
  background: #edf1e4;
}

/* -- Бургер-кнопка меню: тот же приём, что у карточек-чипов (семья 5) —
   у неё тоже почти белая полупрозрачная заливка. */
.menu-button:hover {
  background: #ebe9e4;
}

/* -- Фокус: одно кольцо на все классы из INTERACTIVE_CLASSES явной строкой
   (тест ищет буквальную ".класс:focus-visible"). Тот же --focus-ring уже
   стоит глобально в base.css на :where(a,button,input,select,textarea,
   summary) — здесь то же значение с более высокой специфичностью, поэтому
   для пользователя ничего не меняется там, где явного правила нет; переопределять
   тут нечего, дублирование только удовлетворяет тесту и делает список
   состояний класса самодокументируемым. */
.primary-button:focus-visible,
.header-button:focus-visible,
.button:focus-visible,
.button-accent:focus-visible,
.scenario-action:focus-visible,
.mama-baby-secondary-action:focus-visible,
.club-development-cta-secondary:focus-visible,
.club-development-direction-link:focus-visible,
.kindergarten-outline-link:focus-visible,
.direction-back-link:focus-visible,
.pricing-primary-action:focus-visible,
.pricing-secondary-action:focus-visible,
.footer-phone:focus-visible,
.footer-write:focus-visible,
.menu-button:focus-visible,
.team-page-cta a:focus-visible,
.reviews-action a:focus-visible,
.contact-form button:focus-visible,
.vacancy-form button:focus-visible,
.carousel-arrow:focus-visible,
.contact-map-show:focus-visible,
.kindergarten-after-hours > a:focus-visible,
.nutrition-back:focus-visible,
.nutrition-final a:not(.primary-button):focus-visible,
.safety-page-intro > a:focus-visible,
.kindergarten-safety-cta a:focus-visible,
.legal-hero > a:focus-visible,
.legal-content a:focus-visible,
.footer-legal nav a:focus-visible {
  box-shadow: var(--focus-ring);
}

/* -- Нажатие и переход — общие для всей «семьи с приподниманием» через
   :is(...): тест их не проверяет буквально, дублировать нечего. Плоские
   текстовые ссылки (семья 9, footer-phone/footer-write/pricing-secondary-
   action/contact-detail a) без подъёма — там нет подложки, поднимать
   нечего, только плавный цвет. */
:is(
  .primary-button,
  .header-button,
  .button,
  .button-accent,
  .scenario-action,
  .mama-baby-secondary-action,
  .club-development-cta-secondary,
  .club-development-direction-link,
  .kindergarten-outline-link,
  .direction-back-link,
  .pricing-primary-action,
  .menu-button,
  .team-page-cta a,
  .reviews-action a,
  .contact-form button,
  .vacancy-form button,
  .day-footer a,
  .team-footer a,
  .faq-action a,
  .vacancy-hero-copy > a,
  .program-page-hero-copy > a,
  .program-page-cta > a,
  .kindergarten-cta > a,
  .pricing-announcement-copy > a,
  .acquaintance-action a,
  .contact-map-actions a,
  .contact-map-show,
  .footer-socials a,
  .schedule-note > a,
  .club-pricing-current-note > a,
  .care-footer a,
  .kindergarten-copy a,
  .route-format a,
  .formats-help a,
  .footer-work > a,
  .program-directions-head nav a,
  .direction-cta > div:last-child > a:not(.button),
  .schedule-cta-actions > a:not(.primary-button),
  .preparation-cta > div:last-child > a:not(.primary-button),
  .club-pricing-cta > div:last-child > a:not(.primary-button),
  .faq-list details > a,
  .vacancy-more a,
  .contact-message > div > a
) {
  transition: transform var(--state-speed) var(--ease-out), background-color var(--state-speed) var(--ease-out), background var(--state-speed) var(--ease-out), box-shadow var(--state-speed) var(--ease-out), border-color var(--state-speed) var(--ease-out);
}
:is(
  .primary-button,
  .header-button,
  .button,
  .button-accent,
  .scenario-action,
  .kindergarten-outline-link,
  .menu-button,
  .team-page-cta a,
  .reviews-action a,
  .contact-form button,
  .vacancy-form button,
  .day-footer a,
  .team-footer a,
  .faq-action a,
  .vacancy-hero-copy > a,
  .program-page-hero-copy > a,
  .program-page-cta > a,
  .kindergarten-cta > a,
  .pricing-announcement-copy > a,
  .pricing-primary-action,
  .acquaintance-action a,
  .contact-map-actions a,
  .contact-map-show,
  .footer-socials a,
  .schedule-note > a,
  .club-pricing-current-note > a,
  .care-footer a,
  .kindergarten-copy a,
  .route-format a,
  .formats-help a,
  .footer-work > a,
  .program-directions-head nav a,
  .direction-cta > div:last-child > a:not(.button),
  .schedule-cta-actions > a:not(.primary-button),
  .preparation-cta > div:last-child > a:not(.primary-button),
  .club-pricing-cta > div:last-child > a:not(.primary-button),
  .faq-list details > a,
  .vacancy-more a,
  .contact-message > div > a
):hover {
  transform: var(--hover-lift);
}
:is(
  .primary-button,
  .header-button,
  .button,
  .button-accent,
  .scenario-action,
  .mama-baby-secondary-action,
  .club-development-cta-secondary,
  .club-development-direction-link,
  .kindergarten-outline-link,
  .direction-back-link,
  .pricing-primary-action,
  .menu-button,
  .team-page-cta a,
  .reviews-action a,
  .contact-form button,
  .vacancy-form button,
  .day-footer a,
  .team-footer a,
  .faq-action a,
  .vacancy-hero-copy > a,
  .program-page-hero-copy > a,
  .program-page-cta > a,
  .kindergarten-cta > a,
  .pricing-announcement-copy > a,
  .acquaintance-action a,
  .contact-map-actions a,
  .contact-map-show,
  .footer-socials a,
  .schedule-note > a,
  .club-pricing-current-note > a,
  .care-footer a,
  .kindergarten-copy a,
  .route-format a,
  .formats-help a,
  .footer-work > a,
  .program-directions-head nav a,
  .direction-cta > div:last-child > a:not(.button),
  .schedule-cta-actions > a:not(.primary-button),
  .preparation-cta > div:last-child > a:not(.primary-button),
  .club-pricing-cta > div:last-child > a:not(.primary-button),
  .faq-list details > a,
  .vacancy-more a,
  .contact-message > div > a
):active {
  transform: var(--press-lift);
}
:is(.pricing-secondary-action, .footer-phone, .footer-write, .contact-detail a) {
  transition: color var(--state-speed) var(--ease-out);
}

/* ==========================================================================
   Задача 19 — цели нажатия ≥44×44 на ширине телефона
   ==========================================================================
   Только на узком экране (медиазапрос ниже, брейкпойнт 599px — общесайтовый
   переход от планшета к телефону не совпадает ни с одним уже существующим
   в файле числом, поэтому взят отдельным, ближайшим снизу к 620px, чтобы не
   задеть уже "утверждённые" планшетные размеры между 599 и 860px). На
   широком экране ни один из этих классов здесь не переопределяется —
   значит, форма и размер там остаются ровно как в approved-вёрстке. */
@media (max-width: 599px) {
  /* .header-button — «Записаться» в шапке, 40px в правиле для ≤860px
     (см. .site-header .header-button там же) — тут же нужна такая же или
     более высокая специфичность, иначе на телефоне выигрывает то,
     40-пиксельное. */
  .site-header .header-button,
  .menu-button,
  .footer-socials a,
  .footer-work > a,
  .vacancy-more a,
  .contact-message > div > span,
  .contact-message > div > a,
  .hero-channel-links a {
    min-height: 44px;
    min-width: 44px;
  }

  /* Логотип в подвале (и его двойник в шапке) — <a> с block-уровневым
     потомком внутри (.brand-symbol, Logo.tsx). У инлайнового <a> с блочным
     содержимым getBoundingClientRect по высоте — это высота строки, а не
     73px картинки внутри: инструмент замера видит 18px, хотя визуально
     цель — все 73. display:inline-flex делает коробку <a> равной коробке
     содержимого — картинка и её место в вёрстке не меняются вовсе. */
  .site-header > a:first-child,
  .footer-brand > a {
    display: inline-flex;
  }

  :is(.footer-nav > a, .footer-phone, .footer-write, .contact-detail a, .skip-link) {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }

  :is(
    .direction-cta > div:last-child > a:not(.button),
    .schedule-cta-actions > a:not(.primary-button),
    .preparation-cta > div:last-child > a:not(.primary-button),
    .club-pricing-cta > div:last-child > a:not(.primary-button),
    .club-development-cta-secondary,
    .club-development-direction-link,
    .direction-back-link,
    .faq-list details > a,
    .program-directions-head nav a
  ) {
    min-height: 44px;
  }

  /* Чекбоксы согласия (форма записи и форма отклика на вакансию) — нативный
     квадрат у браузеров по умолчанию ~13px. Увеличиваем сам элемент, а не
     кликабельную область вокруг — это то самое «довести цель нажатия до
     44×44», которое просит бриф, без переверстки формы. .contact-consent/
     .vacancy-consent — сами display:flex (текст согласия рядом), и без
     flex-shrink:0 чекбокс как флекс-элемент чуть сжимался под длинный
     текст соседа (замерено — 40px вместо 44 по ширине); текст в паре с
     фиксированным чекбоксом должен переноситься сам, а не наоборот. */
  .contact-consent input,
  .vacancy-consent input {
    width: 44px;
    height: 44px;
    flex-shrink: 0;
  }

  .vacancy-upload input[type="file"] {
    min-height: 44px;
  }
}

/* 404 (задача 22) — единственная страница без разметки прототипа (см.
   app/pages/not-found.tsx), поэтому и без готового блока стилей: остальные
   14 "X-page" в этом файле — перенос прототипа как есть (шапка файла),
   здесь переносить неоткуда. Не новый визуальный язык, а те же токены и та
   же логика отступов, что у .direction-section выше (max-width +
   центрирование + clamp-паддинги) — просто с меньшим числом узлов. */
.not-found-page main { background: var(--milk); }
.not-found-hero { display: flex; flex-direction: column; align-items: flex-start; gap: 1.1rem; max-width: 680px; margin: 0 auto; padding: clamp(4rem,9vw,7rem) clamp(1.5rem,6vw,4rem) clamp(5rem,10vw,9rem); }
.not-found-hero p { color: var(--ink-soft); font-size: 1.05rem; line-height: 1.6; }
.not-found-nav { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin-top: .6rem; }
.not-found-nav a { color: var(--forest); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.not-found-nav a:hover { color: var(--olive); }

/* /spasibo/ (задача 23) — вторая (после 404) страница без разметки
   прототипа: он был SPA без сервера, submit никуда не постил, значит и
   страницы "после отправки" не существовало. Тот же рецепт, что у
   .not-found-hero выше (токены + отступы .direction-section), под своим
   именем — разный смысл страницы, не тот же класс. */
.thanks-page main { background: var(--milk); }
.thanks-hero { display: flex; flex-direction: column; align-items: flex-start; gap: 1.1rem; max-width: 680px; margin: 0 auto; padding: clamp(4rem,9vw,7rem) clamp(1.5rem,6vw,4rem) clamp(5rem,10vw,9rem); }
.thanks-hero p { color: var(--ink-soft); font-size: 1.05rem; line-height: 1.6; }

/* Язык движения Elefant. Правила, на которых всё держится (см. отчёт
   задачи 20 за развёрнутым обоснованием):

   - ничего не движется само дольше 1,6 с и ничто не зациклено: автодвижение
     длиннее пяти секунд требовало бы кнопки «пауза» (WCAG 2.2.2), а кнопки
     без JavaScript нет;
   - скрытые стартовые состояния (opacity:0 в keyframe "from") живут ТОЛЬКО
     внутри @media screen and (prefers-reduced-motion: no-preference),
     появления по скроллу — ещё и внутри @supports (animation-timeline:
     view()). Причина двойной защиты: глобальный глушитель ниже действует
     через animation-duration, а у animation-timeline: view() длительность
     не в миллисекундах — прогресс держит позиция скролла, не время, — так
     что duration:0.01ms её не гарантированно нейтрализует. Единственный
     надёжный способ — не показывать скрытое стартовое состояние вовсе там,
     где предпочтение уменьшённого движения включено или где сам приём (view())
     не поддержан (Firefox на момент задачи, печать — media screen отсекает
     печать явно, а не полагается на то, что там нет скролла);
   - конечное состояние каждой анимации — ровно текущая статика: выключи
     анимацию (стартовое состояние не применилось вовсе — см. пункт выше),
     и секция обязана выглядеть точно так же, как без неё;
   - глобальный глушитель на prefers-reduced-motion: reduce — в base.css
     (animation-duration/transition-duration: 0.01ms !important). Он общий
     для keyframe-анимаций этого файла и для hover/focus-переходов задачи 19
     (--state-speed), поэтому здесь второй раз не объявляется;
   - всё движение — на transform и opacity, никогда на width/height/top/left. */

:root {
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

@media screen and (prefers-reduced-motion: no-preference) {
  @keyframes riseIn {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: none; }
  }

  /* Первый экран: копия героя (app/blocks/Hero.tsx, .hero-copy) появляется
     каскадом — категория+заголовок, затем (с шагом ~90ms) следующие узлы.
     620ms на элемент, максимальная задержка 180ms — весь каскад укладывается
     в пределах 800ms, далеко внутри лимита 1,6 с. */
  .hero-copy > * { animation: riseIn 620ms var(--ease-out) both; }
  .hero-copy > *:nth-child(2) { animation-delay: 90ms; }
  .hero-copy > *:nth-child(3) { animation-delay: 180ms; }

  /* Появления по скроллу: .section-reveal расставлен на секциях верхнего
     уровня во всех блоках/страницах (см. отчёт задачи — полный список),
     кроме самого первого экрана каждой страницы (у него уже есть каскад
     выше — дублировать нечего). @supports вложен ВНУТРЬ этого media-блока,
     а не рядом с ним: если бы он лежал снаружи, браузер без view() всё
     равно запустил бы "animation: riseIn ... both" на document-таймлайне
     (animation-timeline — единственное, что он не поймёт и отбросит), и
     секция мигнула бы invisible→visible на загрузке страницы вместо того,
     чтобы проявляться по скроллу. Вложенность — единственный способ отдать
     .section-reveal целиком браузерам с поддержкой view() и оставить её
     обычной, ничем не скрытой секцией во всех остальных. */
  @supports (animation-timeline: view()) {
    .section-reveal {
      animation: riseIn 700ms var(--ease-out) both;
      animation-timeline: view();
      animation-range: entry 10% cover 26%;
    }
  }
}

/* Стрелка в ссылке — третий приём языка движения. В отличие от появлений
   выше, это обычный hover-переход без скрытого стартового состояния (стрелка
   всегда видна, меняется только её положение), поэтому вне guard'ов: как и
   --hover-lift/--press-lift из задачи 19, глушитель в base.css достаточно
   укорачивает transition-duration, отдельная @media (prefers-reduced-motion)
   здесь не нужна.

   .icon-arrow-right — класс на самой иконке (ArrowRightIcon, см.
   app/components/icons.tsx и локальную копию в app/components/Footer.tsx),
   общий для полусотни мест её использования по всему сайту: смещается
   стрелка внутри ссылки/кнопки, а не сама ссылка целиком — та уже
   поднимается на --hover-lift при наведении (задача 19), здесь оба приёма
   складываются, не конфликтуя. Только :hover, без :focus-visible — тот же
   выбор, что и у --hover-lift рядом (см. app/styles/pages.css, задача 19):
   по фокусу элемент получает кольцо, а не смещение/подъём. */
.icon-arrow-right {
  transition: transform var(--state-speed) var(--ease-out);
}
:is(a, button):hover .icon-arrow-right {
  transform: translateX(3px);
}
