/* Booking modal scaffold — shared across table-reservation, skischool-booking,
   snowmobile-booking, conference-booking. Defined ONCE here to avoid the
   cross-widget dependency that BL-221 identified. */

.booking-widget-modal-overlay{
    position:fixed; inset:0; z-index:1000;
    display:flex; align-items:center; justify-content:center;
    padding:24px;
    background:color-mix(in srgb, var(--ink) 55%, transparent);
}
.booking-widget-modal-content{
    position:relative; display:flex; flex-direction:column;
    width:100%; max-width:540px; max-height:90vh; overflow:hidden;
    background:var(--surface); border-radius:var(--radius);
    box-shadow:0 30px 70px -20px rgba(12,18,26,.6);
}
.booking-widget-modal-content--wide{ max-width:620px; }

.booking-widget-modal-header{
    display:flex; align-items:center; justify-content:space-between;
    gap:12px; padding:18px 20px;
    border-bottom:1px solid var(--line);
}
.booking-widget-modal-title{
    font-family:var(--font-display);
    font-weight:var(--display-w);
    letter-spacing:var(--display-ls);
    font-size:1.2rem; line-height:1.15; color:var(--ink);
    margin:0;
}
.booking-widget-modal-close{
    flex:0 0 auto;
    display:grid; place-items:center;
    width:34px; height:34px;
    border:0; border-radius:999px;
    background:transparent;
    color:var(--ink-soft);
    cursor:pointer;
    transition:background .15s ease, color .15s ease;
}
.booking-widget-modal-close:hover{ background:var(--surface2); color:var(--ink); }

.booking-widget-modal-body{
    padding:20px; overflow-y:auto;
}
.booking-widget-modal-actions{
    display:flex; gap:10px; justify-content:flex-end;
    padding:16px 20px;
    border-top:1px solid var(--line);
    background:var(--surface);
}
.booking-widget-modal-actions .btn{ flex:0 0 auto; }

/* Loader spinner — shared between booking widgets.
   Rotation keyframe (b-spin) lives in the theme's widget-frame.css. */
.tr-spin{
    width:34px; height:34px; border-radius:50%;
    border:3px solid var(--line);
    border-top-color:var(--accent);
    animation:b-spin .8s linear infinite;
}

/* Field error message (shared validation styling) */
.field-error-message{
    font-size:.76rem; color:var(--no); margin-top:1px;
}
.b-input.is-invalid,
.b-select.is-invalid{
    border-color:var(--no);
    box-shadow:0 0 0 3px color-mix(in srgb, var(--no) 16%, transparent);
}

@media (max-width:560px){
    .booking-widget-modal-overlay{ padding:0; }
    .booking-widget-modal-content{
        max-width:none; max-height:none; height:100%;
        border-radius:0;
    }
}

/* Reduced motion — slow the loading spinner rather than stopping it. */
@media (prefers-reduced-motion: reduce){
    .tr-spin{ animation-duration:1.6s; }
}
