.abp-booking { color: #26334a; }
.abp-booking [hidden] { display: none !important; }
.abp-booking fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.abp-booking__section + .abp-booking__section { margin-top: 34px; padding-top: 30px; border-top: 1px solid #e3e9f2; }
.abp-booking legend { width: 100%; margin: 0 0 18px; padding: 0; color: #0d1830; font-size: 20px; font-weight: 760; }
.abp-booking__types { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.abp-booking-type { position: relative; display: block; cursor: pointer; }
.abp-booking-type input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.abp-booking-type__body { position: relative; display: grid; grid-template-columns: 42px minmax(0,1fr) 22px; gap: 12px; align-items: center; min-height: 112px; padding: 18px 16px; border: 2px solid #dce4ef; border-radius: 13px; background: linear-gradient(145deg,#fff 0%,#f8faff 100%); box-shadow: 0 8px 22px rgba(13,24,48,.04); transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, background .18s ease; }
.abp-booking-type:hover .abp-booking-type__body { border-color: #b8c8de; transform: translateY(-2px); box-shadow: 0 12px 28px rgba(13,24,48,.08); }
.abp-booking-type input:checked + .abp-booking-type__body { border-color: #0649ab; background: linear-gradient(145deg,#fff 0%,#eef4ff 100%); box-shadow: 0 0 0 3px rgba(6,73,171,.10),0 12px 28px rgba(13,24,48,.08); }
.abp-booking-type input:focus-visible + .abp-booking-type__body { outline: 3px solid rgba(6,73,171,.25); outline-offset: 2px; }
.abp-booking-type__icon { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 11px; color: #0649ab; background: rgba(6,73,171,.08); font-size: 22px; }
.abp-booking-type input:checked + .abp-booking-type__body .abp-booking-type__icon { color: #fff; background: #0649ab; }
.abp-booking-type__copy { display: flex; min-width: 0; flex-direction: column; }
.abp-booking-type__copy strong { color: #0d1830; font-size: 15px; }
.abp-booking-type__copy small { margin-top: 4px; color: #667085; font-size: 11px; font-weight: 400; line-height: 1.45; }
.abp-booking-type__check { position: relative; width: 20px; height: 20px; border: 2px solid #c6d1e0; border-radius: 50%; background: #fff; }
.abp-booking-type input:checked + .abp-booking-type__body .abp-booking-type__check { border-color: #0649ab; background: #0649ab; }
.abp-booking-type input:checked + .abp-booking-type__body .abp-booking-type__check::after { position: absolute; content: ""; top: 3px; left: 6px; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.abp-booking-type__badge { position: absolute; top: -10px; right: 12px; padding: 4px 8px; border-radius: 999px; color: #173116; background: #ffd23f; font-size: 10px; font-weight: 760; letter-spacing: .01em; box-shadow: 0 3px 8px rgba(13,24,48,.12); }
.abp-booking__packages { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.abp-booking-package { position: relative; display: block; cursor: pointer; }
.abp-booking-package input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.abp-booking-package__body { display: flex; flex-direction: column; min-height: 150px; padding: 18px; border: 2px solid #dce4ef; border-radius: 12px; background: #fbfcfe; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.abp-booking-package input:checked + .abp-booking-package__body { border-color: #0649ab; background: #f5f8fe; box-shadow: 0 0 0 3px rgba(6,73,171,.10); }
.abp-booking-package input:focus-visible + .abp-booking-package__body { outline: 3px solid rgba(6,73,171,.24); outline-offset: 2px; }
.abp-booking-package:hover .abp-booking-package__body { transform: translateY(-2px); }
.abp-booking-package strong { color: #0d1830; font-size: 16px; }
.abp-booking-package small { flex: 1; margin-top: 6px; color: #667085; font-size: 12px; line-height: 1.45; }
.abp-booking-package b { margin-top: 13px; color: #0649ab; font-size: 20px; }
.abp-booking-package em { color: #667085; font-size: 11px; font-style: normal; }
.abp-booking__billing-label { margin-bottom: 9px; color: #2f3c52; font-size: 14px; font-weight: 650; }
.abp-booking__billing { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.abp-booking-billing { position: relative; display: block; cursor: pointer; }
.abp-booking-billing input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.abp-booking-billing__body { position: relative; display: grid; grid-template-columns: 42px minmax(0,1fr) 22px; gap: 12px; align-items: center; min-height: 92px; padding: 17px 16px; border: 2px solid #dce4ef; border-radius: 13px; background: linear-gradient(145deg,#fff 0%,#f8faff 100%); box-shadow: 0 8px 22px rgba(13,24,48,.04); transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, background .18s ease; }
.abp-booking-billing:hover .abp-booking-billing__body { border-color: #b8c8de; transform: translateY(-2px); box-shadow: 0 12px 28px rgba(13,24,48,.08); }
.abp-booking-billing input:checked + .abp-booking-billing__body { border-color: #0649ab; background: linear-gradient(145deg,#fff 0%,#eef4ff 100%); box-shadow: 0 0 0 3px rgba(6,73,171,.10),0 12px 28px rgba(13,24,48,.08); }
.abp-booking-billing input:focus-visible + .abp-booking-billing__body { outline: 3px solid rgba(6,73,171,.25); outline-offset: 2px; }
.abp-booking-billing__icon { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 11px; color: #0649ab; background: rgba(6,73,171,.08); font-size: 22px; }
.abp-booking-billing input:checked + .abp-booking-billing__body .abp-booking-billing__icon { color: #fff; background: #0649ab; }
.abp-booking-billing__copy { display: flex; min-width: 0; flex-direction: column; }
.abp-booking-billing__copy strong { color: #0d1830; font-size: 15px; }
.abp-booking-billing__copy small { margin-top: 3px; color: #667085; font-size: 11px; font-weight: 400; line-height: 1.4; }
.abp-booking-billing__check { position: relative; width: 20px; height: 20px; border: 2px solid #c6d1e0; border-radius: 50%; background: #fff; }
.abp-booking-billing input:checked + .abp-booking-billing__body .abp-booking-billing__check { border-color: #0649ab; background: #0649ab; }
.abp-booking-billing input:checked + .abp-booking-billing__body .abp-booking-billing__check::after { position: absolute; content: ""; top: 3px; left: 6px; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.abp-booking-billing__badge { position: absolute; top: -10px; right: 12px; padding: 4px 8px; border-radius: 999px; color: #173116; background: #ffd23f; font-size: 10px; font-weight: 760; letter-spacing: .01em; box-shadow: 0 3px 8px rgba(13,24,48,.12); }
.abp-booking__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.abp-booking__grid--compact { align-items: start; }
.abp-booking__grid--users { grid-template-columns: minmax(0,1fr); margin-top: 18px; }
.abp-booking__grid label { min-width: 0; color: #2f3c52; font-size: 14px; font-weight: 650; }
.abp-booking__wide { grid-column: 1 / -1; }
.abp-booking__billing-address { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin-top: 4px; padding-top: 22px; border-top: 1px solid #e3e9f2; }
.abp-booking__billing-address-title { grid-column: 1 / -1; color: #0d1830; font-size: 15px; font-weight: 760; }
.abp-booking input[type="text"],
.abp-booking input[type="email"],
.abp-booking input[type="tel"],
.abp-booking input[type="number"],
.abp-booking select { width: 100%; min-height: 50px; margin-top: 7px; padding: 0 14px; border: 1px solid #d6deea; border-radius: 8px; color: #0d1830; background: #fbfcfe; font: inherit; font-weight: 400; }
.abp-booking input:focus,
.abp-booking select:focus { border-color: #0649ab; outline: 3px solid rgba(6,73,171,.11); }
.abp-booking label > small { display: block; margin-top: 6px; color: #667085; font-size: 12px; font-weight: 400; }
.abp-booking-summary { display: grid; gap: 9px; margin-top: 20px; padding: 18px 20px; border-radius: 10px; background: #f3f6fa; }
.abp-booking-summary > div { display: flex; justify-content: space-between; gap: 20px; font-size: 13px; }
.abp-booking-summary strong { color: #0d1830; }
.abp-booking-summary__total { margin-top: 4px; padding-top: 12px; border-top: 1px solid #d8e0eb; font-size: 15px !important; }
.abp-booking-summary__total strong { color: #0649ab; font-size: 19px; }
.abp-booking-summary__note { color: #536078; font-size: 11px; line-height: 1.5; }
.abp-booking__consent { display: flex; align-items: flex-start; gap: 10px; margin-top: 28px; color: #536078; font-size: 13px; font-weight: 400; line-height: 1.55; }
.abp-booking__consent input { flex: 0 0 18px; width: 18px; height: 18px; margin: 2px 0 0; accent-color: #0649ab; }
.abp-booking__consent a { color: #0649ab; text-decoration: underline; }
.abp-booking__submit { width: 100%; min-height: 54px; margin-top: 20px; padding: 0 24px; border: 0; border-radius: 8px; color: #151c2b; background: #ffd23f; font-size: 15px; font-weight: 760; cursor: pointer; transition: filter .18s ease, transform .18s ease; }
.abp-booking__submit:hover { filter: brightness(.96); transform: translateY(-1px); }
.abp-booking__submit:focus-visible { outline: 3px solid rgba(6,73,171,.28); outline-offset: 3px; }
.abp-booking__footnote { margin: 11px 0 0; color: #667085; font-size: 12px; line-height: 1.5; text-align: center; }
.abp-booking__trap { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.abp-booking-notice { margin-bottom: 24px; padding: 14px 16px; border: 1px solid; border-radius: 8px; font-size: 14px; line-height: 1.55; }
.abp-booking-notice--success { border-color: #8ac7a1; color: #135b2c; background: #edf9f1; }
.abp-booking-notice--error { border-color: #e4a0a0; color: #8b2020; background: #fff1f1; }

@media (max-width: 620px) {
  .abp-booking__packages,
  .abp-booking__types,
  .abp-booking__billing,
  .abp-booking__grid,
  .abp-booking__billing-address { grid-template-columns: 1fr; }
  .abp-booking__wide { grid-column: auto; }
  .abp-booking__billing-address,
  .abp-booking__billing-address-title { grid-column: auto; }
  .abp-booking-package__body { min-height: 0; }
  .abp-booking-summary > div { align-items: flex-start; flex-direction: column; gap: 2px; }
}
