/* Flavor Reserve – Public */
.fr-widget { position:relative; max-width:520px; margin:30px auto; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,sans-serif; color:#333 !important; }
.fr-widget h3, .fr-widget p, .fr-widget label, .fr-widget span, .fr-widget div { color:#333; }
.fr-widget h3 { color:#333 !important; }
.fr-widget h3 { margin:0 0 20px; font-size:22px; font-weight:600; text-align:center; }

/* Guests */
.fr-guests-picker { display:flex; align-items:center; justify-content:center; gap:20px; margin-bottom:24px; }
.fr-guests-count { font-size:42px; font-weight:700; min-width:60px; text-align:center; line-height:1; color:#333 !important; }
.fr-btn-minus,.fr-btn-plus { width:48px;height:48px;border-radius:50%;border:2px solid #333;background:transparent;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;color:#333;line-height:1; }
.fr-btn-minus:hover,.fr-btn-plus:hover { background:#333;color:#fff; }

/* Buttons */
.fr-btn { display:inline-block;padding:12px 32px;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s; }
.fr-btn-next,.fr-btn-submit { background:#2c2c2c;color:#fff;width:100%; }
.fr-btn-next:hover,.fr-btn-submit:hover { background:#000; }
.fr-btn-back { background:transparent;border:1px solid #ccc;color:#666; }
.fr-btn-back:hover { border-color:#333;color:#333; }
.fr-step-nav { display:flex;gap:12px;margin-top:20px; }
.fr-step-nav .fr-btn-back { flex:0 0 auto; }
.fr-step-nav .fr-btn-next,.fr-step-nav .fr-btn-submit { flex:1; }

/* Calendar */
.fr-calendar-nav { display:flex;align-items:center;justify-content:space-between;margin-bottom:12px; }
.fr-cal-prev,.fr-cal-next { background:transparent;border:1px solid #ddd;border-radius:4px;padding:6px 14px;font-size:16px;cursor:pointer;color:#333; }
.fr-cal-prev:hover,.fr-cal-next:hover { background:#f5f5f5; }
.fr-cal-month-label { font-size:18px;font-weight:600;color:#333 !important; }
.fr-calendar-grid { display:grid;grid-template-columns:repeat(7,1fr);gap:4px; }
.fr-cal-header { text-align:center;font-size:12px;font-weight:600;color:#888;padding:6px 0; }
.fr-cal-day { text-align:center;padding:10px 4px;border-radius:6px;font-size:14px;cursor:default;transition:all .15s;color:#333; }
.fr-cal-day.fr-open { background:#f0faf0;cursor:pointer;font-weight:500; }
.fr-cal-day.fr-open:hover { background:#c8f0c8; }
.fr-cal-day.fr-selected { background:#2c2c2c!important;color:#fff!important;font-weight:700; }
.fr-cal-day.fr-past,.fr-cal-day.fr-closed { color:#ccc; }
.fr-cal-day.fr-forced-closed { background:#fde8e8;color:#c53030;font-weight:500; }
.fr-cal-day.fr-today { border:2px solid #2c2c2c; }
.fr-cal-day.fr-empty { visibility:hidden; }

/* Service groups */
.fr-service-group { margin-bottom:24px; }
.fr-service-group:last-child { margin-bottom:0; }
.fr-service-header { display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid #e8e8e8; }
.fr-service-title { font-size:17px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#333 !important; }
.fr-service-tag { font-size:12px;font-weight:600;padding:3px 10px;border-radius:12px; }
.fr-tag-full { background:#ffebee;color:#c62828; }
.fr-tag-waitlist { background:#fff8e1;color:#f57f17; }
.fr-service-empty { color:#999;font-size:14px;font-style:italic;padding:6px 0; }

/* Slots */
.fr-slots { display:grid;grid-template-columns:repeat(3,1fr);gap:10px; }
.fr-slot-btn { position:relative;padding:14px 8px;border:2px solid #e0e0e0;border-radius:8px;background:#fff;text-align:center;cursor:pointer;transition:all .15s;font-size:15px;font-weight:500;color:#333; }
.fr-slot-btn:hover { border-color:#333; }
.fr-slot-btn.fr-selected { border-color:#2c2c2c;background:#2c2c2c;color:#fff; }

/* Waitlist slot styling */
.fr-slot-btn.fr-slot-waitlist { border-color:#ffe0b2;background:#fffbf0;padding-bottom:28px; }
.fr-slot-btn.fr-slot-waitlist:hover { border-color:#f57f17; }
.fr-slot-btn.fr-slot-waitlist.fr-selected { border-color:#e65100;background:#e65100;color:#fff; }
.fr-slot-btn.fr-slot-waitlist.fr-selected .fr-wl-badge { background:rgba(255,255,255,.25);color:#fff; }

.fr-wl-badge {
    position:absolute;bottom:4px;left:50%;transform:translateX(-50%);
    font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;
    background:#fff3e0;color:#e65100;padding:2px 8px;border-radius:8px;white-space:nowrap;
}

.fr-no-slots { text-align:center;padding:30px;color:#888;font-size:15px; }

/* Waitlist notice in form */
.fr-waitlist-notice {
    background:#fff8e1;border:1px solid #ffe082;border-radius:8px;padding:12px 16px;margin-bottom:18px;
    font-size:14px;color:#6d4c00;line-height:1.5;text-align:center;
}

/* Form */
.fr-field { margin-bottom:16px; }
.fr-field label { display:block;margin-bottom:4px;font-size:14px;font-weight:600;color:#333 !important; }
.fr-field input,.fr-field textarea { width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:15px;font-family:inherit;box-sizing:border-box;transition:border-color .2s;color:#333 !important;background:#fff !important; }
.fr-field input:focus,.fr-field textarea:focus { outline:none;border-color:#2c2c2c; }
.fr-field input.fr-error,.fr-field textarea.fr-error { border-color:#e53e3e; }

.fr-summary { background:#f9f9f9;border:1px solid #eee;border-radius:8px;padding:14px 18px;margin-bottom:20px;font-size:14px;line-height:1.6; }

/* Confirmation */
.fr-confirmation { text-align:center;padding:40px 20px; }
.fr-check { width:64px;height:64px;border-radius:50%;background:#d4edda;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;font-size:32px; }
.fr-check-waitlist { background:#fff3e0; }
.fr-confirmation h3 { color:#155724; }
.fr-confirmation p { color:#555;font-size:15px;line-height:1.6; }

/* Loading */
.fr-loading { position:absolute;inset:0;background:rgba(255,255,255,.85);display:flex;align-items:center;justify-content:center;border-radius:8px;z-index:10; }
.fr-spinner { width:36px;height:36px;border:4px solid #ddd;border-top-color:#333;border-radius:50%;animation:fr-spin .7s linear infinite; }
@keyframes fr-spin { to { transform:rotate(360deg); } }

.fr-error-msg { background:#fff5f5;border:1px solid #feb2b2;color:#c53030;padding:10px 14px;border-radius:6px;margin-bottom:16px;font-size:14px; }

@media (max-width:480px) { .fr-slots { grid-template-columns:repeat(2,1fr); } }
