/* Booking owns its layout; buttons, fields, badges and dialogs use shared tokens. */
.booking {max-width:960px;padding-block:48px 64px}
.booking-intro {margin-bottom:30px}
.booking-intro .eyebrow {font-size:10px;margin-bottom:14px}
.booking-intro h1 {font-size:44px}
.booking-intro>p:last-child {color:var(--muted-foreground);font-size:14px;margin-top:14px;max-width:560px}
.booking-toolbar {display:flex;align-items:center;justify-content:space-between;gap:18px;padding-bottom:24px;border-bottom:1px solid var(--border)}
.booking-location {display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted-foreground)}
.booking-location .ico {width:15px;height:15px}
.booking-filters {display:flex;flex-wrap:nowrap;gap:8px;padding:22px 2px 26px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
.filter-chip {display:flex;flex:0 0 auto;white-space:nowrap;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;background:white;padding:7px 12px;min-height:36px;color:var(--muted-foreground);font-size:12px}
.filter-chip span {font-size:10px;opacity:.85;font-variant-numeric:tabular-nums}
.filter-chip[aria-pressed=true] {background:var(--foreground);border-color:var(--foreground);color:white}
.filter-chip:hover {border-color:var(--foreground)}
.day-group {margin-bottom:24px}
.day-heading {position:sticky;top:80px;z-index:5;display:flex;align-items:center;gap:12px;padding:12px 0;background:var(--background);border-bottom:1px solid var(--border)}
.day-heading h2 {font-family:var(--font-body);font-size:13px;font-weight:600;letter-spacing:0}
.day-group .session-list {border-top:0;border-top-left-radius:0;border-top-right-radius:0}
.booking .session-row {padding:16px 20px}
.booking .session-info h3 {font-size:18px}
.booking .session-info p {font-size:12px}
.booking .session-time {font-size:12px}
.sold-out-sessions {border-block:1px solid var(--border);margin-top:28px}
.sold-out-sessions>summary {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 2px;font-size:13px;font-weight:500;cursor:pointer;list-style:none}
.sold-out-sessions>summary::-webkit-details-marker {display:none}
.sold-out-sessions>summary .ico {width:16px;height:16px;flex-shrink:0}
.sold-out-sessions[open]>summary .ico {transform:rotate(180deg)}
.sold-out-sessions .day-heading {position:static;padding-block:10px}
.sold-out-sessions .day-group {margin-bottom:16px}
.booking .sold-out-sessions .session-row {padding:12px 16px}
.booking .sold-out-sessions .session-info h3 {font-size:15px;color:var(--muted-foreground)}
.booking .sold-out-sessions .session-info p {display:none}
.booking-help {border-top:1px solid var(--border);padding-top:24px;margin-top:36px;font-size:13px;color:var(--muted-foreground)}
.booking-help a {display:inline-flex;gap:5px;align-items:center;color:var(--primary);margin-left:4px}
.booking-help .ico {width:14px;height:14px}
.course-note {margin-block:24px;font-size:13px;color:var(--muted-foreground);line-height:1.8}
.course-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.course-card {display:flex;flex-direction:column}
.course-card .card-content {padding:24px;display:flex;flex-direction:column;flex:1;align-items:start}
.course-card h2 {font-size:24px;margin-top:16px;margin-bottom:12px}
.course-schedule {font-size:13px;line-height:1.9;font-variant-numeric:tabular-nums}
.course-schedule span {display:block;color:var(--muted-foreground);font-size:12px}
.course-availability {margin-top:14px}
.course-price {margin-top:18px;font-size:16px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.course-price span {font-size:13px;font-weight:400;letter-spacing:0}
.course-blurb {margin-top:14px!important;font-size:13px;color:var(--muted-foreground);line-height:1.8}
.course-includes {margin-top:18px!important;padding-top:16px;border-top:1px solid var(--border);font-size:12px;line-height:1.8;color:var(--muted-foreground)}
.course-includes strong {color:var(--foreground);font-weight:500}
.course-requires {font-size:12px;margin-top:14px!important;color:var(--primary)}
.course-card .card-footer {margin-top:auto;padding:16px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.course-card .card-footer .sample-tag {background:transparent;padding:0}
.booking-sheet {width:min(520px,100vw);padding:0;overflow:hidden;overscroll-behavior:contain}
.booking-sheet form {height:100%;display:flex;flex-direction:column;min-height:0;margin:0}
.checkout-header {padding:24px;display:flex;align-items:start;gap:12px;border-bottom:1px solid var(--border);flex-shrink:0}
.checkout-header>div {flex:1;min-width:0}
.checkout-header h2 {font-size:22px;line-height:1.25;overflow-wrap:anywhere}
.checkout-header p {font-size:12px;color:var(--muted-foreground);margin-top:7px;line-height:1.7}
.checkout-header .btn {flex-shrink:0;width:32px;height:32px;padding:0}
.checkout-header .back-button {margin-left:-10px}
.checkout-scroll {padding:24px;overflow-y:auto;overscroll-behavior:contain;flex:1;min-height:0;scroll-padding-top:16px}
.order-summary {border:1px solid var(--border);border-radius:10px;padding:18px;background:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.summary-title {font-size:12px;font-weight:600;margin-bottom:12px}
.summary-toggle {display:none}
.summary-line {display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-top:9px;color:var(--muted-foreground)}
.summary-line>span:first-child {min-width:0;overflow-wrap:anywhere}
.summary-line>span:last-child {white-space:nowrap;flex-shrink:0}
.summary-item {padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--border);color:var(--foreground)}
.summary-total {font-size:14px;font-weight:600;color:var(--foreground);padding-top:12px;border-top:1px solid var(--border);margin-top:12px}
.summary-gift {color:var(--green)}
.summary-remove {border:0;background:none;padding:0;margin-left:6px;color:var(--muted-foreground);text-decoration:underline;font-size:11px}
.summary-later {font-size:11px;margin-top:8px!important;color:var(--muted-foreground)}
.summary-location {display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted-foreground);margin-top:16px!important}
.summary-location .ico {width:14px;height:14px}
.booking-stepper {margin:20px 0 24px;font-size:12px;color:var(--muted-foreground)}
.booking-stepper progress {display:block;appearance:none;width:100%;height:3px;margin-top:10px;border:0;background:var(--border);color:var(--primary)}
.booking-stepper progress::-webkit-progress-bar {background:var(--border)}
.booking-stepper progress::-webkit-progress-value {background:var(--primary)}
.booking-stepper progress::-moz-progress-bar {background:var(--primary)}
.checkout-step h3 {font-size:23px;margin-bottom:10px}
.checkout-step>p {font-size:13px;color:var(--muted-foreground);line-height:1.8}
.seat-choice {display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:24px;border-bottom:1px solid var(--border);margin-bottom:24px}
.seat-choice strong {font-size:14px;font-weight:500;display:block}
.seat-label {display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.seat-availability {font-size:11px;color:var(--warning);white-space:nowrap}
.seat-choice small {display:block;color:var(--muted-foreground);font-size:12px;margin-top:5px}
.quantity-control {display:flex;flex-shrink:0;align-items:center;border:1px solid var(--border);border-radius:8px;padding:3px}
.quantity-control .btn {font-size:20px;width:36px;padding:0}
.quantity-control output {text-align:center;width:38px;font-size:15px;font-variant-numeric:tabular-nums}
.seat-notes {font-size:12px;color:var(--muted-foreground);line-height:1.8;padding:16px;background:var(--muted);border-radius:8px;margin-top:20px}
.checkout-step .field {margin-top:18px;margin-bottom:0}
.checkout-step label {font-size:13px}
.checkout-step input:not([type=checkbox]):not([type=radio]) {height:40px}
.checkout-step .check-field {margin-top:20px}
.checkout-step .check-label {font-size:12px;line-height:1.7;margin-bottom:0}
.checkout-step .check-label input {margin-top:3px}
.checkout-step .field-error {margin:5px 0 0;line-height:1.5}
.checkout-step .field-error:empty {display:none}
.policy-link {font-size:12px;border:0;padding:4px 0 0;margin-left:25px;background:none;color:var(--primary);text-decoration:underline;display:inline-block}
.guest-fields {margin-block:24px;padding-top:18px;border-top:1px solid var(--border)}
.guest-fields h4 {font-size:16px;margin-bottom:6px}
.guest-fields>p {font-size:12px;color:var(--muted-foreground)}
.child-row {display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:12px}
.checkout-footer {flex-shrink:0;padding:18px 24px max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--background)}
.checkout-footer>.btn {width:100%;height:44px}
.checkout-footer>p {font-size:10px;text-align:center;color:var(--muted-foreground);margin-top:10px;line-height:1.6}
.payment-options {padding:0;border:0;margin:20px 0 24px;min-width:0}
.payment-options legend {font-size:13px;font-weight:500;margin-bottom:10px}
.payment-options label {display:flex;gap:10px;align-items:start;border:1px solid var(--border);padding:14px;border-radius:8px;margin-bottom:8px;font-size:13px;font-weight:400}
.payment-options label:has(input:checked) {border-color:var(--foreground);background:var(--muted)}
.payment-options small {display:block;margin-top:4px;font-size:12px;color:var(--muted-foreground)}
.gift-entry {display:flex;gap:8px;align-items:start}
.gift-entry input {flex:1;min-width:0;text-transform:uppercase}
.gift-entry .btn {height:40px}
.gift-feedback {font-size:12px;line-height:1.7;margin-top:8px!important;color:var(--green)}
.gift-feedback.is-error {color:var(--danger)}
.gift-covered {padding:14px;border-radius:8px;background:var(--green-soft);color:var(--green)!important;margin-top:20px!important;font-size:13px}
.express-buttons {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:24px}
.express-buttons .btn {height:44px;font-size:13px;padding-inline:8px}
.apple-pay {background:#000;color:#fff}
.apple-pay:hover {background:#252525}
.payment-divider {display:flex;align-items:center;gap:12px;font-size:11px;color:var(--muted-foreground);margin-top:22px}
.payment-divider::before,.payment-divider::after {content:"";flex:1;height:1px;background:var(--border)}
.card-heading {display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:20px;font-size:13px}
.card-heading .btn {height:auto;font-size:11px}
/* Square-style card entry: a single group, with a visible focus ring per segment. */
.cash-app-pay {background:#14532d;color:#fff}
.cash-app-pay:hover {background:#103f24}
.square-card-fields {display:grid;grid-template-columns:minmax(0,2.4fr) minmax(0,1fr) minmax(0,.8fr) minmax(0,1fr);border:1px solid var(--input);border-radius:8px;margin-top:12px}
.square-card-fields .field {min-width:0;margin:0}
.square-card-fields .field+.field {border-left:1px solid var(--input)}
.square-card-fields label {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.square-card-fields input {border:0;border-radius:7px;background:transparent;padding-inline:10px;min-width:0;width:100%;height:44px;font-size:14px}
.square-card-fields input:focus-visible {outline:2px solid var(--ring);outline-offset:-2px}
.square-card-fields input[aria-invalid=true] {outline:2px solid var(--danger);outline-offset:-2px}
.square-card-fields .field-error:not(:empty) {padding:0 8px 8px;overflow-wrap:anywhere}
.checkout-footer>.square-checkout-note {display:flex;justify-content:center;align-items:center;gap:6px;font-size:12px}
.square-checkout-note .ico {width:14px;height:14px;flex-shrink:0}
@media (max-width:600px) {
  .express-buttons {grid-template-columns:repeat(2,minmax(0,1fr))}
  .express-buttons .cash-app-pay {grid-column:1/-1}
  .square-card-fields {grid-template-columns:repeat(3,minmax(0,1fr))}
  .square-card-fields .field:first-child {grid-column:1/-1;border-bottom:1px solid var(--input)}
  .square-card-fields .field:nth-child(2) {border-left:0}
  .square-card-fields input {font-size:16px}
}
.save-card-note {font-size:12px!important;margin-top:16px!important}
.checkout-error {font-size:12px;color:var(--danger);margin-top:14px;line-height:1.7}
.checkout-error:empty {display:none}
.success-mark {width:52px;height:52px;border-radius:50%;background:var(--green-soft);color:var(--green);display:flex;align-items:center;justify-content:center;margin:4px 0 20px}
.success-mark .ico {width:28px;height:28px}
.booking-success h3 {font-size:30px;margin-bottom:10px}
.booking-success>p {font-size:13px;color:var(--muted-foreground);overflow-wrap:anywhere}
.receipt-rows {margin:24px 0;padding:18px 0;border-block:1px solid var(--border)}
.receipt-row {display:grid;grid-template-columns:55px minmax(0,1fr);gap:18px;margin-top:14px;font-size:13px;line-height:1.8}
.receipt-row:first-child {margin-top:0}
.receipt-row dt {color:var(--muted-foreground);font-size:12px}
.receipt-row dd {margin:0;overflow-wrap:anywhere}
.receipt-row dd small {font-size:11px;color:var(--muted-foreground);display:block}
.payment-receipt {font-size:12px;line-height:1.8;background:var(--muted);border-radius:8px;padding:16px;margin-bottom:20px}
.payment-receipt p+p {margin-top:6px}
.payment-receipt strong {font-weight:500}
.success-actions {display:flex;gap:10px}
.success-actions .btn {flex:1;min-height:40px}
.booking-change {border-block:1px solid var(--border);padding-block:18px;margin-top:26px;font-size:12px}
.booking-change summary {cursor:pointer;font-weight:500}
.booking-change p {margin-top:14px;line-height:1.8;color:var(--muted-foreground)}
.booking-change .btn {margin-top:12px;font-size:12px}
.before-class {margin-top:24px;font-size:12px;line-height:1.8}
.before-class h4 {font-size:16px;margin-bottom:12px}
.before-class ul {padding-left:18px;color:var(--muted-foreground);margin:0}
.before-class li+li {margin-top:6px}
.reminder-note {display:flex;align-items:start;gap:8px;font-size:12px!important;margin-top:24px!important;color:var(--muted-foreground)}
.reminder-note .ico {width:15px;height:15px;margin-top:3px}
.booking-policies .dialog-header {align-items:start}
.booking-policies h2 {font-size:24px}
.booking-policies h3 {font-size:15px;margin-bottom:8px}
.policy-section+.policy-section {margin-top:22px}
.policy-section p {font-size:13px;color:var(--muted-foreground);line-height:1.8}
@media (max-width:767px) {
  .booking {padding-block:28px 40px}
  .booking-intro {margin-bottom:24px}.booking-intro h1 {font-size:36px}.booking-intro>p:last-child {font-size:13px;line-height:1.8}
  .booking-toolbar {display:block;padding-bottom:20px}.booking-toolbar .tabs {display:flex}.booking-toolbar [role=tab] {flex:1;font-size:12px;padding:9px 8px}
  .booking-location {display:none}.booking-filters {gap:7px;padding-block:18px}.filter-chip {font-size:11px;padding:7px 9px;gap:6px}
  .day-heading {top:70px;gap:8px;justify-content:space-between}.day-heading h2 {font-size:12px}.day-heading .sample-tag {font-size:9px}
  .booking .session-row {padding:16px;gap:12px;min-height:0}.booking .session-info h3 {font-size:17px;line-height:1.35}.booking .session-info p {font-size:13px}.booking .session-time {font-size:13px}.booking .session-action .btn {height:40px;min-width:92px}.day-group {margin-bottom:18px}
  .booking-help {font-size:12px;line-height:1.9}.booking-help a {margin-left:0}
  .course-grid {grid-template-columns:1fr;gap:16px}.course-card .card-content {padding:20px}.course-card .card-footer {padding:16px 20px}.course-card h2 {font-size:24px}.course-note {font-size:12px}
  .booking-sheet {width:100vw;border:0}.checkout-header {padding:18px;gap:8px}.checkout-header h2 {font-size:20px}.checkout-header p {font-size:11px}.checkout-header .back-button {margin-left:-7px}
  .booking-sheet[data-step="1"] {top:auto;height:auto}
  .booking-sheet[data-step="1"] form {height:auto;max-height:100dvh}
  .booking-sheet[data-step="1"] .checkout-scroll {flex:0 1 auto}
  .checkout-scroll {padding:0 20px 24px}.checkout-footer {padding:14px 20px max(14px,env(safe-area-inset-bottom))}
  .order-summary {border:0;border-bottom:1px solid var(--border);border-radius:0;padding:0 20px;margin:0 -20px;background:var(--muted)}
  .summary-title {display:none}.summary-toggle {display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:10px 0;border:0;background:none;color:var(--foreground);font-size:12px}.summary-toggle>span {display:flex;align-items:center;gap:5px}.summary-toggle strong {font-size:13px;font-weight:500}.summary-toggle .ico {width:13px;height:13px}.summary-toggle[aria-expanded=true] .ico {transform:rotate(180deg)}
  .summary-lines {padding:0 0 18px}.order-summary[data-expanded=false] .summary-lines {display:none}
  .booking-stepper {margin:18px 0 22px}
  .seat-choice {gap:10px;padding-block:18px;margin-bottom:18px}
  .checkout-step h3 {font-size:22px}.checkout-step input:not([type=checkbox]):not([type=radio]) {font-size:16px;height:44px}.gift-entry .btn {height:44px}
  .checkout-scroll:has(.booking-success),.checkout-scroll:has(.waitlist-step) {padding-top:24px}
  .booking-success h3 {font-size:28px}.success-actions .btn {font-size:12px;padding-inline:12px}.booking-policies {padding:20px}.booking-policies h2 {font-size:22px}
}

/* Day headings already say "Sample dates"; don't repeat it on every row. */
.booking .day-group .session-row .sample-tag {display:none}
