/* Booking uses the existing practice palette and local typefaces. */
.tm-booking { padding-bottom: var(--tm-space-16); }
.tm-booking-head { display:flex; justify-content:space-between; gap:2rem; align-items:end; margin:2rem 0; }
.tm-booking-head h1 { margin:0.3rem 0 1rem; }
.tm-booking-banner { border-left:3px solid var(--tm-clay); padding:0.8rem 1rem; background:var(--tm-sand); border-radius:0 10px 10px 0; margin:1.5rem 0 2rem; }
.tm-booking-grid { display:grid; grid-template-columns:minmax(0,1fr) 20rem; gap:2rem; align-items:start; }
.tm-booking-summary { position:sticky; top:7rem; }
.tm-booking-summary h2 { font-size:1.65rem; }
.tm-booking-summary [data-selection] p { margin:0 0 0.6rem; }
.tm-booking-order { display:flex; flex-wrap:wrap; gap:1rem; border:0; padding:0; margin:0; }
.tm-booking-order label { display:flex; align-items:center; gap:0.5rem; padding:0.6rem 0; cursor:pointer; }
.tm-booking-selects, .tm-booking-form { display:grid; gap:1.2rem; }
.tm-booking-selects label, .tm-booking-form > label:not(.tm-booking-check) { display:grid; gap:0.4rem; font-weight:700; }
.tm-booking select, .tm-booking-form input:not([type="checkbox"]) { width:100%; min-width:0; min-height:48px; background:var(--tm-paper,#fffdf8); border:1px solid var(--tm-ink-3); border-radius:10px; padding:0.65rem 0.8rem; color:var(--tm-ink); font:inherit; }
.tm-booking select:disabled { opacity:0.55; }
.tm-booking-times { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:0.65rem; }
.tm-booking-time { display:block; min-height:48px; padding:0.7rem; border:1px solid var(--tm-sand); border-radius:10px; background:var(--tm-paper,#fffdf8); color:var(--tm-forest); font:inherit; font-size:0.95rem; cursor:pointer; text-align:center; }
.tm-booking-time:hover:not(:disabled), .tm-booking-time[aria-pressed="true"] { border-color:var(--tm-forest); background:var(--tm-sage); }
.tm-booking-time:disabled { opacity:0.38; cursor:default; text-decoration:line-through; }
.tm-booking-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:0.3rem; margin:1rem 0; }
.tm-booking-days .tm-booking-time { padding:0.5rem 0.15rem; font-size:0.8rem; }
.tm-booking-check { display:flex; gap:0.75rem; align-items:flex-start; cursor:pointer; min-height:40px; }
.tm-booking-check input { flex:0 0 auto; width:20px; height:20px; margin-top:0.25rem; accent-color:var(--tm-forest); }
.tm-booking-message { border:1px solid var(--tm-clay); background:var(--tm-sand); padding:1rem; border-radius:10px; }
.tm-booking-checkout { max-width:52rem; margin:2rem auto; }
.tm-booking-checkout [role="timer"] { font-variant-numeric:tabular-nums; font-weight:800; }
.tm-booking-checkout summary { cursor:pointer; min-height:44px; padding:0.6rem 0; }
.tm-booking :focus-visible { outline:3px solid var(--tm-forest); outline-offset:3px; }
.tm-booking [hidden] { display:none !important; }
@media(max-width:900px) {
  .tm-booking-grid { grid-template-columns:1fr; }
  .tm-booking-summary { position:static; grid-row:1; }
  .tm-booking-head { display:block; }
  .tm-booking-head > a { display:inline-block; margin-top:1rem; }
}
@media(prefers-reduced-motion:reduce) { .tm-booking * { scroll-behavior:auto !important; } }
/* A day's times stay compact enough to scan on a phone. */
.tm-booking [data-day-times] { grid-template-columns:repeat(auto-fit,minmax(85px,1fr)); }
@media(max-width:480px) { .tm-booking-days { grid-template-columns:repeat(5,minmax(0,1fr)); } }
