.calendar-page { min-height: 100dvh; background: #f4f7fd; }
.calendar-page-main { display: flex; align-items: center; justify-content: center; min-height: 100dvh; padding: 24px; }
.calendar-page .booking-dialog { position: relative; inset: auto; flex: 0 1 1100px; width: 100%; max-height: none; margin: 0; overflow: hidden; box-shadow: 0 18px 65px #19345b22; }
.calendar-page .booking-dialog::backdrop { display: none; }
.calendar-page .booking-close { display: none; }
.calendar-page .booking-shell { min-height: 540px; }
.calendar-page .booking-dialog.is-success { flex-basis: 610px; }

@media (max-width: 640px) {
  .calendar-page-main { display: block; min-height: 100dvh; padding: 0; }
  .calendar-page .booking-dialog { width: 100%; min-height: 100dvh; max-height: none; border-radius: 0; box-shadow: none; overflow: visible; }
  .calendar-page .booking-shell { min-height: 100dvh; border-radius: 0; }
  .calendar-page .booking-summary { padding: calc(24px + env(safe-area-inset-top)) 24px 22px; }
  .calendar-page .booking-month-column { padding: 26px 24px 48px; }
  .calendar-page .booking-timezone { left: 24px; }
  .calendar-page .booking-times-column { padding: 24px 24px max(24px, env(safe-area-inset-bottom)); }
  .calendar-page .booking-contact-stage { padding: 24px 24px max(90px, env(safe-area-inset-bottom)); }
  .calendar-page .booking-dialog.is-success { width: 100%; }
}

body .booking-shell { position: relative; }
.booking-progress { margin: 0; padding: 16px 24px; color: #246bdc; font-size: 14px; font-weight: 700; }
@media (min-width: 641px) { .booking-progress { display: none; } }
.booking-extra { margin: 4px 0 16px; }
.booking-extra summary { cursor: pointer; color: #526986; font-size: 14px; padding: 12px 0; }
@media (max-width: 640px) {
  body .booking-shell { min-height: 100dvh; }
  body .booking-summary { padding: max(16px, env(safe-area-inset-top)) 20px 16px; }
  body .booking-brand { margin-bottom: 10px; }
  body .booking-summary h2 { font-size: 22px; margin-bottom: 8px; }
  body .booking-summary h2 br { display: none; }
  body .booking-summary > p:not(.booking-chosen),
  body .booking-duration { display: none; }
  body .booking-badges { margin: 0; }
  body .booking-badges span + span { font-size: 0; }
  body .booking-badges span + span::after { content: 'Видеозвонок · МСК'; font-size: 12px; }
  body .booking-progress { padding: 18px 20px 0; background: #fff; }
  body .booking-contact-stage { padding: 18px 20px 20px; }
  body .booking-contact-stage input:not([type=hidden]) { min-height: 50px; margin-bottom: 18px; border-radius: 10px; }
  body .booking-actions { bottom: 0; margin-top: 8px; }
  body .booking-confirm { width: 100%; min-height: 52px; border-radius: 12px; font-size: 16px; }
  body .booking-month-column { padding: 20px 20px 40px; }
  body .booking-grid button { min-height: 40px; }
  body .booking-times-column { padding: 20px 20px 115px; }
  body .booking-times { gap: 10px; }
  body .booking-times button { min-height: 46px; font-size: 15px; border-radius: 10px; }
  body .booking-times-column h3 { scroll-margin-top: 16px; }
  body .booking-next { position: fixed; left: 16px; bottom: max(12px, env(safe-area-inset-bottom)); width: calc(100% - 32px); min-height: 54px; z-index: 5; border-radius: 12px; box-shadow: 0 0 0 12px #fff, 0 -8px 24px #19345b18; font-size: 16px; }
  body .booking-calendar-back { min-height: 44px; font-size: 14px; }
  body .booking-dialog[data-stage="calendar"] .booking-summary { display: none; }
}

.booking-qualification-stage fieldset { margin-bottom: 24px; }
.booking-qualification-stage h3 { font-size: 22px; margin: 0 0 8px; }
.booking-qualification-stage form > p { font-size: 14px; color: #637795; margin-bottom: 24px; }
.booking-qualification-stage .qualification-choice { display: flex !important; align-items: center; gap: 10px; padding: 12px; min-height: 48px; border: 1px solid #d5e3fb; border-radius: 10px; margin: 8px 0 !important; font-size: 14px !important; font-weight: 400 !important; }
.booking-qualification-stage .qualification-choice:has(input:checked) { border-color: #236bed; background: #edf3ff; }
.booking-qualification-stage input[type=radio] { width: 18px !important; min-height: 18px !important; height: 18px; margin: 0 !important; accent-color: #236bed; }
@media (min-width: 641px) { body:not(.calendar-page) .booking-progress { display: none; } }

.booking-actions .booking-back { flex: none; white-space: nowrap; padding: 12px 6px; }
.questionnaire-progress { color: #246bdc; font-size: 14px; font-weight: 700; margin-bottom: 20px; }

@media (min-width: 641px) {
  .booking-dialog .booking-shell { flex-wrap: wrap; }
  .booking-dialog .booking-summary { flex-basis: 30%; }
  .booking-dialog .booking-progress { display: none; }
  .booking-qualification-stage { max-height: 100%; overflow-y: auto; }
}
.booking-qualification-stage legend { margin-bottom: 10px; }
.booking-dialog[open] { animation: booking-appear .2s ease-out; }
@keyframes booking-appear { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .booking-dialog[open] { animation: none; } }
