/* Hosted form visual theme. Content and booking rules remain in booking-form.js. */
html, body { margin: 0; padding: 0; background: #06122b; }
body { font-family: Montserrat, ui-sans-serif, system-ui, sans-serif; line-height: 1.5; }
#booking-content { display: flow-root; width: 100%; }
.washflow-booking {
  --washflow-bg: #06122b;
  --washflow-panel: #0c1c3a;
  --washflow-surface: #102446;
  --washflow-raised: #102446;
  --washflow-border: #1e3763;
  --washflow-muted: #93a6c9;
  --washflow-text: #f2f6ff;
  --washflow-accent: #0ab4dc;
  box-sizing: border-box;
  max-width: 1200px;
  padding: 32px 20px 48px;
  font-size: 15px;
}
.washflow-booking button { cursor: pointer; }
.washflow-booking .washflow-header { padding: 0; border: 0; text-align: left; }
.washflow-booking .washflow-header h2 { color: var(--washflow-text); margin: 8px 0; max-width: none; font-size: clamp(24px, 3vw, 32px); font-weight: 750; line-height: 1.25; }
.washflow-booking .washflow-header > p:not(.washflow-eyebrow) { margin: 0; max-width: none; font-size: 15px; }
.washflow-booking .washflow-eyebrow { justify-content: flex-start; margin: 0; max-width: none; }
.washflow-booking .washflow-steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; max-width: none; margin: 26px 0; padding: 0; overflow: visible; }
.washflow-booking .washflow-step { display: block; min-width: 0; border-top: 3px solid var(--washflow-border); padding: 9px 0 0; text-align: left; }
.washflow-booking .washflow-step > i, .washflow-booking .washflow-step-line { display: none; }
.washflow-booking .washflow-step > span { display: grid; gap: 2px; }
.washflow-booking .washflow-step small { display: block; font-size: 11px; letter-spacing: 0; text-transform: none; }
.washflow-booking .washflow-step strong { font-size: 14px; white-space: normal; }
.washflow-booking .washflow-step.is-active { border-color: var(--washflow-accent); }
.washflow-booking .washflow-step.is-done { border-color: #3ddc97; }
.washflow-booking .washflow-layout { grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; }
.washflow-booking :is(.washflow-main, .washflow-summary) { border-color: var(--washflow-border); border-radius: 16px; box-shadow: none; }
.washflow-booking .washflow-main { padding: 24px; }
.washflow-booking .washflow-stack { gap: 28px; }
.washflow-booking .washflow-section-label { font-size: 18px; font-weight: 700; color: var(--washflow-text); letter-spacing: 0; text-transform: none; margin-bottom: 14px; }
.washflow-booking .washflow-location-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); }
.washflow-booking .washflow-location { background: var(--washflow-surface); border-radius: 12px; padding: 16px; }
.washflow-booking button.washflow-location[type="button"].is-selected,
.washflow-booking button.washflow-addon[type="button"].is-selected { background: #0d3550; color: var(--washflow-text); border-color: var(--washflow-accent); }
.washflow-booking .washflow-location small { color: var(--washflow-muted); }
.washflow-booking :is(.washflow-vehicle-grid, .washflow-tabs) { display: flex; flex-wrap: wrap; gap: 8px; max-width: none; }
.washflow-booking :is(.washflow-choice, .washflow-tabs button) { border-radius: 999px; padding: 10px 18px; font-weight: 600; border-color: var(--washflow-border); }
.washflow-booking .washflow-package { border-radius: 12px; border-color: var(--washflow-border); }
.washflow-booking .washflow-package.is-selected { background: #0d3550; border-color: var(--washflow-accent); }
.washflow-booking .washflow-package-select { padding: 16px; gap: 12px; }
.washflow-booking .washflow-package-select strong { font-size: 16px; }
.washflow-booking .washflow-package-select small { font-size: 13px; line-height: 1.6; }
.washflow-booking .washflow-package-select b { font-size: 17px; }
.washflow-booking .washflow-addon { border-radius: 12px; border-color: var(--washflow-border); }
.washflow-booking .washflow-addon.is-selected small { color: var(--washflow-muted); }
.washflow-booking .washflow-addon.is-selected b { color: var(--washflow-accent); }
.washflow-booking .washflow-schedule { grid-template-columns: minmax(230px, .9fr) minmax(0, 1.1fr); gap: 28px; }
.washflow-booking .washflow-schedule > section { min-width: 0; }
.washflow-booking .washflow-schedule h3 { color: var(--washflow-text); font-size: 18px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.washflow-booking .washflow-schedule h3 span { display: block; margin: 3px 0 0; font-size: 12px; font-weight: 500; }
.washflow-booking .washflow-calendar { padding: 0; border: 0; background: transparent; max-width: 340px; }
.washflow-booking .washflow-calendar-header { grid-template-columns: 36px minmax(0, 1fr) 36px; gap: 6px; }
.washflow-booking .washflow-calendar-header button { width: 36px; height: 36px; min-height: 36px; background: var(--washflow-surface); border-color: var(--washflow-border); border-radius: 8px; }
.washflow-booking .washflow-calendar-header strong { font-size: 14px; }
.washflow-booking .washflow-calendar-day { aspect-ratio: 1; min-height: 32px; background: transparent; border-color: transparent; border-radius: 8px; font-weight: 600; }
.washflow-booking .washflow-calendar-day:disabled { background: transparent; border-color: transparent; color: #496087; }
.washflow-booking .washflow-calendar-weekdays span { font-weight: 500; }
.washflow-booking .washflow-time-grid { grid-template-columns: repeat(auto-fit, minmax(95px, 1fr)); gap: 8px; }
.washflow-booking .washflow-time-grid button { padding: 8px 10px; font-size: 13px; min-height: 44px; }
.washflow-booking .washflow-fields { gap: 18px; }
.washflow-booking .washflow-fields :is(input, textarea) { border: 1px solid var(--washflow-border); border-radius: 9px; padding: 12px; background: var(--washflow-surface); }
.washflow-booking .washflow-fields :is(input, textarea):focus { border-color: var(--washflow-accent); }
.washflow-booking .washflow-fields span { font-size: 13px; }
.washflow-booking .washflow-actions { margin-top: 28px; padding-top: 20px; border-color: var(--washflow-border); }
.washflow-booking .washflow-actions button { min-height: 48px; border-radius: 10px; padding: 12px 24px; font-size: 14px; }
.washflow-booking .washflow-summary { padding: 22px; }
.washflow-booking .washflow-summary h3 { border: 0; padding: 0; margin-bottom: 16px; font-size: 18px; }
.washflow-booking .washflow-summary-row { padding: 10px 0; border-color: var(--washflow-border); }
.washflow-booking .washflow-summary-row :is(span, strong) { font-size: 13px; line-height: 1.5; }
.washflow-booking .washflow-total { padding-top: 22px; }
.washflow-booking .washflow-total span { font-size: 15px; color: var(--washflow-text); }
.washflow-booking .washflow-total strong { font-size: 28px; }
@container washflow (max-width: 1000px) {
  .washflow-booking .washflow-layout { grid-template-columns: minmax(0, 1fr); }
  .washflow-booking .washflow-summary { position: static; }
}
@container washflow (max-width: 600px) {
  .washflow-booking .washflow-main, .washflow-booking .washflow-summary { padding: 16px; }
  .washflow-booking .washflow-schedule { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .washflow-booking .washflow-calendar { max-width: 340px; width: 100%; margin: 0 auto; }
  .washflow-booking .washflow-step strong { font-size: 11px; }
}
@media (max-width: 600px) {
  .washflow-booking { padding: 24px 12px; }
}
.washflow-booking .washflow-alert { background: #321b30; border-color: #70405b; color: #ffb3b3; }
.washflow-booking .washflow-success { background: #103a38; border-color: #247364; color: #baf4db; }
.washflow-booking .washflow-muted { background: var(--washflow-surface); color: var(--washflow-muted); }

.washflow-preview-notice { padding:12px 20px; background:#102446; color:#f2f6ff; text-align:center; }
.washflow-booking .washflow-voucher-modal header button { width:auto; min-width:44px; padding:8px 14px; flex-shrink:0; }
.washflow-booking dialog { max-height:85dvh; overflow-y:auto; overscroll-behavior:contain; }
.washflow-booking :focus-visible { outline:2px solid var(--washflow-accent); outline-offset:3px; }

.washflow-booking label > :is(input:not([type="checkbox"]), select, textarea) { box-sizing:border-box; width:100%; min-width:0; color:var(--washflow-text); background:var(--washflow-surface); border:1px solid var(--washflow-border); border-radius:9px; padding:12px; font:inherit; }
.washflow-booking .washflow-stack > section > label { display:grid; gap:8px; margin-top:14px; }
.washflow-booking textarea { resize:vertical; min-height:100px; }
@media(max-width:480px) { .washflow-booking .washflow-custom-voucher-row { grid-template-columns:minmax(0,1fr) 72px; } .washflow-booking .washflow-custom-voucher-row > button { grid-column:1/-1; } }

.washflow-booking dialog.washflow-voucher-modal-backdrop { display:block; inset:16px 0 auto; margin:0 auto; width:calc(100% - 32px); max-width:660px; height:auto; max-height:calc(100dvh - 32px); padding:0; border-radius:12px; overflow-y:auto; overscroll-behavior:contain; }
.washflow-booking .washflow-voucher-modal { box-sizing:border-box; width:100%; max-width:none; max-height:none; overflow:visible; }
.washflow-booking .washflow-voucher-modal > header { position:sticky; top:0; z-index:1; background:var(--washflow-panel); padding:10px 0; }
.washflow-booking dialog::backdrop { background:rgba(2,8,15,.8); }

/* Shared journey navigation matches the approved preview tabs. */
.washflow-booking .washflow-journey-tabs { display:flex; flex-wrap:wrap; gap:8px; margin:24px 0; padding-bottom:16px; border-bottom:1px solid var(--washflow-border); }
.washflow-booking .washflow-journey-tabs button { background:var(--washflow-surface); color:var(--washflow-text); border:1px solid var(--washflow-border); border-radius:999px; padding:10px 18px; font:inherit; font-weight:600; }
.washflow-booking .washflow-journey-tabs button:hover { border-color:var(--washflow-accent); }
.washflow-booking .washflow-journey-tabs button.is-active { background:var(--washflow-accent); color:var(--washflow-bg); border-color:var(--washflow-accent); }
.washflow-booking .washflow-location-selection { margin-bottom:28px; }
.washflow-booking .washflow-actions-single { justify-content:flex-end; }
.washflow-booking .washflow-gift-steps { grid-template-columns:repeat(5,minmax(0,1fr)); margin:26px 0; max-width:none; overflow:visible; padding:0; }
.washflow-booking .washflow-gift-steps .washflow-step strong { font-size:12px; }
.washflow-booking .washflow-pack-type-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.washflow-booking .washflow-gift-product-info { min-width:0; }
.washflow-booking .washflow-payment-option { background:var(--washflow-surface); border:1px solid var(--washflow-accent); border-radius:12px; display:grid; gap:6px; padding:18px; }
.washflow-booking .washflow-payment-option strong { color:var(--washflow-text); font-size:16px; }
.washflow-booking .washflow-payment-option span { color:var(--washflow-muted); font-size:13px; line-height:1.5; }
.washflow-booking .washflow-payment-step > p { color:var(--washflow-muted); margin:0; }
.washflow-booking button.washflow-voucher-option[type="button"].is-selected,
.washflow-booking button.washflow-voucher-option[type="button"].is-selected:is(:hover,:focus,:active) { background:#0d3550; border-color:var(--washflow-accent); color:var(--washflow-text); }
.washflow-booking button.washflow-voucher-option[type="button"].is-selected strong { color:var(--washflow-text); }
.washflow-booking button.washflow-voucher-option[type="button"].is-selected span { color:var(--washflow-muted); }
@media(min-width:601px) { .washflow-booking .washflow-gift-product.no-image { grid-template-columns:minmax(0,1fr) auto; } .washflow-booking .washflow-gift-product.no-image .washflow-quantity { justify-items:end; min-width:120px; } }
@media(max-width:900px) { .washflow-booking .washflow-gift-steps { grid-template-columns:repeat(3,minmax(0,1fr)); } .washflow-booking .washflow-pack-type-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:560px) { .washflow-booking .washflow-gift-steps { grid-template-columns:repeat(2,minmax(0,1fr)); } .washflow-booking .washflow-pack-type-grid { grid-template-columns:minmax(0,1fr); } }

/* eGift checkout follows the three-step storefront flow. */
.washflow-booking.is-egift-flow {
  max-width:760px;
  padding:16px 20px 24px;
  background:var(--washflow-bg);
  color:var(--washflow-text);
}
body.washflow-egift-page { background:#06122b; }
.washflow-egift-page #booking-content { background:#06122b; }
.washflow-booking.is-egift-flow .washflow-egift-steps { grid-template-columns:repeat(3,minmax(0,1fr)); }
.washflow-booking.is-egift-flow .washflow-header { border:0; padding:0 0 20px; text-align:center; }
.washflow-booking.is-egift-flow .washflow-header h2 { color:var(--washflow-text); font-size:30px; font-weight:700; margin:0; }
.washflow-booking.is-egift-flow .washflow-egift-main { margin:0 auto; max-width:625px; }
.washflow-booking.is-egift-flow .washflow-egift-card,
.washflow-booking.is-egift-flow .washflow-egift-recipient-panel { background:var(--washflow-panel); border:1px solid var(--washflow-border); border-radius:12px; padding:28px 32px; }
.washflow-booking.is-egift-flow .washflow-egift-columns,
.washflow-booking.is-egift-flow .washflow-egift-row { align-items:center; display:grid; gap:8px; grid-template-columns:minmax(0,1fr) minmax(180px,.78fr) 48px; }
.washflow-booking.is-egift-flow .washflow-egift-card.has-single-line :is(.washflow-egift-columns,.washflow-egift-row) { grid-template-columns:minmax(0,1fr) minmax(180px,.78fr); }
.washflow-booking.is-egift-flow .washflow-egift-card.has-single-line .washflow-egift-columns > span,
.washflow-booking.is-egift-flow .washflow-egift-card.has-single-line .washflow-egift-row > span { display:none; }
.washflow-booking.is-egift-flow .washflow-egift-columns { margin:8px 0 4px; }
.washflow-booking.is-egift-flow .washflow-egift-columns strong { font-size:14px; }
.washflow-booking.is-egift-flow .washflow-egift-row { margin-bottom:7px; }
.washflow-booking.is-egift-flow .washflow-egift-row select { background:var(--washflow-surface); border:1px solid var(--washflow-border); border-radius:8px; color:var(--washflow-text); height:46px; padding:0 14px; width:100%; }
.washflow-booking.is-egift-flow .washflow-egift-visually-hidden { clip:rect(0,0,0,0); clip-path:inset(50%); height:1px; overflow:hidden; position:absolute; white-space:nowrap; width:1px; }
.washflow-booking.is-egift-flow .washflow-egift-quantity { align-items:stretch; background:var(--washflow-surface); border:1px solid var(--washflow-border); border-radius:8px; display:grid; grid-template-columns:50px minmax(24px,1fr) 50px; height:46px; overflow:hidden; }
.washflow-booking.is-egift-flow .washflow-egift-quantity button { background:var(--washflow-accent); border:0; color:var(--washflow-bg); cursor:pointer; font-size:22px; font-weight:600; }
.washflow-booking.is-egift-flow .washflow-egift-quantity button:disabled { opacity:.45; }
.washflow-booking.is-egift-flow .washflow-egift-quantity span { align-items:center; display:flex; justify-content:center; }
.washflow-booking.is-egift-flow .washflow-egift-remove { background:var(--washflow-surface); border:1px solid var(--washflow-border); border-radius:8px; color:var(--washflow-text); cursor:pointer; height:46px; }
.washflow-booking.is-egift-flow .washflow-egift-add { background:transparent; border:0; color:var(--washflow-accent); cursor:pointer; display:block; margin:0 0 24px auto; padding:2px 0; }
.washflow-booking.is-egift-flow .washflow-egift-add:disabled { opacity:.45; }
.washflow-booking.is-egift-flow .washflow-egift-cart-totals { display:grid; gap:4px; margin:0 0 16px; }
.washflow-booking.is-egift-flow .washflow-egift-cart-totals > div { align-items:center; display:flex; justify-content:space-between; }
.washflow-booking.is-egift-flow .washflow-egift-message-heading { align-items:center; display:flex; gap:6px; margin-bottom:4px; }
.washflow-booking.is-egift-flow .washflow-egift-message-heading label { font-size:14px; font-weight:700; }
.washflow-booking.is-egift-flow .washflow-egift-message-heading button { background:transparent; border:0; color:var(--washflow-accent); cursor:pointer; padding:0; }
.washflow-booking.is-egift-flow .washflow-egift-message textarea { background:var(--washflow-surface); border:1px solid var(--washflow-border); border-radius:8px; color:var(--washflow-text); height:138px; line-height:1.4; min-height:138px; padding:14px; width:100%; }
.washflow-booking.is-egift-flow .washflow-egift-message > small { display:block; font-size:12px; margin-top:4px; }
.washflow-booking.is-egift-flow .washflow-actions { border:0; margin:24px auto 0; max-width:625px; padding:0; }
.washflow-booking.is-egift-flow .washflow-actions-single { justify-content:flex-end; }
.washflow-booking.is-egift-flow .washflow-actions button { background:transparent; border:1px solid var(--washflow-accent); border-radius:9px; color:var(--washflow-text); min-width:135px; }
.washflow-booking.is-egift-flow .washflow-actions button:last-child { background:var(--washflow-accent); color:var(--washflow-bg); }
.washflow-booking.is-egift-flow .washflow-actions button:disabled { opacity:.55; }
.washflow-booking.is-egift-flow .washflow-egift-delivery-choice { border:0; display:flex; gap:18px; margin:0 0 18px; padding:0; }
.washflow-booking.is-egift-flow .washflow-egift-delivery-choice label,
.washflow-booking.is-egift-flow .washflow-egift-payment-methods label { align-items:center; display:flex; gap:7px; font-size:13px; font-weight:600; }
.washflow-booking.is-egift-flow .washflow-egift-delivery-choice input[type="radio"],
.washflow-booking.is-egift-flow .washflow-egift-payment-methods input[type="radio"] { accent-color:var(--washflow-accent); height:14px; margin:0; padding:0; width:14px; }
.washflow-booking.is-egift-flow .washflow-egift-fields { display:grid; gap:14px 18px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.washflow-booking.is-egift-flow .washflow-egift-fields label { display:grid; gap:5px; min-width:0; }
.washflow-booking.is-egift-flow .washflow-egift-fields label > span { font-size:12px; font-weight:700; }
.washflow-booking.is-egift-flow .washflow-egift-fields input { background:var(--washflow-surface); border:1px solid var(--washflow-border); border-radius:8px; color:var(--washflow-text); height:39px; min-height:39px; padding:8px 12px; }
.washflow-booking.is-egift-flow .washflow-egift-send-recipient { align-items:center; display:flex; gap:8px; margin-top:13px; }
.washflow-booking.is-egift-flow .washflow-egift-send-recipient input[type="checkbox"] { accent-color:var(--washflow-accent); height:16px; margin:0; padding:0; width:16px; }
.washflow-booking.is-egift-flow .washflow-egift-send-recipient span { font-size:13px; }
.washflow-booking.is-egift-flow .washflow-egift-recipient-fields { margin-top:14px; }
.washflow-booking.is-egift-flow .washflow-egift-payment-panel { background:var(--washflow-panel); border:1px solid var(--washflow-border); border-radius:12px; padding:20px; }
.washflow-booking.is-egift-flow .washflow-egift-payment-methods { border:1px solid var(--washflow-border); background:var(--washflow-surface); border-radius:9px; padding:14px; }
.washflow-booking.is-egift-flow .washflow-egift-payment-methods h3 { border-bottom:1px solid var(--washflow-border); font-size:14px; margin:0 0 12px; padding:0 0 12px; }
.washflow-booking.is-egift-flow .washflow-egift-payment-methods label { font-weight:400; margin:6px 0; }
.washflow-booking.is-egift-flow .washflow-egift-payment-methods p { font-size:12px; margin:16px 0 0; }
.washflow-booking.is-egift-flow .washflow-egift-payment-note { color:var(--washflow-muted); font-size:12px; margin:12px 0 0; }
.washflow-booking.is-egift-flow .washflow-alert { background:var(--washflow-surface); border-color:var(--washflow-border); color:var(--washflow-text); }
@media(max-width:560px) {
  .washflow-booking.is-egift-flow { padding:12px 8px 20px; }
  .washflow-booking.is-egift-flow .washflow-egift-card,
  .washflow-booking.is-egift-flow .washflow-egift-recipient-panel { padding:18px 14px; }
  .washflow-booking.is-egift-flow .washflow-header h2 { font-size:25px; }
  .washflow-booking.is-egift-flow .washflow-egift-columns,
  .washflow-booking.is-egift-flow .washflow-egift-row { grid-template-columns:minmax(0,1fr) minmax(115px,.78fr) 36px; gap:6px; }
  .washflow-booking.is-egift-flow .washflow-egift-card.has-single-line :is(.washflow-egift-columns,.washflow-egift-row) { grid-template-columns:minmax(0,1fr) minmax(115px,.78fr); }
  .washflow-booking.is-egift-flow .washflow-egift-quantity { grid-template-columns:34px minmax(20px,1fr) 34px; }
  .washflow-booking.is-egift-flow .washflow-egift-fields { gap:12px; }
  .washflow-booking.is-egift-flow .washflow-actions button { min-width:115px; }
}
