/* Calendar styles live in Tailwind utilities; only shared behavior stays here. */
html{-webkit-text-size-adjust:100%;scroll-padding-top:80px;background:#f0efed;color-scheme:light}
body{margin:0;min-height:100%;min-height:100dvh;background:#f0efed}
button{cursor:pointer}button:disabled{cursor:default}
[hidden]{display:none!important}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #2866ac;outline-offset:3px}
.skip-link{position:absolute;top:-80px;left:10px;background:white;padding:10px}
.skip-link:focus{top:8px;z-index:50}
.calendar-app{--app-gutter:12px;box-sizing:border-box;min-height:100vh;min-height:100dvh;padding-top:max(var(--app-gutter),env(safe-area-inset-top));padding-right:max(var(--app-gutter),env(safe-area-inset-right));padding-bottom:max(var(--app-gutter),env(safe-area-inset-bottom));padding-left:max(var(--app-gutter),env(safe-area-inset-left))}
@media(min-width:640px){.calendar-app{--app-gutter:20px}}
.account-actions form{min-width:0}
.booking-error-tooltip{width:min(18rem,calc(100vw - 24px))}
.account-actions strong,.account-actions span,.request-note{overflow-wrap:anywhere}
@media(orientation:landscape) and (max-height:500px) and (max-width:950px){.week-grid{grid-template-columns:1fr}}
#calendar_feedback{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:30;width:min(360px,calc(100vw - 32px));display:grid;gap:8px;pointer-events:none}
.toast{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #c9d4cc;border-radius:6px;background:#fff;color:#304c3b;box-shadow:0 4px 18px #00000012;font-size:13px;line-height:1.45;pointer-events:auto;animation:toast-in .16s ease-out;transition:opacity .16s ease,transform .16s ease}
.toast>span{flex:1;overflow-wrap:anywhere}.toast--error{border-color:#dfc4bb;color:#914534}.toast-close{align-self:flex-start;border:0;background:none;color:inherit;font-size:20px;line-height:1;padding:1px 3px;border-radius:3px}.toast-close:hover{background:#00000008}.toast--leaving{opacity:0;transform:translateY(6px)}
@keyframes toast-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){#calendar_feedback{top:16px}}
@media(prefers-reduced-motion:reduce){.toast{animation:none;transition:none}.toast--leaving{transform:none}}

.toast-message{white-space:pre-line}.toast-message::first-line{font-weight:600}

.toast-close{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;padding:8px}
#calendar_feedback{top:max(16px,env(safe-area-inset-top))}

/* Keep complete action labels on phones rotated into landscape. */
@media(orientation:landscape) and (max-height:500px) and (max-width:950px){
 .action-label{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;clip-path:none;white-space:normal}
 .action-badge{width:auto;height:auto;min-height:32px;padding:4px 10px;gap:4px;font-size:12px;line-height:1.375}
 .waitlist-number{display:none}
}

/* Progress occupies the existing badge slot; details float above the card. */
.booking-progress{position:relative;flex-shrink:0}
.booking-progress>summary{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:32px;height:32px;border-radius:8px;background:#e7e5e4;color:#44403c;font-size:20px;font-weight:600;line-height:1;list-style:none;cursor:pointer}
.booking-progress>summary::-webkit-details-marker{display:none}
.booking-progress-spinner{box-sizing:border-box;width:16px;height:16px;border:2px solid #a8a29e;border-top-color:currentColor;border-radius:50%;animation:booking-progress-spin .8s linear infinite}
@keyframes booking-progress-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.booking-progress-spinner{animation:none}}
.booking-progress>summary:focus-visible{outline:3px solid #2866ac;outline-offset:3px}
.booking-progress[open]{z-index:20}
.booking-progress-message{position:absolute;right:0;top:calc(100% + 6px);width:max-content;max-width:min(240px,calc(100vw - 64px));padding:10px 12px;border:1px solid #e6e4e0;border-radius:8px;background:white;color:#44403c;box-shadow:0 4px 18px #00000012;font-size:12px;line-height:1.5}
.booking-status-detail{position:relative;flex-shrink:0}
.booking-status-detail>summary{list-style:none;cursor:pointer}
.booking-status-detail>summary::-webkit-details-marker{display:none}
.booking-status-detail>summary:focus-visible{outline:3px solid #2866ac;outline-offset:3px}
.booking-status-detail[open]{z-index:20}
.booking-status-detail-message{position:absolute;right:0;top:calc(100% + 6px);width:max-content;max-width:min(240px,calc(100vw - 64px));padding:10px 12px;border:1px solid #e6e4e0;border-radius:8px;background:white;color:#44403c;box-shadow:0 4px 18px #00000012;font-size:12px;line-height:1.5}
