/* Booking workspace: shared palette, scoped to the scheduling screens. */
.schedule-ui { min-width: 0; }
.schedule-eyebrow { margin: 0 0 var(--s-3); color: var(--c-oxide); font-size: var(--t-xs); font-weight: 700; letter-spacing: .14em; }
.schedule-ui .page-header { margin-bottom: var(--s-6); padding-bottom: var(--s-5); border-bottom: var(--border); }
.schedule-ui .page-header__title { font-size: clamp(2rem, 3vw, 3rem); line-height: var(--lh-tight); }
.schedule-ui .page-header__lead { margin-top: var(--s-3); font-size: var(--t-base); color: var(--c-ink-soft); }
.schedule-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); margin-bottom: var(--s-6); }
.schedule-stat { display: flex; flex-direction: column; gap: var(--s-3); padding: var(--s-5); background: var(--c-white); border: var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
.schedule-stat:first-child { background: var(--c-ink); border-color: var(--c-ink); color: var(--c-paper); }
.schedule-stat span { font-size: var(--t-sm); }
.schedule-stat strong { font-family: var(--f-display); font-size: var(--t-2xl); line-height: 1; }
.schedule-ui .page-section { margin-block: var(--s-6); }
.schedule-ui section > h2 { margin: 0 0 var(--s-4); font-size: var(--t-lg); }
.schedule-ui .table-wrap { background: var(--c-white); border: var(--border); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
.schedule-ui table { width: 100%; margin: 0; border-collapse: collapse; font-size: var(--t-sm); }
.schedule-ui .table-wrap th { padding: var(--s-4); background: var(--c-raised); color: var(--c-ink-soft); font-size: var(--t-xs); font-weight: 700; letter-spacing: .04em; text-align: left; }
.schedule-ui .table-wrap td { padding: var(--s-4); white-space: normal; min-width: 7rem; max-width: 24rem; vertical-align: top; border-bottom: var(--border); line-height: var(--lh-snug); overflow-wrap: anywhere; }
.schedule-ui .table-wrap tbody tr:last-child td { border-bottom: 0; }
.schedule-ui .table-wrap td:first-child { font-weight: 600; min-width: 11rem; }
.schedule-ui .table-wrap td small { display: inline-block; margin-top: var(--s-2); color: var(--c-ink-soft); font-size: var(--t-xs); font-weight: 400; }
.schedule-ui .table-wrap tbody tr:hover { background: var(--c-paper); }
.schedule-ui .table-wrap tr.schedule-conflict { background: var(--c-oxide-tint); }
.schedule-ui .conflict-label { display: inline-block; margin-top: var(--s-2); padding: var(--s-1) var(--s-2); border-radius: var(--r-md); background: var(--c-white); color: var(--c-oxide); font-size: var(--t-xs); }
.schedule-ui .badge { display: inline-block; border-radius: var(--s-6); padding: var(--s-1) var(--s-3); white-space: nowrap; font-size: var(--t-xs); }
.schedule-ui .schedule-filters { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto auto; gap: var(--s-3); padding: var(--s-5); background: var(--c-white); border: var(--border); border-radius: var(--r-lg); align-items: end; }
.schedule-ui label { color: var(--c-ink-soft); font-size: var(--t-sm); font-weight: 600; }
.schedule-ui .schedule-filters .input { min-width: 0; }
.schedule-ui input:not([type=checkbox]), .schedule-ui select, .schedule-ui textarea { max-width: 100%; min-width: 0; border: var(--border); border-radius: var(--r-md); background-color: var(--c-white); font-size: var(--t-sm); }
.schedule-ui .schedule-filters input, .schedule-ui .schedule-filters select { width: 100%; margin: 0; min-height: 2.75rem; }
.schedule-ui .button, .schedule-ui .row-actions .button { display: inline-flex; align-items: center; justify-content: center; min-height: 2.5rem; padding: var(--s-2) var(--s-4); border: 1px solid var(--c-oxide); border-radius: var(--r-md); background: var(--c-oxide); color: var(--c-white); text-decoration: none; font-size: var(--t-sm); font-weight: 600; line-height: var(--lh-snug); white-space: nowrap; }
.schedule-ui .button:hover, .schedule-ui .row-actions .button:hover { background: var(--c-oxide-dark); border-color: var(--c-oxide-dark); color: var(--c-white); }
.schedule-ui .button--quiet, .schedule-ui .button--outline, .schedule-ui .row-actions .button--quiet { color: var(--c-ink-soft); background: var(--c-white); border-color: var(--c-rule); }
.schedule-ui .button--quiet:hover, .schedule-ui .button--outline:hover, .schedule-ui .row-actions .button--quiet:hover { color: var(--c-oxide); background: var(--c-paper); border-color: var(--c-oxide); }
.schedule-ui .row-actions { flex-wrap: wrap; align-items: flex-start; gap: var(--s-2); min-width: 10rem; }
.schedule-ui .inline-form, .schedule-ui .row-actions .inline-form { display: flex; flex-wrap: wrap; gap: var(--s-2); margin: 0; align-items: end; }
.schedule-ui .inline-form .input { margin: 0; flex: 1 1 10rem; }
.schedule-ui .inline-form select { flex: 1 1 10rem; }
.schedule-actions { min-width: 10rem; }
.schedule-actions > summary { cursor: pointer; padding: var(--s-2) var(--s-3); border: var(--border); border-radius: var(--r-md); color: var(--c-ink-soft); font-weight: 600; font-size: var(--t-sm); line-height: 1.5; }
.schedule-actions[open] { width: 17rem; max-width: 100%; }
.schedule-actions[open] > summary { background: var(--c-raised); margin-bottom: var(--s-3); }
.schedule-ui .schedule-actions form { padding: var(--s-3) 0; }
.schedule-ui .schedule-actions form + form { border-top: var(--border); }
.session-capacity { min-width: 8rem; }
.session-capacity progress { display: block; appearance: none; width: 100%; height: var(--s-2); margin-top: var(--s-2); border: 0; border-radius: var(--r-lg); overflow: hidden; background: var(--c-raised); accent-color: var(--c-glaze); }
.session-capacity progress::-webkit-progress-bar { background: var(--c-raised); }
.session-capacity progress::-webkit-progress-value { background: var(--c-glaze); border-radius: var(--r-lg); }
.session-capacity progress::-moz-progress-bar { background: var(--c-glaze); }
.schedule-ui .empty-state, .schedule-empty { padding: var(--s-6); border-radius: var(--r-lg); text-align: center; background: var(--c-white); }
.schedule-ui .empty-state h3 { font-size: var(--t-md); }
.schedule-ui .empty-state p { margin-bottom: 0; font-size: var(--t-sm); }
.schedule-back { display: inline-flex; margin-bottom: var(--s-5); padding: var(--s-2) var(--s-4); background: var(--c-oxide); border-radius: var(--r-md); color: var(--c-white); text-decoration: none; font-size: var(--t-sm); }
.schedule-back:hover { background: var(--c-oxide-dark); color: var(--c-white); }
.session-editor { display: grid; grid-template-columns: minmax(0, 2fr) minmax(14rem, 1fr); gap: var(--s-5); align-items: start; }
.session-editor__form, .session-editor__aside { padding: var(--s-6); border: var(--border); border-radius: var(--r-lg); background: var(--c-white); box-shadow: var(--shadow-1); }
.session-editor__aside { background: var(--c-raised); }
.session-editor h2 { margin: 0 0 var(--s-3); font-size: var(--t-lg); }
.schedule-muted { color: var(--c-ink-soft); font-size: var(--t-sm); }
.session-editor .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4); }
.session-editor .form-stack { max-width: none; margin-top: var(--s-5); }
.session-editor textarea { resize: vertical; }
.session-editor__footer { margin-top: var(--s-5); padding-top: var(--s-5); border-top: var(--border); }
.session-editor__aside dl { margin: var(--s-5) 0; }
.session-editor__aside dt { font-size: var(--t-sm); color: var(--c-ink-soft); }
.session-editor__aside dd { margin: var(--s-1) 0 var(--s-4); font-size: var(--t-lg); font-weight: 600; }
.schedule-ui .notice--warning { border-radius: var(--r-md); border-left: var(--s-1) solid var(--c-ochre); background: var(--c-ochre-tint); font-size: var(--t-sm); }
.schedule-ui :focus-visible { outline: 3px solid var(--c-focus); outline-offset: 3px; }
@media (max-width: 1100px) {
    .schedule-ui .schedule-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .session-editor { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .schedule-stats { gap: var(--s-2); }
    .schedule-stat { padding: var(--s-3); }
    .schedule-stat span { font-size: var(--t-xs); }
    .schedule-stat strong { font-size: var(--t-xl); }
    .schedule-ui .schedule-filters, .session-editor .form-grid { grid-template-columns: 1fr; }
    .session-editor__form, .session-editor__aside { padding: var(--s-4); }
    .schedule-ui .page-header__title { font-size: var(--t-xl); }
}
/* Public booking controls use the same surface and status colours. */
.availability-preview { border: var(--border); border-radius: var(--r-lg); padding: var(--s-5); background: var(--c-white); }
#availability-times .availability-time { padding: var(--s-3) var(--s-4); border: var(--border); border-radius: var(--r-md); background: var(--c-paper); color: var(--c-ink); font-size: var(--t-sm); line-height: var(--lh-snug); }
#availability-times .availability-time:hover:not(:disabled), #availability-times .availability-time.is-selected { background: var(--c-oxide); border-color: var(--c-oxide); color: var(--c-white); }
#availability-times .availability-time:disabled { background: var(--c-raised); color: var(--c-ink-soft); border-style: dashed; cursor: not-allowed; opacity: .75; }
.booking-layout .booking-section { border: var(--border); border-radius: var(--r-lg); padding: var(--s-5); background: var(--c-white); margin-bottom: var(--s-5); }
.booking-layout .booking-section h2 { font-size: var(--t-lg); }
.booking-layout input:not([type=checkbox]), .booking-layout select, .booking-layout textarea { border-radius: var(--r-md); border-color: var(--c-rule); }
.booking-layout .booking-button { border-radius: var(--r-md); background: var(--c-oxide); color: var(--c-white); }
.booking-layout .booking-button:hover:not(:disabled) { background: var(--c-oxide-dark); }

/* Compact booking review dialog. */
.booking-confirm { width: min(420px, calc(100vw - 32px)); max-height: calc(100dvh - 40px); margin: auto; padding: 0; border: var(--border); border-radius: 18px; background: var(--c-white); color: var(--c-ink); box-shadow: 0 24px 80px rgba(36, 28, 22, .2); overflow-y: auto; }
.booking-confirm::backdrop { background: rgba(36, 28, 22, .36); backdrop-filter: blur(2px); }
.booking-confirm__header { display: flex; align-items: center; justify-content: space-between; padding: var(--s-4) var(--s-5); border-bottom: var(--border); }
.booking-confirm__eyebrow { color: var(--c-oxide); font-size: .6875rem; font-weight: 700; letter-spacing: .14em; }
#booking-confirm .booking-confirm__close { display: grid; place-items: center; flex: 0 0 32px; width: 32px; height: 32px; min-height: 0; margin: 0; padding: 0; border: 0; border-radius: var(--r-md); background: transparent; color: var(--c-ink-soft); box-shadow: none; }
#booking-confirm .booking-confirm__close:hover { background: var(--c-raised); color: var(--c-ink); }
.booking-confirm__body { padding: var(--s-5); }
.booking-confirm h2 { margin: 0 0 var(--s-2); font-family: var(--f-display); font-size: 1.75rem; line-height: 1.2; letter-spacing: -.02em; }
#booking-confirm-description { margin: 0 0 var(--s-5); font-size: .875rem; line-height: 1.55; color: var(--c-ink-soft); }
.booking-confirm__session { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-4); background: var(--c-paper); border: var(--border); border-radius: 10px; }
.booking-confirm__session-icon { display: grid; place-items: center; flex: 0 0 40px; height: 40px; border-radius: 10px; background: var(--c-raised); color: var(--c-oxide); }
.booking-confirm__session > div { min-width: 0; }
.booking-confirm__label { display: block; margin-bottom: var(--s-1); font-size: .75rem; color: var(--c-ink-soft); }
.booking-confirm__session strong { display: block; font-size: var(--t-sm); line-height: 1.4; overflow-wrap: anywhere; }
.booking-confirm__details { margin: var(--s-4) 0; }
.booking-confirm__details div { display: flex; justify-content: space-between; gap: var(--s-4); padding: var(--s-3) 0; border-bottom: var(--border); font-size: .875rem; }
.booking-confirm dt { flex-shrink: 0; color: var(--c-ink-soft); }
.booking-confirm dd { margin: 0; text-align: right; font-weight: 600; overflow-wrap: anywhere; }
.booking-confirm__note { margin: var(--s-4) 0 0; font-size: .75rem; line-height: 1.5; color: var(--c-ink-soft); }
.booking-confirm__actions { display: grid; grid-template-columns: 1fr 1.5fr; gap: var(--s-3); padding: var(--s-4) var(--s-5); background: var(--c-paper); border-top: var(--border); }
.booking-confirm__actions .button { display: inline-flex; align-items: center; justify-content: center; margin: 0; min-height: 42px; padding: var(--s-2) var(--s-3); border: 1px solid var(--c-oxide); border-radius: 8px; background: var(--c-oxide); color: var(--c-white); font-size: .875rem; font-weight: 600; }
.booking-confirm__actions .button:hover { background: var(--c-oxide-dark); }
.booking-confirm__actions .button--quiet { background: var(--c-white); border-color: var(--c-rule); color: var(--c-ink-soft); }
.booking-confirm__actions .button--quiet:hover { background: var(--c-raised); color: var(--c-ink); }
.booking-confirm :focus-visible { outline: 2px solid var(--c-focus); outline-offset: 3px; }

@media (prefers-reduced-motion: no-preference) {
    .booking-confirm[open]::backdrop { animation: booking-backdrop-in 280ms ease-out both; }
    .booking-confirm.booking-confirm--closing::backdrop { animation: booking-backdrop-out 190ms ease-in both; }
}
@keyframes booking-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes booking-backdrop-out { from { opacity: 1; } to { opacity: 0; } }

/* Only dates with bookable sessions are active. */
.booking-availability-calendar .flatpickr-day.flatpickr-disabled,
.booking-availability-calendar .flatpickr-day.flatpickr-disabled:hover {
    color: #b9b2aa;
    background: #f5f2ee;
    border-color: transparent;
    cursor: not-allowed;
    opacity: .65;
}
.booking-availability-calendar .flatpickr-day.has-availability:not(.flatpickr-disabled) {
    color: var(--c-oxide);
    background: #f6e6e1;
    border-color: transparent;
    font-weight: 600;
}
.booking-availability-calendar .flatpickr-day.has-availability:not(.flatpickr-disabled):hover,
.booking-availability-calendar .flatpickr-day.has-availability.selected {
    color: #fff;
    background: var(--c-oxide);
    border-color: var(--c-oxide);
}
.booking-calendar-hint { color: var(--c-ink-soft); font-size: var(--t-sm); margin: 12px 0 20px; }

.attendee-stepper { display: flex; align-items: center; gap: 10px; max-width: 240px; }
.attendee-stepper input[type="number"] { min-width: 0; width: 92px; text-align: center; margin: 0; appearance: textfield; -moz-appearance: textfield; }
.attendee-stepper input::-webkit-inner-spin-button,
.attendee-stepper input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.attendee-stepper button { display: inline-grid; place-items: center; flex: 0 0 44px; width: 44px; height: 44px; padding: 0; margin: 0; border: 1px solid var(--c-oxide); border-radius: 10px; color: var(--c-oxide); background: #faf1ec; font-size: 24px; line-height: 1; transition: background .15s, transform .15s; }
.attendee-stepper button:hover:not(:disabled) { background: #f1ded5; }
.attendee-stepper button:active:not(:disabled) { transform: scale(.94); }
.attendee-stepper button:disabled { opacity: .35; cursor: not-allowed; }
@media (prefers-reduced-motion: reduce) { .attendee-stepper button { transition: none; } }
