/* ═══════════════════════════════════════════════════════════
   AI Prosto Обучение — study.ai-prosto.pro
   Дополнение к style.css: только блоки, которых нет
   на бизнес-странице. Переменные и базовая типографика общие.
   ═══════════════════════════════════════════════════════════ */

/* ═══════════ 2 · ПЕРВЫЙ ЭКРАН ═══════════ */
/* надзаголовка нет — текст начинается сразу, поэтому верхний отступ больше */
.st-hero{padding-top:clamp(56px,8vw,120px)}
.st-hero-in{grid-template-columns:minmax(0,1.12fr) minmax(0,.8fr);
  min-height:min(74vh,760px)}
.st-hero .hero-h{margin-bottom:clamp(20px,2.4vw,30px)}
.st-hero .hero-h em{white-space:normal}
.st-hero .hero-p{font-size:clamp(16px,1.5vw,19px);line-height:1.66;max-width:34ch;
  color:var(--ink-2);margin-bottom:clamp(24px,2.8vw,34px)}

.st-leads{font-size:13px;letter-spacing:.03em;color:var(--mute);
  margin-bottom:clamp(26px,3vw,38px);
  padding-top:18px;border-top:1px solid var(--line);max-width:42ch}
.st-leads b{color:var(--ink-2);font-weight:500}

/* светящаяся сеть — тот же мотив, что в иллюстрациях форматов.
   Чёрный фон кадра гасится screen-смешиванием, отдельная маска не нужна. */
/* screen смешивается с фоном своего слоя, а не со страницей: transform
   на picture создаёт слой, поэтому непрозрачный фон и маска живут на .st-art —
   иначе чёрный кадр читается серым прямоугольником (тот же приём, что в hero
   бизнес-страницы). Маска растворяет границу кадра в фон. */
.st-art{position:relative;width:100%;max-width:540px;margin-left:auto;
  perspective:1000px}
/* фон живёт на самом picture: transform поднимает его в отдельный слой, и screen
   у картинки смешивается именно с фоном этого слоя. Если фон отдать .st-art,
   кадр смешается с прозрачностью и станет чёрным пятном на фоне страницы. */
.st-art picture{display:block;background:var(--bg);transform-style:preserve-3d}
.st-art img{width:100%;height:auto;mix-blend-mode:screen;
  animation:brainpulse 7s ease-in-out infinite}
@keyframes brainpulse{
  0%,100%{filter:brightness(.84)}
  50%{filter:brightness(1.14)}
}

@media (max-width:900px){
  .st-hero-in{grid-template-columns:1fr;min-height:0;gap:0}
  .st-hero .hero-txt{display:contents}
  .st-hero .hero-h{order:1}
  .st-art{order:2;max-width:340px;margin:clamp(18px,5vw,30px) auto clamp(22px,5vw,32px)}
  .st-hero .hero-p{order:3}
  .st-leads{order:4}
  .st-hero .hero-btns{order:5}
}
@media (max-width:520px){
  .st-art{max-width:250px}
}


/* ═══════════ 3 · РАЗВИЛКА ФОРМАТОВ ═══════════ */
.st-fork{border-top:1px solid var(--line)}

.forks{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--line);border:1px solid var(--line)}
/* когда набора нет и групповая колонка скрыта — вторая занимает всю ширину */
.forks:has(> .fork[hidden]){grid-template-columns:minmax(0,1fr)}
.forks:has(> .fork[hidden]) .fork{max-width:660px;margin:0 auto}
.fork[hidden]{display:none}

.fork{background:var(--bg);padding:clamp(22px,2.6vw,38px);
  display:flex;flex-direction:column;position:relative;overflow:hidden;
  transition:background .4s ease}
.fork::after{content:'';position:absolute;right:-60px;top:-60px;width:210px;height:210px;
  background:radial-gradient(circle,rgba(57,255,20,.13),transparent 66%);
  opacity:0;transition:opacity .55s ease;pointer-events:none}
.fork:hover{background:var(--bg-2)}
.fork:hover::after{opacity:1}

.fork-art{margin:calc(-1 * clamp(22px,2.6vw,38px)) calc(-1 * clamp(22px,2.6vw,38px))
          clamp(20px,2.2vw,28px)}
.fork-art img{width:100%;height:auto;mix-blend-mode:screen;
  -webkit-mask-image:linear-gradient(180deg,#000 58%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 58%,transparent 100%)}

.fork-tag{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);
  margin-bottom:14px}
.fork-h{font-family:var(--display);font-weight:400;font-size:clamp(24px,2.6vw,34px);
  line-height:1.1;margin-bottom:13px}
.fork-lead{color:var(--ink-2);font-size:14.5px;line-height:1.7;margin-bottom:clamp(20px,2.2vw,28px)}

/* четыре опоры персонального формата */
.fork-pts{list-style:none;margin-bottom:clamp(20px,2.2vw,28px)}
.fork-pts li{padding:11px 0 11px 22px;position:relative;border-bottom:1px solid var(--line-2);
  font-size:13.5px;line-height:1.55}
.fork-pts li:last-child{border-bottom:0}
.fork-pts li::before{content:'';position:absolute;left:0;top:19px;width:9px;height:1px;background:var(--acc)}
.fork-pts b{display:block;font-weight:500;color:var(--ink)}
.fork-pts span{color:var(--mute)}

/* раскрывающиеся подробности внутри колонки */
.fork-acc{margin-bottom:clamp(22px,2.4vw,30px);border-top:1px solid var(--line)}
.fork-acc details{border-bottom:1px solid var(--line)}
.fork-acc summary{list-style:none;cursor:pointer;position:relative;
  padding:15px 34px 15px 0;font-size:13px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-2);transition:color .3s ease}
.fork-acc summary::-webkit-details-marker{display:none}
.fork-acc summary:hover{color:var(--acc)}
.fork-acc .q-i{right:2px;width:11px;height:11px;margin-top:-5px}
.fork-acc .q-i::before{top:5px;width:11px}
.fork-acc .q-i::after{left:5px;height:11px}
.fork-acc details[open] .q-i::after{transform:rotate(90deg);opacity:0}
.fork-acc details > *:not(summary){animation:qopen .45s ease both}

.ticks{list-style:none;padding-bottom:20px}
.ticks li{position:relative;padding:7px 0 7px 20px;color:var(--ink-2);
  font-size:13.5px;line-height:1.6}
.ticks li::before{content:'';position:absolute;left:0;top:15px;width:7px;height:1px;
  background:rgba(242,243,238,.4)}
.ticks b{color:var(--ink);font-weight:500}

/* пояснение под списком «что понадобится»: расходы на сервисы — не трата
   на интенсив, а то, что остаётся у человека. Отделено линией, чтобы читалось
   как вывод, а не как ещё один пункт */
.needs-note{margin:2px 0 20px;padding-top:14px;border-top:1px solid var(--line-2);
  font-size:13px;line-height:1.7;color:var(--mute);max-width:54ch}

/* страница после оплаты: шаги крупнее, чем в карточке курса — читать их будут
   один раз и сразу после платежа, когда важно понять, что дальше */
.paid-next{max-width:60ch;margin:clamp(26px,3vw,38px) 0;padding-bottom:0}
.paid-next li{padding:16px 0 16px 38px;font-size:15px;line-height:1.6}
.paid-next li::before{top:19px;font-size:12px}
.paid-next b{margin-bottom:3px}
.paid-back{margin-top:clamp(30px,3.5vw,44px)}

.prog{list-style:none;counter-reset:p;padding-bottom:20px}
.prog li{counter-increment:p;position:relative;padding:11px 0 11px 34px;
  border-bottom:1px solid var(--line-2);font-size:13.5px;line-height:1.55}
.prog li:last-child{border-bottom:0}
.prog li::before{content:counter(p,decimal-leading-zero);position:absolute;left:0;top:12px;
  font-family:var(--display);font-size:11px;letter-spacing:.1em;color:var(--acc)}
.prog b{display:block;font-weight:500}
.prog span{color:var(--mute)}

.sched{display:grid;grid-template-columns:auto 1fr;gap:0 18px;padding-bottom:20px;
  font-size:13.5px}
.sched dt{color:var(--mute);padding:8px 0;border-bottom:1px solid var(--line-2)}
.sched dd{color:var(--ink-2);padding:8px 0;border-bottom:1px solid var(--line-2)}
.sched dt:last-of-type,.sched dd:last-of-type{border-bottom:0}

.fork-price{font-family:var(--display);font-size:clamp(21px,2.2vw,28px);line-height:1.16;
  padding-top:20px;border-top:1px solid var(--line);margin-top:auto;margin-bottom:18px}
.fork-price b{font-weight:400;color:var(--acc)}
.fork-price-note{display:block;font-family:var(--sans);font-size:12.5px;line-height:1.6;
  color:var(--mute);margin-top:9px;max-width:38ch}

/* когда набора нет, на месте цены стоит фраза — крупный шрифт цены ей не идёт */
.fork-price-soon{font-family:var(--sans);font-size:14px;line-height:1.6;
  color:var(--mute);max-width:34ch}

/* фраза после кнопки, а не до: тому, кто уже решился, она не мешает,
   а сомневающемуся достаётся последний довод */
.fork-hook{margin:16px 0 0;font-size:13.5px;line-height:1.62;color:var(--ink-2);
  max-width:38ch}

/* строка под кнопкой оплаты: акцепт оферты — это оплата, поэтому ссылка
   должна стоять у кнопки, а не только в футере */
.fork-legal{margin:11px 0 0;font-size:12px;line-height:1.6;color:rgba(135,138,132,.8)}
.fork-legal a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.fork-legal a:hover{color:var(--ink-2)}

/* строка про сервисы — одинаково для обоих форматов */
.fork-note{margin-top:clamp(26px,3vw,40px);padding-left:26px;position:relative;
  color:var(--ink-2);font-size:clamp(14px,1.25vw,16px);line-height:1.7;max-width:62ch}
.fork-note::before{content:'';position:absolute;left:0;top:13px;width:14px;height:1px;
  background:var(--acc)}

@media (max-width:900px){
  .forks{grid-template-columns:1fr}
  .forks:has(> .fork[hidden]) .fork{max-width:none}
}


/* ═══════════ 4 · ПОЛОСА ВЕБИНАРА ═══════════ */
/* бесплатное стоит после платного и подаётся тише: строка, а не блок */
.st-web{border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  background:var(--bg-2)}
.web-in{display:flex;align-items:center;justify-content:space-between;gap:clamp(20px,3vw,44px);
  padding-top:clamp(30px,3.4vw,46px);padding-bottom:clamp(30px,3.4vw,46px);flex-wrap:wrap}
.web-txt .eyebrow{margin-bottom:14px}
.web-h{font-family:var(--display);font-weight:400;font-size:clamp(21px,2.3vw,30px);
  line-height:1.14;margin-bottom:9px}
.web-when{font-size:13.5px;color:var(--mute)}
.web-when i{font-style:normal;opacity:.45;margin:0 7px}
.web-in .btn{flex:0 0 auto}
@media (max-width:620px){
  .web-in{flex-direction:column;align-items:flex-start}
  .web-in .btn{width:100%;justify-content:center}
}


/* ═══════════ 5 · КТО ПРОВОДИТ ОБУЧЕНИЕ ═══════════ */
.people{border-top:1px solid var(--line);margin-bottom:clamp(44px,5vw,72px)}
/* фотографий нет — слева стоит имя, справа текст: сетка страницы
   сохраняется, и колонка не пустует */
.person{display:grid;grid-template-columns:minmax(0,270px) minmax(0,1fr);
  gap:clamp(24px,3.4vw,52px);align-items:start;
  padding:clamp(30px,3.6vw,50px) 0;border-bottom:1px solid var(--line)}

.person-id{position:sticky;top:96px}
.person-id h3{font-family:var(--display);font-weight:400;font-size:clamp(23px,2.4vw,32px);
  line-height:1.1;margin-bottom:10px}
.person-role{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--acc);line-height:1.5}
.person-tx p{color:var(--ink-2);font-size:14.5px;line-height:1.75;max-width:66ch;
  margin-bottom:15px}
.person-tx p:last-child{margin-bottom:0}

.person-facts{list-style:none;margin-top:24px;border-top:1px solid var(--line-2);
  display:grid;grid-template-columns:repeat(2,1fr);gap:0 clamp(18px,2.4vw,34px)}
.person-facts li{position:relative;padding:10px 0 10px 18px;font-size:13px;line-height:1.55;
  color:var(--mute);border-bottom:1px solid var(--line-2)}
.person-facts li::before{content:'';position:absolute;left:0;top:18px;width:7px;height:1px;
  background:rgba(242,243,238,.35)}

@media (max-width:820px){
  .person{grid-template-columns:1fr;gap:18px}
  .person-id{position:static}
  .person-facts{grid-template-columns:1fr}
}

/* четыре карточки «почему здесь» */
.st-who .whys{grid-template-columns:repeat(4,1fr)}
@media (max-width:1040px){.st-who .whys{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.st-who .whys{grid-template-columns:1fr}}

.st-who .slogan{margin-top:clamp(36px,4vw,58px);max-width:38ch}


/* пустой select — цвет подсказки, как у placeholder соседних полей */
.f-row select:required:invalid{color:rgba(135,138,132,.75)}


/* ═══════════ БЕЗ ДВИЖЕНИЯ ═══════════ */
@media (prefers-reduced-motion:reduce){
  .st-art picture{transform:none !important}
  .st-art img{animation:none;filter:none}
}


/* ═══════════ ЮРИДИЧЕСКИЕ СТРАНИЦЫ ═══════════ */
/* Длинный текст читают, а не разглядывают: узкая колонка, крупный интерлиньяж,
   заголовки разделов держат ритм. Никаких эффектов — они тут мешают. */
/* на страницах документов навигации нет, и кнопку некому оттолкнуть вправо */
.hdr-in .brand + .hdr-side{margin-left:auto}

.doc{padding:clamp(48px,7vw,96px) 0 clamp(60px,8vw,110px)}
.doc-in{max-width:820px}

.doc-art{padding-bottom:clamp(44px,6vw,80px);margin-bottom:clamp(44px,6vw,80px);
  border-bottom:1px solid var(--line)}
.doc-art:last-of-type{border-bottom:0;margin-bottom:clamp(24px,3vw,40px)}
.doc-art .eyebrow{margin-bottom:20px}

.doc-h{font-family:var(--display);font-weight:400;
  font-size:clamp(28px,4vw,50px);line-height:1.08;letter-spacing:-.015em;
  margin-bottom:clamp(20px,2.4vw,30px)}

.doc-lead{color:var(--ink-2);font-size:clamp(15px,1.4vw,17.5px);line-height:1.7;
  max-width:60ch;padding-bottom:clamp(22px,2.6vw,32px);
  border-bottom:1px solid var(--line-2);margin-bottom:clamp(24px,2.8vw,34px)}
.doc-lead b{color:var(--ink);font-weight:500}

.doc-art h2{font-family:var(--display);font-weight:400;
  font-size:clamp(19px,2vw,25px);line-height:1.18;
  margin:clamp(30px,3.4vw,44px) 0 14px}
.doc-art h2.doc-h{margin-top:0}

.doc-art p{color:var(--ink-2);font-size:15px;line-height:1.78;
  max-width:68ch;margin-bottom:15px}
.doc-art p b{color:var(--ink);font-weight:500}

.doc-art ul{list-style:none;margin:0 0 15px;max-width:68ch}
.doc-art ul li{position:relative;padding:8px 0 8px 22px;
  color:var(--ink-2);font-size:15px;line-height:1.7}
.doc-art ul li::before{content:"";position:absolute;left:0;top:18px;
  width:9px;height:1px;background:var(--acc)}

.doc-note{margin-top:clamp(26px,3vw,38px);padding:clamp(18px,2vw,26px);
  border:1px solid var(--line);background:var(--bg-2);
  font-size:14px;line-height:1.7}

.doc-date{color:var(--mute);font-size:13px;letter-spacing:.03em}

@media (max-width:620px){
  .doc-art p,.doc-art ul li{font-size:15.5px}
}

/* таблица «кому передаются данные» — та же сетка, что в расписании курса */
.doc-tbl{max-width:68ch;margin-bottom:15px;padding-bottom:0;font-size:15px}
.doc-tbl dt{color:var(--ink);padding:11px 0;font-weight:500}
.doc-tbl dd{color:var(--ink-2);padding:11px 0}


/* ═══════════ СТРАНИЦА ВЕБИНАРА ═══════════ */
/* Одна цель — регистрация, поэтому ни цен, ни второй кнопки. Блоки собраны
   из тех же деталей, что на странице обучения: hero с сетью, ticks, prog,
   whys, people, форма. Ниже — только то, чего там нет. */
/* надзаголовок есть, поэтому верхний отступ меньше, чем у страницы обучения */
.wb-hero{padding-top:clamp(44px,6vw,84px)}
/* когда, где, сколько — три факта, которые ищут первыми. Подпись тихая,
   значение в дисплейном шрифте: крупнее текста, тише заголовка */
.wb-when{display:grid;grid-template-columns:auto auto auto;justify-content:start;
  gap:16px clamp(28px,3.2vw,52px);
  margin-bottom:clamp(26px,3vw,38px);padding-top:20px;border-top:1px solid var(--line);
  max-width:52ch}
@media (max-width:560px){.wb-when{grid-template-columns:1fr 1fr}}
.wb-when dt{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);
  margin-bottom:6px}
.wb-when dd{font-family:var(--display);font-size:clamp(17px,1.55vw,21px);line-height:1.2}
/* на телефоне факты встают между лидом и кнопкой, как .st-leads на странице обучения */
@media (max-width:900px){.wb-when{order:4}}

/* что разберём: слева зачем и кому, справа программа эфира */
.wb-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(34px,5vw,86px);align-items:start}
.wb-grid .sec-head{margin-bottom:0}
.wb-fit{margin-top:clamp(28px,3.2vw,44px);padding-top:clamp(22px,2.6vw,32px);
  border-top:1px solid var(--line)}
.wb-fit-t{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);
  margin-bottom:8px}
.wb-fit .ticks{padding-bottom:0}
.wb-fit .ticks li{font-size:14.5px;padding:9px 0 9px 22px}
.wb-fit .ticks li::before{top:19px;width:9px;background:var(--acc)}

/* программа крупнее, чем в карточке курса: здесь она — главный аргумент */
.wb-prog{padding-bottom:0;border-top:1px solid var(--line)}
.wb-prog li{padding:20px 0 20px 46px;font-size:15px;line-height:1.6}
.wb-prog li:last-child{border-bottom:1px solid var(--line-2)}
.wb-prog li::before{top:25px;font-size:12px}
.wb-prog b{font-family:var(--display);font-weight:400;font-size:clamp(18px,1.6vw,22px);
  line-height:1.2;margin-bottom:6px}
.wb-prog span{display:block;font-size:14px;line-height:1.65}
@media (max-width:900px){.wb-grid{grid-template-columns:1fr}}

.wb-how,.wb-who{border-top:1px solid var(--line)}
.wb-how .fork-note{margin-top:clamp(30px,3.4vw,46px)}
.wb-who .people{margin-bottom:0}

/* после записи форма гаснет, но кнопка «Перейти в канал» под ней должна
   остаться живой — гасим поля, а не форму целиком */
.form.sent{opacity:1}
.form.sent > *:not(#fPay):not(.f-note){opacity:.55}
.form.sent #fPay{pointer-events:auto}
