/* Compact request flow. Natural scrolling remains available for keyboards and zoom. */
html:has(.booking-page){scroll-behavior:auto;scroll-padding-top:16px}
.booking-page{min-height:100vh;min-height:100svh;display:flex;flex-direction:column;background:var(--orange);color:var(--ink);font-family:var(--sans)}
.booking-page:before{content:'';position:fixed;inset:0;background:url('../assets/brand-wordwall.svg') center/900px auto;opacity:.04;pointer-events:none;z-index:-1}
.booking-header{width:100%;max-width:1200px;margin:0 auto;padding:18px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0}.booking-header img{width:142px;height:auto}
.booking-call{font-size:12px;font-weight:600;text-decoration:none;text-align:right;min-height:44px;display:flex;flex-direction:column;justify-content:center}.booking-call span{text-decoration:underline;text-underline-offset:3px}
.booking-main{flex:1;display:flex;align-items:center;justify-content:center;padding:12px 24px;min-width:0}
.booking-card{width:100%;max-width:500px;padding:26px 30px 20px;background:var(--cream);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--ink)}
.booking-top{display:flex;justify-content:space-between;gap:16px;font-size:10px;font-weight:800;letter-spacing:.12em}
.booking-progress{display:grid;grid-template-columns:1fr 1fr;gap:12px;list-style:none;padding:0;margin:12px 0 20px;font-size:11px;font-weight:600}.booking-progress li{border-top:4px solid #cbbca6;padding-top:7px;color:#665740}.booking-progress [aria-current=step]{border-color:var(--red);color:var(--ink)}.booking-progress .is-done{border-color:var(--ink);color:var(--ink)}
.booking-heading{margin-bottom:18px}.booking-heading h1{font-family:var(--display);font-size:46px;font-weight:800;text-transform:uppercase;line-height:1;margin:0 0 7px}.booking-heading h1:focus{outline:none}.booking-heading p{font-size:13px;line-height:1.45;color:#514535;margin:0}
.booking-step{display:grid;gap:14px;animation:booking-in .16s ease-out}.booking-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.booking-field{min-width:0}
.booking-field label,.booking-time legend{display:block;margin-bottom:6px;font-size:12px;font-weight:700;line-height:1.3}.booking-field label span,.booking-time legend span{font-weight:400;font-size:10px;color:#665740;margin-left:3px}
.booking-field input,.booking-field textarea{appearance:none;width:100%;min-width:0;max-width:100%;height:46px;border:1px solid #9e8c70;border-radius:3px;background:#fffaf2;padding:10px 12px;font:400 16px/1.4 var(--sans);color:var(--ink)}
.booking-field input[type=date]{display:block;min-height:46px}.booking-field input[type=date]::-webkit-date-and-time-value{text-align:left}.booking-field textarea{height:62px;min-height:62px;resize:vertical;display:block}.booking-field input::placeholder,.booking-field textarea::placeholder{color:#776b5d;opacity:1;font-size:13px}.booking-field input:focus,.booking-field textarea:focus{outline:2px solid var(--ink);outline-offset:2px}.booking-field [aria-invalid=true]{border:2px solid var(--red)}
.booking-time{border:0;padding:0;margin:0;min-width:0}.time-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.time-options button{min-height:44px;padding:8px 4px;font:600 12px/1.2 var(--sans);background:transparent;color:var(--ink);border:1px solid #9e8c70;border-radius:3px;transition:background .12s,color .12s}.time-options button[aria-pressed=true]{background:var(--ink);color:var(--cream);border-color:var(--ink)}
.booking-status{min-height:20px;font-size:12px;line-height:1.4;color:var(--red);margin:12px 0 6px}.booking-actions{display:flex;align-items:center;gap:14px}
.booking-primary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:1;min-height:48px;padding:12px 17px;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);background:var(--red);color:#fffaf2;font:800 18px/1.2 var(--display);text-transform:uppercase;text-decoration:none;cursor:pointer}.booking-primary:hover{background:#981a22}.booking-primary:disabled{cursor:wait;opacity:.65}
.booking-back{background:transparent;border:0;padding:10px 2px;min-height:44px;font:600 12px/1.4 var(--sans);text-decoration:underline;text-underline-offset:4px;color:var(--ink);white-space:nowrap}.booking-fineprint{font-size:10px;line-height:1.45;text-align:center;color:#665740;margin:16px auto 0;max-width:34ch}
.booking-send-error{font-size:12px;line-height:1.45;margin:0 0 12px;padding:10px;background:#ffdfc9;border-left:3px solid var(--red)}.booking-send-error a{font-weight:700}
.booking-complete{display:grid;gap:22px;font-size:14px;line-height:1.6}.booking-complete p{margin:0}.booking-complete .booking-primary{font-size:17px}.booking-check{width:52px;height:52px;border:2px solid var(--ink);background:var(--orange);display:grid;place-items:center;font-size:30px}
.booking-footer{width:100%;max-width:500px;margin:0 auto;display:flex;justify-content:space-between;gap:20px;padding:10px 24px 16px;font-size:11px;font-weight:600;flex-shrink:0}.booking-footer a{min-height:30px;display:flex;align-items:center;text-underline-offset:4px}.booking-noscript{font-size:13px;margin-top:14px;line-height:1.5}
@keyframes booking-in{from{opacity:.3;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){.booking-header{padding:12px 18px;gap:14px}.booking-header img{width:116px}.booking-call{font-size:10px}.booking-main{padding:4px 18px 10px}.booking-card{padding:20px 20px 16px;box-shadow:4px 4px 0 var(--ink)}.booking-progress{margin:10px 0 16px}.booking-heading{margin-bottom:14px}.booking-heading h1{font-size:38px}.booking-step{gap:12px}.booking-field input,.booking-field input[type=date]{height:44px;min-height:44px}.booking-field textarea{height:54px;min-height:54px}.booking-footer{padding:4px 18px 10px;font-size:10px}.booking-fineprint{margin-top:12px}}
@media(max-height:720px){.booking-header{padding-top:8px;padding-bottom:8px}.booking-main{padding-top:0;padding-bottom:6px}.booking-card{padding-top:15px;padding-bottom:12px}.booking-progress{margin:8px 0 12px}.booking-progress li{padding-top:5px}.booking-heading{margin-bottom:12px}.booking-heading h1{font-size:34px;margin-bottom:4px}.booking-heading p{font-size:12px}.booking-step{gap:10px}.booking-field label,.booking-time legend{margin-bottom:4px}.booking-status{margin:7px 0 4px;min-height:17px}.booking-fineprint{margin-top:10px}.booking-footer{padding-top:0;padding-bottom:4px}}
@media(max-width:360px){.booking-main{padding-left:12px;padding-right:15px}.booking-card{padding-left:15px;padding-right:15px}.booking-header{padding-left:14px;padding-right:14px}.booking-heading h1{font-size:34px}.booking-heading p{font-size:12px}.time-options{gap:6px}.time-options button{font-size:11px}.booking-row{gap:8px}}
@media(prefers-reduced-motion:reduce){.booking-step{animation:none}.time-options button{transition:none}}

/* The step counter names the two short panels; the bars keep progress compact. */
.booking-progress{margin:10px 0 16px}.booking-progress li{padding-top:0;line-height:0;min-height:4px}.booking-row{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr)}
@media(max-height:720px){.booking-progress{margin:8px 0 12px}.booking-progress li{padding-top:0}}

.booking-fineprint{max-width:none}
@media(max-height:600px){.booking-header{padding-top:4px;padding-bottom:4px}.booking-card{padding-top:12px;padding-bottom:10px}.booking-footer{padding-bottom:0}}

.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.booking-preferences{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.booking-field select{width:100%;min-width:0;max-width:100%;height:44px;border:1px solid #9e8c70;border-radius:3px;background:#fffaf2;color:var(--ink);padding:8px 6px;font:400 16px/1.4 var(--sans)}
.booking-preferences label,.budget-label{height:24px;margin-bottom:4px;display:flex;align-items:center;gap:3px}
.budget-label label{margin:0;height:auto}.budget-label{justify-content:space-between}.budget-label button{padding:2px;min-height:24px;background:none;border:0;text-decoration:underline;font:600 10px/1.3 var(--sans)}
@media(max-width:360px){.booking-field select{padding-left:4px;font-size:16px}}
