/* Служебные страницы и состояния форм. Только токены tokens.css. */
.service-page{display:flex;flex-direction:column;align-items:flex-start;gap:22px}
.btn[hidden]{display:none}
.prose{max-width:72ch;margin-top:22px;display:grid;gap:14px}
.prose h2{font-size:var(--text-h3);line-height:1.25;margin-top:18px}
.prose ul,.prose ol{margin:0;padding-left:1.25em;display:grid;gap:10px}
.prose a,.check a{text-decoration:underline}
.prose small{color:var(--fg-muted);font-size:.875rem}
/* Формы */
.hp{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Сообщение об ошибке удлиняет ячейку .form-row: поле-сосед не должно растягиваться вслед за ней */
.field{align-content:start}
.input[aria-invalid="true"]{border-color:var(--imisp-rose-700)}
.field-error{font-size:.875rem;line-height:1.4;color:var(--imisp-rose-700)}
.form-status{font-size:.9375rem;line-height:1.45;color:var(--fg-muted)}
.form-status:empty{display:none}
.form-status.is-error,.form-status.is-success{padding:12px 14px;border-radius:12px}
.form-status.is-error{background:var(--imisp-rose-100);color:var(--imisp-rose-700)}
.form-status.is-success{background:var(--imisp-teal-100);color:var(--imisp-teal-900)}
.form-status a{color:inherit;font-weight:600;text-decoration:underline}
/* «Настройки cookie» в футере — кнопка, выглядит как его ссылки */
.footer-link{appearance:none;min-height:24px;padding:0;border:0;background:none;color:var(--imisp-grey-200);font:inherit;font-size:.9375rem;cursor:pointer}
.footer-link:hover{color:var(--imisp-white)}
/* Страница программы: классы главной плюс то, чего на главной нет. Только токены tokens.css. */
.program-hero{padding-top:20px}
.crumbs{margin-bottom:20px;font-size:.8125rem;color:var(--fg-muted)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:0 8px;margin:0;padding:0;list-style:none}
.crumbs li{display:flex;align-items:center;gap:8px;min-height:24px}
.crumbs li + li::before{content:"/";color:var(--imisp-grey-300)}
.crumbs a{display:inline-flex;align-items:center;min-height:24px;color:inherit;text-decoration:underline}
.crumbs a:hover{color:var(--fg)}
.program-hero-grid{display:grid;gap:24px}
.program-hero-grid > *{min-width:0}
.program-hero-text{display:flex;flex-direction:column;gap:14px}
/* В tokens.css нет --text-h1 из docs/03. Полный --text-display не вмещает «администрирования» в 390 px */
.program-hero .display{font-size:min(calc(var(--text-display)*.72),8cqw);line-height:1.08;max-width:none}
.program-hero .btn,.program-cta .btn,.program-bar .btn{padding-block:10px;line-height:1.25;text-align:center;white-space:normal}
.program-facts{margin-top:0;padding:22px;border-radius:16px;background:var(--bg-subtle);display:grid;grid-template-columns:minmax(0,1fr)}
.program-facts .facts{display:grid;gap:10px;margin:0;font-size:.9375rem}
.program-facts .facts > div{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:12px;align-items:baseline;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--imisp-shadow) 12%,transparent)}
.program-facts .facts dt{font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted)}
.program-facts .facts dd{margin:0;font-weight:500}
.program-facts .facts > div:first-child{padding-top:0;border-top:0}
.program-prices{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.program-prices b{display:block;font-weight:600;font-variant-numeric:tabular-nums}
.program-prices span{display:block;font-size:.8125rem;font-weight:400;line-height:1.35;color:var(--fg-muted)}
.program-section:nth-of-type(even){background:var(--bg-subtle)}
.program-section-grid{display:grid;gap:20px}
.program-section-grid > *{min-width:0}
.program-body{margin-top:0;max-width:none}
.program-body > *{max-width:72ch}
.program-body > table{max-width:none}
.program-body strong{font-weight:600}
.program-body ul,.program-body ol{padding:0;list-style:none;gap:12px}
.program-body li{position:relative;padding-left:32px}
.program-body ul > li::before{content:"";position:absolute;left:8px;top:.6em;width:8px;height:8px;border-radius:999px;background:var(--accent)}
.program-body ol{counter-reset:program-item}
.program-body ol > li{counter-increment:program-item}
.program-body ol > li::before{content:counter(program-item,decimal-leading-zero);position:absolute;left:0;top:.2em;font-family:var(--font-display);font-weight:700;font-size:.8125rem;color:var(--accent)}
.program-body blockquote{margin:0;padding-left:20px;border-left:3px solid var(--imisp-peach-400);display:grid;gap:12px}
.program-body blockquote p:first-child{font-family:var(--font-display);font-weight:600;font-size:var(--text-h3);line-height:1.3;letter-spacing:-.01em}
.program-body blockquote p:last-child{font-size:.9375rem;color:var(--fg-muted)}
.program-body table{width:100%;border-collapse:collapse;font-size:.9375rem;line-height:1.45}
.program-body th{padding:0 16px 10px 0;text-align:left;font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted)}
.program-body td{padding:14px 16px 14px 0;border-top:1px solid var(--imisp-grey-200);vertical-align:top}
.program-person{padding:22px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;max-width:72ch}
.program-person-text{display:grid;gap:6px}
.program-person-text b{font-family:var(--font-display);font-weight:700;font-size:1.125rem;line-height:1.25}
.program-person-text span,.program-person-text p{font-size:.9375rem;line-height:1.5;color:var(--fg-muted)}
.faq{display:grid;gap:10px}
.faq-item{padding:0 18px}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;padding:12px 0;font-family:var(--font-display);font-weight:600;font-size:1.0625rem;line-height:1.3;cursor:pointer;list-style:none}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary svg{flex:0 0 auto;color:var(--accent);transition:transform .2s var(--ease)}
.faq-item[open] summary svg{transform:rotate(180deg)}
.faq-answer{padding-bottom:16px;max-width:72ch;font-size:1rem;line-height:1.5;color:var(--fg-muted)}
.program-cta{background:var(--bg-inverse);color:var(--imisp-white)}
.program-cta .lead{color:var(--imisp-teal-200)}
.program-cta-row{display:grid;gap:20px;justify-items:start}
.program-cta-text{display:grid;gap:12px}
.program-cta .btn{background:var(--imisp-white);color:var(--imisp-teal-800)}
.program-cta .btn:hover{background:var(--imisp-teal-100);color:var(--imisp-teal-900)}
.program-also-head{display:grid;gap:12px;justify-items:start}
.program-also{margin:0;padding:0;list-style:none;display:grid;gap:16px}
.program-also .badge{align-self:flex-start}
/* Sticky, а не fixed: см. cookie.css. Нулевая высота — скрытая и прокрученная панель не оставляет щели над футером. Стоит над баннером cookie: --cookie-h задаёт consent.js */
.program-bar{position:sticky;bottom:var(--cookie-h,0px);z-index:90;height:0}
.program-bar-inner{position:absolute;left:0;right:0;bottom:0;display:grid;gap:6px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--imisp-grey-200);box-shadow:0 -8px 24px color-mix(in srgb,var(--imisp-shadow) 12%,transparent)}
.program-bar-inner p{font-size:.8125rem;font-weight:600;line-height:1.3;text-align:center}
/* Открытое меню важнее панели: на низком экране она закрыла бы его нижние пункты */
body:has(.nav.is-open) .program-bar{display:none}
/* Клавиатурный фокус не должен прятаться за панелью. Условие по наличию, а не по hidden: панель появляется уже после прокрутки к фокусу */
@media (max-width:719px){
  html:has(.program-bar){scroll-padding-bottom:120px}
}
/* «Длительность» не влезает в свою колонку */
@container (max-width:359px){
  .program-facts .facts > div{grid-template-columns:minmax(0,1fr);gap:2px}
}
@container (max-width:719px){
  /* Первый экран телефона — длительность, старт и цена; кнопка в это время в липкой панели. В фактах нет ссылок, порядок Tab не меняется */
  .program-hero .hero-cta,.program-facts .facts > div:nth-child(2),.program-facts .facts > div:last-child{order:1}
  .program-body thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .program-body tr{display:grid;gap:10px;padding:16px 0;border-top:1px solid var(--imisp-grey-200)}
  .program-body td{display:block;padding:0;border:0}
  .program-body td::before{content:attr(data-label);display:block;margin-bottom:2px;font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted)}
  .program-body td:first-child::before{display:none}
}
@container (min-width:720px){
  .program-hero{padding-top:24px}
  .program-facts{padding:28px}
  .program-cta-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:32px}
  .program-also{grid-template-columns:repeat(2,minmax(0,1fr))}
  .program-bar{display:none}
}
@container (min-width:1100px){
  .program-hero-grid{grid-template-columns:7fr 5fr;grid-template-rows:auto 1fr;gap:24px 64px}
  .program-facts{grid-column:2;grid-row:1/3;align-self:start;padding:36px 40px}
  /* Ряд hero тянется за фактами, ряд flex-кнопок — за ним */
  .program-hero .hero-cta{align-content:flex-start}
  /* Минимум — под «управленческие» в заголовке: на 1100 px четыре доли уже этого слова */
  .program-section-grid{grid-template-columns:minmax(320px,4fr) 8fr;gap:64px;align-items:start}
}
