/* bookings.css — Bookings widget + availability grid.
   Split from style.css (load order matters: see the stylesheet <link> order in index.html). */
/* ============================
Bookings widget + availability grid
============================ */

.booking-time-widget {
    display: inline-flex;
    gap: var(--gap-sm);
    align-items: center;
}

/* Ensure time widget sits above neighbouring buttons and is interactive */
.booking-time-widget,
.booking-time-widget select {
    position: relative;
    z-index: 3;
    pointer-events: auto;
}

/* Ensure filter buttons don't overlay inputs */
.filtercontainer .filter-button,
.filtercontainer button {
    position: relative;
    z-index: 1;
}

.booking-time-widget select.booking-time-hour,
.booking-time-widget select.booking-time-minute {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-md);
    padding: var(--pad-item);
    font-size: var(--font-size-base);
    color: var(--ink);
    min-width: 72px;
}

.availability-grid {
    display: inline-flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 8px;
}

#bookings-results {
    text-align: center;
    width: 100%;
    margin-top: 8px;
}

#bookings-results[hidden] {
    display: none !important;
}

.availability-hour-row {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
}

/* ensure availability grid doesn't overlap the filter controls above */
.panel.filtercontainer + .panel .availability-grid,
#bookings-results .availability-grid {
    clear: both;
    margin-top: 12px;
}

.slot-btn {
    background: var(--surface);
    color: var(--ink);
    border: 1.5px solid var(--grey-700);
    border-radius: 20px;
    padding: 8px 14px;
    font-size: 0.95rem;
    font-weight: 600;
    min-width: 64px;
    width: auto;
    flex: 0 0 auto;
    cursor: pointer;
    text-align: center;
}

.slot-btn:hover:not(:disabled) {
    filter: brightness(0.96);
}

.slot-btn.selected {
    background: var(--button-primary-admin);
    color: var(--white);
    border-color: rgba(0,0,0,0.06);
}

.slot-btn.slot-unavailable {
    text-decoration: line-through;
    opacity: 0.4;
    cursor: not-allowed;
}

.slot-btn:disabled {
    cursor: not-allowed;
}

/* Welcome message */
.booking-welcome {
    flex: 1 1 auto;
    font-size: 1.15rem;
    line-height: 1.5;
    padding: 4px 0;
    color: var(--ink);
}

/* selected booking + book action */
.booking-selection {
    display: flex;
    gap: 10px;
    align-items: center;
    justify-content: center;
    margin-top: 8px;
}

.booking-selection-time {
    font-weight: 600;
    padding: 8px 14px;
    border-radius: 10px;
    background: var(--surface);
    border: 1px solid var(--line);
}

.booking-availability-stale {
    max-width: 32rem;
    margin: 10px auto 0;
    padding: 10px 14px;
    border-radius: 10px;
    border: 1px solid var(--line);
    background: color-mix(in srgb, var(--surface) 78%, var(--white) 22%);
    text-align: center;
}

.book-btn {
    background: var(--button-primary-admin);
    color: var(--white);
    border: none;
    padding: 8px 24px;
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: 0.95rem;
    width: auto;
}

/* Booking guest modal */
.booking-guest-modal .modal-inner{
    display:flex;
    flex-direction:column;
    gap:14px;
    max-width:380px;
    background:var(--surface, var(--white));
    padding:24px;
    border-radius:18px;
    box-shadow:0 18px 40px rgba(0,0,0,0.2);
    width:min(380px, calc(100% - 32px));
    box-sizing:border-box;
}
.booking-guest-upsell{
    font-size:0.9rem;
    line-height:1.5;
    color:var(--text-muted, var(--grey-600));
    margin:0;
}
.booking-guest-auth-btns{
    display:flex;
    gap:10px;
}
.booking-guest-auth-btns .filter-button{
    flex:1;
}
.booking-guest-divider{
    display:flex;
    align-items:center;
    gap:10px;
    font-size:0.8rem;
    color:var(--text-muted, var(--grey-500));
}
.booking-guest-divider::before,
.booking-guest-divider::after{
    content:'';
    flex:1;
    height:1px;
    background:var(--line, var(--grey-200));
}
.bkm-label{
    display:flex;
    flex-direction:column;
    gap:5px;
    font-size:0.85rem;
    font-weight:600;
    color:var(--text, var(--grey-800));
}
.bkm-label input{
    padding:8px 12px;
    border:1.5px solid var(--line, var(--grey-200));
    border-radius:var(--radius-md);
    font-size:0.95rem;
    background:var(--surface, var(--white));
    color:var(--text, var(--grey-800));
    outline:none;
}
.bkm-label input:focus{
    border-color:var(--button-primary-admin);
}

.book-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* My Bookings list (customer self-service) */
.my-bookings-heading {
    margin: 0 0 8px;
    font-size: 1rem;
    font-weight: 600;
}
.my-bookings-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.my-booking-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 14px;
    border-radius: var(--radius-md);
    gap: 12px;
}
.my-booking-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1 1 auto;
    min-width: 0;
}
.my-booking-date {
    font-weight: 600;
    font-size: 0.95rem;
}
.my-booking-meta {
    font-size: 0.85rem;
    color: var(--ink);
    opacity: 0.6;
}
.my-booking-cancel {
    background: var(--button-primary-admin);
    color: var(--white);
    border: none;
    padding: 8px 24px;
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: 0.85rem;
    white-space: nowrap;
    flex: 0 0 auto;
    width: auto;
}
.my-booking-cancel:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
