/* Minimal fallback styling when the booking plugin is used with a different theme. */
.lap-booking-wrap { max-width: 980px; margin: 30px auto; }
.lap-booking-shell { background: #fff; border: 1px solid #e5e5e5; border-radius: 18px; overflow: hidden; }
.lap-booking-aside, .lap-booking-form { padding: 28px; }
.lap-booking-aside { background: #32483a; color: #fff; }
.lap-booking-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.lap-field--full { grid-column: 1 / -1; }
.lap-field label { display: block; margin-bottom: 6px; }
.lap-field input:not([type="checkbox"]), .lap-field select, .lap-field textarea { width: 100%; box-sizing: border-box; padding: 10px 12px; }
.lap-slot-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.lap-slot { padding: 8px 12px; border: 1px solid #bbb; border-radius: 999px; background: #fff; cursor: pointer; }
.lap-slot.is-selected { background: #32483a; color: #fff; }
.lap-booking-message { display: none; }
.lap-booking-message.is-visible { display: block; padding: 12px; margin-bottom: 16px; background: #fff0ec; }
.lap-honeypot { position: absolute!important; left: -9999px!important; }
@media(min-width:800px){.lap-booking-shell{display:grid;grid-template-columns:.72fr 1.28fr}}
@media(max-width:600px){.lap-booking-form__grid{grid-template-columns:1fr}.lap-field--full{grid-column:auto}}

/* Secure client booking management. */
.lap-manage-wrap { max-width: 900px; margin: 36px auto; }
.lap-manage-card { padding: clamp(24px, 5vw, 48px); background: #fffdf8; border: 1px solid #e1d6c2; border-radius: 18px; box-shadow: 0 14px 38px rgba(58, 68, 37, .08); }
.lap-manage-card h2, .lap-manage-card h3 { color: #40551f; }
.lap-manage-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 22px 0; }
.lap-manage-summary > div { padding: 14px 16px; background: #f7f1e7; border-radius: 10px; }
.lap-manage-summary dt { margin-bottom: 4px; color: #727a62; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
.lap-manage-summary dd { margin: 0; font-weight: 700; color: #31411c; }
.lap-manage-divider { margin: 34px 0; border: 0; border-top: 1px solid #e5dccd; }
.lap-manage-form .lap-button { margin-top: 20px; }
.lap-button--danger { background: #7b3488 !important; color: #fff !important; border-color: #7b3488 !important; }
.lap-slot-status.is-error { color: #8a2d2d; font-weight: 700; }
.lap-booking-message.is-success { background: #edf4e6; color: #365324; border: 1px solid #cdddbf; }
@media(max-width:600px){.lap-manage-summary{grid-template-columns:1fr}}

/* v1.10 — eligible-discount declaration. */
.lap-discount-eligibility {
    padding: 15px 16px;
    border-left: 4px solid var(--lap-gold, #dba322);
    background: rgba(220, 230, 210, .42);
}
.lap-discount-eligibility label { margin: 0; }



/* v1.13.1 — availability status and new-client option. */
.lap-availability-legend { display:flex; flex-wrap:wrap; gap:8px 14px; margin:0 0 10px; font-size:12px; }
.lap-availability-legend span { display:inline-flex; align-items:center; gap:6px; }
.lap-availability-legend span::before { content:""; width:10px; height:10px; border-radius:50%; border:1px solid rgba(0,0,0,.12); }
.lap-availability-legend .is-lots::before { background:#b9d8a5; }
.lap-availability-legend .is-limited::before { background:#f3d779; }
.lap-availability-legend .is-none::before { background:#e2a6a0; }
.lap-slot-status { margin:0 0 12px; padding:10px 12px; border-left:4px solid transparent; }
.lap-slot-status.is-availability--lots { background:#edf6e8; border-left-color:#5b8a43; color:#365324; }
.lap-slot-status.is-availability--limited { background:#fff8dc; border-left-color:#d4a51f; color:#725b0a; }
.lap-slot-status.is-availability--none,.lap-slot-status.is-availability--closed { background:#fae8e6; border-left-color:#b5534b; color:#7c2d28; }
.lap-new-client { padding:14px 16px; background:rgba(247,242,233,.78); border-left:4px solid var(--lap-sage,#87966b); }
.lap-new-client-confirmation { margin:20px 0 0; padding:16px 18px; background:#f8f1dc; border-left:4px solid #dba322; line-height:1.6; }

/* v1.13.2 — colour-coded dropdown booking calendar. */
.lap-calendar-field { position: relative; }
.lap-date-picker { width: 100%; }
.lap-date-picker__trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-height: 44px;
    box-sizing: border-box;
    padding: 10px 12px;
    border: 1px solid #bbb;
    border-radius: 4px;
    background: #fff;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.lap-date-picker__trigger:disabled { background: #f4f4f1; color: #777; cursor: not-allowed; }
.lap-date-picker__trigger:focus-visible { outline: 2px solid var(--lap-gold, #dba322); outline-offset: 2px; }
.lap-date-picker__chevron { margin-left: 12px; font-size: 18px; line-height: 1; }
.lap-date-picker__panel {
    margin-top: 8px;
    padding: 14px;
    border: 1px solid #d8d1c3;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 10px 26px rgba(45, 52, 36, .12);
}
.lap-date-picker__header { display: grid; grid-template-columns: 40px 1fr 40px; align-items: center; gap: 8px; margin-bottom: 10px; }
.lap-date-picker__header strong { text-align: center; color: var(--lap-olive, #40551f); }
.lap-date-picker__nav {
    width: 38px;
    height: 38px;
    padding: 0;
    border: 1px solid #d8d1c3;
    border-radius: 50%;
    background: #fff;
    color: var(--lap-olive, #40551f);
    font-size: 23px;
    line-height: 1;
    cursor: pointer;
}
.lap-date-picker__nav:disabled { opacity: .32; cursor: not-allowed; }
.lap-date-picker__weekdays,
.lap-date-picker__days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.lap-date-picker__weekdays { margin-bottom: 6px; color: #777; font-size: 11px; font-weight: 700; text-align: center; text-transform: uppercase; }
.lap-date-picker__day,
.lap-date-picker__blank { aspect-ratio: 1 / 1; min-width: 0; }
.lap-date-picker__day {
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid rgba(0,0,0,.1);
    border-radius: 6px;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
    transition: transform .12s ease, box-shadow .12s ease;
}
.lap-date-picker__day.is-lots { background: #dcefd2; color: #365324; border-color: #9bc486; }
.lap-date-picker__day.is-limited { background: #fff0b8; color: #725b0a; border-color: #e0bd46; }
.lap-date-picker__day.is-none { background: #f5d6d2; color: #7c2d28; border-color: #d69089; cursor: not-allowed; }
.lap-date-picker__day.is-closed { background: #f1cac5; color: #7c2d28; border-color: #cf8179; text-decoration: line-through; cursor: not-allowed; }
.lap-date-picker__day.is-unavailable { background: #f2f2ef; color: #aaa; border-color: #e4e4df; cursor: not-allowed; }
.lap-date-picker__day:not(:disabled):hover { transform: translateY(-1px); box-shadow: 0 3px 8px rgba(0,0,0,.12); }
.lap-date-picker__day.is-selected { outline: 3px solid var(--lap-purple, #7b3488); outline-offset: 1px; }
.lap-date-picker__day:disabled { opacity: .82; }
.lap-date-picker__loading { padding: 18px 8px; text-align: center; color: #66705d; }
.lap-date-picker__error { grid-column: 1 / -1; margin: 8px 0; padding: 12px; background: #fae8e6; color: #7c2d28; }
.lap-calendar-field .lap-availability-legend { margin-top: 10px; margin-bottom: 0; }
.lap-calendar-help { margin: 7px 0 0; color: #6e7468; font-size: 12px; }
@media(max-width:600px){
    .lap-date-picker__panel { padding: 10px; }
    .lap-date-picker__weekdays,.lap-date-picker__days { gap: 3px; }
    .lap-date-picker__day { font-size: 13px; }
}

/* v1.15.5: customer-facing warning when a booking is saved but confirmation email transport fails. */
.lap-booking-email-warning { margin: 14px 0; padding: 12px 14px; border-left: 4px solid #b56b20; background: #fff7e8; color: #5b462d; line-height: 1.6; }

/* v1.15.6: small confirmation-page email delivery reminder. */
.lap-booking-email-delivery-note { margin:8px 0 16px; font-size:.92em; line-height:1.5; opacity:.86; }
