.booking-calendar{--bc-free:#0a7d2c;--bc-free-bg:#e6f4ea;--bc-free-border:#c1e0c8;--bc-taken:#c0392b;--bc-taken-bg:#fbe9e7;--bc-taken-border:#f1c0bb;--bc-off:#999;--bc-off-bg:#f5f5f5;--bc-border:#e6e6e6;--bc-accent:#000;color:#111;font-family:Poppins,Arial,Helvetica,sans-serif}.booking-intro{margin:0 0 32px}.booking-intro h2{margin:0 0 12px}.booking-intro p{color:#555;max-width:720px}.booking-layout{border:1px solid var(--bc-border);background:#fff;border-radius:20px 0;grid-template-columns:minmax(0,1.2fr) minmax(280px,1fr);gap:32px;padding:24px;display:grid}.booking-calendar-pane{flex-direction:column;gap:16px;display:flex}.booking-calendar-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.booking-month-label{letter-spacing:.4px;text-transform:capitalize;font-family:Titillium Web,Arial,sans-serif;font-size:20px;font-weight:700}.booking-nav{border:1px solid var(--bc-border);cursor:pointer;background:#fff;justify-content:center;align-items:center;width:36px;height:36px;transition:border-color .2s,background .2s;display:inline-flex}.booking-nav svg{width:16px;height:16px}.booking-nav:hover:not(:disabled){border-color:#000}.booking-nav:disabled{opacity:.3;cursor:not-allowed}.booking-weekrow{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.booking-weekday{text-align:center;letter-spacing:.9px;text-transform:uppercase;color:#888;padding:6px 0;font-size:11px;font-weight:600}.booking-grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.booking-day{aspect-ratio:1;border:1px solid var(--bc-border);color:#111;cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:0;font-family:Poppins,sans-serif;font-size:14px;transition:transform .15s,border-color .15s,background .15s;display:flex;position:relative}.booking-day .day-number{font-weight:500}.booking-day.out-of-month{opacity:.3}.booking-day.state-available{background:var(--bc-free-bg);border-color:var(--bc-free-border);color:var(--bc-free)}.booking-day.state-available:hover{border-color:var(--bc-free);background:#d4ecdc}.booking-day.state-available.has-bookings{background:linear-gradient(135deg, var(--bc-free-bg) 50%, var(--bc-taken-bg) 50%);color:#444}.booking-day.state-fully-booked{background:var(--bc-taken-bg);border-color:var(--bc-taken-border);color:var(--bc-taken)}.booking-day.state-past,.booking-day.state-weekend,.booking-day.state-holiday,.booking-day.state-closed,.booking-day.state-too-soon,.booking-day.state-too-far{background:var(--bc-off-bg);color:var(--bc-off);border-color:var(--bc-border);cursor:not-allowed}.booking-day.state-closed:after{content:"";pointer-events:none;opacity:.5;border:1px dashed #888;position:absolute;inset:6px}.booking-day.current-booking{outline-offset:-3px;outline:2px dashed #e65100}.booking-day.state-holiday:after{content:"";pointer-events:none;opacity:.4;border:1px dashed #c0392b;position:absolute;inset:6px}.booking-day.selected{border-color:var(--bc-accent);color:#fff;background:#000;border-width:2px}.booking-day.selected.state-fully-booked{color:#fff;background:#c0392b;border-color:#c0392b}.booking-legend{color:#555;flex-wrap:wrap;gap:16px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.booking-legend li{align-items:center;gap:8px;display:inline-flex}.booking-legend .dot{border:1px solid #ccc;width:14px;height:14px;display:inline-block}.legend-free{background:var(--bc-free-bg);border-color:var(--bc-free-border)}.legend-partial{background:linear-gradient(135deg, var(--bc-free-bg) 50%, var(--bc-taken-bg) 50%)}.legend-taken{background:var(--bc-taken-bg);border-color:var(--bc-taken-border)}.legend-off{background:var(--bc-off-bg)}.booking-slots-pane{border:1px solid var(--bc-border);background:#fafafa;border-radius:15px 0;flex-direction:column;gap:14px;padding:20px;display:flex}.booking-slots-pane h3{margin:0;font-size:18px}.booking-placeholder p{color:#666;font-size:14px}.booking-loading{color:#999;font-size:12px;font-style:italic}.booking-slots-help{color:#666;margin:0;font-size:13px}.booking-day-warning{color:#6a3a00;background:#fff3e0;border-left:3px solid #e65100;margin:0;padding:12px 14px;font-size:13px}.booking-slots{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.booking-slot{border:1px solid var(--bc-border);cursor:pointer;background:#fff;flex-direction:column;align-items:flex-start;padding:12px 14px;font-family:Poppins,sans-serif;transition:border-color .15s,background .15s,transform .1s;display:flex}.booking-slot .slot-time{color:#111;font-size:14px;font-weight:600}.booking-slot .slot-status{letter-spacing:.9px;text-transform:uppercase;margin:4px 0 0;font-size:11px}.booking-slot.free{border-color:var(--bc-free-border);background:var(--bc-free-bg)}.booking-slot.free .slot-status{color:var(--bc-free)}.booking-slot.free:hover{border-color:var(--bc-free)}.booking-slot.taken{background:var(--bc-taken-bg);border-color:var(--bc-taken-border);cursor:pointer}.booking-slot.taken .slot-time,.booking-slot.taken .slot-status{color:var(--bc-taken)}.booking-slot.selected{background:#000;border-width:2px;border-color:#000}.booking-slot.selected .slot-time,.booking-slot.selected .slot-status{color:#fff}.booking-slot-message{color:#6a3a00;background:#fff3e0;border-left:3px solid #e65100;flex-direction:column;gap:8px;padding:12px 14px;font-size:13px;display:flex}.booking-link-btn{font:inherit;color:#000;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;text-decoration:underline}.booking-form{border:1px solid var(--bc-border);background:#fff;flex-direction:column;gap:22px;margin:24px 0 0;padding:28px;display:flex}.booking-form-header h3{margin:0 0 6px;font-size:22px}.booking-form-header p{color:#555;margin:0;font-size:14px}.booking-form-grid{grid-template-columns:1fr 1fr;gap:16px 20px;display:grid}.booking-form-full{grid-column:1/-1}.booking-form label{text-transform:uppercase;letter-spacing:1px;color:#666;margin:0 0 6px;font-size:12px;font-weight:500;display:block}.booking-form input,.booking-form select,.booking-form textarea{background:#fff;border:1px solid #ddd;outline:none;width:100%;padding:11px 14px;font-family:Poppins,sans-serif;font-size:14px;transition:border-color .2s}.booking-form input:focus,.booking-form select:focus,.booking-form textarea:focus{border-color:#000}.booking-form textarea{resize:vertical;min-height:110px}.booking-error{color:#8a1f1f;background:#fee;border-left:3px solid #c00;padding:12px 16px;font-size:14px}.booking-form-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.booking-summary{flex-direction:column;font-size:14px;display:flex}.booking-summary-label{letter-spacing:.9px;text-transform:uppercase;color:#888;margin:0 0 4px;font-size:11px}.booking-form .btn:disabled{opacity:.5;cursor:not-allowed}.booking-success{border:1px solid var(--bc-free-border);border-top:4px solid var(--bc-free);text-align:center;background:#fff;flex-direction:column;align-items:center;gap:14px;padding:40px 32px;display:flex}.booking-success-icon{background:var(--bc-free-bg);width:56px;height:56px;color:var(--bc-free);justify-content:center;align-items:center;display:flex}.booking-success-icon svg{width:28px;height:28px}.booking-success h3{margin:0;font-size:24px}.booking-success p{color:#444;max-width:540px;margin:0;font-size:15px;line-height:1.7}.booking-success-meta{color:#666;font-size:13px}@media (max-width:900px){.booking-layout{grid-template-columns:1fr}}@media (max-width:600px){.booking-layout{gap:20px;padding:16px}.booking-form{padding:20px}.booking-form-grid{grid-template-columns:1fr}.booking-day{font-size:12px}.booking-weekday{font-size:10px}.booking-slots{grid-template-columns:1fr 1fr}.booking-form-footer{flex-direction:column;align-items:stretch}.booking-form-footer .btn{width:100%}}
