/* Scoped checkout layout; other CMS pages and footer attribution are untouched. */
.checkout-page { max-width: 1080px; margin-inline: auto; }
.checkout-page .page-hero { padding: 36px 0 18px; max-width: none; }
.checkout-page .page-hero .lede { margin-bottom: 0; }
.checkout-progress { width: calc(100% - var(--gutter, 22px) * 2); margin: 0 auto 24px; }
.checkout-progress ol { display: flex; justify-content: space-between; gap: 12px; list-style: none; padding: 0; margin: 0; }
.checkout-progress li { display: flex; min-width: 0; align-items: center; gap: 9px; color: #677365; font-size: calc(.9rem * var(--gh-text-scale, 1)); font-weight: 600; }
.checkout-progress li span { display: grid; place-items: center; width: 30px; height: 30px; flex: 0 0 30px; border: 1px solid #cbd5c6; border-radius: 50%; background: #fffdf8; font-size: 14px; }
.checkout-progress li[aria-current] { color: #355541; }
.checkout-progress li[aria-current] span, .checkout-progress li.is-complete span { background: #355541; color: #fff; border-color: #355541; }
.checkout-page .checkout-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 310px); gap: 28px; align-items: start; padding: 0 0 56px; }
.checkout-page .booking-card { padding: clamp(20px, 3vw, 32px); min-width: 0; background: #fffdf9; }
.checkout-page .booking-card h2 { margin-bottom: 16px; }
.checkout-page .booking-card :is(p, li) { line-height: 1.65; }
.checkout-page .checkout-summary { min-width: 0; background: #edf1e6; padding: 26px; border: 1px solid #d9e0cf; border-radius: 20px; }
.checkout-summary h3 { margin-top: 0; }
.checkout-summary p:last-child { margin-bottom: 0; }
.checkout-details { margin: 16px 0; border-top: 1px solid #dedfd3; border-bottom: 1px solid #dedfd3; padding: 0; }
.checkout-details summary { cursor: pointer; padding: 15px 0; font-size: calc(.9rem * var(--gh-text-scale, 1)); font-weight: 700; color: #355541; }
.checkout-details summary:focus-visible { outline: 3px solid #426653; outline-offset: 4px; }
.checkout-details[open] { padding-bottom: 8px; }
.checkout-details :is(p, li) { font-size: calc(.9rem * var(--gh-text-scale, 1)); }
.checkout-details ul { padding-left: 20px; }
.checkout-note { font-size: calc(.9rem * var(--gh-text-scale, 1)); color: #536457; }
.checkout-policy { font-size: calc(.9rem * var(--gh-text-scale, 1)); border-left: 3px solid #b59161; padding-left: 14px; }
.checkout-ticket-list { padding: 0; margin: 20px 0; list-style: none; }
.checkout-ticket-list li { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid #e4dfd3; }
.checkout-ticket-list small { display: block; color: #536457; font-size: calc(.85rem * var(--gh-text-scale, 1)); }
.checkout-ticket-list strong { white-space: nowrap; }
.checkout-total { padding: 18px 0; border-top: 2px solid #d5dccf; margin: 16px 0; }
.checkout-total h3 { margin: 0; }
.checkout-page .checkout-payment-choice { border: 0; padding: 0; margin: 24px 0; min-width: 0; }
.checkout-payment-choice legend { font-weight: 700; }
.checkout-primary { display: flex; justify-content: center; width: 100%; min-height: 52px; text-align: center; white-space: normal; }
.checkout-page .booking-reference { font-size: calc(1rem * var(--gh-text-scale, 1)); overflow-wrap: anywhere; margin: 6px 0 14px; padding: 8px 0; background: transparent; }
.checkout-page .status-badge { white-space: normal; }
.checkout-page .status-badge.checkout-status-unpaid { color: #85383d; background: #fbe8e6; border: 1px solid #e9bdbb; }
.checkout-visitor-rules { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.checkout-visitor-rules li { background: #f6f8ef; border: 1px solid #dce3d3; border-radius: 14px; padding: 16px; }
.checkout-visitor-heading { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.checkout-visitor-number { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: #355541; color: #fff; flex: 0 0 30px; font-size: 14px; }
.checkout-visitor-heading strong { flex: 1; min-width: 100px; }
.checkout-visitor-heading small { display: block; font-size: calc(.8rem * var(--gh-text-scale, 1)); color: #536457; font-weight: 400; }
.checkout-rule-tag { background: #e5ebdc; color: #355541; border-radius: 8px; padding: 4px 8px; font-size: calc(.75rem * var(--gh-text-scale, 1)); font-weight: 600; }
.checkout-visitor-rules p { margin: 10px 0 0; }
.checkout-consent-note { padding: 14px 16px; border-left: 3px solid #b59161; background: #faf3e7; border-radius: 0 10px 10px 0; }
.checkout-deadline { margin: 20px 0; padding: 14px 16px; background: #fff4de; border: 1px solid #e8cf9b; border-radius: 12px; }
.checkout-deadline p { margin: 5px 0; font-size: calc(.9rem * var(--gh-text-scale, 1)); }
.checkout-report { padding-top: 22px; margin-top: 22px; border-top: 1px solid #d5dccf; }
.checkout-report label { font-size: calc(.9rem * var(--gh-text-scale, 1)); }
.checkout-page .gh-booking-estimate { margin-top: 12px; }
.checkout-page .gh-visitor-reminder { padding-top: 8px; }
.checkout-page :is(input, select, button, a) { max-width: 100%; }
.checkout-page .checkout-summary a { overflow-wrap: anywhere; }
.checkout-page .form-grid { align-items: start; }
/* Keep an already-rendered or initially collapsed widget usable after a viewport change. */
.checkout-page [data-turnstile-widget] { max-width: 100%; overflow-x: auto; }
@media(max-width: 820px) {
    .checkout-page .checkout-layout { grid-template-columns: minmax(0, 1fr); gap: 20px; }
    .checkout-page .checkout-summary { padding: 22px; }
}
@media(max-width: 480px) {
    .checkout-page .page-hero { padding-top: 24px; }
    .checkout-progress ol { gap: 6px; }
    .checkout-progress li { flex-direction: column; gap: 6px; text-align: center; font-size: calc(.8rem * var(--gh-text-scale, 1)); }
    .checkout-page .booking-card { padding: 18px; }
    .checkout-page .form-grid { grid-template-columns: minmax(0, 1fr); }
    .checkout-ticket-list li { gap: 8px; }
}
