.public-booking { margin:0; background:var(--gc-bg); color:var(--gc-text); font-size:1rem; line-height:1.55; }
.public-booking *, .booking-settings * { box-sizing:border-box; }
.booking-brand { max-width:68rem; margin:auto; padding:1.5rem; display:flex; align-items:center; justify-content:space-between; gap:1.5rem; flex-wrap:wrap; }
.booking-brand img { max-width:min(280px,100%); height:auto; }
.public-booking main { width:calc(100% - 16px); max-width:46rem; margin:1.5rem auto; padding:clamp(12px,4vw,40px); border:1px solid var(--gc-border); border-radius:var(--gc-radius-lg); background:var(--gc-surface); overflow-wrap:anywhere; }
.public-booking h1 { font-size:clamp(1.375rem,4vw,2rem); line-height:1.2; }
.booking-privacy a { color:var(--gc-text); text-decoration:underline; }
.public-booking h2 { font-size:1.25rem; }
.public-booking footer { max-width:46rem; padding:1rem; margin:auto; color:var(--gc-muted); }
.booking-eyebrow { font-size:.875rem; color:var(--gc-muted); }
.booking-notice { padding:1rem; border-left:4px solid var(--gc-border-strong); background:var(--gc-surface-subtle); }
.public-booking label, .booking-settings label { display:grid; gap:.35rem; min-width:0; }
.public-booking input, .public-booking select, .public-booking button, .booking-settings input:not([type=checkbox]), .booking-settings select { font:inherit; min-height:44px; width:100%; min-width:0; padding:.55rem .7rem; background:var(--gc-surface); color:var(--gc-text); border:1px solid var(--gc-border-strong); border-radius:var(--gc-radius-sm); }
.public-booking button { width:auto; cursor:pointer; }
.public-booking button:disabled { cursor:wait; opacity:.65; }
.public-booking [hidden] { display:none !important; }
.booking-request-actions button[type=submit] { background:var(--gc-brand-strong); border-color:var(--gc-brand-strong); color:var(--gc-brand-contrast); }
.public-booking fieldset { border:0; padding:0; margin:0; min-width:0; display:grid; gap:1rem; }
.public-booking label > span { font-size:.875rem; color:var(--gc-muted); }
.booking-selection { font-weight:600; }
.booking-request-actions { display:flex; gap:.75rem; flex-wrap:wrap; }
.booking-request-actions .action-button { display:inline-flex; align-items:center; min-height:44px; min-width:44px; padding:.55rem .7rem; border:1px solid var(--gc-brand-strong); border-radius:var(--gc-radius-sm); background:var(--gc-brand-strong); color:var(--gc-brand-contrast); text-decoration:none; }
.public-booking [data-request-feedback] { padding:1rem; border-left:4px solid var(--gc-danger); }
.public-booking [data-visitor-request] { margin-top:1.5rem; }
.preview-slots li:has(button) { padding:0; }
.preview-slots li button { width:100%; }
.public-booking :focus-visible, .booking-settings :focus-visible { outline:3px solid var(--gc-text); outline-offset:3px; }
.preview-slots { list-style:none; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr)); gap:.65rem; }
.preview-slots li { padding:.75rem; border:1px solid var(--gc-border); border-radius:var(--gc-radius-sm); }
.booking-settings { width:min(48rem,calc(100vw - 16px)); max-width:calc(100vw - 16px); max-height:calc(100dvh - 16px); overflow:auto; padding:clamp(12px,3vw,20px); border:1px solid var(--gc-border-strong); border-radius:var(--gc-radius-lg); background:var(--gc-surface); color:var(--gc-text); overflow-wrap:anywhere; }
.booking-settings::backdrop { background:var(--gc-overlay); }
.booking-settings h2 { margin-top:0; }
.booking-settings fieldset { min-width:0; margin:1rem 0; border:1px solid var(--gc-border); border-radius:var(--gc-radius-sm); padding:12px; }
.booking-policy-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr)); gap:1rem; }
.booking-window { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr)); gap:.65rem; margin:.75rem 0; align-items:end; }
.booking-settings .action-button { min-height:44px; white-space:normal; }
.booking-settings .booking-check { display:flex; align-items:center; gap:.75rem; min-height:44px; margin:.5rem 0; }
.booking-check input { width:1.25rem; height:1.25rem; flex-shrink:0; }
.booking-settings [role=alert] { border-left:4px solid var(--gc-danger); padding:1rem; margin:.75rem 0; }
.booking-settings .gc-form-actions { display:flex; gap:.65rem; flex-wrap:wrap; margin:1rem 0; }
.booking-settings [hidden] { display:none; }
@media(max-width:390px) { .booking-brand { padding:1rem; } }
